我想知道使用这两个
的区别function void do_pack(uvm_packer packer);
super.do_pack(packer);
packer.pack_field_int(correct_data_in,$bits(correct_data_in));
packer.pack_field_int(valid_in,$bits(valid_in));
endfunction
function void do_pack(uvm_packer packer);
super.do_pack(packer);
`uvm_pack_intN(correct_data_in);
`uvm_pack_intN(valid_in);
endfunction
如果我们不打包/解包信号并将它们直接驱动到DUT会发生什么?
此外,我们何时使用pack()和do_pack()。有人可以举例说明。
答案 0 :(得分:1)
通常在总线协议中,您将在特定总线事务上拥有大量数据,因此从总线事务中提取特定字段值变得非常困难。
因此,您使用更高级别的类,因此通过使用不同的字段,您可以轻松控制这些字段的值。
但在实际硬件中,所有内容都与位模式有关,因此您需要根据协议将类字段转换为有效的位模式,然后沿总线传输。
为此,您需要pack
和unpack
方法。您pack
在发送方支持,unpack
在接收方支持。