您的位置 首页 新品

RVM验证方法学在SoC芯片验证中的使用

随着SoC设计日趋复杂,验证成为SoC设计过程中最关键的环节。本文介绍了Synopsys的RVM验证方法学,采用Vera硬件验证工具以及OpenVera验证语言建立目标模型环境,自动生成激励,完成自核

导言

  跟着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所示。

图 1 RVM层次化验证模型

  信号层

  信号层供给验证渠道与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验证办法学中的随机测验技能能够在很短的时刻内到达更高的功用掩盖率,进步验证工程师的作业功率,到达有用缩短验证周期的意图。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/195590.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部