V6 symbol library / multiple values

I am changing from a commercial package to Kicad (therefore directly started with v5.99 to avoid another migration path when v6 is released)

One of the things I have to figure out, is library organisation. Some commercial packages, I worked with, have the concept of ‘components’ (or ‘parts’)
A component has some properties, such as part number, value, tolerance. You can assign it a symbol from a symbol library, and a footprint from a footprint library.
So a single symbol definition, can be referred from different components with different values, order codes and footprints.

When looking at Kicad, it seems to me, this is more or less equivalent to symbol inheritance.

Is this assumption correct ? e.g. I can have a single capacitor symbol, which is forms the base for all capacitors. Where each capacitor shows this symbol, but has its own properties.
(and if I update the ‘base’ symbol all capacitors derived from it will reflect the changes ?)

If it works like this, are there any limitations compared the ‘component’/‘parts’ approach, some others use ?


When you start with V5.99 you have the handicap that there are no tutorials for it written yet. But the concepts are mostly the same between V5.1.x and V5.99. V5.99 just has many more new features and ugly icons :slight_smile:

The root of a part in KiCad is the schematic symbol. This schematic symbol has an unique number assigned to it as an identifier (Called “Timestamp” in KiCad V5.x and UUID in V5.99). But the number is not the reference, the schematic symbol is, and additional “fields” can be added to the schematic symbol.

Some of the schematic symbols are “atomic” / “fully specified”, which basically means that a footprint link (just a text string) is already assigned to the schematic symbol in the library. Other parts (such as resistors, capacitors, connectors and some more) are generic parts.

In practice it does not matter much. Using the same graphics for all resistors does make it trivial to update them if needed, but if they were in some library of parts then there probably will be tools to update graphics of many schematic symbols with some script.

If you prefer

Some people very much want a database driven approach. (And even do not consider KiCad a decent program without it). With such an database there are available / vetted / approved parts and these may already have ordering information, internal storage location, etc attached. KiCad does not do this (yet). There is some talk of implementing some database integration for KiCad V7, but that will be years.

The most up to date tutorials and background articles about specific features in KiCad is the FAQ Index which is also searchable, for example:


Oops, I forgot…

Once you have a schematic symbol on your schematic, you can edit it and then select “Change Symbol” from the Symbol Properties dialog.

Which basically means that it’s mostly irrelevant what is treated as the “root” of a part. You can change anything of a part. Except (I think) it’s UUID (without a text editor). So from that viewpoint the UUID can be treated as a Universal IDentifier for a part.

Thanks for your extensive reply. The link you provided received a lot of information as well, Sometimes you just need to have the right search terms :slight_smile:

Since I prefer to have ‘symbols’ including part numbers, order codes etc. for the most common parts (even resistor/capacitor) values, I started to base my 0805 resistor library on a ‘base resistor’ (e.g. R_0805_base), which contains the symbol drawing.

After that created a 1k in the 0805 library (added properties for footprint, order code, tolerance) an after this copied it for other values and edited the ordoer code and value property accordingly.

This approaches the database approach, it works fast and if I compare it to the other packages I worked with during the last 15 years (Orcard, Ultiboard, Pads, Easy PC, Pulsonix) certainly not bad.

Even I have not yet created a PCB with Kicad, I am getting more- and more enthausiastic :slight_smile: