Command Line Interfaceは、uvm_cmdline_processorクラスのインスタンスを次のように生成します。
newでインスタンスを生成し、n_instに代入します。そして、m_instを戻り値にします。
uvm_cmdline_processor cmdline_processor = uvm_cmdline_processor::get_inst();uvm_cmdline_processorクラスのget_inst関数は、次のようになっています。
static local uvm_cmdline_processor m_inst; static function uvm_cmdline_processor get_inst(); if(m_inst == null) m_inst = new("uvm_cmdline_proc"); return m_inst; endfunctionstaticが付いていますので、クラス関数です。クラス変数(m_inst)がnull(初期化されていない)ときは、
newでインスタンスを生成し、n_instに代入します。そして、m_instを戻り値にします。
実は、uvm_cmdline_processorクラス内部でget_inst関数を呼んでいる部分(440行)があります。
const uvm_cmdline_processor uvm_cmdline_proc = uvm_cmdline_processor::get_inst();でも、このuvm_cmdline_procは、uvm_cmdline_processorクラス内では使っていません。
次回に続く。
検証、Verification、SystemVerilog、UVM、Unified Verification Methodology