Just thought I’d share a workflow I’ve successfully been using to manage projects that benefit from a shared symbol and footprint table, shared schematic hierarchy, but really need multiple PCBs (for instance, multiple subassemblies). As it stands, you can try and design it all in 1 kicad_pcb
file, but this falls apart when the different PCBs really need to be exported separately, with different DRC and other settings.
Instead, what I’ve been doing is creating a master.pro
project, and in the top level schematic, creating a hierarchical schematic sheet for each subassembly, let’s say assy1.sch
and assy2.sch
. The schematic can then be designed as usual, making sure to annotate it only with this master project open (this avoids collisions in references between the subassemblies). Having all subassemblies in one hierarchical schematic tree makes it easy to use sheet pins to represent connections between the subassemblies in the master schematic (for things like header pins or cables).
When time comes to generate the netlists and do the PCB layout, create a new project in the same folder for each subassembly, making sure to name it the same as each subassembly schematic (so assy1.pro
and assy2.pro
). When doing any editing of the netlist or PCB layout, make sure it is done with one of these subassembly projects open instead. What this does is drop the project scope down to the individual subassembly, allowing you to export the netlist for just that one, design the layout for it, and export the gerbers for it. By being in the same folder, the same project symbol and footprint tables will used across all of them still, and schematic editing can still be done up in the master project.
While I don’t think KiCad was intended to be used this way, it seems to be working well enough for me so far. The process is a little arcane, but it becomes clear after using it for a little while. If anyone has any questions or ideas on how to streamline this, I’d be happy to hear them.