阅读一些Verilog代码,似乎有两种方法在函数声明中定义参数:
方法1:
function factorial;
input [3:0] operand;
// More code
endfunction
方法2:
function factorial(input [3:0] operand);
// More code
endfunction
这两者有什么区别吗?两种方法都同样可移植吗?
答案 0 :(得分:1)
从Verilog 2001标准开始,这两个是等价的。 一些旧工具不支持Verilog 2001或默认不支持。 因此,使用方法1可以更加兼容。
但是,一般而言,您无需担心它,因为您现在使用的几乎所有工具都默认支持Verilog 2001.
答案 1 :(得分:0)
我相信它们是等价的。
从手册中定义一个函数:
function [automatic] [signed] [RangeOrType] functionName [(FunctionPorts)];
Declarations ...
begin
...code...
end
endfunction
FunctioPort
input [reg] [signed] [Range] names
input [Type] names
Declaration
input [reg] [signed] [Range] names
input [Type] names
Variable
Parameter
Event