Main Content

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

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

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

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 構造

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

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 reference guide」を参照してください。

生成されるファイルとフォルダー構造

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 構成オブジェクトのuvmcodegen.uvmconfigプロパティを設定します。

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 – このフォルダーには、dut_buildフォルダーの SystemVerilog パッケージ、モジュール ファイル、および .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]
固定小数点

ポートは組み込み C タイプに符号拡張されています ( intint unsignedbytebyte unsignedなど) $$など

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 インターフェイスでは、SystemVerilog structデータ型または実数部と虚数部のフラット化ポートのいずれかを選択できます。これらのオプションのいずれかを選択するには、[コンフィギュレーションパラメーター]ダイアログ ボックスの左側のペインでCode GenerationSystemVerilog DPIを選択し、 Composite data typeパラメーターをstructureに設定します。 $$またはflattened

ベクトル、行列

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

たとえば、TG 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コンポーネントを無視します。

  • フィードバック ループはどのサブシステム内でも使用できます。Sequence Feedbackブロックを使用して、スコアボードからシーケンサーへのフィードバックを作成することもできます。サブシステム間の他のフィードバック ループは許可されません。

  • シーケンス、スコアボード、および予測子のサブシステムは単一レートで動作する必要があり、それらのサブシステムの基本サンプル時間は等しい必要があります。サンプル時間の詳細については、 システムおよびサブシステム内のサンプル時間 (Simulink)を参照してください。

  • ドライバー、DUT、およびモニター サブシステムの基本サンプル時間は等しい必要があります。それらのポートはマルチレートにすることができますが、最大公約数 (GCD) または基本サンプル時間は同じである必要があります。

  • シーケンス、スコアボード、および予測サブシステムのサンプル時間は、ドライバー、DUT、およびモニターの基本サンプル時間以上である必要があります。

参考

関連するトピック

外部の Web サイト