カミは死んだ

Paper Is Dead ... osz

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だけだと内容薄いなぁ、と思いますが、まずはこんな感じで進めてみたいと思います。