[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.
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.
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:
Open spreadsheet view, add variant fields, fill different parameters for each variant, make “Value” field something abstract:
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:
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.
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.)