芯片验证中打印所有数组和枚举元素
·
定义一个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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)