验证中的形式验证

什么是形式验证

 形式验证是使用基于数学变换的静态分析来确定硬件或软件行为的正确性的技术集合的总体术语,与动态验证技术(如软件仿真)对比。 

 随着设计规模的增加和仿真时间的增加,验证团队一直在寻找方法来减少将系统验证到可接受的覆盖范围所需的向量数量。形式验证可能非常快,因为它不必评估每个可能的状态,以证明给定的逻辑在所有条件下都满足一组属性。但是,其性能在很大程度上取决于它所部署的逻辑类型以及它的应用方式。

 诸如片上网络的安全问题和通信问题(例如死锁)已经鼓励用户以更集中的方式采用形式验证。例如,由Jasper Design Automation创建的安全应用程序等形式验证工具可以检查逻辑中潜在的路径,这可能会比使用仿真更有效且安全。在集中形式验证的情况下,供应商使用针对特定类型问题的脚本将多个数学算法打包在一起。

 等价性检查

 一些类型的形式验证在设计中已经很普遍。等价性检查已用了十多年时间,以检查设计的RTL和门级网表描述是否代表相同的设计。等价性检查是针对超出门级仿真工具有效容量的较大设计问题而引入的,并迅速接管硬件加速解决方案以及软件门级仿真器。对于用户而言,等价性检查技术相对易于使用,如Synopsys的Formality等工具。

 由于使用了非常大的器件以及比较模拟与硬件的时间,考虑到FPGA提供的内部可视性有限,等效性检查已经超越了SoC RTL设计,因此迁移到FPGA设计中。通过Calypto Design Systems的SLEC等工具,等价检查也用于检查模块的ESL和RTL描述的功能等同性。

 系统级的使用正在整个SoC行业稳步推进。例如,英特尔使用一种等价性检查来验证缓存一致性协议与其定义的RTL实现是否一致,该协议本身已经基于更复杂的形式验证,使用形式化技术进行了正确性测试:模型检查。

 模型检查

 模型检查形式验证的部署比较复杂,因为它不仅依赖于用户生成的断言,而且还依赖于为给定问题选择正确的算法。早期的形式化验证工具也遇到了困难,因为解决方案主要基于早期等价性检查工具中使用的相同二元决策图(BDD),因此很快就会耗尽内存。它改变了乘法器可以表示的方式,使得验证它们的工作正式易于处理。

 其他类型的逻辑和数据通路给BDD带来了问题,导致形式化验证方法的普及,从而减慢了采用速度。用户不仅需要成为专家,还需要形式验证理论才能为每项工作选择合适的工具。 EDA公司通过在他们的工具中建立更好的启发式方法作出反应,试图识别逻辑类型,然后选择最适合的工作。容量仍然是形式验证技术的一个问题,所以仍然主要集中在模块级或协议验证上。然而,开发用于帮助形式验证进入主流的技术现在被广泛用于基于仿真的验证。

 最初,形式验证工具需要数学描述来提供证明。即使对于具有基本理论经验的人来说,这些也很难组合在一起。计算机和EDA行业的反应是开发可以用硬件工程师熟悉的术语来描述所需行为的语言,但可以由工具将其内部转换为数学描述。

 属性规范语言(PSL)的开发 - 最初由IBM作为Sugar语言 - 为形式验证工具提供断言,但PSL支持的断言类型现在被广泛用于仿真。设计人员在他们的代码中插入断言,告诉用户应该如何使用模块并测试违反这些条件的情况。例如,断言可以在不超过十个时钟周期之后检查确认信号是否跟随请求。尽管断言的语法呈现出学习曲线,但它们比数学表达式更易于处理。  

 SoC级别的形式验证

 由于形式验证尚未形成可以测试SoC整个行为的形式,因此需要将其用作更广泛的验证策略的一部分,该验证策略将包括硬件模拟以及最有可能用于大型设计的软件仿真。覆盖率管理是将形式化验证集成到更广泛的流程中的一种有效机制,因为通过选择适当的覆盖点,可以将仿真所需向量从已经通过形式验证技术进行了有效测试的逻辑部分引导出来。

 相反,由现有软件和固件驱动的仿真和仿真结果可以概括出设计中需要更加彻底地运用的部分设计,有可能通过形式验证的技术。在将多用途形式工具整合到他们的投资组合中后,主要供应商已经开发出了越来越善于支持这些程序的环境和方法。例如,Cadence设计系统公司和Mentor Graphics公司已经将形式验证技术构建到Incisive和Questa各自的验证环境中。

 在某些情况下,形式和动态技术被纳入到一个工具中。 Synopsys的Magellan就是一个例子,它将形式验证引擎与VCS仿真器相结合。 Magellan背后的想法是发现深埋在流水线内的错误,因此需要很多周期来触发使用仿真。 

 形式验证越来越多地被用于支持IP核的获取以及SoC集成期间的特定任务。这些应用程序是模块化形式化验证的例子,其中工具是从核心形式算法构建而成,并与针对特定目的进行调整的脚本或集成到软件工具中的脚本相结合。

 重点形式验证

 时钟域跨越(CDC)是一个日益重要的领域的好例子。 CDC与我们在一起已经很长时间了,但是现在的SoC时钟的发展已经从第三阶段升级到第一阶段。有几个时钟的设计可能已经在仿真中解决; 但是更复杂的时钟会花费数百人着手在此,最好在这方面得到验证。

 X传播是形式化技术的另一个应用,也是关于仿真的问题的一个很好的例子。更复杂的设计会抛出更多未知的状态,这可能会导致错误识别或错过错误。

 形式验证的这种有针对性的用途具有重要优点 

 它解决了验证和设计工程师高度重视的领域(许多模块都是为两者设计的)。

 由于它针对的是更具体的领域,因此对其捕获相关错误的能力有更大的信心 - 在成功部署这些模块后迅速建立起来的信心。

 它隐藏了大量支持形式验证的技术复杂性,因此用户在技术本身中不需要甚至是半专家就可以。

 这些因素结合起来,增强了对形式验证在整体层面上运作能力的信心,从而促进了其更广泛的应用。

 来自三大供应商的主要支持来自2014年春季,当时Cadence设计系统公司达成收购Jasper Design Automation的协议。Jasper是最积极地关注具体问题战略的公司,在JasperGold品牌下构建了一系列形式验证“应用程序”。除X传播检查外,各个应用程序还会检查其他事项:片上连接性;在低功耗设计中通常遇到的问题;以及最近潜在问题的逻辑路径,这些潜在问题的逻辑路径可能会危及SoC部分的安全属性,这些属性意味着受到保护。

 

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值