Skip to content

pcbview 1.19.0 - every major exchange format

Choose a tag to compare

@github-actions github-actions released this 21 Jul 16:21
· 197 commits to main since this release

pcbview 1.19.0 — every major exchange format

pcbview now opens boards in six formats: KiCad, Gerber/Excellon, and — all new in this release — ODB++, IPC-2581, Altium .PcbDoc, and IPC-D-356 netlists. Every new importer was cross-validated against independent references on real boards (copper areas within 0.5%, net tables matching exactly).

New importers

ODB++ (.tgz, .tar.gz, .zip, or job folder)

  • Full product-model import: matrix, features (all standard pad symbols plus user-defined symbols), profile, drills with plating, and real per-feature nets from eda/data — net highlighting and routed lengths work immediately.
  • Member files compressed as .gz or .Z (Unix compress) are handled transparently.
  • Negative layers render as what they are: a plane sheet over the profile with the layer's features as clearances.
  • Panel jobs: step-repeat blocks expand into the full panelization. The board step opens by default; set PCBVIEW_ODB_STEP=<step> to view the panel.

IPC-2581 (.xml, .cvg)

  • Dictionary primitives, per-Set nets, contour planes, span-referenced drill holes — and the real stackup: IPC-2581 is the only format pcbview reads that ships actual layer thicknesses, so the board build-up is exact instead of derived.

Altium Designer (.PcbDoc)

  • Reads the native binary format directly (record layouts adapted from KiCad's GPL importer; the OLE container via Microsoft's compoundfilereader). Tracks, arcs, vias, pads (all shapes incl. roundrect), regions, polygon pours, blind/buried vias, real stackup thicknesses, and nets.
  • Internal plane layers render as true negative layers — a net-tied copper sheet with pullback and via clearances (KiCad's own import draws plane primitives as positive copper; pcbview shows the plane itself).
  • Soldermask is derived from pads and vias with tenting flags honoured.
  • Validated against KiCad's importer on real boards: identical net tables, track counts, and routed lengths to three decimal places.

IPC-D-356 netlists (.ipc, .356, .d356)

  • A netlist riding with a netless Gerber package supplies real net names as test points; Infer nets then binds those names to the copper — and reports opens (one net across unconnected copper, the pieces named NET#2, NET#3) and shorts (two nets in one copper group) as findings.

Text

  • Boards imported from Altium and ODB++ now keep their silkscreen lettering: designators, labels, and titles render through the Newstroke engine. Altium designator/comment visibility flags are honoured, so hidden part numbers stay hidden.

Fixed / improved

  • Gerber X2: plane-connectivity readout now distinguishes "joined through pour/plane copper" from "no track route".
  • Primitives on unmapped Altium layers are reported (one summary line) instead of silently dropped.
  • The CI test suite grew from 6 to 14 test groups and now imports real KiCad demo boards in gerber, ODB++, and IPC-2581 form on every push.

Full commit log: v1.18.1...v1.19.0