Functions return a single value and execute in zero simulation time:
Function Example
module math_ops (
input wire [7:0] a, b,
output wire [7:0] max_val,
output wire [3:0] popcount
);
// Function to find maximum
function [7:0] max;
input [7:0] x, y;
begin
max = (x > y) ? x : y;
end
endfunction
// Function to count set bits
function [3:0] count_ones;
input [7:0] data;
integer i;
begin
count_ones = 0;
for (i = 0; i < 8; i = i + 1)
count_ones = count_ones + data[i];
end
endfunction
// Use functions in continuous assignment
assign max_val = max(a, b);
assign popcount = count_ones(a);
endmodule