Folding time: how thousands of bits become one picture
Imagine trying to judge a violinist's timing by listening to a four-hour concert end to end. Hopeless — the detail drowns in the duration. Now imagine a metronome that lets you stack every single bow-stroke on top of each other, all aligned to the same beat, so that good strokes pile up into a crisp shadow and the sloppy ones fray the edges. In one composite image you'd see the player's *consistency* at a glance. The eye diagram does exactly this for a high-speed serial link. A modern SerDes running at 32 Gb/s emits a fresh bit every 31.25 picoseconds — a unit interval, or UI. No screen can show you a billion bits in a row. So the instrument chops the long stream into single-UI slices and overlays them, all triggered to the same recovered clock edge, until tens of thousands of bit transitions are painted on top of one another.
Where the bits agree, the trace is dense and dark; where they wander, it smears into a fuzzy band. The result is a shape that looks startlingly like a human eye — two crossing points on the left and right where rising and falling edges pile up, and an open region in the middle. That open region is the whole point. It is the window of voltage and time inside which the receiver can confidently say *this bit is a 1* or *this bit is a 0*. The bigger and cleaner the opening, the easier the receiver's job. The narrower and more clogged it gets, the closer the link is to making mistakes.
one UI (e.g. 31.25 ps)
|<----------------->|
V ___________ <- logic 1 level
/ ^ \
/ | \
cross / EYE HEIGHT \ cross <- voltage margin (noise room)
pt \ (vertical) / pt
\ | /
\_____v_____/
<- logic 0 level
|<--------->|
EYE WIDTH (horizontal) <- timing margin (jitter room)
sample here -> + <- best sample point, eye centerTwo rooms: eye height versus eye width
Every eye diagram answers two different survival questions, and it pays to keep them separate in your head. Think of the receiver as a referee standing at the center of the eye, holding a stopwatch in one hand and a voltmeter in the other. The *vertical* opening — the eye height — tells the voltmeter how much room it has. The *horizontal* opening — the eye width — tells the stopwatch how much room it has. A link can die from running out of either, and the cures are completely different, so a good engineer always asks: is my eye short, or is it narrow?
Eye height is the *voltage margin*: how far the '1' level sits above the '0' level at the sampling instant, minus all the vertical fuzz. That fuzz is noise — and the unavoidable floor of it is thermal noise, the random jiggle of electrons that exists in every resistor and transistor above absolute zero, plus crosstalk from neighbouring lanes, power-supply ripple, and amplifier noise. The taller the eye relative to that noise, the better your signal-to-noise ratio at the decision point. If the eye is too short, the receiver's slicer can mistake a noisy '1' for a '0'. The fix lives in the *amplitude* domain: more swing, less noise, better gain.
Eye width is the *timing margin*: how wide the open horizontal window is, measured between the two crossing points where edges pile up. A receiver that samples dead-center has the maximum cushion on both sides before it hits an ambiguous edge. But the crossing points are not a single sharp line — they are a *band*, because real edges don't all arrive at exactly the same instant. That spread of edge arrival times is jitter, and it eats the eye horizontally from both sides. If the eye is too narrow, even a perfectly placed clock can drift into the fuzz. The fix lives in the *time* domain: cleaner clocks, less jitter, and the clock-recovery loop you'll build in rung 5.
Jitter: not all wobble is the same
Jitter sounds like a single villain, but it is really a small gang with very different personalities — and telling them apart is one of the most valuable skills in high-speed design. Jitter is simply the deviation of an edge from where the ideal clock says it *should* have arrived. The crucial split is between jitter that is bounded (it has a worst case you can name) and jitter that is unbounded (it has a long, thin tail that, given enough bits, will eventually exceed any limit you set). That distinction is not academic — it decides whether your link merely needs a bigger margin, or whether it will *never* be perfectly safe and must instead be judged statistically.
Deterministic jitter (DJ) is the bounded kind — it has identifiable, repeatable causes, so it never grows past a hard ceiling no matter how long you watch. The biggest contributor is the ISI from rung 2: a channel that smears bits makes an edge land early or late depending on the *pattern* of bits before it, which is data-dependent jitter. Other named culprits include duty-cycle distortion (the clock's high and low halves aren't equal) and periodic jitter from a nearby switching supply or coupled tone. Because DJ is bounded, you can budget for it: it widens the crossing band by a fixed amount and stops.
Random jitter (RJ) is the unbounded kind — it comes from genuinely random physical processes, above all thermal and flicker noise inside the transistors that generate and sample the clock. Random jitter is well-modelled as a Gaussian (bell-curve) distribution, and a Gaussian has *no* maximum: most edges land near the mean, but there is always a vanishingly small chance of a wildly early or late one. That is why we describe RJ not by a peak value but by its standard deviation, σ (sigma), in picoseconds rms. To turn that into a worst case you multiply by a factor for the BER you care about — reaching one-in-a-trillion errors means accounting for edges out at roughly ±7σ.
TOTAL JITTER (at a given BER)
= Deterministic (bounded) + Random (unbounded, scales with BER)
TJ(BER) = DJ + n(BER) * sigma_RJ
where n(BER) is a multiplier from the Gaussian tail:
BER = 1e-6 -> n ~ 9.5 (about +/- 4.75 sigma)
BER = 1e-9 -> n ~ 12.0 (about +/- 6.0 sigma)
BER = 1e-12 -> n ~ 14.0 (about +/- 7.0 sigma)
Eye WIDTH left for sampling = 1 UI - TJ(BER)
Example, 32 Gb/s, 1 UI = 31.25 ps:
DJ = 8 ps, sigma_RJ = 0.8 ps, target BER = 1e-12
TJ = 8 + 14.0 * 0.8 = 8 + 11.2 = 19.2 ps
eye width = 31.25 - 19.2 = 12.05 ps <- the timing room you keepFrom a closing eye to errors: the bathtub curve
We keep saying a closing eye means 'more errors' — now let's make that precise. The currency of a digital link is the bit-error rate (BER): the fraction of received bits that come out flipped. A BER of 1e-12 means roughly one wrong bit in a trillion — which, at 32 Gb/s, is *one error about every 31 seconds* if you let it ride. That sounds tolerable until you remember a data centre runs millions of such lanes; the industry standard target is 1e-12 (and 1e-15 for the most demanding links) precisely so the aggregate stays sane. The eye is the picture; BER is the consequence.
Now picture sweeping the receiver's sampling point *horizontally* across the UI and recording the BER at each position. Park the sample right at the eye's center and almost nothing goes wrong — you are far from any edge, BER plunges toward 1e-15 and below. Slide the sample toward either crossing point and you start clipping the jitter band, so errors climb. Slide it all the way onto an edge and you're sampling pure ambiguity — BER rockets to 1e-1, a coin flip. Plot BER (log scale) against sample position and the curve looks exactly like a cross-section of a bathtub: steep walls on both sides, a wide flat floor of safety in the middle.
BER
1e-0 | \ / | <- sampling on an edge
| \ / | = pure guess
1e-3 | \ / |
| \ / |
1e-6 | \ / |
| \ / |
1e-9 | \___ ___/ |
| \___ ___/ |
1e-12 |---------------\___________/----------------| <- BER target line
| ^_________^ |
1e-15 |________________| FLOOR |_________________|
0% 25% | 50% | 75% 100% of UI (sample position)
|<------->|
HORIZONTAL EYE OPENING at BER=1e-12
(this width is what equalization & CDR fight to widen)The bathtub is more honest than a raw eye picture, and here is why. A scope eye built from, say, a million bits simply has not lived long enough to *see* a one-in-a-trillion edge — the rare tails of random jitter are invisible at that sample count, so the eye looks more open than it really is. The bathtub *extrapolates* those Gaussian tails down to 1e-12 or 1e-15, drawing the walls inward to where errors would actually appear over hours of traffic. So the meaningful number is never 'the eye looks open'; it is 'the horizontal opening measured at the target BER'. That is the width every later technique is trying to grow.
Why the eye is the scoreboard for the rest of the track
Step back and see what you've just acquired: not a single fact, but an entire *measurement language*. From here on, every improvement we make to a SerDes link can be scored with the same three rulers — eye height, eye width, and the BER bathtub. That shared vocabulary is what makes the rest of the track feel like one coherent campaign instead of a pile of disconnected tricks.
- Rung 4 — equalization. A continuous-time linear equalizer, a feed-forward equalizer, and a decision-feedback equalizer all have exactly one job: undo the ISI that closed the eye in rung 2. You will judge each one by a single before/after picture — *how much did it pry the eye open?*
- Rung 5 — clock and data recovery. The receiver has no separate clock, so a feedback loop must place the sample point at the *center* of the eye you learned to read here — the bathtub floor. Its quality is measured as jitter tolerance: how much eye-closing wobble it can track before BER blows up.
- Higher rungs — PAM4 and link training. Pushing to four voltage levels stacks *three* tiny eyes where one used to be, slashing each eye's height and making the height/width tradeoff brutal. The link then *trains* its equalizers automatically, hunting the settings that maximize the measured eye. The eye is literally the cost function it optimizes.
So when a later lesson claims 'this equalizer bought 4 dB' or 'this CDR tolerates 0.3 UI of jitter', you now know exactly what that means and exactly where to look: at the eye, and at the bathtub width at 1e-12. You have the diagnostic lens. Everything that follows is about reshaping what you see through it — prying the eye back open after the channel did its worst.