exponenta event banner

Устранение сбоев синхронизации в рабочих процессах ввода-вывода FPGA в режиме реального времени и генерации IP Core и Simulink

Синхронные каналы требуют, чтобы данные распространялись от исходного регистра к целевому регистру в течение одного тактового цикла. Для инструментов синтеза блоки задержки, добавляемые к модели Simulink ®, выполняются с тактовой частотой. Инструменты требуют, чтобы данные перемещались между блоками в течение одного тактового цикла. Если сервисная программа не может распространить данные между регистрами для одного или нескольких сигнальных трактов в модели в течение одного такта, происходит сбой синхронизации.

Инструменты сообщают информацию о слабом состоянии для каждого тракта сигнала, которая соответствует разнице между требуемым временем и временем поступления. Требуемое время - это ожидаемое время, в которое сигнал должен поступить в регистр назначения. Время поступления - это время, прошедшее до момента поступления сигнала. Положительный провал указывает на то, что сигнал поступил намного быстрее, чем требуемое время, и тракт проходит требование синхронизации. Отрицательная задержка указывает на то, что тракт сигнала медленнее требуемого времени, и тракт не соответствует требованиям синхронизации. Чтобы убедиться, что ваша конструкция соответствует требованиям синхронизации, ускорьте все пути сигнала, которые имеют отрицательный провал.

Чтобы определить, соответствует ли проект требованиям синхронизации и как можно устранить ошибки синхронизации, выполните следующие действия.

Шаг 1: Определение сбоя синхронизации

При запуске IP Core Generation рабочий процесс или Simulink Real-Time FPGA I/O workflow-процесс для плат на базе Vivado ®, если модель Simulink не соответствует требованиям синхронизации, HDL Coder™ генерирует ошибку на шаге Build FPGA Bitstream рабочего процесса. См.:

При выполнении задачи Bitstream Build FPGA, если по умолчанию установлен флажок Выполнить процесс построения внешне, независимо от того, происходит ли сбой синхронизации, кодер HDL отображает результаты как пройденные и выдает предупреждающие сообщения. Просмотрите журнал сборки во внешней консоли, чтобы определить, существует ли потенциальный сбой синхронизации.

Во внешней консоли при сбое синхронизации отображается наихудший провал и следующее сообщение: Timing constraints NOT met!

При снятии флажка Выполнить процесс построения извне, а затем выполнить задачу Построить битовый поток FPGA, если происходит сбой синхронизации, задача завершается неуспешно, и эти сообщения отображаются в подпанели Результат.

В обоих случаях, когда происходит сбой синхронизации, генератор кода заменяет предыдущий поток битов на поток битов с тем же именем и постфиксом. _timingfailure.bit или _timingfailure.sof в зависимости от того, был ли проект создан с помощью Vivado или Quartus ®. Например, если вызывался предыдущий сгенерированный битовый поток system_top_wrapper.bitи при сбое синхронизации кодер HDL переименовывает этот битовый поток в system_top_wrapper_timingfailure.bit.

При выполнении задачи «Целевое устройство программы» эта задача завершается неуспешно.

Сообщения о сбоях синхронизации в виде предупреждений

Если для устранения сбоев синхронизации уже реализована пользовательская логика, можно указать ошибки синхронизации, которые будут сообщаться как предупреждения, а не как ошибки. Затем можно продолжить рабочий процесс и создать битовый поток FPGA. Перед программированием целевого устройства SoC рекомендуется устранить ошибки синхронизации.

После устранения сбоев синхронизации для проверки устранения отказов можно использовать программное обеспечение кодера HDL. Измените ошибки синхронизации, которые будут сообщаться как ошибки, а затем повторно запустите IP Core Generation workflow, чтобы гарантировать, что задача Bitstream сборки FPGA пройдена. Если задача создания Bitstream FPGA по-прежнему завершается неуспешно, выполните действия, описанные в предыдущих разделах, для выявления и устранения сбоев синхронизации.

