3. 仿真工具入门:LTspice/Cadence Spectre噪声仿真设置

噪声仿真,说白了就是让EDA工具替我们算一遍电路里所有器件贡献的噪声功率。你手动算当然也行,但一个运放几十个管子,算到天亮也算不完。我刚开始做运放设计那会儿,就吃过这个亏——手算噪声以为没问题,流片回来测试发现底噪比预期高了3dB,查了半个月才发现是仿真设置里少勾了一个选项。

所以这一章,咱们把LTspice和Cadence Spectre这两个主流工具的噪声仿真设置彻底讲透。你跟着走一遍,以后就不会再踩我踩过的坑了。

3.1 AC分析与Noise分析:到底有什么区别?

很多新手会把AC分析和Noise分析搞混。我面试过不少候选人,问“你做过噪声仿真吗”,回答“做过,跑了个AC”。嗯,这俩其实完全不是一回事。

对比项 AC分析 Noise分析
目的 计算电路的频域传递函数(增益、相位) 计算电路输出端的噪声功率谱密度
输入激励 小信号正弦波(幅度、相位已知) 器件内部噪声源(热噪声、闪烁噪声等)
输出结果 Vout/Vin 的幅频/相频曲线 输出噪声电压谱密度 (V/√Hz) 或 输入参考噪声
是否依赖输入源 是,必须有AC激励源 否,噪声源来自器件本身
典型应用 增益带宽积、相位裕度、稳定性 信噪比、噪声系数、最小可检测信号

你想想看,AC分析看的是“信号怎么走”,Noise分析看的是“噪声怎么来”。两者经常配合使用——先跑AC确认增益,再跑Noise看噪声贡献。但千万别以为跑完AC就等于做了噪声仿真。

核心要点:Noise分析必须依赖AC分析的结果来计算噪声传递函数。所以大多数仿真器里,Noise分析是AC分析的一个附加选项——你跑Noise的时候,仿真器会自动先做一次AC扫描。

3.2 LTspice噪声仿真设置

LTspice是我个人非常喜欢的工具,免费、轻量、社区资源丰富。做运放噪声仿真,它完全够用。

3.2.1 基本设置步骤

  1. 搭建电路:画好运放原理图,加上输入源和负载。输入源用 V1 或 SINE 都行,但别忘了给AC幅度——哪怕你只跑Noise,LTspice也需要AC分析来算传递函数。
  2. 添加噪声分析指令:点击菜单 Simulate → Edit Simulation Cmd,选择 AC Analysis 标签页,设置扫描类型(通常用 Decade)、点数(100点/十倍频足够)、频率范围(比如1Hz到10MHz)。
  3. 勾选Noise分析:在同一个对话框里,找到 Noise Analysis 区域,勾选 Perform Noise Analysis。填写:
    • Output:输出节点名称,比如 V(out)
    • Input:输入源名称,比如 V1(用于计算输入参考噪声)
    • Points per summary:建议填1,这样每个频率点都输出详细噪声贡献
  4. 运行仿真:点击运行,等待仿真完成。

小技巧:我习惯在 Points per summary 里填10,这样仿真器会每10个频率点输出一次各器件噪声贡献的汇总,方便快速定位哪个器件是噪声大户。如果要做精细分析,再改回1。

3.2.2 查看噪声结果

仿真完成后,在波形查看器里右键点击,选择 Add Trace。你会看到几个关键变量:

  • V(onoise):输出噪声电压谱密度,单位 V/√Hz
  • V(inoise):输入参考噪声电压谱密度,单位 V/√Hz
  • V(inoise)^2:输入参考噪声功率谱密度,单位 V²/Hz

我个人最常用的是 V(inoise),因为它直接反映了运放自身的噪声性能,跟增益无关。你对比不同运放时,看输入参考噪声就够了。

3.2.3 查看各器件噪声贡献

LTspice有个很实用的功能——噪声贡献列表。仿真完成后,打开 View → SPICE Error Log,你会看到类似这样的输出:

--- Noise Analysis ---
Total output noise: 1.234e-08 V/√Hz
Total input noise: 2.456e-09 V/√Hz

Device Noise Contributions:
  R1: 45.2%
  M1: 22.1%
  M2: 18.5%
  R2: 8.7%
  M3: 5.5%

这个列表太有用了。我曾经做一个低噪声运放,仿真发现总噪声比指标高了30%,一看贡献列表,R1占了45%。换成金属膜电阻,噪声直接降了一半。

3.3 Cadence Spectre噪声仿真设置

Cadence Spectre是工业级工具,设置比LTspice复杂一些,但功能也更强大。我平时做量产项目都用它。

