形式验证

科技工作者之家 2020-11-17

所谓形式验证,是指从数学上完备地证明或验证电路的实现方案是否确实实现了电路设计所描述的功能。形式验证方法分为等价性验证、模型检验和定理证明等。

原理形式验证时要确定电路在哪一级电路上的测试是正确的,使用模型检验的方法看两个电路在描述上是否一致。

1.组合逻辑电路的逻辑验证

对组合逻辑来说,不存在状态寄存器,其输出值Z[t]不依赖于前面的输入值X[t-i](1≤i≤t)。这时只要对每个输入向量证明其输出向量相同。在组合逻辑验证领域有以下两类方法。

(1)转换为单一抽象模型比较。通过对单一表示的结构进行比较,得出其功能等价的结论。在最坏的情况下,布尔函数为正,表示随输入个数指数增加,其过大的内存需求限制了一般布尔函数的验证能力。

(2)利用测试输入向量进行验证。探寻使两个电路具有不同输出的输入测试向量,若不存在这样的测试向量,则电路在功能上等价。在最坏情况下,这种方法需要穷举所有可能的输入测试矢量,运行时间又成为一个主要问题。

2.时序逻辑电路的验证

对一个时序电路而言,可以把它看成一个有限状态机(FSM,finite-state machine)。电路功能的等价可以用有限状态机的等价来判断。假定有两个状态机A和B,要对它们进行比较。直观的说,当A和B有相同的接口,而且从相同的初始状态出发,两者对有效输入值序列产生相同的输出值序列,则可以说A和B等价。1

方法形式验证的方法有等价性检查、模型检查、定理证明等。形式验证主要是用来在覆盖所有可能的输入情况下检查是否与给定的规范一致。SoC验证的形式化方法主要是等价性检查和模型检查。

模型检查主要是检查RTL代码是否满足规范中规定的一些特性。在规定这些特性时一般使用特性规范语言,目前一般也使用基于断言的验证语言。由于这种方法可以在不需要仿真的前提下检查设计中所有可能出现的情况是否满足规定的特性,所以使用这种方法不会遗漏任何的边界情况。

等价性检查主要是检查两个门级网表之间是否一致,保证网表处理后不会改变电路的功能,或者保证网表能正确地实现RTL代码所描述的功能,或者保证两种RTL描述逻辑一致。等价性检查通过对比两个描述来检测它们的等价性。等价性检查工具将两个设计读入内存,用形式化数据算法分析彼此的数据结构来进行比较。只要两个设计的所有输出管脚与每一个寄存器或锁存器的功能是一样的,那么就认为两个设计的功能等效。它主要是用来寻找实现中的缺陷,而不是设计中的缺陷,与检验C语言到汇编语言的转换的检测类似。因此这种方法很难发现同时存在于两种要比较的描述中的固有缺陷。

定理证明系统一般分为自动定理证明系统和交互定理证明系统,交互定理证明系统对硬件验证来说最有价值。比较成熟的交互证明系统有Boyer-Moore定理证明器,它以递归函数论为基础,以数学归纳法为核心技术;PVS原形验证系统是基于高阶逻辑和类型理论的;HOL定理证明器系统也是基于高阶逻辑的系统;STEP是基于时态逻辑的定理证明系统;此外还有XYZ系统。定理证明器最适合为研究工作提供验证工具和环境。2

优点形式验证的优点如下:

(1)形式验证是对指定描述的所有可能的情况进行验证,覆盖率达到了100%。

(2)形式验证技术是借用数学上的方法将待验证电路和功能描述或参考设计直接进行比较,不需要开发测试激励。

(3)形式验证的验证时间短,可以很快发现和改正电路设计中的错误,可以缩短设计周期。

形式验证主要验证数字IC设计流程中的各个阶段的代码功能是否一致,包括综合前RTL代码和综合后网表的验证,因为如今IC设计的规模越来越大,如果对门级网表进行动态仿真,会花费较长的时间,而形式验证只用几个小时即可完成一个大型的验证。另外,因为版图后做了时钟树综合,时钟树的插入意味着进入布图工具的原来的网表已经被修改了,所以有必要验证与原来的网表是逻辑等价的。3

本词条内容贡献者为:

邱学农 - 副教授 - 济南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。