modelsim仿真和实际上板结果不一致的原因及其解决办法

描述

问题

某项目在完成算法模型的modelsim仿真之后,开始硬件上板调试。在modelsim仿真阶段,仿真结果正常,符号算法预期,然而在硬件上板调试阶段,实际测试结果却和仿真不一致,且差异较大。

开始遇到这个问题我是十分诧异的,因为一般来说,仿真对了,上板大概率就能对,因为用的是同样的代码,只不过一个是仿真,一个是上板,然而结果就是不一样。

解决办法

后来经过我的总结,遇到此类现象,解决办法概括为一句话:

找modelsim仿真和实际上板的区别。

1,时序的区别

仿真时都是理想的时序,时钟按照我们约定的周期运行仿真,结果也是理想的。实际上板后,由于布局布线的原因,综合后的逻辑电路某些信号可能时序延迟过大,导致上板的逻辑和仿真有所偏差。

这个时候首先就是要检查程序中是否有报红的时序问题,解决时序问题(参照之前的文章),合理约束时钟周期,合理解决时序问题,解决之后再次综合上板,观测是否还有差异。

2,输入参数和初始值的区别

虽然仿真和实现的代码完全一样,但在仿真中,使用的是我们自己设定的输入参数,某些变量的初始值也是我们仿真设定好的,因此在某模块的功能异常时,仔细看看该模块的输入参数和初始值,在仿真和实现中有何不同。

3,次数的区别

modelsim仿真往往只对某个模块仿真1次或者几次,而实际上板中,有可能故障是在几十次,几百次,甚至更多次后才会出现。在实际上板中,某个模块最初的几次运行中也许不会出问题,但如果模块中的逻辑不严密,随着时间的推移,运行次数的增加,错误积累到一定条件下,就会触发bug,这种错误往往是极难发现的。





审核编辑:刘清

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

全部0条评论

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

×
20
完善资料,
赚取积分