More than 1 pcb layout with same schematics

I want 2 versions of the PCB layout, including footprints. One with more SMD components replacing some through hole, but the schematics to stay the same.

I tried save as in the PCB editor this worked for a while, but I could no longer use the button to go back to schematic and after some time all the components disappeared and was just left with the copper layout.

Basically, I just changed 2 through hole footprints to SMD ones and moved some stuff, so it would fit.

1 Like

I’m trying to think right now how you would do this, but I can’t seem to think of a way. As far as I can tell in my experience with KiCad, there does not seem to be any framework in place for variants. Because how would you have the PCB file be aware of which footprint to pull in from that one schematic file. As far as I know you cannot assign more than one footprint to a symbol? Someone please correct me if I’m wrong.

I think there is something like this in Altium with the existence of Variants as applies to schematic symbols and a whole bunch of other stuff, but KiCad doesn’t have that kind of juice just yet.

If it’s only two parts, maybe try to stack/put adjacent the two footprints if space/signal integrity allows, and route them to the same nets so that you can choose which part you want to populate at manufacture time, and you have the advantage of having one board to make.

1 Like

Hello and welcome @jmnc2

Kicad only supports one PCB.

Probably your best option is to use your schematic with the THT footprints, associated with the resistor symbols, as one project to produce one PCB. Then copy your schematic and PCB to a new, second project, change to appropriate SMDs in footprints associated with the schematic and modify the PCB accordingly.

Two projects, two slightly different schematics and two different PCBs.

1 Like

Here’s an idea to keep both footprints on the one PCB. (I might get banished from the forum for this hack :slightly_frowning_face:)

Using the graphic tools (green arrows) with the layers (red arrows), you can end up being able to place either type of resistor in the one location.
I’m assuming you are assembling the PCB yourself.

EDIT: not a good idea… in fact, RUBBISH; solder mask problems!

I wonder if you could do it by putting a link to a common schematic file in two projects and then creating a local footprint library in each project. They would contain variant footprints but under the same name. You’d have to be careful treat the schematic as read-only in those projects and never back-annotate.

Nah, terrible hack. Forget I mentioned it.

Here’s another better, easier option:


ksnip_20220929-160845

ERC won’t care, and just ignore DRC if/when it goes hysterical.

2 Likes

So the main problem is the footprints are stored in the schematics file?
So when you use “save as” is the schematics cached or something?
It kind of worked for a while.

Anyway, thanks for all the help.

1 Like

Only one footprint can be associated with one symbol.

Kicad is just not designed to have more than one PCB per project.
You could get away with alternate resistors provided you have a schematic as my above example, but you couldn’t have different locations for some stuff (as you mentioned in your OP).

The symbol is stored in the .kicad_sch file. A reference to the footprint is stored too, e.g.:

    (path "/a2f96f4e-d95d-4c20-90ff-804397e6e6ba"
      (reference "H1") (unit 1) (value "MountingHole") (footprint "MountingHole:MountingHole_3.2mm_M3")
    )

If this is a one off, I would just make a copy of the project and modify the footprint in that. Duplication of the schematic, but that’s the trade-off.

In Create a PCB assembly variant system (lp:#1767218) (#2131) · Issues · KiCad / KiCad Source Code / kicad · GitLab there’s some discussion about variants. It’s long and difficult to follow, so here are some points:

  • I tried to read other EDA documentation and also tried some. As far as I remember I didn’t find actual board variants.
  • Assembly variants and board variants are two different things. Assembly variants are simpler, it’s just for place/don’t place for each component. Board variants would alter the layout, at least some of the manufactured layers, and it includes footprints.
  • In the future KiCad may support assembly variants (the plans for the file format already would support this) so that properties of symbols could be changed as part of variants.
  • However, support for several boards (and board variants) is partly different, although related.

EDIT: the most important difference between assembly variant and board variant is that you can manufacture one board and use it for all assembly variants. Board variant means you have to make a new board for each variant. Therefore they are conceptually very different, and many EDA packages support only assembly variants.

My company uses Altium variants for some of our designs. As far as I can tell, it only supports assembly variants.

FWIW, having footprint variants is a likely dead end because there is no way to guarantee that both footprints will take the same space on the PCB and connect to the traces properly.

When we have had to do something like that, we use @jmk 's solution, or a variation of it in which we make a special footprint that can accomodate both components of interest. We don’t make high volume designs, but we have about a hundred different designs. Our experience is that jmk’s solution produces the fewest mistakes and headaches for us.

John

2 Likes

This is how I do it…

You’re not the first to ask about this on this forum…

EDIT: May as well suggest: You can Edit the Footprint on PCB#2 (Edit the Footprint, Not the Library Footprint). Thus, you can get SMD on PCB#2 while keeping THT on PCB#1.

Don’t update Footprint from Library or, they go back to original Footprint…

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