FPGA verificaiton Tips
做FPGA verification通常是把各个TOP level的module连接起来,组成一个完整的TOP.v。
对TOP.v的端口分配管脚综合之后,下载到FPGA做chip tape out前的function verification。
(1)大刀阔斧
把各个module之间的port信号连接好。
(a)特别注意data Bus的连接,最好将每个信号都用wire声明位宽,以防bus信号只连到最低的一位。
(b)各个module最重要的的信号莫过于clock和reset。一个完整的chip通常有多个clock domain。
clock没连接正确,整个design会逻辑混乱。reset信号不正常,会导致design无法在正确的时间复位。
出问题的时候,最先检查的也是clock和reset信号。
(c)确保每个module的input信号都是有确定的值,input 信号不允许存在high Z或者unkown状态。
在simulation阶段,High Z或者Unkown信号的影响并不明显,不一定会有error,但综合后下载到hardware之后可能会出现不可预测的情况。
对于没有用到的input信号一律tie到无效状态,也就是说如果信号高有效则tie至0, 低有效则tie到1。
(d)没有用到的output信号悬空不做处理。
(2)步步为营
搭建好EDA simulation环境之后,在log文件中逐个检查warning和error,清除所有能清掉的warning和error。
通过波形查看各个端口是否存在异常信号。
端口有异常信号,确保输入信号无误的情况下,再通过debug工具trace到module内部查找异常的原因。
如果design比较大,可以bypass后面的模块(将模块注释掉,output signal assign成0),逐步分段debug,这样可以节约跑simulation的时间。
根据需要将需要的debug信号引到端口,用内部register做select信号,方便hardware debug。
(3)一睹真容
simulation pass之后,将design设定好constraint 和pin assignment之后进行compile,生成下载文件。
根据需要将ASIC的sram,PLL和standard library替换成FPGA相应的sram,PLL和library。
Hardware调试之前,先确认各个主要器件处于正常work状态,可以通过已经正常work的hardware逆向检查。
调试第一步确认input signal是否正常。可以将input signal通过select 信号bypass到debug端口上。
之后分段debug,debug过程中可以借助示波器,逻辑分析仪,ISE 的Chipscope等工具,找到异常信号之后,在EDA simulation环境中trace导致异常的原因。
正常情况下,EDA simulation 能正常Pass 并且FPGA software综合做STA没有timing violation,hardware的结果和EDA simulation的是一致的。
PS:在EDA simulation 能正常Pass情况下,Hardware simulation不正常work的原因。
(a)hardware 的外部clock没有meet requirement。
(b)register setting和EDA环境不一致。
(c)Timing violation
在整个过程中碰到最多的还是clock的问题,因为Clock Domain太多,刚开始没有完全理清相互之间的关系。有些Clock没有接对。导致后面出现一些很难debug的情况。
另外一个就是timing 问题,debug port的select信号用的是Core内部的register,穿越hierarchy比较深,导致Hold violation,建议select 信号用hierarchy比较浅的信号。
PSPS:做verification最重要的还是细心,很多bug都是细微的错误导致的。多次check可以减少debug时间。
遇到难解的bug,用逐个排除的方法定位,很多看起来一定正常的地方,通常是bug的所在,不要主观臆断,Seeing is Believing。
End
posted on 2011-07-29 22:58 Homography Matrix 阅读(576) 评论(0) 编辑 收藏 举报