基于RVM的层次化SoC芯片平台的设计及应用

发布者:温馨幸福最新更新时间:2007-09-03 来源: 电子产品世界关键字:验证  通信  传输  信号 手机看文章 扫描二维码
随时随地手机看文章

随着SoC设计日趋复杂,验证成为SoC设计过程中最关键的环节。本文介绍了Synopsys的RVM验证方法学,采用Vera硬件验证工具以及OpenVera验证语言建立目标模型环境,自动生成激励,完成自核对测试、覆盖率分析等工作。通过建立层次化的可重用性验证平台,大大提高了验证工程师的工作效率。文中以一个SIMC功能模块的验证为例,详细介绍了RVM验证方法学在SoC芯片验证中的应用。

功能验证

一个设计被综合前,首先要对RTL描述进行逻辑功能验证,以确保模块或芯片的功能正确性。通常,RTL级的功能验证主要采用自底向上的验证策略,可分为模块级验证和系统级验证两个阶段。

传统验证方法大多是在信号级的接口上直接与待验证设计(DUT)通信,即用激励直接驱动DUT的引脚,通过检查接口信号的值和变化来达到验证设计功能的目的。这种方法的抽象层次较低,验证平台的开发与DUT的接口协议紧密相关,使得验证平台的重用性较差。如果要做到一个验证平台可以验证多个不同的DUT,必须将验证平台的抽象层次提高到事务级,而且应该构建层次化的结构,层与层之间具有一定的独立性,改变底层并不会影响上层

基于事务的验证

所谓事务(Transaction)是指设计对象与事务处理器(Transactor)之间通过接口所做的一次数据传输。从硬件的角度来看,事务可看成作用在一个特定接口上的一组信号的集合单元。事务具有3个要素:起始时间、终止时间,以及所有与这个事务相关的信息。

基于事务的验证工具让用户除了可以在信号/引脚级上进行验证,还可以在事务级上进行验证,从而提高了设计生产率。

基于事务验证环境的基本要素

DUT:待验证设计对象的RTL描述或门级描述。

事务:在DUT和事务处理器之间通过接口在特定起止时间内的一次数据传输。事务能够对信号波形进行标识,表示相关的信号属性,还可以标识错误。

事务处理器:也叫总线功能模型(BFM)。事物处理器可以表示事务所代表的信号变化,并与DUT通过接口进行连接。一个典型的DUT往往具有不同的接口,因此一个验证环境中具有不同的事务处理器以产生相关的测试向量对DUT进行激励。

测试例(Testcase):用来产生验证DUT特定功能所需要的事务。

基于事务的验证处理过程

测试例通过特定的事务来调用事务处理器的任务,事务处理器按照DUT所遵循的协议对事务进行处理,经过处理后的事务通过连接DUT的接口输入到DUT中,DUT对输入的激励进行响应。DUT输出的响应再转换为事务的形式,这样验证平台的自核对模块就可以在事务级上对激励和响应进行核对,以检查DUT的功能是否正确。

RVM层次化验证方法学

RVM验证方法学是一种层次化的验证方法学,它能把验证的步骤分层进行,将验证工作提高到更高的抽象层次,即事务层。层次化的验证方法使得验证工程师只需关心DUT的输入/输出接口,而不必关心DUT内部的具体实现。

根据RVM方法学,验证工程师可以搭建出具有随机测试、自动检错核对、功能覆盖等功能的层次化验证平台。这类验证平台包含很多参考模型,每个模型可完成不同的功能。在搭建验证平台的过程中,还可以直接调用Synopsys提供的RVM基类库,其中定义了丰富的标准类。利用RVM基类以及面向对象的技术可以更方便地生成验证平台各个层次的模块。

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

信号层

信号层提供验证平台与DUT的信号级连接。验证平台通过信号层将上层产生的激励驱动到DUT中。具体实现时,需要定义验证平台与DUT连接的虚端口,当DUT的接口改变时,只需要修改验证平台虚端口中的信号,上层模块不需要修改,方便整个验证平台的重用。

命令层

命令层将信号层的信号抽象为事务,给高层提供DUT的接口与事务的转换。命令层主要包括驱动器模块和监视器模块,与上层模块通过事务级通道连接,与下层模块通过虚端口连接。驱动器完成对DUT激励的驱动。监视器检测DUT的输出,将输出反馈给上层模块。

功能层

