| // 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 |