时钟模块和信号分配之间的相关性是什么

时间:2017-11-28 16:58:03

标签: interface driver system-verilog uvm

有人可以解释为什么这两段代码表现不同。在第二种情况下,当我以10个事务开始序列时,我同时有两个事务,一个覆盖另一个事务,它只发生在模拟开始时。之后一切都很好。

 task fir_driver::drive_write(input fir_item#(D_WIDTH) it);
    seq_item_port.get_next_item(it);
    @mp_p.cb_fir;
    mp_p.cb_fir.i_data_sample       <= it.i_data_sample;
    seq_item_port.item_done(); 
  endtask : drive_write


  task fir_driver::drive_write(input fir_item#(D_WIDTH) it);
    seq_item_port.get_next_item(it);
    mp_p.cb_fir.i_data_sample       <= it.i_data_sample;
    @mp_p.cb_fir;
    seq_item_port.item_done(); 
  endtask : drive_write

1 个答案:

答案 0 :(得分:0)

我打算猜测在调用drive_write()之前的最后一个阻塞事件不是@mp_p.cb_fir,或者可能是在时间0。并且在调用{{1}之间没有其他阻塞语句然后第一个驱动器与第二个驱动器重合。请参见1800-2012 LRM中的 14.16同步驱动部分。