Define and Add IP Repository to Custom Reference Design
When you create your custom reference design, you might require custom IP modules that
do not come with Altera® Qsys or Xilinx®
Vivado®. To use custom IP modules, create your own IP repository folder that
contains IP module subfolders. The IP Core Generation
workflow then
uses these custom IP modules when creating the reference design project. You can create
multiple IP repositories and add all or some of the IP
modules in each repository to your custom reference design project. You can also reuse
and share IP repositories across multiple reference designs.
Create an IP Repository Folder Structure
Create an IP repository folder anywhere on the MATLAB® path. This figure shows a typical IP repository folder structure.
When you create the folder structure, use the naming convention
+(company)/+(product)/+(tool)
. In this example, the folder
structure is +(mathworks)/+(hdlcoder)/+(vivado)
. The folder
+vivado
acts as the IP repository. This folder contains
subfolders corresponding to IP modules such as AXI4StoHDMI
and
HDMItoAXIS
. The folder also contains a
hdlcoder_video_iplist
MATLAB function. Using this function, specify the IP modules to add to the
reference design.
The same repository folder can have multiple MATLAB functions. This figure shows two MATLAB functions, hdlcoder_video1_iplist
and
hdlcoder_video2_list
, in the +vivado
folder. The functions can share the same IP modules or point to different IP modules
in the repository.
Note
If your synthesis tool is Xilinx Vivado, the IP modules in the repository folder can be in zip file format.
Define IP List Function
Create a MATLAB function that specifies the IP modules to add to the reference design.
Save this function in the IP repository folder. For the function name, use the
naming convention hdlcoder_<specific_use>_iplist
. This
example uses hdlcoder_video_iplist
as the function name because
it targets video applications. Using this function, specify whether you want to add
all or some of the IP modules in the repository to
the reference design project. To add all IP modules, use an empty cell array for
ipList
. This MATLAB code shows how to add all IP modules
in the repository to the reference
design.
function [ipList] = hdlcoder_video_iplist( ) % All IP modules in the repository folder. ipList = {};
If you do not specify the root directory, the function searches for IP modules relative to its location.
function [ipList, rootDir] = hdlcoder_video_iplist( ) % All IP modules with a root directory. ipList = {};
AXI4StoHDMI
IP and the
HDMItoAXIS
IP as the IP modules to add to your custom
reference
design.function [ipList] = hdlcoder_video_iplist( ) % AXI4StoHDMI and HDMItoAXIS IP in the repository folder. ipList = {'AXI4StoHDMI','HDMItoAXIS'};
Add IP List Function to Reference Design Project
Using the addIPRepository
method of the
hdlcoder.ReferenceDesign
class, add the IP
list function to your custom reference design. This example reference design adds
hdlcoder_video_iplist
to the custom reference design
My Reference
Design
.
function hRD = plugin_rd() % Reference design definition % Construct reference design object hRD = hdlcoder.ReferenceDesign('SynthesisTool', 'Xilinx Vivado'); hRD.ReferenceDesignName = 'My Reference Design'; hRD.BoardName = 'ZedBoard' % Tool information hRD.SupportedToolVersion = {'2020.2'}; %% Add custom design files hRD.addCustomVivadoDesign( ... 'CustomBlockDesignTcl', 'system_top.tcl', ... 'VivadoBoardPart', 'em.avnet.com:zed:part0:1.0'); % Add IP Repository hRD.addIPRepository(... 'IPListFunction', 'mathworks.hdlcoder.vivado.hdlcoder_video_iplist', 'NotExistMessage', 'IP repository not found'); % ... % ...
To use the IP modules when the code generator creates the project, open the HDL
Workflow Advisor, and run the IP Core Generation
workflow to the
Create Project task. After running this task, you can see
the IP module subfolders in the repository copied over to the
ipcore
folder of the project. The
CustomBlockDesignTcl
can then use these IP modules.
See Also
hdlcoder.Board
| hdlcoder.ReferenceDesign
Related Examples
- Define Custom Board and Reference Design for AMD Workflow
- Define Custom Board and Reference Design for Intel Workflow