静态时序分析(StaticTimingAnalysis)基础及应用◎陈麒旭前言在制程进入深次微米世代之后,芯片(IC)设计的高复杂度及系统单芯片(SOC)设计方式兴起。此一趋势使得如何确保IC质量成为今日所有设计从业人员不得不面临之重大课题。静态时序分析(StaticTimingAnalysis简称STA)经由完整的分析方式判断IC是否能够在使用者的时序环境下正常工作,对确保IC质量之课题,提供一个不错的解决方案。然而,对于许多IC设计者而言,STA是个既熟悉却又陌生的名词。本文将力求以简单叙述及图例说明的方式,对STA的基础概念及其在IC设计流程中的应用做详尽的介绍。什么是STA?STA的简单定义如下:套用特定的时序模型(TimingModel),针对特定电路分析其是否违反设计者给定的时序限制(TimingConstraint)。以分析的方式区分,可分为Path-Based及Block-Based两种。先来看看Path-Based这种分析方式。如图一所示,信号从A点及B点输入,经由4个逻辑闸组成的电路到达输出Y点。套用的TimingModel标示在各逻辑闸上,对于所有输入端到输出端都可以找到相对应的延迟时间。而使用者给定的TimingConstraint为:1.信号A到达电路输入端的时间点为2(AT=2,AT为ArrivalTime)。2.信号B到达电路输入端的时间点为5(AT=5)。3.信号必须在时间点10之前到达输出端Y(RT=10,RT为RequiredTime)。现在我们针对P1及P2两条路径(Path)来做分析。P1的起始点为A,信号到达时间点为2。经过第1个逻辑闸之后,由于此闸有2单位的延迟时间,所以信号到达此闸输出的时间点为4(2+2)。依此类推,信号经由P1到达输出Y的时间点为7(2+2+3)。在和上述第三项TimingConstraint比对之后,我们可以得知对P1这个路径而言,时序(Timing)是满足使用者要求的。按照同样的方式可以得到信号经由路径B到达输出Y的时间点为11(5+1+3+2),照样和上述第三项TimingConstraint比对,我们可以得知对P2这个路径而言,Timing是不满足使用者要求的。对图一的设计而言,总共有6个信号路径。对于采用Path-Based分析方式的STA软件来说,它会对这6个信号路径作逐一的分析,然后记录下结果。IC设计者藉由检视其分析报告的方式来判断所设计的电路是否符合给定的TimingConstraint。由于最常用来做静态时序分析验证核可(STASignoff)的EDA软件PrimeTime™采用Path-Based的分析方式,所以本文将以Path-Based的分析方式介绍为主。再来看看Block-Based的分析方式。此时时序信息(TimingInformation)的储存不再是以路径为单位,而是以电路节点(Node)为单位。由TimingConstraint我们仅能得知A节点的AT为2,B节点的AT为5以及Y节点的RT为10。Block-Based的分析方式会找出每个节点的AT和RT,然后比对这两个数值。当RT的值大于AT时表示信号比TimingConstrain中要求的时间还早到达,如此则Timing是满足的,反之则不满足。STA资料准备在做STA之前,我们必须对其准备工作有充分的了解。STA所需的资料如图三所示,以下我们分项说明。其中DesignData部分,由于BlockModel和STA软件相关性太高,我们不在此加以说明,请直接参阅您STA软件的使用手册。图三 LibraryData:STA所需要的TimingModel就存放在标准组件库(CellLibrary)中。这些必要的时序信息是以TimingArc的方式呈现在标准组件库中。TimingArc定义逻辑闸任两个端点之间的时序关系,其种类有CombinationalTimingArc、SetupTimingArc、HoldTimingArc、EdgeTimingArc、PresetandClearTimingArc、RecoveryTimingArc、RemovalTimingArc、ThreeStateEnable&DisableTimingArc、WidthTimingArc。其中第1、4、5、8项定义时序延迟,其它各项则是定义时序检查。图四CombinationalTimingArc是最基本的TimingArc。TimingArc如果不特别宣告的话,就是属于此类。如图四所示,他定义了从特定输入到特定输出(A到Z)的延迟时间。CombinationalTimingArc的Sense有三种,分别是inverting(或negativeunate),non-inverting(或positiveunate)以及non-unate。当TimingArc相关之特定输出(图四Z)信号变化方向和特定输入(图四A)信号变化方向相反(如输入由0变1,输出由1变0),则此TimingArc为invertingsense。反之,输出输入信号变化方向一致的话,则此TimingArc为non-invertingsense。当特定输出无法由特定输入单独决定时,此TimingArc为non-unate。图五图六图七图八图九图十图十一图十二其它的TimingArc说明如下。 SetupTimingArc:定义序向组件(SequentialCell,如Flip-Flop、Latch等)所需的SetupTime,依据Clock上升或下降分为2类(图五)。HoldTimingArc:定义序向组件所需的HoldTime,依据Clock上升或下降分为2类(图六)。EdgeTimingArc:定义序向组件ClockActiveEdge到数据输出的延迟时间,依据Clock上升或下降分为2类(图七)。PresetandClearTimingArc:定义序向组件清除信号(Preset或Clear)发生后,数据被清除的速度,依据清除信号上升或下降及是Preset或Clear分为4类(图八)。这个TimingArc通常会被取消掉,因为它会造成信号路径产生回路,这对STA而言是不允许的。RecoveryTimingArc:定义序向组件ClockActiveEdge之前,清除信号不准启动的时间,依据Clock上升或下降分为2类(图九)。RemovalTimingArc:定义序向组件ClockActiveEdge之后,清除信号不准启动的时间,依据Clock上升或下降分为2类(图十)。ThreeStateEnable&DisableTimingArc:定义Tri-State组件致能信号(Enable)到输出的延迟时间,依据Enable或Disable分为2类。(图十一)WidthTimingArc:定义信号需维持稳定的最短时间,依据信号维持在0或1的位准分为2类。(图十二)上文列出了标准组件库内时序模型的项目,但对其量化的数据却没有加以说明。接下来,我们就来看看到底这些时序信息的确实数值是如何定义在标准组件库中的。以CombinationalTimingArc为例,信号从输入到输出的延迟时间可以描述成以输入的转换时间(TransitionTime)和输出的负载为变量的函数。描述的方式可以是线性的方式,如图十三所示。也可以将这2个变量当成指针,建立时序表格(TimingTable),让STA软件可以查询出正确的延迟时间。这种以表格描述的方式会比上述线性描述的方式准确许多,因此现今市面上大部分的标准组件库皆采用产生时序表格的方式来建立TimingModel。图十三我们举个简单的例子来说明STA软件如何从时序表格计算出组件延迟时间。(图十四)图十四组件延迟时间(Ddelay):输入达逻辑1位准50%到输出达逻辑1位准50%的时间。组件转换时间(Dtransition):输出达逻辑1位准20%(80%)到80%(20%)的时间。当输入的转换时间为0.5,输出负载为0.2时,可由图十四的时序表格查得组件I2的延迟时间为0.432。而由于表格的大小有限,对于无法直接由表格查询到的延迟时间(如输入转换时间0.25,输出负载0.15),STA软件会利用线性内插或外插的方式计算延迟时间。对于其它的TimingArc,不管是时序延迟或时序检查,其相对应的时序数值计算和上例的计算方式是一样的。接下来我们说明操作环境(OperatingCondition)对时序的影响。操作环境指的是制程(Process)、电压(Voltage)、温度(Temperature)三项因子。这三项因子通常会被简称为PVT,其对时序的影响可用下方线性方程式来描述。其中nom_process、nom_voltage及nom_temperature会定义在标准组件库中,代表建立时序表格时的操作环境。 InterconnectData:在「什么是STA」段落的例子中,为了方便说明,我们并没有把逻辑闸和逻辑闸间的联机延迟(InterconnectDelay)考虑在内。事实上,许多DSMIC设计之时序表现是由联机延迟主导的,其重要性不容我们忽视。联机延迟依照布局与绕线(P&R)前后有不同的考虑。在布局与绕线前,组件在芯片中摆放的位置尚未确定,所以联机延迟是一个预估值。而在布局与绕线之后,联机延迟则是根据实际绕线计算出来的。对布局与绕线之前的联机延迟,通常是用WireloadModel来预估。WireloadModel根据芯片面积的预估大小及联机驱动组件数目(Fan-out)的多寡来决定联机的电阻和电容值,STA软件则利用这些电阻电容值计算出联机延迟。在布局与绕线之后,可以利用电阻电容萃取(RCExtraction)软件将绕线图形转换成实际的电阻电容电路,然后贴回(Back-annotate)STA软件计算联机延迟。 TimingConstraints:TimingConstraint为使用者所给定,用来检验设计电路时序的准则。其中最重要的一项就是频率(Clock)的描述。对于一个同步电路而言,缓存器和缓存器之间的路径延迟时间必须小于一个Clock周期(Period),也就是说,当我们确认了Clock规格,所有缓存器间的路径的TimingConstraint就会自动给定了。图十五Clock规格包含波形、Latency及Uncertainty的定义。波形定义一个Clock的周期及信号上升缘及下降缘的时间点。Latency定义从Clock来源到序向组件Clock输入端的延迟时间。Uncertainty则定义Clock信号到序向组件Clock输入端可能早到或晚到的时间。如果上面的文字让你有不知所云的感觉,那底下看图说故事的解说也许会让你有比较清晰的概念。在图十五的电路中,左边的正反器(Flip-Flop)在第一个Clock上升缘时会丢出数据,此数据会在第二个Clock上升缘让右边的Flip-Flop撷取。要分析右边的Flip-Flop能否正确撷取数据就必须知道第一个Clock上升缘到达节点C1的时间点和第二个上升缘到达节点C2的时间点。假设在时间点为0的时候,Clock信号由S点出发,经过一段时间(sourcelatency,1个时间单位,仿真芯片外的Clock延迟时间,例如板子上的绕线产生的信号延迟时间)到达电路的Clock输入端点P,接下来再经过一段时间(芯片内Clock绕线造成的信号延迟时间),Clock信号分别到达C1和C2节点。如果电路已经进行布局与绕线,输入端点P到C1和C2的信号延迟时间可由联机上的寄生电阻电容计算得来。比方说,经过计算发现信号由P传递到C1需要1个时间单位,由P传递到C2需2个时间单位,则Clock信号第一个上升缘到达C1和第二个上升缘到达C2的时间点就会如图十六下方两列所示,分别为时间点2和13(因为加上了1个时间单位的sourcelatency)。图十六在布局与绕线之前,我们无法准确得知P到C1和C2的信号延迟时间,仅能先做个预估。图十五的networklate