讨论下latch的time borrowing?
对于time borrowing不是很清楚,高手是否可以讲讲?
另外,latch为什么可以加速设计?
你可以说的明白一点吗?》
搬个板凳占位,等高手解答
time borrowing是老一辈full custom设计者喜欢的,
但是现在的EDA都没法分析这个,所以现在基本上一般的ASIC design都不会用。
基本的感念就是因为latch是电平触发的,数据只要在半T内通过都可以,所以上一级可以在下一级打开的时间段内继续算,只要在下一级关闭之前算出来就可以了。
但是不能一直借下去。
Flip-Flop use 2 latches to capture data on edge.
So, latch delay is smaller, but leak current higher.
For ex:
if you use Flip-Flop, your data must be stable before clock rising edge.
but, if you use latch, data change can be delay until before falling edge. ( if it is a HIGH transparent latch).
Usually, we will use latch under such situation:
Flip-Flop + latch + Flip-Flop,
we dont like to use
latch+latch+ latch
Except timing borrow, latch also can fix big hold time issue.
1# seaman_516
Thanks a lot
5# abnerliu
why can fix hold time problem?
=====================================================楼上正解==
我现在总结下自己的帖子,呵呵
time borrowing:指的是两段时序路径之间的borrowing,具体如下解释;
一般,当两个latch串联时,比如latcha和latchb,latcha高电平有效,latchb低电平有效,
一个时钟周期,假如高电平先来;
那么如果在时钟下降沿之前latcha的q端数据到达latchb的d端,那么setup满足,为正值,如果在第二个上升沿之后latcha的q端数据到达latchb的d端,那么setup仍然满足,此时发生了timing borrowing,setup报告为0;
如果在第二个上升沿之后才到达, 那么setup违反,为负值;
因此,最大的可以借到的时间是半个周期。
至于为什么说加速设计,那是因为:
相对于2级的DFF设计,中间有很多的组合逻辑,所以最高的运行频率低于组合逻辑的delay,但是将DFF换为latch时,可以提高此时的运行频率,因为可以向后一级路径借点时间,这样功能也不会出错。
当然,latch的STA分析比较复杂,一般的ASIC设计都不用,但是latch真的很有用:常见的memory设计,以及门控,hard block等中latch很常见,latch面积小,但是没有时钟,所以测试不方便,时序分析不方便,EDA流程中很少用而已。
谢谢各位赐教,学习了
timing borrowing通常是在有Latch的时序电路中,可以向latch借时间。
在clock gating中用的较多。
能否请哪位发些相关的资料
不错,不错。
transparent
这个有意思,但是工艺决定了以后,一个cycle中最多能做的事情就差不多决定了吧
如果designer 真的用到了timing borrowing 那在STA 的时候怎样确保全部的timing 都满足呢?是不是需要大量的manual effort ?而不能直接依靠EDA工具?
hi,
would you please explain why the latch has a higer leak current with DFF.?
Thank you.
time borrowing:指的是两段时序路径之间的borrowing,具体如下解释;
一般,当两个latch串联时,比如latcha和latchb,latcha高电平有效,latchb低电平有效,
一个时钟周期,假如高电平先来;
那么如果在时钟下降沿之前latcha的q端数据到达latchb的d端,那么setup满足,为正值,如果在第二个上升沿之后latcha的q端数据到达latchb的d端,那么setup仍然满足,此时发生了timing borrowing,setup报告为0;
如果在第二个上升沿之后才到达, 那么setup违反,为负值;
因此,最大的可以借到的时间是半个周期。
那个"后"字应该改为前字吧
帅气!
十分感谢,有没有这方面的资料可以共享下?不胜感激!
有用,马克!
我看到相关资料里提到max time borrow 是半个时钟周期+clock_latency_difference-setup。请问为什么要加上clock_latency_difference?latency不是已经实际计算在latch上的D pin 和EN pin上了吗?
用来timing borrow(fix setup viol)时, latch是高电平触发的
用来fix big hold时 , latch是低电平触发的。
两者场景不同。
http://vlsi-soc.blogspot.com/2013/01/lock-up-latch-implication-on-timing.html#!/2013/01/lock-up-latch-implication-on-timing.html
http://ohotspot.blogspot.com/2012/09/time-borrowing-and-time-stealing.html?view=classic#!/2012/09/time-borrowing-and-time-stealing.html
可以参考这篇文字
http://www.eetimes.com/document.asp?doc_id=1278980
不过要注意,里面的图关于register1 launch edge应该标注为latch2 的capture edge
再给大家推荐一篇文章。
http://vlsi-soc.blogspot.com/2013/01/lock-up-latch-implication-on-timing.html#!/2013/01/lock-up-latch-implication-on-timing.html
http://tech.tdzire.com/latch-setup-and-hold-timing-checks-basics/
好贴要顶啊
http://www.eetimes.com/document.asp?doc_id=1278980
这篇文章分析的挺细的
学习了
