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

Virtex-5 RocketIO GTP - Reserving routing for advanced reference clock routing


The RocketIO GTP transceiver has the ability to dynamically change the clock used as reference clock through the use of the DRP port and advanced clock routing as discussed in the Advanced Clocking section of the user's guide. In some cases, if both a Global Fabric clock and a dedicated reference clock input need to be provided to the CLKIN port of the GTP, the tools will optimize out the unconnected clock. This Answer Record discusses how to work around this problem.


To maintain the routing for both the fabric and the dedicated clocks, the fabric clock needs to be connected in the design while the dedicated clock needs to be instantiated via a provided hard-macro. This hard-macro can be found here:


Follow these steps to ensure the correct insertion into the design (examples below):

1. Instantiate the hard-macro into the design. For Verilog, this will include generating an empty wrapper module.

2. Place a "KEEP" constraint on the output net from the hard-macro in the HDL.

3. Lock the macro to the desired location in the UCF.

Instantiation Templates:


------------- Begin Cut here for COMPONENT Declaration ------

component IBUFDS_WA


(GT_CLK_OUT : out std_logic);

end component;

------ End COMPONENT Declaration ------------

------------- Begin Cut here for INSTANTIATION Template -----

your_instance_name : IBUFDS_WA

port map


------ End INSTANTIATION Template ------------


//----------- Begin Cut here for INSTANTIATION Template

IBUFDS_WA YourInstanceName (


------ End INSTANTIATION Template ---------

Place a KEEP Constraint on the output net from the hard-macro. View the Constraints Guide for more information:

VHDL Syntax Example

Declare the VHDL constraint as follows:

attribute keep : string;

Specify the VHDL constraint as follows:

attribute keep of signal_name: signal is {TRUE|FALSE};

Verilog Syntax Example

Specify the Verilog constraint as follows:


Constrain the location of the hard-macro where "YourInstanceName" is the instance name and hierarchy of the macro:

INST YourInstanceName LOC = BUFDS_X0Y3; //Location mimics that of the GTP.

AR# 31789
Date Created 04/15/2009
Last Updated 12/15/2012
Status Active
Type General Article