本发明涉及集成电路设计工具技术领域,特别是涉及一种集成电路设计工具中的图形转换方法。
背景技术:
在集成电路设计过程中,为了集成的需要,某些设计公司会提供一些图形表示电路的输入或者输出端,这些图形会以AutoCad的DXF文件形式给出。而在触摸屏的设置中,很多设计触摸屏的设计公司为了设计出复杂多样的图形,采用AutoCad作为画图工具,最后提供给面板设计公司的文件都是DXF文件。而在集成电路设计领域,DXF并不是一种标准文件,需要将其转换成标准文件,才能在后续设计中直接使用,比如提取寄生电阻和电容等。而DXF文件中一般会存在大量的线段,而集成电路的生产工艺决定了数据中必须是封闭的图形。如果重画这些来自AutoCad的线段所组成的封闭图形,一则效率慢,二则容易出错。尤其是当版图比较庞大时,基本上是费工费力的一件工作。本发明实现一种自动快速将多段线转换成封闭图形的方法。从而提高集成电路设计的效率并减少出错的几率。
技术实现要素:
为了解决现有技术存在的不足,本发明的目的在于提供一种自动将多段线转换成封闭图形的方法,提高集成电路设计的效率并减少出错的几率。
为实现上述目的,本发明提供的自动将多段线转换成封闭图形的方法,包括以下步骤:
1)选取未被处理的零宽度路径的图形;
2)确定查询区域,进行查询;
3)对图形的线段转换成封闭图形。
进一步地,所述步骤2)进一步包括以下步骤:
21)获取零宽度路径的中心线,以该中心线最后一个点作为查询区域,查询与之相交的图形;
22)获取零宽度路径的中心线,以该中心线第一个点作为查询区域,反转该中心线,查询与之相交的图形。
进一步地,所述查询与之相交的图形,进一步包括以下步骤:
31)以中心线的最后一个点或第一个点构建盒子;
32)记录入数组;
32)如果所述数组的唯一元素第一个点与中心线的第一个点相同或其最后一个点与中心线的第一个点相同,则将该元素合并到中心线,并调整中心线的最后一个点或第一个点。
进一步地,所述步骤3)进一步包括以下步骤:
41)中心线的第一个点和最后一个点重合,对中心线压缩,压缩后的中心线为简单图形,则将中心线生成多边形,并删除对应的原始图形;
42)中心线的第一个点和最后一个点重合,对中心线压缩,压缩后的中心线不是简单图形,则将中心线重新设置给原始图形,并记录被处理的原始图形;
43)中心线的第一个点和最后一个点不重合,对中心线进行压缩后重新设置给原始图形,并记录被处理的原始图形。
进一步地,所述步骤3)进一步包括以下步骤:
51)中心线大于2个,且为简单图形,则直接将中心线的首尾相连接,创建一个多边形,结束转换过程;
52)中心线大于2个,且不是简单图形,对图形进行去冗余处理;
53)去除冗余后的中心线为简单图形,则直接将中心线的首尾相连接,创建一个多边形,结束转换过程;
54)去除冗余后的中心线不是简单图形,进行第三次GOA OR操作,将得到的结果转换成多边形后结束转换过程。
更进一步地,在所述去冗余处理,进一步包括以下步骤:
61)中心线的第一条边和最后一条边相交,用交点设置所述第一条边的首点和最后一条边尾点;确认不是简单图形,将中心线中的各个边转换成线段,所有相同的线段以链表形式保存在一起,并记录对应的各个边在中心线中的索引;去除指定的完全重叠的线段,并将线段重新生成点链中心线。
62)中心线的第一条边和最后一条边没有相交,去除最后一条边;确认不是简单图形,将中心线中的各个边转换成线段,所有相同的线段以链表形式保存在一起,并记录对应的各个边在中心线中的索引;去除指定的完全重叠的线段,并将线段重新生成点链中心线。
本发明的自动将多段线转换成封闭图形的方法,能够自动快速地将DXF文件中的多个独立的线段合并成一条折线或封闭图形,从而提高了集成电路设计的效率并减少出错的几率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的自动将多段线转换成封闭图形的方法流程图;
图2为根据本发明的查询过程流程图;
图3为根据本发明的简单图形转换流程图;
图4为根据本发明的非简单图形转换流程图;
图5 为根据本发明将非简单图形转换为成多边形示意图;
图6为根据本发明的去除冗余流程图;
图7为根据本发明的自动将多段线转换成封闭图形的方法转换效果图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1为根据本发明的自动将多段线转换成封闭图形的方法流程图,下面将参考图1,对本发明的自动将多段线转换成封闭图形的方法进行详细描述。
首先,在步骤101,从版图中选取一个图形,该图形中存在一组多段线,而且为没有被处理过的零(0)宽度路径(Path)。
在步骤102,取得零(0)宽度路径的中心线(L),并以该中心线(L)最后一个点作为查询区域,查询与之相交的图形并进行处理;
在步骤103,取得零(0)宽度路径的中心线(L),并以该中心线(L)第一个点作为查询区域,并反转该中心线(L)后,查询与之相交的图形并进行处理;
在步骤104,对多线段进行转换;
在步骤201,进行去冗余处理。
图2为根据本发明的查询过程流程图,下面将参考图2,对本发明的查询过程进行详细描述。
首先,在步骤201,确认图形是没有被处理过的零(0)宽度路径(Path),以其中心线(L)的最后一个点(P)或第一个点(P)构建盒子(Box);
在步骤202,记录入数据容器A。该数据容器,包括数组(Array)、链表(List)和映射(Map);
在步骤203,判断数据容器A是否只有一个元素(L1),且其第一个点与中心线的第一个点相等(同)或其最后一个点与中心线的第一个点相等(同),是则进行下一步,否则结束查询;
在步骤204,将元素(L1)合并到中心线(L),并调整中心线(L)的最后一个点或第一个点(P)。
图3为根据本发明的简单图形转换流程图,下面将参考图3,对本发明的简单图形转换进行详细描述。
首先,在步骤301,判断中心线(L)的第一个点(P)和最后一个点(P)是否重合,是则进行下一步骤,否则转到步骤306;
在步骤302,对中心线(L)压缩;
在步骤303,判断压缩后的中心线(L)是否为简单图形(如何判断),是则进入下一步骤,否则转到步骤305;本步骤中,判断是否为简单图形方法,包括,如果图形能区分图形内和图形外,就是简单图形,如果内和外没有明显的界限,则不是简单图形;
在步骤304,将中心线(L)生成多边形(Polygon),并删除对应的原始图形;本步骤中,用中心线(L)的点作为多边形的点链,并按照原始图形的图层,生成相应的多边形,即将一个多线段的长线变成了一个多边形;
在步骤305,将中心线(L)重新设置给原始图形(由于在步骤302中对原始图形的中心线L做了压缩,压缩后得到的中心线和原始图形的中心线可能不相同,所以需要将新的数据设置回去),并记录被处理的原始图形;
在步骤306,对中心线(L)进行压缩后重新设置给原始图形,并记录被处理的原始图形。
图4为根据本发明的非简单图形转换流程图,下面将参考图4,对本发明的非简单图形转换进行详细描述。
首先,在步骤401,判断中心线(L)是否大于2个,是则进行下一步骤,否则结束转换过程;
在步骤402,判断中心线(L)是否为简单图形,是则进入下一步骤,否则转到步骤404;
在步骤403,直接将中心线(L)的首尾相连接,创建一个多边形(Polygon)后结束转换过程;
在步骤404,对图形进行去冗余处理;
在步骤405,判断去除冗余后的中心线(L)是否为简单图形,是则转到步骤403,否则进入下一步骤;
在步骤406,进行三次GOA OR操作,将得到的结果转换成多边形(Polygon)后结束转换过程。
图5 为根据本发明将非简单图形转换为成多边形示意图,如图5所示,三次GOA OR操作的过程如下:第一次对中心线(L)组成的图形和中心线(L)自己做OR,第二次对中心线(L)中的点反序后组成的图形与反序后的图形做OR,第三次将前两次的结果做OR。
GOA是图形运算算法的缩写(Geometry Operation Algorithm)。GOA OR是指两个图形做操作,最终的结果是两个图形的合集,所以OR又叫加法运算。
因为非简单图形没有明确的内外界限,所以图形中点链方向不同,会导致结果不一致。
图6为根据本发明的去除冗余流程图,下面将参考图6,对本发明的去除冗余操作进行详细描述。
首先,在步骤601,判断中心线(L)的第一条边(E1)和最后一条边(En)是否相交,是则进入下一步骤,否则转到步骤603;
在步骤602,用交点设置第一条边(E1)的首点和最后一条边(En)尾点后转到步骤604;
在步骤603,去除最后一条边(En);
在步骤604,判断是否为简单图形,是则结束去冗余处理,否则进入下一步骤;
在步骤605,将中心线(L)中的各个边(E)转换成线段(Segment),所有相同的线段以链表形式保存在一起,并记录对应的各个边(E)在中心线(L)中的索引(index),以各个边(E)的起点作为索引方便快速查找;
在步骤606,遍历(反方向)中心线(L)中的第一个点(P)和最后一个点(P),去除指定的完全重叠的线段(Segment)。
在步骤607,将线段(Segment)重新生成点链中心线(L);
在步骤608,判断中心线(L)是否已经反向,是则结束去冗余操作,否则进行返回步骤601,重新去除冗余操作。
图7为根据本发明的自动将多段线转换成封闭图形的方法转换效果图,如图7所示,转换前的一条多段线围成的图形转换之后成为了封闭图形,转换前的由一组多段线围城的图形,转换之后的成为带内孔的封闭图形。经过上述处理后,DXF文件中的多个独立的线段要么合并成一条折线,要么转换成封闭图形。
本发明的自动将多段线转换成封闭图形的方法,其基本思想在于:
选取一组多段线,判断这组多段线的连接关系,判断两两之间是否存在交叉的线段,若不存在交叉线段:
(1.1)如果是首尾相接的线段,则直接将首尾两点拼接,组成一个封闭的图形;
(1.2)如果首尾不相接,则将首尾两点连线,之后转换成一个封闭的图形;
(1.3)如果是自交叉的多段线,则将所有自交叉点围成的区域转换成一个封闭的图形;
如果一组多段线存在交叉点:
(2.1)如果将这组多段线中的每一个多段线转换成封闭图形之后,其中的一个封闭图形完全包围另一个封闭图形,则将这组图形转换成带有内孔的封闭图形;
(2.2)如果不存在包围关系,则按照(1.1)-(1.3)的描述进行转换。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。