System Verilog视频学习笔记(6)- OOP-Encapsulation

OOP-Encapsulation(面向对象-封装)

内容来自启芯-System Verilog视频

============================================================== 

目录结构:

1、代码的抽象和可复用性

2、SV中的OOP程序结构

3、OOP封装

4、OOP对象产生

5、操作对象成员

6、初始化对象

7、数据保护

8、类对象赋值

9、Best practices

10、总结

 ==============================================================

本章目标:

1、OOP封装

2、保护属性

3、初始化,new函数

 

OOP:Object OrientedProgramming,面向对象

1、代码的抽象和可复用性

图1、OOP复用

类可将一类事物抽象,可由同一个类定义不同的功能,所以又可增加代码的可复用性。

2SV中的OOP程序结构

图2、Verilog RTL结构与SV的OOP结构对比

3OOP封装

(1)Variable变量

(2)methods操作数据

(3)variable和methods是类成员

例子:

图3、类例子,classdriver

上类封装了一些变量和task方法,SV中的class对于有C++基础认识的人应该很好理解。

 

4OOP对象产生

图4、类对象产生

driver类产生drvr1drvr2句柄,后用new产生,给对象分配内存。

 

5、操作对象成员

drvr = new();

drvr.sa = 3;       //drvr内的sa变量赋值为3

drvr.da = 7;   //drvr内的da变量赋值为7

drvr.send();      //调用方法

6、初始化对象

通过new实现

new无返回值

new执行后对象分配内存

new不能通过“.”访问。

图5、例子

上图this表示当前实例的对象,与C++相同。

7、数据保护

publiclocal

默认对象成员为public

local成员不能被直接访问

图6、例子

保护成员在类内操作

 

8、类对象赋值

图7、类对象赋值

pkt1=pkt2,则pkt1对象的内存清零

 

垃圾回收:如对象句柄pkt1=null,赋值为空

静态属性:类内声明static属性的变量,则用该类例化对象时,所有对象共用该变量的值。

数组操作:在类内定义数组。

 

9Best practices

图8、类外部具体书写task函数内容,“::”作用域

图9、调试函数,display显示,compare比较,copy复制

图10、类内的Virtualinterface

驱动和采样信号通过Virtual interface,类似C++的虚函数

注意在类的定义中,构造对象中传的是对象的地址还是对象。

技巧:通过仿真学习分析调试testbench。

 

10总结

本节视频介绍了类对象、类成员、类初始化、类属性、及封装。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值