Verilog 1995确实要求在后面列出端口方向。输出线类型是隐式的,并且可以将 regs 声明为与方向一致。
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 类型之间切换。唯一的要求是,如果您需要三态使用wire 或tri。
module TEST(
input [31:0] A,
input [31:0] B,
output logic [31:0] C,
output logic D
);
我对具有 reg 和 wire 类型的最初要求的理解是为了仿真速度或仿真器设计的简易性。每个模拟增量周期都会评估导线的值,而仅在由敏感度列表触发时评估 reg。