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# 25349

Virtex-4 Tri-mode Ethernet MAC - Problems meeting timing in RGMII mode

Description

In Timing Analyzer, some of the paths on the RGMII physical interface fail to meet timing, because Timing Analyzer is constraining the paths to only half a clock cycle. This occurs because in RGMII mode, EMAC ports EMAC#PHYTXD[3:0], EMAC#PHYTXEN, PHYEMAC#RXD[3:0], and PHYEMAC#RXDV are clocked off the rising edge while ports EMAC#PHYTXD[7:4], EMAC#PHYTXER, PHYEMAC#RXD[7:4], PHYEMAC#RXER are clocked off the falling edge of the clock. However, in the timing models, some of the data and control signals are not clocked on the correct edges, which results in some paths being over constrained to only half a clock cycle. Actually, all of the paths need to be constrained to only one clock period in the Embedded TEMAC wrapper files.

Solution

In the CORE Generator Embedded Tri-mode Ethernet MAC Wrappers v4.4 and later, the FROM-TO constraints were added to the UCF file when the wrappers are generated for RGMII. 

 

For the EDK hard_temac v3.00.a and v3.00.b to properly constrain these paths, the following TIG constraints can be removed from system.ucf and from the hard_temac tcl file in <EDK_install>\hw\XilinxProcessorIPLib\pcores\hard_temac_v3_00_b\data\hard_temac_v2_1_0.tcl: 

 

puts $outputFile "NET \"${name_lower}/I_EMAC_TOP/rgmii_txd_falling_?_i<?>\" TIG;" 

puts $outputFile "NET \"${name_lower}/I_EMAC_TOP/rgmii_tx_ctl_falling_?_i\" TIG;" 

puts $outputFile "NET \"${name_lower}/I_EMAC_TOP/rgmii_rxd_falling_?_i<?>\" TIG;" 

puts $outputFile "NET \"${name_lower}/I_EMAC_TOP/rgmii_rx_ctl_falling_?_i\" TIG;" 

 

And replaced with the following constraints in the system.ucf: 

 

INST "*v4_emac" TNM = "emac"; 

 

INST "*rgmii_rx_ctl_iddr*" TNM = "rx_rgmii_reg"; 

INST "*rgmii_rxd_ddr_regs*" TNM = "rx_rgmii_reg"; 

INST "*/rgmii*/txd_falling_i_?" TNM = "tx_rgmii_reg"; 

INST "*/rgmii*/tx_ctl_falling_i" TNM = "tx_rgmii_reg"; 

INST "*/rgmii*/tx_ctl_rising_i" TNM = "tx_rgmii_reg"; 

 

TIMESPEC "TSin"=FROM "rx_rgmii_reg" TO "emac" 7200 ps DATAPATHONLY; 

TIMESPEC "TSout"=FROM "emac" TO "tx_rgmii_reg" 7200 ps DATAPATHONLY;

AR# 25349
Date Created 09/04/2007
Last Updated 05/21/2014
Status Archive
Type General Article