Multi-Board Rules
The container's .kicad_pro holds rule sets that apply across all sub-board PCBs. Each set is independent: passing a list to set_rules replaces that set, omitting (or passing None) leaves it untouched.
get_rules()
Reads every rule set from the container.
mbs = kicad.get_mbs_schematic()
rules = mbs.multi_board.get_rules().rules
for r in rules.min_power_pins:
print(f"{r.net_name}: ≥ {r.min_pins} pins")
for r in rules.max_length_nm:
print(f"{r.net_name}: max {r.max_length_nm} nm")
for r in rules.cross_board_diff_pairs:
print(f"diff pair: {r.p} / {r.n}")
Five rule sets are returned: min_power_pins, max_length_nm, cross_board_diff_pairs, current_rules, voltage_rules.
set_rules(...)
Replace one or more rule sets. Each kwarg controls its own set.
mbs.multi_board.set_rules(
min_power_pins=[
{"net_name": "+5V", "min_pins": 4},
{"net_name": "+3V3", "min_pins": 2},
],
max_length_nm=[
{"net_name": "USB_DP", "max_length_nm": 50_000_000},
{"net_name": "USB_DN", "max_length_nm": 50_000_000},
],
cross_board_diff_pairs=[
{"p": "USB_DP", "n": "USB_DN"},
],
)
Pass an empty list to clear a set; omit the kwarg (or pass None) to leave it as-is.
Current rules
mbs.multi_board.set_rules(
current_rules=[
{"net_name": "+5V", "expected_amps": 1.5, "pin_rating_amps": 3.0},
],
)
Voltage rules
mbs.multi_board.set_rules(
voltage_rules=[
{
"net_name": "+3V3",
"expected_amps": 0.5,
"max_drop_mv": 100.0,
"trace_width_um": 250.0,
"trace_sheet_r_milliohm_per_sq": 17.0,
"contact_r_per_pin_milliohm": 5.0,
},
],
)