GT PRBS test case description¶
The goal of this test case is to allow verification of GT transceivers on Alveo™ cards at 25GbE lane rates. The 4 lanes of the GT transceiver are tested simultaneously.
This compute unit (CU) is composed by PRBS-31 generator & checker which sends & verifies 66b data at 25GbE rate. It’s possible to inject a single error any lane. The PRBS checker compares the incoming 66b to a newly created 66b PRBS based on the previous data received.
To increase robustness to error, the PRBS checker, once in lock, uses a reference PRBS and compare incoming data with this free-running generated reference PRBS. This reference PRBS is synced with the incoming data if there are less than 10% of error during the comparison. If there are more than 6 errors between the reference PRBS and the received 66b of data, the reference PRBS is resync to the data. The SW can disable the usage the reference PRBS.
GT PRBS CU block diagram¶
GT test set up¶
GT testing can be achieved by using one of the following methods:
The use of a QSFP passive electrical loopback module. The module must be compliant to 100GbE (25GbE per lane) and have 0 dB insertion loss. This is the preferred method, the GTs having been validated using a QSFP28 module provided by MultiLane (ML4002-28-C5).
Note
This module also has the capability of providing a QSFP temperature reading and a programmable power dissipation up to 5W. However, these are not required to pass the GT tests.
The use of a QSFP optical module with suitably connected fiber loopback. The module must be compatible with the traffic rate being tested.
Note
This is an active component the electrical interface between the GTs and the module will need to be validated to ensure optimum performance.
In addition, GT testing can be achieved by:
The use of a protocol analyzer with a compatible electrical or optical interface. This is the most complex method of connection as not only will the interfaces require validation with the GTs, the RX and TX paths will be independent.
GT settings¶
As there are multiple ways to connect to the GTs, two default configurations have been defined:
module
: For loopback module and active optical cable. Loopback module is an electrical track from TX to RX. It’s the shortest path you can get between Tx and Rx (and still going out of the FPGA). An active optical cable terminates the electrical TX track at the optic module input. It also has the electric RX track from the optic module output. Resulting in electrical track length twice the size compared to the loopback module. From experience, it has no major impact and GT settings can be common for these 2 types (loopback module or active optical cable).
cable
: For copper cable.
The selection is made using the gt_settings
member, by default module
settings are selected.
Each mode defines values for the following GT transceiver settings (see UltraScale Architecture GTY Transceivers User Guide (UG578)):
tx_differential_swing_control
tx_pre_emphasis
tx_post_emphasis
gt_tx_polarity
gt_loopback
rx_equaliser
The actual values are defined in the platform definition JSON file and are also displayed in the xbtest.log
file with message ID CMN_021
.
It’s possible to overwrite these settings for all lanes (included into global_config
) or selectively for some lanes (part of lane_config
).
Warning
When connected to switch, using a wrong setting for one single lane might result in traffic interruption on all lanes. The switch might try to reset its whole module because it sees that a link is down.
Main test steps¶
A test is generally composed of four steps and a definition of the hardware environment (see GT PRBS test JSON members). The following are typical test steps:
Configuration.
Clear status.
Run.
Report/check status.
Test parameters¶
The mandatory test configuration parameters are listed below. For more information, see GT PRBS test JSON members.
Status¶
GT PRBS CU provides per lane the following status:
PRBS error detected since the last clear.
The quantity of 66b word received (and an approximate rate computation based on the test duration)
In case of error, the quantity of erroneous 66b word is also reported and its percentage representation.
Null PRBS seed received.
Null PRBS seed used during PRBS generation.
GT PRBS test JSON members¶
Here is an example of GT PRBS test cases.
Some test JSON members can be overwritten for each lane using the test JSON member lane_config
which child members are lane indexes.
Electrical/optical loopback example¶
"gt_prbs": {
"0": {
"global_config": {
"test_sequence": [
{ "duration": 1, "mode": "conf_25gbe" },
{ "duration": 1, "mode": "clear_status" },
{ "duration": 60, "mode": "run" },
{ "duration": 1, "mode": "check_status" }
]
}
}
}
Definition¶
The following table shows all members available for this test case. More details are provided for each member in the subsequent sections.
Member |
Lane override |
Mandatory / optional |
Description |
---|---|---|---|
No |
Mandatory |
Describes the sequence of tests to perform. |
|
No |
Optional |
Disable the usage of reference free running PRBS |
|
No |
Optional |
Selects the GT default configuration. See GT JSON Member. |
|
Yes |
Optional |
Select the Driver Swing Control. See GT JSON Member. |
|
Yes |
Optional |
Select Transmitter pre-cursor TX pre-emphasis control. See GT JSON Member. |
|
Yes |
Optional |
Select Transmitter post-cursor TX pre-emphasis control. See GT JSON Member. |
|
Yes |
Optional |
Select TX Polarity. See GT JSON Member. |
|
Yes |
Optional |
Select RX Equalizer. See GT JSON Member. |
|
Yes |
Optional |
Select GT internal loopback. See GT JSON Member. |
test_sequence
¶
Mandatory. Describes the sequence of tests to perform. Tests are performed serially, and a failure in one test does not stop the sequence (the next test will be launched). There is no limitation to the length of the test sequence.
This field contains a list of tests, each test being defined by an object of key–value parameters pairs: [ {}, {}, {} ]
.
The following table defines the parameters supported in the GT MAC test sequence:
Member |
Mandatory / optional |
Description |
---|---|---|
|
Mandatory |
The duration of the test in seconds; Range [1, 232-1]. |
|
Mandatory |
Mode of the compute unit. See the following table. |
Possible value |
Description |
---|---|
|
Apply the settings specified in the configuration parameters to the GT hardware. |
|
Read and clear the CU status registers, but ignore the values returned in the counters.
It is intended to be used after a |
|
Enable the PRBS checker. |
|
Read the CU status registers. Check for any error If an error is detected the overall test will be flagged as a fail. |
|
Initiate a reset of the GT wizard TX and RX paths. |
|
Insert a single PRBS error for lane <idx>: e.g. |
An example of a test_sequence is:
"test_sequence": [
{ "duration": 1, "mode": "conf_25gbe" },
{ "duration": 1, "mode": "clear_status" },
{ "duration": 60, "mode": "run" },
{ "duration": 1, "mode": "check_status" }
]
This will:
Apply the configuration to the GT, wait for 1 seconds.
Wait for 1 seconds then clear the status registers.
Start the PRBS term and wait for 60 seconds.
wait for 1 second before reading the status registers and check the results. Then, clear the status registers.
disable_ref_prbs
¶
Optional;
Type : boolean;
Possible values: true
or false
;
Default : false
This configuration will be applied to the four lanes simultaneously.
When false
the reference free running PRBS will be used to compare with incoming data (once locked and if error rate is below 10%).
When true
the reference PRBS is never used and incomings data is always used to predict the next one.
GT settings test JSON members¶
For the 3 types of GT test cases, the GT settings can be defined in a similar manner
For the 4 lanes simultaneously: part of the
global_config
Select one of the pre-defined configurations (
gt_settings
). The various configurations are stored in the platform definition file (see Platform definition).Overwrite any settings of the selected configuration.
For each lane individually: overwrite any settings of the selected configuration. Part of the
lane_config
If required, these settings are simply added to your test JSON file within your test case definition. Here is an example with global selection, but it also includes global and per-lane specific overwrites.
"gt_mac / gt_prbs / gt_lpbk": {
"0": {
"global_config": {
"gt_settings": "module",
"gt_rx_use_lpm": true
},
"lane_config": {
"0": {
"gt_rx_use_lpm": false,
"gt_tx_diffctrl": 11
},
"1": {
"gt_tx_main_cursor": 80
},
"2": {
"gt_tx_pre_emph": 2,
},
"3": {
"gt_tx_post_emph": 3,
}
}
}
}
More info can be found here: GT Settings. Further details on each of settings can be found in UltraScale architecture GTY transceivers user guide (UG578).
gt_settings
¶
Optional;
Type : string;
Possible values: module
or cable
;
Default : module
.
It selects the GT configuration from the platform definition file (see Platform definition). This configuration applies to all lanes of the GT.
gt_tx_diffctrl
¶
Optional;
Type : integer;
Possible values: from 0
to 31
;
Default : defined in the platform definition JSON file (see Platform definition).
This parameter sets the TXDIFFCTRL
input to transmitter.
gt_tx_pre_emph
¶
Optional;
Type : integer;
Possible values: from 0
to 31
;
Default : defined in the platform definition JSON file (see Platform definition).
This parameter sets the TXPRECURSOR
input to transmitter.
gt_tx_post_emph
¶
Optional;
Type : integer;
Possible values: from 0
to 31
;
Default : defined in the platform definition JSON file (see Platform definition).
This parameter sets the TXPOSTCURSOR
input to transmitter.
gt_tx_polarity
¶
Optional;
Type : string;
Possible values: normal
or inverted
;
Default : normal
.
When set to normal
, TXP is positive, and TXN is negative.
When set to inverted
, TXP is negative, and TXN is positive.
gt_rx_use_lpm
¶
Optional;
Type : boolean;
Possible values: false
or true
;
Default : defined in the platform definition JSON file (see Platform definition).
When set to false
, the GTY transceiver to use the DFE receive equalizer.
When set to true
, the GTY transceiver to use the LPM receive equalizer.
gt_loopback
¶
Optional;
Type : string;
Possible values: disable
, near end pma
or near end pcs
;
Default : disable
.
This controls the GT internal loopback.
Output file¶
No result file is created by the GT PRBS test case.