How does fix_eco_power recover area and leakage, and what selection modes exist?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
fix_eco_power (PT) swaps cells for cheaper ones on paths with positive setup slack, or removes buffers on paths with positive hold slack, and backs out any change that creates or worsens a timing or DRC violation. What counts as cheaper depends on the mode: smallest area by default, a numeric library attribute with -power_attribute, a name or string priority list with -pattern_priority, or PrimePower data with -power_mode. You choose one mode per run and run the command again for another.
Technical Explanation
- It is iterative. It makes targeted changes, re-analyzes timing and DRC, backs out changes that hurt, explores further swaps and repeats until the cost of more progress exceeds the benefit.
- A replacement happens only if it creates or worsens no timing or DRC violation, has the same logic function, meets the
eco_alternative_cell_attribute_restrictions(PT) rules, and is preferred under the active mode. -pattern_priority {HVT NVT LVT}uses name prefixes, listed lowest-power first. Add-attributewhen a user-defined string attribute carries the priority instead of the name.-power_modetakes dynamic, leakage or total and uses PrimePower results. It cannot be combined with-power_attributeor-pattern_priority. In total mode, high switching activity favours downsizing and low activity favours a higher Vt.- PrimePower data needs
power_enable_analysis(PT) set to true, activity read in, andupdate_power(PT). In DMSA you name exactly one-dynamic_scenarioand one-leakage_scenario, while timing and DRC in all scenarios are still honoured. fix_eco_power -methods {remove_buffer}(PT) removes buffers from paths with positive hold slack.- It appears twice in the recommended order: first for sizing and buffer removal, and last as a Vt swap that changes no layout.
-pba_mode pathorexhaustivefinds slack that graph-based pessimism hides, so more cells qualify for a swap.
What To Check
- Power before and after with the same activity and scenario.
- Setup and hold WNS and TNS unchanged in every scenario.
- Available alternative cells and dont_use marks.
- How many cells changed per group.
Command Checks & Actions
report_eco_library_cellsLists alternative library cells the ECO may use, with dont_use marks.
report_cell_usageShows cell counts and area by group before and after.
fix_eco_power -methods {remove_buffer}Removes buffers on paths with positive hold slack.
fix_eco_power -pattern_priority {HVT NVT LVT}Swaps toward HVT where slack allows, lowest-power prefix first.
update_powerRuns PrimePower analysis to provide dynamic and leakage data.
fix_eco_power -power_mode totalMinimizes dynamic plus leakage power using the PrimePower results.
report_powerCompares power before and after recovery.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Leakage drops 18% with setup and hold WNS unchanged in every scenario.
- Suspicious (illustrative): Recovery under 2%, which usually means the priority list is in the wrong order or
update_power(PT) ran without activity annotated. - Hard stop: Any new timing or DRC violation after recovery. The command should never create one, so a scenario was probably missing from the command focus.
Common Mistake
The Trap: Listing -pattern_priority as {LVT NVT HVT}. The list must go lowest-power first, so the tool treats LVT as preferred and swaps toward higher leakage wherever timing allows. The recovery run raises leakage.
What The Interviewer Is Testing
- Knowing the selection modes and that they are exclusive per run.
- Explaining why recovery runs first and a leakage-only swap runs last.
Follow-up Question & Model Response
"Why run power recovery before timing fixing at all?"
Candidate Model Response: Early recovery downsizes cells on paths with plenty of setup slack and removes buffers where hold slack is spare. That frees area and placement room that the later DRC and timing fixes can use. It never creates violations, so it does not make the later steps harder. The final leakage pass is different: it is a Vt swap with no layout change, so it can run after timing closes without disturbing placement.
Practical Example
Tapeout Scenario: A 1.2M-instance block starts at 84 mW of leakage (illustrative). fix_eco_power (PT) in the default area mode downsizes 9,400 cells, and a -methods {remove_buffer} pass removes 1,100 buffers on paths with spare hold slack, recovering 3% of area. After the DRC and timing ECOs, fix_eco_power -pattern_priority {HVT NVT LVT} (PT) swaps 41,000 cells toward HVT and leakage falls to 69 mW, 18% lower. Setup WNS stays at +4 ps and hold WNS at +2 ps in all six scenarios.
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