打造IC人才
科技生态圈

当SVA缺少了分号会发生什么?

发布时间:2022-08-26

来源:IC修真院

在实际的项目验证中,很可能会因为对于SVA断言语法的错误理解导致遗漏bug。

下面举一个看起来非常微不足道,实际可能遗留严重的bug的小案例。

缺少分号

第一个案例就是这么简单,只是少了一个分号。

很多验证工程师可能认为缺少分号总是会导致编译Error,但事实上,SVA 语言缺少分号并不总是能够被发现,以至于最终导致bug遗漏。

assert property (foo)

assert property (bar) else $error(“Bar problem.”);

在SVA语法中,可以不用显式地指定断言标签,下面的[]中间内容都是可选的。

[label] assert property ( prop )

[ pass_action ] [else fail_action];

可以不指定标签名称(label)

可以不用指定SVA通过后的行为(pass_action)

可以不指定SVA失败后的行为(fail_action)

SVA最后的分号“;”代表着SVA断言的结束

再回到上面的示例,

assert property (bar)

else $error(“Bar problem.”);

由于第一个断言缺少分号,第二个断言SVA执行的条件就是

assert property (foo)

PASS了,即第二个断言成为第一个断言的pass action。

对于EDA 仿真而言,可能会遗漏

assert property (foo) fail &&

assert property (bar) fail

的场景。

更严重的是对于formal fpv,整个第二个SVA断言都会被忽略!!!。


立即下载

推荐阅读

换一换