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