Vengineerの妄想(準備期間)

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

OVM : OVMの中のURM

Verification Engineerの戯言

OVMは、URMの上位互換であるため、ところどころURM依存のクラスがある。その一つがurm_messageクラス(compatibility/urm_message.sv[h])です。
実はこのコードはovm.svhを`includeするかovm_pkgをimportすると読み込まれます。
一般的には、コードを読み込んでもnewインスタンスを生成しなければよばれません。でも、このコードの中でnewを呼んでいるのです。
    typedef class urm_command_line_processor_c;
    urm_command_line_processor_c urm_command_line_processor = 
                 new("urm_command_line_processor",null);
この部分はトップ階層(どのクラスにも依存しない)なので、urm_command_line_processorはトップ階層のインスタンスになります。
これは、ovm_print_topology関数を実行したときに、次のような内容を表示することでわかります。
    # OVM_INFO @ 0: reporter [OVMTOP] OVM testbench topology:
    # ----------------------------------------------------------------------
    # Name                     Type                Size                Value
    # ----------------------------------------------------------------------
    # urm_command_line_proces+ ovm_object          -    @{urm_command_line+
    # ----------------------------------------------------------------------
このトップ階層があることで、シミュレーション実行ときに次のようなオプションが指定できます。
    +OVM_VERBOSE
    +USE_URM_MSG
    +MSG_DETAIL=...
    +msg_detail=...
    +OVM_MSG_DETAIL=
    +ovm_msg_detail=...
    +VERBOSITY=...
    +verbosity=...
    +OVM_VERBOSITY=...
    +ovm_verbosity=...
    +SEVERITY=...
    +severity=...
    +OVM_URM_SEVERITY=...
    +urm_severity=
これらオプションは、OVM Class Referenceには記述はありません。
たぶん、OVMをURMとして使う場合に必要なんでしょうね!

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