• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
dzw9
博客园    首页    新随笔    联系   管理    订阅  订阅
Hspice

1.1简介

SPICE(simulation program with integrated circuit emphasis),可在直流到100GHz的频率范围内对电路准确地仿真

输入件 网表.sp 模型与库文件.inc .lib
输出件 运行状态文件.st0 列表文件.lis 测量文件.m*#
图像输出 .tr#瞬态分析 .sw#直流分析 .ac#交流分析

1.2常数

F=1e-15 P=1e-12 N=1e-9 U=1e-6 M=1e-3 T=1e12 G=1e9 MEG=X=1e6 K=1e3

输入件
配置文件 meta.cfg
初始化文件 hspice.ini
直流工作点初始化文件 design.ic
输入网表文件 design.sp
库输入文件 library_name
模拟转移数据文件 design.d2a

输出件
输出列表 .lis或自定义文件
数字输出 .a2d
工作点节点电压 .ic
子电路交叉列表 .pa0
输出状态 .st0

瞬态分析结果 .tr0+
直流分析结果 .sw0+
交流分析结果 .ac0+
硬拷贝图形数据 .gr0++
FFT分析图形数据 .ft0+++

.measure产生的文件
瞬态分析测量结果 .mt0
直流分析测量结果 .ms0
交流分析测量结果 .ma0

0表示序号,即第0个文件;+表示用POST语句产生图形数据后确立
++表示该文件需要一个GRAPH语句或有一个针对meta.cfg文件中存在的文件的地址计数器
+++表示应用了FFT语句后确立

第二章 仿真输入及控制设置

2.1输入网表

网表名design.sp,必须以字母开头
以.end结尾,不区分大小写,可以用+另起一行
0、GND、GND!、GROUND都指全局地
器件名以器件关键字开头
电容C 电阻R MOS管M 二极管D 三极管Q
电流源I 互感K 电感L 传输线T/U/W 电压源V 子电路X
数字可以用1e-12或p,但不能共用

2.2 网表中元素

.title网表名称,默认不执行网表第一行,而是解释为网表名称;
注释以*开始一行,或在句中以$开始;

定义子电路
Xyy n1 n2 subname param=val
.subckt或者.macro 名字subname 接口节点n1 n2 指定子电路参数初值
.ends 结束或者.eom
子电路调用必须以X开头
电路层次以.连接,如X1.X4.M5

.temp 125 温度 默认25

.global 定义全局节点名,相同就连在一起,通常定义电源连接
.global VDD INPUT 所有和VDD同名的连接在一起

.data 定义任意数目的参数,可用于.dc .ac .tran等分析中的参数扫描
.data 数据名dataname 参数名pname1 pname2

.MODEL 定义器件模型
.model modulname模型名 type类型 version=11版本 pname1=val1参数赋值
type可分为 AMP运算放大器 C电容 D二极管 L磁芯互感 NMOS NPN PMOS PNP R电阻

.lib ‘moduls’ cmos1 库文件调用

.alter 修改参数重复仿真

hspice *.sp -n 7 > *.out
启动hspice,文件计数从7开始

第三章 器件和电源

3.1 器件

器件 使用方法 解释
电阻 R1 1 2 100 电阻R1连接在1正节点2负节点之间,阻值100欧姆
电容 C1 1 2 20p 容值20pF
电感 L1 1 2 100n 感值100nH
互感 K1 Lin Lout 0.9
Kxfmr Lhigh Llow K=COUPLE
0.9和COUPLE是耦合系数,取值-1~1,负值表示绕向相反
二极管 D1 1 2 diode1
三极管 Q1 1 2 3 model1 集电极 基极 发射级 使用模型model1
MOS管 M1 d1 g2 s3 b stage1 L=2u W=10u 漏极 栅极 源级 衬底 使用模型stage1 长2um 宽10um

3.2 独立源

直流源
V1 1 0 DC=5V
I1 1 0 DC=5mA

交流源
V1 1 0 AC=10V,90 10是幅度,90表示相位
VIN 1 0 AC 10V 90

瞬态源
Vx 正极n+ 负极n-
脉冲源pulse
V1 3 0 PU (-1 1 2NS 2NS 50NS 100NS)
名字 正极 负极 pulse 低压 高压 延迟 上升时间trise 下降时间tfall 脉冲宽度tpw 周期tperiod

正弦源SIN=sinusoidal
VIN 3 0 SIN (0 1 100MEG 1NS 1e10)
名字 正极 负极 sin (直流幅度 交流幅度1V 频率100MHz 初始延迟1ns 衰减因子1e10)

指数源EXP=exponential
VIN 3 0 EXP (-4 -1 2NS 30NS 60NS 40NS)
初始电压-4V 最终电压-1V 2ns开始上升 时间常数30ns 60ns开始下降 时间常数40ns

分段线性源PWL=Piecewise linear
V1 1 0 PWL 60N 0V,120N 0V

