在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7351|回复: 17

[求助] 关于cross clock domain (fast to slow)的一个小问题【已解决】

[复制链接]
发表于 2015-6-7 18:28:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 jiazhang 于 2015-6-8 16:04 编辑

create_clock -name CLKM \
-period 10 -waveform {0 5} [get_ports CLKM]
create_clock -name CLKP \
-period 20 -waveform {0 10} [get_ports CLKP]

00.jpg

请问:CLKM第一个时钟沿发出的数据,是由CLKP的哪个时钟沿来接收的呢?
发表于 2015-6-7 18:49:14 | 显示全部楼层
clkm的第二个时钟沿产生的数据会把第一个时钟沿产生的数据冲掉,所以这个要根据设计去合理设计multicycle path.
 楼主| 发表于 2015-6-7 19:12:14 | 显示全部楼层
回复 2# fman

您的意思是如果design中有上面这样的时钟,并且不设置multi cycle的话,design就不正确了 是吗?

011.jpg
   
对于上面这种设计,比容容易理解 ;CLKM的第一个时钟沿发射的数据被CLK90第一个沿接受,hold的检查  就是保证 CLKM的第二个时钟沿发射的数据不能太快传到CLK90处的寄存器,所以hold检查是CLKM第二个时钟沿与CLK90第一个时钟沿;

但对于第一图中的hold检查不是很理解,
 楼主| 发表于 2015-6-7 19:17:57 | 显示全部楼层
回复 3# jiazhang

其实我的意思就是说:hold检查的话,capture edge 必须是在 setup 检查时作为capture edge的时钟沿才可以吧

如第二幅图中,但第一幅图中 hold 的 capture edge 并没有在 setup check时作为capture edge啊
 楼主| 发表于 2015-6-7 19:29:40 | 显示全部楼层
回复 4# jiazhang

5.jpg
    我觉得hold检查的应该是  ④和(3) 之间做检查才对啊
发表于 2015-6-7 19:35:07 | 显示全部楼层
2个clock domain之间的sta就是 用最严的edge来算的, sta工具会帮你考虑的

你只要判断是不是real path,有必要可以设mcp或者false path,
 楼主| 发表于 2015-6-7 19:42:33 | 显示全部楼层
回复 6# icfbicfb

[size=14.3999996185303px]hold的检查简单理解就是为了让 launch clock的第二个时钟沿发射的数据不把launch clock的第一个时钟沿发射的数据覆盖掉;
[size=14.3999996185303px]对于上图,把③看成launch clock的第一个时钟沿   把④看成launch clock的第二个时钟沿,那么应该是[size=14.3999996185303px]④这个时钟沿发射的数据
[size=14.3999996185303px]

[size=14.3999996185303px][size=14.3999996185303px]不能把[size=14.3999996185303px]③这[size=14.3999996185303px]个时钟沿发射的数据覆盖掉嘛,而[size=14.3999996185303px]③发射的数据是由(3)来接收的,所以hold的检查 应该是[size=14.3999996185303px]④与(3)之间检查才合理;
[size=14.3999996185303px]

[size=14.3999996185303px][size=14.3999996185303px]如果按照工具默认的按最严来检查,那就变成0ns和0ns之间时候检查了,但这个明显没有意义啊
[size=14.3999996185303px]

[size=14.3999996185303px][size=14.3999996185303px]1#中的图,CLKM第一个时钟沿发射的数据是由CLKP哪个时钟沿来接收呢?
发表于 2015-6-7 22:10:32 | 显示全部楼层
首先需要明确的是所有的约束都是根据design的功能来写的。只有知道degin的功能才能确定是不是false path, multicycle path, 以及如何设置multicycle path.
其次pt只有在确定了最严的setup的时钟关系之后,才能确认对应的hold check的时钟关系。
一般对于一个确定的setup check, 至少存在以下两个可能的hold check:
1. launch clock的下一个触发沿与capture clock 之间的check
2. launch clock和capture clock的前一个沿之间的check.

pt会在这两个检查之间选择一个最严的来检查hold.

setup_hold

setup_hold



如图, 默认 2-> 4之间的检查是最严的setup的检查 (setup 用实线表示, hold用虚线表示)。
对应有两个hold 检查。一个是 4 -> 4之间的检查,一个是2-> 0之间的检查。很明显 4->4 (等效于0->0)之间的检查是最严的。
所以默认pt会选择着这两个时钟沿来检查hold.

如果你通过设置multicycle改变了setup的check.那么对应的hold check之间的关系也会改变。
这个时候很明显2->4之间的hold检查比4->4之间的检查严,而且明显是不正确的。
所以我们在设置multicycle path的时候往往setup/hold都是成对出现的。
 楼主| 发表于 2015-6-7 23:15:46 | 显示全部楼层
回复 8# fman

您好,我想问下,对于您贴的这个图来说,上半部分中,0时刻的launch edge发射的数据是被下面哪个时钟沿来capture的
发表于 2015-6-8 10:40:08 | 显示全部楼层
回复 9# jiazhang

我只是从sta分析角度列出来有那些可能的capture的edge.具体你要看你的design怎么设计。


如果只是从图上来看, 0 时刻发的数据是抓不到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 10:52 , Processed in 0.023099 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表