Подобно графикам производительности памяти, сгенерированным в симуляции, можно собрать соединительную информацию трафика памяти из проекта, работающего на FPGA. Можно затем сгенерировать подобную производительность и графики задержки. Можно также получить информацию о транзакции, чтобы просмотреть в инструменте Logic Analyzer. Используйте эти соединительные метрики памяти, чтобы контролировать производительность реальной памяти, отладить и улучшить проект и сравнить их с производительностью памяти, полученной в симуляции.
Чтобы включать IP Соединительного монитора AXI (AIM) в ваш проект, в параметры конфигурации модели, выбирают опцию Include AXI interconnect monitor под Hardware Implementation> Target hardware resources> FPGA design (debug). Соединительный IP монитора AXI собирает информацию из проекта, в то время как это работает на FPGA. Эта информация может быть запрошена от MATLAB® при помощи связи JTAG. Все ведущие устройства памяти в вашем FPGA соединяются с соединительным IP монитора AXI. Эти ведущие устройства могут включать блоки Генератора Трафика Канала и Памяти Памяти что вы сгенерированный HDL-код для или другие ведущие устройства в вашем проекте.
Разработчик SoC генерирует скрипт, который собирает и отображает метрики, возвращенные соединительным монитором AXI. Сгенерированные графики подобны графикам производительности памяти в симуляции, отображая пропускную способность, количество пакетов и задержки транзакции. Можно также изменить скрипт, чтобы собрать и отобразить формы волны управляющего сигнала памяти, подобные формам волны транзакции памяти от симуляции. Для получения информации об инструментах производительности памяти симуляции см. Графики Производительности Симуляции и Буферный и Пакетные Формы волны.
Для примера смотрите, Анализируют Пропускную способность Памяти Используя Генераторы Трафика, которая показывает как производительности памяти монитора и в симуляции и при работе FPGA.
Скрипт, сгенерированный инструментом SoC Builder, использует связь JTAG, чтобы включить любые генераторы трафика в вашем проекте, и затем выбирает информацию о производительности памяти от соединительного IP монитора AXI с такой скоростью, как это может. Интервал выборки зависит от задержки JTAG, которая обычно является от 10 мс до 20 мс. Скрипт затем отображает графики, подобные графикам производительности от блока Memory Controller в вашей симуляции. График отображает пропускную способность, количество пакетов и задержку транзакции для каждого ведущего устройства.
Ведущее устройство JTAG самостоятельно не соединяется с соединительным монитором AXI. Поэтому аппаратная диагностика не включает графики использования памяти для единственных испытательным стендом ведущих устройств, которые инициализируют память с предопределенными данными.
Задержка является в среднем временем от запуска пакетного запроса к передаче First Data по интервалу выборки. Это выражается как абсолютное время. Чтобы преобразовать задержку в такты, разделите временную стоимость на период часов FPGA.
Можно также изменить сгенерированный скрипт, чтобы сконфигурировать соединительный монитор AXI, чтобы собрать данные о событиях для каждой пакетной транзакции. Можно просмотреть эти события в средстве просмотра формы волны Logic Analyzer, чтобы исследовать арбитражное поведение. Задайте количество транзакций, чтобы получить, Trace capture depth, в параметрах конфигурации модели, под Hardware Implementation> Target hardware resources> FPGA design (debug).
Формы волны показывают тип события (BurstIdle
, BurstRequest
, BurstExecuting
или BurstDone
) и эти параметры пакетной транзакции:
MasterID
– Идентификационный номер ведущего устройства памяти, которое выполнило запрос
DataWidth
– Ширина данных в битах
BurstLength
– Количество слов данных в пакетном запросе
BurstsTransferred
– Количество пакетов в этом запросе (допустимый только с событием BurstDone
)
BytesTransferred
– Количество байтов в этом запросе (допустимый только с событием BurstDone
)
Можно сравнить эти формы волны с формами волны, полученными от блока Memory Controller в симуляции.
Соединительный монитор AXI (AIM) является ядром IP, которое собирает показатели производительности для основанного на AXI проекта FPGA. Создайте объект socIPCore
настроить и сконфигурировать IP AIM и использовать объект socMemoryProfiler
получить и отобразить данные.
Для примера того, как сконфигурировать и запросить IP AIM в вашем использовании проекта MATLAB как Ведущее устройство AXI, смотрите, Анализируют Пропускную способность Памяти Используя Генераторы Трафика. А именно, рассмотрите скрипт soc_memory_traffic_generator_axi_master.m
, который конфигурирует и контролирует проект на устройстве.
Монитор производительности может собрать два типа данных. Выберите режим Profile, чтобы собрать среднюю задержку транзакции и количества байтов и пакетов. В этом режиме можно запустить графический инструмент производительности, и затем сконфигурировать инструмент, чтобы построить пропускную способность, разорвать количество и задержку транзакции. Выберите режим Trace, чтобы собрать подробные данные о событиях транзакции памяти и просмотреть данные как формы волны.
perfMonMode = 'Profile'; % or 'Trace'
Чтобы получить диагностические показатели производительности из вашего сгенерированного проекта FPGA, необходимо настроить связь JTAG с устройством от MATLAB.Load файл .mat
, который содержит структуры, выведенные от параметров конфигурации платы. Этот файл был сгенерирован инструментом SoC Builder. Эти структуры описывают межсоединение памяти и ведущую настройку, такую как буферные размеры и адреса. Используйте объект socHardwareBoard
настроить связь JTAG.
load('soc_memory_traffic_generator_zc706_aximaster.mat'); hwObj = socHardwareBoard('Xilinx Zynq ZC706 evaluation kit','Connect',false); AXIMasterObj = socAXIMaster(hwObj);
socIPCore
обеспечивает функцию, которая выполняет эту инициализацию. Затем, настройте объект socMemoryProfiler
собрать метрики. apmCoreObj = socIPCore(AXIMasterObj,perf_mon,'PerformanceMonitor','Mode',perfMonMode); initialize(apmCoreObj); profilerObj = socMemoryProfiler(hwObj,apmCoreObj);
Получите показатели производительности или данные сигнала из проекта, работающего на FPGA, используйте функции объекта socMemoryProfiler
.
Для режима 'Profile'
вызовите функцию collectMemoryStatistics
в цикле.
NumRuns = 100; for n = 1:NumRuns collectMemoryStatistics(profilerObj); end
Для режима 'Trace'
вызовите функцию collectMemoryStatistics
однажды. Эта функция мешает IP писать транзакции в FIFO в соединительном IP монитора AXI, несмотря на то, что транзакции продвигаются межсоединение. Установите размер транзакции FIFO, Trace capture depth, в параметрах конфигурации модели, под Hardware Implementation> Target hardware resources> FPGA design (debug).
collectMemoryStatistics(profilerObj);
Визуализируйте данные о производительности, при помощи функции plotMemoryStatistics
. В режиме 'Profile'
эта функция запускает графический инструмент производительности, и можно сконфигурировать инструмент, чтобы построить пропускную способность, разорвать количество и среднюю задержку транзакции. В режиме 'Trace'
эта функция открывает инструмент Logic Analyzer, чтобы просмотреть пакетные данные о событиях транзакции.
plotMemoryStatistics(profilerObj);
Контроллер памяти | collectMemoryStatistics
| plotMemoryStatistics
| socMemoryProfiler