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:

  1. layers[0] — the cover (must extend beyond the target).

  2. 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