Рассмотрим следующий пример verilog, разрешено ли это и можно ли его синтезировать?
function [7:0] func1; input [7:0] a; input [7:0] b; begin func1 = func2(a) + b; end endfunction function [7:0] func2; input [7:0] a; begin func2 = a + a; end endfunction
Да и да.
Функция - это просто способ добавления иерархии в выражение. Итак, ваш пример - это просто еще один способ написания
some_variable = a + a + b;
, который можно синтезировать, как и ваши функции.