Skip to content
Ch 03 / 16 Chapter 3: SDC, MMMC and timing-environment qualification
CHAPTER 3

SDC, MMMC and timing-environment qualification

A timing report is only as good as the environment behind it. This chapter checks that every required mode and corner is active, every clock is defined, every endpoint is constrained, and every exception does what its author meant, before any slack number is trusted.

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.

InputsCorner objectsAnalysis viewsActive setlibrary setss_lib (.lib list)RC cornerrc_worst, T = 125library setff_lib (.lib list)RC cornerrc_best, T = -40SDC filesfunc.sdc, scan.sdcdelay cornerdc_slowdelay cornerdc_fastconstraint modesfunc, scanview func_slowview scan_slowview func_fastview scan_fasteach view = one mode + one delay corner-setupfunc_slowscan_slow-holdfunc_fastscan_fastset_analysis_viewnames illustrative
Figure 4. MMMC objects and how they combine
Read it. Read left to right. Two library sets and two RC corners make two delay corners. The SDC files make two constraint modes, and the amber bus shows that each mode feeds views. Four views result, and set_analysis_view activates the slow ones for setup and the fast ones for hold. Names and the pairing are illustrative. Which corners are hold views is decided by the methodology.

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 trueWhy
Chapter 2 passed: every functional cell has a timing modelA cell with no arcs breaks paths before constraints are even read.
The methodology lists required modes, corners and which views are setup or holdView coverage is checked against this list.
SDC files are the released versions for this netlistConstraints refer to netlist object names.
RC corners name the correct extraction technology data, temperature and scale factorsA 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?

T-01Active view coverage
Question it answersAre all required views defined, and are the right ones active for setup and for hold?
StageAfter import
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDesign 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 UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewAll views.
Effect on sessionreads or reports only
OutputA hierarchical report of views, modes, delay corners, library sets and RC corners; Tcl lists of view names.
Fields that matterView 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.
HealthyActive setup and hold lists equal the methodology list exactly.
WarningA view defined but not active, with a reason, for example a corner kept only for later signoff.
Hard stopA required view missing from the active list. Every timing result for that condition is then NOT EVALUATED, not PASS.
Common misuseReading 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 fixCorrect the set_analysis_view call or the MMMC file.
Rerun after a fixReload or reset views, then rerun every card in this chapter.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
T-02Clock definitions
Question it answersIs every intended clock defined with the right period, waveform, source and uncertainty in every mode?
StageAfter import
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateConstraints loaded.
Legacy UI
report_clocks -view <v>
report_clocks -uncertainty_table -view <v>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewOne view per run.
Effect on sessionreads or reports only
OutputClock waveforms, sources, generated-clock relationships and uncertainty tables.
Fields that matterPeriod, waveform, source pin, master clock of each generated clock, uncertainty.
HealthyEvery clock in the clock specification appears with the expected period and source.
WarningExtra virtual clocks used for I/O constraints; confirm each is referenced.
Hard stopA missing clock, a generated clock with the wrong master or source, or a period that differs from the specification.
Common misuseChecking 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 fixFix the SDC of the affected mode.
Rerun after a fixReload constraints for that mode; rerun T-02 and T-03.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
T-03Constraint consistency and completeness
Question it answersWhich endpoints are unconstrained, which inputs lack delays, and are there loops or clock problems?
StageAfter import, and again after any SDC change
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateConstraints 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 UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewOne view per run.
Effect on sessionchanges analysis configuration; writes files
OutputWarnings by type with the pins and ports involved.
Fields that matteruncons_endpoint, no_input_delay, partial_input_delay, no_drive, loop, no_gen_clock_source, ideal_clock_waveform, and the extra types requested.
HealthyNo unconstrained functional endpoints; every functional data input has a delay and a drive, or a recorded reason; no loops.
Warningideal_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 stopUnconstrained functional endpoints, a combinational loop, or a generated clock with no source.
Common misuseRunning 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 fixAdd the missing constraint in the SDC; break loops in the netlist or with an approved constraint.
Rerun after a fixRerun T-03 after every SDC change, then T-05.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Why the global matters

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.

