このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
SystemVerilog DPI コンポーネントで可変サイズのベクトルを使用する
この例では、可変長の入力または出力を持つ SystemVerilog DPI (SVDPI) コンポーネントを構成、生成、および使用する方法を示します。
設計作業
可変サイズのベクトル入力または出力を含む MATLAB® 関数から SVDPI を生成すると、結果は可変サイズの入力または出力を持つ SystemVerilog モジュールになります。SystemVerilog 環境でコンポーネントを構成、生成、使用するには、この例に従ってください。
MATLAB 関数
この例では、入力 vec
のサイズが可変である正弦関数である関数 varSizeVectorSupport
を使用します。関数の出力は入力から派生するため、出力サイズも可変です。
テストベンチ
提供されている varSizeVectorSupport_tb
テストベンチを使用して、固定サイズの信号で関数を刺激します。次に、生成された SystemVerilog モジュールをテストするための SystemVerilog テストベンチを生成します。varSizeVectorSupport
関数から DPI モジュールを再生成する必要なく、生成された SystemVerilog テストベンチのポート タイプを後で変更 (または新しいテストベンチを作成) できます。
生成オプションの設定
サポートされているツールチェーンを指定するには、
構成オブジェクトを使用します。build_type を coder.config
(MATLAB Coder)'dll'
に設定します。
configObj = coder.config('dll');
次に、ツールチェーンをサポートされているシミュレータに設定します。MATLAB ワークスペースで生成されたオブジェクトをダブルクリックして、構成オブジェクト ダイアログ ボックスを開きます。左側のペインで ハードウェア を選択し、ビルド プロセス の下で ツールチェーン をサポートされているシミュレータ (Cadence® Xcelium™、Mentor Graphics® Questa®、または ModelSim®) に設定します。
あるいは、MATLAB コマンド プロンプトでツールチェーンを設定することもできます。たとえば、このコードはツールチェーンを Mentor Graphics QuestaSim/Modelsim (64-bit Windows)
に設定します。
configObj.Toolchain = 'Mentor Graphics QuestaSim/Modelsim (64-bit Windows)';
SystemVerilog DPIコンポーネントを生成する
SystemVerilog モジュールを生成するには、dpigen
関数を使用します。
-config
引数を使用して、構成オブジェクトをdpigen
関数に渡す必要があります。生成されるポートのサイズを指定するには、
-args
引数を使用します。可変長ベクトルに上限値を設定するには、coder.Type
オブジェクトでその値を指定します。たとえば、vec
の上限を 20 に設定するには、MATLAB コマンド プロンプトでこのコードを入力します。
dpigen varSizeVectorSupport -args {coder.typeof(1,[1 20],[0 1]),1,1} -config configObj
生成された SystemVerilog でポート サイズが可変長で無制限であることを指定するには、
inf
を使用します。MATLAB テストベンチ関数から SystemVerilog テストベンチを生成するには、
-testbench
引数を使用します。
dpigen varSizeVectorSupport -testbench varSizeVectorSupport_tb ... -args {coder.typeof(1,[1 inf],[0 1]),1,1} -config configObj
生成されたインターフェース
この例では、コード生成中に vec
が可変サイズのベクトルとして指定されるため、生成された SystemVerilog には可変サイズの入力 vec
と出力 y
が含まれます。出力 y
のデータ型は、入力データ型から派生します。これらの可変サイズのポートは、SystemVerilog オープン配列 ([ ]) として宣言されます。このコードは、varSizeVectorSupport
関数の生成されたインターフェースを示しています。
module varSizeVectorSupport_dpi( input bit clk, input bit clk_enable, input bit reset, input real vec [], input real amp, input real freq, output shortint y [] );
ModelSimでシミュレーションする
ModelSim がシステム パス上にあることを確認します。codegen\dll\varSizeVectorSupport\dpi_tb
という名前のディレクトリに移動します。テストベンチを実行し、ModelSim で生成されたコンポーネントを検証するには、MATLAB コマンド プロンプトでこのコマンドを入力します。
!vsim < run_tb_mq.do
制限
この機能は次のものはサポートしていません:
インターフェース上の可変サイズのマトリックス。モデルに行列がある場合は、入力または出力に接続する前に、それを可変サイズのベクトルに変換します。
可変サイズのフィールドを持つ構造データ型
可変サイズの構造体配列
クロスプラットフォームDPIコンポーネント生成
Synopsys® VCS® シミュレータではサポートされていません
参考
coder.config
(MATLAB Coder) | coder.typeof
(MATLAB Coder) | dpigen