基于SystemVerilog语言的验证方法学(8)
- UID
- 1029342
- 性别
- 男
|
基于SystemVerilog语言的验证方法学(8)
vmm_log类提供了VMM信息(message)服务接口,这样不论其来源,所有信息能被有效体现出来。信息服务基于几个概念来描述及控制信息:
信息来源(transactor,generator,test case等)
信息过滤器(promote,demote,suppress 信息)
信息类型(failure,timing error,debug information 等)
信息严重性(fatal error,non-fatal error,warning等)
仿真器信息处理(continue,abort,invoke debugger等)
vmm_data基类是验证平台中所有事务(transaction)描述以及数据建模的基础。这个类能够被扩展建立适合与平台需要的任何模型,比如一个以太网MAC帧数据模型,或者描述一个串行总线数据包。Transactions建模基于transaction方式描述,也是从vmm_data类中被扩展。这样相对于传统程序调用,更容易产生随机事务(transactions)数据流。
VMM标准库中还包括其他类:
vmm_channel: 提供通用事务级接口机制
vmm_broadcast: 复制事务到多个通道。
vmm_notify: 并发执行线程同步接口
vmm_xactor: 作为基类服务于所有事务
总之,这些类提供建立验证环境所需模块(block),能满足各种可能DUT验证需求,并加速验证平台开发。预定义基类可扩展性是面向对象方法关键所在;每个验证团队能定制自己验证平台环境,同时在操作运行中不需要改变他们自己基类。SystemVerilog中基类源代码在开发自己类时是有用的,因此Synopsys提供免费license的VMM标准库。
4.2.2 VMM Checker库
断言(assertion)能更快,更多发现bug在很多年前的文中就已经提到。断言在执行中能领会设计者意图,在代码设计阶段隔离设计错误,缩短debug时间,也能通过形式验证分析发现仿真中容易被忽略的边界(corner-case)bug。虽然有这些优点,让人吃惊的是并非所有设计或验证团队用到断言。
出现这种情况是工程师不得不专门学一种语言同时还需要买昂贵工具。现在SystemVerilog已经提供了强有力断言结构,能被当前主流仿真器所支持,并更易使用。事实上,最近调查表明由于SystemVerilog对断言的支持,断言的使用在明显增加。然而,对工程师来说很轻松使用断言还需要时间,同时需要让他们知道"whatto check"也存在难度。
assertion-checker库即是将断言轻松加入到RTL设计中一个很好方法。这些检查器(checker)的设计与按照一些通用设计单元保持一致,比如FIFO,stacks,arbiters,memories,statemachines,handshakeinterface等。工程师不用考虑使用的断言与设计结构是否完全保持一支,他们只需要简单将一个arbiter请求,应答信号连接到一个arbiter检查器或者是将memory地址线和控制信号连接到一个memory检查器。
通过调查也显示了断言检查库价值;Accellera 组织提供的开放验证库OVL已经广泛采用。SystemVerilogVMM扩展了OVL,加入了对设计单元类型支持,包括FIFO,同步,异步memory,stacks。图11完整的列出了VMM检查库中定义的50个断言检查器。
Figure 11 VMM检查库扩展了OVL断言内容
|
这些检查器作为SystemVerilog模块进行应用,所以按照模块例化能放置于设计或验证平台中的任何位置。使用非常简单,用户简单连接时钟,复位,被检查信号即可。比如:下面的检查器例化确定了两个信号,hotand cold,是互斥的 (不能在同一时刻有效):
Assert_mutex temperature_check(reset_n,clock,hot,cold)
Synopsys已将VMM检查库中SystemVerilog的应用赠予给Accellera,可以预期将来OVL版本中将包含用SystemVerilogVMM定义的全套断言检查库。
4.2.3 XVC标准库
SystemVerilogVMM定义了可扩展的验证单元(XVC),从一个模块级事务或模块级组合事务扩展到一个系统级事务。本书也规范了XVC标准库,一组用于建立一个系统级验证的XVC类。如图12:
Figure 12 用XVC标准库和VMM标准库中类建立XVC
|
XVCmanager是一个可选验证单元,主要用于更高层次XVC同步。根据系统或具体测试需要,用户可自定义同步和XVC控制机制。XVC标准库中定义了xvc_manager基类,预定义的XVCmanager类:vmm_xvc_manager。它作为一个基类的扩展而应用。 |
|
|
|
|
|