等待触发器数据只捕获第一个事件



我正在使用OVM

我的代码在一个地方触发了一个ovm事件(我添加了一个打印来确认(。然而,在另一个地方,我正在等待触发,它只是";捕获";一次(我也在这里添加了一个打印来确认(。

function void trigger_event_for_incoming_transaction(ovm_object txn);
if (is_type_1(txn))
type_1.trigger(txn);            
endfunction

还有其他地方:

task look_for_type_1();    
forever begin
type_1.wait_trigger_data(my_obj);
end
endtask

由于intellucatal属性,我无法粘贴大部分代码。。。但我正确地注册了活动等

OVM/UVM的触发器和wait_trigger的工作原理与SystemVerilog的事件触发器->e和事件控件@e相同——在执行触发器之前,事件控件必须阻止等待触发器。您可以在wait(e.triggered())中使用事件的触发方法,该方法从触发到时间步长结束都返回true。然后,在时间步长内触发器和事件控制之间的排序不再重要;ap持久性触发

您可以尝试使用OVM的wait_ptrigger_data,它在下面使用此触发方法。

最新更新