VMMforSystemVerilog中文版(前四章).doc

上传人:大米 文档编号:544289359 上传时间:2023-03-19 格式:DOC 页数:22 大小:782.01KB
返回 下载 相关 举报
VMMforSystemVerilog中文版(前四章).doc_第1页
第1页 / 共22页
VMMforSystemVerilog中文版(前四章).doc_第2页
第2页 / 共22页
VMMforSystemVerilog中文版(前四章).doc_第3页
第3页 / 共22页
VMMforSystemVerilog中文版(前四章).doc_第4页
第4页 / 共22页
VMMforSystemVerilog中文版(前四章).doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《VMMforSystemVerilog中文版(前四章).doc》由会员分享,可在线阅读,更多相关《VMMforSystemVerilog中文版(前四章).doc(22页珍藏版)》请在金锄头文库上搜索。

1、 SYNOPSYS 基于 SystemVerilog语言的验证方法学 前 言 文章主要介绍VMM for SystemVerilog一书描述的如何利用SystemVerilog语言,采用验证方法学以及验证库开发出先进验证环境。文章分为四部分,第一部分概述了用SystemVerilog语言验证复杂SoC的基本方法。第二部分主要介绍使用先进验证技术进行RTL验证并定义一个能在项目之间进行验证单元重用的分层验证平台结构。第三部分将涉及到系统级验证,包括SystemVerilog 与SystemC交互等方面。当与一个合适方法相结合,SystemVerilog提供了建立一个完整RTL以及系统级(ESL)

2、验证环境需要的所有结构及特性。同时完全支持与System C或与一个以C为基础的软件测试环境交互。第四部分讨论验证所采用的验证策略,VMM方法学,以及利用VMM for SystemVerilog中定义的标准库来支持方法学。这些库涉及到文章中讨论的基本方法,XVC,XVC管理器,软件验证等方面。 采用VMM for SystemVerilog书中提供的方法学是应对目前复杂芯片而带来验证挑战的有用方法。此书基于业界多年领先的Synopsys公司以及ARM公司专家,及其客户提供经验编写而成,因而对开发团队有益。采用此方法学将提高验证效率,为一次投片成功提供更大可能。此文章全面介绍关于用System

3、Verilog验证复杂SoC。更多书中信息可在www.vmm-中找到。事实上业界已经认可VMM验证方法,此书日文版已经发行,与VMM相关书籍也已诞生,除Synopsys之外的几个EDA厂家也提供相关练习,甚至在California Extension Santa Cruz大学开展了VMM课程。http:/www.vmm-sv.org/提供了更多业界对VMM验证方法支持信息。 目 录1 SystemVerilog验证方法学介绍41.1 验证面临挑战41.2 SystemVerilog验证技术41.3 产生带约束随机仿真41.4 覆盖率驱动验证51.5 断言71.6 小结82 SystemVeri

4、log验证方法学:RTL82.1 分层测试平台结构82.2 自顶向下和自底向上92.3 结果检查102.4 覆盖率驱动验证执行102.5 使用形式分析112.6 产生可重用验证IP112.7 小结123 SystemVerilog验证方法学:ESL123.1 系统级验证介绍123.2 可扩展的验证单元133.3 XVC管理器(XVC manager)133.4 系统级验证环境143.5 事务级模型(Transaction-level models)163.6 小结174 SystemVerilog验证方法学:采用VMM174.1 采用验证方法学174.2 VMM提供四类库184.2.1 VMM

5、标准库184.2.2 VMM Checker库194.2.3 XVC标准库204.2.4 软件测试架构214.3 小结21结束语:21Figure 1 自动测试相对于直接测试有更高效率5Figure 2 自动及人工验证技术运用在验证不同阶段6Figure 3 断言是验证重要组成部分8Figure 4 多层测试平台方便验证重用9Figure 5 高层次测试平台单元更早验证事务级模型10Figure 6 具有通用接口协议验证IP重用到新项目12Figure 7 XVC结构分为两层:发生器和驱动器13Figure 8 XVC 管理器控制并使测试平台中其他XVC协调工作14Figure 9 系统确认环

6、境必须高效度量系统执行16Figure 10 vmm_env类定义一系列virtual methods用于执行测试用例18Figure 11 VMM检查库扩展了OVL断言内容20Figure 12 用XVC标准库和VMM标准库中类建立XVC201 SystemVerilog验证方法学介绍 芯片验证中虽然传统验证方法尽力保持技术更新步伐以适应设计尺寸以及复杂度的增加,但验证依然是当前SoC以及可重用IP模块设计中面临的最大挑战。解决这个问题的方法是采用有丰富语义支持的标准语言,以及可重用,覆盖率为驱动的验证方法学。 这是文章中的第一部分:介绍由SystemVerilog硬件设计验证标准语言支持的

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

