Requirements#

Summary#

Levels follow PCBA to USD Input Contract 1.0.2.

  • The board root MUST carry pcba:board:thicknessMm — the pressed board thickness — and board_substrate MUST be a solid slab of that thickness (BG.001)

  • The board MUST carry copper-layer geometry (board_copper) and solder-mask geometry (board_mask) with role-consistent materials (BG.002)

  • Every plated hole at an occupied through-hole joint, press_fit included, MUST be backed by a board_barrel that carries the hole data and the association pair; there is no pcba:board:plated flag and board_hole is optional bookkeeping (BG.003)

  • Each board_pad MUST carry pcba:board:padNumber, its designation within the footprint, present even on an unoccupied pad; on an occupied pad it should equal componentPinNumber (BG.005)

  • When solder paste is supplied, each board_paste at an occupied site MUST name its contact with pcba:board:refdes + pcba:board:componentPinNumber (pcba:board:pasteFor is a SHOULD handle) (BG.007), and its side MUST be determinable — pcba:board:solderLayer or a containing layer’s pcba:layer:side (BG.008)

  • Each board_barrel MUST describe its hole — holeCenterMm / holeShape / holeDimsMm, or a drill radius for a round hole, or shape + dims + contour for a slot; pcba:board:padContour is a SHOULD, the pad mesh being the authoritative exposed-pad extent (BG.010)

  • board_pad and board_barrel prims MUST declare occupancy (or an explicit unresolved-occupancy marker); occupied sites carry pcba:board:refdes + pcba:board:componentPinNumber board-side, keeping component pins instanceable. Known-empty pads also declare intentionallyUnpopulated (BG.012)

  • For THT, paste association MUST be empty unless paste-in-hole applies (BG.014; no executable rule)

Requirements#

Tags

Summary

Compatibility

Validator

❓

The board-root prim MUST carry pcba:board:thicknessMm, the real pressed (post-lamination) board thickness in millimetres, and the board_substrate mesh MUST be a solid slab of that thickness — a zero-thickness plane is invalid.This page follows PCBA to USD Input Contract 1.0.2, sections 5 and 11.

BoardThicknessChecker

❓

The board MUST carry copper-layer geometry and solder-mask geometry with role-consistent materials: at least one Mesh with pcba:mesh:role = "board_copper" and at least one with pcba:mesh:role = "board_mask", so the rendered board has production-accurate colour and finish.This page follows PCBA to USD Input Contract 1.0.2, sections 5 and 9.

BoardLayersChecker

❓

Every plated hole at an occupied through-hole joint MUST be backed by a Mesh with pcba:mesh:role = "board_barrel" — the copper plating through the board thickness. This includes press_fit parts. The barrel carries the hole data and the board-side association (pcba:board:refdes + pcba:board:componentPinNumber) for that joint.This page follows PCBA to USD Input Contract 1.0.2, sections 6 and 10. There is no pcba:board:plated flag; board_hole prims are optional bookkeeping.

PlatedBarrelChecker

❓

Every board_pad prim MUST carry pcba:board:padNumber — the pad’s own designation within its footprint — present even on an unoccupied pad. On an occupied pad it should equal that pad’s pcba:board:componentPinNumber.This page follows PCBA to USD Input Contract 1.0.2, sections 6 and 10.

PadNumberChecker

❓

When solder paste geometry is supplied, each board_paste deposit MUST name the contact it serves with the same pair a pad or barrel uses: pcba:board:refdes + pcba:board:componentPinNumber. The pcba:board:pasteFor relationship is a SHOULD — a direct handle when the component prim is in the file — not the association itself.This page follows PCBA to USD Input Contract 1.0.2, sections 6 and 10.

PasteAssociationChecker

❓

When solder paste geometry is supplied, the side of each board_paste deposit MUST be determinable: either pcba:board:solderLayer (top | bottom) is authored on the deposit, or it derives from a containing layer prim’s pcba:layer:side.This page follows PCBA to USD Input Contract 1.0.2, sections 10 and 11.1.

PasteSideChecker

❓

Every board_barrel MUST describe its plated-through-hole geometry — pcba:board:holeCenterMm, pcba:board:holeShape, pcba:board:holeDimsMm — or author one of the two derivable forms the contract allows (a drill radius for a round hole; shape + dims + the contour mesh for a slot). pcba:board:padContour on a board_pad is a SHOULD: the pad mesh itself is the authoritative exposed-pad extent.This page follows PCBA to USD Input Contract 1.0.2, sections 6 and 10. The carrier of hole data is the board_barrel, not board_hole; there is no holeSide attribute.

HoleGeometryChecker

❓

Every board_pad and board_barrel MUST declare pcba:board:occupied, or declare that occupancy is unresolved using the provenance convention below. An occupied site names its component terminal with pcba:board:refdes + pcba:board:componentPinNumber. This applies to SMT pads as well as THT joints.This page follows PCBA to USD Input Contract 1.0.2, sections 6 and 10. board_hole is optional bookkeeping; occupancy and association belong on the actual pad or barrel. There are no holeSide or plated fields.

open-usd

HoleOccupancyChecker

❓

For through-hole components the paste association MUST be empty unless the paste-in-hole (pin-in-paste / through-hole reflow) process applies. When it does, the deposit is a normal board_paste prim naming its contact with pcba:board:refdes + pcba:board:componentPinNumber and carrying its side, exactly like SMT paste.This page follows PCBA to USD Input Contract 1.0.2, sections 10 and 12.

Not yet implemented