このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
UVM コンポーネント生成の概要
UVM コンポーネント生成の概要
Simulink® Coder™ ライセンスをお持ちの場合は、Simulink モデルから Universal Verification Methodology (UVM) テストベンチと追加コンポーネントを生成できます。UVM コンポーネントを生成すると、Simulink 環境から UVM フレームワークに直接移行できるようになります。
HDL Verifier™ は、ダイレクト プログラミング インターフェイス (DPI) を使用して、UVM コンポーネント内に生成された C コードとして Simulink サブシステムをエクスポートします。生成されたこれらのコンポーネントを既存の UVM 環境に統合できます。生成された動作 DUT を詳細な HDL 設計に置き換えることにより、生成された UVM テスト ベンチを使用して HDL DUT をテストすることもできます。
メモ
このトピックでは、完全な UVM テストベンチの生成について説明します。UVM テストベンチの一部のみを生成する場合は、Simulink ツールストリップまたは単一のサブシステム用の slbuild
関数を使用して個々のコンポーネントを生成できます。個々の UVM コンポーネントの生成の詳細については、Simulink から個別の UVM コンポーネントを生成する を参照してください。
この機能には 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 モデルを示しています。
拡張された Simulink モデル構造
システムターゲットを選択
UVM 生成では SystemVerilog DPI を生成するテクノロジが利用されるため、まずサポートするシステム ターゲット ファイルを選択する必要があります。構成パラメータ ダイアログ ボックスを開き、左側のペインから Code Generation を選択します。システム ターゲット ファイル の場合は、Browse をクリックし、リストから systemverilog_dpi_grt.tlc
を選択します。
あるいは、Embedded Coder® 製品をお持ちの場合は、ターゲット systemverilog_dpi_ert.tlc
を選択できます。このターゲットを使用すると、[構成パラメーター] ダイアログ ボックスの左側のペインから コード生成 を選択したときに、追加のコード生成オプションにアクセスできます。
UVM 生成の例については、Simulink からパラメータ化された UVM テストベンチを生成する を参照してください。
生成されたUVM構造
UVM コンポーネントのこの構造を生成するには、uvmbuild
関数を使用します。
上部 – このモジュールは、生成された動作 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 リファレンス ガイド を参照してください。
生成されたファイルとフォルダ構造
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
構成オブジェクトの buildDirectory
プロパティを設定することで、デフォルトのディレクトリを変更できます。
ディレクトリには、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] |
固定小数点 | ポートは、 |
論理ベクトルの長さ ( |
ビットベクトルの長さ ( |
single | shortreal | ||
double | real | ||
complex | SystemVerilog | ||
ベクトル、行列 | SystemVerilog 配列またはスカラー ポートを選択できます。これらのオプションを選択するには、[構成パラメータ] ダイアログ ボックスの左側のペインで [Code Generation 、 SystemVerilog DPI] を選択し、[Scalarize matrix and vector ports] パラメータを選択します。 たとえば、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 サブシステムを無視します。UVM サブシステムの 1 つを上記以外のブロックまたはサブシステムに接続すると、生成された UVM コンポーネントには未接続のポートが存在します。任意のサブシステム内でフィードバック ループを使用できます。Sequence Feedback ブロックを使用して、スコアボードから seoverviquencer へのフィードバックを作成することもできます。サブシステム間のその他のフィードバック ループは許可されません。
シーケンス、スコアボード、および予測サブシステムは単一のレートで動作する必要があり、サブシステムの基本サンプル時間は等しくなければなりません。サンプル時間の詳細については、システムおよびサブシステム内のサンプル時間 (Simulink)を参照してください。
ドライバ、DUT、およびモニタ サブシステムの基本サンプル時間は等しくなければなりません。ポートはマルチレートにすることができますが、最大公約数 (GCD) または基本サンプル時間は同じである必要があります。
シーケンス、スコアボード、および予測サブシステムのサンプル時間は、ドライバー、DUT、およびモニターの基本サンプル時間以上である必要があります。