verilog 中的函数

Function in verilog

我在ModelSim中使用下面的代码作为一个函数,它引发了'Global declarations are illegal in Verilog 2001 syntax'的错误。谁能帮我解决这个问题?

function [24:0] shiftright(input [24:0] in);
integer i;
begin
if (in)
for (i=0; i<25; i=i+1) begin
    if (i == 24) shiftright[i]<= 0;
    else shiftright[i] <= in[i+1];
end
end
endfunction

您在 module 声明之外编写了函数。所有声明都必须在 Verilog 中的模块内。 SystemVerilog 确实允许模块外的变量、函数和许多其他东西。

此外,您不能对函数的 return 值使用非阻塞赋值。