我在哪里可以在监视器中编写并发断言?

时间:2017-03-01 12:24:25

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

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

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

我试着把它放在run_phase中,但是我收到了以下错误: 任务/类方法中不允许并发断言。

我应该把它放在哪里?

2 个答案:

答案 0 :(得分:1)

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

  

可以在以下任何一项中指定并发断言语句:

     
      
  • 作为陈述的始终程序或初始程序,无论何处出现这些程序
  •   
  • 模块
  •   
  • 界面
  •   
  • 一个程序
  •   
  • 生成块
  •   
  • 检查员
  •   

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

答案 1 :(得分:0)

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