DrcRules
Builder for DRC rule sets.
DrcRules uses a fluent builder pattern — each method returns a new DrcRules
with the rule added, so you can chain calls together. Start with an empty
DrcRules() and add rules for minimum width, spacing, area, enclosure,
overlap, angles, and more.
rules = (
DrcRules()
.min_width(Layer(1), 0.12, name="WG.W.1")
.min_spacing(Layer(1), Layer(1), 0.15, name="WG.S.1")
.min_area(Layer(1), 0.01)
.min_enclosure(Layer(11), Layer(10), 0.10, name="VIA_ENC")
.allowed_angles(Layer(1), [0, 90], name="WG.ANG")
)
result = run_drc(cell, rules)Methods
func__init__() -> NoneCreate an empty DRC rule set.
Returns
Nonefuncmin_width(layer, width, name=None) -> DrcRulesAdd a minimum width rule for a layer.
paramlayerLayer | int | tuple[int, int]Target layer. Accepts a Layer object, a single int (datatype defaults to 0),
or a (number, datatype) tuple.
paramwidthfloatMinimum allowed width in design units.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcmin_spacing(layer1, layer2, spacing, name=None) -> DrcRulesAdd a minimum spacing rule between two layers.
Use the same layer for both arguments to check intra-layer spacing.
paramlayer1Layer | int | tuple[int, int]First layer.
paramlayer2Layer | int | tuple[int, int]Second layer.
paramspacingfloatMinimum allowed spacing in design units.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcmin_area(layer, area, name=None) -> DrcRulesAdd a minimum area rule for a layer.
paramlayerLayer | int | tuple[int, int]Target layer.
paramareafloatMinimum allowed polygon area in design units squared.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcmin_enclosure(inner, outer, enclosure, name=None) -> DrcRulesAdd an enclosure rule (inner layer must be enclosed by outer layer).
paraminnerLayer | int | tuple[int, int]Inner layer that must be enclosed.
paramouterLayer | int | tuple[int, int]Outer layer that must enclose the inner layer.
paramenclosurefloatMinimum enclosure distance in design units.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcrequire_overlap(layer1, layer2, name=None) -> DrcRulesAdd a rule requiring overlap between two layers.
paramlayer1Layer | int | tuple[int, int]First layer.
paramlayer2Layer | int | tuple[int, int]Second layer.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcforbid_overlap(layer1, layer2, name=None) -> DrcRulesAdd a rule forbidding overlap between two layers.
paramlayer1Layer | int | tuple[int, int]First layer.
paramlayer2Layer | int | tuple[int, int]Second layer.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcallowed_angles(layer, angles, name=None) -> DrcRulesAdd a rule restricting polygon edge angles to specified values (in degrees).
paramlayerLayer | int | tuple[int, int]Target layer.
paramangleslist[float]List of allowed edge angles in degrees (e.g., [0, 90] for Manhattan geometry).
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcmin_edge_length(layer, length, name=None) -> DrcRulesAdd a minimum edge length rule for a layer. Catches tiny jogs and notches.
paramlayerLayer | int | tuple[int, int]Target layer.
paramlengthfloatMinimum allowed edge length in design units.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcno_self_intersection(layer, name=None) -> DrcRulesAdd a self-intersection check for a layer. Detects invalid (self-crossing) geometry.
paramlayerLayer | int | tuple[int, int]Target layer.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.
funcmax_width(layer, width, name=None) -> DrcRulesAdd a maximum width rule for a layer. Useful for enforcing single-mode waveguide constraints.
paramlayerLayer | int | tuple[int, int]Target layer.
paramwidthfloatMaximum allowed width in design units.
paramnamestr | None= NoneOptional rule name for violation reporting.
Returns
DrcRulesA new DrcRules with the rule added.