tb.v — locked
`timescale 1ns/1ps
module tb;
reg a, b, c, d; reg [1:0] sel; wire y;
integer i, errors=0; reg want;
challenge dut (.a(a), .b(b), .c(c), .d(d), .sel(sel), .y(y));
initial begin
$dumpfile("wave.vcd"); $dumpvars(0, tb);
for (i = 0; i < 64; i = i + 1) begin
{a,b,c,d,sel} = i[5:0]; #5;
case (sel)
2'd0: want = a; 2'd1: want = b;
2'd2: want = c; default: want = d;
endcase
if (y !== want) begin
errors = errors + 1;
$display("FAIL: sel=%0d abcd=%b%b%b%b -> y=%b", sel, a,b,c,d, y);
end
end
if (errors == 0) $display("TB PASS");
else $display("TB FAIL (%0d errors)", errors);
$finish;
end
endmodule