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 值使用非阻塞赋值。
我在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 值使用非阻塞赋值。