Vengineerの妄想(準備期間)

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

ovm_field_xxxマクロ

Verification Engineerの戯言

Field Automationtでは、登録したデータに対するcopy, compare, pack, unpack, record, print, sprint関数を自動的に使えるようにするためのもので、
次のようなマクロが用意されています。
これらマクロは、クラス内のメンバーの型に対応したものです。arrayは動的配列sarrayは静的配列aaは連想配列です。
    ovm_field_int(ARG,FLAG)
    ovm_field_enum(T,ARG,FLAG)
    ovm_field_object(ARG,FLAG)
    ovm_field_event(ARG,FLAG)
    ovm_field_string(ARG,FLAG)
    ovm_field_array_int(ARG,FLAG)
    ovm_field_sarray_int(ARG,FLAG)
    ovm_field_array_object(ARG,FLAG)
    ovm_field_sarray_object(ARG,FLAG)
    ovm_field_array_string(ARG,FLAG)
    ovm_field_sarray_string(ARG,FLAG)
    ovm_field_queue_int(ARG,FLAG)
    ovm_field_queue_object(ARG,FLAG)
    ovm_field_queue_string(ARG,FLAG)
    ovm_field_aa_int_string(ARG, FLAG)
    ovm_field_aa_string_string(ARG, FLAG)
    ovm_field_aa_object_string(ARG, FLAG)
    ovm_field_aa_int_int(ARG, FLAG)
    ovm_field_aa_int_int(ARG, FLAG)
    ovm_field_aa_int_int_unsigned(ARG, FLAG)
    ovm_field_aa_int_integer(ARG, FLAG)
    ovm_field_aa_int_integer_unsigned(ARG, FLAG)
    ovm_field_aa_int_byte(ARG, FLAG)
    ovm_field_aa_int_byte_unsigned(ARG, FLAG)
    ovm_field_aa_int_shortint(ARG, FLAG)
    ovm_field_aa_int_shortint_unsigned(ARG, FLAG)
    ovm_field_aa_int_longint(ARG, FLAG)
    ovm_field_aa_int_longint_unsigned(ARG, FLAG)
    ovm_field_aa_int_key(KEY, ARG, FLAG)
    ovm_field_aa_string_int(ARG, FLAG)
    ovm_field_aa_object_int(ARG, FLAG)
第一引数(ARG)にはクラスのメンバーを、第二引数(FLAG)にはフラグを指定します。
フラグには、つぎのようなものがあります。詳細については、リファレンス・マニュアルを参照してください。
    OVM_DEFAULT
    OVM_ALL_ON 
    OVM_COPY 
    OVM_NOCOPY 
    OVM_COMPARE 
    OVM_NOCOMPARE 
    OVM_PRINT 
    OVM_NOPRINT 
    OVM_NODEFPRINT 
    OVM_PACK 
    OVM_NOPACK 
    OVM_PHYSICAL 
    OVM_ABSTRACT
    OVM_READONLY 
    OVM_BIN, OVM_DEC, OVM_UNSIGNED, OVM_OCT, OVM_HEX, OVM_STRING, OVM_TIME, OVM_NORADIX

src/examples/configuration/automated/classA.svhファイルのAクラスでは、次のように使っています。
    `ovm_component_utils_begin(A)
        `ovm_field_int(debug, OVM_DEFAULT)
    `ovm_component_utils_end

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