← Back to team overview

kicad-developers team mailing list archive

In response to KiCon panel question "atomic" vs "CvPcb" answer



I hope i do not step out of line but i think there might be small misconceptions about the two major library workflows and i just wanted to give my insight of it.

Generally speaking there are two time instances as to when a footprint is assigned to a symbol. One is at the end of the design process and one is already in the library.


I do not really like the name "atomic" library to describe the later. Atomic to me would imply a much closer coupling between symbol and footprint possibly even within the same file. This would of course not make much sense for kicad. (I for me define an "atomic pair" as something where both the symbol and footprint are highly specialized to one part. Some MEMS sensors and RF parts and also modules like an RFID or bluetooth all in one system fall under this category.)


Everything that has a generic package and can therefore use a generic footprint (possibly designed using IPC rules instead of after on manufacturers suggestion.) can at most be a "fully specified symbol". And the symbol part is very important here. It is only the symbol that is specialized to the part. To make a symbol fully specified it must have a footprint assigned in the library and be named to represent either exactly one part or a very small family of closely related parts. (For the official lib we for example do not include separate symbols for different temperature ranges.)

If users talk about fully specified they often mean that these symbols also include BOM information like ordering information or a house part number or similar key for connecting it to their in house material management system. This is something the official library team can not provide. We can by definition not provide a house part number as it is user defined. And we can also not include ordering information as doing so would in the first instance mean that we will need to show some bias towards a particular distributor which is a bit against the general idea of being open and impartial. And in the long run it would also massively increase the maintenance effort as order number can easily change over time.


I would call the other type of symbol a generic symbol. This is a symbol that represents all parts that are pin compatible and provide the same function. It has no footprint assigned but can reduce the number of suggested footprints via the footprint filters. Such filters of course rely on a well thought out footprint naming convention which i hope the official lib now has.

Some of these symbols also require deviating from using pin numbers as that kind of limits what can be done here. Named pins are a way to make this more generic but also depends on footprints being specialized enough as to not increase maintenance effort elsewhere. (examples here are audio connectors, relays and similar things where a small number of symbols can represent a large amount of footprints if the pin naming scheme is standardized.)


You might have noticed that i strongly believe that neither of these workflows is truly superior. I think most of the users and i would assume also most of you developers are aware of that. Every workflow has its place, its strengths and weaknesses. KiCad is better than other tools exactly because it allows for all three workflows (and even some things in between) to coexist in the same ecosystem allowing the user to use the right workflow for their particular application.

Follow ups