More fully specified symbol library discussion

Dave (EEVBlog) is not the only one. I abandoned KiCad years ago and am now looking at it again with some interest now that it is making progress. I have to take issue with the attitude of the kicad team to the library management and this poor management is one of the things that has let kicad down. Wayne is wrong in his intepretation of what many of us ask for. His version of “atomic libraries” is not real. I use CS and I call specific part numbers as symbols so that from my schematic with no extra work my BOM comes out correct with footprint assigned. Contrary to what Wayne states this does not require duplication of footprints with massive overheads. I have no more footprints than KiCad. So for example i have a symbol for ever value, tolerance and footprint of resistor, each symbol points to it’s footprint in a footprint library and only has one instance. There are no libraries that incorporate the symbol, footprint and model into one item duplicating like items. If Wayne is now going to be so important in this project i suggest he opens his eyes a little bit and avoid styfling the development and usefulness of KiCad.

As far as I am aware Atomic libraries is a workaround using the filter mechanism. Planned support for derived and sibling symbols and footprints is in the works that should support your (and my) use case.

Currently nothing prevents a library of identical “atomic” resistors symbols each with a different name, filtered to a single qualified footprint (e.g. 0402) This satisfies your use case , if I understand it correctly

There are two extremes

1.hobbyists and hackers prefer a canonical library with good enough parts so they can spin 10 boards in a month.

  1. Commercial shops need unique internal part numbers for ordering and forecasting

Additionally

  1. Commercial shops under engineering change control or iso need traceability for every component down to resistor MPN

  2. Some of us would like to store component metadata in a database by internal part number

This is largely identical functionality to altium designer and eagle libraries , however the behavior of the filter mechanism is not quite as intuitive as footprint associations in altium designer or devices in eagle .

Well I don’t bother with resistor part numbers as I actually wnat to have stuff made. But no assembler will take the basic part numbers and then look up the footprint. They employ purchasing staff that do not have that much knowledge or they don’t want the risk of ordering the wrong part so quite rightly expect the part numbers to be correct. If i am starting a project i will know what type of package I want my chips to be.

It’s not quite clear to me what your issue is then, because the current library system supports that, you can certainly add the footprint association to the BOM exports, and if it doesn’t exist now that is easy functionality that doesn’t require touching the library code

Also some of us that use specific resistor part numbers do manage to get parts made, it’s some overhead, but also part of industry requirements

This is probably the same thing I’ve mentioned in my post, which I called myself a “Superlibrary”:
https://forum.kicad.info/t/kicad-wish-components-superlibrary/16657/9

And we might want to add that it is possible to do it with the current feature set and this will not change with the new file format. (In fact it might even get easier as the inheritance stuff might allow for sharing of the graphical parts of a symbol with other symbols that then define the BOM fields and footprint connection. I am however not curtain that this stuff will be done by v6. My have a suspicion that not everything that is planned for the new file format will be done by then.)

2 Likes

This is quite similar to how PADS manages their library.
The part has the Value/tolerance/other attributes, and in their case, can point to up to 16 alternate PCB footprints. So you can have a single 0603 PCB footprint, and 100+ resistor order code parts…

There is one issue with this, that Mentor were late fixing.
You need two data-bases (SCH and PCB) and you could not generate a BOM from the PCB, as earlier netlist paths did not include all attributes. IIRC the fix they had for this, was to add free attributes in the PCB database, that could hold all SCH attributes for BOM generation.
It may be this BOM-side issue that Wayne is thinking of, when he talks about needing duplication ?
ie If you cannot pass-thru such attributes, you do more require an order-code match in the PCB side.

One strong plus of Mentor’s earlier PADS PCB/PADS Logic pairing, was the ‘same codebase’ aspect, which meant scripts could be written that would run in both/either SCH or PCB. Sadly, they’ve recently chosen DxDesigner which came from an entirely different code base and gestation, and that rather shows in how it all combines.
Maybe when eeschema gets Python support, it will be possible to run same script in both ?

The problem I have is that while this is possible the developer leadership don’t seem to understand it and don’t think it is a good way to do things and seem to think it has terrible consequences that don’t even exist.

Or they (he) didn’t express themselves clearly or you misunderstood or both.

4 Likes

It is the Symbol name/part number that KiCad is not going to attempt to manage. At just Digikey, for just a 0805 Footprint part, there are 149,597 different part numbers; and that could change tomorrow.

Just how big do you want your libraries to be?

That would be news to me. As i stated above already the future file format will make this usecase even easier. And just for your info that future file format is developed by wayne. So i highly doubt he ever stated that fully specified symbols are a bad idea.

Maybe the misunderstanding comes from your use of the word atomic. An atomic part typically means that both the symbol and footprint are specialized to a specific component. This is in contrast to a fully specified symbols. These use generic footprints but include all the information needed for BOM and the footprint connection.

Nearly all symbols in the official library go this way. (Only 4 or so libs are allowed to include generic symbols.) We can however not include order information as that would either require us to show bias to a subset of distributors or make the lib unusable. Neither can we include house part numbers as they are by definition defined by the user.

2 Likes

As many unique parts as I have in my design.

Unique is in the eye of the beholder.

For R’s - same package, same value, same tolerance, and (sometimes) same PPM, same wattage, same temp rating
For MLCC - same package, same value, same voltage, same tolerance, same dielectric, same temp rating

YMMV, some are less strict, some (like medical) are more strict.

When you filter down by that level, there are between 4-20 available parts for each type (filter by available, cut-tape, active design). CAP CER SMD 0.01UF 10% 100V NP0 0805 From there you pick 1 and 2-3 alternates that match your specs. Usually it is the same group of MFG’s with overlapping product lines.

