SystemVerilog では、次の 2 種類のタイミング制御がサポートされます。
- 遅延制御: 文とそれが実行されるまでの時間を指定します。これを合成に使用する利点はないので、Vivado 合成では、代入するロジックは作成されますが、タイム文は無視されます。
- イベント制御:
always@(posedge clk)
など、指定したイベントが発生したときに代入が実行されるようにします。これは Verilog の規格ですが、SystemVerilog では機能が追加されています。
論理 or
演算子を使用すると、任意の数のイベントを指定でき、どのイベントでも文の実行をトリガーできます。これには、センシティビティ リストでイベントを or
またはカンマで区切ります。たとえば、次の 2 つの文は同じです。
always@(a or b or c)
always@(a,b,c)
SystemVerilog では、event_expression @*
もサポートされるので、センシティビティ リストの問題によるシミュレーションでの不一致を回避できます。
次に例を示します。
Logic always@* begin
シミュレーションの Verilog フォーマットの詳細は、 『Vivado Design Suite ユーザー ガイド: ロジック シミュレーション』 (UG900) を参照してください。