主要内容

来自FPGA执行的内存性能信息

类似于在模拟中生成的内存性能图,您可以从FPGA上运行的设计中收集内存互连流量信息。然后可以生成类似的性能图。中查看的内存事务信息逻辑分析仪工具类似于从内存控制器模拟突发事务。使用这些图来监控真实的内存性能、调试和改进设计,并将它们与模拟中获得的内存性能进行比较。

包括AXI互连监视器(AIM) IP在您的设计中,在配置参数的型号中,选择包括AXI互连监视器选择下硬件实现>目标硬件资源>FPGA设计(调试).的AXI互连监视器IP在FPGA上运行时从设计中收集信息。你可以从MATLAB中查询这些信息®通过使用JTAG连接。FPGA中的所有内存主控制器都连接到AXI互连监视器IP。这些master可以包括内存通道内存流量发生器您为其生成HDL代码的块或您设计中的任何其他master。

FPGA框图。几个主块连接到一个AXI Interconnect。AXI互连连接到内存控制器和DDR内存,也连接到一个通过JTAG连接到主机的AXI主IP。

SoC建设者工具为您的设计生成一个JTAG测试平台脚本。脚本从AXI互连监视器并启动性能图应用程序,该应用程序绘制带宽、突发数和事务延迟的内存性能图。这些图与模拟中的内存性能图相似。您还可以修改脚本来收集和显示内存事务波形,类似于模拟中内存控制器的突发波形。有关模拟内存性能的信息,请参见模拟性能图缓冲和突发波形

有关示例,请参见使用流量发生器分析内存带宽,演示了如何在模拟和在FPGA上运行时监控内存性能。生成的脚本SoC建设者工具使用JTAG连接来启用设计中的任何流量生成器,然后从AXI互连监视器尽可能快地获取IP。采样间隔取决于JTAG延迟,通常为10 ms到20 ms。脚本然后显示类似于内存控制器块在你的模拟。该图显示每个主服务器的带宽、突发数和事务延迟。

请注意

AXI主机本身没有连接到AXI互连监视器.因此,硬件诊断不包括仅用于测试台的主服务器的内存使用情况图,这些主服务器使用预定的数据初始化内存。

内存性能图

脚本从AXI互连监视器并启动性能图应用程序。

内存带宽图

带宽选项卡,选择要为其绘制带宽图的主机。点击创建图查看所选主服务器在运行期间的带宽(以兆字节/秒为单位)。的带宽使用流量发生器分析内存带宽的例子。

显示名为“使用流量生成器分析内存带宽”示例的带宽的图表。数据通过FPGA上的执行获得。

内存爆发图

爆发选项卡,选择要绘制爆发图的主图。点击创建图查看在运行时期间为所选主机执行的突发数。的爆发计数使用流量发生器分析内存带宽的例子。

显示名为“使用流量生成器分析内存带宽”示例的突发计数的图表。数据通过FPGA上的执行获得。

内存延迟图

延迟选项卡,选择要绘制其延迟图的主机。点击创建图要查看所选主机在运行时期间的延迟。此图像显示了的总延迟硕士1使用流量发生器分析内存带宽的例子。然后可以放大以分析峰值瞬时延迟。

在标题为“使用流量生成器分析内存带宽”的示例中,显示主服务器1的总延迟的图表。数据通过FPGA上的执行获得。

您可以从以下选项中选择:

  • 突发请求第一次传输完成-此选项显示从主服务器发出事务请求到第一次传输数据所花费的时间。这种延迟会导致仲裁或互连延迟。

  • 破裂的执行-该选项显示从第一次数据传输到突发最后一次传输所花费的时间。

  • 爆裂最后转移完成-此选项显示从上次转账到完成交易所需的时间。对于读事务,它是0。

  • 瞬时总时延-该选项显示每次爆发的离散总延迟测量。

所绘制的每个延迟值都是各自延迟的平均值,由采样间隔内的内存事务测量而来。下图显示了硬件上的一个AXI4主协议写和读事务,显示了这些延迟。

写事务

一个AXI4写事务的时序图。

读事务

AXI4读事务的时序图。

在读事务中,突发最后一次传输到完全延迟是零。

数据溢出

