这eda课程的最后一篇就是timing。在芯片设计中,时序也是最为重要的一部分。

影响时序的因素

  1. 不同的gate:这很明显,不同结构会有不同延时
  2. 负载:如果fan out很大,loading大,自然慢
  3. waveform shape:信号的shape也会影响,例如信号上升延的斜率,如果越大时间会越快(建立时间短)
  4. transitiondirection:信号下降和上升也是不同速度
  5. 不同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。

  1. AT:信号到达节点的最晚时间
  2. 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 to n={0MAXppred(n){AT(p)+Δ(p,n)}if n==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 Timessucc(n)min{RAT(s)Δ(n,s)}if n=SNKelse

Slack

在计算完AT和RAT后,我们就能简单得到每个节点的Slack了。而我们计算完后会发现一件事:最长路径上的Slack是相同的值,而且都是最小的值。
在这里插入图片描述

寻找所有违规时序路径

在实际应用中,我们需要寻找到所有Slack小于0的路径,并且按照大小排序给设计人员展示。课程给出一个方法:Topological Sorting。在计算完所有Slacks后,从原点开始搜索

  1. 建立heap,保存《Path,Delay,Slack》,从《SRC,0,0》开始
  2. 将相邻的节点加入path,并且按照slack进行排序,小的在堆顶
  3. 如果遇到SNK则结束,弹出path,就是目前最差的path
  4. 得到自己要的数量path即可跳出程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文没涵盖的STA问题

  1. flip flops和latch的建模,涉及到时序分段问题
  2. 除了最长路径,最短路径也会需要分析,例如透明锁存器
  3. 当只有部分gate改变,STA计算如何优化

在这里插入图片描述

考虑电磁模型的时序

在实际电路中,除了导线还有器件的延时,导线的电容效应同样会产生延时。具体公式如下。主要影响参数是导线的长度与宽度,因为高度基本都是个const。
在这里插入图片描述
在这里插入图片描述

Elmore Model

为此,我们可以通过Elmore来简单建模这个杂散电容效应。对于一个导线构成的电阻,他的两侧头尾都会有电容。
在这里插入图片描述

延时计算

对于每个节点电阻的延时可以通过公式,需要计算这个电阻后面所有会流过的电容和,原理是他必须要等后面所有电容充满,类似水填满所有桶子的概念
τ = τ + R ⋅ ∑ ( all capacitors downstream ) \tau = \tau + R \cdot \sum (\text{all capacitors downstream}) τ=τ+R(all capacitors downstream)
而root的延时就是后面所有电阻的延时总和
在这里插入图片描述
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