一种基于DYNAMICBUCKETING改进的矩形数据区域查询方法

文档序号:37453585发布日期:2024-03-28 18:36阅读:12来源:国知局
一种基于DYNAMIC BUCKETING改进的矩形数据区域查询方法

本发明涉及一种基于dynamic bucketing改进的矩形数据区域查询方法,属于集成电路设计自动化。


背景技术:

1、随着集成电路技术的发展,芯片版图上的矩形数量达到千万以上级别。区域查询是对给定矩形查询窗口,要求找出所有与该窗口相交的芯片版图上的矩形数据。

2、现有的查询方法通常采用树状的数据结构将矩形数据在平面上进行划分以加快查询的效率,通常可分为多存储类型和单存储类型,多存储类型如msqt(多存储四叉树)和qlqt(四列表四叉树)将跨区域的矩形存放在多个节点,单存储类型如yaqt(但是另一种四叉树)和hvt(水平垂直树)对跨区域的矩形做了针对性的存储,但是现有查询方法对于获取查询窗口相交的待计算矩形数据的计算量较大,特别是数量级大时,计算时间将成倍增加,所以需要提升区域查询的运算速度。

3、因此,如何提高区域查询的运算速度是本领域技术人员急需要解决的技术问题。


技术实现思路

1、目的:为了克服现有技术中存在的不足,本发明提供一种基于dynamic bucketing改进的矩形数据区域查询方法。

2、技术方案:为解决上述技术问题,本发明采用的技术方案为:

3、一种基于dynamic bucketing改进的矩形数据区域查询方法,其步骤如下:

4、步骤1、获取包围芯片版图上所有矩形数据的最小边界矩形。

5、步骤2、将参考坐标的原点作为目录边界矩形的左下顶点,以参考坐标的x轴、y轴作为目录边界矩形左边、下边,设置覆盖最小边界矩形的目录边界矩形。

6、步骤3、将目录边界矩形作为水平目录的空间,根据水平目录的当前深度利用垂直线将水平目录的空间划分成2水平目录的当前深度个垂直目录空间,针对每个垂直目录空间根据垂直目录的当前深度利用水平线将该垂直目录空间划分为2垂直目录的当前深度个桶空间。

7、步骤4、根据水平目录最大深度和垂直目录的最大深度,以及水平目录的当前深度和垂直目录的当前深度定位出与矩形数据相交的桶空间,并根据矩形数据的相对坐标,获取矩形数据与矩形数据相交的桶空间的位置关系,并根据位置关系将矩形数据存入相交的桶空间对应的四个不同存放列表中。

8、步骤5、在最小边界矩形中设置查询窗口,根据查询窗口边的坐标与每个桶空间边的坐标,获得每个桶内需要检测的矩形数据,并从每个桶内需要检测的矩形数据中选出与查询窗口相交的矩形数据。

9、作为优选方案,所述参考坐标的原点坐标值设置为(mbound.llx-(2h_max_depth-mbound.width)/2,mbound.lly-(2v_max_depth-mbound.height)/2)。

10、其中,(mbound.llx,mbound.lly),(mbound.urx,mbound.ury)分别为最小边界矩形的左下角顶点坐标值和右上角顶点坐标值。

11、mbound.width和mbound.height分别为最小边界矩形的宽度和高度。

12、h_max_depth为水平目录的最大深度。

13、v_max_depth为垂直目录的最大深度。

14、作为优选方案,将最小边界矩形宽度的二进制中最高的1所在的位对应的指数值作为水平目录的最大深度,将最小边界矩形高度的二进制中最高的1所在的位对应的指数值作为垂直目录的最大深度。

15、作为优选方案,所述步骤4,具体包括:

16、获取水平目录最大深度和垂直目录的最大深度,以及水平目录的当前深度。

17、获取矩形数据左边的相对坐标,并转换为二进制值,根据水平目录最大深度和水平目录的当前深度,从水平目录最大深度对应的二进制值的位数开始,向低位的方向取水平目录的当前深度个数的位,得到新的二进制值,将新的二进制值转换为十进制值。

18、矩形数据左边所在的垂直目录为2水平目录的当前深度中的第十进制值加1个垂直目录。

19、获取矩形数据下边的相对坐标,并转换为二进制值,根据垂直目录的最大深度和垂直目录当前深度,从垂直目录的最大深度对应的二进制值的位数开始,向低位的方向取垂直目录当前深度个数的位,得到新的二进制值,将新的二进制值转换为十进制值。

20、矩形数据左下顶点所在的所在桶区域为2垂直目录的当前深度中的第十进制值加1个桶。

21、当得到所有与矩形数据相交的桶后,根据矩形数据的相对坐标,判断矩形数据的边与桶下边界、左边界的关系,将矩形数据保存到桶中对应的存放列表中。

22、作为优选方案,根据矩形数据的相对坐标,判断矩形数据的边与桶下边界、左边界的关系,将矩形数据保存到桶中对应的存放列表中,具体包括:

23、根据一个矩形数据的相对坐标,当一个矩形数据没有穿过一个桶的下边界,且没有穿过同一个桶的左边界,这个矩形数据存放在这个桶对应的存放列表0中。

