一位工程师的FPGA项目开发经验总结

简介:

转自:http://bbs.ednchina.com/BLOG_ARTICLE_3018248.HTM?click_from=8800024401,6106445608,2014-11-10,EDNCOL,NEWSLETTER

1. 要和人配合

以我们做硬件工程师为例,测试的时候一般都需要软件的配合,一个对硬件来说无比复杂的工作,可能在软件工程师看来就是几行简单的代码。所以要和人配合,多听听别人的意见,这样必然可以产生新的 know-how,从而加快测试和开发的速度,退一步讲,至少没有坏处。

2. 测试还是要别人来做

开发者看待自己的产品有如看待自己,大多是没有勇气去发现缺点的。一是源自自尊心,二是为了避免额外的工作。所以就算有问题,如果不严重就藏着掖着。但是这对项目来说是不行的,所以测试,verification,一定要旁人来做。

3. 多点时间思考

出现问题后,不要急着修改。要思考推测可能的原因,想清楚后把这些可能的原因都用debug pin或者chipscope引出来。

4. 注意复用已有的debug pin

很多时候,在测试过程中产生了一大堆测试信号,但是时间一长就忘了复用。实际上,当一个问题产生的时候,通过反复观察已有的debug-pin或许足以发现问题根源,而无需再引出新的pin,并浪费时间去综合和PAR。

5. 仿真加时序足矣

数字电路在时钟同步的设计原则下,其功能通过simulation就可以验证。simulation的结果和PAR后产生的FPGA-image 完全等价。当然FPGA也要遵循同样的设计原则,即时钟同步。所以对于PAR的结果首先就要确保其时钟同步的特性。体现为寄存器之间的path必须在一个 时钟周期内完成。(当然有其他约束的例外。)同时要满足FPGA器件的setup和hold要求。一旦出现timing-error必须通过各种途径消除 error,因为error的存在,意味着时钟同步的大前提已经被破坏,这时,simulation取得的结果和FPGA是不等价的,继续测试也毫无意义 了。

6. 注意不可控的接口部 分

FPGA内部的寄存器之间的timing完全可以通过PAR报告来确认是否有问题。但是和外界的接口部分却充满了疑问。我们一般通过假定的 input-delay和output-delay来对接口部分进行约束。由于从一开始就施加的是假定的delay,所以即使没有timing- error,其结果也存在诸多疑问。以我正在进行的测试为例,模块内 部loopback测试完全正常,但是一过cable,传到对方FPGA,则马上产生很多误码。由于simulation没有问题,所以必然是我们的某个 假定出现了问题,尤其是时钟同步的假定会得不到满足。这时候,就要想尽一切办法,使接口也满足假定的条件,或者调整设计,将不理想的接口adapting 成理想的接口。

7. 向直接上司汇报情况,寻求各种可能的许可。

懒得向直接上司汇报情况时,万一出现进度或者结果不符,所有责任都需要本人承担。如果提前向上司汇报情况并取得 许可,则一切后果都在可控范围内。比如,工作繁忙时又被派给新的任务,则不能一味逆来顺受。应该向上司说明困难,并提前想好一个可行的解决方案供上司参考。

8. 外部接口是最大障碍

如前所述,FPGA内部如果timing没有问题的话,一般和仿真结果是一致的,问题是外部的接口,包括cable连线等,不在我们 确切控制的范围内,比如其延时特性在40MHz下仍然正常,但是在80MHz时可能出现不可预料的情况。所以应该尽量使用经过验证的“cable- frequency”组合。或者通过设备测量并确认外部接口的延时特性。这样可以进行有针对性的调整。我最近的教训就是花了整整一个月调整并测试内部的结 构,但是仍然失败。结果发现由于cable的问题,80MHz的信号(数据+使能+others)无法正常并行传输。如果换成40MHz的信号就通过了。

9. 综合PR后的结果要和代码等价

前面提到仿真加时序足矣,这里面的前提是PR的结果和原始代码要等价。为了确认这一点,就要把握syn和pr过程中的所有 warning以及error,warning的内容不是完全可以忽略的。要特别关注综合报表中的以下内容:unused ports, removal of redundant logic, latch inference,simulation mismatch等等。在报表中输入关键字查找即可。

目录
相关文章
|
异构计算
FPGA硬件工程师Verilog面试题(五)
FPGA硬件工程师Verilog面试题(五)
176 0
FPGA硬件工程师Verilog面试题(五)
|
异构计算
FPGA硬件工程师Verilog面试题(基础篇一)
FPGA硬件工程师Verilog面试题(基础篇一)
303 0
FPGA硬件工程师Verilog面试题(基础篇一)
|
芯片 异构计算
FPGA硬件工程师Verilog面试题(基础篇二)
FPGA硬件工程师Verilog面试题(基础篇二)
458 1
FPGA硬件工程师Verilog面试题(基础篇二)
|
异构计算
FPGA硬件工程师Verilog面试题(三)
FPGA硬件工程师Verilog面试题(三)
258 0
FPGA硬件工程师Verilog面试题(三)
|
异构计算
FPGA硬件工程师Verilog面试题(四)
FPGA硬件工程师Verilog面试题(四)
174 0
FPGA硬件工程师Verilog面试题(四)
|
芯片 异构计算
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(一)
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(一) 昨夜西风凋碧树。独上高楼,望尽天涯路 2000年的时候,做设计基本都是使用Xilinx公司的Virtex和Virtex-E系列芯片。那时候Altera技术实力还比较弱,基于Altera的芯片做设计是要被大家diss的。
6168 0
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(一)
|
芯片 异构计算
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(三)
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(三)                                                                                        众里寻他千百度,蓦然回首,那人却在,灯火阑珊处   工程师都知道,寻找好板和坏板之间的“差异”是定位问题的利器之一啊。
5234 0
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(三)
|
人工智能 云栖大会 云计算
如何优雅的表现你是一位IT精英?一张云栖大会入场券就够了!
马云曾说,未来计算能力将会成为一种生产能力,而数据将会成为最大的生产资料。2016年10月13日,杭州云栖大会,马云再次领衔技术先锋,畅聊科技未来。想听听马老师这次讲什么?现场等你!
34037 0
|
芯片 异构计算
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(二)
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(二) 衣带渐宽终不悔,为伊消得人憔悴   我一夜无眠,小心脏一直在忽冬忽冬滴乱跳。第二天我一头扎进了封闭的实验室。实验室里堆了好多单板,好的一堆,坏的一堆,然后各种仪器和电脑。
4487 0
FPGA设计中遇到的奇葩问题之“芯片也要看出身”(二)
|
Web App开发 程序员 Windows