HSPICE 简介.ppt_第1页
HSPICE 简介.ppt_第2页
HSPICE 简介.ppt_第3页
HSPICE 简介.ppt_第4页
HSPICE 简介.ppt_第5页
已阅读5页,还剩59页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HSPICE 简介,周伶俐 2006/05/31,一.HSPICE 简介,SPICE (Simulation Program for Integrated Circuits Emphasis) PSpice (MicroSim Corp.) PC version of SPICE HSpice (Avant!.) runs on workstations and larger computers,Hspice和Pspice的区别,Hspice可以支持sun,hp,sgi,ibm,ux,pc(win2000,win98,nt,linux)支持多线程工作,sun-mt,hp-mt,pc-mt .

2、不过由于两者的引擎都是脱胎于spcie2g.5所以在运算能力上差别不是很大,但是hspice的功能要比pspice强大,特别是在收敛上面加了很多option,由于hspice在业界20多年,有着强大的model支持,使它在业界有着特别良好的应用,以至于成为了业界的一个标准。,Hspice和Pspice的区别,缺点就是,对内存敏感,内部是frotran写的采用类似c指针的方式对内存地址进行操作,大概只可以做5000个晶体管,速度很慢 其实在有效的2000个晶体管以上的电路就应该考虑用cadence,主要比起Hspice来说,cadence在电路收敛性问题比较少。(后面会讲到收敛性问题),简单电路

3、正向设计的典型流程 功能定义 行为设计 逻辑级电路设计得到由基本逻辑单元组成的电路(数字电路) 逻辑级仿真(迭代) 选择合适的工艺库。把各基本功能单元映射至其上;或设计各单元晶体管级电路得到电路级网表,电路级仿真:验证各单元电路是否具有期望的功能,性能估计。(迭代) 版图设计、DRC, LVS 提取版图网表,进行后仿真:验证功能,估计性能。(迭代) Hspice主要应用于电路级仿真、分析。可以辅助调整电路参数。得到功耗、延时等性能估计。,Hspice的流程,后处理,Hspice有哪些功能?,电路级和行为级仿真 直流特性分析、灵敏度分析 交流特性分析 瞬态分析 电路优化(优化元件参数) 温度特性

4、分析 噪声分析 傅立叶分析 Monte Carlo, 最坏情况,参数扫描,数据表扫描 功耗、各种电路参数(如H参数、T参数、s参数)等可扩展的性能分析,Hspice的输入网单文件,文件结构:,Hspice的输入网单文件,例(The Star-Hspice netlist for the RC network circuit) : *title A SIMPLE AC RUN .OPTIONS LIST NODE POST .OP .AC DEC 10 1K 1MEG .PRINT AC V(1) V(2) I(R2) I(C1) V1 1 0 10 AC 1 R1 1 2 1K R2 2 0

5、1K C1 2 0 .001U .END,举例,SIMPLE RTL INVERTER $ Title *Circuit Description VCC 4 0 5 VIN 1 0 PULSE 0 5 2NS 2NS 2NS 30NS RB 1 2 10K Q1 3 2 0 Q1 RC 3 4 1K .MODEL Q1 NPN BF 20 RB 100 TF .1NS CJC 2PF $ Device Model * Analysis .DC VIN 0 5 0.1 .TRAN 1NS 100NS *Output .PLOT DC V(3) .PLOT TRAN V(3) (0,5) .PRI

6、NT TRAN V(3) .END $Necessary,二. 词法,1. 不区分大小写(case insensitive) 2. 标题行第一行 3. 注释:* or $ 4. 续接符:+ 5. 非线性器件要用 .MODEL statement. 6. 0, GND, GND!, GROUND 表示全局地. 7. 表示数量的词尾: T(= 1E12 or 10+12); G(= E9); MEG(= E6); K(= E3); M(= E-3); U(= E-6); N(= E-9); P(= E-12), and F(= E-15),默认是国际单位。(关键不要搞错M和MEG) 8. Outp

7、ut variables:(后面会有详细的讲解) Voltage between two nodes: v(n1,n2) Voltage of a node relative to ground: v(n1) Current through an independent source: i(vin),*与$注释的区别,一个星号(*)或一个美元符($)作为第一个非空行字符表明一个注释说明 语法 * 或 $ 例子 *RF=1K GAIN SHOULD BE 100 $ MAY THE FORCE BE WITH MY CIRCUIT VIN 1 0 PL 0 0 5V 5NS $ 10v 50ns

8、 R12 1 0 1MEG $ FEED BACK 你可以把一个注释说明放在电路描述的任何地方。 *必须在一行的第一个空格处。 $用作说明并不必在一行第一个空格处(例如,在同一行紧跟Star-Hspice输入的说明)。$必须在一个空格或逗号之前,如果它不是第一个非空白字符。 文件或节点名内允许使用$。,三 “预编译”指令,1 .INCLUDE Statement,.INCUDE语句:引用一个文件,被引用的文件置于引用文件前。 例: LNA .include “me98xxxx/model.sp“ ,2. .PARAM statement,Syntax: .PARAM = Example: .P

9、ARAM width = 20u .PARAM length = sqrt(width)*1.65 M1 3 2 0 0 NMOS width length,3. .DATA statement,.PARAM width = 10u .PARAM length = 6u .PARAM RL = 1KM1 3 2 0 0 NMOS width length Rload 3 5 RL .TRAN 1n 1000n SWEEP DATA=D1 .AC DEC 10 1hz 1GHz SWEEP DATA=D1 .DATA D1 width length RL +50u 20u 1K +60u 10u

10、 10K +100u 25u 1K .ENDDATA,4. .ALTER,可以使用.ALTER语句并使用不同的参数和数据以返回一个仿真结果。 语法 .ALTER title_string是任何最长至72个字母的字符串。.alter运行所需的合适的字符串在每个输出列表文件和图形数据文件(.tr#)的标题部分打印出来。,.ALTER,Vin node1 node2 dc h1 .alter change VIN=5 .PARAM h1=5V .ALTER FF .DEL LIB D:TESTPROCESS0.6U BCD V0.1PHASE1.lib TT .LIB D:TESTPROCESS0.

11、6U BCD V0.1PHASE1.lib FF SS TT FF SF FS,四 网表输入,1. The most important rules,no duplicate nodes 不能重复定义节点 zero for your ground node 地确定是0 no floating nodes 不要有悬空节点,2. Node names,对于仿真中关键的节点最好给一个有意义的命名 节点名字的有意义化会方便你直接观看输出的结果,避免再回到图中对照。,3. 元器件描述,Vxx独立电压源 Ixx独立电流源 Exx电压控制电压源 Gxx电压控制电流源 Hxx电流控制电压源 Fxx电流控制电流

12、源 Sxx电压控制开关 Wxx电流控制开关 Rxx电阻 Cxx电容 Lxx电感 Kxx互感 Dxx二极管 Qxx三极管 MxxMOS JxxJFET Xxx模块,3. 元器件描述(续)几种常用电源,Sinusoidal sources Vname N1 N2 SIN(VO VA FREQ TD THETA PHASE) Vname = VO + VA exp-THETA.(t - TD) sin2pi.f (t - TD) + (Phase/360) PWL Vname N1 N2 PWL(T1 V1 T2 V2 T3 V3 .) Example: Vgpwl 1 2 PWL(0 0 10U

13、5 100U 5 110U 0) r 间隔时间 Pulse Vname N1 N2 PULSE(V1 V2 TD Tr Tf PW Period),4.子电路,下面是由前面举例的CMOS反相器组成的三级反相器链网表: .global vdd .SUBCKT INV IN OUT wn=1.2u wp=1.2u Mn out in 0 0 NMOS W=wn L=1.2u Mp out in vdd vdd PMOS W=wp L=1.2u .ENDS X1 IN 1INV WN=1.2U WP=3U X2 1 2 INV WN=1.2U WP=3U X3 2 OUT INV WN=1.2U W

14、P=3U CL OUT01PF VCCVDD 0 5V ,5. .GLOBAL xx,This statement causes all nodes numbered xx, whether in the main circuit or a subcircuit, to be connected together. 注意:Global的使用需格外小心,一般仅把电源定义成Global,6. .LIB 语句,LIB 语句: .lib filename entryname 该语句根据文件路径和文件名来调用一个库文件,一般该文件包含器件模型。 例 .lib MODELS cmos1 MODELS文件:

15、 .MODEL CMOS1 nmos 我们仿真中加库的语句应该是 .LIB D:TESTPROCESS0.6U BCD V0.1PHASE1.LIB TT,五常用仿真类型,1. .OP Statement,计算直流工作点指令,对于分析电路很有用(要会看.lis文件) 一般在任何其它仿真之前都需要计算直流工作点 .op time看某一时刻的各个器件和电源的状态。.op vol time某一时刻所有节点电压,.op cur time某一时刻所有器件和电源的电流。.ac.dc是初始工作点,.tran默认时间是0。,2. .DC Statement,对参数和独立电源扫描 .DC SRCname STA

16、RT STOP STEP 注意: 1)对独立源扫描时,SRCname为电源名,而非节点名 2)仿真迟滞特性要正、负双向扫描, 如: .DC Vin 0 5 0.1 .DC Vin 5 0 -0.1 3) 注意对两个量的扫描,后面的是外循环,.DC对参数的扫描,对参数的扫描 例如:vin 1 2 dc H1 .param H1=10v .dc H1 0 20 1 对温度的扫描: .dc temp -20 80 1,3. .TRAN Statement,.TRAN: .TRAN var1 START=start1 STOP=stop1 STEP=incr1 or .TRAN tincr1 tsto

