ExpertQuestion 56 of 69

Why doesn't an ordinary set_timing_derate percentage automatically scale AOCV or POCV sigma values, and what option turns that behavior on?

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

Short Answer

By default, set_timing_derate (PT) affects only ordinary, flat cell and net delays โ€” it does not touch the separate statistical models AOCV and POCV use, because those models already carry their own, more detailed variation data and blending in a flat percentage on top would double up two different representations of the same physical variation. The -aocvm_guardband, -pocvm_guardband, and -pocvm_coefficient_scale_factor options exist specifically to adjust the AOCV or POCV models themselves, separately from the ordinary derate command's default scope.

Technical Reference DiagramWhy doesn't an ordinary set_timing_derate percentage automatically scale AOCV or POCV sigma values, and what option turns that behavior on?

Technical Explanation

  • set_timing_derate [factor] [-early|-late] [-cell_delay|-net_delay|-cell_check] (PT) is the ordinary flat-derate command, scaling delay values or check constraints by the given factor on the objects named.
  • By default this command's effect stops at ordinary delay and check derating โ€” it does not reach into AOCV table-based derates or POCV per-arc sigma values, which are computed through their own, separate statistical mechanism from their own library or side-file data.
  • -aocvm_guardband applies an additional margin specifically to the AOCV model's table-based derate, layered on top of what the AOCV tables already compute, rather than replacing them.
  • -pocvm_guardband and -pocvm_coefficient_scale_factor do the equivalent for POCV, adjusting the statistical sigma-based model with an additional guardband or a scale factor on its coefficients, again on top of the library's own characterized variation data.
  • Keeping these paths separate is deliberate: an ordinary flat derate is a coarse, one-size-fits-all margin, while AOCV/POCV models are meant to already capture distance- and arc-specific variation in detail โ€” automatically applying the flat number to the detailed model would flatten out the very granularity AOCV/POCV exists to provide.
  • report_timing_derate (PT) reports both kinds of setting together, but reading which mechanism is providing which number is important, because a flat derate change and a guardband change can look similar in a slack report while representing very different underlying adjustments.
  • What breaks: a team that wants to add signoff margin specifically to the AOCV/POCV model, but only issues an ordinary set_timing_derate command, sees no change to the AOCV/POCV-driven slack at all, because the command never reached the model it was meant to adjust.

Common Mistake

The Trap: Issuing an ordinary set_timing_derate percentage change and assuming it added margin to every derating mechanism active in the design, including AOCV and POCV, because the command name sounds general-purpose.

  • The flat derate change does apply, correctly, to any ordinary cell and net delays not covered by AOCV/POCV, so some paths do shift as expected, creating false confidence that the change was comprehensive.
  • Paths whose derate actually comes from the AOCV table or POCV sigma model show no change at all, and a margin review that assumed uniform coverage misses that those specific paths never received the intended extra guardband.

Follow-up Question & Model Response

"If I need extra POCV margin for one late-stage signoff pass, is -pocvm_guardband or -pocvm_coefficient_scale_factor the right choice?"

Candidate Model Response: -pocvm_guardband adds a fixed additional margin on top of the model's computed sigma-based derate, which is the more predictable choice when the goal is a known, bounded amount of extra conservatism for a specific signoff pass. -pocvm_coefficient_scale_factor instead scales the underlying coefficients the model uses, which changes the derate proportionally rather than by a fixed amount, and is better suited to a broader statement like "treat this library's characterized variation as less certain than assumed," rather than a one-time signoff guardband. For a single late-stage margin add with a known target number, the fixed guardband option is easier to reason about and to remove cleanly once its purpose has been served.

Practical Example

A team applies set_timing_derate 1.05 -late -cell_delay (PT) intending to add 5% margin across the board ahead of tapeout, then is confused when a set of known-POCV-driven paths in the clock tree show no slack change at all. Adding set_timing_derate -pocvm_guardband 0.05 -late (PT) instead shifts those same paths by the intended amount, confirming that the POCV sigma model, not the ordinary flat-derate path, was what needed adjusting for that part of the design.

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.