多次遇到post synthesis simultation与behavioral simulation结果有出入的情况,有时候还错的很离谱,看半天没看出问题。
一次是发现有一个critical warning,说multiple driven net什么的
解决:仔细一看发现有一个信号是由多个信号驱动的,当同时发生时它不知道到底听哪边的。因为其中有一个驱动它的信号是rst所以之前没怎么看出来,改了就好了。
另一次是发现inferring latch的warning,在modelsim里仿真结果并没错,但是上板错了,用vivado重新跑了后仿真,发现也是错的(这让我思考是不是modelsim做后仿真并没有任何后仿真的功效,后仿真是不是一定要在vivado里面做?)。
解决:关于inferring latch我看了这篇
关于 状态机中的组合逻辑_inferring latch for variable-CSDN博客
最后决定去掉组合逻辑改用时序逻辑