Step 4: Upgrade IP - Step 4: Upgrade IP - 2026.1 English - UG939

Vivado Design Suite Tutorial: Designing with IP (UG939)

Document_ID
UG939
Release_Date
2026-07-15
Version
2026.1 English
If you attempt to run synthesis at this time, you see this warning for the Block Memory Generator IP:
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..

The Block Memory Generator is locked because you are not using the most recent version of the IP. It also lacks output products and therefore requires an upgrade before it can generate them..

The Block Memory Generator has updated versions in the AMD IP catalog. In an interactive design session, these messages can be helpful. However, in a batch mode Tcl script, these messages are not seen until after synthesis or implementation fails.

To anticipate and prevent this, you can use your script to:

  • Determine if an IP is locked by checking its status in the IP catalog.
  • Check for a newer version of the IP in the catalog.
  • Upgrade the IP if it is locked and a new version is available.
  • Generate the output products for the IP.

Do this for the blk_mem_gen_v7_3_0 IP using following sequence:

  1. First, check 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 the IP catalog to see if an upgrade is available, and store that information in a Tcl variable. 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 contains an empty string (””). In the case of the blk_mem_gen_v7_3_0 IP, there is an upgrade available.

  3. Now, check the stored Tcl variables, $locked and $upgrade. This will help determine if the IP is locked and if an upgrade version is available. If both conditions are met, proceed to upgrade the IP. Add the following lines to your Tcl script:
    if {$locked && $upgrade != ""} {
    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. It updates to the latest version in the IP catalog.

  4. Now that the IP is current, add the following to your script:
    generate_target all [get_ips blk_mem_gen_v7_3_0]
  5. Similarly, check if other IPs like Accumulator or FIFO Generator are locked. Because this tutorial uses the Vivado 2025.2 native IP with output products, you do not need to update these IPs.

    Because the IP's are in the current state, add following to your script.

    generate_target all [get_ips c_accum_0]
    generate_target all [get_ips char_fifo]