KiVariant - KiCad PCB variant Idea

I was working on many PCB softwares, but today i think KiCad is the best. I am very happy watching
how it develops. But… (always there is some but…) in my projects i miss one functionality - PCB variants.

PCB variant is a situation, when there are many products based the same circuit board.
For example in one variant some parts aro not populated (not fitted, etc.)
or have different value (for example resistor value change).

Deal with PCB variants should affect at lest:

  • BOM - automatically generate bill of materials for every variant specfied in schematics,
  • P&P - automatically generate pick and place files for every variant specified in schematics,
  • Assembly drawing - automatically change visibility/value of parts specified in schematics.
  • Schematic print - automatically change visibility/value of parts specified in schematics.

Currently there is no such functionality in KiCad, except BOM. There is amaizing script
named KiBOM, which could deal with PCB variants in bill of materials.

At this moment i manually edit Pick and Place files removing parts which are marked as do not fit.

Making assembly drawing is a little more complicated. I add to footprint simple field “X”. When
i want to mark component as not fitted i just change visibilty of this field and plot fabrication

In schematic i just change visibilty of BOM field.

For now ,for every PCB variant, i manually mark if some parts are not fitted
and actually i don’t have idea how to deal with value variants.

But (always there is some but…) KiCad has great ability - it work with python scripts.
I have idea (partially written above) how to deal with PCB variants. I think in schematic
there schould be added fields in every part that should be changed in PCB variants like below

In Variant A Q11 schould be marked as DNF in assembly and removed form BOM and P&P.
In variant Production Q11 should have changed fields value and Part Number.

Then some scripts can be written/run:

  • KiBOM - with some changes, to achieve functionality like above,
  • script to change P&P - remove parts (from basic P&P) if marked as DNF or change value ,
  • script to change Assembly drawing - i think it is most dificult. I think there are two solutions.
    Firs change visibility of field “X” to mark DNF or use additional layer (two for each side of PCB)
    to draw lines on footprint position. Change value schouldn’t be a problem.

For now i don’t have idea how to deal with schematic using scripts.

Is there someone interested in this solution (spend some time on writing scripts).
Maybe someone have other idea how to deal with PCB variants? Or maybe there is exisiting
solution, and I don’t know it?

I think it could be a great functionality in this software. Every comments are welcome.

This sounds like an edge case that shouldn’t be catered to in the software to me.

But like you said, KiCADs flexibility + a bit of Python (or even grep/sed) should make it doable.

I’m not sure – this is a fairly common feature in high-end ECAD tools, and I think this variant system is used in large companies somewhat often. I think it’s a reasonable desire to have KiCad support this better.

1 Like

Add you thumb up here:


Here’s the description of such feature for Altium:

this is the only reason why we don’t use it in our development team.
We also produce five assembly variants of one board and we need a preview and editing of more assembly variants in one source file of boards.
In Eagle is very easy. Video here
Please implement in Kicad, then you will be the best of world . :slight_smile: