BeginnerQuestion 36 of 95

What does the check_timing command do, and why should you run it before trusting any report?

From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide

Short Answer

The check_timing (PT) command audits the loaded design and constraints for setup problems that would make slack reports meaningless โ€” unclocked registers, unconstrained ports, and combinational loops โ€” before you rely on any slack number it produces.

Technical Reference DiagramWhat does the check_timing command do, and why should you run it before trusting any report?

Technical Explanation

A clean-looking slack report proves nothing if part of the design was never actually checked in the first place, and check_timing (PT) is what catches that gap before it becomes a silent one.

  • Unclocked registers: flags any register whose clock pin never actually receives a clock, which means its data path was never timed at all.
  • Unconstrained ports: flags input or output ports missing set_input_delay (SDC) or set_output_delay (SDC), so their boundary paths were skipped rather than checked and passed.
  • Combinational loops: flags circular logic the tool had to break arbitrarily at some point just to compute a delay, which means that loop's true timing was never actually verified.
  • Clock relationship problems: flags clocks the tool could not resolve a fixed period relationship between, leaving some path pairs unanalyzed by default.
  • Why this matters more than any single slack number: a design can show zero violations purely because thousands of paths were silently excluded from analysis, not because those paths actually meet timing.

Common Mistake

The Trap: Treating a slack report with zero violations as proof the design meets timing, without ever running check_timing first.

  • A typo in a clock definition can leave thousands of registers with no clock reaching their clock pin at all.
  • Every one of those registers is simply absent from the slack report โ€” not passing, just never checked.

Follow-up Question & Model Response

How is check_timing different from check_design, since both sound like sanity checks?

Candidate Model Response: check_design is run earlier in the flow, in synthesis or place-and-route, not in PrimeTime โ€” it verifies netlist connectivity issues, such as unconnected pins, a net driven by more than one source, or floating inputs, problems with the circuit's structure rather than its timing. check_timing (PT) verifies the timing setup specifically: clocks, constraints, and whether every path actually has coverage. I would run both before trusting any report, since a structurally broken netlist can produce misleading timing results even if the constraints themselves look correct.

Practical Example

Running check_timing -verbose on a block ahead of signoff flags 340 registers under no_clock, traced back to a typo in a generated-clock name that left an entire sub-block's clock tree undriven. Fixing the typo and re-running the check clears the warning and, only then, surfaces roughly 60 real setup violations that had been silently invisible the whole time.

Complete STA Handbook

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
Static Timing Analysis (STA) Handbook โ€” ten chaptersSTA HandbookTen chapters on setup, hold, OCV, and PrimeTime signoff.