有@(posedge Clk)之间的区别; a <= 1'b1;和@(posedge Clk)a <= 1'b1;
@(posedge Clk);
a<= 1'b1;
和
@(posedge Clk)
a<= 1'b1;
注Clk时分号后有什么区别。当我浏览测试平台时,我遇到了类似的代码行。我做了一些简单的实验,在模拟过程中我找不到任何差异。由于分号的存在/不存在,这些行后面的代码的执行顺序是否会以任何方式改变?
有@(posedge Clk)之间的区别; a <= 1'b1;和@(posedge Clk)a <= 1'b1;
@(posedge Clk);
a<= 1'b1;
和
@(posedge Clk)
a<= 1'b1;
注Clk时分号后有什么区别。当我浏览测试平台时,我遇到了类似的代码行。我做了一些简单的实验,在模拟过程中我找不到任何差异。由于分号的存在/不存在,这些行后面的代码的执行顺序是否会以任何方式改变?
你是对的 - 没有行为差异。
分号版本是:等待。做这个。 非分号版本是:等待然后执行此操作。有时你会看到单行用这种形式:
@(posedge Clk) a<= 1'b1;
任何程序语句中的BNF语法基本上是
statement_item :=
{procedural_timing_control} statement;
这意味着你可以有0个或更多的时间控制在任何前声明。在你的例子@(posedge Clk)
是一个时间控制和a<= 1'b1;
是声明。
如果你的例子是在一个fork/join中,会有行为上的差异,因为前者是两个语句;后者是一种说法。
fork
@(posedge Clk); a<1'b1;
join
在这种情况下,2条语句开始并行 - a
不会等待被分配posedge。