[Systemverilog学习笔记] class

本文详细介绍了Systemverilog中的类(class)基础知识,包括构造函数new、this关键词及其作用域、Super关键词、静态变量和全局变量、继承、多态以及类的参数化和extern、local的使用。通过实例解析了类的定义、使用方法以及类之间的关系和特性。
摘要由CSDN通过智能技术生成

[Systemverilog学习笔记] class

一、Class 基础知识

class的定义是什么?

​ class是一种用户自定义的数据结构,一个OOP()的构造结构,可以封装对应数据并产生对数据的任务和方法;

​ 亦可以表述:包含变量和子程序的基本构造块;

class中有什么?

​ 封装的数据类型和操作数据类型的任务和函数。

存在以下常用名称:

​ 属性 (property) :一个类中的数据类型;

​ 方法 (Method):操作数据的任务和函数;

​ 构造函数 (constructor) : 类中定义的new()函数,在类创建时自动调用;

​ 句柄 (handle) : 指向对象的指针 ;

​ 对象 (Object) : 一个创建的某个类的实例,需要使用new()函数进行创建,否则值为null;

如何定义一个类,并且使用它?

class Myclass; //class name 
    bit [2:0]   header;  //property
    bit         encode;
    bit [2:0]   mode;
    bit [7:0]   data;
    bit         stop;

	// constructor
    function  new(bit [2:0] header = 3'h1, bit [2:0] mode = 5);
        this.header = header;
        this.encode = 0 ;
        this.mode   = mode ;
        this.stop   = 1 ;
    endfunction : new
    
	//Method
    function  display();
        $display("Header = 0x%0h,Encode = 0x%0b,Mode = 0x%0h,Stop = 0x%0b",
                  this.header,this.encode,this.mode,this.stop);
    endfunction : display
    
endclass : Myclass
                  
module tb_top ();
    Myclass pkt0,pkt1;

    initial begin
        pkt0 =new(); //use default parameter
        pkt0.display();

        pkt1 =new(3'h2,2h'h3);
        pkt1.display();
    end
endmodule                  
                  

​ 代码分析:

1、new函数–构造函数

​ 类中定义的new() 即自定义构造函数,当tb_top模块中例化一个对象的时候,会为该对象申请一个新的内存块来保存对象的变量,大小为类中所定义的属性大小之和,然后初始化变量,当使用系统new函数(class中未自定义new)时,会将变量设置为默认值;当使用自定义new函数时,可以初始化默认值成我们想要的数值;

​ new函数会返回一个指向类的对象的句柄,其类型就是类本身,所以不能有返回值;

​ Sytemverilog 会优先调用赋值操作符左边的句柄类型,如下所示

class Transcation;
    //...
endclass : Transcation

class Driver;
    Transcation tr;
    function  new();
        tr =new();  //会调用Transcation类中的new函数
    endfunction 
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值