must_interact

Every region of the target layer (layers[0]) must overlap at least one shape from the remaining (partner) layers; a region that doesn’t is a violation. Used for “device must contain its via/contact” rules, e.g. every MIM cap needs a landing via.

Semantics

The target and all partner layers are merged globally — not through the tiled Virtual layer operations cache — and whole target regions are kept when they touch none of the merged partner geometry. This is safe specifically because the layers this check is used for are sparse device/via layers: MIM caps, vias, and similar countable structures, not dense chip-wide layers.

That assumption matters: forbidden_unless_labeled used to make the same whole-chip-merge choice for its own (dense) layers and had to move off it once real antenna-diode markers turned out to be as numerous and widespread as the diffusion itself, on a full SoC top cell. If a future rule ever needs must_interact on a dense layer, it would need the same tiled/region-stitched treatment.

Layers

layers[0]

The target layer; every one of its regions must have a partner.

layers[1..]

One or more partner layers (the target only needs to overlap any of them).

Parameters

None. value is unused (set it to 0.0 by convention).

Violation markers

One point violation per target region with no interacting partner, at its centroid.

KLayout equivalent

target.not_interacting(partner1.join(partner2, …)).

Example

- id: MIM.h
  check: must_interact
  layers: [MIM, TopVia1, Vmim]
  value: 0.0