System Verilog——局部数据存储

1.自动存储

在System Verilog中,模块(module)和 program块中的子程序缺省情况下任然使用静态存储。如果要使用自动存储,则必须在程序语句中加入automatic关键词。
如:
program automatic test;

endprogram

module automatic test;

endmodule

2.变量的初始化

program initialization;
	task check_bus;
		repeat(5) @(posedge clock);
		if(bus_cmd == 'READ)begin
			//何时对local_addr赋初值?
			logic [7:0] local_addr = addr << 2;//有漏洞
				$display("Local Addr = %h",local_addr);
		end
	endtask
endprogram

logic [7:0] local_addr = addr << 2;
变量local_addr 是静态分配的,所以实际上在仿真的一开始它就有了初值,而不是等到进入begin…end块中才进行初始化。同样的,解决方法是把程序块声明为automatic。或者将声明和初始化拆开:

logic [7:0] local_addr;
local_addr= addr << 2;
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值