Генератор кода вводит регистры при указании определенных реализаций блоков или использовании определенных настроек. Чтобы узнать больше об этих регистрах и о том, как использовать их для оптимизации сроков проектирования, следуйте приведенным ниже инструкциям.
Каждое руководство имеет уровень серьезности, который указывает уровень соответствия требованиям. Дополнительные сведения см. в разделе Рекомендации по моделированию HDL Уровни серьезности.
3.2.1
Информативный
В большинстве случаев генератор кода вводит регистры в регионах, которые работают медленнее тактовой частоты. Чтобы избежать или минимизировать дополнительные задержки, можно запустить эти регистры с быстрой тактовой частотой с помощью конвейерной обработки тактовой частоты. С помощью следующих оптимизаций можно использовать конвейер тактовой частоты:
Трубопровод ввода и вывода
Многоцикловые блочные реализации, такие как сложные математические операции, такие как Sqrt и Revacal.
Сопоставление библиотеки с плавающей запятой
Балансировка задержки
Совместное использование ресурсов и потоковая передача
Кроме того, для проектов с несколькими иерархиями для улучшения возможностей конвейеризации тактовой частоты рекомендуется включить свойство блока HDL FlattenHierarchy в подсистеме верхнего уровня.
Дополнительные сведения о конвейеризации тактовой частоты и блоках, которые служат барьерами для этой оптимизации, см. в разделе Конвейеризация тактовой частоты.
3.2.2
Рекомендуется
Распределенная конвейерная обработка - это оптимизация скорости, которая уменьшает критический путь за счет перемещения существующих задержек в конструкции при сохранении функционального поведения.
Чтобы использовать эту оптимизацию для подсистемы, установите для свойства блока HDL Pipelining значение on.
Для более эффективного использования этой оптимизации в диалоговом окне «Параметры конфигурации» на панели «Создание кода HDL» > «Оптимизация» можно задать эти дополнительные параметры.
ConstrainedOutputPipeline: убедитесь, что общее число вставленных задержек, включая любой введенный и выходной конвейер, больше или равно значению, указанному для ConstrainedOutputPipeline в подсистеме.
Иерархическая распределенная конвейерная обработка (Hierarchical distributed pipelining): выберите этот параметр, если требуется применить распределенную конвейерную оптимизацию в иерархии нескольких подсистем. Убедитесь, что для подсистемы верхнего уровня и каждой подсистемы в иерархии установлено свойство блока HDL Pipelining. on.
Примечание
Если невозможно включить функцию Pipelining в подсистеме верхнего уровня, можно включить функцию FlattenHierarchy, которая позволяет выполнять конвейерную обработку с другими блоками в нижней иерархии модели.
Конвейеризация тактовой частоты: выберите этот параметр, если требуется, чтобы генератор кода вставлял регистры с тактовой частотой вместо скорости передачи данных.
Разрешить конвейеризацию тактовой частоты выходных портов DUT: выберите этот параметр, если требуется, чтобы генератор кода вставлял регистры на тактовой частоте вместо скорости передачи данных на выходных портах DUT.
Сохранить задержки проекта: выберите этот параметр, если не требуется, чтобы генератор кода перемещал задержки, добавленные в проект. Оптимизация перемещает только регистры трубопроводов.
Distributed pipelining priority: Укажите, должен ли приоритет быть Numerical Integrity или Performance. Если вы используете Performanceубедитесь, что результаты моделирования совпадают. В некоторых случаях этот параметр перемещает регистры в блоки, которые имеют начальные значения, например константы, что может повлиять на результаты моделирования.
Подсистема, для которой требуется применить оптимизацию, должна соответствовать следующим требованиям:
Убедитесь, что подсистема, в которой применяется эта оптимизация, не содержит петель обратной связи.
Используйте блоки, поддерживаемые для распределенной конвейерной обработки. Список неподдерживаемых блоков см. в разделе Ограничения распределенной конвейерной обработки. Как обходной путь:
Поместите некоторые из неподдерживаемых блоков, например скалярный продукт, в другую подсистему, в которой не включена распределенная конвейерная обработка.
Измените приоритет распределенной конвейерной обработки на Performance для определенных блоков, например Enabled Subsystem.
Время выборки блоков должно быть дискретным. Если для блоков с параметром «Sample Time» установлено значение Inf, измените их на -1. Сведения о программном определении и изменении времени выборки см. в разделе Изменение параметров блока с помощью find_system и set_param.
Удалите все входные порты в блоках Scope, чтобы избежать генерации бесконечного времени выборки.