on-chip variation (OCV)
Picture two identical runners trained at the same gym, fed the same diet, given the same shoes. On paper they should finish a lap in exactly the same time. In practice one is always a hair faster, because no two bodies are truly identical down to the last fiber. The same thing happens to two supposedly identical timing paths sitting side by side on one die. Even after you've fixed a process corner — one global condition like slow-slow silicon, low voltage, hot temperature — tiny differences still vary from spot to spot across that single chip: a transistor's gate is a fraction of a nanometer longer here, the dopant atoms landed a little unevenly there, a wire etched slightly narrower, the supply rail sags a few millivolts in the middle of a busy block, one corner of the die runs warmer than another. On-chip variation (OCV) is the name for all that scatter that lives WITHIN one die, so two cells of the same type don't deliver exactly the same delay, and two matched paths don't run at exactly the same speed.
Why does this matter for signoff? Because a setup check pits the launch path that sends the data against the capture clock that catches it, and a hold check is even more brittle. If the data path happens to land on slightly slow silicon while the capture clock lands on slightly fast silicon, the gap closes and a path that looked safe at the corner can actually fail. The corner alone can't see this — it assigns one speed to the whole die. So signoff de-rates the timing on top of the corner: for a setup check it deliberately slows down the data path and the launching clock that carries it, and speeds up the capturing clock that sets the deadline (the directions flip for a hold check), each by a small derating factor, buying margin to absorb the worst plausible mismatch between the two. Crude flat OCV just multiplies every delay by a fixed percentage, which is pessimistic because it assumes every cell on a long path drifts the wrong way at once. Modern signoff is smarter: advanced OCV (AOCV) shrinks the derate as a path gets longer (random errors partly cancel) and as it gets physically shorter, while parametric/statistical OCV (POCV/SOCV, often via Liberty LVF data) gives each cell its own sigma and combines them statistically — so you pay only the margin you actually need.
The practical art is removing pessimism you don't deserve. Where the launch and capture clocks travel the same shared wires before they split, that common segment can't really be fast for one and slow for the other at the same instant, so the tool credits it back — this is common-path pessimism removal (CPPR, also called CRPR). The net effect is that OCV is the layer of safety margin you add BEYOND the corner to honor a simple truth: a single die is not uniform, and timing that closes only because both halves of a check were assumed identical will betray you in silicon.
For a setup check, flat OCV slows the data path and its launching clock and speeds up the capturing clock by a small factor, so the check survives the worst plausible on-die mismatch; AOCV/POCV replace this blunt number with path- and cell-specific margin.
OCV margin is intra-die scatter, not the same thing as a process corner (which is the global wafer-to-wafer, board-to-board PVT condition); you apply OCV derating on top of whichever corner you're signing off, and over-derating quietly throws away clock speed, so teams move from flat OCV to AOCV/POCV to claw that performance back.