間に違いはありますか
@(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;
あり、ステートメントです。
例がフォーク/ジョイン内にある場合、前者は2つのステートメントであるため、動作に違いがあります。後者は 1 つのステートメントです。
fork
@(posedge Clk); a<=1'b1;
join
この場合、2 つのステートメントが並行して開始さa
れ、posedge が割り当てられるのを待ちません。
あなたは正しいです - 行動の違いはありません。
セミコロン バージョンは次のとおりです。これを行う。非セミコロン バージョンは次のとおりです。この形式がワンライナーで使用されることがあります。
@(posedge Clk) a<= 1'b1;