Step 6: Upgrade an IP - 2022.1 English

Vivado Design Suite Tutorial: Designing with IP (UG939)

Document ID
Release Date
2022.1 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.