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

[Hspice仿真] Hspice实战手册!

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

    [LV.2]偶尔看看I

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

    EDA365欢迎您登录!

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

    x
    完整版本请见附件。       " J$ _4 b* k, v
           最初写作本文的目的是希望提供一份中文版的Hspice手册从而方便初学者的使用,本文的缘起是几位曾经一起工作过的同事分别进入不同的新公司,而公司主要是使用Hspice,对于已经熟悉了cadence的GUI界面的使用者转而面对Hspice的文本格式,其难度是不言而喻的,而Hspice冗长的manual(长达2000页以上)更让人在短时间内理不出头绪。鉴于我曾经使用过相当一段时间的Hspice,于是我向他们提供了一份简单而明了的handbook来帮助他们学习,本来是准备借助一个具体运放的设计例子,逐步完善成为一份case by case的教程,但由于工作比较浩大,加之时间的关系,一直难以完成,愈拖愈久,在几个朋友的劝说下,与其等其日臻完善后再发布,不如先行发布在逐步完善,以便可以让更多的朋友及早使用收益。本文虽通过网络发表,但作者保留全部的著作权,转载时务请通知本人。由于水平的有限,讨论范围的局限及错误不可避免,恳请读者指正。  v. h3 B  h0 Y. @0 d0 g* q
    一、HSPICE基础知识- P+ a' q5 I! M" J5 O6 M, o
    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等进行仿真,以便得到精确的结果。% |+ y$ p" a6 A! ]
    本文将从最基本的设计和使用开始,逐步带领读者熟悉Hspice的使用,并对仿真结果加以讨论,并以一个运算放大器为例,以便建立IC设计的基本概念。在文章的最后还将对Hspice的收敛性做深入细致的讨论。
    9 X$ K/ X( b2 t$ t6 gHspice输入网表文件为.sp文件,模型和库文件为.inc和.lib,Hspice输出文件有运行状态文件.st0、输出列表文件.lis、瞬态分析文件.tr#、直流分析文件.sw#、交流分析文件.ac#、测量输出文件.m*#等。其中,所有的分析数据文件均可作为AvanWaves的输入文件用来显示波形。
    4 j9 t4 Y* S/ k+ j$ r% L' B表1 Hspice所使用的单位
    ) Y+ V+ N5 X9 W8 _: J独立电压和电流源包括:$ B) g0 Z  n% a( _: U! Z! Q
    1. 直流源(DC):7 |; x3 Q; h4 x5 q1 d# h8 u
    电压源Vxxx n+ n- dcval- d9 f( v3 U; ?& T3 Z  O$ I/ D
    电流源 Ixxx n+ n- dcval
    * N8 S) L1 o- j7 r& r; N2. 交流源(AC):Vxxx n+ n- AC=acmag,acphase# P! i: n4 @; u8 \8 b
    3. 瞬态源(随时间变化):
    # ]* g% q  }2 U8 K脉冲源:pulse v1 v2 td tr tf pw per8 X- ]* i$ j7 R9 P* `
    线性源:pwl t1 v1 <t2 v2 t3 v3…>* `9 y* {- V* b1 ^0 ^
    正弦源:sin vo va freq td damping phasedelay7 L1 B9 l0 }# o: l0 @
    4. 混合源:可以包括以上所有的形式,如:VIN 13 2 0.001 AC 1 SIN(0 1 1Meg)
    : F: L, @( D6 {0 _9 s二、输入网表文件
    * ^! g/ T! A8 O* }- s$ ?TITLE
    / Q+ c1 i/ ?2 S# ~* n2 w.INCLUDE
    : z( r) K  v; @$ h8 e8 |6 ]/ ~.LIB MACRO
    % r* v" y, P. A8 \1 s元件描述
    1 p% Q8 @3 c) d信号源描述' m. T' O3 s3 h0 D& Z) N0 R
    分析命令! t% T2 o2 k( k  J- S9 G
    测量命令
    " i' A8 i3 R) L7 x% X.ALTER" E4 B; d* |# M9 B% u# @: p! o" P
    .END
    0 q" l1 A1 K) y, e3 g' E3 [图1 输入网表(Netlist)文件标准格式
    9 q. E" x: V" T二、有源器件和分析类型
    / h2 A3 o: r* W: x( h7 \4 A有源器件包括二极管(D)、MOS管(M)、BJT管(Q)、JFET和MESFET(J)、子电路(X)和宏、Behavioral器件(E,G)、传输线(T,U,W)等。这里值得注意的是MOS、JFET和MESFET的L和W的scale是m,而不是um。
    1 \8 q9 {2 q: g3 j# P分析的类型包括:直流、交流和瞬态分析。
    5 g" U; |/ L9 Q( [1.直流分析:
    $ c" K) P5 x  f/ u* g对DC、AC和TRAN分析将自动进行直流操作点(DC OP)的计算,但.TRAN UIC将直接设置初始条件,不进行DC OP的计算。
    " c% _! k8 p. |; U8 p7 |, Q.DC var1 start1 stop1 inc1 sweep var2 type np start2 stop2$ J9 [4 I8 i% L# o
    直流分析包含以下五种语句:' Z# ]2 v( _9 f6 T- ?
    .DC:直流扫描分析;6 P" a2 h+ w5 K: Z6 u
    .OP:直流操作点分析;& q  |4 }) H1 Q: r( s3 ]* h# {! E
    .PZ:Pole/Zero分析;( F+ B/ X5 L: @& b9 S! y! a9 N
    .SENS:直流小信号敏感度分析;! h6 v. v1 W' s9 G
    .TF:直流小信号传输函数分析。
    9 p+ \3 ?+ z; [* ]1 o2.交流分析:
    , X" ~8 E0 v- U8 Z3 a交流分析是指输出变量作为频率的函数。+ z  L! n' U% j  B
    .AC var1 start1 stop1 inc1 sweep var2 type np start2 stop2
    2 A9 g/ e7 u% P" b% W交流分析包括以下四种语句:
    1 w+ E. a$ a& p. A$ x  j7 v$ Z.NOISE:噪声分析;
    8 {$ w% i4 a; [4 g# a' R8 A9 y.DISTO:失真分析;
    3 R* ?9 D( p0 }8 [+ \3 s. }& `.NET:网络分析;
    - T- I  F3 h  z: }6 r8 S+ W# j.SAMPLE:采样噪声分析。
    4 G* ]8 v6 s7 a. h  b2 G1 r2 y3.瞬态分析:3 S/ D" z# P+ K4 P. l6 x4 C$ i& C
    瞬态分析是指计算的电路结果作为时间的函数。
      k: V' n, ?, y7 Z.TRAN tinc1 tstop1 tinc2 tstop2… START=.. UIC SWEEP..( y' V+ W) ~. I! n/ y+ V
    三、输出格式和子电路6 I9 I* N: j6 j1 ]8 s$ B
    (1) 输出命令包括:.PRINT、.PLOT、GRAPH、.PROBE和.MEASURE。0 X: N/ o, ~8 o! Q
    .PLOT antype ov1 ov2… plo1,phhi1…plo32,phi32
    $ Z- D1 ^* z9 @+ t4 T.PROBE ov1 ov2… ov32
    5 J9 g& H( |0 H- j! q5 w4 Q. G.PRINT antype ov1 ov2… ov32
    0 Q  D8 C% J/ {6 i$ _6 p有五种输出变量形式:
    ) U  N1 P: L! S: x% a5 X9 D4 m1. 直流和瞬态分析:
    : M2 }+ Z2 N% g$ z. S, e用于显示单个节点电压,支路电流和器件功耗。& ^& [: M7 \: H/ H  b, w+ T
    .print V(node) 或 .plot I(node),也可用.graph、.probe。: B, ]: @5 W4 B! c$ d% B# f: m2 K
    V(node)表示节点电压,I(node)表示节点电流,p(rload)表示在负载rload上的分析点的功耗。! ^6 G& l$ Y/ v7 [' V. a/ u, Q
    2. 交流分析:& `3 N- r& B' _
    用于显示节点电压和支路电流的实部、虚部和相位。
    4 u. c  g1 ~8 Q3 G: ?. h) S4 L4 fvi(node)表示节点电压的虚部,ip(node)表示节点电流的相位,vp(4,6)表示节点4,6间的相位角。
    0 ?+ I" k  X/ a- J3. 器件模版:8 {  X$ o! O* k& ~) ^9 G
    用于显示制定的器件节点的电压、支路电流和器件参数。
    , w1 ?3 t9 ?+ `5 p: X' I' U0 nlv16(m3)表示MOS管m3的漏电流,其他表示方式见手册。; B: d0 l- G* R% r
    4. MEASURE语句:
    ( e& o3 E% k( v% {2 P用于显示用户自定义的变量。" U" ~& ]9 X/ R6 h. ?# z; R9 n1 R1 b% Q
    可以采用的句法包括:raise,fall,delay,average,RMS,min,max,p-p等。
    # A& G% J; N" O& w7 I4 |5. 参数语句:
    7 U/ o% T6 W+ e6 k! n用于显示用户自定义的节点电压等表达式。
    9 [1 t& ]: F) C$ {; L+ l3 ?4 K9 T语法格式:.print tran out_var_name=PAR(‘expression’)+ ]' [3 I! v- e
    (2)还可以采用AvanWave进行波形输出,启动AvanWave的命令为:awaves <filename> &
    0 v) \5 h9 f! y! @(3)子电路:, r. h# ]& E# p& ^: }" ~' L: R4 y
    1. 采用.GLOBAL设置全局节点:- d" i( G$ v) ?6 l- {# s- ?
    .GLOBAL node1 node2 node3…
    - `- a: M* [% P) K2. 子电路语句.SUBCKT和.MACRO:
    8 \# S6 Y" g0 ?, d5 y( b! Q.SUBCKT subnam n1 n2 n3… parnam=val…7 s+ |3 Y! T, Q5 T6 u: h# L
    .MACRO subnam n1 n2 n3… parnam=val…$ _( m- L$ G/ k5 K
    子电路的调用:
    6 D* K$ @! n8 I: Z- s" v# C6 OXyyy n1 n2 n3… sunnam parnam=val… M=val' Q+ O9 T1 {# Y( m/ a/ v
    四、控制语句和option语句9 B2 N9 Z; _' j5 B2 E
    1.OPTION语句:
    7 R; k  t7 F; S8 ]; r/ U, g.options语句格式:.options opt1 opt2 opt3… opt=x- c1 f, }0 \4 g& a2 G' B# H
    一般在每个仿真文件中设置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定义的情况。
    2 l! b, t( i. {/ r0 a2.MODEL OPTION语句:
    , c1 [. m: d8 H$ W! ESCALE影响器件参数,如:L、W、area,SCALM影响model参数,如:tox、vto、tnom。0 ~) A# ~7 T" V4 V6 o  w
    五、仿真控制和收敛" G; p' {/ b4 Z- Z8 Y! A
    Hspice仿真过程采用Newton-Raphson算法通过迭代解矩阵方程,使节点电压和支路电流满足Kirchoff定律。迭代算法计算不成功的节点,主要是因为计算时超过了Hspice限制的每种仿真迭代的总次数从而超过了迭代的限制,或是时间步长值小于Hspice允许的最小值。. L( D5 ]/ ~& y' |
    (1) 造成Hspice仿真不收敛主要有“No Convergence in DC Solution”和“Timestep too Small”,其可能的原因是:5 a; H$ N% B3 u# w
    1.电路的拓扑结构:. R- X1 `3 ~% m4 x8 x1 Z# U
    电路拓扑结构造成仿真不收敛主要有:电路连线错误,scale、scalm和param语句错误,其他错误可以通过查找列表文件中的warning和errors发现。
    4 G0 `9 r+ I* p1 l" q解决的方法是:将电路分成不同的小模块,分别进行仿真;简化输入源;调整二极管的寄生电阻;调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。
    + W( w0 F1 J& m7 R: J8 I7 B& `' u2.仿真模型:
    9 V- h% f- K: e" L; |7 ]& u) }由于所有的半导体器件模型都可能包含电感为零的区域,因此可能引起迭代的不收敛。
    # U% J. X! d7 f$ e2 i8 o& p7 t解决的方法是:在PN结或MOS的漏与源之间跨接一个小电阻;将.option中默认的GMINDC、GMIN增大。
    3 F* x  v0 U# q3 T! O0 H3.仿真器的options设置:7 z; M3 U2 S3 @: r1 f4 N7 o
    仿真错误容差决定了仿真的精度和速度,要了解你所能接受的容差是多少。3 f0 f0 G6 @- |- O2 T/ R0 l
    解决的方法是:调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。
    9 h/ m- x. T6 z  j* N! h(2) 针对仿真分析中可能出现的不收敛情况进行分析:$ D$ H; ?. W' N5 L
    1.直流工作点分析:6 O- Y+ q7 Q/ z3 j( f
    每种分析方式都以直流操作点分析开始,由于Hspice有很少的关于偏置点的信息,所以进行DC OP分析是很困难的,分析结果将输出到.ic文件中。
    6 t9 U9 j: h' u. z% m" b4 X* }对DC OP分析不收敛的情况,解决方法是:删除.option语句中除acct,list,node,post之外的所有设置,采用默认设置,查找.lis文件中关于不收敛的原因;使
    . i% o8 ~, W8 m用.nodeset和.ic语句自行设置部分工作点的偏置;DC OP不收敛还有可能是由于model引起的,如在亚阈值区模型出现电导为负的情况。
    : y2 |* U6 A3 m* ^. y2.直流扫描分析:
    $ E- E; }4 \5 C1 P2 F: u8 X在开始直流扫描分析之前,Hspice先做DC OP计算,引起直流扫描分析不收敛的原因可能是快速的电压或电流变化,模型的不连续。5 ?! D- j8 D. t  G4 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 q5 F" I3 o  c
    3.AC频率分析:
    9 o7 A; m) J( I8 @& X. ?由于AC扫描是进行频率分析,一旦有了DC OP,AC分析一般都会收敛,造成不收敛的原因主要是DC OP分析不收敛,解决的方法可以参看前面关于DC OP的分析。
    * \8 y5 z& K- b4.瞬态分析:! \$ v/ z* |* Y' z1 h
    瞬态分析先进行直流工作点的计算,将计算结果作为瞬态分析在T0时刻的初始值,再通过Newton-Raphson算法进行迭代计算,在迭代计算过程中时间步长值是动态变化的,.tran tstep中的步长值并不是仿真的步长值,只是打印输出仿真结果的时间间隔的值,可以通过调整.options lvltim imax imin来调整步长值。( s% _& m3 W# e7 k' ~: s! H
    瞬态分析不收敛主要是由于快速的电压变化和模型的不连续,对于快速的电压变化可以通过改变分析的步长值来保证收敛。对模型的不连续,可以通过设置CAPOP和ACM电容,对于给定的直流模型一般选择CAPOP=4,ACM=3,对于level 49,ACM=0。
    * G2 Z: w2 B3 |9 B) s对瞬态分析,默认采用Trapezoidal算法,精度比较高,但容易产生寄生振荡,采用GEAR算法作为滤波器可以滤去由于算法产生的振荡,具有更高的稳定性。
      x3 M" L" _& a% ^) B( H六、输入语句
    ( f9 ]9 Y  C7 f( T对于.param语句,.param PARHIER=GLOBAL是默认的,使得参数可以按照Top-Down变化,.param PARHIER=LOCAL,可以是参数只在局部有效。
    " d7 g% W) E# G- M* Y对于.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>。: U0 o9 L! q5 @2 {8 y4 r0 [
    对于.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中增加分析语句。% f) J, X/ f" g) ^) J/ Z: H
    七、统计分析仿真
    4 @8 `& i5 M5 q/ k5 V( E9 A主要是对器件和模型进行Monte Carlo分析,随机数的产生主要依赖Gaussian、Uniform、Limit分析,通过.param设置分布类型,将dc、ac、tran设置为Monte Carlo分析,用.measure输出分析结果,如:9 R' ?- k0 a3 l, s3 g4 K* {
    .param tox=agauss(200,10,1)) N! w9 X3 N8 Z! m) a8 b7 I
    .tran 20p 1n sweep MONTE=20
    + j# H3 ?2 C  Y" O3 N. ]' C- o% N.model … tox=tox …" ~2 d4 W3 o6 {' _4 `
    其中,对Gaussian分析.param ver=gauss(nom_val,rel_variation,sigma,mult),: w3 w5 G  q) k6 }! j6 h* ~4 @
    .param ver=agauss(nom_val,abs_variation,sigma,mult),
    - _$ a2 w/ O0 v) F对Uniform分析,.param ver=unif(nom_val,rel_variation,mult),
    4 U' }! y7 M% I- o: h/ ?. `.param ver=aunif(nom_val,abs_variation,mult),
    0 `% m# P& O, c. K  L6 Q对Limit分析,.param ver=limit(nom_val,abs_variation),如果你拼错Gauss或Uniform、Limit,不会产生警告,但不将产生分布。
    ; v( k; r- J3 Y# Y. d- \
    8 {6 Q% K9 r6 r" `; i
    游客,如果您要查看本帖隐藏内容请回复

    " U" b1 Q' u4 j' s/ J; R; g7 ]! b: f

    该用户从未签到

    推荐
    发表于 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 | 只看该作者
    感谢分享         
    2 ~) F7 F6 q( D" r& x/ m
    头像被屏蔽

    该用户从未签到

    5#
    发表于 2007-9-16 00:04 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽

    该用户从未签到

    6#
    发表于 2007-9-17 12:15 | 只看该作者
    看到这里我感觉自已太渺小了,怎么就有这么多东西要我们去学的呢.刚出来的大学生也就见了几个电阻\电容而已,呵呵' x' x% A& ?6 Y
    要好好学着点啊
    alooha 该用户已被删除
    7#
    发表于 2007-9-17 15:43 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
    changxk0375 该用户已被删除
    8#
    发表于 2007-9-17 16:50 | 只看该作者
    提示: 作者被禁止或删除 内容自动屏蔽
  • TA的每日心情
    开心
    2019-12-3 15:20
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    9#
     楼主| 发表于 2007-9-17 16:54 | 只看该作者
    也不用太悲观,学校里学得不好,不一定就是我们自己的错,有些大环境是我们改变不了的。2 O8 p& `8 R! U# j' @4 P8 j! }6 h
    还好,年轻是最大的资本,任何时候我们都可以重来,只要你想学。
    ; F, v' \- `8 {2 J0 I7 y8 r7 J5 ~# l4 o5 ?" x( o
    [ 本帖最后由 allen 于 2007-9-17 16:57 编辑 ]

    该用户从未签到

    10#
    发表于 2007-11-10 00:21 | 只看该作者
    thanks

    该用户从未签到

    11#
    发表于 2008-2-18 10:04 | 只看该作者
    虚心学习

    该用户从未签到

    12#
    发表于 2008-3-20 14:43 | 只看该作者
    是啊..落后了呀

    该用户从未签到

    13#
    发表于 2008-9-6 22:30 | 只看该作者
    学习一下,谢谢先,顶顶顶顶顶顶顶顶顶顶

    该用户从未签到

    14#
    发表于 2008-9-17 21:27 | 只看该作者

    xiexie

    xiexie

    该用户从未签到

    15#
    发表于 2008-12-17 22:38 | 只看该作者
    谢谢分享!

    该用户从未签到

    16#
    发表于 2009-2-20 11:22 | 只看该作者
    多谢分享

    该用户从未签到

    17#
    发表于 2009-4-4 16:18 | 只看该作者
    谢谢!

    该用户从未签到

    18#
    发表于 2009-4-7 10:16 | 只看该作者
    下了,看看
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-11-22 18:26 , Processed in 0.218750 second(s), 29 queries , Gzip On.

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

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

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