【转】http://www.asicdv.com/
一个UVM验证平台可以看成由多个模块组合在一起的,这和以前的verilog代码,以及verilog结合其它各种语言的验证手段在理念上是一样的,最大的不同就是这些模块不再是函数或者过程,而是一个个对象,其实仔细想想如果想实现继承,多态等等这些功能,类的概念势必要引入的,这一点在学习SystemVerilog中也会深有体会。
参见下图,总的来说UVM验证平台包含Data Item, Driver, Sequencer, Monitor, Agent和Environment几个部分,把各个模块放在一起,最后通过接口和DUT连接。需要注意的是DUT和各个其它模块之间的连接是通过真正的物理接口实现的,而诸如很多验证模块之间的连接是通过TLM(Transaction Level Modeling)进行数据通讯。
1. 数据项
数据就好象是血液一样在各个模块之间流动,从Sequencer,Driver到DUT,数据也可能被Monitor采集到然后进行分析。除了DUT内部 数据是以逻辑单位传输之外,其它部分之间的通讯都是以transaction来完成的,所以需要对数据进行包装,这一点很想C语言与C++中数据的不同。 例如以太网协议中的数据就非常适合定义为一个类,类的各种属性可以用来描述数据包的特性,通过受限随机化可以随心所欲的产生各种数据。
2. Driver/BFM(总线功能模型)
Driver就是不停地对从Sequencer获取数据然后驱动DUT,控制总线的读写信号,对特定地址进行读写操作的模块可以说是典型的Driver。
3. Seque