IP packaging rules
Rules
vivado_create_interface_ip
load("@rules_vivado//vivado:ip.bzl", "vivado_create_interface_ip")
vivado_create_interface_ip(name, create_interface_ip_template, description, interface, module,
part_number, vendor_display_name)
Package a Vivado interface definition as an IP block. Unlike vivado_create_ip, this does not require a top module.
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| create_interface_ip_template | The TCL template for creating interface IP. | Label | optional | "@rules_vivado//vivado/private:create_interface_ip.tcl.template" |
| description | Description for the IP block. | String | optional | "" |
| interface | The interface definition to package. | Label | required | |
| module | The verilog_library containing the interface source file(s). | Label | optional | None |
| part_number | The targeted xilinx part. | String | required | |
| vendor_display_name | Display name for the vendor. | String | optional | "" |
vivado_create_ip
load("@rules_vivado//vivado:ip.bzl", "vivado_create_ip")
vivado_create_ip(name, create_ip_block_template, encrypt, ip_blocks, ip_library, ip_vendor,
ip_version, jobs, keyfile, module, module_top, part_number)
Use vivado to package a module into an IP core
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| create_ip_block_template | The create project tcl template | Label | optional | "@rules_vivado//vivado/private:create_ip_block.tcl.template" |
| encrypt | Encrypt the sources. Note: This requires a license. See: https://support.xilinx.com/s/article/68071?language=en_US | Boolean | optional | False |
| ip_blocks | Ip blocks to include in this design. | List of labels | optional | [] |
| ip_library | The version of this ip core. | String | required | |
| ip_vendor | The version of this ip core. | String | required | |
| ip_version | The version of this ip core. | String | required | |
| jobs | Jobs to pass to vivado which defines the amount of parallelism. | Integer | optional | 4 |
| keyfile | The keyfile to use when optionally encrypting | Label | optional | "@rules_vivado//vivado/private:xilinx_keyfile.txt" |
| module | The top level build. | Label | required | |
| module_top | The name of the top level verilog module. | String | required | |
| part_number | The targeted xilinx part. | String | required |
vivado_interface_definition
load("@rules_vivado//vivado:ip.bzl", "vivado_interface_definition")
vivado_interface_definition(name, src, abstraction_definition_template, bus_definition_template,
description, direct_connection, interface_name, interface_setup_template,
is_addressable, library, max_masters, max_slaves, parser, vendor, version)
Generate Vivado IP-XACT interface definition files (bus definition and abstraction definition XML).
ATTRIBUTES
| Name | Description | Type | Mandatory | Default |
|---|---|---|---|---|
| name | A unique name for this target. | Name | required | |
| src | The SystemVerilog interface source file to parse. | Label | required | |
| abstraction_definition_template | The abstraction definition XML template. | Label | optional | "@rules_vivado//vivado/private:abstraction_definition.xml.template" |
| bus_definition_template | The bus definition XML template. | Label | optional | "@rules_vivado//vivado/private:bus_definition.xml.template" |
| description | Description for the interface. | String | optional | "" |
| direct_connection | Whether direct connections are allowed. | Boolean | optional | True |
| interface_name | The name of the interface (e.g., 'hbm_reader'). | String | required | |
| interface_setup_template | The interface setup TCL template. | Label | optional | "@rules_vivado//vivado/private:interface_setup.tcl.template" |
| is_addressable | Whether the interface is addressable. | Boolean | optional | True |
| library | The library VLNV component (e.g., 'interface'). | String | optional | "interface" |
| max_masters | Maximum number of masters. | Integer | optional | 1 |
| max_slaves | Maximum number of slaves. | Integer | optional | 1 |
| parser | Python parser script (SV -> JSON). Override to customize SV parsing. | Label | optional | "@rules_vivado//vivado/private:parse_sv_interface" |
| vendor | The vendor VLNV component (e.g., 'mycompany.com'). | String | required | |
| version | The version VLNV component (e.g., '1.0'). | String | optional | "1.0" |