这篇文章主要整理我在学习 SPICE 仿真过程中的基础知识,包括网表写法、器件模型、常见分析命令以及波形结果的理解。前半部分是对 SPICE 语法和仿真思路的学习记录,后半部分再用一个 CMOS反相器瞬态仿真实验做简单验证,目的是把理论理解和实际操作对应起来。
一.电路分析(电流镜为负载的共源放大器):
1.基本电流镜
电流镜的基本思想是复制参考电流。参考管采用二极管连接,由参考电流建立栅源电压。由于两管工艺参数和栅源电压相同,相除可得 `IOUT / IREF = (W/L)2 / (W/L)1`。因此,器件尺寸之比等于工作电流与参考电流之比;若两管对称,则 `IOUT = IREF`。电流镜常用于给后续支路提供稳定的偏置电流标准。


2.电路结构
网表核心部分是:
M1 2 1 0 0 MOSN w=5u l=1.0u
M2 2 3 4 4 MOSP w=5u l=1.0u
M3 3 3 4 4 MOSP w=5u l=1.0u
R1 3 0 100K
Vdd 4 0 DC 5.0


二.程序一:DC 分析
Vin 1 0 DC 5.0
.op
.dc vin 0 5 0.1
.plot dc V(2)
.probe
该 DC 程序用于得到放大器的直流传输特性。由于 M1 为共源放大管、M2 为 PMOS 有源负载,因此电路表现为反相特性:输入电压增大时,M1 导通增强,输出电压从高电平逐渐下降到低电平。


三.程序二:AC 分析
CL 2 0 5p
Vin 1 0 DC 1.07 AC 1.0
.op
.ac DEC 20 100 100MEG
.plot ac VDB(2) VP(2)
.probe
AC 分析是在直流工作点附近进行的小信号频率响应分析。通过设置输入源的 DC 偏置与 AC 小信号幅值,并用 .ac 命令扫频,可以得到输出增益和相位随频率变化的曲线。低频增益较大,高频由于电容效应增益下降。


说明:
1.Vin 1 0 DC 1.07 sine(2v 2v 100KHz)
(1).这个"1V"不是说真实电路真的在 1.07V 附近上下摆 1V 还保持线性,而是说 在线性化后的"小信号模型"里,把输入信号幅值规定成 1,方便直接读增益。
SPICE 做了两件事:
第一步:求静态工作点
先用 DC 1.07 求出:每个 MOS 的 𝐼𝐷,每个 MOS 的 𝑉𝐺𝑆,电路各节点静态电压
第二步:在该工作点建立"小信号等效模型"
比如对 MOS 管,SPICE 会把它换成:跨导源:𝑔𝑚,𝑣𝑔𝑠,输出电阻:𝑟𝑜,小信号结电容、寄生电容(如果模型里考虑)这时整个电路变成一个线性电路。所以 .ac 分析的本质不是在原非线性曲线上跑大信号,而是:在工作点对应的小信号等效电路上做频域分析。
(2).小信号等效模型,像模电里的三极管等效电路,随便找个图:

(3).ac 理解:求导后再算频响,像电路里的非线性电阻小信号法,。

2.ac DEC 20 100 100MEG
(1)DEC,对数坐标
如果用线性扫频:100Hz 到 100MHz,低频部分会全挤在左边,根本看不清截止频率附近的变化规律,而对数扫频有两个好处:
好处1:宽频范围好画
100Hz~100MHz 跨很多数量级,对数坐标最自然。
好处2:波特图规律清楚
(2)DEC

3..plot ac VDB(2) VP(2)
(1)AC 1.0 ------则直接把输出看成频率响应。

(2)AC analysis ------H(jω)

(3)AC本质------一阶低通反相放大器

四.程序三:TRAN 瞬态分析
Vin 1 0 DC 1.07 sine(2v 2v 100KHz)
.op
.tran .1u 10u
.plot tran V(2) V(1)
.probe
TRAN 分析用于观察电路的时域响应。通过给输入端施加正弦信号,并使用 .tran 命令设定仿真时间范围,可以同时观察输入与输出波形。由于该电路是反相结构,并且输入摆幅较大,输出会出现明显非线性甚至近似翻转的现象。


五.实验-用 Tanner 做一个 CMOS 反相器的瞬态验证
实验软件是 Tanner 里的 S-Edit + T-Spice,它就是 SPICE 体系在集成电路设计里的具体工具。
-
S-Edit 是画电路图的工具。你在里面把晶体管、电阻、电源、输入源摆出来,再给它连线、标节点。
-
T-Spice 是真正做仿真计算的引擎。它会读 S-Edit 导出的网表,然后根据网表和模型库计算输出。
-
和 SPICE 是什么关系
SPICE 是一类电路仿真方法/语言/思想;T-Spice 是这类方法的一个具体实现。你可以直接理解成:
- SPICE = 规则和语言
- T-Spice = 按这套规则跑计算的程序
4.S-Edit 是画电路和导网表的前端,T-Spice 是执行 SPICE 仿真的引擎。实验课就是利用这套工具,把电路图转换成网表,再通过仿真验证它的时域或频域行为。
画电路:

导出 SPICE 网表:

打开 T-Spice-加仿真命令-1. 加 VDD 电源(恒定电压)-2. 加 IN 输入脉冲-3. 加瞬态仿真命令-4. 加输出打印:

生成命令代码:
* SPICE netlist written by S-Edit Win32 7.03
* Written on May 29, 2026 at 13:46:19
* Waveform probing commands
.probe
.options probefilename="D:\TannerWork\inv\inv.dat"
+ probesdbfile="D:\TannerWork\inv\inv.sdb"
+ probetopmodule="Module0"
.include "D:\Tanner\TSpice70\models\ml2_125.md"
vvdd Vdd Gnd 5
Vin IN Gnd PULSE (0 5 5n 1n 1n 50n 100n)
.tran/op 10n 200n method=bdf
.print tran v(IN) v(OUT)
* Main circuit: Module0
M1 OUT IN Gnd Gnd NMOS L=2u W=22u AD=66p PD=24u AS=66p PS=24u
M2 OUT IN Vdd Vdd PMOS L=2u W=22u AD=66p PD=24u AS=66p PS=24u
* End of main circuit: Module0
.end
网表详解:


反相器仿真结果:

从仿真结果可以看出,输入信号翻转时,输出端能够实现明显的反相响应,说明 CMOS 反相器的基本逻辑功能正确。输出波形在边沿处存在一定延迟和过渡过程,这与 MOS 管导通/截止切换以及器件寄生参数有关,也说明实际电路并非理想开关模型。