发明内容
为了解决上述技术问题,本发明的目的是提供一种效率更高和更加充分利用布局面积的集成电路布局规划的预压缩方法。
本发明的另一目的是提供一种效率更高和更加充分利用布局面积的集成电路布局规划的预压缩系统。
本发明所采用的技术方案是:
一种集成电路布局规划的预压缩方法,包括以下步骤:
S1、获取预设的数组信息和包含集成电路的多个模块之间相互关系的序列对信息,以及各模块的参数信息;
S2、依次结合序列对信息和数组信息在预设的布局框内布局各模块后,结合参数信息和预设判断方式判断是否存有遮挡模块,若存有,采用第一方式更新数组信息;反之,采用第二方式更新数组信息;
S3、根据序列对信息判断是否布局完所有模块,若是,完成预压缩;反之继续执行S2。
进一步,所述参数信息为模块的长度信息和宽度信息。
进一步,所述步骤S2中的预设判断方式,通过以下步骤进行判断:
获取模块甲的右上角坐标点作为第一坐标点,以及获取模块乙的右上角坐标点作为第二坐标点;
判断第二坐标点的横坐标是否大于第一坐标点的横坐标以及第二坐标点的纵坐标是否大于第一坐标点的纵坐标,若是,判定模块甲为遮挡模块;
所述模块甲为在前模块,所述模块乙为在后模块。
进一步,所述数组信息包括布局框的左边框的参数信息、布局框的下边框的参数信息和模块的编号信息。
进一步,所述步骤S2,具体包括以下步骤:
S21、根据序列对信息获取第一模块后,将第一模块布局于布局框内预设的位置上,进而获取第一模块的第一坐标点信息并更新数组信息;
S22、结合序列对信息和数组信息在布局框内布局下一个模块,并根据该模块的参数信息获取相应的第二坐标点信息;
S23、根据预设判断方式和所有的坐标点信息判断是否存有遮挡模块,若存有,在数组内删除遮挡模块的编号信息和增加该模块的编号信息;反之,在数组内增加该模块的编号信息。
进一步,所述步骤S22中结合序列对信息和数组信息在布局框内布局下一个模块的步骤,具体为:
从序列对信息中获取数组信息中相对应的模块与下一模块的相互关系,并根据该相互关系在布局框内布局下一个模块。
进一步,所述序列对信息包括正序列和逆序列,数组中模块的编号信息的排列顺序与正序列中模块排序顺序相对应。
进一步,还包括获取关键模块集的步骤,具体为:
根据序列对信息获取关键模块集,并根据加权最长公共子序列分别获得水平关键模块组和垂直关键模块组;
根据水平关键模块组和垂直关键模块组获得关键模块集。
进一步,所述布局框内预设的位置为布局框的左下角。
本发明所采用的另一技术方案是:一种集成电路布局规划的预压缩系统,包括:
存储器,用于存储至少一个程序;
处理器,用于加载所述至少一个程序以执行上述的任一项所述一种集成电路布局规划的预压缩方法。
本发明的有益效果是:本发明通过判断是否存有遮挡模块,并在存有遮挡模块时更新数组信息后,结合序列对信息和更新后的数组信息布局下一模块,避免考虑遮挡模块增加下一模块周围的空白区域,从而提高了工作效率和布局面积的利用率,降低生产成本。
具体实施方式
实施例一
如图1所示,一种集成电路布局规划的预压缩方法,包括以下步骤:
A1、获取预设的数组信息和包含集成电路的多个模块之间相互关系的序列对信息,以及各模块的参数信息。所述参数信息为模块的长度信息、宽度信息、面积信息和类型信息。
A2、依次结合序列对信息和数组信息在预设的布局框内布局各模块后,结合参数信息和预设判断方式判断是否存有遮挡模块,若存有,采用第一方式更新数组信息;反之,采用第二方式更新数组信息。所述数组信息包括布局框的左边框的参数信息、布局框的下边框的参数信息和模块的编号信息。
其中,步骤A2包括步骤A21~A23:
A21、根据序列对信息获取第一模块后,将第一模块布局于布局框内预设的位置上,进而获取第一模块的第一坐标点信息并更新数组信息。
A22、结合序列对信息和数组信息在布局框内布局下一个模块,并根据该模块的参数信息获取相应的第二坐标点信息。
其中,A22中结合序列对信息和数组信息在布局框内布局下一个模块的步骤,具体为:从序列对信息中获取数组信息中相对应的模块与下一模块的相互关系,并根据该相互关系在布局框内布局下一个模块。
A23、根据预设判断方式和所有的坐标点信息判断是否存有遮挡模块,若存有,在数组内删除遮挡模块的编号信息和增加该模块的编号信息;反之,在数组内增加该模块的编号信息。
其中,A23中预设判断方式的具体步骤为B1~B2:
B1、获取模块甲的右上角坐标点作为第一坐标点,以及获取模块乙的右上角坐标点作为第二坐标点。
B2、判断第二坐标点的横坐标是否大于第一坐标点的横坐标以及第二坐标点的纵坐标是否大于第一坐标点的纵坐标,若是,判定模块甲为遮挡模块。
所述模块甲为在前模块,所述模块乙为在后模块。
参照图12,假设模块i与模块j右上角横坐标分别为xi与xj,纵坐标分别为yi与yj。若它们之间满足xj>xi和yj>yi的关系,则称模块i为遮挡模块,即模块i被模块j遮挡的意思。如果存有多个模块被模块j遮挡的话,则这多个模块都为遮挡模块。坐标系的原点可以设置在多个地方,比如布局框外或者布局框上,在本实施例中,将坐标系原点设置在布局框的坐下角。
A3、根据序列对信息判断是否布局完所有模块,若是,完成预压缩;反之继续执行A2。
A4、获取关键模块集。
其中,步骤A4包括步骤A41~A42:
A41、根据序列对信息获取关键模块集,并根据加权最长公共子序列分别获得水平关键模块组和垂直关键模块组。
A42、根据水平关键模块组和垂直关键模块组获得关键模块集。
上述方法通过判断是否存有遮挡模块,如果存有遮挡模块,则在数组内删除遮挡模块的编号信息,在结合序列对信息和数组信息在布局框内布局下一个模块,这样就避免了遮挡模块增多下一模块周围的空白区域的情况,提高了工作效率和面积的利用率,减小了电路布局面积,降低了生产成本。另外,通过获取关键模块集,在优化算法在优化布局时,优先移动关键模块集中的模块,能够更加具有目的性,提高了已有方法的效率,缩短了执行时间。
具体实施例一
下面结合图2至图14对上述方法进行详细的讲解说明。
假设集成电路中包含有六个模块,该a六个模块的编号分别为abcdef,其尺寸分别如表1所示。
表1
|
模块a |
模块b |
模块c |
模块d |
模块e |
模块f |
宽度 |
8 |
6 |
3 |
5 |
7 |
3 |
高度 |
4 |
3 |
5 |
5 |
6 |
7 |
同时假设该电路布局的序列对如下所示。
设置一个数组en,其内部保存了:电路布局框的左边框,用字母l表示;电路布局框的下边框,用字母s表示;以及模块的编号。
逆序列中的第一个模块为模块d,设序列对为
根据序列对性质,模块d将位于X
1∩X的下方,并且位于X
2∩X的左边,其中,X
1代表编号abc,X
2代表编号ef,X代表编号ceafb。遵循将模块尽可能向左侧摆放以及尽可能向下方摆放的原则,所述原则为预设原则,参照图2,将逆序列中的第一个模块放置于布局框1的左下角位置。同时将其记录进数组en,此时en=[l,d,s]。
因为现在数组en中只有模块d,根据序列对信息可知,逆序列中的第二个模块c可以被放置于两个位置:模块d上方与模块d右边。通过遍历正序列,可知c位于d之前,根据序列对性质,可知应将模块c放置于模块d的上方所示,如图3所示。根据模块c和模块d的长度和宽度信息获得相关的坐标点信息,判断模块d是否为遮掩模块,在本实施例中,由于模块d对应的坐标点的横坐标大于模块c对应的坐标点的横坐标,所以不存有遮掩模块,将模块c的编号记录进数组en,此时en=[l,c,d,s]。
此时数组en中有模块c和模块d,根据序列对信息将模块e在正序列中位于c与d之后,因此应将模块e放置于模块c与模块d的右边,如图4所示。此处,也没有存在遮掩模块,将模块e的编号记录进数组en,此时en=[l,c,d,e,s]。
此时数组en中有模块c、模块d和模块e,根据序列对信息将模块a放置于模块c与模块e的上方,如图5所示。此时模块a的坐标点信息均大于模块c和模块d的坐标点信息,故存在两个遮掩模块,即模块c和模块d为遮掩模块,在数组en删除模块c和模块d的编号,同时增加模块a的编号,此时en=[l,a,e,s]。
此时数组en中有模块a和模块e,根据序列对信息将模块f放置于模块a与模块e的右边,如图6所示。此处存有遮掩模块e,故在数组en中删除模块e的编号,同时增加模块f的编号,此时en=[l,a,f,s]。
此时数组en中有模块a和模块f,根据序列对信息最后一个模块b在正序列里位于a之后,且位于f之前,所以它应放置于模块a右边与模块f的上方,如图7所示。此处,不存在遮掩模块,故此时en=[l,a,b,f,s]。
至此,本方法的预压缩过程已结束,整个压缩过程的变化如图3-图7所示。图7为本方法预压缩的最终结果图,图中模块b被放置于模块f的上方。而在传统的仅根据逆序列信息进行布局中,由于序列对性质的约束,模块b位于模块c的上方,如图14所示,因此其下方产生了空隙。这是因为本发明中通过引入遮掩模块的概念,在出现遮掩模块时,在数组中删除遮掩模块的编号,在布局下一个新模块时,无需考虑遮掩模块的与新模块的相互关系,比如上述例子中,在布局模块b时,本发明只需考虑模块b分别与模块a和模块f的相互关系,而无需考虑模块b分别与模块c、模块d以及模块e的相互关系,所以,本发明最终的最终结果图如图7所示,而传统的布局方法由于考虑了模块c,根据序列对信息模块b在模块c的上方,故传统的布局的结果图如图14所示,在模块b下方产生了空隙。
在上述例子中,电路布局预压缩方法所节约的空间效果并不明显,原因是该布局中模块的数量过少,在模块数量较多的情况下,每个悬空模块引入的额外空白区域将累积下来,并且空白区域之间会相互影响,进一步增加了布局边框的尺寸。如图8所示,在模块数量较多的情况下,因为布局每个新模块时,需要考虑前面所有的模块,空白不断的叠加影响,出现许多空白,增大了电路布局的面积,提高了生产成本。这也给后面的优化算法增加了工作量,降低了工作效率。
另外,影响电路布局面积的关键模块有两类,一类是水平关键模块,它们决定着整个布局的宽度。另一类是垂直关键模块,它们决定了整个布局的高度。
通过使用最长加权公共子序列算法,可以计算出两个序列之间的加权最长公共子序列。将求最长加权公共子序列的操作记为LCS,将
与
中的字符按相反顺序排列,所得的两个新序列分别记为
与
通过计算序列
与
之间的加权最长公共子序列,可以获得水平关键模块的编号,计算方法如下。
上式中X是记录了所有水平关键模块编号的数组。
类似地,垂直关键模块可通过计算序列
与
之间的加权最长公共子序列得出,计算方法如下。
上式中Y是记录了所有水平关键模块编号的数组。
在获得水平关键模块与垂直关键模块后,取它们的并集X∪Y作为关键模块集。优化算法在随机地移动电路布局中的模块时,优先移动关键模块集中的模块。
在上述的例子中,根据序列对
计算水平关键模块时,使用模块的宽度作为每个字符的权重,然后计算出加权最长公共子序列。序列abcdef与dceafb之间的最长加权公共子序列def,其长度为15。因此字符d、e和f代表的三个模块为电路布局的水平关键模块。而模块d、模块c和模块a为电路布局的垂直关键模块。这些水平关键模块与垂直关键模块如图13中条纹方块所示。对他们进行移动可以更加快速地减小电路布局的面积,节省生产成本。在图9所示,图中条纹方块为关键模块,在多模块的电路布局中移动关键模块可以更加快速地减小电路布局的面积,节省生产成本。
实施例二
一种集成电路布局规划的预压缩系统,包括:
存储器,用于存储至少一个程序;
处理器,用于加载所述至少一个程序以执行上述的任一项所述一种集成电路布局规划的预压缩方法。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。