Find missing and duplicate BOM/CPL references
A populated BOM reference needs one corresponding placement. A row count cannot establish that relationship: one grouped BOM row can name several components, while a placement export should describe one component per row.
JLCPCB's preparation guidance asks designers to align references between both files. That is a useful consistency objective even when the receiving assembler uses a different file format. Source: JLCPCB file preparation recommendations.
Work through the bundled example
Download the sample BOM and CPL, or select Load example in the checker. Its first grouped BOM row is:
Designator,Quantity,Populate,Comment,Footprint "R1-R3",3,yes,10k,0603 "C1 C2",2,yes,100nF,0603
The checker expands the first row into R1, R2 and R3, and the second into C1 and C2. It compares each row's quantity with that row's expanded count. Commas inside a CSV field require double quotes. Whitespace or semicolons can separate references inside a field as well.
The supplied CPL lists R3 twice, on physical lines 4 and 5. It never lists C2. The result therefore contains a duplicate-placement blocker linked to CPL line 5 and a missing-placement blocker linked to BOM line 3. The sample's DNP exception is explained in the population guide.
Interpret counts without losing evidence
The report counts unique references separately from rows. The example has six populated BOM references and five populated matches. A repeated R3 placement does not increase the unique placement count. Its duplicate remains a blocker even if the values in both rows are identical.
Open a source-line button to inspect the original parsed cells. The line is the physical starting line in the input file, including its header. A quoted description spanning two lines increases the next row's line number. The checker does not replace this with a spreadsheet row index.
Resolve the cause in the source project
- Confirm both exports came from the same board revision and assembly variant.
- Remove an unintended duplicate in the export process, rather than simply hiding it in a report.
- Check whether a missing reference is intentionally unpopulated. Express that intent in the population field if appropriate.
- Re-export both files, read columns again and rerun the check.
References are compared without case for identity, with a separate case-mismatch issue. The supported grammar is letters followed by digits and ascending, same-prefix ranges. R01-R03 preserves zero padding; R01-R3 is rejected as ambiguous. Hierarchical or suffix-based references need an explicit supported export. Unsupported syntax is a blocker, not an omitted component.
A clean match confirms file consistency within this grammar. It does not confirm that a component exists at the claimed location or that the assembly variant is correct.