3. ESD防护器件建模:GGNMOS的DC与瞬态行为

做ESD防护设计,GGNMOS是你绕不开的器件。我见过不少工程师直接拿foundry的模型库跑仿真,结果流片回来ESD打不穿——说白了,就是没搞清楚GGNMOS到底是怎么工作的。这一章咱们就把它掰开揉碎了讲。

3.1 GGNMOS的结构与工作机理

GGNMOS,全称Grounded-Gate NMOS,栅极接地、源极接地的NMOS管。你想想看,正常工作时它就是个关断的MOS管。但ESD事件来了,情况就完全不同了。

它的寄生结构是个NPN双极型晶体管:

  • 集电极:漏极(Drain)
  • 发射极:源极(Source)
  • 基极:P型衬底(Substrate)

漏极和衬底之间的PN结在ESD高压下会发生雪崩击穿,产生大量电子空穴对。空穴流进衬底,在衬底电阻上形成压降。当这个压降超过约0.7V时,寄生NPN管就导通了,这就是所谓的“回滞”效应(Snapback)。

注意:回滞效应是把双刃剑。它能泄放大量电流,但也可能导致闩锁。我在一个0.18μm的项目中就吃过这个亏——回滞维持电压太低,电路进入了闩锁状态,整个芯片功耗飙升。所以模型必须准确捕捉维持电压。

3.2 DC特性建模:触发电压与维持电压

GGNMOS的DC特性,关键就三个参数:触发电压(Vt1)、维持电压(Vh)、以及二次击穿电流(It2)。

参数 符号 物理含义 SPICE建模要点
触发电压 Vt1 寄生BJT导通时的漏极电压 由雪崩击穿模型决定
维持电压 Vh 回滞后的最低电压点 由衬底电阻和电流增益决定
二次击穿电流 It2 器件热失效前的最大电流 需要热模型配合

建模时,我习惯用一个子电路(Subcircuit)把GGNMOS包裹起来。核心是寄生BJT(用Q1表示)加上可调衬底电阻(Rsub):

** GGNMOS Snapback 子电路模型
.subckt GGNMOS_SNAPBACK D G S B
.param VTO=0.8 BETA=100 RSUB=1000

** 寄生NPN: 集电极=D, 发射极=S, 基极=B
Q1 D B S NPN_MOD

** 衬底电阻: 连接基极B到地
Rsub B 0 {RSUB}

** 雪崩电流源: 触发Snapback
Gav D B CUR='(V(D)-V(B))/Rbreak'

** 栅极偏置: 接地
Rgate G 0 1e12

** 主MOS (可选, 用于保持基本I-V)
M1 D G S B NMOS W=50u L=0.18u

.model NPN_MOD NPN (BF={BETA} VAF=50)
.model NMOS NMOS (VTO={VTO} KP=200u)

.ends GGNMOS_SNAPBACK
小技巧:衬底电阻Rsub的取值很关键。太大了,触发电压偏低,容易误触发;太小了,触发电压偏高,ESD保护效果差。我一般从100Ω到1kΩ之间扫描,看触发曲线的变化趋势。

3.3 触发电压Vt1的SPICE实现

触发电压的核心是雪崩击穿。在SPICE中,可以用一个压控电流源来模拟雪崩电流。公式是这样的:

** 雪崩击穿电流模型
Gav D B CUR='Iav * (exp((V(D)-V(B))/Vav) - 1)'
* Iav: 雪崩饱和电流, 典型值1e-12
* Vav: 雪崩电压参数, 控制触发点

这个模型的物理直觉是:当V(D)-V(B)超过某个阈值,电流指数级增长,等效于PN结击穿。我调参的常规做法是先固定Vav=5V左右,再调Iav让Vt1落在目标值(比如8-10V)。

但是这里有个坑——实际GGNMOS的Vt1还受栅氧厚度、掺杂浓度影响。直接套这个公式可能不准。我的建议是先用TCAD或者实测数据拟合出Iav和Vav的值,再反哺到SPICE模型中。

3.4 维持电压Vh与回滞深度

触发之后,器件电压会“掉”到维持电压Vh。这个掉多少,取决于寄生BJT的电流增益beta和衬底电阻Rsub。

简化关系式:

Vh ≈ Vt1 / (1 + β)

换句话说,β越大,Vh越低。我在一个65nm的项目中遇到过Vh低到只有1.5V的情况——芯片的电源域都维持不住,每次ESD事件后都会闩锁。后来把β从150降到50,Vh提升到3V左右,问题才解决。

