このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
dpigen
MATLAB 関数から UVM または SystemVerilog DPI コンポーネントを生成する
アドオンが必要: この機能には ASIC Testbench for HDL Verifier アドオンが必要です。
構文
説明
dpigen は、MATLAB® 関数 fcn -args argsfcn と fcn が呼び出すすべての関数から DPI コンポーネント共有ライブラリを生成します。
.dllは Microsoft® Windows® システム上の共有ライブラリ用.soは Linux® システム上の共有ライブラリ用
dpigen 関数は、関数宣言を含む SystemVerilog パッケージ ファイルも生成します。
引数 -args args は、生成されたコードが受け入れることができる入力の種類を指定します。生成された DPI コンポーネントは、入力のクラスとサイズに特化されています。この情報を使用して、dpigen は MATLAB 関数の動作をエミュレートする DPI コンポーネントを生成します。
fcn と —args args は必須の入力引数です。MATLAB 関数は MATLAB パスまたは現在のフォルダー内にある必要があります。
dpigen は、fcn -config config -args argssvdpiConfiguration オブジェクトで指定されたテンプレートと設定に基づいて、SystemVerilog または UVM コンポーネントを生成します。SystemVerilog および UVM テンプレートの詳細については、SystemVerilog と UVM テンプレート エンジン を参照してください。
dpigen は、指定されたオプションに従って SystemVerilog DPI コンポーネント共有ライブラリを生成します。任意の順序で、0 個以上のオプション引数を指定できます。 fcn -args args -testbench tb_name options files -c -launchreport -PortsDataType type -ComponentTemplateType template_type
-testbench tb_nameは、SystemVerilog DPI コンポーネントのテストベンチも生成します。MATLAB テストベンチは MATLAB パスまたは現在のフォルダー内にある必要があります。optionsは、コンパイラとコード生成の追加オプションを指定します。filesは、生成されたコードに含めるカスタム ファイルを指定します。-cは C コードのみを生成します。-launchreportはコード生成レポートを生成して開きます。-PortsDataTypeは、ポートに使用する SystemVerilog データ型を指定します。-ComponentTemplateTypeは、設計が順次設計か組み合わせ設計かを指定します。
DPI コンポーネントを生成すると、そのホスト プラットフォームに固有の共有ライブラリが作成されます。たとえば、Windows で 64 ビットの MATLAB を使用すると、64 ビットの DLL が生成されますが、これは Windows の 64 ビット HDL シミュレーターでのみ使用できます。生成されたコンポーネントを Windows から Linux に移植するには、生成されたコンポーネントとテストベンチをLinuxに移植する を参照してください。
例
関数 fun.m とそれに関連するテスト ベンチ fun_tb.m の DPI コンポーネントとテスト ベンチを生成します。dpigen 関数は、デフォルトのコンパイラを使用してコンポーネントを自動的にコンパイルします。-args オプションは、最初の入力タイプが double であり、2 番目の入力タイプが int8 であることを指定します。
dpigen -testbench fun_tb.m -I E:\HDLTools\ModelSim\10.2c-mw-0\questa_sim\include fun.m -args {double(0),int8(0)}
### Generating DPI-C Wrapper fun_dpi.c ### Generating DPI-C Wrapper header file fun_dpi.h ### Generating SystemVerilog module package fun_dpi_pkg.sv ### Generating SystemVerilog module fun_dpi.sv ### Generating makefiles for: fun_dpi ### Compiling the DPI Component ### Generating SystemVerilog test bench fun_tb.sv ### Generating test bench simulation script for Mentor Graphics QuestaSim/Modelsim run_tb_mq.do ### Generating test bench simulation script for Cadence Xcelium run_tb_xcelium.sh ### Generating test bench simulation script for Synopsys VCS run_tb_vcs.sh ### Generating test bench simulation script for Vivado Simulator run_tb_vivado.bat
関数 fun.m とそれに関連するテスト ベンチ fun_tb.m の DPI コンポーネントとテスト ベンチを生成します。dpigen 関数がライブラリをコンパイルしないようにするには、-c オプションを含めます。ソースコードの出力を 'MyDPIProject' に送信します。
dpigen -c -d MyDPIProject -testbench fun_tb.m fun.m -args {double(0),int8(0)}
### Generating DPI-C Wrapper fun_dpi.c ### Generating DPI-C Wrapper header file fun_dpi.h ### Generating SystemVerilog module package fun_dpi_pkg.sv ### Generating SystemVerilog module fun_dpi.sv ### Generating makefiles for: fun_dpi ### Generating SystemVerilog test bench fun_tb.sv ### Generating test bench simulation script for Mentor Graphics ModelSim/QuestaSim run_tb_mq.do ### Generating test bench simulation script for Cadence Xcelium run_tb_xcelium.sh ### Generating test bench simulation script for Synopsys VCS run_tb_vcs.sh ### Generating test bench simulation script for Vivado Simulator run_tb_vivado.bat
この例では、HDL Verifier™ のデフォルト テンプレートを使用して、sineWaveGen 関数から SystemVerilog DPI (SVDPI) コンポーネントを生成する方法を示します。
デフォルトのテンプレートを使用してSVDPIモジュールを作成する
デフォルトのテンプレートを使用して構成オブジェクトを作成し、dpigen 関数で使用します。生成された SystemVerilog ファイルに注意してください。
sineWaveGen.svsineWaveGen_pkg.sv
c=svdpiConfiguration(); dpigen -config c -args {0,0} sineWaveGen
### Generating DPI-C Wrapper /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.h ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_pkg.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen.sv from template text. ### Generating makefiles for: sineWaveGen_dpi Code generation successful.
生成されたモジュールの名前を myDut に変更します。生成された SystemVerilog ファイルに注意してください。
マイダット
.svマイダット
_pkg.sv
c.ComponentTypeName = 'myDut'; dpigen -config c -args {0,0} sineWaveGen
### Generating DPI-C Wrapper /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.h ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/myDut_pkg.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/myDut.sv from template text. ### Generating makefiles for: sineWaveGen_dpi Code generation successful.
テンプレートを使用して UVM 予測子を作成する
UVM 予測テンプレートを使用して構成オブジェクトを作成し、dpigen 関数で使用します。生成された SystemVerilog ファイルに注意してください。
predictor_input_trans.svpredictor_output_trans.svsinWave_predictor_pkg.svsinWave_predictor.sv
c = svdpiConfiguration('uvm-predictor'); c.ComponentTypeName = 'sinWave_predictor'; dpigen sineWaveGen -config c -args {0,0}
### Generating DPI-C Wrapper /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.h ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sinWave_predictor_pkg.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/predictor_input_trans.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/predictor_output_trans.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/predictor_cfgobj.sv from template text.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sinWave_predictor.sv from template text.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
### Generating makefiles for: sineWaveGen_dpi Code generation successful.
テンプレート変数値を上書きする
ここで、生成された SystemVerilog トランザクション名を変更します。
デフォルトの
predictor_input_transを上書きして、名前をsineWaveTransに変更します。デフォルトの
predictor_output_transを上書きして、名前をsineWaveOutに変更します。
テンプレート辞書内の InputTransTypeName 変数と OutputTransTypeName 変数に新しい値を割り当てるには、TemplateDictionary プロパティを設定します。
c.TemplateDictionary = {
'InputTransTypeName','sineWaveTrans',
'OutputTransTypeName','sineWaveOut'
};
dpigen sineWaveGen -config c -args {0,0}### Generating DPI-C Wrapper /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveGen_dpi.h ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sinWave_predictor_pkg.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveTrans.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sineWaveOut.sv from template text. ### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/predictor_cfgobj.sv from template text.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
### Generating source code file /tmp/Bdoc24a_2589924_894856/tpcc27045f/hdlverifier-ex13685125/codegen/dll/sineWaveGen/sinWave_predictor.sv from template text.
Warning: Port group 'CONFIG_OBJECT_INPUTS' was found in the template file but contained no ports in its list. Specify the PortGroups list using the svdpiConfiguration object.
### Generating makefiles for: sineWaveGen_dpi Code generation successful.
入力引数
DPI コンポーネントを生成する MATLAB 関数の名前。文字ベクトルまたは文字列スカラーとして指定されます。MATLAB 関数は MATLAB パスまたは現在のフォルダー内にある必要があります。
svdpiConfiguration オブジェクトを使用してカスタム構成パラメータを指定します。オブジェクトには、coder.config('dll') オブジェクトを使用するカスタム C コード生成パラメータと、sequential-module、uvm-predictor、uvm-sequence、custom など、生成する SystemVerilog コンポーネントの種類の指定が含まれます。
競合するオプションの使用を避けるため、構成オブジェクトとコマンドライン オプションを組み合わせないでください。通常、config オブジェクトは、コマンドライン フラグよりも多くのオプションを提供します。
メモ
coder.config オブジェクトを指定するオプションは、将来のリリースでは非推奨になります。svdpiConfiguration オブジェクトの使用に移行します。
coder.config オブジェクトのすべてのオプションが DPI 機能と互換性があるわけではありません。互換性のないオプションを使用しようとすると、互換性のないオプションを通知するエラー メッセージが表示されます。
MATLAB 関数入力のデータ型とサイズ。セル配列として指定されます。生成された DPI コンポーネントが受け入れる入力タイプを指定します。args は、各関数引数のタイプを指定するセル配列です。要素は coder.typeof を使用して型に変換されます。この引数は必須です。
この引数は、codegen (MATLAB Coder) 関数の引数 args と同じ機能を持ちます。args は関数 fcn にのみ適用されます。
例: -args {double(0),int8(0)}
生成された DPI コンポーネントのテスト ベンチを生成するために使用される MATLAB テスト ベンチ。文字ベクトルまたは文字列スカラーとして指定されます。dpigen 関数は、このテスト ベンチを使用して、データ ファイルと実行スクリプトとともに SystemVerilog テスト ベンチを生成します。MATLAB テストベンチは MATLAB パスまたは現在のフォルダー内にある必要があります。
-testbench 引数には Fixed-Point Designer™ ライセンスが必要です。
例: -testbench My_Test_bench.m
コンパイラおよび codegen オプション。文字ベクトルまたは文字列スカラーとして指定されます。これらのオプションは、codegen (MATLAB Coder) のオプションのサブセットです。dpigen 関数は、構成オブジェクトを使用して指定されたオプションよりも、個々のコマンドライン オプションを優先します。コマンド ライン オプションが競合する場合は、最も右にあるオプションが優先されます。
任意の順序で、0 個以上のオプション引数を指定できます。次に例を示します。
dpigen -c -d MyDPIProject -testbench fun_tb.m fun.m -args {double(0),int8(0)} -launchreport
| オプションフラグ | オプション値 |
|---|---|
-I include_path |
次に例を示します。
MATLAB コードを C/C++ コードに変換する場合、 あるいは、 |
-o output | 生成されたコンポーネントの名前を文字ベクトルまたは文字列スカラーとして指定します。
|
-d dir | 出力フォルダを指定します。生成されたすべてのファイルは たとえば、 |
-globals globals | MATLAB ファイル内のグローバル変数の初期値を指定します。関数内のグローバル変数は、セル配列
MATLAB Coder™ と MATLAB は、それぞれ独自のグローバル データのコピーをもちます。一貫性を保つために、2 つの製品が相互作用するときは常にグローバル データを同期します。データを同期しないと、グローバル変数は異なるものになる可能性があります。 |
-rowmajor | すべての関数で行優先の配列レイアウトを使用するコードを生成するには、このオプションを指定します。このオプションを指定しない場合、生成されたコードは列優先の配列レイアウトを使用します。特定の関数とそれが呼び出す関数に使用される配列レイアウトをオーバーライドするには、関数の本体で coder.rowMajor または coder.columnMajor を指定します。 |
生成されたコードに含めるカスタム ファイル。各ファイルは文字ベクターまたは文字列スカラーとして指定されます。ファイルは、fcn で指定された MATLAB 関数に沿ってビルドされます。各ファイルをスペースで区切って個別にリストします。以下の拡張機能がサポートされています。
| ファイルの種類 | 説明 |
|---|---|
.c | カスタムCファイル |
.cpp | カスタム C++ ファイル |
.h | カスタム ヘッダー ファイル (生成されたすべてのファイルに含まれる) |
.o | オブジェクトファイル |
.obj | オブジェクトファイル |
.a | ライブラリ ファイル |
.so | ライブラリ ファイル |
.lib | ライブラリ ファイル |
Windows では、MATLAB 関数に行列またはベクトルの出力引数または入力引数が含まれている場合は、files オプションを使用して、ModelSim® DPI 定義を含むライブラリ (.lib) を指定します。それ以外の場合は、生成された Makefile (*.mk) を手動で変更し、ライブラリを個別にコンパイルする必要があります。
DPI コンポーネントをコンパイルせずに C コードを生成するオプション。文字ベクトル -c として指定されます。-c オプションを使用しない場合、dpigen はデフォルトのコンパイラを使用して DPI コンポーネントをコンパイルしようとします。別のコンパイラを選択するには、-config オプションを使用し、さまざまなオプションを指定する手順については codegen (MATLAB Coder) のドキュメントを参照してください。
コード生成レポートを生成して開くオプション。文字ベクトル -launchreport として指定されます。
ポートに使用する SystemVerilog データ型を選択します。次の 3 つの値から選択します。
CompatibleCType– ポートに互換性のある C タイプ インターフェースを生成します。BitVector– ポートのビットベクター型インターフェースを生成します。LogicVector– ポートのロジックベクター型インターフェースを生成します。
この表では、左の列に MATLAB データ型が表示され、PortsDataType の各値に対して生成された SystemVerilog 型が表示されます。
生成された SystemVerilog 型
| MATLAB | SystemVerilog | ||
|---|---|---|---|
| 互換Cタイプ | ロジックベクトル | ビットベクター | |
uint8 | byte unsigned | logic [7:0] | bit [7:0] |
uint16 | shortint unsigned | logic [15:0] | bit [15:0] |
uint32 | int unsigned | logic [31:0] | bit [31:0] |
uint64 | longint unsigned | logic [63:0] | bit [63:0] |
int8 | byte | logic signed [7:0] | bit signed [7:0] |
int16 | shortint | logic signed [15:0] | bit signed [15:0] |
int32 | int | logic signed [31:0] | bit signed [31:0] |
int64 | longint | logic signed [63:0] | bit signed [63:0] |
logical | byte unsigned | logic [0:0] | bit [0:0] |
fi (固定小数点データ型) | 固定小数点ワード長に依存します。固定小数点ワード長がホスト ワード サイズより大きい場合 (たとえば、64 ビット対 32 ビット)、このデータ型は MATLAB Coder によって SystemVerilog データ型に変換できず、エラーが発生します。固定小数点ワード長がホストワードサイズ以下の場合、MATLAB Coder は固定小数点データ型を組み込み C 型に変換します。 |
論理ベクトルの長さ ( |
ビットベクトルの長さ ( |
single | shortreal | ||
double | real | ||
complex | コーダは、SystemVerilog コンポーネント内の複素信号を実数部と虚数部に平坦化します。 | ||
| ベクトル、行列 | 配列 たとえば、MATLAB の 4 行 2 列の行列は、SystemVerilog では 8 要素の 1 次元配列に変換されます。デフォルトでは、コーダは列優先の順序で行列をフラット化します。行優先順序に変更するには、 | ||
structure | コーダは、構造要素を SystemVerilog コンポーネント内の個別のポートにフラット化します。 | ||
| 列挙データ型 | enum | ||
SystemVerilog ラッパーの DPI コンポーネント テンプレートを選択します。
Sequential– レジスタを使用したシーケンシャル設計を指定します。Combinational– レジスタなしの組み合わせ設計を指定します。
依存関係
config 引数が svdpiConfiguration オブジェクトに設定されている場合、この引数は無視されます。
関数に永続変数が含まれている場合、それはシーケンシャル設計と見なされます。
バージョン履歴
R2014b で導入MATLAB 関数から UVM コンポーネントまたは SystemVerilog DPI コンポーネントを生成します。新しい svdpiConfiguration オブジェクトを使用して、コンポーネントの種類とコード生成に使用するテンプレートを指定します。一般的なコンポーネントの種類用の組み込みテンプレートを選択するか、独自のカスタム テンプレートを作成します。
config 引数を coder.config オブジェクトで使用することはお勧めしません。代わりに新しい svdpiConfiguration オブジェクトを使用してください。このオブジェクトは、SystemVerilog と UVM テンプレート エンジン の使用のサポートを追加し、SystemVerilog DPI コンポーネントに加えて、MATLAB 関数から UVM コンポーネントを生成できるようにします。
出力が入力の変更を即座に反映するように、組み合わせ MATLAB 関数の DPI コンポーネントを生成します。
新しい -ComponentTemplateType 引数を Combinational に設定して dpigen 関数を使用します。
dpigen myCombFunction -args {0,0} -ComponentTemplateType Combinational
FixedpointDataType 名前と値のペア引数の名前が PortsDataType に変更されました。
行優先配列で DPI-C コードを生成できるようになりました。このレイアウトを指定するには、MATLAB コマンド プロンプトで次のように入力します。
dpigen -rowmajor
あるいは、関数本体に coder.rowMajor を挿入します。
参考
svdpiConfiguration | codegen (MATLAB Coder) | uvmbuild
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)