Hspice应用讲解Hspice是一种通用电路分析程序,可用来进行集成电路和电子线路的分析模拟。它可以用来分析电路的非线性直流特性,线性交流小信号特性,非线性瞬态特性,温度特性等。其中,直流分析(.DC)不光可进行直流转移特性分析,还可进行直流工作点(.OP),直流小信号传输特性(.TF),直流小信号灵敏度(.SENS)分析;在进行交流分析(.AC)的同时还可进行噪声特性(.NOISE)和失真特性(.DISTO)分析;在进行瞬态分析(.TRAN)的同时还可进行傅立叶(.FOUR)分析;进行温度特性分析(.TEMP)以求得电路的温度特性。在进行交流分析和瞬态分析前先进行直流分析,以决定其非线性组件的线性化小信号模型和其初始条件。Hspice输入描述文件格式:Hspice的输入描述文件格式是一种自由格式,其输入的第一条语句必须是标题语句,且不能省略;最后一条语句必须是结束语句(.END),其余语句的顺序是任意的。在输入描述文件的任何地方都可插入注释语句(在语句前加“*”或“$”),程序只对注释语句进行原样打印而不进行任何处理。组件语句是说明该组件的拓扑关系和组件值的。每个组件给予一个组件名,组件名的第一个字母说明该组件的类型,Hspice并对各种类型的组件所对应的英文字母作了规定,组件名不能重复。组件的节点号可以用一正整数表示,也可以用网点名表示。模型语句是说明该组件的模型参数的。在模型语句中定义一组组件模型参数并赋予一个唯一的模型名,在组件语句中即可引用此模型名,表明此组件具有该组模型参数值。子电路是用一组组件语句来定义,程序会自动将这组组件插入到子电路被调用的地方,其大小和复杂性没有限制,并允许其包含其它子电路。在电路中不能包括短路的电压源和电感,开路的电流源和电容,电路中的每个节点都不能悬空。控制语句是控制程序的运行和规定分析及输出的内容。如温度语句,工作点分析语句,交流分析语句,瞬态分析语句,打印语句,绘图语句和可选项语句等。Hspice的每条语句都有若干个字段,字段之间由空格或符号隔开,多余的空格将被忽略,字段内不能随意加空格,即字段不能断开。字段可以是字符段或数字段,字符段必须以字母开头,长度不超过8个字符,多余的字符将被忽略,且由用户定义的字符段中不能包括Hspice输入描述语言中已定义的字符段(即保留字);数字段可以为整数或浮点数,其后可直接跟下列比例因子:K=1E3,MEG=1E6,G=1E9,T=1E12,M=1E-3,U=1E-6,N=1E-9,P=1E-12,F=1E-15,MIL=25.4E-6比例因子必须紧跟在数字后面,不是比例因子的字母及比例因子之后的字母均被忽略。如一个语句一行写不完,可在下一行接着写,该行称为续行,续行的第一列必须是“+”号,续行数没有限制。Hspice模拟仿真流程:标题语句组件语句模型语句子电路.SUBCKT组件语句,模型语句子电路调用.ENDS语句控制语句结束语句NYNYNYYN调用Hspice程序读入.sp(i)文件文件检错是否要分析直流传输特性或工作点直流传输特性分析直流工作点分析是否要分析交流特性交流特性分析是否要分析瞬态特性直流传输特性分析直流工作点分析瞬态特性分析是否要分析温度特性输出结果设定温度Hspice输出文件类型如下表:输出文件类型扩展名列表输出,其内容包括仿真所用的名字和版本;Meta-Software单元信息;输入文件名;使用者名;注册资料;拷贝的输入网点文件;节点计算;操作点参数;每个source和sub-circuit的电压降,电流,功耗的详细情况;由.PLOT语句产生低分辩率图表;.PRINT语句结果;.OPTIONS语句结果。.lis,或使用者指定瞬态分析结果,它包含瞬态分析的资料结果,是在输入文件同时有.TRAN和.OPTIONPOST语句时产生的一个分析记录文件。.tr#+瞬态分析测量结果,它是.MEASURETRAN语句分析结果。.mt#DC分析结果,包含其使用的步长或在.DC语句中定义的扫描频率下的分析结果,包括噪声,失真或网络分析。.sw#+DC分析测量结果,它是.MEASUREDC语句分析结果。.ms#AC分析结果,包含一个频率功能的输出变量列表,符合其后的.AC语句的使用者规格。.ac#+AC分析测量结果,它是.MEASUREAC语句分析结果。.ma#硬拷贝图表资料(从meta.cfgPRTDEFAULT).gr#++数字输出,包含从U单元A2D转换选项得到的转换数字数据。.a2dFFT分析图表数据,包含显示FFT分析波形的图表数据。.ft#+++分支电路交叉列表,它说明了在符合分支电路定义下调用的分支电路节点名。.pa#输出情况,包含运行时间结果:每个CPU状态的开始和结束时间;废弃的选择项设置警告;预先检查注册资料,输入语法,模型和电路拓扑结构的情况;对困难电路使用的Hspice收敛方法。.st#操作点节点电压(初始状态),对于.SAVE语句。.ic注意:#表任一扫描编号或硬拷贝文件编号。+只有在使用.POST语句产生图表数据才会生成。++需要.GRAPH语句或在meta.cfg文件中有一文件输出指针。在PC版的Hspice中此文件不能产生。+++只有在使用.FFT语句才会生成。Hspice基本组件描述:在下列描述中,“[]”内的域为可选项,其余的域为必须的;name1,name2为可选的字符串,字符串最多可有八个字符(包括首字符),但其中不能出现分隔符(如空格,等号,逗号等)。1.电阻:RnameN1N2value[TC=TC1[,TC2]]R为关键词,N1,N2为与电阻相连的两节点的节点号,电阻值可为正值或负值,其单位为欧姆。TC1,TC2为电阻的温度系数,电阻值按下式随温度而变化:R(T)=R(TD)·(1+TC1·(T-TD)+TC2·(T-TD)2)当两可选参数TC1,TC2未给出时,程序将自动赋零。T0为标称温度,可由.OPTIONS控制语句进行修改。2.电容:CnameN+N-[PLOY]value[C1[C2…]][IC=v]C为关键词,N+,N-表电容的正负节点,可选项PLOY表示该电容是一个随电压变化的非线性电容,其值可由下式求得:C(V)=value+C1·V+C2·V2+…+Cn·Vn,其中n≤20。[IC=]项为初始条件项,其作用将视瞬态分析语句中是否有UIC(UseInitialCondition)关键词而不同:若瞬态分析语句中有UIC项,则进行瞬态分析时,将以IC项所给值作为该组件的瞬态分析初始条件。3.电感:LnameN+N-[PLOY]value[L1[L2…]][IC=i]L为关键词,N+,N-表电感的正负节点,电流从正节点流到负节点。可选项PLOY表示该电感是一个随电流变化的非线性电感,其值可由下式求得:L(V)=value+L1·I+L2·I2+…+Ln·In,其中n≤20。[IC=]项为初始条件项,其作用将视瞬态分析语句中是否有UIC(UseInitialCondition)关键词而不同:若瞬态分析语句中有UIC项,则进行瞬态分析时,将以IC项所给值作为该组件的瞬态分析初始条件。4.互感:Kname1Lname2Lname3valueK为关键词,Lname2和Lname3为两个耦合电感名,耦合系数的取值范围为大于0小于1,每个电感的第一个节点作为同名端。5.传输线:TnameN1N2N3N4Z0=valueTD=val2[F=freq[NL=nlen]]+[IC=v1,i1,v2,i2]T为关键词,N1,N2是埠1的两个节点,N3,N4是埠2的两个节点。Z0为特性阻抗值,TD为传输延迟值,F为频率,NL相当于在频率F时传输线波长的归一化电学长度。如指定F而省去NL,则NL缺省值为0.25。传输线的传输延迟值必须以下列两种方法中的一种输入:1).直接给出TD值;2).由F和NL两项求出,即TD=NL/F。v1,i1,v2,i2分别为埠1和端口2的电压,电流的初始值。6.线性和非线性受控源:Hspice包含四种线性和四种非线性受控源,它们分别为:⑴.线性电压控制电流源:I=G·V,GnameN+N-NC+NC-value⑵.线性电压控制电压源:V=E·V,EnameN+N-NC+NC-value⑶.线性电流控制电流源:I=F·I,FnameN+N-Vnamevalue⑷.线性电流控制电压源:V=H·I,HnameN+N-VnamevalueG,E,F,H分别为跨导,电压增益,电流增益和互阻因子。N+,N-分别为受控源的正负节点,NC+,NC-分别为控制电压源的正负节点,Vname为控制电流所流过的电压源的名称,语句中的value值分别为各受控对应的跨导值,电压增益值,电流增益值和互阻因子值。Hspice允许以一组多项式系数来描述非线性受控源,并且控制变量可以是多维的,维数与系数的数目没有限制,但系数的意义随维数的不同而改变。其语句格式为:⑴.非线性电压控制电流源:Gnamen+n-POLY(nd)nc1+nc1-…ncnd+ncnd-P0[P1…][IC=控制电压初值]⑵.非线性电压控制电压源:Enamen+n-POLY(nd)nc1+nc1-…ncnd+ncnd-P0[P1…][IC=控制电压初值]⑶.非线性电流控制电流源:Fnamen+n-POLY(nd)Vname1…VnamendP0[P1…][IC=控制电压初值]⑷.非线性电流控制电压源:Hnamen+n-POLY(nd)Vname1…VnamendP0[P1…][IC=控制电压初值]n+,n-为受控源的正负节点,POLY为非线性受控源关键词,nd为控制变量维数,nc1+,nc1-…ncnd+,ncnd-分别为nd个控制电压源的正负节点,Vname1…Vnamend分别为nd个控制电流所流过的电压源的名称,P0,P1…是多项式的系数。初始条件IC项给出受控源的初始条件,计算时将先使控制变量取IC项所给值,求电路的直流工作点;收敛后继续迭代,再求出控制变量的最终精确解。若不给IC项,则控制变量的初始值为零。以电压控制电压源为例,如控制电压为一维的,则受控电压为:V(VX)=P0+P1VX+P2VX2+P3VX3+…+PnVXn;如控制电压为二维的,则受控电压为:V(VX,Vy)=P0+P1VX+P2Vy+P3VX2+P4VXVy+P5Vy2+P6VX3+P7VX2Vy+P8VXVy2+P9Vy3+…如控制电压为三维的,则受控电压为:ZXYXXZYXZYXVVPVVPVPVPVPVPPVVVV65243210),,(21321221131029827YXZXYXXZZYYVVPVVPVVPVPVPVVPVP42031921821731615214XZZYZYYZYXZXVPVPVVPVVPVPVVVPVVP7.独立电压源和电流源:VnameN+N-[[DC]value][ACmagval[phaseval]]+[PULSE(v1v2[td[tr[tf[pw[per]]]]])]or[SIN(vova[freq[td[kd]]])]or[EXP(v1v2[td1[t1[td2[t2]]]])]or[PWL(t1v1t2v2…tnvn)]or[SFFM(vovafreq[mdi[fs]])]or[AM(vovafreq[fs[td]])]或InameN+N-[[DC]value][ACmagval[phaseval]]+[PULSE(i1i2[td[tr[tf[pw[per]]]]])]or[SIN(ioia[freq[td[kd]]])]or[EXP(i1i2[td1[t1[td2[t2]]]])]or[PWL(t1i1t2i2…tnin)]or[SFFM(ioiafreq[mdi[fs]])]or[AM(ioiafreq[fs[td]])]V和I为独立电压源和电流源的关键词,N+和N-为电源的正负节点,这里规定电流源的方向是从正节点经电源内部流向负节点。一个独立源,可以同时