首页 > 解决方案 > 带有“初始”块和没有它的简单分配有什么区别?

问题描述

例如,这两种实现有什么区别?

initial声明:

module with_initial();
reg clk,reset,enable,data;

initial begin
  clk=0;
  reset=0;
  enable=0;
  data=0;
end

always @(…)
..
end

endmodule

在这里不使用initial语句:

module without_initial();
reg clk,reset,enable,data;

clk=0;
reset=0;
enable=0;
data=0;

always @(…)
..
end

endmodule

标签: verilogsystem-verilog

解决方案


中的代码without_initial不是合法的语法,它应该为您产生编译错误,就像它对edaplayground上的模拟器一样。

程序分配必须在initialoralways块内。请参阅 IEEE Std 1800-2017,第 10.4 节程序分配

此外,areg可以在块之外用初始值声明initial

module without_initial;

reg clk=0;
reg reset=0;
reg enable=0;
reg data=0;

endmodule

请参阅 IEEE Std 1800-2017,第 6.8 节变量声明


推荐阅读