Designing a multiple levels PCBs in KiCad?

I would not suggest to go this route. KiCad assumes that the project has exclusive rights over the file. I can see problems happening with the rescue and cache algorithms as well as the annotation.

I don’t get all the cach stuff and why not doing it in the same project file atleast?

Approach may also depend on how you will have the boards manufactured. The cheapie place I use will do v-scores so you can put them on one board and separate them later. This may do for a small one off projects but could bite you in future runs if you change one of the boards and just want to run that half like a master and shield/cape situation.

Because you limit yourself this way.

One problem are copper zones and DRC. You would need to ensure that the two projects do not share any nets. (Not a power plane and not others) Because if they share nets kicad will want to have them connected and DRC will complain. Leaving you with a lot of false positives that could hide true errors.

Another problem is versioning. It is seldom the case that both pcbs will need a new version during the project livetime. If they are in the same project file then you can only update both of them never only one.

All of these are small problems that simply mean that you will be happier with how it all goes if you separate the projects. Will the added effort pay off? Well depends on how many projects you will make over your whole live. For most projects you will not get any benefit from doing it properly. But the one project that would go south if not done nicely will make up for it. (The bad thing is if you always do it properly then you will never know how much time you save over the long term because you never paid with fixing a bodge job.)

2 Likes

Yes but separating it also means separating it from the nets and everything else like header relative coordination and things like that. this just seem unnatural to do but if this is how the pros do it for now I guess we’ll just go with that untill I become some sort of a python god and start scripting and developing kicad.

I don’t know if there is a single industry standard term. Among the terms that I’ve heard over the years are:

  • Motherboard and Daughterboard: AFAIK this is why we call the main board in computers the motherboard. The primary board that has the main functions is called the motherboard. The daughterboard(s) has auxiliary functions, and may be electrically connected to any system on the motherboard that the design requires without going through any expansion bus control circuits. Other common terms for daughterboards are: “daughtercard”, “mezzanine board”, or “piggyback board”. Sometimes this daughterboard is where the actual CPU/µProcessor/µController is.
  • Expansion card: An auxiliary circuit that connects to a motherboard through a predefined bus control subcircut. For example, PCI cards are properly expansion cards instead of daughterboards because of the PCI bus.
  • Backplane: Traditionally this is a board that just has connectors for connecting two or more other boards together. The term comes from the traditional use of this board being the back plane (or wall) of a PWB card rack and provides the connections for all the boards in the rack. This can be a common bus to all the rack positions, or custom wiring from rack slot to rack slot. (I suppose you could stretch the definition to call the bank of PCI and other expansion slots on a computer motherboard to be the “backplane area” of the motherboard. Though, I’m not sure if I’ve actually heard anyone outside the cacophony of my own mind use the term this way…)
  • Shields: Commonly used in the Arduino ecosystem. Because they have direct connection to the µC, they would fall under the category of daughterboard.
  • Hats: Commonly used in the RaspberryPi ecosystem. The official definition by the RPi organization states that hats should have an identifier EEPROM connected via I2C to pins 27 and 28, but that “rule” isn’t always followed. Because they have direct connection to the µP, they would fall under the category of daughterboard.
  • Bonnets: Commonly used in the RaspberryPi ecosystem, specifically for RPi Zero form factor boards. I’m not sure if this is an “official” name from the RPi organization, or a 3rd party name that has caught on by some vendors. Because they have direct connection to the µC, they would fall under the category of daughterboard.
  • Capes: Commonly used in the BeagleBone ecosystem. I get the impression that these are daughterboards with direct connection to the µC, but I don’t have much experience with that ecosystem.

There may be other names used that I’m not as familiar with (so didn’t think of them off the top of my head). For example, I’m not sure what terms IPC uses for board-to-board stackups.

So, as you can see, there is really no “one” term for these. But, if you are looking for parts, often you can find the connectors at the distributors under the terms board-to-board connectors and/or mezzanine connectors. (Though, nothing is stopping you from using any connector that has male and female PCB mount connectors. In the past I’ve used d-sub connectors for this…)

1 Like

The only upside of doing both/all of them in single project is reuse of connector layout via placing connector in a separate hierarchical sheet and using it for each board. But you loose too much in my opinion regarding 3D modeling.

3D modeling becomes quite important with stacked PCBs and me personally I would not like to loose this option.

1 Like

Separating the boards isn’t just for you or KiCad. Manufacturers don’t usually like several projects in one bunch and I don’t think many would even allow or accept several boards (independent shapes with edge.cuts) in one gerber set.

Some explicitly tell that they don’t even accept several boards inside one outline and if they notice you try to do that they take the price of two projects (you can do some tricks to avoid that). Or they may require you do the panelization yourself, or that they will do the panelization with some minimum number of pieces, or… etc…

You should contact and ask your manufacturer first if you want to do that.

1 Like

