前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SystemVerilog class的简短介绍

SystemVerilog class的简短介绍

作者头像
AsicWonder
发布2024-07-02 17:10:05
740
发布2024-07-02 17:10:05
举报

Class Types

当你声明一个class时,你正在声明一组成员和一组对这些成员操作的方法。

代码语言:javascript
复制
代码语言:javascript
复制
class MyClass; 
代码语言:javascript
复制
 bit [7:0] member1;
代码语言:javascript
复制
 bit member2;
代码语言:javascript
复制
 function void method;
代码语言:javascript
复制
   $display("members are %h %b", member1, member2);
代码语言:javascript
复制
 endfunction
代码语言:javascript
复制
endclass
代码语言:javascript
复制

我们正在声明一个class的形式和行为,但没有分配任何内容来存储这种类的值。

Class Objects

类对象是类的特定实例。创建对象的唯一方法是使用类的内置new()方法调用类构造函数。

Class Handles

每次调用new()方法时,它都会构造一个新的类对象,该方法会返回类对象的类句柄。句柄是对类对象的间接引用,就像指向内存中地址的指针一样。

Class Variables

类变量是存储引用特定class类型的特定类对象的类句柄的地方。

有点拗口~

声明类变量不会创建类对象,只会创建保存类句柄的空间。这与其他数据类型形成鲜明对比,在其他数据类型中,变量的声明会创建该类型的对象,并为你提供一个符号名称来引用这些对象。例如:

代码语言:javascript
复制
typesef struct {bit [7:0] member1; bit member2;} MyStruct;
代码语言:javascript
复制
MyStruct StructVar1,StrucVar2

这为两个MyStruct类型对象创建和分配空间,可以使用StructVar1.member1访问其成员之一。

另一方面:

代码语言:javascript
复制
MyClass ClassVar1,ClassVar2;

这为两个MyClass变量创建和分配空间,但只分配空间来保存MyClass对象的句柄,而不是对象本身。如果你现在尝试访问ClassVar1.member1,你将收到一个空句柄引用错误,因为类变量的初始值是特殊值null

关于句柄而不是指针的好处之一是,它们消除了访问未初始化的对象引用的可能性。

Class Types, Objects, Handles, and Variables

一旦你有了类变量,就可以调用new()方法来构建类对象

ClassVar1 = new();

这调用MyClass类型的构造函数,该构造函数将该句柄存储在MyClass变量ClassVar1中。你现在可以访问ClassVar1.member1,因为ClassVar1引用了一个实际的对象。如果你那么做: ClassVar2 = ClassVar1; 两个类变量现在都引用了同一个类对象——但MyClass仍然只有一个对象。ClassVar1.member1和ClassVar2.member1指的是同一个类成员。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字芯片实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Class Objects
  • Class Handles
  • Class Variables
  • Class Types, Objects, Handles, and Variables
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档