I am trying to use the ethernet PHY on my Nexys4-DDR. The manual for the phy gives the following timing constraints for the RMII ports.
I am getting confused as to what exactly the constraints for this should be in my XDC file. For the above diagram I think I can conclude...
Input setup time = 20 - 14 = 6ns
Input hold time = 3ns
Output setup time = 4ns
output hold time = 1.5ns
From this I generated the following constraints relative to clk_mac which is the 50MHz clock driving clkin.
set_input_delay -clock clk_mac -max 6.000 [get_ports {eth_crsdv eth_rxd eth_rxerr}]
set_input_delay -clock clk_mac -min 3.000 [get_ports {eth_crsdv eth_rxd eth_rxerr}]
set_output_delay -clock clk_mac -max 4.000 [get_ports {eth_txd eth_txen}]
set_output_delay -clock clk_mac -min 1.500 [get_ports {eth_txd eth_txen}]
I am unsure if I am mapping min/max to hold/setup correctly. When I ran this design with chipscope it does not look like I am getting a valid packet on the rx side. I previously had it working using no input constraints but with a 45 degree phase shifted clock. So I guess that is like an effective delay of 5ns everywhere. I also tried just setting all delays to 5ns and it started to work. How should I correctly constrain this design?