FPGA时序Bug分析

可编程逻辑

1348人已加入

描述

最近做项目遇到一个bug。

Bug的现象是这样的,假设我们跑一次test,结果正确为T,结果不正确为F。

那么如果连续跑多次test,开始几次的test结果都为T,从第N次开始,结果为F。

关键N不是一个固定的值。

考虑到单次test没有外部事件的干扰,N为一个随机值就让我感觉很像是因为时序出错的原因导致的。

这里的时序出错不是setup/hold violation,而是类似握手信号这样的时序关系。

后来检查出错部分相关的代码,发现果然是因为ready信号导致的时序错误。

ready信号会随机拉高,在某种case下便导致了时序错误。

再仔细想想,如果testbench写得完整一些,这个bug完全是可以避免的。

比如一个设计要发送一个TCP包,但是testbench只检查 TCP包的data部分,而不检查header部分。

那如果tcp checksum算错,testbench是发现不了的。

上板子测试才发现,去debug,花费的时间力气就不是一个量级的了。







审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分