使用SystemVerilog断言$assertoff;
和$assertkill;
之间有什么区别?
他们似乎都停止执行断言。
答案 0 :(得分:3)
$assertoff
将停止断言,但已处于活动状态的断言除外。
断言在触发并等待移至失败或完成后处于活动状态。 $assertoff
不会停止或终止处于活动状态的断言。
$assertkill
将停止所有断言,将所有断言全部移开。
来自Cadence帮助:
<强> $ assertoff 强>
暂停检查所有指定的断言,直到遇到$ asserton。一个断言 已经执行的,包括断言动作块,将继续执行。<强> $ assertkill 强>
暂停检查当前正在执行的所有指定断言,然后暂停检查所有指定的断言,直到遇到$ asserton。
NB: 根据IEEE 1800 SystemVerilog标准,由于调度问题,$ assertkill任务对立即断言和非时间并发断言没有影响。
答案 1 :(得分:-2)
$ assertoff只不过它会停止检查所有指定的断言,除非并且直到$ assert的后续开启。
当你对一个断言进行处理时,不会影响我的断言是通过还是失败。