NoC性能监控器调试指南

描述

本文作者:AMD 工程师 Kevin Noonan

本篇博客展示了如何访问 NPI 为 NoC(片上网络)公开的 Performance Monitor(性能监控器)寄存器,这些寄存器用于监控 NoC 的性能。

NoC 包含以下组件:

NMU(NoC 主单元)

NSU(NoC 从单元)

DDRMC(集成存储器控制器)

上述每个组件都有自己的一组 Performance Monitor 寄存器。

什么是 Performance Monitor?

Performance Monitor 是在每个 NoC 中嵌入的一组寄存器,允许用户通过一组给定的指标来观察流量。这些指标包括:

突发计数

待处理的传输事务数

溢出和字节计数(下限和上限)

最大/最小时延值

累积时延(下限和上限)

解决方案:

除了使用基于 Python 的 ChipScoPy 方案外,还可以通过 XSDB(使用 Tcl)或系统上运行的应用程序 (C/C++) 来访问这些指标寄存器。

在本演示中选择通过 XSDB 运行 Tcl 脚本。将该脚本转换为 C++ 相对简单,随后即可将其作为应用程序来运行。

该脚本包含:

硬编码的寄存器地址(这些地址与器件相关,本例中器件为 VPK120)

读写函数

锁定和解锁函数

循环函数

演示设计 (VPK120):

NoC

该设计包含一个 NoC 和两个可综合的 Performance AXI Traffic Generator (TG),用于驱动 AXI 传输事务流量。这些 TG 共享同一个 CSV 文件:

NoC

该 CSV 包含两个场景。第一个场景包括一次写入事务、一次读/写事务和一次读取事务;第二个场景(本演示重点)是循环读/写传输事务。

我们通过切换 Virtual Input/Output 来启用流量生成器并选择 CSV 场景。

设置演示:

下载 recreate.tcl 和 Custom.csv

使用 Source 命令运行 recreate.tcl(打开 AMD Vivado 设计套件,在 Tcl 控制台中运行 source recreate.tcl)

在 Vivado 中,打开生成工程的 XPR

右键单击 design_1,然后单击“Create HDL Wrapper”(创建 HDL 封装文件)。选择“Let Vivado manage wrapper and auto-update”(让 Vivado 管理封装文件并自动更新)选项

运行综合与实现

生成器件镜像

打开硬件管理器

如何运行演示:

我们将启动器件,并使其做好连接准备 (JTAG) 工作,以便允许我们通过直接连接或者通过远程硬件服务器来进行调试。随后,我们将为自己的设计完成 Vivado 硬件管理器设置,并连接到目标硬件。 

我们通过使用 VIO 来触发 Traffic Generator 运行 CSV 中的第二个场景(循环读/写)。

返回到器件后,我们将使用 XSDB(赛灵思调试实用工具)来运行脚本并观察轮询到的传输事务指标。

在器件上:

无论您如何管理器件,请启动它并确保其可连接到 Vivado 硬件管理器。

这里需要运行 hw_server 以便远程连接。

在 Vivado 中:

注释:您可以为其他器件重做此设计,但请确保将脚本中的寄存器值更新为正确的目标寄存器。

如果您对应使用哪些寄存器存有疑问,请参阅:000035076 - Versal NoC:哪些 NPI 地址与 NoC/DDRMC site 位置有关联?:

https://adaptivesupport.amd.com/s/article/000035076?language=zh_CN

打开 Vivado 并转至 Vivado 硬件管理器。打开到您的开发板的目标连接(通过远程 hw_server 或 localhost):

NoC

您应在蓝色下拉栏中看到“Program device”(器件烧录)选项:

NoC

选中“Program device”时,它会自动检测您的 PDI 和调试探针。如未执行自动检测,请尝试重新生成器件镜像:

NoC

如果在后续选项卡中未看到 VIO,请使用 (+) 符号添加。

将全部 3 个 VIO 都翻转为 0 值,然后将 VIO_2 重新翻转为 0。提供的 CSV 包含两个场景;我们需要使用第二个场景,即持续读/写循环。

这样可以确保我们有流量可供测量:

NoC

选择“Toggle auto-retrigger mode for this ILA core”(为此 ILA 核切换自动重新触发模式),然后选择旁边的“Run trigger for this ILA core”(为此 ILA 核运行触发器),即播放按钮。

这样应该会在波形窗口中出现活动,并且应无限循环。 

NoC

在器件上:

现在器件中已有循环运行的流量,我们可以在您的器件命令行上运行 xsdb 来打开 XSDB,在 XSDB 中运行“connect”,然后运行“ta 1”,导航到您的脚本的存储位置(本演示附带的脚本),并通过“source

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分