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:
- 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...
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...
5. Re-connect the channel bonding chain. For the TILE in which you have swapped the Master and Slave attribute...
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.