Multiboard projects support (several PCBs in one project)


Recently I wanted to design a little bit more complicated project that will contain 3 different PCBs connected to each other almost like a sandwich.
I tried hierarchical sheets to have an overview schematic and individual sheets for each PCB and I wasn’t able to find any option to make a “PCB” sheet for the part of hierarchy.

For example:

  • Top Level Overview
    • PCB1 Sheet
    • PCB2
      • PCB2.Sub sheet 1
      • PCB2.Sub sheet 2
    • PCB3 Sheet

Here is my feature request: add support for complicated projects with multiple boards and optional global DRC checks.


How would this be different to just having three different projects?


It is different because 1 project represents a whole device. For example recently I planned to design a mini transceiver which will have 3 boards. Those boards should connect to each other like a sandwich.
Currently in order to maintain connections between boards I have to close and open different schematics and switch between projects all the time. For example if see that some part doesn’t fit on one PCB and I can move it to a different one, I have to make a lot of steps to move it.
There is more reasons. For example common BOM. If we have 3 projects, we basically need to generate 3 BOM files, combine them somewhere in Excel and get totals after that.
I understand, this is complicated task, because it needs some initial research because boards could be connected to each other though pin headers, ribbon cables, regular cables, gold fingers, some hex nuts or just soldered to each other. I am sure there is more options and it is difficult to define a “borderline” connections.
The main advantage of one project is integrity - we have everything in one place, we don’t need to jump between projects etc, rebuild annotations etc, check rules, make sure that we didn’t miss a pin etc.
It is worthwhile to see the device as a one project from logical perspective.
Also it doesn’t feel right when we build one thing to make several projects for it.


You can open more than copy of KiCad.

From a developers point of view, I am kinda struggling to see what the “multiboard” would mean in terms of coding. So far I’ve got

  1. Copy and paste between schematics
  2. Combined BOM
  3. Maybe some sort of ERC that knows about connections between boards.

I would be interested to know what features other EDA packages provide for this. We make multi board products at work, AFAIK they are all designed as separate projects. Standard engineering practices ensure that they are compatible and work together.


you can do a single big project with separated schematic, each for any single sub-board, and then develop a single pcb of the project, using scoring or mouse-bites to separate the single sub-pcbs.
You can get some tips searching this forum for ‘mouse-bites’ or ‘mezzanine’
Moreover, Kicad v5 can also render separated pcbs, if you need it.


Here is my idea, To avoid update connection that share across the board in KiCad, you can design all 3 board in 3 KiCad project, except share 1 schematic file CONNECTOR.SCH across all 3. How to share. You can just create a hierarchy sheet, and edit the schematic file of that hierarchy block point to the CONNECTOR.SCH file. Then any time you change any thing in this scheet, all 3 project get it.


Guys, I want to have one big schematic for the whole project. And split it into several PCBs.


I haven’t tried this so it might not work. My experiment for you to try is to set up the following directory tree:

  • Project
    -> Board1
    -> Board2
    -> Board3


  • Create a KiCad project in all 4 directories (the parent Project directory and in each of the three board directories) and create a schematic file in each. (Just creating the project might create an empty schematic file. If so, this is enough.)
  • Open the schematic in the parent project directory and in that schematic create 3 hierarchical sheets, each pointing to the schematic files in the board child directories.
  • Use the parent project schematic to only hold the sheets (you won’t be using any hierarchical pins) and for project overview notes. You can create some custom component symbols here (no pins needed) for any assembly hardware you want to include in your BOM.
  • From the parent project you can enter each of the child sheets and build your three board circuits.
  • When making the boards, open the projects in each of the child directory projects and make the boards there.

Hopefully this would give you a common BOM, a single printable schematic with multiple pages, and 3 unique boards.

I’ve never tried this before so it may crash and burn. I can see it might get a bit clunky when you decide at board layout time to change something that would propagate to one or more of the other boards. You might need to switch to the parent project to make the changes, then switch back to the board project to resume the layout.


then you can create a single schematic, instead of a hierarchy of sheets (more logical anyway), and have a unique pcb, divided by scoring or mouse-bites

A part of having the single pcb separated by scoring or mouse-bites into a single board, I really doubt that any other ECAD would offer this solution…


Ok, so how would KiCad know which component goes on which PCB? Maybe that could be on a per sheet basis.

If there was a way to specify that, then a separate netlist could be generated for each PCB. Then when pcbnew was opened, it would work on a different kicad_pcb file for each pcb, each one with its own netlist.


Altium allows the creation of Design Workspaces that allow multiple PCB projects to be grouped together. Very handy when dealing with a few different projects(multiple pcbs, libraries, multiple hierarchical schematics, reuse etc)

I imagine that’s just a different type of project file that just links those various parts together.


Then you have multiple schematics… What the OP wants is a unique schematic but i.e. 3 different pcbs… This is what I consider not addressed by any ecad…


From a developers perspective, I would imagine the simplest way to allow this functionality would be approached by altering the layers manager, so that adding another PCB adds a hierarchy level, allowing you to switch on or off layers of any selected board. And keep them updated when the source file is modified.

However to keep the devs sane, I would imagine this copy would be view only to begin with. as otherwise you need to create tabs and drop-downs for most of the menus for which PCB settings apply to, It would be nice to have it as a unified thing. but starting small will be more likely to result in its addition.


Ah I see now he only wants a single sheet containing all the schematic data - my apologies.


Don’t worry :slight_smile:
Nice to see Altium approach though.


I think the Altium approach is pretty neat as it manages board interconnects and also permits pin swapping of connectors. I think that this is probably where the workflow proposed by @SembazuruCDE might be problematic although I haven’t actually tried it.
As well as multiboard layouts, some workflow like this would be handy for managing the design of interfaces to other off board modules. It would presumably mean that the connector to connector net would need to be identified as a different net class, would need to be abstracted as a ‘virtual’ connection so that a rats nest wasn’t drawn and the net class would need to be treated differently for ERC. I don’t think this sort of workflow is going to be possible even with some external scripting and might even be dependent on a Kicad format change but it is an interesting and potentially very useful feature request though.


You need to have signals differently named in different schematics to the connectors i.e. VccB1, VccB2, GndB1, GndB2, In1B1, In1B2 etc… Then your connection would be matched, without the need of virtual things… And you can have separated islands each on every schematic and then develop your pcbs within different areas to complete the multi-board without any DRC errors or missing connections. That is what I normally do if I have to develop connected sub-boards of a complex project.


Without any missing what?


I have edited the previous post :slight_smile:


Here is my idea.
When I create new project in KiCad it gives a choice between single-board design or multi-PCB design. If I choose “multiboard” design KiCad automatically creates me 2 sheets: “Overview” and “PCB1”. It introduces a concept of “PCB sheet” which is a property on sheet telling KiCad that components on this sheet and on all sub-sheets will belong to this PCB.
Therefore “Overview” sheet is a PCB connections diagram. On this diagram it is possible to add components like ribbon cables, pigtails etc and other PCBs.