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_typestrType 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
attributemessagestrHuman-readable description of the violation.
attributeseveritystrSeverity 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 | NoneMaximum allowed value for area_deviation violations, or None for other
violation types.
attributeactualfloat | NoneActual measured value for area_deviation violations, or None for other
violation types.
attributedesigned_countint | NoneNumber of designed features, for feature_erasure and feature_merge
violations. None for area_deviation.
attributepredicted_countint | NoneNumber of predicted features, for feature_erasure and feature_merge
violations. None for area_deviation.