常にゼロ時刻にブロックを実行します。 以下のコードは時間ゼロでは実行されません。そのコードは、時間ゼロで実行されますので、私は最後に、感度のリストを移動し常に時刻ゼロで実行をブロックします。
always @* begin
//functional code
end
、
always begin
//funcitonal code
@*;
end
このコードは、時間ゼロで実行しますが、あったとしても、すべての時間ゼロの後に実行されません。ブロック内で使用される入力の変更。
module AlwaysTimeZeroTest_v();
reg reg_A;
initial begin
$display ("I'm in Initial begin block \tTime=%f, reg_A=%b\n",$stime,reg_A);
#1
reg_A=1'bZ;
#1
reg_A=1'b1;
#1
reg_A=1'b0;
#1
reg_A=1'bZ;
#5 $finish;
end
always @* begin
$display ("I'm in Non-time Zero always block\tTime=%f, reg_A=%b\n",$stime,reg_A);
end
always begin
$display ("I'm in time Zero always block \tTime=%f, reg_A=%b\n",$stime,reg_A);
@*;
end
endmodule
出力:なぜ常に2番目の$仕上げを経由して、完全な
**I'm in Initial begin block Time=0.000000, reg_A=x
I'm in time Zero always block Time=0.000000, reg_A=x
I'm in Non-time Zero always block Time=1.000000, reg_A=z
I'm in Non-time Zero always block Time=2.000000, reg_A=1
I'm in Non-time Zero always block Time=3.000000, reg_A=0
I'm in Non-time Zero always block Time=4.000000, reg_A=z**
シミュレーション(1)一度に9つのNS + 0
は誰が説明することができます例えば、以下のコードと、その出力が表示さコード内のブロックは、時間ゼロの後も全く実行されませんか?
ブロックを実装する方法はありますか?最初のブロックを使用せずに時間ゼロで実行するようにブロックする方法はありますか? (SVのalways_combに似た何か?)
ありがとうございました。 Verilogにalways_combの代替手段はありますか? – sanforyou
それは時間0で1つの提案は必ずセンシティビティリストのすべてがワイヤとして宣言されていることを確認する方法があります実行しないブロックを引き起こしている状況に依存します。 –