2. 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曲线族,用于统计评估工艺角下的直流性能分布。
直流分析(.DC)扫描流程 输入SPICE网表 设置.DC扫描 执行仿真 提取I-V数据 计算Vth/Gm 统计分布输出 说明:.DC分析通过扫描偏置电压,获得器件或电路的直流传输特性。 在蒙特卡洛流程中,每次迭代执行一次.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。
交流分析(.AC)频率响应计算 输入信号 Vin(ω) 线性化小信号模型 H(jω) = Vout / Vin 输出响应 Vout(ω) 输出结果:增益(dB) = 20·log|H(jω)|,相位(°) = ∠H(jω) 关键指标:-3dB带宽、单位增益带宽(GBW)、相位裕度(PM) 低频 中频(通带) 高频

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σ分布,用于良率预测。
瞬态分析(.TRAN)时序参数提取 输入激励 PULSE/STEP 瞬态仿真 微分方程求解 输出波形 Vout(t) 提取的时序参数: • tPLH / tPHL:低到高/高到低传播延迟 • tr / tf:上升时间(10%~90%)/ 下降时间(90%~10%) 蒙特卡洛循环:每次迭代执行.TRAN → 提取tPLH → 统计分布 → 计算Cpk/良率 典型迭代次数:200~1000次,取决于所需置信水平

2.5 三种分析对比与蒙特卡洛适配

分析类型 扫描变量 输出结果 蒙特卡洛用途 典型参数提取
.DC 直流电压/电流 I-V曲线、工作点 统计I-V特性分布 Vth、Gm、Rout
.AC 频率 增益、相位 vs 频率 统计频率响应分布 GBW、PM、fT
.TRAN 时间 电压/电流 vs 时间 统计时序参数分布 tPLH、tr、tf、tsetup
工程建议: 在蒙特卡洛参数提取中,建议先使用.DC分析提取直流参数,再用.AC分析验证小信号特性,最后用.TRAN分析评估时域性能。三种分析可共用同一组随机参数样本,确保参数提取的一致性。