← Back to team overview

kicad-developers team mailing list archive

Re: [RFC] Standard field for manufacturer part number in schematic symbols

 

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




Follow ups

References