blob: 57380cd81bdb36438d6e6422f8fed821e0481e50 [file] [log] [blame]
// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: 2022 Tamas Hubai
`default_nettype none
module u21_ref_tb ();
integer i;
reg clk;
reg [11:0] func;
wire [1:0] pin = i;
reg [11:0] wiring;
wire [2:0] wtest;
wire [3:0] fcmp = {func[9], func[6], func[3], func[0]};
wire [7:0] fres = {func[11], func[10], func[8], func[7], func[5], func[4], func[2], func[1]};
wire assert = (wiring[3*i+:3] == wtest) && (fres == 8'b0);
wire [2:0] O = 3'b000;
wire [2:0] I = 3'b001;
wire [2:0] a = 3'b010;
wire [2:0] b = 3'b011;
u21_ref dut (
.clk(clk),
.func(fcmp),
.pin(pin),
.wiring(wtest)
);
always #1 clk ^= 1;
initial begin
clk <= 0;
for (i=0; i<4; i=i+1) begin
#2 func <= {O, O, O, O}; wiring <= {O, O, O, O}; #4 $display(assert);
#2 func <= {O, O, O, I}; wiring <= {a, b, a, O}; #4 $display(assert);
#2 func <= {O, O, I, O}; wiring <= {b, a, O, O}; #4 $display(assert);
#2 func <= {O, O, I, I}; wiring <= {b, O, O, O}; #4 $display(assert);
#2 func <= {O, I, O, O}; wiring <= {a, b, O, O}; #4 $display(assert);
#2 func <= {O, I, O, I}; wiring <= {a, O, O, O}; #4 $display(assert);
#2 func <= {O, I, I, O}; wiring <= {b, O, a, O}; #4 $display(assert);
#2 func <= {O, I, I, I}; wiring <= {b, a, a, O}; #4 $display(assert);
#2 func <= {I, O, O, O}; wiring <= {b, a, a, I}; #4 $display(assert);
#2 func <= {I, O, O, I}; wiring <= {I, b, a, O}; #4 $display(assert);
#2 func <= {I, O, I, O}; wiring <= {I, a, O, O}; #4 $display(assert);
#2 func <= {I, O, I, I}; wiring <= {a, b, I, O}; #4 $display(assert);
#2 func <= {I, I, O, O}; wiring <= {I, b, O, O}; #4 $display(assert);
#2 func <= {I, I, O, I}; wiring <= {b, a, I, O}; #4 $display(assert);
#2 func <= {I, I, I, O}; wiring <= {a, b, a, I}; #4 $display(assert);
#2 func <= {I, I, I, I}; wiring <= {I, O, O, O}; #4 $display(assert);
end
$finish;
end
endmodule