HSPICE 命令文件的基本结构
一个标准的 HSPICE 命令文件(通常以 .sp 或 .cir 为后缀)通常包含以下几个部分:

- 标题行:文件的第一行,可以是任意注释,HSPICE 会忽略。
- 选项行:以 开头的命令,用于设置仿真参数、分析类型、输出格式等。
- 电路描述:定义电路的元件(电阻、电容、晶体管、电压源等)及其连接关系。
- 分析指令:以 开头的命令,指定要进行何种仿真分析(如直流、交流、瞬态等)。
- 输出指令:以 开头的命令,定义需要输出的变量和格式。
- 结束行:
.END命令,表示文件结束。
核心命令详解
电路描述命令
这是描述电路元件的核心,基本格式为:
<元件名称> <节点1> <节点2> ... <参数>
| 元件类型 | 名称格式 | 描述与示例 |
|---|---|---|
| 电阻 | R<name> <N1> <N2> <value> |
R1 in out 1k (连接 in 和 out 节点,阻值为 1kΩ) |
| 电容 | C<name> <N1> <N2> <value> |
C1 in 0 10p (连接 in 和地,容值为 10pF) |
| 电感 | L<name> <N1> <N2> <value> |
L1 in out 1n (连接 in 和 out,感值为 1nH) |
| 独立电压源 | V<name> <N+> <N-> <value> |
VDD out 0 3.3 (连接 out 和地,直流电压为 3.3V) |
| 独立电流源 | I<name> <N+> <N-> <value> |
I1 in 0 1u (连接 in 和地,直流电流为 1μA) |
| MOSFET | M<name> <D> <G> <S> <B> <model> [L=<val>] [W=<val>] |
M1 out in 0 0 NMOS L=0.1u W=1u (NMOS,漏极 out,栅极 in,源/体极接地) |
| BJT | Q<name> <C> <B> <E> <S> <model> |
Q1 c b e 0 NPN (NPN型三极管,集电极c,基极b,发射极e,衬底接地) |
| 子电路调用 | X<name> <N1> <N2> ... <sub_name> |
X1 in out vop_amp (调用名为 vop_amp 的子电路,连接 in, out) |
关键点:
- 节点名称:可以是任意字母数字组合(如
in,out,vdd,net1),0代表接地。 - 模型定义:元件(如 MOSFET, BJT)的物理参数需要在
.MODEL命令中定义。- MOSFET 模型示例:
.MODEL NMOS NMOS (VTO=0.5 KP=100u tox=10n) .MODEL PMOS PMOS (VTO=-0.5 KP=50u tox=10n) - BJT 模型示例:
.MODEL NPN NPN (BF=100 IS=1f)
- MOSFET 模型示例:
分析指令
这些命令告诉 HSPICE 如何运行仿真。
| 分析类型 | 命令格式 | 描述与示例 |
|---|---|---|
| 直流分析 | .DC <sourcename> <start> <stop> <step> [<sourcename2> ...] |
扫描一个或多个直流源的值。.DC VDS 0 5 0.1 VGS 0 5 1 (VDS 从 0V 扫到 5V,步长 0.1V;在每个 VDS 点,VGS 从 0V 扫到 5V,步长 1V) |
| 交流分析 | .AC <sweep_type> <points> <start_freq> <stop_freq> |
进行频域分析。.AC DEC 10 1 1G (频率按 decade (10倍频) 方式扫描,每 decade 10 个点,从 1Hz 到 1GHz) |
| 瞬态分析 | .TRAN <tstep> <tstop> [<tstart> [<tmax>]] [UIC] |
进行时域分析。.TRAN 1ps 1ns (从 0s 开始仿真到 1ns,计算步长为 1ps) UIC (Use Initial Conditions) 表示使用用户设定的初始值。 |
| 工作点分析 | .OP |
计算并输出电路的直流工作点。 |
| 蒙特卡洛/最坏情况分析 | .MC <runs> <analysis> <output> <function> [OPTIONS] |
进行统计仿真。.MC 100 DC V(out) MAX (运行 100 次直流分析,找出 V(out) 的最大值) |
| 温度分析 | .TEMP <temp1> <temp2> ... |
在不同温度下进行仿真。.TEMP 0 25 125 (分别在 0°C, 25°C, 125°C 下仿真) |
输出指令
这些命令控制仿真结果的输出。

