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__() -> None

Create an empty DRC rule set.

Returns

None
funcmin_width(layer, width, name=None) -> DrcRules

Add 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.

paramwidthfloat

Minimum allowed width in design units.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcmin_spacing(layer1, layer2, spacing, name=None) -> DrcRules

Add 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.

paramspacingfloat

Minimum allowed spacing in design units.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcmin_area(layer, area, name=None) -> DrcRules

Add a minimum area rule for a layer.

paramlayerLayer | int | tuple[int, int]

Target layer.

paramareafloat

Minimum allowed polygon area in design units squared.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcmin_enclosure(inner, outer, enclosure, name=None) -> DrcRules

Add 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.

paramenclosurefloat

Minimum enclosure distance in design units.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcrequire_overlap(layer1, layer2, name=None) -> DrcRules

Add a rule requiring overlap between two layers.

paramlayer1Layer | int | tuple[int, int]

First layer.

paramlayer2Layer | int | tuple[int, int]

Second layer.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcforbid_overlap(layer1, layer2, name=None) -> DrcRules

Add a rule forbidding overlap between two layers.

paramlayer1Layer | int | tuple[int, int]

First layer.

paramlayer2Layer | int | tuple[int, int]

Second layer.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcallowed_angles(layer, angles, name=None) -> DrcRules

Add 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
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcmin_edge_length(layer, length, name=None) -> DrcRules

Add a minimum edge length rule for a layer. Catches tiny jogs and notches.

paramlayerLayer | int | tuple[int, int]

Target layer.

paramlengthfloat

Minimum allowed edge length in design units.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcno_self_intersection(layer, name=None) -> DrcRules

Add a self-intersection check for a layer. Detects invalid (self-crossing) geometry.

paramlayerLayer | int | tuple[int, int]

Target layer.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

funcmax_width(layer, width, name=None) -> DrcRules

Add a maximum width rule for a layer. Useful for enforcing single-mode waveguide constraints.

paramlayerLayer | int | tuple[int, int]

Target layer.

paramwidthfloat

Maximum allowed width in design units.

paramnamestr | None
= None

Optional rule name for violation reporting.

Returns

DrcRules

A new DrcRules with the rule added.

On this page