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 基本设置步骤
- 搭建电路:画好运放原理图,加上输入源和负载。输入源用
V1或SINE都行,但别忘了给AC幅度——哪怕你只跑Noise,LTspice也需要AC分析来算传递函数。 - 添加噪声分析指令:点击菜单
Simulate → Edit Simulation Cmd,选择AC Analysis标签页,设置扫描类型(通常用Decade)、点数(100点/十倍频足够)、频率范围(比如1Hz到10MHz)。 - 勾选Noise分析:在同一个对话框里,找到
Noise Analysis区域,勾选Perform Noise Analysis。填写:- Output:输出节点名称,比如
V(out) - Input:输入源名称,比如
V1(用于计算输入参考噪声) - Points per summary:建议填1,这样每个频率点都输出详细噪声贡献
- Output:输出节点名称,比如
- 运行仿真:点击运行,等待仿真完成。
小技巧:我习惯在 Points per summary 里填10,这样仿真器会每10个频率点输出一次各器件噪声贡献的汇总,方便快速定位哪个器件是噪声大户。如果要做精细分析,再改回1。
3.2.2 查看噪声结果
仿真完成后,在波形查看器里右键点击,选择 Add Trace。你会看到几个关键变量:
V(onoise):输出噪声电压谱密度,单位 V/√HzV(inoise):输入参考噪声电压谱密度,单位 V/√HzV(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 基本设置步骤
- 搭建电路:在ADE L或ADE XL里打开原理图,确认所有器件模型都正确。特别注意电阻模型——有些PDK里的电阻默认不带噪声参数,需要手动开启。
- 选择分析类型:在
Analyses窗口里,选择ac分析。设置扫描类型(logarithmic)、范围(比如1Hz到10MHz)、点数(100)。 - 启用噪声分析:在同一个
ac分析设置里,找到Noise标签页。勾选Enable noise analysis,然后填写:- Output noise:选择输出节点,比如
/out - Input noise:选择输入源的正负端,比如
/vinp和/vinn - Reference source:选择输入源名称,比如
V1
- Output noise:选择输出节点,比如
- 设置噪声参数:点击
Options按钮,进入Noise选项页。这里有几个关键参数需要配置(见下表)。 - 运行仿真:点击
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 噪声仿真流程总览
下面这张图是我自己总结的噪声仿真标准流程,每次做新项目都按这个走一遍,基本不会漏东西。
3.6 常见问题与避坑指南
做噪声仿真这么多年,我踩过的坑不少。挑几个最常见的分享给你:
- 仿真结果与实测不符:先检查模型。我曾经遇到过PDK里电阻的闪烁噪声模型参数是0,仿真结果当然不准。换成带噪声参数的模型就好了。
- 低频噪声曲线异常:大概率是
noisefmin设得太高,或者闪烁噪声没开启。把频率下限降到0.01Hz以下,确认noise_include_flicker是yes。 - 高频噪声曲线不平坦:可能是仿真频率点数不够。增加
noisefreq或AC扫描点数,让曲线更平滑。 - 总噪声比预期大很多:打开各器件贡献列表,看看哪个器件是噪声大户。通常电阻和输入对管是主要贡献者。
我的习惯:每次做噪声仿真前,我都会先跑一个简单的测试电路——一个电阻分压器,理论热噪声密度是 √(4kTR)。如果仿真结果跟理论值对不上,说明工具设置或模型有问题,先排查再继续。这个习惯帮我省了不少排查时间。