Manual Eye Scan:
UltraScale GTH and GTY allow a real-time, not disruptive Eye Scan. The user can at the same time receive data and check the equalized signal eye extension for a full BER and signal margin control, without missing a single bit.
Most of the information required can be found in (UG576) UltraScale and UltraScale+ GTH and (UG578) UltraScale and UltraScale+ GTY, RX Margin Analysis.
This Answer Record will guide you through a step-by-step simple case of running a Manual Eye Scan.
The Eye Scan feature is already implemented in IBERT, where a GUI helps with a simple customization of the Eye Scan, and IBERT drives the Eye Scan automatically.
However, some additional HDL is required to pair the Eye Scan feature with your design (this option is referred to here as Manual Eye Scan).
Because the Eye Scan engine is controlled by a few attributes mapped in the DRP space, most of the required code is just to take care of the DRP Read, Modify and Write operations.
For those designs where the DRP port is already used, this comes for free.
The ports required for the Eye Scan are listed in Table 4-18 of (UG576) and (UG578).
The following steps are required once before a Manual Eye Scan:
The following steps can be cycled during an Eye Scan sweep
The Manual Eye Scan can get very sophisticated, and can do the following:
It can also have different utilities to a plain Eye Scan, as will be shown later.
However, the atomic access to the Eye Scan will always step through the few simple passages given. There are many options to get to the same result; probably the more flexible is to let a microprocessor handle the Eye Scan.
A very fast Eye Scan could be developed entirely in HDL. (Xilinx Answer 64098) is a good example of a simple Eye Scan measurement realized with the ILA.
Flow diagram and step by step GTH Eye Scan
Once the transceiver is correctly set up and working, the basic Eye Scan goes through the measurement loop of the FSM. The FSM default startup state is WAIT.
By changing the ES_CONTROL[1:0] (the signals arm and run, respectively), from the WAIT state, run initiates the BER measurement loop (left) and arm starts the diagnostic loop (right). In this Answer Record only the measurement loop is explored.
The FSM automatically starts the error counting and the received samples counting. The counters are updated continuously, until one of the two counters reaches the saturation point. At this point the FSM reaches the state END.
We always have access to the FSM actual status by reading the ES_CONTROL_STATUS.
In the END status it is possible to read the counters and calculate the BER.
9 Steps for a BER measurement
The following step by step path should guide you to a single sample position error measurement in LPM mode, when the offset sampler is on 0V differential and +4/64 UI right offset.
By sweeping the offset sampler position inside the eye extension, the user can complete the Eye Scan. Please refer to the User Guide for the complete description of each attribute used.
Step 1: Be ready for the scan:
Step 2: Reset the GT. The GT should be up and running. Here for example, you configure the transmitter and receiver equalizers, run the reset sequences, wait for reset done, and check that buffers are not overflowing etc.. In this example the LPM mode is used.
Step 3: Before running the error counting, we need to tell the Eye Scan engine what to measure. This is well described in the User Guide, in the Eye Scan Architecture chapter.
Commonly, a statistical eye view uses the following:
Step 4: set the vertical offset. For example:
Step 5: set the horizontal offset position. For example, 4 taps to the right with respect to the data sampler:
Step 6: run the Scan by bringing the FSM to RESET and decide on the measurement loop:
Step 7: check that the FSM is in END status.
Step 8: when the FSM is in END status we can finally read the errors, the samples, and calculate the BER.
Step 9: bring back the FSM to WAIT status and cycle again.
Repeat for a different offset position starting from Step 5.