QuillSage
第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 assistant Guest
QuillSage Assistant
Answers your questions based on the help documentation — type a question to begin
Common questions
  • How do I create a new project?
  • How do I upload and manage resources?
  • How do I use the AI extraction feature?
  • How do I change my password?

Reconnecting to the server…

Reconnection failed. Retrying in seconds…

Reconnection failed.
Please retry or refresh the page.

The session was paused by the server.

Failed to resume the session.
Please retry or refresh the page.

An unhandled error has occurred. Reload 🗙