AdvancedQuestion 39 of 63Source: Synopsys PrimeTime User Guide: Parametric On-Chip Variation (POCV)

How do you read a POCV Liberty variation table?

From PDVerse STA Mentor Guide · pdVerse Mentor Guide

Short Answer

A POCV Liberty variation table, such as an ocv_sigma_cell_rise (LIB) group, stores the standard deviation of a cell's delay as a function of input transition and output load, exactly the way a normal delay table stores the nominal delay itself, with a separate sigma_type of early or late for each direction of variation. PrimeTime looks up the sigma value for the arc's actual transition and load, then scales it by a corner multiplier - the K sigma value, 3 by default - to get the derate actually applied at each timing corner.

Technical Reference DiagramHow do you read a POCV Liberty variation table?
An ocv_sigma_cell_rise Liberty table indexed by input transition and output load, with a highlighted cell showing a sigma value of 0.00368ns, an arrow multiplying it by the default K sigma value of 3 to produce an applied margin of about 0.011ns on the cell's nominal delay

Technical Explanation

  • The table has the same shape as an ordinary delay table, but stores sigma instead of delay. ocv_sigma_cell_rise ("delay_template_7x7") { sigma_type: "early"; index_1(...); index_2(...); values(...); } (LIB) is indexed by input transition (index_1) and output load (index_2), just like a normal cell_rise table.
  • Two separate tables cover early and late variation. A sigma_type: "early" table and a sigma_type: "late" table for the same arc can hold different sigma values, because the amount of variation is not always symmetric between the fast and slow direction of the same cell.
  • The mean of the distribution is the cell's own nominal delay value. The sigma table only adds the spread around that nominal number - it does not replace or shift the nominal delay itself in the simplest, non-moment-based case.
  • A K sigma multiplier converts the raw sigma value into the margin actually applied. set_app_var timing_pocvm_corner_sigma K_value (PT) sets that multiplier, and PrimeTime's default is 3 sigma, meaning the applied margin is three standard deviations from the mean unless changed.
  • Reading a specific number off the table means finding the row and column that match the arc's real transition and load. The values block lines up with the crossed index_1/index_2 entries exactly like a normal delay table lookup, just returning a sigma instead of a delay.
  • LVF (Liberty variation format) tables measure sigma in absolute library time units, not as a percentage. A POCV side file, by contrast, measures variation as a coefficient of variation - standard deviation divided by nominal - which is a unitless, normalized number; the two formats are not interchangeable without converting one to the other.

Common Mistake

  • Reading the sigma value straight out of an ocv_sigma_cell_rise (LIB) table and treating it as the derate PrimeTime actually applies to that arc.
  • The table value is one standard deviation; the real applied margin is that sigma multiplied by the K corner-sigma value (3 by default), so the same table can produce very different effective derates depending on timing_pocvm_corner_sigma.
  • Cost: an engineer manually cross-checking a POCV-derated delay against the raw Liberty sigma table concludes the numbers don't add up, when the missing step is simply the corner-sigma multiplication.

Follow-up Question & Model Response

If a project changes timing_pocvm_corner_sigma from the default of 3 to 4.5 without touching the Liberty library at all, what happens to every POCV-derated setup and hold margin in the design, and why does this not require re-characterizing anything?

Candidate Model Response: Every POCV-derated margin gets more conservative, because the raw sigma values stored in the library tables are unchanged - only the multiplier applied to them changes, from three standard deviations to four and a half. This does not require re-characterization because the sigma tables describe the underlying variation once, as a library property, and the corner-sigma value is purely an analysis-time setting for how conservatively PrimeTime chooses to interpret that same variation data. In effect, raising the corner sigma is equivalent to deciding you want a higher-confidence, lower-probability-of-failure margin on every arc that has POCV data, without having to characterize a single new table.

Practical Example

A library's ocv_sigma_cell_rise table for a particular buffer, at an input transition of 0.0532 and an output load of 0.0221, interpolates to a sigma of about 0.00368 library time units (nanoseconds) in the sigma_type: "late" table. With the default timing_pocvm_corner_sigma of 3, PrimeTime applies an additional late-direction margin of roughly 3 times 0.00368, or about 0.011ns, on top of that arc's nominal cell delay. If the project later raises the corner sigma to 4, the same 0.00368 sigma value now contributes about 0.0147ns of margin instead - a roughly 34% increase in derate on that one arc, from a single application-wide setting change and no new characterization.

Complete STA Handbook

Get the complete 10-chapter STA handbook covering setup/hold margins, clock modeling, OCV/POCV, crosstalk noise, and PrimeTime closure.

Static Timing Analysis (STA) Handbook — ten chaptersSTA HandbookTen chapters on setup, hold, OCV, and PrimeTime signoff. →