F-Tile Architecture and PMA and FEC Direct PHY IP User Guide

ID 683872
Date 1/24/2024
Public
Document Table of Contents
Give Feedback

7.5.2. Modifying the Scripts

There are several variables inside the script, such as setting up the channel links, PRBS pattern, loopback mode, BER test duration, and the TX equalizer settings that you must modify based on your design configuration. You must set the values of these variables in the script before running the test. The following procedures describes the steps to modify the script for each test:

A. Modify the Script for Device Initialization and Toolkit Bring-Up

You must modify the device initialization script and update the device that are on the JTAG chain and point to the .sof that you have programmed.
  1. Open device_initialization.tcl script in any text editor.
  2. Make the following modifications to the device_initialization.tcl script:
    set path <sof-file-path>
    set result_dir <my_diretory>
    set device_die_name <device-name>
An example of the settings in the device_initialization.tcl script is shown in the following figure.
Figure 142. Device Initialization Settings
Note: If you are using the Windows platform, use the .sof file name instead of sof file path in step 2 above.

B. Modifying the Script to Run BER and Eye Measurement Tests

Refer to the Transceiver Toolkit Scripts table to select the Transceiver Toolkit script for your desired mode.
  1. Choose the script based on your design mode and open it in any text editor.
  2. Make the following modifications to the script:
    • Set 1 to enable the test you want to run as shown below:
      ############### Tests to run: 0 = bypass, 1 = run ############### 
      set run_ber_test 1
      set run_eye_test 0
    • Set up the test variables. There are six main variables that you need to modify in the link_test_parameters list in the script:
      • TX logical channel (index 0)
      • RX logical channel (index 1)
      • PRBS pattern (index 2 and 3)
      • Loopback mode (index 4)
      • TX and RX PMA settings (index 5 to 11)
      • Eye measurement settings (index 12 to 15)
      Note: Currently the Transceiver Toolkit only supports RX PMA auto-adaptation mode. You can leave the RX PMA settings to the default values.
      For example, if you want to run the BER test between TX channel 0 and RX channel 0, set both index 0 and index 1 to value 0. You can also link TX and RX channels in different physical channel locations. For example, to link TX channel 0 to RX channel 1, set index 0 to value 0 and index 1 to value 1. In order to link TX and RX channels with different physical locations, make sure you have an external loopback, either through a loopback cable or card on the board. An example of the link_test_parameters settings is shown below:
      ####################################################
      ###      Customize the test variable             ###
      ####################################################
      # The list_test_parameters' indexing :
      #   index 0 - TX Logical Channel
      #   index 1 - RX Logical Channel
      #   index 2 - TX PRBS Generator Pattern : 
      #             PRBS7,PRBS9,PRBS10,PRBS13,PRBS15,PRBS23,PRBS28,
      #              PRBS31,QPRBS13,PRBS13Q,PRBS31Q,SSPR,SSPR1,SSPRQ
      #   index 3 - RX PRBS Checker Pattern : PRBS7,PRBS9,PRBS10,PRBS13,
      #             PRBS15,PRBS23,PRBS28,PRBS31,QPRBS13,PRBS13Q,PRBS31Q,
      #             SSPR,SSPR1,SSPRQ
      #   index 4 - Loopback Mode : PMA TX to RX Buffer lbpk - "TX2RXBUF"
      #                           ; PMA TX to RX parallel lpbk  - "TX2RXPAR" 
      #                           ; PMA RX to TX parallel lpbk  - "RX2TXPAR"
      #   index 5 - TX Pre-Tap 2  :  {0 to 7}  
      #   index 6 - TX Pre-Tap 1  :  {0 to 15}  
      #   index 7 - TX Main Tap   :  {0 to 46}    
      #   index 8 - TX Post-Tap 1 :  {0 to 19}  
      #   index 9 - RX High Freq VGA Gain  :  {0 to 127}  
      #   index 10 - RX High Freq Boost  :  {0 to 63}  
      #   index 11 - RX DFE Data Tap 1   :  {0 to 63}    
      #   index 12 - Enabling the eye height test : Enable - "true"  ;
      #                                             Disable - "false"
      #   index 13 - Set the Bit Error Rate to measure Eye Height :
      #              Min - 1.0E-1  Maximum - 1.0E-12 
      #   index 14 - Enabling the eye width test :
      #              Enable - "true"  ;  Disable - "false"
      #   index 15 - Set the Bit Error Rate to measure Eye Width : 
      #              Min - 1.0E-1 Maximum - 1.0E-12
      
      set link_test_parameters {{0 0 "PRBS23" "PRBS23" "TX2RXBUF" "0" "0" "0" 
        "0" "0" "0" "0" "true"  "1.0E-4" "true" "1.0E-4"}
      						  {1 1 "PRBS9"  "PRBS9"  "TX2RXBUF" "0" "0" "0"
        "0" "0" "0" "0" "true"  "1.0E-4" "true" "1.0E-4"}}
      Note: The example above depicts the settings for two links only. If you want to run the test for four links, you have to add two more rows in the link_test_parameters list accordingly.
    • You must set the criteria to stop the BER test for a channel, either based on maximum error bits or the BER test duration. The following code shows an example on how to have the BER test stop after 6 seconds and displays the status of the link every 2 seconds. The max_error_bits indicates the maximum number of error bits encountered by the link. The test stops after reaching the maximum number of error bits even if the maximum run time of 6 seconds has not elapsed.
      ############### Setup link run length ###########################
      set max_error_bits 10 
      set max_run_time_in_seconds 6
      set checker_status_polling_interval_in_seconds 2

