SVA(SystemVerilog Assertions):$ assertoff和$ assertkill之间的区别?

时间:2013-03-01 14:21:18

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

使用SystemVerilog断言$assertoff;$assertkill;之间有什么区别?

他们似乎都停止执行断言。

2 个答案:

答案 0 :(得分:3)

$assertoff将停止断言,但已处于活动状态的断言除外。

断言在触发并等待移至失败或完成后处于活动状态。 $assertoff不会停止或终止处于活动状态的断言。

$assertkill将停止所有断言,将所有断言全部移开。

来自Cadence帮助:

  

<强> $ assertoff
  暂停检查所有指定的断言,直到遇到$ asserton。一个断言   已经执行的,包括断言动作块,将继续执行。

     

<强> $ assertkill
  暂停检查当前正在执行的所有指定断言,然后暂停检查所有指定的断言,直到遇到$ asserton。
   NB: 根据IEEE 1800 SystemVerilog标准,由于调度问题,$ assertkill任务对立即断言和非时间并发断言没有影响。

答案 1 :(得分:-2)

$ assertoff只不过它会停止检查所有指定的断言,除非并且直到$ assert的后续开启。

当你对一个断言进行处理时,不会影响我的断言是通过还是失败。