T-04Modes, case analysis and exceptions
Question it answersDo case analysis and path exceptions disable exactly what the designer intended, and nothing else?
StageAfter import
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateConstraints loaded.
Legacy UI
report_case_analysis -view <v>
report_inactive_arcs -view <v>
report_path_exceptions -ignored -view <v>
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewOne view per run.
Effect on sessionreads or reports only
OutputUser case analysis table; disabled arcs with the reason; ignored exceptions.
Fields that matterPins 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.
HealthyCase values match the mode definition; every ignored exception has a recorded reason.
WarningDisabled arcs from library conditions that the library vendor documents.
Hard stopAn ignored exception the designer relied on, so the paths follow a different, higher-priority exception.
Common misuseWriting 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 fixGo 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 fixRerun T-03 and T-04.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
T-07Analysis mode and derates
Question it answersIs the analysis type, OCV style, CPPR setting and derating the one the methodology requires?
StageAfter import
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateDesign loaded; views active.
Legacy UI
getAnalysisMode -analysisType -cppr -aocv -socv
report_timing_derate
Common UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewSession settings; derates per delay corner.
Effect on sessionreads or reports only
OutputThe current analysis modes and a derate table per delay corner.
Fields that matterAnalysis type, CPPR, AOCV and SOCV settings; early and late derates for clock and data.
HealthyAnalysis modes and derates equal the methodology list.
WarningA derate that applies to one delay corner only, with a recorded reason.
Hard stopAnalysis type, CPPR or derates that differ from the methodology.
Common misuseAssuming that identical views give identical slack. Two sessions with different analysis types or derates report different slack for the same views.
Root cause and fixSet the analysis mode and derates in the flow script, not in an ad hoc command.
Rerun after a fixRerun T-07 and every slack report after any change.
VerificationLegacy syntax checked against the Innovus Legacy text reference.

3.4.2 Post-stage checks: what does the timing actually cover?

Timing items in one setup view, illustrative counts, shown as separate groups9,420 met: the only part a WNS/TNS summary describes310 unconstrained endpointscheck_timing (uncons_endpoint), report_timing -unconstrained180 untested checksreport_analysis_coverage, untested reasons90 disabled by case analysisreport_case_analysis, report_inactive_arcsWNS = 0.000 and TNS = 0.000 can be true while some checks were never timed.Endpoints, checks and arcs are different units, so the groups are not additive and can overlap.
Figure 5. What a clean timing summary does not show
Read it. The green part is everything a WNS or TNS number describes. The three coloured slices never produce a slack value, and each needs its own report to be seen. The slices count different units and can overlap, so they are not added together.

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.

T-05Timing-check coverage
Question it answersHow many timing checks are met, violated and untested, and why are the untested ones untested?
StageAfter constraints are clean
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateConstraints 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 UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewOne view per run.
Effect on sessionwrites files. Some commands in this card only read or report.
OutputA 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 matterUntested 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.
HealthyUntested checks are all explained by intended constants, false paths or disables.
WarningA small number of no_startpoint_clock or no_endpoint_clock checks on test logic, identified from the netlist or the DFT list.
Hard stopUntested functional checks with reason no_endpoint_clock, no_startpoint_clock, no data signal or unknown.
Common misuseReporting 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 fixTrace 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 fixRerun T-05 for every active view.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
T-06Design-rule constraints and baseline timing
Question it answersWhat is the starting point for transition, capacitance, fanout and slack, so later stages can be compared with it?
StageBefore placement
ProductInnovus Implementation. The reference entry names no separate licence requirement for this command.
Required stateConstraints 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 UINot yet verified No Common UI form is printed. The provided files do not document one.
MappingNot 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 viewPer 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.
CostIn -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 sessionchanges analysis configuration; writes files. Some commands in this card only read or report.
OutputDRV lists from report_constraint; path reports; a timeDesign report directory with setup reports per path group.
Fields that matterDRV 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.
HealthyRecorded 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.
WarningLarge negative slack on reg2reg paths before any optimisation, which can point to a constraint error rather than a design problem.
Hard stopNone from slack alone at this stage. A hard stop comes from T-01 to T-05, not from pre-placement slack.
Common misuseComparing 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 fixInvestigate large gaps by first confirming the constraint (T-02 to T-04).
Rerun after a fixRerun after any constraint change, and check getAnalysisMode before reading later reports.
VerificationLegacy syntax checked against the Innovus Legacy text reference.
Pre-placement interconnect

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

