Вставьте распределенные регистры трубопроводов для блоков с входами типа векторных данных

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

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

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

3.2.3

Серьезность

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

Описание

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

Задавая определенные настройки, можно применить распределенную оптимизацию конвейеризации для вставки регистров трубопровода для этих блоков, когда вы вводите векторы, которые больше 3 в размере. Для получения дополнительной информации см. раздел «Генерация HDL-кода» на каждой блочной странице.

Настройки и требования к блокам

  1. В HDL Block Properties для блоков установите Architecture значение:

    • Tree или Linear для сумматоров, умножителей и блоков MinMax. Вставка регистра распределенного трубопровода не поддерживает Cascade архитектура.

    • Linear для Dot Product. Вставка регистра распределенного трубопровода не поддерживает Tree архитектура для этого блока.

  2. Укажите количество этапов трубопровода с помощью свойств InputPipeline и OutputPipeline в диалоговом окне «Свойства HDL-блока» или вручную вставив Delay блоки.

  3. Включите DistributedPipelining на Subsystem, для которой вы хотите применить эту оптимизацию.

  4. Откройте отчет Распределенный трубопровод (Distributed Pipelining).

  5. Откройте и исследуйте сгенерированную модель.

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

В этом примере показано, как можно распределить регистры трубопровода на выходе блока Sum of Elements, который принимает векторные входы.

open_system('hdlcoder_distributed_pipelining_soe')
set_param('hdlcoder_distributed_pipelining_soe','SimulationCommand','Update')

Если вы перемещаетесь по модели, вы видите три этапа трубопровода для блока Сумма элементов (Sum of Elements).

open_system('hdlcoder_distributed_pipelining_soe/DUT/Add')

Вы видите блок Delay из трех добавленных на выходе блока Sum of Elements. Для распределения задержек можно использовать распределённую конвейеризацию.

1. Установите значение архитектуры на Tree для блока «Сумма элементов».

hdlset_param('hdlcoder_distributed_pipelining_soe/DUT/Add/Add', ...
                    'Architecture','Tree')

2. Включите DistributedPipelining в Подсистеме Добавления

hdlset_param('hdlcoder_distributed_pipelining_soe/DUT/Add', ...
                    'DistributedPipelining','On')

3. Сгенерируйте HDL-код для Подсистемы DUT.

makehdl('hdlcoder_distributed_pipelining_soe/DUT')

4. Откройте Отчет Генерации кода, чтобы увидеть эффект оптимизации распределённой конвейеризации.

5. Чтобы увидеть эффект преобразования и распределение регистров трубопроводов, откройте сгенерированную модель и перейдите к Add Subsystem.

load_system('gm_hdlcoder_distributed_pipelining_soe')
set_param('gm_hdlcoder_distributed_pipelining_soe','SimulationCommand','Update')
open_system('gm_hdlcoder_distributed_pipelining_soe/DUT/Add')

См. также

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

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

Подробнее о