3、仿真前的准备工作:PDK模型选择、仿真器设置(Spectre/HSPICE)、DC工作点分析基础
说实话,很多新手工程师拿到运放电路,上来就点仿真按钮。结果跑出来一堆奇怪的数据,也不知道对不对。我当年也犯过这个错——浪费了整整两天,最后发现是PDK模型选错了。
嗯,仿真前的准备工作,其实比仿真本身更重要。就像盖房子打地基,地基歪了,上面盖得再漂亮也没用。这一章,我们就聊聊仿真前必须做好的三件事。
3.1 PDK模型选择:别小看这一步
PDK(Process Design Kit)是代工厂提供的工艺套件。里面包含了各种器件的模型参数。你想想看,如果模型选错了,仿真结果跟实际芯片的差距可能大到离谱。
我曾经踩过的坑: 有一次做低功耗运放,仿真时偏置电流只有1nA,觉得完美。结果流片回来一测,实际偏置电流是50nA。查了三天,最后发现是用了tt(典型)模型,但实际工艺角是ff(快)模型。从那以后,我每次仿真前都会再三确认模型选择。
3.1.1 常见的模型类型
代工厂通常会提供以下几种模型,你得根据仿真目的来选:
| 模型类型 | 描述 | 适用场景 |
|---|---|---|
| tt (typical-typical) | 典型工艺角,NMOS和PMOS都是典型值 | 功能验证、典型性能评估 |
| ff (fast-fast) | 快工艺角,器件速度快、阈值电压低 | 评估最高速度、最小延迟 |
| ss (slow-slow) | 慢工艺角,器件速度慢、阈值电压高 | 评估最差速度、最大延迟 |
| fs / sf | 混合工艺角,NMOS和PMOS速度不一致 | 评估失配影响、特殊场景 |
| mc (Monte Carlo) | 统计模型,包含随机失配 | 良率分析、失配仿真 |
我个人习惯,在做偏置电流仿真时,至少跑三个工艺角:tt、ff、ss。如果时间允许,再加上fs和sf。这样能覆盖大部分工艺波动情况。
小技巧: 在Spectre中,可以通过
model 语句选择模型。比如 model nmos_tt nmos 就指定了使用tt模型的NMOS。记得在仿真脚本或ADE环境中明确指定。
3.2 仿真器设置:Spectre vs HSPICE
现在主流模拟仿真器就两个:Cadence的Spectre和Synopsys的HSPICE。两者功能差不多,但细节上有差异。我两个都用过,说实话,各有千秋。
3.2.1 Spectre设置要点
如果你用Spectre,有几点要注意:
- 仿真精度: 默认的
trap算法对偏置电流仿真够用。但如果遇到收敛问题,可以试试gear2或euler。 - 相对容差(reltol): 默认1e-3。对于偏置电流这种小信号,我建议设到1e-4或更小。不然电流误差可能大到无法接受。
- 绝对电流容差(iabstol): 默认1e-12。如果偏置电流在pA级别,这个值太大了。我一般设到1e-15。
- DC仿真选项: 记得勾选
Save DC Operating Point,不然你看不到工作点信息。
// Spectre netlist 示例
simulator lang=spectre
global 0 vdd
// 模型路径
include "path/to/pdk/models.scs" section=tt
// 电路网表
M1 (d g s b) nmos w=1u l=0.18u
// 仿真设置
dc dc dev=vdd param=dc start=0 stop=3.3 step=0.1
options reltol=1e-4 iabstol=1e-15 vabstol=1e-6
save M1:all
3.2.2 HSPICE设置要点
HSPICE的设置思路类似,但语法不同:
- 精度控制: 用
.OPTIONS POST=2 PROBE开启输出。用.OPTIONS RELTOL=1e-4 ABSTOL=1e-15控制精度。 - 收敛辅助: 如果仿真不收敛,可以加
.OPTIONS GMINDC=1e-12或.OPTIONS ITL1=500。 - 模型选择: 在
.LIB语句中指定工艺角。比如.LIB 'path/model.lib' TT。
// HSPICE netlist 示例
.TITLE "Opamp Bias Current Simulation"
.OPTIONS POST=2 PROBE
.OPTIONS RELTOL=1e-4 ABSTOL=1e-15
.LIB 'path/model.lib' TT
M1 d g s b nmos W=1u L=0.18u
.DC VDD 0 3.3 0.1
.PROBE DC I(M1)
.END
我的建议: 如果你刚开始学,用Spectre就好。图形界面友好,调试方便。HSPICE更适合跑大批量仿真或做corner分析。但不管用哪个,精度设置一定要手动调,别用默认值。
3.3 DC工作点分析基础
DC工作点分析,说白了就是看电路在静态下各个节点的电压和电流。这是所有仿真的基础。你想想看,如果DC工作点都不对,AC、瞬态仿真结果能对吗?
3.3.1 为什么要做DC工作点分析?
我遇到过不少工程师,直接跳过DC分析去跑AC。结果AC增益算出来100dB,高兴得不行。后来一查,管子都工作在线性区了。嗯,这种错误其实很常见。
DC工作点分析能告诉你:
- 每个MOS管工作在哪个区(饱和、线性、截止)
- 偏置电流的实际值是多少
- 节点电压是否合理
- 功耗是否超标
3.3.2 关键参数怎么看?
对于运放偏置电流仿真,我重点关注这几个参数:
| 参数 | 含义 | 正常范围 |
|---|---|---|
| VGS | 栅源电压 | 通常 > VTH,且 < VDD |
| VDS | 漏源电压 | 饱和区要求 VDS > VGS - VTH |
| ID | 漏极电流 | 与设计值偏差 < 10% |
| gm | 跨导 | 与设计值一致 |
| VDSAT | 饱和电压 (VGS - VTH) | 通常 100mV ~ 300mV |
3.3.3 实操步骤
我个人习惯的DC分析流程是这样的:
- 设置电源电压: 从0V开始扫描到额定值。这样能看到电路是怎么启动的。
- 检查所有MOS管的工作区: 用计算器或脚本检查每个管子的
VDS > VGS - VTH。如果发现线性区的管子,先标记出来。 - 对比偏置电流: 把仿真得到的偏置电流跟设计值对比。偏差超过10%就要查原因。
- 检查节点电压: 重点关注运放输入端的共模电压、输出端的静态电压。
- 记录数据: 把关键工作点参数记录下来,方便后续对比。
避坑指南: 我曾经在DC分析时发现偏置电流只有设计值的一半。查了半天,发现是电流镜的宽长比写错了。所以,DC分析时一定要逐级检查电流,从偏置源开始,一级一级往下查。
3.4 本章知识体系
下面这张图总结了仿真前准备工作的核心逻辑:
嗯,准备工作做到位了,后面的仿真才能事半功倍。别嫌麻烦,这一步省下来的时间,后面会加倍还给你。