Why does constraint variation (setup and hold sigma) need its own enable on top of POCV, and what goes wrong if you forget it?
From PDVerse STA Mentor Guide, part of the pdVerse Mentor Guide
Short Answer
Parametric on-chip variation (POCV) models delay variation on cell and net arcs by default, but not automatically the variation of the setup and hold requirements themselves. That needs a separate enable, timing_enable_constraint_variation, plus library data in Liberty variation format (LVF). Forget it and the tool compares a distribution of arrival times against a fixed, zero-variation requirement โ an inconsistent and optimistic model.
Technical Explanation
POCV replaces older flat or table-based derating with statistical, per-arc sigma values applied to delay โ but delay is only one side of a setup or hold check.
- What POCV covers by default. POCV's per-arc sigma modeling applies to cell and net delay arcs โ both data path and clock path delays get variation from the library's characterized standard deviations.
- What it does not cover automatically. The setup and hold requirement itself comes from the library's own constraint arcs, and PrimeTime does not vary those by default.
- The separate enable.
set_app_var timing_enable_constraint_variation true(PT) turns on variation for setup and hold constraints. To fold in slew-dependent variation on the same constraint arcs,timing_use_slew_variation_in_constraint_arcs(PT) takessetup_hold,setup,hold, ornoneโ defaultnone, so it is off unless requested. - Why it needs a library, not just a switch. The libraries in use must carry constraint and slew variation data in Liberty variation format (LVF) โ a library can have delay-arc sigma without constraint-arc sigma, since they are separate characterization efforts.
- What forgetting it does. With the enable off, the setup or hold requirement is a fixed, zero-variation number while the arrival time compared against it carries a full distribution โ an inconsistent model.
- Why that is optimistic, not just imprecise. A flop's own setup and hold times vary with process like any library value, so ignoring their sigma understates the requirement's true spread, which can mask a real, marginal violation.
- How you verify it is on.
report_ocvm -type pocvm(PT) on the flop's constraint arcs confirms the LVF sigma tables are loaded, and checking the two app-var settings confirms the enable is actually active for that run. - Why this is easy to miss in a signoff review. A run with constraint variation disabled produces a completely normal-looking, fully-populated timing report โ there is no missing data or error message, just a requirement number that quietly never moves regardless of corner or sigma level, which is not an obvious thing to notice unless someone specifically compares it against the arrival side's distribution.
Common Mistake
The Trap: enabling POCV for delay (timing_pocvm_enable_analysis (PT)) and assuming setup and hold checks are automatically "fully statistical" as a result.
- Delay-side POCV and constraint-side variation are two separate enables with two separate library data requirements โ turning one on says nothing about the other.
- A signoff run can look fully statistical in its reports while quietly comparing a real distribution against a stale, deterministic requirement number.
Follow-up Question & Model Response
"If a library has delay-arc LVF data but no constraint-arc LVF data, what happens when you turn on timing_enable_constraint_variation anyway?"
Candidate Model Response: Turning the app var on has no effect for cells drawn from that library, because there is no sigma data on the constraint arcs for the tool to apply โ the setup and hold requirements for those cells stay at their nominal, zero-variation value regardless of the setting. report_ocvm -type pocvm (PT) on those cells would show no constraint-arc variation data present, which is the signal to go back to the library team rather than assume the enable alone fixed the modeling gap.
Practical Example
A 7 nm library's D flip-flop has a nominal setup time of 42 ps with an LVF constraint sigma of 3.5 ps. With timing_enable_constraint_variation (PT) left at its default false, the tool checks arrival time against a flat 42 ps requirement, and a path reports +6 ps setup slack. Turning it on with timing_use_slew_variation_in_constraint_arcs setup_hold (PT) folds in the requirement's own 3.5 ps sigma at the signoff confidence level, effectively widening the requirement to roughly 49 ps at three sigma โ enough to flip that same +6 ps slack negative, revealing a marginal violation the deterministic requirement had been hiding.
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.
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.

Continue practising