2. SPICE仿真基础回顾:SPICE网表结构、直流分析、交流分析与瞬态分析
SPICE(Simulation Program with Integrated Circuit Emphasis)是集成电路设计领域最核心的仿真工具。在蒙特卡洛参数提取中,SPICE作为底层仿真引擎,负责执行成千上万次带随机扰动的电路仿真。理解SPICE网表结构与三大基本分析类型,是构建蒙特卡洛仿真流程的前提。
2.1 SPICE网表结构
SPICE网表(Netlist)是描述电路拓扑、元件参数与分析指令的文本文件。一个完整的SPICE网表由标题行、注释、元件语句、模型语句、分析语句与控制语句组成。
网表基本结构(以NMOS反相器为例):
* CMOS Inverter Netlist Example
* Title: Inverter for Monte Carlo Study
.SUBCKT INV A VDD VSS Y
M1 Y A VSS VSS NMOS W=1u L=0.18u
M2 Y A VDD VDD PMOS W=2u L=0.18u
.ENDS INV
X1 IN VDD VSS OUT INV
VDD VDD 0 DC 1.8V
VIN IN 0 DC 0V PULSE(0 1.8 0 10p 10p 50n 100n)
CLOAD OUT 0 50fF
.MODEL NMOS NMOS (VTO=0.5 KP=200e-6 ...)
.MODEL PMOS PMOS (VTO=-0.5 KP=80e-6 ...)
.DC VIN 0 1.8 0.01
.TRAN 0.1n 200n
.AC DEC 100 1k 10G
.PROBE
.END
网表编写要点: 第一行必须是标题行(以*开头为注释);元件名称首字母代表类型(R=电阻,C=电容,M=MOS管,Q=BJT);节点编号必须连续,0或GND为全局地节点。
网表核心元素对照表
| 元素类型 | 语法格式 | 示例 | 说明 |
|---|---|---|---|
| 电阻 | R<name> N+ N- <value> | R1 1 2 1k | 节点1到2,阻值1kΩ |
| 电容 | C<name> N+ N- <value> | C1 OUT 0 10pF | 输出端对地电容 |
| NMOS | M<name> D G S B <model> W= L= | M1 D G 0 0 NMOS W=1u L=0.18u | 漏、栅、源、衬底 |
| 独立电压源 | V<name> N+ N- DC <val> | VDD VDD 0 DC 1.8 | 直流电源 |
| 模型定义 | .MODEL <name> <type> (param=val ...) | .MODEL NMOS NMOS (VTO=0.5) | 定义器件模型参数 |
| 子电路 | .SUBCKT / .ENDS | .SUBCKT INV A VDD VSS Y | 封装重复电路块 |
2.2 直流分析(.DC)
直流分析用于计算电路在直流工作点下的节点电压与支路电流。在参数提取中,.DC分析常用于扫描偏置条件,提取阈值电压、跨导等直流参数。
语法格式:
.DC <src_name> <start> <stop> <step>
.DC VGS 0 2 0.05 ; 扫描VGS从0到2V,步长0.05V
.DC VDS 0 5 0.1 VGS 0 2 0.5 ; 嵌套扫描:内层VDS,外层VGS
典型用途:
- 提取MOS管的I-V特性曲线(Id-Vgs、Id-Vds)
- 确定电路直流工作点(Q点)
- 扫描工艺参数(如VTO、TOX)对直流特性的影响
蒙特卡洛结合: 在.DC分析中嵌入随机参数扰动,可生成一组I-V曲线族,用于统计评估工艺角下的直流性能分布。
2.3 交流分析(.AC)
交流分析用于计算电路在小信号激励下的频率响应。.AC分析将电路在直流工作点线性化,然后计算从输入到输出的增益、相位、输入/输出阻抗随频率的变化。
语法格式:
.AC <type> <points> <start_freq> <stop_freq>
.AC DEC 100 1k 10G ; 每十倍频100个点,1kHz~10GHz
.AC LIN 1000 0 100M ; 线性扫描1000个点,0~100MHz
.AC OCT 50 100 100k ; 每倍频程50个点,100Hz~100kHz
典型用途:
- 提取运放的开环增益、带宽、相位裕度
- 提取MOS管的截止频率fT
- 提取无源器件的自谐振频率
注意: .AC分析前必须指定直流工作点(通常通过.OP或.DC自动建立)。交流信号源需使用AC幅值参数,例如:VIN IN 0 AC 1。
2.4 瞬态分析(.TRAN)
瞬态分析用于计算电路在时域中的响应,即节点电压与支路电流随时间的变化。.TRAN分析是蒙特卡洛仿真中评估电路时序、建立时间、过冲等动态性能的主要手段。
语法格式:
.TRAN <step> <stop> [<start> [<max_step>]]
.TRAN 0.1n 200n ; 步长0.1ns,仿真到200ns
.TRAN 1p 1n 0 0.5p ; 从0开始,最大步长0.5ps,到1ns
.TRAN 10n 10u UIC ; 使用初始条件(UIC)
典型用途:
- 数字电路时序分析(传播延迟、上升/下降时间)
- 模拟电路建立时间、压摆率测量
- 电源上电/掉电序列仿真
蒙特卡洛应用: 在.TRAN分析中随机化器件模型参数(如VTO、TOX、CJ),可统计评估电路延迟的3σ分布,用于良率预测。
2.5 三种分析对比与蒙特卡洛适配
| 分析类型 | 扫描变量 | 输出结果 | 蒙特卡洛用途 | 典型参数提取 |
|---|---|---|---|---|
| .DC | 直流电压/电流 | I-V曲线、工作点 | 统计I-V特性分布 | Vth、Gm、Rout |
| .AC | 频率 | 增益、相位 vs 频率 | 统计频率响应分布 | GBW、PM、fT |
| .TRAN | 时间 | 电压/电流 vs 时间 | 统计时序参数分布 | tPLH、tr、tf、tsetup |
工程建议: 在蒙特卡洛参数提取中,建议先使用.DC分析提取直流参数,再用.AC分析验证小信号特性,最后用.TRAN分析评估时域性能。三种分析可共用同一组随机参数样本,确保参数提取的一致性。