Two transistors millimetres apart do not switch at the same speed. On-chip variation (OCV) models this with derating factors.
For a setup check, the launch clock and data paths are made slower (late derate, for example ×1.08) and the capture clock path faster (early derate, for example ×0.92). Hold reverses the early/late assignments.
Quantity | Nominal | Derated (setup) |
|---|---|---|
Launch clock + clk→Q + logic | 2.42 ns | × 1.08 = 2.614 ns (late) |
Capture clock latency | 0.80 ns | × 0.92 = 0.736 ns (early) |
Required time | 2.00 + 0.80 − 0.12 − 0.15 = 2.53 | 2.00 + 0.736 − 0.12 − 0.15 = 2.466 ns |
Slack | +0.11 ns | 2.466 − 2.614 = −0.148 ns |
The derate turns a passing path into a failing one. Before common-path correction, independent early/late assignments also introduce pessimism on the shared clock segment. The constructed tree below gives a 0.08 ns correction for this pessimism.
For static common-path variation, the shared physical clock buffers and wires cannot be both slow for launch and fast for capture in the same analysis. This does not imply identical delay on successive clock edges: temporal jitter and other time-dependent effects need separate treatment.
Follow the tree from the source to the split. Both checks contain the same physical trunk, but the independent worst-case setup calculation counts it late on launch and early on capture. For this simple static flat-derate model, that creates 0.08 ns of artificial relative-clock penalty. The two branches after the split are different physical paths, so their early/late difference is not canceled.
Common clock path delay (shared trunk): 0.50 ns
CRPR = 0.50 x (1.08 - 0.92) = 0.08 ns
Slack after pessimism removal = -0.148 + 0.08 = -0.068 nsThe result is still negative. A design that looks fine without derates can fail with them, and the gap is real margin the chip needs.
Quantity | Calculation (ns) |
|---|---|
Launch clock, late | 0.50 x 1.08 + 0.12 x 1.08 = 0.6696 |
Data clk-to-Q + logic, late | (0.35+1.45) x 1.08 = 1.9440 |
Data arrival | 0.6696+1.9440 = 2.6136 |
Capture clock, early | 0.50 x 0.92 + 0.30 x 0.92 = 0.7360 |
Setup required | 2.00+0.7360-0.12-0.15 = 2.4660 |
Raw slack | 2.4660-2.6136 = -0.1476 |
Shared-trunk correction | 0.50 x (1.08-0.92) = +0.0800 |
Corrected slack | -0.1476+0.0800 = -0.0676 (still fails) |
This reproduces the rounded -0.068 ns result above. Setup time and uncertainty were held fixed for this teaching example; a signoff flow uses the library checks and variation settings appropriate to its analysis view.
For a constructed flat-OCV hold example using the same clock tree and derates, take nominal clk-to-Q=0.30 ns and minimum logic=0.10 ns, with hold=0.06 ns and hold uncertainty=0.05 ns held fixed. Hold uses an early launch/data path and a late capture path. It still adds the removable shared-clock pessimism to slack.
Hold quantity | Calculation (ns) |
|---|---|
Earliest data arrival | (0.50+0.12+0.30+0.10) x 0.92 = 0.9384 |
Latest hold requirement | (0.50+0.30) x 1.08+0.06+0.05 = 0.9740 |
Raw hold slack | 0.9384-0.9740 = -0.0356 |
Corrected hold slack | -0.0356+0.0800 = +0.0444 |
0.25 x (1.08-0.92)=0.04 ns. Only the actual common segment qualifies; separate branches cannot be added to it just because they happen to have equal nominal delays.
Because the pessimism comes from treating the same physical clock buffers and wires as late for launch and early for capture. The data path exists only on the launch side; there is no shared segment to cancel.
A flat derate punishes deep paths most. Depth-aware and statistical methods remove some of that pessimism.
Method | Idea | Effect |
|---|---|---|
OCV (flat derate) | One factor for all paths | Simple, pessimistic for long paths |
AOCV (advanced) | Derate depends on logic depth and distance: deeper paths average out variation | Less pessimism for deep paths, more for shallow ones |
POCV / LVF | Per-cell statistical sigma | Most accurate; needs library support |
An illustrative AOCV late-derate table (the numbers are made up to show the shape):
Logic depth | Late derate |
|---|---|
1 | 1.15 |
5 | 1.09 |
20 | 1.05 |
The 0.08 ns trunk correction uses a constructed flat-OCV tree. The AOCV derate table is made up to show its shape. Use the correction reported by the approved signoff flow.