下面我将系统地介绍 HSPICE 命令,从基本结构到常用命令,并提供一个完整的示例。

HSPICE 的基本结构
一个标准的 HSPICE 网表(Netlist)通常包含以下几个部分:
- 标题行:网表的第一行,可以是任意文本,用于描述电路。
- 电路元件定义:定义电路中的所有元器件(如电阻、电容、晶体管、电压源等)。
- 分析命令:定义要进行何种仿真分析(如直流扫描、交流分析、瞬态分析等)。
- 输出/绘图命令:指定需要输出的变量和绘图命令。
- 结束命令:
.END,标志着网表的结束。
常用 HSPICE 命令详解
分析命令
这是仿真的核心,告诉 HSPICE 如何运行仿真。
| 命令 | 全称 | 功能 | 示例 |
|---|---|---|---|
.OP |
Operating Point | 直流工作点分析,计算电路在直流电源下的静态工作点,所有电容开路,电感短路。 | .OP |
.DC |
DC Sweep | 直流扫描分析,让一个或多个电源的电压或电流在一定范围内变化,观察电路的响应。 | .DC VDS 0 5 0.1 VGS 0 5 1 (VDS 从 0V 扫描到 5V,步长 0.1V;在每个 VGS 值下重复,VGS 从 0V 到 5V,步长 1V) |
.AC |
AC Analysis | 交流小信号分析,在某个直流工作点附近,分析电路对不同频率正弦信号的响应(通常用于滤波器、放大器等频率特性分析)。 | .AC DEC 10 1 1G (频率按 decade (10倍) 变化,每 decade 取 10 个点,从 1Hz 到 1GHz) |
.TRAN |
Transient | 瞬态分析,在一段时间内,分析电路对时域信号(如脉冲、正弦波)的响应。 | .TRAN 1ns 1us (从 0 开始仿真,总时长 1us,计算步长 1ns) |
.TF |
Transfer Function | 传输函数分析,计算电路的直流小信号增益、输入阻抗和输出阻抗。 | .TF V(5) VIN (计算节点 5 相对于输入源 VIN 的增益、输入阻抗和输出阻抗) |
.SENS |
Sensitivity | 灵敏度分析,计算输出变量对电路元器件参数的直流灵敏度。 | .SENS V(OUT) (计算输出电压 V(OUT) 对所有元器件参数的灵敏度) |
.PZ |
Pole-Zero | 极零点分析,计算线性电路的传递函数的极点和零点。 | .PZ V(OUT) VIN (计算从 VIN 到 V(OUT) 的传递函数的极零点) |
.NOISE |
Noise Analysis | 噪声分析,计算电路中各个元器件产生的噪声在输出端的总和,以及等效输入噪声。 | .NOISE V(OUT) VIN 10 (计算输出噪声,以 VIN 为参考源,频率间隔为 10Hz) |
输出与绘图命令
这些命令用于定义仿真结果的输出格式和可视化。
| 命令 | 全称 | 功能 | 示例 |
|---|---|---|---|
.PRINT |
打印数据,将指定的变量以文本格式输出到 .lis 文件中。 |
.PRINT DC V(2) I(VDS) (在直流分析中,打印节点 2 的电压和 VDS 电流源的电流) |
|
.PLOT |
Plot | 绘图打印,在 .lis 文件中以 ASCII 字符形式绘制简单的波形图。 |
.PLOT AC VDB(5) (在交流分析中,打印节点 5 电压的分贝值图) |
.PROBE |
Probe | 波形输出(最常用),将指定的变量输出到一个二进制文件(.raw 文件),可以使用波形查看器(如 HSPICE Waveform Viewer, Synopsys VCS, Cadence Virtuoso 等)进行可视化。 |
.PROBE V(*) I(R1) (输出所有节点的电压和电阻 R1 的电流到 .raw 文件) |
.MEASURE |
Measure | 测量,在仿真波形上自动进行测量,如找到最大值、最小值、上升时间、延迟时间等,并将结果输出到 .lis 文件。 |
.MEAS TRAN trise TRIG V(OUT) VAL=0.5 RISE=1 TARG V(OUT) VAL=4.5 RISE=1 (测量输出电压从 0.5V 上升到 4.5V 的时间,即上升时间 trise) |
.OPTION |
Options | 选项设置,用于设置 HSPICE 的各种参数,如仿真精度、输出级别、温度、工艺角等。 | .OPTION POST=2 (设置输出级别为 2,生成最详细的 .raw 文件) .OPTION TNOM=25 (设置标称温度为 25°C) |
模型与库命令
| 呩令 | 全称 | 功能 | 示例 |
|---|---|---|---|
.LIB |
Library | 调用模型库,从指定的库文件中调用器件模型。 | .LIB 'cmos018.ltt' (调用名为 'cmos018.ltt' 的工艺库文件) .LIB 'cmos018.ltt' TT (调用库文件中的典型工艺角模型) |
.INCLUDE |
Include | 包含文件,将另一个网表文件包含进来,常用于包含子电路或模型定义。 | .INCLUDE 'my_subckt.sp' |
.PARAM |
Parameter | 参数定义,定义一个全局参数,可以在整个网表中使用。 | .PARAM VDD=1.8 W=0.18u (定义 VDD=1.8V, W=0.18um) |
.ALTER |
Alter | 条件分析,定义一个或多个备用的分析或参数设置,与 .END 配合使用。 |
.ALTER VDD = 1.2 .ENDALTER (在 .ALTER 和 .ENDALTER 之间的设置会覆盖主网表中的设置) |
元件语法
虽然不是以 开头的命令,但定义元件是网表的基础。

