VCS仿真错误:两个同步时钟下的解决方法

我们原先聊过TB中的一些写法,会让VCS出现仿真错误。详情见我的这个视频: VCS仿真的注意事项,注意,观众评论区提出的方法也很重要,视频方法和评论区的方法都能解决问题。

但是,如果是TB风格导致的VCS仿错,而是RTL的设计思路不被VCS所理解,那该怎么办呢?

我们来说个具体案例:我有两个时钟,clkA,clkB。clkB是慢的,clkA是快的,clkB是clkA的分频。那么,按理说,clkB下面的信号和clkA下面的信号是同步的。但是,仿真的时候,VCS分不清楚,clkA下面的数据,上升沿,经常被clkB采到。这是不符合我们仿真要求的,我们仿真是不能采集一个数据的上升沿的,对吧。我过去的办法是把clkA向后挪几个ps,但是这个不是长久之计。我希望VCS能够知道clkA和clkB的同步关系,这样它就不会出现这种事情了。请问VCS有没有什么设置语法,可以明确告诉他这一点的?

上面的问题如下图所示,datA属于clkA域,datA在A点上升,clkB与clkA完全同步,按理说它采样datA后,得到的datB应该在B点上升,但仿真中,datB也在A点上升,这是不对的。流出来片,一定是在B点上升的。

那这个前仿问题怎么解呢?我咨询了synopsys和cadence的AE,他们都说这种现象会发生,而且没有好的办法。我查了eetop等专业网站,也没有相关问题的帖子。所以就需要我们人为在RTL上做点工作,让仿真正确。

正确思路是:就是找到clkA和clkB交互过程中的关键信号,比如,clkA发出了一个sig,clkB会采这个sig。那就把sig延迟1ps(clkA发出的时候就延迟),这样就没问题了。

以上图为例,就是将datA在clkA打拍之后,在RTL上延迟1ps。这个延迟是不会被综合的,大家可以放心。

比较不好的办法是:如果延迟clkA,或者延迟clkB,让它俩存在1ps相位差的话,比较危险,会出现很窄的1ps的脉冲被采样到的情况。在时序分析上是不允许的。所以,我最终还是用延迟数据的方式,而不是延迟时钟,来解决这个问题。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空