System Verilog wait()语句等待的最小时间/周期是多少?

时间:2012-11-08 16:19:58

标签: system-verilog systemc

我正在尝试移植到SystemC的SystemVerilog任务。任务的主体只是等待一个布尔表达式,然后推送到一个队列。 SystemC等待机制不能以完全相同的方式工作,它只会等待时间或事件。

所以我想知道在重新测试布尔表达式之前SystemVerilog wait()等待的最小周期/时间是多少。换句话说,在SV wait()中重复测试布尔表达式的频率或原因是什么?

如果答案只是每个周期一次,我希望并期望但无法确认,那么解决方案很容易。

这是代码,有些东西被重命名和简化,以便在上下文中更有意义:

    virtual task put(input cls_item item);
        wait (queuecount < queuemax);
        push_back(item);
    endtask

1 个答案:

答案 0 :(得分:3)

来自LRM:

  

9.4.3级别敏感事件控制

     

程序语句的执行也可以延迟,直到条件成立为止。这是完成的   使用wait语句,这是一种特殊形式的事件控制。等待语句的性质是   等级敏感,而不是基本事件控制(由@字符指定),它是边缘敏感的。

     

等待陈述应评估条件;如果是假的话,等待后的程序性陈述   声明应继续被阻止,直到该条件成为真,然后继续。

基本上,您可以将wait(<boolean expression>)视为连续检查表达式。一旦表达式为真,等待将解除阻塞,顺序代码的执行将继续。

如果在第一次遇到wait()时表达式为真,则它将不会等待。