Creating an IP Customization - 2023.2 English

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

Document ID
Release Date
2023.2 English
Tip: When entering or modifying data in a text box, if a value is used and editable, the text is black and the background is white. If a value is used but not editable, the text is black and the background is grey. If a value is unused or not applicable, the text is grey, including the label that precedes or follows it.

To create an IP customization using the IP catalog, select the IP by double-clicking the IP, from the toolbar, select the Customize IP command, or right-click and select the command.

The Customize IP dialog box shows the various parameters available for you to customize the IP. This interface varies, depending on the IP you select, and can include one or more tabs in which to enter values.

Also, the Customize IP dialog box includes an IP symbol and tabs for setting configuration options for the specific IP. TheVivado IDE writes these configuration options to the <ip_name>.xci file, and stores them as properties on the IP object.

The Windows operating system has a total 260-character limit for path lengths, which can affect the Vivado tools. To avoid this issue, use the shortest possible names and directory locations when creating projects, defining IP or managed IP projects, and creating block designs. Keep this in mind when storing IP outside of a project.

The IP symbol supports zoom, re-size, and auto-fit options that are consistent with the schematic viewer canvas in Vivado IDE.

The following figure shows the Customize IP interface for the FIFO Generator IP.

Figure 1. FIFO Generator Dialog Box

In the IP dialog box, set the following options:

  • Documentation > Product Guide: Open the product guide for the selected IP.
  • IP Location: Specify the location on disk to store the IP. This location can only be adjusted per IP in an RTL-based project. This functionality is not provided in a Managed IP project because Managed IP builds a repository.
  • Switch to Defaults: Displays a window asking if you want to reset all configuration options back to their default starting point.

Customize the IP as needed for your design, and click OK.

AMD recommends that when specifying a numerical value, use hexadecimal to speed processing.

Tcl Commands for IP

The following are example Tcl commands for use with IP.

Example for Creating an IP Customization

You can also create IP customizations using the create_ip Tcl command. For example:

create_ip -name fifo_generator -version 12.0 -vendor -library ip\

-module_name fifo_gen

You must specify either -vlnv or all of -vendor, -library, -name, and -version.

Note: Executing the create_ip Tcl command creates the IP customization file (XCI), which is the configuration for the IP, and the instantiation template and BOM (XML) file, but does not create any other output products. The default configuration for the IP is set with the create_ip command.

Example for Setting IP Properties

To define the different configuration settings of the IP, use the set_property command. For example:

set_property CONFIG.Input_Data_Width 12 [get_ips fifo_gen]

Example for Reporting IP Properties

To get a list of properties available for an IP, use the report_property command. For example:

report_property CONFIG.* [get_ips <ip_name>]

Configuration properties start with CONFIG.

Example of a Query of an IP Customization Property

To determine if an IP customization property is set to the default or set by the user, see the following example:

# Find the read data count width.
get_property CONFIG.Read_Data_Count_Width [get_ips char_fifo]
# Determine the source of CONFIG.Read_Data_Count_Width property.
# See that this is the default value
get_property CONFIG.Read_Data_Count_Width.value_src [get_ips char_fifo]
# Get the output data width.
get_property CONFIG.Output_Data_Width [get_ips char_fifo]
# Determine the source of CONFIG.Output_Data_Width property.
# See that this is set by the user.
get_property CONFIG.Output_Data_Width.value_src [get_ips char_fifo]