iverilog/ivtest/ivltests/if_part_no_else.v

63 lines
1.1 KiB
Verilog

module test
(output reg [1:0] foo,
input wire in0, en0,
input wire in1, en1
/* */);
localparam foo_default = 2'b00;
always @*
begin
foo = foo_default;
if (en0) foo[0] = in0;
if (en1) foo[1] = in1;
end
endmodule // test
module main;
wire [1:0] foo;
reg in0, en0;
reg in1, en1;
test dut (.foo(foo), .in0(in0), .in1(in1), .en0(en0), .en1(en1));
initial begin
in0 = 1;
in1 = 1;
en0 = 0;
en1 = 0;
#1 if (foo !== 2'b00) begin
$display("FAILED -- foo=%b, in=%b%b, en=%b%b", foo, in1, in0, en1, en0);
$finish;
end
en0 = 1;
#1 if (foo !== 2'b01) begin
$display("FAILED -- foo=%b, in=%b%b, en=%b%b", foo, in1, in0, en1, en0);
$finish;
end
en0 = 0;
en1 = 1;
#1 if (foo !== 2'b10) begin
$display("FAILED -- foo=%b, in=%b%b, en=%b%b", foo, in1, in0, en1, en0);
$finish;
end
en0 = 1;
en1 = 1;
#1 if (foo !== 2'b11) begin
$display("FAILED -- foo=%b, in=%b%b, en=%b%b", foo, in1, in0, en1, en0);
$finish;
end
$display("PASSED");
end
endmodule // main