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

Vivado - GT REFCLK pin swapping leads to partially routed nets


Using the available pin swapping feature from Vivado in an UltraScale Design results in some nets being partially routed.

In some cases, The GUI will show zero under the "Failed Routes" column from the Design Runs tab. However, opening the Implemented design and running the report_route_status command will show the conflicts.

Design Route Status
                                               :      # nets :
   ------------------------------------------- : ----------- :
   # of logical nets.......................... :      231595 :
       # of nets not needing routing.......... :       78400 :
           # of internally routed nets........ :       77261 :
           # of nets with no loads............ :        1139 :
       # of routable nets..................... :      153195 :
           # of fully routed nets............. :      153192 :
       # of nets with routing errors.......... :           3 :
           # of nets with some unrouted pins.. :           1 :
           # of nets with resource conflicts.. :           3 :
   ------------------------------------------- : ----------- :

Nets with Routing Errors:
 Nets with Routing Errors:

How can I work around this?


This issue is currently scheduled to be fixed in the 2016.3 version of Vivado which is due in October.

To work around the issue, it is necessary to adjust the logical design so that the pin swapping feature is not needed. This means aligning the logical design in accordance with the dedicated paths from a GTREFCLK input, through an IBUFDS_GTE3, to the correct REFCLK pin.

The work-around would normally involve one of two options:

  1. Changing the logical connectivity at the GTHE3_CHANNEL pin. If the input is connected to the GTREFCLK0 pin, but is using the MGTREFCLK1P package pin, then the RTL can be adjusted so that the GTREFCLK1 is used instead.
  2. Changing the I/O package pin constraints so that the package pin value matches the GTHE3_CHANNEL pin value.

For example, the package pin constraints for a REFCLK will either be MGTREFCLK0P or MGTREFCLK1P. If the package pin with the '1' distinction is used, then this must connect to the IBUFDS1_GTE3, and GTREFCLK1 pin of the GTHE3_CHANNEL primitive. Using the MGTREFCLK0P and GTREFCLK1 pin would require the pin swapping.

Also, if the GTHE3_CHANNEL is placed in a different clock region from the I/O package pins, then the appropriate GTNORTHREFCLKx pin should be used. (UG576) will have more information on the expected connectivity. Below is an image of a path that would not need the pin swapping involving the MGTREFCLK0_* package_pin, IBUFDS0_GTE3 buffer, and the GTREFCLK0 GTHE3_CHANNEL pin. In this case, The GTHE3_CHANNEL is placed in the same clock region as the I/O package pins.


AR# 67747
Date 09/09/2016
Status Active
Type General Article
  • Vivado Design Suite - 2016.2