Инструкции по

Конвейеризации распределенной Конвейеризации и тактовой частотой

Генератор кода представляет регистры, когда вы задаете определенные реализации блоков или используете определенные настройки. Вы можете следовать этим рекомендациям, чтобы узнать больше об этих регистрах и о том, как вы можете использовать их для оптимизации сроков вашего проекта.

Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.

Инструкции по конвейеризации с тактовой частотой

Идентификатор руководства

3.2.1

Серьезность

Информативный

Описание

В большинстве случаев генератор кода вводит регистры в областях, которые работают медленнее, чем тактовая частота. Чтобы избежать или минимизировать дополнительную задержку, можно запустить эти регистры с быстрой тактовой частотой с помощью конвейеризации с тактовой частотой. Вы можете использовать конвейеризацию с тактовой частотой с этими оптимизациями:

  • Входная и выходная конвейеризация

  • Многоциклические реализации блоков, такие как сложные математические операции, такие как Sqrt и Reciprocal.

  • Отображение библиотек с плавающей точкой

  • Балансировка задержки

  • Совместное использование ресурсов и потоковая передача

В сложение, для проектов с несколькими иерархиями, для улучшения возможностей конвейеризации по тактовой частоте, рекомендуется, чтобы свойство HDL- блока FlattenHierarchy включено в Подсистеме верхнего уровня.

Чтобы узнать больше о конвейеризации с тактовой частотой и блоках, которые выступают в качестве барьеров для этой оптимизации, см. Раздел «Конвейеризация с тактовой частотой».

Рекомендуемые параметры распределённой конвейеризации

Идентификатор руководства

3.2.2

Серьезность

Рекомендуется

Описание

Распределённая конвейеризация является оптимизацией скорости, которая уменьшает критический путь путем перемещения существующих задержек в проекте с сохранением функционального поведения.

Чтобы использовать эту оптимизацию для Subsystem, установите значение свойства DistributedPipelining HDL-блока on.

Чтобы более эффективно использовать эту оптимизацию, в диалоговом окне Параметров конфигурации, на панели HDL Code Generation > Optimization, можно задать эти дополнительные параметры.

  • ConstrainedOutputPipeline: Убедитесь, что общее количество вставленных задержек, включая любое размещение и выход конвейеризации, которые вы задаете, больше или равно значению, которое вы задаете для ConstrainedOutputPipeline на Subsystem.

  • Иерархическое распределенное конвейерирование: Выберите эту опцию, если необходимо применить распределенную оптимизацию конвейеризации для нескольких иерархий подсистем. Убедитесь, что для Subsystem верхнего уровня и каждой подсистемы в иерархии задано DistributedPipelining свойство HDL-блока on.

    Примечание

    Если вы не можете включить DistributedPipelining на Subsystem верхнего уровня, можно включить FlattenHierarchy, что включает конвейеризацию с другими блоками в более низкой иерархии модели.

  • Тактовая частота конвейеризации: Выберите эту опцию, если вы хотите, чтобы генератор кода вставлял регистры с тактовой частотой вместо скорости передачи данных.

  • Разрешить конвейеризацию по тактовой частоте выходных портов DUT: Выберите эту опцию, если вы хотите, чтобы генератор кода вставлял регистры с тактовой частотой вместо скорости передачи данных в выходных портах DUT.

  • Сохраните задержки проекта: Выберите эту опцию, если вы не хотите, чтобы генератор кода перемещал задержки, добавленные к проекту. Оптимизация только перемещает регистры трубопровода.

  • Распределенный приоритет конвейеризации: Укажите, хотите ли вы, чтобы приоритет был Numerical Integrity или Performance. Если вы используете Performance, убедитесь, что результаты симуляции совпадают. В некоторых случаях эта настройка перемещает регистры в блоки, которые имеют начальные значения, такие как константы, которые могут повлиять на результаты симуляции.

Subsystem, для которого вы хотите применить оптимизацию, должны соответствовать следующим требованиям:

  • Убедитесь, что Subsystem, к которой вы применяете эту оптимизацию, не содержит циклов обратной связи.

  • Используйте блоки, поддерживаемые для распределённой конвейеризации. Список неподдерживаемых блоков см. в разделе Ограничения распределённой конвейеризации. В качестве обходного пути:

    • Поместите некоторые неподдерживаемые блоки, такие как Dot Product, в другую Subsystem, в которой не включена распределённая конвейеризация.

    • Измените Distributed pipelining priority на Performance для некоторых блоков, таких как Enabled Subsystem.

  • Sample Time блоков должны быть дискретными. Если у вас есть блоки, Sample Time установлено на Inf, измените их на -1. Для программной идентификации и изменения шага расчета смотрите Изменение параметров блоков при помощи find_system и set_param.

  • Удалите все входные порты в блоках Scope, чтобы избежать генерации бесконечного шага расчета.

См. также

Параметры конфигурации Simulink

Похожие примеры

Подробнее о