initial语句
initial 语句从仿真0时刻开始,在整个仿真过程中只执行一次。如果一个模块包含不同的initial块,那么他们从0时刻开始并发执行,且执行是相互独立的。
由于其只执行一次,所以一般被用于初始化,信号监视,生成仿真波形等。(initial语句内部是顺序执行的,例如:
initial begin
#10 a = 5;
#10 b = 4;
end
结果为10:a = 5;
20: b = 4;
)
alway语句
always语句也是从仿真0时刻开始顺序执行,且执行完最后一条语句时,又回过头来执行第一条语句,循环直至仿真结束。通常用来对数字电路中一组反复执行的活动进行建模,比如时钟信号发生器。给出一种时钟发生器方式:
module clock_gen(output reg clock);
initial clock = 1'b0;
always #10 clock = ~clock;
initial #1000 $finish;
endmodule