Standards for naming Components in Libraries

I have migrated from using McCAD for over 15 years to KiCad so I am a newby. So far, I have plowed through the documentation and drafted a schematic a couple of stereo valve amps to get started. There is not much in the standard libraries for Valve/Tube amps using Turret-Board construction so I need to add some components and I noticed some issues with naming things.
I was a Data Modeller and RDBMS Designer for many years and used CAD tools to model large data models for businesses. My pet subject was Nomenclature and Ontologies of things (what things are called and how they are structured, hierarchically). Libraries and Components look familiar as Entities and Attributes but the standard libraries seem to use mixed standards?

I browsed the blog on ‘Standard symbol field names initiative’ and I had Deja-Vue when I saw colon separator characters suggested instead of separate fields, for example, Any data outside your control, such as a Part-Number or SKU, can contain any characters the creator wishes so it is standard practice to change what we choose as “special” or “separator” characters to something else on import.

My immediate problem:
I think I understand how to use Libraries, now?.. I need to create a separate Component for every discrete ’instance’ of a Component, that is, everything that makes it unique except Brand, which will be the personal choice of the person building the circuit. The Library should be the Component Type, e.g. Resistor, Capacitor, Valve/Tube, etc. The attributes that make a Component unique are then related to the Type/Library so, for example, a Resistor Library would have Components described by, for example, a Thru-the-Hole Resistor named ‘R-TTH-47R-1W-MOX-Axial-20-4-35’…

  • Form Type (Thru-the-Hole - TTH)
  • Value (47R)
  • Rating (1W)
  • Composition (Metal Oxide)
  • Form (Axial)
  • Length (20mm)
  • Diameter (4mm)
  • Hole Spacing (35mm)

Components need to have their names qualified by the Type of Library, so Resistors will all have ‘R-‘ prefixing their name and Capacitors will have ‘C-‘ prefix, etc.

Each Library will have its own set of attributes that make its Components unique. So, Capacitors will be described by:

For example, a Thru-the-Hole Capacitor named ‘C-TTH-100Ohm-500V-PIO-Radial-50-40-10’

  • Form Type (TTL)
  • Value (100 Ω)
  • Rating (500V)
  • Composition (Polyester, Paper in Oil, etc.)
  • Form (Radial, Axial, SMD, etc.)
  • Length (50mm)
  • Diameter or Width (40mm)
  • Hole Spacing (10mm)

Excuse the hyphen separators, these could be anything so long as it is a standard? These are my expectations for Library-Components and they seem to be applied in some libraries but there is no ‘Resistors’ Library, for example, and what is the ‘Device’ library about as it contains all sorts of different Component types?

Without being rude, can anyone comment on my thoughts in a way that would allow me to become more familiar with KiCad and, perhaps, my ‘Data’ skills could benefit you in some way?

KiCad has generally two workflows relevant here. There is the fully specified option where a symbol in the lib represents exactly one component and there is the generic workflow.

The official lib provides fully specified symbols for a wide array of parts but it will never offer them for parts like resistors (infeasible, there are just too many options)

More details see: https://kicad.org/libraries/klc/G2.1/


Even for fully specified symbols we limit the library to a sensible subset. So a part that is for example offered as industry standard, military and automotive will only get one symbol. This again is done to limit what the official lib needs to maintain. See: https://kicad.org/libraries/klc/S2.2/

