We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

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


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.

AR# 33363
Date Created 08/31/2009
Last Updated 09/28/2009
Status Active
Type General Article