cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
401 Views
Registered: ‎05-09-2017

Questions about generating IP from tcl in Vivado - attempt to modify the value of disabled parameter

[I am reposting this here, as my original post in the Implementation section got marked as spam and was removed.]

 

We have a design where the build is entirely scripted and we generate and build several IPs from a tcl script. We have been using this for a while and had thought it was working correctly, however I recently discovered an issue with one particular IP for an MGT, where it appears to be generated with incorrect parameters. A simplified example is given below:

create_ip -name gtwizard -vendor xilinx.com -library ip -version 3.5 \
-module_name mgt_demo_ip

set_property -dict [list \
    CONFIG.identical_val_tx_reference_clock {125.000}           \
    CONFIG.gt0_val_tx_data_width {16}                           \
    CONFIG.gt0_val_encoding {8B/10B}                            \
    CONFIG.gt0_val_decoding {8B/10B}                            \
    CONFIG.gt0_val_rxusrclk {RXOUTCLK}                          \
    CONFIG.gt0_val_comma_preset {K28.5}                         \
    CONFIG.identical_val_rx_reference_clock {125.000}           \
    CONFIG.gt0_val_tx_line_rate {2.5}                           \
    CONFIG.gt0_val_tx_int_datawidth {20}                        \
    CONFIG.gt0_val_tx_reference_clock {125.000}                 \
    CONFIG.gt0_val_rx_line_rate {2.5}                           \
    CONFIG.gt0_val_rx_data_width {16}                           \
    CONFIG.gt0_val_rx_int_datawidth {20}                        \
    CONFIG.gt0_val_rx_reference_clock {125.000}                 \
    CONFIG.gt0_val_cpll_fbdiv {4}                               \
] [get_ips mgt_demo_ip]

This produces the following warnings, either in the GUI or in the log file:

WARNING: [IP_Flow 19-3374] An attempt to modify the value of disabled parameter 'gt0_val_tx_line_rate' from '3.125' to '2.5' has been ignored for IP 'mgt_demo_ip' 
WARNING: [IP_Flow 19-3374] An attempt to modify the value of disabled parameter 'gt0_val_rx_line_rate' from '3.125' to '2.5' has been ignored for IP 'mgt_demo_ip'

Looking in the Transceiver Wizard, and the XCI file, I can see that the line rate is set to the default value for the core of 3.125 Gbps, rather than the requested 2.5 Gbps. Also the number of 3.125 is baked in to several of the generated HDL wrapper files for the core. We had thought that the generated IP is, or at least in the past was, working okay, but I don't understand how it could be! The only two files existing before the core is generated are the XCI and XML files, and my understanding is that the information in the XCI is used to configure the IP, and the XML file contains the same information but in a form for the wizard to use in order to regenerate the XCI. Otherwise, there is also contradictory information in the generated XDC file, where the clock constraints for the TX/RXOUTCLKs have been correctly specified based on the line rate given in the tcl, as opposed to the values in the XCI. Is my understanding correct here, or am I missing some intermediate step in going from tcl to generated output products - i.e. how is the XDC getting the correct clock speed, if not from the XCI?

 

Through a bit of trial and error I found that I could get around the original problem by specifying the following additional parameters in the tcl script:

CONFIG.identical_val_tx_line_rate {2.5} \ 
CONFIG.identical_val_rx_line_rate {2.5} \

These parameters are obviously otherwise defaulted to 3.125, and have a higher priority than the 'gt0_val' line rate parameters. What does 'identical' refer to in this case - does it mean that all MGTs in the device have the same line rates? In this case I am using only one MGT with this particular IP core, and indeed it does not seem possible to configure different line rates within the same IP - at least not from the wizard. Why does it appear to be mandatory to specify this parameter, or would it have not made sense to default it to {false} instead? There does appear to be any documentation for specifying the tcl parameters for configuring IP cores - or am I missing this?

My third question: is there a way to coax Vivado into reporting the complete tcl specification for an IP core, in the same way as 'write_bd_tcl' for the block design? I am aware that when using the wizard, you can get the modified or additional parameters that are not at their default settings from the tcl console, but it would be very useful to get the complete description especially when migrating between versions.

The device I am targeting is xc7z030sbg485-1. I noticed this issue with Vivado 2015.2 (v3.6 of the generator) but verified that later versions of Vivado (eg 2018.4) behave in the same way with v3.6 of the generator.

I would be grateful for any help or advice offered.

Tags (3)
0 Kudos
2 Replies
Highlighted
Visitor
Visitor
369 Views
Registered: ‎06-07-2018


My third question: is there a way to coax Vivado into reporting the complete tcl specification for an IP core, in the same way as 'write_bd_tcl' for the block design? I am aware that when using the wizard, you can get the modified or additional parameters that are not at their default settings from the tcl console, but it would be very useful to get the complete description especially when migrating between versions.


you can try "write_ip_tcl" for this, check UG835.

Dario

0 Kudos
Highlighted
Observer
Observer
363 Views
Registered: ‎05-09-2017

Thanks Dario,

Yes, I see that "write_ip_tcl" was introduced from 2018.1 onwards. Very useful to know! 

0 Kudos