1.声明为static的变量,只在运行前初始化一次;
声明为automatic的变量,用完后收回内存,重新分配内存。
module loop;
initial begin
for(int i=0;i<3;i++)begin
static int loop1=0; //静态变量定义
for(int j=0;j<3;j++) begin
loop1++;
$display(loop1);
end
end
for(int i=0;i<3;i++)begin
automatic int loop2=0; //动态变量定义
for(int j=0;j<3;j++) begin
loop2++;
$display(loop2);
end
end
end
endmodule
结果:123456789 123123123
2. 定义拿出来后,动态变量只在刚开始分配一次内存
module loop;
initial begin
static int loop1=0; //静态变量定义拿出来
automatic int loop2=0; //动态变量定义拿出来
for(int i=0;i<3;i++)begin
for(int j=0;j<3;j++) begin
loop1++;
$display(loop1);
end
end
for(int i=0;i<3;i++)begin
for(int j=0;j<3;j++) begin
loop2++;
$display(loop2);
end
end
end
endmodule
结果:123456789 123456789