I will preface this by saying that I’ve been working as an EE for nearly 30 
years, at companies which all had wildly-different methods of dealing with 
parts management and how to make sure that what the engineer puts on the 
schematic is what purchasing buys and what production stuffs. And it’s a 
minefield!

I have to agree with Wayne in his statement that ten board designers (ten 
companies!) will do the same thing ten different ways, so the idea of a 
universal solution to this problem doesn’t really exist.

I also agree with Kaspar when he says, “..but KiCad’s symbols already come with 
a datasheet field for instance. To me, the datasheet field is way less useful 
than an MPN field.” 

A datasheet field is only useful when the “symbol” represents what Wayne calls 
a “fully defined symbol,” or as some of us on the user forum like to call an 
“atomic component.” That is, the symbol for an NPN transistor cannot have a 
datasheet, because which particular NPN transistor are you talking about? So if 
you want to use the datasheet field, you need more information, specifically 
which transistor and which package and which manufacturer. 

If you subscribe to the concept of atomic/fully-defined symbols, then you buy 
into the notion that each symbol must have a footprint and a field which 
indicates “what is this part, exactly?” (And make no mistake: I buy into this 
fully. And it also makes CvPCB irrelevant.) The obvious entry for that field is 
the proposed manufacturer’s part number.

But there are obvious problems with this. One is how do you handle 
second-sourced components? 

A second is how do you handle passives? Do you really want to have one symbol 
for each resistor value/tolerance/case size in your library? (Don’t laugh — 
that is how one company for whom I worked handled this issue.) And let’s not 
forget that Yageo and Panasonic and Susumu and Vishay all have different part 
number schemes for their 0805 1% resistors.

This is all why many organizations use a “house part number” system. And this 
system is used for more than just electronic parts, it’s used for mechanical 
parts, for assemblies, for documentation, for firmware, all with the goal of 
making sure the right parts are bought, the chips are programmed with the right 
firmware, and the right documentation gets put into the box with the product.

A database, external to KiCad (and to Solidworks, and to all of the other 
tools) is maintained. This database matches house part numbers to manufacturer 
part numbers. If a manufacturer changes, the entry in the database is changed; 
schematics don’t need to be changed.

For my Kicad work, I created a simple “Database” of parts, which is nothing 
more than a spreadsheet. Every entry in my schematic symbol libraries has a 
custom “PN” field defined. I export a BOM using the standard Kicad XSLT 
scripts, then I use a Python script to prepare a BOM by merging what Kicad 
generated with the spreadsheet, and I get a file which has the part numbers and 
quantities of parts on the board, ready to order.

tl;dr: adding a “PN” field to the base symbols, which users can populate or 
ignore as they prefer, is probably all anyone needs.

-a



_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to