Чтобы указать ошибки синхронизации, которые будут сообщаться как предупреждения:

  • После выполнения задачи создания Bitstream FPGA экспортируйте помощник по рабочим процессам HDL в сценарий. В сценарии для сообщения о сбоях синхронизации в виде предупреждений используйте ReportTimingFailure имущества hdlcoder.WorkflowConfig класс. Затем можно запустить сценарий или импортировать сценарий в помощник по рабочим процессам HDL, а затем запустить рабочий процесс.

    hWC.ReportTimingFailure = hdlcoder.ReportTiming.Warning; 
    
  • Если вы ориентируетесь на пользовательскую эталонную конструкцию, которая уже была определена для платы, для сообщения о сбоях синхронизации в виде предупреждений используйте ReportTimingFailure имущества hdlcoder.ReferenceDesign класс.

    hRD.ReportTimingFailure = hdlcoder.ReportTiming.Warning; 
    

Чтобы узнать, как можно определить критический тракт и устранить сбои синхронизации, выполните шаги, описанные в предыдущих разделах.

Шаг 2: Поиск критического пути

Критический путь - это комбинированный путь между входом и выходом, который имеет максимальную задержку. Этот тракт соответствует тракту сигнала, который имеет наихудший отрицательный провал. Выявляя и оптимизируя критический путь, можно устранить ошибки синхронизации и улучшить синхронизацию проекта. С помощью любой из этих стратегий можно определить критический путь в конструкции.

Стратегия 1: Проверка отчета о времени

В подпанели Result (Результат), чтобы открыть отчет о синхронизации, генерируемый инструментом синтеза, выберите timing_report линию связи. Отчет можно использовать для определения критического пути в конструкции. В отчете при поиске Worst Slack, вы можете определить худший провал настройки. Затем используйте Source и Destination точки для определения критического пути. Например, этот отчет для модели мигания светодиода hdlcoder_led_blinking показывает, что критический путь находится внутри блока счетчика HDL.

-----------------------------------------------------------------------------------------
From Clock:  clk_out1_system_top_clk_wiz_0_0
  To Clock:  clk_out1_system_top_clk_wiz_0_0

Setup :   1193  Failing Endpoints,  Worst Slack   -2.478ns,  Total Violation  -1226.784ns
Hold  :      0  Failing Endpoints,  Worst Slack    0.034ns,  Total Violation      0.000ns
PW    :      2  Failing Endpoints,  Worst Slack   -0.576ns,  Total Violation     -0.731ns
-----------------------------------------------------------------------------------------

Max Delay Paths
-----------------------------------------------------------------------------------------
Slack (VIOLATED) : -2.478ns  (required time - arrival time)
  Source:     system_top_i/led_count_ip_0/U0/u_led_count_ip_dut_inst/
                   u_led_count_ip_src_led_counter/HDL_Counter1_out1_reg[0]/C
              (rising edge-triggered cell FDRE clocked by clk_out1_system_top_clk_wiz_0_0  
                                               {rise@0.000ns fall@1.000ns period=2.000ns})
 Destination:  system_top_i/led_count_ip_0/U0/u_led_count_ip_dut_inst/
                    u_led_count_ip_src_led_counter/HDL_Counter1_out1_reg[20]/R
               (rising edge-triggered cell FDRE clocked by clk_out1_system_top_clk_wiz_0_0  
                                                {rise@0.000ns fall@1.000ns period=2.000ns})
  Path Group:       clk_out1_system_top_clk_wiz_0_0
  Path Type:        Setup (Max at Slow Process Corner)
  Requirement:      2.000ns  (clk_out1_system_top_clk_wiz_0_0 rise@2.000ns - 
                                            clk_out1_system_top_clk_wiz_0_0 rise@0.000ns)
  Data Path Delay:  3.899ns  (logic 1.412ns (36.211%)  route 2.487ns (63.789%))

Стратегия 2: оценка критического пути без выполнения синтеза

Используйте кодер HDL для оценки и выделения критического пути в модели без синтеза конструкции. Оценка критического тракта идентифицирует критический тракт путем выполнения статического анализа синхронизации с данными синхронизации из целевых баз данных. Оценка критического пути без использования инструментов синтеза может привести к неточным результатам синхронизации. Оценка критического пути ускоряет процесс идентификации и оптимизации критического пути в проекте. Это альтернатива выполнению FPGA Synthesis and Analysis с помощью HDL Workflow Advisor. Дополнительные сведения см. в разделе Оценка критического пути без выполнения синтеза.

