iverilog/ivtest/ivltests/pr2276163.v

39 lines
944 B
Verilog

// Adapted from test case submitted by Geoff Blackman
module pr2276163();
function automatic integer f1;
input integer in;
f1 = in + 1;
endfunction
function integer f2;
input integer in;
f2 = in * 2;
endfunction
integer ret;
initial begin
ret = f1 ( f1 (1) );
if (ret !== 3) begin
$display("FAILED: expected 3, got %0d", ret);
$finish;
end
ret = f1 ( f2 (2) );
if (ret !== 5) begin
$display("FAILED: expected 5, got %0d", ret);
$finish;
end
ret = f2 ( f1 (3) );
if (ret !== 8) begin
$display("FAILED: expected 8, got %0d", ret);
$finish;
end
ret = f2 ( f2 (4) );
if (ret !== 16) begin
$display("FAILED: expected 16, got %0d", ret);
$finish;
end
$display("PASSED");
end
endmodule