如何在SystemVerilog程序块中监视信号

wis*_*key 3 verilog system-verilog

我正在尝试使用SystemVerilog了解有关测试平台的一些内容.但是我似乎无法找到监视程序块内部DUT信号的方法

考虑以下示例.信号'dummy'是DUT的输出并输入到程序块.现在我需要在程序块中监视'dummy'以在'dummy'具有特定值时引发标记'test'.

在一般模块驱动的测试平台中,我只想写@(虚拟),但程序下不允许使用块.我怎么做到这一点?

dwi*_*kle 6

您可以像这样编写顺序代码:

program test(input dummy);
  initial begin
    ...
    wait(dummy == <something>);
    ...
    @(posedge dummy);
    ...    
  end
endprogram
Run Code Online (Sandbox Code Playgroud)

或者您可以always使用forever循环模拟构造.

program test(input dummy);
  initial begin
    forever begin
      @(posedge dummy);
      if (dummy == <something>) ...
    end 
  end
endprogram
Run Code Online (Sandbox Code Playgroud)