Verification Engineerの戯言
SystemVerilogでクラスのインスタンスを生成するには、new関数を使いますが、
OVMでは、Class Factoryを使ってインスタンスを生成することができるようです。
ホワイトペーパーの例では、
Class Factoryを使うと、次のようになるようです。
cmpを$castを使って、my_aにアサインします。これによって、redクラスのインスタンスをnew関数で生成したのと同じことができます。ただし、create_component関数で生成できるクラスは、ovm_componentクラスの子孫でないといけません。
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