本发明主要涉及到集成电路设计技术领域,特指一种基于原有布图规划的自动化物理单元插入方法。
背景技术:
在集成电路物理设计中物理单元和功能单元不同,它不会改变设计的功能,但是其在保证芯片的可制造性、良率和可靠性等方面具有重要作用,例如esd单元在提高全芯片的静电防护能力中就发挥主要作用。在物理设计阶段中按照一定间距要求插入一定数量的物理单元是发挥其功能的关键。根据工艺厂商提供的标准单元库和设计具体要求来说,通常在全芯片中插入的物理单元数量较少并且相邻单元之间的距离是一个范围值。而且,相比于一般硬宏模块如存储体模块,物理单元都是较小的矩形模块,甚至有些单元和标准单元接近。所以在保持设计原有布图规划的情况下,物理单元依然具有较大的可移动范围。
在标准的层次化物理设计流程中,物理单元在顶层布图规划或布局(placement)完成后插入,当某些物理单元落在子模块范围内时,顶层设计者将这些单元的位置信息和方位信息等提供给各子模块设计者,然后由各子模块设计者按照所提供的信息在子模块插入物理单元。当某些预设位置被子模块下的硬宏模块占据时,通常由各子模块设计者调整模块布图规划让出所占据的位置或者配合顶层设计者手工修改物理单元的预设位置,一般来说这个过程需要迭代数次,将消耗很多手工调整时间。通常来说布图规划就是对设计中的硬宏模块进行合理的布局,其对提高设计时序收敛速度、减少噪声和功耗等具有重要影响。因此,在插入物理单元时应该尽可能保持顶层和子模块原有布图规划,减小单元插入对设计性能的影响,这将在提高设计效率、减少设计迭代次数、优化设计流程方面具有重要作用。
在物理设计pr阶段通常用使用标准单元的lef(libraryexchangeformat)格式代替单元完整的版图(gdsii)格式简化设计。单元的lef格式只包含单元金属层的信息,物理单元对设计的影响主要体现在其所在金属层消耗了布线资源、增加了设计的拥塞使设计出现绕线甚至短路(short)的情况。物理单元可分为有引脚单元和无引脚单元两类,无引脚单元与设计没有连接,通常没有上层金属层和上层布线阻挡层(routingblockage);有引脚单元与设计有连接,通常有上层金属层和布线阻挡层。所以,只有有引脚单元才会消耗设计布线资源。通常来说在设计布局完成后就需要进行布线资源评估,大多数区域布线资源都比较充足,只有在个别较小区域内可能会出现布线资源紧张的情况,这些区域通常是面积较小的矩形区域称为hotspot,因此如果物理单元插入的位置能避开这些区域就能很大程度避免设计拥塞的增加。
技术实现要素:
本发明要解决的技术问题就在于:针对现有技术在存在的技术问题,本发明提供一种能够原理简单、易操作、能够提高整体物理设计效率的基于原有布图规划的自动化物理单元插入方法。
为解决上述技术问题,本发明采用以下技术方案:
一种基于原有布图规划的自动化物理单元插入方法,其包括:
步骤s1:在设计布局后将所有子模块在顶层展开,将每个子模块和顶层需要固定的硬宏模块的实例化名称记录到文档1;
步骤s2:读取文档1,获取各硬宏模块布局阻挡层的信息;
步骤s3:报告全芯片拥塞情况,记录所有的hotspot的坐标和box参数,生成等尺寸的布线阻挡矩形box,并按一定规则命名;
步骤s4:将以上所有的box的实例化名称、位置坐标和box参数按行记录生成文档2;
步骤s5:在全芯片建立物理单元距离芯片边界距离范围大小的矩形box0阵列;
步骤s6:在每个box0ij相同位置上确定单元间距范围大小的box1ij,排除没有任何blockage的box0ij;
步骤s7:在每个box1ij中选出所有能够布放物理单元的box4ij,并在在每个box4ij中找到面积最大的box5ij;
步骤s8:在每个box5中计算出布放物理单元的中心位置坐标;
步骤s9:确定空白box9并计算物理单元在其中的中心位置坐标;
步骤s10:删除所有建立的blockage,在顶层和子模块分别插入物理单元;
步骤s11:结束。
作为本发明的进一步改进:所述步骤s2中布局阻挡层的信息包括坐标、box参数、引脚方位和引脚数量。
作为本发明的进一步改进:所述步骤s2中,如果插入的物理单元为有引脚单元,则在硬宏模块引脚方位相邻位置上生成宽度一定、高度和引脚数量成正比的布线阻挡矩形,按照一定规则命名这些矩形,并记录坐标和box参数。
作为本发明的进一步改进:在所述步骤s5中,box0阵列建立采取的方法如下,根据给定的第一个物理单元距离全芯片底边和左边的距离要求与芯片的长与宽,确定第一个单元分别离左边和底边的距离范围(bl0,bh0),以离左边和底边最近的x坐标和y坐标为第一个初始点,以给定的单元间距范围的中值dm为间距计算出所有点阵坐标,然后以这些点为box的左下坐标,建立长度为bl0、高度为bh0的矩形box0ij(i,j为阵列的行列号),并将所有坐标(i,j)添加到集合ua中。
作为本发明的进一步改进:在所述步骤s6中包括:
步骤s601:排除无blockage的box0ij的方法如下,首先获取每个box0ij内blockage的实例化名称,然后根据实例化名从文档2中查找相应的参数,将没有blockage的box0ij的坐标(i,j)添加到集合uw;
步骤s602:确定box1ij的方法如下,采用平面上的二分法在每个box0ij({(i,j)|(i,j)∈ua-uw})内找到的一个位置相同的坐标点pij,使能以pij为左下坐标点的box1ij内找到一个面积saij,在所有saij内能让尽可能多的物理单元cij都布放下。
作为本发明的进一步改进:所述平面上的二分法包括:
a)根据具体设计设定一个物理单元的阈值面积sth,计算物理单元cij的面积scell,并计算box0ij内物理单元cij的可移动面积s0ij,然后计算剩余面积sr0ij=s0ij-scell-stt,将srij<0的坐标(i,j)添加到集合uf,并计算集合us=ua-uw-uf;
b)计算ld0=lbox0-lbox1和hd0=hbox0-hbox1,其中lbox0为box0ij的长,lbox1为box1ij的长,hbox0为box0ij的高,hbox1为box1ij的高,并使每个初始坐标
c)计算在每个box0ij({(i,j)|(i,j)∈us})内以pij为左下坐标,长度
d)计算在每个box0ij内以pij为左下坐标长度
e)若ldn≤el并且hdm≤eh(eh和el分别为长和宽的最小精度值,这两个值取决于具体设计),取
作为本发明的进一步改进:在所述步骤s7中,先确定box4ij,然后根据box4ij确定box5ij,具体方法如下:以pij({(i,j)|(i,j)∈us})为左下坐标,长度lbn=lbox1l、高度hbm=hbox1h的box4ij,在每个box4ij中再次使用平面二分法,在范围中找到一个面积最大且没有任何blockage的box5ij,并记坐标为p5ij。
作为本发明的进一步改进:所述可移动面积的计算方法包括:
f)在给定的box范围内,根据box0ij内blockage的名称和参数,计算每个blockage在box内坐标点的个数,求出blockage在box中的位置关系;按照位置关系将每个blockage的坐标参数修改成在box中所在的有效区域的坐标参数;
g)根据box中blockage新的坐标参数,计算出每个blockage的面积记为sbi,其中i为blockage的序号,并计算出总面积sc0=∑sbi
h)将所有的blockage和box的x坐标从小到大排列,从小到大依次取出两个点构成线段,若其中有点重复,使这些点依次与右边第一个不重复的点构成线段,排除线段中两个点属于同一个blockage的线段ln,其中n为线段序号,若其余ln<lcell求出这两个点所在的blockage的y坐标构成的区域的公共区域长记为hn,然后求出所在面积sn=ln*hn;最后求出总面积sc1=∑sn;
i)同理,将所有的blockage和box的y坐标从小到大排列,从小到大依次取出两个点构成线段,若其中点重复,使这些点依次于下边和上边第一个不重复的点构成线段,并排除线段中两个点属于同一个blockage的线段hm,其中m为线段序号,若其余hm<hcell求出这两个点所在的blockage的x坐标构成的区域的公共区域长记为ln,然后求出所在面积sm=lm*hm;最后求出总面积sc2=∑sm;
j)最后计算可移动面积为smv=sbox–sc0-sc1-sc2。
与现有技术相比,本发明的优点在于:
1、本发明的基于原有布图规划的自动化物理单元插入方法,为一种在层次化物理设计中保持原有布图规划,插入物理单元的方法。与传统物理单元插入方法相比较,本发明以物理单元的间距范围要求为前提,可以在不改变设计子模块或顶层的硬宏模块布图规划的情况下,自动完成物理单元的插入。这种固定设计布图规划、插入物理单元的方法能够有效简化子模块的布图规划和布局布线设计流程、减少runtime时间,并且能减少顶层和子模块协同设计的迭代次数、提高物理设计效率。
2、本发明充分利用物理单元距离芯片边界的范围约束条件和物理单元间距范围约束条件,采用两次平面上的二分法为每一个待插入的物理单元找出即满足插入间距要求又满足对原设计性能影响最小的位置坐标。
附图说明
图1是本发明方法的流程示意图。
图2是本发明在具体应用实例红某芯片顶层布图规划示意图。
图3是子模块2的布图规划示意图。
图4是硬宏单元堆b生成引脚保护环和hotspot的示意图。
图5是生成的文档2的内容格式示意图。
图6是在box0ij中通过平面二分法找到box1ij的流程图。
图7是在每个box4ij中通过平面二分法找到box5ij的流程图。
图8是本发明在实例中插入物理单元方法完整过程的原理示意图。
图9是在box中计算可移动面积算法的过程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的基于原有布图规划的自动化物理单元插入方法,包括:
步骤s1:在设计布局后将所有子模块在顶层展开,将每个子模块和顶层需要固定的硬宏模块的实例化名称记录到文档1;
步骤s2:读取文档1,获取各硬宏模块布局阻挡层的信息;
步骤s3:报告全芯片拥塞情况,记录所有的hotspot的坐标和box参数,生成等尺寸的布线阻挡矩形box,并按一定规则命名;
步骤s4:将以上所有的box的实例化名称、位置坐标和box参数按行记录生成文档2;
步骤s5:在全芯片建立物理单元距离芯片边界距离范围大小的矩形box0阵列;
步骤s6:在每个box0ij相同位置上确定单元间距范围大小的box1ij,排除没有任何blockage的box0ij;
步骤s7:在每个box1ij中选出所有能够布放物理单元的box4ij,并在在每个box4ij中找到面积最大的box5ij;
步骤s8:在每个box5中计算出布放物理单元的中心位置坐标;
步骤s9:确定空白box9并计算物理单元在其中的中心位置坐标;
步骤s10:删除所有建立的blockage,在顶层和子模块分别插入物理单元;
步骤s11:结束。
在具体应用实例中,在步骤s5中,box0阵列建立的方法如下:根据给定的第一个物理单元距离全芯片底边和左边的距离要求和芯片的长与宽,确定第一个单元分别离左边和底边的距离范围(bl0,bh0)(通常这个范围比相邻单元间距范围大很多),以离左边和底边最近的x坐标和y坐标为第一个初始点,以给定的单元间距范围的中值dm为间距计算出所有点阵坐标,然后以这些点为box的左下坐标,建立长度为bl0、高度为bh0的范围矩形box0ij(i为阵列的行号,j为阵列的列号),并将所有坐标(i,j)添加到集合ua中;
在具体应用实例中,在步骤s6中,获取每个box0ij内blockage的实例化名称,然后根据实例化名从文档2中查找相应的参数,排除其中没有blockage的box0ij并将对应的坐标(i,j)添加到集合uw。然后将box0ij({(i,j)|(i,j)∈ua-uw})做归一化处理,采用平面上的二分法找到在每个box0ij内的一个相对位置相同的坐标点pij,使能在以pij为左下坐标点的box1ij(box1ij为物理单元间距矩形范围)内找到一个面积saij,在所有saij内能让尽可能多的物理单元cij都布放下。
平面上的二分法的具体操作方法如下:
a)根据具体设计设定一个物理单元的阈值面积sth(sth≥0使cij插入后有一定的余量),计算物理单元cij的面积scell,并计算box0ij内物理单元cij的可移动面积s0ij,然后计算剩余面积sr0ij=s0ij-scell-sth,将srij<0的坐标(i,j)添加到集合uf,并计算集合us=ua-uw-uf;
b)计算ld0=lbox0-lbox1(lbox0为box0ij的长,lbox1为box1ij的长)和hd0=hbox0-hbox1(hbox0为box0ij的高,hbox1为box1ij的高),并使每个初始坐标
c)计算在每个box0ij({(i,j)|(i,j)∈us})内以pij为左下坐标,长度
d)计算在每个box0ij内以pij为左下坐标长度
e)若ldn≤el并且hdm≤eh(eh和el分别为长和宽的最小精度值,这两个值取决于具体设计),取
在具体应用实例中,在步骤s7中,以pij({(i,j)|(i,j)∈us})为左下坐标,长度
box5ij具体的确定方法如下:
a)计算box4ij的可移动面积s5ij,若s5ij=sb4ij(sb4ij为box4ij的面积),则取box4ij的参数确定box5ij,跳出循环;
b)计算ld0=lbox4–lcell(lbox4为box4ij的长,lcell为物理单元的长)、hd0=hbox4–hcell(hbox4为box4ij的高,hcell为物理单元的高),使
c)计算在box4ij内以p5ij为左下坐标长度lbn=ldn lcell、高度
d)计算在box4ij内以p5ij为左下坐标长度
e)跳转到步骤c)。
在具体应用实例中,在步骤s8中,在box5ij中计算出将物理单元cij放在正中心的位置坐标pcij,即
在具体应用实例中,在步骤s9中,根据上一步一个确定的pij计算出box0ij({(i,j)|∈uw})所对应的pwij,并确定以pwij左下坐标、长度
在具体应用实例中,可移动面积的计算方法:
k)在给定的box范围内,根据box0ij内blockage的名称和参数,计算每个blockage在box内坐标点的个数,求出blockage在box中的位置关系。按照位置关系将每个blockage的坐标参数修改成在box中所在的有效区域的坐标参数;
l)根据box中blockage新的坐标参数,计算出每个blockage的面积记为sbi(i为blockage的序号),并计算出总面积sc0=∑sbi
m)将所有的blockage和box的x坐标从小到大排列,从小到大依次取出两个点构成线段,若其中有点重复,使这些点依次与右边第一个不重复的点构成线段,排除线段中两个点属于同一个blockage的线段ln(n为线段序号),若其余ln<lcell求出这两个点所在的blockage的y坐标构成的区域的公共区域长记为hn,然后求出所在面积sn=ln*hn。最后求出总面积sc1=∑sn;
n)同理,将所有的blockage和box的y坐标从小到大排列,从小到大依次取出两个点构成线段,若其中点重复,使这些点依次于下边和上边第一个不重复的点构成线段,并排除线段中两个点属于同一个blockage的线段hm(m为线段序号),若其余hm<hcell求出这两个点所在的blockage的x坐标构成的区域的公共区域长记为ln,然后求出所在面积sm=lm*hm。最后求出总面积sc2=∑sm;
o)最后计算可移动面积为smv=sbox–sc0-sc1-sc2。
如图2所示,为在一个具体应用实例中某芯片顶层的在完成布局规划后宏模块的布图规划,其中包括各个子模块和顶层宏模块,子模块由各个子模块设计师设计完成,顶层设计者调用这些子模块。在物理单元的插入设计中为了减少子模块和顶层设计的迭代设计次数,就要尽可能不改变子模块和顶层的布图规划,因此需要采取有效的方法在物理单元占位时改变物理单元的位置,并且避免增加子模块和顶层的拥塞程度,具体操作如下:
1)将图2所示各个子模块在顶层展开,并隐藏所有标准单元,将设计中所有关心的硬宏单元名写入文档1,如图3所示为子模块2在顶层展开后的布图规划;
2)通过工具命令获取文档1中宏单元的布局阻挡层的坐标、box参数、引脚方位和引脚数量。因为有引脚物理单元的上层金属和布线阻挡层会消耗原有位置上的布线资源使设计出现拥塞和绕线,所以需要在宏模块引脚输出位置给予保护。如图4所示,分别在五个模块引脚输出位置上产生blockage。这些blockage高度相同,宽度和输出引脚数量成正比,给每个inst的引脚输出留有一定的空间,减少了引脚处的拥塞;
3)为了减少局部拥塞需要避免设计中的hotspot,为此本发明采取如图4所示的方法,通过工具命令报出了子模块2中硬宏单元堆b两个hotspot,然后产生和hotspot同等大小的布线阻挡层。
4)因为在下面步骤中有大量的计算需要查询某个范围内的blockage的参数,如果每次计算都使用工具命令查询参数这将会消耗大量的运行时间,因此将以上所有的box按行记录写入文档2,从文档中读取直接读取数据,加快运算速度,如图5所示;
5)在全芯片范围内建立box0ij阵列,作为所有box1ij的最大可移动区域,图8.a为子模块2中的6个box0ij的示意图;
6)为了使插入的物理单元都满足相邻单元的间距要求,就不能将物理单元在整个box0ij范围内插入。本发明的解决方法就是在每个box0ij的相对相同位置上找到间距范围约束box1ij,在这些box中的任何位置插入物理单元都会满足单元间距约束。具体实现方法是通过平面上的二分法逐步缩小box0ij的面积,找到同时能让最多物理单元插入的box1ij,图6为平面二分法的流程图,图8.b为子模块2中找到的box1ij的示意图。
7)通过上一步已经在芯片的所有box0ij中找到最优的box1ij的坐标,然后以这些坐标建立box4ij。因为空白面积越大插入物理单元后增加绕线的概率就越小,所以接下来需要在每个box4ij找到一块面积最大的可移动矩形区域box5ij,然后将物理单元插入到box5ij得中心位置。为了优化算法、减少运算量再次采用平面上的二分法,算法具体流程如图7所示,。
8)上一步已经在非空box0ij中插入了物理单元,接下来需要在空白box0ij确定和box1ij同等大小的box9ij并将物理单元插入中心位置,如图8.c所示为子模块2中插入物理单元后的示意图。
9)然后删除以上建立的所有的blockage,如图8.d所示,可以看到所有的物理单元都在box1ij内满足相邻物理单元的间距要求。
在上述方法中,可移动面积的计算方法:
在步骤6和7中的平面二分法中数次涉及计算物理单元在box中可移动面积的计算,为了优化算法整体的效率需要简化其计算方法。可移动面积的计算方法为用总面积减去范围内box的面积,同时还要减去那些窄缝所围成的面积,才能保证在插入物理单元时有足够的可插入面积,如图9所示。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
1.一种基于原有布图规划的自动化物理单元插入方法,其特征在于,包括:
步骤s1:在设计布局阶段后将所有子模块在顶层展开,记录各子模块和顶层需要固定硬宏模块的实例化名称,生成文档1;
步骤s2:读取文档1,获取各硬宏模块的布局阻挡层的信息;
步骤s3:报告全芯片拥塞情况,记录所有的hotspot的坐标和box参数,生成等尺寸的布线阻挡矩形,并按一定规则命名;
步骤s4:将以上所有的box的实例化名称、位置坐标和box参数按行记录,生成文档2;
步骤s5:在全芯片建立物理单元与芯片边界的距离范围大小的box0阵列;
步骤s6:在每个box0相同位置上找到单元间距范围大小的box1;
步骤s7:在每个box1中选出所有能够布放物理单元的box4,在每个box4中找到面积最大的box5;
步骤s8:在每个box5中计算出物理单元的中心位置坐标;
步骤s9:确定空白box9并计算物理单元在其中的中心位置坐标;
步骤s10:删除所有建立的blockage,在顶层和子模块分别插入物理单元;
步骤s11:结束。
2.根据权利要求1所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,所述步骤s2中布局阻挡层的信息包括坐标、box参数、引脚方位和引脚数量。
3.根据权利要求2所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,如果插入的物理单元是有引脚单元,则在硬宏模块引脚方位相邻位置上生成宽度一定、高度和引脚数量成正比的布线阻挡矩形,按照一定规则命名这些矩形,并记录坐标和box参数。
4.根据权利要求1-3中任意一项所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,在所述步骤s5中,根据给定的第一个物理单元距离全芯片底边和左边的距离要求和芯片的长与宽,确定第一个单元分别离左边和底边的距离范围(bl0,bh0),以离左边和底边最近的x坐标和y坐标为第一个初始点,以给定的单元间距范围的中值dm为间距计算出所有点阵坐标,然后以这些点为box的左下坐标,建立长度为bl0、高度为bh0的范围矩形box0ij,其中i为阵列的行号,j为阵列的列号,并将所有坐标(i,j)添加到集合ua中。
5.根据权利要求4所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,在所述步骤s6中包括:
步骤s601:获取每个box0ij内blockage的实例化名称,然后根据实例化名从文档2中查找相应的参数,排除其中没有blockage的box0ij并将对应的坐标(i,j)添加到集合uw;
步骤s602:将box0ij({(i,j)|(i,j)∈ua-uw})做归一化处理,采用平面上的二分法找到在每个box0ij内的一个相对位置相同的坐标点pij,使能在以pij为左下坐标点的box1ij内找到一个面积saij,在所有saij内能让尽可能多的物理单元cij都布放下。
6.根据权利要求5所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,所述平面上的二分法包括:
a)根据具体设计设定一个物理单元的阈值面积sth,计算物理单元cij的面积scell,并计算box0ij内物理单元cij的可移动面积s0ij,然后计算剩余面积sroij=s0ij-scell-sth,将srij<0的坐标(i,j)添加到集合uf,并计算集合us=ua-uw-uf;
b)计算ldo=lbox0-lbox1和hd0=hbox0-hbox1,其中lbox0为box0ij的长,lbox1为box1ij的长,hbox0为box0ij的高,hbox1为box1ij的高,并使每个初始坐标
c)计算在每个box0ij({(i,j)|(i,j)∈us})内以pij为左下坐标,长度
d)计算在每个box0ij内以pij为左下坐标长度
e)若ldn≤el并且hdm≤eh(eh和el分别为长和宽的最小精度值,这两个值取决于具体设计),取
7.根据权利要求6所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,在所述步骤s7中,以pij({(i,j)|(i,j)∈us})为左下坐标,长度lbn=lbox1l、高度hbm=hbox1h的box4ij,在每个box4ij中再次使用平面二分法,在范围中找到一个面积最大且没有任何blockage的box5ij,并记坐标为p5ij。
8.根据权利要求6所述的基于原有布图规划的自动化物理单元插入方法,其特征在于,所述可移动面积的计算方法包括:
a)在给定的box范围内,根据box0ij内blockage的名称和参数,计算每个blockage在box内坐标点的个数,求出blockage在box中的位置关系;按照位置关系将每个blockage的坐标参数修改成在box中所在的有效区域的坐标参数;
b)根据box中blockage新的坐标参数,计算出每个blockage的面积记为sbi,其中i为blockage的序号,并计算出总面积sc0=∑sbi
c)将所有的blockage和box的x坐标从小到大排列,从小到大依次取出两个点构成线段,若其中有点重复,使这些点依次与右边第一个不重复的点构成线段,排除线段中两个点属于同一个blockage的线段ln,其中n为线段序号,若其余ln<lcell求出这两个点所在的blockage的y坐标构成的区域的公共区域长记为hn,然后求出所在面积sn=ln*hn;最后求出总面积sc1=∑sn;
d)同理,将所有的blockage和box的y坐标从小到大排列,从小到大依次取出两个点构成线段,若其中点重复,使这些点依次于下边和上边第一个不重复的点构成线段,并排除线段中两个点属于同一个blockage的线段hm,其中m为线段序号,若其余hm<hcell求出这两个点所在的blockage的x坐标构成的区域的公共区域长记为ln,然后求出所在面积sm=lm*hm;最后求出总面积sc2=∑sm;
e)最后计算可移动面积为smv=sbox-sc0-sc1-sc2。
技术总结