EDN首页   博客首页

日志档案

发表于 2008-6-17 16:04:00

1

标签: 无标签

静态时序分析

http://techcenter.dicder.com/2006/0114/content_102_1.html

静态时序分析(Static Timing Analysis)一

前言

在制程进入深次微米世代之后,晶片(IC)设计的高复杂度及系统单晶片(SOC)设计方式兴起。此一趋势使得如何确保IC品质成为今日所有设计从业 人员不得不面临之重大课题。静态时序分析(Static Timing Analysis简称STA)经由完整的分析方式判断IC是否能够在使用者的时序环境下正常工作,对确保IC品质之课题,提供一个不错的解决方案。然而,对于许多IC设计者而言,STA是个既熟悉却又陌生的名词。本文将力求以简单叙述及图例说明的方式,对STA的基础概念及其在IC设计流程中的应用做详尽 的介绍。

什么是STA

STA的简单定义如下:套用特定的时序模型(Timing Model),针对特定电路分析其是否违反设计者给定的时序限制(Timing Constraint)。以分析的方式区分,可分为Path-BasedBlock-Based两种。  

<!--[if !vml]--><!--[endif]-->

先来看看Path-Based这种分析方式。如图一所示,讯号从A点及B点输入,经由4个逻辑闸组成的电路到达输出Y 点。套用的Timing Model标示在各逻辑闸上,对于所有输入端到输出端都可以找到相对应的延迟时间。而使用者给定的Timing Constraint为:

1.讯号A到达电路输入端的时间点为2AT=2ATArrival Time)。

2.          讯号B到达电路输入端的时间点为5AT=5)。

3.          讯号必须在时间点10之前到达输出端YRT=10RTRequired Time)。

现在我们针对P1P2两条路径(Path)来做分析。P1的起始点为A,讯号到达时间点为2。经过第1个逻辑闸之后, 由于此闸有2单位的延迟时间,所以讯号到达此闸输出的时间点为42+2)。依此类推,讯号经由P1到达输出Y的时间点为72+2+3)。在和上述第三项Timing Constraint比对之后,我们可以得知对P1这个路径而言,时序(Timing)是满足使用者要求的。

按照同样的方式可以得到讯号经由路径B到达输出Y的时间点为115+1+3+2),照样和上述第三项Timing Constraint比对,我们可以得知对P2这个路径而言,Timing是不满足使用者要求的。

对图一的设计而言,总共有6个讯号路径。对于采用Path-Based分析方式的STA软体来说,它会对这6个讯号路径 作逐一的分析,然后记录下结果。IC设计者藉由检视其分析报告的方式来判断所设计的电路是否符合给定的Timing Constraint。由于最常用来做静态时序分析验证核可(STA Signoff)的EDA软体PrimeTime?采用Path-Based的分析方式,所以本文将以Path-Based的分析方式介绍为主。

再来看看Block-Based的分析方式。此时时序资讯(Timing Information)的储存不再是以路径为单位,而是以电路节点(Node)为单位。由Timing Constraint我们仅能得知A节点的AT2B节点的AT5以及Y节点的RT10Block-Based的分析方式会找出每个节点的AT RT,然后比对这两个数值。当RT的值大于AT时表示讯号比Timing Constrain中要求的时间还早到达,如此则Timing是满足的,反之则不满足。

<!--[if !vml]--><!--[endif]-->

STA资料准备

在做STA之前,我们必须对其准备工作有充分的了解。STA所需的资料如图三所示,以下我们分项说明。其中Design Data部分,由于Block ModelSTA软体相关性太高,我们不在此加以说明,请直接参阅您STA软体的使用手册。

<!--[if !vml]--><!--[endif]-->

图 三

nLibrary Data

STA所需要的Timing Model就存放在标准元件库(Cell Library)中。这些必要的时序资讯是以Timing Arc的方式呈现在标准元件库中。Timing Arc定义逻辑闸任两个端点之间的时序关系,其种类有Combinational Timing ArcSetup Timing ArcHold Timing ArcEdge Timing ArcPreset and Clear Timing ArcRecovery Timing ArcRemoval Timing ArcThree State Enable & Disable Timing ArcWidth Timing Arc。其中第1458项定义时序延迟,其他各项则是定义时序检查。

<!--[if !vml]--><!--[endif]-->

图 四

