DfmViolation

A single DFM violation.

Returned as part of a DfmResult or per-layer LayerPrediction after running run_dfm(). Each violation describes a manufacturability issue detected by comparing designed and predicted geometry.

result = run_dfm(cell, layers=[Layer(1)], config=config)
for v in result.violations:
    print(f"[{v.severity}] {v.violation_type} on {v.layer}: {v.message}")

Attributes

attributelayertuple[int, int]

The (number, datatype) of the affected layer.

attributeviolation_typestr

Type of violation. One of:

  • "area_deviation" — predicted area deviates beyond the allowed threshold
  • "feature_erasure" — a designed feature is missing from the prediction
  • "feature_merge" — separate designed features merged in the prediction
attributemessagestr

Human-readable description of the violation.

attributeseveritystr

Severity level: "error" or "warning".

attributebboxtuple[tuple[float, float], tuple[float, float]]

Bounding box of the violation as ((min_x, min_y), (max_x, max_y)).

attributemax_allowedfloat | None

Maximum allowed value for area_deviation violations, or None for other violation types.

attributeactualfloat | None

Actual measured value for area_deviation violations, or None for other violation types.

attributedesigned_countint | None

Number of designed features, for feature_erasure and feature_merge violations. None for area_deviation.

attributepredicted_countint | None

Number of predicted features, for feature_erasure and feature_merge violations. None for area_deviation.

On this page