FPGA Debug经验之谈

1.jpg
这段时间由于在FPGA调试上蛮心累,编译一把要3个小时左右,工程逻辑资源多且复杂,不得不通过调整思路来提高Debug效率:
2.png
本人基本要求按文档、仿真、调试来贯穿整个项目,最终上板调试基本几把就能搞定,前期设计全局考虑占比80%,后面上板调试占比20%。

1. 文档记录

文档记录分设计文档、工程文件夹和版本管理:
设计文档以图文为主,记录构思整个设计的框图;
工程文件夹要求从始至终按要求放置相关内容(这个一般由公司管理者制定);
3.png

版本管理要求文档代码所有相关改动都有时间、项目、修改内容详细记录。
4.png

2. 仿真平台

仿真平台,初级的用EDA软件自带的仿真,中级的用Modesim等第三方软件仿真,高级的用脚本搭建自动化测试平台。不管怎样,这里面比较重要的是激励模块的复用,每次仿真时拖过来用,大大节省时间和效率。
5.png

一般使用仿真平台,可以解决代码中90%以上的Bug,而不用在线逻辑分析仪浪费太多时间和精力。本人一般用在线逻辑分析仪去定位硬件问题,用仿真平台去解决逻辑问题、异常问题、bug复现。
逻辑问题:就是逻辑没有考虑前面导致的bug;
异常问题:指未正确初始化,溢位等bug;
bug复现:就是将实际的输入加入后的输出与硬件对比。

3. 调试思路

本人调试思路,遵循功能验证、时序验证到关联验证的顺序,可以很好的防止调试的时候进入死区:
功能验证:验证基本的功能是否存在问题;
时序验证:加入时序扰动等,验证异常情况,可将bug放大后定位解决;
关联验证:各个模块之间的逻辑关联导致特定bug出现,这个是最常见的bug,比如:图像算法中每20帧出现1行数据出错。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
xilinx_fpga 头像