验证中的形式验证

什么是形式验证

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

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

 诸如片上网络的安全问题和通信问题(例如死锁)已经鼓励用户以更集中的方式采用形式验证。例如,由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部分的安全属性,这些属性意味着受到保护。

 

展开阅读全文

没有更多推荐了,返回首页