How do you control the decap mix and leakage when inserting fillers?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Decap fillers add decoupling but also leak, so you decide how much of the empty space becomes decap and which VT flavour it uses. create_stdcell_fillers -type_utilization (ICC2) sets an insertion percentage per filler group, -fill_remaining (ICC2) fills what is left from the -lib_cells (ICC2) cells that are not in those groups, and -leakage_vt_order (ICC2) makes the tool choose the lowest-leakage filler that legalizes.
Technical Explanation
- By default the command fills all empty space with the
-lib_cells(ICC2) list, tried in the order given, largest to smallest for best results.-utilization(ICC2) sets the maximum percentage of free space to fill, default 100. -type_utilization(ICC2) takes pairs of a cell group and a percentage, and the percentages must add up to 100 or less. The guide's example asks for 70 percent ULVT decap and 30 percent LVT decap.- Legalization can leave space unfilled when you use groups.
-fill_remaining(ICC2) fills it with cells in-lib_cells(ICC2) that are not named in-type_utilization(ICC2). It works only together with-type_utilization(ICC2), and the command fails if every library cell sits in a group and nothing is left to fill with. - Within a group, cells are picked randomly by default.
-prefer_type_ordering(ICC2) inserts them in list order, left to right, which helps cells that are hard to legalize; it needs the advanced legalizer and can add runtime. -leakage_vt_order(ICC2) lists threshold voltage layers in order of decreasing leakage, and the tool picks the lowest-leakage filler that legalizes. It needsplace.legalize.enable_advanced_legalizer(ICC2) set to true and VT layers defined in the technology file with maskType implant, and the list must include every layer the-lib_cells(ICC2) fillers use.-leakage_vt_check(ICC2) inserts nothing. It reports fillers that could be replaced by a lower-leakage one without a legalization error, 100 at most by default, whichchf.create_stdcell_fillers.max_leakage_vt_order_violations(ICC2) changes.- The trade-off is dynamic IR against leakage: decap near busy logic supplies fast current pulses, but every decap adds leakage, more so on lower-VT layers. Plain fillers add neither.
- The power net violation check is off by default.
-rules check_pnet(ICC2) turns it on at a runtime cost and avoidsremove_stdcell_fillers_with_violation(ICC2) later removing many decaps.
What To Check
place.legalize.enable_advanced_legalizer(ICC2) is true before you rely on leakage ordering or type ordering.- Achieved share per group against the target, since legalization rarely hits it exactly.
- The violation count from
-leakage_vt_check(ICC2) after insertion. - Decap count inside the hotspots on the dynamic IR map, not only block totals.
- Block leakage after filling compared with the number before fillers.
Command Checks & Actions
set_app_options -name place.legalize.enable_advanced_legalizer -value trueEnables the advanced legalizer that leakage ordering and type ordering require.
check_legalityConfirms the block is legal before filler insertion.
create_stdcell_fillers -lib_cells $FILLER_CELLS -type_utilization {{*/DCAP8*ULVT */DCAP4*ULVT} 70 {*/DCAP8*LVT */DCAP4*LVT} 30} -fill_remainingAsks for 70% ULVT and 30% LVT decap by insertion percentage, then fills leftover space with the list cells outside those groups.
create_stdcell_fillers -lib_cells $FILLER_CELLS -leakage_vt_order {ULVT LVT SVT} -leakage_vt_checkChecks the inserted fillers and reports any that a lower-leakage filler could replace; inserts nothing (layer names illustrative).
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): ULVT and LVT decap land within 2 points of the 70/30 target,
-leakage_vt_check(ICC2) reports 0 violations, and filler leakage stays inside its allowance. - Suspicious (illustrative): Decap share far from target in dense regions, or a leakage check report showing exactly 100 violations, the default cap, so the true count may be higher.
- Hard stop: The command fails because every library cell is in a
-type_utilization(ICC2) group while-fill_remaining(ICC2) is set, or filler leakage alone breaks the block leakage budget.
Common Mistake
The Trap: Putting every filler, plain ones included, into -type_utilization (ICC2) groups and then adding -fill_remaining (ICC2). No cells are left outside the groups, so the command fails, and on a block where insertion takes hours that failure lands in tapeout week.
What The Interviewer Is Testing
- Knowing decaps trade dynamic IR against leakage and are not free filler.
- Knowing which cells
-fill_remaining(ICC2) draws from and when it fails. - Knowing the prerequisites for leakage ordering: the advanced legalizer and implant VT layers in the technology file.
Follow-up Question & Model Response
"How do you pick the decap split?"
Candidate Model Response: I start from the dynamic IR map and the leakage budget, not from the example numbers. In regions with high switching I want decap, and I let the library data decide which flavour gives the most decoupling per unit of leakage. Elsewhere I shift the split toward the lower-leakage group or plain fillers. Then I rerun dynamic IR to confirm the hotspots still pass and report leakage to confirm the budget holds.
Practical Example
Tapeout Scenario: A block has 1.2 mm² of empty row area after placement (illustrative). A 70/30 ULVT/LVT decap target with -fill_remaining (ICC2) lands at 66% ULVT, 28% LVT and 6% plain fillers where decaps would not legalize, so 100% of the space is filled. Filler leakage comes to 4.1 mW against a 3 mW allowance. Changing the groups to 50/30, with plain fillers taking the rest, drops filler leakage to 2.8 mW. A vectorless dynamic rerun moves the worst drop from 71 mV to 74 mV against an 80 mV limit, so the new mix is accepted.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising