从沙子到车辙(2.4):CMOS——互补的智慧

发布时间:2026/5/20 2:34:17

从沙子到车辙(2.4):CMOS——互补的智慧 2.4 CMOS互补的智慧本文内容摘自本人的开源书《从沙子到车辙 - 一个工程师的理解》 在线阅读/下载from-sand-to-rutsgitclone https://github.com/Lularible/from-sand-to-ruts⭐ 如果对您有帮助欢迎 Star 支持也欢迎通过 GitHub Issues 交流讨论。一个不会漏水的水路系统假设你手里有两个简单的东西一个水龙头平常关着拉杆就出水一个塞子平常塞着拔掉就漏水。你把水龙头装在上水管——这是高边接通水源。你把塞子装在下水口——这是低边接通排水。现在把这两个东西联动起来——用一根连杆同时控制它们水龙头打开的同时塞子堵住下水口水不会直接从水管流到排水管——水流向了你要用的地方。水龙头关上的同时塞子打开下水口把管道里残留的水排掉不积水。你得到了什么一个既不会漏水、也不会积水的水路系统。常态下没有水的浪费。只在切换的一瞬间——水龙头还没完全打开、塞子还没完全堵住的那一刹那——有短暂的水直接从水源流到排水管。这就是 CMOS。两个互补的开关配成一对——一个接 VDDPMOS一个接 GNDNMOS。一个导通时另一个截止。静态功耗几乎为零。CMOS 的 C是Complementary——互补。不是对立的互补而是协同的互补。就像阴阳太极图——黑中有白白中有黑动态平衡静态归零。CMOS 反相器——数字电路的最基本积木CMOS 反相器只有两个 MOSFET。上面一个 PMOS源极接 VDD漏极接输出。下面一个 NMOS漏极接输出源极接 GND。两个 MOSFET 的栅极连在一起——这就是输入。VDD | PMOS | (上拉网络) IN ------ OUT NMOS | (下拉网络) | GND当 IN 00VPMOS 的 V_GS -VDD → PMOS导通PMOS 在栅极为低时导通。NMOS 的 V_GS 0 → NMOS截止。OUT 通过导通的 PMOS 连接到 VDD → OUT VDD 逻辑 1。当 IN 1VDDPMOS 的 V_GS 0 → PMOS截止。NMOS 的 V_GS VDD → NMOS导通。OUT 通过导通的 NMOS 连接到 GND → OUT 0V 逻辑 0。无论 IN 是 0 还是 1PMOS 和 NMOS 不会同时导通。静态下从 VDD 到 GND 没有直流通路——理论上功耗为零。现实中有一点点漏电亚阈值泄漏晶体管在截止状态也有 pA-nA 级微弱电流栅漏电流在纳米级工艺中电子隧穿氧化层以及 PN 结反向漏电。但在车规 MCU 常用的 40nm-90nm 工艺上这些静态漏电在单个反相器层面是皮安pA级别的。CMOS 反相器不需要输入电流栅极绝缘。不消耗静态功率P 管和 N 管互补开关。开关速度极快只受栅电容充放电限制。这三个特性让它成为数字电路的终极积木块。电压传输特性——VTC 曲线里的信息量反相器的电压传输特性VTCVoltage Transfer Characteristic是一张 V_IN 对 V_OUT 的图。横轴是输入电压从 0 扫到 VDD纵轴是输出电压的变化。理想的 VTC 是一个阶跃函数当 V_IN 低于 VDD/2 时V_OUT VDD当 V_IN 高于 VDD/2 时V_OUT 0。干净利落。切换点恰好是 VDD/2。真实的 VTC 没有那么锋利。它是一个平滑的 S 形曲线。当 V_IN 从 0 开始上升时V_OUT 在 VDD 附近维持平坦——PMOS 完全导通NMOS 完全截止。当 V_IN 接近 V_TH_NNMOS 的阈值电压时NMOS 开始微弱导通OUT 电压开始下降。在 V_IN 接近 VDD/2 的某个区间内PMOS 和 NMOS同时导通——都在饱和区或线性区——反相器表现出高增益V_OUT 急剧下降。然后当 V_IN 超过 VDD - |V_TH_P| 后PMOS 彻底截止V_OUT 降到 0。VTC 曲线给出了几个关键的设计参数开关阈值 V_MV_IN V_OUT 的点。理想是 VDD/2。如果 PMOS 和 NMOS 的驱动能力不对称V_M 会偏向强的一侧。V_M 偏得太多会导致噪声容限不对称。噪声容限Noise Margin输入端的噪声电压可以大到什么程度而不改变输出逻辑值。噪声容限定义为 VTC 曲线和其镜像曲线之间最大正方形的边长。高噪声容限NM_H V_OH_min - V_IH_min低噪声容限NM_L V_IL_max - V_OL_max。噪声容限越大电路对电源噪声、串扰、地弹越不敏感。在车规芯片中——EMC 环境极其恶劣——噪声容限是设计的关键指标。过渡区宽度V_OUT 从 90% VDD 降到 10% VDD 对应的输入电压区间。过渡区越窄VTC 越陡增益越高噪声容限越大。CMOS 反相器的过渡区可以做到 100mV 以内——这意味着输入电压只要变化约 100mV输出就能从逻辑 1 翻转到逻辑 0。扇出Fan-out一个反相器的输出可以驱动多少个后续门输入。扇出由驱动能力和负载电容决定——负载电容 N × C_in被驱动的门的输入电容 连线寄生电容。驱动能力大的反相器可以驱动更多门——但也会消耗更多功耗和面积。在高速数字电路中关键路径上的门的扇出通常限制在 3 到 5 之间。传播延迟t_p输入翻转 50% 到输出翻转 50% 之间的时间差。t_p 由充放电电流和输出负载电容决定——t_p ≈ C_L × VDD / I_D。降低延迟的手段增大晶体管宽度提高 I_D减小负载电容缩小被驱动门的输入电容降低 VDD但电压越低I_D 越小——存在最优值。这些都是 CMOS 反相器一张简单的 VTC 图就能推出的信息。电路设计——从原理图到版图——本质上就是在这张图上的各种参数之间做权衡速度 vs 功耗 vs 面积 vs 噪声容限。三笔账芯片的功耗到底从哪里来CMOS 的静态功耗接近零——这是教科书里的理想。真实芯片的功耗有三个来源。第一笔动态功耗开关功耗Switching Power。这是最大的单笔支出。反相器翻转一次输出端的负载电容 C_L 需要充电或放电。充电时电流从 VDD 经 PMOS 流向 C_L把电容从 0V 充到 VDD。能量从电源被取出来一半存储在电容中½ C_L V²另一半消耗在 PMOS 的沟道电阻上变成了焦耳热。放电时存储在电容中的 ½ C_L V² 经过 NMOS 放电到 GND——全部变成焦耳热。所以每一次完整的充放电周期0→1→0总耗能是 C_L × VDD²。如果芯片以频率 f 运行每秒钟翻转次数近似为 f × α。α 是活动因子activity factor——一个时钟周期内某个节点发生 0→1→0 完整翻转的概率。所以动态功耗P_dynamic α × C_L × VDD² × f数字电路 90% 以上的功耗通常是动态功耗。一个 Cortex-M4 在 112MHz、1.2V 下运行时典型动态功耗约 50-100 mW。这 100mW 花在了什么上面花在了给芯片上几十万到几百万个节点的栅电容和连线电容充电和放电这件事上——每个时钟周期每一微秒都有成百上千个节点在翻转。你写的代码越忙——主循环不停跑、中断不停触发、DMA 不停搬运数据——α 越高功耗就越高。你在做低功耗优化时把不用的外设时钟关掉clock gating本质上就是在那一部分电路上将 α 降到零——时钟停了那些节点就不翻转了。第二笔短路功耗直通功耗Short-circuit Power。CMOS 在静态下没有直流通路——这是对静态而言。但在切换的瞬间当输入电压在 V_TH_N 和 VDD - |V_TH_P| 之间时PMOS 和 NMOS 会同时微弱导通。一股穿堂风——电流从 VDD 直接经 PMOS 和 NMOS 流到 GND。一个反相器在单次翻转中消耗的短路能量大约是 C_L × VDD² 的 5-15%。但是如果输入信号的上升/下降时间很长比如因为驱动能力不足这个同时导通的时间窗口会被拉长——短路功耗占比可能上升到 20-30%。这就是为什么在做高速数字设计时要关注信号的压摆率slew rate——缓坡不仅噪声大因为中间电平的 PMOS/NMOS 共导时间长对外部噪声敏感而且费电。第三笔静态功耗漏电功耗Leakage Power。P_leakage VDD × I_leakI_leak 包括亚阈值泄漏Subthreshold Leakage晶体管即使 V_GS 0也有一条微弱的指数电流尾在漏电。在 40nm 工艺下单管的亚阈值泄漏约在 1-10 nA。听起来小——但一个 die 上有上百万到上亿个晶体管。1nA × 1亿个 100mA。这就是暗硅问题的根源。栅漏电流Gate Leakage量子隧穿导致的栅极到沟道直接漏电。在 HKMG 工艺中已经得到了大幅抑制。结漏电Junction Leakage源/漏到衬底的 PN 结反向漏电流。通常很小fA-pA 级但高温下指数增长——温度每增加 10°C泄漏大约翻倍。三个来源整合起来P_total α × C_L × VDD² × f P_short P_leak对于汽车 ECU 来说现实场景下的功耗管理就是在这三个项上做文章电压降一半动态功耗降四倍因为 VDD² 项。这就是内核电压从 5V → 3.3V → 1.8V → 1.2V → 0.9V 一路向下走的根本驱动力。频率降低动态功耗线性下降。所以 MCU 有多达几十个时钟分频选项——HCLK、PCLK1、PCLK2——让你给不同的外设挂不同速度的时钟。不需要跑满的外设就别给它高速时钟。活动因子降为零——关掉未用模块的时钟clock gating那部分电路完全不耗动态功耗。降低亚阈值泄漏——用电源门控power gating直接切断未用模块的供电。但电源门控的成本很高——恢复供电需要时间唤醒延迟。动态电压频率调节DVFS——在负载低时降低电压和频率在高负载时升高。这在手机 AP 上是标配但在车规 MCU 上不常见——因为汽车对实时性要求严格电压频率的切换延迟可能不可接受。Dennard 缩放——一个成立、然后崩溃的预言1974 年IBM 的 Robert Dennard 发表了一篇里程碑式的论文。他指出了一个漂亮的缩放规律如果晶体管尺寸等比例缩小 k 倍k 1功耗密度可以保持恒定。推导大致是这样的晶体管尺寸缩小 k 倍 → 面积缩为 1/k² → 可以放 k² 倍的晶体管。电压也缩到 1/k保持电场不变——氧化层减薄 k 倍VDD 也等比例缩 k 倍。氧化层减薄 k 倍 → 栅电容 C 也缩到 1/kC εA/tA 缩为 1/k²t 缩为 1/k → C 缩为 1/k。频率提升 k 倍信号传播距离缩短 k 倍但电场保持不变 → 载流子速度不变传播时间缩为 1/k → 频率提升 k 倍。代入 P αCV²fC → 1/k。V² → 1/k²。f → k。乘起来单个晶体管的功耗变成1/k²。但芯片上可以放 k² 倍的晶体管。所以芯片的总功耗不变。这就是 Dennard 缩放定律——它解释了为什么从 1970 年代到 2000 年代中期芯片频率一路飙升几 MHz → 几 GHz但芯片的功耗没有爆炸。Intel 从 80863μm到 Pentium 490nm每一代制程都能在相同功耗预算下获得更高的频率。然而在 2005 年左右——90nm 到 65nm 附近——这一定律崩溃了。崩溃的原因是电压不能无限缩。阈值电压 V_TH 不能跟着等比例缩。如果 V_TH 太低亚阈值泄漏电流会指数级暴涨——晶体管关不死。而工作电压 VDD 必须比 V_TH 高出一定的过驱余量overdrive才能保持足够的开关速度。所以 VDD 在 1V 附近就不再显著下降了。同时栅氧化层也不能无限缩——2nm 以下量子隧穿急剧增加再减薄栅漏电流就失控了。所以 DENNARD 的氧化层等比例减薄这一步也停下来了。当 VDD 和氧化层厚度不再缩但晶体管数量还在翻倍摩尔定律的密度继续提升——功耗密度开始上升。这就是暗硅dark silicon现象的根源——你没法让芯片上所有晶体管同时以全速工作因为产生的热量散不出去。你只能让一部分区域以全速跑其他区域关闭或降频。移动芯片的 big.LITTLE 架构ARM、CPU 的睿频Turbo Boost和热降频thermal throttling都是 Dennard 缩放崩溃后不得已的妥协方案。车规芯片很少跑在制程节点的最前沿。大多数车规 MCU 还在 90nm 到 40nm——Dennard 缩放崩溃的刃口刚好在它们前面。这其实是一个优势。用稍微落后的制程换来了更好的热分布、更低的漏电、更高的可靠性、更成熟的设计库。这就是成熟制程在汽车电子中活得好好的根本原因。为什么车规芯片甘愿用落后一代的制程你可能会想车规芯片为什么不用 5nm性能不是更好吗答案是不是不能是不该。第一漏电。更先进的制程7nm、5nm、3nm的亚阈值泄漏是 40nm 的几十到几百倍。一颗 5nm 的芯片即使处于待机状态静态功耗可能也在几百毫瓦级别。这对手机来说勉强可以接受——你晚上回去充电就是了。对汽车来说不可接受——熄火后全车 ECU 的暗电流总和必须 10mA约 120mW否则一晚上电池就空了。用 40nm 或 90nm 做车规 MCU静态漏电可以控制在 μA 级别——整颗芯片的睡眠电流可能只有十几个 μA。第二电压。更先进的制程要求更低的 VDD——0.7V 到 0.9V。但车上的电源环境是 12V乘用车或 24V商用车降到你需要的 1.2V 或 3.3V 已经很难了再降到 0.8V——LDO 或 DC-DC 的效率、噪声、可靠性都会恶化。而且低电压意味着模拟电路的信号摆幅小——信噪比下降。你的 12-bit ADC 在 1.2V 基准下一个 LSB 是 0.29mV。如果用 0.8V 基准一个 LSB 是 0.20mV——热噪声和电源噪声的容限都更小了。第三可靠性。更先进的制程的器件老化更快——NBTI、HCI、TDDB经时击穿等退化机制在纳米级工艺中更加显著。一个 5nm 的晶体管在 125°C 下跑 1000 小时的 HTOL参数漂移可能达到 10-15%。而一个 40nm 的晶体管在同样条件下可能只漂移 2-3%。车规芯片要在 15 年内保持参数在 spec 内——谁更可靠一目了然。第四成熟度。40nm 已经量产了十几年。几十亿颗芯片的数据积累下来整个工艺窗口已经被摸透了。设计规则DRC rules是经过几百次 tapeout 验证的。模型精度很高——SPICE 仿真和实际硅片的偏差很小。良率稳定——90% 以上的良率是可以持续保持的。对于做 ASIL-D 安全件的 Tier-1 来说——他们不想要新的他们想要确定的。所以车规芯片用 40nm 不是落后——是理性。在做失效分析时我最喜欢的事就是切片这是我的亲身经历——良率工程师视角下的失效分析。在 fab 里当良率出现异常单靠参数测试和光学检测不足以确定根因时下一步就是做物理失效分析PFAPhysical Failure Analysis。而 PFA 的第一步通常是切片。切片就是用聚焦离子束FIBFocused Ion Beam在 die 的特定位置切出一个剖面然后用扫描电子显微镜SEM观察这个剖面。FIB 用镓离子束轰击硅的表面像一把原子级的刀——可以把硅、氧化硅、金属、甚至封装材料一层一层地削掉精度达到纳米级别。我第一次在 SEM 上看自己切的 chip 剖面时整个人是震撼的。在 SEM 的黑白图像里芯片不再是一块平淡无奇的黑色方块。它是一个精密的、层叠的、有纵深感的微型城市。最底层的硅衬底——灰色的、均匀的海洋。上面是晶体管层——一个个 FinFET 的鳍像一排排高楼栅极像包裹在楼外面的隔热层。再往上是十几层金属互连线——铜线在二氧化硅介质中穿行像城市地下的地铁隧道。层与层之间是密密麻麻的钨通孔via——垂直的通道把相邻的金属层连接起来。这片小小的硅——15mm²——在 SEM 下是一个立体的、有人尺度的世界。有一次一个 die 的失效模式很怪异——常温测试全 pass高温125°C测试大面积 fail。参数测试指向 VDD 到 GND 之间短路——但哪个位置短了我们把 die 送去做光发射显微镜EMMIEmission Microscopy分析。给 die 通电——VDD 和 GND 之间应该有高阻抗。但在 EMMI 图像上一个微小的光点出现了——那是电子和空穴复合发出的近红外光子。光点的位置标记了短路点。然后 FIB 在那个位置切了一个剖面。SEM 下看——看到了。两个相邻金属线的间距应该 ≥ 0.25μm。但在 SEM 图像上这两条线之间的距离在某一段几乎为零——有一条细细的金属桥bridge横跨在两条线之间。这条桥的宽度大约只有 50nm——用光学显微镜根本看不到在常规的 AOI自动光学检测中也扫不出来。但在 SEM 下它清楚得不能再清楚。一条 50nm 宽的金属细丝把 VDD 和 GND 短接了。这是什么造成的进一步用 EDX能量色散 X 射线光谱分析了桥梁的化学成分——主要是铜和少量的钽钽是铜互连工艺中的扩散阻挡层材料。这表明桥梁是在铜 CMP 之后、钽阻挡层沉积之前形成的——可能是 CMP 残留的铜碎屑没有清洗干净在下一道沉积工序中被埋进了介质层里。这个缺陷在室温下不造成短路——因为热膨胀系数差异室温下桥梁可能处于微小的机械应力下刚好断开。但加热到 125°C 后铜的热膨胀比周围的二氧化硅大——桥梁被挤到了旁边的金属线上接通了。这就是为什么这颗芯片常温 pass、高温 fail。不是电气设计有 bug——是物理制造有缺陷。一粒尘埃——70nm 的铜碎屑——就可以破坏整个电路。而这颗碎屑是在几百道工序中的某一个清洗步骤留下的。我每次回忆起那幅 SEM 图像——两条铜线之间那条 50nm 的细桥——都会感到一种混合的情绪。一方面是敬畏——人类可以把东西做到这么小、这么精确。另一方面是谦卑——在原子尺度做任何事任何微小的失误都会被放大成致命的缺陷。从两个 MOSFET 到一台车CMOS 逻辑最漂亮的一个性质简单规则的重复可以涌现无限复杂。一个 NMOS 一个 PMOS 反相器。反相器 × 几个 NAND 门两个 PMOS 并联 两个 NMOS 串联、NOR 门两个 PMOS 串联 两个 NMOS 并联。NAND 门 × 几十个 加法器、多路选择器、ALU。ALU 寄存器 控制状态机 × 几千个 CPU。CPU 片上 SRAM Flash 外设 MCU。MCU × 100 CAN/LIN/FlexRay 传感器 执行器 整车电子架构。从两个 MOSFET 到一台在路上以 120km/h 飞驰的、依靠几十个 ECU 协同工作的汽车——中间没有魔法。每一步都是确定性的、可理解的、由简单积木块组成的。这是工程之美——不是不可分析的复杂而是可分析的复杂。你可以从最顶层的模型一路走到最底层的晶体管每一层都是可以严格推导的、可以仿真的、可以预测的。你的车在高速公路上做自适应巡航——雷达数据 → CAN 消息 → MCU 中断 → 算法计算 → GPIO 输出 → 刹车作动——这整个链条最终可以分解为几十万个 CMOS 逻辑门的翻转。道家讲道生一一生二二生三三生万物。在 CMOS 的世界里CMOS → 逻辑门 → 功能模块 → 芯片 → 系统 → 万物。你在调试 ECU 时看到的每一个不正常的电平、每一条时序违例、每一帧丢掉的 CAN 消息——它们的根因最终都可以追溯到某些 MOSFET 没有在正确的时间、接到正确的电压。因为一切数字电路的物理本质就是如此——CMOS 反相器的输入和输出之间那层薄薄的氧化硅。你在做软件。但你的软件跑在物理上。而物理——是由 MOSFET 定义的。本篇小结今天我们做了一件事理解了CMOS互补的智慧——为什么两个互补的开关配成一对就成了数字电路的终极积木。关键结论CMOS的本质是一个导通时另一个截止静态下VDD到GND没有直流通路功耗几乎为零——这是整个数字世界能跑在电池上的物理基础。芯片功耗有三个来源动态功耗CV²f、短路功耗、静态泄漏——Dennard缩放的崩溃告诉我们在纳米时代电压不能再无限降。车规芯片甘愿用落后一代的制程是理性的选择更低的漏电、更高的电压容限、更慢的老化——可靠性凌驾于性能之上。下一节一个面板厂良率工程师的视角带你走进半导体制造的真实世界——电路图是如何在基板上一层层长起来的。【下集预告】从理论上说有了 MOSFET有了 CMOS就能造任何数字电路。但这些电路是如何被制造出来的光刻、刻蚀、沉积、离子注入、CMP——这组五步骤要重复几十次。在面板厂线宽是微米级别在芯片厂线宽是纳米级别。原理相似尺度不同。我在一家面板厂做过几年良率工程师。我见过 PECVD 腔体中的等离子体辉光、听过溅射机的高压放电声、在 SEM 上看过自己切的面板剖面——电路图在玻璃基板上一层层长了起来。下一节——从一个良率工程师的视角带你走进半导体制造的真实世界。

相关新闻