AXI4-Stream Verification IP (PG277) 详细介绍
概述
AXI4-Stream Verification IP,以下简称 AXI4-Stream VIP。该 IP 核专为验证基于 AXI4-Stream 协议的自定义 RTL 设计而开发,支持模拟 AXI4-Stream 主设备(Master)、从设备(Slave)以及透传(Passthrough)模式下的行为。它通过提供可编程的激励生成、协议检查和事务监控功能,显著简化了 AXI4-Stream 接口的验证流程,广泛应用于 FPGA 和 SoC 系统设计中的视频处理、信号处理、网络数据包处理和硬件加速器验证等领域。
该 IP 核的主要功能包括:
- 激励生成:模拟 AXI4-Stream 主设备或从设备,生成协议兼容的命令和数据。
- 协议检查:实时监控 AXI4-Stream 事务,确保符合 AMBA 4 AXI4-Stream 协议规范。
- 事务监控:在透传模式下捕获和分析事务信息,如吞吐量和延迟。
- 测试支持:提供示例测试用例和测试台,加速自定义设计的验证。
主要特性
-
AXI4-Stream 协议支持:
- 完全符合 ARM AMBA 4 AXI4-Stream 协议规范,支持标准信号:
TVALID
、TREADY
、TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 支持所有协议数据宽度和传输类型:
TDATA
:1-512 位。TUSER
:0-128 位。TID
和TDEST
:0-32 位。
- 支持字节流、连续对齐流、连续非对齐流和稀疏流。
- 完全符合 ARM AMBA 4 AXI4-Stream 协议规范,支持标准信号:
-
操作模式:
- 主模式(Master Mode):生成 AXI4-Stream 命令和数据负载,模拟主设备行为。
- 从模式(Slave Mode):响应 AXI4-Stream 事务,生成
TREADY
信号,模拟从设备行为。 - 透传模式(Passthrough Mode):透明监控事务信息(如吞吐量、延迟)或插入主动激励。
-
SystemVerilog 实现:
- 以非加密 SystemVerilog 源码形式提供,包含类库和可合成 RTL。
- 通过虚拟接口(Virtual Interface)控制 RTL 接口,支持灵活的测试台集成。
- 兼容主流验证方法学,如 UVM、OVM 和 VMM。
-
协议检查:
- 内置协议检查器,实时检测 AXI4-Stream 事务中的协议违规(如
TVALID
和TREADY
握手错误)。 - 支持运行时配置,允许启用或禁用特定检查规则。
- 内置协议检查器,实时检测 AXI4-Stream 事务中的协议违规(如
-
测试支持:
- 提供示例测试台和测试用例,展示 AXI4-Stream 的主、从和透传模式功能。
- 示例可通过 Vivado IP Integrator 访问,作为自定义设计的验证起点。
- 支持随机化事务生成,便于覆盖测试。
-
仿真支持:
- 兼容主流仿真器:Vivado Simulator、Aldec Riviera-PRO、Cadence Incisive Enterprise Simulator、Mentor Graphics Questa Prime 和 Synopsys VCS。
- 提供事务级日志和波形分析,便于调试。
-
工具与设备支持:
- 设计工具:Vivado Design Suite、ISE Design Suite。
- 支持设备:Artix-7、Kintex-7、Kintex UltraScale、Kintex UltraScale+、Virtex-7、Virtex UltraScale、Virtex UltraScale+、Zynq-7000、Zynq UltraScale+ MPSoC。
功能模块
1. 主模式(Master Mode)
- 功能:模拟 AXI4-Stream 主设备,生成协议兼容的命令和数据负载。
- 机制:
- 创建
axi4stream_transaction
对象,配置TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
和TUSER
。 - 支持随机化事务生成(通过
randomize()
方法),覆盖多种传输场景。 - 通过
driver.send()
方法发送事务,控制信号时序(如TVALID
)。
- 创建
- 应用:验证从设备的接收能力(如 FIFO、处理模块)。
2. 从模式(Slave Mode)
- 功能:模拟 AXI4-Stream 从设备,响应主设备的事务并生成
TREADY
信号。 - 机制:
- 配置
TREADY
生成策略(如单次触发、振荡模式、随机延迟。 - 捕获接收到的
TDATA
、TLAST
等信号,记录事务信息。 - 支持自定义响应逻辑,模拟复杂从设备行为。
- 配置
- 应用:验证主设备的发送能力和协议合规性。
3. 透传模式(Passthrough Mode)
- 功能:透明监控 AXI4-Stream 事务,或插入主动激励。
- 机制:
- 捕获主设备和从设备之间的事务信息(如吞吐量、延迟、协议错误)。
- 支持非侵入式监控(仅记录)或主动干预(如修改
TDATA
或TLAST
)。 - 提供回调机制,便于用户自定义监控逻辑。
- 应用:分析系统性能或调试复杂数据流。
4. 协议检查
- 功能:实时检测 AXI4-Stream 事务中的协议违规。
- 机制:
- 检查
TVALID
和TREADY
握手协议(例如,TVALID
在TREADY
低时不得改变)。 - 验证信号稳定性(
TDATA
、TLAST
等在TVALID
高且TREADY
低时保持稳定)。 - 检查数据包边界(
TLAST
的正确使用)。 - 输出错误日志,包含违规类型和时间戳。
- 检查
- 应用:确保设计符合 AXI4-Stream 协议规范。
5. 示例测试台
- 功能:提供预配置的测试台和测试用例,展示 VIP 的使用方法。
- 机制:
- 包含主模式、从模式和透传模式的示例。
- 提供 SystemVerilog 测试代码,展示事务创建、发送和监控。
- 可通过 Vivado IP Integrator 自动生成。
- 应用:作为自定义测试台开发的模板。
接口说明
以下是 AXI4-Stream Verification IP 的主要接口及其功能:
-
AXI4-Stream 接口(M_AXIS 或 S_AXIS):
- 类型:AXI4-Stream 主接口(主模式)或从接口(从模式、透传模式)。
- 信号:
TVALID
:数据有效信号(主模式输出,从模式输入)。TREADY
:准备好信号(主模式输入,从模式输出)。TDATA
:数据信号,宽度可配置(1-512 位,可选)。TSTRB
、TKEEP
:字节选通信号,宽度为TDATA
的 1/8(可选)。TLAST
:数据流结束信号(可选)。TID
、TDEST
:流标识和目标标识信号(可选)。TUSER
:用户定义信号,宽度可配置(0-128 位,可选)。
- 功能:
- 主模式:生成事务并驱动信号。
- 从模式:响应事务并生成
TREADY
。 - 透传模式:监控或转发事务。
-
时钟与复位接口:
ACLK
:全局时钟信号,与 AXI4-Stream 接口同步。ARESETn
:全局低电平有效复位信号,同步到ACLK
。
-
虚拟接口(Virtual Interface):
- 类型:SystemVerilog 虚拟接口,用于测试台控制 VIP。
- 功能:通过 SystemVerilog 类(如
axi4stream_vip_mst_t
、axi4stream_vip_slv_t
)访问 RTL 接口,配置和驱动事务。 - 示例:
agent = new("master vip agent", dut.axi4stream_vip_0.inst.IF);
。
配置方法
1. 在 Vivado 中添加 IP
- 打开 Vivado 的 Block Design,右键选择 Add IP。
- 搜索 AXI4-Stream Verification IP,将其拖入设计。
- 双击 IP 核,打开定制化对话框,配置以下参数:
- 组件名称(Component Name):设置 IP 实例名称,需以字母开头,包含字符 a-z、0-9 和下划线。
- 接口模式(Interface Mode):选择主模式(Master)、从模式(Slave)或透传模式(Passthrough)。
- 信号配置:
- 启用或禁用
TDATA
、TSTRB
、TKEEP
、TLAST
、TID
、TDEST
、TUSER
。 - 设置
TDATA
宽度(1-512 位)。 - 设置
TUSER
宽度(0-128 位)。 - 设置
TID
/TDEST
宽度(0-32 位)。
- 启用或禁用
- 运行时参数:
HAS_TREADY
:启用或禁用TREADY
信号(默认启用)。TLAST_GEN_METHOD
:配置TLAST
生成方式(手动或自动)。TREADY_GEN_METHOD
:配置TREADY
生成策略(例如,XIL_AXI4STREAM_READY_GEN_OSC
表示振荡模式)。
2. 测试台开发
- 添加 VIP 包:
- 在测试台中导入 SystemVerilog 包:
import axi4stream_vip_pkg::*;
和实例特定的包(如sys_axi4stream_vip_0_0_pkg::*
)。 - 示例代码:
`timescale 1ns/1ps import axi4stream_vip_pkg::*; import sys_axi4stream_vip_0_0_pkg::*; module tb(); logic aresetn, aclk; sys_wrapper dut(.*); sys_axi4stream_vip_0_0_mst_t agent; initial begin agent = new("master vip agent", dut.sys_i.axi4stream_vip_0.inst.IF); agent.start_master(); // 生成事务 axi4stream_transaction wr_transaction; wr_transaction = agent.driver.create_transaction("write transaction"); assert(wr_transaction.randomize()); agent.driver.send(wr_transaction); end endmodule
- 在测试台中导入 SystemVerilog 包:
- 常见问题:
- 若出现
axi4stream_vip_pkg
未找到错误,需确保 Vivado 项目已包含 VIP 源码。 - 忽略仿真器中的红线警告(如
XIL_AXI4STREAM_READY_GEN_SINGLE
未找到),这些通常为视觉错误。
- 若出现
3. 仿真与验证
- 将 AXI4-Stream VIP 连接到待测设计(DUT)的 AXI4-Stream 接口。
- 配置时钟(
ACLK
)和复位(ARESETn
)信号,确保与 DUT 同步。 - 使用 Vivado Simulator 或其他支持的仿真器运行测试:
- 验证主模式:检查
TVALID
、TDATA
和TLAST
是否正确生成。 - 验证从模式:检查
TREADY
响应和接收数据。 - 验证透传模式:检查事务日志和吞吐量统计。
- 验证主模式:检查
- 使用示例测试台(通过 IP Integrator 生成)作为参考,添加自定义测试用例。
- 分析波形和日志,定位协议违规或功能问题。
资源利用情况
AXI4-Stream Verification IP 主要用于仿真环境,不直接影响硬件资源占用。其 RTL 部分为轻量级,仅用于接口信号驱动,资源占用极低:
- 资源类型(基于 Kintex-7,Vivado 生成):
- LUT(查找表):10-50,取决于信号数量。
- FF(触发器):10-50,用于信号同步。
- BRAM:不使用。
- DSP 切片:不使用。
- 配置示例:
- 32 位 TDATA,主模式:约 20 LUT、20 FF。
- 64 位 TDATA,透传模式:约 30 LUT、30 FF。
- 最大频率:最高 250 MHz(Kintex-7,-1 速度等级),与 DUT 时序相关。
硬件资源仅在将 VIP 的 RTL 部分综合到 FPGA 时产生,仿真时无需考虑。
应用场景
AXI4-Stream Verification IP 适用于以下场景:
-
接口验证:
- 验证 AXI4-Stream 主设备或从设备的连接性和基本功能。
- 适用于自定义 IP 的开发和集成(如 AXI4-Stream FIFO、DMA)。
-
协议合规性测试:
- 检查 AXI4-Stream 事务是否符合协议规范,定位握手或信号稳定性问题。
- 配合 AXI4-Stream Protocol Checker IP(PG145)进行深入验证。
-
视频处理:
- 模拟视频流生成或接收,验证视频处理模块(如编码器、解码器)的功能。
- 配合 AXI4-Stream to Video Out IP。
-
信号处理:
- 生成多通道信号数据流,验证信号处理核心(如 FFT、滤波器)。
- 适用于雷达、通信或音频处理系统。
-
网络数据包处理:
- 模拟高速数据包流,验证网络处理模块的吞吐量和协议合规性。
- 适用于数据中心或通信系统。
-
测试台开发:
- 作为测试台的核心组件,加速 UVM 或 SystemVerilog 测试环境的搭建。
- 使用示例测试台快速开发自定义测试用例。
注意事项
-
仿真环境配置:
- 确保导入正确的 SystemVerilog 包(如
axi4stream_vip_pkg
和实例特定包),否则可能出现编译错误。 - 忽略仿真器中的红线警告(如
XIL_AXI4STREAM_READY_GEN_SINGLE
未找到),这些为已知视觉错误。
- 确保导入正确的 SystemVerilog 包(如
-
信号配置:
- 配置
TDATA
、TUSER
等信号宽度时,需与 DUT 接口匹配,否则可能导致仿真错误。 - 若 DUT 不支持
TREADY
,需设置HAS_TREADY=0
。
- 配置
-
TLAST 生成:
- 默认情况下,
TLAST
需手动配置或随机生成。若需自动生成数据包,设置TLAST_GEN_METHOD
为自动模式。 - 验证
TLAST
的正确性,确保数据包边界符合设计要求。
- 默认情况下,
-
测试台集成:
- 使用虚拟接口时,需正确绑定到 DUT 的 AXI4-Stream 接口。
- 示例代码中,
agent.start_master()
或agent.start_slave()
需在复位完成后调用。
总结
AXI4-Stream Verification IP是一款功能强大且易用的验证工具,专为 AXI4-Stream 接口的仿真和验证设计。其支持主、从和透传三种模式,提供激励生成、协议检查和事务监控功能,显著简化了自定义 RTL 设计的验证流程。该 IP 核以 SystemVerilog 实现,兼容主流仿真器和验证方法学,广泛应用于视频处理、信号处理、网络数据包处理和 SoC 验证等领域。
FPGA设计工具推荐
-
SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
-
SZ501(PRO_A7):
- SZ501 是一款适合初学者FPGA开发板,包含低速高速接口!
- 双网口(RGMII)
- 双SFP+
- DDR
- UART
- IIC