iverilog/ivtest/ivltests/vams_abs3.v

60 lines
1.1 KiB
Verilog

// Check that VAMS `abs()` functions works if its argument is a function call
module main;
function reg signed [7:0] fv(input reg signed [7:0] x);
fv = x;
endfunction
function real fr(input real x);
fr = x;
endfunction
reg signed [7:0] a;
wire signed [7:0] vala = abs(fv(a));
reg real b;
wire real valb = abs(fr(b));
initial begin
a = 0;
b = 0;
#1 if (vala !== 0) begin
$display("FAILED -- a=%b, vala=%b", a, vala);
$finish;
end
#1 if (valb != 0) begin
$display("FAILED -- b=%g valb=%g", b, valb);
$finish;
end
a = 1;
b = 1;
#1 if (vala !== 1) begin
$display("FAILED -- a=%b, vala=%b", a, vala);
$finish;
end
#1 if (valb != 1) begin
$display("FAILED -- b=%g valb=%g", b, valb);
$finish;
end
a = -1;
b = -1;
#1 if (vala !== 1) begin
$display("FAILED -- a=%b, vala=%b", a, vala);
$finish;
end
#1 if (valb != 1) begin
$display("FAILED -- b=%g valb=%g", b, valb);
$finish;
end
$display("PASSED");
end
endmodule // main