VLSI CAD Layout-5 Timing
- 影响时序的因素
- Static Timing Analysis
- Delay Graph
- ATs,RATs和Slacks
- AT
- RAT
- Slack
- 寻找所有违规时序路径
- 本文没涵盖的STA问题
- 考虑电磁模型的时序
- Elmore Model
- 延时计算
这eda课程的最后一篇就是timing。在芯片设计中,时序也是最为重要的一部分。
影响时序的因素
- 不同的gate:这很明显,不同结构会有不同延时
- 负载:如果fan out很大,loading大,自然慢
- waveform shape:信号的shape也会影响,例如信号上升延的斜率,如果越大时间会越快(建立时间短)
- transitiondirection:信号下降和上升也是不同速度
- 不同input pin:门电路并不是完全对称的,自然不同pin会有不同延时
Static Timing Analysis
STA,也就是静态时序分析,和真实的电路时序不同的是,它并不考虑具体逻辑的可能,举例来说下图的最长路径其实是不可能发生的。然而在STA中,我们简化了逻辑和门电路,把其都视为一个节点,进行时序的估计,这也是为何被称为是静态。
Delay Graph
对于整个时序电路,我们会将其化为Delay Graph来分析。首先我们会根据Flip Flop进行分段,我们主要时序分析就是看这个段落的logic会不会超过一个时钟时间。接着会将gate节点化,例如:
接着会添加SRC和SNK
接着是标注上delay,包括gate自己的延时,还有连接gate之间导线的延时
ATs,RATs和Slacks
对于时序分析,我们不可能遍历所有的路径,我们关注的是Slack,也就是电路的延时余裕。为此我们会计算Arrival time(AT)和Require Arrival time (RAT),而Slack=RAT-AT。
- AT:信号到达节点的最晚时间
- RAT:能接受最晚到达节点的时间
AT
AT的公式如下,具体计算可以使用Dijkstra,计算每个节点的AT。
A T ( n ) = maximum delay to n = { 0 if n = = SRC MAX p ∈ pred ( n ) { A T ( p ) + Δ ( p , n ) } else AT(n) = \text{maximum delay to } n = \begin{cases} 0 & \text{if } n == \text{SRC} \\ \text{MAX}_{p \in \text{pred}(n)} \{ AT(p) + \Delta(p, n) \} & \text{else} \end{cases}AT(n)=maximum delay ton={0MAXp∈pred(n){AT(p)+Δ(p,n)}ifn==SRCelse
RAT
RAT的公式如下,他的计算是倒过来的最长路径,一样能使用Dijkstra计算每个节点的RAT。
RAT ( n ) = { Cycle Time if n = SNK min s ∈ succ ( n ) { RAT ( s ) − Δ ( n , s ) } else \operatorname{RAT}(n) = \begin{cases} \text{Cycle Time} & \text{if } n = \text{SNK} \\[6pt] \displaystyle \min_{s \in \text{succ}(n)} \bigl\{ \operatorname{RAT}(s) - \Delta(n,s) \bigr\} & \text{else} \end{cases}RAT(n)=⎩⎨⎧Cycle Times∈succ(n)min{RAT(s)−Δ(n,s)}ifn=SNKelse
Slack
在计算完AT和RAT后,我们就能简单得到每个节点的Slack了。而我们计算完后会发现一件事:最长路径上的Slack是相同的值,而且都是最小的值。
寻找所有违规时序路径
在实际应用中,我们需要寻找到所有Slack小于0的路径,并且按照大小排序给设计人员展示。课程给出一个方法:Topological Sorting。在计算完所有Slacks后,从原点开始搜索
- 建立heap,保存《Path,Delay,Slack》,从《SRC,0,0》开始
- 将相邻的节点加入path,并且按照slack进行排序,小的在堆顶
- 如果遇到SNK则结束,弹出path,就是目前最差的path
- 得到自己要的数量path即可跳出程序
本文没涵盖的STA问题
- flip flops和latch的建模,涉及到时序分段问题
- 除了最长路径,最短路径也会需要分析,例如透明锁存器
- 当只有部分gate改变,STA计算如何优化
考虑电磁模型的时序
在实际电路中,除了导线还有器件的延时,导线的电容效应同样会产生延时。具体公式如下。主要影响参数是导线的长度与宽度,因为高度基本都是个const。
Elmore Model
为此,我们可以通过Elmore来简单建模这个杂散电容效应。对于一个导线构成的电阻,他的两侧头尾都会有电容。
延时计算
对于每个节点电阻的延时可以通过公式,需要计算这个电阻后面所有会流过的电容和,原理是他必须要等后面所有电容充满,类似水填满所有桶子的概念
τ = τ + R ⋅ ∑ ( all capacitors downstream ) \tau = \tau + R \cdot \sum (\text{all capacitors downstream})τ=τ+R⋅∑(all capacitors downstream)
而root的延时就是后面所有电阻的延时总和