RC 延迟模型

延迟的定义

当输入发生变化时,输出至少在污染延迟(contamination delay) 内保持原值,并至多在传播延迟(propagation delay) 内变为新的值。有时还会区分输出的上升延迟与下降延迟。

  • 污染延迟:输入跨过 50% 到输出跨过 50% 所需的最小时间 min-time
  • 传播延迟:输入跨过 50% 到输出跨过 50% 所需的最大时间 max-time

污染延迟远小于传播延迟,所以当单独提到延迟时,常指的是传播延迟。

精确的延迟评估:建模后解复杂的微分方程,SPICE 电路仿真等。

本节介绍的是 RC 延迟模型,它用晶体管开关(switching)过程中平均的电阻与电容来近似非线性的 I-V 和 C-V 特性。它难以细致的模拟电路行为(比如预测某时刻电流的值,这还是得回到肖特基一阶晶体管模型),但能足够准确的估算延迟。

有效电阻

把晶体管视作一个与电阻串联的开关,它的有效电阻(effective R)是开关过程中各个时刻 Vds/IdsV_{ds}/I_{ds} 的平均值。规定单位 nMOS 晶体管(4λ/2λ4\lambda/2\lambda)的有效电阻为 RR。

所以有一系列结论:

  • 单位 pMOS 晶体管的有效电阻为 2R2R(空穴迁移率低)
  • 宽度为单位晶体管 kk 倍的 nMOS 晶体管的有效电阻为 R/kR/k
  • 串联晶体管的总电阻等于各晶体管电阻之和
  • 并联晶体管的总电阻倒数等于各晶体管电阻倒数之和

以计算一个理想反相器的有效导通电阻为例:给一个阶跃上升信号 VGS=VDDV_{GS}=V_{DD},导通的是 nMOS 晶体管:

输出电压从 VDDV_{DD} 开始,线性下降到 VDD/2V_{DD}/2 时反相器发生翻转,再非线性下降到 00。一般而言,开关过程指的是输出逻辑电平切换的电压变化区间,即 Vout:VDD→0V_{out}:V_{DD}\to 0;但因为传播延迟只计算到输出的 50% 切换点,所以常关注 Vout:VDD→VDD/2V_{out}:V_{DD}\to V_{DD}/2。

由于开关过程中电压是随时间线性变化的,全程的平均值等于首尾的平均值,所以有:

Req=12(VDDIdsat(1+λVDD)+VDD/2Idsat(1+λVDD/2)) R_{eq}=\frac{1}{2}(\frac{V_{DD}}{I_{dsat}(1+\lambda V_{DD})}+\frac{V_{DD}/2}{I_{dsat}(1+\lambda V_{DD}/2)})

这里的 (1+λVDD)(1+\lambda V_{DD}) 是沟道长度调制带来的影响。

栅电容与扩散电容

除开关与有效电阻外,电容(栅电容与源/漏扩散电容)也是晶体管的重要组分。规定单位 nMOS 晶体管的栅电容为 CC,根据之前的假设(CV 特性:极体电容),扩散电容也为 CC。

栅电容与沟道长,宽有关,扩散电容与源漏极尺寸有关。

  • 单位 pMOS 的栅电容为 CC,扩散电容为 CC
  • 宽度为单位晶体管 kk 倍的晶体管的栅电容为 kCkC,扩散电容为 kCkC
  • 长度为单位晶体管 kk 倍的晶体管的栅电容为 kCkC,扩散电容为 CC
升降电容一致的 3 输入 NAND 晶体管:一个晶体管有源扩散电容,漏扩散电容与栅电容
升降电容一致的 3 输入 NAND 晶体管:一个晶体管有源扩散电容,漏扩散电容与栅电容

注意到上图中串联 nMOS 晶体管有源漏扩散电容共用;可见一个好的布局能够削减延迟。

去除非开关(noncapacitance)电容(被 GND 与 VDD 短路的源扩散电容),合并相同路径上的开关电容(三个输入路径上的栅电容分别合并,输出路径上的漏扩散电容合并),得到:

输入路径 2C+3C=5C2C+3C=5C2C+3C=5C,输出路径上的 2C+2C+2C+3C=9C2C+2C+2C+3C=9C2C+2C+2C+3C=9C
输入路径 2C+3C=5C2C+3C=5C,输出路径上的 2C+2C+2C+3C=9C2C+2C+2C+3C=9C

RC 延迟模型:一例

若晶体管有效电阻为 RR,其输出节点上的总电容为 CC,那么传播延迟可近似为 tpd=RCt_{pd}=RC。

