バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • シノプシスの検証用IPとUVMを使用してテストベンチを作成する5つの手順

2017 May Spring vol.106

シノプシスの検証用IPとUVMを使用してテストベンチを作成する5つの手順

シノプシス コーポレート・アプリケーション担当ディレクター Amit Sharma

手順2:VIPをDUTに接続する

DUTハーネスはDUTをインスタンシエートし、DUTのすべてのI/O信号を駆動および観測するのに必要なサポート一式を提供します。また、クロック/リセット信号を生成し、検証用IPのI/OサイドをDUTに接続する役割もあります。

最上位テストベンチでVIPをDUTに接続するには、次の手順を実行します。

  • UVMとVIPの標準ファイルおよびパッケージをインクルードする

    `include “uvm_pkg.sv”
    `include “svt_axi.uvm.pkg”
    `include “svt_axi_if.svi” //top-level AXI interface
    import uvm_pkg::*;
    import svt_uvm_pkg::*;
    import svt_axi_uvm_pkg::*;

  • 最上位AXIインターフェイスをインスタンシエートしてシステム・クロックに接続する

    svt_axi_if axi_if();
    assign axi_if.common_aclk = <system clock>;

  • 最上位AXIインターフェイスをDUTおよびAXIシステム環境に接続する
    dut dut_inst(axi_if); uvm_config_db#(svt_axi_vif)::set(uvm_root::get(),
    “uvm_test_top.env.axi_system_env”, “vif”, axi_if);

uvm_config_dbコマンドにより、最上位AXIインターフェイスをAXIシステム環境の仮想インターフェイスに接続します。「uvm_test_top」はUVM環境の最上位モジュールを表します。「env」はユーザーのテストベンチ環境のインスタンスです。「axi_system_env」はAXIシステム環境(svt_axi_system_env)のインスタンスです。

  • AXIマスタおよびスレーブ・エージェント・インターフェイスのリセット・ピンを任意のリセット信号に接続する

    assign axi_if.master_if[0].aresetn = <User-select Reset Signal>;
    assign axi_if.slave_if[0].aresetn = <User-select Reset Signal>;

テスト・シーケンスの各手順の詳細は、この後のセクションでご説明します。

手順3:VIPをインスタンシエート/コンフィギュレーションする

シノプシスは、シノプシスのVIPモデルをすぐに使える形で提供されているコンフィギュレーション・オブジェクトを使用してコンフィギュレーションしています。環境コンフィギュレーション・クラスはuvm_objectクラスから継承します。パブリック・メンバーはすべてこのクラスの中で「rand」として宣言します。それ以外のサブ環境コンフィギュレーションもこのクラスのメンバーにできます。これらのサブコンフィギュレーションは最上位コンフィギュレーション・オブジェクトのコンストラクタ内に作成されます。エンジニアはコンフィギュレーション・オブジェクトをその他のオブジェクトと同じように扱うことができ、これらオブジェクトをランダム化してメソッドに引数として渡すことができます。オブジェクトには、プロトコルの限界値を超えないようにするための制約条件が付随します。これらは、必要に応じて制御または拡張して特定のテスト条件を作成することも、あるいはそのまま使用して幅広いスティミュラスを生成することもできます。

AXIシステム・コンフィギュレーション・クラスをカスタマイズするには、AXIシステム・コンフィギュレーション・クラス(svt_axi_system_configuration)を継承し、必要なコンフィギュレーション・パラメータを指定します。

次に例を示します。

手順3:図1

カスタマイズしたコンフィギュレーション・オブジェクトを作成したら、このインスタンスをテストベンチ環境のbuild_phaseでシステム環境(svt_axi_system_envのインスタンス)に渡す必要があります。

手順3:図2

設定が完了したら、テストベンチ環境のbuild_phase()メソッド(手順1を参照)でコンフィギュレーション・データベースから最上位コンフィギュレーション・オブジェクトを取得します。こうすると、コンフィギュレーション・オブジェクトの値を使用して各サブコンポーネント(エージェント、サブ環境、スコアボードなど)をインスタンシエートできます。

カテゴリートップ