Распределенная конвейерная обработка или ресинхронизация регистров - это оптимизация скорости, которая перемещает существующие задержки в конструкции для уменьшения критического пути при сохранении функционального поведения.
Программное обеспечение HDL Coder™ использует адаптацию алгоритма ресинхронизации Лейзерсона-Саксена.
Например, в следующей модели на выходе имеется задержка 2.

На следующей диаграмме показана сгенерированная модель после распределенной конвейерной обработки перераспределяет задержку для уменьшения критического пути.

Распределенная конвейерная обработка может уменьшить критический путь проекта, позволяя использовать более высокую тактовую частоту и увеличить пропускную способность.
Однако распределенная конвейерная обработка требует, чтобы конструкция содержала ряд задержек. Если требуется вставить дополнительные задержки в конструкцию, чтобы включить распределенную конвейерную обработку, это увеличивает площадь и начальную задержку конструкции.
Для распределенной конвейерной обработки требуется, чтобы конструкция содержала задержки или регистры, которые могут быть перераспределены. Для вставки большего количества регистров можно использовать pipelining ввода или pipelining вывода.
Если конструкция сначала не соответствует требованиям к времени, попробуйте добавить больше задержек или регистров, чтобы улучшить результаты.
В подсистеме можно указать распределенную конвейерную обработку, а также диаграммы Stateflow ® и функциональные блоки MATLAB. См. раздел Вставка распределенного конвейера для функциональных блоков MATLAB.
Чтобы указать распределенную конвейерную обработку с помощью пользовательского интерфейса:
На вкладке Приложения выберите Кодер HDL. Появится вкладка Код HDL (HDL Code). Выберите подсистему и нажмите Свойства блока HDL. Установите параметр «Pipelining» в положение «On» и нажмите «OK».
Щелкните правой кнопкой мыши подсистему и выберите HDL Code > HDL Block Properties. Установите параметр «Pipelining» в положение «On» и нажмите «OK».
Для включения распределенной конвейерной обработки в командной строке введите:
hdlset_param('path/to/block', 'DistributedPipelining', 'on')
Совет
При вставке регистров конвейера выходные данные первоначально могут находиться в недопустимом состоянии. Во избежание ошибок тестового стенда, возникающих в результате начальных неверных выборок, отключите проверку выходных данных для этих выборок. Дополнительные сведения см. в разделе Игнорирование проверки выходных данных (количество выборок).
Оптимизация распределенных конвейеров имеет следующие ограничения:
Результаты конвейерной обработки не могут быть оптимальными для оборудования, поскольку задержки оператора на целевом оборудовании могут отличаться от расчетных задержек оператора, используемых алгоритмом распределенной конвейерной обработки.
Программное обеспечение кодера HDL генерирует регистры конвейера на выходах в следующих ситуациях вместо распределения регистров для уменьшения критического пути:
Диаграмма потока состояний, содержащая состояние, локальную переменную или матрицу со статически неразрешимым индексом.
Кодер HDL распределяет регистры трубопроводов вокруг следующих блоков, а не внутри них:
Модель
Сумма (Cascade реализация)
Продукт (Cascade реализация)
MinMax
Сверхдискретизировать
Субдискретизировать
Переход ставки
Удержание нулевого заказа
Ответный Sqrt (RecipSqrtNewton реализация)
Тригонометрическая функция (CORDIC Аппроксимация)
Однопортовая ОЗУ
Двухпортовая ОЗУ
Простая двухпортовая оперативная память
При включении распределенной конвейерной обработки для подсистемы, содержащей эти блоки, кодер HDL генерирует сообщение во время генерации кода. Чтобы исправить это сообщение, поместите эти блоки в одну или несколько подсистем исходной подсистемы и отключите иерархическую распределенную конвейерную обработку. Кодер HDL распределяет регистры трубопроводов по вложенным подсистемам.
Базовая полоса демодулятора M-PSK
M-PSK модулятор основной полосы частот
Базовая полоса демодулятора QPSK
Основная полоса частот модулятора QPSK
Базовая полоса демодулятора BPSK
Базовая полоса модулятора BPSK
Генератор последовательности PN
Повториться
Счетчик HDL
Фильтр LMS
Синусоидальная волна
Декодер Витерби
Срабатывающая подсистема
Счетчик ограничен
Счетчик свободно работает
Преобразование кадров
Для просмотра информации о распределенной конвейерной обработке в отчете перед созданием кода для каждой подсистемы или ссылки на модель включите отчет оптимизации. Чтобы включить этот отчет, на вкладке Код HDL (HDL Code) выберите Параметры отчета (Report Options), а затем выберите Создать отчет по оптимизации (Generate optimization report).
При создании отчета об оптимизации в разделе Распределенная конвейерная обработка отображается эффект оптимизации распределенной конвейерной обработки. Если распределенная конвейерная обработка не выполнена, в отчете отображаются диагностические сообщения и блоки-нарушители, вызвавшие сбой распределенной конвейерной обработки.
Если распределенная конвейерная обработка выполнена успешно, в отчете отображаются сравнительные списки регистров до и после применения распределенного конвейерного преобразования.
Лейзерсон, К.Е. и Джеймс Б. Саксен. «Ресинхронизация синхронных схем». Алгоритмика. Том 6, номер 1, 1991, стр. 5-35.