У меня есть вызов функции для упрощения преобразования сигнала, который в противном случае повторялся бы по всему исходному коду.
Теперь, в качестве дальнейшей оптимизации, я хочу сделать довольно сложные вызовы функций (с двумя параметрами, которые в основном являютсято же самое) удобочитаемее и легче писать с использованием псевдонима.
Стандарты VHDL после 87 года допускают псевдонимы для объектов, не относящихся к данным, например, вызовов подпрограмм.В поисках решения я узнал, что функции требуют подписи как части объявления псевдонима.Однако я не смог найти документацию, которая помогла мне объявить псевдоним для моей функции, которая работает с Synopsys VCS.
function discard_elem (
signal discard_vector : in std_ulogic_vector(63 downto 0);
signal id : in std_ulogic_vector(5 downto 0))
return std_ulogic is
begin
return discard_vector(to_integer(unsigned(id)));
end discard_elem;
alias discard_current_elem is
discard_elem(discard_vector_i, interface_i.id) [ return std_ulogic ];
VCS сообщает о следующей ошибке, а затем завершается с ошибкой сегментации:
Error-[ANL-ALIAS-BADSIGNAT] Bad signature in alias declaration
^
No subprogram or enumeration literal matches the signature of the alias
declaration DISCARD_ELEM.
Please verify that the signature matches the parameter and result type
profile of exactly one of the subprograms or enumeration literals.
Неверное определение псевдонима или это проблема с инструментом?