3.3.1 基本设置步骤

  1. 搭建电路:在ADE L或ADE XL里打开原理图,确认所有器件模型都正确。特别注意电阻模型——有些PDK里的电阻默认不带噪声参数,需要手动开启。
  2. 选择分析类型:在 Analyses 窗口里,选择 ac 分析。设置扫描类型(logarithmic)、范围(比如1Hz到10MHz)、点数(100)。
  3. 启用噪声分析:在同一个 ac 分析设置里,找到 Noise 标签页。勾选 Enable noise analysis,然后填写:
    • Output noise:选择输出节点,比如 /out
    • Input noise:选择输入源的正负端,比如 /vinp 和 /vinn
    • Reference source:选择输入源名称,比如 V1
  4. 设置噪声参数:点击 Options 按钮,进入 Noise 选项页。这里有几个关键参数需要配置(见下表)。
  5. 运行仿真:点击 Netlist and Run,等待仿真完成。

3.3.2 噪声参数配置详解

Spectre的噪声参数配置比LTspice细致得多。我刚开始用的时候也被一堆选项搞晕过。下面这张表是我总结的常用参数:

参数名 默认值 推荐值 说明
noisefmin 1 Hz 0.01 Hz 或更低 最低仿真频率。如果关心1/f噪声,建议设到0.01Hz以下
noisefmax 与AC扫描上限相同 保持默认 最高仿真频率,通常与AC扫描上限一致
noisefreq 100 100~1000 噪声计算频率点数。点数越多越精确,但仿真时间也越长
noisefilter none none 噪声滤波选项。一般保持none,除非有特殊需求
noise_include_flicker yes yes 是否包含闪烁噪声。必须开启,否则低频噪声结果不准
noise_include_thermal yes yes 是否包含热噪声。必须开启
noise_include_shot yes yes 是否包含散粒噪声。二极管和BJT需要开启,MOS管通常影响不大

注意:我曾经在做一个超低噪声运放时,仿真结果比实测低了2dB,查了三天才发现是 noisefmin 设成了1Hz,而我的应用关心的是0.1Hz附近的噪声。把 noisefmin 改到0.01Hz后,仿真和实测就吻合了。低频噪声仿真,频率下限一定要设够低。

3.3.3 查看噪声结果

仿真完成后,在 Results → Direct Plot → Main Form 里选择 Noise,你可以直接画出:

  • 输出噪声谱密度:单位 V/√Hz
  • 输入参考噪声谱密度:单位 V/√Hz
  • 各器件噪声贡献饼图:Spectre可以自动生成饼图,直观显示每个器件的噪声占比

我个人习惯先看输入参考噪声曲线,确认整体形状对不对——低频段应该呈现1/f噪声的上升趋势,高频段应该是平坦的白噪声。如果曲线形状异常,说明电路或仿真设置有误。

3.4 两种工具的噪声参数配置对比

LTspice和Spectre的噪声参数配置思路基本一致,但细节上有差异。我整理了一个对比表,方便你切换工具时参考:

配置项 LTspice Cadence Spectre
频率范围设置 在AC分析中设置,Noise自动继承 在AC分析中设置,Noise自动继承,但可单独设noisefmin/noisefmax
输出节点指定 在Noise分析对话框中填写 在ac分析的Noise标签页中填写
输入参考源指定 填写输入源名称(如V1) 填写输入源名称,同时指定正负端
闪烁噪声开关 默认开启,无法单独关闭 通过noise_include_flicker参数控制
热噪声开关 默认开启,无法单独关闭 通过noise_include_thermal参数控制
各器件贡献查看 Error Log中查看百分比 Direct Plot中查看饼图或列表
噪声频率点数 与AC扫描点数相同 可单独设置noisefreq参数

3.5 噪声仿真流程总览

下面这张图是我自己总结的噪声仿真标准流程,每次做新项目都按这个走一遍,基本不会漏东西。

噪声仿真标准流程图 噪声仿真标准流程 1. 搭建电路原理图 2. 设置AC分析参数 3. 启用Noise分析 4. 配置噪声参数 5. 运行仿真 6. 查看噪声结果 关键参数检查清单 □ 频率范围是否覆盖关注频段? □ 输出节点是否正确指定? □ 输入参考源是否正确? □ 闪烁噪声是否开启? □ 频率点数是否足够?

3.6 常见问题与避坑指南

做噪声仿真这么多年,我踩过的坑不少。挑几个最常见的分享给你:

  • 仿真结果与实测不符:先检查模型。我曾经遇到过PDK里电阻的闪烁噪声模型参数是0,仿真结果当然不准。换成带噪声参数的模型就好了。
  • 低频噪声曲线异常:大概率是 noisefmin 设得太高,或者闪烁噪声没开启。把频率下限降到0.01Hz以下,确认 noise_include_flicker 是yes。
  • 高频噪声曲线不平坦:可能是仿真频率点数不够。增加 noisefreq 或AC扫描点数,让曲线更平滑。
  • 总噪声比预期大很多:打开各器件贡献列表,看看哪个器件是噪声大户。通常电阻和输入对管是主要贡献者。

我的习惯:每次做噪声仿真前,我都会先跑一个简单的测试电路——一个电阻分压器,理论热噪声密度是 √(4kTR)。如果仿真结果跟理论值对不上,说明工具设置或模型有问题,先排查再继续。这个习惯帮我省了不少排查时间。