What does the check_timing command do, and why should you run it before trusting any report?
From PDVerse STA Mentor Guide · pdVerse Mentor Guide
Short Answer
check_timing is a constraint sanity check: it scans the design and SDC setup for problems like endpoints that were never constrained, flops that have no clock reaching them, generated clocks whose source can't be found, and combinational loops.
Example
unclocked_registers : 3 flops <- CK pin has no clock -> UNTIMED (fix!) unconstrained_endpoints: 12 ports <- no output delay -> boundary unchecked no_input_delay : 5 ports <- inputs with no arrival reference generated_clocks : 1 warning <- gen clock source not found loops : 1 <- combinational loop needs breaking
Why It Matters
Under-constraint is silent and dangerous: a completely clean, all-green report_timing result on a design that was never fully constrained in the first place is meaningless, because paths that were never checked can't show up as violations either. check_timing is how you catch those silent gaps before you ever look at a single timing number.
Command
check_timingMentor Note — Common Mistake
Don't jump straight to reading report_timing results and celebrate a clean report. Always run check_timing first, since unclocked registers or unconstrained endpoints mean parts of your design were never actually being checked at all.
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising