Использование условно-генерируемой логики
Вы можете создать логику условно с помощью оператора If Generate, если, например, хотите реализовать различное поведение в зависимости от значения арифметического выражения. Оператор If Generate приводит список последовательностей операторов поведения, которые активизируются после положительной оценки одного или более арифметических выражений.
Файл condlog1.tdf, приведенный ниже, использует оператор If Generate для реализации различного поведения выхода output_b на основании текущего семейства устройств.
PARAMETERS (DEVICE_FAMILY);
SUBDESIGN condlog1
(
input_a : INPUT;
output_b : OUTPUT;
)
BEGIN
IF DEVICE_FAMILY == "FLEX8K" GENERATE
output_b = input_a;
ELSE GENERATE
output_b = LCELL(input_a);
END GENERATE;
END;
Оператор If Generate
особенно полезен с оператором For Generate, который управляет специальными случаями различно.
MAX+PLUS II включает предопределенный параметр DEVICE_FAMILY, как показано в примере выше и предварительно вычисляемую функцию USED, которую можно использовать в арифметических выражениях. Параметр DEVICE_FAMILY можно использовать для проверки текущего семейства устройств для проекта, заданного с помощью команды Device (меню Assign). Функцию USED можно использовать для проверки того, использовался ли дополнительный порт в текущем экземпляре.
Вы можете найти многочисленные примеры операторов If Generate в TDF файлах, которые реализуют LPM функции в MAX+PLUS II. Эти файлы размещаются в подкаталоге mega_lpm каталога max2lib.