108 lines
3.3 KiB
Coq
108 lines
3.3 KiB
Coq
|
|
module test;
|
||
|
|
reg pass;
|
||
|
|
reg [8*40:1] str;
|
||
|
|
integer s;
|
||
|
|
reg [31:0] su;
|
||
|
|
integer res;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
pass = 1'b1;
|
||
|
|
s = 2000;
|
||
|
|
su = 2000;
|
||
|
|
|
||
|
|
res = s + (1 << 3) - 1;
|
||
|
|
if (res !== 2007) begin
|
||
|
|
$display("FAILED first term << (s), expected 2007, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
res = su + (1 << 3) - 1;
|
||
|
|
if (res !== 2007) begin
|
||
|
|
$display("FAILED first term << (su), expected 2007, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
res = s + (16 >> 1) - 1;
|
||
|
|
if (res !== 2007) begin
|
||
|
|
$display("FAILED first term >> (s), expected 2007, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
res = su + (16 >> 1) - 1;
|
||
|
|
if (res !== 2007) begin
|
||
|
|
$display("FAILED first term >> (su), expected 2007, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
res = (s + (1 << 3) - 1) * 16000;
|
||
|
|
if (res !== 32112000) begin
|
||
|
|
$display("FAILED second term << (s), expected 32112000, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
res = (su + (1 << 3) - 1) * 16000;
|
||
|
|
if (res !== 32112000) begin
|
||
|
|
$display("FAILED second term << (su), expected 32112000, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
res = (s + (16 >> 1) - 1) * 16000;
|
||
|
|
if (res !== 32112000) begin
|
||
|
|
$display("FAILED second term >> (s), expected 32112000, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
res = (su + (16 >> 1) - 1) * 16000;
|
||
|
|
if (res !== 32112000) begin
|
||
|
|
$display("FAILED second term >> (su), expected 32112000, got %d", res);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
$sformat(str, "%0d", s + (1 << 3) - 1);
|
||
|
|
if (str[8*4:1] !== "2007" || str[8*40:8*4+1] !== 0) begin
|
||
|
|
$display("FAILED first string << (s), expected \"2007\", got %s", str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
$sformat(str, "%0d", su + (1 << 3) - 1);
|
||
|
|
if (str[8*4:1] !== "2007" || str[8*40:8*4+1] !== 0) begin
|
||
|
|
$display("FAILED first string << (su), expected \"2007\", got %s", str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
$sformat(str, "%0d", s + (16 >> 1) - 1);
|
||
|
|
if (str[8*4:1] !== "2007" || str[8*40:8*4+1] !== 0) begin
|
||
|
|
$display("FAILED first string >> (s), expected \"2007\", got %s", str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
$sformat(str, "%0d", su + (16 >> 1) - 1);
|
||
|
|
if (str[8*4:1] !== "2007" || str[8*40:8*4+1] !== 0) begin
|
||
|
|
$display("FAILED first string >> (su), expected \"2007\", got %s", str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
$sformat(str, "%0d", (s + (1 << 3) - 1) * 16000);
|
||
|
|
if (str[8*8:1] !== "32112000" || str[8*40:8*8+1] !== 0) begin
|
||
|
|
$display("FAILED second string << (s), expected \"32112000\", got %s",
|
||
|
|
str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
$sformat(str, "%0d", (su + (1 << 3) - 1) * 16000);
|
||
|
|
if (str[8*8:1] !== "32112000" || str[8*40:8*8+1] !== 0) begin
|
||
|
|
$display("FAILED second string << (su), expected \"32112000\", got %s",
|
||
|
|
str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
$sformat(str, "%0d", (s + (16 >> 1) - 1) * 16000);
|
||
|
|
if (str[8*8:1] !== "32112000" || str[8*40:8*8+1] !== 0) begin
|
||
|
|
$display("FAILED second string >> (s), expected \"32112000\", got %s",
|
||
|
|
str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
$sformat(str, "%0d", (su + (16 >> 1) -1) * 16000);
|
||
|
|
if (str[8*8:1] !== "32112000" || str[8*40:8*8+1] !== 0) begin
|
||
|
|
$display("FAILED second string >> (su), expected \"32112000\", got %s",
|
||
|
|
str);
|
||
|
|
pass = 1'b0;
|
||
|
|
end
|
||
|
|
|
||
|
|
if (pass) $display("PASSED");
|
||
|
|
end
|
||
|
|
endmodule
|