Combinational Timing Arc是最基本的Timing ArcTiming Arc如果不特别宣告的话,就是属于此类。如图四所示,他定义了从特定输入到特定输出(AZ)的延迟时间。Combinational Timing ArcSense有三种,分别是inverting(或 negative unate),non-inverting(或 positive unate)以及non-unate。当Timing Arc相关之特定输出(图四Z)讯号变化方向和特定输入(图四A)讯号变化方向相反(如输入由01,输出由10),则此Timing Arcinverting sense。反之,输出输入讯号变化方向一致的话,则此Timing Arcnon-inverting sense。当特定输出无法由特定输入单独决定时,此Timing Arcnon-unate

<!--[if !vml]--><!--[endif]-->

图 五

<!--[if !vml]--><!--[endif]-->

图 六

<!--[if !vml]--><!--[endif]-->

图 七

<!--[if !vml]--><!--[endif]-->

图 八

<!--[if !vml]--><!--[endif]-->

图 九

<!--[if !vml]--><!--[endif]-->

图 十

<!--[if !vml]--><!--[endif]-->

图 十一

<!--[if !vml]--><!--[endif]-->

图 十二

其他的Timing Arc说明如下。

  • Setup Timing Arc:定义序向元件(Sequential Cell,如Flip-FlopLatch等)所需的Setup Time,依据Clock上升或下降分为2类(图五)。
  • Hold Timing Arc:定义序向元件所需的Hold Time,依据Clock上升或下降分为2类(图六)。
  • Edge Timing Arc:定义序向元件Clock Active Edge到资料输出的延迟时间,依据Clock上升或下降分为2类(图七)。
  • Preset and Clear Timing Arc:定义序向元件清除讯号(PresetClear)发生后,资料被清除的速度,依据清除讯号上升或下降及是PresetClear分为4类(图 八)。这个Timing Arc通常会被取消掉,因为它会造成讯号路径产生回路,这对STA而言是不允许的。
  • Recovery Timing Arc:定义序向元件Clock Active Edge之前,清除讯号不准启动的时间,依据Clock上升或下降分为2类(图九)。
  • Removal Timing Arc:定义序向元件Clock Active Edge之后,清除讯号不准启动的时间,依据Clock上升或下降分为2类(图十)。
  • Three State Enable & Disable Timing Arc:定义Tri-State元件致能讯号(Enable)到输出的延迟时间,依据EnableDisable分为2类。(图十一)
  • Width Timing Arc:定义讯号需维持稳定的最短时间,依据讯号维持在01的位准分为2类。(图十二)

上文列出了标准元件库内时序模型的项目,但对其量化的数据却没有加以说明。接下来,我们就来看看到底这些时序资讯的确实数值是如何定义在标准元件库中的。

Combinational Timing Arc为例,讯号从输入到输出的延迟时间可以描述成以输入的转换时间(Transition Time)和输出的负载为变数的函数。描述的方式可以是线性的方式,如图十三所示。也可以将这2个变数当成指标,建立时序表格(Timing Table),让STA软体可以查询出正确的延迟时间。这种以表格描述的方式会比上述线性描述的方式准确许多,因此现今市面上大部分的标准元件库皆采用产生时序表格的方式来建立Timing Model

<!--[if !vml]--><!--[endif]-->

图 十三

我们举个简单的例子来说明STA软体如何从时序表格计算出元件延迟时间。(图十四)

<!--[if !vml]--><!--[endif]-->

图十四

  •       元件延迟时间(Ddelay):输入达逻辑1位准50%到输出达逻辑1位准50%的时间。
  •       元件转换时间(Dtransition):输出达逻辑1位准20%80%)到80%20%)的时间。

当输入的转换时间为0.5,输出负载为0.2时,可由图十四的时序表格查得元件I2的延迟时间为0.432。而由于表格的大小有限,对于无法直接由表格查询到的延迟时间(如输入转换时间0.25,输出负载0.15),STA软体会利用线性内插或外插的方式计算延迟时间。

对于其他的Timing Arc,不管是时序延迟或时序检查,其相对应的时序数值计算和上例的计算方式是一样的。

接下来我们说明操作环境(Operating Condition)对时序的影响。操作环境指的是制程(Process)、电压(Voltage)、温度(Temperature)三项因子。这三项因 子通常会被简称为PVT,其对时序的影响可用下方线性方程式来描述。其中nom_processnom_voltage nom_temperature会定义在标准元件库中,代表建立时序表格时的操作环境。

<!--[if !vml]--><!--[endif]-->

