У меня есть пакет VHDL, который определяет функцию (forward declaration) и константу. Значение константы вычисляется с помощью этой функции, тело которой находится в корпусе пакета.Почему я не могу вызвать функцию в объявлении константы, которая определена в том же пакете в ModelSim?
На данный момент ModelSim/QuestaSim - единственный инструмент, который не любит этот код. Он нуждается в 2 пакетах, поэтому тело анализировалось до объявления константы.
package test is
function mytest(param : boolean) return boolean;
constant value : boolean := mytest(TRUE);
end package;
package body test is
function mytest(param : boolean) return boolean is
begin
return not param;
end function;
end package body;
Разве это не допускается в VHDL и другие инструменты используют смягченные правила синтаксического анализа, или в том, что в вопросе ModelSim?
Таким образом, ценность по-прежнему доступна для всего мира другими объектами или пакетами 'use mylib.test.value;'? – Paebbels
Да, после разработки 'package' и' package body' константа 'value' может использоваться как любая другая константа из пакета. –