ExpertQuestion 146 of 161Source: Synopsys ICC2 Implementation User Guide: IC Validator In-Design (Timing-Driven Metal Fill Insertion, Removing Metal Fill, Performing Real Metal Fill Extraction); Synopsys PrimeTime User Guide

Fill insertion broke timing after signoff. What do you do?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

First prove it with extraction that includes the real fill, then repair only around the nets that lost slack. Remove fill around critical nets with signoff_create_metal_fill -mode remove (ICC2) using -nets or a setup slack threshold, reinsert with timing-driven spacing, and recheck density and timing. Never rip out fill block-wide to recover a few picoseconds.

Technical Reference DiagramFill insertion broke timing after signoff. What do you do?
A flow that goes from metal fill insertion to real metal fill extraction and PrimeTime timing, finds critical nets that lost slack, removes fill only around those nets with a slack threshold, reinserts timing-driven fill, and rechecks density and timing.

Technical Explanation

  • Fill adds coupling capacitance to nearby signal wires. Floating fill still couples, so a net that had 8 ps of slack with estimated fill can go negative once the real shapes are extracted.
  • Measure it first. Associate non-emulation TLUPlus files with the corners with set_parasitic_parameters (ICC2) and enable set_extraction_options -real_metalfill_extraction floating (ICC2). Then write parasitics and rerun STA in PrimeTime so you compare against signoff numbers.
  • Removing fill only over critical nets is built in: signoff_create_metal_fill -mode remove (ICC2) with -nets names the nets, and -timing_preserve_setup_slack_threshold (ICC2) picks them from a setup slack threshold in library time units.
  • Timing-driven insertion then refills while keeping away from critical nets. It runs timing analysis including MCMM, removes existing fill, and inserts fill everywhere except near critical nets. Default spacing to their shapes is twice the technology minimum, also applied to the vertical extension on adjacent layers.
  • Choose the threshold carefully. The guide warns that a large threshold selects too many critical nets, which lowers metal density and leaves large empty areas.
  • The extra keep-out can create density errors. Set signoff.create_metal_fill.fix_density_errors (ICC2) to true (default false) to repair them during timing-driven insertion, then run density rules again.
  • Close the loop with extraction, PrimeTime and DRC on the final fill. A timing gain that creates a density violation just moves the problem to the fab.

What To Check

  • Setup slack of the affected paths with real fill extracted, not with virtual fill.
  • How many nets the chosen slack threshold selects.
  • Density per window on the affected layers after reinsertion.
  • Hold in the fast corner, since removing fill lowers capacitance.

Command Checks & Actions

ICC2 (icc2_shell)set_extraction_options -real_metalfill_extraction floating

Extracts the inserted fill as floating metal so timing sees its coupling.

ICC2 (icc2_shell)signoff_create_metal_fill -mode remove -nets {n_crit1 n_crit2} -timing_preserve_setup_slack_threshold 0.02

Removes fill only around named nets and nets under 20 ps of setup slack (library unit ns).

ICC2 (icc2_shell)set_app_options -name signoff.create_metal_fill.fix_density_errors -value true

Repairs density errors created by the wider keep-out during timing-driven fill.

ICC2 (icc2_shell)signoff_create_metal_fill -timing_preserve_setup_slack_threshold 0.02

Timing-driven fill insertion that keeps fill away from critical nets.

ICC2 (icc2_shell)signoff_check_drc -select_rules {list_of_density_rules}

Rechecks density after the fill change.

PrimeTime (pt_shell)report_timing -delay_type max -max_paths 20

Confirms the recovered setup slack with parasitics that include the final fill.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Setup WNS returns from -9 ps to +4 ps and all density windows stay within limits.
  • Suspicious (illustrative): Timing recovers but two windows now sit within 1% of minimum density.
  • Hard stop: Density violations after the fix, or a threshold so large that fill is removed from most of the block.

Common Mistake

The Trap: Removing all fill with -mode remove (ICC2) and signing off timing without it. That call also removes TCD structures by default, density rules then fail everywhere, and when fill goes back in at the end the same paths fail again.

What The Interviewer Is Testing

  • Does the candidate insist on real fill extraction before changing anything?
  • Knowledge of targeted fill removal and timing-driven fill in ICC2.
  • Awareness of the density cost of the keep-out.

Follow-up Question & Model Response

"Why does fill hurt some nets much more than others?"

Candidate Model Response: Coupling capacitance from fill matters most on nets that are long, run on dense layers, and are driven weakly relative to their load. A short net with a strong driver barely notices the added capacitance. Clock nets and high-speed buses often also have tight slack, so they are the first to go negative. That is why the tool picks nets by slack rather than removing fill uniformly.

Practical Example

Tapeout Scenario: After fill, a 1.2 GHz block shows WNS -9 ps on 31 endpoints (illustrative). Real fill extraction confirms it: coupling on 47 nets rose by 6 to 11 fF. A threshold of 0.02 ns selects 212 nets, fill is removed and reinserted with timing-driven spacing, and WNS returns to +4 ps. Density on M3 drops from 42% to 38% against a 30% minimum, still legal. A threshold of 0.1 would have selected 3,100 nets and dropped M3 to 27%.

PnR Flow Mentor Guide

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.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →