Vengineerの妄想(準備期間)

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

AVM 2.0と3.0の違い、その2

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関数に変更しよう!