UVM EA 1.0のUser's Guideでは、Factoryの説明が
1.4.1 UVM Factory 7.3 The Build-In Factory and Overridesだけなんです。でも、User's Guide全体でfactoryという言葉が使われています。
UVMでfactoryを使うには、クラス定義の時におまじないをするだけ!
そのおまじないは、定義するクラスの種類によってちょっと違うが、
そのおまじないは、定義するクラスの種類によってちょっと違うが、
`ovm_object_utils `ovm_component_utils `ovm_sequence_utils `ovm_sequencer_utils
基本的には、最初の2つ(ovm_object_utilsとovm_component_utils)を使います。
`ovm_object_utilsは、ovm_objectクラスを継承するクラス内で、
`ovm_component_utilsは、ovm_componentクラスを継承するクラス内で使います。
`ovm_object_utilsは、ovm_objectクラスを継承するクラス内で、
`ovm_component_utilsは、ovm_componentクラスを継承するクラス内で使います。
ovm_sequence_utilsとovm_sequencer_utilsの2つは、シーケンスとシーケンサー用。
`ovm_sequence_utilsは、ovm_sequenceクラスを継承するクラス内で、
`ovm_sequencer_utilsは、ovm_sequencerクラスを継承するクラス内で使います。
`ovm_sequence_utilsは、ovm_sequenceクラスを継承するクラス内で、
`ovm_sequencer_utilsは、ovm_sequencerクラスを継承するクラス内で使います。
使い方はいたって、簡単。クラスの中で、
`ovm_sequence_utilsだけは、第2引数にシーケンサクラス名を指定します。
`ovm_object_utils( クラス名 ) `ovm_component_utils( クラス名 ) `ovm_sequence_utils( クラス名, シーケンサクラス名 ) `ovm_sequencer_utils( クラス名 )と、マクロの引数にクラス名を書くだけ。
`ovm_sequence_utilsだけは、第2引数にシーケンサクラス名を指定します。
とりあえず、これだけは憶えておきましょう!
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology