AR# 33363: Virtex-6 FPGA Embedded Tri-mode Ethernet MAC Wrapper v1.3 - With 16-bit client interface, the wrong clock is used to analyze some client-side Ethernet MAC signals
Virtex-6 FPGA Embedded Tri-mode Ethernet MAC Wrapper v1.3 - With 16-bit client interface, the wrong clock is used to analyze some client-side Ethernet MAC signals
Keywords: timing, TEMAC, MAC, hard TEMAC
When the Ethernet MAC is configured to use the 16-bit client interface, most transmit-side client signals are synchronous to PHYEMACMIITXCLK and most receive-side client signals are synchronous to PHYEMACRXCLK, as can be seen in the Virtex-6 FPGA Embedded Tri-Mode Ethernet MAC User Guide (UG368), figure 6-20.
However, the ISE tools incorrectly analyze the transmit-side paths as if they were synchronous to CLIENTEMACTXCLIENTCLKIN and the receive-side paths as if they were synchronous to CLIENTEMACRXCLIENTCLKIN, as is the case for 8-bit client modes.
Since the clock net driving CLIENTEMACTX/RXCLIENTCLKIN runs at twice the frequency of client logic, this error results in over-constrained paths and might cause difficulty achieving timing closure.
The analysis error is scheduled to be fixed in ISE software 11.4. Until then, a workaround which forces affected client interface paths to be analyzed relative to the correct clock net is provided for some paths in the example design UCF. This workaround, a FROM-THRU-TO constraint, can be modified to encompass additional affected paths as they hinder timing closure.
The provided constraint is as follows, and covers all affected TEMAC-to-client paths:
TIMEGRP "emacclient_dest" = FFS RAMS; INST "*v6_emac" TNM = "hard_temac"; NET "*rx_data_i<*>" TPTHRU = "emacclient_path"; NET "*rx_data_valid_i" TPTHRU = "emacclient_path"; NET "*rx_data_valid_msb_i" TPTHRU = "emacclient_path"; NET "*rx_good_frame_i" TPTHRU = "emacclient_path"; NET "*rx_bad_frame_i" TPTHRU = "emacclient_path"; NET "*tx_ack_i" TPTHRU = "emacclient_path"; TIMESPEC "TS_emacclient_slow_clock" = FROM "hard_temac" THRU "emacclient_path" TO "emacclient_dest" TS_<core_name>_gt_clk;
Additional syntax can be added to cover affected client-to-TEMAC paths if they prevent timing closure. For example:
TIMEGRP "clientemac_src" = FFS RAMS; NET "*tx_data_i<*>" TPTHRU = "clientemac_path"; TIMESPEC "TS_clientemac_slow_clock" = FROM "clientemac_src" THRU "clientemac_path" TO "hard_temac" TS_<core_name>_gt_clk;
NOTE: Signals related to statistics (EMACCLIENTRXSTATS*, EMACCLIENTTXSTATS*) are in fact clocked by CLIENTEMACTX/RXCLIENTCLKIN and should not be constrained using this work-around.