SystemVerilog 中的 构造函数(Constructor) 是类实例化时自动调用的特殊方法,用于初始化对象状态。以下是构造函数的系统化解析,涵盖工作原理、经典案例和高级技巧。
1. 构造函数基础
(1) 基本语法
class ClassName;
// 成员变量
int property;
// 构造函数
function new();
property = 0; // 初始化
endfunction
endclass
关键规则:
- 必须命名为 new。
- 无返回值(连 void 都不需要声明)。
- 支持参数化(见下文)。
(2) 对象创建流程
MyClass obj = new();
- 内存分配:在堆(Heap)中为对象分配内存。
- 调用构造函数:执行 new() 内的初始化代码。
- 返回句柄:将对象的内存地址赋给 obj。
2. 构造函数的工作原理
(1) 默认构造函数
若未显式定义 new(),编译器会自动生成一个空构造函数:
class Packet;
bit [31:0] addr;
endclass
// 等效于
class Packet;
bit [31:0] addr;
function new();
endfunction // 空的默认构造函数
endclass
影响:未初始化的成员变量值为:
- 二态类型(bit/int)默认为 0。
- 四态类型(logic/reg)默认为 X。
**(2) 带参数的构造函数**
class Packet;
bit [31:0] addr;
bit [63:0] data;
function new(bit [31:0] a, bit [63:0] d);
addr = a;
data = d;
endfunction
endclass
// 实例化时传参
Packet pkt =

最低0.47元/天 解锁文章
723

被折叠的 条评论
为什么被折叠?



