0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

参数化Class中的静态属性

芯片验证工程师 来源:片验证工程师 作者:片验证工程师 2022-12-02 09:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

static属性一般是在编译的时候就已经分配了内存,并被这个类的所有实例共享,

也就是在仿真时刻0之前就已经完成了静态属性的内存分配。

但是,参数化类中的静态属性可能有所区别。参数化类中的静态属性(参数化)是在参数初始化的时候才会分配。

 // Class with parameters
 class with_param #(type T = int);
 static T static_with_p;
 endclass
 
 // Class without Parameters
 class without_param;
 static int static_wo_p;
 endclass
 
 module top;
 initial begin
 $display("static_wo_p = %0d", without_param :: 
static_wo_p);
 $display("static_with_p = %0d", with_param :: 
static_with_p);
 end
 endmodule: top

在上面的两个class中,一个包含parameter (with_param),还有一个不包含parameter(without_param).

在各自class中,我们都声明了静态属性。在访问静态属性“static_wo_p”时没有问题,而在访问静态属性
“static_with_p”时,编译器会报错(Error或者Warning):

Warning-[PCSRMIO] Class scope used outside of class
testbench.sv, 59
"with_param::static_with_p"
An unspecialized class scope '::' reference was seen.  To access
a static member of the default specialization outside the class
'with_param', use 'with_param#( )::' instead. This will be an
error in a future release.

需要修改成下面这样的写法才能编译通过。

