Process Class#
Code |
CI.003 |
|---|---|
Validator |
|
Applies to |
placed component prim (discovered by |
Requirement level |
MUST |
Tags |
|
Summary#
Every placed component prim MUST carry pcba:component:processClass — how the part is
mounted — from SMT through_hole press_fit mechanical fiducial Mixed. A Mixed part MUST
also list its real mount technologies in pcba:component:processClasses. Package families
(BGA, LGA, QFN, …) are not mount methods; they belong in packageType.
This page follows PCBA to USD Input Contract 1.0.2, sections 8, 8.1 and 12.
Description#
There are only two real assembly methods — surface-mount and through-hole; press_fit is a
third mount style, and mechanical / fiducial are non-electrical placements. SMT and THT are
one model with conditional fields, not separate specs, and a single board routinely carries
both:
SMT→board_pastedeposits with the contact pair andsolderLayer; per-contact pads; no holes.through_hole/press_fit→ aboard_barrelat every occupied joint carrying the hole data and the board-side association pair. Whether solder-defect classes apply is determined per pin bypcba:pin:solderable, not by the class (CG.018).Mixed→ the part combines technologies;pcba:component:processClasses(token[]) lists them, each from{SMT, through_hole, press_fit}.fiducial/mechanical→ non-electrical placements with a reduced identity set: no pins, no BOM identity, no solder joint. They still MUST carry a validprocessClass,side, and a role-bearing mesh.
A component MUST be discoverable by at least one of refdes, instanceId, or processClass;
deferring processClass with pcba:prov:processClass = "not_yet_available" is safe when
another is authored, and is preferred over guessing — a wrong class silently switches off
inspection classes a real part needs.
The superseded tokens SMT_leaded, SMT_leadless, and BGA are read and reported with a
warning naming the replacement (SMT).
Fields#
Attribute |
Type |
Req |
Notes |
|---|---|---|---|
|
|
MUST |
|
|
|
MUST when |
The real mount technologies combined, each in |
Why is it required?#
The one-model design needs
processClassto decide which conditional fields (paste vs barrels) apply to a part.Keeping package families out of this field keeps it a closed vocabulary a consumer can branch on; the open-ended package space lives in
packageType.
Example#
def Xform "J1" (
instanceable = true
prepend references = @./protos/HDR2.usda@</Proto>
)
{
string pcba:component:refdes = "J1"
token pcba:component:type = "connector"
token pcba:component:processClass = "through_hole"
}
def Xform "X9"
{
string pcba:component:refdes = "X9"
token pcba:component:processClass = "Mixed"
token[] pcba:component:processClasses = ["through_hole", "SMT"]
}
How to comply#
Author
pcba:component:processClasson every placed component from the vocabulary; derive it from the footprint or an explicit classification when the source export lacks it.For
Mixed, authorprocessClasses.Put package families in
packageType; put lead form inpcba:pin:terminalType.
What the checker proves#
ProcessClassChecker fails a component whose processClass is absent (a
pcba:prov:processClass marker downgrades this to a declared gap) or outside the vocabulary,
warns on a superseded token, and for Mixed fails a missing or invalid processClasses list.
It does not check that the class matches the part’s actual geometry or pads.