Fill: cells, metal and density
Distinguish row fillers, decoupling cells and metal fill, then audit what a density or extraction result actually covers.
- Lesson
- L7.4
- Time
- 25 min
- Runs on
- OpenROAD
- Check
- 5 questions
The routed MAC gains 985 filler cells and 3675 metal rectangles. The extracted RC summary remains unchanged. That observation raises a coverage question: did this extraction path account for the added floating shapes?
- Tap cells
- Fill and decap
- Logic
- Buffers and inverters
- Flip-flops
- Clock tree
- met1
- met2
- met3
- met4
- met5
- Floating metal fill outlines
- I/O pins
- Stage
- Floorplan
- Cell area
- 4,332.9 µm²
- Utilization
- 42.4 %
- Worst max slack
- 1.5886 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.4679 ns
- Stage
- Global placement
- Cell area
- 4,332.9 µm²
- Utilization
- 42.4 %
- Wirelength (HPWL)
- 4,952 µm
- Worst max slack
- 1.1493 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.4919 ns
- Overflow
- 0.0994
- Stage
- Detailed placement
- Cell area
- 4,332.9 µm²
- Utilization
- 42.4 %
- Wirelength (HPWL)
- 6,041 µm
- Worst max slack
- 1.0508 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.4980 ns
- Stage
- Clock tree
- Cell area
- 4,420.5 µm²
- Utilization
- 43.2 %
- Wirelength (HPWL)
- 6,331 µm
- Worst max slack
- 1.0227 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.3439 ns
- Clock skew
- 0.0084 ns
- Stage
- Global route
- Cell area
- 4,420.5 µm²
- Utilization
- 43.2 %
- Wirelength (HPWL)
- 6,331 µm
- Routed wirelength
- 13,938 µm
- Worst max slack
- 0.7109 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.3259 ns
- Routing usage
- 13.1 %
- Overflow
- 0
- Stage
- Detailed route
- Cell area
- 10,231.1 µm²
- Utilization
- 100.0 %
- Wirelength (HPWL)
- 6,331 µm
- Routed wirelength
- 7,652 µm
- Worst max slack
- 1.0077 ns
- Total negative max slack
- 0.0000 ns
- Worst min slack
- 0.3489 ns
- Global route
The placed cells before fill.
- Detailed route
Filler cells occupy row gaps; outlined rectangles show separate floating metal fill.
Read the layout as text
mac: die 112.02 × 112.02 µm, core 101.66 × 100.64 µm, 37 rows of 2.72 µm, 39 signal pins.
| Stage | Cell area | Utilization | Wirelength (HPWL) | Routed wirelength | Worst max slack | Total negative max slack | Worst min slack | Clock skew | Routing usage | Overflow | Cells placed |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Floorplan | 4,332.9 µm² | 42.4 % | — | — | 1.5886 ns | 0.0000 ns | 0.4679 ns | — | — | — | 136 tap cells; I/O pins not placed yet |
| Global placement | 4,332.9 µm² | 42.4 % | 4,952 µm | — | 1.1493 ns | 0.0000 ns | 0.4919 ns | — | — | 0.0994 | 136 tap cells, 6 buffers and inverters, 389 logic, 52 flip-flops |
| Detailed placement | 4,332.9 µm² | 42.4 % | 6,041 µm | — | 1.0508 ns | 0.0000 ns | 0.4980 ns | — | — | — | 136 tap cells, 6 buffers and inverters, 389 logic, 52 flip-flops |
| Clock tree | 4,420.5 µm² | 43.2 % | 6,331 µm | — | 1.0227 ns | 0.0000 ns | 0.3439 ns | 0.0084 ns | — | — | 136 tap cells, 6 buffers and inverters, 389 logic, 52 flip-flops, 8 clock tree |
| Global route | 4,420.5 µm² | 43.2 % | 6,331 µm | 13,938 µm | 0.7109 ns | 0.0000 ns | 0.3259 ns | — | 13.1 % | 0 | 136 tap cells, 6 buffers and inverters, 389 logic, 52 flip-flops, 8 clock tree |
| Detailed route | 10,231.1 µm² | 100.0 % | 6,331 µm | 7,652 µm | 1.0077 ns | 0.0000 ns | 0.3489 ns | — | — | — | 136 tap cells, 6 buffers and inverters, 389 logic, 52 flip-flops, 8 clock tree, 985 fill and decap; 3675 metal fill rectangles |
Measured DEF cell placements and FILLS rectangles. This view is not a density-rule report.
Three additions serve different purposes
| Addition | Physical purpose | Measured example |
|---|---|---|
| Row filler | Complete compatible row geometry and supply rails | 985 cells inserted |
| Decap cell | Provide local capacitance between supply rails | decap_3 area 3.7536 µm²; none inserted here |
| Metal fill | Adjust local layer pattern density | 3675 floating rectangles |
A shared word does not make these additions electrically or geometrically interchangeable.
Filler cells occupy unused row sites using compatible cell boundaries, well or implant geometry and power rails. They do not add a logic function. Their usefulness depends on the library’s row construction; the full geometric checks still determine whether the completed boundaries are legal.
A decoupling cell stores charge between supply rails and can support local switching demand. Its benefit depends on capacitance, placement and the impedance of the power network. A cell’s area is not its capacitance, and this exercise does not infer a voltage-drop improvement from a decap name.
| Inserted filler master | Count | LEF footprint |
|---|---|---|
| fill_8 | 425 | 10.0096 µm² |
| fill_4 | 163 | 5.0048 µm² |
| fill_1 | 202 | 1.2512 µm² |
| fill_2 | 195 | 2.5024 µm² |
The added footprint is 5810.5728 µm². Occupancy after adding physical fillers must not be confused with useful logic utilization.
Metal fill adds shapes on routing layers, often electrically floating. It does not occupy standard-cell row sites and cannot replace taps or supply-connected decaps. The pinned fill procedure uses floating rectangles; it does not turn them into additional signal routes.
Density is a windowed geometric measurement
Pattern density affects manufacturing steps such as etching and planarization. Excessively sparse or dense regions can process differently from nearby regions. The process rules define which shapes count, which windows are tested and which boundary exclusions apply.
| Layer | Added fill rectangles | Fill area | Fill area / core area |
|---|---|---|---|
| met1 | 0 | 0.00 µm² | 0.00 % |
| met2 | 386 | 461.28 µm² | 4.51 % |
| met3 | 1465 | 2741.23 µm² | 26.79 % |
| met4 | 1648 | 3024.61 µm² | 29.56 % |
| met5 | 176 | 1584.00 µm² | 15.48 % |
These are added-fill statistics over a 10231.06 µm² row area. They exclude existing routed and cell metal, and are not complete density percentages.
For met1 through met4, the pinned technology LEF declares a maximum density of 70 %. Its window is 700 × 700 µm, stepped by 70 µm. This small block’s fill-area fraction cannot establish compliance with those chip-scale windows.
A complete density result must combine the relevant existing geometry with fill, apply the deck’s window and exclusion rules, and inspect every required window. A whole-block average can hide a sparse corner. A zero in this table records no added fill; existing cell and wire metal can still occupy that layer. Minimum-density rules also require their own authoritative definition; a maximum value does not supply a minimum.
The pinned met2 fill recipe tries rectangle widths 2, 1, 0.58, 0.3 µm. It requests 0.3 µm spacing to fill and 3 µm to other shapes. Recipe parameters describe insertion choices, not a certificate that every density rule passes.
Magic and KLayout are unavailable here, so a merged-layout window-density check remains unrun. The example intentionally reports fill counts and areas without painting those statistics as a completed manufacturing check.
Recheck electrical and geometric consequences
| Observation | Before fill | After fill |
|---|---|---|
| TT maximum slack in this extraction path | 1.0077 ns | 1.0077 ns |
| Router DRC report | 0 | Only the pre-fill route was checked |
| Fill-aware extraction verification | Not applicable to added fill | Unestablished by equal RC summaries |
Unchanged numbers demonstrate the behavior of this tool path. They do not prove that floating metal has no capacitance.
Floating metal can change electrostatic coupling between nearby conductors. Its effect depends on geometry, neighboring conductors and the extraction model. A production extraction flow must represent those effects or use a validated approximation that accounts for them.
After fill, rerun the required geometry checks and extract the final physical representation. Here the router’s clean report precedes filler and metal insertion. Carrying that count forward as a post-fill DRC pass would give an earlier report credit for later edits.
f0 → f1setup check, latest arrival2 cells
- Clock latency
- Cell delay
- Setup time
Read the path as a table
Launch: clk rise edge at 0.0000 ns, clock latency 0.0000 ns (ideal). Capture: clk rise edge at 1.0000 ns, latency 0.0000 ns, library setup time −0.0825 ns.
Arrival 0.5036 ns, required 0.9175 ns, slack 0.4138 ns (met).
| Cell | Arc | Through | Edge | Delay (ns) | Time (ns) | Slew (ns) |
|---|---|---|---|---|---|---|
| 1 | f0/CLK → f0/Q | dfxtp_1 | rise | 0.3156 | 0.3156 | 0.0372 |
f0/Q → victim_driver/A | wire launch | rise | 0.0000 | 0.3156 | 0.0372 | |
| 2 | victim_driver/A → victim_driver/X | buf_1 | rise | 0.1880 | 0.5036 | 0.2043 |
victim_driver/X → f1/D | wire observe | rise | 0.0000 | 0.5036 | 0.2043 |
The report
Startpoint: f0 (rising edge-triggered flip-flop clocked by clk)
Endpoint: f1 (rising edge-triggered flip-flop clocked by clk)
Path Group: clk
Path Type: max
Fanout Cap Slew Delay Time Description
-------------------------------------------------------------------------------------
0.1000 0.0000 0.0000 clock clk (rise edge)
0.0000 0.0000 clock network delay (ideal)
0.1000 0.0000 0.0000 ^ f0/CLK (sky130_fd_sc_hd__dfxtp_1)
1 0.0022 0.0372 0.3156 0.3156 ^ f0/Q (sky130_fd_sc_hd__dfxtp_1)
launch (net)
0.0372 0.0000 0.3156 ^ victim_driver/A (sky130_fd_sc_hd__buf_1)
2 0.0167 0.2043 0.1880 0.5036 ^ victim_driver/X (sky130_fd_sc_hd__buf_1)
observe (net)
0.2043 0.0000 0.5036 ^ f1/D (sky130_fd_sc_hd__dfxtp_1)
0.5036 data arrival time
0.1000 1.0000 1.0000 clock clk (rise edge)
0.0000 1.0000 clock network delay (ideal)
0.0000 1.0000 clock reconvergence pessimism
1.0000 ^ f1/CLK (sky130_fd_sc_hd__dfxtp_1)
-0.0825 0.9175 library setup time
0.9175 data required time
-------------------------------------------------------------------------------------
0.9175 data required time
-0.5036 data arrival time
-------------------------------------------------------------------------------------
0.4138 slack (MET)A chosen grounded load changes this buffer’s timing; it is not extracted from the fill rectangles.
Consider a density window that overlaps two neighboring blocks, with most routed metal concentrated near the edge of only one block. Adding fill uniformly inside each block may still leave the shared window different from either isolated block average reported during implementation. The assembly context therefore belongs in the final density calculation, together with the process rules for exclusions and partial windows. A useful visualization colors each evaluated window by its own measured result, while preserving the corresponding rule name and counted area. This exercise lacks that complete geometric calculation, so its rectangle drawing intentionally lets you inspect insertion without presenting an unsupported density map. The same distinction matters during timing review: seeing floating rectangles on screen does not establish how the electrical solver represented their effects.
Asked in interviews
Why add metal fill?
To control pattern density according to process rules. Geometry, windows and exclusions determine whether it succeeds.
Can filler cells replace decaps?
No. Row completion and deliberate supply capacitance serve different purposes; their library implementations differ.
Does unchanged timing prove fill is harmless?
No. First establish that extraction included the relevant fill effects. Unchanged output can indicate missing model coverage.
Try it
A chosen 0.015 pF load gives 0.4138 ns setup slack. Increasing it to 0.020 pF gives 0.3612 ns.
This isolates load sensitivity. Neither chosen load is a measured equivalent of the floating fill above.
Run to draw the timing paths here.
WNS 0.4138 nsRead the netlist: victim.v
module victim(clk, d, observe, q);
input clk, d; output observe, q; wire launch;
sky130_fd_sc_hd__dfxtp_1 f0 (.CLK(clk), .D(d), .Q(launch));
sky130_fd_sc_hd__buf_1 victim_driver (.A(launch), .X(observe));
sky130_fd_sc_hd__dfxtp_1 f1 (.CLK(clk), .D(observe), .Q(q));
endmodule
Check yourself
Remember
- Row fillers, decaps and metal fill address different physical needs.
- Density rules count defined geometry in defined windows.
- Added-fill area is not complete metal density.
- Final geometry and extraction checks must account for fill.