UVM Cookbook 眺めてみた - Introduction, Testbench Architecture
はじめに
EDAの世界では検証手法からリンターまでメソドロジーが流行っているのでしょうか。そんなメソドロジーの代表格といえばUVM。少しUVMを体系的に理解してみたいと思い立ちメンターさんのCookbookを読み始めたいと思いました。これを選ぶ理由は、昔現実逃避のために読んだOVM Cookbookが好印象だったからであります。
ということでCookbookを眺めたときのメモを残してみたいと思います。とはいえ500ページもある内容の都合、各章(?)のTopic Overviewを拾っていきたいと思います。
何日続くかな...osz
UVM Cookbook
メンターさんのVerification Academyから入手できると思います。会員登録などは必要に応じてどうぞ。
こちらのサイトAWSで動いているようですね。
Introduction
UVM Cookbookは500ページもあるのですが、それを最初から目を通す残念なIDがこちらとなります...osz。ですが最初から目を通さずにはいられないのでIntroductionから行ってみます。
Cookbook/Introduction
- OVMがコアで、それにResource、TLM2、Phasingなどを追加したそうです。
- 結構、痔が爺さん。
Testbench Architecture
Testbench
- UVMスタイルのテストベンチ、build()、ブロックレベル/システムレベルのベンチ、Agent、Phase、Factoryの説明をするよ。
Topic Overview
How an UVM testbench differs from a traditional module based testbench
- 古いスタイルのVerilogテストベンチはシミュレータが全てをstatic objectで扱うので常にメモリを使っているよ。
- SVはclassを使ってメモリ生存期間が終わるとGBされるよ。
- メソッドはNON-TCMなfunctionとTCMなtaskがあるよ。
- シミュレーションの最初でmoduleがstatic objectで作られて、その後classが作られるよ。
- なので、classはmoduleを持てないよ。
- classはnew()したときにインスタンス化されてメモリ確保されるよ。
- インスタンスにnullを入れるとGBするよ。
The UVM Package
- UVMパッケージには主に3つの基底クラスがあるよ。
- uvm_component ・・・ テストベンチ構成用
- uvm_objects ・・・ データオブジェクト用
- uvm_transactions ・・・ 入出力データ生成、分析用
- 最上位のmoduleはDUTを持ってベンチと接続するよ。
- 最上位のmoduleはinitialブロックでrun_test()を呼んでUVMのフェーズを開始するよ。
UVM Testbench Hierarchy
- UVMテストベンチはuvm_componentのクラスで構成されるよ。
- UVMの最上位クラスはtestだよ。ベンチのコンフィギュレーションと下階層方向へのビルド、シーケンスを開始してテストするよ。
- envとagentの2つのコンテナクラスがあるよ。
今日はここまで
なんだかTopic Overviewだけだと内容薄いなぁ、と思いますが、まずはこんな感じで進めてみたいと思います。