Dummy Fill
Fill the free space of a layer with dummy tiles as the layout is written, keeping clear of the design, without changing the source or the IR.
Many processes need an even pattern density on each layer for etching and polishing. Dummy fill puts square tiles wherever a layer leaves room. In Laylight it is an option of the commands that write a layout, so the source and the Laylight IR stay as they are; the tiles appear only in the output.
laylight build chip.lyl -o chip.gds --dummy si:size=2um,space=2um,keepout=3um
laylight build received.gds -o filled.gds --dummy si --dummy metal:size=5um,space=5um,keepout=5um
laylight unbox chip.gds --whitebox mmi.lyl -o full.gds --dummy si:keepout=3um,area=chip,margin=20um--dummy can be given once per layer on laylight build, laylight ir and laylight unbox. The input of build and ir can be Laylight source, IR (.lyir) or GDSII, so an existing layout can be filled too.
Rules
A rule is a layer, a name of the layer table or <layer>/<datatype>, followed by options:
| Option | Default | Meaning |
|---|---|---|
size | 2um | the edge of a square tile |
space | 2um | the gap between neighboring tiles; the pitch is size + space |
keepout | 2um | the least distance from a tile to existing geometry |
margin | 0 | the least distance from a tile to the edge of the fill area |
exclude | none | further layers to keep out of, joined by +: exclude=slab+heater |
area | none | fill only inside the shapes of this layer, such as a chip outline; otherwise the bounding box of the top cell |
datatype | the layer's | write the tiles on this datatype of the same layer number |
stagger | off | shift every other row by half a pitch |
Lengths take units like Laylight literals: 500nm, 2um, 0.
Where tiles go
- Tiles lie on a grid anchored at the origin of the top cell, so editing one part of a design leaves the tiles elsewhere where they were.
- A tile is kept when it lies inside the fill area and its square, grown by
keepouton every side, does not overlap the layer's geometry, the geometry of theexcludelayers or the footprint of a blackbox. The geometry of the whole hierarchy counts, with every rotation, mirror and array. Distances are measured along x and y, so diagonal distances are at leastkeepouttoo; a tile exactlykeepoutaway is kept. - Blackboxes are avoided on every layer, since their contents are not known. Fill after
unboxto fill around the real cells instead.
Output
Each rule adds a tile cell DUMMY_<layer> holding one square, and in each top cell an instance dummy_<layer> of a cell <top>$DUMMY_<layer> that places the tiles. Runs of tiles in a row are joined into arrays, and equal runs in the rows above into two-dimensional arrays, written as GDS array references: filling around a million-member array of the test fixtures takes about half a second and a few thousand references. Each rule reports its tiles and the share of the fill area they cover:
dummy si in Top: 2261 tiles in 11 instances, 19.4% of the fill area