DrcResult

Result of running DRC.

Returned by run_drc(). Contains a list of violations and summary statistics about the check. Use the passed attribute for a quick pass/fail check.

result = run_drc(cell, rules)
if result.passed:
    print(f"DRC passed ({result.polygons_checked} polygons, {result.rules_checked} rules)")
    if result.warning_count:
        print(f"  ({result.warning_count} warnings, review recommended)")
else:
    print(f"DRC failed with {result.error_count} errors, {result.warning_count} warnings")
    for v in result.violations:
        print(f"  [{v.severity}] {v.message}")

Attributes

attributeviolationslist[DrcViolation]

List of all DRC violations found, including both errors and warnings.

attributepassedbool

True if no error-severity violations were found.

Warnings (see DrcRules.warning_margin) do not cause this to be False. A run with only warnings still passes. rosette drc and rosette check use this attribute for their exit code.

attributeerror_countint

Number of error-severity violations.

attributewarning_countint

Number of warning-severity violations.

attributepolygons_checkedint

Number of polygons checked during the DRC run.

attributerules_checkedint

Number of rules evaluated.

attributeelapsed_msfloat

Elapsed time in milliseconds.

attributesuppressed_violationsint

Number of violations suppressed by drc_skip post-filtering.

A violation is suppressed when every cell it names is within the skipped-cell closure (a cell with drc_skip = True or any cell reachable from it via CellRef). Violations with unknown cell-name provenance are kept as a safe default. See Cell.drc_skip.

As of the provenance work in ROS-552, per-polygon rules (MinWidth, MinArea, etc.), cross-layer pairwise rules (Enclosure, RequireOverlap, cross-layer MinSpacing/ForbidOverlap) and NotInside all carry cell-name provenance and therefore participate in suppression. The only rule that does not is Density, whose window-level check has no single source cell.

attributeskipped_cellsint

Number of unique cells in the skipped-cell closure for this run. That is, cells with drc_skip = True plus every cell reachable from them via CellRef. See Cell.drc_skip.

On this page