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

В этом примере показано, как использовать распределенную конвейеризацию, чтобы оптимизировать проект для скорости в HDL Coder.

Введение

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

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

bdclose all;
load_system('sfir_fixed');
open_system('sfir_fixed/symmetric_fir');

Установка Выходной настройки канала связи

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

В этом примере подсистема вывела конвейерный регистр, установлен в 5.

Модель генерации кода явным образом отражает вставленный регистр в выходных портах подсистемы (подсвеченный в оранжевом).

hdlset_param('sfir_fixed/symmetric_fir', 'OutputPipeline', 5);
makehdl('sfir_fixed/symmetric_fir');
open_system('gm_sfir_fixed/symmetric_fir');
set_param('gm_sfir_fixed', 'SimulationCommand', 'update');
### Generating HDL for 'sfir_fixed/symmetric_fir'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('sfir_fixed', { 'HDL Code Generation' } )">sfir_fixed</a> for HDL code generation parameters.
### Running HDL checks on the model 'sfir_fixed'.
### Begin compilation of the model 'sfir_fixed'...
### Applying HDL optimizations on the model 'sfir_fixed'...
### The code generation and optimization options you have chosen have introduced additional pipeline delays.
### The delay balancing feature has automatically inserted matching delays for compensation.
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 5 cycles.
### Output port 2: 5 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'sfir_fixed'.
### Working on sfir_fixed/symmetric_fir as hdlsrc/sfir_fixed/symmetric_fir.vhd.
### Generating package file hdlsrc/sfir_fixed/symmetric_fir_pkg.vhd.
### Code Generation for 'sfir_fixed' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples1/tp8fdc0684/hdlsrc/sfir_fixed/symmetric_fir_report.html
### HDL check for 'sfir_fixed' complete with 0 errors, 0 warnings, and 0 messages.
### HDL code generation complete.

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

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

Модель генерации кода явным образом отражает распределенные регистры в подсистеме (подсвеченный в оранжевом).

hdlset_param('sfir_fixed/symmetric_fir', 'DistributedPipelining', 'on');
makehdl('sfir_fixed/symmetric_fir');
open_system('gm_sfir_fixed/symmetric_fir');
set_param('gm_sfir_fixed', 'SimulationCommand', 'update');
### Generating HDL for 'sfir_fixed/symmetric_fir'.
### Using the config set for model <a href="matlab:configset.showParameterGroup('sfir_fixed', { 'HDL Code Generation' } )">sfir_fixed</a> for HDL code generation parameters.
### Running HDL checks on the model 'sfir_fixed'.
### Begin compilation of the model 'sfir_fixed'...
### Applying HDL optimizations on the model 'sfir_fixed'...
### The code generation and optimization options you have chosen have introduced additional pipeline delays.
### The delay balancing feature has automatically inserted matching delays for compensation.
### The DUT requires an initial pipeline setup latency. Each output port experiences these additional delays.
### Output port 1: 5 cycles.
### Output port 2: 5 cycles.
### Begin model generation.
### Model generation complete.
### Begin VHDL Code Generation for 'sfir_fixed'.
### Working on sfir_fixed/symmetric_fir as hdlsrc/sfir_fixed/symmetric_fir.vhd.
### Generating package file hdlsrc/sfir_fixed/symmetric_fir_pkg.vhd.
### Code Generation for 'sfir_fixed' completed.
### Creating HDL Code Generation Check Report file:///tmp/BR2021ad_1584584_202060/publish_examples1/tp8fdc0684/hdlsrc/sfir_fixed/symmetric_fir_report.html
### HDL check for 'sfir_fixed' complete with 0 errors, 0 warnings, and 0 messages.
### HDL code generation complete.

Возможности для распределенной конвейеризации через иерархии подсистемы

Начиная с 'Распределенная Конвейеризация' является параметром уровня подсистемы, различные подсистемы на разных уровнях иерархии могут задать различные значения настройки канала связи и различные настройки 'Distributed Pipelining'. По умолчанию кодер распределяет только регистры заданной подсистемы в этой подсистеме, не через более низкие подсистемы уровня. Если перекрестное распределение иерархии желаемо, пользователи могут установить 'Распределенную Конвейеризацию' для более низких подсистем к 'On', то включить глобальную опцию 'Иерархическая Распределенная Конвейеризация'. Когда локальные и глобальные опции будут идти, целая подсистема, включая более низкие подсистемы уровня, будет рассмотрена как одну подсистему, когда регистры распределяются.

bdclose all;