When using AXI Ethernet on an UltraScale device with SGMII over LVDS, synchronous SGMII is not stable.
There are synchronization and reset issues.
Please note: this Answer Record is for AXI Ethernet IP from the IP Catalog.
The flow for an IPI design is different.
An AXI Ethernet SGMII over LVDS design with the option "Shared Logic in Example Design" requires an idelay control element which is not currently present in the IPI catalog.
You will need to add this idelay control element as a local pcore before connection.
Please see (Xilinx Answer 64142) for more details.
To work around this issue, follow the steps below:
Generate the AXI Ethernet from the IP Catalog.
After generating the output products of AXI Ethernet, generate the AXI Ethernet example design and edit the below files:
Use the following command in the Vivado Tcl prompt:
Go to the sub-core directory: *axi_ethernet.srcs/sources_1/ip/axi_ethernet_0/bd_1/ip/ip_2/synth/sgmii_lvds_transceiver and edit bd_1_pcs_pma_0_serdes_1_to_10_ser8.v
Connect 1b0 to enable_monitor of delay_controller_wrap in _serdes_1_to_10_ser8.v
Changes in <CompName >_serdes_1_to_10_ser8.v file
Add a reset synchronizer on reset, synchronized to rxclk_div4 clock
<=: CompName :>_reset_sync reset_rxclk_div4 (
b. Connect reset_sync to the RST pin of the following module instances:
c. Remove the connection from EN_VTC to ~idelay_rdy and tie it instead to 1b0 for the following module instances:
Go to example design directory:
Changes in <=:CompName :>_ support_clocking.v file:
- Define output port idelay_ctrl_rdy
- Remove wire declaration for idelay_ctrl_rdy
Propagate idelay_rdy from the module instance serdes_1_to_10_ser8_i all the way to the level where the module <=:CompName :>_ support_clocking is instantiated.
Connect delay_rdy to the idelay_ctrl_rdy port of instance of module <=:CompName :>_support_clocking