Using a Core Container - 2023.2 English

Vivado Design Suite User Guide: Designing with IP (UG896)

Document ID
Release Date
2023.2 English

The Core Container feature helps simplify working with revision control systems by providing a single file representation of an IP.

Note: Binary files are not preferred for revision control. It is recommended to bing the XCI outside of core container which allows you to diff IP in a revision control environment to see if anything has changed.

set_property coreContainer.alwaysCreateXCI 1 [current_project]

Video: For more information, see the following: Vivado Design Suite QuickTake Video: Using Core Containers for IP.

This optional feature lets you elect to have IP and all generated output files contained in one compressed binary file with an extension of XCIX. This extension is similar to the XCI file used for the IP customization file and works in a similar way.

Note: IS_MANAGED cannot be set to true in this flow for Upgrade IP. To upgrade IP, use the following command:
[get_ips {<ip_name>}]

When adding or reading an IP, you specify the XCI file, and in the case where you have enabled the core container, you add or read the XCIX file.

When enabling the core container feature for an existing IP, the XCIX file replaces the IP directory and the output products. When disabling the core container feature for an IP, the XCIX file is converted to the IP directory with all the output products including the XCI file.

Enabling the core container for an IP changes the on-disk representation of that IP instance; the internal representation for the IP remains the same within Vivado.

Within the Vivado Sources view the two IP appear the same, both listing the output products, all of which can be opened for viewing from within the Vivado IDE.

On disk, there is a folder for clk_core and the single XCIX file for the char_fifo IP. When an IP uses the Core Container, the Vivado tools read the IP source files needed during synthesis and implementation from this single XCIX file. The files are not extracted to a temporary directory, they are read directly from the binary.

Important: Again, having a single file representation for the IP simplifies revision control.

Using the XCIX file allows you the same abilities as with the XCI file, such as:

  • Reporting status and details of the IP (Report IP Status)
  • Upgrading the IP when a new version is available; and the ability to use an older version of the IP if desired
  • Ability to re-customize the IP (if the latest version)
  • Ability to reset and regenerate the IP (if the latest version)

Visually, the IP looks the same in a project whether using the core container feature or not. The IP Sources tab shows all the files that are generated for the IP and you retain the ability to open them for viewing as before. Also, Tcl commands related to IP remain the same whether or not you use the core container.

As with all IP, certain files are stored in the ip_user_files directory for ease of use. See IP User Files (ip_user_files) for Core Container for more details.