Verilog
SpyGlass (Synopsys)
Leda (Synopsys)
ALINT (Aldec)
Accent lint (Real Intent)
Varilogの処理を宣言する方法には、alwaysキーワードとinitialキーワードという異なる2つの方法がある。alwaysキーワードは、自由に実行される処理を表す。initialキーワードは、ちょうど1回だけ実行される処理を表す。2つの処理はともに、シミュレーター時刻0に実行が開始され、ともにブロックの終わりまで実行される。alwaysブロックの場合、処理がブロックの最後に到達すると、実行が再度スケジュールされる。よくある間違いは、initialブロックは常にalwaysブロックの前に最初に実行されるというものである。実際には、initialブロックは、1回目の実行時に終了する特殊なalways-ブロックであると考えるとよい。
上記2つは、これら2つのキーワードの典型的な使用例であるが、更に2つの特徴的な使用例がある。最もよく使うのが、信号強度を書いたリスト@(...)なしでalwaysキーワード使用する方法である。alwaysは以下のように使用することもできる。
alwaysキーワードは、C言語のwhile(1) {..}構造と同じように無限ループとして振る舞う。
もう1つの特徴的な使用例は、initialキーワードにforeverキーワードを追加するというものである。
次の例は、上のalwaysの例と同等である。
注意:これらの演算子は優先度の順に並んでいるわけではない。