Blog
BOM

Five BOM Errors That Reach Production Every Quarter

Gilad Shapira 5 min read
Five BOM Errors That Reach Production Every Quarter

During CADY's beta program, we ran BOM validation checks against a set of real-world design submissions from hardware teams who agreed to share their data. The problems we found were not exotic. They were the same five categories appearing again and again in designs from experienced engineers at competent teams. The errors were not due to carelessness. They were due to toolchain gaps: situations where the standard EDA export process does not cross-check the data that needs cross-checking.

Here are the five, what causes each, and how automated review catches them. None of these require advanced analysis. They are deterministic checks against structured data.

1. Duplicate reference designators

Two components on the same schematic with the same reference designator (for example, two separate R22 entries in the BOM) is a data integrity error that should be caught by ERC in the EDA tool. Most modern tools catch same-sheet duplicates. Hierarchical schematics introduce a subtlety: when two sub-sheets each contain an R22, the flat netlist export merges them. Whether that merge produces a conflict depends on whether the schematic uses local or global reference designator namespacing.

In KiCad, hierarchical sheet instances can share reference designators if they were not annotated with a sheet-unique suffix. The resulting BOM export will contain two R22 entries with potentially different values. Procurement reads the BOM as a flat file and may order either, both, or neither if the conflicting entries confuse the import into their purchasing system.

CADY's BOM consistency check flags any reference designator that appears more than once in the submitted BOM with different MPNs or values. Identical duplicates (exact same row appearing twice, which happens with some export filters) get flagged with INFO severity. Duplicates with conflicting part data get flagged CRIT.

2. Missing manufacturer part numbers

A BOM row with a value and a footprint but no MPN is a procurement problem waiting to happen. Without an MPN, a contract manufacturer cannot verify that the part ordered matches the design intent. They may substitute a functionally similar part from a different manufacturer that has different temperature coefficients, tolerance grades, or package dimensions. In a passive component like a precision resistor or a timing capacitor, "similar part, different specification" can cause a calibration issue that takes significant debugging time to isolate as a component substitution rather than a firmware bug.

Missing MPNs are common on schematics derived from older libraries where the symbol attributes did not include manufacturer part number fields, or where a designer added a component by value and footprint only, intending to fill in the MPN later and then not doing so.

CADY flags any BOM row where the MPN field is empty or contains a placeholder string (common placeholders in the wild: "TBD", "TBC", "N/A", "-", and single-character entries that are clearly not valid MPNs). These violations appear as WARN, because the design may still be valid; the missing MPN is a documentation problem rather than an electrical error. But WARN violations in the BOM category should be resolved before the BOM goes to a CM.

3. Pin count mismatch between BOM and netlist footprint

A component listed in the BOM with a QFN-48 package but present in the schematic with a QFN-32 footprint will not assemble correctly. The pads on the PCB do not match the part. This type of error originates from inconsistency between the symbol used in the schematic and the footprint assigned to it: if an engineer updates the schematic symbol's properties (choosing a different variant of the IC) without updating the footprint assignment, the BOM part description and the physical footprint diverge.

This mismatch is particularly common during design iteration when pin-compatible variants of an IC are being evaluated. The engineer switches the schematic symbol to the new variant, which has a different package (often smaller, for cost reasons), but the footprint assignment carries over from the original design. The BOM shows the new part. The PCB layout has the old footprint. Both are wrong together.

CADY cross-references the pin count derived from the netlist (how many pins the component has in the schematic) against the pin count implied by the package description in the BOM's manufacturer part number. Where the manufacturer provides structured package data in our reference database, we can flag this cross-reference discrepancy directly. Where package data is not available, we flag component class mismatches at the category level: a BOM entry claiming a leaded through-hole package for a component whose netlist pin count is consistent only with a surface-mount package count.

4. Value conflicts between BOM and schematic

The value field on a BOM row and the value field on the corresponding netlist component should match. When they do not, one of two things happened: the component was edited in the schematic but the BOM was not re-exported after the change, or the BOM was edited manually after export to reflect a component substitution that was never propagated back to the schematic.

Either scenario means the schematic and BOM are out of sync. For critical components like filter capacitors, feedback network resistors, or oscillator crystals, a value discrepancy of even one tolerance grade or one prefix step (10k vs 100k, 10uF vs 10nF) is a functional design error. For non-critical decoupling caps where value precision matters less, it is still a process error that reflects a broken design iteration discipline.

CADY runs a direct string comparison and a unit-normalized numeric comparison between the value fields. String comparison catches obvious cases (100nF vs 100pF). Numeric comparison with unit normalization catches cases where the same value is expressed differently in the two files (0.1uF vs 100nF, 10k vs 10000, 4.7 uH vs 4700 nH). When a discrepancy is found, the violation report shows both values and which source each came from so the engineer can decide which is authoritative.

5. Wrong reference designator class for component type

EDA conventions assign reference designator prefixes by component class: R for resistors, C for capacitors, L for inductors, U for ICs, Q for transistors, D for diodes, Y for crystals and oscillators, J for connectors. Violations occur when a component has been assigned the wrong prefix, either from a library symbol that has an incorrect default reference designator, or from a copy-paste operation where the symbol was duplicated and the reference designator prefix was not corrected.

A capacitor with a reference designator of R32 is not just a naming error. It corrupts the BOM grouping and quantity counting. When a CM or buyer reads the BOM, they group components by reference designator prefix to calculate quantities by type. A capacitor in the R group will be miscounted. At production scale, a miscounted capacitor placement can mean a short production run or a component reorder midway through assembly.

CADY's reference designator class check maps the component type declared in the netlist component attributes (or inferred from the component's symbol library) against the prefix of the reference designator. A mismatch between the declared type and the conventional prefix for that type gets flagged as WARN. We do not flag unconventional but internally consistent usage: if a team uses FB for ferrite beads throughout their entire schematic, that is a consistent convention, not an error. The violation fires on the inconsistencies, not on deviations from a single universal convention.

A note on what these checks do not cover

These five categories are the mechanical consistency checks: things that are verifiably wrong based on structured data comparison alone, with no domain judgment required. They do not cover the category of errors where the BOM is internally consistent but the component selection is wrong for the application: a capacitor with insufficient voltage rating for the rail it is on, an IC variant with a temperature range that does not cover the operating environment, or a connector that is mechanically correct but has a mating half that was discontinued by the manufacturer. Those errors require component specification knowledge layered on top of the structural checks.

CADY's BOM rules focus on the structural errors because those are the ones that are reliably automatable. The specification-knowledge errors are the next layer up, and we are working on expanding coverage into that territory. For now, if your BOM passes CADY's five structural checks, you have eliminated the errors that are most likely to cause an assembly or procurement problem at the process level. That is a meaningful baseline that currently requires manual review to achieve. For component lifecycle issues specifically, the follow-on read is BOM Validation: Catching Obsolete Components Before They Reach Procurement.

More from the blog