芯片验证中打印所有数组和枚举元素
定义一个class后,采用print的方式打印class中所有变量时,当有数组变量有很多个元素时,默认的`uvm_filed_sarray_int等只会打印前后几个数据,其他的都会被隐藏,如果想要打印全部,则进行如下定义.然后对变量注册时进行如下定义, 这样对item进行.print打印的时候,数组所有元素能全部打印出来.
·
定义一个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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)