Диагностика симуляции

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.

  • Следующий рисунок показывает буферные сигналы после симуляции гистограммы эквализации с использованием буфера видеокадра.

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

См. также

| |

Похожие темы