Cross-Board Rules
The container holds ERC checks and DRC rule types that apply to cross-board nets. ERC checks run on the MBS document; DRC rules run on each sub-board's DRC pass.
ERC checks
Cross-board ERC runs in two places:
- MBSCH ERC (most checks): run Inspect → Electrical Rules Checker (or
Ctrl/Cmd+Shift+I) with the MBS open. - Sub-project ERC (one check): a single cross-board check fires during a normal sub-project schematic ERC pass.
Severity for each check is configurable in Schematic Setup → Violation Severity on a sub-project (the MBSCH's setup dialog is titled "Multi-Board Schematic Setup" and hides the Violation Severity panel). The severities apply project-wide.
| Check | Runs in | Default | Triggers |
|---|---|---|---|
| Module pin's target pad is missing | MBSCH | Warning | A module pin points at a connector pad (component ref + pin number) that no longer exists on the sub-project PCB. Run Refresh from sub-projects to rescan. |
| Module pin not wired to a cross-board net | MBSCH | Error | A module pin has no wire attached or sits on no named net. Wire it to a pin on a different block. |
| Net touches only one module block | MBSCH | Warning | All pins on the net belong to the same block, so it's not actually cross-board. Wire to another block or remove the wiring. |
| Power pin not driven | MBSCH | Error | A power-input pin on a cross-board net has no power-output source. Catches GND ↔ 5V shorts and missing supply connections. |
| Pin-type conflict | MBSCH | Error or Warning | Two pins of incompatible electrical types are connected on a cross-board net (e.g. output ↔ output). Uses the standard ERC pin-type matrix. |
| Label shadows a cross-board net | MBSCH | Warning | A sub-project has a local PCB net with the same name as a cross-board net it doesn't participate in. The next sync would silently merge the two; rename one side first. |
| Connector pin unconnected | Sub-project SCH | Warning | A connector pin participates in a cross-board net per the container's topology, but is dangling on this board's local schematic. Wire it up locally. |
DRC rules
The container holds five DRC rule types beyond standard sub-board DRC. Each rule fires during sub-project DRC, not container DRC. All five run together in the same DRC pass.
Set them from the container project's setup dialog. The Cross-Board Rules panel is a five-tab notebook with one grid per rule type. To validate cross-board rules from the agent without opening every sub-project, use pcb_cross_board action="validate".
| Rule | What it checks | Violation code |
|---|---|---|
| Min Power Pins | Connector pin count for a named net is below the minimum on a sub-board | DRCE_CROSS_BOARD_POWER_PINS |
| Max Length | Total trace length of a cross-board net across all sub-boards exceeds the limit | DRCE_CROSS_BOARD_LENGTH |
| Differential Pairs | Pair members are out of sync (one isn't cross-board, or they touch different sub-projects) | DRCE_CROSS_BOARD_DIFF_PAIR |
| Current | Expected current exceeds pin count × per-pin rating | DRCE_CROSS_BOARD_CURRENT |
| Voltage Drop | Estimated DC drop across the cross-board net exceeds the maximum | DRCE_CROSS_BOARD_VOLTAGE_DROP |
Configuring DRC rules
Each rule type has its own configurable fields.

Min Power Pins
Counts unique connector pins on a sub-board that carry the named cross-board net. Fires when the count is below the minimum. Use this to enforce minimum pin redundancy on power and ground nets.
| Field | Type | Notes |
|---|---|---|
net_name | string | Cross-board net (e.g. +5V) |
min_pins | int ≥ 1 | Minimum number of pins |
Max Length
Sums the total trace length of a cross-board net across every sub-board. The test lazy-loads each sibling sub-board's PCB to read its traces, so the rule counts contributions from every sub-project even if only one editor is open.
| Field | Type | Notes |
|---|---|---|
net_name | string | Cross-board net |
max_length | nm in proto, mm in dialog | 1 mm = 1e6 nm |
Differential Pairs
Checks two invariants per declared pair:
- Both pair members are cross-board nets. If the positive is cross-board but the negative is local-only on a sub-board, the pair is broken.
- Both members touch the same set of sub-projects. If one ends at board A while the other continues to board B, the differential signal converts to single-ended at a connector.
| Field | Type | Notes |
|---|---|---|
p | string | Positive net name |
n | string | Negative net name |
Current
Multiplies the per-pin current rating by the number of connector pins on a sub-board to get safe carry capacity. Fires when expected_amps exceeds capacity.
| Field | Type | Notes |
|---|---|---|
net_name | string | Cross-board net |
expected_amps | double (A) | DC current draw on the net |
pin_rating_amps | double (A) | Safe carry per connector pin |
Zero values skip the check silently.
Voltage Drop
Estimates DC voltage drop across a cross-board net with a lumped-resistance model:
R_trace = (length_mm / width_mm) × sheet_R_mΩ_per_sq (per sub-board, summed)
R_contact = pin_R_mΩ / number_of_parallel_pins (per connector crossing)
drop_mV = (R_trace + R_contact) × expected_amps
Fires when drop_mV exceeds max_drop_mv.
| Field | Type | Default if 0 |
|---|---|---|
net_name | string | required |
expected_amps | double (A) | required |
max_drop_mv | double (mV) | required |
trace_width_um | double (µm) | 250 |
trace_sheet_r_milliohm_per_sq | double (mΩ/sq) | 0.5 |
contact_r_per_pin_milliohm | double (mΩ) | 20 |
The defaults model 1 oz copper with a standard pin header. Override for non-standard stackups.