发明名称 可处理VLSI中树网混合供电结构的瞬态仿真方法
摘要 VLSI中树网混合供电结构的高速高精度瞬态仿真方法本发明属于VLSI制造技术领域,其特性在于它能够快速对任意比例的树网混合供电网进行瞬态仿真。该方法解决了常规仿真方法不能够处理不规则拓扑结构和多供电源的问题,并且具有很高的仿真精度。同时该方法完全考虑了电阻、电容和电感作为寄生参数的输入,能够达到很高的仿真精度。方法中还采用了基于不完全乔莱斯基分解的预处理技术和快速变元消除技术,方法的效率得到大幅度提高。实验结果证明了该算法具有极高的仿真精度和数值稳定性,能够在很短的时间内对极大规模的电源/地线网络进行仿真,同时由于与拓扑结构的无关性,该方法也适用于高频集成电路中的无源时钟线网、总线线网以及信号线网的仿真。
申请公布号 CN1275318C 申请公布日期 2006.09.13
申请号 CN200410003460.6 申请日期 2004.03.26
申请人 清华大学 发明人 洪先龙;蔡懿慈;师进;骆祖莹
分类号 H01L21/82(2006.01);G06F17/50(2006.01) 主分类号 H01L21/82(2006.01)
代理机构 代理人
主权项 1.VLSI中树网混合供电结构的瞬态仿真方法,其特征在于它是以SunV880工作站为计算平台使用C语言在unix环境下实现的,它依赖于以下几个步骤:1)程序扫描以Spice网表形式给出的电源网络的拓扑连接信息和电参数信息;2)计算机程序利用步骤1)得到的信息,建立起分别描述电导、电容、电感和电流源、电压源参数的数据表;3)程序通过扫描网表文件找到整个电源网络中的所有树形结构,并将其表示为一个层次式的节点列表,同时生成一个描述RL结构的列表;4)通过下述任何一种时域下的差分离散方法计算电源/地线网络中的电容元件以及电感元件的等效电导大小和等效瞬时电流源大小,即把电容元件和电感元件近似地转换为并联的电流源和电阻元件,同时设初始时刻的等效电流源是零;4.1)梯形欧拉法对电容而言<math> <mrow> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> <math> <mrow> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mn>2</mn> <mi>C</mi> </mrow> <mi>h</mi> </mfrac> <mo>,</mo> </mrow> </math> 对电感而言<math> <mrow> <msubsup> <mi>I</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> <math> <mrow> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>=</mo> <mfrac> <mi>h</mi> <mrow> <mn>2</mn> <mi>L</mi> </mrow> </mfrac> <mo>,</mo> </mrow> </math> 其中h是用户输入的仿真步长,单位是秒,Ict+h、Vct+h分别是t+h时刻电容支路上的电流和端电压,Ict、Vct分别是t时刻电容支路上的电流和端电压,Gc是电容元件离散化后的等效电导,ILt+h、VLt+h分别是t+h时刻电感支路上的电流和端电压,ILt、VLt分别是t时刻电感支路上的电流和端电压,GL是电感元件离散化后的等效电导,若令<math> <mrow> <msubsup> <mi>IS</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> 则<math> <mrow> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>IS</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>,</mo> </mrow> </math> <math> <mrow> <msubsup> <mi>IS</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> 则<math> <mrow> <msubsup> <mi>I</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>IS</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>,</mo> </mrow> </math> 4.2)线性多步法<math> <mrow> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>-</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>3</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>2</mn> <mi>h</mi> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </math> <math> <mrow> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mn>24</mn> <mi>C</mi> </mrow> <mrow> <mn>9</mn> <mi>h</mi> </mrow> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>a</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mn>19</mn> <mn>9</mn> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>a</mi> <mn>2</mn> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mn>5</mn> <mn>9</mn> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>a</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mn>1</mn> <mn>9</mn> </mfrac> </mrow> </math> <math> <mrow> <msubsup> <mi>I</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>1</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mn>2</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>-</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mn>3</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>2</mn> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> <math> <mrow> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>=</mo> <mfrac> <mrow> <mn>9</mn> <mi>h</mi> </mrow> <mrow> <mn>24</mn> <mi>L</mi> </mrow> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>b</mi> <mn>1</mn> </msub> <mo>=</mo> <mfrac> <mrow> <mn>19</mn> <mi>h</mi> </mrow> <mrow> <mn>24</mn> <mi>L</mi> </mrow> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>b</mi> <mn>2</mn> </msub> <mo>=</mo> <mo>-</mo> <mfrac> <mrow> <mn>5</mn> <mi>h</mi> </mrow> <mrow> <mn>24</mn> <mi>L</mi> </mrow> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <msub> <mi>b</mi> <mn>3</mn> </msub> <mo>=</mo> <mfrac> <mi>h</mi> <mrow> <mn>24</mn> <mi>L</mi> </mrow> </mfrac> </mrow> </math> 若令<math> <mrow> <msubsup> <mi>IS</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mo>-</mo> <mrow> <mo>(</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>-</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi>a</mi> <mn>3</mn> </msub> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>2</mn> <mi>h</mi> </mrow> </msubsup> <mo>)</mo> </mrow> </mrow> </math> 则<math> <mrow> <msubsup> <mi>I</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>c</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>IS</mi> <mi>c</mi> <mi>t</mi> </msubsup> <mo>,</mo> </mrow> </math> 若令<math> <mrow> <msubsup> <mi>IS</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mrow> <mo>(</mo> <msub> <mi>b</mi> <mn>1</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mn>2</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>-</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi>b</mi> <mn>3</mn> </msub> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>-</mo> <mn>2</mn> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>I</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> </mrow> </math> 则<math> <mrow> <msubsup> <mi>I</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>=</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>L</mi> <mrow> <mi>t</mi> <mo>+</mo> <mi>h</mi> </mrow> </msubsup> <mo>+</mo> <msubsup> <mi>IS</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>;</mo> </mrow> </math> 5)按照步骤3)中得到的森林节点层次表中自底向上的顺序,通过查找节点连接关系索引表和电容、电感元件的离散数据表,把连接在各个树节点上,需要改变的电容和电感替换成相应的电导和电流源;6)按照上述森林节点层次表中节点的顺序,从每棵树的底端开始,反复使用线性含源两端电阻网络的等效电路原理,把替换后的电流源和电导元件作层次式的合并,使供电网上所有的树都归并为根节点上的电导和电流源,它含有以下顺序进行的两个步骤:6.1)把所有的电容和电感的等效电导合并到根节点上,6.2)在每个时刻更新完所有电感和电容的等效电流源之后,再把更新后树节点上电容和电感的等效电流源再进行合并,最终得到根结点上的等效电流源;7)程序按照RL结构索引表给出的顺序用上述等效原理进行变换,消除电源网中的中间节点,生成一个以RL结构索引表的顺序为排列顺序的RL结构化参数表,该参数表中含有的m,n,o为中间计算系数,且任意通过下列表达式得到的中间系数都应当被认为等同于系数m,n,o:m=o·G,n=1-m,<math> <mrow> <mi>o</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>G</mi> <mo>+</mo> <msub> <mi>G</mi> <mi>L</mi> </msub> </mrow> </mfrac> </mrow> </math> 其中,G是RL结构上的自带电导, GL是RL结构中L等效后得到的电导;8)重新对网络中所有的节点进行排序,形成新的节点连接关系索引表;9)根据简化后的电源/地线拓扑结构,生成计算矩阵和相应的电流源向量,形成供电节点电压、电流的线性方程组,它依赖于以下步骤:9.1)把接地节点标记为零节点,把接地节点从节点连接关系索引表中除去;9.2)基于基尔霍夫定律和欧姆定律得到供电节点电压、电流的线性方程组,如下式所示:<math> <mrow> <munder> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&Element;</mo> <mi>P</mi> </mrow> </munder> <msub> <mi>g</mi> <mi>jk</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>v</mi> <mi>j</mi> </msub> <mo>-</mo> <msub> <mi>v</mi> <mi>k</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> <mo>&NotEqual;</mo> <mi>k</mi> </mrow> <msup> <mi>N</mi> <mo>&prime;</mo> </msup> </munderover> <msub> <mi>g</mi> <mi>ik</mi> </msub> <mrow> <mo>(</mo> <msub> <mi>v</mi> <mi>i</mi> </msub> <mo>-</mo> <msub> <mi>v</mi> <mi>k</mi> </msub> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>i</mi> <mi>k</mi> </msub> <mo>,</mo> </mrow> </math> 该线性方程组的矩阵形式为G·V=I,其中,G为一个N’×N’的矩阵,称为计算矩阵,且<math> <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>g</mi> <mrow> <mi>ij</mi> <mo>,</mo> <mi>i</mi> <mo>&NotEqual;</mo> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>g</mi> <mi>ij</mi> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>g</mi> <mi>ij</mi> </msub> <mo>=</mo> <mo>-</mo> <mrow> <mo>(</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>&Element;</mo> <mi>P</mi> </mrow> </munder> <msub> <mi>g</mi> <mi>ij</mi> </msub> <mo>+</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>j</mi> <mo>&NotEqual;</mo> <mi>i</mi> </mrow> <msup> <mi>N</mi> <mo>&prime;</mo> </msup> </munderover> <msub> <mi>g</mi> <mi>ij</mi> </msub> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> </mrow> </math> V为一个N’维列向量,其中每个元素代表网结构上各节点的电压值,I为一个N’维列向量,其中每个元素代表每个节点到地的电流值,同时,N’是供电网中网结构的节点数, vk是矩阵中第k行所代表的一个节点的电压值, vi是vk节点之外的其他节点的电压值, vj是电压源的电压值, P是和电压源相连的节点的下标集合, gik是节点k和其他节点i相连的电导值, gik是节点k和电压源相连的电导值;10)通过调用基于不完全乔莱斯基分解的预优共轭梯度算法求解引擎得到简化后节点供电电压的分布;11)在得到所有RL结构的两端节点在某个时刻的电压之后,根据RL结构化简参数表,通过扫描中间节点链,并按下式进行四则运算,就可以逐一恢复所有中间节点此时刻的电压值:<math> <mrow> <msubsup> <mi>V</mi> <mi>RLnode</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mi>m</mi> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>Gnode</mi> <mi>t</mi> </msubsup> <mo>+</mo> <mi>n</mi> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>Lnode</mi> <mi>t</mi> </msubsup> <mo>-</mo> <mi>o</mi> <mo>&CenterDot;</mo> <msubsup> <mi>IS</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>;</mo> </mrow> </math> 12)根据森林节点层次表中节点的顺序和树结构化简参数表,按下式还原所有该时刻树节点电压值:<math> <mrow> <msubsup> <mi>V</mi> <mi>middle</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mi>c</mi> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>top</mi> <mi>t</mi> </msubsup> <mo>-</mo> <msubsup> <mi>eI</mi> <mi>middle</mi> <mi>t</mi> </msubsup> </mrow> </math> <math> <mrow> <msubsup> <mi>V</mi> <mi>bottom</mi> <mi>t</mi> </msubsup> <mo>=</mo> <mi>a</mi> <mo>&CenterDot;</mo> <msubsup> <mi>V</mi> <mi>middle</mi> <mi>t</mi> </msubsup> <mo>+</mo> <mi>d</mi> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <msubsup> <mi>I</mi> <mi>L</mi> <mi>t</mi> </msubsup> <mo>-</mo> <msubsup> <mi>I</mi> <mi>bottom</mi> <mi>t</mi> </msubsup> <mo>)</mo> </mrow> <mo>,</mo> </mrow> </math> 其中a=GL·d,b=1-a,c=Gtop·e,<math> <mrow> <mi>d</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <msub> <mi>G</mi> <mi>L</mi> </msub> <mo>+</mo> <msub> <mi>G</mi> <mi>bottom</mi> </msub> </mrow> </mfrac> <mo>,</mo> </mrow> </math> <math> <mrow> <mi>e</mi> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <msub> <mi>G</mi> <mi>top</mi> </msub> <mo>+</mo> <msub> <mi>G</mi> <mi>middle</mi> </msub> </mrow> </mfrac> <mo>,</mo> </mrow> </math> G、GL的定义同7)所述;13)根据以上得到的全部节点电压分布,重新计算电流源向量;14)如果没有达到预定的仿真时间,跳转到步骤10)继续执行。
地址 100084北京市北京100084-82信箱