基于松弛操作的层次式电源/地线网络的瞬态分析方法

文档序号:6517236阅读:198来源:国知局
专利名称:基于松弛操作的层次式电源/地线网络的瞬态分析方法
技术领域
基于松弛操作的层次式电源/地线网络的瞬态分析方法属于VLSI物理设计领域,尤其属于布局布线领域中RLC电源/地线网络的瞬态分析求解技术范畴。
背景技术
在芯片物理设计中,电源/地线的布线属于特殊线网的布线部分,设计不当的电源线/地线网络会引起一系列严重的问题,如半导体器件得不到足够的供电电压所引起的逻辑错误、供电网络中某一支路的电流密度过大所引起的供电网络的损坏等,因此在布线阶段,电源线/地线的布线具有最高优先级。
随着集成电路的制造工艺由目前的深亚微米(DSM)进入到超深亚微米(VDSM),集成电路的设计规模也由超大规模(VLSI),甚大规模(ULSI)向G大规模(GSI)发展。由于芯片功耗急剧增加及芯片供电电压不断降低,使得供电网络必须提供越来越大的工作电流。同时随着芯片工作频率的急剧提高,使得寄生电容、电感对供电网络影响的日益增大,电源线/地线网络分析已从较简单的直流分析转换为复杂的瞬态分析。所有这一切使得芯片的安全供电问题成为芯片设计制造过程中最主要的棘手问题之一,也是制约芯片性能和规模继续提高的主要瓶颈之一,因此受到学术和工业界的空前重视。
由于生产工艺的不断提高,半导体器件的不断缩小,连线的密度变得越来越大,使得对布线资源的需求越来越大。同时由于供电网络需提供越来越大的工作电流,所以供电网络为了保证每个单元的供电电压大于最小正常工作电压,也必须拓宽电源线/地线的宽度,加大了对布线资源的需求。这样,设计一个占有布线资源尽可能少的安全供电网络,就成为布线设计阶段一个重要的目标。当电路的电源线/地线网络设计完成后,为了保证每个单元的供电电压大于最小正常工作电压,还必须对整个设计进行分析验证,即对电源线/地线网络进行瞬态分析求解。因此一个高效、精确的电源线/地线网络的瞬态分析求解器是芯片中供电网络设计优化的基础,也是电源线网设计正确与否的验证工具,同时它能够缩短芯片的设计周期。下面分部分介绍主要相关的背景知识和技术。
随着集成电路的集成度日益增大,现今高性能的集成电路通常采用多层金属布线的技术和C4-Pads技术即呈阵列式排列的电源压焊块,以满足芯片对布线资源和供电的需求。图1显示了一个利用5层金属布线技术实现的供电网络示意图。
图中显示了自上向下的四层金属M4-M1,其中金属层M1和M3垂直布置,M2和M4水平布置。C4-Pads布置在第5层上(图中没有显示),通过通孔(Via)和下面的四层金属层M4-M1连接,M4-M1之间也利用通孔连接。在M4-M1层上,VDD轨道和GND轨道分别在不同布线层交错布置。最底层M1与衬底上的器件层连接,以对其供电。一般说来,越往下层供电轨道越细,轨道之间的距离(pitch)也越小。
经过参数提取,P/G网络的物理模型可以简化为一个由电阻、电容、自感、电流源和电压源组成的线性网络,如图2所示。其中电阻为P/G网络的线上电阻,电感为线上寄生电感和封装电感,电容由线上的寄生电容和去耦合(decoupling)电容组成。电路上的功能器件被简化为一个独立的动态电流源,一般利用一个PWL(Piece-Wise Linear)波形描述,如图3。
P/G网络的瞬态分析的一种基本方法是利用改进节点分析法(Modified Nodal Analysis),上述的系统可以描述为如下的微分方程组C00LV·(t)I·(t)+G-AlTAlT0V(t)I(t)=U(t)0---(1)]]>其中待求变量V(t)是电路节点电压,I(t)是支路电流;(t)和 分别是其导数;U(t)是系统的输入电流向量;C是电容系数相关的矩阵,L是电感系数相关的矩阵,G和Al是电导系数相关的矩阵。求解上述方程组的基本方法是设定一个足够小的步长h,利用向后的欧拉(Backward Euler)差分公式,在时刻k+1,将方程(1)变为一个形如(2,3)的线程方程组,从而将原问题转换为一个大规模线性方程组的求解问题。
G+C/h-AlTAlTL/hV(k+1)I(k+1)=U(k+1)+(C/h)V(k)(L/h)I(k)---(2)]]>设A=G+C/h-AlTAlTL/h,]]>Xk+1=V(k+1)I(k+1),]]>Bk+1=U(k+1)+(C/h)V(k)(L/h)I(k),]]>得到AXk+1=Bk+1(3)随着集成电路集成度的迅速增加,使得电路的节点数量十分巨大,传统的分析方法不仅在时间上变得不能接受,对计算机的要求也难以满足,因此需要设计新的算法来解决这一挑战。近年来,P/G网络的分析问题逐渐成为学术界研究和工业界关注的热门领域,已经提出了多种新颖高效的算法,其中包括近来学术界在这方面已经做了很多重要的有突破性的研究工作,其中有[1]基于层次式和宏模块(Macro-Modeling)的分析方法其主要思想是将原始网络划分为一些规模较小的子模块,然后压缩子模块,将它们的电学参数映射到由边界节点组成的父亲电路上去。在求解父亲电路之后,逐个求解子模块,从而提高算法的整体效率。随着电路规模的不断增大,这种方法的优势会越发明显,而且可以通过并行计算进一步提高求解速度。但是现有方法缺点在于压缩子模块的过程需要大量的复杂计算,而且会在父亲电路的中引入一个密集的完全矩阵,降低父亲电路的求解效率。而现有的矩阵稀疏策略可能带来较大的误差。
多网格方法(Multi-Grid)这种方法受到多网格算法的启发,在原始细网格的基础上构建一系列越来越粗网格,在最粗的网格上精确求解,然后将求解结果逐层返回计算到原始的细网络。但是现有的算法要么只能针对RC电路,要么没有充分考虑供电网络网状(MESH)拓扑结构的规整性,不能充分有效的压缩电路。
基于预优矩阵的共轭梯度迭代方法(Precondition Conjugate Gradient)这是一种快速的线性方程组的迭代求解法,充分利用了P/G电路网络系数矩阵(经过离散和变换后的)对称、正定、稀疏和对角占优的良好特性,提高求解速度。但是这种方法并没有对电路进行压缩,从而限制了其能够求解的电路规模。
基于隐含交错的迭代方法(ADI Method)这种方法的时间复杂度在理论上是线性的,而且是无条件收敛的,能够很有效的处理规整的网格电路。缺点是对电路的拓扑结构要求过于严格。
随机行走方法(Random Walk)此类方法是一种基于概率统计的分析法,首先把基尔霍夫(Kirchoff)方程转化为一个随机行走的过程,利用未知节点到已知节点(开始的时候为VDD节点)不同路径的概率逐个求解每个未知节点。但是此类方法依赖电路中初始已知点的数量,而且由于求解的开始阶段已知点较少,使得开始阶段求解速度很慢。
针对现有算法缺点,并结合其优点,我们提出并实现了一种基于松弛操作的电源/地线网络瞬态分析方法,能够处理具有一般拓扑结构的电源/地线网络。本方法在保证精度要求的情况下,通过划分电路来减小问题直接求解的规模,不仅大幅度的提高了求解速度,而且扩大了能够处理电路的规模。本算法还具有并行计算的性质,可以利用并行计算进一步的提高效率。

