记一次 AXI -id debug
背景大概是这样。复用其他组原来搭建好的FPGA平台,把里面的VPU换成我们现在用的这个版本的VPU,做FPGA protyping。这么做的目的有2个,一个是能够通过FPGA跑大量的case来验证模块的功能,另外一个是可以帮助软件组提前开发驱动,等芯片流片回来后就可以上软件了。
软件组跑一个MPEG4 case,发现跑一个简单的预处理功能是可以通过的,但是要真正解码的时候就会挂住(hang)。boss和模块负责人都感觉是axi id的问题,因为简单的模式用到的id数量简单,可能就是0,所以可以pass,而真正解码的时候会用到比较多的id,如果收发的id不匹配就出错了。
果然,module owner很快就发现一处id不匹配的地方,新版本的vpu需要的id位宽为4,而原来的vpu id位宽为3. 虽然说这个例化不是我做的,但是我觉得如果由module owner检查一下例化可能会避免这样的问题。改过后做了一个FPGA image,现象依旧。。。
debug了很久,没啥进展。boss已经提前布局好了,派我搭建了一套IDENTIFY的dump 波形的环境。但是dump波形也需要module owner来指导,因为只有选准触发条件(trigger),dump出来的波形才会有用。恰好吧,那次算是运气不错,我自己凭感觉选了arready作为触发条件,他们在这个波形里面看出了问题,发现master送出去的id是 "110",slave回应的id是"010",正好有一位丢失了。这里要说一下,由于芯片很大,做FPGA protyping的时候被分割成了4个部分,master(vpu)和slave(DDR/fabric)分别处在不同的FPGA中。在slave那块FPGA寻找,果然发现了这边的id 只用了2位,修改过来,发现问题好了不少。但是H.264的case又hang住了。。。
还是怀疑,可能是软件组的问题,因为我们到现在为止已经解决了不少问题了,怎么可能还有问题。在boss的催促下(还是boss思路开阔啊!),继续用IDENTIFY去追波形,这下因为目的很明确了,dump信号比较少,因而dump的时间可以很长,在分析波形之后发现id[1]和id[2]倒置了。根据这个分析,发现是两块FPGA pin-assignment不匹配,正好是这两位给倒置了。
现在呢,问题还在继续,MPEG4和H.264过了,JPEG部分倒是出现了问题,而且encoder部分也有问题。现在的想法是把pin-assignment文件确认比较一遍。
对于这次漫长的debug,简单总结下。
1. 工欲善其事,必先利其器。搭建好IDENTIFY环境对这个debug非常关键。boss觉得要这么做,他的思路是什么,为什么该这样。
2. 第二次发现了同样的问题,就应该把整个通路都trace一遍,而不是根据常规思路想当然的认为该检查的都检查过了,无从下手。
3. FPGA的工作主要还是应该由module owner负责更合适。
转载于:https://www.cnblogs.com/azure_seu/archive/2012/05/11/2495517.html
记一次 AXI -id debug相关推荐
- Impala-shell卡顿分析——记一次曲折的Debug经历
Impala-shell卡顿分析--记一次曲折的Debug经历 问题发现 最近准备在Impala中增加对UTF-8的支持,以修正跟Hive.Spark等基于Java的系统在UTF-8字符串上的不兼容表 ...
- 记一次奇怪的debug:Tomcat部署网站每一个页面第一次打开404刷新后才正常显示...
序 不久前毕设网站的第三版上线,然后我遇到了一个奇怪的bug: 访问页面的时候,第一次打开404,必须F5刷新后才能正常显示 简直迷 第一次尝试 最开始以为是浏览器缓存没有清理[思路大概是:浏览器发现 ...
- main方法 如何去掉http debug日志_在MyBatis中如何使用collection标签实现嵌套查询?...
# 需求升级 在上篇博客<一对多的关系,在MyBatis中如何映射?>中,我们实现了需求:根据用户id查询用户信息的同时获取用户拥有的角色. 因为角色可以拥有多个权限,所以本篇博客我们升级 ...
- AXI(Advanced eXtensible Interface)协议规范
AXI(Advanced eXtensible Interface)协议规范 参考:ARM (IHI 0022H.c) AMBA AXI and ACE Protocol Specification ...
- AMBA 系列之 AXI 总线协议
目录 0.绪论 1.简介 1.1 AXI协议特点 1.2 AXI 读写架构 1.3 接口和互联 1.4 复位 2. 信号描述 2.1 全局信号 2.2 写地址通道信号 2.3 写数据通道信号 2.4 ...
- 【RevitAPI】Revit产品按钮自带信息(名称+ID)
调用系统自带按钮命令,两种方式.(例子:墙命令) 第一种 RevitCommandId revitCommand = RevitCommandId.LookupCommandId("ID_O ...
- Mybatis : DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
出现错误: DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' ada ...
- 5 大分布式 ID 生成器优缺点简单对比
点击上方"业余草",选择"置顶公众号" 第一时间获取技术干货和业界资讯! 首选,不管是不是分布式系统,都有 ID 唯一的使用场景.而在分布式场景下,对 ID 的 ...
- 五大分布式ID生成器优缺点及对比
首选,不管是不是分布式系统,都有 ID 唯一的使用场景.而在分布式场景下,对 ID 的唯一性要求更严格! 常见的,我们上淘宝买东西的订单 ID,就是一种分布式 ID.淘宝,前期的订单 id 好像是 1 ...
最新文章
- fragment 横竖屏 不重建
- 机器学习基础-数据降维
- Nginx 学习笔记(五)nginx-vod-module 模块
- SAP MM模块的预留详解
- ActiveMQ相关概念
- 从镜头到滤光片 解读光学透雾监控摄像机
- 前端面试题之http/HTML/浏览器(二)
- 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
- [收藏]编译器内置的一些有用的调试宏
- 杀掉僵尸 MapReduce 任务的两种方式
- 数据库优化之MySQL
- Testbench编写常用语法和必备知识
- 正则表达式中的?表示匹配前面的正则表达式0次或者1次
- HDU4622 Reincarnation
- Windows电脑上搭建Radius 服务器并实现802.1X认证
- 双系统开机 进入grub resource,并且进不bios
- django xadmin修改“管理”“认证和授权”的菜单名
- Xshell连接远程堡垒机【服务器】
- python求二项式系数的几种方法及性能对比
- 危化品企业双重预防机制数字化系统怎样建?
热门文章
- Linux转到Server服务,Linux下安装telnet-server服务
- oracle 表空间 归档,oracle数据库表空间及归档
- git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
- textview 背景变形_嘉兴海宁市家庭别墅背景墙装修供应——零度木门厂家
- Unet美发实例分割,染发展示
- python实现GBDT算法的回归、二分类以及多分类,算法流程解读并可视化
- java int stack_java中int算法的有趣现象
- uwsgi模式_uwsgi配置详解
- python切割图片文字_Python+opencv 实现图片文字的分割的方法示例
- android 数据持久化——ContentProvider