How do you remove only the fillers that cause DRCs?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Use remove_stdcell_fillers_with_violation (ICC2), which checks filler instances against routing and deletes only the ones with violations. Run it first with -check_only true (ICC2) to see what it would remove, then in removal mode, and repeat until it reports that it deleted 0 cell instances. Removing one filler can expose a violation on its neighbour, so one pass is often not enough.
Technical Explanation
- By default the command considers instances whose names contain xofiller, the string ICC2 gives every inserted filler, and checks them only against top-level signal routing.
-name(ICC2) picks a different pattern and-boundary(ICC2) limits the check to rectangles. -check_between_fixed_objects true(ICC2) widens the check to every neighbour: other fillers, standard cells, PG rails and terminals. Use it when a violation involves something other than a signal wire.-check_only true(ICC2) removes nothing and writes a report named after the block, ending in _fillers_with_violation.rpt, with each filler and its first violation. The file is overwritten on every check run, so copy it if you want to compare passes.-shorts_only true(ICC2) removes only fillers that short to a routing shape, which keeps decap fillers that only have a spacing problem. It cannot be combined with-check_only(ICC2).- Fillers whose physical_status is fixed or locked are never removed, even with violations; set them to placed first. Fillers with PG pins not on a PG net are removed if they touch PG objects, so run
connect_pg_net -automatic(ICC2) before checking. - Violations inside a filler, between objects of the same cell, are warned about and not removed. Double-patterning rules are checked only when
route.common.color_based_dpt_flow(ICC2) is true and the technology file defines DP rules. - Prevention is cheaper.
create_stdcell_fillers -rules check_pnet(ICC2) checks power net violations during insertion, at a runtime cost, so fewer decaps are removed later. In an ECO,create_stdcell_fillers -post_eco(ICC2) marks the new fillers andremove_stdcell_fillers_with_violation -post_eco true(ICC2) checks only those.
What To Check
- Flow order: metal fillers,
connect_pg_net -automatic(ICC2), removal passes, then nonmetal fillers and another PG connect. - The check report from each pass: filler count and violation types.
- Decap loss, meaning how many decap fillers were removed and where, since each one takes decoupling away from busy logic.
- The final pass printing Deleted 0 cell instances.
- Signoff DRC afterwards with
signoff_check_drc(ICC2), since the removal command checks routing DRC in ICC2 rather than the foundry runset.
Command Checks & Actions
connect_pg_net -automaticConnects filler PG pins first, so fillers touching rails are not removed only because their pins were unassigned.
remove_stdcell_fillers_with_violation -check_only true -check_between_fixed_objects trueChecking mode with the same object scope as the removal pass: lists fillers that would be removed and removes nothing.
remove_stdcell_fillers_with_violation -check_between_fixed_objects trueRemoval mode, checking fillers against all neighbouring objects instead of only top-level signal routes.
remove_stdcell_fillers_with_violation -shorts_only true -boundary {{{100 200} {160 260}}}Removes only fillers that short to routing inside one rectangle (coordinates illustrative).
save_blockSaves the block, since IC Validator reads it from disk.
signoff_check_drcConfirms the remaining fillers are clean against the signoff runset.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Pass 1 removes 52 fillers, pass 2 removes 5, pass 3 reports Deleted 0 cell instances, and signoff DRC shows no filler-related errors.
- Suspicious (illustrative): Pass counts that do not fall, such as 40, then 38, then 41, or more than 5% of decap fillers removed in one region.
- Hard stop: Signoff DRC still flags filler shapes after a pass that deleted nothing (fixed or locked fillers, internal violations, or a rule the ICC2 check does not model), or fillers left with unconnected PG pins.
Common Mistake
The Trap: Running the command once and moving on. The first pass reports 52 deletions and looks finished, but removing those fillers creates new violations with neighbouring fillers, a limitation the command reference states. A second pass would have removed 5 more; instead they surface as signoff DRC errors two days later, after metal fill, and the fix now needs fill removal and a refill in that area.
What The Interviewer Is Testing
- Knowing the command must be repeated until it deletes nothing.
- Understanding what it will not remove: fixed or locked fillers and internal violations.
- Candidates who connect PG before checking and start with check-only mode show they have used it on a real block.
Follow-up Question & Model Response
"Why not remove all fillers and reinsert them?"
Candidate Model Response: remove_cells [get_cells xofiller*] (ICC2) removes every filler, including thousands of clean decaps, and a full reinsert can put the same violations back because the routing has not changed. Targeted removal keeps clean fillers and their decoupling. Full removal and reinsertion makes sense after a large ECO that moved many cells, where most filler positions are stale anyway. For small changes, marking new fillers with -post_eco (ICC2) keeps the check limited to them.
Practical Example
Tapeout Scenario: After routing, a block receives 18,400 metal fillers, 6,100 of them decaps (illustrative). A check-only pass reports 52 fillers with violations: 44 spacing violations to top-level signal routes and 8 shorts. Pass 1 removes those 52, pass 2 removes 5 neighbours exposed by the first removal, and pass 3 reports Deleted 0 cell instances. 57 fillers are gone in total, 21 of them decaps, about 0.3% of the decap fillers. Nonmetal fillers then fill the gaps, connect_pg_net -automatic (ICC2) runs again, and signoff_check_drc (ICC2) shows no filler-related errors.
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