Hierarchical Schematic Question

Just learning Kicad, and never intended to use hierarchical sheets.

But then I ran into the limitations on copying between schematics and found suggestions that hierarchical sheets provide some options in this regard.

So I looked into creating a hierarchy within an existing project and it seems that I can’t create a parent sheet for (an) existing schematic file(s). Is this correct?

And that has led me to the belief that to use hierarchical schematics you must always begin by creating the top-most schematic, and then use the “Create Hierarchical Sheet” button to create a lower-level sheet. I assume all of the related sheets end up in a single eeschema file, is that correct? (I will be experimenting soon.)

Finally, that leads me to a suggestion: A hierarchy consists of both parents and children. If my statements above are correct, the current “Create Hierarchical Sheet” button can only create children, not parents, so the name of the button is a little misleading, perhaps it should be called “Create Child Sheet”. This would be more consistent with actual Kicad behavior and may be useful for the future when someday we can create parent or child sheets as needed and manage them within a project.

You can reuse hierarchical files even from different sources by replacing the file name of the hierarchical sheet. So you can create independent sheet files and collect them later to be used in a new top level schematic file.

image

So I copied a folder containing an existing project. I opened the project and the associated schematic. On the schematic I created a child sheet called “ChildA”. I copied some circuitry from the original sheet to the ChildA sheet. Worked as described by others, some of the component fields on the ChildA sheet need to be repopulated, that’s fine because otherwise I would have the same components in more than one place.

I closed everything and looked in the project folder. The file for the ChildA schematic is there, but to my surprise, there are now two different Kicad project files in the folder. It appears that creating the child sheet caused a second Kicad project file (named ChildA) to be created. Is that normal?

And another question: when child sheets are used, what assumptions are made about PWBs? Is it assumed that all sheets are on one PWB? Or, is it assumed that each sheet gets built as a separate PWB? Can I control how many/which sheets get implemented as a single PWB?

KiCad always assumes that each project is to design 1 PCB, no matter how many sheets make up the schematic. You can force a different workflow, but any tricks you exploit may break when you update KiCad.

I guess you have opened the childA sheet directly with eeschema standalone and this is why a second project has been created.
If a hierarchical sheet is opened from inside the main project, no other project is created.

Meh.
Parents can make children, but I’ve never seen children make parents.
In the first Hierarchical design you make, you probably quickly learn that a top-down workflow works best when setting up a project.

Bottom-up also works, my advise is to copy an existing schematic from another project into the hierarchical project and then make a hierarchical sheet in the “top” and use the existing schematic file during creation of the hierarchical sheet.

Each hierarchical sheet is a separate schematic file.
Multiple hierarchical sheets can use the same schematic file, in which case the components will be duplicated. This is the basis of the “replicate layout” script (search for it!). The whole project results in one PCB. If you have a project with multiple PCB’s, then each PCB should be a separate KiCad project.

Some time ago I did an experiment with a multi-pcb design and it may be interesting to you to have a look at it:

r.e. Two projects in one folder: Exactly what I did. Thank you for the insight.

r.e. Merging schematics from the bottom up into a higher level schematic: I’m beginning to understand the subtleties of this, thank you for your tips.

with “replicate layout” you mean

?