形式化验证算法简介

影响锥(Cones of Influence ,COI)

当验证某个模块时,根据某IO的取值,将输入划分为多个case,可以减少验证的复杂程度。例如:当计算单元包含加、乘运算时,通过添加约束(assumptions),将加法case和乘法case分开验证。在验证加法case时,工具只考虑与加法case相关的逻辑代码,与乘法case相关的逻辑代码被忽略。从而影响输入到输出的逻辑呈现出一个像“锥子”一样的结构,因此称为影响锥或逻辑锥。

“从验证起始点到输出结果,影响输出结果的逻辑呈现一个锥形的结构。”

“在验证某个属性时,将不影响结果的逻辑代码在验证过程中忽略,称为影响锥化简。”

布尔表达式化简

布尔逻辑通常可以由一系列的真值表来表示,而RTL代码则包含海量的布尔逻辑,因此布尔表达式化简通常只适合简单逻辑的化简。

主要方法是将表达式化简为析取范式disjunctive normal form (DNF)或主析取范式。

析取范式是由有限个简单合取式构成的析取式。

主析取范式由一个个极小项(特殊的简单合取范式)析取组成,对于简单合取式来说,要想使简单合取式为假,有多种赋值方式,但是要想简单合取式为真只有一种赋值方式(即每个命题变项都为真的情况)。所以我们就只考虑简单合取式成真的情况,简单合取式为真时称为最小项,所以也就有了主析范式的极小项就是原公式的成真赋值一说。

表示A或B,其真值表为:

A

B

Out

0

0

0

0

1

1

1

1

1

1

0

1

也就是说想让out为1,只需判定A是否为1,或者B是否为1.

稍微复杂的示例,表示想要判定输出为1,只需要判定(A^B)为1,或者 判定C为1即可。也就是说判定了某个极小项为真,则该析取范式为真。

化简为析取范式有利于自动化,也有利于搭建FV工具。

适合规模较小的问题。

二进制决策树和二进制决策图
(Binary Decision Tree/Diagram ,BDT&BDD)

推荐讲得好的链接:

二元决策图(Binary Decision Diagrams - BDD) (一) - 知乎 (zhihu.com)

可满足性 (Satisfiability, SAT)

一、P NP NP-Complete问题:

  1. 所有可以在多项式时间内求解的判定问题构成P类问题。

判定问题是指输出结果为yes或no的问题,比如:3233是否可以写成两个大于1的数字的乘积?是否存在一条路线有且仅有一次的走过七桥问题的每一座桥?

  1. 所有非确定性多项式时间内可解的判定问题构成NP类问题。

NP类问题将问题分为求解和验证两个阶段,问题的求解是非确定性的,无法在多项式时间内得到答案,而问题的验证却是确定的,能够在多项式时间里确定结果。

  1. NP中的一类比较特殊的问题,这类问题中每个问题的复杂度与整个类的复杂度有关联性,假如其中任意一个问题在多项式时间内可解的,则这一类问题都是多项式时间可解。这些问题被称为NP完全问题。

二、SAT问题:

  1. 在现实生活中,存在着大量的约束可满足性(Constraint Satisfaction Problem,CSP) 问题,这类 CSP 问题在实际生产中存在着广泛的应用。命题逻辑可满足性 (Propositional Satisfiability,SAT)问题是目前研究最为广泛的一类 CSP 问题。
  2. SAT 问题是一个经典的判定问题,同样是第一个被证明为 NP 完全的问题。

给定目标布尔表达式:

满足给定约束条件:

问题可以描述为:

证明 !(imp||req)=1 恒成立,真值表为:

即证明以下表达式恒成立(tautology):

证明以上表达式恒成立,我们需要证明在所有的输入空间{a,b,c}中以上表达式都输出1,因此需要遍历O(2^n)个组合(n表示问题的规模、输入的大小、变量的数目blabla)。

因此,可以从find bug的角度出发,发现counterexample(cex),即证明:

是否存在一个cex,使  (imp||req)=0

即求解如下四个与表达式同时等于0的解,如果没有可满足的解,即没有发现反例,则说明目标现满足要求,即!(imp||req)=1 恒成立。

从而将一个O(2^n)的判定问题,变成了一个O(n)的判定问题。

有界模型检查(Bounded Model Checking,BMC)

RTL中通常包含状态转移逻辑,某一时刻的输入是前面某时刻的输出。如果将这个依赖无限展开,其对应的COI呈现爆炸性增长,极大地增加了验证复杂程度,使其很难被求解。

f(n) = f(n-1)+y(n)

但是通常情况下,为了保证系统的稳定性,这种依赖呈现出一定的周期性,状态转移通常是有限的。

因此BMC的思想是,能否在一个有限的步数n中,考察系统运行的情况,确定性质是否满足。若不能确定性质是否存在,则提高n值,重新进行检验。在每一个检查周期内,BMC问题被转化成SAT问题求解。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值