Rules#
- class pyedb.workflows.drc.drc.Rules(/, **data: Any)#
Bases:
pydantic.BaseModelCentralized container for all design rule categories.
This class provides a type-safe, serializable container for design rules with JSON/YAML round-trip support and a fluent API for building rule decks.
- Attributes:
- min_line_width
listofMinLineWidth Minimum acceptable trace width rules per layer or globally.
- min_clearance
listofMinClearance Spacing requirements between nets (wildcards allowed).
- min_annular_ring
listofMinAnnularRing Minimum annular ring requirements for drilled holes.
- diff_pair_length_match
listofDiffPairLengthMatch Length matching constraints for differential pairs.
- back_drill_stub_length
listofBackDrillStubLength Maximum allowed back-drill stub length constraints.
- copper_balance
listofCopperBalance Copper density balance limits per layer or zone.
- min_line_width
Examples
Build rules programmatically:
>>> rules = ( ... Rules() ... .add_min_line_width("pwr", "15mil") ... .add_min_clearance("clk2data", "4mil", "CLK*", "DATA*") ... .add_min_annular_ring("via5", "5mil") ... .add_copper_balance("top_bal", max_percent=10, layers=["TOP"]) ... )
Load from JSON file:
>>> rules = Rules.parse_file("my_rules.json")
Export to JSON:
>>> rules.model_dump_json(indent=2)
Overview#
Create Rules instance from dictionary. |
Convert Rules to dictionary. |
|
Append a minimum line width rule. |
|
Append a minimum clearance rule between nets. |
|
Append a minimum annular ring rule for drilled holes. |
|
Append a differential pair length matching rule. |
|
Append a maximum back-drill stub length rule. |
|
Append a copper density balance rule. |
Import detail#
from pyedb.workflows.drc.drc import Rules
Attribute detail#
- Rules.min_line_width: list[MinLineWidth] = []#
- Rules.min_clearance: list[MinClearance] = []#
- Rules.min_annular_ring: list[MinAnnularRing] = []#
- Rules.diff_pair_length_match: list[DiffPairLengthMatch] = []#
- Rules.back_drill_stub_length: list[BackDrillStubLength] = []#
- Rules.copper_balance: list[CopperBalance] = []#
Method detail#
- classmethod Rules.from_dict(data: dict[str, Any]) Rules#
Create Rules instance from dictionary.
- Parameters:
- data
dict Dictionary produced by
json.load(),yaml.safe_load(), etc.
- data
- Returns:
RulesValidated instance ready for
Drc.check().
Examples
>>> import json >>> with open("rules.json") as f: ... data = json.load(f) >>> rules = Rules.from_dict(data)
- Rules.to_dict() dict[str, Any]#
Convert Rules to dictionary.
- Returns:
dictJSON-serializable dictionary.
Examples
>>> rules = Rules().add_min_line_width("trace", "3mil") >>> data = rules.to_dict() >>> "min_line_width" in data True
- Rules.add_min_line_width(name: str, value: str, layers: list[str] | None = None) Rules#
Append a minimum line width rule.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_min_line_width("trace_width", "3.5mil") >>> len(rules.min_line_width) 1
- Rules.add_min_clearance(name: str, value: str, net1: str, net2: str) Rules#
Append a minimum clearance rule between nets.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_min_clearance("clk2data", "4mil", "CLK*", "DATA*") >>> rules.min_clearance[0].net1 'CLK*'
- Rules.add_min_annular_ring(name: str, value: str) Rules#
Append a minimum annular ring rule for drilled holes.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_min_annular_ring("via_ring", "2mil") >>> rules.min_annular_ring[0].value '2mil'
- Rules.add_diff_pair_length_match(name: str, tolerance: str, pairs: list[tuple[str, str]]) Rules#
Append a differential pair length matching rule.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_diff_pair_length_match("usb_match", tolerance="0.1mm", pairs=[("USB_DP", "USB_DN")]) >>> rules.diff_pair_length_match[0].tolerance '0.1mm'
- Rules.add_back_drill_stub_length(name: str, value: str) Rules#
Append a maximum back-drill stub length rule.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_back_drill_stub_length("max_stub", "6mil") >>> rules.back_drill_stub_length[0].value '6mil'
- Rules.add_copper_balance(name: str, max_percent: int, layers: list[str]) Rules#
Append a copper density balance rule.
- Parameters:
- Returns:
RulesSelf for method chaining.
Examples
>>> rules = Rules().add_copper_balance("top_bal", max_percent=10, layers=["TOP"]) >>> rules.copper_balance[0].max_percent 10