在SPICE中调整β的方式:

** 低beta模型: BF=50
Q1 D B S NPN_MOD_LOWBETA
.model NPN_MOD_LOWBETA NPN (BF=50)

** 高beta模型: BF=150
Q1 D B S NPN_MOD_HIGHBETA
.model NPN_MOD_HIGHBETA NPN (BF=150)

实际调优时,我会结合TLP测试数据来拟合。TLP曲线上的“回滞拐点”就是Vt1,而回升之前的那个电压平台就是Vh。把这两个数值对上去,β和Rsub基本上就定了。

3.5 二次击穿电流It2与热模型

It2是GGNMOS能承受的最大电流,超过这个值器件就热烧毁了。纯电学模型没法准确预测It2,必须引入热模型。

一个实用的方法是用RC热网络模拟结温的上升:

** 简单热模型: 结温上升
Cth Tj 0 1e-9    * 热容
Rth Tj 0 1e3     * 热阻
Gpd Tj 0 CUR='V(D,S)*I(D)'  * 功耗注入

** 温度相关的击穿电流
.model Tlimit TEMP
+ IT2_TEMP=1e-3   * 常温下It2
+ TEMP_COEF=2e-3  * 温度系数
避坑指南:我曾经直接在网表里写死了It2,结果仿真出来TLP曲线怎么看怎么不对——电流平台一直能升到10A都不烧。后来才意识到,实际器件的It2会随温度升高而降低,必须把温升反馈到电流源上。这个反馈回路一加上,模型才准。

综合来说,一个完整的GGNMOS模型应该包含:

  • 雪崩击穿电流源(决定Vt1)
  • 寄生NPN(决定Vh和回滞形状)
  • 可调衬底电阻(影响触发灵敏度)
  • RC热网络(决定It2)

下面这张图概括了咱们的建模流程:

GGNMOS ESD建模核心流程 GGNMOS ESD建模流程 DC特性建模 Vt1 / Vh / It2 寄生参数提取 NPN BJT / Rsub 瞬态行为建模 TLP脉冲 / HBM SPICE子电路集成 雪崩源 + 热网络 + BJT 参数调优与校准 TLP数据拟合 / 迭代 核心目标 准确预测ESD响应 避免误触发或闩锁
核心要点:GGNMOS建模不是简单调几个参数就完事的。你得把DC特性(Vt1、Vh)、寄生参数(BJT、Rsub)和瞬态行为(TLP响应)串起来,形成一个自洽的模型。我的经验是: 先对标TLP实测曲线,反推参数,再验证HBM或CDM脉冲响应,迭代个两三次,模型就稳了。

3.6 模型验证:TLP仿真对标实测

模型建完了,怎么知道它准不准?最直接的办法就是跑TLP仿真,和实测曲线对比。

TLP(Transmission Line Pulse)是ESD测试的标准方法,用宽度100ns左右的方波脉冲扫不同幅值,得到I-V曲线。SPICE中模拟TLP的思路是:

  • 用分段线性电压源(PWL)生成不同幅值的方波
  • 在每个幅值下,采样100ns末端的电压和电流
  • 把这些点连起来,就是仿真TLP曲线
** TLP仿真激励示例
Vtpl D 0 PWL(0 0 1n 0 2n 8V 102n 8V 103n 0)
* 第一个脉冲: 幅值8V, 宽度100ns
* 后续脉冲: 幅值递增, 直到触发Snapback

把仿真得到的Vt1、Vh和It2与实测值放在一起对比:

参数 实测值 仿真值(初版) 仿真值(调优后)
Vt1 (V) 8.5 9.2 8.6
Vh (V) 3.2 2.8 3.1
It2 (A) 1.5 2.0 1.6

你看,初版模型偏差不小。触发电压偏高,维持电压偏低——这说明雪崩击穿模型和BJT增益都没调准。经过几轮迭代,把Iav、Vav和β都微调后,三个关键参数都和实测对上了。这个版本才可以拿去跑完整的ESD仿真。

经验之谈:TLP仿真对标时,别只盯着Vt1和It2。我建议把整条I-V曲线都画出来看,特别是回滞区的形状。有时候Vt1和Vh都对,但中间“拐弯”的斜率不对——那可能是雪崩电流模型的指数因子有问题,要回头调整Vav。