Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

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 モデル構造

Image shows a block diagram with a sequence, a DUT, and a scoreboard subsystem. An arrow connects from the sequence to the DUT, and another arrow connects from the DUT to the scoreboard.

以前の構造に加えて、オプションでこれらのブロックまたはサブシステムを含めることができます。

  • ドライバーサブシステム

  • モニターサブシステム

  • 予測サブシステム

  • Sequence Feedback ブロック (または複数)

メモ

Simulink モデル内のすべてのサブシステムの名前は、文字で始まり、英数字とアンダースコアの組み合わせを使用する必要があります。

モニター、ドライバー、または予測サブシステムを追加する場合、この機能はこれらの構成をサポートします。

  • シーケンスから出力されるすべての信号は、ドライバー、プレディクター、またはスコアボードに接続する必要があります。UVM 生成では他の出力信号は無視されます。

  • モデルにドライバ サブシステムが含まれている場合は、ドライバから出力されるすべての信号を DUT に接続する必要があります。

  • モデルにドライバー サブシステムが含まれている場合、ドライバーへのすべての入力信号はシーケンス内で発生する必要があります。

  • モデルにモニター サブシステムが含まれている場合は、DUT から出力されるすべての信号をモニターに接続する必要があります。

  • モデルにモニター サブシステムが含まれている場合は、モニターから出力されるすべての信号をスコアボードに接続する必要があります。

  • モデルに予測サブシステムが含まれている場合、予測へのすべての入力信号はシーケンス内で発生する必要があります。UVM 生成では追加の入力は無視されます。

  • モデルに予測サブシステムが含まれている場合、予測からのすべての出力信号をスコアボードに接続する必要があります。UVM 生成では追加の出力は無視されます。

  • モデルに Sequence Feedback ブロックが含まれている場合、その入力はスコアボード サブシステムから駆動され、出力はシーケンス サブシステムに接続する必要があります。

この画像は、ドライバー、モニター、予測サブシステム、および Sequence Feedback ブロックを含む Simulink モデルを示しています。

拡張された Simulink モデル構造

Image shows a block diagram with a sequence, a DUT, and a scoreboard subsystem. There is a driver subsystem between the sequence and the DUT, a monitor subsystem between the DUT and the scoreboard, and a predictor subsystem between the sequence and the scoreboard. The model also includes a Sequence Feedback block carrying data back from the scoreboard to the sequence subsystems.

システムターゲットを選択

UVM 生成では SystemVerilog DPI を生成するテクノロジが利用されるため、まずサポートするシステム ターゲット ファイルを選択する必要があります。構成パラメータ ダイアログ ボックスを開き、左側のペインから Code Generation を選択します。システム ターゲット ファイル の場合は、Browse をクリックし、リストから systemverilog_dpi_grt.tlc を選択します。

あるいは、Embedded Coder® 製品をお持ちの場合は、ターゲット systemverilog_dpi_ert.tlc を選択できます。このターゲットを使用すると、[構成パラメーター] ダイアログ ボックスの左側のペインから コード生成 を選択したときに、追加のコード生成オプションにアクセスできます。

UVM 生成の例については、Simulink からパラメータ化された UVM テストベンチを生成する を参照してください。

生成されたUVM構造

UVM コンポーネントのこの構造を生成するには、uvmbuild 関数を使用します。

Image shows a UVM block diagram with a DUT and a Test module in the Top module. The Test includes an Environment module and a sequence. The Environment includes a module for the scoreboard, the predictor, and an Agent module. The Agent Includes a sequencer that communicates with the Sequence in the Test module, get an input from the Scoreboard, and communicates with a driver module. The driver drives a monitor and a Monitor-Input block. The monitor connects to the Scoreboard, and the Monitor input connects to the Scoreboard directly, or via the Predictor module in the Environment.

  • 上部 – このモジュールは、生成された動作 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 つのディレクトリが含まれます。

  • top_model_dpi_components – このディレクトリには、生成されたすべての DPI コンポーネントが含まれます。

  • top_model_uvm_testbench – このディレクトリには、UVM テストベンチ、生成された DUT、および共有ライブラリが含まれます。

