可以通过降低约束的复杂度来优化Formal的执行效率吗?

描述

我们可以通过降低约束的复杂度来优化Formal的执行效率,但是这个主要是通过减少Formal验证空间来实现的,很容易出现过约,导致bug遗漏。

简化断言以优化Formal形式分析的主要挑战是:

由于DUT一般是比较复杂的,所以工程师们都倾向于使用长而复杂的,甚至单行断言来精确地编码DUT的期望行为。但是对于Formal形式分析而言,断言应该尽可能简单,断言所涉及的时序逻辑深度应该尽可能短,这样才能更快地完成证明。

断言简化的关键在于将你需要验证的复杂行为“分解”为最基本的行为元素,注意分解前后的断言一定要是等价的

“相信”Formal形式工具能够合理安排这些浅逻辑深度断言的证明,下面是一个简单的例子示意:假设你有一个错误指示信号“error”,它的生成逻辑如下

 

assign error = err1 | err2;

 

其中“err1”和“err2”用于检测两种不同的错误场景。下面的原始的断言:断言error永远不会发生。

DUT

当其中“err1”或者“err2”后面的逻辑锥(COI)电路很大时,我们可能没有办法完成这个断言的证明。我们可以分解原始的断言,分别验证“err1“和“err2”。

DUT

如果“err1的逻辑锥比较小,“err2”的逻辑锥比较大,我们可能首先比较快地完成“err1”的断言证明,后面再针对性地优化“err2”的证明。

同样,对于下面这个例子:

DUT

我们也可以对复杂断言做简化,简化前后的断言版本是等价的,但是Formal形式分析的效果会好很多。

因为对于Formal工具而言,逻辑锥小的断言更容易完成证明,并且如果已经完成了一个简单断言验证之后,Formal工具会利用这个断言验证的结果去证明其他的断言。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分