*** This is an older draft of the concept - differs sometimes from the way
    things are done in gta02-core. ***


BOM matching
============

BOMs are matched with inventories in the following way:

- a .lst file with the BOM is generated by KiCad

- using a ruleset, component characteristics are translated to a
  canonical format and default values may be used for unspecified
  characteristics

- part catalogs are searched for matches with the canonical component
  descriptions. This yields a list of supplier-specific part numbers
  for each component.

  Parts can be characterized by either specifying their properties or
  by equating them to another part. E.g., a Digi-Key part may be
  defined as an NXP part which in turn is equivalent to a TI part.

- this list is then matched against inventories, using a suitable
  optimization strategy (e.g., prioritize inventories and try to
  pick as many suitable components as possible higher priority ones
  before moving to lower priority ones)

  E.g., local stock could be the first-level inventory, followed by
  more distant warehouses, followed by distributors, followed by
  manufacturers.

  Inventories could also include pricing information.

- TBD: it would be good if parameters gathered in the matching process
  could be fed back into KiCad (as some sort of annotations, similar
  to the expanded view of schematic symbols), such that under-specifed
  parts yielding mismatches can be spotted by manual review.


Catalog
=======

A catalog contains part characteristics and the reference number(s)
assigned to them.


Basic syntax
------------

Catalog entries consist of "words" in the sense that each word does
not contain any whitespace and words are separated from each other by
whitespace. Whitespace can be included in a word if it is enclosed in
double quotes.

Each entry begins in the first column of a line. If an entry needs
more than one line, the words on the continuation line(s) must be
indented by whitespace.

Trailing whitespace is ignored, and so are comments beginning with a
hash mark. Blank lines end any entry and are also ignored.

Each catalog entry begins with the part number followed by a part type
designator. 

Characteristics have the form <field>=<value>, where
the fields follow the pattern outlined below. The value is some
description of the value of that characteristic, typically a number
and a unit (e.g., 4.7uF) or a name (e.g., X5R).

Numbers use a decimal point where necessary. Mantissas are normalized
such that they fall into the range 1 <= n < 1000. E.g., instead of
0.1uF, write 100nF. There is no space between number and unit. The
Omega of Ohm is written as "R".


Fields
------

Each 

General fields
- - - - - - -

FP	Footprint
H	Height (overrides any height implied by footprint)
TOL	Tolerance, with percent sign. Split tolerances are indicated as n/m%
DSC	Free-format description


Resistors
- - - - -

RES	Part type designator
R	Resistance, with unit
P	Maximum power dissipation
V	Maximum volatage


Capacitors
- - - - -

CAP	Part type designator
C	Capacitance, with unit
M	Material, e.g., TANT, NP0, X5R, etc.
V	Maximum voltage
ESR	ESR, with unit


Inductors
-- - - -

Diodes
- - -

DIODE	Regular diode
STKY	Schottky diode

Vf	Maximum forward voltage
Vr	Maximum reverse voltage
If	Maximum forward current
Ir	Maximum reverse current
C	Capacitance

LED	Ligh-emitting diode

COL	Color, multiple colors are separated by /, e.g., blue/red
ARRAY	If multiple diodes form an array, this parameter describes
	its structure: CA = common anode, CC = common cathode,
	SEQ = tap-A-C-tap-A-C-tap sequence

ZENER	Zener diode

Vz	Zener voltage

TVS	Transient voltage suppressor

Vac	Working voltage, AC
Vdc	Working voltage, DC
E	Energy