UVM Cookbook 眺めてみた - The Test Is The Starting Point For The Build Process
はじめに
UVM Cookbookを眺めてみた、の続きです。今日はTestbenchのThe Test Is The Starting Point For The Build Processです。
The Test Is The Starting Point For The Build Process
- UVMテストベンチのbuildプロセスはテストのクラスからトップダウンで始まるよ。
- テストクラスのbuildメソッドはbuild phaseの中で一番最初にコールされてテストメソッドの設定でUVMテストベンチのビルドが決まるよ。
- テストのbuildメソッドの機能はこんなだよ。
- factoryのオーバーライドを設定するよ。これでコンフィギュレーションオブジェクトやコンポーネントオブジェクトが派生型(derived type)として構成されるよ。
- コンフィギュレーションオブジェクトを作ったり設定するよ。これはいろいろなサブコンポーネントで使われるよ。
- テストベンチモジュールがvirtual interfaceのハンドル(アサイン箇所)をコンフィギュレーション空間に置くよ。
- ネストされたenvのコンフィギュレーションオブジェクトをくみ上げてコンフィギュレーション空間に設定するよ。
- 次の下位階層のテストベンチ、たいていは最上位のenv、をbuildするよ。
- 検証環境において、buildメソッドではテストによらず全部同じことをするよ。
- テストのbuildがどう実行されるかを説明するのに、ブロックレベルの検証環境を見てみるよ。
- この例ではSPIマスターがDUTと接続されていて、2つのagentを持つよ。一つはAPBバスインタフェースで、もう一つがSPIインタフェースだよ。
Block Level UVM Test Bench - Hierarchical Layers
test--------------------------------------------- env-------------------------------------------- ------------- |Score|◇---◇|APB agent(monitor/SQR-Driver) <- IF -> | DUT |Board|◇---◇|SPI agent(monitor/SQR-Driver) <- IF -> |(SPI w/ APB) Configuration(apb config/spi config)
Factory Overrides
- UVM factoryはあるUVMクラスを構成時に他の派生クラスで置き換えるよ。
- この機能はコンポーネントの振る舞いの変更やアップデート、また、コンフィギュレーションオブジェクトを拡張するのに使えるよ。
- factoryのオーバーライドはターゲットオブジェクトが構成されるまえに指定する必要があるよ。
- なのでbuildプロセスの最初でやると便利だよ。
Sub-Component Configuration Objects
- agentやenvといったコンテナ型のコンポーネントはコンフィギュレーションオブジェクトを持って構成や振る舞いを定義するよ。
- コンフィギュレーションオブジェクトはテストのbuildメソッドで作られるべきで、テストケースの要求に応じてコンフィギュレーションされるべきだよ。
- コンフィギュレーションが複雑だったり将来変更しそうだったら、virtual functionを追加してコンフィギュレーションを扱うと、ベースのテストクラスからテストケースをオーバーロード(上書き)できるよ。
- テストベンチを構成するuvm_componentはbuildフェーズでオブジェクトになるよ。
- buildフェーズは階層をトップダウンで作るよ(順番はちゃんと制御されるよ)。
- こういうのをdeferredにテストベンチを作るといいます(繰越の・・・日本語だと意味不明です。前がちゃんと終わったら次をやる制御に使う言葉のようです。例えばjQuery.Deferredとか) 。