このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
テンプレートエンジン言語構文
テンプレート ファイルは、さまざまな種類の SystemVerilog DPI コンポーネントと UVM アーティファクトを生成するためにパラメーター化された SystemVerilog コードです。テンプレートは、テンプレート ディレクティブとテンプレート変数を使用して、特定の変数値のコンポーネントを生成します。svdpiConfiguration
オブジェクトのプロパティ、ローカル テンプレート ディクショナリ、およびデザイン固有の情報から変数値を割り当てることができます。
組み込みテンプレート ファイルを使用できないアプリケーションの場合は、ComponentKind
プロパティを custom
に設定した構成を作成し、カスタム テンプレート ファイルを書き込むことができます。
メモ
この機能には ASIC Testbench for HDL Verifier アドオンが必要です。
テンプレートの構造
テンプレートは、まずローカル辞書にテンプレート固有の変数を定義します。また、SystemVerilogTemplateLibrary.svt
などの他のファイルで定義されたテンプレート変数も含まれる場合があります。次に例を示します。
%<BEGIN_LOCAL_DICTIONARY> ComponentPackageTypeName=%<ComponentTypeName>_pkg InputTransTypeName=my_input_trans OutputTransTypeName=my_output_trans %<END_LOCAL_DICTIONARY> %<INCLUDE SystemVerilogTemplateLibrary.svt>
必要なテンプレート変数を定義または含めた後、テンプレートは BEGIN_FILE
ディレクティブと END_FILE
ディレクティブの間に生成される SystemVerilog 成果物の内容を指定します。コンテンツは、ローカル辞書で定義されているかファイルに含まれている SystemVerilog コードとテンプレート変数で構成されます。実行時に、テンプレート エンジンはこれらのテンプレート変数に値を割り当て、SystemVerilog テキストに置き換えます。たとえば、組み合わせモジュール テンプレートの上部の構造は次のようになります。
%<BEGIN_FILE %<ComponentTypeName>.sv> // ------------------------------------------- // File: %<ComponentTypeName>.sv %<SVTLCommonHeader> // this can be a common company header `timescale 1ns/1ns // SV timescale directive import %<ComponentPackageTypeName>::*; // Importing component SV package module %<ComponentTypeName> ( // Module interface declaration %<BEGIN_FOREACH_PORT_CHOP ALL_INS_AND_OUTS> %<PORT_DECL> %<END_FOREACH_PORT_CHOP> ); . . . endmodule %<END_FILE>
ComponentTypeName
が sineWaveGen
の場合、エンジンは BEGIN_FILE
および BEGIN_FILE
ディレクティブで示されているように、sineWaveGen.sv
という名前のファイルに出力を生成します。
例については、MATLAB 関数から SystemVerilog DPI コンポーネントを生成するを参照してください。
// ------------------------------------------- // File: sineWaveGen.sv // ------------------------------------------- // Created: 03-Jan-2023 19:04:05 // Tools : Generated by MATLAB 9.14 and HDL Verifier 7.1 // ------------------------------------------- `timescale 1ns/1ns import sineWaveGen_pkg::*; module sineWaveGen ( input real amp , input real freq , output real y [0:99] ); . . . endmodule
テンプレートディレクティブ
テンプレート ディレクティブは、テンプレート エンジンにファイルの生成、ポート グループの反復処理、変数の定義と使用、SystemVerilog コードの出力を行うための指示を提供します。
テンプレート機能 | テンプレート ディレクティブ | 演算 |
テンプレートコメント | %</* … */> | テンプレート エンジンは、テンプレートを処理するときに、これらのコメント マーカー内のテキストを無視します。 |
結果の出力ファイルの開始と終了をマークする | %<BEGIN_FILE filename> … %<END_FILE> | HDL Verifier™ は、これらのディレクティブ間の処理されたコンテンツを |
テンプレートを含める | %<INCLUDE filename> | 親テンプレート ファイルに別のテンプレート ファイルを含めます。 このディレクティブは、テンプレート ファイル内の |
ローカルテンプレート変数 | %<BEGIN_LOCAL_DICTIONARY> … %<END_LOCAL_DICTIONARY> | このテンプレート ファイルにローカルなテンプレート変数を定義します。 辞書エントリを variable=value の形式で指定します。テンプレート コードでは、
|
テンプレート変数の定義 | %<BEGIN_VARIABLE_DEFINITION> … %<END_VARIABLE_DEFINITION> | 辞書内に複数行のテンプレート変数を定義します。 任意の行数にわたってテンプレート変数を定義します。内容は変数展開されず、参照時にそのままテンプレートに配置されます。 |
ポートグループを反復処理してコードを発行する | %<BEGIN_FOREACH_PORT PortGroup> … %<END_FOREACH_PORT> |
|
ポートグループを反復処理してコードを発行する | %<BEGIN_FOREACH_PORT_CHOP PortGroup> … %<END_FOREACH_PORT_CHOP> |
|
変数名 | %<VAR_NAME> | テンプレート変数を展開します。 コードを生成するとき、HDL Verifier は
|
テンプレート変数
テンプレートを処理するとき、HDL Verifier はテンプレート変数を値に置き換えます。ほとんどの変数値は、グローバル辞書とローカル辞書のエントリの結果です。この表は、システム内の定義済み変数を検索順に示します。カスタム辞書を使用して、独自の変数定義ライブラリを構築できます。
変数ソース | 変数 |
グローバル辞書 この辞書は |
|
ポート辞書 いくつかの組み込みポート グループがあり、
|
宣言用の便利な変数:
|
ローカル辞書 テンプレート ファイルでは、%<BEGIN_LOCAL_DICTIONARY> を使用して辞書を定義できます。直接または INCLUDE を通じて複数の辞書が存在する場合、ローカル辞書はそれらすべてを連結したものになります。変数が異なる辞書で複数回指定されている場合、その定義は以前のすべての定義に優先します。 HDL Verifier は特別な辞書
|
一般的な変数:
Questa® シミュレータ固有の変数:
Xcelium™ シミュレータ固有の変数:
VCS® シミュレータ固有の変数:
Vivado® シミュレータ固有の変数:
|
組み込み変数 これらの変数は組み込みです。 |
|