Критический путь является комбинационным путем между вводом и выводом, который имеет максимальную задержку. Используйте программное обеспечение HDL Coder™, чтобы найти критический путь в вашем проекте. Чтобы заставить синхронизацию критического пути встретить целевой частоте, которой вы хотите, чтобы ваш проект достиг, повредите критический путь путем добавления задержек. Дополнительные задержки действительно увеличивают задержку и указывают использование на целевом FPGA.
Чтобы быстро идентифицировать наиболее вероятный критический путь в вашем проекте, используйте оценку критического пути. С оценкой критического пути вы не должны запускать синтез или генерировать HDL-код. Оценка критического пути ускоряет этот итеративный процесс нахождения критического пути и затем оптимизации критического пути, пока ваша синхронизация проекта не встречает целевой частоте, которую вы хотите.
Оценка критического пути, не используя инструменты синтеза может привести к неточным результатам синхронизации. Оценка критического пути предназначается, чтобы ускорить процесс итерации проектирования. Оценка критического пути является альтернативой аннотированию критического пути путем выполнения FPGA Synthesis and Analysis с HDL Workflow Advisor.
HDL Coder находит предполагаемый критический путь путем выполнения статического анализа синхронизации с синхронизацией данных из целевых баз данных синхронизации. HDL Coder имеет базы данных синхронизации для этих целевых устройств:
Altera® Cyclone V
Altera Stratix V
Xilinx® Virtex®-7, класс скорости-1
Xilinx Zynq®, класс скорости-1
Чтобы создать базы данных синхронизации, HDL Coder характеризует компоненты базовой конструкции, такие как Simulink® блокируется, архитектура блока и субкомпоненты тех блоков, для определенных целевых устройств.
Генератор кода анализирует ваш образцовый проект, чтобы разложить его на блоки и субкомпоненты в базах данных синхронизации. Если ваш проект состоит из блоков или субкомпонентов в базах данных синхронизации, генератор кода может оценить критический путь синхронизации более точно. Если ваш проект использует компоненты, которые не находятся в базах данных синхронизации, отдельный скрипт выделения сгенерирован, чтобы показать неохарактеризованные блоки. Если данные о синхронизации являются неполными для частей вашего проекта, возможно, что предполагаемый критический путь не совпадает с вашим фактическим критическим путем.
Если ваш целевой компьютер является одним из целевых устройств, поддержанных для оценки критического пути, числа синхронизации и оцененный критический путь более точны. Если ваш целевой компьютер не является поддерживаемым устройством или не находится в том же семействе устройств, можно оценить критический путь, но возможно, что числа синхронизации не точны.
Можно оценить критический путь для проекта или в диалоговом окне Configuration Parameters или в командной строке. Оценить критический путь в диалоговом окне Configuration Parameters:
Включите генерацию отчета оценки критического пути. В панели HDL Code Generation выберите высокий уровень Generate, синхронизирующий флажок отчета критического пути.
Отключите генерацию HDL-кода для своей модели. В панели HDL Code Generation снимите Сгенерировать флажок HDL-кода.
Чтобы оценить критический путь в вашем проекте, вы не должны запускать полный процесс генерации кода. Когда вы отключаете генерацию HDL-кода, вы запускаете процесс, пока HDL Coder не создает сгенерированную модель и отображает скрипт оценки критического пути. Вы стараетесь не запускать больший фрагмент процесса генерации кода, который экономит время в оценке критического пути, специально для больших моделей.
Если ваш проект содержит типы данных single
, включите режим Native Floating Point
. Во вкладке HDL Code Generation> Global Settings> Floating Point Target, Библиотеке IP Плавающей точки набора к Native Floating Point
.
Сгенерируйте отчет оценки критического пути. В панели HDL Code Generation выберите Apply и Generate.
HDL Coder генерирует отчет оценки критического пути и отображает сообщения в Командном окне MATLAB®, которые включают ссылку на скрипт выделения и скрипт, который очищает выделение.
Чтобы написать сценарий этого рабочего процесса или сгенерировать отчет в командной строке, введите эти команды. Задайте modelname
и dutname
на основе проекта, для которого вы хотите оценить критический путь. Этот пример использует модель sfir_single
.
% Specify the model and Subsystem names modelname = 'sfir_single'; dutname = 'sfir_single/symmetric_fir'; open_system(modelname) % Disable HDL code generation for faster generation % of critical path estimation report hdlset_param(modelname, 'CriticalPathEstimation', 'on'); hdlset_param(modelname, 'GenerateHDLCode', 'off'); % If your design contains single data types, % enable native floating-point support fpconfig = hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint'); hdlset_param(modelname, 'FloatingPointTargetConfig', fpconfig); % Generate the report makehdl(dutname)
Когда вы щелкаете по ссылке к скрипту criticalpathestimated
, генератор кода подсвечивает критический путь в сгенерированной модели. В сгенерированной модели вы видите, что критический путь синхронизирует информацию и блоки, которые находятся на этом пути. Эти данные показывают раздел модели Simulink, которой аннотировали критический путь.
Можно очистить выделение путем щелчка по ссылке к скрипту clearhighlighting
.
Чтобы оптимизировать критический путь, повредите критический путь путем добавления конвейерных регистров. Если вы используете Native Floating Point
, установите LatencyStrategy на Max
улучшать синхронизацию. Регенерируйте отчет оценки критического пути и скрипт, который подсвечивает критический путь в вашем проекте. Можно повторить этот процесс, пока синхронизация проекта не встречает целевой частоте, которую вы хотите.
Эта таблица показывает блоки, которые характеризуются с фиксированной точкой и нативными типами с плавающей точкой с одинарной точностью. Эти блоки являются частью базы данных синхронизации для каждого поддерживаемого целевого устройства.
Математические операции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Abs | ✓ | ✓ |
Добавление | ✓ (Блок не может иметь больше чем двух входных параметров), | ✓ |
Вычитание | ✓ | ✓ |
Продукт | ✓ | ✓ |
Усиление | ✓ | ✓ |
Разделиться | ✓ | ✓ |
Обратная величина HDL | ✓ | ✓ |
Вокруг | ✓ | ✓ |
Унарный минус | ✓ | ✓ |
Знак | ✓ | ✓ |
Изменение | ✓ | ✓ |
Комплекс к действительному-Imag | ✓ | ✓ |
Математические функции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Обратная величина | ✓ | ✓ |
Hypot | - | ✓ |
Rem | - | ✓ |
Mod | - | ✓ |
Sqrt | ✓ | ✓ |
Взаимный Sqrt | ✓ | ✓ |
Тригонометрические функции
Экспонента/Логарифм/Степень
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Exp | - | ✓ |
Получите к степени двойки | - | ✓ |
Pow10 | - | ✓ |
Журнал | - | ✓ |
Log10 | - | ✓ |
Преобразования и сравнения
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Преобразование типа данных | ✓ | ✓ |
Преобразование типа плавающее | - | ✓ |
Оператор отношения | ✓ | ✓ |
Сравните с постоянным | ✓ | ✓ |
MinMax | ✓ | ✓ |
Логика и битовые операции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Битный Concat | ✓ | - |
Битное извлечение | ✓ | - |
Сдвиг разряда | ✓ | - |
Секционированный микропроцессор | ✓ | - |
Побитовый оператор | ✓ | - |
Логический оператор | ✓ | ✓ |
Задержки и маршрутизация сигнала
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Единичная задержка | ✓ | ✓ |
Задержка | ✓ | ✓ |
Соедините шиной создателя | ✓ | ✓ |
Селектор шины | ✓ | ✓ |
Демультиплексор | ✓ | ✓ |
Многопортовый переключатель | ✓ | ✓ |
Селектор | ✓ | ✓ |
Переключатель | ✓ | ✓ |
Операции HDL и RAM HDL
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Счетчик, свободного доступа | ✓ | ✓ |
Counter Limited | ✓ | ✓ |
Счетчик HDL | ✓ | ✓ |
Двухпортовый RAM | ✓ | ✓ |
Двойной уровень двухпортовый RAM | ✓ | ✓ |
Простой двухпортовый RAM | ✓ | ✓ |
Один порт RAM | ✓ | ✓ |
Deserializer1D | ✓ | ✓ |
Serializer1D | ✓ | ✓ |
Атрибуты сигнала и интерполяционные таблицы
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Постоянный | ✓ | ✓ |
1D интерполяционная таблица | ✓ | ✓ |
2D интерполяционная таблица | ✓ | ✓ |
Интерполяционная таблица n-D | ✓ | ✓ |
Переход уровня | ✓ | ✓ |
Преобразование сигнала | ✓ | ✓ |
Спецификация сигнала | ✓ | ✓ |
Если у вас есть типы данных single
в вашем проекте, и вы используете режим Native Floating Point
, скрипт оценки критического пути иногда подсвечивает один оператор с плавающей точкой в сгенерированной модели. Генератор кода подсвечивает один блок, потому что алгоритмы с плавающей точкой интенсивны вычислением, и критический путь может быть внутренним путем от регистра к регистру в операторе с плавающей точкой.
В этом случае, чтобы оптимизировать синхронизацию критического пути, установите LatencyStategy на Max
для блока Simulink, соответствующего тому оператору.
Кроме того, оценка критического пути с собственным компонентом, с плавающей точкой, делает не поддержан для блоков с набором LatencyStategy к Custom
.
Когда вы включаете оценку критического пути, возможно, что сгенерированный HDL-код отличается для блока Delay, который имеет внешний сброс или разрешать порт. Кроме того, для блоков, таких как MinMax, количество сгенерированных файлов HDL может отличаться, когда вы включаете оценку критического пути. Это изменение происходит из-за определенной оптимизации, выполняемой генератором кода, когда вы включаете эту оптимизацию. Оптимизация только изменяется, как код появляется и не влияет на функциональность.
Следующим являются блоки Simulink, для которых сгенерированный HDL-код может потенциально отличаться.
Задержите блок, который имеет внешний сброс, или включите порт
MinMax
Единичная задержка, Enabled синхронный
Единичная задержка, восстановленная синхронный
Единичная задержка, Enabled восстановленный синхронный
Enabled задержка
Восстановленная задержка
Коснувшаяся задержка
Дискретный КИХ-фильтр
Фильтр Biquad
Функция MATLAB
Оценка критического пути пытается составлять маршрутизацию задержки при помощи фактора оценки. Не запуская место и маршрут, трудно точно составлять маршрутизацию задержки.
HDL Coder выводит неохарактеризованные блоки, которые являются комбинационными по своей природе как нулевая задержка комбинационные блоки. Генератор кода обрабатывает другие блоки как регистры.
Если ваше целевое устройство не имеет характеристик синхронизации, которые подобны одному из поддерживаемых целевых устройств, оценка критического пути не может точно вычислить ваш критический путь.
hdlcoder.FloatingPointTargetConfig
| makehdl