UVM ( Universal Verification Methodology) について、改めて勉強しようと思い、uvm_user_guide_1.2,pdf を少し読んでみました。図はこのドキュメントからの引用です。
まずは用語というか、部品の呼び方について。
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モデルを含む場合もある。
UVM Sequencer
複数のスティミュラスシーケンスからトランザクションフローを制御する。
UVM Sequence
スティミュラスを生成する。複数の UVM Sequence インスタンスが、同じ UVM Sequencer につながる。
UVM Driver
UVM Sequencer から Sequence Item transactions を受取り、DUT インターフェースをドライブする。トランザクションレベルスティミュラスをピンレベルスティミュラスに変える。
UVM Monitor
DUT インターフェースをサンプリングして情報をキャプチャする。ピンレベルアクティビティをトランザクションに変換する。