Electronics & Programming


Open Source electronics development and programming

  • You are not logged in.
  • Root
  • » KiCAD
  • » [Kicad-developers] BOM processing - a use case [RSS Feed]

#1 June 11, 2010 08:23:32

Werner A.
Registered: 2009-11-02
Reputation: +  0  -
Profile   Send e-mail  

[Kicad-developers] BOM processing - a use case

Since there's more focus on the BOM recently, I thought I'd
share a use case that shows what one can do with the existing
BOM: for gta02-core, I've written an external BOM processing
system that associates BOM entries with items from inventories
and generates "shopping lists" optimized for volume discounts.

Inventories tell the system where a certain part can be obtained
and at what price. E.g., a distributor's catalog or local stock.

To match parts, the system uses various strategies. If the value
matches a part's ID, that part is taken. If not, a user-provided
set of substitution rules is applied. Then a value match is
attempted again.

If we still have no part, the system tries to match
characteristics. For this, the rules determine what kind of part
we have (e.g., a resistor), then extract the characteristics
given in the schematics (e.g., R = 4.7 kOhm), and provide
defaults for those not given (e.g., tolerance <= 5%). With this
information, it searches tables that list the characteristics of

There are also equivalences. Those can be equivalent parts, e.g.,
the same chip from a second source; different names of the same
part, e.g., a vendor's and a distributor's part number; if you
wish, project-specific substitutions of not truly equivalent
parts; etc.

Last but not least, parts can also have a textual description,
which appears in the "shopping list" and which can be used to
make crudely annotated schematics that show for each component
what part has been selected (for review.)

The workflow (with a few project-specific extras):http://people.openmoko.org/werner/gta02-core/bom-workflow.pdfThe BOM processing system:http://svn.openmoko.org/trunk/eda/boom/A project-specific environment:http://svn.openmoko.org/trunk/gta02-core/bom/An example of a "shopping list":http://svn.openmoko.org/trunk/gta02-core/orders/ee-bom-fic-20100208.txtAn example of the annotated schematics:http://people.openmoko.org/werner/gta02-core/gta02-core-bom-all.pdfIf you're looking for reasons not to like it, here are a few:
- it's all written in Perl,
- to tie things together for a project, you use a Makefile (1),
- the substitution rules are vaguely inspired by sendmail.cf (2),
- the "user interface" is made up of the command line and your
text editor.

There are also some misfeatures in the functionality, e.g., it's
blissfully ignorant of shipping cost, lead time, etc.

(1) The one we have is about as bad as it gets:http://svn.openmoko.org/trunk/gta02-core/bom/MakefileSome of the more obscure bits, like INTERPRETATION, exist to
deal with a number of idiosyncrasies I wouldn't wish on any
other project.

(2) Well, I wimped out on the syntax:http://svn.openmoko.org/trunk/gta02-core/bom/gta02-core.subNow, this is a system that's flexible enough to handle complex
projects. It's fully automated, so changes in the schematics
propagate all the way to the shopping lists without any user
intervention. (That is, unless you need to introduce new parts
or such.)

Its functionality and complexity probably goes beyond what you'd
want to have live inside KiCad, but the BOM export provides all
the data this needs from KiCad. (Field names will be a nice
improvement, taking some of the guesswork out of the

- Werner

Mailing list:https://launchpad.net/~kicad-developersPost to : kicad-developers@lists.launchpad.net
Unsubscribe :https://launchpad.net/~kicad-developersMore help :https://help.launchpad.net/ListHelp


  • Root
  • » KiCAD
  • » [Kicad-developers] BOM processing - a use case [RSS Feed]

Board footer

Moderator control

Enjoy the 18th of March

The Forums are managed by develissimo stuff members, if you find any issues or misplaced content please help us to fix it. Thank you! Tell us via Contact Options
Leave a Message
Welcome to Develissimo Live Support