Slew time和Transition time是否一样?

电子说

1.3w人已加入

描述

高能正文:

Slew从名称上讲和transition并没有多大区别,但是两者的time值可能并不相同。因为如果两者完全相同的话,那为什么.lib里面slew和transition要用两个词而不用一个词呢?所以两者是有区别的。

上面说的可能,意思是说有时候两者相同,有时候两者不同,对于之前比较老的工艺而言,一般是相同的,但是随着工艺先进性的提高,两者逐渐不同了,两者的关系体现在一个系数上:

slew_derate_from_library

首先讲一下slew

实际波形的末端是渐近的,很难确定过渡的确切起点和终点。因此,.lib库中都会基于特定阈值来定义slew,即Slew的值依赖于.lib里面指定的测量阈值,对于之前比较老的工艺(比如0.25um/0.18um或者更老),它们一般使用10%和90%作为slew或者transition time测量的阈值,此时slew和transition的值是一样的。如下图所示为某Foundary 0.18um工艺对Slew阈值与derate的定义:

EDA工具

Slew与Transition的关系

关键:Slew阈值的选择对应于波形线性的部分

EDA工具

随着工艺尺寸的减小,实际波形最线性的部分通常在30%至70%之间。因此,大多数新一代时序库都将Slew测量点指定为Vdd的30%和70%。

但是,由于之前老工艺中测得的transition time时间在10%至90%之间,因此在k库填写里面的transition time时,通常将测得的30%至70%的slew time加倍。

这由slew derate系数指定,通常指定为0.5。slew阈值为30%和70%,slew derate为0.5时,等效测量点为10%和90%。

Transition time:      10% ~ 90%,范围80%,derate 0.5之后和下面的一样:

Slew time:                30% ~ 70%,范围40%

阈值设置的示例设置如下所示:

/* Threshold definitions */

slew_lower_threshold_pct_fall : 30.0;

slew_upper_threshold_pct_fall : 70.0;

slew_lower_threshold_pct_rise : 30.0;

slew_upper_threshold_pct_rise : 70.0;

input_threshold_pct_fall : 50.0;

input_threshold_pct_rise : 50.0;

output_threshold_pct_fall : 50.0;

output_threshold_pct_rise : 50.0;

slew_derate_from_library : 0.5;

注意:上面说的是通常情况下transition对于波形VDD的10%~90%,但是并非一定,具体slew和transition time的百分比还要看.lib里面的trip points定义的阈值以及slew derate的值,为了清楚理解他们之间的关系,大家可以看下面两个例子。

例1

/* Threshold definitions 20/80/1 */

slew_lower_threshold_pct_fall : 20.0;

slew_upper_threshold_pct_fall : 80.0;

slew_lower_threshold_pct_rise : 20.0;

slew_upper_threshold_pct_rise : 80.0;

/* slew_derate_from_library not specified */

Slew指定的是波形20%~90%的部分,库中没有指定slew_derate_from_library,默认为1,因此Slew和Transition time的值是相同的。

EDA工具

例2

slew_lower_threshold_pct_rise : 20.00;

slew_upper_threshold_pct_rise : 80.00;

slew_lower_threshold_pct_fall : 20.00;

slew_upper_threshold_pct_fall : 80.00;

slew_derate_from_library : 0.6;

可以看到slew的trip points定义为VDD的20%和80%,范围是60%,且slew derate值是0.6,因此transition time就对应扩展为VDD的0%到100%的时间,如下图所示:

EDA工具

最后根据看到的文献补充一下就是:

EDA tool内部计算用的应该是Slew值也就是波形线性的部分,也是transition derate之后的值;

而在工具中report_timing或者get_attribute报告出来的是transition的值;

lib LUT中的input/output transition正如名字一样,用的就是transition的值;

现在某些EDA工具里面可能已经混用了Slew和Transition的概念(比如Innovus,你报告transition,报告上方显示的是Slew...)不过.lib里面不存在这种问题。






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分