Systemverilog里class类型的记录

1. class内容
class里面包含data和对data进行操作的subroutines(functions and tasks)。class的data称为class properties,subroutines称为methods。两者都是class的members。
class相当于是定义了一个data type。object是该class的instance。object handle是持有该class type的变量。
class里的method的lifetime必须为automatic,如果定义成static是非法的(这里不是指static task,而是task内static的variables或arguments)
2. class构造函数
systemverilog提供了class的构造函数,支持在创建object的时候对instance进行初始化。
如果用户没有显示指定new方法,那么隐藏的new方法将会被自动加上。在子类的new方法里应该首先call父类的new构造函数。
super.new需要在子类构造函数中第一条语句就执行,这是因为superclass需要在子class之前被初始化,如果用户没有提供superclass的初始化,那么compiler会自动插入super.new。
3. static
class中的static properties可以直接引用,不需要该通过class的instance。
class中的methods也可以是static,static method不能访问non-static members(properties或methods),但它可以访问同个class内的static members。如果它访问了non-static members或this handle,那么应该报编译错误。static methods也不能是virtual。
static method和task with static lifetime是不一样的,前者描述的是class内method的lifetime,而后者描述的是task内variables和arguments的lifetime。
4. shallow copy和deep copy
shallow copy只是复制原有object的properties,但如果原有object里含有object handler,也只是复制handler的值,不会把handler object里的properties也进行复制。
shallow copy也不会创建新的coverage objects(covergroup instances)。
如果要做到连handler里的properties都复制,那么需要deep_copy,deep copy需要user自己实现的。
5. chaining constructors
如果多层class extend的话,那么在constructor里需要调用父类的constructor。
如果父类的constructor需要arguments,那么有两种方法:1. 用super.new(xx)传进去;2. 在extend父类class时就传进去的,用这种方式,在constructor里就别加super.new(xx)了。
父类的new函数如果不需要arguments(没有参数或参数带默认值),那么在子类constructor里对super.new()可写可不写,不写的话,compiler会自动插入。如果父类的constructor需要传参数,那么compiler自动插入也只是为super.new(),也不会给你传参数值进去的(除非在extend时指定),这样simulator会报错。
记住:如果将new定义为local,那么该类将不可以被继承的。
在子类构造函数中需要第一条调用父类构造函数super.new()中,要等super.new()执行完之后,才会做son class的property初始化,如果property有指定初始值,那么就赋值,如果没有指定,那就是undefined的。最后才会继续执行son class构造函数中super.new()以下的语句。因此在给父类构造函数传输参数,如果用子类定义的变量,那么结果会是undefined的,因此,来不及初始化啊。例子如下:

贴片电容怎么看参数
航空发动机产业链专题报告:崇山竞秀、动力攀峰
四维图新旗下杰发科技首款功能安全MCU–AC7840x提前回片
分析一下CesiμmRTOS与FreeRTOS的差异
贾扬清被曝从Facebook离职,任阿里硅谷研究院VP
Systemverilog里class类型的记录
最大5G智能电网:停电“零感知”,电网监测“零延时”
发展光伏产业也将会成为未来“大趋势”
10kV箱式变压器的巡视作业过程 为什么要对箱式配电变压器进行巡视检查?
9.5.11 新型光刻胶材料∈《集成电路产业全书》
protel DXP调用旧库的方法
自学andriod的app开发
华为云CodeArts Artifact:保障制品质量与安全的最佳选择
关于CCCⅡ与OTA的三输入单输出多功能电流模式滤波器
氦质谱检漏仪压力传感器芯片检漏
基于LabVIEW和Matlab混合编程的小波去噪方法
DFS发布全球首个奢侈品旅游零售元宇宙,系列数字藏品限量发行
仅1799元起,iQOO Z5火热预售中:满血配置超长续航
波士顿惊现全球首家机器人餐厅
互联网医院“在线问诊+线上购药”的创新服务模式逐渐被更多居民接受