有没有区别
@(posedge Clk);
a<= 1'b1;
和
@(posedge Clk)
a<= 1'b1;
注意 Clk 后面的分号。当我浏览测试平台时,我遇到了类似的代码行。我做了一些简单的实验,在模拟过程中我找不到任何差异。由于分号的存在/不存在,这些行之后的代码的执行顺序是否会发生任何变化?
有没有区别
@(posedge Clk);
a<= 1'b1;
和
@(posedge Clk)
a<= 1'b1;
注意 Clk 后面的分号。当我浏览测试平台时,我遇到了类似的代码行。我做了一些简单的实验,在模拟过程中我找不到任何差异。由于分号的存在/不存在,这些行之后的代码的执行顺序是否会发生任何变化?
任何程序语句的 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。
你是对的 - 没有行为差异。
分号版本是:等待。做这个。非分号版本是:等待然后执行此操作。您有时会在单行中看到这种形式:
@(posedge Clk) a<= 1'b1;