AMBA总线性能分析-demo

AMBA总线性能分析-demo

amba总线性能分析和demo

总线性能分析目标:

  1. 带宽(bandwidth);单位时间内传输的数据量
    1.1 读带宽;总读数据量(byte)/ 读事务总时间(从第一个arvalid到最后一个rvalid的时间)
    1.2 写带宽:总写数据量(byte)/ 写事务总时间(从第一个awvalid到最后一个bvalid的时间)
    1.3 总带宽:(读数据量+写数据量)/总线活跃时间
  2. 吞吐量(throughput); 单位时间内完成的事务数
    2.1 单位时间内完成的事务数/总时间
  3. 延迟(latency): 事务从发起(axi的awvalid)到完成(bvalid)的时间
    3.1 写事务延迟:单个事务从awvalid到bvalid的时间差
    3.2 读事务延迟:单个事务从arvalid到rvalid的时间差
    3.3 可统计平均延迟,最大/最小延迟,延迟分布
  4. 响应时间(response time): 从请求到数据返回的总时间
  5. 总线利用率(bus utilization): 总线实际传输的时间占总时间的比例
    5.1 总线实际传输数据的时间(wvalid&wready,rvalid&rready的累计时间)/总仿真时间
  6. 冲突与等待(contention/wait time); 主设备因总线竞争或从设备就绪慢导致的等待时间
    6.1 主设备等待总线: awvalid有效但awready无效的累计时间(地址通道等待),wvalid有效但wready无效的累计时间(数据通道等待)
    6.2 从设备等待总线: arvalid&arready有效到 rvalid 的累计时间(读响应等待)awvalid&awready有效到bvalid 的累计时间(写响应等待)
  7. 事务类型分布:读/写事务比例,突发长度分布等

总线性能分析demo

  1. amba vip 已实现了总线性能分析功能,
    1.1 具体可以参考synopsys的example :
    tb_axi_svt_uvm_intermediate_sys
    1.2 该example一般在如下路径:
    $DESIGNWARE_HOME/vip/svt/amba_svt/examples/sverilog/
  2. install 该example,按照README描述执行即可
  3. run test_case, 该example提供了5个测试用例,随便选择一个
    3.1 需要注意的是该makefile没有添加-kdboption,需要在WAVES=fsdb选择里添加
    3.2 执行仿真命令,仿真结束后性能分析结果会存在test_top.fsdb
    gmake USE_SIMULATOR=vcsvlog amba_pv_test WAVES=fsdb
  4. 查看性能分析报告
    4.1 使用verdi打开波形
    verdi -lca -ssf test_top.fsdb &
    4.2 在tools -> Transaction Debug -> Performance Analyzer选项中可以查看结果,自动计算了性能分析需要关注的目标数据,还生成了可视化图表

    4.3 在使用verdi打开性能分析后在仿真目录会生成performanceReport, 使用firefox 打开其中的html也可以查看性能分析结果

在自己的验证环境使用performance analyzer

  1. 在configuration文件配置总线参数时需要打开xml参数

    this.master_cfg[0].enable_xml_gen = 1;
    this.slave_cfg[0].enable_xml_gen = 1;
    ...

  2. 设置性能分析约束(可选)