How to manage board variants (different components and footprints)?

[Personal context]
So, I’ve been trying to begin using KiCad for a while now (a couple of years at least), but for different reasons I haven’t been able to start using it until now.
Up until now I’ve been using EAGLE (from CADSoft, from before Autodesk bought it) so I’m still learning how to do stuff in KiCad.[End of Personal Context]

What I’m struggling now is managing different versions of boards based on a single schematic.
I’ve read about different ways of managing variants here on the forums, but haven’t been able to grasp a good workflow.

Right now I have a board that was designed in Eagle and imported in KiCad and is more or less done.
The problem is I need to have different revisions of the board depending on the stock of components:

  • One part uses one of two possible footprints
  • Two parts use totally different component from different brands and (logically) different footprints.
  • I have a section that should or shouldn’t be manufactured depending on the version of the board (on this particular case I could just remove that section from the board before sending the files to the manufacturer).

One solution could to have separate board files per schematic using different footprints, but this means having to modify several files when making a single change (e.g. changing a capacitor, or adding a new pad, or just simply moving some components).

Is there a recommended way to try to manage different versions with different footprints?
Around 90% of the design is fixed between different versions, but some part do have to be routed differently depending on the components used.

Any advise is welcome.

Thanks for reading!

1 Like

Sadly I haven’t used the software lately. Does a ‘save as’ into individual directories still point to the original schematic?

Looking at the pcb file with a text editor, I see references to the original schematic file.
Although there’s no “save as” but a “save a copy as” button which apparently creates a new project for the PCB (referencing the original schematic file).

As far as I know there is currently no support in KiCad for different versions of a PCB.

There are some ad-hoc things you can kludge in yourself, such as modifying a footprint so it can accommodate different package sizes.

In one of my projects I’ve just duplicated a part of the schematic. It has two RS485 drivers in parallel, One with an SO package and one in a DIP package (which can be socketed and is therefore easily replaceable). ERC does not like that at all though.

So for the most part, just making a copy and then manually keeping track of the changes may be the only option you currently have.

Thank you.
I guess there’s no easy solution then.

I’ll check the use of a custom footprint: a section of the board that has different parts/footprints and the routing already done.
Maybe this will have to do.

Well I did variant’ing yesterday, first time really. For me it was necessary only to shuffle resistor divider values for several board variants and some components not fitted in some variant (but no footprint change). This is only possible when assembly is done with iBOM, and BOM export via custom python script.

I did it this way:

  1. Open spreadsheet view, add variant fields, fill different parameters for each variant, make “Value” field something abstract:

  2. Use “Edit text and graphics properties” tool to make sure all “VariantX” fields are visible, and clearly seen on the sheet. Make distinct font effects for each variant name (choose different font for each variant, or bold, italic… Currently there is no color edit in this dialog, which would be the best way to make variant tables visible: Missing new font attributes in symbol properties field table (and several other dialogs) (#11459) · Issues · KiCad / KiCad Source Code / kicad · GitLab):

  3. When all variants are filled, and visible on the schematics, add text items with variant names. Format these texts to look the same as variant field text. Align variant name with appropriate fields. Do this for every component on the schematic (make variant table near each varianting component). This step would not be necessary if this would be implemented: Add option to show symbol field name (as a prefix prior to field value string) (#11457) · Issues · KiCad / KiCad Source Code / kicad · GitLab. Doing tables will assure to get readable pdf output, with variants clearly seen:

  4. Now schematic is complete, it can be exported to pdf (currently it has a bug: Font color lost in pdf plot (#11491) · Issues · KiCad / KiCad Source Code / kicad · GitLab);

  5. Assembly info export:
    a) BOM tables can be exported by python plugins. I believe, python editing is needed to export custom fields as columns (here is an example which exports boms, acceptable to partsbox inventory system I use: GitHub - WhiteChairFromIkea/KiCad_PartsBox_BOM: Export KiCad v5 BOM to be imported into PartsBox as CSV). I did not need BOM list with variants for my project, so didn’t hack anything. Used variant b below :);
    b) I used iBOM now. So set all variants to be visible in iBOM settings:

and you will get iBOM table with all variants clearly seen. You can hide any column as desired, if necessary:

Attaching stickhub demo project if needed
stickhub.7z (599.3 KB). Warning, this project is kind of buggy, play with your own. also, only C38 is preformatted here, only to show the concept.

Please leave comments if anything better can be done, I do also need to use variant system.


Thanks @poco for your approach.
If I’m understanding correctly your process is for dealing with variants only in the BOM files, right ?
(and so, during the soldering of parts)
It doesn’t have any variation in the production of the gerber files (which is where I’m kind of stuck for now), right?

I believe I’ll be needing something like a “sub board” kind of thing.
Use a base common board and add only the modified parts…

I THINK I can manage this using footprints custom boards.
If I manage to do it I’ll try to explain it here.

Right. I do not have an experience about another type of variations (differences which propogate towards gerbers or picknplace files).

There is a (maybe somewhat clumsy) workaround for this: add three more fields. For example Variant1_text. Then don’t show the Variant1 value, but show Variant1_text and make it have this text:
Variant 1: ${Variant1}
(In the BOM you would not show Variant1_text field, but Variant1, if you are concerned about what is said in the issue.)


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