Synopsys IC Compiler II (ICC2) · stage 3 of 16

SDC, MMMC and timing environment

Sanity checks and commands for modes, corners, scenarios, SDC reads, clock definitions, constraint completeness and baseline timing.

6 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

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.

CardCheck and whenCommandHealthyReviewHard stop
T-01 Mode, corner and scenario inventory
After import
all_modes
all_scenarios
report_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_pvt
set_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_timing
report_constraints -max_transition
report_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_modesA collection of every mode.
all_scenariosA 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_modeThe 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_latencyClock latency constraint, used before CTS to model clock arrival.
report_clocks †Clock definitions, waveforms and generated clocks.
report_clock_timing -type skewClock 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_networkRemoves ideal marking. Run before CTS.
Conditions and layers
report_pvtProcess-voltage-temperature mismatches between libraries and corners.
set_parasitic_parametersAssociates 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_layersThe ignored-layer settings currently in force.
Checks and baseline
check_timing †Constraint warnings such as unconstrained endpoints, loops and clock problems.
report_timingThe worst timing paths of the current scenario.
report_constraints -max_transitionReports maximum transition violations. The options -min_capacitance and -max_capacitance report the capacitance limits.
report_global_timing †A slack summary by path group.