每次流片回来,芯片上电先量电源对地阻抗,几乎已经成了数字IC后端工程师的本能动作。在CMOS工艺里,电源和地之间藏着一个平时不声不响、一旦被点燃就灾难级的寄生通路——latch-up(闩锁效应),中文圈里叫“闩锁”,老工程师常念叨的“千万别锁死”。处理这个东西,版图上最直接的手段就是打tap(阱接触和衬底接触),而新手最容易翻车的地方,恰恰是tap画得不到位。这篇文章专门聊聊latch-up的物理本质、tap为什么能压住它,以及我用combined area方式绘制tap的实际操作与坑点,算是给真正在做IC后端版图、跑VLSI流程的朋友一份摸底笔记。
先说明一下,这里的CMOS指的是集成电路工艺里那个CMOS,不是大家电脑BIOS里那个“cmos battery is bad”的CMOS,也不是摄像头里那个cmos图像传感器。我们讨论的是芯片内部的互补金属氧化物半导体结构,重点在数字后端版图里的电源地防护设计。
1. 闩锁效应是怎么回事
1.1 硅片里住着两个“捣乱”的双极型晶体管
很多人初学latch-up,总觉得是个抽象的概念。其实把它拆成硅片结构就非常直白:一个常规CMOS反相器里,P管住在N-well里,N管住在P-sub里,可偏偏这两者之间会自然形成一对寄生双极型晶体管——一个寄生NPN管和一个寄生PNP管,两者首尾相连,正好构成一个PNPN四层结构,也就是晶闸管(SCR)。
具体路径可以这样看:从VDD经过P管源区的P+,进入N-well,再穿过N-well/P-sub结,进入P-sub,最后经过N管源区的N+到达VSS。这一路看下来就是P+ / N-well / P-sub / N+,标准的四层PNPN。正常情况下,两个寄生管的V_be都达不到导通条件,这条路径是高阻的,芯片安然无恙。但只要外界有扰动让其中一个管子先导通,另一个就会跟着导通,然后正反馈互相放大,两个管子都被彻底打开,电源到地之间就变成了一条低阻大电流通路。
这个正反馈可以用一个经典的判据来描述:两个寄生的双极型晶体管电流增益乘积必须大于等于1,也就是β_NPN × β_PNP ≥ 1。一旦满足这个条件,哪怕外部触发信号撤掉了,这条通路也不会自己关断——因为它已经“锁住”了。这就是latch-up这个名字的由来,跟按下开关之后卡死是一个道理。
1.2 触发闩锁的三个条件,少一个都“锁”不住
想要把闩锁勾出来,电路里必须同时满足三个条件。第一,PNPN结构中至少有一个寄生管先导通,也就是有外部电流注入到N-well或者P-sub里,把某个结的压降抬到0.6V以上。I/O口的ESD脉冲、过压毛刺、甚至粒子轰击产生的载流子,都可能成为这根“火柴”。第二,两个寄生管的电流增益乘积必须大于1,这跟掺杂浓度、阱深、版图的尺寸都有关系,阱越浅、间距越近,增益越高,越容易锁。第三,电源必须能提供足够的维持电流,把导通状态撑住。有些低压小电流芯片在特定条件下自己就退出了闩锁,就是因为电源喂不饱这个正反馈。
这三个条件缺一不可,所以版图上防闩锁的思路就很清晰:要么减少载流子注入,要么压低寄生管增益,要么削弱维持电流。而tap做的是第一件事和第三件事——把阱和衬底的电位死死钉住,让注入进来的少数载流子还没把结电压抬起来就被抽走,同时让寄生的集电极电流没机会形成正反馈。
1.3 闩锁之后会发生什么(麻烦很大)
闩锁一旦成立,电流路径上的电阻非常小,大电流直接灌进硅片。轻则电源地之间短路、芯片发烫、逻辑功能全乱,重则金属走线熔断、结烧毁,整颗芯片直接报废。更讨厌的是,latch-up在很多情况下是可恢复的——如果你断电再上电,它可能又正常了。这种“时好时坏”的故障在现场最难定位,客户那边拿到手里没问题,一到系统环境里就死机重启,十有八九就是I/O口附近被静电或过压触发了闩锁。
做闩锁测试的时候,行业内一般会在高温(比如125℃)条件下,往引脚注入正负几百毫安的电流,同时监控电源电流有没有突然跳变。这个测试是芯片流片回来后可靠性验证的必测项,一旦没通过,要么改工艺层次,要么改版图,而改版图最常见的手段,就是重新设计tap和guard ring。
2. tap是怎么把闩锁按下去的
2.1 tap的本质:把电位“钉”在衬底和阱上
tap在版图里其实就是一个接触孔区域,在N-well里打N+注入再接到VDD,叫N-well tap;在P-sub里打P+注入再接到VSS,叫衬底tap。它本身不实现任何逻辑功能,它的作用就一个——给阱和衬底提供一个低阻抗的电位固定点。
这句话怎么理解?要回到电流路径。P管源区的P+和N-well之间本来就是一个PN结,N-well的电位如果被外部电流抬高0.6V以上,这个结就会正偏,把空穴注入进N-well。而N-well里一旦出现空穴,恰好就是寄生PNP管的基极电流。同样的道理,P-sub里如果出现电子,恰好就是寄生NPN管的基极电流。tap的存在,相当于在阱和衬底上扎了很多根“排水管”,把少数载流子直接抽走,让它们攒不成足以开启双极管的压降。电位被钉住了,基极电压抬不起来,正反馈自然就没法启动。
2.2 tap怎么破坏正反馈
单个tap只能保住它周围一小片区域,硅片上的电位漂移是一个渐变过程,离tap太远的地方,阱和衬底的局部电位依然可能被扰动。所以版图规则里会明确规定tap和被保护器件之间的最大间距,这个间距通常和阱的薄层电阻、接触孔数量有关系。
工程上有一条很实用的经验:对着一根标准单元行来看,tap距离两端的敏感器件不能太远,大工艺节点下一般要求15~30μm内必须有一个有效的阱/衬底接触;到了先进工艺,纵向尺寸缩小,寄生管增益变大,对tap密度的要求反而更严。你想想,芯片上一大块区域如果几十微米范围内一个tap都没有,那这块区域里的阱电位基本处于“漂移”状态,一旦有干扰进来,闩锁就是迟早的事。
tap还承担着另一项任务:降低阱/衬底的体电阻。电阻越低,产生同样的电位扰动需要的注入电流就越大,触发闩锁的门槛也就越高。所以关键模块边上不仅要多打tap,还要尽量用大面积接触孔并联,把电阻压到毫欧级别。
2.3 tap和guard ring的分工
很多刚接触版图的人容易把tap和guard ring混为一谈。tap是点状或块状的电位固定接触,guard ring是一圈围绕敏感模块的保护环。严格来说,guard ring其实可以理解成“连成一圈的tap”。
在I/O区域或者混合信号模块周围,光靠离散的tap点不够,因为干扰源是从外面进来的,需要在被保护模块四周建一圈连续的电位屏障。最常见的是双环结构:最外层为需要接地的P+保护环,最里层为接电源的N+保护环,或者反过来嵌套,视工艺类型而定。这样外部载流子还没接近内部电路,就被外环的接触区吸走了。I/O和内部逻辑之间的guard ring,在很多工艺里甚至是强制规则,画漏了DRC不一定报错,但闩锁测试大概率会挂。
3. 版图实操:用combined area画好tap
3.1 为什么标准单元库里还要自己画tap
可能有人问,现在PR工具不是会自动插tap cell吗,标准单元库里的TAPCELL难道是摆设?确实,标准单元库里通常会有专门的tap cell,工具也会在布局时每隔一段距离放一个,把阱和衬底的接触补齐。但实际项目里,光靠库里的tap cell远远不够。
原因有几个方面。第一,Memory、I/O、模拟模块这些区域并不全是标准单元,工具不会自动在这些地方插tap,需要后端工程师手动补。第二,标准单元行之间的空白区域、电源地轨道切换的区域,往往是tap密度最薄弱的地方,工具按规则放完一轮之后,依然可能有些角落不达标。第三,库里tap cell的尺寸是固定的,它覆盖的接触孔数量有限,在大电流能力要求高的电源地网络上,需要更大接触面积的tap来压低电阻。所以手动画tap,是后端版图里非常核心的一个基本功。
3.2 combined area画tap的步骤与关键参数
所谓combined area画tap,就是把同一电位下的多个tap有源区,合并成一个连续的、完整的有源区区域,再统一打接触孔,而不是东一个小方块西一个小方块地散着画。这么做的好处很直接:减少版图碎片,降低DRC边缘问题,接触孔能用满,电阻也更低。而且对后端的电源地网络连接来说,一块连续区域比一堆碎块要可靠得多。
我以一组常规的CMOS工艺层次举例,实际项目以PDK里的layer map为准,步骤如下:
- 先确定要打tap的区域属于N-well还是P-sub,分别对应N+注入和P+注入。这一步千万别搞反,搞反了等于给闩锁递刀子。
- 在指定区域上画一个有源区(AA/Od),形状可以是长条矩形,也可以是L形或多边形,视周围环境而定。此时不急着切碎。
- 在有源区外面叠上对应的注入层:N+注入层画在N-well tap上,P+注入层画在P-sub tap上。
- 在有源区上一个接一个地摆接触孔(contact),形成一排或多排阵列。接触孔之间要留足工艺规定的最小间距。
- 接触孔上方用Metal 1把所有孔短接起来,然后接到对应的电源或地平面上。
- 跑DRC检查最小间距、最小面积、接触孔密度这些项,有问题就回头微调形状。
几个关键参数,具体以工艺文件为准:有源区最小宽度、接触孔最小尺寸和间距、金属覆盖有源区的最小包边(enclosure)、注入层的最小引出尺寸。这些参数在PDK的design rule文档里都有表格,打开一条一条对就行。
3.3 与电源网格的连接和打孔细节
tap画好之后,最要紧的一步是把tap接到正确的电网上。N-well tap接VDD,P-sub tap接VSS,这条铁律即使在多层金属的高层电源连接时代也不会变。连接方式一般是通过Metal 1短接,再通过Via往上跳到对应电源轨。如果电源网格的电流密度要求高,可以在长条tap上面打两排甚至三排接触孔,提高接触面积。
这里有几个容易踩的细节。第一,接触孔打在哪个金属层下面,要该层金属覆盖完整,不建议让Via直接压在接触孔的正上方而没有金属包边,否则会造成应力集中和电迁移问题。第二,如果tap的合并区域面积很大,需要考虑金属上的IR drop,必要时在长条中间再引一根短的金属走线去接主干电源,而不是只从两端接。第三,tap区域周围可能还有其他同电位的n-well或p-sub区域,合并绘制时一定要确保它们确实是同一种电位,别把一个应该浮空的阱也合进来了。
3.4 从布局到验证的完整检查清单
画完tap并不意味着后端任务结束,接下来要跑到PR工具里做LVS(版图与原理图一致性检查)和DRC。LVS重点看tap有没有形成正确的电源地连接,有没有意外接到逻辑信号上;DRC重点看有源区、注入层、接触孔之间有没有违反最小间距和最小面积规则。
我给自己定过一个检查清单,每次画完tap都照着过一遍:
- 每个标准单元行两端的阱接触和衬底接触间距是否满足工艺规则;
- I/O与内部逻辑之间是否布置了完整的guard ring,且电位连接正确;
- 大电流区域(驱动器、ESD结构附近)的tap接触孔数量是否足够;
- tap的有源区是否覆盖到与相邻器件的最小安全间距,避免出现意外寄生路径;
- 电源地连接层级是否清晰,Metal 1短接区域有没有被其他信号挡住;
- 最后快速跑一遍DRC里的latch-up相关检查项(很多工艺PDK会用特定的DRC deck查tap间距)。
4. 实战问题排查与避坑记录
4.1 闩锁问题的现场排查方法
流片回来的芯片如果怀疑是闩锁问题,不要急着扔。先用红外热成像或者液晶热点检测,通电后看芯片表面哪个区域先发热,通常就是闩锁路径的位置。然后对照版图该区域的tap分布,看是不是某个模块周围缺tap,或者tap的接触孔被电源轨挡住了没连上。如果热点出现在I/O附近,重点查I/O的guard ring有没有贯通,有时两个接口PAD之间的保护环在绘制时断了,这条断口就是闩锁的入口。
有些闩锁问题只在特定电压或温度下触发,现场反复上电断电都复现不出来。这时候可以在电源上加一个缓慢爬升的斜坡电压,观察电流曲线有没有突然跳变的拐点。没有tap保护的芯片,电流爬升过程中很容易出现一个明显的台阶——那就是寄生SCR导通的痕迹。
4.2 真实项目中的三类反面案例
第一类:标准单元密度高,但工具插tap时因为拥塞问题漏插了某一行,导致这一行离最近的tap超过规定间距。流片回来之后,芯片在高温下运行一段时间随机死机,排查到最后发现就是那行单元附近的N-well电位出现了漂移。后段修复只能在未流片前看到,流片后只能靠改版解决。
第二类:I/O区域的guard ring画了,但把N+ ring和P+ ring的顺序放反了,等于在电源地之间自己搭了一个低阻二极管串。平时测试没问题,遇到ESD事件时这个“反向保护环”反而提供了额外的闩锁路径。后来仔细核对了foundry的guideline才发现,不同工艺的环形顺序并不完全一样,不能直接抄老工艺的套路。
第三类:tap的有源区合并区域画得太大,覆盖到相邻其他电位的n-well边界,产生了意外的横向双极管路径,把原来想保护的模块推向了更危险的境地。这个问题的本质是“合并”没有结合上下文判断,只想着面积大电阻低,忘了考虑边界效应。
4.3 容易被忽略的细节清单
最后说几个普通文档里不太会写,但实际项目里影响很大的细节。
第一,别忘了虚拟电源地和虚拟备用单元。在ECO或者后期布局调整时,标准单元的电源轨可能会被工具挪动,如果tap是直接挂在某个过孔上的,一旦电源轨变了,tap可能就悬空了。所以画tap时尽量让连接关系层级简单,不要层层跳线。
第二,关注井层次上的孔密度。有些工艺在N-well和P-sub交界的位置附近,对接触孔密度有额外要求,是为了防止闩锁在井边界附近触发。这类规则很少一条条写在主设计规则里,但DRC结果里会出现,新手容易当作误报或者硬绕过去,实际上不应该绕。
第三,画I/O的tap时,尽量和ESD结构的布局一起规划。ESD器件本身就会在I/O和电源地之间引入大电流脉冲,如果tap在ESD泄放路径附近留了缺口,那这个脉冲很可能一边走ESD的保护路径,一边顺手把旁边的寄生SCR触发起来。这两个结构要放在一起整体思考,而不是分开各自画完就完事。
我个人在实际操作中体会最深的一点是,tap这东西画得再规矩,都不如从一开始布局阶段就跟着电源地网格一起规划来得省事。很多闩锁问题追根溯源,都是因为前期的电源地规划没给tap留出足够的落位空间,到后期拥塞严重的地方硬塞,效果总是不理想。下次再拿到新项目,我建议你先花两三个小时把整个芯片的阱区、电源地拓扑和tap分布拉通看一遍,心里有张“tap地图”之后,后面所有模块的绘制都会顺很多。