hsipce 不收敛的解决

解决spice在tran时的internal timestep too small问题的方法

Transient Analysis: 也就是一般的暂态分析.一般错误的
Message 为:-"Internal timestep too small."
另外,也会常看到 "Singular Matrix", or "Gmin/Source Stepping
Failed" 这样的 Error Message.解决这个问题没有一定的方法,根
据我们的经验,我们大致把它们说明如後:
1. 电路错误:指的是由使用者本身电路,有不正常的接线或短路等,例如将电源
接到输出端,而造成SPICE在运算的时候无法收敛.根据Ref[38] 的建议,请
你确认以下之状况:
Make sure that all of the circuit connections are valid. Check for
incorrect node numbering or dangling nodes. Also, verify component
polarity.
Make sure you didn't use the letter O instead of a zero (0).
Check for syntax mistakes. Make sure that you used the correct SPICE
units (i.e. MEG instead of M(milli) for 1E6).
Make sure that there's a DC path from every node to ground.
Make sure that there are at least two connections at every node.
Make sure that there are no loops of inductors or voltage sources.
Make sure that there are no series capacitors or current sources.
Place the ground (node 0) somewhere in the circuit. Be careful when
you use floating grounds; you may need to connect a large resistor from
the floating node to ground.
Make sure that voltage/current generators use realistic values, and
verify that the syntax is correct.
9-46 VLSI 设计概论 / 实习
Make sure that dependent source gains are correct, and that B element
expressions are reasonable. If you are using division in an expression,
verify that division by zero cannot occur.
Make sure that there are no unrealistic model parameters; especially if
you have manually entered the model into the netlist.
Make sure that all resistors have a value. In SPICE 3, resistors without
values are given a default value of 1k Ohm.
Negative capacitor and inductor values are allowed in SPICE 3. They
will not be flagged as an error, but can cause timestep problems,
depending on the topology of the circuit.
2. 检查Feedback : 所指的是在序向逻辑电路中所产生的,你可以检查一下你的
电路的FeedBack Path的Delay,在不影响电路功能的情形下,是否可以调快一
点或慢一点.
3. 设定初值: 一般在作Flip Flop 常也会遇到DC Convergence 的问题,你可以
用 .IC 或 . 这个指令设定Node的 Initial Condition.用法如下:
.IC V(11)=5 V(4)=-5 V(2)=2.2
.DCVOLT 11 5 4 -5 2 2.2
.TRAN UIC 2ns 100ns
以上的意思是用 ".IC" 设定节点 11, 4, 2 的初值电压为 5V, -5V, 2.2V.用
".DCVOLT" 设定节点 11, 5, 4 的初值电压为 -5V, 2V, 2.2V.请记得在 .TRAN
後面要 Use Initial Condition (UIC) .但是设得不好也会有反效果,若出现
"internal timestep too small" 则是这种情形.
甚至,你可以如下的设定:
us,也常会出现
DC Convergence,这只能适合Function Check.
5. 加电阻:指的是在 "电路的某两端" 加上一个 "大的电阻" R(通常大於
100Meg),也许能够解决DC convergence的问题.根据Ref[38],其认为MOS
的Source /Drain 两端,Diode 的两端,及适度的加上(RE, RB, RC)到BJT的E,
B, C 端.HSPICE更会直接指出如下的 Message:
"Warning: Zero diagonal value detected at node ( ) in equation solver, which
might cause convergence problems. If your simulation fails, try adding a large
resistor between node ( ) and ground."
除此之外,我们可以更极端的设 ".OPTIONS RSHUNT=100MEG" (在
HSPICE是 CSHUNT及 GSHUNT),也就是电路的任何一个 node 都加上一个
到Ground的电阻.
6. 改变SPICE option parameter:每一种SPICE 都有 ".OPTION" 这个指令.这个
指令可以改变Simulation中的一些参数,如回圈(Iteration),以下列出HSPICE
中的ITL参数.详细语法请看Star-Hspice之User Menu, page 3-47/Release
1998.2.图9-43 列出HSPICE 中所有.OPTION所有之参数及其应用范围.(有
些SPICE不只这些 option.
ITL1:Set the DC iteration limit.(Default=200,针对 DC Analysis)
ITL2:Set the DC transfer curve iteration limit.(Default=50,针对 DC Sweep
Analysis)
ITL3:Sets the lower transient analysis iteration limit.(Default=3.0)
9-48 VLSI 设计概论 / 实习
ITL4:Sets the transient analysis time point iteration limit.(Default=8.0)
ITL5:Sets the transient analysis total iteration limit.(Default=0.0)
用法例子如下:
.OPTION TNOM=27 DEFNRD=1 DEFNRS=1 INGOLD=2 ACOUT=0 DC PIVOT
PIVTOL=IE-13 PIVREL=1E-3 RELTOL=1E-3 ITL1=100 ABSMOS=1E-6
RELMOS=1E-3 ABSTOL=1E-12 VNTOL=1E-6 ABSVDC=1E-6 RELVDC=1E-3
RELI=1E-3
7. 将输入之PULSE之Transition隔开,有很多DC Convergence的问题出在电路
同时有太多Node在Transition(改变状态),你可以技巧性的将将输入之PULSE
之Transition隔开.
8. 另外一方面,你可以适度的表达Power Supply 的 Turn On 情形 (Ref[38]).
这又称为 "Pseudo-Transient".根据 Ref [38]:
V1 1 0 PULSE 0 5 0 1U
表示Power Supply 将在 1us 後稳定下来.
9. 当 DC Sweep Analysis 无法Convergence 时,尝试将 Analysis Step 缩小或加
大.如: 原有: .DC VCC 0 1 .1
改为: .DC VCC 0 1 .01
将Step 变大可以 Bypass 一些 Discontinuity,缩小则可以发现到一些无法
convergence 的点.另外,可以乾脆将 DC Sweep Analysis 改为 Transient
Analysis,但这意义不同,因为DC为Steady State Response而 Transient为
Transient State Response.
第九章 SPICE Simulation 9-49
原有:.DC VCC 0 5 .1
VCC 1 0
改为:.TRAN .01 1
VCC 1 0 PULSE 0 5 0 1
10. Clock 请尽量用PULSE这个指令,不要用PWL来合成.
11. 图9-46 为一般SPICE在 DC Analysis 的一些相关设定及流程,这些资料可以
帮你找到更多的解答.
图9-43 OPTION所有之参数及其应用范围
12. 请你确定你所用之Technology File之 Model是否有 Include进来,有些 SPICE
在找不到你所设定的Path时会以Default的参数来Run.这会与你原先所设计的
出入极大.另外就是Model不小心被改了,造成I-V Curve不Continue.(如图
9-45).当然也有可能原始的Device Modeling 根本就有问题,这可要问Foundry
9-50 VLSI 设计概论 / 实习
了.
13. 检查Tolerance: 在 HSPICE模拟过程中会List如下的Table(图9-44),若有
Tolerance 超过 100就是DC Convergence 极度不稳定的来源,在图9-44 中显
示副电路中xinv21,xinv22,xinv24 中的P-channel 电晶体为 nonconvergent
elements.而 xinv23 中的 N-channel电晶体为 nonconvergent elements.
14. 如果上述几种方法都无法解决,则考虑使用别的SPICE,或著请教该 SPICE
公司的客服工程师.
15. 注 1: 另外有一个问题与DC Convergence相似的是: 你的 Quota 用完了,赶
快用 "%quota -v" 检查一下吧.
16. 注 2: 最後请你再次Check 你所用的SPICE 是否跟机器与OS之版本有问
题,这可要问一下SPICE公司的AE了.
17. 注 3: 限於篇幅,更多的解法可以参考 http://nick.eecs.stut.edu.tw/~jjtang

hspice收敛问题(1)(转贴)

 

Hspice收敛问题(zz)

                                      

 

用hspice仿真电路,不收敛怎么办?

                                      

 

Hspice仿真电路不收敛,说白了就是就是计算机解矩阵解不出来了。

不收敛的原因可能有三个方面造成

1.hspice的计算上面.以上换算法,换options都是根据这一点来的。一般说来,这样的情况占绝大多数

2.Model的问题。比如产生负的电导,或者模型不连续性造成。

3.电路本身问题

 比如网表不完整,有悬空点;反馈不正确(不一定都不收敛,hspiceparser  部分对这种情况只给warning,不给error message)等等。电路本身的问题属于设计上的了,具体只能自己分析。对于hspice运行通过,功能性能都过的去,一般多运行些corner  情况, worstcase情况或者做 MonteCaro分析,有问题的话应该可以抓出,没问题的话,流片后出问题概率也不大

 

 

解决的办法可以通过以下各种手段.

(1).换个算法

   hspice提供两种基本算法,GearTrap.学过数值分析的应该明白这两种解方程的方法。默认值是Trap,遇到不收敛问题一般先换个算法看看,更改为Gear.方法是加一个:

.options method="gear"

   不过这个换算法能解决的情况不是很多。假如画出解方程的那个图形来看,是需要恰好避开那个不收敛的点才能解决。因此有一定凑巧性。

(2.)改变tolerance.

   计算机解方程时,都是设定一个容忍度。这个容忍度可以是叠代次数,可以是精确度,可以是计算时间,而且还可能和accuracy配合起来,有大概20tolerance可以更改。根据不同的需要,看一下需要改哪个。hspice有个附带的options table,非常好用。

(3).改变步长

   相信大家看到的最多的是intenal timestep too small这个提示。内部时钟间隔太小。这个timestep不是所设定的分析step,不过那个step也是timestep的一个因子.影响timestep的因此很多,有12个之多。(比如数值变换平缓时,timestep自动取的大些以增快仿真时间)更改timestep的方法也可以查上述options列表.

(4).改变初始条件

   .ic设定。方程解不出来,就改变一下条件。使用得当一般不会影响结果.

(5).在一些节点加很大的电阻(不影响电路性能),来改变节点方程。这种方法不会影响电路的模拟结果。

(6)..option 语句中加入改善收敛的语句。比如对收敛精度降低迭代次数加大等。其中的参数有RELVDCRELH,CONVERGE,DCON等。

    hSPICE的手册里有很多改善的措施,可以看DC or ACCONVERGENCE那部分。HSPICE在模拟的速度,精度,收敛性三方面进行折衷。

    其中常用的是: 对每个节点都加一个很大的电阻或电容。

        .OPTION   GSHUNT=1E-11  CSHUNT=1E-11

等。 但这会降低模拟精度。

(7). 改变电源的波形。在电路起动时让恒流源缓慢上升。在HSPICE中也有这样的OPTION,不过你可以自己来改。在不影响电路的情况下这种方法对收敛的改善最好。

(8).改变电路

   去掉或者替换一些没什么用的部分。可以加个非常小的电阻比如1u欧姆(等于加了个节点,方程维数多了一个)

 

 

hspice收敛问题(2)

发信人: flyji (专一的双子星座), 信区: METech        
标  题: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Tue Apr 24 22:59:55 2001) 
 
 
 
总是提示timestep too small。看信息提示无不收敛的节点。 
我想仿真10s,.tran中的步长已经小到10us还是不行(.tran 10us 10s) 
最大内部步长试了很多值也不行 
在Pspice中似乎可以将ITL4的值设为很大,增加迭代次数来收敛,但 
Hspice中好像只有ITL1这个参数,是用来增加直流迭代次数的,增大 
后还是没有效果。 
请问各位大侠,这个问题应该怎么解决? 
多谢了! 
 
-- 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.11.199] 
发信人: CISC (mistral~~假亦真来真亦假), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 00:21:28 2001) 
 
这个问题我遇到过。 
一开始我也试着调这些参数,但是没有太大效果。也许有些情况可以 
通过调这些参数解决,但是我认为这样的情况是比较少的。 
事实上应该把更多的注意力放在待模拟的电路上。 
实际的电路当然有其状态,一般不会出现不收敛的情况, 
但是理想的电路就另当别论,例如理想电流源开路,或理想电压源短路, 
Hspice恐怕也不知道应该怎样处理这样的问题。 
最好先检查一下电路是否有可能在某一时刻出现此类的情况(开关电路尤其 
需要注意)。 
 
【 在 flyji (专一的双子星座) 的大作中提到: 】 
 总是提示timestep too small。看信息提示无不收敛的节点。 
 我想仿真10s,.tran中的步长已经小到10us还是不行(.tran 10us 10s) 
 最大内部步长试了很多值也不行 
 在Pspice中似乎可以将ITL4的值设为很大,增加迭代次数来收敛,但 
 Hspice中好像只有ITL1这个参数,是用来增加直流迭代次数的,增大 
 后还是没有效果。 
 请问各位大侠,这个问题应该怎么解决? 
 多谢了! 
 
 
-- 
如果错过这一次,以后我会不会后悔? 
 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.147.102] 
发信人: freewing (海狸~挪威的森林@伍佰版), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 10:49:56 2001) 
 
先检查电路正确与否,如果是数字电路看逻辑关系对不对 
在保证电路正确的前提下,对各节点置一些初值,当然为一种使电路稳定的电压值,这样 
应该就可以了,不过有时也难以解决 
 
【 在 flyji (专一的双子星座) 的大作中提到: 】 
 总是提示timestep too small。看信息提示无不收敛的节点。 
 我想仿真10s,.tran中的步长已经小到10us还是不行(.tran 10us 10s) 
 最大内部步长试了很多值也不行 
 在Pspice中似乎可以将ITL4的值设为很大,增加迭代次数来收敛,但 
 Hspice中好像只有ITL1这个参数,是用来增加直流迭代次数的,增大 
 后还是没有效果。 
 请问各位大侠,这个问题应该怎么解决? 
 多谢了! 
 
 
-- 
 
仁者乐山,智者乐水 
 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.47] 
发信人: flyji (专一的双子星座), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 11:01:44 2001) 
 
 
 
多谢各位的指教 
这个电路我是用star_sim仿真的,虽说语法和Hspice相象,速度有很大优势(数模混合, 
尤其是对纯数字逻辑),但是它的data table算法实在不敢恭维. 
这个电路我仿真过毫秒级的(.tran 10us 10ms),当时一切正常,现在增大仿真时间就出现 
这种问题,不知这样是不是可以排除电路问题的可能性? 
 
 
【 在 freewing (海狸~挪威的森林@伍佰版) 的大作中提到: 】 
 先检查电路正确与否,如果是数字电路看逻辑关系对不对 
 在保证电路正确的前提下,对各节点置一些初值,当然为一种使电路稳定的电压值,这样 
 应该就可以了,不过有时也难以解决 
 
 
-- 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.11.199] 
发信人: laukababy (cherish u), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 11:07:17 2001) 
 
因为spice参数很难做提取到在任何情况下都收敛 
有的时候即使是电路正确,它也会说internal step is too small 
我以前做的时候,要么就是修改一些尺寸,要么修改步长, 
实在不行了,可以在每个节点上加上一些小电容(fF量级) 
最后。。。。。。。。。。那只能换参数了,呵呵1 
starsim可以做数模混合吗 
你做过大型memory的仿真吗,比如sram,或者EEPROM,FLASH之类的 
 
【 在 flyji (专一的双子星座) 的大作中提到: 】 
 多谢各位的指教 
 这个电路我是用star_sim仿真的,虽说语法和Hspice相象,速度有很大优势(数模混合, 
 尤其是对纯数字逻辑),但是它的data table算法实在不敢恭维. 
 这个电路我仿真过毫秒级的(.tran 10us 10ms),当时一切正常,现在增大仿真时间就出现 
 这种问题,不知这样是不是可以排除电路问题的可能性? 
 
 
-- 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.146.202] 
发信人: CISC (mistral~~假亦真来真亦假), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 11:54:44 2001) 
 
和时钟周期(如果有的话)相比,10ms是否足够长(几十个时钟周期)?nbsp;
电路是否基本完成了一些功能, 
如果是的话,电路的问题几率应该比较小。 
?nbsp;
【 在 flyji (专一的双子星座) 的大作中提到: 】 
 多谢各位的指教 
 这个电路我是用star_sim仿真的,虽说语法和Hspice相象,速度有很大优势(数模混合, 
 尤其是对纯数字逻辑),但是它的data table算法实在不敢恭维. 
 这个电路我仿真过毫秒级的(.tran 10us 10ms),当时一切正常,现在增大仿真时间就出现 
 这种问题,不知这样是不是可以排除电路问题的可能性? 
 
 
-- 
如果错过这一次,以后我会不会后悔? 
 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.147.102] 
发信人: CISC (mistral~~假亦真来真亦假), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 12:04:33 2001) 
 
模型参数的确必须比较全, 
没有寄生电容参数电路的确很容易不收敛。 
但是我不太喜欢在每个节点上额外的小电容, 
虽然HSPICE有这个命令参数,实现起来很方便, 
而且很有效,但是结果对不对就值得怀疑了。 
 
【 在 laukababy (cherish u) 的大作中提到: 】 
 因为spice参数很难做提取到在任何情况下都收敛 
 有的时候即使是电路正确,它也会说internal step is too small 
 我以前做的时候,要么就是修改一些尺寸,要么修改步长, 
 实在不行了,可以在每个节点上加上一些小电容(fF量级) 
 最后。。。。。。。。。。那只能换参数了,呵呵1 
 starsim可以做数模混合吗 
 你做过大型memory的仿真吗,比如sram,或者EEPROM,FLASH之类的 
 
 
-- 
如果错过这一次,以后我会不会后悔? 
 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.147.102] 
发信人: flyji (专一的双子星座), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 13:00:34 2001) 
 
 
在节点之上加电容是不是就是mos管子参数中的“AS、AD、PS、PD”这四个参数? 
修改尺寸的话,不知应该怎么改?这个电路一共有2100个管子左右,时间步长问题 
应该修改哪一部分?触发器?振荡器? 
我前面所说的数模混合仿真其实是指都是基于电路的,并不是硬件语言和模拟电路 
的混合仿真。这种仿真Hspice也可以的,无非是将数字部分也当作模拟电路来跑。 
starsim有四种仿真模式,针对数字或是模拟用不同的模式可以极大的提高速度。 
memory仿真没有做过,但是starsim对于mem仿真用MR模式可以有很大的速度优势。 
 
 
【 在 laukababy (cherish u) 的大作中提到: 】 
 因为spice参数很难做提取到在任何情况下都收敛 
 有的时候即使是电路正确,它也会说internal step is too small 
 我以前做的时候,要么就是修改一些尺寸,要么修改步长, 
 实在不行了,可以在每个节点上加上一些小电容(fF量级) 
 最后。。。。。。。。。。那只能换参数了,呵呵1 
 starsim可以做数模混合吗 
 你做过大型memory的仿真吗,比如sram,或者EEPROM,FLASH之类的 
 
 
-- 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.11.199] 
发信人: flyji (专一的双子星座), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 13:03:48 2001) 
 
 
 
呵呵!不好意思,这一点没有说清楚 
正是因为10ms的仿真时间和周期相比太短(估计一个周期都不到,当时估计错误)?nbsp;
所以才要增加仿真时间——大侠,这样的话是不是电路有可能有问题? 
?nbsp;
【 在 CISC (mistral~~假亦真来真亦假) 的大作中提到: 】 
 和时钟周期(如果有的话)相比,10ms是否足够长(几十个时钟周期)?nbsp;
 电路是否基本完成了一些功能, 
 如果是的话,电路的问题几率应该比较小。 
 ?nbsp;
 
 
-- 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.112.11.199] 
发信人: bluepainter (沉默的小山), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 13:40:20 2001) 
 
timestep too small 就是指无法收敛。 
你可以采用以下几个方法: 
        1. 在一些节点加很大的电阻(不影响电路性能),来改变节点方程。 
           这种方法不会影响电路的模拟结果,但对收敛的改善不显著。 
        2. 在.option 语句中加入改善收敛的语句。比如对收敛精度降低 
           迭代次数加大等。其中的参数有RELVDC,RELH,CONVERGE,DCON等。 
 
           在hSPICE的手册里有很多改善的措施,你可以看DC or AC  
           中CONVERGENCE那部分。HSPICE在模拟的速度,精度,收敛性三 
           方面进行折衷。 
         
           其中常用的是: 对每个节点都加一个很大的电阻或电容。 
               .OPTION   GSHUNT=1E-11  CSHUNT=1E-11 
           等。 但这会降低模拟精度。 
     
       3.  改变电源的波形。在电路起动时让恒流源缓慢上升。在HSPICE中也 
           有这样的OPTION,不过你可以自己来改。在不影响电路的情况下这种 
           方法对收敛的改善最好。 
 
?nbsp;  
 
【 在 flyji (专一的双子星座) 的大作中提到: 】 
 总是提示timestep too small。看信息提示无不收敛的节点。 
 我想仿真10s,.tran中的步长已经小到10us还是不行(.tran 10us 10s) 
 最大内部步长试了很多值也不行 
 在Pspice中似乎可以将ITL4的值设为很大,增加迭代次数来收敛,但 
 Hspice中好像只有ITL1这个参数,是用来增加直流迭代次数的,增大 
 后还是没有效果。 
 请问各位大侠,这个问题应该怎么解决? 
 多谢了! 
 
 
-- 
 
 
            ?nbsp; 没有开始, 没有结束, 
 
               只有我飞翔的梦。?nbsp;
 
 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.77.58] 