功能层模拟DUT的基本行为,将DUT的行为抽象为更高一级的事务。功能层中包括事务处理器模块和自核对模块。事务处理器模块根据DUT所遵循的协议将上层产生的事务进行处理,经过事务处理器处理的事务通过事务级通道传给下层。自核对模块用于对比事务经过DUT处理之后是否符合协议的要求,通常用于检查DUT传输数据的正确性。

激励产生层

激励产生层用于产生对DUT的激励事务。这一层包括产生器模块,该模块产生一系列的事务对象,通过事务级通道传输给下层。RVM支持两种产生器: Atomic产生器,用于产生一组相似的事务对象; Scenario产生器,用于产生顺序可控制的事务对象。

测试层

测试层用于对DUT的逻辑功能进行验证。这一层主要是用户为了验证DUT的逻辑功能而编写的不同测试例,在测试例中可以对各个模块的限制条件进行修改。通过对不同测试例运行结果的统计,可以查看DUT的功能覆盖率,只有功能覆盖率达到一定要求,才能够认为该DUT已经被完备的验证通过。

SIMC模块的功能验证

SIMC是SIM卡控制器的简称,通过SIMC可以在手机基带处理芯片上外接SIM卡,实现数据的发送和接收。SIMC模块连接在系统的APB总线上,ARM微控制器通过APB总线对SIMC进行访问。该模块主要包括波特率产生部分、接收数据的串并转换部分、发送数据的并串转换部分、发送FIFO的控制部分、接收FIFO的控制部分等。发送数据时,SIMC模块会将发送数据寄存器的数据先放到发送FIFO中,再将FIFO中的数据发送出去;接收数据时,SIMC模块将接收到的数据放到接收FIFO中,再由处理器从接收数据寄存器中读取数据。如果接收数据后,判断校验位或停止位出 错,则数据不会被放入接收FIFO中,SIMC模块的状态寄存器会有相应的指示。

本文将以一款基带处理芯片的SIMC为例,详细介绍RVM验证方法学的应用。其中DUT的RTL代码用Verilog编写,验证平台的代码用OpenVera编写。OpenVera语言是一种新型的高阶验证语言(HLV)。用OpenVera编写的代码中调用了RVM的基类和库函数,充分应用了面向对象技术。

SIMC模块的RVM分层验证平台结构

SIMC模块的验证平台利用Synopsys公司Vera验证工具搭建,验证平台的搭建遵循RVM验证方法学,代码的编写过程调用了RVM基类库。SIMC模块验证平台结构如图2所示。

图 2 SIMC模块RVM层次化验证模型

信号层

信号层包括定义的虚端口,用于和SIMC模块RTL代码的接口相连。首先定义一个interface变量,该变量中定义的接口对应于SIMC模块的接口信号,interface变量的定义语句中用hdl_node关键字和RTL代码的接口信号相连。定义的虚端口再和interface中的信号绑定。

命令层

命令层包括ARM端的驱动器和监视器、SIM卡端的驱动器和监视器。ARM端的驱动器模仿APB总线,按照协议的规定对DUT进行驱动,SIM卡端的驱动器模仿一个SIM卡对DUT进行驱动。两端的监视器检测DUT的输出数据和驱动到DUT中的数据,将数据保存在自核对模块中进行比较,通过比较来检查DUT传输数据是否正确。

编程实现时,可以通过继承RVM基类库中的rvm_xactor类得到所需要的子类,在子类的代码中加入需要实现的功能。

功能层

功能层包括将SIM卡事务转化为ARM事务的事务处理器、实现中断服务功能的事务处理器、自核对模块。编程实现时,事务处理器可以通过继承RVM基类库中的rvm_xactor得到,在子类的代码中加入需要实现的功能。自核对模块用于比较DUT的激励和响应是否符合要求。

激励产生层

激励产生层包括两个Atomic产生器,两个产生器是同一个类的两个对象。产生器为DUT产生随机激励,激励封装在一个事务中,通过事务通道传到下层模块中。两端的产生器都是产生SIM卡事务的,ARM端有一个将SIM卡事务转化为ARM事务的事务处理器来完成SIM卡事务向ARM事务的转化。通过产生器可以随机产生符合协议规范的激励。编写代码时,产生器可以通过调用RVM的宏rvm_atomic_gen很方便地实现。

测试层

在测试层,用户可以编写不同的测试例对DUT的功能进行验证。在测试例中,通过对约束的限制、环境类的例化、配置类的约束来实现对DUT的功能覆盖,以达到100%的功能覆盖率。

验证平台的重用

