Verilog 1995では、ポートの方向を後にリストする必要がありました。出力ワイヤタイプは暗黙的であり、regは方向に沿って宣言できます。
module TEST(A,B,C,D);
input [31:0] A;
input [31:0] B;
output [31:0] C;
output D;
reg D;
次のように書くことができます:
module TEST(A,B,C,D);
input [31:0] A;
input [31:0] B;
output [31:0] C;
output reg D; //Only declared twice
Verilog 2001以降、追加の定義は不要になり、インラインで宣言できます(ANSIスタイル)。
module TEST(
input [31:0] A,
input [31:0] B,
output [31:0] C,
output reg D // Declared Once
);
SystemVerilog (2009)から、ロジックタイプがあり、regタイプとwireタイプを切り替える必要がなくなりました。唯一の要件は、トライステートが必要な場合は、ワイヤーまたはトライを使用することです。
module TEST(
input [31:0] A,
input [31:0] B,
output logic [31:0] C,
output logic D
);
regとwireタイプを持つための元々の要件についての私の理解は、シミュレーション速度またはシミュレーター設計の容易さでした。ワイヤの値はシミュレーションのデルタサイクルごとに評価されますが、regは感度リストによってトリガーされた場合にのみ評価されます。