iverilog/ivtest/ivltests/pr307a.v

80 lines
1.8 KiB
Verilog

// ivl-bugs PR#307
module top;
reg [127:0] in1;
reg [127:0] in2;
wire [128:0] out1;
reg [128:0] out2;
assign out1 = in1 + in2;
task r;
integer errors;
begin
out2 = in1 + in2;
$display("\n %h\n+ %h", in1,in2);
$display("= %h", out1);
$display("= %h", out2);
if (out1 != out2)
begin
$display("MISMATCH");
errors = errors + 1;
end
end
endtask
initial begin
r.errors = 0;
in1 = 128'hffffffffffffffffffffffffffffffff;
in2 = 128'hfffffffffffffffffffffffffffffff7;
r;
in1 = 128'hffffffffffffffffffffffffffffffff;
in2 = 128'h00000000000000000000000000000001;
r;
in1 = 128'h00000000000000000000000000000001;
in2 = 128'hffffffffffffffffffffffffffffffff;
r;
in1 = 128'h00000000000000000000000000000000;
in2 = 128'hffffffffffffffffffffffffffffffff;
r;
in1 = 128'hffffffffffffffffffffffffffffffff;
in2 = 128'hffffffffffffffffffffffffffffffff;
r;
in1 = 128'h00000000000000000000000000000000;
in2 = 128'h00000000000000000000000000000000;
r;
in1 = 128'h80000000000000000000000000000000;
in2 = 128'h80000000000000000000000000000000;
r;
in1 = 128'h08000000000000000000000000000000;
in2 = 128'h08000000000000000000000000000000;
r;
in1 = 128'h00000000000000008000000000000000;
in2 = 128'h00000000000000008000000000000000;
r;
in1 = 128'h55555555555555555555555555555555;
in2 = 128'h55555555555555555555555555555555;
r;
in1 = 128'haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
in2 = 128'haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
r;
if (r.errors)
$display("FAILED: %d errors", r.errors);
else
$display("PASSED");
end
endmodule