背景大概是这样。复用其他组原来搭建好的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相关推荐

  1. Impala-shell卡顿分析——记一次曲折的Debug经历

    Impala-shell卡顿分析--记一次曲折的Debug经历 问题发现 最近准备在Impala中增加对UTF-8的支持,以修正跟Hive.Spark等基于Java的系统在UTF-8字符串上的不兼容表 ...

  2. 记一次奇怪的debug:Tomcat部署网站每一个页面第一次打开404刷新后才正常显示...

    序 不久前毕设网站的第三版上线,然后我遇到了一个奇怪的bug: 访问页面的时候,第一次打开404,必须F5刷新后才能正常显示 简直迷 第一次尝试 最开始以为是浏览器缓存没有清理[思路大概是:浏览器发现 ...

  3. main方法 如何去掉http debug日志_在MyBatis中如何使用collection标签实现嵌套查询?...

    # 需求升级 在上篇博客<一对多的关系,在MyBatis中如何映射?>中,我们实现了需求:根据用户id查询用户信息的同时获取用户拥有的角色. 因为角色可以拥有多个权限,所以本篇博客我们升级 ...

  4. AXI(Advanced eXtensible Interface)协议规范

    AXI(Advanced eXtensible Interface)协议规范 参考:ARM (IHI 0022H.c) AMBA AXI and ACE Protocol Specification ...

  5. AMBA 系列之 AXI 总线协议

    目录 0.绪论 1.简介 1.1 AXI协议特点 1.2 AXI 读写架构 1.3 接口和互联 1.4 复位 2. 信号描述 2.1 全局信号 2.2 写地址通道信号 2.3 写数据通道信号 2.4 ...

  6. 【RevitAPI】Revit产品按钮自带信息(名称+ID)

    调用系统自带按钮命令,两种方式.(例子:墙命令) 第一种 RevitCommandId revitCommand = RevitCommandId.LookupCommandId("ID_O ...

  7. Mybatis : DEBUG [main] - PooledDataSource forcefully closed/removed all connections.

    出现错误: DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' ada ...

  8. 5 大分布式 ID 生成器优缺点简单对比

    点击上方"业余草",选择"置顶公众号" 第一时间获取技术干货和业界资讯! 首选,不管是不是分布式系统,都有 ID 唯一的使用场景.而在分布式场景下,对 ID 的 ...

  9. 五大分布式ID生成器优缺点及对比

    首选,不管是不是分布式系统,都有 ID 唯一的使用场景.而在分布式场景下,对 ID 的唯一性要求更严格! 常见的,我们上淘宝买东西的订单 ID,就是一种分布式 ID.淘宝,前期的订单 id 好像是 1 ...

最新文章

  1. fragment 横竖屏 不重建
  2. 机器学习基础-数据降维
  3. Nginx 学习笔记(五)nginx-vod-module 模块
  4. SAP MM模块的预留详解
  5. ActiveMQ相关概念
  6. 从镜头到滤光片 解读光学透雾监控摄像机
  7. 前端面试题之http/HTML/浏览器(二)
  8. 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
  9. [收藏]编译器内置的一些有用的调试宏
  10. 杀掉僵尸 MapReduce 任务的两种方式
  11. 数据库优化之MySQL
  12. Testbench编写常用语法和必备知识
  13. 正则表达式中的?表示匹配前面的正则表达式0次或者1次
  14. HDU4622 Reincarnation
  15. Windows电脑上搭建Radius 服务器并实现802.1X认证
  16. 双系统开机 进入grub resource,并且进不bios
  17. django xadmin修改“管理”“认证和授权”的菜单名
  18. Xshell连接远程堡垒机【服务器】
  19. python求二项式系数的几种方法及性能对比
  20. 危化品企业双重预防机制数字化系统怎样建?

热门文章

  1. Linux转到Server服务,Linux下安装telnet-server服务
  2. oracle 表空间 归档,oracle数据库表空间及归档
  3. git 回滚到某个commit_Git 整理 v1.0 | Git 操作整理进阶篇
  4. textview 背景变形_嘉兴海宁市家庭别墅背景墙装修供应——零度木门厂家
  5. Unet美发实例分割,染发展示
  6. python实现GBDT算法的回归、二分类以及多分类,算法流程解读并可视化
  7. java int stack_java中int算法的有趣现象
  8. uwsgi模式_uwsgi配置详解
  9. python切割图片文字_Python+opencv 实现图片文字的分割的方法示例
  10. android 数据持久化——ContentProvider