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

上传人:e2 文档编号:1030986 上传时间:2018-03-27 格式:PDF 页数:6 大小:212.87KB
返回 下载 相关 举报
摘要
申请专利号:

CN200810241099.9

申请日:

2008.12.30

公开号:

CN101770532A

公开日:

2010.07.07

当前法律状态:

驳回

有效性:

无权

法律详情:

发明专利申请公布后的驳回IPC(主分类):G06F 17/50申请公布日:20100707|||实质审查的生效IPC(主分类):G06F 17/50申请日:20081230|||公开

IPC分类号:

G06F17/50

主分类号:

G06F17/50

申请人:

北京华大九天软件有限公司

发明人:

刘强

地址:

100102 北京市朝阳区利泽中二路2号A座2层

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明属于集成电路计算机辅助设计的领域。半导体器件,诸如二极管、MOS管等等,是进行晶体管级电路仿真的常用器件,几乎所有半导体的器件模型中的电流和电压都存在指数函数的关系。指数函数是一个增长速度很快的函数,在牛顿迭代的过程中经常出现函数值过大甚至溢出的情况,从而导致迭代过程很难收敛。在Verilog-A当中,可以使用limexp避免这种问题,本发明为限制指数函数增长,改善半导体器件仿真的收敛性提出了一种新的方法。

权利要求书

1: 一种提高电路仿真器收敛性的方法,其特征在于对limexp的每个参数添加不同的阻尼因子,从而改善牛顿迭代的收敛性。
2: 根据权利要求1所述的一种提高电路仿真器收敛性的方法,其特征在于利用混合阻尼因子完成阻尼牛顿迭代。
3: 根据权利要求1或2所述的一种提高电路仿真器收敛性的方法,其特征在于所述搜索混合阻尼因子的步骤如下: (1)j=0; (2)判断x kj 是否作为limexp的参数,如果是,执行(3),否则,执行(4); (3)用普通牛顿迭代的方法更新变量,即计算x k+1,j =x kj +d kj ,执行(6); (4)计算a=log(|x kj |+1); (5)如果d kj >a,那么x k+1,j =x kj +a,否则x k+1,j =x kj +d kj ; (6)j=j+1,如果j<n,执行(2),否则停止。

