This stage covers building the multi-mode multi-corner timing environment: defining modes, corners and scenarios, reading SDC per scenario, checking clock definitions and constraint completeness, and recording a baseline timing report before placement.
Sanity check cheat sheet
One row per command card. Read left to right: the check, the command that answers it, then what a healthy result, a result to review and a hard stop look like.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| T-01 | Mode, corner and scenario inventory After import |
all_modesall_scenariosreport_scenarios † |
Every required mode, corner and scenario exists, with the names in the methodology. | A scenario defined but kept inactive, with a reason, for example a corner reserved for signoff. | A required scenario missing. Timing for that condition is then absent, not passing. |
| T-02 | Active scenarios and analysis roles After scenarios are defined |
report_scenarios †current_scenario |
Active scenarios, and their setup, hold, leakage and dynamic roles, equal the methodology list. | A scenario active for one role only, with a recorded reason. | A required scenario inactive, or a role flag that differs from the methodology. |
| T-03 | SDC read per scenario After scenarios are defined |
current_scenario <scenario>read_sdc <file.sdc> |
Each scenario read its released SDC, and the log shows no errors. | Warnings about objects the SDC names but the netlist lacks. | An SDC read into the wrong scenario, or an error during the read. |
| T-04 | Clock definitions After SDC read |
report_clocks †report_clock_timing -type skew |
Each clock in the specification appears with the expected period, source and waveform. | Extra virtual clocks used for I/O constraints. Confirm each is referenced. | A missing clock, a generated clock with the wrong master, or a period that differs from the specification. |
| T-05 | Constraint completeness After SDC read, and after any SDC change |
check_timing † |
No unconstrained functional endpoints; every functional input has a delay or drive, or a recorded reason. | Unconstrained test-only endpoints in a functional mode, if another mode covers them. | Unconstrained functional endpoints, a combinational loop, or a generated clock with no source. |
| T-06 | Ideal clocks and uncertainty before CTS Before clock tree synthesis |
report_ideal_network †set_clock_uncertainty -setup -rise -fall <v> [get_clocks <clk>] |
Clock networks are ideal as the methodology expects, and uncertainty equals the budget for this stage. | Uncertainty that differs between scenarios, with a recorded reason. | Ideal network still set after CTS, or uncertainty outside the methodology budget. |
| T-07 | Corner conditions and parasitics After scenarios are defined |
report_pvtset_parasitic_parameters |
Each corner has the expected process, voltage and temperature, and its parasitic data. | A corner using parasitic data shared with another corner, with a reason. | A corner with no parasitic data, or conditions that differ from the corner specification. |
| T-08 | Baseline timing and design rules Before placement |
report_timingreport_constraints -max_transitionreport_global_timing † |
Recorded as a baseline. The methodology decides whether any gap is acceptable at this stage. | Large negative slack on register-to-register paths, which may point to a constraint error. | None from slack alone. A hard stop comes from T-01 to T-05. |
Command cheat sheet
ICC2 commands. Angle brackets are placeholders, and values shown are examples, not project limits. A dagger (†) marks a command the notes behind this book do not fully cover; it is shown without options, so confirm it with man or help in your release.
| Modes, corners and scenarios | |
|---|---|
create_mode <mode> | A named functional mode. Changes the session; record it. |
create_corner <corner> | A named corner, holding temperature, voltage and parasitic conditions. Changes the session; record it. |
create_scenario -name <scn> -mode <mode> -corner <corner> | A scenario that pairs one mode with one corner. Changes the session; record it. |
all_modes | A collection of every mode. |
all_scenarios | A collection of every scenario. |
get_scenarios <scn> | The named scenario as an object, for use in other commands. |
report_scenarios † | Every scenario with its mode, corner and status. |
| Scenario status | |
current_scenario <scn> | Makes the scenario current, so a following SDC read or constraint applies to it. Changes the session; record it. |
set_scenario_status -active true [all_scenarios] | Activates every scenario. Changes the session; record it. |
set_scenario_status -leakage_power true -dynamic_power true [get_scenarios <scn>] | Marks the scenario for leakage and dynamic power optimisation. Changes the session; record it. |
current_mode | The mode that is currently active, useful in a loop over all_modes. |
| SDC and clocks | |
read_sdc <file.sdc> | Reads constraints into the current scenario. Run current_scenario first. |
create_clock -name <clk> -period <p> -waveform {<r> <f>} [get_ports <port>] | Defines a clock on a port. Add -add to keep existing clocks on the same source. |
set_input_delay -clock [get_clocks <clk>] -add_delay <v> [get_ports <port>] | An input delay relative to the clock. |
set_clock_uncertainty -setup -rise -fall <v> [get_clocks <clk>] | Clock uncertainty for setup, often used before CTS to model skew. |
set_clock_latency | Clock latency constraint, used before CTS to model clock arrival. |
report_clocks † | Clock definitions, waveforms and generated clocks. |
report_clock_timing -type skew | Clock skew. Useful only once clock trees exist. Other types are interclock_skew, latency and transition. |
| Ideal network | |
set_ideal_network [all_fanout -flat -clock_tree] | Marks the clock network as ideal before CTS. Changes the session; record it. |
remove_ideal_network | Removes ideal marking. Run before CTS. |
| Conditions and layers | |
report_pvt | Process-voltage-temperature mismatches between libraries and corners. |
set_parasitic_parameters | Associates parasitic technology data with a corner. Changes the session; record it. |
set_ignored_layers -min_routing_layer <m> -max_routing_layer <n> | The routing layer range used by estimation. Changes the session; record it. |
report_ignored_layers | The ignored-layer settings currently in force. |
| Checks and baseline | |
check_timing † | Constraint warnings such as unconstrained endpoints, loops and clock problems. |
report_timing | The worst timing paths of the current scenario. |
report_constraints -max_transition | Reports maximum transition violations. The options -min_capacitance and -max_capacitance report the capacitance limits. |
report_global_timing † | A slack summary by path group. |