AXI Verification IP 详细介绍
概述
AXI Verification IP(AXI VIP)专为验证 AXI 协议接口的正确性设计,支持 AXI4、AXI3、AXI4-Lite 和 AXI4-Stream 协议,能够模拟 AXI 主设备(Master)、从设备(Slave)或直通(Passthrough)模式。它在 FPGA 和 SoC 系统设计的验证阶段广泛应用,特别是在复杂 AXI 网络、Zynq SoC 和 Versal 架构的开发中,用于验证 AXI 接口的协议合规性、功能正确性和性能表现。
AXI VIP 的核心功能是通过 SystemVerilog 实现的灵活验证组件,提供标准化的 AXI 事务生成、协议检查和响应仿真,配合 Vivado 仿真工具或第三方仿真器(如 ModelSim、QuestaSim)简化验证流程。它基于 UVM(Universal Verification Methodology)方法学,支持用户自定义事务、约束和覆盖率分析,适合高级验证需求。
该 IP 核的主要功能包括:
- 协议仿真:模拟 AXI 主设备、从设备或直通模式,支持 AXI4、AXI3、AXI4-Lite 和 AXI4-Stream。
- 协议检查:实时验证 AXI 信号的协议合规性(如 Valid-Ready 握手、突发长度)。
- 事务生成:生成可控的 AXI 事务(如读/写突发、流传输),支持随机化和约束。
- 覆盖率分析:提供功能覆盖率和协议覆盖率,评估验证完备性。
主要特性
AXI Verification IP 具有以下关键特性:
-
协议支持:
- 支持 AMBA AXI4、AXI3、AXI4-Lite 和 AXI4-Stream 协议(参考 ARM AMBA AXI 规范,IHI0022)。
- 支持以下验证模式:
- Master Mode:模拟 AXI 主设备,生成读/写事务或流传输。
- Slave Mode:模拟 AXI 从设备,响应主设备的事务。
- Passthrough Mode:作为中间监控器,捕获并检查 AXI 信号,同时透明传递事务。
- 支持所有 AXI 通道(AR、R、AW、W、B、T)。
-
协议检查:
- 实时检查 AXI 信号的协议合规性,包括:
- Valid-Ready 握手规则(如
ARVALID
和ARREADY
的时序)。 - 突发长度(
ARLEN
/AWLEN
:AXI4 最大 256,AXI3 最大 16)。 - 地址对齐(
ARADDR
/AWADDR
符合ARSIZE
/AWSIZE
)。 - 响应信号(
RRESP
/BRESP
:OKAY、SLVERR、DECERR)。 - AXI4-Stream 的
TVALID
/TREADY
和TLAST
行为。
- Valid-Ready 握手规则(如
- 提供错误报告,记录协议违规(如非法
RRESP
或信号不稳定)。
- 实时检查 AXI 信号的协议合规性,包括:
-
事务生成与控制:
- 主设备模式:
- 生成可控的读/写事务(突发长度、地址、数据模式可配置)。
- 支持随机化事务(通过 SystemVerilog 约束)。
- 支持用户定义的数据模式(如固定值、递增、随机)。
- 从设备模式:
- 响应主设备的事务,支持可配置的延迟和响应类型(OKAY、SLVERR、DECERR)。
- 提供内存模型,模拟从设备的读/写行为。
- 直通模式:
- 捕获 AXI 事务,记录信号和协议状态。
- 支持插入用户定义的检查或修改事务。
- 主设备模式:
-
覆盖率与调试:
- 提供功能覆盖率(Functional Coverage),跟踪事务类型、突发长度、响应状态等。
- 提供协议覆盖率(Protocol Coverage),验证 AXI 信号的边界条件。
- 支持日志记录(Log File),输出事务详情和错误信息。
- 集成 Vivado 波形查看器,分析信号时序和协议行为。
-
仿真环境支持:
- 仿真工具:Vivado Simulator、ModelSim、QuestaSim、VCS。
- 验证方法学:基于 SystemVerilog 和 UVM,支持高级验证。
- 语言支持:SystemVerilog 模型,包含预编译库和示例代码。
- 提供 TCL 脚本,简化仿真配置和运行。
-
工具与设备支持:
- 设计工具:Vivado Design Suite。
- 支持设备:Artix-7、Kintex-7、Virtex-7、Zynq-7000、Kintex UltraScale、Virtex UltraScale、Zynq UltraScale+ MPSoC、Versal AI Core、Versal Premium、Versal Prime。
功能模块
AXI Verification IP 的功能模块基于 SystemVerilog 实现,围绕事务生成、协议检查和仿真控制设计,核心包括主设备代理(Master Agent)、从设备代理(Slave Agent)和监控器(Monitor)。以下是主要模块及其功能:
1. 主设备代理(Master Agent)
- 功能:模拟 AXI 主设备,生成 AXI 事务。
- 机制:
- 事务生成:
- 创建读/写事务(
ARADDR
、AWADDR
、WDATA
)或 AXI4-Stream 包(TDATA
、TLAST
)。 - 支持随机化参数(如突发长度、地址、数据),通过 SystemVerilog 约束控制。
- 提供 API(如
create_transaction
)配置事务属性。
- 创建读/写事务(
- 信号驱动:
- 驱动 AXI 通道信号(如
ARVALID
、WVALID
、TVALID
)。 - 实现 Valid-Ready 握手,模拟真实主设备行为。
- 驱动 AXI 通道信号(如
- 响应处理:
- 接收从设备的响应(
RDATA
、RRESP
、BRESP
),验证正确性。
- 接收从设备的响应(
- 事务生成:
- 应用:测试 AXI 从设备的响应能力和协议合规性。
2. 从设备代理(Slave Agent)
- 功能:模拟 AXI 从设备,响应主设备的事务。
- 机制:
- 事务响应:
- 接收主设备的事务(
ARADDR
、AWADDR
、WDATA
)。 - 生成可配置的响应(
RDATA
、RRESP
、BRESP
),支持 OKAY、SLVERR、DECERR。 - 支持 AXI4-Stream 的
TREADY
响应。
- 接收主设备的事务(
- 内存模型:
- 提供内部内存模型,模拟读/写操作的存储行为。
- 支持用户定义的内存大小和初始化数据。
- 延迟控制:
- 配置响应延迟(
RREADY
、BREADY
的等待周期)。 - 模拟真实从设备的时序行为。
- 配置响应延迟(
- 事务响应:
- 应用:测试 AXI 主设备的事务生成和响应处理能力。
3. 监控器(Monitor)
- 功能:捕获和分析 AXI 接口信号,执行协议检查和覆盖率收集。
- 机制:
- 信号捕获:
- 实时记录 AXI 通道信号(如
ARVALID
、RDATA
、TVALID
)。 - 生成事务记录,包含地址、数据、响应等信息。
- 实时记录 AXI 通道信号(如
- 协议检查:
- 验证 AXI 协议规则(如信号稳定性、突发顺序)。
- 检测违规(如非法
RRESP
或ARLEN
超出范围)。 - 输出错误日志,标记违规类型和时间戳。
- 覆盖率收集:
- 跟踪功能覆盖点(如突发长度、响应类型)。
- 记录协议覆盖点(如 Valid-Ready 边界条件)。
- 信号捕获:
- 应用:监控 AXI 网络的行为,验证协议合规性和功能完备性。
4. 直通模块(Passthrough)
- 功能:在直通模式下,透明传递 AXI 信号,同时执行监控和检查。
- 机制:
- 作为中间代理,连接主设备和从设备。
- 捕获并记录事务,执行协议检查和覆盖率分析。
- 支持用户插入自定义检查或修改事务(如调整
RRESP
)。
- 应用:调试复杂 AXI 网络,分析主从交互。
5. 仿真控制模块
- 功能:管理仿真流程,提供用户接口和日志。
- 机制:
- 提供 SystemVerilog 类和 API(如
axi_vip_if
、axi_transaction
),简化事务配置。 - 支持 TCL 脚本,自动化仿真设置和运行。
- 生成详细日志,记录事务详情、错误和覆盖率统计。
- 提供 SystemVerilog 类和 API(如
- 应用:简化验证流程,支持自动化测试。
接口信号
AXI Verification IP 的接口信号与 AXI 协议标准一致,支持 AXI4、AXI3、AXI4-Lite 和 AXI4-Stream。以下是主要接口信号及其功能:
-
AXI 接口(主设备或从设备模式):
- 类型:AXI4、AXI3、AXI4-Lite 或 AXI4-Stream 接口。
- 信号(以 AXI4 为例,AXI3、AXI4-Lite 和 AXI4-Stream 为子集):
- 读地址通道:
AXI_ARADDR[C_ADDR_WIDTH-1:0]
:读地址(32 或 64 位)。AXI_ARVALID
、ARREADY
:读地址握手。AXI_ARLEN[7:0]
:突发长度(AXI4:0-255;AXI3:0-15)。AXI_ARSIZE[2:0]
:传输大小。AXI_ARBURST[1:0]
:突发类型(INCR、WRAP、FIXED)。AXI_ARID[C_ID_WIDTH-1:0]
:事务 ID。
- 读数据通道:
AXI_RDATA[C_DATA_WIDTH-1:0]
:读数据(32-1024 位)。AXI_RRESP[1:0]
:读响应(OKAY、SLVERR、DECERR)。AXI_RVALID
、RREADY
:读数据握手。AXI_RID[C_ID_WIDTH-1:0]
:读事务 ID。
- 写地址通道:
AXI_AWADDR
、AWVALID
、AWREADY
、AWLEN
、AWSIZE
、AWBURST
、AWID
:写地址参数。
- 写数据通道:
AXI_WDATA
、WVALID
、WREADY
:写数据握手。AXI_WSTRB[C_DATA_WIDTH/8-1:0]
:写选通。AXI_WLAST
:突发最后一拍。
- 写响应通道:
AXI_BRESP
、BVALID
、BREADY
:写响应。AXI_BID
:写事务 ID。
- AXI4-Stream 通道:
AXI_TDATA[C_DATA_WIDTH-1:0]
:流数据。AXI_TVALID
、TREADY
:流握手。AXI_TLAST
:包结束标志。AXI_TKEEP[C_DATA_WIDTH/8-1:0]
:字节有效信号。
- 读地址通道:
- 功能:
- 主设备模式:驱动事务信号(如
ARVALID
、WDATA
)。 - 从设备模式:响应事务信号(如
RDATA
、BRESP
)。 - 直通模式:捕获并传递信号。
- 主设备模式:驱动事务信号(如
- 参数:
C_PROTOCOL
:协议类型(0=AXI4,1=AXI3,2=AXI4-Lite,3=AXI4-Stream)。C_ADDR_WIDTH
:地址宽度。C_DATA_WIDTH
:数据宽度。C_ID_WIDTH
:事务 ID 宽度。
-
时钟与复位接口:
aclk
:全局时钟,驱动 AXI 接口。aresetn
:低电平有效复位,同步到aclk
。- 功能:提供时钟和复位控制。
配置方法
1. 在 Vivado 中添加 IP
- 添加 AXI Verification IP:
- 在 Vivado IP Catalog 中搜索 AXI Verification IP,添加到设计。
- 双击 IP 核,打开定制化对话框。
- 配置参数:
- 模式选择:
C_MODE
:选择 Master、Slave 或 Passthrough 模式。
- 协议配置:
C_PROTOCOL
:选择 AXI4、AXI3、AXI4-Lite 或 AXI4-Stream。
- 接口参数:
C_DATA_WIDTH
:数据宽度(32、64、128、256、512、1024 位)。C_ADDR_WIDTH
:地址宽度(默认 32 或 64 位)。C_ID_WIDTH
:事务 ID 宽度(默认 4 位)。
- 验证选项:
C_ENABLE_PROTOCOL_CHECKER
:启用/禁用协议检查(默认启用)。C_ENABLE_COVERAGE
:启用/禁用覆盖率收集。C_RESPONSE_LATENCY
(从设备模式):配置响应延迟(默认 0-10 周期)。
- 模式选择:
- RTL 生成:
- Vivado 生成 SystemVerilog 模型,包含主设备、从设备和监控器组件。
- 输出文件位于项目目录(如
project_name.srcs/sources_1/ip/axi_vip
)。
2. 连接与仿真
- 硬件连接:
- 主设备模式:
- 连接 AXI 接口到被测从设备(如 AXI Interconnect、DDR 控制器)。
- 从设备模式:
- 连接 AXI 接口到被测主设备(如 AXI DMA、Zynq PS)。
- 直通模式:
- 插入主设备和从设备之间,连接两端的 AXI 接口。
- 分配时钟和复位:
aclk
:连接到被测系统的时钟源。aresetn
:连接到被测系统的复位信号。
- 主设备模式:
- 仿真设置:
- 测试平台:
- 创建 SystemVerilog 测试平台(Testbench),实例化 AXI VIP 和被测设计(DUT)。
- 使用 AXI VIP 的 SystemVerilog 类(如
axi_vip_master
、axi_vip_slave
)配置事务。
- 事务配置:
- 主设备模式:调用 API(如
create_read_transaction
)生成读/写事务,设置地址、突发长度、数据模式。 - 从设备模式:配置内存模型和响应参数(如
set_response
设置 OKAY 或 SLVERR)。 - 直通模式:启用监控器,设置协议检查和覆盖率收集。
- 主设备模式:调用 API(如
- 仿真运行:
- 使用 Vivado Simulator 或第三方仿真器(如 QuestaSim)运行测试。
- 通过 TCL 脚本自动化仿真流程。
- 测试平台:
- 验证工具:
- 使用 Vivado 波形查看器分析 AXI 信号。
- 检查 AXI VIP 的日志文件,验证协议错误和覆盖率统计。
3. 验证流程
- 协议验证:
- 验证 AXI Valid-Ready 握手的时序(如
ARVALID
高后ARREADY
的响应)。 - 检查突发长度和地址对齐(
ARLEN
、ARSIZE
)。 - 测试响应信号(
RRESP
、BRESP
)的正确性。
- 验证 AXI Valid-Ready 握手的时序(如
- 功能验证:
- 主设备模式:生成多种事务(如长突发、随机地址),验证从设备响应。
- 从设备模式:模拟不同响应(如 SLVERR),验证主设备处理能力。
- 直通模式:捕获事务,验证主从交互的正确性。
- 覆盖率分析:
- 检查功能覆盖率(如是否覆盖所有突发长度)。
- 验证协议覆盖率(如是否测试边界条件,如
ARLEN=255
)。
- 错误注入:
- 模拟协议违规(如非法
RRESP
),验证被测设计的容错能力。 - 测试超时或延迟场景,检查系统稳定性。
- 模拟协议违规(如非法
资源利用情况
AXI Verification IP 为纯仿真 IP,不涉及硬件综合,因此不占用 FPGA 资源(如 LUT、FF、BRAM)。其资源需求主要体现在仿真环境的计算和存储要求:
- 仿真资源:
- 内存占用:典型 500 MB - 2 GB,取决于事务数量和日志记录。
- 仿真时间:取决于测试用例复杂度和仿真器性能(Vivado Simulator 较慢,QuestaSim/VCS 更快)。
- 文件大小:
- AXI VIP 库文件(SystemVerilog 模型):约 10-20 MB。
- 日志和覆盖率报告:100 KB - 10 MB,取决于仿真规模。
应用场景
AXI Verification IP 适用于以下场景:
-
AXI 接口验证:
- 验证自定义 AXI IP(如 AXI DMA、AXI GPIO)的协议合规性和功能正确性。
- 测试 AXI 主设备和从设备的交互行为。
-
复杂 SoC 系统验证:
- 在 Zynq UltraScale+ MPSoC 或 Versal 设计中,验证 PS 与 PL 的 AXI 互连网络。
- 测试 AXI SmartConnect(PG247)或 AXI Interconnect(PG059)的事务路由和转换。
-
视频处理验证:
- 验证 AXI4-Stream 视频流水线(如 VDMA、视频处理模块)的流传输行为。
- 测试高带宽视频流(如 4K、8K)的数据完整性。
-
PCIe 通信验证:
- 验证 PCIe 通道的 AXI 接口(如 DMA 到 PL 的数据传输)。
- 测试 SMMU(系统内存管理单元)的事务追踪功能。
-
UVM 验证环境:
- 在高级 UVM 测试平台中,使用 AXI VIP 作为标准化的 AXI 代理。
- 支持自动化回归测试和覆盖率驱动验证。
注意事项
-
协议配置:
- 确保
C_PROTOCOL
与被测接口匹配(AXI4、AXI3、AXI4-Lite、AXI4-Stream)。 - AXI4-Lite 不支持突发,勿配置
ARLEN
/AWLEN
。
- 确保
-
模式选择:
- 选择合适的模式(Master、Slave、Passthrough)以匹配验证需求。
- 直通模式适合调试复杂网络,但可能增加仿真开销。
-
仿真性能:
- 复杂测试用例可能导致仿真时间较长,建议使用高性能仿真器(如 QuestaSim)。
- 限制日志记录范围,减少内存占用。
-
覆盖率优化:
- 确保覆盖率目标明确(如突发长度、响应类型),避免过度测试。
- 使用随机化约束生成多样化事务,提高覆盖率效率。
-
错误调试:
- 检查 AXI VIP 的错误日志,定位协议违规或配置错误。
- 使用 Vivado 波形查看器分析信号时序,确认问题根因。
总结
AXI Verification IP(PG267)是一款功能强大的验证软核,支持 AXI4、AXI3、AXI4-Lite 和 AXI4-Stream 协议,通过主设备、从设备和直通模式的灵活仿真,提供协议检查、事务生成和覆盖率分析,显著简化 AXI 接口的验证流程。其基于 SystemVerilog 和 UVM 的实现,配合 Vivado 和第三方仿真器,广泛应用于复杂 SoC 系统、视频处理和 PCIe 通信的验证。
用户在配置时需注意协议类型、模式选择和仿真性能,合理设置事务和覆盖率目标,并通过日志和波形分析调试问题。结合 Vivado 工具、UVM 方法学和自动化脚本,AXI VIP 可大幅提升验证效率和设计可靠性。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC