注明:如需转载,请注明作者出处,谢谢~,Author:pythonlong
以下根据资料和个人体会整理,如果错误,疑问欢迎请指正,讨论!!
有了上篇的知识http://bb2hh.blogbus.com/logs/20756952.html,
下面开始正式分析时间余量slack。其实有了上面的知识,只要稍微说明下大家都会很明白。
在介绍slack之前,我们要先了解一下要求时间(required time)和达到时间(arrive time)的概念以及计算方法。
如果没有特殊说明,黑色clock代表没有影响因素的理想时钟,红色(粉色)clock代表收到latency影响的时钟。蓝色clock代表同时受到latency和skew(uncertainty)影响的时钟。
对于建立时间(setup time)的到达时间和要求时间。
在分析前,记住,建立时间是分析路径中的考虑到各种最不利因素的最大延迟,打个比方:
前面一级用尽最大程度向后推(最大的延迟),本级就近打力气向前顶(最大不确定因素)。
然后看中间有没有漏气(slack为负,时序违规)。
1, 输入端口到时序器件的数据端口。
上图中
要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup
到达时间=T1+Tlantency+Tinput_delay+Tlogic2
2, 时序器件的输出管脚到输出端口
上图中:
要求时间=T2+Tlatency-Toutput_delay-Tuncertainty_setup
到达时间=T1+Tlatency+Tcell+Tlogic5
3.时序器件到时序器件
上图:
要求时间=T2+Tlatency-Tuncertainty_setup-Tsetup
到达时间=T1+Tlatency+Tcell+Tlogic
4,输入端口到输出端口
如上图:
要求时间=T2+Tlatency-Tuncertainty_setup-Toutput_delay
到达时间=T1+Tlatency+Tinput_delay+Tlogic
我们再来看下保持时间,保持时间的到达时间和建立时间的到达时间是一样的。只是保持时间的要求时间不一样而已.
保持时间类似于龟兔赛跑:
系统要求时间就是尽可能的向后,而线上信号延迟时间还要比要求时间向后,如果延迟时间追上了,就没问题,追不上问题就有了。
说明:红色和粉色表示受latency影响,蓝色表示受uncertainty影响。
1. 输入端口到时序器件的数据端口。
到达时间:Tarrive=T1+Tlatency+Tinput_delay+Tlogic
要求时间:Trequire=T2+Tlatency+Tuncertainty_hold+Thold
2. 时序器件的输出管脚到输出端口
到达时间:Ta=T1+Tlatency+Tcell+Tlogic
要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delay
3时序器件到时序器件
到达时间:Ta=T1+Tlatency+Tcell+Tlogic
要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold
4,输入端口到输出端口
到达时间:Ta=T1+Tlatency+Tinput_delay+Tlogic
要求时间:Tr=T2+Tlatency+Tuncertainty_hold+Thold-Toutput_delay
Slack计算:
对于建立时间:
Slack=要求时间-到达时间
对于保持时间
Slack=到达时间-要求时间