wide_uncovered¶
A connected region of a base layer that is wide (contains a spot at least value µm
across, in every direction) must enclose at least one shape of a feature layer; a wide
region with none is a violation. Used for IHP’s Slt.c: a metal plate wider than
30 µm must contain slots (to avoid CMP dishing / plating stress), unless it’s exempted
(pads, MIM, inductors).
Semantics¶
Runs on MergedCache::plate_regions, the same tiled, halo-bounded region analysis
min_region_density uses: “wide” is determined by a tiled erosion of radius
value / 2 (a region that survives erosion by half the width threshold has a spot at
least value across somewhere), and each region’s enclosed feature area is accumulated
from the same per-tile pass — so a dense base layer (a chip-wide metal plate) is never
globally unioned. A region is flagged only when it’s wide and its feature area is
(effectively) zero.
Layers¶
layers[0]The base layer to analyze for width (e.g.
Metal2NoExempt— metal with pad/MIM/inductor areas already excluded upstream).layers[1]The feature layer a wide region must contain (e.g.
Metal2.slit).
Parameters¶
None beyond layers and value (µm, the minimum width that requires the feature).
Violation markers¶
One point violation per wide, feature-less region, at a point actually on the flagged wide spot (not just the region’s overall centroid).
KLayout equivalent¶
Roughly base.sized(-value/2).sized(value/2).not_interacting(feature) — an erosion
(“is there a wide spot at all”) composed with “does this region contain the required
feature.”
Example¶
- id: Slt.c
check: wide_uncovered
layers: [Metal1NoExempt, Metal1.slit]
value: 30.00