我想知道使用这两个有什么区别
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()。有人可以举例说明。
通常在总线协议中,您将拥有关于特定总线事务的大量数据,因此从该总线事务中提取特定字段值变得非常困难。
因此,您在更高级别使用类,以便通过使用不同的字段,您可以轻松控制这些字段的值。
但在实际硬件中,一切都取决于位模式,因此您需要根据您的协议将类字段转换为有效的位模式并沿总线传输它们。
为此,您需要pack
和unpack
方法。你pack
在发射器端塞东西,unpack
在接收器端塞东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句