Hspice仿真电路不收敛,说白了就是就是计算机解矩阵解不出来了。
不收敛的原因可能有三个方面造成
(1).hspice的计算上面.以上换算法,换options都是根据这一点来的。一般说来,这样的情况占绝大多数
(2).Model的问题。比如产生负的电导,或者模型不连续性造成。
(3).电路本身问题
比如网表不完整,有悬空点;反馈不正确(不一定都不收敛,hspice的parser 部分对这种情况只给warning,不给error message)等等。电路本身的问题属于设计上的了,具体只能自己分析。对于hspice运行通过,功能性能都过的去,一般多运行些corner 情况, worstcase情况或者做 MonteCaro分析,有问题的话应该可以抓出,没问题的话,流片后出问题概率也不大
解决的办法可以通过以下各种手段.
(1).换个算法
hspice提供两种基本算法,Gear和Trap.学过数值分析的应该明白这两种解方程的方法。默认值是Trap,遇到不收敛问题一般先换个算法看看,更改为Gear.方法是加一个:
.options method="gear"
不过这个换算法能解决的情况不是很多。假如画出解方程的那个图形来看,是需要恰好避开那个不收敛的点才能解决。因此有一定凑巧性。
(2.)改变tolerance.
计算机解方程时,都是设定一个容忍度。这个容忍度可以是叠代次数,可以是精确度,可以是计算时间,而且还可能和accuracy配合起来,有大概20个tolerance可以更改。根据不同的需要,看一下需要改哪个。hspice有个附带的options table,非常好用。
(3).改变步长
相信大家看到的最多的是intenal timestep too small这个提示。内部时钟间隔太小。这个timestep不是所设定的分析step,不过那个step也是timestep的一个因子.影响timestep的因此很多,有12个之多。(比如数值变换平缓时,timestep自动取的大些以增快仿真时间)更改timestep的方法也可以查上述options列表.
(4).改变初始条件
用.ic设定。方程解不出来,就改变一下条件。使用得当一般不会影响结果.
(5).在一些节点加很大的电阻(不影响电路性能),来改变节点方程。这种方法不会影响电路的模拟结果。
(6).在.option 语句中加入改善收敛的语句。比如对收敛精度降低迭代次数加大等。其中的参数有RELVDC,RELH,CONVERGE,DCON等。
在hSPICE的手册里有很多改善的措施,可以看DC or AC中CONVERGENCE那部分。HSPICE在模拟的速度,精度,收敛性三方面进行折衷。
其中常用的是: 对每个节点都加一个很大的电阻或电容。
.OPTION GSHUNT=1E-11 CSHUNT=1E-11
等。 但这会降低模拟精度。
(7). 改变电源的波形。在电路起动时让恒流源缓慢上升。在HSPICE中也有这样的OPTION,不过你可以自己来改。在不影响电路的情况下这种方法对收敛的改善最好。
(8).改变电路
去掉或者替换一些没什么用的部分。可以加个非常小的电阻比如1u欧姆(等于加了个节点,方程维数多了一个)。
发信人: 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)来达到收敛的目的。不过,这个方法会明显增加仿真的时间。