This stage checks that the MMMC timing environment is complete and consistent before the design is constrained further: active view coverage, clock definitions, constraint completeness, case analysis and exceptions, the analysis mode, timing-check coverage, and the design-rule constraint baseline 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 | Active view coverage After import |
report_analysis_views -type activeall_setup_analysis_viewsall_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_clocksreport_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 or a drive, or a recorded reason; no loops. | 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 relied on, so the designer follows 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 \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. |
Command cheat sheet
Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.
| 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 for the view. 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>. |