序:
本篇内容,基于阅读J. Bhasker • Rakesh Chadha著作《Static Timing Analysis for Nanometer Designs》后进行的总结以及自己的观点和感想,如有不正确的地方,还请指点。读者有微电子基础将更好理解内容。(图片内容绝大部分直接引用书中)
时序分析中的时序,就是时间长度相关的check,时间长度则取决于path的时间长度,path的时间长度取决于path上的每个cell、net的时间长度,而信号通过cell、net的时间长度即cell delay和net delay。本章讲介绍关于delay计算的输入内容和计算方式。
5.1 Overview
5.1.1 Delay Calculation Basics
通常电路中包含组合逻辑和时序逻辑如下图所示:
库中会描述每一个pin的输入电容值,那这样每一个net都会有相应的电容负载,即这个net的所有负载电容的加和。例如上图中的UAND1的负载电容则为UNOR2一个输入端的电容和O1的输出电容的总和。之前章节有过说明,单元库中,cell的delay值是一个二维查找表的格式,其中由输入trans和输出cap决定。因此可以根据相应的trans和cap去决定每一个cell的delay值。另外输出的trans也是和delay类似,由输入trans和输出cap决定的二维查找表格式。
5.1.2 Delay Calculation with Interconnect
PR之前,使用线负载模型估算寄生参数,对于工艺节点非常不先进的情况下(0.65um以上),通常互连线电阻可以忽略,那这个时候可以用上面的计算cell delay的方式去计算net delay值。但是如果对于较为先进的工艺节点,电阻不可忽略,那NLDM模型仅仅用input trans和output cap来评估delay是不准确的。PR后,金属互连线,真实的map成为了RC互联的形式,而lib中的NLDM模型,没有办法直接去使用,而是要把真实的RC值等效为“有效电容”的形式,进行计算delay。
5.2 Cell Delay using Effective Capacitance
什么是所谓的有效电容?可以理解为等效电容。如下图5-4所示,(a)为最真实的RC network,在计算图上与门的load时候,需要考虑所有的cap和resistance,可以看到此RC网络可以等效为π模型如(b)所示。此时虽然精简到了π模型,但是依然有电阻的存在,那对于NLDM模型的查找表依然不能使用,那就继续优化,把(b)的π模型等效为(c)的单一电容模型。
一顿操作猛如虎,那是如何等效的呢?看图5-5,(a)(b)©三者对应了充放电模型,可以看到这三种形式其实重放电类型是类似的,那总能找到一个有效电容,是的其充放电波形和actual load是相似的。具体的如何找到的这里就不作继续的讨论。其实在最新的工艺节点,CCS模型已经引入到其中,这个有效解决了NLDM模型的不精确带来的问题了。感兴趣可以自己研究。
自获得了有效电容之后,就可以通过NLDM模型进行cell 和net的delay 计算
5.3 Different Slew Thresholds
现在的项目里面,基本上不会出现,同一个design,不同的cell用不同的slew thresholds的情况,都是用的同一套库,即便用的不同的库,cell的slew thresholds也基本都一致。此处不做详细研究,有兴趣可以自行看书。
5.4 Different voltages
跨电压的情况,在现在的design里面倒是用到的非常多。最常见的cell例子就是level shifter。现在design的设计非常注重low power,因此各种节省功耗的方式都会存在,就会存在design中不同模块用电压不同,那接口处就需要用lvl来处理,防止出现功能问题。(低压到高压,如果不用lvl,可能导致驱动不足,后级cell无法开启,影响功能;高压到低压,如果不用lvl,会导致后级cell的timing model不够准确,影响STA效果)。如下图所示为高压到低压的lvl shifter示意图,同一个cell在不同的电压下,slew自然是不同的。
5.5 path delay
path的delay ,取决于是path上面的cell和net的delay值
5.5.1 combinational path delay
下图所示为组合逻辑的path路径,那从N0到N3的delay值的计算,取决于这个path上经过的cell和net的delay之和,因为cell都存在上升和下降的情况,因此,所有的cell delay和net delay计算时候,都需要考虑是否是上升沿或者下降沿,不同的转换状态,delay值也是不同的。在STA中,对于gba mode去报timing时候,可能会按照某个cell最差的情况去选取上升或者下降沿,但是用pba mode(signoff mode)去报的话,就会看你真实的timing arc是什么样。比如N0如果是上升,那UINVa必然是下降,UINVb必然是上升,由此推及所有。得到两种delay计算:
● Tfall = Tn0rise + Tafall + Tn1fall + Tbrise + Tn2rise + Tcfall + Tn3fall
● Trise = Tn0fall + Tarise + Tn1rise + Tbfall + Tn2fall + Tcrise + Tn3rise
5.5.2 sequential path delay
下图是design设计中STA check最常见的一种path ,DFF到DFF的路径。其delay计算方式同理:
UFF0 数据上升情况下到UFF1的数据路径延迟:
● Tck2qrise + Tn1rise + Tafall + Tn2fall + Tbfall + Tn3fall
输入PCLK对应上升沿的(launch)时钟路径延迟为:
● Tn4rise + T5rise + Tn5arise
输入PCLK对应上升沿的(capture)时钟路径延迟为:
● Tn4rise + T5rise + Tn5brise + T6rise + Tn6rise
此处的数据路径延迟,并未加入DFF的library hold/setup time。并不是一个完备的数据路径。详细的数据路径参考setup、hold time check介绍内容。
5.5.3 Multiple Paths
如下图所示,实际的电路中,从UFF0到UFF4的数据路径可能不止一条,可能走上面的一条长的路径,也可能走下面一条短的路径,不同路径对应不同的timing arc ,在STA阶段,对于setup check,一般会针对长路径去卡,如果最长路径就满足了setup check , 那最短路径自然满足。同理,对于hold check,一般针对最短路径去卡。
5.6 Slack Calculation
slack是指要求的时间和数据真正到达时间的差距,如果在要求时间,数据还未到,那就是负值,如果在要求时间内,数据已经到达,那slack就是非负值。如下图所示为setup 检查,一个周期为10ns ,数据要求在7ns时刻准备好,实际上在1ns的时刻就到达了,那么这个setup check的slack为7-1=6ns。如果在8ns时刻到达了,那setup slack就是7-8=-1ns。