前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >同步时钟域是否会有亚稳态?

同步时钟域是否会有亚稳态?

作者头像
数字IC小站
发布2022-08-26 18:46:17
1.1K0
发布2022-08-26 18:46:17
举报
文章被收录于专栏:数字IC小站数字IC小站

同步时钟域存在亚稳态吗

某网站上有人提问,同步时钟域是否会存在亚稳态的问题?

答案是肯定的,同步时钟域同样可能存在亚稳态,关于具体原因,我们从本质上进行初步分析。

1.什么是亚稳态?

在数字电路中,每一位数据不是1就是0。当然对于电路来说,并非1就是1V,0就是0V,对于不同的器件它们都有不同的对应区间。对于某个器件来说,0.55V以上可以识别出来是高电平,0.25V以下可以识别出来是低电平,但是如果信号的电压处于0.25~0.55V之间,器件也就无法识别是高电平还是低电平(最终的结果可能是高电平也可能是低电平,无法预测),这种状态也就是亚稳态。

2.为什么会出现亚稳态?

亚稳态的出现归根到底就是因为建立时间和保持时间不满足要求。

建立时间:时钟沿到来之前数据所要保持稳定的时间。

保持时间:时钟沿到来之后数据所要保持稳定的时间。

具体关于这个的解释,其实有很多资料,在此就不做过多解释。根据这个原因,我们可知,如果在同步时钟域中存在建立时间或者保持时间不满足的情况,那么就会出现亚稳态问题。一般情况下,EDA工具在进行STA分析时,就会保证在同步时钟域下的timing问题,保证timing最终会收敛。但是如果一不小心,还是会有EDA在进行STA分析时检查不到的地方,下面就举两个小栗子。

同步时钟域下的亚稳态小栗子1-异步复位

在数字电路中,常常采用的DFF是异步复位同步释放的电路,这样的电路和同步复位电路之间的区别在此也不再多讲。

如下图所示电路

如果两个DFF在连接的是同一个clk,那么这段电路就是同步时钟域下的电路。如果存在前者的reset和后者的reset不是同一个reset信号,换句话说,两者不是同时复位的,甚至前者比后者更早复位,那么就会出现亚稳态的问题。

原因在于EDA在STA时会做reg2reg的timing收敛,但是注意,STA能够做的是分析从DFF的Tclk2q 再加上组合逻辑延迟是不是满足reg2reg的setup/hold timing。但是它不会check从reset端发出的timing,因为复位是可能在任何时候发生的,所以没法进行STA分析。所以这就是现在不仅仅只是check CDC,也得注意check RDC的原因。

如果需要解决这样的问题,主要有以下几种方式。

1.同步时钟域内使用同一个reset源。

2.保证reset sequence,保证后面的reset不晚于前序reset复位。

3.同CDC类似,做同步处理,即在两个DFF之间再插入同步器,这里需要注意的是,需要保证logic和原有一致,有些电路对timing 有严格需求可能不能这么做。

4.在第一级DFF后面添加clamp电路,这样钳制DFF的输出值不会对后续电路造成影响,clamp可以是组合电路,这样就不会带来timing cycle的问题。(具体操作下次可以开一篇文章再讲讲)。

同步时钟域下的亚稳态小栗子2-可变延迟链

电路中存在延迟链,特别是可编程的延迟链时,是很容易发生亚稳态问题的,如下图所示。

这种电路在进行STA分析的时候,一般会采取两种方式。

1.set_false_path,直接不检查这段path的timing

2.set_case_analysis + multi_cycle。

无论哪种,我们都无法保证遍历到所有情况下,都不会触发hold/setup violation,因此也是存在亚稳态概率的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字IC小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档