このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
UVM コンポーネント生成の概要
UVM コンポーネント生成の概要
Simulink® Coder™ライセンスをお持ちの場合は、 Simulinkからユニバーサル検証手法 (UVM) テストベンチと追加コンポーネントを生成できます。モデル。UVM コンポーネントを生成すると、 Simulink環境から UVM フレームワークに直接移行できます。
HDL Verifier™ は、ダイレクト プログラミング インターフェイス (DPI) をSimulinkサブシステムを UVM コンポーネント内に生成された C コードとしてエクスポートします。これらの生成されたコンポーネントを既存の UVM 環境に統合できます。生成された動作 DUT を詳細な HDL デザインに置き換えることにより、生成された UVM テスト ベンチを使用して HDL DUT をテストすることもできます。
メモ
この機能には、 ASIC Testbench for HDL Verifierアドオンが必要です。
UVM コンポーネント生成用のSimulinkモデルの準備
Simulinkモデルにはこれらのサブシステムが含まれている必要があります。
DUT サブシステム。このサブシステムは、DUT の SystemVerilog DPI (SVDPI) 動作モデルを生成します。SystemVerilog DPI 生成の詳細については、 「 Simulinkによる DPI コンポーネントの生成 」を参照してください。
シーケンス サブシステム。このサブシステムは刺激を作成し、それを DUT に送ります。
スコアボード サブシステム。このサブシステムは、DUT の出力を収集してチェックします。
Simulinkモデル構造図の赤色で示されているように、シーケンスは信号をスコアボードに直接駆動することもできます。
サブシステムの作成方法の詳細については、 サブシステムの作成 (Simulink)を参照してください。
必要なSimulinkモデルの構造
前述の構造に加えて、オプションでこれらのブロックまたはサブシステムを含めることができます。
ドライバーサブシステム
モニターサブシステム
予測サブシステム
Sequence Feedbackブロック (または複数)
メモ
Simulinkモデル内のすべてのサブシステムの名前は、文字で始まり、英数字とアンダースコアの組み合わせを使用する必要があります。
モニター、ドライバー、または予測サブシステムを追加する場合、この機能はこれらの構成をサポートします。
シーケンスから出力されるすべての信号は、ドライバー、プレディクター、またはスコアボードに接続する必要があります。他の出力信号は UVM 生成では無視されます。
モデルにドライバー サブシステムが含まれている場合、ドライバーから出力されるすべての信号を DUT に接続する必要があります。
モデルにドライバー サブシステムが含まれている場合、ドライバーへのすべての入力信号はシーケンス内で発生する必要があります。
モデルにモニター サブシステムが含まれている場合、DUT から出力されるすべての信号をモニターに接続する必要があります。
モデルにモニター サブシステムが含まれている場合は、モニターから出力されるすべての信号をスコアボードに接続する必要があります。
モデルに予測子サブシステムが含まれている場合、予測子へのすべての入力信号はシーケンス内で発生する必要があります。UVM 生成では追加の入力は無視されます。
モデルに予測子サブシステムが含まれている場合は、予測子からのすべての出力信号がスコアボードに接続される必要があります。追加の出力は UVM 生成では無視されます。
モデルにSequence Feedbackブロックが含まれている場合、その入力はスコアボード サブシステムから駆動され、その出力はシーケンス サブシステムに接続する必要があります。
この画像は、ドライバー、モニター、予測サブシステムとSequence Feedbackモデルを示しています。
拡張されたSimulinkモデル構造
システムターゲットの選択
UVM の生成には SystemVerilog DPI を生成するテクノロジが利用されているため、最初にサポートするシステム ターゲット ファイルを選択する必要があります。構成パラメーターダイアログ ボックスを開き、左側のペインからCode Generationを選択します。システム ターゲット ファイル で、 Browseをクリックし、リストからsystemverilog_dpi_grt.tlc
を選択します。
あるいは、 Embedded Coder®製品をお持ちの場合は、ターゲットsystemverilog_dpi_ert.tlc
を選択できます。このターゲットを使用すると、[コンフィギュレーパラメーター] ダイアログ ボックスの左側のペインで [コード生成] を選択すると、追加のコード生成オプションにアクセスできるようになります。
UVM 生成の例については、 Simulinkからパラメーター化された UVM テストベンチを生成を参照してください。
生成された UVM 構造
uvmbuild
関数を使用して、UVM コンポーネントのこの構造を生成します。
上 – このモジュールは、生成された動作 DUT とテスト環境をインスタンス化します。最上位モジュールには、デザインに伝播するクロック信号とリセット信号があります。
DUT – 動作テスト対象設計モジュールは、 Simulink DUT サブシステムから生成されます。
テスト – このモジュールには UVM 環境とシーケンス クラスが含まれています。
シーケンス – この UVM オブジェクトは一連のトランザクションを定義します。シーケンス オブジェクトは、Simulinkシーケンス サブシステムから生成されます。
環境 – このモジュールには、エージェントと生成されたスコアボード、およびオプションで予測子が含まれます。
スコアボード – UVM スコアボードは、 Simulinkスコアボード サブシステムから生成されます。スコアボードは、予想される結果と DUT からの出力を比較します。
エージェント – UVM エージェントには、シーケンサー、ドライバー、モニターが含まれています。Simulinkシーケンス サブシステムからSimulinkスコアボード サブシステムへの直接パスが存在する場合、その信号を監視するために追加のモニターが含まれます。
シーケンサー – このモジュールは、DUT へのシーケンス トランザクションのフローを制御します。
ドライバー – このモジュールはSimulinkドライバー サブシステムから生成され、シーケンスからの各トランザクションを動作 DUT が理解できる信号に変換します。Simulinkモジュールにドライバー サブシステムが含まれていない場合、ドライバーはパススルー UVM ドライバーです。
モニター – このモジュールはSimulinkモニター サブシステムから生成され、動作 DUT からの信号をサンプリングし、UVM スコアボードに送信されるトランザクションを生成します。Simulinkモジュールにモニター サブシステムが含まれていない場合、モニターはパススルー UVM モニターになります。
モニター入力 – このモジュールは、予測子がある場合、またはシーケンスからスコアボード サブシステムへの直接接続がある場合に生成されます。モニター入力はシーケンスから信号をサンプリングし、UVM プレディクターまたはスコアボードに送信されるトランザクションを生成します。
予測子 – このモジュールは、 Simulink予測子サブシステムから生成されます。予測子は DUT の黄金モデルを表します。シーケンスから入力を受け取り、結果を計算し、その結果をスコアボードに送り、DUT の結果と比較します。
UVM コンポーネントと構造の詳細については、 「UVM reference guide」を参照してください。
生成されるファイルとフォルダー構造
UVM コンポーネントを生成する場合、 HDL Verifier はDUT、シーケンス、スコアボード サブシステムから SystemVerilog DPI (SV-DPI) コンポーネントを生成します。また、ドライバー、モニター、またはプレディクター サブシステム用のオプションの SV-DPI コンポーネントも生成します。モデルにはそれらが含まれています。DPI 生成のアーティファクトは、作業ディレクトリ内のuvm_build
という名前のディレクトリに配置されます。このディレクトリには、次の 2 つのディレクトリが含まれます。
– このディレクトリには、生成されたすべての DPI コンポーネントが含まれます。top_model
_dpi_components
– このディレクトリには、UVM テストベンチ、生成された DUT、および共有ライブラリが含まれます。top_model
_uvm_testbench
ここで、
は、最上位のSimulinkモデルの名前です。デフォルトのディレクトリを変更するには、top_model
uvmcodegen.uvmconfig
構成オブジェクトのuvmcodegen.uvmconfig
プロパティを設定します。
ディレクトリには、 top_model
_dpi_components
という名前の最上位モデルの各サブシステム (DUT、シーケンス、スコアボード、ドライバー、モニター、またはプレディクター) のディレクトリが含まれています。各ディレクトリには次のものが含まれます。subsystem
_build
– コンポーネントの関数宣言を含む SystemVerilog パッケージ ファイルsubsystem
_dpi_pkg.sv
– 生成された SystemVerilog コンポーネントsubsystem
_dpi.sv拡張子が .c および .h の DPI コンポーネントおよびヘッダー ファイル
拡張子が .mat、.txt、.dmr、.tmw、および .def のメタデータおよび情報ファイル
コンポーネントを .o および .so ファイルにコンパイルするための makefile
ディレクトリには、生成されたさまざまな UVM コンポーネント用のいくつかのサブフォルダーが含まれています。top_model
_uvm_testbench
DPI_dut
– このフォルダーには、
フォルダーの SystemVerilog パッケージ、モジュール ファイル、および .dll ファイルのコピーが含まれています。dut
_builddriver
(オプション) – このフォルダーは、uvmbuild
関数にドライバー サブシステムを指定した場合に生成されます。このフォルダーには、UVM ドライバー、SystemVerilog パッケージのコピー、および
フォルダーの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。driver
_buildmonitor
(オプション) – このフォルダーは、uvmbuild
関数にモニター サブシステムを指定した場合に生成されます。このフォルダーには、UVM モニター、SystemVerilog パッケージのコピー、および
フォルダーの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。monitor
_buildpredictor
(オプション) – このフォルダーは、uvmbuild
関数に予測子サブシステムを指定した場合に生成されます。このフォルダーには、UVM プレディクター、SystemVerilog パッケージのコピー、プレディクター トランザクション、および
フォルダーの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。predictor
_buildscoreboard
– このフォルダーには、SystemVerilog パッケージのコピーと、
フォルダーの .dll ファイルが含まれています。このフォルダーには、UVM スコアボード クラス、スコアボード構成オブジェクト、およびスコアボードの入力トランザクション タイプを定義するスコアボード トランザクションも含まれています。scoreboard
_buildsequence
– このフォルダーには、SystemVerilog パッケージのコピーと、
フォルダーの .dll ファイルが含まれています。このフォルダーには、UVM シーケンサー、シーケンス クラス、およびシーケンサーからドライバーへのトランザクション タイプを定義するシーケンス トランザクションも含まれています。sequence
_buildtop
– このフォルダーには、最上位Simulinkモデルの SystemVerilog パッケージとモジュール ファイルが含まれています。このフォルダーには、HDL シミュレーターを実行するためのスクリプトも含まれています。uvm_artifacts
– このフォルダーには、これらの SystemVerilog ファイルが含まれています。mw_
– このファイルには、シーケンス、ドライバー、およびモニターをインスタンス化する UVM エージェントが含まれています。DUT
_agent.svmw_
– このファイルには、エージェントとスコアボードをインスタンス化する UVM 環境が含まれています。DUT
_environment.svmw_
– このファイルは、DUT SystemVerilog インターフェイス タイプを定義します。これには、DUT の入力と出力のほか、クロック、リセット、およびクロック イネーブル信号用のポートが含まれています。DUT
_if.svmw_
– このファイルにはパススルー UVM モニターが含まれています。モニターは、ドライバーからスコアボードまたは予測器への信号をサンプリングします。DUT
_monitor_input.svmw_
– このファイルには、環境とシーケンスをインスタンス化する UVM テストが含まれています。テスト モジュールは、DUT
_test.svseq.start
を呼び出してトランザクションを開始します。mw_dpi_types_pkg.sv
– このファイルには、UVM コンポーネント インターフェイスによって公開される、enum
やstruct
などの、生成された SystemVerilog タイプの定義が含まれています。これらのタイプを使用する UVM コンポーネントのみがこのパッケージをインポートします。mw_
– このファイルには、デフォルトでパススルー UVM ドライバーが含まれています。DUT
_driver.svuvmbuild
関数にドライバー サブシステムを指定する場合、このモジュールにはスケジューラーと DPI コンポーネント
への API 呼び出しが含まれます。Driver
_dpi_pkg.svmw_
– このファイルにはパススルー UVM モニターが含まれています。モニターは、DUT からスコアボードに信号をサンプリングします。DUT
_monitor.svuvmbuild
関数にモニター・サブシステムを指定する場合、このモジュールにはスケジューラーと DPI コンポーネント
への API 呼び出しが含まれます。Monitor
_dpi_pkg.sv
この画像は、 drv_and_mon_uvmtb
という名前の最上位モデルに対して生成されたディレクトリ構造を示しています。
サポートされているSimulinkデータ型
サポートされているSimulinkデータ型は、次の表に示すように 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] |
boolean | byte unsigned | logic [0:0] | bit [0:0] |
固定小数点 | ポートは組み込み C タイプに符号拡張されています ( |
論理ベクトルの長さ ( |
ビット ベクトルの長さ ( |
single | shortreal | ||
double | real | ||
complex | SystemVerilog インターフェイスでは、SystemVerilog | ||
ベクトル、行列 | SystemVerilog 配列またはスカラー ポートのいずれかを選択できます。これらのオプションのいずれかを選択するには、[コンフィギュレーションパラメーター]ダイアログ ボックスの左側のペインでCode Generation 、 SystemVerilog DPIを選択し、次にScalarize matrix and vector portsパラメーターを選択します。 たとえば、TG Simulink input logic [31:0] vecInput [0:1] Scalarize matrix and vector portsを選択すると、生成された SystemVerilog には、それぞれタイプ input logic [31:0] vecInput_0, input logic [31:0] vecInput_1 ベクトルおよび配列ポートを生成するとき、コーダーは行列を列優先の順序で平坦化します。 | ||
非バーチャルバス | SystemVerilog インターフェイスでは、SystemVerilog | ||
列挙されたデータ型 | enum |
制限
デフォルトでは、 HDL Verifier は、行列とベクトルを SystemVerilog の 1 次元配列に変換します。たとえば、 Simulinkの 4 行 2 列の行列は、SystemVerilog では 8 つの要素からなる 1 次元配列に変換されます。SystemVerilog インターフェイスで複数のスカラー ポートを生成するには、構成パラメーターでScalarize matrix and vector portsを選択します。
uvmbuild
関数は、DUT、シーケンス、スコアボード、ドライバー、モニター、または予測子サブシステムとして指定されていないSimulinkコンポーネントを無視します。フィードバック ループはどのサブシステム内でも使用できます。Sequence Feedbackブロックを使用して、スコアボードからシーケンサーへのフィードバックを作成することもできます。サブシステム間の他のフィードバック ループは許可されません。
シーケンス、スコアボード、および予測子のサブシステムは単一レートで動作する必要があり、それらのサブシステムの基本サンプル時間は等しい必要があります。サンプル時間の詳細については、 システムおよびサブシステム内のサンプル時間 (Simulink)を参照してください。
ドライバー、DUT、およびモニター サブシステムの基本サンプル時間は等しい必要があります。それらのポートはマルチレートにすることができますが、最大公約数 (GCD) または基本サンプル時間は同じである必要があります。
シーケンス、スコアボード、および予測サブシステムのサンプル時間は、ドライバー、DUT、およびモニターの基本サンプル時間以上である必要があります。