24、根据一个矩形数据的相对坐标,当一个矩形数据没有穿过一个桶的下边界,且只穿过同一个桶的左边界,这个矩形数据存放在这个桶对应的存放列表1中。

25、根据一个矩形数据的相对坐标,当一个矩形数据只穿过一个桶的下边界,且没穿过同一个桶的左边界,这个矩形数据存放在这个桶对应的存放列表2中。

26、根据一个矩形数据的相对坐标,当一个矩形数据穿过一个桶的下边界,且穿过同一个桶的左边界,这个矩形数据存放在这个桶中对应的存放列表3中。

27、作为优选方案,所述步骤4,还包括:当桶空间对应的四个不同存放列表放满矩形数据时,通过水平目录双倍增长或垂直目录双倍增长,获得更多的桶空间,再将矩形数据存入新的桶空间对应的四个不同存放列表中。

28、作为优选方案,所述水平目录双倍增长表示将水平目录的当前深度加一,并将水平目录中的所有垂直目录的局部深度加一。根据新的水平目录的当前深度和新的垂直目录的局部深度,获得更多的桶空间。

29、作为优选方案,所述垂直目录双倍增长表示将垂直目录的当前深度加一,并将垂直目录中所有桶的局部深度加一。根据新的垂直目录的当前深度和新的桶的局部深度,获得更多的桶空间。

30、作为优选方案,所述步骤5:具体包括:

31、在最小边界矩形中设置查询窗口,获取查询窗口边的坐标,定位到与查询窗口相交的所有的桶。

32、对与查询窗口下边界穿过的桶,从被查询窗口下边界穿过的桶中除去查询窗口下边界的左下顶点所在桶,得到剩余的桶,从剩余的桶中选出访问列表0、2的矩形数据,将从剩余的桶中选出访问列表0、2的矩形数据作为检测类型2的矩形数据。

33、对于查询窗口左下顶点落入的桶,从左下顶点落入的桶中选出访问列表0、1、2、3的矩形数据,将从左下顶点落入的桶中选出访问列表0、1、2、3的矩形数据作为检测类型3的矩形数据。

34、对于查询窗口左边界穿过的桶,从被查询窗口左边界穿过的桶中除去查询窗口左边界的左下顶点所在桶,得到剩余的桶,从剩余的桶中选出访问列表0、1的矩形数据,将从剩余的桶中选出访问列表0、1的矩形数据作为检测类型1的矩形数据。

35、对于既没有与查询窗口下边界相交又没有与查询窗口左边界相交的桶,从桶中选出访问列表0的矩形数据,将从桶中选出访问列表0的矩形数据作为检测类型0的矩形数据。

36、从每个桶内需要检测的矩形数据中选出与查询窗口相交的矩形数据。

37、作为优选方案,所述从每个桶内需要检测的矩形数据中选出与查询窗口相交的矩形数据,具体包括:

38、对于查询窗口的左边(不包含顶点)所在的桶内检测类型1的矩形数据,选出矩形数据的右边穿过查询窗口左边界的矩形数据。

39、对于查询窗口的下边(不包含顶点)所在的桶内检测类型2的矩形数据,选出矩形数据的上边穿过查询窗口下边界的矩形数据。

40、对于查询窗口的右边(不包含顶点)所在的桶内的检测类型0的矩形数据,选出矩形数据的左边穿过查询窗口右边界的矩形数据。

41、对于查询窗口的上边(不包含顶点)所在的桶内的检测类型0的矩形数据,选出矩形数据的下边穿过查询窗口上边界的矩形数据。

42、对于查询窗口的左下顶点所在的桶内的检测类型3的矩形数据,选出矩形数据的右上顶点穿过查询窗口左边界以及下边界的矩形数据。

43、对于查询窗口的左上顶点所在的桶内的检测类型1的矩形数据,选出矩形数据的右下顶点穿过查询窗口左边界以及上边界的矩形数据。

44、对于查询窗口的右下顶点所在的桶内的检测类型2的矩形数据,选出矩形数据的左上顶点穿过查询窗口右边界以及下边界的矩形数据。

45、对于查询窗口的右上顶点所在的桶内的检测类型0的矩形数据,选出矩形数据的左下顶点穿过查询窗口右边界以及上边界的矩形数据。

46、选出位于查询窗口内部的桶的检测类型0的矩形数据。

47、有益效果:本发明提供的一种基于dynamic bucketing改进的矩形数据区域查询方法,以实现时间效率更高的矩形区域查询。在构建和查询算法中,使用相对坐标得到无符号正整数二进制来检索矩形;利用所有矩形的最小边界矩形的高和宽确定垂直目录和水平目录的最大深度消除无效分裂;考虑到划分的平衡,根据最小边界矩形往往小于目录边界矩形这一特点,通过设置合适的参考坐标将最小边界矩形移动至目录边界矩形中间;在进行区域查询时,利用矩形与查询窗口的空间关系,省去了多余的相交检测计算。

48、本发明在原数据结构的基础上增强了应对矩形分布的鲁棒性,提高了区域查询的效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1