Условные операторы UCF или условное включение файла UCF


Существует ли способ / обходной путь для использования операторов в файле UCF условно, или, могут ли файлы UCF быть включены в другие файлы UCF условно?

Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть верхний модуль с набором обобщений, которые условно создают экземпляры или удаляют определенные подмодули из верхнего модуля с помощью операторов generate.
Однако большинство из этих подмодулей имеют временные ограничения, определенные в файле project UCF. Где-то во время map или par процесс сборки прерывается указание на то, что экземпляр, на который ссылается файл UCF, не существует (что правильно, поскольку экземпляр никогда не создавался из-за выбора генераторов в верхнем модуле).

Каков наилучший способ достичь какого-то" условного ограничения", которое может избежать этой проблемы? (рядом с очевидным препроцессором / скриптом, который крутится в моем файле UCF)

PS: я использую средства командной строки Xilinx ISE 14.4 / Vivado 2012.4.

4 3

4 ответа:

Этот вопрос был задан несколько раз:

Http://forums.xilinx.com/t5/Design-Entry/include-and-ifdef-for-ucf-files/td-p/77822

Http://forums.xilinx.com/t5/Design-Entry/Conditional-inclusion-of-ucf-files/td-p/195684

Короткий ответ-нет, к сожалению, невозможно.

Лучше всего создать 2 отдельных UCF-файла и либо создать скрипт, чтобы указать на один или другой, либо вручную заменить его каждый раз, когда вы включаете / выключаете свой универсальный переключатель.

Если вы используете Vivado,то вы должны знать, что файлы UCF больше не поддерживаются в рамках синтеза Vivado. Если вам не нужно использовать XST, то вы больше не ограничены в использовании устаревшего формата файла UCF для ваших ограничений. Vivado использует ограничения XDC, которые являются подмножеством от TCL, что означает, что вы можете написать код с условиями для обработки ваших ограничений любым способом, который вы хотите.

Вы можете взглянуть на UG 903 от Xilinx для получения более подробной информации о том, как использовать ограничения в последней версии их инструментов:

Http://www.xilinx.com/support/documentation/sw_manuals/xilinx2012_2/ug903-vivado-using-constraints.pdf

Другим потенциальным решением было бы использование атрибутов синтеза Xilinx.

Это может быть сделано для ограничения времени сетей, так же, как UCF может.

Разница в том, что атрибуты могут быть встроены в VHDL, рядом с объявлением сигнала. Это хоть и неуклюжим,.

Правильное решение, скорее всего, зависит от того, сколько ограничений у вас есть.

Я поддержал ответ Фархады, но я хотел подчеркнуть, что xdc-файлы являются сценариями TCL, и поэтому они могут включать условные обозначения и циклы for. Намного лучше, чем файлы UCF.

Еще одно преимущество обработки ограничений в Vivado заключается в том, что если она сталкивается с ограничением, которое не соответствует проекту, она выдает критическое предупреждение и продолжает работу.