Networking Interface for Open Programmable Acceleration Engine: Intel FPGA Programmable Acceleration Card D5005

ID 683830
Date 11/04/2019
Public

5.3. Tuning Information

sysfs Tree

Before you proceed further, you must install and load the OPAE driver and tools. For more information, refer to the Intel Acceleration Stack Quick Start Guide: Intel FPGA ProgrammableAcceleration Card D5005.
Sysfs entries allow reading or writing to HSSI configuration and status registers (CSR):
/sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/
The HSSI sysfs tree is as follows:
  • qsfp<0/1>
    • ctrl HSSI_CTRL_QSFP<0/1> CSR: allows access to control registers
    • stat HSSI_STAT_QSFP<0/1> CSR: allows access to status registers
    • chan<0/1/2/3>: analog settings of each of the 4 transceiver channels per QSFP interface
      • tx_post_tap: Pre-emphasis 1st post-tap magnitude and polarity
      • tx_pre_tap: Pre-emphasis 1st pre-tap magnitude and polarity
      • tx_vod: TX output differential swing
      • tx_comp: TX Compensation

tx_post_tap

  • Use tx_post_tap sysfs entry to tune the transmitter pre-emphasis 1st post-tap magnitude and polarity.
  • Valid magnitude is between -24 and 24.
To evaluate the correct setting, refer to the Intel® Stratix® 10 H-tile Pre-Emphasis and Output Swing Estimator.
Example:
  1. Change directory to the desired QSFP interface and channel:
    $ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3>
  2. Read current tx_post_tap setting:
    $ cat tx_post_tap
    Output: 0
  3. Write new tx_post_tap magnitude and polarity, assume it as magnitude of 1 with positive polarity:
    $ sudo -- sh -c 'echo +1 > tx_post_tap'
  4. Verify that tx_post_tap:
    $ cat tx_post_tap
    Output: +1

tx_pre_tap

  • Use tx_pre_tap sysfs entry to tune the transmitter pre-emphasis 1st pre-tap magnitude and polarity.
  • Valid magnitude is between -15 and 15.
To evaluate the correct setting, refer to the Intel® Stratix® 10 H-tile Pre-Emphasis and Output Swing Estimator. Also, refer to the example under tx_post_tap.

tx_vod

  • Use tx_vod sysfs entry to tune the transmitter output differential swing.
  • Valid output swing level is between 17 (600 mV) and 31 (VCCT or Transmitter Power Supply Voltage)
To evaluate the correct setting, refer to the Intel® Stratix® 10 H-tile Pre-Emphasis and Output Swing Estimator.
Example:
  1. Change directory to the desired QSFP interface and channel:
    $ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3>
  2. Read current tx_vod setting:
    $ cat tx_vod
    Output: 31
  3. Write new tx_vod output, assume it as 29:
    $ sudo -- sh -c 'echo 29 > tx_vod
  4. Verify that tx_vod:
    $ cat tx_vod
    Output: 29

tx_comp

  • Use tx_comp sysfs entry to tune the transmitter compensation, which helps reduce the PDN induced ISI jitter when enabled.
  • Valid compensation value is either 0 (off) or 1 (on)
Example:
  1. Change directory to the desired QSFP interface and channel:
    $ cd /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/intel-pac-hssi.<1/2>.auto/qsfp<0/1>/chan<0/1/2/3>
  2. Read current tx_comp setting:
    $ cat tx_comp
    Output: 1
  3. TX compensation is currently enabled, let's turn it off:
    $ sudo -- sh -c 'echo 0 > tx_comp
  4. Verify that tx_comp:
    $ cat tx_comp
    Output: 0

Monitor dmesg for Errors

Example: Error in setting the transmitter output differential swing to 100
$ echo 100 > tx_vod
bash: echo: write error: Invalid argument

Check dmesg
$ dmesg
[ 7597.306591] intel-pac-hssi intel-pac-hssi.2.auto: Max VOD is 31
Example: Error in setting a legal tx_vod value
$ echo 31 > tx_vod
bash: echo: write error: Connection timed out

Check dmesg
$ dmesg
[ 7812.184357] intel-pac-hssi intel-pac-hssi.2.auto: timeout, HSSI ack not received

Check if the channel is held in reset
 $ cat stat
0x000f000f000f000f

Deaasert the reset
$ echo 0x0 > ctrl
$ cat stat0xf3c0f3c0f3c0f3c0