配置文件模式下,collectMemoryStatistics函数对内存指标进行采样:每次采样后从硬件中获取带宽、突发和延迟值。之后,该函数重置度量计数器,然后为下一个示例再次启动计数器。如果任何度量计数器超过2的限制32- 1在采样间隔内,计数器溢出,对应的采样指示为在情节中。

破裂的波形

您也可以修改生成的脚本来配置AXI互连监视器为每个突发事务收集事件数据。中查看这些事件逻辑分析仪波形查看器检查仲裁行为。指定要捕获的事务数,跟踪捕获深度,在配置参数的型号,下硬件实现>目标硬件资源>FPGA设计(调试)

逻辑分析仪图显示AXI4突发请求波形。

波形显示事件类型(BurstIdleBurstRequestBurstExecuting,或BurstDone)和突发事务的这些参数:

  • MasterID——发出请求的内存主机的ID号

  • DataWidth——以位为单位的数据宽度

  • BurstLength——突发请求中的数据字数

  • BurstsTransferred——此请求中的突发数(仅对BurstDone事件)

  • BytesTransferred——请求中的字节数(仅对BurstDone事件)

您可以将这些波形与从您的内存控制器模拟块。

配置和查询AXI Interconnect Monitor

AXI互连监视器(AIM)是一个IP核,用于收集基于axis的FPGA设计的性能指标。创建一个socIPCore对象来设置和配置AIM IP地址,并使用socMemoryProfiler对象检索和显示数据。

有关如何在设计中使用MATLAB作为AXI Master配置和查询AIM IP的示例,请参见使用流量发生器分析内存带宽.具体地说,回顾soc_memory_traffic_generator_axi_master.m在设备上配置和监视设计的脚本。

选择内存监控模式

AXI互连监视器可以收集两类数据。选择配置文件模式来收集平均事务延迟、字节数和突发数。在这种模式下,您可以打开一个性能绘图工具,然后配置该工具来绘制带宽、突发计数和事务延迟。选择跟踪模式收集详细的内存事务事件数据,并以波形的形式查看数据。

perfMonMode = 'Profile';%或'Trace'

配置AXI Interconnect Monitor

要从生成的FPGA设计中获得诊断性能指标,必须从MATLAB建立到设备的JTAG连接。加载一个.mat包含从板配置参数派生的结构的文件。该文件由SoC建设者工具。这些结构描述了内存互连和主配置,如缓冲区大小和地址。使用socHardwareBoard对象来建立JTAG连接。

负载(“soc_memory_traffic_generator_zc706_aximaster.mat”);hwObj = socHardwareBoard(Xilinx Zynq ZC706评估试剂盒“连接”、假);AXIMasterObj = socAXIMaster(hwObj);
配置AIM。的socIPCore对象提供执行此初始化的函数。接下来,设置一个socMemoryProfiler对象来收集指标。
apmCoreObj = socIPCore(AXIMasterObj,perf_mon,“PerformanceMonitor”“模式”, perfMonMode);初始化(apmCoreObj);profilerObj = socMemoryProfiler(hwObj,apmCoreObj);

检索诊断数据

要从FPGA上运行的设计中检索性能指标或信号数据,请使用socMemoryProfiler对象的功能。

配置文件模式,调用collectMemoryStatistics循环中的函数。

NumRuns = 100;n = 1:NumRuns collectMemoryStatistics(profilerObj);结束
相对于FPGA事务处理时间,JTAG设计的设置时间较长,如果您的设计中有少量事务处理,那么它们可以在查询监视器时完成。在这种情况下,带宽图只显示了一个样本,吞吐量计算是不准确的。如果出现这种情况,请增加设计执行的事务总数。

跟踪模式,调用collectMemoryStatistics函数一次。该功能可以阻止IP将事务写入FIFOAXI互连监视器IP,虽然交易继续在互连。设置事务FIFO的大小,跟踪捕获深度,在配置参数的型号,下硬件实现>目标硬件资源>FPGA设计(调试)

collectMemoryStatistics (profilerObj);

可视化性能指标

方法可视化性能数据plotMemoryStatistics函数。在配置文件模式下,此功能打开一个性能绘图工具,您可以配置该工具来绘制带宽、突发计数和平均事务延迟。在跟踪模式,此函数打开逻辑分析仪查看突发事务事件数据的工具。

plotMemoryStatistics (profilerObj);

另请参阅

|||

相关的话题