zoukankan      html  css  js  c++  java
  • 验证的概述

        为什么要验证(Verification)?在从定SPEC到流片,中间每一步都会出BUG,经可能的找出设计中的bug,IC设计中有70%的工作量在验证上,在SoC设计中至关重要。

        什么是验证?验证是确保设计和预定的设计期望一致的过程,设计期望可以说是Spec,通常是通过一个或者多个设计规范来定义的。

        不同阶段有不同形式验证:RTL级的功能验证,主要关注设计的行为(feature),又可分为IP 验证(关注IP的功能,寄存器等细节)和SoC验证(关注IP的互联,clock& reset,低功耗,通路等等);门级验证,是将RTL综合成网表后进行的仿真,主要是为了保证综合后的代码正确性;形式验证(等效性检查,formal),通过formal工具检查RTL和综合后网表的一致性;时序验证(网表+SDF),也就是通常说的后仿,signoff,是为了验证设计能否在特性的频率上运行。

        怎么去验证?施加正确的激励,检查结果是否与预期一致,基于cycle精度的仿真。在传统的功能验证中,把用于测试的DUT的环境统称为验证平台。TB首先产生激励,然后将激励驱动到DUT中,最后检查DUTd输出结果。产生激励的方式有很多,如果是提供的确定输入,这种称为直接测试,如果是随机生成的激励,这种称为随机测试。输出结果检查可以查看波形,或将结果输出到文件再用脚本进行处理,或在仿真的过程中及时比较。仿真精度一般分为cycle base,transaction base,event base,这三者精度越来越低,速度越来越快。系统建模的时候仿真精度一般比较低。

        近几年有一个比较火的验证方法学,叫formal verification。对某些信号(e.g clk, rstn)加约束,其他值做穷举,通过穷举的结果和我们定义的Properties进行对比,来做的一种验证。这种非常适合控制逻辑的验证,DMA, CPU,或者带状态机的设计。

        Emulation是基于FPGA 阵列(也有基于CPU阵列的,都是ASIC电路,类似FPGA,带有debug功能)的仿真加速器,Cadence的叫PXP,Synopsys的叫Zebu。仿真速度比较快,这里面仿真瓶颈在于交互。解决方法之一,在communication channel两侧加Proxy Model和BFM,使每一次交互打包测试数据,降低交互次数,方法有很多,其他有待继续了解。

        主要的高级抽象验证语言:e语言(面向方面的语言AOP),open vera,system C,system Verilog(面向对象)。

        验证方法学的组成部分:1.断言,TLM,验证语言。2.如何构建统一的验证平台。3.如何进行验证环境和测试用例的重用。3.如何产生随机/直接的激励。4.以coverage为导向的验证。

        TLM(Transaction Level Modeling)源于系统建模,验证中用于高层次的抽象模拟,TB中的数据传输一般基于Transaction。

        根据TB的功能进行划分,减少耦合,一般调用TLM中的通用port,这是层次化的验证平台。提高重用性,减少验证工作,提高验证效率。可以分为Driver/Monitor/Generator/Scoreboard/RM等部分。

        VIP(Verification IP)针对特定设计/标准提供的验证total solution包,一般包含从激励产生,driver, monitor, RM, scoreboard, coverage等。一般像DDR3,PCI-e,USB,WIFI等等,得用VIP,使用其开放的接口去做验证,减少验周期,提高验证质量。

        验证的流程。Verification input(Design SPEC, Design RTL)

                       -->Verification output(Verification/Test Plan, Verification Report, TestBench/Tests, Coverage report)

                       -->Co-work member(Verification leader/Designer/Other Verification engineer)

                       -->Tools/Working encironment(Verificaton language:SV/UVM, Simulation Tools:VCS/NC, Debug tools:Verdi/Simvision, Coverage tools:Verdi/IMC)

         验证流程中的调试和回归,指和designer一起分析RTL/TB中的错误,对RTL/TB进行修改,对所有的测试用例进行回归测试,分析coverage,增加测试用例,生成coverage报告,完成验证。

  • 相关阅读:
    shell test条件判断
    shell 变量
    shell 流程结构
    shell 正则表达式
    shell脚本常用参数
    snmp 简单的网络管理协议
    linux
    nmap
    git 基础操作
    linux 下 svn 更新代码
  • 原文地址:https://www.cnblogs.com/yiwenbo/p/10090854.html
Copyright © 2011-2022 走看看