Verilog has three port directions:
| Direction | Description | Use Case |
|---|---|---|
input |
Signal enters the module | Clock, data inputs, control signals |
output |
Signal exits the module | Data outputs, status flags |
inout |
Bidirectional signal | Buses, I2C data line |
// ANSI-style (Verilog-2001, recommended)
module alu (
input wire [7:0] a,
input wire [7:0] b,
input wire [1:0] op,
output reg [7:0] result,
output wire zero
);
// Module body
endmodule
// Non-ANSI style (legacy Verilog-1995)
module alu (a, b, op, result, zero);
input [7:0] a;
input [7:0] b;
input [1:0] op;
output [7:0] result;
output zero;
reg [7:0] result;
// Module body
endmodule
Best Practice
Always use ANSI-style port declarations (Verilog-2001). They're cleaner, less error-prone, and universally supported by modern tools.