原创 海外捉虫记—捕获控制通路trace的好方法

2009-12-17 18:16 4890 5 8 分类: FPGA/CPLD

在集成测试阶段,发现的许多bug并不是硬件本身的,其实是软件的配置错误。要么是地址有误,要么是取值错误,再就是配置的先后顺序和时机有误。


确认和定位这类问题的方法有四种:


1. 检查调试程序向串口输出的打印信息。


2. 通过和已知正确的简单脚本程序进行结果比较,如果简单脚本好使,那么就是软件的配置问题。


3. 通过把简单脚本中的所有配置写入操作替换为读出操作来检查软件已经配置好的信息。可以把读出的信息与简单脚本进行逐行比较,如果检查出差异,就可以很容易地判断出错误所在。其实,这一方法就是软件工程师手工检查配置正确与否的方法。如果加上自动执行和报告功能,也可以用于比较复杂和冗长的脚本。


4. 用SignalTap II抓取CPU总线操作波形,针对特定地址和数据设置触发条件。


 


进入集成测试,大批量的打印信息无疑会减缓程序运行速度,如果碰上时间相关的问题,很有可能问题不会重现;通过第二种方法可以推断出软件有错误,但是很难精确定位;由于CPU运行速度较慢,而Signal Tap II的存储深度有限,很难抓取到多次总线操作(可以采用分段存储方式)。


如果需要在CPU总线上捕获大批量的操作事件,可以考虑采用In-system Memory Content Editor,或者采用Virtual JTAG配合一个FIFO实现。一次总线操作只对应一个存储单位,可以实时捕获大量的总线操作信息。


如果采用了Virtual JTAG,一个额外的好处是,可以动态输入对特定地址进行过滤的掩码。通过地址过滤,只抓取针对特定地址进行的总线操作。这样做有些类似于动态设置SignalTap II的触发条件,增强了这一方法的灵活性。


加入掩码操作是很必要的,在最近一次的测试中,就发现软件的无关写入操作(主要是页面切换操作)很多,导致用于捕获trace的存储器在很短的时间内被充满。不加入掩码,就无法有针对性地进行捕获。



后记:这里提出的采用Virtual JTAG动态地捕获CPU-FPGA总线读写事务的方法已经实现了,相应的文章发表在2009年12月15日出版的EDN杂志上Debug a microcontroller-to-FPGA interface from the FPGA side



相关链接:Quartus II中添加Tk程序的几个关键语句


 


其实,很多时候,按照方法3进行手工操作更直接、更有效。


文章评论3条评论)

登录后参与讨论

ash_riple_768180695 2008-11-4 15:32

说得对,应该是分段存储。

用户1303485 2008-11-4 15:03

谢谢riple分享! 很多时候,如何证明FPGA的清白呢:) 用脚本跑一遍,OK! 软件同志们就可以回去查查哪里有问题了:) 没用过循环触发方式,转一个说明. 好像xilinx的chipscope没见这个功能。 -- 4.设置buffer acquisition mode。buffer acquisition mode包括循环采样存储、连续存储两种模式。循环采样存储也就是分段存储,将整个缓存分成多个片段(segment),每当触发条件满足时就捕获一段数据。该功能可以去掉无关的数据,使采样缓存的使用更加灵活。 作者: 西安交通大学电气工程学院 郭佳佳 胡晓菁 王永良 来源:《今日电子》

用户139434 2008-11-3 08:15

看到你的博客我有很大的启发~~~
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
3
5
关闭 站长推荐上一条 /2 下一条