The drc.py module#
Summary#
Minimum trace width constraint rule. |
|
Minimum spacing constraint between nets. |
|
Minimum annular ring constraint for drilled holes. |
|
Differential pair net definition. |
|
Length matching constraint for differential pairs. |
|
Maximum back-drill stub length constraint. |
|
Copper density balance constraint. |
|
Centralized container for all design rule categories. |
|
High-performance DRC engine for PyEDB. |
Description#
Design Rule Check (DRC) engine for PyEDB.
This module provides a high-performance, multi-threaded design-rule checker that runs inside an open PyEDB session and validates industry-standard rules including geometry, spacing, manufacturing, high-speed, and test constraints.
The DRC engine features:
Multi-threaded rule checking using ThreadPoolExecutor
R-tree spatial indexing for fast geometry queries
Impedance checks via analytical formulas (Wheeler, Cohn, Hammerstad-Jensen)
Copper balance verification by layer or zone polygons
Back-drill stub and depth verification
IPC-D-356A netlist export with DRC annotations
Examples#
Basic DRC workflow:
>>> import pyedb
>>> from pyedb.workflows.drc.drc import Drc, Rules
>>> edb = pyedb.Edb(edbpath="my_board.aedb")
>>> rules = Rules.parse_file("rules.json")
>>> drc = Drc(edb)
>>> violations = drc.check(rules)
>>> print(f"Found {len(violations)} violations")
Build rules programmatically:
>>> rules = (
... Rules()
... .add_min_line_width("trace_width", "3.5mil")
... .add_min_clearance("clk2data", "4mil", "CLK*", "DATA*")
... .add_copper_balance("top_balance", max_percent=10, layers=["TOP"])
... )
>>> drc = Drc(edb)
>>> violations = drc.check(rules)
Export results for fabrication review:
>>> drc.to_ipc356a("fab_review.ipc")