min_space_prl

Width- and parallel-run-conditional spacing: a wider minimum space applies only between lines that are both wide and run parallel for a long distance (e.g. IHP TM2.bR, M5.e/M5.f, CntB.b1).

Semantics

Reuses the tiled region-pair spacing engine from min_space, gated by an extra condition on each candidate pair: value only applies where some pair of facing edges (one from each region) satisfies all of —

  • their perpendicular separation is under the gap being measured;

  • their projected overlap (“parallel run”) exceeds parallel_run;

  • at least one of the two edges has real metal depth behind it greater than wide_width (the local line width at that edge, not the region’s bounding-box size — an L-shaped or stepped pad’s box can look wide for tens of microns while the metal running alongside a neighbour is actually narrow there, which must not trigger the wide-line spacing).

Because line width and parallel run are measured from real facing edges rather than bounding boxes, this stays exact for L-shaped, stepped, or comb-like layouts (common in I/O cells and pad rings), not just plain rectangles.

Layers

One layer (same-layer spacing) or two, exactly as in min_space.

Parameters

wide_width

Required. µm. A facing edge only makes the pair “wide” if the metal depth behind it exceeds this.

parallel_run

Required. µm. The facing-edge pair’s projected overlap must exceed this for the conditional spacing to apply.

Violation markers

One edge marker per violating pair, drawn across the gap — same convention as min_space.

KLayout equivalent

Not a single built-in operator: KLayout decks typically express this with Region#space(value, Region::Projection).with_angle(...) combined with a width filter on each side, or an equivalent parallel-run/width-conditional construction.

Example

- id: TM2.bR
  check: min_space_prl
  layers: [TopMetal2NotIND]
  value: 5.00
  params:
    wide_width: 5.00
    parallel_run: 50.00