发明内容
本发明的目的是设计一种基于松弛操作的集成电路电源网络瞬态分析求解方法,在不损失精确性的情况下,大幅度提高分析求解的速度,扩大能够求解的芯片规模。
发明的主要思想是利用“分而治之”和层次式的策略,首先把原始电路利用一种划分策略划分为多个规模较小的子电路,再利用松弛操作将子电路的电学参数映射到由边界点组成的父亲电路中,然后在求解父亲电路之后逐个求解子电路模块,从而提高问题求解的速度,扩大能够处理电路的规模。为了有效的划分电路,我们针对基于多层布线和C4-Pads技术实现的P/G网络提出了一种有效的划分策略。该策略把底层网络中的通孔(Via)视作一个临时的电压源,并将它们的连线作为划分电路的边界,不仅能够得到较小的误差,且具有一定的自适应性质。
基于松弛操作的层次式电源/地线网络的瞬态分析方法,含有基于直流分析的对电源线/电线网络进行瞬态分析的方法,其特点在于它是一种基于计算机计算,把原始电路利用一种划分策略划分为多个规模较小的子电路,再利用松弛操作将子电路的电学参数映射到由边界点组成的父亲电路中,然后再利用现有快速算法求解父亲电路之后逐个求解子电路模块的既快速又节约内存的方法。它依次含有以下步骤(1)计算机读入电路的信息文件,文件中包括节点之间的关联结构;节点之间的电阻值、电感值、电感初始电压和电流值、电容值、电容初始电压和电流值以及各个节点连接的供电模块单元的随时间变化的吸纳电流波形(利用PWL表示),据此在计算机内建立电路的信息,并且标记所有通孔节点(Via)。连接所有通孔节点,标记其连线上的节点为边界节点;(2)根据电路的工作周期和需要模拟的周期数,计算机分别读入相应的时间步长h和总模拟步数M;并且利用基尔霍夫(Kirchhoff)定律和模拟步长h得到如公式(2,3)所示的系数矩阵;(3)划分电路,并且利用松弛操作补偿误差(3.1)把所有通孔连线上的节点视为边界节点,由它们组成父亲电路,并且通孔连线将原始电路划分为若干子电路模块,电路的划分原理如下不失一般性,这里如果仅仅将电路分为两个部分,划分后的电路由子电路I、剩余电路R和边界电路B组成,此步骤的操作相当于把方程组(3)划分为如下的形式
AIIAIB0ABIABBABR0ARBARRxk+1Ixk+1Bxk+1R=bk+1Ibk+1Bbk+1R---(4)]]>AII,ABB,ARR分别为子电路I、边界电路B和剩余电路R的系数矩阵,并依次与I中的变量向量xI,xB,xR相关联;ABI和AIB为子电路I与边界电路B的关联矩阵;ABR和ARB为剩余电路R与边界电路B的关联矩阵;xk+1I,xk+1R,xk+1B,分别代表子电路1I、剩余电路R和边界节点B在k+1时刻步骤的解;(3.2)在第k+1模拟步骤时刻,相对于直接求解方程组(4),我们可以把方程组(4)写成如下形式AIIxk+1I+AIBxk+1B=bk+1I]]>ABIxk+1I+ABBxk+1B+ABRxk+1R=bk+1B]]>ARBxk+1B+ARRxk+1R=bk+1R]]>然后把以上三式中的后两式合并,并且做简单变换后得到ABBABRARBARRxk+1Bxk+1R=bk+1B-ABIxk+1Ibk+1R]]>AIIxk+1I=bk+1I-AIBxk+1B]]>针对以上两部分,可以用松弛的方法进行逐个求解,直到满足精度要求为止;具体的方法如下所示ABBABRARBARRxk+1,pBxk+1,pR=bk+1B-ABIxk+1,p-1Ibk+1R---(5)]]>AIIxk+1,pI=bk+1I-AIBxk+1,pB---(6)]]>其中xk+1,pI,xk+1,pR,xk+1,pB分别代表子电路I、剩余电路R和边界节点B在k+1时刻,p次松弛步骤的解;当方程组(5)在第一次求解的时候,令xk+1,p-1I=xkI,]]>表示利用k时刻的值来初始化k+1时刻的起始松弛步骤的值。
下面详细的解释上述思想。假设节点a是边界电路B上的一个工作节点,节点b为子电路I上的一个节点,它们之间由电阻为Rab的支路相连接(电感可以利用差分公式离散化为电阻),Va和Vb分别为它们的节点电压。为了划分电路,并产生由边界点和剩余电路组成的父亲电路,我们按照如下步骤断开电阻为Rab的支路连接,并且利用补偿操作来减小由于电路划分带来的误差。
a)首先,我们将电阻为Rab的支路分解为两个受控电流源,控制电压分别为Va和Vb,从节点a流向节点b的电流为Va-VbRab=VaRab-VbRab---(7)]]>对于父亲电路中的节点a,增加了一个对地的电阻Rab和一个受控电流源,控制电压为Vb/Rab;子电路中的节点b以此类推。受控电流源用来补偿电路划分带来的误差;这一过程是没有误差的。
b)对于父亲电路,如果利用当前k+1步骤p次松弛的值来计算补偿值,那么是没有误差的。由于当前时刻的Vb,k+1,p/Rab需要在子电路求解之后才能得到,为此我们利用子电路k时刻或者p-1松弛步骤的电压值来计算补偿值。这一步操作相当于将父亲电路系数矩阵中与子电路相关联的元素置零,并在方程组的右端项增加了一个补偿值。
整个过程可以为一个基于松弛操作的层次式分析方法。我们这里的推导过程将整个电路视作两部分—子电路和父亲电路,其中父亲电路由剩余电路R和边界电路B组成,并且直接把ABB保留在父亲电路里面,使所有的系数矩阵依然保持原有的稀疏性质。并且我们利用松弛操作补偿由于电路划分带来的误差。
如果为了进一步划分电路,方程(5)可以继续分解。电路可以划分为多个子电路。
(4)初始化模拟,令步骤计数器K=0,由每一个节点的PWL波形图得到各个节点的初始电压值(此值应该等于各个节点关联电容的初始电压值),并计算出各个支路上面的初始电流值,由此构建xk;(5)若K>M,则结束模拟;否则执行以下步骤(6)在k+1时刻,利用层次式策略和松弛操作求解电路,子过程如下a)通过每一个节点的PWL波形提取k+1步骤时刻各个节点供电模块单元的吸纳电流,计算得到k+1时刻方程组右边的电流向量bk+1,带入由步骤(3)得到的线性方程组(5,6);b)p=1,并且初始化子电路模块此时刻的值xk+1,p-1I=xkI;]]>c)求解父亲电路,得到边界点上此时刻的电流值xk+1,pB;d)逐个求解子电路模块得到解向量xk+1,pI,由此得到所有节点的解向量xk+1,p。
e)如果‖xk+1,p-xk+1,p-1‖≤ε,ε是预先设定值,为很小的正数;表明迭代满足收敛条件,xk+1=xk+1,p,结束此步骤的模拟过程,转向(7)否则p=p+1,转向c)(7)输出保存此时刻的所有节点的电压值,k=k+1;转到步骤(5)进行下一步模拟。
我们测试了8个常用的电路实例,节点规模从2500到16M,本方法与SPICE3的运行时间比较结果如下表所示运行时间的比较

