首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于SystemVerilog语言的验证方法学(1)

基于SystemVerilog语言的验证方法学(1)

1 SystemVerilog验证方法学介绍

      芯片验证中虽然传统验证方法尽力保持技术更新步伐以适应设计尺寸以及复杂度的增加,但验证依然是当前SoC以及可重用IP模块设计中面临的最大挑战。解决这个问题的方法是采用有丰富语义支持的标准语言,以及可重用,覆盖率为驱动的验证方法学。

      这是文章中的第一部分:介绍由SystemVerilog硬件设计验证标准语言支持的验证方法学。此方法学在《VMMfor SystemVerilog》 一书中有全面介绍。

      《VMMforSystemVerilog》致力于如何建立一个可升级,可预期,可重用的验证环境,使得用户能充分利用断言性,重用性,验证平台自动生成,覆盖率,形式分析以及其他先进验证技术特点,从而帮助解决RTL以及系统级中验证技术问题。如此一个环境能在芯片迈出成功第一步时增加用户验证信心。《VMMfor SystemVerilog》目的是针对所有SoC,IP项目建立一个高效,可控验证过程。《VMM forSystemVerilog》来源于业界领先的ARM公司,Synopsys公司(新思科技)及其客户经验。

      1.1验证面临挑战
      随着SoC,IP验证复杂度持续增加,有相应的新验证技术产生,但设计能力与验证所能提供信心之间鸿沟仍然巨大。多次调查显示有一半到三分之二的SoC项目在第一次流片失败,而功能缺陷的存在是其中主要原因。

      这些统计显示了要验证当今设计所具有的固有难度。复杂模块,尤其在集成到一起后,很难在验证中将芯片实际运用可能遇到的所有条件模拟执行。预期到所有可能边界条件(cornercases),以及发现设计中深层次设计缺陷是验证面临的关键挑战之一。非常紧迫的是在规定项目资源以及time-to-market需求情况下,项目过程中花费最小代价尽可能早发现设计缺陷。

      1.2SystemVerilog验证技术
      对用户来说有多种方法编写验证平台,搭建验证环境。通常方法包括全手工编写代码进行独立直接验证,或生成带约束随机仿真激励,能自动产生新测试用例先进的验证平台。最有效技术包括利用功能覆盖率统计更进一步加强自动验证效率。一些验证技术还包括应用断言检查设计意图,诊断设计缺陷。

      《VMMforSystemVerilog》覆盖了多种验证技术,并详细介绍如何将他们有机结合在一起。多种先进验证技术的有效融合能彻底改进验证,增加验证产量,加速开发进程,尽早结束项目。相对于传统方法消耗更少资源。《VMMforSystemVerilog》既能提升现有验证方法,也能充分利用验证过程自动化,功能覆盖,断言这些特点建立一个全面通用验证环境。
      1.3产生带约束随机仿真
      传统验证依赖于直接测试(directedtests),此时测试平台包含产生特定情节的代码,对设计提供激励,仿真结束时检查(手工或自测方式)结果。直接测试平台也可以采用有限的随机方式。通常是产生随机数,而不是在每个数据单元简单写入预先设定值。直接测试方法适合于小设计,但一个典型SoC设计需要上千个测试用例。乐观估计用三天时间产生并调试一个测试,一个有十验证工程师的团队(也是一个乐观估计)将花费超过一年完成所有测试。因此提升验证产量的唯一方法是减少产生测试所消耗时间。

      SysemVerilog具有丰富语言能力,能描述复杂验证环境,包括带约束随机激励产生,面向对象编程,功能覆盖统计。这些特点使用户开发出能自动产生大量验证情节的测试平台。

      《VMMforSystemVerilog》展示了如何用SysemVerilog语言功能构建一个自动化验证平台。建立一个验证环境时,采用正确策略,充分利用自动化特点,产生一个新测试所消耗时间将显著减少。应用带约束随机激励产生方法,在可控制规则,或用户自定义约束下以自动方式产生测试情节。验证中很重要一点在于测试平台质量,这样附加的测试可在对一系列基本测试用例基础上进行简单调整测试参数或加入定义好的约束而产生。通过这种方法获得好处在图1中说明。


Figure 1 自动测试相对于直接测试有更高效率


      
      用直接测试方法,产生一个新测试所需要时间相对固定,因此功能验证质量提高与时间基本成线型关系。而一个带约束随机验证环境,在第一次能正常测试之前有一个前期投入消耗。此投入用于建立验证环境中参数化配置能力,以及约束测试中相关部分,使得之后测试更容易基于约束驱动。

      测试情节类型中建立随机化,不仅仅是产生新数据值,更增加了测试击中边界条件(cornercase)可能性,从而发现更多设计缺陷。下一部分还将讨论,这样的测试用例也能击中更多覆盖点,加速验证收敛。

      SystemVerilog提供了带约束随机激励测试所需要的所有验证语言结构。《VMMforSystemVerilog》提供了如何建立一个带约束随机环境,如何运用面向对象编程技术编写可重用验证单元,如何在整个项目验证,或跨项目之间重用验证单元的整套方法。
继承事业,薪火相传
返回列表