class-new()函数, static or automatic(systemverilog)

在systemverilog中支持class,class与module有些相似,此class与c++中的class类似。

class只有经过了new()函数才真正开辟了内存,否则只是一个空的、没有实际存在。

Sonet_static sta1;//此时只是一个空的sta1

sta1 = new();//真正开辟了内存空间,并进行了初始化,若在class中未实现new()函数,则会有系统默认new(),进行开辟内存工作。

static and automatic: static 变量为静态的,在整个程序执行过程中都存在,并且无论被实例多少次,在内存中只存在一份,每次实例都是指向这一个地址,共享一个变量;automatic是每次实例均产生一个新的内存,互相不共享,是单独、不同的,default默认是automatic。

static:

`timescale 1 ns / 1 ps 

program sim_top();
class data_packet;
static integer Data = 32'hff;// Static variable declaration
function new();
Data--;
endfunction
endclass

initial
begin
automatic data_packet packet_one = new;
automatic data_packet packet_two = new;
$display("%d--Value of static data packet before decrement", packet_one.Data);
$display("\n%d--Value
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值