Is it possible to create many schematic files (and PCBs) under a KiCAD project?

I am very new to KiCAD with years of experience in Eagle.

In KiCAD, is it possible to create many schematic files (and PCBs) under a KiCAD project? For example I have a project named “high power SMPS”. Under this project I need to have many schematic and PCBs like: main PCB, control PCB, sensing PCB…

For each schematic, of course, there will be a corresponding PCB. In addition to that there will be many versions of each PCB, say, main PCB1, main PCB2 etc. Is it possible? I am unable to locate this in KiCAD 8.0. It is a basic requirement and I think the latest versions

KiCad is currently limited to one PCB per project. There are various workarounds, but none are official supported. You can have multiple schematic sheets in a hierarchical project, but normally all parts are still on the same PCB.

There are some plugins that can help. KiKit can help with panelization, and the Kivar plugin can help wit creating variants of the same PCB, but I do not have experience with them.

Oh… It is very unfortunate. Actually this is an essential requirement.

Not really. Many people are using KiCad at the moment, and a lot of them are quite happy with KiCad. But I do agree that integrated support for multiple PCB’s in a project will be an advantage.

In the simplest workaround form, you can include both the male and female connectors that connect the PCB’s to each other in the schematic. You also have to make sure there are no nets crossing this gap, so net names have to have different names on these connectors, or you can work with local labels on a separate sheet for the second PCB.

There is also nothing preventing you from drawing two PCB outlines, but they will be in the same relative position on the gerber output. Creating a panel that encloses both these PCB’s is an option.

And there are more workarounds, and although none are ideal, overall it’s mostly workable at the moment.

Not for most home and commercial users. Most PCBs are assembled individually and the PCB makers prefer to place the various Gerber plots separately to make best use of the PCB sheets unless you are buying large quantities

Thanks,

Actually when working with many projects I came across this requirement. For example our inverter PCB have a main PCB. In the main PCB there are 6 driver PCBs, one control PCB. So under this project I need to create a main PCB (and many versions of this: main PCB1, main PCB2…). Then I need to make a driver PCB (again many versions driver PCB1, driver PCB2…). Similarly for the control PCB. A finished PCB will look something like this:

There is nothing wrong or difficult for making separate KiCad projects for the “Driver PCB” and the “Control PCB”. Then also make footprints for these PCB’s and add them to the “Main PCB”.

You can also make 3D model for your control PCB to see it when looking at your main PCB 3D view.

Yes. It is not impossible to create seperate project for each schematic-PCB pair. But if you have 3 versions of main PCB, 5 versions of driver PCB and 4 versions of control PCB then you will gave 3+5+4 = 12 projects. I think that is very annoying.

I have found incredible features in KiCAD that paid software like Eagle are not offering. KiCAD is very professional. But the issue I pointed out seems to be a…

I am attaching a screen shot of PCB and schematic files under a project in Eagle:

The only difference is the organization. Both, eagle&kicad, don’t really support multi-pcb assembling. (unlike the newest eagle/fusion development have added that feature, I stopped with eagle v7.7.ultimate) with netlist/DRC across multiple pcb.

The eagle project manager just allows to add multiple pcb/schematics to the project tree.

In kicad you will have to do this manually: Norton commander–>create a suitable directory structure:

  • SMPS
    • main_pcb_v1
    • main_pcb_v2
    • main_pcb_v3
    • control_board_v1
    • control_board_v2
    • control_board_v3
    • IGBT_driver_left
    • IGBT_driver_right

The kicad project explorer doesn’t shows the other subsprojects, but for this task the OS file manager (or any other file manager) can be used.

