iverilog/ivtest/ivltests/muxtest.v

93 lines
2.0 KiB
Verilog

module test ;
wire a;
reg sel,in0, in1;
reg error;
assign a = sel ? in1 : in0 ;
initial
begin
error = 0;
#1;
sel = 0;
in0 = 0;
in1 = 0;
#1;
if(a !== 0)
begin
$display("FAILED - (1) Mux error sel=0, in0=in0=0 yet out != 0");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
in0 = 1;
#1;
if(a !== 1)
begin
$display("FAILED - (2) Mux error sel=0, in0=1,in1=0 yet out != 1");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
sel = 1;
#1;
if(a !== 0)
begin
$display("FAILED - (3) Mux error sel=1, in0=1,in1=0 yet out != 0");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
in1 = 1;
#1;
if(a !== 1)
begin
$display("FAILED - (5) Mux error sel=1, in0=1,in1=1 yet out != 1");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
in0 = 0;
#1;
if(a !== 1)
begin
$display("FAILED - (6) Mux error sel=1, in0=0,in1=1 yet out != 1");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
in1 = 0;
sel = 1'bx;
#1;
if(a !== 0)
begin
$display("FAILED - (8) Mux error sel=X, in0=0,in1=0 yet out != 0");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
#1;
in0 = 1;
in1 = 1;
sel = 1'bx;
#1;
if(a !== 1)
begin
$display("FAILED - (9) Mux error sel=X, in0=1,in1=1 yet out != 1");
$display("sel=%b,in0=%b,in1=%b,out=%b",
sel,in0,in1,a);
error = 1;
end
if(error === 0)
$display("PASSED");
end
endmodule