一种提高电路仿真器收敛性的方法

文档序号:6471929阅读:376来源:国知局
专利名称:一种提高电路仿真器收敛性的方法
技术领域
本发明属于集成电路计算机辅助设计领域。
背景技术
牛顿迭代是电路仿真工具的求解器所使用的的基本方法,它从未知变量的一组初始值出发,循环的执行以下步骤,,直到未知变量满足收敛条件
(1)计算F (xk)和F, (xk),求解F, (xk) dk = _F (xk),
(2) xk+1 = xk+dk, k = k+1 。 晶体管级电路仿真所使用的几乎所有半导体器件,诸如二极管、MOS管等等,它们的模型当中都存在指数函数的关系,由于指数函数是一个增长很快的函数,如果它的参数在某一步牛顿迭代突然变大,那么函数值将会急剧增长,甚至出现溢出,这对于牛顿迭代的收敛性是没有好处的。Verilog-A标准中规定了 lime邓这条语法,其功能是计算某个变量的指数函数值,同时能够改善牛顿迭代的收敛性,这一功能通常是通过限制其参数的增长来实现的,这相当于使用阻尼牛顿迭代。所谓阻尼牛顿迭代,是指执行牛顿迭代的步骤(2)时,为牛顿方向dk乘以一个实数a,然后更新未知变量Xk,即xk+1 = Xk+adk。

发明内容
本发明提出了一种新的实现lime邓,提高牛顿迭代收敛性的方法,并给出了其具体实施方式
。 在牛顿迭代过程中,lime邓的参数可能突然变大,这将导致函数值过大甚至出现溢出错误,从而大幅度降低牛顿迭代的收敛性。为了减弱limexp对收敛性的影响,通常的方法是使用阻尼牛顿迭代,对limexp的参数作限制,不能让其在牛顿迭代过程中变得过大。在计算x^ = Xk+dk,也就是用牛顿方向dk更新未知变量的过程中,如果发现某个变量更
新后的大小超过了一定的限度M,那么使用^^作为阻尼因子来限制这个变量的增长,
这样得到的阻尼因子是一个实数。 使用一个实数作为阻尼因子相当于縮短了用牛顿方向改进未知变量的步长,所有的未知变量的改进都由于阻尼因子而变小了,因为改进的步长变小了,那么迭代到真解所需要的步数必然增加,也会延缓收敛速度。也就是说,这种做法对变量增长的限制过于苛刻,并不是所有的变量都只能用很小的阻尼因子作改进。实际上,对于不作为lime邓参数的变量而言,它们不会引起函数值的突然增长或者溢出,也就不存在对收敛性的影响,因此是不需要阻尼因子的。而且在一个实际电路当中,作为limexp参数的变量毕竟是少数,所以很有必要对不同类型的变量选择不同的阻尼因子。 本发明提出的计算混合阻尼因子的方法就是对这种想法的实现。对那些不会导致函数值突然增长的变量,可以共同使用一个较大的阻尼因子,而对其它作为lime邓参数的变量,根据变量的变化对limexp函数值增长的影响,分别为每个变量计算阻尼因子。这样每次在牛顿方向上改进变量时,如果变量与limexp无关,则使用公用的阻尼因子改进该变 量,因为公用的阻尼因子比较大,所以这些变量的收敛性不会受到其它变量过小的阻尼因 子的影响,能够正常的收敛;如果变量是limexp的参数,则使用该变量对应的单独的阻尼 因子对变量作改进,这样能够保证结果在一个合理的范围,不会因为过大的残差影响迭代 的收敛性。与实数阻尼因子不同,这种是一种混合阻尼因子。


图1带有混合阻尼因子的牛顿迭代流程
图2搜索阻尼因子的流程
具体实施例方式
采用修正节点分析方法(Modified Nodal Analysis)建立电路方程。在每次迭代 提供方程时,提取在xk点电路中每个器件的方程,从而算出当前的函数值F(xk)和它的残 差,根据残差判断迭代是否收敛,同时记录下所有作为limexp参数的变量编号。如果没有 达到收敛条件,则计算F' OO,求解F' (Xk)dk二-F(Xk),得到牛顿方向,为了确保数值稳 定性,使用LU分解的方法来求解线性方程组。然后搜索混合阻尼因子,在牛顿方向上利用 混合阻尼因子改进未知变量,进行下一步牛顿迭代。带混合阻尼因子的牛顿迭代的流程图 如图l所示。 假设方程组一共有n个未知变量,用xkj表示第k步牛顿迭代时未知变量的第j个 分量,这个过程中搜索混合阻尼因子的方法如下
(l)j = 0; (2)判断xkj是否作为lime邓的参数,如果是,执行(3),否则,执行(4);
(3)用普通牛顿迭代的方法更新变量,即计算xk+1, j = Xkj+dkj,执行(6);
(4)计算a = log(|xkj|+l); (5)如果dkj > a,那么xk+1, j = xkj+a,否则xk+1, j = xkj+dkj ;
(6) j = j+l,如果j < n,执行(2),否则停止;
以上过程的流程图如图2所示。
权利要求
一种提高电路仿真器收敛性的方法,其特征在于对limexp的每个参数添加不同的阻尼因子,从而改善牛顿迭代的收敛性。
2. 根据权利要求1所述的一种提高电路仿真器收敛性的方法,其特征在于利用混合阻尼因子完成阻尼牛顿迭代。
3. 根据权利要求1或2所述的一种提高电路仿真器收敛性的方法,其特征在于所述搜索混合阻尼因子的步骤如下(1) j = 0;(2) 判断&.是否作为lime邓的参数,如果是,执行(3),否则,执行(4);(3) 用普通牛顿迭代的方法更新变量,即计算Xk+Lj = Xkj+dkj,执行(6);(4) 计算a = log(|xkj|+l);(5) 如果dkj > a,那么xk+1,j = Xkj+a,否则xk+1,j = xkj+dkj ;(6) j = j+l,如果j < n,执行(2),否则停止。
全文摘要
本发明属于集成电路计算机辅助设计的领域。半导体器件,诸如二极管、MOS管等等,是进行晶体管级电路仿真的常用器件,几乎所有半导体的器件模型中的电流和电压都存在指数函数的关系。指数函数是一个增长速度很快的函数,在牛顿迭代的过程中经常出现函数值过大甚至溢出的情况,从而导致迭代过程很难收敛。在Verilog-A当中,可以使用limexp避免这种问题,本发明为限制指数函数增长,改善半导体器件仿真的收敛性提出了一种新的方法。
文档编号G06F17/50GK101770532SQ200810241099
公开日2010年7月7日 申请日期2008年12月30日 优先权日2008年12月30日
发明者刘强 申请人:北京华大九天软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1