reg和integer可以相乘,不过integer默认有符号,并且相乘之前不要忘了初始化
reg名不可同函数名,函数返回值无法被初始化,不过可以在函数内部初始化
function [47:0] factorial;
input [15:0] a2;
begin
error = 1'b0;
c = 1'b0;
factorial = 48'h0000_0000_0000;//函数内部初始化,相乘之前初始化
factorial[15:0] = a2;
for(i = 2;i < a2;i = i + 32'b1)
begin
{c,factorial} = factorial * i;
if(c == 1'b1) error = 1'b1;
end
if(error == 1'b1)
factorial = 48'hffff_ffff_ffff;
end
endfunction