RISC-V_Verilog/tb/tb_mux4_1.v

54 lines
1.5 KiB
Verilog

`timescale 1ns / 1ps
`include "tb_tools.vh"
module tb_mux4_1 ();
reg [1:0] sel;
reg [31:0] in_1;
reg [31:0] in_2;
reg [31:0] in_3;
reg [31:0] in_4;
wire [31:0] out;
mux4_1 mux (
.in_1(in_1),
.in_2(in_2),
.in_3(in_3),
.in_4(in_4),
.sel(sel),
.out(out)
);
initial begin
in_1 = 1'b0;
in_2 = 1'b0;
in_3 = 1'b0;
in_4 = 1'b0;
sel = 2'b00;
`assert("mux in_1: 0, in_2: 0, in_3: 0, in_4: 0, sel: 0", out, 0)
in_1 = 1'b1;
`assert("mux in_1: 1, in_2: 0, in_3: 0, in_4: 0, sel: 0", out, 1)
sel = 2'b01;
`assert("mux in_1: 1, in_2: 0, in_3: 0, in_4: 0, sel: 1", out, 0)
in_2 = 1'b1;
`assert("mux in_1: 1, in_2: 1, in_3: 0, in_4: 0, sel: 1", out, 1)
sel = 2'b10;
`assert("mux in_1: 1, in_2: 0, in_3: 0, in_4: 0, sel: 2", out, 0)
in_3 = 1'b1;
`assert("mux in_1: 1, in_2: 1, in_3: 1, in_4: 0, sel: 2", out, 1)
sel = 2'b11;
`assert("mux in_1: 1, in_2: 0, in_3: 1, in_4: 0, sel: 3", out, 0)
in_4 = 1'b1;
`assert("mux in_1: 1, in_2: 1, in_3: 1, in_4: 1, sel: 3", out, 1)
in_1 = 1'b0;
`assert("mux in_1: 0, in_2: 1, in_3: 1, in_4: 1, sel: 1", out, 1)
in_2 = 1'b0;
`assert("mux in_1: 0, in_2: 0, in_3: 1, in_4: 1, sel: 1", out, 1)
sel = 2'b00;
`assert("mux in_1: 0, in_2: 0, in_3: 1, in_4: 1, sel: 0", out, 0)
`end_message
end
endmodule : tb_mux4_1