不同的UVM包装方法有什么区别?

时间:2017-03-09 23:29:56

标签: system-verilog uvm

我想知道使用这两个

的区别
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()。有人可以举例说明。

1 个答案:

答案 0 :(得分:1)

通常在总线协议中,您将在特定总线事务上拥有大量数据,因此从总线事务中提取特定字段值变得非常困难。

因此,您使用更高级别的类,因此通过使用不同的字段,您可以轻松控制这些字段的值。

但在实际硬件中,所有内容都与位模式有关,因此您需要根据协议将类字段转换为有效的位模式,然后沿总线传输。

为此,您需要packunpack方法。您pack在发送方支持,unpack在接收方支持。