有@(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。