从运行时间上,我们可以看出本发明所提出的方法在满足精度的情况下运算速度快。并且,由于采取了划分求解的策略,每次只需要把电路的一部分形成求解矩阵,使用求解分析器进行求解,所以该发明在运行时可节省计算机的内存从而扩大能够求解芯片的规模。


图1电源/地线网络的基本实现模型;

金属层4

金属层3

金属层2

金属层11.电源轨道2.地线轨道 3.通孔图2电源/地线网络的基本分析模型;图3分段线性表示的电流波形图;图4电路的划分策略;图5电路网络中节点最小电压的分布情况;图6基于松弛操作的电路划分;图7本发明的程序流程框图。
具体实施例方式
现结合图(7)对本发明具体实施方式
进行描述1)计算机读入电路的信息文件*.sp(spice的标准格式文件),*.sp文件中包括节点之间的关联结构;节点之间的电阻值、电感值、电感初始电压和电流值、电容值、电容初始电压和电流值以及各个节点连接的供电模块单元的随时间变化的吸纳电流波形(波形分段线性表示,如图3所示),据此在计算机内建立电路的信息,并且标记所有通孔节点(Via,参见图1)。连接所有通孔节点,标记其连线上的节点为边界节点。
2)电路的工作周期T=6ns,需要模拟的周期数定为一个周期,计算机分别读入相应的时间步长h=0.05ns和总模拟步数M=120;并且利用基尔霍夫(Kirchhoff)定律和模拟步长h得到如公式(2,3)所示的系数矩阵。
3)划分电路电路的划分如图4所示。把所有通孔连线上的节点视为边界节点,由它们组成父亲电路,并且通孔连线将原始电路划分为若干子电路模块。
图5显示了一个电路中,所有节点最低电压的分布情况。从中不难看出,通孔连线附近节点的电压变化相对是比较小的。因此,我们采用的这个划分引入的误差也相对较小。
4)初始化模拟,令步骤计数器K=0,由每一个节点的分段线性(PWL)波形图得到各个节点的初始电压值(此值应该等于各个节点关联电容的初始电压值),并计算出各个支路上面的初始电流值,由此构建xk;5)若K>120,则结束模拟;否则执行以下步骤6)在k+1时刻,利用层次式策略和松弛操作求解电路,子过程如下a)通过每一个节点的PWL波形提取k+1步骤时刻各个节点供电模块单元的吸纳电流,计算得到k+1时刻方程组右边的电流向量bk+1,带入由步骤(2)得到的线性方程组(5,6)。
b)p=1,并且初始化子电路模块此时刻的值xk+1,p-1I=xkI;]]>
c)求解父亲电路,得到边界点上此时刻的电流值xk+1,pB;对于父亲电路,如果求解时利用当前k+1步骤p次松弛的值来计算补偿值,那么是没有误差的。由于当前时刻的xk+1,pI需要在子电路求解之后才能得到,为此我们利用子电路k时刻或者p-1松弛步骤的电压值来计算补偿值。这一步操作相当于将父亲电路系数矩阵中与子电路相关联的元素置零,并在方程组的右端项增加了一个补偿值。
d)逐个求解子电路模块得到解向量xk+1,pI,由此得到所有节点的解向量xk+1,p。
e)如果‖xk+1,p-xk+1,p-1‖≤ε,表明迭代满足收敛条件,xk+1=xk+1,p,结束此步骤的模拟过程,转向(7)否则p=p+1,转向c)(c),(d),(e)步骤的重复迭代是利用松弛操作补偿由于电路划分带来的误差。
7)输出保存此时刻的所有节点的电压值,k=k+1;转到步骤(5)进行下一步模拟。
由于电源线网络与地线网络的分析求解是类似的,所以本发明仅给出电源线网络的分析求解方法。本发明同样适用于地线网络的分析求解。
本方法是在CPU 450M,内存2G的Sun Solaris V880工作站上模拟测试运行的,全部代码利用C语言编写,编译器为GNU gcc 2.95.1版本。
本发明在满足精度的前提下,不仅快速而且利用内存小,基于其层次式的设计结构,适用于更大规模芯片的测试。
权利要求
1.基于松弛操作的层次式电源/地线网络的瞬态分析方法,含有基于直流分析的对电源线/地线即P/G网络进行瞬态分析的方法,其特点在于它是一种基于计算机计算,把原始电路利用一种划分策略划分为多个规模较小的子电路,再利用松弛操作将子电路的电学参数映射到由边界点组成的父亲电路中,然后再利用现有快速算法求解父亲电路之后逐个求解子电路模块的既快速又节约内存的方法;它依次含有以下步骤步骤1.计算机读入电路的信息文件,文件中包括节点之间的关联结构;节点之间的电阻值、电感值、电感初始电压和电流值、电容值、电容初始电压和电流值以及与各个节点连接的供电模块单元的随时间变化的吸纳电流波形,据此在计算机内建立电路的信息,并且标记所有通孔节点即Via;连接所有通孔节点,标记其连线上的节点为边界节点;步骤2.根据电路的工作周期和需要模拟的周期数,计算机分别读入相应的模拟用的时间步长h和总模拟步数M;并且利用基尔霍夫定律得到如公式(1)所示的常微分方程组C00LV·(t)I·(t)+GAlTAlT0V(t)I(t)=U(t)0---(1)]]>再利用差分公式,选定一个足够小的模拟用的时间步长h,在k+1模拟时刻,上式离散化为如(2,3)的线性方程组G+C/h-AlTAlTL/hV(k+1)I(k+1)=U(k+1)+(C/h)V(k)(L/h)I(k)---(2)]]>Axk+1=bk+1(3)其中待求变量V(t)是电路节点电压,I(t)是支路电流;U(t)是系统的输入电流向量;C是电容系数相关的矩阵,L是电感系数相关的矩阵;G和Al是电导系数相关的矩阵;h为模拟用的时间步长;步骤3.划分电路,并且利用松弛操作补偿误差步骤3.1.把所有通孔连线上的节点视为边界节点,由它们组成父亲电路,而通孔连线将原始电路划分为若干子电路模块,划分后的电路由子电路I、剩余电路R和边界电路B组成,此步骤的操作相当于把方程组(3)划分为如下的形式AIIAIB0ABIABBABR0ARBARRxk+1Ixk+1Bxk+1R=bk+1Ibk+1Bbk+1R---(4)]]>AII,ABB,ARR分别为子电路I、边界电路B和剩余电路R的系数矩阵,并依次与I中的变量向量xI,xB,xR相关联;ABI和AIB为子电路I与边界电路B的关联矩阵;ABR和ARB为剩余电路R与边界电路B的关联矩阵;xk+1I,xk+1R,xk+1B]]>分别代表子电路I、剩余电路R和边界节点B在k+1时刻步骤的解;步骤3.2.在第k+1模拟步骤时刻,相对于直接求解方程组(4),我们可以把方程组(4)写成如下形式AIIxk+1I+AIBxk+1B=bk+1I]]>ABIxk+1I+ABBxk+1B+ABRxk+1R=bk+1B]]>ARBXk+1B+ARRxk+1R=bk+1R]]>然后把以上三式中的后两式合并,并且做简单变换后得到ABBABRARBARRxk+1Bxk+1R=bk+1B-ABIxk+1Ibk+1R]]>AIIxk+1I=bk+1I-AIBxk+1B]]>针对以上两部分,可以用松弛的方法进行逐个求解,直到满足精度要求为止;具体的方法如下所示ABBABRARBARRxk+1,pBxk+1,pR=bk+1B-ABIxk+1,p-1Ibk+1R---(5)]]>AIIxk+1,pI=bk+1I-AIBxk+1,pB---(6)]]>其中xk+1,pI,xk+1,pR,xk+1,pB]]>分别代表子电路I、剩余电路R和边界电路B在k+1时刻,p次松弛步骤的解;当方程组(5)在第一次求解的时候,令xk+1,p-1I=xkI,]]>表示利用k时刻的值来初始化k+1时刻的起始松弛步骤的值;步骤4.初始化模拟,令步骤计数器K=0,由每一个节点的PWL波形图得到各个节点的初始电压值,此值应该等于各个节点关联电容的初始电压值,并计算出各个支路上面的初始电流值,由此构建xk;步骤5.若K>M,则结束模拟;否则执行以下步骤步骤6.在k+1时刻,利用层次式策略和松弛操作求解电路,子过程如下a)通过每一个节点的PWL波形提取k+1步骤时刻各个节点供电模块单元的吸纳电流,计算得到k+1时刻方程组右边的电流向量bk+1,带入由步骤3得到的线性方程组(5,6);b)p=1,并且初始化子电路模块此时刻的值xk+1,p-1I=xkI;]]>c)求解父亲电路,得到边界点上此时刻的电流值xk+1,pB;d)逐个求解子电路模块得到解向量xk+1,pI,由此得到所有节点的解向量xk+1,p;e)如果‖xk+1,p-xk+1,p-1‖≤ε,ε是预先设定值,为很小的正数;表明迭代满足收敛条件,xk+1=xk+1,p,结束此步骤的模拟过程,转向步骤7;否则p=p+1,转向c);步骤7.输出保存此时刻的所有节点的电压值,k=k+1;转到步骤5进行下一步模拟。
全文摘要
基于松弛操作的层次式电源/地线网络的瞬态分析方法属于VLSI物理设计领域,其特征在于先把原始电路利用一种以通孔连线为边界线的划分策略划分为多个规模较小的子电路,再通过松弛操作把子电路的电学参数映射到由边界节点组成的父亲电路中,再利用现有的快速算法求解父亲电路后逐个求解各子电路,本发明用C语言实现,它在满足精度前提下,不仅快速且占用的内存小,而且其层次式的设计方法更适用于更大规模芯片的测试。
文档编号G06F17/50GK1700216SQ20051001180
公开日2005年11月23日 申请日期2005年5月27日 优先权日2005年5月27日
发明者洪先龙, 蔡懿慈, 潘著, 骆祖莹, 谭向东 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1