その意味は何ですか?
- いつも @ *
そのステートメントを使用した後に起こりうる副作用はありますか?
always
これは、ブロックが依存するすべてのワイヤを一覧表示するためのショートカットにすぎません。それらのワイヤーは「感度リスト」です。これを使用する利点の1つは、ワイヤが「物理的に」相互に接続されるため、合成されたコードが感度リストに何を入れるか(posedge
と以外)を気にする可能性が低いことです。negedge
シミュレーターは、リストに依存して、ブロックを実行させるイベントを選択する場合があります。ブロックを変更してリストの更新を忘れると、シミュレーションが実際の合成動作から逸脱する可能性があります。
@ベンジャクソンは正解しました。2番目の部分の答えは、起こりうる副作用はないということです。これは、組み合わせロジックの推奨プラクティスだと思います。
SystemVerilogでは、always@*の代わりにalways_combegin...endを使用することをお勧めします。
always @ *の大きな欠点は、組み合わせロジックの一部に定数が含まれている場合、常に@ *が時間0でトリガーされない可能性があるため、トリガーするために信号の変化を確認する必要があることです。always_combは、時間0で少なくとも1回トリガーすることを保証します。
always_combのもう1つの利点は、インライン関数呼び出しです。関数を呼び出し、関数の本体が引数として渡されていないシグナルを参照している場合、常に@*はそのシグナルの影響を受けません。