赞
踩
考虑下面两段代码:
其中只有一处不同,下面的代码片段中,forever @(posedge clk)后面没有分号,当每个clk时钟上升沿到来时,begin ... end语句都会执行。
- initial
- begin
- forever @(posedge clk)
- begin
- wait(a==1 && b==1 && c==1);
- $display("a==1 && b==1 && c==1");
-
- end
- end
考虑下面这段代码,forever @(posedge clk);后面有分号,那么forever @(posedge clk);后面是空语句,begin ... end语句将永远不会执行。
- initial
- begin
- forever @(posedge clk);
- begin
- wait(a==1 && b==1 && c==1);
- $display("a==1 && b==1 && c==1");
-
- end
- end
考虑下面的代码,forever @(posedge clk)后面没有分号,addr<=addr+1;没有在begin ... end中,那么每当clk上升沿到来时,只会执行addr<=addr+1;begin ... end 语句将永远不会执行。
-
- logic [9:0] addr=0;
-
- initial
- begin
- forever @(posedge clk)
- addr<=addr+1;
- begin
- wait(a==1 && b==1 && c==1);
- $display("a==1 && b==1 && c==1");
-
- end
- end
考虑下面的代码,forever @(posedge clk)后面没有分号,每一个时钟上升沿到来时,forever后面的begin ... end语句都会执行。
- logic [9:0] addr=0;
-
- initial
- begin
- forever @(posedge clk)
-
- begin
- addr<=addr+1;
- wait(a==1 && b==1 && c==1);
- $display("a==1 && b==1 && c==1");
-
- end
- end
综上所述,如果希望forever后面的语句执行,第一:forever语句后面不要加分号;第二:forever语句后面执行的语句,用begin ... end语句包含进来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。