uvm中pack_bytes函数的用法 uvm_severity和uvm_verbosity uvm_severity uvm_verbosity uvm_verbosity 定义很tricky,理解成打印级别更符合中文习惯 UVM_DEBUG UVM_FULL UVM_HIGH UVM_MEDIUM UVM_LOW UVM_NONE uvm中通过设置打印级别阈值来控制打印的信息,当uvm_info输入的打印级别小于阈值时就会被打印,...
compare:比较两个实例是否一样。 pack_bytes:将所有的字段打包成byte流。 unpack_bytes:将一个byte流逐一恢复到某个类真的实例中。 pack:将所有字段打包成bit流。 unpack:将一个bit流逐一恢复到某个类的实例中。 pack_ints:将所有的字段打包成int流。 unpack_ints:将一个int流逐一恢复到某个类的实例中。 ...
compare函数用于比较两个实例是否一样 3.pack_bytes pack_bytes函数用于将所有的字段打包成byte流 打包顺序与宏声明顺序一致 4.unpack_bytes unpack_bytes函数用于将一个byte流逐一恢复到某个类的实例中 5.print print函数用于打印所有的字段 6.clone clone = copy + newcomponent不支持clone field automation机制还...
extern function int pack_bytes (ref byte unsigned bytestream[],input uvm_packer packer=null); unpack_bytes函数用于将一个byte流逐一恢复到某个类的实例中,其原型为: extern function int unpack_bytes (ref byte unsigned bytestream[],input uvm_packer packer=null); pack函数用于将所有的字段打包成bit流,...
与pack_bits的区别在于,打包的数组是byte类型的,size默认值及上限是value.size*8 5 pack_ints 与pack_bytes的区别在于,打包的数组是int类型的 6 pack_string 把字符串打包放进m_bits中,无需指定size,以字符串实际size为准 7 pack_time 调用pack_field_int把time类型的value进行打包,size指定为64 8 pack_rea...
pack 将成员按一定格式打包成一个数据流,打包的内容仅限于使用了UVM field automation机制的成员 unpack 按成员的规格对数据流进行分解,参与分解的成员仅限于使用了UVM field automation机制的成员 pack_bytes 将在域中注册的变量和数组等打包成byte流,输出到一个动态数组中 unpack_bytes 传入一个动态数组,将所有内容...
自动实现my_transaction中print、copy、compare这样的比较常见的结构体操作,简化my_transaction的实现。同时默认的pack_bytes(tr中的各个字段转换成byte流)和unpack_bytes(byte流转换成tr中的各个字段)也简化了driver、monitor的实现。 使用uvm_object_utils_begin和uvm_object_utils_end来实现my_transaction的factory注册,...
pack_bytes极大地减少了代码量。在把所有的字段变成byte流放入data_q中时,字段按照uvm_field系列宏书写的顺序排列。在上述代码中是先放入dmac,再依次放入smac、ether_type、pload、crc。假如my_transaction定义时各个字段的顺序如下: 代码清单 2-56 `uvm_object_utils_begin(my_transaction) `uvm_field_int(...
vif.rst_n)47@(posedgevif.clk);4849while(1)begin50seq_item_port.get_next_item(req);51drive_one_pkt(req);52seq_item_port.item_done();53end54endtask5556taskmy_driver::drive_one_pkt(my_transaction tr);5758byteunsigneddata_q[];59intunsigneddata_size;6061data_size = tr.pack_bytes(data...
可以调用pack_bytes将tr中所有的字段变成byte流放入data_q中。 可以调用unpack_bytes函数将data_q中的byte流转换成tr中的各个字段。 data_size=tr.pack_bytes(data_q)/8;`uvm_info("my_driver","begin to drive one pkt",UVM_LOW);repeat(3)@(posedgevif.clk);for(inti=0;i<data_size;i++)begin@(...