iverilog/ivtest/ivltests/pr2913438b.v

45 lines
1014 B
Verilog

module top;
reg [6:0] ltl;
reg signed [6:0] ltl_s;
reg [15:0] big;
reg result, pass;
initial begin
pass = 1'b1;
// An unsigned value should be zero padded.
ltl = 7'd127;
result = test(ltl);
if (result) begin
$display("Failed: unsigned argument was sign extended");
pass = 1'b0;
end
// This should be evaluated in an eight bit context since the
// function argument is eight bits. This will set the eight bit.
result = test(ltl+7'd1);
if (!result) begin
$display("Failed: function width does not determines expression width.");
pass = 1'b0;
end
// A signed value should be sign padded.
ltl_s = -7'd1;
result = test(ltl_s);
if (!result) begin
$display("Failed: signed argument was not sign extended");
pass = 1'b0;
end
if (pass) $display("PASSED");
end
function test ;
input signed [7:0] in;
begin
if (in[7]) test = 1'b1;
else test = 1'b0;
end
endfunction
endmodule