静态时序分析(Static Timing Analysis

在「什么是STA」段落的例子中,为了方便说明,我们并没有把逻辑闸和逻辑闸间的连线延迟(Interconnect Delay)考虑在内。事实上,许多DSM IC设计之时序表现是由连线延迟主导的,其重要性不容我们忽视。

连线延迟依照布局与绕线(P&R)前后有不同的考量。在布局与绕线前,元件在晶片中摆放的位置尚未确定,所以连线延迟是一个预估值。而在布 局与绕线之后,连线延迟则是根据实际绕线计算出来的。对布局与绕线之前的连线延迟,通常是用Wireload Model来预估。Wireload Model根据晶片面积的预估大小及连线驱动元件数目(Fan-out)的多寡来决定连线的电阻和电容值,STA软体则利用这些电阻电容值计算出连线延迟。在布局与绕线之后,可以利用电阻电容萃取(RC Extraction)软体将绕线图形转换成实际的电阻电容电路,然后贴回(Back-annotateSTA软体计算连线延迟。

n Timing Constraints

Timing Constraint为使用者所给定,用来检验设计电路时序的准则。其中最重要的一项就是时脉(Clock)的描述。对于一个同步电路而言,暂存器和暂存 器之间的路径延迟时间必须小于一个Clock周期(Period),也就是说,当我们确认了Clock规格,所有暂存器间的路径的Timing Constraint就会自动给定了。

<!--[if !vml]--><!--[endif]-->

图十五

Clock规格包含波形、LatencyUncertainty的定义。波形定义一个Clock的周期及讯号上升缘及下降缘的时间点。 Latency定义从Clock来源到序向元件Clock输入端的延迟时间。Uncertainty则定义Clock讯号到序向元件Clock输入端可能 早到或晚到的时间。

如果上面的文字让你有不知所云的感觉,那底下看图说故事的解说也许会让你有比较清晰的概念。在图十五的电路中,左边的正反器(Flip-Flop) 在第一个Clock上升缘时会丢出资料,此资料会在第二个Clock上升缘让右边的Flip-Flop撷取。要分析右边的Flip-Flop能否正确撷取 资料就必须知道第一个Clock上升缘到达节点C1的时间点和第二个上升缘到达节点C2的时间点。假设在时间点为0的时候,Clock讯号由S点出发,经过一段时间(source latency1个时间单位,模拟晶片外的Clock延迟时间,例如板子上的绕线产生的讯号延迟时间)到达电路的Clock输入端点P,接下来再经过一 段时间(晶片内Clock绕线造成的讯号延迟时间),Clock讯号分别到达C1C2节点。如果电路已经进行布局与绕线,输入端点PC1C2的讯号 延迟时间可由连线上的寄生电阻电容计算得来。比方说,经过计算发现讯号由P传递到C1需要1个时间单位,由P传递到C22个时间单位,则Clock讯号 第一个上升缘到达C1和第二个上升缘到达C2的时间点就会如图十六下方两列所示,分别为时间点213(因为加上了1个时间单位的source latency)。

<!--[if !vml]--><!--[endif]-->

图十六

在布局与绕线之前,我们无法准确得知PC1C2的讯号延迟时间,仅能先做个预估。图十五的network latency及上文提到的Uncertainty就是用来做此种预估的。先假设我们拥有某种完美的布局与绕线软体可以让Clock输入端点P到所有 Flip-FlopClock输入端的讯号延迟时间一模一样,那么我们只要知道这个讯号延迟时间就可以得到Clock讯号到达C1C2的时间点了。这个讯号延迟时间可以藉由电路特性(如预估面积大小,Flip-Flop数目等)来做预估,而这个预估值就是所谓的network latency。如果这种完美的软体存在的话,那Clock的上升缘到达C1C2的时间点就可以由Latencysource latency + network latency)计算出来。

很不幸的,世界上没有这么完美的软体,在布局与绕线后Clock输入端点P到所有Flip-FlopClock输入端 的讯号延迟时间不会完全一样。也就是说Clock的某个上升缘不会同时到达C1C2。因此我们要对上述的预估值做些修正,加入Uncertainty的 描述来定义Clock上升缘左右移动的可能范围。在图十六中,Uncertainty1个时间单位,所以Clock第一个上升缘会在时间点3(因为 Latency3)左右1时间单位范围内(也就是时间点2到时间点4)到达C1,。第二个上升缘则会在时间点1214的范围内到达C2

除了Clock之外,对于电路其他输出输入端点及其周边的环境(Boundary Condition)也要加以描述。在说明Boundary Condition之前,我们得对路径(Path)有更进一步的了解。上文曾提及STA会将电路中所有的Path找出来加以分析,但Path的定义是什么 呢?

Path根据起点及终点可以分为4种:

1.          Flip-Flop Clock输入到Flip-Flop资料输入(图十七左上)。

2.          由主要输入(Primary Input,简称PI)到Flip-Flop资料输入(图十七右上)。

3.          Flip-Flop Clock输入到主要输出(Primary Output,简称PO)(图十七左下)。

4.          由主要输入到主要输出(图十七右下)。

Clock规格确定了之后,第1Path的时序限制(Timing Constraint)就自动的给定了。为了给定其他3Path的时序限制,我们必须定义Boundary Condition

<!--[if !vml]--><!--[endif]-->

一般来说,我们会定义下列的Boundary Condition

1.          Driving Cell:定义输入端点的推动能力(图十八)。

2.          Input Transition Time:定义输入端点的转换时间(图十八)。

3.          Output Capacitance Load:定义输出负载(图十八)。

4.          Input Delay:输入端点相对于某个Clock领域的延迟时间。(图十九,Delayclk-Q + a

5.          Output Delay:自输出端点往外看相对于某个Clock领域的延迟时间。(图十九,c

在这些Boundary Condition定义之后,上述4Path事实上都可看成是第1PathFlip-FlopFlip-Flop)。也就是说,加上 Boundary Condition后,只要Clock给定,所有PathTiming Constraint就会自动给定。。

<!--[if !vml]--><!--[endif]-->

图十八

<!--[if !vml]--><!--[endif]-->

图十九

由 于每个Path都有Timing Constraint,所以时序分析都能够进行。但在某些情况下,有些Path的分析可能没有意义,因此你会想忽略这些Path的分析。或是有些Path 分析的方式不一样,你会想指定这些Path的分析方式。此时就要设定一些Timing Exception,如False PathMulti-cycle Path等等来处理非一般性的时序分析。

STA流程及分析方式

STA的流程如图二十所示,而其分析验证的项目就是我们前文提及之时序检查相关的Timing Arc,如Setup TimeHold Time等等。以下我们针对Setup Time1实际范例来说明STA的分析方式。

<!--[if !vml]--><!--[endif]-->

图二十

n       Setup Time

设计电路如图二十一所示,时序模型(Timing Model)及时序限制(Timing Constraint)如下:

<!--[if !vml]--><!--[endif]-->

图二十一

  •          所有逻辑闸在输出讯号上升时最长的延迟时间为3ns,最短为2ns
  •          所有逻辑闸在输出讯号上升时最长的延迟时间为2ns,最短为1ns
  •          所有连线(Net)最长的延迟时间为2ns,最短为1ns
  •          所有Flip-Flop ClockQ的延迟时间为3ns
  •          所有Flip-FlopSetup Time1nsTs)。
  •          所有Flip-FlopHold Time1nsTh)。
  •          Clock周期为14nsDclkp)。
  •          Clock source latency2nsDclks)。
  •          Clock network latency3nsDclkn)。
  •          Clock uncertainty1nsDclku)。
  •          BCinput delay皆为1nsDaDbDc)。
  •          Youtput delay3nsDY)。

