SV-面向对象编程

  1. 术语解释
  1. 类:包含变量和子程序的基本构建块。
  2. 对象:类的实例;
  3. 句柄:指向对象的指针;
  4. 属性:存储数据的变量;
  5. 方法:函数或方法中操作变量的程序性代码;

上述几个术语对于没有接触过面向对象编程的语言来说理解可能有一点困难。SystemVerilog里面向对象编程的部分与其他的高级语言类似(如C++,JAVA)。类可以认为是一类事物的抽象,而对象是这类事物一个实际个体;句柄则是我们为这个个体取的一个名称。属性是事物的特点,方法是事物具有的功能。举个例子:猫(类)是一类动物的名称,现在我有一只猫(对象),我给它取名小花(句柄)。猫的毛发,眼睛颜色,身长,体重等就是其属性。抓老鼠,当宠物就是其方法。

  1. 语法

2.1创建类

创建一个类的语法格式如下:

class  name;

    //属性定义;

    //方法定义

endclass:name

    例1:

class Transaction;

       bit [31:0] add, crc, data [8];

       function void display;

           $display(“Transaction:%h”, addr);

endfunction:display

function void calc_crc;

    crc = addr^data.xor;

endfunction

endclass

上例中创建了一个名为Transaction的类。该类包含属性:addr,crc,data;方法:display,calc_crc。

2.2实例化类

Transaction tr;  //声明一个句柄

tr = new();      //为Transaction分配空间

声明句柄tr后,它被初始化为null。调用new()函数创建对象后,开始为其分配存储空间,属性初始化默认值。

2.3构造函数

上例中,我们在调用new()函数例化对象时,类的属性初始化的是变量的默认值。我们还可以自定义new()函数,对属性初始化。

例2:

class Transaction;

       bit [31:0] add, crc, data [8];

       function new(bit[31:0] add, crc);

           this.add = add;

           this.crc = crc;

endfunction

endclass

例2中我们自定义了一个new()函数,函数体里的this指代本类里的变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值