$display("static_with_p = %0d", with_param # ( ) :: static_with_p);

下面这个例子更能够展示参数化类中的静态属性非参数类中的静态属性的区别:

class with_param #(type T = int);
static T counter = 2;
function new;
counter++;
endfunction: new
endclass: with_param


class with_param_extend extends with_param #(real);
endclass: with_param_extend


typedef with_param #(byte) s_byte;
s_byte S1 = new( );
s_byte S2 = new( );
with_param S3 = new( );
with_param #(bit[2:0]) S4 = new( );
with_param_extend S5 = new( );
initial begin
$display ("Counter value of S1 instance = %0d", with_param 
#(byte)::counter);
$display ("Counter value of S2 instance = %0d", s_byte:: 
counter);
$display ("Counter value of S3 instance = %0d", with_param 
#()::counter);
$display ("Counter value of S4 instance = %0d", with_param 
#(bit[2:0])::counter);


$ d i s p l a y ( " C o u n t e r 
value of S5 instance =%0d",with_param_extend::counter);
end

仿真log:

Counter value of S1 instance = 4
Counter value of S2 instance = 4
Counter value of S3 instance = 3
Counter value of S4 instance = 3
Counter value of S5 instance = 3.000000
 V C S S i m u l a t i o n R e p o r t

上面的例子中S1、S2、S3、S4、S5中的参数T分别被覆盖成byte、byte、int、bit[2:0]、real,所以只有S1(s_byte)和S2(s_byte)中的静态属性counter彼此共享。

参数类的扩展类

class class1 #(type T = int);
 ….
endclass
 
class class2 #(type P = real) extends class1;


class class3 #(type P = real) extends class1 #(integer);


class class4 #(type P = real) extends class1 #(P);

上面是一个参数化类的扩展类示例,class1是一个参数化类,参数T默认为"int"。

class2增加了一个参数P,此时参数T为默认的"int"

class3增加了一个参数P,此时参数T覆盖成"integer"

class4增加了一个参数P,此时参数T也覆盖成为P

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 属性
    +关注

    关注

    0

    文章

    23

    浏览量

    8856
  • static
    +关注

    关注

    0

    文章

    34

    浏览量

    11171

原文标题:参数化Class中的静态属性

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    变频器的静态调试步骤

    变频器的“静态调试”通常有两种理解:一种是指电机 不旋转 的情况下,让变频器自动测量电机电气参数的 “静态自学习” (或静态辨识);另一种更广泛的含义是指变频器在 带电机但不带负载 的
    的头像 发表于 03-11 07:36 976次阅读
    变频器的<b class='flag-5'>静态</b>调试步骤

    分立器件的静态参数要测试哪些?这些参数对器件有什么影响?

    在电子设计,分立器件(如晶体管、二极管、集成电路等)是构成复杂电路的基础组件。为了确保其性能稳定、可靠,必须对其进行静态参数测试。
    的头像 发表于 01-26 10:00 1200次阅读
    分立器件的<b class='flag-5'>静态</b><b class='flag-5'>参数</b>要测试哪些?这些<b class='flag-5'>参数</b>对器件有什么影响?

    MAX98395数字输入Class DG放大器:音频设计的新选择

    的MAX98395数字输入Class DG放大器,看看它在音频设计究竟有哪些独特之处。 文件下载: MAX98395.pdf 一、产品概述 MAX98395是一款高效的单声道Class - DG扬声器
    的头像 发表于 01-16 14:45 416次阅读

    探索MAX98365:高性能数字Class - D放大器的卓越之选

    探索MAX98365:高性能数字Class - D放大器的卓越之选 在电子设备不断追求小型、低成本和高性能的今天,音频放大器作为其中关键的一环,其性能的优劣对整个设备的音频体验起着至关重要的作用
    的头像 发表于 01-16 14:25 496次阅读

    探秘Bourns FB系列Class T保险丝座:特性、参数与应用指南

    探秘Bourns FB系列Class T保险丝座:特性、参数与应用指南 在电子工程领域,保险丝座作为保障电路安全的关键组件,其性能与质量直接影响着整个系统的稳定性。今天,我们就来深入了解一下
    的头像 发表于 12-23 10:45 630次阅读

    飞凌嵌入式ElfBoard-文件的时间属性

    在前面的struct stat结构体参数基本介绍完毕,还有最后一个属性,是文件的时间属性,时间属性都包括如下内容:结构体字段说明stru
    发表于 12-20 08:43

    半导体分立器件静态参数测试仪系统STD2000X使用价值和选型参考

    半导体分立器件静态参数测试仪系统在半导体研发、生产、质量控制及应用具有重要的使用价值和意义,主要体现在以下几个方面: 1. 技术价值:确保器件性能与可靠性 半导体分立器件静态
    的头像 发表于 12-16 16:22 595次阅读
    半导体分立器件<b class='flag-5'>静态</b><b class='flag-5'>参数</b>测试仪系统STD2000X使用价值和选型参考

    轻量级参数的管理框架(C语言)

    的描述 属性:有多种属性信息,方便后续功能扩展 读/写权限:参数模块无具体作用,可用于UI或者其他方式显示时使用 重置权限:设置默认值后则存在该
    发表于 12-16 06:24

    探秘Class Y2浸渍金属纸EMI抑制电容器SMP253

    探秘Class Y2浸渍金属纸EMI抑制电容器SMP253 在电子工程师的日常设计工作,选择合适的电容器对于抑制电磁干扰(EMI)至关重要。今天,我们就来深入了解一下KEMET的Class
    的头像 发表于 12-15 11:45 594次阅读

    labview怎样通过属性来获取VI控件是否是接线端?

    labview怎样通过属性来获取VI控件是否是接线端。
    发表于 10-17 17:14

    商品类目属性查询接口技术实现详解

    ​   一、接口核心功能 该接口用于查询电商系统商品类目的属性信息,支持: 按类目ID查询属性集合 按属性类型过滤(关键属性$K$、销售
    的头像 发表于 10-11 15:43 654次阅读
    商品类目<b class='flag-5'>属性</b>查询接口技术实现详解

    关于NanoEdge AI用于n-Class的问题求解

    ,但把模型的静态库加到Keil5的工程编译后运行在STM32F407G-DISC1的开发板上仿真测试时,我输入的数据不管怎么变,AI模型输出的结果永远是第1个分类(非unknown),不能正常对数
    发表于 08-11 06:44

    如何正确选购功率半导体器件静态参数测试机?

    主要的功率半导体器件特性分为静态特性、动态特性、开关特性。这些测试中最基本的测试就是静态参数测试。静态参数主要是指本身固有的,与其工作条件无
    的头像 发表于 08-05 16:06 1023次阅读
    如何正确选购功率半导体器件<b class='flag-5'>静态</b><b class='flag-5'>参数</b>测试机?

    动态BGP与静态BGP的区别?

    BGP(边界网关协议,Border Gateway Protocol) 是互联网中用于自治系统(AS)之间路由信息交换的核心协议。在实际部署,BGP 可分为静态 BGP和动态 BGP两种方式,二者
    发表于 06-24 06:57

    详解ADC电路的静态仿真和动态仿真

    ADC电路主要存在静态仿真和动态仿真两类仿真,针对两种不同的仿真,我们存在不同的输入信号和不同的数据采样,因此静态仿真和动态仿真是完全不同的两个概念,所以设置的参数不同。
    的头像 发表于 06-05 10:19 2429次阅读
    详解ADC电路的<b class='flag-5'>静态</b>仿真和动态仿真