Как правило, синтез занимает меньше времени, чем размещение и маршрутизация, но с точки зрения стиля кода мы также можем найти некоторые подсказки, позволяющие сократить время синтеза. Как показано в приведенном ниже коде, функции левой и правой частей одинаковы. Разница в том, что оператор генерации используется слева, а модуль Always вложен в оператор генерации. на самом деле необходим с правой стороны, и цикл for всегда используется напрямую (Примечание: на самом деле цикл for здесь не нужен, просто чтобы проиллюстрировать влияние цикла for на время компиляции). Использование ООС-синтеза только для левого модуля занимает 2 минуты, а для правого — 1 минуту; Поэтому нам нужно быть осторожными при использовании циклов for.
Vivado также поддерживает многопоточность для дальнейшего сокращения времени компиляции, которое необходимо установить с помощью следующего сценария Tcl. На этапе синтеза максимальное количество потоков, которое может поддерживать Vivado, равно 4. На этапе размещения и маршрутизации максимальное количество потоков, которое может поддерживаться, равно 8 (значение по умолчанию для систем Windows — 2, а значение по умолчанию для систем Linux — 8). Фактически, проверка DRC, статический анализ времени и физическая оптимизация также поддерживают многопоточность с максимальным количеством потоков 8. Мы можем просмотреть количество потоков, используемых в данный момент, в файле журнала.
set_param general.maxThreads 4
В окне Vivado Design Run мы можем просмотреть время, затраченное на весь синтез и реализацию проекта, как показано на рисунке ниже. Время, затраченное на реализацию каждого подэтапа, необходимо просмотреть в файле журнала. Просто найдите ключевое слово «Окончание», как показано на рисунке ниже. Вы можете видеть, что opt_design занимает 3 минуты, Place_design — 1 час 45 минут, phys_opt_design — 20 минут, а Route_design — 3 часа 27 минут.
Vivado также предоставляет стратегии отчетности, как показано на изображении ниже. Создание отчетов само по себе также требует времени, поэтому вы можете выбрать стратегию отчетности в зависимости от потребностей дизайна и удалить ненужные отчеты, чтобы сэкономить время. В то же время определенную стратегию отчетности можно дополнительно редактировать, добавляя нужные отчеты или удаляя ненужные отчеты. Это можно сделать с помощью «Добавить отчет» или «Удалить отчет/Отключить отчет» в окне «Отчет».
Обычно маршрутизация является самой длинной частью, поэтому Vivado предоставляет опцию -ultrathreads для Route_design. Цель состоит в том, чтобы маршрутизатор работал быстрее, но за счет согласованности результатов.
Со стратегической точки зрения, если нужно просто оценить использование ресурсов, стратегия реализации может выбрать Flow_Quick. Если запас времени относительно велик, вы также можете выбрать Flow_RuntimeOptimized. Эта стратегия сокращает время компиляции за счет производительности.