As a point of reference, for about a dozen active designs the total parts list is about 2000 or so components, my capacitor library is 300 parts and resistor library is 400 parts, of which 10% are used for 95% or so of references (decoupling caps, pull ups, etc)

I personally use generic symbols for caps and the like and use a house part number that then holds the information you list. The house part number encodes all the info you listed in some way. (Minus a few things that i do not care about.) And connects everything to the order info.

Meaning instead of searching for the part in a kicad library i open my material management program (libre office calc) and search for the part there, copy the house part number and enter it into kicad. I then generate the bom and have another libre office file that connects everything together for generating ordering info. I am sure something similar is doable with databases if the number of projects to handle gets too big for such a simple program.

I assume what you guys would wish for is a way to directly search that database from within kicad. I doubt a direct implementation of something like this is feasible in the near future. But offering some kind of API that can handle such a connection might be a good plan.

Where do you store your “house part number”?
The key is, I want to have my private part number stored (for easy components database lookup after BOM generation) and the basic component info visible on schematic (e.g. for a resistor, I want to see its value displayed at it gives me an instant information on how does the circuit work).
Displaying Privat identifier on the schematic makes the schematic harder to read.
Having to enter two “logically” linked, independent fields (Identifier and visible Schematic value) leads to errors (copy/paste both Identifier and Schematic values - easy to have discrepancy).

Just as @crasic explained, the size of the library would be equal to the size of organizations’ parts inventory. Some will have few hundreds, some may have tens of thousands. To each their own.

I have a personal HPN field added to components. For fully specified ones (like specialized chips) this is already pre filled in the library.

For resistors it is partly filled in the library only missing the value part. (With my logical part numbers it would easily be possible to generate the part number from the value field via some script but writing such a script was more work than simply copy pasting the part number from one tool to the other.) I partly filled it such that it is already available and i only need to fill it out. (also ensured correct spelling of the field name)

It is also possible to write some sort of script that generates fully specified symbols from the database for direct use in kicad. (Should not be that hard to make as you can have the “symbol part” stored in a separate file and only need to update the symbol name and the field values as given in the database.) Such a script would then need to be run every-time a new component is added to the database. (again something that can be automated depending on how often you think you will need this.)


For me the above workflows did not make much sense as i really do not care about having a fully specified library for simple components. Meaning i preferred to fill out the HPN field for them inside the schematic instead of doing the legwork of making a huge library or writing an automation script. (Effort to payoff analysis said not to invest too much time here.)

My workflow is also much easier in version 5 now as i can use the edit symbol fields dialog (found in the tools menu) to manage the HPN inside the schematic in a spreadsheet like tool. Meaning now i use that tool at the end of the design process to fill out all missing HPNs.

1 Like

No I use codes like 1K_0805_1% because I do not care who makes the resistor, same for capacitors if they are ceramic. Problems start to arrise with electrolytics that I tend to make part number specific given variations in footprints between manufacturers and other specs like ESR. Chips must be fully part numbered, as I explained no board house will take a part number that is not complete that they can just plug into the distributors site and get an exact match so specifying the base number and footprint is not acceptable and they also really could not care less what a bunch of old fashioned developers at kicad think so to use kicad I have to make it work for the current supply chain in the industry.

First of all, I’m not a KiCAd developer.

I work for different companies. One of them uses a fully atomic library. They have made it on their own. Every component in their library has some fields, as manufacturer part number or footprint. For me is fine.

With the other companies the independent symbol and footprint libraries are used. For me is also fine.

We have no problems with pcb manufacturers/assemblers as we provide them the right BOM.

Everything you want can be made with KiCad since at least 2013.

As I said, I’m not a KiCad developer, but if I were I don’t know if I would take in account your suggestions since you despise their work in your comments.

1 Like

How often to we need to tell you that all of your requests are easily possible? (You act like kicad has decided on purpose not to support your usecase which is not true on both accounts. You get a lot of nice answers here despite behaving the way you do. I ask you now to return the same courtesy to others and stop it with your insults.)


In the official lib there are of course some restrictions to be introduced. In this instance this means that certain parts of the part number have to be ignored to reduce the overall number of symbols required. We therefore limit it to function critical parts of the part number and ignore things like packaging (how many per reel, tape, …) and also things like specification (UL, industrial, automotive, temperature range, …).

This does not mean that you are not free to make a personal lib that includes this. Just that you can not expect others to make it for you.

3 Likes

I never said it wasn’t ho many times do i need to say that?! what I am saying is that from the little I have seen the developers and the now full time developer cannot see the point of how so many of us work so i am just wondering what direction the developments will go in.

Well I am very glad you are not! because you cannot read for starters. Where have i said I despise them? I am simply commenting on what was said by the main developer which was along the lines that the way I and many work is madness, that is all. I am grateful for all the work they do.

Are you a proffessional user or just a hobbyist? there is a big difference in usage. I have already wasted £2000 on most of the available programs commerically and countless hours lost learning them and creating libraries. With Kicad this seems to be made easier as the footprint libraries are fine by me and they have models to go with them. I can easily setup the required symbols as a copy of existing ones with the extra fields I want and complete part numbers where appropriate.

I also cannot help the way my assembler works. If I send in a BOM that say’s ATmega4809 they will likely not accept it, they might but and ATtiny85 in a SOIC14 package will NOT be accepted because this is still not complete information, there are at least two temperature gradients of the parts in the same packages so my assemly house will hold up my quote while I decide to tell them what i actually want.