このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
dpigen
MATLAB 関数から UVM または SystemVerilog DPI コンポーネントを生成する
アドオンが必要: この機能には ASIC Testbench for HDL Verifier アドオンが必要です。
構文
説明
dpigen
は、MATLAB® 関数 fcn
-args args
fcn
と 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 args
svdpiConfiguration
オブジェクトで指定されたテンプレートと設定に基づいて、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に移植する を参照してください。
例
DPIコンポーネントとテストベンチを生成する
関数 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
コンパイルせずにDPIコンポーネントとテストベンチを生成する
関数 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
MATLAB 関数から SystemVerilog DPI コンポーネントを生成する
この例では、HDL Verifier™ のデフォルト テンプレートを使用して、sineWaveGen
関数から SystemVerilog DPI (SVDPI) コンポーネントを生成する方法を示します。
デフォルトのテンプレートを使用してSVDPIモジュールを作成する
デフォルトのテンプレートを使用して構成オブジェクトを作成し、dpigen
関数で使用します。生成された SystemVerilog ファイルに注意してください。
sineWaveGen.sv
sineWaveGen_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.sv
predictor_output_trans.sv
sinWave_predictor_pkg.sv
sinWave_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.
入力引数
fcn
— MATLAB関数の名前
文字ベクトル | string スカラー
DPI コンポーネントを生成する MATLAB 関数の名前。文字ベクトルまたは文字列スカラーとして指定されます。MATLAB 関数は MATLAB パスまたは現在のフォルダー内にある必要があります。
-config
— SystemVerilog DPI 構成
svdpiConfiguration
オブジェクト | coder.config
オブジェクト
svdpiConfiguration
オブジェクトを使用してカスタム構成パラメータを指定します。オブジェクトには、coder.config('dll')
オブジェクトを使用するカスタム C コード生成パラメータと、sequential-module
、uvm-predictor
、uvm-sequence
、custom
など、生成する SystemVerilog コンポーネントの種類の指定が含まれます。
競合するオプションの使用を避けるため、構成オブジェクトとコマンドライン オプションを組み合わせないでください。通常、config
オブジェクトは、コマンドライン フラグよりも多くのオプションを提供します。
メモ
coder.config
オブジェクトを指定するオプションは、将来のリリースでは非推奨になります。svdpiConfiguration
オブジェクトの使用に移行します。
coder.config
オブジェクトのすべてのオプションが DPI 機能と互換性があるわけではありません。互換性のないオプションを使用しようとすると、互換性のないオプションを通知するエラー メッセージが表示されます。
-args args
— MATLAB関数入力のデータ型とサイズ
cell 配列
MATLAB 関数入力のデータ型とサイズ。セル配列として指定されます。生成された DPI コンポーネントが受け入れる入力タイプを指定します。args
は、各関数引数のタイプを指定するセル配列です。要素は coder.typeof
を使用して型に変換されます。この引数は必須です。
この引数は、codegen
(MATLAB Coder) 関数の引数 args
と同じ機能を持ちます。args
は関数 fcn
にのみ適用されます。
例: -args {double(0),int8(0)}
-testbench tb_name
— 生成された DPI コンポーネントのテストベンチを生成するために使用される MATLAB テストベンチ
文字ベクトル | string スカラー
生成された DPI コンポーネントのテスト ベンチを生成するために使用される MATLAB テスト ベンチ。文字ベクトルまたは文字列スカラーとして指定されます。dpigen
関数は、このテスト ベンチを使用して、データ ファイルと実行スクリプトとともに SystemVerilog テスト ベンチを生成します。MATLAB テストベンチは MATLAB パスまたは現在のフォルダー内にある必要があります。
-testbench
引数には Fixed-Point Designer™ ライセンスが必要です。
例: -testbench My_Test_bench.m
options
— コンパイラとコード生成オプション
文字ベクトル | string スカラー
コンパイラおよび 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 を指定します。 |
files
— 生成されたコードに含めるカスタムファイル
文字ベクトル | string スカラー
生成されたコードに含めるカスタム ファイル。各ファイルは文字ベクターまたは文字列スカラーとして指定されます。ファイルは、fcn
で指定された MATLAB 関数に沿ってビルドされます。各ファイルをスペースで区切って個別にリストします。以下の拡張機能がサポートされています。
ファイルの種類 | 説明 |
---|---|
.c | カスタムCファイル |
.cpp | カスタム C++ ファイル |
.h | カスタム ヘッダー ファイル (生成されたすべてのファイルに含まれる) |
.o | オブジェクトファイル |
.obj | オブジェクトファイル |
.a | ライブラリ ファイル |
.so | ライブラリ ファイル |
.lib | ライブラリ ファイル |
Windows では、MATLAB 関数に行列またはベクトルの出力引数または入力引数が含まれている場合は、files
オプションを使用して、ModelSim® DPI 定義を含むライブラリ (.lib
) を指定します。それ以外の場合は、生成された Makefile (*.mk
) を手動で変更し、ライブラリを個別にコンパイルする必要があります。
-c
— Cコードのみを生成するオプション
文字ベクトル | string スカラー
DPI コンポーネントをコンパイルせずに C コードを生成するオプション。文字ベクトル -c
として指定されます。-c
オプションを使用しない場合、dpigen
はデフォルトのコンパイラを使用して DPI コンポーネントをコンパイルしようとします。別のコンパイラを選択するには、-config
オプションを使用し、さまざまなオプションを指定する手順については codegen
(MATLAB Coder) のドキュメントを参照してください。
-launchreport
— コード生成レポートを生成して開くオプション
文字ベクトル | string スカラー
コード生成レポートを生成して開くオプション。文字ベクトル -launchreport
として指定されます。
-PortsDataType
— ポート用に生成されたSystemVerilogデータ型
Compatible C Type
| Bit Vector
| Logic Vector
ポートに使用する 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 |
-ComponentTemplateType
— 組み合わせSystemVerilog DPIコンポーネントを生成するオプション
Sequential
(既定値) | Combinational
SystemVerilog ラッパーの DPI コンポーネント テンプレートを選択します。
Sequential
– レジスタを使用したシーケンシャル設計を指定します。Combinational
– レジスタなしの組み合わせ設計を指定します。
依存関係
config
引数が svdpiConfiguration
オブジェクトに設定されている場合、この引数は無視されます。
関数に永続変数が含まれている場合、それはシーケンシャル設計と見なされます。
バージョン履歴
R2014b で導入R2023a: svdpiConfiguration
オブジェクトのサポート
MATLAB 関数から UVM コンポーネントまたは SystemVerilog DPI コンポーネントを生成します。新しい svdpiConfiguration
オブジェクトを使用して、コンポーネントの種類とコード生成に使用するテンプレートを指定します。一般的なコンポーネントの種類用の組み込みテンプレートを選択するか、独自のカスタム テンプレートを作成します。
R2023a: 非推奨
config
引数を coder.config
オブジェクトで使用することはお勧めしません。代わりに新しい svdpiConfiguration
オブジェクトを使用してください。このオブジェクトは、SystemVerilog と UVM テンプレート エンジン の使用のサポートを追加し、SystemVerilog DPI コンポーネントに加えて、MATLAB 関数から UVM コンポーネントを生成できるようにします。
R2022a: 組み合わせ設計のサポート
出力が入力の変更を即座に反映するように、組み合わせ MATLAB 関数の DPI コンポーネントを生成します。
新しい -ComponentTemplateType
引数を Combinational
に設定して dpigen
関数を使用します。
dpigen myCombFunction -args {0,0} -ComponentTemplateType Combinational
R2020b: 関数入力の名前が変更されました
FixedpointDataType
名前と値のペア引数の名前が PortsDataType
に変更されました。
R2018a: 行優先配列のサポート
行優先配列で DPI-C コードを生成できるようになりました。このレイアウトを指定するには、MATLAB コマンド プロンプトで次のように入力します。
dpigen -rowmajor
あるいは、関数本体に coder.rowMajor
を挿入します。
参考
svdpiConfiguration
| codegen
(MATLAB Coder) | uvmbuild
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)