经常看到文档上讲, 一定要把时序报告 跑过去,才可以出货。一直不以为然。
项目上用的 lattice 的 ecp3-35,esmt的ddr. 之前 用 了一年多,一直没有没有问题。 最近新贴的一批板子, 在运行10天左右,经常会出现DDR读写错误。现象如下:
一开始怀疑是 DDR的问题,然后就想作手改板。换成DDR3.
因为 ddr相关的时序报告,一直没有过去。所以一直比较担心。因为 跑到185Mhz,确实也不容易。所以就没管它。
这次就作手改时序报告, 花了好长时间,终于把时序跑过了。
在项目上运行了20天,还没有问题。应该算是 解决了。
崩溃ing。。。。。。。。
又出问题了。我断定必然不是 FPGA代码的问题,于是让硬件工程师 量了量 电压参数, 发现 DDR的参考电压1.8v比 要求的参考电压偏高。 我也是醉了,硬件工程师改了改电阻的阻值, 于是就好了。
总结: 一、 在FPGA设计中, 约束一定要做好, 一定要覆盖所有的路径, 时序报告要通过。切记。。
二、出现 没有规律的随机问题, 基本上可以怀疑是硬件设计的问题, 最应该先做的事情,应该是 检查是不是电源问题 或者 芯片的电压参数之类的。