ここで、top_model は最上位の Simulink モデルの名前です。uvmcodegen.uvmconfig 構成オブジェクトの buildDirectory プロパティを設定することで、デフォルトのディレクトリを変更できます。

top_model_dpi_components ディレクトリには、subsystem_build という名前の最上位モデル (DUT、シーケンス、スコアボード、ドライバー、モニター、または予測子) 内の各サブシステムのディレクトリが含まれています。各ディレクトリには以下が含まれます。

  • subsystem_dpi_pkg.sv – コンポーネントの関数宣言を含む SystemVerilog パッケージ ファイル

  • subsystem_dpi.sv – 生成されたSystemVerilogコンポーネント

  • 拡張子が .c および .h の DPI コンポーネントおよびヘッダー ファイル

  • 拡張子が .mat、.txt、.dmr、.tmw、.def のメタデータおよび情報ファイル

  • コンポーネントを .o および .so ファイルにコンパイルするための makefile

top_model_uvm_testbench ディレクトリには、生成されたさまざまな UVM コンポーネント用のサブフォルダーがいくつか含まれています。

  • DPI_dut – このフォルダーには、SystemVerilog パッケージ、モジュール ファイル、および dut_build フォルダーの .dll ファイルのコピーが含まれています。

  • driver (オプション) – このフォルダーは、uvmbuild 関数にドライバー サブシステムを指定した場合に生成されます。このフォルダーには、UVM ドライバー、SystemVerilog パッケージのコピー、および driver_build フォルダーからの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。

  • monitor (オプション) – uvmbuild 関数にモニター サブシステムを指定した場合、このフォルダーが生成されます。このフォルダーには、UVM モニター、SystemVerilog パッケージのコピー、および monitor_build フォルダーからの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。

  • predictor (オプション) – このフォルダーは、uvmbuild 関数に予測サブシステムを指定した場合に生成されます。このフォルダーには、UVM 予測子、SystemVerilog パッケージのコピー、予測子トランザクション、および predictor_build フォルダーからの共有ライブラリ ファイル (dll ファイルまたは so ファイル) が含まれています。

  • scoreboard – このフォルダーには、SystemVerilog パッケージのコピーと、scoreboard_build フォルダーの .dll ファイルが含まれています。このフォルダーには、UVM スコアボード クラス、スコアボード構成オブジェクト、およびスコアボードの入力トランザクション タイプを定義するスコアボード トランザクションも含まれています。

  • sequence – このフォルダーには、SystemVerilog パッケージのコピーと、sequence_build フォルダーの .dll ファイルが含まれています。このフォルダーには、UVM シーケンサー、シーケンス クラス、およびシーケンサーからドライバーへのトランザクション タイプを定義するシーケンス トランザクションも含まれます。

  • top – このフォルダーには、最上位の Simulink モデルの SystemVerilog パッケージとモジュール ファイルが含まれています。このフォルダーには、HDL シミュレータ実行用のスクリプトも含まれています。

  • uvm_artifacts – このフォルダーにはこれらの SystemVerilog ファイルが含まれています。

    • mw_DUT_agent.sv – このファイルには、シーケンス、ドライバー、およびモニターをインスタンス化する UVM エージェントが含まれています。

    • mw_DUT_environment.sv – このファイルには、エージェントとスコアボードをインスタンス化する UVM 環境が含まれています。

    • mw_DUT_if.sv – このファイルは、DUT SystemVerilog インターフェース タイプを定義します。DUT 入力と出力のほか、クロック、リセット、クロック イネーブル信号用のポートが含まれています。

    • mw_DUT_monitor_input.sv – このファイルにはパススルー UVM モニターが含まれています。モニターは、ドライバーからスコアボードまたは予測装置への信号をサンプリングします。

    • mw_DUT_test.sv – このファイルには、環境とシーケンスをインスタンス化する UVM テストが含まれています。テスト モジュールは、seq.start を呼び出してトランザクションを開始します。

    • mw_dpi_types_pkg.sv – このファイルには、UVM コンポーネント インターフェイスによって公開される、enumstruct などの生成された SystemVerilog 型の定義が含まれています。これらのタイプを使用する UVM コンポーネントのみがこのパッケージをインポートします。

    • mw_DUT_driver.sv – このファイルには、デフォルトでパススルー UVM ドライバーが含まれています。uvmbuild 関数にドライバー サブシステムを指定する場合、このモジュールにはスケジューラと DPI コンポーネント Driver_dpi_pkg.sv への API 呼び出しが含まれます。

    • mw_DUT_monitor.sv – このファイルにはパススルー UVM モニターが含まれています。モニターは DUT からスコアボードへの信号をサンプリングします。uvmbuild 関数にモニター サブシステムを指定する場合、このモジュールにはスケジューラと DPI コンポーネント Monitor_dpi_pkg.sv への API 呼び出しが含まれます。

