カスタム リファレンス設計に対する IP リポジトリの定義と追加
カスタム リファレンス設計を作成する際に、Altera® Qsys または Xilinx® Vivado® に付属していないカスタム IP モジュールが必要になる場合があります。カスタム IP モジュールを使用するには、IP モジュール サブフォルダーが含まれる独自の IP リポジトリ フォルダーを作成します。IP Core Generation
ワークフローはリファレンス設計プロジェクトを作成する際にこれらのカスタム IP モジュールを使用します。複数の IP リポジトリを作成し、各リポジトリからすべてまたは一部の IP モジュールをカスタム リファレンス設計プロジェクトに追加できます。また、複数のリファレンス設計で IP リポジトリを再利用し、共有することもできます。
IP リポジトリ フォルダー構造の作成
IP リポジトリ フォルダーを MATLAB® パスの任意の場所に作成します。次の図は、一般的な IP リポジトリ フォルダー構造を示しています。
フォルダー構造を作成するときは、命名規則 +(company)/+(product)/+(tool)
を使用します。この例のフォルダー構造は +(mathworks)/+(hdlcoder)/+(vivado)
です。フォルダー +vivado
は IP リポジトリとして機能します。このフォルダーには AXI4StoHDMI
や HDMItoAXIS
などの IP モジュールに対応するサブフォルダーが含まれています。このフォルダーには MATLAB 関数 hdlcoder_video_iplist
も含まれています。この関数を使用して、リファレンス設計に追加する IP モジュールを指定します。
同じリポジトリ フォルダーに複数の MATLAB 関数を追加できます。次の図は、2 つの MATLAB 関数 hdlcoder_video1_iplist
と hdlcoder_video2_list
が +vivado
フォルダーにあることを示しています。関数は同じ IP モジュールを共有することも、リポジトリ内の別の IP モジュールを指すこともできます。
メモ
合成ツールが 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 = {};
ルート ディレクトリを指定しない場合、関数はその位置にある IP モジュールを検索します。
function [ipList, rootDir] = hdlcoder_video_iplist( ) % All IP modules with a root directory. ipList = {};
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 モジュールを使用できるようになります。
参考
hdlcoder.Board
| hdlcoder.ReferenceDesign