ExpertQuestion 153 of 161Source: Synopsys ICC2 Implementation User Guide: RedHawk and RedHawk-SC Fusion (Specifying a Design Scenario for Rail Analysis, Running Rail Analysis with Multiple Rail Scenarios)

How do you run rail analysis across multiple scenarios?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

RedHawk Fusion analyses only the current design scenario by default, so multiple scenarios need rail scenarios. Enable them with app options, mark the design scenarios for IR drop, create each rail scenario with create_rail_scenario (ICC2) before configuring it with set_rail_scenario (ICC2), then run them together with analyze_rail -rail_scenarios (ICC2). Pick scenarios by current, not by timing corner names.

Technical Reference DiagramHow do you run rail analysis across multiple scenarios?
Swim lanes for ICC2 and RedHawk showing app options enabling rail scenarios, scenario status set for IR drop, two rail scenarios created and configured against design scenarios, host options, and one analyze_rail call that runs both scenarios in parallel and returns results to ICC2.

Technical Explanation

  • Enable the feature with rail.enable_new_rail_scenario (ICC2) set to true (default false). rail.enable_parallel_run_rail_scenario (ICC2), default true, runs rail scenarios in parallel.
  • Mark each design scenario for rail analysis with set_scenario_status func_cbest -ir_drop true (ICC2).
  • Order matters: rail scenarios must be created with create_rail_scenario (ICC2) before set_rail_scenario (ICC2) sets their attributes. Several rail scenarios can map to one design scenario, and they are saved in the design library.
  • set_rail_scenario (ICC2) takes the analysis type through -voltage_drop, the nets, and optional extra GSR files. -twf_generation and -ipf_generation (ICC2) choose whether ICC2 or PrimeTime and PrimePower generate the timing window and instance power files.
  • Host setup comes from set_host_options (ICC2): -submit_command {local} for one machine, or a grid protocol and submit command. -submit_to_other_machines (ICC2) sends the scenarios out, but RedHawk-SC Fusion does not support that option.
  • If you need only one scenario other than the current one, rail.scenario_name (ICC2) is simpler. IR-driven placement and IR-driven CCD honour it.
  • Choose scenarios by what stresses the grid: the highest-power mode and corner for IR and EM, and the slow corner if you want IR feeding back into timing. Timing corner names alone do not tell you which one draws the most current.

What To Check

  • That every signoff power mode has a rail scenario.
  • Scenario status for IR drop on each mapped design scenario.
  • Results for every rail scenario, not only the one loaded in the GUI.
  • Option support in the Fusion flavour you are running.

Command Checks & Actions

ICC2 (icc2_shell)set_app_options -list {rail.enable_new_rail_scenario true rail.enable_parallel_run_rail_scenario true}

Enables multi-rail-scenario analysis and parallel runs.

ICC2 (icc2_shell)set_scenario_status {func_cbest func_cworst} -ir_drop true

Enables rail analysis for both design scenarios.

ICC2 (icc2_shell)create_rail_scenario -name T_high -scenario func_cbest

Creates a rail scenario tied to a design scenario; must come first.

ICC2 (icc2_shell)create_rail_scenario -name T_low -scenario func_cworst

Creates the second rail scenario on the other design scenario.

ICC2 (icc2_shell)set_rail_scenario -name T_high -voltage_drop dynamic -nets {VDD VSS}

Sets the analysis type and nets for that rail scenario.

ICC2 (icc2_shell)set_rail_scenario -name T_low -voltage_drop dynamic -nets {VDD VSS}

Same settings for the second rail scenario.

ICC2 (icc2_shell)set_host_options -submit_command {local}

Runs the rail scenarios on the local host.

ICC2 (icc2_shell)analyze_rail -rail_scenarios {T_high T_low}

Runs the listed rail scenarios; errors out if rail.enable_new_rail_scenario is false.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Four rail scenarios cover two modes at two corners, all complete, worst dynamic drop 69 mV against 72 mV.
  • Suspicious (illustrative): Only two of four scenarios have results, or both scenarios point at the same design scenario by mistake.
  • Hard stop: Signoff reported from the current scenario alone on an MCMM design.

Common Mistake

The Trap: Running plain analyze_rail (ICC2) on an MCMM block without creating rail scenarios and reporting the result as signoff. By default RedHawk Fusion analyses only the current design scenario, so the turbo mode at the fast hot corner, the one that draws the most current, was never checked.

What The Interviewer Is Testing

  • Knowledge of the default: current scenario only.
  • Does the answer keep the create-before-set order?
  • Choosing scenarios by current draw rather than by name.

Follow-up Question & Model Response

"How do you decide which design scenario draws the most current?"

Candidate Model Response: Run power analysis per scenario first, for example with PrimePower or the ICC2 power reports, and compare total and per-region power. Leakage-heavy blocks often peak at the hot, fast corner, while switching-heavy blocks peak in the mode with the highest clock frequency and activity. The worst IR scenario and the worst timing scenario are often different, so keep both if IR feeds into timing.

Practical Example

Tapeout Scenario: A block has functional and turbo modes, each at two corners (illustrative). Power analysis ranks turbo at the fast hot corner highest at 2.4 W. Four rail scenarios run in parallel on the local host. Turbo fast hot shows 69 mV dynamic drop against 72 mV, functional fast hot 51 mV. The current scenario alone, functional slow, had shown 43 mV and would have hidden the real margin.

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