| 输出类型 | 命令格式 | 描述与示例 |
|---|---|---|
| 打印输出 | .PRINT <analysis_type> <output_var1> <output_var2> ... |
在仿真日志文件中打印指定变量的数值。.PRINT DC V(out) I(VDD) (在直流分析中打印 V(out) 和流过 VDD 的电流) |
| 绘图输出 | .PLOT <analysis_type> <output_var1> [<output_var2> ...] |
在文本终端上绘制简单的 ASCII 图表。.PLOT TRAN V(in) V(out) (在瞬态分析中绘制 V(in) 和 V(out) 的波形图) |
| Probe 输出 | .PROBE [<analysis_type>] [<output_var1> ...] |
最常用,生成二进制格式的数据文件(.mt0, .sw0 等),可以在波形查看器(如 Waveform Viewer, SimVision, Cadence Virtuoso Waveform Viewer)中打开和查看。.PROBE (输出所有节点电压和支路电流) 或 .PROBE TRAN V(out) (只输出瞬态分析的 V(out)) |
选项与控制命令
| 命令格式 | 描述与示例 |
|---|---|
| .OPTIONS | 设置仿真器选项。.OPTIONS POST=1 (生成用于后处理的文件) .OPTIONS RELTOL=1e-3 (设置相对误差) |
| .ALTER / .ENDALTER | 定义一个备用的电路配置,用于参数扫描或比较。 |
| .GLOBAL | 声明全局节点。.GLOBAL vdd gnd (vdd 和 gnd 在整个电路中都是全局可见的) |
| .INCLUDE | 包含另一个文件。.INCLUDE 'models.lib' (包含模型文件) |
| .PARAM | 定义参数。.param supply=3.3 (定义 supply=3.3V),之后可以用 VDD out 0 {supply} 来引用。 |
| .MEASURE | 在仿真过程中测量某个值。.MEAS TRAN rise_time TRIG V(out) VAL=1.5 RISE=1 TARG V(out) VAL=2.5 RISE=1 (测量 V(out) 从 1.5V 上升到 2.5V 所需的时间) |
| .SAVE | 指定保存到 .mt0 文件中的变量。.SAVE V(*) I(VDD) (保存所有节点电压和流过 VDD 的电流) |
| .END | 必须,文件结束标志。 |
完整示例:一个简单的 CMOS 反相器
下面是一个完整的 HSPICE 命令文件示例,仿真一个 CMOS 反相器的直流传输特性(DC Transfer Characteristic)和瞬态响应。
* ===============================================================
* HSPICE Example: CMOS Inverter Simulation
* ===============================================================
* --- 1. Options ---
.OPTIONS POST=1 * Generate files for waveform viewing (e.g., .sw0)
.PARAM supply=1.8 * Define a parameter for supply voltage
* --- 2. Include Model File ---
* Assume you have a model file named 'cmos_models.lib'
.INCLUDE 'cmos_models.lib'
* --- 3. Circuit Description ---
* Power and Ground
VDD out 0 DC {supply}
VSS 0 0 DC 0
* Input Pulse Source for Transient Analysis
Vin in 0 PULSE(0 {supply} 0ns 10ps 10ps 1ns 2ns)
* CMOS Inverter
* M1: PMOS (Drain=VDD, Gate=in, Source=out, Bulk=VDD)
M1 VDD in out VDD PMOS L=0.1u W=0.5u
* M2: NMOS (Drain=out, Gate=in, Source=VSS, Bulk=VSS)
M2 out in VSS VSS NMOS L=0.1u W=0.25u
* Load Capacitance
C_L out 0 10f
* --- 4. Analysis Commands ---
* DC Analysis: Sweep Vin from 0 to supply, measure V(out)
.DC Vin 0 {supply} 0.01
* Transient Analysis: Run for 5ns
.TRAN 1ps 5ns
* --- 5. Output Commands ---
* Save all node voltages and currents for waveform viewing
.SAVE V(*) I(VDD) I(Vin)
* Measure propagation delay (optional)
.MEAS TRAN tpLH TRIG V(in) VAL={supply/2} RISE=1 TARG V(out) VAL={supply/2} FALL=1
.MEAS TRAN tpHL TRIG V(in) VAL={supply/2} FALL=1 TARG V(out) VAL={supply/2} RISE=1
.MEAS TRAN tp_avg AVG tpLH tpHL
* Print DC transfer curve to the log file
.PRINT DC V(in) V(out)
* --- 6. End of File ---
.END
如何运行和查看结果
-
运行 HSPICE: 在命令行中,进入
.sp文件所在的目录,然后执行:hspice -i my_circuit.sp -o my_circuit.lis
-i my_circuit.sp: 指定输入文件。-o my_circuit.lis: 指定输出日志文件名。
-
查看结果:
- 日志文件 (
.lis):打开.lis文件,可以查看仿真设置、警告/错误信息、以及由.PRINT命令输出的数据表格。 - 波形文件 (
.sw0,.mt0等):这是最常用的结果,使用 HSPICE 自带的 Waveform Viewer 或其他兼容的波形查看器(如 Cadence SimVision)来打开这些文件,进行交互式地观察和分析波形、测量参数等。
- 日志文件 (
掌握 HSPICE 命令的关键在于:

- 理解基本结构:知道命令文件的组织方式。
- 熟悉核心命令:特别是元件描述、分析指令(
.DC,.TRAN,.AC)和输出指令(.PROBE是最重要的)。 - 善用模型和参数:
.MODEL和.PARAM命令让仿真更灵活、更易于维护。 - 实践:从简单的电路开始,逐步尝试更复杂的分析和测量命令。
希望这份详细的指南对您有所帮助!
