Aはシミュレーションで2になり、最後に定義された値が有効になります。同じブロックにない場合、シミュレーションで最後に定義されたシミュレータスケジューラに応じて競合状態が発生する可能性があります。
私はこのテクニックがかなり多く使用されているのを見てきましたが、合成後に予期しない結果は見られませんでした。
Verilog IEEE 1364-2005セクション11.4.1端末から
begin-endブロック内のステートメントは、そのbegin-endブロックに表示される順序で実行されます。特定のbegin-endブロック内のステートメントの実行は、モデル内の他のプロセスに対して停止することができます。ただし、いずれの場合も、begin-endブロック内のステートメントは、ソース内に表示される他の順序で実行されます。
これはセクション4.6 DetermissionsとしてSystemVerilog-IEEE1800 2012にもあります
これの使用法は、まばらに出力を定義するFSMかもしれません。
always @(posedge clk) begin
out_one <= 1'b0;
out_two <= 1'b0;
out_thr <= 1'b0;
case (state)
2'd1 : out_one <= 1'b1;
2'd2 : out_two <= 1'b1;
2'd3 : out_thr <= 1'b1;
endcase
end