验证为什么需要OOP(面向对象编程)?
验证环境不同组件及其功能和所需要处理的数据内容是不相同的,但是不同环境的同一类型的组件所具备的功能和数据内容是相似的,所以验证世界的各个组件角色明确,功能分立,使用面向对象编程与验证世界的构建原则十分符合。
激励生成器:生成激励内容
驱动器:将激励以时序形式发送到DUT
监测器:监测信号并记录数据
比较器:比较数据
OOP术语
(1)类(class):是软件盒子,包含变量和子程序的基本构建块。Verilog中对应的是模块(module),是硬件盒子。
(2)对象(object):类的一个实例。Verilog中module可以例化,SV中class也可以例化。
(3)句柄(handle):用来指向对象的指针。在Verilog中可以通过层次化的索引来找到结构中的设计实例,而在SV的对象索引时,需要通过句柄索引对象的变量和方法。
(4)属性(property):在类中声明的存储数据的变量
(5)方法(method):处理数据的方法,如task,function
将类视为房子的蓝图,则对象是一个实际的房子,而句柄就像是房子的地址。
定制构造函数
Transaction tr; //声明句柄
tr=new