For pure combinational logic, use always @(*) or list all inputs:
module mux4to1 (
input wire [3:0] in,
input wire [1:0] sel,
output reg out // 'reg' because assigned in always
);
// always @(*) = trigger on ANY change to RHS signals
always @(*) begin
case (sel)
2'b00: out = in[0];
2'b01: out = in[1];
2'b10: out = in[2];
2'b11: out = in[3];
endcase
end
endmodule
Key Points for Combinational Logic
- Use
always @(*)– auto-includes all RHS signals - Use blocking assignment (
=) - Assign ALL outputs in ALL branches to avoid latches