バックナンバーはこちら

today&tomorrow

Technology Update

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

2017 May Spring vol.106

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

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

手順4:テスト・シーケンスを作成する

シノプシスのVIPとUVMによって提供されるオブジェクト・ベース・インターフェイスを使用すると、各種標準インターフェイスに対して必要なトラフィック・パターンを作成する際、制約条件付きランダム生成の使用方法に違いが生じます。これは小さな変化ですが、非常に重要な移行です。プロトコルはモデルによってトランザクション・オブジェクトに抽象化されるため、制約条件付きランダム・オブジェクトを生成するだけでテスト条件を指定できます。従来と異なるのは、トランザクションをネイティブな言語構文(制約条件、代入文)を使用してプロトコル・レベルで定義できるという点です。これにより、検証エンジニアはモデルの詳細に立ち入ることなくプロトコル・レベルで考えられるようになります。この抽象化により、より自然で効率的な思考プロセスが可能になります。

これを可能にするため、VIPには異なるプロトコル・エージェントごとにベース・シーケンス・クラスが用意されています。たとえば、AXIマスタ・エージェントならsvt_axi_master_base_sequence、AXIスレーブ・エージェントならsvt_axi_slave_base_sequenceといった具合です。これらのベース・シーケンスを継承してAXIマスタおよびスレーブ・エージェントに対するテスト・シーケンスを作成できます。VIPにはシーケンス・コレクションもあります。これは、基本的にはこれらのベース・シーケンスから継承したランダムおよびセミ・ダイレクト・シーケンスのリストです。これらのシーケンスを実行するとシーケンス・アイテム(トランザクション)が生成され、これをシーケンサがドライバに送信して実行します。シーケンサは並列に実行されている複数のシーケンスを調停し、どのシーケンスが次のシーケンス・アイテム(トランザクション)を生成するかを選択します。生成されたシーケンス・アイテムは、ドライバに送信されて実行されます。

シーケンサで実行されるシーケンス内で生成されるシーケンス・アイテムは、いわばランダム化のためのブループリント(設計図)であり、生成したオブジェクトのテンプレートでもあります。シノプシスのVIPモデルを使用する際には、提供されるベース・トランザクション(uvm_sequence_itemから継承したもの)のオブジェクトを継承し、ユーザーが独自に定義した制約条件を適用することによってモデルを操作できます。UVMの「ファクトリ・オーバーライド」メカニズムを使用すると、トランザクションをランダム化する際にユーザー制約条件が適用され、しかも継承規則により、継承したオブジェクトがシーケンサによってドライバに駆動されます。シノプシスのVIPモデルではこれらのトランザクション・オブジェクトにユーザー・データ・メンバーを追加することもでき、トランザクション自体をユーザーがカスタマイズできます。これについての詳細は、本稿では割愛します。

手順5:テストを作成する

テスト制御に関する機能は、すべてのシノプシスVIPモデルで共通しています。VIPテストは、uvm_testクラスを継承して作成できます。継承したクラスのbuild_phaseでテストベンチ環境を作成し、各シーケンサおよびフェーズで実行するシーケンスを設定します。AXI VIPの場合、次のような簡単なテストを作成して実行できます。

手順5:図1

上記コードでは、AXI VIPシーケンス・ライブラリに含まれるシーケンスaxi_master_wr_rd_sequence_を使用し、AXIシステム環境でコンフィギュレーションおよびインスタンシエートしたすべてのマスタ・エージェントのシーケンサの「main_phase」で実行しています。同様に、シーケンス・ライブラリに含まれるaxi_slave_mem_response_sequenceをすべてのアクティブなスレーブで実行するように設定しています。run_phaseではアクティブなスレーブに対するスレーブ応答シーケンスを設定する必要があることに注意してください。

これを見ると、UVMではテスト固有のコードがいかに少ないかが分かるはずです。ほとんどのコードは再利用可能なコンポーネントである環境に含まれます。テスト固有のコードは最小限に抑えられており、多くのコードが共通化されています。このため、共通部分を何度も作成する必要がなく、わずかなコード・ベースのみをメンテナンスするだけで済みます。

本稿に示したコードは、AXI3 VIPに付属するサンプル・テストベンチ(AXI3シノプシスVIPモデルを使用した完全な機能テスト)からの抜粋です。このサンプル・テストベンチ全体を見ると、シノプシスのVIPとUVMを組み合わせることにより制約条件付きランダム検証を適切なアーキテクチャで効率よく実行できることが分かります。プロトコル機能はシノプシスVIPモデルによって抽象化されるため、検証エンジニアは高い抽象度で作業できます。また、制約条件を制御しながら200行程度のわずかなコードを長時間実行するだけで非常に多くの条件を生成できるため、コード開発期間を短縮できます。このメソドロジは本質的に再利用性が高いのが特長です。コードの大半は環境に含まれており、テスト固有のコードは最小限に抑えられています。制約条件とコンフィギュレーションを含めても、テスト固有のコードは32行しかありません。

本稿でご紹介したコンセプトにより基礎をご理解いただけたでしょうか。さらに詳しくお知りになりたい方は、検証用IPのウェブページをご参照いただくことをお勧めします。このページでは、SoCデザインのカバレッジ・クロージャ達成に役立つホワイトペーパー、ブログ、ウェブ・セミナーなどの情報をご提供しています。皆さまの検証作業がもっと容易になることを願って止みません。

著者紹介

Amit Sharma:シノプシス・インド法人の検証グループ所属ディレクター。電子/通信の学士号を取得後、インド経営大学院バンガロール校(Indian Institute of Management, Bangalore)にてMBAを取得。機能検証の幅広い分野で15年の経験があり、現在はアジア太平洋コーポレート・アプリケーション・エンジニアリング・チームを率いてエミュレーション技術、検証用IP、その他の高度な検証テクノロジの導入を担当。

Amit Sharma

カテゴリートップ