Explore / Methods & Algorithms / Finishing / Metal Fill for Density Control

Metal Fill for Density Control

Finishing industry 1998 Kahng, Robins, Singh, Zelikovsky required by every foundry adds coupling capacitance

The idea

After each metal layer is patterned, chemical-mechanical polishing grinds it flat. The polish removes material unevenly where the metal density varies: sparse regions dish and dense regions stay high. The resulting thickness variation changes wire resistance and can spoil the layers built on top. Foundries therefore require the density in every window of a fixed size to stay within a range:

minimum ≤ metal area in window ÷ window area ≤ maximum
  • window a square region of fixed size; the checks slide it across the die at fixed steps
  • metal area the area of all shapes on the layer inside the window, fill included
  • minimum, maximum the density range the foundry's rules allow for that layer

Fill insertion adds rectangles of metal, connected to no signal, in the empty space until every window complies. Kahng, Robins, Singh and Zelikovsky (1998) posed this as an optimization. Because the windows overlap at fixed offsets, they divide the die into tiles smaller than a window and decide how much fill each tile receives, by linear programming for an exact answer (keeping every window in range while evening out the density) and by faster Monte Carlo and greedy methods for large layouts.

Watch it work: windows, violations, and greedy fill

One metal layer divided into tiles, with a density rule checked in overlapping windows. The walkthrough computes every window's density, marks the windows that are too empty, and fills the emptiest window first until every window passes.

The fine print

Fill is not free. Every added shape adds capacitance to the signal wires beside it, so timing-aware fill keeps its distance from critical nets, and extraction has to run after fill to see the effect. Fill can float or be tied to a supply; floating fill is simpler to insert, but its coupling is harder to model.

Where you meet it today

OpenROAD's density_fill inserts fill from a set of per-layer rules, and the finishing walkthrough on this site runs it before the final timing and power checks.

References and further reading