IntermediateQuestion 187 of 192Source: Synopsys ICC2 Implementation User Guide: Setting Up for Power-Related Features

How do you cap LVT usage, and why set it early?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Tag the LVT library cells as a threshold-voltage group, declare it low-Vt with set_threshold_voltage_group_type -type low_vt LVT (ICC2), and cap it with set_multi_vth_constraint -low_vt_percentage <p> (ICC2), by cell count or by area. place_opt (ICC2), clock_opt (ICC2) and route_opt (ICC2) then honour the cap on data-path cells. Set it early, because route_opt (ICC2) deliberately limits this optimization to avoid disturbing QoR.

Technical Reference DiagramHow do you cap LVT usage, and why set it early?
A table of LVT percentage by cell count after place_opt, clock_opt, route_opt and PrimeTime ECO, with and without the multi-Vt constraint, and the budget line drawn across.

Technical Explanation

  • LVT cells are faster but leak more. Limiting their share cuts leakage, and the ICC2 guide also presents it as a yield improvement. Early in a project it also shows how hard the RTL is to time, because a block that needs far more LVT than budgeted is telling you the logic depth or the floorplan needs work.
  • Setup has two steps. First set the threshold_voltage_group attribute on the LVT library cells and declare that group low-Vt with set_threshold_voltage_group_type (ICC2). Then set the limit with set_multi_vth_constraint -low_vt_percentage (ICC2).
  • The LVT cells must have a valid purpose from set_lib_cell_purpose (ICC2), be in the right target library subsets, and not be dont_touch or dont_use.
  • -cost cell_count counts instances; -cost area weights by cell area, so large LVT cells count more. Use the one your power budget is written in.
  • The constraint applies to data-path cells during place_opt (ICC2), clock_opt (ICC2) and route_opt (ICC2). route_opt (ICC2) limits it to avoid QoR disturbance, so a block over budget at postroute will mostly stay over.
  • report_multi_vth_constraint (ICC2) reports the setting and reset_multi_vth_constraint (ICC2) removes it.
  • PrimeTime ECO can add LVT back. Keep LVT cells out of PrimeTime fixing with set_dont_use (PT) or set_target_library_subset -dont_use (PT), which restrict the fix_eco commands, and finish with leakage recovery, fix_eco_power -pattern_priority {HVT MVT LVT} (PT), which swaps cells back to higher Vt where slack allows.

What To Check

  • LVT percentage after each stage, by the same cost measure as the budget.
  • That the threshold_voltage_group attribute is on every LVT library cell and on no others.
  • LVT cells being usable: purpose set, in subsets, not dont_use.
  • LVT share after each PrimeTime ECO round.

Command Checks & Actions

ICC2 (icc2_shell)set_attribute [get_lib_cells -quiet *lvt*/*] threshold_voltage_group LVT

Tags the LVT library cells as a group.

ICC2 (icc2_shell)set_threshold_voltage_group_type -type low_vt LVT

Declares the group as low-Vt.

ICC2 (icc2_shell)set_multi_vth_constraint -low_vt_percentage 10 -cost cell_count

Caps LVT at 10% of data-path cell count.

ICC2 (icc2_shell)report_multi_vth_constraint

Reports the constraint in force.

PrimeTime (pt_shell)fix_eco_power -pattern_priority {HVT MVT LVT}

Final leakage recovery, swapping to higher Vt where slack allows.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): LVT at 8.5% against a 10% cap after place_opt (ICC2), still at or under 10% after route_opt (ICC2).
  • Suspicious (illustrative): LVT creeping from 10% to 12% over a few PrimeTime ECO rounds.
  • Hard stop: LVT at 18% at postroute against a 10% budget, with timing closed on those LVT cells.

Common Mistake

The Trap: Adding the constraint only just before route_opt (ICC2), when leakage reports first look bad. route_opt (ICC2) limits this optimization, so the percentage barely moves. The team is left choosing between a leakage waiver and a rerun from placement.

What The Interviewer Is Testing

  • Knows the two setup steps and the cost choices.
  • Knows why the cap must be in place from place_opt (ICC2).
  • Accounts for LVT added by PrimeTime ECO.

Follow-up Question & Model Response

"Why does route_opt limit percentage-LVT optimization?"

Candidate Model Response: Synopsys says it is to minimize QoR disturbance. By postroute, timing is nearly closed, and mass swapping of LVT cells to slower cells would reopen setup paths that were tuned around them. Each swap also changes the timing of neighbouring paths that were already signed off in the optimizer's view. So the budget has to be met while placement and clock optimization can still absorb the cost.

Practical Example

Tapeout Scenario: A 1.2 million cell block runs place_opt (ICC2) with no cap and reaches 14% LVT at WNS -5 ps (illustrative). With a 10% cell count cap from the start, it reaches 9.6% at WNS -12 ps, and clock_opt (ICC2) and route_opt (ICC2) close timing at 9.8%. Three PrimeTime ECO rounds take it to 10.4%, and final leakage recovery brings it back to 9.9%.

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. →