17、p1 + 起始时刻和步长都指的是输出打印的时刻点,计算的时间步长由hspice自己决定。UIC参数表示使用.IC语句指定的节点初始值。 例:.TRAN .1NS 25NS 1NS 40NS START=10NS 025ns,步长0.1ns,25ns-40ns,步长1ns;从10ns开始输出结果。 .TRAN 1NS 100NS $以1ns的步长输出到100ns,4. .AC Statement,.AC: 一般频域扫描: .AC type np fstart fstop Or .AC type np fstart fstop Or .AC var1 START = start1 STOP = s

18、top1 STEP = incr1 例:.AC DEC 10 1K 100MEG 1kHz-100MHz,每10倍频10个采样点。,Ac type,一共有4种 DEC decade variation. OCT octave variation. LIN linear variation. POI list of points. 例如 .AC DEC 10 1K 100MEG .AC LIN 100 1 100HZ .AC DEC 10 1 10K SWEEP cload LIN 20 1pf 10pf .AC DEC 10 1 10K SWEEP rx POI 2 5k 15k,5. .NO

19、ISE AC Noise Analysis,噪声分析: 用来计算各个器件的噪声对输出节点的影响并给出其均方根并输出,可完成.AC语句规定的各频率的计算,应在.AC分析之后。 .NOISE ovv srcnam inter Ovv输出变量,srcnam输入源,inter频率间隔 例:.title ac sweep example .OPTIONS POST R1 in 1 5 C1 1 0 500pf V1 IN 0 0 AC=10V,37 .AC OCT 10 1 100MEG .noise v(1) v1 20分析1点电压的噪声情况,噪声源为V1端口 .END,Lis文件中输出的噪声分析结果

20、,1 * Star-HSPICE - 1999.4 (19991220) 22:12:12 04/16/2002 pcnt * .title ac sweep example * noise analysis tnom= 25.000 temp= 25.000 * frequency = 1.0000 hz * resistor squared noise voltages (sq v/hz) element 0:r1 total 8.233e-20 rx 5.0000 * total output noise voltage = 8.233e-20 sq v/hz = 286.9260p v

21、/rt hz transfer function value: v(1)/v1 = 1.0000 equivalent input noise at v1 = 286.9260p /rt hz * the results of the sqrt of integral (v*2 / freq) from fstart upto 1.0000 hz. using more freq points results in more accurate total noise values. * total output noise voltage = 0. volts * total equivale

22、nt input noise = 0. .,六输出及控制,1. .PRINT, .PLOT and .PROBE,.PRINT:在输出的list文件中打印数字的分析结果,如果.OPTIONS中有POST则同时输出到post-processor中。 .PLOT:在输出的list文件中打印低分辨率的曲线(由ASCII字符组成),如果.OPTIONS中有POST则同时输出到post-processor中。 .GRAPH:生成用于打印机或PostScript格式的高分辨率曲线。 .PROBE:把数据输出到post-processor,而不输出到list文件。,.PRINT, .PLOT and .PR

