System Verilog视频学习笔记(6)- OOP-Encapsulation
来源:互联网 发布:网上订餐系统源码下载 编辑:程序博客网 时间:2024/06/08 00:58
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复用
类可将一类事物抽象,可由同一个类定义不同的功能,所以又可增加代码的可复用性。
2、SV中的OOP程序结构
图2、Verilog RTL结构与SV的OOP结构对比
3、OOP封装
(1)Variable变量
(2)methods操作数据
(3)variable和methods是类成员
例子:
图3、类例子,classdriver
上类封装了一些变量和task方法,SV中的class对于有C++基础认识的人应该很好理解。
4、OOP对象产生
图4、类对象产生
driver类产生drvr1和drvr2句柄,后用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、数据保护
public和local
默认对象成员为public
local成员不能被直接访问
图6、例子
保护成员在类内操作
8、类对象赋值
图7、类对象赋值
pkt1=pkt2,则pkt1对象的内存清零
垃圾回收:如对象句柄pkt1=null,赋值为空
静态属性:类内声明static属性的变量,则用该类例化对象时,所有对象共用该变量的值。
数组操作:在类内定义数组。
9、Best practices
图8、类外部具体书写task函数内容,“::”作用域
图9、调试函数,display显示,compare比较,copy复制
图10、类内的Virtualinterface
驱动和采样信号通过Virtual interface,类似C++的虚函数
注意在类的定义中,构造对象中传的是对象的地址还是对象。
技巧:通过仿真学习分析调试testbench。
10、总结
本节视频介绍了类对象、类成员、类初始化、类属性、及封装。
- System Verilog视频学习笔记(6)- OOP-Encapsulation
- System Verilog视频学习笔记(7)- OOP-Virtual Interface
- System Verilog视频学习笔记(1)- Device Under Test
- System Verilog视频学习笔记(2)- Testbench
- System Verilog视频学习笔记(3)- Language Basic
- System Verilog视频学习笔记(5)- Concurrency
- System Verilog视频学习笔记(8)- Randomization
- System Verilog视频学习笔记(9)- Inheritance
- System Verilog视频学习笔记(10)- Inter-Thread Communication
- System Verilog视频学习笔记(11)- Functional converage
- System Verilog视频学习笔记(12)- VMM预览
- System Verilog视频学习笔记(4)- Stimulus driven and received
- system verilog MATLAB学习笔记
- system verilog学习笔记--time slot division
- system verilog学习笔记assertion & debug
- system verilog学习笔记---coding style
- system verilog学习笔记---intersting Q&A
- java笔记-封装(Encapsulation)
- codeforces 560E Gerald and Giant Chess (dp + 组合数)
- vba 执行 *.py
- 树状数组
- java中Scanner类的简单用法分享
- hdu 2614 BEAT 回溯的dfs
- System Verilog视频学习笔记(6)- OOP-Encapsulation
- c++作业六
- Qt程序打包发布——插件发布
- Android 滑动
- 01.struts简介及学习方法
- kali 2016 Metasploit启动
- 重写gensim.word2vec的文本相似度匹配函数(wmdistance)
- Hibernate 映射关系
- vue.js 初体验— Chrome 插件开发实录