接下来,我们以Step-By-Step的方式说明时序分析的方式。

1.          首先找出所有Timing Path,我们只列出具代表性的3Timing Path来加以说明。

<!--[if !vml]--><!--[endif]-->

图二十二

2.          假设输入A讯号由01,计算第1Path终点讯号到达的时间(Arrival Time简称AT)。

<!--[if !vml]--><!--[endif]-->

3.          假设输入A讯号由10,计算第1Path终点AT

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

图二十四

4.          计算第1Path终点的需求时间(Required Time,简称RT)。

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

图二十五

5.          假设输入A讯号由01,计算第1Path终点的SlackSlack等于RTAT的差值,对于Setup Time验证来说等于RT - AT,对于Hold Time验证来说等于AT - RT。在此Setup Time范例中,Slack为正,表示讯号实际到达Path终点时间比必须到达的时间还早,因此Timing是满足的。

<!--[if !vml]--><!--[endif]-->

图二十二六

6.          假设输入A讯号由10,计算第1Path终点的SlackSlack为正,因此Timing是满足的。

  

<!--[if !vml]--><!--[endif]-->

综合56,第1PathTiming是符合规格的,其Slack4ns(取较差状况)。

<!--[if !vml]--><!--[endif]-->

图二十七

7.          假设前级Flip-Flop的讯号由01,计算第2Path终点的AT

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

图二十八

8.          假设前级Flip-Flop的讯号由10,计算第2Path终点的AT

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

图二十九

9.       计算第2Path终点的RT

<!--[if !vml]--><!--[endif]-->

<!--[if !vml]--><!--[endif]-->

图三十

10.      假设前级Flip-Flop的讯号由01,计算第2Path终点的SlackSlack为负,因此Timing不满足。

<!--[if !vml]--><!--[endif]-->