C. Modifying the Script to Run Autosweep Test

  1. Choose the script based on your design mode and open it in any text editor.
  2. Make the following modifications to the script:
    • Set up the test variables for TX and RX PMA sweep range. There are seven main variables you need to modify in the link_test_parameters list in this script:
      • TX logical channel (index 0)
      • RX logical channel (index 1)
      • PRBS pattern (index 2 and 3)
      • Loopback mode (index 4)
      • Input parameters (index 5 to 11)
      • Output metric (index 12 to 17)
      • BER test duration (index 18)
      For example, to add BER as the output metric, set index 12 to value 1 as shown below:
      ####################################################
      ###      Customize the test variable             ###
      ####################################################
      # The list_test_parameters' indexing :
      #   index 0 - TX Logical Channel
      #   index 1 - RX Logical Channel
      #   index 2 - TX PRBS Generator Pattern : PRBS7,PRBS9,PRBS10,PRBS13,
      #             PRBS15,PRBS23,PRBS28,PRBS31,QPRBS13,PRBS13Q,PRBS31Q,
      #             SSPR,SSPR1,SSPRQ
      #   index 3 - RX PRBS Checker Pattern : PRBS7,PRBS9,PRBS10,PRBS13,
      #             PRBS15,PRBS23,PRBS28,PRBS31,QPRBS13,PRBS13Q,PRBS31Q,
      #             SSPR,SSPR1,SSPRQ
      #   index 4 - Loopback Mode : PMA TX to RX Buffer lbpk - "TX2RXBUF"  
      #                            ; PMA TX to RX parallel lpbk  - "TX2RXPAR" 
      #                           ; PMA RX to TX parallel lpbk  - "RX2TXPAR"
      #   index 5 - TX Pre-Tap 2  :  {0 to 7}  if you put like 0:5 it 
      #             autosweeps the channel for each number start from 0 to 5
      #   index 6 - TX Pre-Tap 1  :  {0 to 15}  
      #   index 7 - TX Main Tap   :  {0 to 46}    0,1.5 0,5,6
      #   index 8 - TX Post-Tap 1 :  {0 to 19}  
      #   index 9 - RX High Freq VGA Gain  :  {0 to 127}  
      #   index 10 - RX High Freq Boost  :  {0 to 63}  
      #   index 11 - RX DFE Data Tap 1   :  {0 to 63}    
      #   index 12 - Adding BER matric :  "1"  ;  Disable - "0"
      #   index 13 - Adding total height measurement matric :
      #              Enable - "1"  ;  Disable - "0"
      #   index 14 - Adding eye width time matric :
      #              Enable - "1"  ;  Disable - "0"
      #   index 15 - Adding eye width UI matric : 
      #              Enable - "1"  ;  Disable - "0"
      #   index 16 - Extrapolarate Rate:
      #              Min - 1E-1  ;  Max - 1E-12 
      #   index 17 - Extrapolarate Width Rate: 
      #              Min - 1E-1  ;  Max - 1E-12 
      #   index 18 - BER test duration per case (seconds): Max 1E3
      
      set link_test_parameters {{0 0 "PRBS23" "PRBS23" "TX2RXBUF" "0:0" 
      "0:1" "0:1" "0:0" "0:0" "0:0" "0:0" "1" "0" "0" "0" "1e-4" "1e-4" "2" }
      						  {1 1 "PRBS10" "PRBS10" "TX2RXBUF" "0:0" 
      "0:1" "0:0" "0:0" "0:0" "0:0" "0:0" "1" "0" "0" "0" "1e-4" "1e-4" "2" }}
    • You can get the Autosweep test data in xml format. The command shown below is in the Autosweep script and you can change the file name and result directory to your own file name and directory.
      autosweep_get_data -outputfile <result-directory>/<file-name>.xml $autosweep_inst_id