Hierarchical Busses in Kicad 6

I made a hierarchical file in Kicad 6 which contains a DAC with a serial interface, {CS SDI SCLK LATCH}.

I can pack these 4 signals into a bus and connect the bus to a hierarchical net port.

I can also import the bus port from the hierarchical sheet symbol on the sheet above. I connect another bus on the host sheet which contains {CS_DAC0 SDI_DAC0 SCLK_DAC0 LATCH_DAC0}.

However these labels are not passed into the hierarchical sheet. If I instantiate the DAC multiple times, the serial signals of each channel will have the same net names, which makes the whole point of using hierarchy obsolete.

How do I achieve that the 4 netlabels from the above sheet are passed into the instace of the hierachical sheet and replace the bus net names in that hierarchical sheet instance?

EDIT: This is all wrong. See answer below, thanks craftyjon!

Assumpions are bad, I was wrong

I understand that this may be a simplification on a greater problem. But why not use normal hierarchical ports for those signals? I have a suspicion that buses are global by nature, bad the behaviour you see is correct.

I you could use the same PCI bus but replicate and duplicate for many RAM chips (with only per chip IO be instance specific). Makes sense to me.

Maybe a screenshot of what you are doing would help.

This is basically how you can do what I think you are trying to do:

4 Likes

Dear Jon,

thanks that solved it. The key was to prepend the host name “DAC0” before the curly bracket as you showed in your picture.

I appended it to each label in the bus, and that failed to get passed down the hierarchy. With your solution, the labels in this instance turn out to be DAC0.SCK DAC0.MOSI etc. Perfect! Thanks!

1 Like

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