一、知识点
-
所有的initial语句内的语句构成了一个initial块。
-
initial块从仿真0时刻开始执行,在整个仿真过程中只执行一次。
-
如果一个模块中包括了若干个initial块,则这些initial块从仿真0时刻开始并发执行,且每个块的执行是各自独立的。
-
如果在块内包含了多条行为语句,那么需要将这些语句组成一组,一般式使用关键字
begin
和end
将他们组合在一个块语句;如果块内只有一条语句,则不必使用begin
和end
。
initial语句的格式如下:
initial
begin
语句1;
......
语句n;
end
二、举例
下面通过一个简单的例子来感受一下initial语句的执行方式:
module initial_test
reg x, y, a, b, m;
initial
x = 1'b0;
initial
begin
#10 a = 1'b1;
#25 b = 1'b0;
end
initial
begin
#15 c = 1'b0;
#25 d = 1'b1;
end
initial
#60 $finish;
endmodule
上述程序各个时间点的执行内容如下:
时间点 执行内容
0 x = 1'b0;
10 a = 1'b1;
15 c = 1'b0;
35 b = 1'b0;
40 d = 1'b1;
60 $finish;