Fill, density, DFM

Fill, density, DFM

The first argument of fill is always the fill region, not the keep-out. exclude= is the keep-out.

← Language overview

fill

Available · yields polygons

layer dummy = fill(bounds(), exclude=m1 | via, shape=rect(0.5 um, 0.5 um), step=1.0 um, space=0.2 um)

First argument = fill region, not keep-out. exclude= is the keep-out. shape=rect(w,h) plus shape=circle(r) / hexagon(w) / octagon(w) / diamond(w) (polygons inscribed in the tile bbox), a scalar or 2-axis step, a skew step=px,py,qx,qy, space, stagger=yes, origin=x,y / auto / multi, density=r and window=w. Only whole cells, no clip.

Input Result Orange = region, blue = keep-out, green = dummy

Notes

  • An empty region: no fill.
  • A shape larger than a free island: the island stays empty (no clipping of the cell — whole cells only).
  • origin=x,y shifts the grid. origin=auto picks the offset with the most cells. origin=multi unions the quarter planes without overlap.
  • density=r: cells in raster order until the global density is ≥ r. With window=w: a local cap per window (non-overlapping tiles of edge length w).

fill_left

Available · yields polygons

layer left = fill_left(die, exclude=keep, shape=rect(0.5 um, 0.5 um), step=1.0 um)

Remainder (region − exclude) − dummy after the same grid — one layer, not individual cells. For post-processing or a density leftover.

Input Result

Notes

  • No room for a cell: remainder = (region − exclude) minus placed cells; can be narrow slits.

density

Available · yields window polygons

check "D" : density(m1, window=50 um, step=25 um) < 0.20
layer low = density(m1, window=50 um, step=25 um) < 0.20

Sliding windows; markers = violating windows. inside= clips the windows. how=convolve weights with a separable tent (centre > edge). As a layer the same expression is a filter, not an extra operator.

Input Result One window below the minimum density

Notes

  • step > window: gaps between windows — allowed, unusual.
  • At the border: windows that stick out of bounds clip onto inside or the cell.
  • Density 0 in an empty window: hits < 0.20.
  • Density 1 in a full window: hits > 0.70.

measure / property

Available · yields property check

measure m1 min_width, min_space
check "EQ.1" : property(m1, min_width) * property(m1, min_space) < 0.08 um2

The product property(m1, min_width) * property(m1, min_space) is measured live. measure is an accepted declaration with no effect of its own. Other products stay unsupported. Used as a layer, property(a, name) stands for the shapes of a.

Input Result

Notes

  • A shape without a measure (for example no facing edge pair): skip.
  • A product check marks the shape, not an edge pair.

critical_area

Available · yields polygons

layer ca = critical_area(m1, how=short, space=0.18 um)
layer ca = critical_area(m1, how=open, width=0.14 um)

Area in which a defect of size space/width creates a short or an open. how=short: overlap of the islands grown by space/2. how=open: remainder after an opening of width/2. With connect: shorts only between different nets.

Input Result

Notes

  • A same-net tight gap: no short critical area with connect.
  • how=open follows narrow spots (width).