SDC, MMMC and timing-environment qualification
3.1 Stage purpose
Multi-mode multi-corner (MMMC) analysis lets one session time a design in several operating modes and several process, voltage, temperature and interconnect conditions at once. Innovus builds it from a small set of objects, shown in Figure 4. A library set groups the Liberty files of one condition. An RC corner describes interconnect extraction, including temperature. A delay corner combines a library set with an RC corner, and can carry further settings such as operating condition and SI. A constraint mode groups the SDC files of one functional or test mode. An analysis view pairs one constraint mode with one delay corner. Finally, set_analysis_view chooses which views are active for setup and which for hold. A view fixes a mode and a corner. It does not fix the analysis type, OCV style, CPPR or derates, which are set separately and checked in T-07.
The purpose of this stage is not to make timing pass. It is to make timing mean something. Thus, a design with large negative slack can pass this chapter, and a design with zero violations can fail it.
3.2 Entry prerequisites
| Must already be true | Why |
|---|---|
| Chapter 2 passed: every functional cell has a timing model | A cell with no arcs breaks paths before constraints are even read. |
| The methodology lists required modes, corners and which views are setup or hold | View coverage is checked against this list. |
| SDC files are the released versions for this netlist | Constraints refer to netlist object names. |
| RC corners name the correct extraction technology data, temperature and scale factors | A wrong corner shifts every wire delay, and pre-route slack depends on the scale factors. |
3.3 Relevant files and analysis context
The MMMC file, usually read through init_mmmc_file at import, holds the create commands. The SDC files belong to the constraint modes. Every report in this chapter must be run per view, or at least for every active view, and the view name recorded with the report. A report without a view name cannot be compared with anything.
Two properties of set_analysis_view deserve attention. It causes a full timing reset: interconnect parasitics, delays and slacks are recalculated. It is also not incremental. Each call must give the complete setup and hold lists, and optional settings such as leakage and dynamic views are reset if the call omits them. Changing an existing mode with update_constraint_mode resets timing, delay calculation and RC data in the same way. A check script should therefore read the active views and report them, not set them.
3.4 Checks and command cards
3.4.1 Pre-stage checks: is the environment complete?
| Question it answers | Are all required views defined, and are the right ones active for setup and for hold? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded with its MMMC file. |
| Legacy UI | report_analysis_views -type active all_setup_analysis_views all_hold_analysis_views all_analysis_views all_analysis_views -type inactive check_instance_library_in_views |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -type active limits the hierarchical report to the active views. Other values are all, setup and hold.all_analysis_views -type inactive lists the defined views that are not in use.check_instance_library_in_views checks that each instance has a library in the library set of every active view. |
| Scope and view | All views. |
| Effect on session | reads or reports only |
| Output | A hierarchical report of views, modes, delay corners, library sets and RC corners; Tcl lists of view names. |
| Fields that matter | View names, the mode and delay corner in each view, the setup and hold active lists, and the first view in each list, which is the default view. |
| Healthy | Active setup and hold lists equal the methodology list exactly. |
| Warning | A view defined but not active, with a reason, for example a corner kept only for later signoff. |
| Hard stop | A required view missing from the active list. Every timing result for that condition is then NOT EVALUATED, not PASS. |
| Common misuse | Reading the MMMC file instead of the session. A later set_analysis_view call that names only some views silently drops the rest. |
| Root cause and fix | Correct the set_analysis_view call or the MMMC file. |
| Rerun after a fix | Reload or reset views, then rerun every card in this chapter. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is every intended clock defined with the right period, waveform, source and uncertainty in every mode? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Constraints loaded. |
| Legacy UI | report_clocks -view <v> report_clocks -uncertainty_table -view <v> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -view reports the clocks of the named view. Run it once per active view, because modes can define different clocks.-uncertainty_table prints only the uncertainty table, for the late or early mode that is current. |
| Scope and view | One view per run. |
| Effect on session | reads or reports only |
| Output | Clock waveforms, sources, generated-clock relationships and uncertainty tables. |
| Fields that matter | Period, waveform, source pin, master clock of each generated clock, uncertainty. |
| Healthy | Every clock in the clock specification appears with the expected period and source. |
| Warning | Extra virtual clocks used for I/O constraints; confirm each is referenced. |
| Hard stop | A missing clock, a generated clock with the wrong master or source, or a period that differs from the specification. |
| Common misuse | Checking one view and assuming the others match. Test modes often redefine clocks. A clock with no set_clock_uncertainty is missing from the uncertainty table, so compare the table with the clock list for setup and hold. |
| Root cause and fix | Fix the SDC of the affected mode. |
| Rerun after a fix | Reload constraints for that mode; rerun T-02 and T-03. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Which endpoints are unconstrained, which inputs lack delays, and are there loops or clock problems? |
|---|---|
| Stage | After import, and again after any SDC change |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Constraints loaded. |
| Legacy UI | set timing_check_timing_report_all_checks true
set timing_report_check_timing_unconstrained_endpoints_due_to_constants true
check_timing -verbose -view <v> > <f>
check_timing -include_warning {clock_crossing missing_drive \
multiple_clock const_collision} -view <v> > <f> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | timing_check_timing_report_all_checks true makes check_timing list every check it performed, including those with no violation. By default, only check types with violations appear.timing_report_check_timing_unconstrained_endpoints_due_to_constants true turns on the uncons_endpoints_due_to_case_analysis warning, which is off until set.-verbose prints the objects behind each warning.-include_warning adds warning types that are off by default, such as clock_crossing, missing_drive, multiple_clock and const_collision.-view selects the analysis view. |
| Scope and view | One view per run. |
| Effect on session | changes analysis configuration; writes files |
| Output | Warnings by type with the pins and ports involved. |
| Fields that matter | uncons_endpoint, no_input_delay, partial_input_delay, no_drive, loop, no_gen_clock_source, ideal_clock_waveform, and the extra types requested. |
| Healthy | No unconstrained functional endpoints; every functional data input has a delay and a drive, or a recorded reason; no loops. |
| Warning | ideal_clock_waveform before clock tree synthesis and no_drive on clock ports are expected. Unconstrained test-only endpoints in a functional mode, if the test mode covers them. |
| Hard stop | Unconstrained functional endpoints, a combinational loop, or a generated clock with no source. |
| Common misuse | Running check_timing without the all-checks global and reading an empty report as clean. An empty report then only means no failing type, and does not show what was checked. Even a full list does not prove every endpoint was examined, because uncons_endpoint does not cover every cause of an unconstrained endpoint. T-05 covers the rest. |
| Root cause and fix | Add the missing constraint in the SDC; break loops in the netlist or with an approved constraint. |
| Rerun after a fix | Rerun T-03 after every SDC change, then T-05. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
By default, check_timing prints only the check types that found something. With timing_check_timing_report_all_checks set to true, it prints every check type it performed. Thus, the second form shows which checks ran and the first does not. It does not prove that every endpoint was examined, which is the job of T-05. A qualification script should set the global before the call and record that it did.
| Question it answers | Do case analysis and path exceptions disable exactly what the designer intended, and nothing else? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Constraints loaded. |
| Legacy UI | report_case_analysis -view <v> report_inactive_arcs -view <v> report_path_exceptions -ignored -view <v> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -view selects the view; case analysis differs by mode.-ignored reports only the path exceptions that timing analysis ignored. For example, a multicycle path on the same paths as a false path is ignored, because the false path has priority. |
| Scope and view | One view per run. |
| Effect on session | reads or reports only |
| Output | User case analysis table; disabled arcs with the reason; ignored exceptions. |
| Fields that matter | Pins with case values (netlist and propagated constants need -all or -propagated); arcs disabled by constants, set_disable_timing, library conditions or loop breaking; each ignored exception with the SDC file name and line number the report prints. |
| Healthy | Case values match the mode definition; every ignored exception has a recorded reason. |
| Warning | Disabled arcs from library conditions that the library vendor documents. |
| Hard stop | An ignored exception the designer relied on, so the paths follow a different, higher-priority exception. |
| Common misuse | Writing exceptions with wildcards that match more than intended, which no report flags as ignored because they did match something. report_path_exceptions covers false, multicycle, min and max delay exceptions only, not clock groups or set_disable_timing. |
| Root cause and fix | Go to the file and line the report names and remove or correct the overridden exception. Review wildcard exceptions with report_path_exceptions in its default form, which lists the applied ones. |
| Rerun after a fix | Rerun T-03 and T-04. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | Is the analysis type, OCV style, CPPR setting and derating the one the methodology requires? |
|---|---|
| Stage | After import |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Design loaded; views active. |
| Legacy UI | getAnalysisMode -analysisType -cppr -aocv -socv report_timing_derate |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -analysisType is single, bcwc or onChipVariation. The default is bcwc, which uses maximum delays for all paths in setup and minimum delays for all paths in hold.-cppr is none, both, setup or hold, and removes pessimism from clock paths that the launch and capture paths share.report_timing_derate prints the early and late derating factors per delay corner. |
| Scope and view | Session settings; derates per delay corner. |
| Effect on session | reads or reports only |
| Output | The current analysis modes and a derate table per delay corner. |
| Fields that matter | Analysis type, CPPR, AOCV and SOCV settings; early and late derates for clock and data. |
| Healthy | Analysis modes and derates equal the methodology list. |
| Warning | A derate that applies to one delay corner only, with a recorded reason. |
| Hard stop | Analysis type, CPPR or derates that differ from the methodology. |
| Common misuse | Assuming that identical views give identical slack. Two sessions with different analysis types or derates report different slack for the same views. |
| Root cause and fix | Set the analysis mode and derates in the flow script, not in an ad hoc command. |
| Rerun after a fix | Rerun T-07 and every slack report after any change. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
3.4.2 Post-stage checks: what does the timing actually cover?
Figure 5 explains why zero WNS and TNS are not proof of a correctly constrained design. Worst negative slack and total negative slack are computed over the checks that have a required time. An unconstrained endpoint has no required time, an untested check has no valid arrival or reference, and an arc disabled by case analysis carries no path. None of them can produce negative slack. In a real report the groups can overlap: a register data pin with no clock is both an unconstrained endpoint and an untested check. Thus, every slack summary in this book is reported together with the coverage numbers from T-05.
| Question it answers | How many timing checks are met, violated and untested, and why are the untested ones untested? |
|---|---|
| Stage | After constraints are clean |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Constraints loaded; T-03 clean. |
| Legacy UI | report_analysis_coverage -verbose untested -sort reason -view <v> > <f> report_analysis_coverage -view <v> report_timing -unconstrained -max_paths 20 -view <v> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -verbose untested adds the DETAILS table for untested checks, with a Reason column. Without it only the SUMMARY counts are printed.-sort reason orders the detail by reason.-view selects the view.-unconstrained reports unconstrained paths instead of the worst constrained ones.-max_paths limits how many paths are listed. |
| Scope and view | One view per run. |
| Effect on session | writes files. Some commands in this card only read or report. |
| Output | A SUMMARY of met, violated and untested checks by check type; with -verbose untested, also a DETAILS section with the reason for each untested check. |
| Fields that matter | Untested count and its reasons: const, false_path, no_endpoint_clock, no_startpoint_clock, user_disable, unknown. The Reason column can also read No data signal. |
| Healthy | Untested checks are all explained by intended constants, false paths or disables. |
| Warning | A small number of no_startpoint_clock or no_endpoint_clock checks on test logic, identified from the netlist or the DFT list. |
| Hard stop | Untested functional checks with reason no_endpoint_clock, no_startpoint_clock, no data signal or unknown. |
| Common misuse | Reporting WNS without this coverage, or treating untested as passed. The default report leaves out dynamic checks (set_max_delay, set_data_check) unless -include_dyn_checks is given, and an output port with no output delay has no check to count, so check_timing and report_timing -unconstrained are still needed. |
| Root cause and fix | Trace each unexplained reason to a missing clock or constraint (T-02, T-03); report_timing -debug unconstrained gives the reasons for unconstrained paths. |
| Rerun after a fix | Rerun T-05 for every active view. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
| Question it answers | What is the starting point for transition, capacitance, fanout and slack, so later stages can be compared with it? |
|---|---|
| Stage | Before placement |
| Product | Innovus Implementation. The reference entry names no separate licence requirement for this command. |
| Required state | Constraints clean (T-01 to T-05 and T-07). |
| Legacy UI | check_design -type timing -out_file <f>
report_constraint -all_violators \
-drv_violation_type {max_transition max_capacitance max_fanout} -view <v>
report_timing -late -max_paths 10 -view <v>
timeDesign -prePlace -outDir <dir> |
| Common UI | Not yet verified No Common UI form is printed. The provided files do not document one. |
|---|---|
| Mapping | Not established in the provided documentation |
| Options used | -all_violators lists every violating pin rather than a summary.-drv_violation_type restricts the report to the named design rule types.-late -max_paths reports the worst setup paths up to the given count.-prePlace runs timeDesign for the pre-placement stage. It ignores the net load while building the timing graph, uses ideal clocks, writes no DRV report files and sets the analysis mode to ideal clocks.-outDir names the report directory; the default is ./timingReports.-type timing runs the timing-setup integrity checks of check_design. |
| Scope and view | Per view for the reports. timeDesign gives a merged summary of the active views; per-view reports need -expandedViews, and views can be pruned. DRV reports run on setup views, because max_transition is not reported in hold mode. |
| Cost | In -prePlace mode timeDesign does not run early global route first, because it ignores the net load. It still analyses the whole design and writes reports, so run it deliberately. Later modes (-preCTS, -postCTS) do run early global route. |
| Effect on session | changes analysis configuration; writes files. Some commands in this card only read or report. |
| Output | DRV lists from report_constraint; path reports; a timeDesign report directory with setup reports per path group. |
| Fields that matter | DRV counts by type from report_constraint; WNS and TNS per path group (reg2reg, in2reg, reg2out, in2out; the last three merge into a default group when they are not defined), the number of violating paths. |
| Healthy | Recorded as a baseline. There is no pass threshold for pre-placement slack in this book; the methodology decides whether a gap is acceptable at this stage. |
| Warning | Large negative slack on reg2reg paths before any optimisation, which can point to a constraint error rather than a design problem. |
| Hard stop | None from slack alone at this stage. A hard stop comes from T-01 to T-05, not from pre-placement slack. |
| Common misuse | Comparing pre-placement slack with post-route slack as if they used the same interconnect model. They do not. Pre-placement DRV counts also ignore wire load, and design TNS is not the sum of per-view TNS. |
| Root cause and fix | Investigate large gaps by first confirming the constraint (T-02 to T-04). |
| Rerun after a fix | Rerun after any constraint change, and check getAnalysisMode before reading later reports. |
| Verification | Legacy syntax checked against the Innovus Legacy text reference. |
Before placement there are no wire lengths to extract. In -prePlace mode timeDesign ignores the net load while building the timing graph and uses ideal clocks, so the slack contains cell delay without wire load. Thus, pre-placement slack is a baseline for comparison, and its absolute value is not evidence.
3.5 Required reports, artefacts and how to read them
| Report | Per | Read for | Evidence class |
|---|---|---|---|
| report_analysis_views -type active | session | view list against methodology | implementation |
| report_clocks | view | periods, sources, generated clocks | implementation |
| check_timing with the all-checks global | view | unconstrained endpoints, inputs, loops | implementation |
| report_case_analysis, report_inactive_arcs | view | what is disabled and why | implementation |
| report_path_exceptions -ignored | view | exceptions overridden by a higher-priority one | implementation |
| report_analysis_coverage | view | met, violated and untested counts with reasons | implementation |
| report_constraint, report_timing, timeDesign -prePlace | view | baseline DRV and slack | preliminary |
check_timing -verbose -view func_slow ## all-checks global set TIMING CHECK STATUS COUNT clock_expected clean 0 ideal_clock_waveform reported 12 ## expected before CTS loop clean 0 no_input_delay reported 4 uncons_endpoint reported 310
This excerpt lists every check type, so it shows what was covered. The twelve ideal_clock_waveform lines are expected before clock tree synthesis. Four inputs without input delay and 310 unconstrained endpoints are not expected in a functional mode, and they are exactly the 310 endpoints that a WNS summary would not mention. In such a case, the status of T-03 is HARD STOP, whatever the slack says.
3.6 Healthy, suspicious and hard-stop examples
| Finding | Status | Why |
|---|---|---|
| Active views equal the methodology list | PASS | Every required condition is analysed. |
| Required hold view not active | HARD STOP | Hold for that corner is not evaluated at all. |
| ideal_clock_waveform reported before CTS | WARN / REVIEW | Expected at this stage; it must disappear after CTS. |
| Unconstrained functional endpoints | HARD STOP | Those paths have no required time. |
| Analysis type or derates differ from the methodology | HARD STOP | Slack is not comparable with the signoff basis. |
| Ignored exception the designer relied on | HARD STOP | The paths follow a different exception than the SDC suggests. |
| Untested checks all due to intended constants | PASS | Coverage is explained. |
| WNS 0.000 with untested reason unknown | NOT EVALUATED | The summary is not evidence until coverage is explained. |
| Large pre-placement reg2reg slack gap | WARN / REVIEW | Baseline only; confirm constraints first. |
3.7 Debugging, corrective action and reruns
Constraint problems should be fixed in the SDC that owns them, not by adding overriding commands later in the flow. An override in a later script makes the SDC and the analysis disagree, and the signoff tool will read the SDC, not the override. It is recommended to keep one SDC per mode as the single source, because both the implementation and signoff tools then see the same intent.
3.7.1 Worked example: clean-looking timing from incomplete constraints
Let us consider a block whose pre-placement summary reports WNS of 0.000 and TNS of 0.000 in the functional setup view. The first instinct is to call the constraints good. However, check_timing reports clock_expected and uncons_endpoint on the same registers, and report_analysis_coverage with -verbose untested shows 180 untested checks, 160 of them with reason no_endpoint_clock. Tracing one of them shows a register bank clocked from a divider output that has no create_generated_clock. The registers have no clock at their clock pin, so their setup checks never had a required time. After the generated clock is added, those 160 checks become tested, and twelve of them violate. The slack summary got worse, and the constraints got better. Thus, the order of checks in this chapter matters: coverage first, slack second.
3.8 Exit criteria and stage checklist
- Views. Active setup and hold views equal the methodology list.
- Clocks. Every specified clock exists with the expected period and source in every mode.
- Consistency. check_timing, run with the all-checks global, shows no unconstrained functional endpoints, no missing input delays or drives, and no loops.
- Modes. Case analysis and disabled arcs match the mode definitions.
- Exceptions. No ignored exception that the timing intent relies on; wildcard exceptions reviewed.
- Coverage. Every untested check has an intended reason.
- Analysis mode. Analysis type, CPPR and derates equal the methodology list.
- Baseline. DRV and slack baseline recorded per view, with the view name and stage.
Thus, the timing environment is qualified when coverage is explained, not when slack is met. If this gate is skipped, optimisation in later stages works hard on the paths it can see, and the paths it cannot see reach silicon untimed. The next chapter turns from logic to geometry, and checks the floorplan that placement will work inside.
3.9 Sanity check cheat sheet: SDC, MMMC and timing environment
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. Judge every row against your project budgets, because this book sets no universal limits.
| Card | Check and when | Command | Healthy | Review | Hard stop |
|---|---|---|---|---|---|
| T-01 | Active view coverage After import | report_analysis_views -type activeall_setup_analysis_views
all_hold_analysis_viewsall_analysis_views | Active setup and hold lists equal the methodology list exactly. | A view defined but not active, with a reason, for example a corner kept only for later signoff. | A required view missing from the active list. Every timing result for that condition is then NOT EVALUATED, not PASS. |
| T-02 | Clock definitions After import | report_clocks -view <v>report_clocks -uncertainty_table -view <v> | Every clock in the clock specification appears with the expected period and source. | Extra virtual clocks used for I/O constraints; confirm each is referenced. | A missing clock, a generated clock with the wrong master or source, or a period that differs from the specification. |
| T-03 | Constraint consistency and completeness After import, and again after any SDC change | set timing_check_timing_report_all_checks trueset timing_report_check_timing_unconstrained_endpoints_due_to_constants truecheck_timing -verbose -view <v> > <f> | No unconstrained functional endpoints; every functional data input has a delay and a drive, or a recorded reason; no loops. | ideal_clock_waveform before clock tree synthesis and no_drive on clock ports are expected. Unconstrained test-only endpoints in a functional mode, if the test mode covers them. | Unconstrained functional endpoints, a combinational loop, or a generated clock with no source. |
| T-04 | Modes, case analysis and exceptions After import | report_case_analysis -view <v>report_inactive_arcs -view <v>report_path_exceptions -ignored -view <v> | Case values match the mode definition; every ignored exception has a recorded reason. | Disabled arcs from library conditions that the library vendor documents. | An ignored exception the designer relied on, so the paths follow a different, higher-priority exception. |
| T-07 | Analysis mode and derates After import | getAnalysisMode -analysisType -cppr -aocv -socvreport_timing_derate | Analysis modes and derates equal the methodology list. | A derate that applies to one delay corner only, with a recorded reason. | Analysis type, CPPR or derates that differ from the methodology. |
| T-05 | Timing-check coverage After constraints are clean | report_analysis_coverage -verbose untested -sort reason -view <v> > <f>report_analysis_coverage -view <v>report_timing -unconstrained -max_paths 20 -view <v> | Untested checks are all explained by intended constants, false paths or disables. | A small number of no_startpoint_clock or no_endpoint_clock checks on test logic, identified from the netlist or the DFT list. | Untested functional checks with reason no_endpoint_clock, no_startpoint_clock, no data signal or unknown. |
| T-06 | Design-rule constraints and baseline timing Before placement | check_design -type timing -out_file <f>report_constraint -all_violators \
-drv_violation_type {max_transition max_capacitance max_fanout} -view <v>report_timing -late -max_paths 10 -view <v> | Recorded as a baseline. There is no pass threshold for pre-placement slack in this book; the methodology decides whether a gap is acceptable at this stage. | Large negative slack on reg2reg paths before any optimisation, which can point to a constraint error rather than a design problem. | None from slack alone at this stage. A hard stop comes from T-01 to T-05, not from pre-placement slack. |
3.10 Command cheat sheet: SDC, MMMC and timing environment
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| Command | What it produces |
|---|
| MMMC objects | |
|---|---|
create_library_set -name <ls> -timing {<libs>} | A named library set that delay corners can refer to. |
create_rc_corner -name <rc> -qx_tech_file <f> -T <temp> | A named RC corner with extraction technology data and temperature. |
create_delay_corner -name <dc> -library_set <ls> -rc_corner <rc> | A delay corner that pairs a library set with an RC corner. |
create_constraint_mode -name <m> -sdc_files {<sdc>} | A constraint mode built from one set of SDC files. |
update_constraint_mode -name <m> -sdc_files {<sdc>} | Replaces the SDC files of an existing mode and overwrites its previous settings. In MMMC this resets timing, delay calculation and RC data. |
create_analysis_view -name <v> -constraint_mode <m> -delay_corner <dc> | An analysis view: one mode with one delay corner. |
set_analysis_view -setup {<views>} -hold {<views>} | The active setup and hold views. Not incremental: both lists are required, and omitted views and any -drv, -leakage or -dynamic views are dropped. Causes a full timing reset. |
| View coverage | |
|---|---|
report_analysis_views | A hierarchical report of every defined view with its mode, corner, library set and RC corner. |
report_analysis_views -type active | The same report for the active views only. |
all_analysis_views | A Tcl list of every defined view. |
all_analysis_views -type inactive | The defined views that are not in use. |
all_setup_analysis_views | A Tcl list of the active setup views. |
all_hold_analysis_views | A Tcl list of the active hold views. |
all_constraint_modes -active | A Tcl list of the constraint modes used by the active views. |
all_delay_corners -active | A Tcl list of the delay corners used by the active views. |
all_rc_corners -active | A Tcl list of the RC corners used by the active views. |
all_library_sets | A Tcl list of every defined library set. |
get_analysis_view <v> -delay_corner | The delay corner of the view. |
get_analysis_view <v> -constraint_mode | The constraint mode of the view. |
get_constraint_mode <m> -sdc_files | The SDC files of the constraint mode, to confirm the released files are the ones loaded. |
get_library_set <ls> -timing | The timing libraries in the library set. |
check_instance_library_in_views | Instances whose library is missing from the library set of their power domain in the active views. |
report_instance_library -instance <i> -view <v> | The library, library file, operating condition and binding used for an instance in a view. |
| Units and operating conditions | |
|---|---|
get_time_unit | The session time unit, from the library or setLibraryUnit. Every report and constraint value uses it. |
get_capacitance_unit | The session capacitance unit, for example 1.000000pf. |
get_resistance_unit | The session resistance unit, for example 1.000000 kohm. |
report_design -view <v> | The operating conditions and active design rules for the view. |
| Clocks | |
|---|---|
report_clocks -view <v> | Clock waveforms, generated clocks and uncertainty for the view. |
report_clocks -description -view <v> | Only the waveform description of each clock. |
report_clocks -uncertainty_table -view <v> | Only the clock uncertainty table. It lists only clocks that have set_clock_uncertainty, and shows the late or early table for the current analysis mode. |
report_clocks -groups -view <v> | The existing clock groups. |
get_propagated_clock | Whether each clock is ideal or propagated. Before CTS, ideal is expected. |
report_clock_propagation -clock <c> -to <pins> -view <v> | The clocks that do not reach the given pins, and why. |
| Constraint consistency | |
|---|---|
set timing_check_timing_report_all_checks true | Makes check_timing list every check type it ran, not only failing ones. It shows which checks ran, not that every endpoint was covered. |
set timing_report_check_timing_unconstrained_endpoints_due_to_constants true | Enables the uncons_endpoints_due_to_case_analysis warning of check_timing, which stays off until this is set. |
check_timing -view <v> | Constraint warnings by type for the view: unconstrained endpoints, missing input delays, loops, clock problems. |
check_timing -verbose -view <v> > <f> | The same with the pins and ports behind each warning, written to a file. |
check_timing -type {clocks} -view <v> | Only the clock checks. |
check_timing -type {endpoints inputs} -view <v> | Only endpoint and input checks. |
check_timing -type {loops} -view <v> | Only combinational loops, with the arc used to break each loop. |
check_timing -include_warning {clock_crossing const_collision} -view <v> | Adds warning types that are off by default. |
check_design -type timing -out_file <f> | Timing-setup integrity checks. check_timing is still needed for full coverage. |
| Modes, constants and exceptions | |
|---|---|
report_case_analysis -view <v> | The pins and ports with set_case_analysis values. |
report_case_analysis -all -view <v> | Adds set_logic constants, netlist constants and constant-function outputs. |
report_case_analysis -propagated -view <v> | All constant pins, including propagated constants. |
report_inactive_arcs -view <v> | Timing arcs disabled by constants, set_disable_timing, library conditions or loop breaking (snipped arcs), with the reason. |
report_path_exceptions -view <v> | The applied path exceptions, with SDC file and line. |
report_path_exceptions -ignored -view <v> | The exceptions ignored because a higher-priority exception covers the same paths. |
report_path_exceptions -all -view <v> | Applied and ignored exceptions together. |
report_path_groups | Every path group and the paths it contains. |
report_ports -view <v> | The timing constraints on the ports, such as input and output delays, drive and load. |
report_timing_derate | The early and late derating factors for clock and data paths, per delay corner. |
| Analysis mode | |
|---|---|
getAnalysisMode -analysisType -cppr -aocv -socv | The current analysis type (single, bcwc or onChipVariation), CPPR, AOCV and SOCV settings. The default analysis type is bcwc. |
| Coverage and baseline | |
|---|---|
report_analysis_coverage -view <v> | Met, violated and untested check counts by check type. Reasons need -verbose untested. Dynamic checks such as set_max_delay are left out unless -include_dyn_checks is given. |
report_analysis_coverage -verbose untested -view <v> | The DETAILS table for the untested checks only, with the Reason column. |
report_analysis_coverage -exclude_untested const -view <v> | The coverage report without checks untested because of constants. |
report_analysis_summary -view <v> | A slack summary by path group (in2reg, reg2reg, reg2out, in2out) for the view. |
report_timing -unconstrained -max_paths 20 -view <v> | Paths with no timing requirement, which never appear in slack summaries. |
report_timing -late -max_paths 10 -view <v> | The worst setup paths for the view. |
report_timing -early -max_paths 10 -view <v> | The worst hold paths for the view. |
report_timing -late -path_type summary -view <v> | A one-line-per-path summary instead of full path detail. |
report_constraint -all_violators -view <v> | Every violating pin for design rule and timing constraints. |
report_constraint -all_violators -drv_violation_type {max_transition} -view <v> | Only the maximum transition violations. |
report_timing -debug unconstrained -view <v> | Reasons why paths are unconstrained. |
timeDesign -prePlace -outDir <dir> | Timing analysis before placement with the net load ignored and ideal clocks. No DRV report files or DRV numbers in this mode. Reports per path group in <dir>. |