I want to create a custom IP that uses a Xilinx IP and package this, then use it in my Vivado IPI Block Design.
First choose any IP from the Xilinx IP catalog.
For example, here we will choose the Clocking Wizard:
Customize the IP to meet your design needs, and select OK.
In the Generate Output Products GUI, click the "Out-of-Contest Settings" button:
Deselect the "<IP Name>_0.xci" box as shown below, click OK, then Generate.
Once the IP is generated, a HDL wrapper will need to be created. Each IP has an Instantiation template, so this can be used here.
Note: the Instantiation template HDL language will be created based upon the Target language in the Vivado Project Settings.
The template can be found under the IP Sources tab, as shown below:
Below is an example wrapper using the template information to instantiate the IP:
Select "Include .xci files", this will ensure that the IP is generated whenever the Generate Output Products tool is run:
Note: The IP catalog populates the IP based on the supported devices.
Because of this, the IP Compatibility section will need to be updated to support all target devices.
For example, if the IP is to be used across all devices, this will need to populated here:
Note: To add a device, right click and use the GUI to add a device to the list.
When the IP is generated, this can now be added to an IPI Block Design. If this is a new project, then the IP catalog will need to updated to point to this project.
For example, below is a separate project that is using the IP generated above. Here, the IP repository is updated to point to this project:
Now the IP will be available in the IP catalog.