取消
显示结果 
搜索替代 
您的意思是: 
Highlighted
Participant
Participant
208 次查看
注册日期: ‎12-26-2019

关于asynchronous clock groups的问题

跳至解决方案

您好,我看UG903里说,primary clock在大多数情况下会当作异步的。primary clock和respective generated clcok组成的是asynchronous clock group?但是generated clock不就是由primary clock产生的吗,感觉两者像是同步的啊?

0 项奖励
1 解答

已接受的解答
Highlighted
Moderator
Moderator
157 次查看
注册日期: ‎11-05-2010

同一个prime及其衍生的clk应该属于同一个async clock group,而另一个prime及其衍生的clk属于另一个async clock group,但这两个async clock group因为prime时钟是异步的,所以可以不用进行时序分析,但是要通过set_clock_groups进行约束。这样理解对吗?

因为这两个async clock group因为prime时钟是异步的,所以时序分析工具对相应跨时钟域的分析是没有意义的,由此不进行时序分析,而依靠自身的逻辑来确保这些数据传递的正确性(Ex:握手机制,FIFO)

什么叫做CDC分析的基础是两个clk之前的确存在固定的相位关系,所以需要人为加约束把没有固定相位关系的clk隔离开?是跨同步时钟域不需要set_clock_groups,而跨异步时钟域需要set_clock_groups的意思吗?

时序分析的时候默认相位是0,但是实际异步时钟的相位关系有任意的可能性,你说这强行去分析这两个异步时钟的clock path有意义吗?

跨同步时钟域的路径工具会自动分析,但是一旦时钟结构不合理,无法满足时序,你还是需要依靠自身的逻辑来确保这些数据传递的正确性,同时把这样的路径设置set_clock_groups. 后一问的回答见第一个问题回答. 

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

在原帖中查看解决方案

3 回复数
Highlighted
Moderator
Moderator
191 次查看
注册日期: ‎11-05-2010

Vivado在分析时序时,默认会分析所有时钟之间的路径,但是跨时钟域分析的基础是两个时钟之前的确存在固定的相位关系, 所以需要人为加约束把没有固定相位关系的时钟隔离开.

Prime时钟一般是独立的时钟,和其他的prime时钟没有相位关系,所以我们认为prime 时钟之间是异步关系.

In most cases, primary clocks can be treated as asynchronous. When associated with their
respective generated clocks, they form asynchronous clock groups.

这段话的意思是prime clock 和他自己的衍生时钟可以组成一个async clock group, 这个group内部的时钟之间的路径是要分析的,这个clock group 和其他clock group 包含的时钟之间的路径不分析.

举例:你可以观察一下下面的约束体会一下. 这里有两个clock group (-group 确定), 第一个clock group是clk0以及clk0 的衍生时钟

set_clock_groups -name async_clk0_clk1 -asynchronous \
-group [get_clocks -include_generated_clocks clk0] \
-group [get_clocks -include_generated_clocks clk1]

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------
0 项奖励
Highlighted
Participant
Participant
169 次查看
注册日期: ‎12-26-2019

谢谢您的回复。我现在的理解是,同一个prime及其衍生的clk应该属于同一个async clock group,而另一个prime及其衍生的clk属于另一个async clock group,但这两个async clock group因为prime时钟是异步的,所以可以不用进行时序分析,但是要通过set_clock_groups进行约束。这样理解对吗?

还有一个问题,就是最开始那一段话有点不太理解,什么叫做CDC分析的基础是两个clk之前的确存在固定的相位关系,所以需要人为加约束把没有固定相位关系的clk隔离开?是跨同步时钟域不需要set_clock_groups,而跨异步时钟域需要set_clock_groups的意思吗?

0 项奖励
Highlighted
Moderator
Moderator
158 次查看
注册日期: ‎11-05-2010

同一个prime及其衍生的clk应该属于同一个async clock group,而另一个prime及其衍生的clk属于另一个async clock group,但这两个async clock group因为prime时钟是异步的,所以可以不用进行时序分析,但是要通过set_clock_groups进行约束。这样理解对吗?

因为这两个async clock group因为prime时钟是异步的,所以时序分析工具对相应跨时钟域的分析是没有意义的,由此不进行时序分析,而依靠自身的逻辑来确保这些数据传递的正确性(Ex:握手机制,FIFO)

什么叫做CDC分析的基础是两个clk之前的确存在固定的相位关系,所以需要人为加约束把没有固定相位关系的clk隔离开?是跨同步时钟域不需要set_clock_groups,而跨异步时钟域需要set_clock_groups的意思吗?

时序分析的时候默认相位是0,但是实际异步时钟的相位关系有任意的可能性,你说这强行去分析这两个异步时钟的clock path有意义吗?

跨同步时钟域的路径工具会自动分析,但是一旦时钟结构不合理,无法满足时序,你还是需要依靠自身的逻辑来确保这些数据传递的正确性,同时把这样的路径设置set_clock_groups. 后一问的回答见第一个问题回答. 

 

-------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------

在原帖中查看解决方案