L- and H-Tile Transceiver PHY User Guide

ID 683621
Date 12/04/2024
Public
Document Table of Contents

2.4.4.4.4. Scanning the Horizontal Eye Opening

To sweep the horizontal eye opening, perform these procedures:

  1. Set 0x144[2] to 0x0 and 0x156[0] to 0x0 to capture the zero crossing for the bottom half of the eye.
  2. Set 0x143[7:2] to 0x00 to set the vertical step to 0.
  3. If DFE is disabled 26, set 0x14D[0] to 0.
  4. If the DFE is enabled26, set 0x14D[0] to 0x1 to select positive speculation.
    1. If DFE_tap1_sign = 0, set 0x156[1] to 0x1.
    2. If DFE_tap1_sign = 1, set 0x156[1] to 0x0.
  5. If the targeted device is H-tile production or H-tile ES3:
    1. Set 0x100[4] to 1.
    2. Set 0x000[7:0] to 0x01 to request PreSICE to calibrate the ODI samplers.
    3. Read 0x481[2] until it becomes 0.
  6. Set 0x171[4:1] to 0xB to configure the Avalon® memory-mapped interface testmux.
  7. Define a floating point array with 128 members called ODI_error_count, and set all the values to 0.
  8. The L-tiles and H-tiles have two eyes: an odd eye and an even eye. You must capture both eyes. To start, set 0x157[3:2] to 0x2 to capture the odd eye.
  9. Create an integer called horizontal_phase and set it to 1. Repeat Step 10 through Step 23 while incrementing horizontal_phase until it becomes 128.
  10. Set 0x145[6:0] to the encoded phase in BER Resolution Settings, for example, 0x71 for horizontal_phase = 1.
  11. Set 0x168[2] to 0x0 to reset the serial bit counter.
  12. Set 0x168[2] to 0x1 to release the reset on the serial bit counter.
  13. Set 0x149[5:0] to 0x1C to be able to read the ODI status.
  14. Read 0x17E[1] 27 until it becomes 0x1 to indicate that the ODI has received the selected number of bits and has completed.
  15. Set 0x149[5:0] to 0x1B to read out the number of ODI error bits.
  16. Read 0x17E[7:0] 27, and save this value as an integer ODI_count_A.
  17. Set 0x149[5:0] to 0x1A.
  18. Read 0x17E[7:0] 27, and save this value as an integer ODI_count_B.
  19. Set 0x149[5:0] to 0x19.
  20. Read 0x17E[7:0] 27, and save this value as an integer ODI_count_C.
  21. Set 0x149[5:0] to 0x18.
  22. Read 0x17E[7:0] 27, and save this value as an integer ODI_count_D.
  23. ODI_error_count[horizontal_phase] = ODI_count_A * 224 + ODI_count_B * 216 + ODI_count_C * 28 + ODI_count_D + ODI_error_count[horizontal_phase]
    If the device is not H-tile production, ODI_error_count may be greater than the actual count by 1.
  24. Now, set 0x157[3:2] to 0x1 to capture the even eye, and repeat Step 9.
  25. Scan through the ODI_error_count array, find the phases that have no errors, and determine the left eye opening and right eye opening. Store the phases as left_phase and right_phase.
26 To determine DFE mode, read 0x161[6]. DFE is disabled when 0x161[6] = 1.
27 Wait 25 µs between setting register 0x149[5:0] and reading 0x17E or 0x17F.