Why does create_clock need a period value, and what happens if you pick the wrong one?
From PDVerse STA Mentor Guide ยท pdVerse Mentor Guide
Short Answer
The period is what lets the tool compute a required time at all โ every setup check measures arrival time against one clock cycle length, so create_clock (SDC) cannot build a usable clock without it. Picking a period looser than the real target hides real violations; picking one tighter wastes design effort chasing margin nobody needed.
Technical Explanation
The period is not a label, it is the number every downstream setup and hold check is built from.
- What the period drives directly: the setup check's required time comes from adding one clock period to the launch edge, so a wrong period shifts every required time in that domain by the same wrong amount.
- Too loose hides real problems: a period set longer than the chip must actually achieve makes every path in that domain look like it has extra slack it will not really have once the chip runs at its intended speed.
- Too tight wastes real effort: a period set shorter than necessary forces synthesis and place-and-route to spend area, power, and schedule chasing margin that the actual product specification never required.
- The period should come from the real target, not a guess: the number belongs to the chip's specification โ a target clock frequency from the datasheet or system architecture โ converted into the library's time unit, not picked casually.
- A generated clock inherits the risk: because
create_generated_clock(SDC) derives its own period mathematically from the source clock's period, an incorrect source period propagates the same error into every generated clock built from it.
Common Mistake
The Trap: picking a comfortable, round period number instead of the number the product actually requires.
- A designer sets a clock period a little longer than needed "to be safe" early in the project, intending to tighten it later.
- The looser period never gets revisited, synthesis and place-and-route optimize to that easier target, and the chip is only found to be too slow for its real specification after silicon comes back.
Follow-up Question & Model Response
If the real target frequency changes late in the project, is updating create_clock's period enough by itself? Candidate Model Response: Updating the period is necessary but rarely sufficient by itself. Every setup and hold check in that domain, and every generated clock derived from it, is recomputed against the new number, so previously passing paths can immediately show new violations. The design usually needs another pass through synthesis or place-and-route optimization to actually meet the tighter number in real cells and wires, not just in the constraint file.
Practical Example
A product specification requires a 400MHz core clock, a 2.5ns period. A designer initially writes create_clock -period 3.0 [get_ports CLK] (SDC) "for margin," and the block reports comfortable slack throughout implementation โ until the constraint is corrected to 2.5ns and dozens of paths immediately go negative.
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