Аргументы функции: два разных стиля? - PullRequest
0 голосов
/ 02 апреля 2012

Читая некоторый код Verilog, кажется, есть два способа определения аргументов в объявлении функции:

Метод 1:

function factorial;
    input [3:0] operand;
    // More code
endfunction

Метод 2:

function factorial(input [3:0] operand);
    // More code
endfunction

Есть ли разница между этими двумя? Оба метода одинаково переносимы?

Ответы [ 2 ]

1 голос
/ 11 апреля 2012

Начиная со стандарта Verilog 2001, эти два эквивалента. Некоторые старые инструменты не поддерживают Verilog 2001 или не поддерживают по умолчанию. Таким образом, использование метода 1 немного более совместимо.

Однако в общих чертах вам не нужно беспокоиться об этом, поскольку почти все инструменты, которые вы используете в настоящее время, поддерживают Verilog 2001 по умолчанию.

0 голосов
/ 04 апреля 2012

Я считаю, что они эквивалентны.

Из руководства дано определение функции:

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
...