Критический путь является комбинационным путем между вводом и выводом, который имеет максимальную задержку. Используйте программное обеспечение HDL Coder™, чтобы найти критический путь в вашем проекте. Чтобы заставить синхронизацию критического пути встретить целевой частоте, которой вы хотите, чтобы ваш проект достиг, повредите критический путь путем добавления задержек. Дополнительные задержки действительно увеличивают задержку и указывают использование на целевом FPGA.
Чтобы быстро идентифицировать наиболее вероятный критический путь в вашем проекте, используйте оценку критического пути. С оценкой критического пути вы не должны запускать синтез или генерировать HDL-код. Оценка критического пути ускоряет этот итеративный процесс нахождения критического пути и затем оптимизации критического пути, пока ваша синхронизация проекта не встречает целевой частоте, которую вы хотите.
Оценка критического пути, не используя инструменты синтеза может привести к неточным результатам синхронизации. Оценка критического пути предназначается, чтобы ускорить процесс итерации проектирования. Оценка критического пути является альтернативой аннотированию критического пути путем выполнения FPGA Synthesis and Analysis с HDL Workflow Advisor.
HDL Coder находит предполагаемый критический путь путем выполнения статического анализа синхронизации с синхронизацией данных из целевых баз данных синхронизации. Сгенерируйте базы данных синхронизации для заданного семейства целевых устройств, класса скорости целевого устройства, и предназначайтесь для инструмента при помощи genhdltdb
функция. По умолчанию HDL Coder имеет базы данных синхронизации для этих целевых устройств:
Altera® Cyclone V
Intel® Stratix V
Xilinx® Artix®-7, класс скорости-1
Xilinx Kintex®-7, класс скорости-1
Xilinx Kintex UltraScale™, класс скорости-1
Xilinx Virtex®-4, класс скорости-10
Xilinx Virtex-7, класс скорости-1
Xilinx Zynq®, класс скорости-1
Xilinx Zynq UltraScale +™, класс скорости-1
Чтобы создать базы данных синхронизации, HDL Coder характеризует компоненты базовой конструкции, такие как Simulink® блокируется, архитектуры блока и субкомпоненты тех блоков, для определенных целевых устройств.
Генератор кода анализирует ваш проект модели, чтобы разложить его на блоки и субкомпоненты в базах данных синхронизации. Если ваш проект состоит из блоков или субкомпонентов в базах данных синхронизации, генератор кода может оценить критический путь синхронизации более точно. Если ваш проект использует компоненты, которые не находятся в базах данных синхронизации, отдельный скрипт выделения сгенерирован, чтобы показать неохарактеризованные блоки. Если данные о синхронизации являются неполными для частей вашего проекта, возможно, что предполагаемый критический путь не совпадает с вашим фактическим критическим путем.
Если ваш целевой компьютер является одним из целевых устройств, поддержанных для оценки критического пути, числа синхронизации и оцененный критический путь более точны. Если ваш целевой компьютер не является поддерживаемым устройством или не находится в том же семействе устройств, можно оценить критический путь, но возможно, что числа синхронизации не точны.
Можно оценить критический путь для проекта или в диалоговом окне Configuration Parameters или в командной строке. Оценить критический путь в диалоговом окне Configuration Parameters:
Включите генерацию отчета оценки критического пути.
Во вкладке Apps выберите HDL Coder. Вкладка HDL Code появляется.
Выберите Settings> Report Options, и затем выберите Generate high-level timing critical path report.
Отключите генерацию HDL-кода для своей модели. Во вкладке HDL Code Generation> Global Settings> Advanced снимите флажок Generate HDL Code.
Чтобы оценить критический путь в вашем проекте, вы не должны запускать полный процесс генерации кода. Когда вы отключаете генерацию HDL-кода, вы запускаете процесс, пока HDL Coder не создает сгенерированную модель и отображает скрипт оценки критического пути. Вы стараетесь не запускать больший фрагмент процесса генерации кода, который экономит время в оценке критического пути, особенно для больших моделей.
Если ваш проект содержит типы данных с плавающей точкой, включите Native Floating Point
режим. В диалоговом окне Configuration Parameters, на HDL Code Generation> панель Floating Point, устанавливает Floating Point IP Library на Native Floating Point
.
Установите путь сгенерированных баз данных синхронизации для вашего целевого устройства. В диалоговом окне Configuration Parameters, на HDL Code Generation> панель Report, выбирают параметр Generate high-level timing critical path report, и затем устанавливают путь ваших сгенерированных баз данных синхронизации путем нажатия на Browse и выбора целевой папки.
По умолчанию целевая папка показывает некоторые сохраненные директории базы данных синхронизации на основе вашей целевой настройки. Если поле Custom Timing Database Directory пусто, или целевая настройка не имеет никаких баз данных синхронизации, по умолчанию, баз данных синхронизации использования HDL Coder для Xilinx Artix-7, класс скорости-1 устройство, чтобы сгенерировать отчет оценки критического пути.
Сгенерируйте отчет оценки критического пути. В панели HDL Code Generation нажмите Apply, и затем нажмите Generate.
HDL Coder генерирует отчет оценки критического пути и отображает сообщения в Командном окне MATLAB®, которые включают ссылку на скрипт выделения и скрипт, который очищает выделение.
Чтобы написать сценарий этого рабочего процесса или сгенерировать отчет в командной строке, используйте этот код. Задайте modelname
и dutname
переменные на основе проекта, для которого вы хотите оценить критический путь. Установите путь сгенерированных баз данных синхронизации для вашего целевого устройства при помощи hdlset_param
функция. Когда вы включаете генерацию отчета оценки критического пути и не устанавливаете путь к базе данных синхронизации для целевого устройства, HDL Coder ищет базы данных синхронизации значения по умолчанию для заданного семейства целевых устройств и класса скорости целевого устройства. Если синхронизирующие базы данных для заданного целевого устройства не доступны, по умолчанию, базы данных синхронизации использования HDL Coder для Xilinx Artix-7, класс скорости-1 устройство, чтобы сгенерировать отчет оценки критического пути. Этот пример использует sfir_single
модель.
% Specify 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 design contains single data types, % enable native floating-point support fpconfig = hdlcoder.createFloatingPointTargetConfig('NativeFloatingPoint'); hdlset_param(modelname,'FloatingPointTargetConfig',fpconfig); % Set path of generated timing databases for target device hdlset_param(modelname,'TimingDatabaseDirectory','C:\Work\Database'); % Generate report makehdl(dutname)
Когда вы щелкаете по ссылке к criticalpathestimated
скрипт, генератор кода подсвечивает критический путь в сгенерированной модели. В сгенерированной модели вы видите время выполнения критического пути и блоки, которые находятся на этом пути. Этот рисунок показывает раздел модели Simulink, которой аннотировали критический путь. Нативные операторы с плавающей точкой подсвечены в голубом, и задержки подсвечены в оранжевом. Блок, который является частью критического пути, подсвечен в темно-синем со значением критического пути, аннотируемым около блока. Чтобы узнать больше о различных цветах, см. Сгенерированную Модель Модели и Валидации.
Можно очистить выделение путем щелчка по ссылке к clearhighlighting
скрипт.
Чтобы оптимизировать критический путь, повредите критический путь путем добавления конвейерных регистров. Если вы используете Native Floating Point
, установите LatencyStrategy на Max
улучшить синхронизацию. Регенерируйте отчет оценки критического пути и скрипт, который подсвечивает критический путь в вашем проекте. Можно повторить этот процесс, пока синхронизация проекта не встречает целевой частоте, которую вы хотите.
Эта таблица показывает блоки, которые характеризуются с фиксированной точкой и нативными типами с плавающей точкой с одинарной точностью. Эти блоки являются частью базы данных синхронизации для каждого поддерживаемого целевого устройства.
Математические операции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Abs | ✓ | ✓ |
Add | ✓ (Блок не может иметь больше чем двух входных параметров), | ✓ |
Subtract | ✓ | ✓ |
Product | ✓ | ✓ |
Gain | ✓ | ✓ |
Divide | ✓ | ✓ |
HDL Reciprocal | ✓ | ✓ |
Rounding Function | ✓ | ✓ |
Unary Minus | ✓ | ✓ |
Sign | ✓ | ✓ |
Reshape | ✓ | ✓ |
Complex to Real-Imag | ✓ | ✓ |
Математические функции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Reciprocal | ✓ | ✓ |
Hypot | - | ✓ |
Rem | - | ✓ |
Mod | - | ✓ |
Sqrt | ✓ | ✓ |
Reciprocal Sqrt | ✓ | ✓ |
Тригонометрические функции
Экспонента/Логарифм/Степень
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Exp | - | ✓ |
Gain to power of two | - | ✓ |
Pow10 | - | ✓ |
Журнал | - | ✓ |
Log10 | - | ✓ |
Преобразования и сравнения
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Data Type Conversion | ✓ | ✓ |
Float Typecast | - | ✓ |
Relational Operator | ✓ | ✓ |
Compare To Constant | ✓ | ✓ |
MinMax | ✓ | ✓ |
Логика и битовые операции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Bit Concat | ✓ | - |
Extract Bits | ✓ | - |
Bit Shift | ✓ | - |
Bit Slice | ✓ | - |
Bitwise Operator | ✓ | - |
Logical Operator | ✓ | ✓ |
Задержки и маршрутизация сигнала
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Unit Delay | ✓ | ✓ |
Delay | ✓ | ✓ |
Bus Creator | ✓ | ✓ |
Bus Selector | ✓ | ✓ |
Demux | ✓ | ✓ |
Multiport Switch | ✓ | ✓ |
Selector | ✓ | ✓ |
Switch | ✓ | ✓ |
Операции HDL и RAM HDL
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Counter Free-Running | ✓ | ✓ |
Counter Limited | ✓ | ✓ |
HDL Counter | ✓ | ✓ |
Dual Port RAM | ✓ | ✓ |
Dual Rate Dual Port RAM | ✓ | ✓ |
Simple Dual Port RAM | ✓ | ✓ |
Single Port RAM | ✓ | ✓ |
Deserializer1D | ✓ | ✓ |
Serializer1D | ✓ | ✓ |
Атрибуты сигнала и интерполяционные таблицы
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
Constant | ✓ | ✓ |
1-D Lookup Table | ✓ | ✓ |
2-D Lookup Table | ✓ | ✓ |
n-D Lookup Table | ✓ | ✓ |
Rate Transition | ✓ | ✓ |
Signal Conversion | ✓ | ✓ |
Signal Specification | ✓ | ✓ |
Пользовательские функции
Блоки Simulink | Фиксированная точка | Один (нативная плавающая точка) |
---|---|---|
MATLAB Function | - | ✓ |
Когда вы используете блоки MATLAB Function и генерируете код при помощи MATLAB Datapath
архитектура, HDL Coder преобразует алгоритм MATLAB в Диаграмму Simulink. В сгенерированной модели оценка критического пути может аннотировать критический путь в MATLAB Function
блокируйтесь и через MATLAB Function
блокируйте контур с другими блоками Simulink. См. также Оптимизацию HDL Через Контур блока MATLAB function Используя Архитектуру MATLAB Datapath.
Оценка критического пути не рассматривает информации о пропускании часов к различным последовательным элементам в вашем проекте.
Если ваша модель содержит несколько частот дискретизации или использует скорость и оптимизацию области, которая вставляет конвейерные регистры, ваш проект становится многоскоростным и может иметь мультивелосипедные дорожки. Для многоскоростных моделей оценка критического пути обрабатывает медленные и быстрые информационные каналы, чтобы запуститься на том же уровне. Информационный канал, который имеет более быструю тактовую частоту, может быть подсвечен как критический путь, когда проект имеет другой информационный канал на более медленном уровне. Эта оценка критического пути причины силы, чтобы сообщить о неточных результатах синхронизации.
Чтобы проверить предполагаемую информацию о критическом пути, откройте HDL Workflow Advisor и запустите Generic ASIC/FPGA
рабочий процесс для вашего целевого устройства к задаче Annotate model with synthesis result.
Если у вас есть single
типы данных в вашем проекте и вы используете Native Floating Point
режим, скрипт оценки критического пути иногда подсвечивает один оператор с плавающей точкой в сгенерированной модели. Генератор кода подсвечивает один блок, потому что алгоритмы с плавающей точкой интенсивны расчетом, и критический путь может быть внутренним путем от регистра к регистру в операторе с плавающей точкой.
В этом случае, чтобы оптимизировать синхронизацию критического пути, установите LatencyStrategy на Max
для блока Simulink, соответствующего тому оператору.
Кроме того, оценка критического пути с собственным компонентом, с плавающей точкой, делает не поддерживается для блоков с набором LatencyStategy к Custom
.
Когда вы включаете оценку критического пути, возможно, что сгенерированный HDL-код отличается от отчета для блока Delay, который имеет внешний сброс или разрешать порт. Кроме того, для блоков, таких как MinMax, количество сгенерированных файлов HDL может отличаться, когда вы включаете оценку критического пути. Это изменение происходит из-за определенной оптимизации, выполняемой генератором кода, когда вы включаете эту оптимизацию. Оптимизация только изменяется, как код появляется и не влияет на функциональность.
Следующим являются блоки Simulink, для которых сгенерированный HDL-код может потенциально отличаться.
Блок Delay, который имеет внешний сброс или включает порт
MinMax
Unit Delay Enabled Synchronous
Unit Delay Resettable Synchronous
Unit Delay Enabled Resettable Synchronous
Enabled Delay
Resettable Delay
Tapped Delay
Discrete FIR Filter
Biquad Filter
MATLAB Function
Оценка критического пути пробует с учетом маршрутизации задержки при помощи фактора оценки. Не запуская место и маршрут, это затрудняет, чтобы точно составлять маршрутизацию задержки.
HDL Coder выводит неохарактеризованные блоки, которые являются комбинационными по своей природе как нулевая задержка комбинационные блоки. Генератор кода обрабатывает другие блоки как регистры.
Если ваше целевое устройство не имеет характеристик синхронизации, которые похожи на одно из поддерживаемых целевых устройств, оценка критического пути не может точно вычислить ваш критический путь.
genhdltdb
| hdlcoder.FloatingPointTargetConfig
| makehdl