blob: 4809dba428b1f5474fa0cc76e0f26178f4d79982 [file] [log] [blame]
// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: 2022 Tamas Hubai
`default_nettype none
module u21_tb ();
integer i;
reg [3:0] func;
wire [1:0] subs = i;
reg [3:0] wiring;
wire a, b;
assign {a, b} = subs;
wire dut_out, mux_out;
wire assert = dut_out == mux_out;
wire O = 1'b0;
wire I = 1'b1;
u21 dut (
.in(wiring),
.out(dut_out)
);
mux2 mux (
.in(func),
.sel(subs),
.out(mux_out)
);
initial begin
for (i=0; i<4; i=i+1) begin
#1 func = {O, O, O, O}; wiring = {O, O, O, O}; #1 $display(assert);
#1 func = {O, O, O, I}; wiring = {a, b, a, O}; #1 $display(assert);
#1 func = {O, O, I, O}; wiring = {b, a, O, O}; #1 $display(assert);
#1 func = {O, O, I, I}; wiring = {b, O, O, O}; #1 $display(assert);
#1 func = {O, I, O, O}; wiring = {a, b, O, O}; #1 $display(assert);
#1 func = {O, I, O, I}; wiring = {a, O, O, O}; #1 $display(assert);
#1 func = {O, I, I, O}; wiring = {b, O, a, O}; #1 $display(assert);
#1 func = {O, I, I, I}; wiring = {b, a, a, O}; #1 $display(assert);
#1 func = {I, O, O, O}; wiring = {b, a, a, I}; #1 $display(assert);
#1 func = {I, O, O, I}; wiring = {I, b, a, O}; #1 $display(assert);
#1 func = {I, O, I, O}; wiring = {I, a, O, O}; #1 $display(assert);
#1 func = {I, O, I, I}; wiring = {a, b, I, O}; #1 $display(assert);
#1 func = {I, I, O, O}; wiring = {I, b, O, O}; #1 $display(assert);
#1 func = {I, I, O, I}; wiring = {b, a, I, O}; #1 $display(assert);
#1 func = {I, I, I, O}; wiring = {a, b, a, I}; #1 $display(assert);
#1 func = {I, I, I, I}; wiring = {I, O, O, O}; #1 $display(assert);
end
end
endmodule