【问题标题】:Where can I write concurrent assertion in monitor?我在哪里可以在监视器中编写并发断言?
【发布时间】:2017-07-20 18:37:33
【问题描述】:

我必须在我的监视器中编写以下并发断言:

assert property (vif.cos == 1 |-> vif_out.y == vif.xi/sqrt(2));

我尝试将其放入 run_phase,但出现以下错误: 任务/类方法中不允许并发断言。

我应该把它放在哪里?

【问题讨论】:

  • 您可以在模块、接口、程序、时钟块或包内声明并发断言。如果有任何其他范围可以声明并发断言,请纠正我。

标签: system-verilog assertions uvm system-verilog-assertions


【解决方案1】:

请参阅IEEE Std 1800-2012,第 14.16 节(并发断言)。

并发断言语句可以用以下任何一种方式指定:

  • 作为语句的始终过程或初始过程,无论这些过程可能出现在何处
  • 一个模块
  • 一个界面
  • 一个程序
  • 生成块
  • 检查员

就我个人而言,我只是将那段代码移到接口文件中。

【讨论】:

    【解决方案2】:

    任务/类方法中不允许并发断言。你必须把它们放在一个模块或类似的(接口/程序/检查器)中。

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 2022-08-10
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多