В этом примере показано, как использовать распределённую конвейеризацию для оптимизации проекта для скорости в HDL Coder.
Распределённая конвейеризация является оптимизацией всей подсистемы, поддерживаемой HDL Coder для достижения высокого оборудования тактовой частоты. Путем включения 'Distributed Pipelining' кодер перераспределяет входные конвейерные регистры, выходной конвейерный регистр подсистемы и регистры в подсистеме в соответствующие положения, чтобы минимизировать комбинаторную логику между регистрами и максимизировать тактовую частоту чипа, синтезированного из сгенерированного 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' является параметром уровня подсистемы, различные подсистемы на разных уровнях иерархии могут задавать различные значения ступеней трубопровода и различные настройки 'Distributed Pipelining'. По умолчанию кодер распределяет только регистры указанной подсистемы в этой подсистеме, а не через подсистемы нижнего уровня. Если требуется распределение между иерархиями, пользователи могут задать значение 'Distributed Pipelining' для более низких подсистем на ' on ', затем включить глобальную опцию 'Ierarchical Distributed Pipelining'. Когда локальные и глобальные опции включены, вся подсистема, включая подсистемы нижнего уровня, будет рассматриваться как единая подсистема при распределении регистров.
bdclose all;