В этом примере показано, как использовать распределённую конвейеризацию для оптимизации проекта для скорости в 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;