verilog中的初始化优先级

时间:2015-11-02 23:26:37

标签: verilog system-verilog

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

1 个答案:

答案 0 :(得分:3)

SystemVerilog兼容模拟器必须在任何初始或始终进程开始之前执行变量声明初始化。所以top.test.p应该是200

第6.8节说

  

将静态变量的初始值设置为变量的一部分   声明(包括静态类成员)应在任何之前发生   初始或始终开始程序(参见6.21和10.5)   具有静态和自动生命周期的变量初始化。)

这种排序在Verilog中未定义。