Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

AVMとVMMの違い、その1

Verification Engineerの戯言

AVMとVMMの違いとして、一番は何か?
それは、テストシナリオを何に書くかである。
AVMではトップモジュール(module)に書く。一方、VMMではprogramに書く。

テストベンチの書き方によっては、DUTとのレースコンディションが発生する。
それを回避するためにSystemVerilogでは、programやclockingを導入した。

VMMでは、program内にvmm_envを継承したものをインスタンスし、
これをベースにテストシナリオを書く。
program内に書いたテストベンチはDUTとのレースコンディションは、発生しない。
programとは別にトップモジュール(module)を記述し、
program内ではこのトップモジュールへの階層をまたいだアクセスする。

AVMでは、トップモジュール(module)内にDUTおよびavm_envを継承したクラスをインスタンスする。

どちらがいいかは一概に言えないが、どうしてメンターはprogramを使わないのだろうか?