找回密码
 注册
关于网站域名变更的通知
查看: 23622|回复: 82
打印 上一主题 下一主题

[Hspice仿真] Hspice实战手册!

  [复制链接]
  • TA的每日心情
    开心
    2019-12-3 15:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    跳转到指定楼层
    #
    发表于 2007-9-3 09:01 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    完整版本请见附件。      
      L% l! ]: z2 y  G4 ?/ H       最初写作本文的目的是希望提供一份中文版的Hspice手册从而方便初学者的使用,本文的缘起是几位曾经一起工作过的同事分别进入不同的新公司,而公司主要是使用Hspice,对于已经熟悉了cadence的GUI界面的使用者转而面对Hspice的文本格式,其难度是不言而喻的,而Hspice冗长的manual(长达2000页以上)更让人在短时间内理不出头绪。鉴于我曾经使用过相当一段时间的Hspice,于是我向他们提供了一份简单而明了的handbook来帮助他们学习,本来是准备借助一个具体运放的设计例子,逐步完善成为一份case by case的教程,但由于工作比较浩大,加之时间的关系,一直难以完成,愈拖愈久,在几个朋友的劝说下,与其等其日臻完善后再发布,不如先行发布在逐步完善,以便可以让更多的朋友及早使用收益。本文虽通过网络发表,但作者保留全部的著作权,转载时务请通知本人。由于水平的有限,讨论范围的局限及错误不可避免,恳请读者指正。$ |) H9 @2 E" l" a. g: [$ U" `
    一、HSPICE基础知识: K  u) R& b  O( p. K" B) x
    Avant! Start-Hspice(现在属于Synopsys公司)是IC设计中最常使用的电路仿真工具,是目前业界使用最为广泛的IC设计工具,甚至可以说是事实上的标准。目前,一般书籍都采用Level 2的MOS Model进行计算和估算,与Foundry经常提供的Level 49和Mos 9、EKV等Library不同,而以上Model要比Level 2的Model复杂的多,因此Designer除利用Level 2的Model进行电路的估算以外,还一定要使用电路仿真软件Hspice、Spectre等进行仿真,以便得到精确的结果。0 }4 H' M- O& Z: \1 T2 Q
    本文将从最基本的设计和使用开始,逐步带领读者熟悉Hspice的使用,并对仿真结果加以讨论,并以一个运算放大器为例,以便建立IC设计的基本概念。在文章的最后还将对Hspice的收敛性做深入细致的讨论。
    5 h. f5 q: j2 e9 }7 \7 v0 IHspice输入网表文件为.sp文件,模型和库文件为.inc和.lib,Hspice输出文件有运行状态文件.st0、输出列表文件.lis、瞬态分析文件.tr#、直流分析文件.sw#、交流分析文件.ac#、测量输出文件.m*#等。其中,所有的分析数据文件均可作为AvanWaves的输入文件用来显示波形。' M& ~# \" }* v0 t$ R
    表1 Hspice所使用的单位( H3 e# Y9 {. ]$ T4 c$ O
    独立电压和电流源包括:
    # a0 |' }; {/ y0 A1. 直流源(DC):
    5 ?8 X' F7 D( S: D# r* R8 X  m电压源Vxxx n+ n- dcval
    . c* B7 {! H% O9 I电流源 Ixxx n+ n- dcval; l: p  @1 O- d; x* n4 D3 j, e
    2. 交流源(AC):Vxxx n+ n- AC=acmag,acphase
    ; P! \' _1 W/ |4 Y3. 瞬态源(随时间变化):9 v: G& V% t* i& W
    脉冲源:pulse v1 v2 td tr tf pw per' Z5 X( D6 V) e- c
    线性源:pwl t1 v1 <t2 v2 t3 v3…>3 g. c, G* x+ o2 e. [" X
    正弦源:sin vo va freq td damping phasedelay3 d% f+ \- L% ^7 w  K5 |1 a. G
    4. 混合源:可以包括以上所有的形式,如:VIN 13 2 0.001 AC 1 SIN(0 1 1Meg)$ F* z( F+ N, s
    二、输入网表文件* v$ m& j2 b5 `- G# R' A: x# J
    TITLE0 V: c' f6 e$ R9 r
    .INCLUDE
    0 n* p: J; D/ L$ \% X3 f2 q.LIB MACRO
    ) x6 v; c9 L  m( X6 `# u元件描述
    & W1 l' o* E- M5 f) x+ V, [信号源描述. Y% h1 L: I* u% l' o8 t
    分析命令2 ^, O6 y7 z- N
    测量命令7 O/ d; Y4 s2 ]* p! Q+ h6 J( n1 r% R
    .ALTER
    ) l/ T8 S6 S4 W.END
    4 Z# M5 T/ \. B# Y. w6 C0 a, v8 P图1 输入网表(Netlist)文件标准格式
    9 s/ K0 K1 P, l2 W1 }/ A0 E$ r二、有源器件和分析类型
    1 g0 m% r0 h! L2 P" z, |  t% a1 c有源器件包括二极管(D)、MOS管(M)、BJT管(Q)、JFET和MESFET(J)、子电路(X)和宏、Behavioral器件(E,G)、传输线(T,U,W)等。这里值得注意的是MOS、JFET和MESFET的L和W的scale是m,而不是um。
    * i4 Z) d0 _" v" w分析的类型包括:直流、交流和瞬态分析。
    1 t9 d* ?" v# k: X7 ^! X1.直流分析:
    2 o  y3 L/ J0 m  V2 I0 o4 G8 t8 U对DC、AC和TRAN分析将自动进行直流操作点(DC OP)的计算,但.TRAN UIC将直接设置初始条件,不进行DC OP的计算。+ E' N% S; }$ K3 X( T' m1 g
    .DC var1 start1 stop1 inc1 sweep var2 type np start2 stop2
    4 z' F: Q# H2 v$ S7 ~$ u直流分析包含以下五种语句:
    : r4 \& d/ [0 i.DC:直流扫描分析;8 Q5 S  w; ^7 }! ]. i2 ?
    .OP:直流操作点分析;" j" n7 V! F/ Q& |3 @: A
    .PZ:Pole/Zero分析;/ t! u; Q( Q3 b( \7 ^* x/ f
    .SENS:直流小信号敏感度分析;0 o) u, B( A4 F
    .TF:直流小信号传输函数分析。
    + h$ V& W% O. t. p: z6 @5 r2.交流分析:
    ! A* P- X* h4 z+ d: q交流分析是指输出变量作为频率的函数。4 h, |/ M7 R) F4 R- m
    .AC var1 start1 stop1 inc1 sweep var2 type np start2 stop2
    0 c" {2 a2 q- g8 ]交流分析包括以下四种语句:
    ' ]1 i' |6 D- ?5 \* D3 u5 n6 s7 ].NOISE:噪声分析;$ B; M: m; A; [3 o
    .DISTO:失真分析;
    2 d, B+ R/ p2 h( W# d) h.NET:网络分析;
    ! a% I* ]5 R7 f1 g7 w* `  o.SAMPLE:采样噪声分析。7 ]- V1 h! i) ], w4 _+ d3 P
    3.瞬态分析:
    . S$ s" S; r; o% m+ i5 j4 p瞬态分析是指计算的电路结果作为时间的函数。
    ) X% m+ `7 _& y$ M.TRAN tinc1 tstop1 tinc2 tstop2… START=.. UIC SWEEP..9 j) _, I: l, }, W8 R
    三、输出格式和子电路' V+ e% U. u/ f5 W# A3 G& l
    (1) 输出命令包括:.PRINT、.PLOT、GRAPH、.PROBE和.MEASURE。
    3 F9 C% X' j$ }3 |& {: j" S/ \1 B.PLOT antype ov1 ov2… plo1,phhi1…plo32,phi32$ U- R' F) s  r
    .PROBE ov1 ov2… ov32
    " j8 D! y! @" Y' t.PRINT antype ov1 ov2… ov321 S- q" P9 N; |% Q, e/ @( |: X
    有五种输出变量形式:8 \: i$ b8 h0 h8 W6 D
    1. 直流和瞬态分析:5 t! i7 e* }1 ], X' O! L( ?
    用于显示单个节点电压,支路电流和器件功耗。3 m5 K9 g. \+ ?6 V/ F. _: M
    .print V(node) 或 .plot I(node),也可用.graph、.probe。
    4 |0 w" G) N! g9 GV(node)表示节点电压,I(node)表示节点电流,p(rload)表示在负载rload上的分析点的功耗。) K# d6 \' C% u* `
    2. 交流分析:
    ) k) V+ u4 J- s7 B( R. o' B2 k用于显示节点电压和支路电流的实部、虚部和相位。
    9 g. M. [" f$ h! f6 Hvi(node)表示节点电压的虚部,ip(node)表示节点电流的相位,vp(4,6)表示节点4,6间的相位角。
    6 K8 Z- h- W0 I' Y3. 器件模版:4 B; t0 e( H# z+ q& b, z
    用于显示制定的器件节点的电压、支路电流和器件参数。8 W( N' q+ J* P1 i2 O
    lv16(m3)表示MOS管m3的漏电流,其他表示方式见手册。
    & v2 L) p7 `: W4. MEASURE语句:
    ; M  _- r% Q, b4 Q0 L用于显示用户自定义的变量。
    . ~0 Y; T9 i$ u8 M" b) C7 H可以采用的句法包括:raise,fall,delay,average,RMS,min,max,p-p等。+ c% f9 e# J7 x+ w- C- B
    5. 参数语句:
    3 R4 r1 q9 b" Z% t用于显示用户自定义的节点电压等表达式。' O% n" ]$ \7 p  F! I
    语法格式:.print tran out_var_name=PAR(‘expression’)
    " d& l# A( q6 n  [- \(2)还可以采用AvanWave进行波形输出,启动AvanWave的命令为:awaves <filename> &( c6 v9 u  w4 o% J: V
    (3)子电路:, b5 R& D! [, J2 `# D, D9 A
    1. 采用.GLOBAL设置全局节点:; ]- _# q( x$ n
    .GLOBAL node1 node2 node3…
    # w. T" i# L8 E8 m" }+ A9 i2 Z6 K5 C2. 子电路语句.SUBCKT和.MACRO:: Z* i# f  e* [, V" Q. K# |8 m
    .SUBCKT subnam n1 n2 n3… parnam=val…! j* e9 Z2 f* Q* n2 {- t
    .MACRO subnam n1 n2 n3… parnam=val…2 N/ S, G+ i4 j6 Y! j. [
    子电路的调用:
    ' h, v* c+ w3 o# T/ BXyyy n1 n2 n3… sunnam parnam=val… M=val/ a9 v2 _6 \8 o
    四、控制语句和option语句2 N* O4 u( @2 b, e  b% `
    1.OPTION语句:( \6 R/ h) H* U. }
    .options语句格式:.options opt1 opt2 opt3… opt=x/ x" N- B9 \' _' M4 @
    一般在每个仿真文件中设置options为.options acct list post,也可以设置为.options node opts,其中.option list表示将器件网表、节点连接方式等输入到列表文件,用于debug与电路拓扑结构有关的问题,.option node表示将输出节点连接表到列表文件,用于debug与由于电路拓扑结构引起的不收敛问题,.option acct表示在列表文件中输出运行时间统计和仿真效率,.option opts在列表文件中报告所有的.option设置,.option nomod表示不输出MODEL参数,以便减小列表文件的大小,.option brief=1表示不输出网表信息,直到设置.option brief=0,.protect/.unprotect用于屏蔽网表文件中要保护的信息,.option bypass=1不计算latent器件,.option autostop表示当所有.measure语句完成时,终止仿真,.option accurate=1表示设置为最精确的仿真算法和容差,tstep表示仿真步长值,delmax表示最大允许时间步长,其中delmax=tstep*max,.option dvdt=4用于数字CMOS电路仿真(默认设置),.option dcca=1在直流扫描时强行计算随电压变化的电容,.option captab对二极管、BJT管、MOS、JFET、无源电容器,打印出信号的节点电容值,.option dcstep=val将直流模型和器件转换为电导,主要应用于“No DC Path to Ground”或有直流通路,但不符合Hspice定义的情况。
    ; q7 E+ t* R/ w/ Q( a1 t2.MODEL OPTION语句:. \# q4 h" x% R
    SCALE影响器件参数,如:L、W、area,SCALM影响model参数,如:tox、vto、tnom。
    2 P$ J' K4 N" Q( ]五、仿真控制和收敛% Q( u  `; Y  |1 P8 c
    Hspice仿真过程采用Newton-Raphson算法通过迭代解矩阵方程,使节点电压和支路电流满足Kirchoff定律。迭代算法计算不成功的节点,主要是因为计算时超过了Hspice限制的每种仿真迭代的总次数从而超过了迭代的限制,或是时间步长值小于Hspice允许的最小值。7 A( K' t2 [) b% E' A8 a2 B
    (1) 造成Hspice仿真不收敛主要有“No Convergence in DC Solution”和“Timestep too Small”,其可能的原因是:4 e$ K2 }% I7 ?3 t( m
    1.电路的拓扑结构:
    6 ^, B% C$ v# R! t/ t6 U9 U电路拓扑结构造成仿真不收敛主要有:电路连线错误,scale、scalm和param语句错误,其他错误可以通过查找列表文件中的warning和errors发现。
    - {. r8 e2 k4 x3 g) }解决的方法是:将电路分成不同的小模块,分别进行仿真;简化输入源;调整二极管的寄生电阻;调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。, _! h$ v4 b/ t8 T6 U
    2.仿真模型:
    . [4 d, i. m5 ~3 {# e) x由于所有的半导体器件模型都可能包含电感为零的区域,因此可能引起迭代的不收敛。
    4 @2 e0 z1 s9 \; o- {解决的方法是:在PN结或MOS的漏与源之间跨接一个小电阻;将.option中默认的GMINDC、GMIN增大。( ~* [3 u5 i. v1 ?, z& f
    3.仿真器的options设置:8 \; q8 @# t! r/ X' r
    仿真错误容差决定了仿真的精度和速度,要了解你所能接受的容差是多少。& c+ \6 R$ _5 {% m9 Y6 W
    解决的方法是:调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。; _" ^. K" E. D" i
    (2) 针对仿真分析中可能出现的不收敛情况进行分析:6 |/ K5 J6 K# L' v- ^5 k( o
    1.直流工作点分析:9 X8 D4 `0 z  C7 A% R
    每种分析方式都以直流操作点分析开始,由于Hspice有很少的关于偏置点的信息,所以进行DC OP分析是很困难的,分析结果将输出到.ic文件中。6 h4 ]! R. a( Q
    对DC OP分析不收敛的情况,解决方法是:删除.option语句中除acct,list,node,post之外的所有设置,采用默认设置,查找.lis文件中关于不收敛的原因;使
    9 y/ ~* J8 q! b1 {用.nodeset和.ic语句自行设置部分工作点的偏置;DC OP不收敛还有可能是由于model引起的,如在亚阈值区模型出现电导为负的情况。. G. x# r0 f/ y1 o0 B( b! Z* ~' c
    2.直流扫描分析:
    & C3 L4 h, T3 g2 F- M+ p: _: Z在开始直流扫描分析之前,Hspice先做DC OP计算,引起直流扫描分析不收敛的原因可能是快速的电压或电流变化,模型的不连续。* ~- ^  j/ A" A  t( A
    解决的方法是:对于电压或电流变化太快,通过增加ITL2来保证收敛,.option ITL2是在直流扫描分析中在每一步允许迭代的次数,通过增加迭代次数,可以在电压或电流变化很快的点收敛。对于模型的不收敛,主要是由于MOS管线性区和饱和区之间的不连续,Newton-Raphson算法再不连续点处进行迭点计算产生震荡,可以通过增减仿真步长值或改变仿真初始值来保证收敛,如:.dc vin 0v 5v 0.1v的直流分析不收敛,可以改为.dc vin 0v 5v 0.2v增大步长值,.dc vin 0.01v 5.01v 0.1v改变仿真的范围。
    8 ?8 _# W( ]- n5 J7 P9 ~" X3.AC频率分析:
    7 D7 w4 z6 K$ ]6 s" I由于AC扫描是进行频率分析,一旦有了DC OP,AC分析一般都会收敛,造成不收敛的原因主要是DC OP分析不收敛,解决的方法可以参看前面关于DC OP的分析。
    ; R+ h, s" U9 R( N3 I4.瞬态分析:
    6 Q% x- h; ], m- E; Q' y3 @瞬态分析先进行直流工作点的计算,将计算结果作为瞬态分析在T0时刻的初始值,再通过Newton-Raphson算法进行迭代计算,在迭代计算过程中时间步长值是动态变化的,.tran tstep中的步长值并不是仿真的步长值,只是打印输出仿真结果的时间间隔的值,可以通过调整.options lvltim imax imin来调整步长值。
    . l# z- P- A' u+ |/ G瞬态分析不收敛主要是由于快速的电压变化和模型的不连续,对于快速的电压变化可以通过改变分析的步长值来保证收敛。对模型的不连续,可以通过设置CAPOP和ACM电容,对于给定的直流模型一般选择CAPOP=4,ACM=3,对于level 49,ACM=0。0 D; _2 s, k4 B6 {) k) C
    对瞬态分析,默认采用Trapezoidal算法,精度比较高,但容易产生寄生振荡,采用GEAR算法作为滤波器可以滤去由于算法产生的振荡,具有更高的稳定性。; ?* O8 c5 Z" L
    六、输入语句
    ) a) t0 y- O) p* E% o! L对于.param语句,.param PARHIER=GLOBAL是默认的,使得参数可以按照Top-Down变化,.param PARHIER=LOCAL,可以是参数只在局部有效。
    5 W; O6 `, V0 z9 g+ A8 V% M对于.measure语句,可以采用的模式有rise,fall,delay,average,rms,min,peak-to-peak,Find-When,微分和积分等。对Find-When语句,.measure <dc|tran|ac> result find val when out_val=val <optimization options>,对微分和积分语句,.measure <dc|tran|ac> result <deriv|integ> val <options>。" C; U# q, `4 f
    对于.ALTER语句,可以通过改变.ALTER来改变使用不同的库,其中.ALTER语句可以包含element语句、.data、.lib、.del lib、.include、.model、.nodeset、.ic、.op、.options、.param、.temp、.tf、.dc、.ac语句,不能包含.print、.plot、.graph或其他I/O语句,同时应该避免在.ALTER中增加分析语句。+ b9 r9 ]0 \# G: ~. b$ n
    七、统计分析仿真
    $ G+ q: G$ e4 j  |主要是对器件和模型进行Monte Carlo分析,随机数的产生主要依赖Gaussian、Uniform、Limit分析,通过.param设置分布类型,将dc、ac、tran设置为Monte Carlo分析,用.measure输出分析结果,如:% y1 Y# }4 I, x1 H6 j) H
    .param tox=agauss(200,10,1): F4 `' K  x* {# A* J, C$ ?# V
    .tran 20p 1n sweep MONTE=20
    9 M# t. a) i7 ]4 Z) ^/ `.model … tox=tox …
    7 Q2 z; q( u- k& ~! v其中,对Gaussian分析.param ver=gauss(nom_val,rel_variation,sigma,mult),% v* G0 k6 c9 K9 ^1 a
    .param ver=agauss(nom_val,abs_variation,sigma,mult),
    1 A/ a! Y7 x0 ^6 c& V# B* B对Uniform分析,.param ver=unif(nom_val,rel_variation,mult),
    ( b: g. T  \) ]% u# N) @5 h$ v# |.param ver=aunif(nom_val,abs_variation,mult),
    - v, P1 J3 M% s2 V* q对Limit分析,.param ver=limit(nom_val,abs_variation),如果你拼错Gauss或Uniform、Limit,不会产生警告,但不将产生分布。
    " k% n' P5 u4 X7 Q* |
    7 D" y9 }! g9 d* l: ^
    游客,如果您要查看本帖隐藏内容请回复

    0 J" I; Z- ]' e- h' C

    该用户从未签到

    推荐
    发表于 2015-3-31 09:42 | 只看该作者
    工作前几年很重要,事少,多学,多问,多思考, 过几年,你和别人的差距就能表现出来

    该用户从未签到

    推荐
    发表于 2023-4-4 09:41 | 只看该作者
    11111111111111111111111111111111111111111111111
  • TA的每日心情
    慵懒
    2024-9-19 15:26
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    推荐
    发表于 2023-3-9 15:07 | 只看该作者
    感谢分享         5 L( G6 C  G1 b1 V0 F

    该用户从未签到

    77#
    发表于 2025-3-12 16:52 | 只看该作者
    学习下如何用hspcie仿真) o& `5 P0 W% T8 w$ J2 v! z
    , N, `( {- H5 _7 O/ |  r- c

    该用户从未签到

    76#
    发表于 2024-11-14 13:36 | 只看该作者
    休息休息小星星
    " b$ f" K) F: \# h2 X  x, D

    该用户从未签到

    74#
    发表于 2023-5-15 14:33 | 只看该作者
    学习学习,谢谢分享!

    该用户从未签到

    72#
    发表于 2023-5-11 16:42 | 只看该作者
    77777777777777777

    该用户从未签到

    71#
    发表于 2023-5-9 22:03 | 只看该作者

    该用户从未签到

    70#
    发表于 2023-3-30 09:31 | 只看该作者
    学习一下这个软件
  • TA的每日心情
    开心
    2022-7-1 15:09
  • 签到天数: 30 天

    [LV.5]常住居民I

    69#
    发表于 2023-2-24 13:06 | 只看该作者
    希望可以学到点东西
  • TA的每日心情
    慵懒
    2023-12-7 15:49
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    68#
    发表于 2022-7-25 14:11 | 只看该作者
    看看咋样,谢谢分享

    该用户从未签到

    67#
    发表于 2022-6-10 08:51 | 只看该作者
    作者介绍真诚  好东西 顶
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2026-4-18 17:34 , Processed in 0.140625 second(s), 30 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表