1、OOP术语
a.类(class):包含变量和子程序(函数或者任务)的基本构建块。
Verilog中与之对应的是模块(module)。
b.对象(object):类的一个实例。
在Verilog中,你需要实例化一个模块才能使用它。
c.句柄(handle):指向对象的指针。
在Verilog中,你通过实例名在模块外部引用信号和方法。一个OOP句柄就像一个对象的地址,但是它保存在一个只能指向单一数据类型的指针中。
d.属性(property):存储数据变量。
在Verilog中,就是寄存器(reg)或线网(wire)类型的信号。
e.方法(method):任务或者函数中操作变量的程序性代码。
Verilog模块除了initial和always块以外,还含有任务和函数。
f.原型(prototype):程序的头,包括程序名、返回类型和参数列表。程序体则包含了执行代码。
类是对象的一个模板,其内部定义了数据和方法。对象是类的一个例化和实现。
注:《SystemVerilog验证 测试平台编写指南》中使用 变量(variable)和程序(routine),而没有使用OOP中的属性(property)和方法(method)。
2、用户使用对象的三个步骤
a.定义类:
class packet;
...
endclass:packet
class long_packet;
...
endclass:long_packet
b.在module、class、function、task等地方声明对象:
packet my_packet; //声明一个句柄
packet packet_array[32];
long_packet my_l_packet;
对象标识符(my_packet/packet_array/my_l_packet)是例化该对象的句柄(指向对象的指针)。当该对象被创建的时候,该句柄有效,默认情况下句柄将为空(null)。
c.通过构造函数new创建对象的例化
通过new这个构造函数给对象分配内存空间,并且把入口地址赋给对象的句柄:
my_packet=new(168); //为一个packet对象分配空间
my_l_packet=new();
例5.1 简单的Transaction类
c