Условные операторы UCF или условное включение файла UCF
Существует ли способ / обходной путь для использования операторов в файле UCF условно, или, могут ли файлы UCF быть включены в другие файлы UCF условно?
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть верхний модуль с набором обобщений, которые условно создают экземпляры или удаляют определенные подмодули из верхнего модуля с помощью операторов generate.
Однако большинство из этих подмодулей имеют временные ограничения, определенные в файле project UCF.
Где-то во время map или par процесс сборки прерывается указание на то, что экземпляр, на который ссылается файл UCF, не существует (что правильно, поскольку экземпляр никогда не создавался из-за выбора генераторов в верхнем модуле).
Каков наилучший способ достичь какого-то" условного ограничения", которое может избежать этой проблемы? (рядом с очевидным препроцессором / скриптом, который крутится в моем файле UCF)
PS: я использую средства командной строки Xilinx ISE 14.4 / Vivado 2012.4.
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 для получения более подробной информации о том, как использовать ограничения в последней версии их инструментов:
Другим потенциальным решением было бы использование атрибутов синтеза Xilinx.
Это может быть сделано для ограничения времени сетей, так же, как UCF может.
Разница в том, что атрибуты могут быть встроены в VHDL, рядом с объявлением сигнала. Это хоть и неуклюжим,.
Правильное решение, скорее всего, зависит от того, сколько ограничений у вас есть.
Я поддержал ответ Фархады, но я хотел подчеркнуть, что xdc-файлы являются сценариями TCL, и поэтому они могут включать условные обозначения и циклы for. Намного лучше, чем файлы UCF.
Еще одно преимущество обработки ограничений в Vivado заключается в том, что если она сталкивается с ограничением, которое не соответствует проекту, она выдает критическое предупреждение и продолжает работу.