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を使わないのだろうか?