Plated Barrel at Occupied Through-Hole Joints#
Code |
BG.003 |
|---|---|
Validator |
|
Applies to |
|
Requirement level |
MUST (for every plated hole at an occupied through-hole joint, |
Tags |
|
Summary#
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.
Description#
The barrel is the hole. A board_barrel is both the required geometry (the copper tube
the camera looks down) and the prim that carries the drill facts (holeCenterMm /
holeShape / holeDimsMm or a drill radius — see
Hole and Pad Geometry (BG.010)),
pcba:board:occupied, and the association pair when occupied
(BG.012).
The requirement is scoped to joints the pipeline inspects:
Barrel required: every plated hole in which a through-hole terminal sits —
processClassthrough_holeorpress_fit. A press-fit part is a solderless through-hole part: the hole is plated, the barrel is real, and the camera looks down it. Whether solder-defect classes apply there is determined separately, per pin, bypcba:pin:solderable.No barrel required: a plated via with no component in it, and any unplated hole (a bare drilled mounting hole). Neither forms a solder joint. Unplated holes carry no required attributes at all; where a screw or standoff sits in one, the
mechanicalplacement describes it.
Two attributes are deliberately not part of the contract and are silently ignored when present:
pcba:board:plated (a barrel is the plating, so a flag would only restate its own presence) and
pcba:board:holeSide (a through-hole goes all the way through). An exporter that
boolean-subtracts real voids should tag the copper annular tube board_barrel; tagging it
board_hole is the common mistake.
A through-hole joint is therefore three prims — component-side annular ring (board_pad),
solder-side annular ring (board_pad), and the barrel — all carrying the same
pcba:board:refdes + pcba:board:componentPinNumber.
Fields#
Attribute |
Type |
Req |
Notes |
|---|---|---|---|
|
|
MUST |
|
|
|
MUST when occupied |
The component whose terminal sits in this hole (BG.012). |
|
|
MUST when occupied |
Which pin of that component; matches its |
|
|
MUST |
Is a terminal in this hole (BG.012). |
|
see BG.010 |
MUST — or derivable |
Drill geometry, carried on the barrel (BG.010). |
Why is it required?#
The barrel is the through-hole copper the AOI camera sees; without it there is no through-hole joint to render or inspect.
It is the one prim guaranteed to exist wherever a THT joint exists, so it is the reliable home for the hole data and the association.
Scoping the requirement to occupied joints avoids authoring thousands of barrels for vias that are never inspected.
Example#
def Mesh "barrel_J1_1"
{
token pcba:mesh:role = "board_barrel"
token pcba:mesh:matClass = "copper"
point3f pcba:board:holeCenterMm = (50.0, 10.0, 0.8)
token pcba:board:holeShape = "circular"
float2 pcba:board:holeDimsMm = (1.0, 1.0)
bool pcba:board:occupied = true
string pcba:board:refdes = "J1"
string pcba:board:componentPinNumber = "1"
rel pcba:board:component = </Board/THT/J1> # SHOULD; must agree with refdes
}
# Unplated mounting hole: no barrel, no required attributes. An optional board_hole
# bookkeeping prim is permitted but nothing downstream reads it.
How to comply#
For every pin of every
through_holeorpress_fitcomponent, author oneboard_barrelmesh carrying that joint’spcba:board:refdes+pcba:board:componentPinNumber, itsoccupiedstate, and the hole geometry (BG.010).Barrels are optional for unoccupied plated vias; unplated holes have no plating to represent. Do not author
pcba:board:platedorpcba:board:holeSide.Tag the plated copper tube
board_barrel, notboard_hole.
What the checker proves#
PlatedBarrelChecker runs only when a through_hole or press_fit component is placed. It
collects that component’s joints — pins that are solderable, or press-fit (terminal form
pressFit, or the part’s process class is press_fit) — and fails each joint for which no
board_barrel carries the matching pcba:board:refdes + pcba:board:componentPinNumber; a
stage with no barrel geometry at all is reported once. A non-solderable pin that is not press-fit
(a locating peg, a mechanical lead in an unplated hole) forms no joint and owes no barrel; such
features are better modelled as package body geometry than as pins. The checker does not verify
that the barrel is a real void through the substrate, that its geometry sits at the pin, or that
its occupied flag is set — those are BG.010 / BG.012 and manual inspection.