KICAD is symbol-driven, not 'part'-driven?

I’ve been using KICAD for several years, but I’ve always had the nagging feeling that I wasn’t using it to its full potential.

In my world, I have defined notional ‘parts’ which are derived from an existing ‘symbol’ to which I add a catalogue number. Thus when I generate a BOM, it includes the catalogue number. If a supplier stops selling the part, I have to change that field of course. And opening up a schematic several years later probably means that there are quite a few such errors in its BOM.

I have not been doing local edits to parts on the schematic at all. i.e. I don’t put down a resistor symbol and then add a value and a catalogue number - this seems too ‘out of control’. So, I have a separate symbol i.e. ‘part’ for the 10k 0603 and another for the 12k, etc. It works, but maybe it is hard labour to maintain it.

I find the KICAD-supplied symbol libraries and footprints useful as the bases for my ‘parts’ but if they are later updated, I can’t benefit from that without changing the ‘part’ manually.

I am dimly aware of aliases i.e. as I understand it, a symbol can be common to several derivative names. This does not immediately leap out to me as being useful for my specific part-oriented purposes.

I was pondering today on the following scenario: supposing my company has previously used the zig-zag resistor symbol, but now wants to change to the box symbol. This would be a problem to me and my parts-driven system. Ideally, every resistor in my libraries of parts would be derived from a single resistor symbol so changing just that would propagate to all resistors (if I updated each schematic from the latest library).

To achieve this, rather than a symbol pointing to aliases, I would rather have each ‘part’ pull in an existing graphical symbol.

Am I missing a trick here? Could it be a lot simpler than I am making it, bearing in mind that I want my schematics to represent ‘parts’ not just ‘symbols’?

Will most likely be supported with the new file format expected for v6. It is however not certain that this feature of the file format will be in v6 (some features might be pushed back to v7). V6 is expected in about 2 years.

In general i personally do not include order info directly in symbols but use a house part number that can also reference the value field. This is particularly valuable for parts like resistors where i only need one symbol per footprint and tolerance combination and let the part management system fill out the value part of the house part number. (similarly with capacitors and inductors.)

1 Like


Many thanks for the information - one of the difficult aspects of any software app is being sure what it can’t do as well as what it can.

The house part number idea is definitely the way to go, so thanks for that top tip. I have been holding off from creating a more systematic repository and ordering system, but I now feel much more sure of how to achieve what I need.

Thanks again.

I see the the big libraries with KiCad as nice to have, but I would not want to be dependent on them.
The official libraries are updated every now and then, and progress is fine and all, but I would never ever want and update of official libraries to damage my already made schematics. Therefore I suggest to copy the parts you want from the “official” libraries, to your “master” library (see below).

A year or more ago I wrote a little Python script to make a library for connectors. At that time a lot of the connectors had inverting pins, which was very weird and completely unacceptable. The positive side is that I wrote one of my first Python programs ever. With a mix of looking at existing schematic symbols and the description of KiCad’s file formats (download from the KiCad site) I managed to create a library with connectors from 1 to 40 pins (just a number in a loop) in a single afternoon. It really is not difficult. It’s just juggling a bit with text files in a programming language.

For your resistor example, It would be pretty easy to use a “seed” library with master parts, and some lightweight database or spreadsheet, and then make a Python scritpt (or any other programming language) To use the graphics of a single resistor in your “seed” library, to generate a “user library” which has all your ordering info, house part numbers, etc combined fom the database.

Also, very recently some database thing popped up on this forum, which may be promising:, but I want to add, the link to the database stuff and KiCad symbols seems to be incomplete (missing?) at the moment.


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