通用格式:<节点1> <节点2> <元件名称> <值>
- 电阻:
R1 in out 1k(连接 in 和 out 节点,阻值为 1kΩ) - 电容:
C1 in out 10p(连接 in 和 out 节点,容值为 10pF) - 电感:
L1 in out 10n(连接 in 和 out 节点,感值为 10nH) - 独立电压源:
VIN in 0 DC 1.5 AC 1 SIN(0 1.5 1G)(in 节点到 0 节点,直流 1.5V,交流幅值 1V,正弦波,频率 1GHz) - 独立电流源:
I1 in 0 DC 1mA(in 节点到 0 节点,直流电流 1mA) - MOSFET:
M1 out in bulk gate NMOS W=0.18u L=0.18u(漏极 out, 栅极 in, 体端 bulk, 栅极 gate, 模型名 NMOS, 宽长比 W/L) - 子电路调用:
X1 in out vdd gnd my_inv(调用名为 my_inv 的子电路,连接 in, out, vdd, gnd 四个端口)
完整示例:CMOS 反相器瞬态分析
下面是一个完整的 CMOS 反相器 HSPICE 网表示例,包含了标题、元件、分析、输出和结束命令。
* CMOS Inverter Transient Analysis Example * This is a title line * --- Global Power and Ground --- * VDD is connected to node 'vdd', GND to '0' VDD vdd 0 DC 1.8 * --- Input Pulse Source --- * VIN: Pulse from 0 to 1.8V, delay=0ns, rise/fall=10ps, pulse width=50ns, period=100ns VIN in 0 PULSE(0 1.8 0 10p 10p 50n 100n) * --- MOSFET Instantiations --- * M1 (NMOS): Drain=in, Source=out, Body=0, Gate=out, Model=NMOS, W/L=0.18u/0.1u M1 out in 0 0 NMOS W=0.18u L=0.1u * M2 (PMOS): Drain=in, Source=vdd, Body=vdd, Gate=out, Model=PMOS, W/L=0.36u/0.1u M2 out in vdd vdd PMOS W=0.36u L=0.1u * --- Model Definitions --- * Include the model library for 0.18um process .LIB 'cmos018.ltt' TT * --- Analysis Commands --- * Perform a transient analysis from 0 to 200ns with a step of 1ps .TRAN 1ps 200ns * --- Output and Plotting Commands --- * Probe all node voltages and currents of the MOSFETs to the .raw file .PROBE V(*) I(M1) I(M2) * Measure the propagation delay (tpHL and tpLH) .MEAS tpHL TRIG V(in) VAL=0.9 FALL=1 TARG V(out) VAL=0.9 FALL=1 .MEAS tpLH TRIG V(in) VAL=0.9 RISE=1 TARG V(out) VAL=0.9 RISE=1 * --- End of Netlist --- .END
运行与查看结果
- 保存:将上述代码保存为
.sp文件,inverter.sp。 - 运行:在命令行中执行 HSPICE:
hspice inverter.sp
- 查看输出:
inverter.lis:文本输出文件,包含仿真日志、.PRINT的结果和.MEASURE的测量值。inverter.raw:二进制波形文件,使用 HSPICE 自带的波形查看器或第三方工具(如 Synopsys Discovery)打开,可以查看V(in)和V(out)的波形。
常用技巧与注意事项
- 注释:使用 或 来注释一行。
- 单位:HSPICE 支持自动单位缩写。
1k=1000,1M=1e6 (注意:M 是兆,不是毫,毫是小写的m),1u=1e-6,1n=1e-9,1p=1e-12。 - 节点命名:节点名可以是数字或字母(不能以数字开头),
0通常被默认为地。 - 检查
.lis文件:如果仿真出错,第一反应是查看.lis文件末尾的错误信息,它会告诉你问题所在(如模型找不到、节点悬空、收敛问题等)。 - 收敛问题:对于复杂电路或强非线性电路,仿真可能不收敛,可以通过调整
.OPTION中的参数(如RELTOL,ABSTOL,VNTOL,ITL1,ITL2等)来尝试解决。
希望这份详细的 HSPICE 命令指南对您有帮助!