I use only symbols added by me, and only symbols representing exactly one component.
In KiCad V5 symbol names can be duplicated (in V4 couldn’t) provided they come from different libraries (library name is a part of full symbol name but not visible at schematic).
As I know what elements I use I need not to have in name the full element specification. For example I have library named ‘C’ (meaning - standard capacitors) in which I have a 100n symbol (for me meaning 100n/50V X7R 10% 0603). That symbol has aliases (10p, 15p, 22p, 1n) each with its specific meaning (when selecting element to be used at schematic you see its full description. The short names allow to have schematic compact. I have also library C1 (meaning 1mm capacitors) and in that library I also have 100n symbol (for me meaning 100n/16V X7R 10% 0402). I didn’t generated a separate library for all capacitor sizes so 100n/100V X7R 10% 0805 is in C library and has a name 100n100 (it would be 100n/100 if ‘/’ could be used (in V4 you could use ‘/’ in V5 you can’t)).

Piotr,
While it is good to share standard Libraries I can see your point about creating your own Libraries tailored to your needs. I found that creating a new Component involved some tuning as I worked on the Schematic so the final result may differ from the original. I think I will experiment further while taking your approach onboard? Just as in McCAD, KiCad appears to be designed for “modern” electronic circuits whereas Components and techniques for circuits containing Valves/Tubes are being added as we go along, typically by newcomers to KiCad. We all should compare notes on these 1940’s Components using the Forum before anyone submits them for addition to standard libraries or the Librarian will be swamped?

Is it possible that there is a way of identifying Posts to Forums that are specifically for Valve/Tube schematics?

Thank you, Rene, your feedback really helps with my understanding and explains the appearance of the ‘Devices’ Library. I would be interested to see the Entity-Relationship (and/or database) model for the relationships between Library, Component, Symbol and Footprint?

Forgive me for being confused about Symbols vs Components: has the name changed or are they different things? Perhaps Symbols are fully-specified ‘parts’ and Components are generic Symbols, which is the structure I would expect to see… Library contains generic things that contain specific things? I am used to things called Symbols being generic and Components being things that appear on my Mouser purchase order.

Component is just the name used for symbols before v4. In v4 both symbol and component was used as some instances of the word “component” were missed.

So, the term ‘Component’ has been superseded by ‘Symbol’… is the term ‘Component’ still used?
My understanding, now, is that you have a Symbol, a Footprint, and a Part but no Component? For my own benefit, does this make sense:

  • Symbol = the graphic and pin connections - appears on the Schematic diagram
  • Footprint = the physical dimensions of the Part that will be used
  • Part = the nominated Part / Item (is AKA Component by some?) identified by MPN

This corresponds with the workflow (using defacto terms from Database Modelling):

  1. Logical Design: Design a circuit
  2. Physical Design: Layout the Symbols on the PCB
  3. Build / Implement: Choose the Parts and raise a picklist (and an Order from the supplier)

KiCad has symbols and footprints. A symbol represents the function of a physical device (an ic, a resistor, …)
A footprint defines the land pattern (the interface between the pcb and the device)


A symbol can be made generic (for example “a resistor”) or specific (Vishay Y162510K0000T9R). If it is specific then it typically represents one exact part. Has BOM information and footprint assignment already assigned in the library. The symbol name is then suggested to be related to the part number it represents. Such a symbol is often called fully specified (or also atomic. I would however avoid the word atomic as it would imply something to be inseparable or self contained.)

A generic symbol requires the user to add BOM information and the footprint assignment sometime during the schematic design process. Generic symbols add flexibility to the design process at the cost of an extra step near the end. Fully specified symbols require more work on the library maintenance side with the benefit of eliminating some sources of user error (the correct footprint is assigned in the lib -> the schematic desinger can therefore not assign the wrong one).


And then there are mixed forms. For example if you have a symbol for a 0603 resistor (a resistor that has the 0603 footprint assigned but is not representative of a single order-able part) This can massively reduce library maintenance but might require the bom script to be a bit more advanced (it could for example generate a house part number from the footprint assignment plus the selected resistance)

3 Likes

Thank you, Rene, that was a most informative reply.

For my own benefit, and it may benefit someone else, I have prepared a table for Types of Symbols in KiCad. The naming of the Symbols in the KiCad documentation suggests that the Library Name should not be included in the Symbol Name hence, I entered that in italics.

I think I understand the detail, now, so I do not need further clarification unless there is more to add or if you simply disagree. However, an edited copy of the attached table may make life easier for other new users of KiCad?

Types of Symbols in KiCad.pdf (42.1 KB)

1 Like

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