对单个模块验证完毕之后可以进行系统级的验证。根据RVM验证方法学搭建的层次化验证平台可以被重用到系统级的验证中。系统级验证侧重于检查各模块间的接口和数据交互是否符合设计规范,某些模块级验证的模块可以被复用到系统级验证中。对SIMC模块来说,系统级验证时,ARM端的驱动器、监视器以及激励产生器都可以被APB总线代替,SIM卡端的各模块可以继续使用,达到重用的目的。

应用RVM验证方法的注意事项与技巧

RVM验证方法学由Synopsys公司提出,利用RVM验证方法学首选的编程语言是OpenVera硬件验证语言。笔者在应用RVM验证方法学搭建验证平台过程中的一些技巧和注意事项归纳如下:

1、 验证某个模块前,首先要阅读相关文档,熟悉模块的功能特性,然后搭建验证平台的基本框图,选择RVM的相关技术,在验证平台基本框图指导下编程实现。

2、 验证平台中功能覆盖点的定义是验证成败的关键,验证过程中利用RVM的覆盖率驱动技术,分析所定义的覆盖点的覆盖情况,改善该验证平台,每个功能覆盖点都必须被覆盖到。

3、 RVM基类库提供了丰富的函数,但是Synopsys没有开放RVM基类的源代码,所以验证代码的编写过程中应随时查阅RVM文档,尽量使用RVM基类提供的函数,而不是自己去重新开发一个函数。

4、 RVM验证平台中各个模块之间通信有很多种方法,可以用RVM的callbacks类,也可以使用双通道等。

5、 RVM为验证平台中的进程间通信提供了多种数据结构,例如semaphore、region、mailbox等,编程时应根据需要进行选择。 例如,在某一时刻有多个并行的进程对同一个信号进行驱动,仿真工具会停止仿真并打印出错信息。解决的方法是应用semaphores数据结构,每个进程得到semaphore才可以驱动信号,对信号驱动后再释放semaphore供其他进程使用。

6、 如果要打印信息,应使用 rvm_log类而不是printf()函数。rvm_log类除了将信息打印出来,还可以显示出信息来源于验证平台中的哪个模块以及该模块的仿真时间,便于编程人员调试代码。

7、 随机激励的产生不是真正意义上的随机,而是一种伪随机。编程人员在多次运行同一个测试例时应改变验证平台的随机种子,可通过调用srandom()函数来实现。

结语

用RVM验证方法学搭建的层次化验证平台将大大提高验证环境的执行效率。RVM验证方法学中的随机测试技术可以在很短的时间内达到更高的功能覆盖率,提高验证工程师的工作效率,达到有效缩短验证周期的目的。

参考文献

1.[美]PeterPaterson.系统芯片(SoC)验证方法与技术[M].孙海平,丁健译.北京:电子工业出版社,2005. 16~20

2.张亚楠,申敏,游敏惠.基于RVM的可重用测试方法及应用[J].重庆邮电学院学报, 2006,18(3):303~306

3.Synopsys Inc. Reference Verification Methodology User Guild.http://www.synopsys.com/

关键字:验证  通信  传输  信号 引用地址:基于RVM的层次化SoC芯片平台的设计及应用

上一篇:采用分而治之的方法设计嵌入式系统
下一篇:Keil软件仿真的串口调试技巧

推荐阅读最新更新时间:2024-05-02 20:37

