このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
svdpiConfiguration
説明
Add-On Required: この機能にはが必要です。
svdpiConfiguration オブジェクトは、MATLAB® 関数からユニバーサル検証手法 (UVM) コンポーネントまたはSystemVerilog DPIコンポーネントを作成するかどうかを制御します。
作成
説明
は、シーケンシャルモジュール用の svdpiObj = svdpiConfiguration()svdpiConfiguration オブジェクトを作成します。
は、svdpiObj = svdpiConfiguration(ComponentKind)ComponentKind で指定されたSystemVerilogモジュールまたは UVM コンポーネント用の svdpiConfiguration オブジェクトを作成します。
プロパティ
コード生成
coder.config('dll') を使用してカスタム構成オブジェクトを指定します。構成オブジェクトのビルドタイプは、ダイナミックライブラリに設定する必要があります。coder.config (MATLAB Coder)を参照してください。
MATLAB 関数に struct や complex などの複合データ型のポートが含まれている場合に、 SystemVerilogポートがどのように生成されるかを選択します。
1— 新しいSystemVerilog型を定義することで構造体を保持します。0— SystemVerilogで複合データ型を個々のメンバーにフラット化します。
データ型: logical
MATLAB 関数にベクトルまたは行列データ型のポートが含まれる場合に、 SystemVerilogポートがどのように生成されるかを選択します。
1— 配列または行列の各要素は、生成されたSystemVerilogコードにスカラー ポートを作成します。0— 生成されたSystemVerilogポートは、MATLAB で定義されているarrayまたはmatrixを保持します。
データ型: logical
DPI コンポーネントを生成する MATLAB 関数の名前。文字ベクトルまたは文字列として指定します。
これはオプションのプロパティです。uvmfTestBenchConfiguration オブジェクトを使用する場合、このオブジェクトに関連付けられた MATLAB 関数名を指定できるのはこの方法だけです。
例: "funcName"
データ型: char | string
ポートのSystemVerilogデータ型として、以下のいずれかの値を選択してください。
CompatibleCType– ポートと互換性のあるCタイプのインターフェースを生成します。BitVector– ポート用のビットベクトル型インターフェースを生成します。LogicVector– ポート用のロジックベクトル型インターフェースを生成します。
この物件に関する詳細については、-PortsDataType を参照してください。
依存関係
このプロパティを有効にするには、ComponentKind プロパティを 'uvmf-predictor'、'uvmf-sequence'、または 'uvmf-custom' に設定します。
MATLAB関数の入力のデータ型とサイズ。セル配列として指定します。生成されるDPIコンポーネントが受け入れる入力タイプを指定します。InputArgsは、各関数引数のタイプを指定するセル配列です。要素はcoder.typeofを使用して型に変換されます。
このプロパティは、codegen (MATLAB Coder) 関数の引数 args と同じ機能を持ちます。
例: {double(0),int8(0)}
依存関係
このプロパティを有効にするには、ComponentKind プロパティを 'uvmf-predictor'、'uvmf-sequence'、または 'uvmf-custom' に設定します。
コンポーネントの情報
SystemVerilog DPIまたは UVM コンポーネント生成用の組み込みテンプレートを 'template-name' として選択します。カスタマイズされたテンプレートの場合は、'custom' を指定してください。
この設定オブジェクトを使用すると、組み込みテンプレート変数の値を上書きできます。オーバーライドの一般的な用途は、型名の競合を回避することで、生成されたコードと既存のテストベンチまたはコンポーネントライブラリとの互換性を確保することです。
すべてのテンプレートに共通するオーバーライドは以下のとおりです。
ComponentTypeName、TestBenchTypeName—svdpiConfigurationオブジェクトのComponentTypeNameおよびTestBenchTypeNameプロパティを設定することで、デフォルト値を上書きします。ComponentPackageTypeName—svdpiConfigurationオブジェクトのTemplateDictionaryプロパティを設定することで、デフォルト値を上書きします。
オプションのテンプレート固有のオーバーライド:
UVMシーケンス:
SequenceTransTypeName、SequencerTypeName、SequenceCount、SequenceFlushCount、ConfigObjTypeName—svdpiConfigurationオブジェクトのTemplateDictionaryプロパティを設定することで、デフォルト値を上書きします。
UVM予測ツール:
InputTransTypeName、OutputTransTypeName、ConfigObjTypeName—svdpiConfigurationオブジェクトのTemplateDictionaryプロパティを設定することで、デフォルト値を上書きします。
UVMスコアボード:
InputTransTypeName、OutputTransTypeName、ConfigObjTypeName—svdpiConfigurationオブジェクトのTemplateDictionaryプロパティを設定することで、デフォルト値を上書きします。
PREDICTOR_INPUTS、MONITOR_INPUTS、CONFIG_OBJECT_INPUTS—svdpiConfigurationオブジェクトでaddPortGroupオブジェクト関数を使用して、HDL ポートをグループにマッピングします。
テンプレートエンジンの詳細については、SystemVerilog と UVM テンプレート エンジンを参照してください。
コンポーネントの型名。文字列または文字ベクトルとして指定します。dpigen 関数は、この引数を使用して、生成されるコンポーネントとSystemVerilogパッケージファイルに名前を付けます。コンポーネントタイプ名を指定しない場合、コンポーネントタイプ名はMATLAB関数名になります。
テストベンチのタイプ名。文字列または文字ベクトルとして指定します。dpigen 関数は、この引数を使用して、生成されるSystemVerilogテストベンチとその関連ファイルに名前を付けます。コンポーネントタイプ名を指定しない場合、テストベンチタイプ名にはMATLABテストベンチ関数の名前が使用されます。
以下のコードでは、dpigen 関数が予測コンポーネントを生成し、指定されたテストベンチ関数名 (my_tb) を使用して、そのコンポーネントのテストベンチモジュールを作成します。
c = svdpiConfiguration('uvm-predictor');
dpigen fooBar -testbench my_tb -config c;そのテストベンチ名を上書きするには、目的のSystemVerilog名を指定してください。この例では、pulse_framed_tb と指定されています。
c = svdpiConfiguration('uvm-predictor');
c.TestBenchTypeName = 'pulse_framed_tb';
dpigen fooBar -testbench my_tb -config c;テンプレート
各テンプレートはテンプレート辞書を定義し、その中でテンプレート固有の変数を宣言します。これらの変数には、変数名とその後に続く値をセル配列として割り当ててください。
テンプレートファイルは、%<gtd. の形式のトークンを Name>Value に展開します。GTDはグローバルテンプレート辞書の略で、設定オブジェクトで定義する変数に加えて、あらかじめ定義された組み込み値を保持します。名前と値は文字列または文字配列である必要があります。
UVMコンポーネントのトランザクションタイプ名やUVMシーケンスコンポーネントのシーケンス数など、デフォルトのテンプレート値をここで上書きします。例を見るには、テンプレート変数の値を上書き にアクセスしてください。
例:
c = svdpiConfiguration('uvm-sequence'); c.TemplateDictionary = { 'SequenceCount', '15', 'SequenceFlushCount', '2', };
テンプレートファイル内の次の行:
repeat (%<gtd.SequenceCount>)
以下に置き換えられます:
repeat (15)
この プロパティ は読み取り専用です。
ポートグループとは、生成されたインターフェースの中で、論理的に互いに関連し合う部分を表すものです。以下に例を示します。
モジュールへのすべての入力は、組み込みテンプレートの
ALL_INPUTSポートグループに属します。モニターから発生するUVMスコアボードモジュールへのすべての入力は、UVMスコアボードテンプレートの
MONITOR_INPUTSポートグループに属します。スコアボード、シーケンス、または予測器への設定入力は、
CONFIG_OBJECT_INPUTSインターフェースに属します。
ALL_INPUTSやALL_OUTPUTSなど、いくつかの組み込みグループが存在します。テンプレートはポートグループを利用して、そのグループに特化したラッパーコードを生成します。
ポートグループは、それぞれaddPortGroup関数またはremovePortGroup関数を使用して変更できます。
例えば、スコアボードにポートグループを追加するには、次のようにします。
c = svdpiConfiguration('uvm-scoreboard'); addPortGroup(c, 'PREDICTOR_INPUTS', {'PeakSq','Location','FilterOut_re','FilterOut_im'}); addPortGroup(c, 'MONITOR_INPUTS', {'PeakSqImplIn','LocationImplIn',... 'FilterOutImpl_re','FilterOutImpl_im'}); addPortGroup(c, 'CONFIG_OBJECT_INPUTS', 'pErrorPercentThreshold');
テンプレートファイルでは、構成オブジェクト定義に以下のコードを含めることで、変数のランダム化が可能になります。
%foreach io = ptd.CONFIG_OBJECT_INPUTS_size
%<ptd.CONFIG_OBJECT_INPUTS[io].PORT_RAND_VAR_DECL>
%endforeachptd.CONFIG_OBJECT_INPUTS_size において、ptd はポートテンプレート辞書を表すことに注意してください。
モジュールまたはコンポーネントを処理する際に使用するテンプレートファイルへのパス。1つ以上のテンプレートを含むセル配列として指定します。
テンプレートファイルは、コンポーネントごとに複数のファイルを生成できます。テンプレートファイルの場所と名前には、絶対パスまたは相対パスを使用できます。相対パスは絶対パスに変換されます。
依存関係
このプロパティを書き込むには、ComponentKind プロパティを 'custom' に設定します。それ以外の場合、このプロパティは読み取り専用です。
コンポーネントのテストベンチを処理する際に使用するテンプレートファイルへのパス。文字列として指定するか、複数のテンプレートを指定する場合はセル配列として指定します。
テンプレートファイルは、コンポーネントごとに複数のファイルを生成できます。ファイル名には絶対パスまたは相対パスを使用できます。相対パスは絶対パスに変換されます。
依存関係
このプロパティを書き込むには、ComponentKind プロパティを 'custom' に設定します。それ以外の場合、このプロパティは読み取り専用です。
オブジェクト関数
addPortGroup | svdpiConfiguration オブジェクトにポート グループ マッピングを追加する |
removePortGroup | svdpiConfiguration オブジェクトからポート グループ マッピングを削除します |
例
この例では、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 sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file sineWaveGen_dpi.h ### Generating file sineWaveGen_pkg.sv ### Generating file sineWaveGen.sv ### Generating makefiles for: sineWaveGen_dpi Code generation successful.
生成されたモジュールの名前をmyDutに変更してください。生成されたSystemVerilogファイルに注目してください。
myDut
.svmyDut
_pkg.sv
c.ComponentTypeName = 'myDut'; dpigen -config c -args {0,0} sineWaveGen
### Generating DPI-C Wrapper sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file sineWaveGen_dpi.h ### Generating file myDut_pkg.sv ### Generating file myDut.sv ### 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 sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file sineWaveGen_dpi.h ### Generating file sinWave_predictor_pkg.sv ### Generating file sineWaveGen_predictor_input_trans.sv ### Generating file sineWaveGen_predictor_output_trans.sv ### Generating file sineWaveGen_predictor_cfgobj.sv ### Generating file sinWave_predictor.sv ### 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 sineWaveGen_dpi.c ### Generating DPI-C Wrapper header file sineWaveGen_dpi.h ### Generating file sinWave_predictor_pkg.sv ### Generating file sineWaveTrans.sv ### Generating file sineWaveOut.sv ### Generating file sineWaveGen_predictor_cfgobj.sv ### Generating file sinWave_predictor.sv ### Generating makefiles for: sineWaveGen_dpi Code generation successful.
バージョン履歴
R2023a で導入CONFIG_OBJECT_INPUTS ポート グループを追加することで、UVM シーケンスまたは予測器に設定ポートを追加できます。addPortGroup 関数を使用して、設定入力を UVM コンポーネントにマッピングします。
予測テンプレートには、PREDICTOR_INPUTS と CONFIG_OBJECT_INPUTS という 2 つの新しいポートグループが追加されました。デフォルトでは、ALL_INPUTS = PREDICTOR_INPUTS です。CONFIG_OBJECT_INPUTS または PREDICTOR_INPUTS を定義すると、ALL_INPUTS = PREDICTOR_INPUTS + CONFIG_OBJECT_INPUTS となります。
同様に、シーケンステンプレートには SEQUENCE_INPUTS と CONFIG_OBJECT_INPUTS という 2 つの新しいポートグループが追加されました。デフォルトでは、ALL_INPUTS = SEQUENCE_INPUTS です。CONFIG_OBJECT_INPUTS または SEQUENCE_INPUTS を定義すると、ALL_INPUTS = SEQUENCE_INPUTS + CONFIG_OBJECT_INPUTS となります。
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)