Test 52-20. linkretrainonretryfail – Teledyne LeCroy Protocol PCI Express Script Automation Test Tool User Manual
Page 43

Teledyne LeCroy
PCI Express Script Automation Test Tool User Manual
39
3.2.1.5 Test 52-20. LinkRetrainOnRetryFail
ASSERTIONS COVERED: DLL.5.2#2, DLL.5.2#7
The intent of this test is to ensure that the link connected to the DUT goes into retraining after trying and failing for
REPLAY_NUM of times to get a TLP through. It also tests that the retry buffer and link states are not changed
while in retraining and that the pending TLP is retransmitted after link retraining completes.
Trainer Stimulus: link_52-20_LinkRetrainOnRetryFail.peg
Recording Options: link_layer.rec
Verification Scripts: link_52-20_LinkRetrainOnRetryFail.pevs
Test Algorithm:
1. Issue command to the Driver to clear all error status bits for the Root or Switch port to which the Device
Emulator is attached.
2. Main test stage. Do the following:
a. Issue command to the Driver to perform 1-DWORD Memory Write to the Device Emulator.
b. Switch to the 'Disable' ACK/NAK policy.
c. Wait (with timeout) for the link to be retrained as a result of Memory Write TLP to be sent
REPLAY_NUM + 1 times.
d. Switch back to the 'Automatic' ACK/NAK policy.
e. Acknowledge the TLP that comes after link retraining.
3. Issue command to the Driver to reflect the current values of the Error Reporting Registers for the port to
which the Device Emulator is attached (using Configuration Writes).
Pass/Fail Criteria:
Test should successfully progress though all test stages.
All test stages should be executed without protocol violations.
Verify that:
a) The link did not change its state, and the Memory Write TLP is sent after the retraining is complete (that the
DATA_BUF contains the correct data). If not, treat it as DUT failure (DLL.5.2#7).
b) The DUT set the ERR_CORR bit in its Device Status register. If not, treat it as DUT failure (DLL.5.2#2).
c) The DUT did not set any error bits in the Advanced Uncorrectable Error Status register (if implemented).
d) The DUT set the “REPLAY_NUM Rollover Status” bit in the Advanced Error Reporting Correctable Error Status
register (if implemented). If not, treat it as DUT failure (DLL.5.2#2).
e) The DUT set the “Correctable Error Received” bit in the Root Error Status register (if implemented and
applicable).
If the DUT meets all these criteria, the DUT passes the test.