get_ipdefs - 2023.1 English

Vivado Design Suite Tcl Command Reference Guide (UG835)

Document ID
UG835
Release Date
2023-05-16
Version
2023.1 English

Get a list of IP from the current IP Catalog

Syntax

get_ipdefs [‑name] [‑regexp] [‑nocase] [‑filter <arg>] [‑of_objects <args>]
    [‑all] [‑quiet] [‑verbose] [<patterns>...]

Returns

List of Catalog IP objects.

Usage

Name Description
[-name] Match the pattern against IP display name instead of VLNV
[-regexp] Patterns are full regular expressions
[-nocase] Perform case-insensitive matching
[-filter] Filter list with expression
[-of_objects] Get the IPDefs of the objects specified: IP inst or XCI file.
[-all] Return hidden IP
[-quiet] Ignore command errors
[-verbose] Suspend message limits during command execution
[<patterns>] The patterns to match against Default: * Values: The default search pattern is the wildcard *, or .* when -regexp is specified.

Categories

Object, IPFlow

Description

Get a list of IP cores defined in the IP catalog of the current project, based on the specified search pattern. The default is to return all IP cores defined in the Vivado® tools IP catalog.

By default, the search is based on the VLNV property of the IP cores in the catalog. You can specify the -name option to search on the display name of IP cores instead.

Arguments

-name - (Optional) Indicates that the specified <pattern> refers to the DISPLAY_NAME property of the IP instead of the VLNV property.

Tip: In the case of multi-word display names, such as "Multiply Adder", you can only search for a single string, so you would need to search for *Multiply* or *Adder* to locate this IP core.
-regexp - (Optional) Specifies that the search <patterns> are written as regular expressions. Both search <patterns> and -filter expressions must be written as regular expressions when this argument is used. Xilinx® regular expression Tcl commands are always anchored to the start of the search string. You can add ".*" to the beginning or end of a search string to widen the search to include a substring. See http://perldoc.perl.org/perlre.html for help with regular expression syntax.
Note: The Tcl built-in command regexp is not anchored, and works as a standard Tcl command. For more information refer to http://www.tcl.tk/man/tcl8.5/TclCmd/regexp.htm.

-nocase - (Optional) Perform case-insensitive matching when a pattern has been specified. This argument applies to the use of -regexp only.

-filter <args> - Filter the results list with the specified expression. The -filter argument filters the list of objects returned by get_ipdefs based on property values on the objects. You can find the properties on an object with the report_property or list_property commands. In the case of the "ipdefs" object, "VLNV", "NAME" and "IS_AXI" are some of the properties that can be used to filter results.

The filter search pattern should be quoted to avoid having to escape special characters. String matching is case-sensitive and is always anchored to the start and to the end of the search string. The wildcard “*” character can be used at the beginning or at the end of a search string to widen the search to include a substring of the property value.
Note: The filter returns an object if a specified property exists on the object, and the specified pattern matches the property value on the object. In the case of the "*" wildcard character, this will match a property with a defined value of "".
For string comparison, the specific operators that can be used in filter expressions are "equal" (==), "not-equal" (!=), "match" (=~), and "not-match" (!~). Numeric comparison operators <, >, <=, and >= can also be used. Multiple filter expressions can be joined by AND and OR (&& and ||). The following gets input pins that do NOT contain the “RESET” substring within their name:
get_pins * -filter {DIRECTION == IN && NAME !~ "*RESET*"}
Boolean (bool) type properties can be directly evaluated in filter expressions as true or not true:
-filter {IS_PRIMITIVE && !IS_LOC_FIXED}

-of_objects <args> - (Optional) Get the IP definitions for the specified IP instances or IP file (.xci) objects. Objects must be specified by the get_ips or get_files command.

-all - (Optional) Get the IP definitions from all defined IP catalogs and repositories. By default, the get_ipdefs command will return the IP cores from the standalone IP catalog. This option returns IP from both the standard Vivado tool IP catalog, and the IP integrator IP catalog.

-quiet - (Optional) Execute the command quietly, returning no messages from the command. The command also returns TCL_OK regardless of any errors encountered during execution.
Note: Any errors encountered on the command-line, while launching the command, will be returned. Only errors occurring inside the command will be trapped.
-verbose - (Optional) Temporarily override any message limits and return all messages from this command.
Note: Message limits can be defined with the set_msg_config command.

<patterns> - (Optional) Match IP core definitions in the IP catalog against the specified search patterns. The default pattern is the wildcard '*' which gets a list of all IP cores in the catalog. More than one pattern can be specified to find multiple core definitions based on different search criteria.

Note: You must enclose multiple search patterns in braces, {}, or quotes, "", to present the list as a single element.

Examples

The following example returns a list of all IP cores with NAME property matching the specified pattern:

get_ipdefs -filter {NAME=~*agilent*}
Tip: The filter operator '=~' loosely matches the specified pattern.

The following example returns a list of all AXI compliant IP cores:

get_ipdefs -filter {IS_AXI==1}

The following example returns IP from both the Vivado tools standard IP catalog and the IP integrator IP catalog:

get_ipdefs -all *axi_interconnect*

The following example filters the above results with the DESIGN_TOOL_CONTEXTS property to return only the IP integrator IP:

get_ipdefs -all *axi_interconnect* -filter {DESIGN_TOOL_CONTEXTS =~*IPI*}
Tip: By filtering on the DESIGN_TOOL_CONTEXTS property, you can identify IP from the IP integrator catalog instead of the Vivado tools standard catalog.

In some cases, where multiple versions of an IP are returned, you can also filter on the UPGRADE_VERSIONS property to get as specific version or the latest IP version, as shown in the following example:

get_ipdefs -all *axi_interconnect* -filter {UPGRADE_VERSIONS == ""}
Tip: The {UPGRADE_VERSIONS == ""} filter returns IP defs that have no upgrade, and so are the latest version.