EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
摘 要:本文以SIM卡控制模块的功能验证为例,介绍了运用Synopsys Vera验证工具以及RVM验证方法学快速高效地搭建高质量验证平台的方法。文中详细介绍了RVM验证方法学以及RVM验证平台的结构。
7 c( H6 h/ b/ g2 d8 x关键词:RVM;SoC;验证平台;可重用性;功能验证) M! A" }$ D1 _: Y9 y& U
/ O( p" t9 ]% X) o* j引言
) u+ [7 |" }# {; d3 ^: U/ K随着SoC设计日趋复杂,验证成为SoC设计过程中最关键的环节。本文介绍了Synopsys的RVM验证方法学,采用Vera硬件验证工具以及OpenVera验证语言建立目标模型环境,自动生成激励,完成自核对测试、覆盖率分析等工作。通过建立层次化的可重用性验证平台,大大提高了验证工程师的工作效率。文中以一个SIMC功能模块的验证为例,详细介绍了RVM验证方法学在SoC芯片验证中的应用。. T$ |7 ~5 f7 f, g
4 w- Z3 A1 t N2 b9 `9 u- N1 Q; A功能验证
; l& R* b& j* F4 Q! W一个设计被综合前,首先要对RTL描述进行逻辑功能验证,以确保模块或芯片的功能正确性。通常,RTL级的功能验证主要采用自底向上的验证策略,可分为模块级验证和系统级验证两个阶段。" K" l, U" c! f! a+ F
: M, I# K8 o+ e% F# S
传统验证方法大多是在信号级的接口上直接与待验证设计(DUT)通信,即用激励直接驱动DUT的引脚,通过检查接口信号的值和变化来达到验证设计功能的目的。这种方法的抽象层次较低,验证平台的开发与DUT的接口协议紧密相关,使得验证平台的重用性较差。如果要做到一个验证平台可以验证多个不同的DUT,必须将验证平台的抽象层次提高到事务级,而且应该构建层次化的结构,层与层之间具有一定的独立性,改变底层并不会影响上层。 基于事务的验证: g) ~) r4 }9 n, U0 p6 o
所谓事务(Transaction)是指设计对象与事务处理器(Transactor)之间通过接口所做的一次数据传输。从硬件的角度来看,事务可看成作用在一个特定接口上的一组信号的集合单元。事务具有3个要素:起始时间、终止时间,以及所有与这个事务相关的信息。
1 n& r6 { ^9 W% F( @) d
! H+ F; Q! M2 D# I) {8 o基于事务的验证工具让用户除了可以在信号/引脚级上进行验证,还可以在事务级上进行验证,从而提高了设计生产率。
$ I$ q. D$ T7 U4 r1 k
; [0 x! m" s4 w( _) f: ?2 ^基于事务验证环境的基本要素* _! \) K# s! i1 {+ B0 B
DUT:待验证设计对象的RTL描述或门级描述。
! R% ?) S1 u, X ?. G( |; W0 u8 q* |5 k" B: P r0 s# F- Y' ^
事务:在DUT和事务处理器之间通过接口在特定起止时间内的一次数据传输。事务能够对信号波形进行标识,表示相关的信号属性,还可以标识错误。5 D" y. {( Y) E N. F2 X' e
W: g* U9 u ~事务处理器:也叫总线功能模型(BFM)。事物处理器可以表示事务所代表的信号变化,并与DUT通过接口进行连接。一个典型的DUT往往具有不同的接口,因此一个验证环境中具有不同的事务处理器以产生相关的测试向量对DUT进行激励。
# c5 h$ M# x% q# f% L6 w$ C4 j+ C& l5 @. z0 k0 a) \, ?" K
测试例(Testcase):用来产生验证DUT特定功能所需要的事务。) x% _4 `* Y3 v; W. s$ v
8 H4 E( E! @1 u n% V8 ]" ]: l# Y基于事务的验证处理过程# ~9 z+ p: v1 K+ {$ ^2 V# P+ D
测试例通过特定的事务来调用事务处理器的任务,事务处理器按照DUT所遵循的协议对事务进行处理,经过处理后的事务通过连接DUT的接口输入到DUT中,DUT对输入的激励进行响应。DUT输出的响应再转换为事务的形式,这样验证平台的自核对模块就可以在事务级上对激励和响应进行核对,以检查DUT的功能是否正确。 RVM层次化验证方法学
/ Z9 h8 E2 Y7 F- NRVM验证方法学是一种层次化的验证方法学,它能把验证的步骤分层进行,将验证工作提高到更高的抽象层次,即事务层。层次化的验证方法使得验证工程师只需关心DUT的输入/输出接口,而不必关心DUT内部的具体实现。
( q4 o9 V) M( D) ]- w4 M
) _1 W* f+ F. o1 y1 p根据RVM方法学,验证工程师可以搭建出具有随机测试、自动检错核对、功能覆盖等功能的层次化验证平台。这类验证平台包含很多参考模型,每个模型可完成不同的功能。在搭建验证平台的过程中,还可以直接调用Synopsys提供的RVM基类库,其中定义了丰富的标准类。利用RVM基类以及面向对象的技术可以更方便地生成验证平台各个层次的模块。
2 q3 n3 F" ^1 g3 P ?
6 r' z, V' F/ q! z4 T# `基于RVM的验证平台分成5层,每层完成独立的功能,层与层通过接口互相连接。 信号层- X+ f; a s4 ^! D/ W& h
信号层提供验证平台与DUT的信号级连接。验证平台通过信号层将上层产生的激励驱动到DUT中。具体实现时,需要定义验证平台与DUT连接的虚端口,当DUT的接口改变时,只需要修改验证平台虚端口中的信号,上层模块不需要修改,方便整个验证平台的重用。 4 |, n* Y6 h+ Y* ~& [6 m) R
2 [2 r4 U0 p! r
命令层2 d Q# y2 h8 Y! F- ?; _# ?
命令层将信号层的信号抽象为事务,给高层提供DUT的接口与事务的转换。命令层主要包括驱动器模块和监视器模块,与上层模块通过事务级通道连接,与下层模块通过虚端口连接。驱动器完成对DUT激励的驱动。监视器检测DUT的输出,将输出反馈给上层模块。
" X# `; B/ D/ W3 L2 `) ]9 \- [ D3 z+ U
功能层
: ~+ R7 p D! ]0 d功能层模拟DUT的基本行为,将DUT的行为抽象为更高一级的事务。功能层中包括事务处理器模块和自核对模块。事务处理器模块根据DUT所遵循的协议将上层产生的事务进行处理,经过事务处理器处理的事务通过事务级通道传给下层。自核对模块用于对比事务经过DUT处理之后是否符合协议的要求,通常用于检查DUT传输数据的正确性。 / c8 W: \% h: A" f
& F7 m$ A. c) e$ B8 A1 |' x激励产生层9 D1 O, n% a) F4 }- k/ F
激励产生层用于产生对DUT的激励事务。这一层包括产生器模块,该模块产生一系列的事务对象,通过事务级通道传输给下层。RVM支持两种产生器: Atomic产生器,用于产生一组相似的事务对象; Scenario产生器,用于产生顺序可控制的事务对象。 % ?3 I% [. y, r# Q4 |; E+ U" s5 `
2 a8 F5 @1 l4 \+ M; m
测试层
/ r3 V9 D% k4 H) z; ~4 \测试层用于对DUT的逻辑功能进行验证。这一层主要是用户为了验证DUT的逻辑功能而编写的不同测试例,在测试例中可以对各个模块的限制条件进行修改。通过对不同测试例运行结果的统计,可以查看DUT的功能覆盖率,只有功能覆盖率达到一定要求,才能够认为该DUT已经被完备的验证通过。 2 v+ u6 m) Z3 o: R1 ?' l
% n* u( o+ i( @* t# k
|