定义一个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

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