信维通信上半年净利润下滑20%,部分客户业务扩张遇到挑战
集微网消息,手机产业链上市公司正陆续披露上半年财报预期,不过受大环境和整个手机市场影响,不少供应链厂商业绩下滑。 7月14日,信维通信发布2019年半年度业绩预告,公司上半年预计实现净利润3.5-3.8亿元,比上年同期下降13.07%-19.93%。 对于业绩变动原因,信维通信称,报告期内,在外部经济环境存在不确定性的情况下,部分客户的存量业务持续扩张遇到了阶段性的挑战。 据了解,信维通信称客户存量扩张遇到阶段性挑战,这个客户主要是指手机大客户。知名苹果分析师郭明錤称,苹果在iPhone X首次采用了多层 Liquid Crystal Polymer(LCP)天线,由于良品率低、议价能力低、供应厂商少的缘故,将会在明年新i
[手机便携]
用VB 编程语言实现PC机与AVR 单片机的通信
0  引 言 在当今,网络技术越来越多地应用在各个领域,微机技术及单片机也不断发展,因此,目前大多数小型计算机监控系统都采用以PC 机和单片机构成的串行通信网络来完成监控任务。其中,单片机主要进行对数据的实时采集、处理,再通过串口将数据送入PC 机的缓冲区,然后由PC 机对数据进行进一步处理,以便得到所需的图形、图像及实验结果。采用VB 语言中的通信控件能够很好地完成二者之间的通信功能。 1  系统简介 本系统是一个小型的人体心电监测系统,将心电信号采出后经过A/ D 转换,由PC 机绘制出心电图形,进行实时显示,便于医护人员观察和诊断,系统原理如图1 所示。系统的下位机即单片机系统,将现场采集的信号经A/ D 转换送入系统上位机。
[单片机]
用VB 编程语言实现PC机与AVR 单片机的<font color='red'>通信</font>
串口通信的单片机程序
beep bit p3.7 ;蜂鸣器定义 org 00h jmp main org 23h ;串行中断入口地址 jmp com_int ;串行中断服务程序 ;*********** 主程序开始 ******************* org 30h main: mov sp,#30h ;设置堆栈 lcall rest ;初始化 lcall comm ;串口初始化 jmp $ ;原地等待 ; ************* 初始化 **
[单片机]
信号放大电路图
光信号放大电路图
[模拟电子]
光<font color='red'>信号</font>放大电路图
一种结构简单UWB接收机的设计与实现
引言   目前,超宽带(UWB)解调方法可归纳为下面三种:一种是构造一个和接收信号差不多的模板信号,然后采用相关方式;另外一种就是采用积分检波的方式解调出UWB信号;还有一种就是对接收的信号进行A/D转换,通过抽样值识别信号。第一种方案实现比较困难,因为ns级的脉冲如果实现相关接收,同步时间必须精确到ps级,这种要求无论是对接收端还是发射端都是一个挑战。简单的积分检波方式抗干扰性能比较差。采用抽样的方式实现 UWB信号的接收,前提是必须使用高速的ADC,接收机复杂度将会大大增加。本文提出了在射频前端应用同步控制的选通脉冲,在UWB的信号到来时选通,控制积分信号进入后面的判决电路。这种方式的优点是提高了接收信号的信噪比,同时实现了
[网络通信]
富士通微型无线通信接收器:瞬间传输8K视频
    据PCWorld网站报道,富士通已经开发了一款无线通**,它不但能以约20Gbps的速率传输数据,而且尺寸小到适合使用在智能手机中。   富士通的无线通**使移动设备几乎能在瞬间传输4K或8K视频。8K是一种新的视频格式,分辨率是目前高清电视机的16倍。富士通称这是世界上首款能用于高速无线通信的微型300GHz接收器。   PCWorld表示,富士通称接收器体积不足1立方厘米,集成有接收器-放大器芯片和太赫兹波段天线,其接收灵敏度远高于其他公司生产的同类元器件,传输距离最远为1米。   富士通发言人通过电子邮件称,“太赫兹波段接收器的灵敏度如此高、尺寸小到可以用在当前的手机中,这还是首次。”   2011年
[安防电子]
ucos-ii示例3:互斥型信号量测试
环境: 主机:WIN8 开发环境:MDK4.72 ucgui版本:3.90 ucos版本:ucos-ii mcu: stm32f103VE 说明: 本示例新建一个互斥型信号量,通过此信号量每次只能有1个任务使用资源函数resource 注意: 1.互斥型信号量的创建不能在内核初始化之前 2.互斥型信号量的请求和释放函数只能在同一个任务中执行,如果一个任务请求了信号量,另一个任务释放信号量的操作会失败 3.为了应对信号量导致的不同任务之间的优先级反转,互斥型信号量的创建需要设置一个优先级,且这个优先级必须是尚未使用的,否则会创建失败 效果图: 源码: #define TASK_STK_SIZE 512 /***
[单片机]
ucos-ii示例3:互斥型<font color='red'>信号</font>量测试
基于VHDL语言的IP核验证
引言 在IC(integrated circuit.集成电路)发展到超大规模阶段的今天,基于IP(Intellectual Property,知识产权)核的IC设计及其再利用是保证SoC(system onchip,片上系统)开发效率和质量的重要手段。如果能对IP核进行验证、测试和集成.就可以加速SoC的设计,而这需要从以下5个方面进行考虑。 代码纯化.指在代码设计中及完成后进行自定义的、IEEE标准的、设计重用的、可综合性和可测试性等方面的规则检查; 代码覆盖率分析.研究仿真中的测试矢量是否足够; 设计性能和面积分析.在设计逻辑综合过程中分析所设计的RTL所能达到的性能和面积要求; 可测性分析:IP核设计重用中的关键技
[半导体设计/制造]
热门资源推荐
热门放大器推荐
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved