五、控制语句和 option 语句1.OPTION 语句:.opti ons 语句格式:.opti ons optl opt2 opt3 … opt二x 一般在每个仿真文件中设置 options为.options acct list pos,也 可以设置为.options node opts其中.option list表示将器件网表、节点 连接方式等输入 到列表文件,用于 debug 与电路拓扑结构有关 的问 题,.option node表示将输出节点连接表到列表文 件,用于debug与 由于电路拓扑结构引起的不收敛问题,.option acct表示在列表文件中 输出运行时间统计和仿真效率,.optio n opts在列表文件中报告所有 的.option设置,.option nomod表示不输出 MODEL参数,以便减小 列表文件的大小, .option brief=1 表示不输出网表信息,直到设置.option brief=0, .protect/.unprotect用于屏蔽网表文件中要保护的信 息,.opti on bypass=1 不计算 late nt 器件,.opti on autostop 表示当所 有.measure语句完成时,终止仿真,.optio n accurate=1表示设置为最 精确的仿真算法和容差,tstep表示仿真步长值,delmax表示最大允 许时间步长,其中 delmax=tstep*max,.option dvdt=4 用于数字 CMOS 电路仿真(默认设置), .option dcca=1 在直流扫描时强行计算随电 压变化的电容,.option captab对二极管、BJT管、MOS、JFET、无 源电容器,打印出信号的节点电容值,.optio n dcstep=val将直流模型和器件转换为电导,主要应用于 “ No DC Path to Grou nc或有直流通路,但不符合 Hspice 定义的情况。
2. MODEL OPTION 语句:六、仿真控制和收敛Hspice仿真过程采用Newt on-Raphson算法通过迭代解矩阵方 程,使节点电压和支路电流满足 Kirchoff 定律迭代算法计算不成功 的节点,主要是因为计算时超过了 Hspice限制的每种仿真迭代的总次数从而超过了迭代的限制,或是时间步长值小于 Hspice允许的最小值1)造成 Hspice仿真不收敛主要有 “ No Convergenee in DC Solutio和“Timestep too Smal,l 其可”能的原因是: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之外的所有设置,采用默认设置,查找 」is 文件中关于不收敛的原因;使用.no deset和.ic语句自行设置部分工作 点的偏置;DC OP不收敛还有可能是由于 model引起的,如在亚阈 值区模型出现电导为负的情况2.直流扫描分析:在开始直流扫描分析之前,Hspice先做DC OP计算,引起直流扫描分析不收敛的原因可能是快速的电压或电流变化,模型的不连续解决的方法是:对于电压或电流变化太快,通过增加 ITL2 来保 证收敛, .option ITL2 是在直流扫描分析中在每一步允许迭代的次 数,通过增加迭代次数,可以在电压或电流变化很快的点收敛。
对于 模型的不收敛,主要是由于 MOS 管线性区和饱和区之间的不连续, Newto n-Raphson算法再不连续点处进行迭点计算产生震荡,可以通 过增减仿真步长值或改变仿真初始值来保证收敛,如: .dc vin 0v 5v 0.1v的直流分析不收敛,可以改为.de vin 0v 5v 0.2v增大步长值,.de vin 0.01v 5.01v 0.1v改变仿真的范围3. AC 频率分析:由于 AC 扫描是进行频率分析,一旦有了 DC OP, AC 分析一般 都会收敛,造成不收敛的原因主要是 DC OP分析不收敛,解决的方 法可以参看前面关于 DC OP的分析4. 瞬态分析:瞬态分析先进行直流工作点的计算 ,将计算结果作为瞬态分析在 T0时刻的初始值,再通过Newton-Raphson算法进行迭代计算,在迭 代计算过程中时间步长值是动态变化的,.tran tstep中的步长值并不 是仿真的步长值,只是打印输出仿真结果的时间间隔的值,可以通过 调整.options Ivltim imax imin来调整步长值瞬态分析不收敛主要是由于快速的电压变化和模型的不连续 ,对 于快速的电压变化可以通过改变分析的步长值来保证收敛 。
对模型的 不连续,可以通过设置 CAPOP和ACM电容,对于给定的直流模型一般选择 CAP0P=4, ACM=3,对于 level 49, ACM=0对瞬态分析,默认采用 Trapezoidal 算法,精度比较高,但容易产生 寄生振荡,采用 GEAR 算法作为滤波器可以滤去由于算法产生的振 荡,具有更高的稳定性七、输入语句对于 .param 语句, .param PARHIER=GLOBAL 是默认的,使得参数可以按照 Top-Down 变化, .paramPARHIER=LOCAL ,可以是参数只在局部有效对于.measure语句,可以采用的模式有 rise, fall,delay,average rms, min, peak-to-peak, Find-When,微分和积分等对 Find-When 语句, .measure result find val when out_val=val ,对微分和积分语句, .measure result val 。
对于.ALTER语句,可以通过改变.ALTER来改变使用不同的库,其中 .ALTER语句可以包含 element语句、.data、 .lib、 .del lib、 .include、 .model、 .nodeset、 .ic、 .op、 .options、 .param .temp、 .tf、 .de、 .ac语 句,不能包含 .print 、 .plot、 .graph 或其他 I/O 语句,同时应该避免在 .ALTER 中增加分析语句八、统计分析仿真主要是对器件和模型进行 Monte Carlo 分析,随机数的产生主要依赖 Gaussian、 Uniform 、 Limit 分析,通过.param设置分布类型,将 de、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 and Analysis User Guide;。