Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to dynamically change UltraScale/UltraScale+ GTH/GTY line-rate

Xilinx Employee
Xilinx Employee
7 2 2,307

Have you ever wanted to use an UltraScale/UltraScale+ GTH/GTY transceiver to dynamically change line rate settings? 

We have received many inquiries about this from customers who use GTH/GTY transceivers for their own communication protocols.


You can see that the UltraScale FPGAs Transceivers Wizard in the Vivado IP Catalog only allows for one line rate setting. 

Because the UltraScale/UltraScale+ GTH/GTY Transceiver Wizard does not allow you to change the line rate setting, it must be done manually by the transceiver user.

1. How to change line rate via the DRP interface


(a) Generate a transceiver macro 

Generate a transceiver macro with the line rate configuration you want to achieve.

(b) Generate a sample design.


(c) Perform logic synthesis for the sample design.

Click on Run synthesis in the Flow Navigator:


When synthesis is complete, select [Open Synthesized Design] to open the netlist.


(d) Run the attached script

Run the gt_Attributes_97.tcl script attached below in the Tcl console:


By executing this script, you can output the Channel/Common attributes to the gtParams.txt file. 

Also, both the attributes inside the GTH/GTY and the fixed GTH/GTY ports are output as a file, so you can easily compare them.

Repeat steps (a) to (d) above for each GTH/GTY configuration you want to implement.


 (e) Compare the Output

By comparing the gtParams.txt output from the GTH/GTY configuration, you can immediately see the different attributes.


(f) Dynamic Reconfiguration Port Interface (DRP I/F)

The required attributes must be set via the DRP I/F.

The address of each attribute is listed in Appendix B/C of (UG576)/(UG578).

If you are unfamiliar with the DRP I/F, more information can be found in chapter 2 of (UG576) /(UG578).

(g) Reset

After setting the attributes on the DRP I/F, you must perform a reset again before using GTH/GTY.


Note: rather than comparing the wrapper RTL, it is recommended that you generate gtParams.txt with this script and then compare. 

Because the fixed external ports can be compared in addition to the attributes of the Channel and Common parts, you can change the attributes with confidence.


2. Change settings for the CPLL calibration module

If you use CPLL in your design, you must change the signals in the CPLL calibration module. 

Please refer to the answer record (Xilinx Answer 70485) for information on the settings changes required to change the signal.



In summary, if you ever need to dynamically change the line rate for UltraScale/UltraScale+ GTH/GTY, please follow steps (1) and (2) above.




thanks for this useful information.

in my application we can choose any rate between 1000M to 12250M.

It is not realistic to check the different parameters to all of the options ( infinite ).

in my application in order to get all rates I am choosing between QPLL0 or QPLL1 with a constant FBDIV value and a variable TXOUT_DIV. to match a valid working point I can control the reference frequency.

in general all is working, but in some rate change I can see that the lock indication is not set. there are many parameters that I don't change for example lock time or loop filter parameters.

can you guide me please to run your method in a specific frequencies range which in them all parameters are common? in this way I will get a configuration parameter table per zone with the help of your method.

thanks, Nitzan



Thanks for your information.

Could I ask how many time is required roughly to change data rate dynamically?

I think it may include "Attributes change via DRP" time ,GTH/GTY stable time after reset and etc..

Could it be achieved under 600us?