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