Hello verilog专家,
在下面的verilog代码中,我可以100%将top.test.p
系统地初始化为200吗?
或者我会在变量初始化和初始语句之间进行竞争吗?换句话说,一些模拟器会给我top.test.p == 100
和其他top.test.p == 200
?
由于
module test;
parameter real P = 1e3;
real P=p;
endmodule
module top;
test #(100) test();
initial
begin
// override the variable initialization (race condition????)
test.p = 200;
end
endmodule
答案 0 :(得分:3)
SystemVerilog兼容模拟器必须在任何初始或始终进程开始之前执行变量声明初始化。所以top.test.p应该是200
第6.8节说
将静态变量的初始值设置为变量的一部分 声明(包括静态类成员)应在任何之前发生 初始或始终开始程序(参见6.21和10.5) 具有静态和自动生命周期的变量初始化。)
这种排序在Verilog中未定义。