Trouble with Symbol Properties and BOMs

Greetings - Using V6.0.11 though I don’t think that is an issue, here. Really, neither is the BOM generator. It is all about organization. This project has close to 10 boards. Boards vary from 75 individual parts (30-odd unique values) to under 20 individual parts (maybe 10 unique values). For purchasing, I need to make sure that a part that is identical across several boards (Say 10K 5% 100mW 0805) is given absolutely identical attributes on all boards where it appears. My typing skills are so mediocre that excess spaces, doubled characters, and such creep in, causing them to appear as different parts in the various board BOMs. The question, here, is how to avoid this problem?

Currently, I have been pulling a symbol (say resistor) from the library and placing it onto a board. Then I give that symbol its properties and use copy/paste to add copies of that symbol other places on that board. That insures that all are the same on an individual board but does nothing about board-board differences.

I do have a library directory devoted to the project. I have considered making a project library version of every unique part, setting properties in the part version in that library, then limiting myself to using ONLY parts from the project library. Have not done that yet because, with this scheme, the project symbol directory will get pretty large, pretty fast.

What do other folks do? Is there some other scheme I have not identified that would work better? Thanks for your thoughts on this!

Jim Wagner, Oregon Research Electronics

The simplest way would be to put the part in a global library, and then reference to it from all projects. In your (personal) global library you can then add all the attributes in the library itself.

On a more formal system, you use database libraries for things like this. With database libraries you can generate (and maintain) a library with a whole lot of parts by combining schematic symbols, PCB footprints and meta data. So you can create an E12 range of 0.1% metal film resistors in 0603 format.

I do think that is an issue here.
I think Database library support was only added in KiCad V7:

Also, DRC has been extended in KiCad V7 and it can now flag any differences between a footprint on a PCB and it’s library source.

1 Like

To avoid such problems, I have a rule from which I never make exceptions - I do not make any modifications to the symbols after they are placed on the schematic.
The consequence is that I have to have in library for example all resistor values I use. The other advantage of it is that I always have to think if I really need to add new value in my library what then means that we will need one more box in the parts cabinet.
Some more about it you can find in what I have written in past:

Disclaimer - I’m being specific here and have never used BOM.

When I have done things like this in the past (not necessarily in KiCAD), like you said spaces, the odd typo and different capitalisations and so on sneak in. I try to get the list saved so that I could import it into Excel and use its ability to format, removing leading, spaces and in your case I would use Excel’s =countA(###) (or is it =count(###) command to extract numbers of similar items.
But moving forward with KiCAD take the advice of others here with regards best practice, global libraries etc.

Thanks for all the thoughtful replies. For now, I think that I am going to construct a project symbol “folder” in the global library, one entry per unique part (eg. one for 10K 5% resistor and one for 3.3K 1% resistor).

It would certainly improve organization of the whole symbol library if there were more than one level of hierarchy available. I just don’t see a way to add a sub-directory inside any of the symbol directories!

Making a property change to one of the symbols and propagating that to the schematic should be pretty easy. After all, one can select ONE symbol for which the change applies, choose symbol update, then all with the same value. As long as values are unique, that should handle the whole schematic.

Again, many thanks to all!

Jim Wagner, Oregon Research Electronics

My assumption is that all symbols/footprints have to be identical to library.
So whenever I update symbol or footprint I select to update all symbols/footprints. It is in the case that there are some changes in library I forgot to update.

That can easily NOT be the case. Here is the scenario I am considering. Suppose I have a 1.0K resistor in the project library. I add, in the project library instance, a distributor name and distributor catalog number. To apply to all 1.0K resistors on the board, I select one 1.0K resistor on the board, open that part’s properties, click “update symbol”. It will give me a dialog that has several options. One option is to update the selected part. Another option is to update all parts with the same value as the selected part. I choose the update based on value. Then, all of the 1.0K resistors on the board have the new distributor and distributor catalog number information. Thats all you have to do and you do not miss any of the parts on the board.

Of course, this assumes that the VALUE is unique. If you should have multiple kinds of 1.0K resistors, say based on tolerance or case size or what-ever, the “value” text must be unique for each kind.

Biggest problem with that method is the next project you get to do it all again.
Why not start with a global library?

What I have written is that in this moment I select to update all parts. Each part is updated based on the right part in library. If you add distributor to one part and then update all parts this distributor will not be assigned to other parts than the one you assigned it.

I don’t think so. I suppose that if you give the resistor the same value text as for example capacitor and update symbols with that value then both will be updated but each from his own symbol in library.
So I think there is no risk that what you have added to one symbol in library will be copied to other symbol at schematic only because it happened that both get the same value, even both are updated in the same your action.

But I have never added other then standard fields to symbols in libraries. I am using the external spreadsheet to finalize my BOMs. From KiCad I take value + footprint as part identification.

Once you start doing part management on that level, I guess it becomes wise to start using the database library system.

This comment is also an indicator you want the database libraries. Databases are much better suited to manage all the data that goes into such libraries.

And as far as I know, it is common to use internal “house” part numbers, and use them just for uniquely identifying the parts you use. The process of translating that to ordering information from distributors is then moved to the database, which can also manage (changing) lists of possible substitutes. All your KiCad projects will be ignorant of this. They only hold your internal part numbers and those stay the same.


Yes, I agree, Contrary to my previous assertion, I have just started an in-house part number based database (SQLite). I need component management at a higher level than what KiCad can provide. That is NOT a criticism of KiCad, just recognition of a fact.

Thanks for your ideas, folks. This has all been a considerable help!


1 Like

Have you check out Inventree ?

I have hear good things about it, haven’t used myself though.

Did not know about Inventree. Will check it out.



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