min_extension¶
Where the cover layer (layers[0]) sits over a target region (layers[1]), it must
extend at least value µm past the target’s long edges — its width direction. The
target’s short edges (its ends) are exempt, since the target legitimately runs out past
the cover there.
Semantics¶
This is a directional, edge-local check rather than a whole-shape enclosure: it walks every contour edge of the target and only considers the ones the cover actually overlaps just inside — a target edge with no cover just behind it (the target’s short/end edges) never enters the check at all, so they don’t need special-casing by shape.
For each qualifying edge, the engine samples along its length and measures how far the
cover reaches outward past it (capped at value); any span where the cover falls short
becomes a violation, reported as a span along the boundary rather than a single point.
This exact-for-axis-aligned-rectangles approach is what makes “long edges only” work
without the caller having to say which edges are long: an edge only enters the
computation where the cover overlaps its inside, which for a rectangular target lying
across a rectangular cover only happens on the two long sides.
Layers¶
Two layers, positional:
layers[0]— the cover (must extend beyond the target).layers[1]— the target being crossed/covered.
Parameters¶
None beyond layers and value (µm, the minimum required extension past each long
edge).
Violation markers¶
One edge marker per under-extended span along a qualifying target edge, reporting the worst (smallest) measured extension in that span.
KLayout equivalent¶
No single built-in KLayout primitive matches this directly; conceptually closest to an
extended / enclosing check restricted to a target’s long edges, which upstream
IHP decks typically express as a handwritten multi-step DRC script rather than one
operator.
Example¶
# SalBlock must extend 0.20 µm past the long edges of the Activ/GatPoly it crosses;
# the target's own ends are exempt.
- id: Sal.c
check: min_extension
layers: [SalBlock, ActivOrGatPoly]
value: 0.20