SystemVerilog 类构造函数(Constructor)深度解析​​

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 = 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值