Vengineerの妄想(準備期間)

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

OVM : Class Factory

Verification Engineerの戯言

SystemVerilogでクラスのインスタンスを生成するには、new関数を使いますが、
OVMでは、Class Factoryを使ってインスタンスを生成することができるようです。
ホワイトペーパーの例では、
    red my_a;
    my_a = new(“a”,this);
のように、redクラスのインスタンスmy_aをnew関数で生成します。
Class Factoryを使うと、次のようになるようです。
    ovm_component cmp;
    cmp = create_component(“red”, “a”);
    $cast(my_a,cmp);
create_component関数でredクラス(引数として "a" )を生成し、その戻り値をcmpに代入します。
cmpを$castを使って、my_aにアサインします。これによって、redクラスのインスタンスをnew関数で生成したのと同じことができます。ただし、create_component関数で生成できるクラスは、ovm_componentクラスの子孫でないといけません。

検証、Verification、SystemVerilog、OVM、Open Verification Methodology