Lanes and Channel Do Not Come Up in Simulation
- The quickest way to debug this issue is to view the signals from one of the GT transceiver instances that is not working.
- Ensure that the reference clock and user clocks are all toggling.Note: Only one of the reference clocks should be toggling, the rest are tied Low.
- Check to see that
recclk
andtxoutclk
are toggling. If they are not toggling, it might be necessary to wait longer for the PMA to finish locking. Wait for lane up and channel up. It might be necessary to wait longer for simplex/7 series FPGA designs. - Ensure that
txn
andtxp
are toggling. If they are not, make sure to wait long enough (see the previous bulleted item) and make sure that another signal is not driving thetxn/txp
signal. - Check in the
<user_component_name>_support
module whether thepll/mmcm_not_locked
signal and the reset signals are present in the design. If these are being held active, the Aurora 64B/66B module cannot initialize. Ensure that the power_down signal is not being asserted. - Ensure that the
txn
andtxp
signals from each GTX or GTH transceiver are connected to the appropriaterxn
andrxp
signals from the corresponding GTX or GTH transceive on the other side of the channel. - Instantiate the "glbl" module and use it to drive the power_up reset at the beginning of
the simulation to simulate the reset that occurs after configuration. Hold this reset for
a few cycles. The following code can be used an
example:
/Simulate the global reset that occurs after configuration at the beginning //of the simulation. assign glbl.GSR = gsr_r; assign glbl.GTS = gts_r; initial begin gts_r = 1'b0; gsr_r = 1'b1; #(16*CLOCKPERIOD_1); gsr_r = 1'b0; end
- If you assert
rx_reset
while using Timer mode and simplex configuration, you should also asserttx_reset
. This is to ensure that the core transmits the required initialization patterns for therx_lane_up
andrx_channel_up
to come back. However, because of Simplex auto recovery logic, the RX could attain therx_channel_up
state if you wait for sufficient time. In this scenario, the TX transmits periodic patterns that aid in recovering links automatically. - If you are using a multilane channel, make sure all of the transceivers on each side of the channel are connected in the correct order.
Channel Comes up in Simulation but s_axi_tx_tready is Never Asserted (Never Goes High)
- If the module includes flow control but it is not being used, make sure that the request
signals are not currently driven High.
s_axi_nfc_tx_tvalid
andufc_tx_req
are active-High. If they are High,s_axi_tx_tready
stays Low because the channel is allocated for flow control. - If the module includes USER-K blocks but they are not being used, make sure the
s_axi_user_k_tx_tvalid
is not driven High. If it is High,s_axi_tx_tready
stays Low as channel is allocated for USER-K Blocks.
Bytes and Words are Being Lost as They Travel Through the Aurora 64B/66B Channel
- If using the AXI4-Stream interface, make
sure to write data correctly. The most common mistake is to assume words are written
without looking at
s_axi_tx_tready
. Also, remember that thes_axi_tx_tkeep
signal must be used to indicate which bytes are valid whens_axi_tx_tlast
is asserted. - Ensure to read correctly from the RX interface. Data and framing signals
are only valid when
m_axi_rx_tvalid
is asserted.
Problems While Compiling the Design
Ensure to include all the files from the src
directory when compiling.
Check if the simulator and libraries are set up properly. Check if the simulator language is
set to mixed
.
Next Step
Open a support case to have the appropriate AMD expert assist with the issue.
To create a technical support case, see the Service Portal web page.
Items to include when opening a case:
- Detailed description of the issue
- Results of the steps listed previously
- Attach a value change dump (VCD) or wave log format (WLF) dump of the observation.
- Attach the XCI/XCO file from the IP.
- If any modifications are updated to the IP generated out of Vivado and reasons for doing the changes.
- The
.ila
dump of the Hardware captures optionally, if available.