ЛПВП Coder™ выполняет определенные методы оптимизации, которые улучшают качество генерируемого кода ЛПВП. При использовании типов данных с плавающей запятой в Native Floating Point режим и генерация кода из модели, во время компиляции, HDL Coder ищет подмножество блоков, соответствующих определенному шаблону. Когда генератор кода распознает шаблон, он автоматически выполняет определенные методы оптимизации, чтобы заменить блоки в подмножестве другими, более простыми блоками.
Методы оптимизации:
Удаление избыточных вычислений времени выполнения
Упростите дизайн
Повышение качества и эффективности генерируемого кода ЛПВП
Сокращение задержек и занимаемой площади
Улучшение синхронизации проектирования на целевом оборудовании
Кодер HDL удаляет избыточные операции в конструкции, заранее оценивая постоянные подчиненные выражения. Этот метод оптимизации определяет блоки Simulink ® в модели, которые имеют постоянные значения на всех входных портах, а затем заменяет блоки постоянными блоками. Генератор кода распространяет входные константы внутри блоков для вычисления результирующего значения константы.
For example, c = 3 * 5 becomes c = 15.
Эта оптимизация работает с любым блоком Simulink, который поддерживает генерацию кода HDL. Например:
Открытие модели hdlcoder_constant_simplification. Дважды щелкните значок Trigonometric Functions Подсистема.
open_system('hdlcoder_constant_simplification') open_system('hdlcoder_constant_simplification/Trigonometric Functions') set_param('hdlcoder_constant_simplification', 'SimulationCommand', 'update');

Создание кода HDL для hdlcoder_constant_simplification введите эту команду.
makehdl('hdlcoder_constant_simplification')
Откройте созданную модель и дважды щелкните значок Trigonometric Functions подсистема.

ЛПВП Coder™ распознал шаблон моделирования и заменил постоянные тригонометрические операции одинарной точности константами. Эта оптимизация приводит к значительному сокращению площади и улучшению синхронизации при развертывании кода на целевой платформе.
Эта оптимизация автоматически заменяет более медленные операции более быстрыми эквивалентами.
For example, r1 = r2 / 2 becomes r1 = r2 >> 1.
Примеры этого метода оптимизации включают замену блока изделия или блока деления блоком усиления. Если один из входов в блок произведения или блок деления является константой и мощностью два, генератор кода заменяет этот блок блоком усиления. Генератор кода распространяет значение константы внутри блока произведения или блока деления для вычисления параметра усиления. Эта оптимизация работает с отдельными типами данных в Native Floating Point режим.
Например:
Открытие модели hdlcoder_slow_operation_replacement. Дважды щелкните подсистему DUT.
open_system('hdlcoder_slow_operation_replacement') open_system('hdlcoder_slow_operation_replacement/DUT') set_param('hdlcoder_slow_operation_replacement', 'SimulationCommand', 'update');

Для генерации кода HDL для подсистемы DUT введите следующую команду:
makehdl('hdlcoder_slow_operation_replacement/DUT')
Откройте созданную модель и дважды щелкните значок DUT подсистема.

HDL Coder™ распознал шаблон моделирования и заменил блок Product и блок Divide блоком Gain. Эта оптимизация значительно сокращает задержку проекта и улучшает область и время на целевом FPGA.
Эта оптимизация заменяет несколько операций одной эквивалентной операцией. Примеры этого способа оптимизации включают в себя замену блока Sin и блока Cos блоком Синкоса. Если один и тот же входной сигнал подается на блок Sin и блок Cos в модели, и когда свойства блока HDL блоков Sin и Cos совпадают, генератор кода заменяет блоки блоком Sincos. Эта оптимизация работает с отдельными типами данных в Native Floating Point режим.
Например:
Открытие модели hdlcoder_combine_operations. Дважды щелкните подсистему DUT.
open_system('hdlcoder_combine_operations') open_system('hdlcoder_combine_operations/DUT') set_param('hdlcoder_combine_operations', 'SimulationCommand', 'update');

Для генерации кода HDL для подсистемы DUT введите следующую команду:
makehdl('hdlcoder_combine_operations/DUT')
Откройте созданную модель и дважды щелкните подсистему DUT. Созданная модель отображается так, как показано ниже.

HDL Coder™ распознал шаблон моделирования и заменил блок Sin и блок Cos блоком Sincos. Этот метод оптимизации значительно повышает производительность проекта на целевой платформе.
Оптимизация работает с типами данных с плавающей запятой. Эта оптимизация не влияет на проекты с фиксированной точкой. При использовании отдельных типов данных включите Native Floating Point режим. В диалоговом окне «Параметры конфигурации» на панели «Создание кода HDL» > «Плавающая точка» задайте для параметра «Библиотека IP с плавающей точкой» значение Native Floating Point. Сведения о собственной поддержке плавающей точки в кодере HDL см. в разделе Создание целевого независимого кода HDL с собственной плавающей точкой.
При оптимизации сохраняются все комментарии из блоков в созданном коде. Сведения об указании комментариев к блокам см. в разделе Создание кода с аннотациями или комментариями.
Оптимизации не позволяют оптимизировать блоки, использующие настраиваемые параметры или общие входные данные, поскольку настраиваемые параметры не рассматриваются как постоянные значения. Чтобы эти блоки участвовали в оптимизации, в редакторе масок для блоков снимите флажок Настраиваемый (Tunable). Сведения о настраиваемых параметрах см. в разделе Создание портов DUT для настраиваемых параметров.
При оптимизации значения перечисления и константы из браузера рабочей области рассматриваются как постоянные значения. Поэтому генератор кода распространяет эти значения внутри различных компонентов и упрощает постоянные операции.