形式验证Formality

形式验证Formality
以下内容来自百度百科https://baike.baidu.com/item/%E5%BD%A2%E5%BC%8F%E9%AA%8C%E8%AF%81/10075710?fr=aladdin

定义

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

原理

1.组合逻辑电路的逻辑验证
对组合逻辑来说,不存在状态寄存器,其输出值Z不依赖于前面的输入值X。这时只要对每个输入向量证明其输出向量相同。在组合逻辑验证领域有以下两类方法。
(1)转换为单一抽象模型比较。通过对单一表示的结构进行比较,得出其功能等价的结论。在最坏的情况下,布尔函数为正,表示随输入个数指数增加,其过大的内存需求限制了一般布尔函数的验证能力。
(2)利用测试输入向量进行验证。探寻使两个电路具有不同输出的输入测试向量,若不存在这样的测试向量,则电路在功能上等价。在最坏情况下,这种方法需要穷举所有可能的输入测试矢量,运行时间又成为一个主要问题。
2.时序逻辑电路的验证
对一个时序电路而言,可以把它看成一个有限状态机(FSM,finite-state machine)。电路功能的等价可以用有限状态机的等价来判断。假定有两个状态机A和B,要对它们进行比较。直观的说,当A和B有相同的接口,而且从相同的初始状态出发,两者对有效输入值序列产生相同的输出值序列,则可以说A和B等价。

方法

形式验证的方法有等价性检查、模型检查、定理证明等。形式验证主要是用来在覆盖所有可能的输入情况下检查是否与给定的规范一致。SoC验证的形式化方法主要是等价性检查和模型检查。
模型检查主要是检查RTL代码是否满足规范中规定的一些特性。在规定这些特性时一般使用特性规范语言,一般也使用基于断言的验证语言。由于这种方法可以在不需要仿真的前提下检查设计中所有可能出现的情况是否满足规定的特性,所以使用这种方法不会遗漏任何的边界情况。
等价性检查主要是检查两个门级网表之间是否一致,保证网表处理后不会改变电路的功能,或者保证网表能正确地实现RTL代码所描述的功能,或者保证两种RTL描述逻辑一致。等价性检查通过对比两个描述来检测它们的等价性。等价性检查工具将两个设计读入内存,用形式化数据算法分析彼此的数据结构来进行比较。只要两个设计的所有输出管脚与每一个寄存器或锁存器的功能是一样的,那么就认为两个设计的功能等效。它主要是用来寻找实现中的缺陷,而不是设计中的缺陷,与检验C语言到汇编语言的转换的检测类似。因此这种方法很难发现同时存在于两种要比较的描述中的固有缺陷。
定理证明系统一般分为自动定理证明系统和交互定理证明系统,交互定理证明系统对硬件验证来说最有价值。比较成熟的交互证明系统有Boyer-Moore定理证明器,它以递归函数论为基础,以数学归纳法为核心技术;PVS原形验证系统是基于高阶逻辑和类型理论的;HOL定理证明器系统也是基于高阶逻辑的系统;STEP是基于时态逻辑的定理证明系统;此外还有XYZ系统。定理证明器最适合为研究工作提供验证工具和环境

优点

形式验证的优点如下:
(1)形式验证是对指定描述的所有可能的情况进行验证,覆盖率达到了100%。
(2)形式验证技术是借用数学上的方法将待验证电路和功能描述或参考设计直接进行比较,不需要开发测试激励。
(3)形式验证的验证时间短,可以很快发现和改正电路设计中的错误,可以缩短设计周期。
形式验证主要验证数字IC设计流程中的各个阶段的代码功能是否一致,包括综合前RTL代码和综合后网表的验证,因为如今IC设计的规模越来越大,如果对门级网表进行动态仿真,会花费较长的时间,而形式验证只用几个小时即可完成一个大型的验证。另外,因为版图后做了时钟树综合,时钟树的插入意味着进入布图工具的原来的网表已经被修改了,所以有必要验证与原来的网表是逻辑等价的

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 形式验证是一种通过数学方法来证明软件或硬件系统的正确性的技术。它可以帮助开发人员在设计和实现过程中发现和纠正错误,从而提高系统的可靠性和安全性。而debug则是指在软件或硬件系统中发现并修复错误的过程。在软件开发中,形式验证和debug都是非常重要的步骤,可以帮助开发人员确保系统的正确性和稳定性。 ### 回答2: Formality形式验证Debug是一种在计算机科学中广为使用的技术。它有助于确保我们所编写的代码符合我们所期望的结果,并能够在特定条件下正确地运行。 在编写代码过程中,我们经常会发现错误,这些错误可能是语法错误、逻辑错误或者是程序运行中的错误。而在程序运行时发现和修复这些错误非常困难并且耗时,因此我们需要一种更好的方法来检查和修复这些错误。 Formality形式验证Debug是一个解决这个问题的方法。它基于形式验证技术来实现程序的正确性证明。简单来说,这种验证是基于数学原理的,可以帮助我们通过计算机验证我们所编写的程序在所有可能情况下都能正确地运行。 在Formality形式验证Debug中,我们需要将程序输入到一个验证工具中,该工具会自动分析程序的结构和逻辑,并生成一个证明来证明程序的正确性。这个证明可以用来确保该程序能够达到预期目标并且不出现错误。 值得注意的是,Formality形式验证Debug并不能完全避免所有的错误,但是它能大大减少可能出现的错误,并为我们提供更高效、更可靠的方法来开发代码和保证代码的正确性。 总之,Formality形式验证Debug是一种高效且可靠的方法来确保我们编写的程序能够正确运行。它可以极大地减少程序在运行时出现的问题,提高程序的质量,并使我们更加自信地将程序发布到生产环境中。 ### 回答3: 在软件开发中,formality形式验证debug是一种基于形式方法的软件验证技术,它可以通过形式化推理,对软件的正确性进行证明。formality形式验证debug的流程通常包括如下几个步骤: 1.形式规约:首先对软件系统进行形式化建模,确定其规范行为,包括输入、输出、状态转换等。这个步骤主要是为了在后续的验证过程中,建立正确的推理模型。 2.形式化推理:这一步骤是formality形式验证debug的核心步骤,它通过基于逻辑和数学的严格推理,对软件系统进行验证。具体的,可以用定理证明的方法,将规约后的软件系统描述成数学公式,然后利用逻辑推理对它们进行分析和验证。 3.错误定位:如果在验证过程中发现了错误或不一致,需要进一步定位错误和修复错误。在定位错误时,需要通过调试技术对代码进行追踪和分析。 4.验证结果:形式验证debug的最终结果是一个数学证明或反证,用来证明软件系统的正确性或者指出错误。如果发现了错误,需要进行相应的修改和验证,直到软件系统达到正确性标准。 总的来说,在软件开发过程中,formality形式验证debug能够极大地提高软件的正确性和可靠性,避免因为代码漏洞而导致的系统崩溃或者严重的安全问题,同时,它也能够为软件开发人员提供更高效的开发手段和优化程序的方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值