UPGRADE YOUR BROWSER

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

Description

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.

http://www.xilinx.com/support/documentation/user_guides/ug368.pdf

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.

Solution

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