How is thermal analysis run in ICC2?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
ICC2 runs Kelvin thermal analysis with analyze_thermal (ICC2) after you open the block and set the thermal application options. Most options have defaults, but thermal.tech_file (ICC2) must be provided in the basic flow, while power and metal profiles are generated in memory if you do not supply them. You then view the temperature map in the GUI and use report_thermal_qor -threshold 35.9 (ICC2) to list results above a temperature in Celsius.
Technical Explanation
- Kelvin trades accuracy against runtime through the number of grids.
thermal.grid_resolution(ICC2) sets the grid size in micrometres, {100 100} in the guide's example; a finer grid resolves smaller hotspots and takes longer. thermal.engine(ICC2) defaults to helios. The compact engine uses a simplified model, needsthermal.compact_model_file(ICC2), and does not need a metal profile, grid resolution or heat transfer rate;thermal.use_layout(ICC2) sets whether layout information is used there.thermal.heat_transfer_rate(ICC2) has a default, but the guide recommends a customised value. It sets how heat leaves the model, so it should come from the package team's data rather than the example.thermal.power_profile(ICC2) andthermal.metal_profile(ICC2) are optional; without them ICC2 generates both in memory. Macros can get their own power in watts and metal density, where 1 means full density, throughthermal.hier_block_power_profile(ICC2) andthermal.hier_block_metal_profile(ICC2).- Results go to the directory named by
thermal.database(ICC2), for example THERMAL_DATABASE, andopen_fusion_thermal_result -result {S1}(ICC2) reopens one scenario later. - For MCMM, the guide enables thermal scenarios through the -thermal true setting of
set_scenario_status, describes each withset_thermal_scenario(ICC2), where the ITF file is required and the profiles are optional, and runsanalyze_thermal -scenarios {S1 S2}(ICC2), oranalyze_thermal(ICC2) alone for all scenarios. - The thermal profile map is stored in a .spr file and shown in the GUI.
report_thermal_qor(ICC2) lists results above the threshold for one scenario, and adding-instance(ICC2) gives per-instance detail. - Temperature matters to PD because it raises wire resistance, lowers EM current limits and changes cell delay, so a region running well above the signoff corner temperature makes EM and timing results optimistic there.
What To Check
thermal.tech_file(ICC2) set for the basic flow, or the compact model file for the compact flow.- Where the power profile came from, generated in memory or supplied, and whether it matches the scenario's activity.
- Heat transfer rate agreed with the package team.
- Peak temperature and hotspot location per scenario against the temperature used for signoff.
- Instances above the threshold, especially clock cells and high-current straps.
Command Checks & Actions
set_app_options -name thermal.tech_file -value thermal.techMandatory thermal technology file for the basic flow (file name illustrative).
set_app_options -name thermal.grid_resolution -value {50 50}A 50 um grid, finer than the {100 100} example, for smaller hotspots at more runtime.
set_app_options -name thermal.heat_transfer_rate -value {10000.0 0}Heat transfer rate; replace the example value with package-derived data.
analyze_thermalRuns thermal analysis and loads the thermal profile map into the GUI.
report_thermal_qor -threshold 35.9 -scenario FUNC_0.85V_SETUP -instanceLists instances above 35.9 C for that scenario (the guide example values).
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Peak 91 C against a 105 C junction limit and below the temperature EM and timing were checked at, hotspots over the expected high-power blocks, and a smooth gradient between them.
- Suspicious (illustrative): Peak within 10 C of the limit, or a hotspot over a cluster so small that the grid barely resolves it.
- Hard stop: Peak above the temperature used for timing and EM signoff, or results produced with the default heat transfer rate and no agreed package data.
Common Mistake
The Trap: Running analyze_thermal (ICC2) with every default and treating the map as signoff. The heat transfer rate is the example value, the power profile was generated in memory for a low-activity scenario, and a 100 um grid averages a 40 um compute hotspot into its neighbours, so the report shows 62 C where the package team's model later finds 94 C.
What The Interviewer Is Testing
- Knowing which option is mandatory and which are generated or defaulted.
- Understanding grid resolution as the accuracy and runtime knob.
- Connecting temperature to EM limits and timing corners.
Follow-up Question & Model Response
"How does the thermal result feed back into signoff?"
Candidate Model Response: The peak temperature per region tells you whether the temperature used for EM and timing signoff is actually conservative there. If a hotspot runs hotter than the corner, EM in that region must be checked at the higher temperature, and timing may need a hotter corner or extra margin for that region. Where the gap is large, the fix is usually spreading power, for example moving high-activity blocks apart, rather than adding metal. I rerun thermal after the fix and then redo EM at the new temperature.
Practical Example
Tapeout Scenario: A 5 mm² accelerator block (illustrative) runs Kelvin with the helios engine, a package-supplied heat transfer rate and a 50 um grid. Peak temperature is 97 C over the MAC array against a 105 C limit, and report_thermal_qor -threshold 90 -scenario func_turbo -instance (ICC2) lists 3,400 instances above 90 C. EM on the array's M2 rails was signed off at 85 C, so it is rerun at 100 C, and the worst ratio rises from 88% to 104%. Spreading two MAC tiles 60 um apart lowers the peak to 91 C, and EM checked at 95 C passes at 96%.
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