Распределённая конвейеризация является оптимизацией скорости, которая уменьшает критический путь путем перемещения существующих задержек в проекте с сохранением функционального поведения. Это руководство иллюстрирует, как можно эффективно использовать оптимизацию для векторных входов.
Каждое руководство имеет уровень серьезности, который указывает на уровень податливостей. Для получения дополнительной информации см. HDL-руководства по моделированию уровней серьезности.
3.2.3
Информативный
Задавая определенные настройки, можно применить распределенную оптимизацию конвейеризации для вставки регистров трубопровода для этих блоков, когда вы вводите векторы, которые больше 3
в размере. Для получения дополнительной информации см. раздел «Генерация HDL-кода» на каждой блочной странице.
Сумматоры: Add, Subtract и Sum of Elements
Множители: Gain, Product и Product of Elements
В HDL Block Properties для блоков установите Architecture значение:
Tree
или Linear
для сумматоров, умножителей и блоков MinMax. Вставка регистра распределенного трубопровода не поддерживает Cascade
архитектура.
Linear
для Dot Product. Вставка регистра распределенного трубопровода не поддерживает Tree
архитектура для этого блока.
Укажите количество этапов трубопровода с помощью свойств InputPipeline и OutputPipeline в диалоговом окне «Свойства HDL-блока» или вручную вставив Delay блоки.
Включите DistributedPipelining на Subsystem, для которой вы хотите применить эту оптимизацию.
Откройте отчет Распределенный трубопровод (Distributed Pipelining).
Откройте и исследуйте сгенерированную модель.
В этом примере показано, как можно распределить регистры трубопровода на выходе блока 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')