Verification Engineerの戯言
AVM 3.0のSystemVerilog版の続き
AVM 3.0でavm_envクラスの継承クラスでexecute関数のみを定義している場合はどうなるか?
(AVM 2.0では、execute関数を定義することになっていたが、
AVM 3.0では、run関数を定義するように変更になったため)
互換性を維持するために、AVM 3.0のavm_envクラスでは、次のように定義している。
virtual task run();
avm_report_warning(
s_deprecated_3_0,
"Please use run instead of execute",
500 );
execute();
endtask
つまり、avm_envクラスを継承するクラスでrun関数を定義しないと、
上記のavm_envクラスのrun関数が実行され、ワーニングを表示し、
AVM 3.0のavm_envクラスで必要なexecute関数が実行される。
ちなみに、execute関数は、
virtual task execute();
endtask
のように空のタスクとして実装している。
上記のワーニングが気になるようになったら、execute関数をrun関数に変更しよう!