调频源SFFM=single-frequence FM
V1 1 0 SFFM 直流幅度vo 交流幅度va 主频率fc 调制系数mdi一般1-10,默认0 调制频率fs
v=v0+vaxSIN[2xpixfcxtimexmdixSIN(2xpixfsxtime)]
V1 1 0 SFFM (0,1M,20K,10 ,5K)

调幅源AM=Single-frequence AM
v1 1 0 AM (10 1 100 1k 1M)
(vo信号幅度 va失调常数,默认0 fm调制频率 fc载波频率 td初始延迟)
v1 = vo*{va+SIN[2*pi*fm*(time-td)]*SIN[2*pi*fc*(time-td)]}

混合源
交直流混合源
VH 3 6 DC=2 AC=1,90

3.3 受控源

源定义主要使用 分段线性函数piecewise linear function 和 多项式 polynomial functions

3.3.1 压控电压源 E elements

ploy(n) n变量多项式
E1 5 0 POLY(1) 3 2 1 2.5 V(5,0) = 1+2.5V(3,2)

理想运算放大器
Eopamp 2 3 14 1 MAX=+5 MIN=-5 2.0
V(2,3)=2V(14,1) 最大幅度+5V,最小幅度-5V,输入-4V只能输出-5V,不是-8V

电压加法器
EX 18 0 POLY(3) 13 0 15 0 17 0 0 1 1 1
+IC=1.5 2.0 12.2
初始化V(13,0)电压为1.5V

零延迟反向门
Einv out 0 PWL(1) in 0.7V,5V 1V,0V
输入小于0.7v输出5v,输入大于1v输出0v

理想变压器
Etrans out 0 TRANSFORMER in 0 10
Vout=Vin/10

压控振荡器
Evco out 0 VOL=v0+gain*SIN(6.28*freq*v(control)*time)

3.3.2 压控电流源 G elements

开关
Gswitch 2 0 VCR PWL(1) 1 0 0V,10meg 1v,1m
1 0节点电压从0变为1时,2 0间电阻从10M欧姆变为1毫欧

开关MOS管
Gnmos d s VCR NPWL(1) g s LEVEL=1 0.4V,150g
+1v,10meg 2v,50k 3v,4k 5v,2k

压控电容
Gcap out 0 VCCAP PWL(1) ctrl 0 2v,1p 2.5v,5p

零延迟门
Gand out 0 AND(2) a 0 b 0 SCALE='1/rload' 0v,0a 1v,.5a
+4v,4.5a 5v,5a
定义一个二输入与门,输出电压为输出电流*scale,scale为电阻倒数

延迟器件
Gdel out 0 DELAY in 0 TD=5ns SCALE=2 NPDELAY=25
延迟5ns 电流值=scale*V(in,0)

二极管
Gdio 5 0 CUR='1e-14*(EXP(V(5)/0.025)-1.0)' 电压控制电流

二极管击穿
Gdiode 1 0 PWL(1) 1 0 -2.2V,-1A -2V,-1PA .3V,.15PA
+.6V,10UA 1V,1A 2V,1.2A
通过分段线性源模拟

三极管
gt i_anode cathode poly(2) anode,cathode grid,cathode 0 0
+0 0.02

第四章参数、函数及仿真设置

4.1 参数

.PARAM WIDTH=3u 定义参数
X1 in out buffer M=2 倍乘参数M 产生M个器件或子电路并联的效果

参数作用范围
.option parhier=global 全局参数优先,默认全局
.option parhier=local 局部参数优先

4.2 函数

f(a,b)=POW(a,2)+a*b

三角函数 sin cos tan asin acos atan sinh cosh tanh
数学 abs sqrt pow pwr log log10 exp db int sgn sign
min max lv lx v i

变量
time 瞬态分析中当前仿真时间参数
temper 当前仿真温度参数
hertz 交流分析中的当前频率

4.3仿真设置

控制选项.option
1)输入输出

.option explain
ACCT 在输出报告文件结尾增加任务计数和仿真时间统计,默认打开,0取消报告;1允许,2允许矩阵统计报告
brief brief表示不输出网表信息 直到.option brief=0
CO=x 设置输出列数,默认80,可以改为132
ingold=x 设置数据格式,默认0工程格式指数被表示为单个字母 1U=1e-6;1时0.1-999直接表示,其他用指数;2为纯指数,与工具兼容
list 产生器件数目及关键参数值的摘要
node 列出和每个节点相连的所有器件
nomod 不输出模型参数
search 设置库和包含文件的搜索路径
界面选项 --
autostop 加速仿真,MEAS到达目标值后会停止计算
post 允许保存图形界面数据。默认为1二进制格式;2为ASCII格式;3为新波形二进制格式
probe 默认输出所有电流、电压、输出命令中指定数据。probe可限制输出数据为.print、.plot、.probe、graph中指定变量,减小文件大小。
仿真选项
parhier 设置参数优先级,local低层级电路参数优先;默认global高层级优先

第五章 输出设置

