2012-04-02 4 views
0

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

Метод 1:

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

Метод 2:

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

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

ответ

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 
1

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

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

Смежные вопросы