一、HSPICE基础知识
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等进行仿真,以便得到精确的结果。
本文将从最基本的设计和使用开始,逐步带领读者熟悉Hspice的使用,并对仿真结果加以讨论,并以一个运算放大器为例,以便建立IC设计的基本概念。在文章的最后还将对Hspice的收敛性做深入细致的讨论。
Hspice输入网表文件为.sp文件,模型和库文件为.inc和.lib,Hspice输出文件有运行状态文件.st0、输出列表文件.lis、瞬态分析文件.tr#、直流分析文件.sw#、交流分析文件.ac#、测量输出文件.m*#等。其中,所有的分析数据文件均可作为AvanWaves的输入文件用来显示波形。
表1 Hspice所使用的单位
独立电压和电流源包括:
1. 直流源(DC):
电压源Vxxx n+ n- dcval
电流源 Ixxx n+ n- dcval
2. 交流源(AC):Vxxx n+ n- AC=acmag,acphase
3. 瞬态源(随时间变化):
脉冲源:pulse v1 v2 td tr tf pw per
线性源:pwl t1 v1 <t2 v2 t3 v3…>
正弦源:sin vo va freq td damping phasedelay
4. 混合源:可以包括以上所有的形式,如:VIN 13 2 0.001 AC 1 SIN(0 1 1Meg)
二、输入网表文件
TITLE
.INCLUDE
.LIB MACRO
元件描述
信号源描述
分析命令
测量命令
.ALTER
.END
图1 输入网表(Netlist)文件标准格式
二、有源器件和分析类型
有源器件包括二极管(D)、MOS管(M)、BJT管(Q)、JFET和MESFET(J)、子电路(X)和宏、Behavioral器件(E,G)、传输线(T,U,W)等。这里值得注意的是MOS、JFET和MESFET的L和W的scale是m,而不是um。
分析的类型包括:直流、交流和瞬态分析。
1.直流分析:
对DC、AC和TRAN分析将自动进行直流操作点(DC OP)的计算,但.TRAN UIC将直接设置初始条件,不进行DC OP的计算。
.DC var1 start1 stop1 inc1 sweep var2 type np start2 stop2
直流分析包含以下五种语句:
.DC:直流扫描分析;
.OP:直流操作点分析;
.PZ:Pole/Zero分析;
.SENS:直流小信号敏感度分析;
.TF:直流小信号传输函数分析。
2.交流分析:
交流分析是指输出变量作为频率的函数。
.AC var1 start1 stop1 inc1 sweep var2 type np start2 stop2
交流分析包括以下四种语句:
.NOISE:噪声分析;
.DISTO:失真分析;
.NET:网络分析;
.SAMPLE:采样噪声分析。
3.瞬态分析:
瞬态分析是指计算的电路结果作为时间的函数。
.TRAN tinc1 tstop1 tinc2 tstop2… START=.. UIC SWEEP..
三、输出格式和子电路
(1) 输出命令包括:.PRINT、.PLOT、GRAPH、.PROBE和.MEASURE。
.PLOT antype ov1 ov2… plo1,phhi1…plo32,phi32
.PROBE ov1 ov2… ov32
.PRINT antype ov1 ov2… ov32
有五种输出变量形式:
1. 直流和瞬态分析:
用于显示单个节点电压,支路电流和器件功耗。
.print V(node) 或 .plot I(node),也可用.graph、.probe。
V(node)表示节点电压,I(node)表示节点电流,p(rload)表示在负载rload上的分析点的功耗。
2. 交流分析:
用于显示节点电压和支路电流的实部、虚部和相位。
vi(node)表示节点电压的虚部,ip(node)表示节点电流的相位,vp(4,6)表示节点4,6间的相位角。
3. 器件模版:
用于显示制定的器件节点的电压、支路电流和器件参数。
lv16(m3)表示MOS管m3的漏电流,其他表示方式见手册。
4. MEASURE语句:
用于显示用户自定义的变量。
可以采用的句法包括:raise,fall,delay,average,RMS,min,max,p-p等。
5. 参数语句:
用于显示用户自定义的节点电压等表达式。
语法格式:.print tran out_var_name=PAR(‘expression’)
(2)还可以采用AvanWave进行波形输出,启动AvanWave的命令为:awaves <filename> &
(3)子电路:
1. 采用.GLOBAL设置全局节点:
.GLOBAL node1 node2 node3…
2. 子电路语句.SUBCKT和.MACRO:
.SUBCKT subnam n1 n2 n3… parnam=val…
.MACRO subnam n1 n2 n3… parnam=val…
子电路的调用:
Xyyy n1 n2 n3… sunnam parnam=val… M=val
四、控制语句和option语句
1.OPTION语句:
.options语句格式:.options opt1 opt2 opt3… opt=x
一般在每个仿真文件中设置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用于屏蔽网表文件中要保护的信息,.optionbypass=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.MODEL OPTION语句:
SCALE影响器件参数,如:L、W、area,SCALM影响model参数,如:tox、vto、tnom。
五、仿真控制和收敛
Hspice仿真过程采用Newton-Raphson算法通过迭代解矩阵方程,使节点电压和支路电流满足Kirchoff定律。迭代算法计算不成功的节点,主要是因为计算时超过了Hspice限制的每种仿真迭代的总次数从而超过了迭代的限制,或是时间步长值小于Hspice允许的最小值。
(1) 造成Hspice仿真不收敛主要有“No Convergence in DC Solution”和“Timestep too Small”,其可能的原因是:
1.电路的拓扑结构:
电路拓扑结构造成仿真不收敛主要有:电路连线错误,scale、scalm和param语句错误,其他错误可以通过查找列表文件中的warning和errors发现。
解决的方法是:将电路分成不同的小模块,分别进行仿真;简化输入源;调整二极管的寄生电阻;调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。
2.仿真模型:
由于所有的半导体器件模型都可能包含电感为零的区域,因此可能引起迭代的不收敛。
解决的方法是:在PN结或MOS的漏与源之间跨接一个小电阻;将.option中默认的GMINDC、GMIN增大。
3.仿真器的options设置:
仿真错误容差决定了仿真的精度和速度,要了解你所能接受的容差是多少。
解决的方法是:调整错误容差,重新设置RELV,ABSV,RELI,ABSI,RELMOS,ABSMOS等。
(2) 针对仿真分析中可能出现的不收敛情况进行分析:
1.直流工作点分析:
每种分析方式都以直流操作点分析开始,由于Hspice有很少的关于偏置点的信息,所以进行DC OP分析是很困难的,分析结果将输出到.ic文件中。
对DC OP分析不收敛的情况,解决方法是:删除.option语句中除acct,list,node,post之外的所有设置,采用默认设置,查找.lis文件中关于不收敛的原因;使
用.nodeset和.ic语句自行设置部分工作点的偏置;DC OP不收敛还有可能是由于model引起的,如在亚阈值区模型出现电导为负的情况。
2.直流扫描分析:
在开始直流扫描分析之前,Hspice先做DC OP计算,引起直流扫描分析不收敛的原因可能是快速的电压或电流变化,模型的不连续。
解决的方法是:对于电压或电流变化太快,通过增加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改变仿真的范围。
3.AC频率分析:
由于AC扫描是进行频率分析,一旦有了DC OP,AC分析一般都会收敛,造成不收敛的原因主要是DC OP分析不收敛,解决的方法可以参看前面关于DC OP的分析。
4.瞬态分析:
瞬态分析先进行直流工作点的计算,将计算结果作为瞬态分析在T0时刻的初始值,再通过Newton-Raphson算法进行迭代计算,在迭代计算过程中时间步长值是动态变化的,.tran tstep中的步长值并不是仿真的步长值,只是打印输出仿真结果的时间间隔的值,可以通过调整.options lvltim imax imin来调整步长值。
瞬态分析不收敛主要是由于快速的电压变化和模型的不连续,对于快速的电压变化可以通过改变分析的步长值来保证收敛。对模型的不连续,可以通过设置CAPOP和ACM电容,对于给定的直流模型一般选择CAPOP=4,ACM=3,对于level 49,ACM=0。
对瞬态分析,默认采用Trapezoidal算法,精度比较高,但容易产生寄生振荡,采用GEAR算法作为滤波器可以滤去由于算法产生的振荡,具有更高的稳定性。
六、输入语句
对于.param语句,.param PARHIER=GLOBAL是默认的,使得参数可以按照Top-Down变化,.param PARHIER=LOCAL,可以是参数只在局部有效。
对于.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>。
对于.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中增加分析语句。
七、统计分析仿真
主要是对器件和模型进行Monte Carlo分析,随机数的产生主要依赖Gaussian、Uniform、Limit分析,通过.param设置分布类型,将dc、ac、tran设置为Monte Carlo分析,用.measure输出分析结果,如:
.param tox=agauss(200,10,1)
.tran 20p 1n sweep MONTE=20
.model … tox=tox …
其中,对Gaussian分析.param ver=gauss(nom_val,rel_variation,sigma,mult),
.param ver=agauss(nom_val,abs_variation,sigma,mult),
对Uniform分析,.param ver=unif(nom_val,rel_variation,mult),
.param ver=aunif(nom_val,abs_variation,mult),
对Limit分析,.param ver=limit(nom_val,abs_variation),如果你拼错Gauss或Uniform、Limit,不会产生警告,但不将产生分布。