There are already open gitlab feature requests on this topic, albeit not assigned to a developer currently. For instance: Project Manager: Show All or Favorite Project List by Default [Wishlist] (#4859) · Issues · KiCad / KiCad Source Code / kicad · GitLab or Multi project and multi document interface (MDI) (lp:#1819304) (#2355) · Issues · KiCad / KiCad Source Code / kicad · GitLab

out of interest (because it’s seldom to meet other power developers): which power range you are talking about? (our typical developments are in the range 1kW…20kW)

1 Like

If that’s your companies design approach, you probably shouldn’t be making any prescriptions on features. That’s amatuer hour stuff.

1 Like

If program keeps track that when you change pin assignment in main board schematic than in all control boards schematic appropriate changes are made than it is important that program keeps track of all control boards. But if not (I have never used Eagle and don’t know its possibilities) then I don’t see the difference between:

  • having 12 schematics and 12 PCBs and one project, and
  • having 12 schematics and 12 PCBs and 12 projects organising them in pairs.

If I imagine that each schematic can be multi sheet than I would don’t know how to manage it all in one project.

I think that if you use a version number/branch management tool such as git and manage the folder structure properly “outside of KiCAD”, you can meet your desired requirements. Also, when there are many workers, I think that these external tools are useful.
The specifications for the cables and pin headers connecting the boards remain the same between the boards, so it’s fine to just create and share project-specific footprints and symbol diagrams, right? Or do you want to run simulations between the boards each time?

It’s not like that. My usual workflow is as follows: I start designing a PCB for the project (say, the main PCB) by first drawing the schematic. Then I create the PCB from that schematic. Once the PCB is assembled and tested, I may notice that some components need to be changed, added, or resized. At that point, I begin working on version 2 of the main PCB.

After assembling version 2, the same process may repeat, leading me to create version 3, and so on. To keep a proper record of these iterations, I never delete the older schematic or PCB files. Naturally, under a single project, multiple versions of the same PCB will exist — all quite similar, with only minor differences between them.

Yes, that’s good. I also want to be able to look at old revisions.

No, that is not a natural / logical result. Constantly dragging all that old data around is a nuisance. One way to do it properly is to use a version control system such as GIT But Git has a non-negligible learning curve of it’s own. My own method is to maintain a text file with dates and notes and zip up older versions and move them to (various) backup media. That way I keep the main project clean while still having quick (enough) access to older versions when needed, and a log of what changed when. In practice I rarely need those older revisions.

2 Likes

I think everyone do it that way, but I see no reason all that stuff be in one project. Let us say my pcb name is BK50.

I have BK50 directory. In that directory I have files (not KiCad) that are related to all BK50 PCB revisions (like case drawings, I/O pin set drawing, some mechanical drawing (if needed). The spreadsheet with information about differences between revisions could be also here, but I have it in more global directory to have notes of all revisions of all my projects in single place (to easy note that some changes made 2 years ago to one PCB can be also applied to another PCB if from any other reason it gets new revision).

In BK50 directory I have BK50_A subdirectory with BK50_A schematic and PCB. When I decide to make new revision I am making BK50_B subdirectory, copy there files from BK50_A renaming them all to be _B and then modify them.

1 Like

Maybe you don’t aware you can open more kicad instances at the same time. Each of them with its own libraries, schematics, pcb, etc. Then you can change/compare/copy blocks among them using the ‘main’ project as a reference. This is how I usually work with multi-PCB projects like yours. About revisions/versions here’s an example of my folder schema:

  • Main_project

    • RevA0
    • RevA1
    • RevB0
  • Sub_project_1

    • RevA0
  • Sub_project_2

    • RevA0
    • RevB0

and so on…

I don’t use sub-directories for the Sub_projects

After some internet search and chat with chatGPT I have a solution for neat organization of files for a project containing multiple schematics (mainPCB, controlPCB) and multiple revisions of each schematic (mainPCB1, mainPCB2, controlPCB1, controlPCB2). The task is as narrated below:

First of all all my KiCAD projects are stored under mydocuments > KiCad folder. Now I am designing a project named, say motorDrive. So I create a new folder motorDrive under mydocuments > KiCad folder.

Then I start my main PCB under the folder “mydocuments > KiCad > motorDrive > mainPCB > main1” and draw schematic and corresponding PCB. After some time I decided to start version2 of the main PCB. Version 2 may be having few changes like some additional components added / deleted and I need to start it from the schematic/pcb pair I used for main1. And this project should fall under the folder mydocuments > KiCad > motorDrive > mainPCB > main2".

So mainPCB1 files are like this:
…/KiCad/motorDrive/mainPCB/main1/
├── main1.kicad_pro
├── main1.kicad_sch
├── main1.kicad_pcb

Then I need to create
…/KiCad/motorDrive/mainPCB/main2/
├── main2.kicad_pro
├── main2.kicad_sch
├── main2.kicad_pcb
└── …

So first

  1. Duplicate the folder

Using File Explorer main1 → copy to → main2

  1. Rename the project files inside

Inside main2/, rename:
main1.kicad_pro → main2.kicad_pro
main1.kicad_sch → main2.kicad_sch
main1.kicad_pcb → main2.kicad_pcb

  1. Update the internal references

Open main2.kicad_pro in KiCad:

KiCad may automatically detect that schematic/PCB filenames have changed.

If prompted “Can’t find schematic file,” just browse and select main2.kicad_sch.

Once loaded, save the project to update internal references.

  1. Check schematic ↔ PCB link

Open main2.kicad_sch and main2.kicad_pcb:
In schematic editor, go to Tools → Update PCB from Schematic.
It should correctly link and recognize your PCB.
If it complains about missing associations, just re-link once; after saving, it’s fixed permanently.

So under the motorDrive project if I have mainPCB1, mainPCB2, controlPCB1. controlPCB2 etc then the folders will look like this:

Documents/
└── KiCad/
└── motorDrive/
├── mainPCB/
│ ├── main1/
│ │ ├── main1.kicad_pro
│ │ ├── main1.kicad_sch
│ │ ├── main1.kicad_pcb
│ │ └── …
│ ├── main2/
│ └── main3/

├── controlPCB/
│ ├── control1/
│ │ ├── control1.kicad_pro
│ │ └── …
│ ├── control2/
│ └── control3/

└── commonLibs/
├── my_symbols.kicad_sym
├── my_footprints.pretty/
└── my_3dmodels/

Couldn’t you just do a Save As… which is supposed to automagically update all the internal references

1 Like

Yes. From version 8.0 this is a good option