RC 延迟模型把晶体管的开关行为视作一个电阻给电容充放电。以放电(nMOS 导通)为例,根据电容电流 == 电阻电流,有:

Cloaddoutdt=−VoutR C_{load}\frac{d_{out}}{dt}=-\frac{V_{out}}{R}

解得:

Vout(t)=V0e−t/RC V_{out}(t)=V_0 e^{-t/RC}

当输出降至 50% 时,有:

VDD2=V0e−t/RC \frac{V_{DD}}{2}=V_0 e^{-t/RC}

约去 VDDV_{DD},取对数,近似得到:

T50%≈0.69RC≈RC T_{50\%}\approx 0.69 RC \approx RC

一个例子,给阶跃上升信号,用 RC 延迟模型计算一个扇出为 1,nMOS 与 pMOS 宽度比为 1:21:2 的反相器(FO1)延迟:

扇出(fanout)

扇出指的是一个门的输出接了多少个门的输入。

将每个晶体管近似成:开关(本质上是沟道,组成栅电容的一部分),电阻,源扩散电容,漏扩散电容
将每个晶体管近似成:开关(本质上是沟道,组成栅电容的一部分),电阻,源扩散电容,漏扩散电容

关注输出节点 YY:

  • 阶跃信号下 nMOS 导通,有效电阻为 RR
  • 本级门的寄生电容:nMOS 漏扩散电容 CC 与 pMOS 漏扩散电容 2C2C
  • 次级门的负载电容:nMOS 栅电容 CC 与 pMOS 栅电容 2C2C

所以输出节点上的总电容为 Cload=6CC_{load}=6C,有效电阻为 RR,延迟为 6RC6RC。

Elmore 延迟

如果一个电路能表示成一颗 RC 树(无回路,单一根节点,所有电容接地的 RC 电路)的形式,就可以用 Elmore 模型估计从根节点发生开关变化,到某一个叶节点(分支末端电容)发生变化的一阶常数延迟。

源(source)与根节点(root)

源指的是施加在 RC 树上的信号,根节点则是信号传播(propagate)的起点。以反相器为例,pMOS 导通,VDD 把 RC 树拉向高电平,因此源是阶跃上升信号,VDD 是根节点;nMOS 导通,GND 把 RC 树拉向低电平,因此源是阶跃下降信号,GND 是根节点。

计算方法:对树中每个叶节点 kk 求和,把该节点上的电容 CkC_k 乘以从根节点 ss 到该节点 kk 与从根节点 ss 到目标叶节点 ii 的共享路径上的等效电阻 RikR_{ik}。

τDi=∑k=1NCk[Rik=R(path(s→i)∩path(s→k))] \tau_{Di}=\sum_{k=1}^N C_k [R_{ik}=R(\text{path}(s\to i)\cap \text{path}(s\to k))]

长线(long wire)的 Elmore 延迟:τN=∑i=1NRi∑j=iNCj=∑i=1NCi∑j=1iRj\tau_N=\sum_{i=1}^N R_i \sum_{j=i}^N C_j=\sum_{i=1}^N C_i \sum_{j=1}^i R_j。把长线分成 NN 等段,单位段的电阻为 rr,电容为 cc,则有:

τDN=(LN)2(rc+2rc+...+Nrc)=(rcL2)N(N+1)2N2=RCN+12N=RC2for large N=rcL22 \begin{aligned} \tau_{DN}&=(\frac{L}{N})^2(rc+2rc+...+Nrc)\\ &=(rcL^2)\frac{N(N+1)}{2N^2}\\ &=RC\frac{N+1}{2N}\\ &=\frac{RC}{2} \quad \text{for large } N \\ &=\frac{rcL^2}{2} \end{aligned}

延迟与导线长度呈二次关系。

2 输入与非门:一例

评估一个 hh 扇出的 2 输入与非门的上升与下降传播延迟。

上升传播延迟:VDD 把 RC 树拉向高电平,将 VDD 视作根节点 ss,s→Ys\to Y 的路径上经过 pMOS(有效电阻 RR),寄生电容 6C6C,负载电容 4hC4hC,因此有 tpdr=(6+4h)RCt_{pdr}=(6+4h)RC。

下降传播延迟:GND 把 RC 树拉向低电平,把 GND 视作根节点 ss,s→Ys\to Y 的路径上经过 nMOS1(有效电阻 R/2R/2),寄生电容 2C2C,nMOS2(有效电阻 R/2R/2),寄生电容 6C6C,负载电容 4hC4hC,因此有 tpdf=(2C)R/2+(6C+4hC)(R/2+R/2)=(7+4h)RCt_{pdf}=(2C)R/2+(6C+4hC)(R/2+R/2)=(7+4h)RC。