回答

收藏

一种基于事务的SoC功能验证方法

其他 其他 2819 人阅读 | 0 人回复 | 2008-06-22

摘要
? 本文介绍了基于事务的SoC验证方法,详细说明了事务、事务处理器的概念和事务级验证平台的功能结构。Synopsys公司的RVM验证方法学是当前比较流行的基于事务的SoC验证方法,文中详细介绍了RVM验证平台的层次结构,并且以一个UART模块的功能验证为例,描述了如何利用RVM验证方法学搭建一个高效的可重用的验证平台。


关键词:基于事务的验证;?验证平台;?RVM?SoC?
? 0? 引言:
? 在深亚微米级的工艺中,单个集成电路所能够实现的设计能力让人们可以灵活地将最终产品的所有主要功能都集成到单块系统芯片(SoC, System-on-a-Chip)中。然而,向系统芯片设计的演进对传统的验证技术提出了种种挑战。据统计,对系统芯片进行验证占到该项设计研发工作总量的70%左右。这将会产生一系列的问题,这些问题对验证工程师和验证方案提供商都提出了挑战
? 本文介绍的RVMReference Verification Methodology)验证方法学指导验证工程师搭建基于事务的验证平台。由于抽象层次从信号/引脚级提高到了事务级,可以很容易地实现定向测试、随机测试、数据自核对等功能,提高了验证生产率,减少了总的验证代码量,缩短了产品的面市时间。
? 1? 基于事务的验证
? 事务就是设计对象与事务处理器(Transactor)之间通过接口所做的一次数据传输。事务可以是一个简单事务,如读写某个寄存器,也可以是一个复杂事务,如一个以太网帧的传输。基于事务的验证(TBV Transaction-Based Verification)工具让用户除了可以在信号/引脚级上还可以在事务级上进行验证,从而提高了验证效率。
? 事务处理器将事务级激励转换成被测设计对象接口上的引脚信号跃变。事务处理器根据设计对象中所使用的协议来处理事务,被测设计对象所产生的响应从引脚信号的跃变转换回事务级的响应形式。这样就可以做到在事务级上核对响应是否正确,检查出响应不相符的时候,就进一步在信号/引脚级上加以查看,从而将错误定位出来。
? 基于事务的验证环境所包含的元素有:
? 被测设计对象(DUT, Device Under Test):被测设计对象的寄存器传输级(RTL, Register Transfer Level)描述或者门级(Gate Level)描述。
? 事务(Transaction):在DUT和事务处理器(Transactor)之间通过接口在特定起止时间内的一次数据传输。事务用来标注波形,还能够关联DUT的属性信息。同样,事务还可以用来标识错误。
? 事务处理器(Transactor):事务处理器也叫做总线功能模型(BFM, Bus Model)。事务处理器根据DUT中所使用的协议来处理事务,与DUT通过接口进行连接,将处理后的事务级激励通过接口输入到DUT中。
测试例(Testcase):测试例用来产生验证DUT特定功能所需要的任务序列。
? 2? RVM验证方法学(Reference Verification Methodology
? RVM验证方法学是一种基于事务的层次化验证方法学。所谓层次化验证方法就是把验证的步骤分层进行,把验证工作提高到更高的抽象层次,即事务层。输入DUT的激励以及DUT的输出响应在事务级进行核对,大大提高了验证工程师的工作效率,减轻了工作量。

基于RVM的验证平台分成5层,每一层完成独立的功能,层与层通过接口互相连接。RVM验证模型如图1所示。

1?? RVM层次化验证模型
? 2.1 信号层(Signal Layer
? 信号层提供验证平台与DUT的信号级连接。这一层将DUT的引脚信号抽象为验证平台中的仿真信号。例如信号层是用OpenVera编写的接口,在接口中定义了信号的同步和时序关系,对应于DUT的引脚信号的同步与时序。一旦DUT的引脚发生了变化只需要修改OpenVera定义的信号,使得验证工程师的精力可以集中在更高的抽象层次上。
? 2.2 命令层(Command Layer
? 命令层主要包含驱动器和监视器这两种事务处理器。驱动器从事务级通道接收到上层模块传递的事务,将事务级激励转化为信号级的激励信号,通过接口对DUT进行驱动。监视器检测DUT的各个引脚信号的变化,将引脚信号变化所表征的信息转换为事务,通过事务级通道反馈给验证平台的高层模块。
? 2.3功能层(al Layer
? 命令层事务着眼于如何将事务翻译为引脚信号的跃变,而功能层事务着眼于DUT的功能的应用。一个功能层事务可能触发若干个命令层事务来对DUT进行驱动。如果DUT的功能过于复杂,可以将功能层再细分为几个子层,每一层独立处理一个功能。
功能层包含事务处理器、自核对模块、比较器等模块。事务处理器根据高层的测试例产生配置DUT的事务,根据不同的配置信息对功能层事务进行处理,通过事务级通道传递给命令层。自核对模块和比较器模块负责核对DUT的输入输出事务是否满足设计规范。功能层还包含一个功能覆盖率统计模块来记录DUT的功能覆盖情况。
? 2.4激励产生层(Generation Layer
? 激励产生层包含数据产生器和配置产生器。数据产生器用于生成可控制的数据事务,配置产生器用于生成包含DUT配置信息的事务。这两个产生器生成包含随机数据和随机配置信息的事务,通过事务级通道传给功能层进行处理。
? 2.5测试层(Test Layer
? 测试层主要是验证工程师为了验证DUT的逻辑功能而编写的不同的测试例,在测试例中可以对验证平台中各个模块的限制条件进行修改。通过对不同测试例的运行结果的统计,可以查看DUT的功能覆盖率。
? 3? 利用RVM方法学搭建SoC功能验证平台
? 3.1 UART模块的功能验证
? UART是连接在APB总线上的一个串行数据模块,同时连接在APB总线上的还有MPUIOIICUSB等模块。在UART模块级验证平台中使用了APB总线功能模型,模拟APB总线的功能。验证平台的框架如图2所示。

2? UART模块级验证平台
? 3.1.1 信号层
? 信号层包括OpenVera语言定义的接口和虚端口数据结构,用于和RTL代码的引脚信号连接。编程时首先定义一个interface类,interface类中的成员与UART模块的引脚信号通过hdl_node关键字连接,interface类中的成员和虚端口数据结构中的虚拟信号绑定。如果UART设计过程中改变了引脚信号的数量或者名称,只需要在interface类中做相应改动即可,不影响上层的各个模块。
? 3.1.2 命令层
? 命令层包括APB端和数据端的驱动器和监视器。APB端的驱动器按照APB总线协议的时序对UART进行驱动;数据端的驱动器则模拟外部的串行数据流,将数据输入到UART中;两端的监视器负责检测UART输出的数据和输入到UART中的数据,将检测到的数据保存在自核对模块中进行比较。
? 3.1.3 功能层
? 功能层主要包括中断事务处理器和数据自核对模块。中断事务处理器模拟SoC的微处理器的功能,对UART产生的中断进行响应。例如,中断事务处理器检测到UART中断信号为高,则生成一个读取中断标志寄存器的事务,通过事务级通道传递给APB端驱动器,调用驱动器的读函数读取到中断类型。假设此时的中断为接收数据中断,则中断事务处理器生成一个接收数据事务,通过事务级通道传递给APB的监视器,监视器检测UART的接收数据信号并将接收到的数据保存在自核对模块中。
? 数据自核对模块用于判断UART模块的功能正确性,即UART是否可以正确无误的传输数据。该模块对接收和发送的数据进行比较,并打印比较信息,如果数据比较出错则打印出错误信息并停止仿真,验证工程师可根据打印的错误信息对UARTRTL代码进行调试。
? 3.1.4 激励产生层
? 激励产生层包括两个事务产生器,一个用于生成APB端的事务,一个用于生成数据端的事务。APB端的产生器可以随机的产生各种APB总线的读写命令序列,数据端的产生器可以产生大量的随机数据。用OpenVera编程实现时,各种激励被封装在一个事务对象中,通过事务通道传到下层模块。产生器可以调用RVM的宏rvm_atomic_genrvm_scenario_gen很方便的用OpenVera实现。
? 3.1.5 测试层
? 在测试层用户可以编写不同的测试例对UART模块进行功能验证。在测试例代码中,通过对其他模块的constraint限制、验证环境类的例化、配置类的随机约束来实现对UART模块的功能的覆盖。UART模块的验证平台仿真波形见图3

3?? UART模块验证平台仿真波形
? 3.2 UART模块级功能验证策略分析
? UART模块级验证平台的搭建过程使用了RVM提供的基类RVM的基类为验证工程师提供了很多功能强大的函数,例如实现反馈功能的callbacks函数。有了RVM基类,使得验证工程师可以在较短时间内编写出较复杂功能模块的验证平台。
? RVM验证方法学的验证策略是先进行大量的随机测试,再进行直接测试,验证的目标是使功能覆盖率达到100%。如果一个模块的验证平台仿真后功能覆盖率达到100%,即可认为这个模块的功能已经被完备的验证过,如果功能覆盖率没有达到100%,则需要添加针对未被覆盖到的功能点的测试例进行直接测试,以达到100%的功能覆盖率
? UART的验证过程中,所定义的功能覆盖点主要是各个寄存器的状态位和各引脚信号线的状态。首先进行随机测试,在测试例中产生UART的随机配置信息,使配置寄存器取随机值。仿真结束后查看覆盖率统计报告,对未被覆盖到的功能点进行直接测试。例如,验证的后期功能覆盖率达到95%,查看覆盖率统计报告后得知UART的超时中断没有产生,使得中断标识寄存器的值未被覆盖到。有了这一信息,则构建一个直接测试例,在测试例中添加足够多的延迟周期,仿真结束后查看覆盖率统计报告,覆盖率达到100%。
? 3.3 系统级验证平台对RVM验证模块的重用
? 当单个模块的功能验证结束后即可将该模块集成在整个系统中进行系统级验证。系统级验证主要验证嵌入式IP核与设计工程师设计的模块能否正确通信,各个模块的接口协议是否正确,主要证明整个SoC芯片的整合是否完好。利用RVM方法学搭建的模块级验证平台可以重用到系统级验证中,可以用已有的验证模块对DUT的输出进行自动核对和功能覆盖,减少验证工程师的工作量,提高验证效率
? UART的验证平台为例。在系统级验证时,UART模块接在ARM处理器的APB总线上,APB总线功能模型由实际的APB总线代替,其他的验证模块保持不变。APB端的激励由ARM核通过APB总线输入到UART模块中,自核对模块对数据进行核对来验证系统的正确性。在系统级验证中,模块级验证平台可以直接重用,测试例也可直接重用在系统级验证中,为验证工程师节省了大量的时间,减轻了验证工程师的工作量。
? 4????本文作者创新点
基于事务的RVM验证方法学指引验证工程师搭建可重用的高效率验证平台,验证平台可以方便的由模块级验证重用至系统级验证,提高了验证工程师的工作效率,减少了总的验证代码量,有效的缩短了SoC芯片的验证时间,从而缩短了SoC的开发周期。
? 参考文献:
[1] []PeterPaterson.系统芯片(SOC)验证方法与技术[M].孙海平,丁健译.北京:电子工业出版社,2005. 16~20,141~143.
[2] Synopsys Inc. Reference Verification Methodology User Guild.http://www.synopsys.com/.
[3] Synopsys Inc. OpenVera Language Reference Manual: Testbench. http://www.synopsys.com/.
[4] 陈辉,申敏,刘树军. 结合覆盖率驱动技术的RVM验证方法学在SOC验证中的应用[J].微计算机信息,2006,9-2:115~119.
[5] 陈辉,申敏,刘树军.高效验证平台在TD-SCDMA终端芯片功能验证中的应用[J].重庆邮电学院学报,2006,18(3):299~302.
[6] 张亚楠,申敏,游敏惠.基于RVM的可重用测试方法及应用[J].重庆邮电学院学报,2006,18(3):303~306.
?

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条