5.1输出指令

.print 在输出文件中输出数值结果,若使用.option post也会输出图形数据
.plot 输出低分辨率的点
.graph 输出高分辨率的图形数据
.probe 输出图形数据,但不在输出列表文件中,可用.option probe只输出指定数据
.measure 在输出列表文件在输出定义的数据

5.2输出参数

5.2.1 电流和电压

V(n1,n2) 节点电压
.print DC I(X1.VSRC) 电压源电流
I2(X1.M1) 器件支路电流;子电路X1中MOS管M1的第2个节点电流

5.2.2 功率

功率计算只对瞬态分析和直流扫描分析有效
对于半导体器件只计算消耗功率
POWER关键字输出总消耗功率
.PRINT DC|TRAN P(name) POWER

5.2.3 交流分析

  1. 节点电压 Vx(n1,n2) x为输出变量类型
    .PLOT AC VM(5) VP(5)
    DB decibel
    I imaginary part
    M magnitude
    P phase
    R real part
    T group delay

2)独立电压源电流 Iz(Vxxx) z指定输出类型
.PLOT AC IR(V1)
3)器件支路电流 Izn(Wxxx) z指定输出类型,n为器件节点序号
.PRINT AC IP1(Q5)

5.2.4 网路相关参数

Xij(z)
X设为Z指阻抗,Y指导纳,H指混合参数,S指散射参数;ij为二端口网络序号;z输出类型,若省略指幅度
ZIN(z) 输入阻抗;ZOUT(z)输出阻抗;YIN(z) 输入导纳;YOUT(z) 输出导纳

5.2.5 噪声和谐波分析输出参数

ONOISE输出噪声;INOISE输入噪声;谐波分析参数(HD2,HD3,SIM2,DIM2,DIM3)
.PRINT DISTO HD2(M)
.PLOT NOISE INOISE ONOISE

5.2.6 器件参数输出

.PRINT TRAN M2:CGGBO 器件名:器件属性名

第六章 常用分析

6.1 直流初始化及工作点分析

6.1.1 电路初始化

HXCC 1 0 VIN1 VIN2 IC=0.5,1.2
.IV .DCVOLT声明等效
.NODESET 12 4.5 4 2.3 1 1 设置节点电压初始值

6.2 直流扫描分析

.dc var1 start stop incr
.dc vin 0 10 0.5

蒙特卡洛分析
.DC var1 type np start stop (sweep monte=val)
type:dec oct lin线性 poi 点列表
.DC MONTE=val 随机产生val个参数

6.3 瞬态分析

tran 1ns 100ns
进行 100ns 的瞬态分析,步长 1ns。
.tran .1ns 25ns 1ns 40ns start=10ns
前 25ns 步长 0.1ns, 后 40ns 步长 1ns,从 10ns 的时候开始文本及图形数据输出。
.tran 10ns 1us uic
进行 1us 的分析,步长 10ns, uic 表示忽略初始直流工作点计算,采用.ic 声明中设定的初始节点电压来计算初始条件。
.TRAN 10NS 1US UIC SWEEP TEMP -55 75 10
从-55℃到 125℃,步长 10℃扫描温度,在每一个温度值下进行瞬态分析。

6.4 交流分析

7.1 用户定义的分析

.measure DC|AC|TRAN resultname
不能调用子电路参数,不能和param中参数重名

7.1.2上升、下降和延迟 rise fall delay

.meas DC|AC|TRAN resultname trig targ GOAL=val MINVAL=val WEIGHT=val
DC|AC|TRAN 指定仿真类型,如省略采用最后一次仿真
resultname 输出结果名,瞬态是时间,交流是频率,直流是扫描变量
trig trag 起始值和目标值
GOAL 优化目标值,误差errfun=(goal-result)/goal
MINVAL 如果goal小于minval,则minval取代goal,默认1e-12
weight 加权值,优化中会用weight乘以计算所得误差,默认为1

TRIG trig_var val=trig_val (TD=time_delay CROSS=c RISE=r FALL=f)
TRIG AT=val 设定测量起始值
TARG targ_var VAL=targ_val (TD=time_delay CROSS=c|LAST RISE=r|LAST FALL=f|LAST)
起始值的关键字 测量参数 测量起始值 测量前的延迟,默认0 ries上升,fall下降,cross上升或下降,指定第几次 last最后一次

7.1.3 find和when函数

7.1.5 平均值 均方根 最大最小 峰峰值

.meas DC|AC|TRAN result func out_var from=val to=val goal= minval= weight=
from计算起点,瞬态中是时间,to终点
func函数 avg=average max=maximum min=minimum pp=peak-to-peak rms=root mean squared integ=integer
pp计算指定间隔里最大最小差值 rms均方根值 integ积分值

DC 直流 direct current
AC 交流 alternating current
tran瞬态 transient
.options=.option
.include=.inc
.measure=.meas

参考文档

posted on 2024-12-08 19:20  dzw9  阅读(263)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3