バックナンバーはこちら

today&tomorrow

Technology Update

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

2017 May Spring vol.106

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

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

UVMでシノプシスVIPを使用する5つの基本手順

ここからは、UVMの基本的なコンセプトと手法を適用して制約条件付きランダム・テストベンチを簡単に構築する方法を見ていきましょう。シノプシスのVIPとUVMを使用する最初の5つの手順は次のとおりです。

  1.  テスト環境を作成してインスタンシエートする
  2.  VIPをDUTに接続する
  3.  VIPをインスタンシエート/コンフィギュレーションする
  4.  テスト・シーケンスを作成する
  5.  テストを作成する

これらの手順を実際にどのように適用するのかをご理解いただけるように、完全なテストベンチのサンプルからコードを引用しながらご説明します。このテストベンチはシノプシスのVIPとUVMの代表的な使用例を示しており、本稿でご紹介するコンセプトと手法が分かりやすい形で使われています。このサンプル・コードはシノプシスのARM® AMBA® AXI3™プロトコル仕様向けVIPを使用していますが、ここに示した手法はこのプロトコルに固有のものではなく、シノプシスの任意のVIPモデルで使用できます。サンプル・コードの入手方法は、本稿末尾をご参照ください。

手順1:テストベンチ環境を作成してインスタンシエートする

検証対象(DUT)の駆動、観測、検証に必要なエージェント、モニタ、チェッカー、スコアボードをすべてカプセル化したものを環境と呼びます。環境は厳密に構造コンポーネントであり、デザインの検証に必要な各種コンポーネントをインスタンシエートして接続するだけで、その検証を実行するための実際の動作は含みません。環境はベース・クラスuvm_envを継承したクラスとしてインプリメントします。この環境クラスには、カプセル化される個々のエージェント、モニタ、チェッカー、スコアボードに対してそれぞれパブリック・メンバーがあります。これらのコンポーネントはbuild_phase()メソッドでインスタンシエートされ、connect_phase()メソッドで適切に接続されます。環境クラスにはランタイム・フェーズをインプリメントしないようにします。

シノプシスのVIPの場合、この環境はすべてのVIPコンポーネントをカプセル化し、システム・コンフィギュレーション・エージェントによって指定されたプロトコル・エージェントを必要な数だけ暗黙的に作成します。この後でも見ていきますが、UVMテストベンチのコードはほとんどが環境に含まれており、他のテストやプロジェクトで再利用できます。

ユーザーはuvm_envから構造体と基本機能を継承しますが、必要な部分はカスタマイズできます。しかも、カスタマイズはユーザーが制御できます。これはUVMとシノプシスのVIPモデル全体に共通するテーマです。

手順1:図1

次の部分が、AXI™システム環境をユーザーのテストベンチ環境にインスタンシエートする手順です。

手順1:図2

build_phase()メソッドで、コンフィギュレーション・データベースから最上位コンフィギュレーション・オブジェクトを取得します(手順3を参照)。各サブコンポーネント(エージェント、サブ環境、スコアボード)をインスタンシエートして、各サブコンポーネントのコンフィギュレーション情報を適切に設定します。デバッグ容易性を高めるため、create()を呼び出す際にデータ・メンバー・ハンドル名をコンポーネント・インスタンス名として使用します。

手順1:図3

connect_phase()メソッドで、関連するエージェントの解析ポートをスコアボードの解析エクスポートに接続します。

手順1:図4

最終的なより高次の環境での再利用性を考慮して、最上位の環境クラスはテストベンチの構造および接続に関する部分のみをインプリメントするようにします。

カテゴリートップ