在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