发明名称 面向倒装封装技术的增量式I/O规划方法
摘要 面向倒装封装技术的增量式I/O规划方法,属于集成电路计算机辅助设计领域,尤其涉及布图规划后处理领域,其特征在于,依次含有以下步骤:计算模块对输入输出缓冲器的需求;把模块对缓冲器的需求转化为对空白区的需求;根据模块的空白区需求进行空白区重分配;建立将缓冲器插入空白区的网络流模型;用压入与重标记方法求解网络流模型,求得缓冲器的最佳插入方案;建立对封装凸点进行信号分配的网络流模型;用压入与重标记方法求解网络流模型,求得封装凸点的最佳信号分配方案。
申请公布号 CN102063535B 申请公布日期 2012.07.11
申请号 CN201010608448.3 申请日期 2010.12.17
申请人 清华大学 发明人 董社勤;马昱春;蔡懿慈;周强;王曾
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 北京清亦华知识产权代理事务所(普通合伙) 11201 代理人 廖元秋
主权项 1.面向倒装封装技术的增量式I/O规划方法,其特征在于,所述方法是在计算机中依次按照以下步骤实现的:步骤(1),计算机初始化:输入芯片的原始布局信息,包括:模块信息、网表信息、电源地缓冲器信息、输入输出缓冲器信息以及输入输出缓冲器数和电源地缓冲器数之比,称为电源信号比R<sup>SPG</sup>;步骤(2),计算模块的空白区需求:步骤(2.1),定义:粘附边,是指在所述输入输出缓冲器中,与其中每一个缓冲器所在线网的边框相交的模块的边框,所述粘附边的数目用Nae<sub>k</sub>表示,k是所述缓冲器的序号,把1/Nae<sub>k</sub>称之为所述缓冲器k分配到所述粘附边上的概率,1/Nae<sub>k</sub>也叫做模块对缓冲器k的需求;步骤(2.2),计算所述模块的输入输出缓冲器需求:<img file="FSB00000769257700011.GIF" wi="1345" he="305" />其中:TBuf<sub>i</sub>、BBuf<sub>i</sub>、LBuf<sub>i</sub>、RBuf<sub>i</sub>分别表示模块i的上、下、左、右各边框的缓冲器需求;步骤(2.3),把步骤(2.2)得到的模块i对缓冲器的需求转化为对空白区的需求:TW<sub>i</sub>=TBuf<sub>i</sub>×Abuf<sub>k</sub>×(1+1/R<sup>SPG</sup>)BW<sub>i</sub>=BBuf<sub>i</sub>×Abuf<sub>k</sub>×(1+1/R<sup>SPG</sup>)LW<sub>i</sub>=LBuf<sub>i</sub>×Abuf<sub>k</sub>×(1+1/R<sup>SPG</sup>),其中:RW<sub>i</sub>=RBuf<sub>i</sub>×Abuf<sub>k</sub>×(1+1/R<sup>SPG</sup>)Abuf<sub>k</sub>为所述模块i对应的所述缓冲器的面积,TW<sub>i</sub>、BW<sub>i</sub>、LW<sub>i</sub>、RW<sub>i</sub>分别表示所述模块i上、下、左、右边框的空白区需求;步骤(3),根据步骤(2.3)得到的各模块i的空白区需求对空白区进行重分配,步骤如下:步骤(3.1),建立空白区重分配的目标函数:<maths num="0001"><![CDATA[<math><mrow><mi>min</mi><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>M</mi></mrow></munder><mo>{</mo><msub><mi>h</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>L</mi><mi>i</mi></msub><mo>-</mo><msub><mi>l</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>h</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>R</mi><mi>i</mi></msub><mo>-</mo><msub><mi>r</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>w</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>T</mi><mi>i</mi></msub><mo>-</mo><msub><mi>t</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>+</mo><msub><mi>w</mi><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>B</mi><mi>i</mi></msub><mo>-</mo><msub><mi>b</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>}</mo><mo>,</mo></mrow></math>]]></maths>其中:h<sub>i</sub>为模块i的高,w<sub>i</sub>为模块i的宽,L<sub>i</sub>为模块i左边界所需空白区的宽度,R<sub>i</sub>为模块i右边界所需空白区的宽度,T<sub>i</sub>为模块i上边界所需空白区的高度,B<sub>i</sub>为模块i下边界所需空白区的高度,l<sub>i</sub>是与L<sub>i</sub>对应的最终分配的空白区宽度,r<sub>i</sub>是与R<sub>i</sub>对应的最终分配的空白区宽度,t<sub>i</sub>是与T<sub>i</sub>对应的最终分配的空白区高度,b<sub>i</sub>是与B<sub>i</sub>对应的最终分配的空白区高度,M是模块i的集合,L<sub>i</sub>=LW<sub>i</sub>/h<sub>i</sub>,        R<sub>i</sub>=RW<sub>i</sub>/h<sub>i</sub>,T<sub>i</sub>=TW<sub>i</sub>/w<sub>i</sub>,        B<sub>i</sub>=BW<sub>i</sub>/w<sub>i</sub>,LW<sub>i</sub>、RW<sub>i</sub>、TW<sub>i</sub>、BW<sub>i</sub>分别如步骤(2.3)所述;步骤(3.2),建立约束关系:步骤(3.2.1),模块间的几何位置约束为:<img file="FSB00000769257700021.GIF" wi="534" he="203" />其中:<img file="FSB00000769257700022.GIF" wi="295" he="71" />分别为位于模块i左边的<img file="FSB00000769257700023.GIF" wi="145" he="71" />的左下角横坐标、宽度以及最终分配给右边框的空白区宽度,<img file="FSB00000769257700024.GIF" wi="282" he="69" />分别为位于模块i下边的<img file="FSB00000769257700025.GIF" wi="145" he="70" />的左下角纵坐标、高度和最终分配的给上边框的空白区高度,x<sub>i</sub>、y<sub>i</sub>、l<sub>i</sub>、b<sub>i</sub>分别为模块i的左下角横坐标、左下角纵坐标、最终分配给左边框的空白区宽度以及最终分配给下边框的空白区高度;步骤(3.2.2),芯片的面积约束为:x<sub>i</sub>≥l<sub>i</sub>,y<sub>i</sub>≥b<sub>i</sub>,x<sub>i</sub>+w<sub>i</sub>+r<sub>i</sub>≤W,y<sub>i</sub>+h<sub>i</sub>+t<sub>i</sub>≤H,其中:W为芯片的宽,H为芯片的高;步骤(4),利用最小代价流算法将所述输入输出缓冲器插入到新得到的空白区中,并使芯片上的线长最短,步骤如下:步骤(4.1),为一个所述输入输出缓冲器定义一个矩形的可放置区域,以便从其可放置区域内部选择一个空白矩形块来放置所述的这个输入输出缓冲器;步骤(4.2),设置所述输入输出缓冲器的可放置区域的大小:使用输入输出缓冲器所对应的线网边框作为其可放置区域的初始值,为了保证每一个输入输出缓冲器都至少有一个供其放置的空白矩形块,需要将其可放置区域扩大至包含给定数目的阈值为10的空白矩形块,并把空白矩形块的一部分面积留给电源缓冲器;步骤(4.3),建立缓冲器插入的网络流模型的最小代价流模型:网络流模型中,除了源点和汇点之外,其他的节点表示输入输出缓冲器和空白矩形块,从源点到每一个输入输出缓冲器节点都有一条边,相应的,从每一个空白矩形块节点到汇点也都有一条边,从源点到输入输出缓冲器节点的边的容量设置为1,代价设置为0,假设A<sub>g</sub>是空白矩形块g的面积,考虑到芯片上的电源信号比,则从空白矩形块g节点到汇点的边的容量Φ<sub>g</sub>设置为:Φ<sub>g</sub>=A<sub>g</sub>/(Abuf<sub>k</sub>×(1+1/R<sup>SPG</sup>))其代价设置为0,如果输入输出缓冲器节点k到空白矩形块节点g之间存在边,则表示空白矩形块g在输入输出缓冲器k的可放置区域中,这些边的容量设置为1,代价为当将输入输出缓冲器k放置到空白矩形块g的中心位置时,输入输出缓冲器i所对应的线网半周长;步骤(4.4),求解缓冲器插入的网络流模型的最小代价流模型:用压入与重标记方法求解最小代价流模型,找到满足容量约束的从源点到所要插入的输入输出缓冲器再到空白矩形块最后到汇点的最小代价流,就找到了该输入输出缓冲器的插入方案,就知道了将每一个输入输出缓冲器分配到了哪一个空白矩形块中;步骤(4.5),放置输入输出缓冲器:为了将输入输出缓冲器插入到空白矩形块中的具体位置,将空白矩形块划分成一个个小格子,每一个小格子的面积等于输入输出缓冲器的面积,然后将输入输出缓冲器顺序放入这些小格子中,输入输出缓冲器的具体位置在详细布局阶段做进一步的优化;步骤(5),利用最小代价流算法求解封装凸点的信号分配问题,使其封装线长最短:在将输入输出缓冲器分配到空白矩形块之后,需要将输入输出缓冲器分配到封装凸点上去,对封装凸点进行信号分配,为了使封装线长最短,需要将输入输出缓冲器分配给其附近的封装凸点,故将封装凸点的信号分配问题形式化为凸点信号分配的网络流模型,步骤如下:步骤(5.1),定义输入输出缓冲器的可分配区域:输入输出缓冲器的可分配区域是一个矩形区域,从可分配区域内部选择一个封装凸点分配给这个输入输出缓冲器;步骤(5.2),设置输入输出缓冲器的可分配区域的大小:首先为输入输出缓冲器的可分配区域设置一个初始值,为了保证每一个输入输出缓冲器都至少有一个供其分配的的封装凸点,将其可分配区域扩大至包含给定数目的封装凸点;步骤(5.3),建立封装凸点的信号分配网络流模型:网络流模型中,除了源点和汇点之外,其他的节点表示输入输出缓冲器和封装凸点,从源点到每一个输入输出缓冲器节点有一条边,从每一个封装凸点节点到汇点也有一条边,由于一个输入输出缓冲器只能分配给一个封装凸点,而一个封装凸点也只能分配一个输入输出缓冲器,故这些边的容量设置为1,代价设置为0,如果输入输出缓冲器节点k到封装凸点节点q之间存在边,则表示封装凸点q在输入输出缓冲器k的可分配区域中,这些边的容量设置为1,代价为输入输出缓冲器k和封装凸点q之间的距离;步骤(5.4)求解凸点信号分配的网络流模型的最小代价流模型:通过压入与重标记方法求解最小代价流模型,找到满足容量约束的从源点到输入输出缓冲器再到封装凸点最后到汇点的最小代价流,就找到了封装凸点的信号分配方案;步骤(5.5),为封装凸点分配信号:根据步骤(5.4)中得到的分配方案,将输入输出缓冲器分配给指定的封装凸点,每一个输入输出缓冲器都会被分配给一个封装凸点,但封装凸点的数目会多于输入输出缓冲器的数目,存留一些空白封装凸点,备用。
地址 100084 北京市100084信箱82分箱清华大学专利办公室