IntermediateQuestion 261 of 142Source PDF page undefined

Where does voltage optimization actually sit relative to place_opt and clock_opt, and why does order matter here?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

The voltage_opt flow runs place_opt and clock_opt first at the original voltage, then defines a scaling library group and a voltage range/target (set_vopt_range, set_vopt_target) before running voltage_opt itself -- routing and postroute optimization then happen at the newly optimized voltage. Running voltage optimization before placement/CTS are stable would mean optimizing against a design that's still going to change, wasting the analysis.

Technical Reference DiagramWhere does voltage optimization actually sit relative to place_opt and clock_opt, and why does order matter here?
Where does voltage optimization actually sit relative to place_opt and clock_opt, and why does order matter here?, illustrating the physical design concept.

Technical Explanation

  • The voltage_opt flow runs place_opt and clock_opt first, at the design's original voltage -- optimization needs a stable placed-and-clocked design to work from.
  • Only after that does it define a scaling library group and a voltage range/target (set_vopt_range, set_vopt_target) before running voltage_opt itself.
  • Routing and postroute optimization (route_auto, route_opt) then happen at the newly optimized voltage, not the original one.
  • Running voltage optimization before placement/CTS are stable would mean optimizing against a design still about to change -- the same reasoning that keeps CTS itself from running before placement.

Common Mistake

The Trap: Running voltage_opt before place_opt/clock_opt have produced a stable design, wasting the optimization on a design state that's about to change.

Follow-up Question & Model Response

"Why does routing specifically happen after voltage_opt rather than before it?"

Candidate Model Response: Because routing at the original (pre-optimization) voltage would produce routes sized and timed for a voltage the design is about to leave -- routing after voltage_opt ensures the physical implementation matches the voltage the design will actually run at.

Practical Example

Practical Example: A flow runs place_opt, then clock_opt, then defines a voltage range of 0.81V-1.0V with a -1.0ns TNS target via set_vopt_range/set_vopt_target, runs voltage_opt, and only then proceeds to route_auto and route_opt at the optimized voltage.

Physical Design & Planning Handbook

Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.