AXI Protocol Checker IP 详细介绍
概述
AXI Protocol Checker专为监控 AXI(Advanced eXtensible Interface)接口设计,旨在检测 AXI3、AXI4 和 AXI4-Lite 协议的违规行为,并在发生违规时提供明确的错误指示。它是 FPGA 和 SoC 系统设计中的重要调试工具,广泛应用于验证 AXI 接口的协议合规性,确保系统设计的可靠性和稳定性。
AXI Protocol Checker 的核心功能是通过实时监控 AXI 接口信号,检查协议定义的规则(如握手信号、突发长度、地址对齐等),并在检测到违规时生成错误报告。它基于 ARM 提供的 “AMBA 4 AXI4, AXI4-Lite, and AXI4-Stream Protocol Assertion” 库中的 SystemVerilog 断言(Assertions),将其转换为可综合的硬件逻辑,支持仿真和硬件部署。
该 IP 核的主要功能包括:
- 协议合规性检查:监控 AXI3、AXI4 和 AXI4-Lite 接口,检测协议违规(如信号稳定性、突发长度错误)。
- 错误报告:提供详细的错误指示,记录违规类型和时间戳。
- 灵活配置:支持用户自定义检查规则和消息级别,适配不同调试需求。
- 低资源占用:设计轻量,适合嵌入复杂系统而不显著增加资源消耗。
主要特性
AXI Protocol Checker IP 具有以下关键特性
-
协议支持:
- 支持 AMBA AXI3、AXI4 和 AXI4-Lite 协议的全面检查。
- 检查基于 ARM 提供的 SystemVerilog 协议断言(AMBA 4 AXI4, AXI4-Lite, and AXI4-Stream Protocol Assertion 库),转换为可综合的 RTL 代码。
- 不支持 AXI4-Stream 协议(需使用 AXI4-Stream Protocol Checker)。
-
检查功能:
- 信号稳定性:检查通道信号(如 AR、AW、R、W、B)在
VALID
有效且READY
低电平时的稳定性。 - 读写事务顺序:验证读事务的顺序性,确保 ID 一致性。
- 突发长度与类型:检查突发长度(
ARLEN
、AWLEN
)是否符合协议(AXI3 最大 16,AXI4 最大 256,WRAP 类型限制为 2、4、8、16)。 - 地址对齐:验证突发地址(
ARADDR
、AWADDR
)是否符合 WRAP 或 INCR 类型的要求。 - 握手信号:检查
VALID
和READY
握手的正确性,检测超时(默认 200 个时钟周期。 - 复位行为:验证复位释放后首个周期的信号状态(如
ARVALID
、WVALID
需去使能)。 - 响应检查:监控 AXI 响应信号(
RRESP
、BRESP
),报告错误响应(如 SLVERR、DECERR)。
- 信号稳定性:检查通道信号(如 AR、AW、R、W、B)在
-
错误报告:
- 提供错误状态寄存器,记录违规类型(如信号不稳定、突发错误、超时)。
- 支持外部错误信号(
pc_status
)和中断输出,通知处理器或调试工具。 - 可通过 AXI4-Lite 接口读取错误详细信息。
-
灵活配置:
- 通过
AXIPCConfig
(AXI Protocol Checker)或AXILitePCConfig
(AXI4-Lite)配置检查规则。 - 支持可编程的消息级别(Simulation Message Level),用于仿真期间的错误报告(Silent、Low、Medium、High)。
- 支持禁用特定检查,减少资源占用或聚焦关键规则。
- 通过
-
时钟与复位:
- 使用单一时钟(
aclk
)驱动所有接口,支持同步设计。 - 支持低电平有效复位(
aresetn
),与 AXI 接口信号同步。 - 最大频率:200 MHz(7 系列,-1 速度等级),更高频率支持 UltraScale+ 设备。
- 使用单一时钟(
-
工具与设备支持:
- 设计工具:Vivado Design Suite、ISE Design Suite。
- 支持设备:Artix-7、Kintex-7、Virtex-7、Zynq-7000、Kintex UltraScale、Virtex UltraScale、Zynq UltraScale+ MPSoC、Versal。
功能模块
AXI Protocol Checker IP 的功能模块围绕协议监控和错误检测设计,核心包括信号采样、规则检查和错误报告。以下是主要模块及其功能:
1. AXI 接口监控模块
- 功能:实时采样 AXI 接口信号,捕获协议相关信息。
- 机制:
- 连接到目标 AXI 接口(AXI3、AXI4 或 AXI4-Lite),监控读通道(AR、R)和写通道(AW、W、B)。
- 采样关键信号,如
ARVALID
、AWVALID
、RVALID
、WVALID
、RREADY
、WREADY
、RRESP
、BRESP
、ARLEN
、AWLEN
、ARADDR
、AWADDR
等。 - 支持任意数据宽度(32、64、128、256、512、1024 位)和地址宽度。
- 应用:捕获 AXI 事务的实时状态,为协议检查提供数据。
2. 协议检查引擎
- 功能:根据 AMBA AXI 规范执行协议规则检查。
- 机制:
- 实现可综合的 SystemVerilog 断言逻辑,覆盖以下检查:
- 信号稳定性:确保
VALID
高电平且READY
低电平时,通道信号(如ARADDR
、WDATA
)保持稳定(参考)。 - 握手超时:检测
VALID
信号无对应READY
的超时情况(默认 200 周期)。 - 突发规则:验证
ARLEN
、AWLEN
(突发长度)和ARSIZE
、AWSIZE
(传输大小)符合协议。 - 地址对齐:检查 WRAP 突发类型的地址对齐(如 4 字节对齐)。
- 响应检查:检测非法响应(如 SLVERR、DECERR)或缺失响应。
- 信号稳定性:确保
- 支持 AXI3 和 AXI4 的差异(如 AXI3 最大突发 16,AXI4 支持 256)。
- AXI4-Lite 专用检查:
- 确保单次传输(无突发,
ARLEN
、AWLEN
无效)。 - 验证地址和数据通道的握手顺序(参考)。
- 确保单次传输(无突发,
- 实现可综合的 SystemVerilog 断言逻辑,覆盖以下检查:
- 应用:识别协议违规,确保 AXI 接口行为符合规范。
3. 错误报告模块
- 功能:记录和报告协议违规信息。
- 机制:
- 维护错误状态寄存器,存储违规类型、时间戳和相关信号值。
- 输出
pc_status
信号(可配置宽度,典型 32 位),指示错误状态。 - 支持中断信号(
irq
),通知处理器或调试工具。 - 通过 AXI4-Lite 接口(可选)提供错误详细信息,供软件读取。
- 仿真模式下支持可编程消息级别(Silent、Low、Medium、High),输出详细日志。
- 应用:提供调试信息,定位协议问题。
4. 配置与控制模块
- 功能:管理检查规则和运行模式。
- 机制:
- 通过 AXI4-Lite 接口(
S_AXI
)或 Vivado 参数配置检查规则(如启用/禁用特定检查)。 - 支持
AXIPCConfig
(AXI3/AXI4)或AXILitePCConfig
(AXI4-Lite)定义检查范围。 - 提供运行时控制,如重置错误状态或调整消息级别。
- 通过 AXI4-Lite 接口(
- 应用:适配不同调试场景,优化资源使用。
5. 时钟与复位模块
- 功能:管理时钟和复位信号。
- 机制:
- 时钟:
aclk
,驱动所有逻辑,与目标 AXI 接口时钟同步。 - 复位:
aresetn
,低电平有效,同步复位所有寄存器。 - 支持单一时钟域设计,无跨时钟域复杂性。
- 时钟:
- 应用:确保与 AXI 系统时钟和复位信号一致。
接口信号
以下是 AXI Protocol Checker IP 的主要接口信号及其功能:
-
AXI 接口(监控接口):
- 类型:被动监控接口,连接到目标 AXI 接口(AXI3、AXI4 或 AXI4-Lite)。
- 信号(以 AXI4 为例,AXI3 和 AXI4-Lite 类似但子集不同):
- 读地址通道:
ACLK
:时钟信号,与目标接口同步。ARESETN
:低电平有效复位。ARVALID
:读地址有效。ARREADY
:读地址准备好。ARADDR[C_ADDR_WIDTH-1:0]
:读地址。ARLEN[7:0]
:突发长度(AXI4 支持 0-255,AXI3 支持 0-15)。ARSIZE[2:0]
:传输大小(字节对齐)。ARBURST[1:0]
:突发类型(FIXED、INCR、WRAP)。ARID[C_ID_WIDTH-1:0]
:事务 ID。
- 读数据通道:
RVALID
:读数据有效。RREADY
:读esteem:1 read data准备好。RDATA[C_DATA_WIDTH-1:0]
:读数据(32-1024 位)。RRESP[1:0]
:读响应(OKAY、SLVERR、DECERR)。RID[C_ID_WIDTH-1:0]
:读事务 ID。
- 写地址通道:
AWVALID
、AWREADY
:写地址握手。AWADDR
、AWLEN
、AWSIZE
、AWBURST
、AWID
:写地址参数。
- 写数据通道:
WVALID
、WREADY
:写数据握手。WDATA[C_DATA_WIDTH-1:0]
:写数据。WSTRB[C_DATA_WIDTH/8-1:0]
:写选通(字节有效)。WLAST
:突发最后一拍。
- 写响应通道:
BVALID
、BREADY
:写响应握手。BRESP[1:0]
:写响应。BID[C_ID_WIDTH-1:0]
:写事务 ID。
- 读地址通道:
- 功能:监控目标 AXI 接口的信号,检测协议违规。
- 参数:
C_ADDR_WIDTH
:地址宽度(通常 32 或 64 位)。C_DATA_WIDTH
:数据宽度(32-1024 位)。C_ID_WIDTH
:事务 ID 宽度(典型 4-8 位)。
-
错误状态接口:
pc_status[C_STATUS_WIDTH-1:0]
:错误状态输出(典型 32 位)。- 功能:指示检测到的协议违规类型。
- 时钟:
aclk
。
-
AXI4-Lite 控制接口(S_AXI, optional):
- 类型:AXI4-Lite 从接口,用于配置和错误读取。
- 信号:
S_AXI_ARADDR[31:0]
:读地址。S_AXI_ARVALID
、ARREADY
:读地址握手。S_AXI_RDATA[31:0]
:读数据(固定 32 位)。S_AXI_RVALID
、RREADY
:读数据握手。S_AXI_AWADDR
、AWVALID
、AWREADY
:写地址通道。S_AXI_WDATA
、WVALID
、WREADY
:写数据通道。S_AXI_BRESP
、BVALID
、BREADY
:写响应通道。
- 功能:配置检查规则,读取错误状态。
- 时钟:
aclk
。
-
中断接口(optional):
irq
:中断信号,通知协议违规。- 功能:触发处理器或调试工具处理错误。
-
时钟与复位接口:
aclk
:监控和控制接口时钟。aresetn
:低电平有效复位。- 功能:提供时钟和复位控制。
配置方法
1. 在 Vivado 中添加 IP
- 添加 AXI Protocol Checker:
- 在 Vivado IP Catalog 中搜索 AXI Protocol Checker,添加到设计。
- 双击 IP 核,打开定制化对话框。
- 配置参数:
- 协议类型:
Protocol
:选择 AXI3、AXI4 或 AXI4-Lite。
- 接口参数:
Data Width
:目标 AXI 接口的数据宽度(32、64、128、256、512、1024 位)。Address Width
:地址宽度(默认 32 或 64 位)。ID Width
:事务 ID 宽度(默认 4 位)。
- 检查规则:
Enable Checks
:选择启用的检查项(如信号稳定性、突发长度、地址对齐)。Timeout Cycles
:设置握手超时周期(默认 200)。
- 错误报告:
Status Width
:错误状态信号宽度(默认 32 位)。Enable Interrupt
:启用中断输出(irq
)。
- 控制接口:
Enable AXI4-Lite Interface
:启用 AXI4-Lite 控制接口(用于动态配置)。
- 仿真设置:
Message Level
:设置仿真消息级别(Silent、Low、Medium、High)。
- 协议类型:
- RTL 生成:
- Vivado 生成 Verilog 代码,实例化监控和检查逻辑。
- 输出文件位于项目目录(如
project_name.srcs/sources_1/ip/axi_protocol_checker
)。
2. 连接与驱动
- 硬件连接:
- 监控接口:
- 将 AXI 接口信号(
ARVALID
、RDATA
等)连接到目标 AXI 接口(主设备或从设备)。 - 确保信号名称与目标接口一致(参考 Vivado 连接向导)。
- 将 AXI 接口信号(
- 错误状态:
- 连接
pc_status
到调试逻辑(如 ILA 集成逻辑分析仪)或外部引脚。
- 连接
- AXI4-Lite 控制接口(若启用):
- 连接到处理器(如 Zynq PS、MicroBlaze)通过 AXI Interconnect。
- 中断(若启用):
- 连接
irq
到中断控制器(如 Zynq GIC)。
- 连接
- 分配时钟和复位:
aclk
:与目标 AXI 接口时钟同步。aresetn
:与目标接口复位信号同步。
- 使用 Vivado 地址编辑器为
S_AXI
分配地址空间(若启用 AXI4-Lite)。
- 监控接口:
- 驱动程序:
- 裸机驱动:
- 通过 AXI4-Lite 接口访问控制寄存器,配置检查规则或读取错误状态。
- Xilinx 提供示例代码(
embeddedsw/XilinxProcessorIPLib/drivers
)。
- Linux 驱动:
- 通常不需要专用驱动,可通过
devmem
或用户态程序访问 AXI4-Lite 寄存器。
- 通常不需要专用驱动,可通过
- 调试支持:
- 使用 Vivado ILA 捕获
pc_status
和 AXI 信号,分析协议违规。 - 在仿真中启用高消息级别(High),获取详细错误日志。
- 使用 Vivado ILA 捕获
- 裸机驱动:
3. 仿真与验证
- 仿真环境:
- 使用 Vivado Simulator、ModelSim 或 Aldec Riviera-PRO 进行 RTL 仿真。
- 编写 Verilog/SystemVerilog 测试平台,驱动目标 AXI 接口。
- 使用 AXI Verification IP(PG267)生成标准 AXI 激励,验证协议合规性。
- 验证内容:
- 故意引入协议违规(如
VALID
无READY
超时、非法ARLEN
),检查pc_status
输出。 - 验证信号稳定性、握手顺序和突发规则的正确检测。
- 测试错误报告功能,确保状态寄存器和中断触发准确。
- 检查 AXI4-Lite 接口(若启用)的读写功能。
- 故意引入协议违规(如
- 波形分析:
- 使用 Vivado ILA 或仿真波形,分析
pc_status
与 AXI 信号的关系。 - 确认错误触发时间和违规类型(如信号不稳定、超时)。
- 验证复位后信号状态(
ARVALID
、WVALID
去使能)。
- 使用 Vivado ILA 或仿真波形,分析
资源利用情况
AXI Protocol Checker 的资源占用较轻,取决于协议类型、数据宽度和检查规则数量。以下是典型资源利用情况(基于 7 系列、UltraScale 和 Zynq 设备,Vivado 综合):
- 资源类型:
- LUT(查找表):200-1000,取决于检查规则和接口宽度。
- FF(触发器):300-1500,与 LUT 占用相关。
- BRAM:0(无需 BRAM)。
- DSP 切片:0(不使用)。
- 配置示例:
- AXI4,64 位数据宽度,32 位地址,所有检查启用:约 500 LUT、700 FF。
- AXI4-Lite,32 位数据宽度,基本检查(信号稳定性和响应):约 200 LUT、300 FF。
- AXI3,128 位数据宽度,含 AXI4-Lite 控制接口:约 800 LUT、1200 FF。
- 最大频率:
- 7 系列(-1 速度等级):200 MHz。
- UltraScale+:300 MHz 或更高。
应用场景
AXI Protocol Checker IP 适用于以下场景:
-
IP 验证:
- 验证自定义 AXI IP(如 DMA、加速器)的协议合规性。
- 检测主设备或从设备的协议错误(如非法突发、超时)。
-
系统调试:
- 在复杂 SoC 设计(如 Zynq SoC、Versal)中,监控 AXI Interconnect 和外设接口。
- 定位系统挂起(Hang)或数据损坏的根本原因。
-
硬件仿真:
- 结合 Vivado ILA 和 AXI Verification IP,实时捕获 AXI 信号和错误状态。
- 支持硬件在环(HIL)验证,确保协议一致性。
-
生产测试:
- 在 FPGA 生产测试中,嵌入 Protocol Checker 验证 AXI 接口的健壮性。
- 通过中断或错误状态触发自动化测试流程。
-
教学与研究:
- 用于学习和研究 AXI 协议的行为,验证协议规范。
- 在教学实验中模拟协议违规,分析错误影响。
注意事项
-
协议选择:
- 确保
Protocol
参数(AXI3、AXI4、AXI4-Lite)与目标接口匹配,避免误报。 - AXI4-Lite 不支持突发,禁用相关检查(如
ARLEN
、AWLEN
)以减少资源占用。
- 确保
-
检查规则优化:
- 仅启用必要的检查规则,减少 LUT 和 FF 占用。
- 对于已知稳定的接口,可禁用复杂检查(如地址对齐),聚焦关键问题(如握手超时)。
-
仿真消息级别:
- 在早期调试中使用 High 级别获取详细日志,后期切换到 Silent 减少仿真开销。
- 检查仿真日志中的错误描述,结合波形定位问题。
-
时钟与复位:
- 确保
aclk
与目标 AXI 接口时钟同步,避免采样错误。 aresetn
需保持至少 16 个时钟周期,同步释放以防亚稳态。
- 确保
-
错误处理:
- 定期读取
pc_status
或错误寄存器,避免状态溢出。 - 若使用中断,确保中断控制器正确配置,响应
irq
信号。
- 定期读取
总结
AXI Protocol Checker IP(PG101)是一款轻量高效的 AXI 接口监控工具,支持 AXI3、AXI4 和 AXI4-Lite 协议的合规性检查,通过实时信号采样、协议规则验证和错误报告,帮助用户快速定位协议违规问题。其低资源占用、灵活配置和强大调试功能使其成为 FPGA 和 SoC 设计中不可或缺的验证工具,广泛应用于 IP 开发、系统调试和生产测试。
用户在配置时需注意协议类型、检查规则和时钟同步,合理选择仿真消息级别,并结合 Vivado ILA 和 AXI Verification IP 进行验证。配合 Xilinx 提供的驱动和示例代码,AXI Protocol Checker 可显著提升设计可靠性和调试效率。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC