Repeated blocks in schematic hierarchy

Hi,

I am trying to add repeated copies of a schematic I made, like this:

Nixie hour most significant and least significant are identical sheets. The first problem I run into is, how do I name the bus members? As I understand, the bus members at the top sheet and the bus members and the bottom (nixie hour) sheet should be the same.

This means I have to go into each sub sheet seperately and change the bus members accordingly, right? I would prefer a method where the label is local to the bus so I can just copy paste without having making manual changes. If the labels on the top sheet are the same, kicad creates connections between buses which I absolutely don’t want. Is there a kind of label that is local to a bus? Or is there another way to solve this?

I am also running into all sorts of strange problems. My steps are very simple, I draw the schematic once and then duplicate it. I then connect the buses to both sheets and name the bus members accordingly.

I noticed that after making the bus member name changes and pressing save all my duplicate schematics would have the changes as well and I could start all over again with the naming. So I thought, maybe I should have seperate filenames. So I changed the filename for each block but that just seemed to make things worse, I now had duplicate symbols (???) in each schematic and the bus members would still be overwritten!

I am running the nighty build from june 22. Are these bugs I am facing or am I doing something wrong?

Kind regards, Stefan

You can re-use a sheet multiple times, but it still is a single sheet.
And because it is a single sheet, you can’t have different labels for the bus or members. (At least, that is my interpretation).

As far as I know, The RefDes (a.k.a “Reference” in KiCad) is the only text that can be different between the instances of a sheet.

It would be nice to have the ability to give for examples resistors different values for each instance (Think about a graphic equalizer, with each section the same topology, but different component values) but that is also not supported.

In KiCad, the blue bus wires are mostly cosmetic. There is a very limited support for numbered buses, in the way you’ve imported the bus, but then you also have to name the bus itself with a local label with the same name.

I prefer to keep things as simple as possible, and for 4 wires there is not much need to use a bus. The simplest is to just import four separate pins from the sub sheet, and call them for example bit0 through bit3. You can use local labels (and the blue bus line) on a single sheet if you prefer.

I also see an “Hours” text and a dashed box around it.
Those dashed boxes add very little to the schematic. A bit of empty space does the job of separating parts just as well. Those dashed boxes also need more maintenance while changing the schematic.

Strings can be parameterized with sheet property fields and string replacement variables ${}. However, sheet parameters don’t work with net labels.

Thank you Paul, this comment is very helpful.

Is there some symlink I am not seeing then? Since even when I changed the file name, pressing save would overwrite the updated values with the previous contents? I did not succeed in finding the details in any of the kicad documentation, so if you have some more reference material that would be helpful. I guess my experience in other tools is misguiding me here.

Exactly my thoughts as well. But I guess it’s one of those nice to haves which take ages to implement but don’t have priority. I’m happy to work around it, kicad is a great tool

I agree. It’s just a cosmetic way for me to easily group them. I applied this to the schematic and it seems to work. Thanks!

True. But the top sheet is a simple schematic with only one type of IC so it’s easily managable.

It is already implemented in 5.99. But the labels don’t work that way, unfortunately.

If you are familiar with programming, think of reused sheets as either function calls or objects depending on your programming paradigm of choice. The function (or object) doesn’t care what the signal/variable being passed is called outside itself. For internal nets it prepends the sheet name (different than the file name, I don’t see on your schematic what the sheet names are…) to the net name and looks like a file path. So a net on a sheet that is called bar on two instances of that same sheet ,one named foo1 and the other named foo2, will result in two different nets named foo1/bar and foo2/bar.

I would think that you would want to label the two bus lines H_MS_A[0..3] and H_LS_A[0..3] (and probably also have M_MS_A[0..3], M_LS_A[0..3], S_MS_A[0..3], and S_LS_A[0..3] elsewhere on the schematic for the minutes and seconds). Then feed those named bus lines to the nixie tube sheets bus-pin named something like DIGIT[0..3] to translate that nyble into a glowing digit on a nixie tube. Sort of how you have the MS and LS pwm signals feeding the NIXIE_PWM_IN pin. That way you can use the same nixie tube sheet for all your digits.

In theory that is how I would expect it to work. I haven’t used the nightlies yet so I haven’t played with hierarchical bus pins yet.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.