Fundamentals / 10
Eye Diagrams: Construction and Interpretation
An eye diagram is every bit in a capture, drawn on top of every other bit. It is not a measurement so much as a way of looking at thousands of them at once — and the empty space in the middle is the margin your receiver has to work with, in both voltage and time simultaneously.
Why overlay the bits at all
If you have never seen an eye diagram before, the shape can look mysterious. It is not. The construction is mechanical, and once you see the three steps, the diagram stops being abstract and becomes the single most useful picture in signal integrity.
Step 1: transmit a long sequence of bits through the channel — a pseudo-random pattern that exercises every combination of ones and zeros. Step 2: at the receiver, chop the resulting waveform into slices exactly one bit period (one UI) wide. Step 3: stack all the slices on top of each other. Every possible transition — rising, falling, staying high, staying low — now overlaps in one picture. Where no trace enters, an opening appears. That opening is the eye, and it represents the room your receiver has to make a correct decision.
The vertical opening — the eye height — is the voltage margin. If noise, ISI, or crosstalk shrinks it below the receiver's sensitivity, bit errors follow. The horizontal opening — the eye width — is the timing margin. If jitter moves the sampling instant past that opening, the receiver samples the wrong bit. A good channel keeps both margins large; a bad one closes the eye from one direction or both.
A scope trace of a data stream is not much use. It is a long, irregular waveform, and the thing you actually want to know — will the receiver read every bit correctly? — is buried in it. You could check each bit individually, but there are billions of them.
So instead: cut the waveform into bit-length slices, line the slices up, and draw them all in the same place. Any transition that is going to happen has now happened somewhere in that picture. The region no captured trace enters is the observed opening for that population and those measurement settings. It estimates the voltage and timing room around the receiver's sampling decision; rare events outside the capture still need statistical treatment.
That is the whole idea. The eye is a way of asking one question about a whole population at once, and its power and its limits both come from that.
How it gets built
Take the waveform, recover the clock from it, chop it into unit intervals, and overlay them. Every possible transition — rising, falling, staying high, staying low — lands on the same picture. Where the traces avoid, an opening appears. That opening is the eye.
The unit interval is the whole horizontal axis, and it is short. At PCIe Gen 5's 32 GT/s a UI is 31.25 ps; at 16 GT/s it is 62.5 ps; an LPDDR5X data bit at 8533 MT/s occupies about 117 ps. Every picosecond of jitter is being spent out of a budget that small, which is why the horizontal axis is usually normalised to UI rather than quoted in absolute time.
- Eye height — vertical opening at the sampling instant. Voltage margin against receiver sensitivity and noise. Closed by loss, ISI, crosstalk and supply noise.
- Eye width — horizontal opening at the decision threshold. Timing margin. Closed by jitter of every flavour.
- The mask — a keep-out polygon in the middle. Compliance is binary: no trace may enter it. It encodes the receiver's real requirement, which is a combination of both margins rather than either one alone.
- Rise/fall and crossing level — asymmetry between the two crossings is duty cycle distortion, and it shows up directly as a narrower eye on one side.
Reading one in anger
The shape suggests where to look next. A symmetric reduction in opening is consistent with channel loss, but bandwidth, filtering, and noise must be checked as well. Distinct bands within the trace thickness are ISI, one band per pattern family, and counting them tells you how many bits of memory the channel has. A blurred, fuzzy edge with no structure is random noise. A periodic wobble in the crossing point is periodic jitter, and its frequency usually names its source — a switching regulator, a neighbouring clock, a PLL reference spur.
One habit worth keeping: always ask where the eye was measured. An eye at the transmitter pin, at the receiver pad, and after the receiver's equaliser are three different pictures of the same link, and modern serial standards deliberately allow the eye to be fully closed at the pad. A closed eye there is not a failure — it is the reason the receiver has a DFE.
Why this decides how your board behaves
The eye is where every other topic on this site arrives. It is the common currency, which is why it is worth knowing which impairment does what to it:
- Loss and ISI close it vertically and horizontally, and leave visible structure — distinct bands within the trace thickness. See ISI.
- Crosstalk adds a fuzzy, pattern-uncorrelated thickening that gets worse when neighbours are active and vanishes when they are quiet.
- Random jitter blurs the crossings with no structure, and it never stops getting worse with more samples — that is what makes it the reason the eye alone cannot answer a BER question.
- Supply noise moves the whole eye up and down, or modulates the crossing at the noise frequency. See PDN-induced jitter.
- Duty-cycle distortion makes alternate eyes different widths — an asymmetry between rising and falling crossings.
What to do about it
State where the eye was measured. An eye at the transmitter pin, at the receiver pad, and after the receiver's equaliser are three different pictures of the same link. Modern serial standards deliberately allow the eye at the pad to be completely closed — a closed eye there is not a failure, it is the reason the receiver has a DFE. An eye plot needs its reference plane stated before it can support an engineering conclusion.
Say how many symbols it contains. Margin read off an eye is margin at roughly the rate that eye can support, and no lower. See the note above — and the readout beside the panel, which states exactly that for the eye it just drew.
Use the shape to choose your next measurement, not to conclude. The eye is a diagnostic that points somewhere; it is rarely the last step. Structure says ISI, so go look at S21. Fuzz that tracks neighbour activity says crosstalk, so go turn the neighbours off. A periodic wobble says something is modulating you, so go find its frequency.
Match clock-recovery conditions before comparing eyes. The CDR's loop bandwidth decides how much low-frequency jitter it tracks out. Two eyes of the same signal with different recovery settings can differ by more than the design change being evaluated.
- Distinct bands inside the trace thickness. ISI, and the number of bands tells you how many bit periods of channel memory there are — two bands is one significant post-cursor, four is two.
- Fuzz that appears only when the neighbouring lanes are active. Crosstalk. It is the quickest discriminator there is: switch the aggressors off and watch it go.
- A periodic wobble in the crossing. Measure its frequency, then go looking for it — a switching regulator, a spread-spectrum clock, a PLL reference spur. Periodic its frequency can narrow the search to a switching regulator, spread-spectrum clock, or PLL reference spur.
- One eye wider than the next, alternating. Duty-cycle distortion, usually in the transmitter or the clock path rather than the channel.
- An eye that looks fine and a link that errors. Treat the observed errors as evidence that the visible eye has not captured the relevant tail or burst behavior. The eye mainly shows common cases; rare events may not appear in the plotted population.
Go deeper — what "eye height" actually measures, and the population problem
Eye height and width sound like properties of a picture, but every measurement of them rests on choices that must be stated before results from different measurements can be compared meaningfully.
- At which phase? Eye height is the vertical opening at one sampling instant, and moving that instant changes the answer. The usual convention is the phase that maximises the opening, which is what an adaptive receiver converges on — but a fixed-phase measurement will report less.
- At which threshold? Eye width is the horizontal opening at the decision level, and for an eye that is not vertically symmetric, the level you choose changes the width you get.
- Over what population? The opening is defined by the most extreme trace in the capture, so it depends on how long you captured for. This is the one that causes real trouble — see below.
The population problem. A capture of a million unit intervals has sampled 10−6 of the population that a BER 10−12 specification is asking about. The events that cause errors at that rate are six orders of magnitude rarer than anything in the picture. The visible eye edges are the common cases.
There is a clean way to state what a run does support. With zero errors observed in n symbols, the 95% upper confidence bound on the error rate is −ln(0.05)/n, or about 3/n — the rule of three. A million symbols evidences a BER better than about 3×10−6, and nothing stronger. To evidence 10−12 directly you need around 3×1012 symbols, which at 16 GT/s is several minutes per point and days for a curve.
That gap is why bathtub curves exist: measure where you can measure, fit a model whose tail behaviour you believe, and extrapolate — being explicit about which part is measured and which part is extrapolated. It is also why statistical channel simulation exists, which sidesteps the population question by computing the distribution directly rather than sampling it.
One more thing the eye cannot show. An overlay discards time order. Two channels with identical eyes can behave differently if one's errors are independent and the other's arrive in bursts, because forward error correction cares enormously about that distinction. The eye has thrown away exactly the information a FEC budget needs.
In the real world
The eye's real value is as a shared picture. It is the one artefact a signal integrity engineer, a validation engineer and a silicon architect all read the same way, and most of its use in practice is communication rather than measurement.
Which is also the reason to be disciplined about labelling it. An eye passed between teams without its reference plane, its symbol count and its clock-recovery settings is an image that different people will read as different claims — and the disagreements that follow are genuinely hard to unpick, because everyone is looking at the same picture and meaning different things by it.