栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【SystemVerilog笔记(三)】class与package

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【SystemVerilog笔记(三)】class与package

文章目录
        • (一)class
          • 一、类和对象
            • 1.class类
            • 2.object对象和handle句柄
            • 3.创建对象
            • 4.静态变量与静态方法
          • 二、类成员的封装性
          • 三、类的继承
          • 四、句柄的使用
        • (二)package

(一)class
  • 面向对象编程的三要素:封装、继承和多态。
一、类和对象 1.class类
  • class类包含成员变量(property)和成员方法(method)的声明,属于软件的范畴,只能定义软件变量(reg和wire等硬件信号是不能用的),且默认其生命周期是动态的。此外,class可以通过interface作为媒介获取硬件信号。
2.object对象和handle句柄
  • object对象是类的实例,类的例化可以在任意时间点发生;handle句柄是用来指向对象的指针(悬空的句柄为null),示例如下。
Example ex; //声明句柄
ex = new(); //创建对象
3.创建对象
  • 每个class的都需要有new()函数,该函数为系统预留函数,也可进行自定义。不需指定返回值。
  • 在创建对象后,该对象的空间位置不会更改,指向该空间的句柄可以有多个,当没有句柄指向该对象时,sv会自动回收空间。
4.静态变量与静态方法
  • 使用static来声明class内的变量则是静态变量,该类无论例化多少个对象,都会共享一个同名的静态变量。
  • 静态方法中可以声明并使用动态变量,但是不能使用类的动态成员变量。(在使用静态方法是可能并没有创建具体的对象,也就并没有为动态成员变量开辟空间)
  • 静态方法可以使用类的静态成员变量。二者都在编译阶段就开辟了对应的内存空间。
二、类成员的封装性
  • 成员默认类型为public,子类和外部均可访问。
  • 指明protected则只有该类或者子类可以访问。
  • 指明local则只有该类可以访问成员。
  • this.xx表明调用的成员为当前类的成员。
三、类的继承
  • 继承的关键字为extends
class son extends father;
...
endclass
  • 通过super来索引父类的同名函数。子类在定义new函数时应首先通过super.new()调用父类的new函数,若父类new函数没有参数则可省略,系统自动调用。

※如果子类的句柄赋给了父类的句柄,则父类句柄也只能访问共有的父类成员变量和方法。而反之则不允许父类句柄赋给子类的句柄。(欢迎讨论!)

四、句柄的使用
  • 句柄可以作为形式参数通过方法来完成对象指针的传递。
  • 任意时刻都可以为句柄创建新的对象,注意同一个对象可能有多个句柄(不管通过哪个句柄读出数据结果也自然是一样的)。
(二)package
  • package中可以定义类、静态方法和静态变量,不可以定义硬件相关的module、interface等。
  • 通过package::xx的方式导入package中的类、方法等。
  • 如果package名称唯一且内部定义的名称也与其他package各不相同,则可通过import package_name::*的方式使得包中的内容可以被搜索到。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656309.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号