SoC Blockset™ позволяет моделировать и оценивать транзакции памяти в Simulink® без необходимости развертывания модели на однокристальном устройстве. Используйте эту диагностическую информацию для анализа эффективности ваших моделей и корректируйте по мере необходимости, чтобы соответствовать желаемым производительности системы требованиям. Симуляция генерирует два типа визуализации трафика памяти:
Simulation Эффективности Plots - Обеспечивает высокий уровень эффективности диагностики системы памяти модели. Пропускная способность памяти, счетчики пакетов и задержки транзакций вычисляются из симуляции вашей модели. Вы можете просмотреть эту информацию для каждого мастера памяти в вашей модели или общего представления от контроллера памяти.
Буферная и пакетная формы волны - предоставляет информацию отладки пакетной транзакции от симуляции, включая использование буферных областей.
Можно также захватить фактическую пропускную способность, количество пакетов и измерения задержки из проекта, выполняемого в FPGA, и просмотреть информацию об отдельных транзакциях пакета. Эта информация получена путем включения AXI interconnect monitor IP в проект FPGA и запроса данных по главному соединению AXI JTAG от хоста. Смотрите информацию о эффективности памяти из выполнения FPGA.
SoC Blockset позволяет регистрировать сигналы симуляции и визуализировать записанные сигналы с помощью Logic Analyzer. Чтобы включить логгирование сигнала, Установите Memory diagnostics level на Basic diagnostic signals
в параметрах конфигурации модели, в разделе Hardware Implementation > Target hardware resources > FPGA design (debug).
После симуляции модели найдите Logic Analyzer в верхней части окна Simulink.
Инструмент Logic Analyzer обеспечивает визуализацию сигналов формы, чтобы показать тайминг различных событий модели памяти.
В Logic Analyzer отображаются сигналы от Memory Controller и от блоков Memory Channel.
Пакетные формы волны
Формы волны от контроллера памяти включают информацию для пакетов от хозяев в системе. Формы волны кодируются цветом для дифференцирования различных мастеров. Эти формы волны дают представление о секвенировании каждого из мастеров через общую память. Для каждого главного устройства просмотрите следующие сигналы:
BURST_EXECUTION_EVENT
: Состояние текущего запроса пакета. Допустимыми состояниями являются: none (бездействие), запрос, executing, done. Для получения дополнительной информации о состоянии контроллера памяти см. Memory Controller.
ReqID
: Идентификатор текущего запроса пакета. Увеличивающееся число, которое является уникальным во время симуляции.
burstTransfersCompleted
: Текущее количество переданных пакетов. Если пакеты не сбрасываются в канале памяти, количество переданных пакетов совпадает ReqID
. Если пакеты сброшены, ReqID
становится больше, чем это количество.
BytesTransferred
: текущее количество переданных байтов.
Следующий рисунок показывает сигналы после симуляции анализа полосы пропускания памяти с использованием генераторов трафика.
Формы волны включают информацию о пакете для четырех мастеров, отображаемых в разных цветах. Эта информация коррелирует с графиками задержки контроллера памяти.
Буферные формы волны
Формы волны из канала памяти включают информацию для транзакций чтения и записи буфера в канале. Каждая область памяти разделена на несколько буферов, заданных параметром Number of buffers блока Memory Channel. Это средство записи заполняет буферы, и считыватель опустошает их. Эти формы волны дают представление о секвенировании средства записи и читателя для заданной области. Формы волны буфера включают следующие сигналы:
REGION_BUFFER_EVENT
: Состояние текущего запроса буфера. Допустимыми состояниями являются: none (бездействие), запрос, executing, done. Для получения дополнительной информации о состоянии канала памяти см. Memory Channel.
BufReqID
: Идентификатор текущего запроса буфера. Увеличивающееся число, которое является уникальным во время симуляции.
BufferAddress
: Начальное смещение адреса текущего буфера. Адрес буфера повторяется, когда циклы симуляции проходят через буферы, отражая контуры адресов буферов.
BufGntCurrentBuf
: Текущий активный буфер, заданный от 1 до количества буферов в канале. BufGntCurrentBuf
Точки к буферу, в который записывается (на средство записи стороне), или буферу, из которого читается (на стороне читателя).
BufRelCurrentBuf
: Буфер, выпущенный в данный момент читателем или средством записи, заданный от 1 до количества буферов в канале. Со стороны читателя, когда буфер освобождается, он доступен для записи в средство записи. Со стороны средство записи, когда буфер освобождается, он доступен для чтения читателю.
BufAvail
: Количество буферов, доступных в настоящее время читателю для чтения. Это значение идентично на стороне чтения и средства записи.
BufTransfersCompleted
: текущее количество переданных буферов. Если буферы не отбрасываются в пределах области памяти, количество переданных буферов совпадает BufReqID
. Если буферы сбрасываются, BufReqID
больше, чем это количество.
icFIFOEntries
: Количество пакетов, записанных в соединительный FIFO.
icFIFODroppedCount
: Количество пакетов, сброшенных из соединительного FIFO.
Следующий рисунок показывает буферные сигналы после симуляции гистограммы эквализации с использованием буфера видеокадра.
Можно связать операцию модели памяти с интерфейсом протокола, чтобы понять эффективность вашей модели. Следующий рисунок показывает, как связать операцию модели памяти с интерфейсом протокола.
Logic Analyzer | Memory Channel | Memory Controller