Step 6: Upgrade an IP - 2021.2 English

Vivado Design Suite Tutorial: Designing with IP

Document ID
UG939
Release Date
2021-11-17
Version
2021.2 English
As mentioned earlier, the block memory generator IP in the design has a newer version available in the IP catalog. The IP is locked as a result, because it cannot be re-customized from the IP catalog unless you upgrade it to the latest version. When adding the XCI to a project, this warning opens:
WARNING: [IP_Flow 19-2162] IP 'blk_mem_gen_v7_3_0' is locked:
* IP definition 'Block Memory Generator (7.3)' for IP 'blk_mem_gen_v7_3_0' has a newer major version in the IP Catalog.
Please select 'Report IP Status' from the 'Tools/Report' menu or run Tcl command 'report_ip_status' for more information.

In an interactive session, this message can be helpful, but in a batch mode script this would not be seen until after synthesis or implementation fails. To anticipate and prevent this, you can use your script to:

  • Determine if an IP is locked.
  • Check for a newer version of the IP in the catalog.
  • Upgrade an IP if it is locked, and a new version is available.

The following sequence shows you how to do this.

  1. Check to see if the IP is locked, and store the state in a Tcl variable. Add the following line to your Tcl script:
    set locked [get_property IS_LOCKED [get_ips blk_mem_gen_v7_3_0]]
  2. Next, check to see whether there is an upgrade available in the IP catalog, and store that information in a Tcl variable as well. Add the following line to your Tcl script:
    set upgrade [get_property UPGRADE_VERSIONS [get_ips blk_mem_gen_v7_3_0]]

    This returns the VLNV (Vendor/Library/Name/Version) identifier of the upgrade, if there is one available. If there is no upgrade, the variable will contain an empty string (””). In the case of the blk_mem_gen_v7_3_0 IP, there is an upgrade available.

  3. Check the stored Tcl variables, $locked and $upgrade, to see if the IP is locked, and if there is an upgrade version for the IP. If so, you can upgrade the IP.
  4. Add the following lines to your Tcl script:
    if {$upgrade != "" && $locked} {
    upgrade_ip [get_ips blk_mem_gen_v7_3_0]}

    This results in an upgrade to the block memory generator IP from the current version in the design to the latest version in the IP catalog.

    The Accumulator core is legacy IP created with CORE™ Generator from the ISE Design Suite, rather than native IP created in the Vivado® Design Suite. The IP has all the necessary output products, for instantiating the HDL module into a design, for synthesis, and for simulation; consequently, it can be used in its current form although it does not have any timing constraints.

    However, you should upgrade legacy IP to native Vivado IP whenever possible. This ensures that you have the latest updates and fixes for an IP, and any XDC constraints it needs delivered.

  5. Following the steps in 1-3 above, add a sequence of commands to your Tcl script to check if the Accumulator IP is locked, has an available upgrade, and upgrade the IP if so. You will see a warning during upgrade for this IP. This can be ignored, as the warning is that the IP uses upper case for the Instantiation Template, which any HDL sources use.
    WARNING: [IP_Flow 19-3501] Upgraded Accumulator from Accumulator 11.0 to
    Accumulator 12.0, with warnings. Please review the upgrade log.