广告

如何有效地采用基于断言的验证?

2007-07-27 Chris Komar 阅读:
有关断言和更新的验证方法学的新近标准极大地方便了设计师创建、实现和监视断言。设计师可以利用完整的断言验证(ABV)方法在开发RTL时编写断言,然后用针对单个模块的形式分析工具对这些断言以及自动析取的断言进行验证。针对设计团队在标准生产流程中采用ABV组件时所面临的挑战,本文给出了一些建议和策略。

有关断言和更新的验证方法学的新近标准极大地方便了设计师创建、实现和监视断言。断言在形式分析、仿真和加速/模拟中普及的速度正在加快,因为用户已经认识到让断言主动地监视RTL代码中的错误可以获得巨大的好处。

设计师可以利用完整的断言验证(ABV)方法在开发RTL时编写断言。然后用针对单个模块的形式分析工具对这些断言以及自动析取的断言进行验证,有时这一过程可能先于仿真数个月的时间。

在集成模块或群集(cluster)级,作为仿真补充的形式分析将继续发挥作用。在这一级别,仿真不仅有助于验证断言的正确性,而且可以验证整个模块或群集的功能覆盖率。

而在全芯片或系统级,仿真、加速和模拟都是主选工具。在组成完整芯片的子模块中使用的相同断言可明显带来更多的好处。在这一级别,断言可以提供更快的调试速度和更好的边界案例曝光率,并有助于功能覆盖率的提高。

在标准开发流程中采用ABV组件时,设计团队将面临诸多挑战。以下是一些应对策略。

建议

. 专注于断言语言的有效生产子集。一下“吃”得太多,只会增加出错的机率。没有理由要马上精通整个断言语言;逐步推进的方法可带来巨大好处,如更容易的采纳和更高的投资回报。

. 考虑使用库。诸如开放验证库(OVL)和Incisive断言库(IAL)这样的库包含共同的组件和设计结构,因此非常方便启用ABV。许多公司开始时都使用一些断言库元件集,并因此获得巨大的回报。

. 将眼光放远一点。在断言方面做的工作应该应用于整个流程中,包括设计以及模块、芯片和整个系统。例如,为形式分析编写的断言应该应用于仿真中和仿真后的加速和模拟。这样做可以使整个方法更流畅、更具重复性,并更容易取得成功。

. 考虑到复用。针对设计中的公共接口,要考虑创建一个可参数化的可复用元件库。要在本项目或今后的项目中不断地复用这些库。

. 在仿真中用覆盖率弥补断言。大多数断言描述的是设计功能,没有表达激励对设计/断言带来的好处。编写一些断言并用作功能覆盖率目标是有好处的。

图:从模块到全芯片或系统级的基于断言的完整验证流程。
图:从模块到全芯片或系统级的基于断言的完整验证流程。

不建议

. 花太多时间在操心使用哪种断言语言方面。System Verilog断言和特殊属性语言(PSL)采用的都是普通语法,实际上功能相仿,但与硬件描述语言不同。这两种断言语言代表了全新的语言和语法,肯定会提高总的学习曲线。

. 偏好一种语言。事实上,断言可能来自使用多种断言语言的多个地方(如第三方验证知识产权提供商、内部设计和验证部门等)。

. 为设计的所有方面编写断言。专注于高风险的区域,如果时间允许审慎地增加更多的断言。首先要把重点放在控制逻辑上。将白盒可视性做进设计中面向控制的部分,因为大部分缺陷在这里,因此具有最大的价值。

. 害怕使用简单的VHDL或Verilog/SystemVerilog来生成更容易更熟悉的条件进行检查而使问题简单化。这样做可以减少由于创建错误断言而引起的风险。记住,这些代码只用于仿真,不会被综合。

. 消极等待引入断言。断言创建应该开始于设计开发过程中的早期阶段。当设计师编写RTL时,验证工程师就应使用断言,并在模块级编写附加断言,同时考虑端到端事务处理,从而有效补充设计师的白盒断言。

Incisive核心能力高级技术负责人

Michal Siwinski

Incisive平台总监

Cadence设计系统公司

本文为EET电子工程专辑 原创文章,禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
您可能感兴趣的文章
相关推荐
    广告
    近期热点
    广告
    广告
    可能感兴趣的话题
    广告
    广告
    向右滑动:上一篇 向左滑动:下一篇 我知道了