Assigning Footprints to Componenets in Hierarchical Copies

When using hierarchical sheets in Eeschema is there a way to assign PCB footprints to the original copy of the sheet and have those footprints assigned to all copies of that sheet? Right now I need to assign footprints to all components in each copy of the sheet which seems redundant since all copies of the sheet have the same components in them. I am using V5.1 .

Have you tried just adding footprints to one of the instances of the hierarchical subsheet in the usual way?
This is just normal operation for KiCad, and I am a bit puzzled why this is a question on the user forum.

A change made on one of the sheets is reflected on the other instances. On disk it is just the same file. A little bit of magic is added to give the parts different reference designators (a.k.a “references” in KiCad), but apart from that it is just a regular schematic sheet.

This does have some limitations. Using different values for components, such as in filter stages for a graphical equalizer is not supported in KiCad V5.1.x.
I’m not entirely sure, but I think that using two opamps of a quad opamp does not work well on a hierarchical sheet.

Thanks. for some reason when I add footprints to anything but the Root sheet the association isn’t saved even if I press the "Apply, Save Schematic and Continue button after making the associations. Also if I go into an instance of a hierarchical subsheet all components of all sheets appear, not just those of that subsheet. Maybe I built the hierarchy incorrectly? Below is an image of my Hierarchical Navigator.

First: I do not use hierarchical sheets much myself, so my knowledge about them is a bit rusty.

I did check in an example that I cobbled together some time ago, and when I change the footprint of “R201”, then the footprint of “R301” on the other instance of the sheet changes with it, and they’re kept in sync.
Maybe you can spot some difference between this (dummy) project and your hierarchical setup.

(Experimenting with simple examples is also quicker than with complex schematics and 20+ instances of sheets on multiple levels).

2021-09-20_Hierarchical_Multi_Sheet.zip (15.3 KB)

If I open the sheets in standalone mode with Esschema ie. not within the project and do the footprint associations it works as expected. Not sure why I can’t do it within the project but I can work with this.

If you can zip and paste your project here we can identify the problem. There should be no need to use standalone schematic editor even if it works.

I have attached it here. Those components which Kicad could automatically associate with footprints are associated but others have not been yet. I am on Ubuntu 20.04 and Kicad V5.1.10 if that has any significance here.SolenoidDriver.zip (17.9 KB)

@paulvdh Thanks for posting the example. I tried it and am getting the same behavior as I was getting with my project. I could only associate footprints with components on the Root sheet. When I tried other sheets and saved them then went back to check the association it didn’t work. The association had disappeared. I assume I am doing it correctly. I am using Enter Sheet in the menu then going to Assign Footprints and saving on the bottom. Very strange.

First (before I forget) an unrelated issue. Your voltage regulator “R-78E5.0-0.5” may need some decoupling and/or buffer capacitors. (Or maybe your schematic just is not finished yet)

About the footprints…

Eeschema / Tools / Assign Footprints (a.k.a. CvPcb) seems to have some trouble with Hierarchical sheets. It lists all footprints separately, but as far as I know it’s not even possible to assign a different footprint to another instance of the same sheet. There is no “master sheet” or the sheets down the hierarchy. If you change one, you change them all. (Except for RefDes)

Other methods for assigning footprints do seem to work normally:

Try this:
Descend into your Hierarchy till you find a single FET (or other symbol on that sheet), then hover over it and press f for footprint. Then click on the Select button and find something suitable and accept it.

I used to like the CvPcb because of it’s filters, but these days I more often use one of the 4 or more other methods to assign footprints to schematic symbols. I have not tried the other possibilities.

Thanks @paulvdh . Ya , I haven’t quite finished the schematic yet. I will probably add caps on the input and output of the regulator although they are optional. This is a switching regulator module with caps already built in. Your suggestion of using “F” and selecting the footprint this way works! Not sure why it doesn’t work via the assignment page, perhaps a bug in the software somewhere or a Linux permission thing. I am not trying to add different footprints to different instances. Anyway, thanks so much for your help. Using “F” I can do everything within the project.

1 Like

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