Registries#
Code |
UO.008 |
|---|---|
Validator |
|
Applies to |
a |
Requirement level |
SHOULD |
Tags |
|
Summary#
The board SHOULD expose a component registry: a Registries scope carrying
rel pcba:board:members that targets every placed component on the board, all mount
classes, so a consumer can enumerate parts without a full stage traversal. The registry is
an index, not a source of truth.
This page follows PCBA to USD Input Contract 1.0.2, section 3.
Description#
A consumer that wants the parts list resolves the registry, reads pcba:board:members, and
follows the targets to the component prims. Two points from the contract:
It covers all mount classes, not just through-hole. A subset — the THT parts, say — is a selection by
pcba:component:processClass; that is what the attribute is for. Do not author parallel per-class registries.It is an index.
processClassand the component prims are authoritative; a registry that disagrees with them is wrong, not a second opinion. It is SHOULD rather than MUST for exactly that reason: a stale or over-inclusive registry is worse than none, because a consumer trusting it gets a confidently wrong answer.
Within a panel the registry lives on the board master and resolves per position.
Fields#
Attribute |
On |
Type |
Req |
Notes |
|---|---|---|---|---|
|
a |
|
SHOULD |
Targets every placed component prim (SMT, through-hole, press-fit, fiducial, mechanical). |
Why is it required?#
Enumerating by registry avoids an O(stage) traversal and keeps discovery independent of prim naming.
Keeping one registry for all classes matches the contract’s one-model design; a subset is a filter, not a separate list.
Example#
def Scope "Registries"
{
def Scope "Components"
{
rel pcba:board:members = [
</Board/Layers/Top/Components/U7>, # SMT
</Board/THT/J1>, # through_hole
</Board/Fiducials/FID1>, # fiducial
</Board/Mechanical/standoff_ain2700>, # mechanical (no refdes — addressed by instanceId)
]
}
}
How to comply#
Author one
Registriesscope withrel pcba:board:memberslisting every placed component.Regenerate it with the component set; never hand-maintain it.
Select subsets by
processClass; do not author per-class registries.
What the checker proves#
RegistriesChecker is advisory. When components exist it warns if no pcba:board:members
relationship is authored anywhere on the stage, warns for each placed component missing from
the registry (under-inclusion), and warns for each target that is not a placed component
(stale or over-inclusive). It never fails the asset.