微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 关于跨时钟域的data是否需要同步化处理

关于跨时钟域的data是否需要同步化处理

时间:10-02 整理:3721RD 点击:




如上图,对于跨时钟域的data来说,是否就是说:如果要在next cycle将data capture,那么就不用同步化;如果再few cycles later 将数据 capture就要将data 进行同步化处理?还有,如果要同步化处理,一般就是用寄存器打拍的方法吧
对于前端不是很熟悉,望高手指点下

"a few cycles later"。
是在哪本书中看到的呢?
我的认知还停留在,跨时钟域需要避免亚稳态,有两种方式:
1-单bit,加2-reg-syncer电路
2-多bit,用fifo
的阶段
难道"a few cycles later"跟fifo的场景有关系?不明觉厉
搬板凳等待高人。

个人觉得这份资料是从时序分析的角度考虑是否要做同步化处理。
如果把隐含的词语都表明应该是这样的翻译:
如果下一拍就需要采样,那么由于下一拍的时钟沿可能离信号变化沿很近所以必须要做同步处理;
如果几拍之后再采样,那么信号早已变化完,并且稳定,所以不需要做同步处理。例子如配置寄存器一般在配置完之后不需要立即生效,所以一般可以不需要同步处理。而且芯片中配置寄存器一般很多,都做同步处理浪费资源。
另外,需不需要做同步处理需要有很多判断条件。
根据看过的资料和经验个人觉得可以这么划分:
1. 首先将dff分为三类:信号(随时变化,马上需要采样);控制(变化后需要几拍时间之后采样);配置(基本是模式配置,配置完之后很久不变化)。对于信号寄存器必须要做同步处理;对于配置寄存器基本可以不做同步处理;对于控制信号要分类看待。
2. 对于start clock和capture clock的频率和相位均没有关系,符合上述条件需要做同步处理的一定要做。一般原则是1-bit,2级dff;多-bit,afifo。但是也要看需求,有时考虑到信号完备性,1-bit也需要afifo。
3. 对于start clock和capture clock之间有generated关系,相位确定的。尽量从设计上避免异步处理,这样可以时序比较简单,而且省面积。
4. 对于在接近analog的一些数字逻辑,有generated关系,但是相位不确定。一般不当做异步处理,需要通过后端取得时钟树延时信息,再通过这些信息查一些buffer。这个可能不算标准的同步数字逻辑的做法,但是高速接口IP中会使用到。

恩,多谢啊,解释的很详细;前两个理解了,对于后两个想问下:
对于3,master clock 和 generated clock 之间肯定是同步的吧,还可以是异步的吗?

对于4,“插buffer... ...高速接口IP中会使用到 " 插入buffer之后不是使速度更慢了吗? 这个如何理解呢?

是的,generated_clock是同步关系。我的意思是:如果设计中有倍数关系的,最好用generated_clock来做设计,这样是同步的。
插buffer的意思是在clock tree上插buffer,通过delay clock来满足timing,避免增加afifo。

哦 明白了!多谢!

请问一下,afifo 两个时钟什么情况下可以设置成false_path?

afifo一般用于两个完全异步的时钟之间,此时前端提供的约束中,afifo的两个时钟自然是false path的。如果前端在两个同步分频时钟之间使用afifo来设计也是可以的,这两个时钟就不能false path,因为除了这个afifo,可能有其他逻辑信号是需要在这两个时钟之间同步的。

也就是说如果只针对afifo ,不考虑其它逻辑,afifo两个时钟之间一定是可以设置成 false_path 的,对吧?我查了一下,虽然两个时钟之间是generate 关系,但其它逻辑没有关联,只有afifo是两个时钟交集。其它逻辑都是单时钟!

是否要false path应该是前端设计人员根据实际设计需求来提出约束,设计人员应该很清楚才对,不需要后端人员在这里困惑捣鼓吧。我上面已经说了,如果afifo接的是两个完全异步的时钟,那一定是false path;如果设计人员用在两个同步分频时钟上,则不能将两个时钟false path。这只能由设计人员决定。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top