2013-04-21 1 views
1

У меня есть функция f(), определенная в verilog модуле M1. Я хотел бы повторно использовать эту же функцию в другом модуле M2, так или иначе, без переопределения функции в M2?Повторное использование функции в Verilog

--- M1.v --- 
    module M1(); 
    function f; 
     //do stuff 
    endfunction 
    endmodule 

    --- M2.v ----- 
    module M2(); 
    // Use f() here 
    endmodule 

ответ

3

Вы можете поместить функцию в отдельный файл и использовать `включают директиву компилятора, чтобы включить функцию внутри обоих модулей:

--- M1.v --- 
    module M1(); 
    `include "functions.v" 
    endmodule 

    --- M2.v ----- 
    module M2(); 
    `include "functions.v" 
    // Use f() here 
    endmodule 
+0

работал. Только мне пришлось переименовать функциональный файл в _functions.vh_, иначе он не будет компилироваться. Спасибо :-) – iab

+0

Добро пожаловать. Как правило, имя включенного файла не имеет значения. Возможно, ваш симулятор обеспечивает ограничение количества имен. – toolic