说明书


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

    【技术领域】

    本发明属于集成电路计算机辅助设计领域。

    背景技术

    牛顿迭代是电路仿真工具的求解器所使用的的基本方法,它从未知变量的一组初始值出发,循环的执行以下步骤,,直到未知变量满足收敛条件:

    (1)计算F(xk)和F’(xk),求解F’(xk)dk=-F(xk),

    (2)xk+1=xk+dk,k=k+1。

    晶体管级电路仿真所使用的几乎所有半导体器件,诸如二极管、MOS管等等,它们的模型当中都存在指数函数的关系,由于指数函数是一个增长很快的函数,如果它的参数在某一步牛顿迭代突然变大,那么函数值将会急剧增长,甚至出现溢出,这对于牛顿迭代的收敛性是没有好处的。Verilog-A标准中规定了limexp这条语法,其功能是计算某个变量的指数函数值,同时能够改善牛顿迭代的收敛性,这一功能通常是通过限制其参数的增长来实现的,这相当于使用阻尼牛顿迭代。所谓阻尼牛顿迭代,是指执行牛顿迭代的步骤(2)时,为牛顿方向dk乘以一个实数a,然后更新未知变量xk,即xk+1=xk+adk。

    【发明内容】

    本发明提出了一种新的实现limexp,提高牛顿迭代收敛性的方法,并给出了其具体实施方式。

    在牛顿迭代过程中,limexp的参数可能突然变大,这将导致函数值过大甚至出现溢出错误,从而大幅度降低牛顿迭代的收敛性。为了减弱limexp对收敛性的影响,通常的方法是使用阻尼牛顿迭代,对limexp的参数作限制,不能让其在牛顿迭代过程中变得过大。在计算xk+1=xk+dk,也就是用牛顿方向dk更新未知变量的过程中,如果发现某个变量更新后的大小超过了一定的限度M,那么使用作为阻尼因子来限制这个变量的增长,这样得到的阻尼因子是一个实数。

    使用一个实数作为阻尼因子相当于缩短了用牛顿方向改进未知变量的步长,所有的未知变量的改进都由于阻尼因子而变小了,因为改进的步长变小了,那么迭代到真解所需要的步数必然增加,也会延缓收敛速度。也就是说,这种做法对变量增长的限制过于苛刻,并不是所有的变量都只能用很小的阻尼因子作改进。实际上,对于不作为limexp参数的变量而言,它们不会引起函数值的突然增长或者溢出,也就不存在对收敛性的影响,因此是不需要阻尼因子的。而且在一个实际电路当中,作为limexp参数的变量毕竟是少数,所以很有必要对不同类型的变量选择不同的阻尼因子。

    本发明提出的计算混合阻尼因子的方法就是对这种想法的实现。对那些不会导致函数值突然增长的变量,可以共同使用一个较大的阻尼因子,而对其它作为limexp参数的变量,根据变量的变化对limexp函数值增长的影响,分别为每个变量计算阻尼因子。这样每次在牛顿方向上改进变量时,如果变量与limexp无关,则使用公用的阻尼因子改进该变量,因为公用的阻尼因子比较大,所以这些变量的收敛性不会受到其它变量过小的阻尼因子的影响,能够正常的收敛;如果变量是limexp的参数,则使用该变量对应的单独的阻尼因子对变量作改进,这样能够保证结果在一个合理的范围,不会因为过大的残差影响迭代的收敛性。与实数阻尼因子不同,这种是一种混合阻尼因子。

    【附图说明】

    图1带有混合阻尼因子的牛顿迭代流程

    图2搜索阻尼因子的流程

    【具体实施方式】

    采用修正节点分析方法(Modified Nodal Analysis)建立电路方程。在每次迭代提供方程时,提取在xk点电路中每个器件地方程,从而算出当前的函数值F(xk)和它的残差,根据残差判断迭代是否收敛,同时记录下所有作为limexp参数的变量编号。如果没有达到收敛条件,则计算F′(xk),求解F′(xk)dk=-F(xk),得到牛顿方向,为了确保数值稳定性,使用LU分解的方法来求解线性方程组。然后搜索混合阻尼因子,在牛顿方向上利用混合阻尼因子改进未知变量,进行下一步牛顿迭代。带混合阻尼因子的牛顿迭代的流程图如图1所示。

    假设方程组一共有n个未知变量,用xkj表示第k步牛顿迭代时未知变量的第j个分量,这个过程中搜索混合阻尼因子的方法如下:

    (1)j=0;

    (2)判断xkj是否作为limexp的参数,如果是,执行(3),否则,执行(4);

    (3)用普通牛顿迭代的方法更新变量,即计算xk+1,j=xkj+dkj,执行(6);

    (4)计算a=log(|xkj|+1);

    (5)如果dkj>a,那么xk+1,j=xkj+a,否则xk+1,j=xkj+dkj;

    (6)j=j+1,如果j<n,执行(2),否则停止;

    以上过程的流程图如图2所示。

一种提高电路仿真器收敛性的方法.pdf_第1页
第1页 / 共6页
一种提高电路仿真器收敛性的方法.pdf_第2页
第2页 / 共6页
一种提高电路仿真器收敛性的方法.pdf_第3页
第3页 / 共6页
点击查看更多>>
资源描述

《一种提高电路仿真器收敛性的方法.pdf》由会员分享,可在线阅读,更多相关《一种提高电路仿真器收敛性的方法.pdf(6页珍藏版)》请在专利查询网上搜索。

本发明属于集成电路计算机辅助设计的领域。半导体器件,诸如二极管、MOS管等等,是进行晶体管级电路仿真的常用器件,几乎所有半导体的器件模型中的电流和电压都存在指数函数的关系。指数函数是一个增长速度很快的函数,在牛顿迭代的过程中经常出现函数值过大甚至溢出的情况,从而导致迭代过程很难收敛。在Verilog-A当中,可以使用limexp避免这种问题,本发明为限制指数函数增长,改善半导体器件仿真的收敛性提出。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1