iverilog/ivtest/ivltests/pr3284821.v

21 lines
486 B
Verilog

// Test that expression width calculation correctly treats right operand
// of shift as unsigned regardless of its actual type.
module test;
reg pass;
reg [8*20:1] str;
reg signed [3:0] N;
initial begin
pass = 1'b1;
N = -1;
$sformat(str, "%0d", 1 << N);
if (str[8*5:1] !== "32768" || str[8*20:8*5+1] !== 0) begin
$display("FAILED test, expected \"32768\", got \"%0s\"", str);
pass = 1'b0;
end
if (pass) $display("PASSED");
end
endmodule