uvm_reg peek函数需要很长时间才能返回

时间:2016-11-28 20:54:58

标签: system-verilog uvm questasim

我认为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

1 个答案:

答案 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   )