我正在尝试使用 SystemVerilog 学习一些关于测试平台的知识。但是我似乎找不到在程序块内监视 DUT 信号的方法
考虑以下示例。信号“虚拟”是 DUT 的输出并输入到程序块。现在我需要监视程序块中的“dummy”以在“dummy”具有特定值时引发标志“test”。
在一般的模块驱动测试平台中,我会简单地写总是@(虚拟),但程序下不允许总是块。我将如何实现这一目标?
我正在尝试使用 SystemVerilog 学习一些关于测试平台的知识。但是我似乎找不到在程序块内监视 DUT 信号的方法
考虑以下示例。信号“虚拟”是 DUT 的输出并输入到程序块。现在我需要监视程序块中的“dummy”以在“dummy”具有特定值时引发标志“test”。
在一般的模块驱动测试平台中,我会简单地写总是@(虚拟),但程序下不允许总是块。我将如何实现这一目标?
您可以像这样编写顺序代码:
program test(input dummy);
initial begin
...
wait(dummy == <something>);
...
@(posedge dummy);
...
end
endprogram
always
或者您可以使用forever
循环模拟构造。
program test(input dummy);
initial begin
forever begin
@(posedge dummy);
if (dummy == <something>) ...
end
end
endprogram