发信人: laukababy (cherish u), 信区: METech        
标  题: Re: Hspice仿真一个问题! 
发信站: BBS 水木清华站 (Wed Apr 25 17:12:33 2001) 
 
加一个很大的电容?? 
我一般是用.option cshunt=1e-12 
不知道你说的增大恒流源方式具体在option是怎样实现的 
或者应该看哪部分帮助文档 
【 在 bluepainter (沉默的小山) 的大作中提到: 】 
 timestep too small 就是指无法收敛。 
 你可以采用以下几个方法: 
         1. 在一些节点加很大的电阻(不影响电路性能),来改变节点方程。 
            这种方法不会影响电路的模拟结果,但对收敛的改善不显著。 
         2. 在.option 语句中加入改善收敛的语句。比如对收敛精度降低 
            迭代次数加大等。其中的参数有RELVDC,RELH,CONVERGE,DCON等。 
            在hSPICE的手册里有很多改善的措施,你可以看DC or AC  
            中CONVERGENCE那部分。HSPICE在模拟的速度,精度,收敛性三 
            方面进行折衷。 
            其中常用的是: 对每个节点都加一个很大的电阻或电容。 
                .OPTION   GSHUNT=1E-11  CSHUNT=1E-11 
 ................... 
 
-- 

供参考
收敛问题有时确认令人头痛,以下是我的一些经验,供参考。

一、直流工作点的计算
最常见的不收敛的情况是直流工作点的计算。在进行其它分析之前,Hspice都需要计算电路的直流工作点。如果直流工作点计算失败,则其它分析将无法进行。
首先试试Hspice的自动收敛过程,即去掉所有与工作点计算有关的.OPTION参数,只保留ACCT、LIST、NODE、POST等参数。
自动收敛失败后,再试试命令“.ic”或者“.nodeset”。对于振荡电路或者存在反馈环路的电路,这两条命令是最常用的的方法之一。如果你知道电路中关键的节点所在,就用“.ic”或者“.nodeset”把这些节点的电压设为合适的值,然后在进行仿真。如果你不太清楚,则可以观察自动收敛失败后Hspice生成的列表文件(.lis),其中有最后一次计算得到的直流工作点。找到节点电压很异常的地方(例如电压特别高)。用“.ic”或者“.nodeset”初始化这些节点电压值。例如可以把这些节点电压中高于VDD和很接近VDD的值都改为VDD,把低于GND和接近GND的值都改为GND。
如果还不行,一般就需要牺牲仿真精度来达到收敛的目的。常用的几个与精度有关OPTION参数包括:ABSV(缺省值为50e-6)、ABSVAR(缺省值为0.5)、ABSMOS(缺省值为1e-6)、RELMOS(缺省值0.05)、GMINDC(缺省值为1e-12)、GMIN(缺省值为1e-12)。不过,对于有些电路来说,精度低了以后容易带来最后的仿真结果错误。

二、直流扫描分析
直流扫描分析失败一般是由于扫描过程中存在节点电压出现剧烈变化或者器件模型出现不连续的情况。
对于直流扫描过程中存在节点电压剧烈变化的情况,可以减少扫描步长,使得相邻两步扫描之间的电压跳变减少。或者增加Newton迭代次数,即在网表文件中加入:.OPTION  ITL2=200(缺省值为50)。
对于器件模型不连续的情况,可以通过恰当调整扫描点来避开不连续点,例如:把“.DC  VIN  0v  5v  0.1v”换成“.DC  VIN  0v  5v  0.2v”和
三、瞬态分析
瞬态分析失败的最常见原因是器件模型不连续。除了寻求更好的器件模型外,还可以通过以下的方法来提高收敛的成功率。
所有的器件模型中都有内建电容,不同的计算方法所得到的这些电容值是不同的。电容值的改变有时能有效地帮助Hspice 收敛。器件模型中内建电容的计算方法主要靠两个模型参数控制:“CAPOP”和“ACM”。试着改变这两个参数的值看看你的电路是否可以收敛了。
除了改变器件模型中内建电容的计算方法,也可以改变Hspice 求解方程的方法,即设置参数“METHOD”:在电路网表文件中加入“.OPTION  METHOD=GEAR”(缺省值为TRAPEZOIDAL)。
另外,也可以通过减小瞬态分析的步长和减小“.OPTION”的参数“RMIN”(缺省值为1e-9)来达到收敛的目的。不过,这个方法会明显增加仿真的时间。

你可能感兴趣的:(EDA)