Grouped libraries

I was wondering if it is possible to group libraries together? The standard library layout is pretty untidy and difficult to find the correct part (imo). Therefore I would like to group libraries together.

As an example I would like something like this:
Passive
Resistors
Through hole
SMD
Capacitors
Ceramic
Tantalum
IC
Amplifiers

My guess is you looked at the device lib and came up with that listing. That lib contains generic symbols where every symbol represents thousands of possible parts (There is one symbol for all possible polarized capacitors which includes not only tantalum but also others)

As the official lib does not provide BOM data this one symbol really is enough. If you want to include BOM info in the library then you will of course have more than one such symbol.
Which means the requirements for your personal lib can be different from the ones by the official lib. We kind of quarantine generic symbols in a small number of libs (Device, Switch and Connector) and have all other libs fully specified (example the Amplifier libs). You can of course add other personal fully specified libs.


Also it makes no sense at all to sort symbol libs by footprint type (smd/tht) A lot of devices are available in both options and splitting symbol libs that way will result in chaos (at the scale of the official lib. Your personal much smaller lib might work with such an organization scheme)


So how is the official lib organized? In general symbols are organized by function as the first order (Amplifier, Sensor, …) if any category is too generic then it is subdivided (Amplifier_Operational, Amplifier_Current, …)
Where sensible functional units can be subdivided by manufacturer (MCU_ST, MCU_Microchip, …) which can be further subdivided by product series (MCU_ST_STM32F0, MCU_ST_STM32F1, …)


Footprints are of course organized by general footprint shapes as every footprint can represent a large number of parts (Any given SOIC package can hold a small MCU, a logic chip, an amplifier or even a sensor)
Some parts are however either available in highly specialized packages or require a highly specialized footprint for a standardized package which is why we also have libs for sensors and other functional groupings on the footprint side.

Connectors are about the only example where we have libraries organized by manufacturer on the footprint side (each such lib holds footprints for parts that are proprietary to that manufacturer)
Standardized connectors like USB or audio connectors are however again organized by their respective standard instead of by manufacturer.


All of this is documented in great detail in the library convention https://kicad.org/libraries/klc/

Thanks for the reply. I’m not talking about the official lib but my personal lib indeed.

However I don’t think my point is made clear. Currently in the symbol library there is only one level of libraries, say 4xxx with symbols under it. Possibly a second level with units of a symbol.

What I would like to do is have is a ‘library group’ resistors which contains the actual ‘libraries’ with TH resistor symbols and SMD resistor symbols (TH and SMD are just an example of a sub library). Then there would also be a ‘library group’ which contains ICs which then contains for example an amplifier group with all amplifier libraries.

This way if I’m adding a component which I’m looking for a low noise RF amplifier I go to IC->amplifier->RF and find the one I’m looking for. How it is now the quickest way is to search for a specific components name. It is not possible to remember in which exact library I have to be with a huge list of libraries.

Edit: I did not get my inspiration from the device lib, rather from my work where it is much easier to find a component.

you can search by keywords in both the add symbol dialog and in the symbol editor

1 Like

In short: No. The list of libraries can be only one level deep. You can not nest libraries. The concept is not supported in KiCad. If you really want it you should raise an issue about this on KiCad’s GitLab page, so that developers are at least aware of it.

But if you ask me, I don’t really see a need it. If it would be supported, then I’d like the full (complex) implementation which would support multiple different nesting (by type of a device (passive, discrete semiconductor, IC), by manufacturer, by package of device (SMD, THT), …) with easy switching between different nesting types. If only one type of nesting would be supported, then you’d soon find discussions about which type of nesting is best. So multiple nesting is the only way to go.

But if this would be an option I imagine that official library maintainers would have additional work on them to properly nest the libraries. And this would for sure open a lot of bike shedding discussions, and I’d rather see library efforts where it matters.

Which sounds like that can of worms with the label ‘localized database’ on it.

Alright I’ll make a feature request for it.

Note once again I’m not talking about the official library. And I’m not expecting the official library to become nested. I just want to be able to do it for my own libraries.

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