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.
attributepassedboolTrue 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_countintNumber of error-severity violations.
attributewarning_countintNumber of warning-severity violations.
attributepolygons_checkedintNumber of polygons checked during the DRC run.
attributerules_checkedintNumber of rules evaluated.
attributeelapsed_msfloatElapsed time in milliseconds.
attributesuppressed_violationsintNumber 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_cellsintNumber 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.