Чтобы оценить критический путь, в задаче Задать параметры отчета установите флажок Создать высокоуровневый отчет о критическом пути синхронизации. Запустите рабочий процесс для создания кода RTL и задачи IP Core.

Кодер HDL генерирует раздел оценки критического пути в отчете по генерации кода. В этом разделе при выборе ссылки на criticalpathestimated сценарий, генератор кода выделяет критический путь в созданной модели. На этом рисунке показан раздел hdlcoder_sfir_fixed_stream модель с выделенным критическим путем.

Стратегия 3: аннотирование критического пути с помощью Backannotation

Для получения более точной информации о критическом пути и выделения критического пути в проекте используйте backannotation. Чтобы использовать backannotation, необходимо покинуть текущий сеанс помощника по рабочим процессам, а затем запустить Generic ASIC/FPGA для аннотирования модели с результатами синтеза.

Перед использованием backannotation рекомендуется экспортировать текущие параметры помощника по рабочим процессам HDL в сценарий. Экспортируя настройки в сценарий, можно выполнять итерацию по критическому пути и настраивать различные настройки для оптимизации конструкции до тех пор, пока не будут соблюдены требования к времени. Можно импортировать сценарий помощника по рабочим процессам в помощник по рабочим процессам HDL, а затем запустить рабочий процесс. См. также раздел Запуск рабочего процесса HDL со сценарием.

Для использования backannotation:

  1. В задании Set Target Device and Synthesis Tool выберите Generic ASIC/FPGA в качестве целевого рабочего процесса. Для инструмента «Синтез» укажите тот же инструмент, который использовался для запуска IP Core Generation workflow-процесс.

    При указании этих параметров кодер HDL сбрасывает эту задачу и все последующие задачи.

  2. Выберите Запустить эту задачу.

  3. В задаче «Задать целевую частоту» укажите ту же целевую частоту, что использовалась для запуска IP Core Generation workflow-процесс. Выберите Запустить эту задачу.

  4. Щелкните правой кнопкой мыши задачу Аннотировать модель с результатом синтеза (Annotate Model with Synthesis Result) и выберите Выполнить с выбранной задачей (Run to Selected Task)

При запуске связи с задачей Аннотировать модель с результатом синтеза (Annotate Model with Synthesis Result) генератор кода подсвечивает критический путь в созданной модели. На этом рисунке показано, что критический путь в hdlcoder_led_blinking модель находится внутри блока счетчика HDL.

Шаг 3. Устранение сбоев синхронизации

Для устранения сбоев синхронизации можно использовать любые из этих рекомендаций или комбинацию рекомендаций до тех пор, пока проект не достигнет целевой частоты.

Рекомендация 1: Оптимизация скорости

Можно использовать такие оптимизации скорости, как распределенная конвейерная обработка и конвейерная обработка с тактовой частотой, чтобы разорвать критический путь путем добавления регистров конвейерной обработки с сохранением функционального поведения. Уменьшая критический путь, можно достичь более высоких тактовых частот и увеличить время прихода сигнала до тех пор, пока он не станет равным требуемому времени и провисание не станет нулевым.

Распределенная конвейерная обработка и иерархическая распределенная конвейерная оптимизация перемещают существующие задержки в конструкции по иерархии подсистем. Если включена иерархическая распределенная конвейерная обработка, убедитесь, что во всех блоках подсистемы включена функция Pipelining. Если конструкция не соответствует требованиям синхронизации, можно добавить дополнительные трубопроводы, используя свойства блока InputPipeline или OutputPipeline. Эти свойства можно задать в диалоговом окне «Свойства блока HDL» подсистемы.

