Schematic Instances in Complex Heirarchy

Fairly new to KiCad. Really like Version 4.01. I am using it on Windows 10. And I am a former Orcad and Altium user. My question involves how Complex Hierarchies work in KiCad. I created my schematic as outlined in the User Manual. Each sheet has the same .sch file, but each sheet name is different. When I annotate, everything works exactly as I would have expected. That is, each instance of the sheet has its very own Reference Designaters. However, I noticed that if you change the value of a component in one instance, all of the other instances reflect that change as well. I am assuming I am actually asking KiCad to do something it is not quite capable of doing yet. I got around this problem by not using a complex hierarchy for this one particular sheet. But this a feature I really enjoyed in orcad. Is my perception of the problem correct?

So you got several hierarchical sheets appear within a project, that have different sheet names, but are linked to the SAME .sch file?
If so, no wonder changes in one sheet make it to the other… you would need different .sch files to avoid that.
Why did you link the same .sch file to different sheets anyway?

Thanks Andy. Just wanted to confirm this was the way it is. Is there a place where I can log a requested feature? While this is not a big deal, it would be nice if all fields for a component could be different for each instance of a sheet. Orcad is able to do this. But I can imagine it is a data base night mare.

Or he could make himself a very custom script that keeps control of the several copied sheets and those handful of values outside of KiCAD…?

I mean, we’re just talking about:

  • parse basic .sch file
  • replace a couple of fields
  • create copies of .sch file

I think I may be trying to overcome essentially this same problem: I want to use complex hierarchy to have two identical sheets (two I2C slaves). The issue I am encountering is that the nets are not unique for each slave, so in Pcbnew it wants me to short each pin in one sheet with it’s duplicate pin in the second sheet, which makes the circuits useless. I want to be able to have unique net names for each slave, but not to have to make the same component updates twice, once on each sheet separately, when I go back for revision.

Tl;Dr: Is it impossible to use complex hierarchy and still have unique net names on duplicate sheets?

edit: I am a new KiCAD user, previously familiar with Altium, so if I am missing something obvious please tell me!


You can always create a copy of the repeated block and give the sch file a different name, then you can make such changes without any problems. The blocks become completely decoupled though; if you need to fix a schematic error you will need to repeat the fix in all copies of the block.


Yes, I’ve got it, thank you very much. Among many small errors I was making I realize the thing that really held me back was myself. I was using the net-names to organize and orientate my components before routing on the Pcbnew, and although I now see that the ratsnest correctly separated the components and nets from the two duplicate sheets, the net-names presented on the pads, that I was using for organization, were identical across duplicate sheets. This caused me, with the ratsnest turned off because I wasn’t routing, to think that KiCAD was telling me to short each pair of components from separate sheets together, when in reality even though the net-names appeared identical they actually carried hidden information pertaining to which of the duplicate sheets the net is from.
I do not like to have to have ratsnest turned on just to differentiate between the same net from different sheets, is there a way to have KiCAD give me a textual sign of which sheet a net or component is from or do I need to always go by the reference designator and/or the ratsnest?

Tl;Dr: I had ratsnest turned off and thought the net-names on the pads indicated KiCAD wanted me to short nets across components on different sheets.

1 Like

Only way I know that might satisfy you is to have eeschema and pcbnew open at the same time and rely on the cross link feature (pick a part in either app and see the other mark it).

1 Like

Hadn’t discovered that feature yet, this does help. Thank you!

Concealing the sheet reference part of the netname made me overlook a missing hierarchical sheet pin and islanding a net by accident. I cannot really think of a good reason for this behaviour. You have had the opposite problem of trying to join two different nets, The stripped part of the netname could have been reduced to the sheet number, so not much longer

Understood. I guess my real issue is that I find the ratsnest control in KiCAD to be insufficient (compared to my experience in Altium). If I was able to easily toggle individual nets in the ratsnest I wouldn’t be so bothered by the net names appearing multiple times. But alas, all I can do is turn them on one by one and then turn them all off (if I’m missing a way to toggle individual nets with this level control, please tell me).
Regardless of the issues I’ve been having, this forum is incredibly helpful and I have found work-arounds to all my problems here. Thank you all!

1 Like

This raises a valid point, it certainly should not be hidden from view, that nets are not the actually same.

…and that also makes sense, so what is needed is some solution that satisifies both &
a) Does not hide extended net names
b) Does not create names that are too long

Some possible solutions -

  • Add a prefix, like …/Name to indicate this has sheet nesting, and is not the same as Name
  • Give each sheet a number or letter and show a/e/Name
    letters allow 26x26 nesting with modest name length cost

Either ‘short form’ needs to show full net name on Select & Edit, and maybe on hover ?

An example would be editor file names, some IDEs here show file name in tab, but full path on hover.
Some have file name in tab, but full path shows in top line.
Ones that do not give me complete information, I complain about & get fixed :slight_smile:


I like your “…/netname” to at least indicate that something is hidden.
Then a hot tip that actually displays the full name when you hover over the pin is even better.
Right now properties doesn’t seem to reveal anything

1 Like

The full net name does show up, in some query situations, but having two pads labeled exactly DIN11 is certainly distracting.

Curiously, when you are actually routing the net, the net name does not show.

However, click select, or E with multiple choices, the Clarify Selection list shows full net name, but E with one-choice, pops straight to segment XY which omits the Net name.