第10章 仿真设置与模型验证

第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 为例,验证步骤如下:

  1. 搭建单管测试电路,栅极接固定电压,漏极接直流扫描源
  2. 设置 \(V_{GS}\) 分别为 0.6V、0.8V、1.0V(对 28nm 工艺,阈值电压约 0.35V)
  3. 扫描 \(V_{DS}\) 从 0 到 1.8V
  4. 检查饱和区电流是否与模型手册中的典型值一致

饱和区电流的理论表达式为:

\[ I_D = \frac{1}{2}\mu_n C_{ox} \frac{W}{L} (V_{GS} - V_{TH})^2 (1 + \lambda V_{DS}) \]

将仿真得到的 \(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}\)。理论值为:

\[ g_m = \sqrt{2\mu_n C_{ox} \frac{W}{L} I_D} \]

\(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 验证流程的建立

建议读者为每个新工艺建立一套标准的模型验证流程,包含以下内容:

  1. 单管 DC 特性测试(输出特性、转移特性)
  2. 单管 AC 特性测试(\(g_m\)、\(r_{ds}\)、\(C_{gg}\))
  3. 单管瞬态测试(开关时间、电荷注入)
  4. 基本电路验证(共源放大器增益、差分对失调)

将验证结果整理成文档,与模型手册对比。这套流程能发现模型文件路径错误、工艺角设置不当等问题。比如模型文件路径写错,DC 验证时漏电流会异常偏大;工艺角选错,饱和区电流会明显偏离手册值。这些错误在验证结果中都会暴露出来。

10.4.2 仿真与实测的偏差分析

即使模型验证通过,仿真结果与实测数据仍可能存在偏差。偏差来源包括:

  • 模型本身的简化假设(BSIM4 对射频行为的建模精度有限)
  • 版图寄生效应(互连电阻、电容)
  • 测试环境差异(探针台接触电阻、测试板寄生)

以 65nm 工艺的运放为例,前仿真开环增益为 65 dB,后仿真(含寄生提取)为 62 dB,实测为 60 dB。寄生电容和电阻导致增益下降,符合预期。若实测值比前仿真高,则需要检查仿真设置是否有误——比如模型文件加载了错误的工艺角,或者电源电压设置与实际测试条件不一致。

10.5 本章小结

仿真设置的准确性直接影响设计结果的可靠性。本章讨论了三个层面的问题:

  • 环境配置:工艺库、模型文件、工艺角、精度参数的设置方法
  • 模型验证:DC、AC、瞬态三种验证方法的具体步骤和判断标准
  • 收敛性处理:常见收敛问题的原因分析和解决策略

下一章将讨论直流工作点与静态分析的具体方法,包括工作点扫描、灵敏度分析和直流传输特性仿真。

AI 智能助手 访客
妙笔书生 智能助手
基于帮助文档回答您的问题,输入问题即可开始
常见问题
  • 如何创建新项目?
  • 如何上传和管理资料?
  • 如何使用 AI 提取功能?
  • 如何修改个人密码?

正在重新连接服务器…

重新连接失败,将在 秒后重试…

重新连接失败。
请重试或刷新页面。

会话已被服务器暂停。

恢复会话失败。
请重试或刷新页面。

发生未处理的错误。 重新加载 🗙