メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

SystemVerilog DPI コンポーネントで可変サイズのベクトルを使用する

この例では、可変長の入力または出力を持つ SystemVerilog DPI (SVDPI) コンポーネントを構成、生成、および使用する方法を示します。

設計作業

可変サイズのベクトル入力または出力を含む MATLAB® 関数から SVDPI を生成すると、結果は可変サイズの入力または出力を持つ SystemVerilog モジュールになります。SystemVerilog 環境でコンポーネントを構成、生成、使用するには、この例に従ってください。

MATLAB 関数

この例では、入力 vec のサイズが可変である正弦関数である関数 varSizeVectorSupport を使用します。関数の出力は入力から派生するため、出力サイズも可変です。

テストベンチ

提供されている varSizeVectorSupport_tb テストベンチを使用して、固定サイズの信号で関数を刺激します。次に、生成された SystemVerilog モジュールをテストするための SystemVerilog テストベンチを生成します。varSizeVectorSupport 関数から DPI モジュールを再生成する必要なく、生成された SystemVerilog テストベンチのポート タイプを後で変更 (または新しいテストベンチを作成) できます。

生成オプションの設定

サポートされているツールチェーンを指定するには、coder.config (MATLAB Coder) 構成オブジェクトを使用します。build_type を '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® シミュレータではサポートされていません

参考

(MATLAB Coder) | (MATLAB Coder) |

トピック