参 考 文 献
1. K. S. Kundert, The Designer’s Guide to Spice & Spectre;
2. Synopsys, HSPICETM Simulation an

(原文地址:http://blog.sina.com.cn/s/blog_808085080101a45p.html)

[转]Hspice 语法手册相关推荐

  1. python语法手册-python语法手册

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 常用的也不超过十个,这种相对于更为复杂的html标记语言来说,markdown可谓 ...

  2. Cmd Markdown编辑器简明语法手册

    目录 1. 斜体和粗体 2. 分级标题 3. 外链接 4. 无序列表 5. 有序列表 6. 文字引用 7. 行内代码块 8. 代码块 9. 插入图像 Cmd Markdown 高阶语法手册 1. 内容 ...

  3. python基础语法手册-python语法手册

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 常用的也不超过十个,这种相对于更为复杂的html标记语言来说,markd ...

  4. Java语法手册 一

    Java语法手册 一 开篇 Java 程序注释 // 单行注释/* 多行注释 */ /** DOC注释:文档注释(Java特有的文档注释,可以通过JDK Javadoc命令生成一个HTML网页给用户观 ...

  5. ❤️❤️❤️Arduino语法手册 完整版

    Arduino的程序可以划分为三个主要部分:结构.变量(变量与常量).函数. 结构部分 一. 结构 1 setup() 2 loop() 二. 结构控制 2.1 if 2.2 if...else 2. ...

  6. Arduino 语法手册

    Arduino 的程序可以划分为三个主要部分:结构.变量(变量与常量).函数. 结构部分 一.结构 1.1 setup() 1.2 loop() 二.结构控制 2.1 if 2.2 if...else ...

  7. python语法手册-《Python 手册》pdf版电子书免费下载

    Python 是一种容易学习的强大语言. 它包括了高效的高级数据结构,提供了一个简单但很有有效的方式以便进行面向对象编程. Python 优雅的语法,动态数据类型,以及它的解释器,使其成为了大多数平台 ...

  8. python语法手册chm-python3.5.2官方帮助文档 参考手册(CHM版)

    python3.5.2官方帮助文档 参考手册(CHM版) python3.5.2官方帮助文档 参考手册(CHM版),欢迎下载! 新语法特性: PEP 492,具有async和await语法的协同程序. ...

  9. python基础语法手册-Python学习手册(第4版)pdf

    Python学习手册(第4版) 内容简介 <Python学习手册(第4版)>学习Python的主要内建对象类型:数字.列表和字典.使用Python语句创建和处理对象,并且学习Python的 ...

最新文章

  1. linux strace 用法
  2. 博后招募 | 清华大学电子系姚权铭教授招聘机器学习方向博士后
  3. 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
  4. WINDOWS SERVER 2003从入门到精通之林之间的信任关系
  5. 【java学习之路】(java SE篇)001.java初识
  6. CodeChef June Challenge 2017
  7. 比较awk python: [文件]web日志信息统计 。 [命令]netstat命令状态统计
  8. python中seek(10、1)_Python中index()和seek()的用法(详解)
  9. webvector将html转为svg或者png图片的工具
  10. c++核心编程第一部分讲义_java并发编程实战-第一部分总结
  11. Python是个什么鬼,为什么机械设计都要用到他?
  12. Hookswork补单逻辑说明——多帐户跨平台MT4跟单软件
  13. 没有U盘纯硬盘安装linux之manjaro
  14. 区块链钱包,新一代支付宝?|筱静观察
  15. 老司机通过后视镜辨别车距 完爆倒车影像功能
  16. 汇佳学校|李昕桐:“世界顶尖设计院校自由”?18岁,我实现了!
  17. 为 “超级大脑”构建支撑能力,腾讯云聚焦AI技术落地
  18. Widows下通过CMD创建磁盘
  19. Python中return返回值的简单用法
  20. 1658 页的《Java 面试突击核心讲》在牛客网火了,完整版 PDF 开放下载!

热门文章

  1. 联想服务器改win7系统教程,联想IdeaCentre720改win7系统教程及BIOS设置方法
  2. JUnit-4.11使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
  3. Go将数字转换为字符串的正确姿势
  4. Laravel核心解读--完结篇 1
  5. 用Javascript滚动到页面底部,并能正确判断出页面已到底部的方法
  6. 【4】搭建Docker私服harbor
  7. java数据结构之快速排序
  8. js----CSRF-跨站请求伪造攻击
  9. 初学Python——字符串相关操作
  10. 关于软件开发本质和开发方法的一些文章的读后感