【发布时间】:2013-03-01 14:21:17
【问题描述】:
使用 SystemVerilog 断言,$assertoff; 和 $assertkill; 有什么区别?
他们似乎都停止了断言的执行。
【问题讨论】:
标签: verilog system-verilog system-verilog-assertions
使用 SystemVerilog 断言,$assertoff; 和 $assertkill; 有什么区别?
他们似乎都停止了断言的执行。
【问题讨论】:
标签: verilog system-verilog system-verilog-assertions
$assertoff 将停止断言,除了那些已经处于活动状态的断言。
断言一旦被触发就处于活动状态并等待移动到失败或完成。 $assertoff 不会停止或杀死处于活动状态的断言。
$assertkill 将停止所有断言,将所有断言移至关闭状态。
来自 Cadence 帮助:
$assertoff
暂停检查所有指定的断言,直到遇到 $asserton。一个断言 已经执行的,包括断言动作块,将继续执行。$assertkill
停止检查当前正在执行的所有指定断言,然后暂停检查所有指定断言,直到遇到 $asserton。
注意: 根据 IEEE 1800 SystemVerilog 标准,$assertkill 任务由于调度问题,对即时断言和非临时并发断言没有影响。
【讨论】:
$assertoff 什么都不是,但它会停止检查所有指定的断言,除非并且直到 $assert 的 sunsequent 为 on。
当你处理一个断言时,它不会影响我的断言是通过还是失败。
【讨论】: