What happens in PrimeTime if you forget to define a clock on a clock port?
From PDVerse STA Mentor Guide ยท pdVerse Mentor Guide
Short Answer
Without a create_clock (SDC) statement, the tool has no reason to treat that port as a clock at all โ it times signals through it as ordinary combinational logic, and every flip-flop it should be clocking shows up as having no clock.
Technical Explanation
The tool does not guess that a pin named CLK is special.
- No automatic detection: the tool only knows a pin is a clock because a
create_clock(SDC) statement names it โ a port calledCLKwith nothing defined on it is treated as a plain data signal. - What that does to downstream flip-flops: every register whose clock pin traces back to that undefined port has, from the tool's point of view, no clock at all, so no setup or hold check can be built for it.
- The signal still propagates as data: the tool will still compute an arrival time through the clock network as if it were logic, which produces a meaningless data-style delay number instead of a clock edge.
check_timing(PT) catches it: runningcheck_timingreports "there are N register clock pins with no clock" as a warning during theno_clockcheck, which is the fastest way to catch a missingcreate_clock.- Every downstream constraint depends on it existing first:
set_clock_uncertainty,set_clock_latency, andset_propagated_clock(all SDC) all reference a clock by name, so none of them can even be written correctly until the clock itself is defined.
Common Mistake
The Trap: assuming a missing clock definition will show up as an obvious setup or hold failure.
- A designer expects that if
create_clockwere forgotten, the report would be full of huge violations that are easy to spot. - Instead, the affected registers simply disappear from setup and hold reporting entirely โ no violation, no warning in
report_timing, and the omission survives until someone runscheck_timing(PT) and reads itsno_clockwarning.
Follow-up Question & Model Response
Why doesn't report_timing warn about the missing clock the way check_timing does? Candidate Model Response: report_timing (PT) only reports on paths it can actually build, and a register with no clock at its clock pin has no valid startpoint or endpoint for a clocked check, so there is no path to print in the first place. check_timing (PT) exists specifically to look for structural constraint gaps like this one, scanning every register's clock pin rather than waiting for a path to be requested. That is why running check_timing before trusting any report_timing output is standard practice.
Practical Example
An SDC file defines CLK_CORE and CLK_IO but a third clock port, CLK_DEBUG, is left out by mistake. check_timing (PT) reports "Warning: There are 12 register clock pins with no clock," pointing to every flip-flop on the debug domain that report_timing had silently skipped.
Complete STA Handbook
Master Signoff-Ready Static Timing Analysis
Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Continue practising