Раздел Variable
Необязательный раздел Variable используется для описания и/или генерации переменных, используемых в разделе Logic. Переменные языка AHDL сходны с переменными, используемыми в языках высокого уровня; они используются для определения внутренней логики.
Следующий пример демонстрирует использование раздела Variable:
VARIABLE
a, b, c : NODE;
temp : halfadd;
ts_node : TRI_STATE_NODE;
IF DEVICE_FAMILY == "FLEX8000" GENERATE
8kadder : flex_adder;
d, e : NODE;
ELSE GENERATE
7kadder : pterm_adder;
f, g : NODE;
END GENERATE;
Раздел Variable может включать следующие операторы и конструкции:
¨ Описание объектов.
¨ Описание узлов.
¨ Описание регистров.
¨ Описание конечных автоматов.
¨ Описание псевдоимен конечных автоматов.
Þ Раздел Variable может также содержать операторы If Generate, которые могут быть использованы для генерирования объектов, узлов, регистров, конечных автоматов, и псевдоимен конечных автоматов.
Þ Раздел Variable имеет следующие характеристики:
¨ Раздел начинается с ключевого слова VARIABLE.
¨ Определенные пользователем символические имена переменных отделяются друг от друга запятыми, а от соответствующего им типа символом двоеточия. Допустимыми типами переменных являются: NODE, TRI_STATE_NODE, <primitive>, <megafunction>, <macrofunction> или <state machine declaration>. В примере, показанном выше, внутренними переменными являются a, b и c, имеющие тип NODE; temp является экземпляром макрофункции halfadd; и tsnode является объектом типа TRI_STATE_NODE.
¨ Каждая строка определения переменных заканчивается символом (;).
Þ В файле с расширением .fit для текущего проекта могут иметь место имена, сгенерированные компилятором и имеющие в своем составе знак тильда (~). Если производится обратная аннотация присоединений, осуществленных в файле с расширением .fit, то эти имена появятся в файле установок и конфигурации (.acf).Символ тильды зарезервирован исключительно для имен генерируемых компилятором; использовать их для обозначения выводов, узлов и групп (шин) запрещено.