Распределенная конвейеризация

Что распределяется, конвейерно обрабатывая?

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

Программное обеспечение HDL Coder™ использует адаптацию Leiserson-Saxe повторно синхронизирующийся алгоритм.

Например, в следующей модели, существует задержка 2 при выводе.

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

Преимущества и затраты на распределенную конвейеризацию

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

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

Требования для распределенной конвейеризации

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

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

Задайте распределенную конвейеризацию

Можно задать распределенную конвейеризацию для a:

Задавать распределенную конвейеризацию с помощью пользовательского интерфейса:

  1. Щелкните правой кнопкой по блоку и выберите HDL Code> HDL Block Properties.

  2. Установите DistributedPipelining на on и нажмите OK.

Включить распределенную конвейеризацию, на командной строке, введите:

hdlset_param('path/to/block', 'DistributedPipelining', 'on')

Отключить распределенную конвейеризацию, на командной строке, введите:

hdlset_param('path/to/block', 'DistributedPipelining', 'off')

Совет

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

Ограничения распределенной конвейеризации

Распределенная оптимизация конвейеризации имеет следующие ограничения:

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

  • Программное обеспечение HDL Coder генерирует конвейерные регистры при выходных параметрах в следующих ситуациях вместо того, чтобы распределить регистры, чтобы уменьшать критический путь:

    • Блок MATLAB function или диаграмма Stateflow содержат матрицу со статически неразрешимым индексом.

    • Диаграмма Stateflow содержит переменную состояния или локальную переменную.

  • HDL Coder распределяет конвейерные регистры вокруг следующих блоков вместо в них:

    • Модель

    • Сумма (реализация Cascade)

    • Продукт (реализация Cascade)

    • MinMax

    • Сверхдискретизировать

    • Субдискретизировать

    • Переход уровня

    • Нулевой порядок содержит

    • Взаимный Sqrt (реализация RecipSqrtNewton)

    • Тригонометрическая функция (приближение CORDIC)

    • Один порт RAM

    • Двухпортовый RAM

    • Простой двухпортовый RAM

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

    • Основная полоса демодулятора M-PSK

    • Основная полоса модулятора M-PSK

    • Основная полоса демодулятора QPSK

    • Основная полоса модулятора QPSK

    • Основная полоса демодулятора BPSK

    • Основная полоса модулятора BPSK

    • Генератор последовательности PN

    • Повторение

    • Счетчик HDL

    • Фильтр LMS

    • Синусоида

    • Декодер Витерби

    • Инициированная подсистема

    • Counter Limited

    • Счетчик, свободного доступа

    • Структурируйте преобразование

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

Чтобы видеть, что распределенный конвейерно обрабатывает информацию в отчете, прежде чем вы сгенерируете код для каждой подсистемы или модели - ссылки, включают отчет Генерации кода. Чтобы включить отчет Генерации кода, в диалоговом окне Configuration Parameters, на панели HDL Code Generation, включают Generate optimization report.

Когда вы генерируете отчет генерации кода в разделе Distributed Pipelining Optimization Report, вы видите эффект распределенной оптимизации конвейеризации. Если распределено конвейеризация неудачна, отчет показывает диагностические сообщения и нарушающие блоки, которые заставили распределенную конвейеризацию перестать работать.

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

Выбранная библиография

Лейсерсон, C.E и Джеймс Б. Сэйкс. “Повторно синхронизируя Синхронную Схему”. Algorithmica. Издание 6, Номер 1, 1991, стр 5-35.

Похожие темы