I am not sure i follow. You would always need to have two sets of connectors placed as you can not have the boards designed on top of each other. (KiCad is not build for this in any way. You would need to make the boards next to each other.)

The closest you can get is by reusing the board you designed first as a template for the second one.


Yes a way to reuse a design as an interface definition would be a nice feature. But we can only help you understand how to do something with the current feature set.

Unless you are planning on running simulations, which I doubt?, you might try opening them as stand alone projects. That may satisfy the organizational logic you need to keep it straight in your head? Says someone that hasn’t used standalone except for some crude copy and paste a few years back and may misunderstand … :wink:

Standalone does not add much but removes most of the newer features that require tight interaction between schematic and pcb. (I fail to see how it will fix anything to be honest.)

Like I said, I haven’t used it much and not at all recently.

The closest thing I can think of would be to do this as a flat design because that is the desired work flow. Then delete half the project, copy the directory to a new direcory, and then restore the original. Then delete the other half. At that point you could do the same if you want to keep the original plus the two boards separate. I know it’s a really bad kludge, but I think that might work if the OP really wants one overview project.

Hello,
I have talked about this before: If you want to have a single schematic diagram that supports multiple printed board assemblies (PBAs), you would assign reference designator prefixes based on your system subdivision diagram (see ANSI/ASME Y14.44 Figure 7 Typical System Subdivision) using the Unit Numbering Method of assigning reference designators. You use the class letter A, which means a separable assembly. So, you would have A1, A2, A3, A… Copy the schematic over to however many PBAs/PCBs projects you need and start deleting. For the A1 PBA/PCB delete everything that doesn’t have an A1 prefix and then delete the A1 prefix. Do the same with all the other PBAs/PCBs. This will leave you with basic reference designators on your boards. This is if you want separate boards.

If you want a single board you will have to leave the ref des prefixes in place and provision the board with mouse bites or V-grooves to separate into subassembly boards.
–Larry

Here is something to ponder on https://lists.launchpad.net/kicad-developers/msg41330.html. I am not sure if I understand correctly but reading the second paragraph seems like the KiCad tries to modify just the things that the current project needs, leaving everithing else intact.

@Rene_Poschl So here we have official confirmation that the proposed solution would be doable

[edit 21.11.2019]
Another message hinting that KiCad schematics can be used in multiple projects at the same time

[edit 22.11.2019]
Definite confirmation.

I do not know if it is “official”, but we had different terms based on the layout. Two or more boards of about the same size are a stack, with the boards being numbered from the bottom up (as built). If one board is significantly smaller than the “main” board, the attached board is a daughterboard. As for design, I would recommend hierarchical layout for a stack, or individual projects for daughterboard designs. Particularly if the daughterboard used depends on, or alters, functionality.

Had the problem of designing a PCB as a front panel and PCBs behind the front panel with connectors, LEDs, switches. I did the schematics and started the PCB layout. I knew the size of the front panel - a standard plastic box with panels on the two ends.

Drew the outline of the panel. Saved as front_panel.kicad_pcb. Arranged the components. Defined holes for each type and put them over the components (basically superimposed he control panel over what would become the back PCBs).

Copied the front_panel.kicad_pcb file to back_pcbs.kicad_pcb - and I could see both of them as separate PCB layouts. Note they were in the same kicad project. Then deleted the superimposed parts as I needed (in front_panel, deleted the parts; in back_pcbs the front _panel holes).

(routed the back_pcbs as needed. put in mousebites, etc, because the different PCBs would be at different distances from the front_panel… I had placed mounting holes for each board as needed and also on the front_panel.)

I then plotted each separately, and they were ready to go.

I use 4.0.7 - I assume the same trick would work in 5+

No sweating!

I made this set of PCBs just by writing down the coordinates of connectors and verifying my double check that I got the signals right. Print out the boards (to a suitable scale), cut them out and overlay them on a window so you can look through them. If you are off by 0.1 mm, no problem.

Top 3 boards were made with EAGLE, the rest with KiCAD.

How would I do it today? I’d just export the 3D-models from KiCAD (works like a charm) and import them into Fusion 360 (FreeCAD just drives me nuts). There you can make an assembly and verify how your PCBs do match with the mechanics.

But again, all that was done without the export/import features. I just designed the big PCB in MCAD (less than 1 hour work) to verify it will fit with the housing. Including light pipes and SCCard slot.

Nick

1 Like

I realize that having both PCB in a single project seems simpler, but I don’t think it is a good long term answer. It is unclear to me, having never done this, what the Gerbers would be. Don’t do anything that will confuse the PCB manufacturer. They want a simple single PCB. Simple. Simple. Simple. Hence, separate projects seems like a better way to go.

I would also suggest that you only ever have 1 project open at a time. My pea brain screws things up. (:sunglasses:

You can make a single board outline and place only the mating connectors. Then use this as the basis for both designs, changing the Edgecuts as necessary. Be sure to LOCK the connectors in place.

1 Like

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