8、面临挑战 随着SoC,IP验证复杂度持续增加,有相应的新验证技术产生,但设计能力与验证所能提供信心之间鸿沟仍然巨大。多次调查显示有一半到三分之二的SoC项目在第一次流片失败,而功能缺陷的存在是其中主要原因。 这些统计显示了要验证当今设计所具有的固有难度。复杂模块,尤其在集成到一起后,很难在验证中将芯片实际运用可能遇到的所有条件模拟执行。预期到所有可能边界条件(corner cases),以及发现设计中深层次设计缺陷是验证面临的关键挑战之一。非常紧迫的是在规定项目资源以及time-to-market需求情况下,项目过程中花费最小代价尽可能早发现设计缺陷。1.2 SystemVerilog验证技术

9、 对用户来说有多种方法编写验证平台,搭建验证环境。通常方法包括全手工编写代码进行独立直接验证,或生成带约束随机仿真激励,能自动产生新测试用例先进的验证平台。最有效技术包括利用功能覆盖率统计更进一步加强自动验证效率。一些验证技术还包括应用断言检查设计意图,诊断设计缺陷。 VMM for SystemVerilog 覆盖了多种验证技术,并详细介绍如何将他们有机结合在一起。多种先进验证技术的有效融合能彻底改进验证,增加验证产量,加速开发进程,尽早结束项目。相对于传统方法消耗更少资源。VMM for SystemVerilog既能提升现有验证方法,也能充分利用验证过程自动化,功能覆盖,断言这些特点建立

10、一个全面通用验证环境。1.3 产生带约束随机仿真 传统验证依赖于直接测试(directed tests),此时测试平台包含产生特定情节的代码,对设计提供激励,仿真结束时检查(手工或自测方式)结果。直接测试平台也可以采用有限的随机方式。通常是产生随机数,而不是在每个数据单元简单写入预先设定值。直接测试方法适合于小设计,但一个典型SoC设计需要上千个测试用例。乐观估计用三天时间产生并调试一个测试,一个有十验证工程师的团队(也是一个乐观估计)将花费超过一年完成所有测试。因此提升验证产量的唯一方法是减少产生测试所消耗时间。 SysemVerilog具有丰富语言能力,能描述复杂验证环境,包括带约束随机激

11、励产生,面向对象编程,功能覆盖统计。这些特点使用户开发出能自动产生大量验证情节的测试平台。 VMM for SystemVerilog展示了如何用SysemVerilog语言功能构建一个自动化验证平台。建立一个验证环境时,采用正确策略,充分利用自动化特点,产生一个新测试所消耗时间将显著减少。应用带约束随机激励产生方法,在可控制规则,或用户自定义约束下以自动方式产生测试情节。验证中很重要一点在于测试平台质量,这样附加的测试可在对一系列基本测试用例基础上进行简单调整测试参数或加入定义好的约束而产生。通过这种方法获得好处在图1中说明。 Figure 1 自动测试相对于直接测试有更高效率 用直接测试方

12、法,产生一个新测试所需要时间相对固定,因此功能验证质量提高与时间基本成线型关系。而一个带约束随机验证环境,在第一次能正常测试之前有一个前期投入消耗。此投入用于建立验证环境中参数化配置能力,以及约束测试中相关部分,使得之后测试更容易基于约束驱动。 测试情节类型中建立随机化,不仅仅是产生新数据值,更增加了测试击中边界条件(corner case)可能性,从而发现更多设计缺陷。下一部分还将讨论,这样的测试用例也能击中更多覆盖点,加速验证收敛。 SystemVerilog提供了带约束随机激励测试所需要的所有验证语言结构。VMM for SystemVerilog提供了如何建立一个带约束随机环境,如何运

13、用面向对象编程技术编写可重用验证单元,如何在整个项目验证,或跨项目之间重用验证单元的整套方法。1.4 覆盖率驱动验证 贯穿验证过程中的覆盖率测量数据有两方面重要作用。一方面能明确指出设计中还没有被充分验证到的部分,确定验证过程中空洞。通过回答下一步如何去做这样的关键问题,有助于指引验证需要努力的方向。比如,需要补充编写哪些直接测试用例,如何改变参数用于带约束的随机测试。 另一方面,覆盖率测量是验证已经足够充分,可进行流片的指示器。覆盖率不仅仅简单提供是或否这样结果。覆盖率增量提升,用于评估验证进度,增加开发团队进行流片时间点的信心。事实上,覆盖率是一个非常苛刻指标,因此大部分先进,自动化方法都

14、采用基于覆盖率驱动的验证,覆盖率指标的指导作用贯穿整个过程中每一步。 覆盖分为两大类:代码覆盖和功能覆盖。代码覆盖包括多种形式(行覆盖,翻转覆盖,表达覆盖等),是一个典型自动化过程。能告诉在一个特定仿真运行中,所有RTL设计描述代码是否被执行。一个具有可信度验证方法中,代码覆盖是必需的,但不是充分条件。相对应的,功能覆盖提供一个外在度量方法,确定设计所需要功能有多少被真正正确实现。通过运用交叉覆盖(cross-coverage)技术测试覆盖组合情况,能更进一步提高验证信心。项目中,重要功能覆盖以及交叉覆盖点应尽早明确,并包括在验证计划中。 填补覆盖测量中确定的空洞是覆盖率驱动验证过程中核心部分。通过定义,当100覆盖率达到时,能对芯片最终tape out提供足够信心。SystemVeri

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号