UVM (Universal Verification Methodology)を改めて見直す

UVM ( Universal Verification Methodology) について、改めて勉強しようと思い、uvm_user_guide_1.2,pdf を少し読んでみました。図はこのドキュメントからの引用です。

まずは用語というか、部品の呼び方について。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-02-8-34-07

Testbench

DUT と UVM Test クラスをインスタンスする。いわゆる検証トップ。 UVM Test はランタイムでダイナミックにインスタンスされるので、一回コンパイルして、複数のテストを流す、というやり方が可能。

UVM Test

UVM Testbench の下のトップレベルコンポーネント。主な機能は、トップレベル environment のインスタンス、environment の設定、UVM Sequences を起動してスティミュラスを提供すること。 ひとつのベースとなる UVM test があり、それを extend して他の test が用意される。

UVM Environment

相互に関連する検証コンポーネントをまとめる。UVM Agents, UVM Scoreboards や他の UVM Environment がインスタンスされることも。トップレベル UVM Environment は DUT を対象とする全ての検証コンポーネントをカプセル化する。 IP ごとにひとつの UVM Environment を持つ場合もある。

UVM Scoreboard

UVM Agent analysis ports 経由でトランザクションを受け取る。リファレンスモデルからの期待値と比較する。 スコアボードの実装は色々ある。

UVM Agent

特定の DUT インターフェースを扱う検証コンポーネントをまとめる。Sequencer、Driver、Monitor を含むのが一般的で、カバレッジコレクタ、プロトコルチェッカー、TLMモデルを含む場合もある。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-12-02-8-47-15

UVM Sequencer

複数のスティミュラスシーケンスからトランザクションフローを制御する。

UVM Sequence

スティミュラスを生成する。複数の UVM Sequence インスタンスが、同じ UVM Sequencer につながる。

UVM Driver

UVM Sequencer から Sequence Item transactions を受取り、DUT インターフェースをドライブする。トランザクションレベルスティミュラスをピンレベルスティミュラスに変える。

UVM Monitor

DUT インターフェースをサンプリングして情報をキャプチャする。ピンレベルアクティビティをトランザクションに変換する。

 

タイトルとURLをコピーしました