23、OBE,Examples: .PLOT DC V(1,2) V(3) I(Vmeas) .PRINT TRAN V(3,1) I(Vmeas) .PLOT AC VM(3,0) VDB(4,2) VM(2,1) VP(3,1) IR(V2) 注意:使用par计算参数的值 例:print dc i1=par(V(X1.node3),输出某个器件的流过的电流,可以直接输出也可以通过间接的方法 间接的方法就是电路中串联0电阻和0电压源来看某个支路或者某个器件上的电流。 直接的方法有两种 1. 利用里面规范的语句看器件的电流 BJT ic( ) ib( ) ie( ) MOS id( ) ig( )

24、is( ) Diobe i( ) RES i( ) 例:.print dc ic(q1) 2.利用.par语句,输出某个器件的流过的电流,.print i1=par(i1(Q118) i2=par(i1(r1) I1,i2,i3,i4对于不同的器件有不同的含义,具体如下,输出某个器件的流过的电流,输出某个器件的流过的电流,输出某个器件的流过的电流,输出某个器件的流过的电流,输出某个器件的流过的电流,gain,Vin node1 node2 dc 10 ac 1 .ac dec 10 1k 1meg .print vdb(vout) .print vdb(vout/vin) .print ac

25、gain=par(vdb(vout) Vout是输出节点。,2. Options statement,.OPTIONS: 该语句允许用户重新设置程序的参数或控制程序的功能。常用的一些如下: node: 列出个节点的元件端点,便于查错; post: 使输出数据可以使用 AvantWaves 浏览(即将数据输出到post processor; list: 列出元件列表; MEASDGT:.MEASURE语句输出的有效数字位数 语法:MEASDGT = x,The value of x is typically between 1 and 7, although youcan set it as h

26、igh as 10. The default value is 4.0.,2. Options statement,例:.option post probe AvantWaves只观察.probe语句输出的变量。 除了以上的还有其它的参数详细hspiceguide中的P387页。 常用的是fast,bypass=0 加速仿真,但是会牺牲精度。(P426页),3. .MEASURE statement,使用.MEASURE语句去修改信息和定义连续的仿真结果 .MEASURE语句打印使用者定义的一个电路的电气规范并大量地用于最优化。规范包括在一个特定的时间内的传播,时延,上升时间,下降时间,峰间(

27、peak-to-peak)电压,最小和最大电压和大量使用者自己定义的变量。带有错误模式和GOAL参数,.MEASURE也广泛地用于组件值的优化和为参数模型寻找合适的测量数据。其结果保存在*.mt0文件中。,1. .SAVE and .LOAD,.SAVE语句 .SAVE语句在一个使用者规定的文件内存储一个电路的工作点。接着你可以为接下来的仿真使用.LOAD语句以输入此文件的内容,以获得快速的DC 收敛。缺省情况下常常存储工作点,即使Star-Hspice输入文件不包含一个.SAVE语句。为了不存储工作点,规定.SAVE LEVEL=NONE。 你可以规定工作点数据作为一个.IC语句保存或者一个

28、.NODESET语句保存。 语法: .SAVE ,1. .SAVE and .LOAD,.LOAD语句 使用.LOAD语句去输入与.SAVE语句存储在一起的文件的内容。与.SAVE语句存储在一起的文件在此点包含工作点的信息,在分析中.SAVE语句被执行。 不要在连接的网表文件中使用.LOAD语句。 语法 .LOAD 详细见中文版的P121和P122,2. .IC or .NODESET,This statement provides an alternative way to specify initial conditions of nodes (and thus over capacito

29、rs). .IC Vnode1 = value Vnode2 = value etc. .NODESET Vnode1 = value Vnode2 = value etc.,sweep,参数扫描,可以扫描data和参数(包括temp) 例如 .TRAN 200P 20N SWEEP TEMP -55 75 10 .temp -55 75 10 .TRAN 200P 20N .TRAN 1n 100n SWEEP DATA=devinf .DATA devinf width length thresh cap + 50u 30u 1.2v 1.2pf + 25u 15u 1.0v 0.8pf

30、+ 5u 2u 0.7v 0.6pf .ENDDATA,八经验谈,1. 注释及版本管理的问题,这个跟计算机程序源代码管理十分类似。 好的注释为你减少错误的可能性和为别人减少读懂你仿真的时间 好的版本管理使你的很方便的从改错的或者改糟糕的版本恢复。,2善用.op,Op会输出所有的工作点信息,这样方便你分析电路的错误,防止出现因为管子工作状态不正常而引起的电路工作不正常,它也可以提醒我们电路工作中管子的状态的重要性。,3. 常见的错误,Failure to converge (OP and DC) The DC solver uses an iterative method to find the

31、 operating point, but some circuits exist which have no or multiple operating points. The best solution is to perform hand analysis of your circuit to make sure that you havent done this. No DC Path to ground (OP and DC) This often happens with floating MOSFET gates. Just add a resistor between the node and ground, or use the .IC or .NODESET commands to create an initial condition. Be warned, however, that .NODESET

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论