我认为peek
的{{1}}函数在0模拟时间内返回了值。由于我需要此功能,因此我实现了所有HDL后门访问路径。这是我在记分板中使用的代码
uvm_reg
我的意图是:在每个时钟周期,在零模拟时间内,while (state == DISABLE) begin
uvm_reg_data_t val = 'hDEADBEEF;
uvm_status_e status;
`uvm_info(get_name(), "Start peek", UVM_LOW)
my_reg_block.my_reg.peek(status, val);
`uvm_info(get_name(), "End peek", UVM_LOW)
assert (val == 'h0)
@posedge(my_vif.clk); //Advance clock
end
时断言my_reg
为0。
在模拟运行中,我注意到state==DISABLE
正在变化的时候这很好。在这一点上,开始偷看 - >结束窥视大约需要10个时钟周期。在这个时候,我的状态不再是残疾,而且当然是val!='h0。为什么偷看需要这么长时间才能回来?
我正在使用Questasim 10.4a
答案 0 :(得分:1)
可能需要一些时间,因为peek
是SystemVerilog任务,而不是函数。
功能将在0模拟时间内执行,但任务可以有 时间延迟也是如此。
这是它的定义。
virtual task peek( output uvm_status_e status,
output uvm_reg_data_t value,
input string kind = "",
input uvm_sequence_base parent = null,
input uvm_object extension = null,
input string fname = "",
input int lineno = 0 )