この画像は、drv_and_mon_uvmtb という名前の最上位モデルに対して生成されたディレクトリ構造を示しています。

Generated directory structure for a top level model named drv_and_mon_uvmtb. A directory named "drv_and_mon_uvmtb_dpi_components" is expanded to show contents, and a directory named "drv_and_mon_uvmtb_uvm_testbench" is expanded to show contents.

サポートされているSimulinkデータ型

サポートされている Simulink データ型は、この表に示すように SystemVerilog データ型に変換されます。

生成された SystemVerilog 型

MATLAB®SystemVerilog
互換Cタイプロジックベクトルビットベクター
uint8byte unsignedlogic [7:0] bit [7:0]
uint16shortint unsignedlogic [15:0] bit [15:0]
uint32int unsignedlogic [31:0]bit [31:0]
uint64longint unsignedlogic [63:0]bit [63:0]
int8bytelogic signed [7:0]bit signed [7:0]
int16shortintlogic signed [15:0]bit signed [15:0]
int32intlogic signed [31:0]bit signed [31:0]
int64longintlogic signed [63:0]bit signed [63:0]
booleanbyte unsignedlogic [0:0]bit [0:0]
固定小数点

ポートは、intint unsignedbytebyte unsigned などの組み込み C 型に符号拡張されます。

logic [n-1:0]

logic signed [n-1:0]

論理ベクトルの長さ (n) は wordlength と等しくなります。符号は固定小数点型から継承されます。

bit [n-1:0]

bit signed [n-1:0]

ビットベクトルの長さ (n) は wordlength と等しくなります。符号は固定小数点型から継承されます。

singleshortreal
doublereal
complex

SystemVerilog struct データ型、または SystemVerilog インターフェイスの実数部と虚数部のフラット化されたポートを選択できます。これらのオプションを選択するには、[構成パラメータ] ダイアログ ボックスの左側のペインで Code GenerationSystemVerilog DPI を選択し、Composite data type パラメータを structure または flattened に設定します。

ベクトル、行列

SystemVerilog 配列またはスカラー ポートを選択できます。これらのオプションを選択するには、[構成パラメータ] ダイアログ ボックスの左側のペインで [Code GenerationSystemVerilog DPI] を選択し、[Scalarize matrix and vector ports] パラメータを選択します。

たとえば、Simulink 内の uint32 型の 2 要素ベクトルは、次の SystemVerilog ベクトル ポートを生成します。

input logic [31:0] vecInput [0:1]

Scalarize matrix and vector ports を選択すると、生成された SystemVerilog には、それぞれタイプ logic [31:0] の次の 2 つのポートが含まれます。

input logic [31:0] vecInput_0,
input logic [31:0] vecInput_1

ベクトルおよび配列ポートを生成する場合、コーダは列優先の順序で行列をフラット化します。

非バーチャル バス

SystemVerilog インターフェースの個別のコンポーネント信号には、SystemVerilog struct タイプまたはフラット化されたポートを選択できます。これらのオプションを選択するには、[構成パラメータ] ダイアログ ボックスの左側のペインで、Code GenerationSystemVerilog DPI セクションを選択し、 Composite data typestructure または flattened に設定します。

列挙データ型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、およびモニターの基本サンプル時間以上である必要があります。

参考

関連するトピック

外部の Web サイト