61 lines
1.4 KiB
Coq
61 lines
1.4 KiB
Coq
|
|
// Test system function calls in constant functions
|
||
|
|
module constfunc6();
|
||
|
|
|
||
|
|
function signed [7:0] abs_i(input signed [7:0] a);
|
||
|
|
abs_i = $abs(a);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
function real abs_r(input real a);
|
||
|
|
abs_r = $abs(a);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
function [7:0] min_i(input [7:0] a, input [7:0] b);
|
||
|
|
min_i = $min(a, b);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
function [7:0] max_i(input [7:0] a, input [7:0] b);
|
||
|
|
max_i = $max(a, b);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
function real min_r(input real a, input real b);
|
||
|
|
min_r = $min(a, b);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
function real max_r(input real a, input real b);
|
||
|
|
max_r = $max(a, b);
|
||
|
|
endfunction
|
||
|
|
|
||
|
|
localparam [7:0] absIResult = abs_i(-25);
|
||
|
|
|
||
|
|
localparam [7:0] minIResult = min_i(25, 30);
|
||
|
|
localparam [7:0] maxIResult = max_i(25, 30);
|
||
|
|
|
||
|
|
localparam real absRResult = abs_r(-25.0);
|
||
|
|
|
||
|
|
localparam real minRResult = min_r(25.0, 30.0);
|
||
|
|
localparam real maxRResult = max_r(25.0, 30.0);
|
||
|
|
|
||
|
|
reg failed;
|
||
|
|
|
||
|
|
initial begin
|
||
|
|
failed = 0;
|
||
|
|
$display("%0d", absIResult);
|
||
|
|
$display("%0g", absRResult);
|
||
|
|
$display("%0d", minIResult);
|
||
|
|
$display("%0g", minRResult);
|
||
|
|
$display("%0d", maxIResult);
|
||
|
|
$display("%0g", maxRResult);
|
||
|
|
if ( absIResult !== 8'd25) failed = 1;
|
||
|
|
if ( absRResult != 25.0) failed = 1;
|
||
|
|
if ( minIResult !== 8'd25) failed = 1;
|
||
|
|
if ( minRResult != 25.0) failed = 1;
|
||
|
|
if ( maxIResult !== 8'd30) failed = 1;
|
||
|
|
if ( maxRResult != 30.0) failed = 1;
|
||
|
|
if (failed)
|
||
|
|
$display("FAILED");
|
||
|
|
else
|
||
|
|
$display("PASSED");
|
||
|
|
end
|
||
|
|
|
||
|
|
endmodule
|