Fill Empty Regions with Dummy Density Tiles
A layer with a large fraction of open space — sparse metal, a mostly-empty active area, a die with wide scribe lanes — can misbehave in CMP (chemical-mechanical polishing) or plasma etch: polish rate and etch rate both depend on local pattern density, so a region with almost nothing on it polishes or etches at a different rate than a dense one nearby, and that difference shows up as a real process defect, not a cosmetic one. The standard fix is dummy fill: scatter small, electrically inert shapes across the empty space so local density stays closer to uniform, while staying clear of anything that actually matters — real routing, contacts, alignment structures.
Arrange → Fill empty regions… (since v0.132.0) automates exactly that: pick a small cell to tile,
a pitch, a keep-out halo, and which layers count as "real geometry" to stay clear of, and Glyph
computes every site that fits before you commit to placing anything.
Time: ~8 min. You'll need: Glyph open on any document with at least one layer holding some real geometry — the keep-out geometry is what makes the halo behaviour visible. A blank document works too; you'll just be filling open space with nothing to avoid.
The dialog, field by field
Open Arrange → Fill empty regions…. Every field maps directly onto a decision you'd otherwise make by hand:
- Fill region — either the active cell's own content bounding box (the default), or a typed
rectangle (
X0/Y0/X1/Y1in µm), with a Use current selection's bbox button that reads whatever shapes or refs are currently selected and fills in the rectangle from their combined bounds. Sites are only ever generated inside this rectangle — a fill region larger than the actual empty space just means more candidate sites get rejected, not that fill spills outside it. - Fill cell — the cell whose whole footprint gets tiled. Pick any existing cell from the dropdown, or click New square tile… to have Glyph create one for you: a plain 10 µm square boundary on the active layer, named automatically. There's nothing special about that default — it exists so you can try the feature without building a fill cell by hand first; a real dummy-fill cell is usually smaller and simpler than your real geometry, but it can be anything, including a multi-shape pattern of its own.
- Pitch X / Pitch Y — the spacing between tile origins, independently per axis. A pitch equal to the fill cell's own size packs tiles edge-to-edge with no gap between them; a larger pitch spaces them out.
- Keep-out halo — a clearance distance added around every shape on the layers you check below. A site whose tile footprint, once expanded by this halo, would overlap real geometry is rejected — this is what keeps dummy fill from crowding right up against a trace or a pad.
- Keep clear of geometry on these layers — a checklist of every layer in the document. Leaving all of them unchecked fills the whole region regardless of what's on it; checking one or more makes only that layer's geometry (plus the halo) count as an obstacle. A width>0 path on a checked layer counts as its widened ribbon, not its bare centreline, so a wide trace's true footprint is respected.
Preview, then place — never the other way round
The submit button reads Preview the first time, and only becomes Place N tiles once a
preview has been computed for the exact input currently in the dialog. Changing any field —
pitch, halo, region, the fill cell itself — invalidates that cached preview immediately and the
button reverts to Preview, so there is no way to commit a stale count against inputs you've
since edited. The preview line states the split honestly: "Would place N of M candidate sites
— as A AREFs + S SREFs." The empty-region derivation behind this is a real whole-cell boolean
(merge everything, then dilate by the halo), which is deliberately not recomputed on every
keystroke — that's why it's a two-step Preview/Place flow rather than a live-updating count.
A rejected candidate site is a genuinely conservative call, not a best guess: the keep-out test is bounding-box based, so a non-rectangular keep-out shape (or several rectangles that merge into a non-rectangular footprint) can skip a site that would have geometrically fit — never the reverse. If you find fewer sites than you expected, that conservatism is usually why; widening the pitch or shrinking the halo recovers them, at the cost of a less dense fill.
Why the toast says "AREFs" as well as "SREFs"
Placement is capped at 10,000 candidate sites, and the dialog refuses up front, naming the number, if your pitch and region would ask for more. Below that cap, Glyph doesn't place one SREF per site — it looks for regular, unbroken rectangular runs of at least 4 contiguous sites and compresses each run into a single AREF, the same record GDSII already uses for a rectangular array. Only the ragged remainder — sites broken up by keep-out geometry, or too small a run to qualify — stays as individual SREFs. This is why a dense, mostly-obstacle-free fill of thousands of sites can still cost only a handful of AREF records: the toast and the preview both report the honest split, e.g. "as 2 AREFs + 6 SREFs," so you can see exactly how much the compression actually bought you on your specific layout. The whole placement — however many AREFs and SREFs it ends up as — lands as one undo step.
When to reach for this, and its honest limits
Use it for CMP or etch-loading dummy fill, density-matching between adjacent dies, or filling a scribe lane so it doesn't stand out as an obvious low-density strip on an otherwise uniform wafer. It is not a density calculator: the preview reports a region-coverage estimate — the checked keep-out layers' existing coverage plus the fill tiles' own footprint over the region — but that is an areal estimate of what you're about to place, not a per-layer density target from your process design kit. If your process has a hard density-window spec, check the result against that spec separately; this tool gets you to a reasonable fill pattern fast, it doesn't certify one.
Next steps
Boolean and layer operations covers the other whole-layer, non-destructive tools this dialog's own merge-and-dilate step borrows from. Cells, instances and arrays explains what an AREF actually is and why it's cheap regardless of how many instances it represents. For the width>0-path keep-out behaviour and layer statistics generally, see Layers. Then open the editor and fill the open space on your own design.