定义一个class后,采用print的方式打印class中所有变量时,当有数组变量有很多个元素时,默认的`uvm_filed_sarray_int等只会打印前后几个数据,其他的都会被隐藏,如果想要打印全部,则进行如下定义.

`define def_field_sarray_int_pring_all(ARG,FLAG)\
  begin \
    int begin_elements__ = uvm_default_printer.knobs.begin_elements; \
    uvm_default_printer.knobs.begin_elements = -1; \
    `uvm_field_sarray_int(ARG, FLAG) \
    uvm_default_printer.knobs.begin_elements = begin_elements__; \
  end

`define def_field_sarray_enum_pring_all(T,ARG,FLAG)\
  begin \
    int begin_elements__ = uvm_default_printer.knobs.begin_elements; \
    uvm_default_printer.knobs.begin_elements = -1; \
    `uvm_field_sarray_enum(T,ARG, FLAG) \
    uvm_default_printer.knobs.begin_elements = begin_elements__; \
  end

`define def_field_array_enum_pring_all(T,ARG,FLAG)\
  begin \
    int begin_elements__ = uvm_default_printer.knobs.begin_elements; \
    uvm_default_printer.knobs.begin_elements = -1; \
    `uvm_field_array_enum(T,ARG, FLAG) \
    uvm_default_printer.knobs.begin_elements = begin_elements__; \
  end

然后对变量注册时进行如下定义, 这样对item进行.print打印的时候,数组所有元素能全部打印出来.

class seq_item extends uvm_sequence_item;
  
  int data;
  int data_idx[100];

  `uvm_object_utils_begin(seq_item)
    `uvm_field_int(data, UVM_DEFAULT)
    `def_field_sarray_int_print_all(data_idx, UVM_DEFAULT)
  `uvm_object_utils_end

endclass

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