当前位置: 首页 > news >正文

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. 设置性能分析约束(可选)

http://www.jsqmd.com/news/1119751/

相关文章:

  • 如何用Auto-PPT免费生成专业PPT?3分钟快速上手教程
  • HsMod终极指南:55个功能完整解锁《炉石传说》自定义体验
  • DeepSeek V4升级决策指南:技术适配、工程成本与业务价值三重评估
  • 开源电池诊断工具:解锁BMS保护机制,让废弃电池重获新生
  • 解锁移动漫画新体验:E-Hentai Viewer让你的阅读时光更精彩
  • 如何构建高可用分布式网络监控:SmokePing主从架构深度解析
  • Xous微内核快速入门:5个步骤搭建你的第一个安全嵌入式应用
  • 3种JOIN操作全解析:Tidy.js如何优雅处理多数据集合并
  • Gemma 4与Qwen 3.5:端侧智能与云原生智能的分工演进
  • CANN残差诊断算子
  • Kali Linux中BurpSuite专业版安装、破解与性能优化完整指南
  • CSS @layer 实践:样式优先级别再靠选择器硬怼
  • SkeyeVSS视频融合平台赋能工业园区数字化转型一体化智能监管方案
  • Tidy.js vs Lodash:谁才是JavaScript数据处理的最佳拍档?
  • Claude模型选型实战指南:速度、成本与智力的三维权衡
  • 跨平台音乐歌词批量获取工具:网易云与QQ音乐歌词高效解析方案
  • 3分钟搞定E-Hentai漫画下载:这款神器让你告别手动保存烦恼
  • CodeCombat:通过奇幻冒险掌握编程技能的游戏化学习革命
  • 终极FFmpeg-Android API手册:从execute()到sendQuitSignal()全解析
  • 【JAVA毕设源码分享】基于springboot植物养护系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • Claude套餐选型实战指南:从token成本到档位决策
  • 半导体2nm工艺突破:材料与设备的核心挑战
  • OpenTracing-Python完全指南:分布式追踪的Python API入门教程
  • E-Hentai Downloader终极使用指南:零基础快速上手漫画下载神器
  • cann/hccl集合通信AlltoAllVC示例
  • CSS Subgrid 实践:对齐不是每个组件自己算一遍
  • Python 使用OpenAI调用Qwen3.6-27B-ms模型|完整参数详解
  • Runbook最佳实践:10个高效自动化运维场景案例
  • BiliScope开发者指南:深入解析插件架构与API调用
  • E-Hentai漫画下载神器:告别手动保存的终极指南