ReportPerRead forEvidence class
report_analysis_views -type activesessionview list against methodologyimplementation
report_clocksviewperiods, sources, generated clocksimplementation
check_timing with the all-checks globalviewunconstrained endpoints, inputs, loopsimplementation
report_case_analysis, report_inactive_arcsviewwhat is disabled and whyimplementation
report_path_exceptions -ignoredviewexceptions overridden by a higher-priority oneimplementation
report_analysis_coverageviewmet, violated and untested counts with reasonsimplementation
report_constraint, report_timing, timeDesign -prePlaceviewbaseline DRV and slackpreliminary
Reading check_timing with all checks listedSynthetic report, not tool output
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

FindingStatusWhy
Active views equal the methodology listPASSEvery required condition is analysed.
Required hold view not activeHARD STOPHold for that corner is not evaluated at all.
ideal_clock_waveform reported before CTSWARN / REVIEWExpected at this stage; it must disappear after CTS.
Unconstrained functional endpointsHARD STOPThose paths have no required time.
Analysis type or derates differ from the methodologyHARD STOPSlack is not comparable with the signoff basis.
Ignored exception the designer relied onHARD STOPThe paths follow a different exception than the SDC suggests.
Untested checks all due to intended constantsPASSCoverage is explained.
WNS 0.000 with untested reason unknownNOT EVALUATEDThe summary is not evidence until coverage is explained.
Large pre-placement reg2reg slack gapWARN / REVIEWBaseline 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.

CHAPTER 3 SANITY CHECKS

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.

CardCheck and whenCommandHealthyReviewHard stop
T-01Active view coverage
After import
report_analysis_views -type active
all_setup_analysis_views all_hold_analysis_views
all_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-02Clock 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-03Constraint consistency and completeness
After import, and again after any SDC change
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>
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-04Modes, 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-07Analysis mode and derates
After import
getAnalysisMode -analysisType -cppr -aocv -socv
report_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-05Timing-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-06Design-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.
CHAPTER 3 CHEAT SHEET

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.

CommandWhat 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_viewsA hierarchical report of every defined view with its mode, corner, library set and RC corner.
report_analysis_views -type activeThe same report for the active views only.
all_analysis_viewsA Tcl list of every defined view.
all_analysis_views -type inactiveThe defined views that are not in use.
all_setup_analysis_viewsA Tcl list of the active setup views.
all_hold_analysis_viewsA Tcl list of the active hold views.
all_constraint_modes -activeA Tcl list of the constraint modes used by the active views.
all_delay_corners -activeA Tcl list of the delay corners used by the active views.
all_rc_corners -activeA Tcl list of the RC corners used by the active views.
all_library_setsA Tcl list of every defined library set.
get_analysis_view <v> -delay_cornerThe delay corner of the view.
get_analysis_view <v> -constraint_modeThe constraint mode of the view.
get_constraint_mode <m> -sdc_filesThe SDC files of the constraint mode, to confirm the released files are the ones loaded.
get_library_set <ls> -timingThe timing libraries in the library set.
check_instance_library_in_viewsInstances 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_unitThe session time unit, from the library or setLibraryUnit. Every report and constraint value uses it.
get_capacitance_unitThe session capacitance unit, for example 1.000000pf.
get_resistance_unitThe 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_clockWhether 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 trueMakes 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 trueEnables 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_groupsEvery 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_derateThe early and late derating factors for clock and data paths, per delay corner.
Analysis mode
getAnalysisMode -analysisType -cppr -aocv -socvThe 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>.