【问题标题】:How to monitor signal in SystemVerilog program block如何在 SystemVerilog 程序块中监视信号
【发布时间】:2012-07-31 18:41:14
【问题描述】:

我正在尝试使用 SystemVerilog 了解一些关于测试平台的知识。 但是我似乎找不到在程序块内监控 DUT 信号的方法

考虑以下示例。 信号“虚拟”是 DUT 的输出并输入到程序块。 现在我需要监控程序块中的 'dummy' 以在 'dummy' 具有特定值时引发标志 'test'。

在一般模块驱动的测试平台中,我会简单地写 always @(dummy),但程序下不允许 always 块。我将如何实现这一目标?

【问题讨论】:

  • 记得有人说程序块有问题,不建议使用。
  • @EnchanterThunderbird 你能说明一些关于这个问题的参考吗?
  • 请参阅go.mentor.com/programblocks,了解有关避免程序阻塞的建议。

标签: verilog system-verilog


【解决方案1】:

你可以这样写顺序代码:

program test(input dummy);
  initial begin
    ...
    wait(dummy == <something>);
    ...
    @(posedge dummy);
    ...    
  end
endprogram

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

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

【讨论】:

  • 太棒了,我可以在 fork-join 下添加等待,这样 TB 可以通过一般执行正常工作,并且我可以检查所需的信号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多