1. 项目概述:多时钟域AXI接口验证平台搭建
在复杂SoC验证中,处理多时钟域、多AXI接口的场景是每个验证工程师都会遇到的挑战。最近我完成了一个包含3个异步时钟域、2组AXI总线(1主2从)和自定义接口的RTL验证项目。这个验证平台最特别之处在于采用了分层监控架构:hdl_top负责硬件接口例化,hvl_top处理事务级建模,而scb_top作为纯监控层用于系统级验证。这种架构特别适合需要后期集成到更大规模IT验证环境的场景。
2. 验证平台架构设计
2.1 分层验证架构解析
整个平台采用典型的三层结构:
- HDL层:包含所有RTL接口的物理连接,特别处理了跨时钟域信号同步
- HVL层:使用SystemVerilog实现事务级模型,集成SVT AXI VIP
- SCB层:纯被动监控层,通过analysis port收集数据用于比对
关键设计选择:将监控层完全独立是为了避免对DUT的干扰,这在多主设备场景下尤为重要
2.2 时钟域处理方案
项目中三个时钟域分别为:
- 主控时钟(200MHz)
- 外设时钟(100MHz)
- 自定义接口时钟(50MHz)
跨时钟域信号处理采用经典的握手协议+双触发器同步链,在验证平台中我们特别添加了时钟域穿越检查点:
systemverilog复制// 时钟域同步检查器示例
property check_cdc_sync;
@(posedge clk_dst) disable iff(!rst_n)
src_pulse |-> ##[1:3] dst_pulse;
endproperty
3. AXI VIP配置详解
3.1 SVT AXI VIP集成
在hvl_filelist中添加VIP需要包含以下关键文件:
code复制svt_axi_pkg.sv
svt_axi_if.sv
svt_axi_defines.sv
配置参数示例(对应图中设置):
systemverilog复制axi_system_cfg = new("axi_system_cfg", null);
axi_system_cfg.num_masters = 1; // 1个主设备
axi_system_cfg.num_slave
