The Aurora 64B/66B core example design for duplex mode incorporates a hardware reset
FSM to perform repeated resets and monitor the robustness of the link. This FSM also
contains an option to set different time periods between reset assertions. Also,
continuous channel_up and link_reset transition
counters are monitored and the test status is reported through VIO.
The following signals are added to the default ILA and VIOs for probing the link:
i_ila:
-
tx_d_i[0:15]: TX Data from the LocalLink Frame Gen module -
rx_d_i[0:15]: RX Data to the LocalLink Frame check module -
data_err_count_o: 8-bit Data error count value, it is expected to be 'd0 in normal operations -
lane_up_vio_usrclk:lane_upsignal -
channel_up_i:channel_upsignal -
soft_err_i: Soft error monitor -
hard_err_i: Hard error monitor
vio1_inst:
-
sysreset_from_vio_i: Reset input to example design -
gtreset_from_vio_i:pma_initto example design -
vio_probe_in2: Quality counters for Link status -
rx_cdrovrden_i: Used while enabling loopback mode -
loopback_i: Used while enabling loopback mode
vio2_inst:
-
eset_quality_cntrs: Used to reset all the quality counters in the example design -
eset_quality_cntrs: Used to reset all the quality counters in the example design -
eset_quality_cntrs: Used to reset all the quality counters in the example design -
reset_test_fsm_from_vio: Used to reset the hardware reset test FSM -
reset_test_enable_from_vio: Used to enable/start the repeat reset test from the vio ports on the hardware. -
iteraion_cnt_sel_from_vio: Number of repeat reset iterations to be initiated. This is a 4-bit encoded value for a fixed number of iterations that can be seen in the example design when Vivado lab tools is enabled. -
lnk_reset_in_initclk: Input probe to monitor the assertion oflink_reset -
soft_err_in_initclk: Input probe to monitor thesoft_errstatus -
chan_up_transcnt_20bit_i [15:8]: Number ofchannel_uptransaction counts. This can be used to monitor the number of reset iterations that have been completed.Note:-
chan_up_transcnt_20bit_iis probed only [15:8] bits. Hence, this probe takes some time to update the status. - To change the number of reset iterations, modify the respective
value for
iteration_cnt_sel_from_vioand correspondingly selectchan_up_transcnt_20bit_ito probe the status.
-
vio3_inst:
-
test_passed_r: Test pass status is asserted after the respective iteration count, if resets are successfully done -
test_failed_r: Test fail status is asserted if there is either a lack ofchannel_upor some data errors have occurred -
lnkrst_cnt_20bit_vio_i: Probe to monitor the number of times thelink_resetis asserted -
reset_test_fsm_chk_time_sel: 3-bit encoded value probe to select the hardwarereset_fsmcheck time forchannel_upassertions after reset is deasserted
Hardware FSM Operation:
In the example design ( <user_component_name>_exdes.v), a hardware initiated repeat reset FSM has been added to test the robustness of the link when subject to repeat reset. The FSM consists of IDLE, ASSERT_RST, DASSERT_RST, WAIT, WAIT1, CHECK, FAIL, and DONE states.
- In IDLE state,
test_passed_rindicates reset test passed,test_failed_rindicates reset test fail, andtimer_rprovides an iteration count of resets. Defaults to 0. - When the
reset_test_enable_from_viosignal is asserted, the hardware FSM traverses to the ASSERT_RST state wherepma_initis asserted for a pre-determined time (28-bit count time). - This
pma_initassertion ensures that a hot-plug sequence is detected by the link partner. The hardware FSM then traverses to the DEASSERT_RST state where thepma_initis deasserted and the timer is loaded with a default value that can be configured using thereset_test_fsm_chk_time_selvio signal. - The FSM then moves to the WAIT state until the selected time has
expired. In this state, all checks such as for data errors and soft error
occurrences are performed and the
channel_upsignal is verified to be asserted High and not toggled more than once for this iteration ofpma_init.. - If this condition is not met, the FSM moves to FAIL state and the repeat reset run is stopped. Otherwise, the FSM moves to WAIT1 state where a few data packets are transmitted and received.
- The FSM then moves to the CHECK state, in which the
channel_uptransitions are checked again. If there is not more than one transition, the FSM returns to the IDLE state until the requested iterations are completed. This ensures that the link is robust and recovers reliably across multiple repeat resets of the link.