打造IC人才
科技生态圈
发布时间: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断言都会被忽略!!!。
上一篇:国内有哪些高校开设集成电路专业?
推荐阅读
2023-03-06
2022-11-16
2022-09-27
2022-10-11
2022-11-25