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

LogiCORE RapidIO - How do I move MGT/GTP/GTX locations of the SRIO Core?


This Answer Record describes how you can swap the lanes in the MGT/GTP/GTX tiles to ease the board layout or to fix an inadvertently swapped board layout. The example below uses SRIO v4.3 in x4 configuration and assumes the lane swapping is necessary in both TILE0 and TILE1.


================= To SWAP Lanes Within Tiles ==============

To swap the lanes in GTP_DUAL, you must swap the attributes in each of the GTP_DUAL instantiations. You must modify the following two files:

- rocketio_wrapper.v

- gtp_wrapper file

Specifically, you must swap each of the "0" attributes and ports with "1" for each of the GTP_DUAL instantiations. Most attributes are the same for both, but some of them around channel bonding are not, and must be swapped. For example, CHAN_BOND_MODE must be changed to make sure that Lane 0 is the channel bond master. All of the ports must be swapped. Not only does this affect the channel bonding logic, but also how the interface from the core to the GTP is constructed.

1. Open "rocketio_wrapper_v5_4x.v" file in the text editor, and go to the "gtp_wrapper" section.

2. Swap ALL the lane #s for each tile in the gtp_wrapper instantiation. For example, in the TILE0 section of the gtp_wrapper instantiation...

the following:






If necessary, repeat this for other ports and attributes for TILE 0 and TILE1.

3. Open the "gtp_wrapper.v file" in the text editor.

4. Swap the numbers on the TILE_CHAN_BOND attributes...

the following:










5. Re-connect the channel bonding chain. For the TILE in which you have swapped the Master and Slave attribute...

the following:

.RXCHBONDI0_IN (tied_to_ground_vec_i[2:0]),

.RXCHBONDI1_IN (tile1_rxchbondo0_i),

.RXCHBONDO0_OUT (tile1_rxchbondo0_i),

.RXCHBONDO1_OUT (tile1_rxchbondo1_i),


.RXCHBONDI0_IN (tile1_rxchbondo0_i),

.RXCHBONDI1_IN (tied_to_ground_vec_i[2:0]),

.RXCHBONDO0_OUT (tile1_rxchbondo1_i),

.RXCHBONDO1_OUT (tile1_rxchbondo0_i),

To verify the modifications, run functional simulation and check for the following:

port_initialized should go high High

lnk_trdy_n should become Low

lnk_rrdy_n should become Low

mode_sel should be High for x4 mode


================ To MOVE GTP Locations =====================

1. Edit UCF file: GTP Transceiver and REFCLK Placement section

INST "rio_de_wrapper/phy_wrapper/rocketio_wrapper/gtp_wrapper/tile1_gtp_wrapper_i/gtp_dual_i" LOC = "GTP_DUAL_X0Y3"; # MGT112

INST "rio_de_wrapper/phy_wrapper/rocketio_wrapper/gtp_wrapper/tile0_gtp_wrapper_i/gtp_dual_i" LOC = "GTP_DUAL_X0Y2"; # MGT114

Above is the default location for Virtex-5 designs. Change the locations as needed.

2. Use RocketIO GTP Wizard available in CORE Generator to generate new wrappers for new GTP locations.

3. Replace the original GTP_Wrapper.v and GTP_Wrapper_Tile.v files with the newly generated wrappers.


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