SystemVerilog芯片验证
第5章面向对象编程
2024年3月12日
SystemVerilog芯片验证2024年3月12日1/120
类的定义
类的定义
1类(class)是现实世界中一系列特征相似的客观事物(对象)的抽象。
2在程序设计中,类是用于创建对象的蓝图(blueprint),是包含了属性
(property)和方法(method)的数据类型。
3方法是类的访问接口,在类的外部通过调用方法访问或修改类中的属性。
4类是一种自动数据类型。
请举例说明类和对象的关系。
4classtransaction;
5bit[3:0]a;
6
7functionvoidprint(stringname=);
8$display(%s:a=%0h,name,a);
9endfunction
10endclass
SystemVerilog芯片验证2024年3月12日2/120
类的定义
在类外定义方法
4classtransaction;
5bit[3:0]a;
6
7externfunctionvoidprint(stringname=);
8endclass
9
10functionvoidtransaction::print(stringname);
11$display(%s:a=%0h,name,a);
12endfunction
SystemVerilog芯片验证2024年3月12日3/120
对象、句柄和构造方法
在类外定义方法
1类是一种抽象的数据类型,它本身不占据存储空间。
2类的实例被称为对象,对象占据存储空间。
3句柄(handle)是使用类作为数据类型而定义的变量,可以简单认为句柄
保存了对象所在的存储空间的起始地址。
4对象不能直接被访问,只能使用句柄间接地进行访问。
SystemVerilog芯片验证2024年3月12日4/120
对象、句柄和构造方法默认构造方法
类、句柄和对象的关系
1对象是通过调用类的构造方法(constructor)创建出来的。
2类中名字叫做“new”的方法就是构造方法,每个类都自带一个没有参数的
new方法,也被称为默认构造方法。
3构造方法为对象分配存储空间,然后初始化对象中的属性,最后返回对象
的地址。对象的地址值通常会赋值给对应的句柄。
存储空间存储空间
句柄tr句柄tr
transactiontr;nulltransactiontr;15554ba48160
tr=new();
transaction对象
属性a