第10章 仿真设置与模型验证
仿真结果可不可信,取决于两件事:仿真器配置是否正确,器件模型是否真实反映硅片上的物理行为。前者是操作问题,后者是物理问题。操作问题可以通过检查设置来解决,物理问题则只能靠模型本身的准确性来保证。两者都出错时,后果可能很严重——一个错误的模型参数,可能让运放的开环增益仿真值偏离实际值 20 dB 以上,而设计者却毫无察觉。
本章讨论仿真环境配置、模型验证方法和收敛性问题处理。建议读者在开始本章之前,先完成第 9 章中至少一种工具的安装与基本操作练习。
10.1 仿真环境配置
10.1.1 工艺库的安装与路径设置
工艺库(PDK,Process Design Kit)是晶圆厂提供给设计者的模型集合。以台积电 28nm HPC 工艺为例,PDK 安装后通常包含以下目录结构:
tsmc28hpc/
├── models/
│ ├── spectre/ # Spectre 格式模型
│ ├── hspice/ # HSPICE 格式模型
│ └── eldo/ # Eldo 格式模型
├── pcell/ # 参数化单元
├── drc/ # 设计规则检查文件
├── lvs/ # 版图与原理图一致性检查文件
└── tech/ # 工艺技术文件
在 Cadence ADE 环境中,需要将 PDK 的路径添加到 cds.lib 文件中。典型的配置如下:
INCLUDE $PDK_DIR/cadence/cds.lib
DEFINE tsmc28hpc $PDK_DIR/cadence/tsmc28hpc
设置完成后,在 Library Manager 中应能看到工艺库及其关联的模型文件。路径含中文或空格会导致模型加载失败,报错信息往往不直观,排查起来很费时间。建议安装路径全部使用英文字符。
10.1.2 模型文件格式与选择
同一工艺,晶圆厂会提供多种格式的模型文件。选择哪种格式,取决于仿真器。Spectre 格式模型使用 Verilog-A 语法,HSPICE 格式使用 Berkeley SPICE 语法。两者的数值精度没有本质差别,但语法细节不同——例如,HSPICE 中 MOSFET 的沟道长度用 L 表示,Spectre 中同样用 L,但单位默认不同。Spectre 默认使用国际单位制(米),HSPICE 默认使用微米。一个疏忽就可能让器件尺寸差了六个数量级。
模型文件的开头通常有一段注释,说明模型的版本、适用范围和已知问题。这段注释值得仔细读一遍。以 BSIM4 模型为例,模型文件头部会写明:
* BSIM4.8.0 Model for TSMC 28nm HPC
* Valid for W > 0.2um, L > 0.027um
* Temperature range: -40C to 125C
这段信息直接告诉你模型的适用范围。超出范围使用模型,仿真结果可能不收敛,或者更糟——收敛但结果完全错误。比如把沟道长度设到 0.01um,低于模型验证的最小值,仿真器照样能跑出结果,但那个结果没有任何物理意义。
图1:MOS管计算机仿真模型
10.1.3 工艺角与温度设置
工艺角(Process Corner)描述制造过程中的偏差。典型设置包括 TT(典型 NMOS/典型 PMOS)、SS(慢 NMOS/慢 PMOS)、FF(快 NMOS/快 PMOS)、SF 和 FS。在 28nm 及以下节点,还需要考虑电压和温度的组合,形成所谓的 PVT 矩阵。
在 ADE 中设置工艺角的操作路径为:Setup → Model Libraries,在弹出的对话框中勾选对应的工艺角文件。图 2 展示了工艺库模型信息和工艺角的设置界面。
图2:设置工艺库模型信息和工艺角
温度设置同样关键。模拟电路的性能随温度变化显著——基准电压源的温漂系数、运放的失调电压、功率放大器的效率,都直接受温度影响。工业级芯片的工作温度范围是 -40°C 到 125°C,设计者至少应在这两个极端温度和 27°C 室温下分别仿真。如果只做 27°C 的仿真就交付,到了客户手里很可能会出问题。
10.1.4 仿真器选项与精度控制
仿真器提供多种精度选项,本质是数值计算中的误差控制参数。Spectre 中的 reltol(相对误差容限)默认值为 \(10^{-3}\),即允许仿真结果有 0.1% 的相对误差。对于大多数模拟电路,这个精度足够。但若仿真高增益电路(如开环增益超过 80 dB 的运放),建议将 reltol 收紧到 \(10^{-4}\) 或更小。
精度与仿真时间是一对矛盾。图 3 展示了语言精度与仿真速度之间的权衡关系。
图3:描述语言的精度与仿真速度(上图摘自Cadence用户手册)
实际工程中,建议按以下原则设置精度参数:
- 初步验证阶段:使用默认精度,快速获得结果
- 关键指标仿真(如增益、带宽、噪声):收紧
reltol至 \(10^{-4}\) - 最终签核仿真:使用
conservative模式,并开启所有二阶效应选项
10.2 模型验证方法
模型验证的目的是确认仿真器中的模型行为与器件物理特性一致。这一步不能省——模型文件可能损坏、版本不匹配、或者参数被误修改。一个可靠的验证流程,能在问题影响设计之前将其暴露。
10.2.1 DC 验证
DC 验证检查器件在直流工作点下的行为。最基本的测试是 MOSFET 的输出特性曲线:固定栅压,扫描漏压,观察漏电流的变化。
以 NMOS 为例,验证步骤如下:
- 搭建单管测试电路,栅极接固定电压,漏极接直流扫描源
- 设置 \(V_{GS}\) 分别为 0.6V、0.8V、1.0V(对 28nm 工艺,阈值电压约 0.35V)
- 扫描 \(V_{DS}\) 从 0 到 1.8V
- 检查饱和区电流是否与模型手册中的典型值一致
饱和区电流的理论表达式为:
将仿真得到的 \(I_D\) 代入上式,可以反推出 \(\mu_n C_{ox}\) 和 \(V_{TH}\),与模型手册对比。偏差超过 5% 时,应检查模型文件是否加载正确。
DC 验证还应包括漏电流测试。在 28nm 及以下节点,亚阈值漏电和栅极漏电不可忽略。将一个最小尺寸 NMOS 的栅压设为 0V,漏压设为 VDD,测量漏电流。若仿真值比模型手册标注值大一个数量级以上,说明模型文件可能混入了错误的版本。
10.2.2 AC 验证
AC 验证检查器件的小信号行为。核心指标是跨导 \(g_m\) 和输出电阻 \(r_{ds}\)。
\(g_m\) 的仿真方法:在饱和区偏置下,给栅极加一个 1V 的交流小信号,测量漏极交流电流,则 \(g_m = i_d / v_{gs}\)。理论值为:
\(r_{ds}\) 的仿真方法:在漏极加交流小信号,测量漏极电流变化,则 \(r_{ds} = v_{ds} / i_d\)。理论值为 \(r_{ds} = 1/(\lambda I_D)\)。
将仿真值与理论值对比,偏差应在 10% 以内。若偏差较大,检查沟道长度调制参数 \(\lambda\) 是否设置正确。
AC 验证还应包括电容特性。在 28nm 节点,栅电容 \(C_{gg}\) 的仿真值与模型手册的典型值偏差不应超过 5%。栅电容直接影响运放的带宽,这个参数的准确性至关重要。
10.2.3 瞬态验证
瞬态验证检查器件在时域信号下的行为。最简单的测试是开关特性:给栅极加一个方波脉冲,观察漏极电流的上升和下降时间。
瞬态验证的另一个重要内容是电荷守恒。在 Spectre 中,可以通过设置 cmin 选项来避免因数值截断导致的电荷不守恒问题。cmin 的典型值为 \(10^{-18}\) F,过大的 cmin 会引入额外电容,影响仿真精度。
图4:瞬态仿真设置
图 5 展示了 ADE 中 tran 瞬态仿真的具体设置界面。
图5:"tran"瞬态仿真设置
10.2.4 模型参数核对
模型文件中的参数数量庞大——BSIM4 模型有超过 200 个参数。设计者不需要逐一核对,但应重点检查以下几类:
- 阈值电压相关参数(VTH0、K1、K2)
- 迁移率相关参数(U0、UA、UB)
- 饱和速度相关参数(VSAT)
- 漏电相关参数(CIT、CDSC)
这些参数直接决定器件的核心行为。将模型文件中的参数值与模型手册对比,确认没有明显的抄录错误。图 6 展示了描述一个 MOSFET 参数特性的仿真文件示意。
图6:描述一个MOSFET参数特性的仿真文件示意
10.3 收敛性问题
收敛性是模拟仿真中最令人头疼的问题。仿真器不收敛,意味着数值求解过程无法找到满足电路方程的解。这不一定是电路有问题,也可能是仿真器设置不当。
10.3.1 不收敛的表现与原因
Spectre 报错信息通常包含 "Convergence problem" 或 "Failed to converge" 字样。HSPICE 的报错信息类似。常见原因包括:
电路层面:
- 浮空节点:某个节点没有直流通路到地或电源
- 电压源直接并联电容:导致奇异矩阵
- 理想电感串联电流源:同样导致奇异矩阵
- 高增益环路:正反馈环路增益大于 1,无法收敛到稳定工作点
模型层面:
- 器件工作在模型适用范围之外(如 \(V_{DS}\) 超过击穿电压)
- 模型参数不连续,导致导数突变
- 二极管或 BJT 的指数特性在高压下数值溢出
数值层面:
- 初始猜测值离真实解太远
- 步长控制不当,导致振荡
- 误差容限设置过严,无法满足
10.3.2 解决策略
解决收敛问题的策略,按优先级排列:
第一步:简化电路。 将电路拆成子模块分别仿真,定位不收敛的模块。这是最有效的方法。一个包含 1000 个器件的电路不收敛,定位问题比盲目调整仿真器参数更有意义。
第二步:调整初始条件。 在 Spectre 中使用 nodeset 命令,为关键节点指定初始电压。例如:
nodeset V(out)=0.9 V(gate)=0.6
对于运放电路,将输出节点初始化为电源电压的一半,往往能显著改善收敛性。
第三步:放宽误差容限。 将 reltol 从 \(10^{-3}\) 放宽到 \(10^{-2}\),abstol 从 \(10^{-12}\) 放宽到 \(10^{-10}\)。这种方法有效,但会降低精度,只适合作为临时手段。
第四步:增加迭代次数。 将 itl1(DC 迭代上限)从默认的 100 增加到 1000。在 HSPICE 中,使用 .option itl1=1000。
第五步:改变算法。 Spectre 提供多种非线性求解算法,如 Newton-Raphson、Homotopy 等。Homotopy 算法通过逐步改变电路参数来逼近解,在强非线性电路中效果显著。
10.3.3 瞬态仿真中的收敛问题
瞬态仿真的收敛问题与 DC 不同。DC 不收敛是求解静态工作点失败,瞬态不收敛通常发生在信号跳变沿——此时 \(dv/dt\) 很大,数值积分需要很小的步长。
解决瞬态收敛问题的方法:
- 减小最大步长(
tstep或maxstep),强制仿真器在信号快速变化时加密采样点 - 使用
gear2或trap积分方法替代默认的euler - 在信号源上增加有限的上升/下降时间,避免理想的阶跃信号
一个典型的例子:给运放输入端加一个上升时间为 1ps 的阶跃信号,仿真器在跳变沿处可能需要步长小于 0.1ps 才能收敛。将上升时间改为 100ps,仿真时间可能缩短一个数量级,且结果差异在 1% 以内。
图7:瞬态仿真设置激励
10.3.4 收敛性诊断流程
当遇到收敛问题时,按以下流程诊断:
flowchart TD
A[仿真不收敛] --> B{报错信息指向?}
B -->|浮空节点| C[检查电路连接<br/>查找悬空节点]
B -->|奇异矩阵| D[检查电压源/电感<br/>并联/串联结构]
B -->|迭代超限| E[调整初始条件<br/>放宽误差容限]
B -->|其他| F[简化电路<br/>逐模块定位]
C --> G[修复电路连接]
D --> G
E --> H{是否收敛?}
F --> H
G --> H
H -->|是| I[恢复正常仿真]
H -->|否| J[尝试Homotopy算法<br/>或更换仿真器]
J --> K{是否收敛?}
K -->|是| I
K -->|否| L[检查模型参数<br/>是否超出适用范围]
L --> I
这个流程的核心思想是:从电路本身开始排查,再调整仿真器设置,最后才怀疑模型。大多数收敛问题源于电路连接错误或仿真器设置不当,真正由模型引起的问题占比不到 10%。
10.3.5 蒙特卡罗分析中的收敛问题
蒙特卡罗分析需要运行数百次仿真,每次使用不同的工艺参数。某些参数组合可能导致电路无法收敛——例如,FF 工艺角下,反馈环路的相位裕度可能变为负值,导致瞬态仿真发散。
应对策略:
- 在蒙特卡罗分析前,先运行工艺角扫描,确认所有极端组合下电路都能正常工作
- 为瞬态仿真设置合理的
maxstep,避免因步长过大导致的虚假振荡 - 对不收敛的样本,记录其工艺参数组合,分析是否有规律
图 8 展示了 ADE 中基于工艺参数的统计性分析仿真流程。
图8:在ADE中,仿真器根据工艺库提供的工艺和失配参数的高斯分布,对一个电路参数进行不同的统计性分析仿真。当仿真结束后,可以利用ADE的数据分析器分析工艺参数变化对所设计电路良率的影响,并及时进行改进,提高…
10.4 模型验证的工程实践
10.4.1 验证流程的建立
建议读者为每个新工艺建立一套标准的模型验证流程,包含以下内容:
- 单管 DC 特性测试(输出特性、转移特性)
- 单管 AC 特性测试(\(g_m\)、\(r_{ds}\)、\(C_{gg}\))
- 单管瞬态测试(开关时间、电荷注入)
- 基本电路验证(共源放大器增益、差分对失调)
将验证结果整理成文档,与模型手册对比。这套流程能发现模型文件路径错误、工艺角设置不当等问题。比如模型文件路径写错,DC 验证时漏电流会异常偏大;工艺角选错,饱和区电流会明显偏离手册值。这些错误在验证结果中都会暴露出来。
10.4.2 仿真与实测的偏差分析
即使模型验证通过,仿真结果与实测数据仍可能存在偏差。偏差来源包括:
- 模型本身的简化假设(BSIM4 对射频行为的建模精度有限)
- 版图寄生效应(互连电阻、电容)
- 测试环境差异(探针台接触电阻、测试板寄生)
以 65nm 工艺的运放为例,前仿真开环增益为 65 dB,后仿真(含寄生提取)为 62 dB,实测为 60 dB。寄生电容和电阻导致增益下降,符合预期。若实测值比前仿真高,则需要检查仿真设置是否有误——比如模型文件加载了错误的工艺角,或者电源电压设置与实际测试条件不一致。
10.5 本章小结
仿真设置的准确性直接影响设计结果的可靠性。本章讨论了三个层面的问题:
- 环境配置:工艺库、模型文件、工艺角、精度参数的设置方法
- 模型验证:DC、AC、瞬态三种验证方法的具体步骤和判断标准
- 收敛性处理:常见收敛问题的原因分析和解决策略
下一章将讨论直流工作点与静态分析的具体方法,包括工作点扫描、灵敏度分析和直流传输特性仿真。