メインコンテンツ

カスタム リファレンス設計に対する IP リポジトリの定義と追加

カスタム リファレンス設計を作成する際に、Altera® Qsys または Xilinx® Vivado® に付属していないカスタム IP モジュールが必要になる場合があります。カスタム IP モジュールを使用するには、IP モジュール サブフォルダーが含まれる独自の IP リポジトリ フォルダーを作成します。IP Core Generation ワークフローはリファレンス設計プロジェクトを作成する際にこれらのカスタム IP モジュールを使用します。複数の IP リポジトリを作成し、各リポジトリからすべてまたは一部の IP モジュールをカスタム リファレンス設計プロジェクトに追加できます。また、複数のリファレンス設計で IP リポジトリを再利用し、共有することもできます。

IP リポジトリ フォルダー構造の作成

IP リポジトリ フォルダーを MATLAB® パスの任意の場所に作成します。次の図は、一般的な IP リポジトリ フォルダー構造を示しています。

IP repository on the MATLAB path

フォルダー構造を作成するときは、命名規則 +(company)/+(product)/+(tool) を使用します。この例のフォルダー構造は +(mathworks)/+(hdlcoder)/+(vivado) です。フォルダー +vivado は IP リポジトリとして機能します。このフォルダーには AXI4StoHDMIHDMItoAXIS などの IP モジュールに対応するサブフォルダーが含まれています。このフォルダーには MATLAB 関数 hdlcoder_video_iplist も含まれています。この関数を使用して、リファレンス設計に追加する IP モジュールを指定します。

同じリポジトリ フォルダーに複数の MATLAB 関数を追加できます。次の図は、2 つの MATLAB 関数 hdlcoder_video1_iplisthdlcoder_video2_list+vivado フォルダーにあることを示しています。関数は同じ IP モジュールを共有することも、リポジトリ内の別の IP モジュールを指すこともできます。

IP repository with multiple IP functions

メモ

合成ツールが Xilinx Vivado の場合、リポジトリ フォルダー内の IP モジュールを zip ファイル形式にすることができます。

IP リスト関数の定義

リファレンス設計に追加する IP モジュールを指定する MATLAB 関数を作成します。この関数を IP リポジトリ フォルダーに保存します。関数名には、命名規則 hdlcoder_<specific_use>_iplist を使用します。次の例はビデオ アプリケーションをターゲットとしているため、hdlcoder_video_iplist を関数名として使用します。この関数を使用して、リファレンス設計プロジェクトに追加する IP モジュールを、リポジトリ内のすべてまたは一部のどちらにするかを指定します。すべての IP モジュールを追加するには、ipList に空の cell 配列を使用します。この MATLAB コードはリポジトリ内のすべての IP モジュールをリファレンス設計に追加する方法を示しています。

function [ipList] = hdlcoder_video_iplist(  )
% All IP modules in the repository folder.

ipList = {};

ルート ディレクトリをオプションの 2 番目の出力引数として IP リスト関数に指定します。この場合、IP モジュールを IP リスト関数と同じパスに配置する必要はありません。IP リポジトリを MATLAB パスの外に配置することもできます。

ルート ディレクトリを指定しない場合、関数はその位置にある IP モジュールを検索します。

function [ipList, rootDir] = hdlcoder_video_iplist( )
% All IP modules with a root directory.

ipList = {};

フォルダー内の一部の IP モジュールを追加するには、文字ベクトルの cell 配列として IP モジュールを指定します。この MATLAB コードは AXI4StoHDMI IP と HDMItoAXIS IP をカスタム リファレンス設計に追加する IP モジュールとして指定します。
function [ipList] = hdlcoder_video_iplist(  )
% AXI4StoHDMI and HDMItoAXIS IP in the repository folder.

ipList = {'AXI4StoHDMI','HDMItoAXIS'};

リファレンス設計プロジェクトへの IP リスト関数の追加

hdlcoder.ReferenceDesign クラスの addIPRepository メソッドを使用して、カスタム リファレンス設計に IP リスト関数を追加します。次のリファレンス設計例は、hdlcoder_video_iplist をカスタム リファレンス設計 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');

% ...
% ...

コード ジェネレーターがプロジェクトを作成する際に IP モジュールを使用するには、HDL ワークフロー アドバイザーを開き、[プロジェクトを作成] タスクに対して IP Core Generation ワークフローを実行します。このタスクを実行した後、プロジェクトの ipcore フォルダーにコピーされたリポジトリ内で IP モジュールのサブフォルダーを確認できます。これで CustomBlockDesignTcl はこれらの IP モジュールを使用できるようになります。

参考

|

トピック