46 lines
850 B
Coq
46 lines
850 B
Coq
|
|
module top;
|
||
|
|
reg passed = 1'b1;
|
||
|
|
|
||
|
|
reg signed [15:0] a, b;
|
||
|
|
|
||
|
|
/* Currently the result can only be as big as a native long! */
|
||
|
|
wire signed [31:0] r = a ** b;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
|
||
|
|
a = 5;
|
||
|
|
b = 2;
|
||
|
|
#1
|
||
|
|
if (r != 25) begin
|
||
|
|
$display("Failed: 5 ** 2 gave %d, expected 25", r);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
a = -5;
|
||
|
|
b = 3;
|
||
|
|
#1
|
||
|
|
if (r != -125) begin
|
||
|
|
$display("Failed: -5 ** 3 gave %d, expected -125", r);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
a = 2;
|
||
|
|
b = 30;
|
||
|
|
#1
|
||
|
|
if (r != 1_073_741_824) begin
|
||
|
|
$display("Failed: 2 ** 30 gave %d, expected 1,073,741,824", r);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
a = -2;
|
||
|
|
b = 31;
|
||
|
|
#1
|
||
|
|
if (r != -2_147_483_648) begin
|
||
|
|
$display("Failed: -2 ** 31 gave %d, expected -2,147,483,648", r);
|
||
|
|
passed = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (passed) $display("PASSED");
|
||
|
|
end
|
||
|
|
endmodule
|