Если распределенная конвейерная обработка не может переместить регистры, можно добавить в модель блоки задержки, а затем включить параметр Сохранить задержки проектирования. Сбросьте задачу Проверка глобальных параметров и запустите рабочий процесс в задачу Построение Bitstream FPGA. Можно выполнить итерацию этого подхода и использовать другие оптимизации, такие как конвейеризация тактовой частоты с большим значением коэффициента избыточной дискретизации, если конструкция не соответствует требованиям синхронизации. Чтобы задать эти параметры, используйте вкладку Конвейерная обработка (Pipelining) задания Задать опции оптимизации (Set Optimization Options) в помощнике по рабочим процессам HDL. Дополнительные сведения см. в разделе Оптимизация скорости.

Рекомендация 2: Определение ограничений многопроходного пути на основе включения

Если конструкция содержит несколько скоростей выборки или использует определенные реализации блоков HDL или оптимизации скорости, которые вставляют регистры конвейера с более высокой скоростью после генерации кода, она может иметь многоцикловые пути. По умолчанию кодер HDL использует режим одного тактового сигнала, который генерирует главный тактовый сигнал с самой высокой частотой дискретизации и создает объект контроллера синхронизации. Контроллер синхронизации генерирует набор синхросигналов, позволяющих с требуемой скоростью и информацией о фазе производить выборку синхросигнала для блоков, которые работают в более медленное время выборки.

Если критический тракт находится на более низкой скорости передачи сигнала, инструменты синтеза могут не соответствовать требованиям синхронизации. Сбой синхронизации происходит из-за того, что инструменты не могут вывести частоты дискретизации из сгенерированного кода HDL и предположить, что эти пути должны работать с самой высокой скоростью. Для создания файла ограничений, позволяющего инструменту синтеза ослабить ограничения на тактовую частоту многоцикловых путей, можно использовать ограничения на основе включения. Чтобы задать создание ограничений многоциклового пути, в задаче Задать параметры оптимизации (Set Optimization Options) установите флажок Включить ограничения на основе (Enable-based constraints). Запустите рабочий процесс для задачи создания битового потока FPGA. Пример см. в разделе Использование ограничений многоцикловых трактов для обеспечения синхронизации медленных трактов.

Рекомендация 3: Сокращение целевой частоты

Используйте параметр Целевая частота (МГц), чтобы указать целевую частоту для кодера HDL, чтобы изменить настройку модуля синхронизации в опорной конструкции для формирования тактового сигнала с этой частотой. См. также Параметр целевой частоты.

Чтобы устранить ошибки синхронизации, уменьшите значение целевой частоты (МГц), чтобы средство синтеза могло выполнить ограничение синхронизации. Чтобы увидеть, какую целевую частоту можно указать, используйте информацию о слабом состоянии и критическом пути из отчета о синхронизации инструмента синтеза. Поскольку провисание равно разнице между требуемым временем и временем прибытия, можно добавить провисание к требуемому времени, а затем использовать эту сумму в качестве New required time. Используйте взаимность этого New required time в качестве целевого значения частоты для соответствия требованиям синхронизации, поскольку New required time равно времени прибытия. Чтобы вычислить целевую частоту, в окне команд MATLAB ® запустите этот сценарий.

% Specify the required time (ns) and slack (ns) using timing report
required_time = 2;
slack = 2.2;

% Slack is difference between required_time and arrival_time
% By adding slack to required_time you can resolve 
New_required_time = required_time + slack;
Target_frequency = 1 / (New_required_time);

% Since we computed the new time in nanoseconds
Target_frequency_MHz = Target_frequency * 10^3;

В задаче Set Target Frequency укажите это значение для целевой частоты (МГц), а затем запустите рабочий процесс для задачи Build FPGA Bitstream. Если появляется сбой синхронизации, можно использовать этот подход для итерации целевого значения частоты до тех пор, пока конструкция не выполнит требования синхронизации и провал не станет нулевым.

Можно также экспортировать параметры HDL Worflow Advisor в сценарий и продолжить итерацию целевого значения частоты, указав Target_frequency_MHz в качестве значения для TargetFrequency собственность. Затем запустите сценарий.

% Set this frequency as the new target frequency
hdlset_param('hdlcoder_led_blinking', 'TargetFrequency', Target_frequency_MHz);

См. также

|

Связанные темы