如何解决FPGA 后仿真出现不定态问题?

我遇到的情景中,一般后仿真出现不定态的原因有三个:

更多的后仿出现不定态的的情形可以参考以下文章。

验证那些事最近陆续写了点工作方面的小文章,遂决定新开一个公众号,专门放工作相关的文章,就叫《超人验证》吧。先把去年写的《验证那些事》文章放在这里,作为超人验证公众号的开篇之作,我觉得挺合适的,走起。https://mp.weixin.qq.com/s/SNiDN3vP3C9Ci6E_Q_KbzA

1、在测试激励中没有对顶层文件的输入端口赋初值。

可见,良好的测试激励编写习惯很重要,首先应该对顶层输入端口赋初值,否则前仿真没有问题,到了后仿真出现问题,调试极其困难;

2、多重驱动冲突产生不定态

在同一时刻,两个不同的地方对同一个信号进行赋值,会冲突。多重驱动既会发生在DUT的设计中,也会发生在测试激励的编写中。尤其是在测试激励中编写三态inout端口的控制,如果控制信号产生的时机不合理,很容易导致冲突。

3、异步信号在传输过程中,建立世间和保持时间违例,产生不定态后并且向后级模块传播,最终导致不定态输出。

最近遇到了案例,就是接送异步串口的数据后,产生不定态并向后级传播(即使异步输入信号进行两级同步后,不定态仍然会进行传播),导致接收数据错误。

参考这篇文章,在modelsim中vsim阶段,添加 +no_notifier选项解决问题。

硅芯思见:【105】后仿真中的notifier是奏啥滴!

当然,这个+no_notifier 不是随便添加的。一定要确认该不定态的产生,是由于异步信号跨时钟域引起的建立、保持时间违例引起的,并且已经确认代码中已经使用跨时钟域处理后,再使用+no_notifier。

跟同事分享这个方法后,他觉得这个有点像静态时序中跨时钟之间设置false路径一样。我觉得说的挺有道理的,可以联系再一起进行记忆。

额外说一下,遇到这个问题是如何进行解决的。

好的搜索解决了问题的一半。

1、再微信搜索中输入关键词,后仿不定态。我一般用微信进行搜索,一般微信搜索可以搜索到很多优秀的公众号文章。

后仿详解 - 用VCS对布局布线后的门级网表进行仿真https://mp.weixin.qq.com/s/iBw1VA01QINIOpZjwQCH7A其中在上述链接中,查找到+no_notifier这个选项,作为关键词进一步的搜索,最终找到解决方案。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值