首尔黑帮:[Forward]静态时序分析(Static?Timing?Analysis)
来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 08:03:57
前言
什么是STA?
- 讯号A到达电路输入端的时间点为2(AT=2,AT为Arrival Time)。
- 讯号B到达电路输入端的时间点为5(AT=5)。
- 讯号必须在时间点10之前到达输出端Y(RT=10,RT为Required Time)。
STA资料准备
在做STA之前,我们必须对其准备工作有充分的了解。STA所需的资料如图三所示,以下我们分项说明。其中Design Data部分,由于Block Model和STA软体相关性太高,我们不在此加以说明,请直接参阅您STA软体的使用手册。
图 三
Library Data:
STA所需要的Timing Model就存放在标准元件库(Cell Library)中。这些必要的时序资讯是以Timing Arc的方式呈现在标准元件库中。Timing Arc定义逻辑闸任两个端点之间的时序关系,其种类有Combinational Timing Arc、Setup Timing Arc、Hold Timing Arc、Edge Timing Arc、Preset and Clear Timing Arc、Recovery Timing Arc、Removal Timing Arc、Three State Enable & Disable Timing Arc、Width Timing Arc。其中第1、4、5、8项定义时序延迟,其他各项则是定义时序检查。
图 四
Combinational Timing Arc是最基本的Timing Arc。Timing Arc如果不特别宣告的话,就是属于此类。如图四所示,他定义了从特定输入到特定输出(A到Z)的延迟时间。Combinational Timing Arc的Sense有三种,分别是inverting(或 negative unate),non-inverting(或 positive unate)以及non-unate。当Timing Arc相关之特定输出(图四Z)讯号变化方向和特定输入(图四A)讯号变化方向相反(如输入由0变1,输出由1变0),则此Timing Arc为inverting sense。反之,输出输入讯号变化方向一致的话,则此Timing Arc为non-inverting sense。当特定输出无法由特定输入单独决定时,此Timing Arc为non-unate。
图 五
图 六
图 七
图 八
图 九
图 十
图 十一
图 十二
其他的Timing Arc说明如下。
-
Setup Timing Arc:定义序向元件(Sequential Cell,如Flip-Flop、Latch等)所需的Setup Time,依据Clock上升或下降分为2类(图五)。 Hold Timing Arc:定义序向元件所需的Hold Time,依据Clock上升或下降分为2类(图六)。 Edge Timing Arc:定义序向元件Clock Active Edge到资料输出的延迟时间,依据Clock上升或下降分为2类(图七)。 Preset and Clear Timing Arc:定义序向元件清除讯号(Preset或Clear)发生后,资料被清除的速度,依据清除讯号上升或下降及是Preset或Clear分为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)到输出的延迟时间,依据Enable或Disable分为2类。(图十一) Width Timing Arc:定义讯号需维持稳定的最短时间,依据讯号维持在0或1的位准分为2类。(图十二)
上文列出了标准元件库内时序模型的项目,但对其量化的数据却没有加以说明。接下来,我们就来看看到底这些时序资讯的确实数值是如何定义在标准元件库中的。
图 十三
我们举个简单的例子来说明STA软体如何从时序表格计算出元件延迟时间。(图十四)
图十四
-
元件延迟时间(Ddelay):输入达逻辑1位准50%到输出达逻辑1位准50%的时间。 元件转换时间(Dtransition):输出达逻辑1位准20%(80%)到80%(20%)的时间。
Interconnect Data:
Timing Constraints:
图十五
Clock规格包含波形、Latency及Uncertainty的定义。波形定义一个Clock的周期及讯号上升缘及下降缘的时间点。 Latency定义从Clock来源到序向元件Clock输入端的延迟时间。Uncertainty则定义Clock讯号到序向元件Clock输入端可能早到或晚到的时间。
如果上面的文字让你有不知所云的感觉,那底下看图说故事的解说也许会让你有比较清晰的概念。在图十五的电路中,左边的正反器(Flip-Flop)在第一个Clock上升缘时会丢出资料,此资料会在第二个Clock上升缘让右边的Flip-Flop撷取。要分析右边的Flip-Flop能否正确撷取资料就必须知道第一个Clock上升缘到达节点C1的时间点和第二个上升缘到达节点C2的时间点。假设在时间点为0的时候,Clock讯号由S点出发,经过一段时间(source latency,1个时间单位,模拟晶片外的Clock延迟时间,例如板子上的绕线产生的讯号延迟时间)到达电路的Clock输入端点P,接下来再经过一段时间(晶片内Clock绕线造成的讯号延迟时间),Clock讯号分别到达C1和C2节点。如果电路已经进行布局与绕线,输入端点P到C1和C2的讯号延迟时间可由连线上的寄生电阻电容计算得来。比方说,经过计算发现讯号由P传递到C1需要1个时间单位,由P传递到C2需2个时间单位,则Clock讯号第一个上升缘到达C1和第二个上升缘到达C2的时间点就会如图十六下方两列所示,分别为时间点2和13(因为加上了1个时间单位的source latency)。
图十六
在布局与绕线之前,我们无法准确得知P到C1和C2的讯号延迟时间,仅能先做个预估。图十五的network latency及上文提到的Uncertainty就是用来做此种预估的。先假设我们拥有某种完美的布局与绕线软体可以让Clock输入端点P到所有 Flip-Flop的Clock输入端的讯号延迟时间一模一样,那么我们只要知道这个讯号延迟时间就可以得到Clock讯号到达C1和C2的时间点了。这个讯号延迟时间可以藉由电路特性(如预估面积大小,Flip-Flop数目等)来做预估,而这个预估值就是所谓的network latency。如果这种完美的软体存在的话,那Clock的上升缘到达C1和C2的时间点就可以由Latency(source latency + network latency)计算出来。
很不幸的,世界上没有这么完美的软体,在布局与绕线后Clock输入端点P到所有Flip-Flop的Clock输入端的讯号延迟时间不会完全一样。也就是说Clock的某个上升缘不会同时到达C1和C2。因此我们要对上述的预估值做些修正,加入Uncertainty的描述来定义Clock上升缘左右移动的可能范围。在图十六中,Uncertainty为1个时间单位,所以Clock第一个上升缘会在时间点3(因为 Latency为3)左右1时间单位范围内(也就是时间点2到时间点4)到达C1,。第二个上升缘则会在时间点12到14的范围内到达C2。
除了Clock之外,对于电路其他输出输入端点及其周边的环境(Boundary Condition)也要加以描述。在说明Boundary Condition之前,我们得对路径(Path)有更进一步的了解。上文曾提及STA会将电路中所有的Path找出来加以分析,但Path的定义是什么呢?
Path根据起点及终点可以分为4种:
- 由Flip-Flop Clock输入到Flip-Flop资料输入(图十七左上)。
- 由主要输入(Primary Input,简称PI)到Flip-Flop资料输入(图十七右上)。
- 由Flip-Flop Clock输入到主要输出(Primary Output,简称PO)(图十七左下)。
-
由主要输入到主要输出(图十七右下)。
当Clock规格确定了之后,第1种Path的时序限制(Timing Constraint)就自动的给定了。为了给定其他3种Path的时序限制,我们必须定义Boundary Condition。
一般来说,我们会定义下列的Boundary Condition:
- Driving Cell:定义输入端点的推动能力(图十八)。
- Input Transition Time:定义输入端点的转换时间(图十八)。
- Output Capacitance Load:定义输出负载(图十八)。
- Input Delay:输入端点相对于某个Clock领域的延迟时间。(图十九,Delayclk-Q + a)
- Output Delay:自输出端点往外看相对于某个Clock领域的延迟时间。(图十九,c)
在这些Boundary Condition定义之后,上述4种Path事实上都可看成是第1种Path(Flip-Flop到Flip-Flop)。也就是说,加上 Boundary Condition后,只要Clock给定,所有Path的Timing Constraint就会自动给定。。
图十八
图十九
由于每个Path都有Timing Constraint,所以时序分析都能够进行。但在某些情况下,有些Path的分析可能没有意义,因此你会想忽略这些Path的分析。或是有些Path 分析的方式不一样,你会想指定这些Path的分析方式。此时就要设定一些Timing Exception,如False Path和Multi-cycle Path等等来处理非一般性的时序分析。