Критический путь является комбинационным путем между входом и выходом, который имеет максимальную задержку. Используйте программное обеспечение HDL Coder™, чтобы найти критический путь в вашем проекте. Чтобы время критического пути соответствовало целевой частоте, которую вы хотите достичь своего проекта, сломайте критический путь, добавив задержки. Дополнительные задержки увеличивают задержки и использование регистров на целевом FPGA.
Чтобы быстро идентифицировать наиболее вероятный критический путь в проекте, используйте оценку критического пути. При оценке критического пути вы не должны запускать синтез или генерировать HDL-код. Оценка критического пути ускоряет этот итерационный процесс нахождения критического пути, а затем оптимизирует критический путь до тех пор, пока ваше время проекта не достигнет требуемой целевой частоты.
Оценка критического пути без использования инструментов синтеза может привести к неточным результатам синхронизации. Оценка критического пути предназначена для ускорения процесса итерации проектирования. Оценка критического пути является альтернативой аннотированию критического пути путем выполнения FPGA Synthesis and Analysis с помощью HDL Workflow Advisor.
HDL Coder находит предполагаемый критический путь путем статического анализа времени с данными о времени из целевых временных баз данных. Сгенерируйте базы данных синхронизации для заданного семейства целевых устройств, ранга скорости целевого устройства и целевого инструмента при помощи genhdltdb
функция. По умолчанию HDL Coder имеет базы данных синхронизации для этих целевых устройств:
Altera® Циклон V
Intel® Стратикс 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), либо в командной строке. Чтобы оценить критический путь в диалоговом окне Параметров конфигурации:
Включите генерацию отчета об оценке критического пути.
На вкладке Apps выберите HDL Coder. Появится вкладка HDL Code.
Выберите Settings > Report Options, а затем Generate high-level timing critical path report.
Отключите генерацию HDL-кода для вашей модели. Во вкладке <reservedrangesplaceholder3>> <reservedrangesplaceholder2>> <reservedrangesplaceholder1> очистите флажок Generate HDL Code.
Чтобы оценить критический путь в вашем проекте, вы не должны запускать полный процесс генерации кода. Когда вы отключаете генерацию HDL-кода, вы запускаете процесс, пока HDL Coder не создаст сгенерированную модель и не отобразит скрипт оценки критического пути. Вы избегаете запускать большой фрагмент процесса генерации кода, что экономит время в оценке критического пути, особенно для больших моделей.
Если ваш проект содержит типы данных с плавающей точкой, включите Native Floating Point
режим. В диалоговом окне Configuration Parameters, на HDL Code Generation> Floating Point панель, набор Floating Point IP Library к Native Floating Point
.
Установите путь к сгенерированным базам данных синхронизации для вашего целевого устройства. В диалоговом окне Параметров конфигурации на панели HDL Code Generation > Report выберите параметр Generate high-level timing critical path report, а затем укажите путь к сгенерированным базам данных синхронизации, нажав Browse и выбрав целевую папку.
По умолчанию в целевой папке отображаются некоторые сохранённые директории базы данных синхронизации на основе вашего целевого строения. Если Custom Timing Database Directory поле пусто, или в целевом строении нет баз данных синхронизации, HDL Coder по умолчанию использует базы данных синхронизации для устройства Artix-7 Xilinx, уровня скорости -1, чтобы сгенерировать отчет об оценке критического пути.
Сгенерируйте отчет об оценке критического пути. На панели HDL Code Generation щелкните Apply и выберите Generate.
HDL Coder генерирует отчет об оценке критического пути и отображает сообщения в MATLAB® Командное окно, которое включает ссылку на сценарий подсветки и скрипт, который очищает подсветку.
Чтобы написать сценарий этого рабочего процесса или сгенерировать отчет в командной строке, используйте этот код. Задайте modelname
и dutname
переменные, основанные на проекте, для которого необходимо оценить критический путь. Установите путь к сгенерированным базам данных синхронизации для вашего целевого устройства с помощью hdlset_param
функция. Когда вы активируете генерацию отчета об оценке критического пути и не устанавливаете путь к базе данных синхронизации для целевого устройства, HDL Coder ищет базы данных синхронизации по умолчанию для указанного семейства целевых устройств и уровня скорости целевого устройства. Если базы данных синхронизации для указанного целевого устройства недоступны, HDL Coder по умолчанию использует базы данных синхронизации для устройства Artix-7 Xilinx, уровня скорости -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 и HDL RAM
Блоки 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
mode, скрипт оценки критического пути иногда подсвечивает один оператор с плавающей точкой в сгенерированной модели. Генератор кода подсвечивает один блок, потому что алгоритмы с плавающей точкой являются интенсивными для вычислений, и критический путь может быть внутренним путем «регистр-регистр» в операторе с плавающей точкой.
В этом случае, чтобы оптимизировать тайминг критического пути, установите 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