Автоматическая итеративная оптимизация позволяет вам оптимизировать тактовую частоту, не задавая отдельные опции оптимизации, такие как входная или выходная конвейеризация, распределенная конвейеризация или разворачивание цикла.
Существует два способа использования hdlcoder.optimizeDesign
для оптимизации тактовой частоты:
Лучшая тактовая частота: Вы задаете максимальное количество итераций, которые вы хотите выполнить HDL- Coder™, и кодер итератирует, чтобы минимизировать критический путь в вашем проекте.
Целевая тактовая частота: Вы задаете целевую частоту синхроимпульса для вашего проекта и максимальное количество итераций, которые вы хотите выполнить HDL Coder. Кодер итализируется, пока не достигнет целевой тактовой частоты или не достигнет максимального количества итераций.
HDL Coder может также определить, что ваша целевая тактовая частота не достижима, потому что целевой тактовый период меньше, чем задержка самой большой атомарной комбинационной группы логики в вашем проекте.
Вы задаете цель тактовой частоты и максимальное количество итераций. HDL Coder выполняет следующие шаги для каждой итерации:
Анализирует логику в вашем проекте.
Генерирует код.
Использует инструмент синтеза для анализа сгенерированного кода и получает данные анализа временных параметров после карты.
Назад аннотирует проект с данными анализа временных параметров.
Вставляет регистры трубопроводов, чтобы разорвать критический путь.
Задержки сальдо.
Сохраняет данные итерации в новой папке.
Когда HDL Coder достиг цели тактовой частоты или достиг максимального количества итераций, он сохраняет сгенерированный код и данные итерации в новой папке и генерирует отчет, описывающий конечный критический путь.
Когда HDL Coder выходит из цикла оптимизации, он сохраняет результаты финальной итерации в папке, hdlsrc/
.your_model_name
/ hdlexpl/Final- timestamp
Папка окончательной итерации содержит:
Сгенерированный HDL-код в hdlsrc/
your_model_name
Файл данных, cpGuidance.mat
, который можно использовать с исходной моделью для регенерации кода без повторения итерационной оптимизации.
Отчет об оптимизации, summary.html
.
HDL Coder также сохраняет
HDL Coder генерирует отчет для окончательной итерации оптимизации и сохраняет его в папке окончательной итерации, hdlsrc/
.your_model_name
/ hdlexpl/Final- timestamp
Итоговый отчет об оптимизации, summary.html
, содержит следующее:
Сводный раздел, с:
Окончательная задержка критического пути.
Задержка критического пути и истекшее время для каждой итерации.
Раздел диагностики с:
Причина остановки на финальной итерации.
Моделируйте или блокируйте настройки, которые могут снизить точность анализа критического пути.
Если у вашей модели есть эти настройки, удалите их, где это возможно, и перезапустите hdlcoder.optimizeDesign
. Некоторые оптимизации, такие как распределённая конвейеризация и ограниченный выходной конвейер, изменяют размещение регистров конвейера после того, как кодер анализирует критический путь.
Описание критического пути, которое показывает сигналы и компоненты как в исходной модели, так и в сгенерированной модели, которые являются частью критического пути.
Вы можете увидеть сообщение, в котором говорится, что сигнал или компонент на критическом пути не могут быть прослежены к исходной модели. HDL Coder, возможно, не сможет сопоставить свое внутреннее представление вашего проекта с исходным дизайном. Каждая итерация оптимизации изменяет внутреннее представление, поэтому окончательное представление может иметь структуру, отличную от исходного проекта.
Ваш инструмент синтеза должен быть Xilinx® ISE или Xilinx Vivado®, и ваше целевое устройство должно быть Xilinx FPGA.
В текущем релизе автоматическая итерационная оптимизация не поддерживает Altera® оборудование.
Выполнение автоматической итерационной оптимизации может занять много времени, в зависимости от сложности вашего проекта. Чтобы помочь уменьшить временные затраты, hdlcoder.optimizeDesign
может регенерировать код из предыдущего запуска или возобновить из прерывистого запуска.
Автоматическая итерационная оптимизация доступна только в командной строке.
HDL Coder использует время выполнения, которую инструмент синтеза генерирует перед выполнением размещения и маршрута. Пост-map времени выполнения менее точен, чем время выполнения инструмент синтеза генерирует после места и маршрута, но быстрее получить.