掌桥专利:专业的专利平台
掌桥专利
首页

生成版图布局的方法、装置、设备、存储介质和程序产品

文献发布时间:2024-04-18 19:58:21


生成版图布局的方法、装置、设备、存储介质和程序产品

技术领域

本公开的实施例主要涉及电子领域,尤其是电子设计自动化(electronic designautomation,EDA)领域。更具体地,本公开的实施例涉及用于生成版图布局(floorplan)的方法、装置、设备、计算机可读存储介质以及计算机程序产品。

背景技术

在芯片设计过程中,生成版图布局(也称为布图规划)是一个十分重要的步骤。通常,后端工程师需要根据经验来确定用于实现各模块的宏单元(Macro)的类型和数目,并且遵循诸如线长和面积等约束条件来在布局区域中布局各模块以及模块内的宏单元,以便生成满足目标条件的版图布局。

然而,由于生成版图布局的影响因素很多,通常需要耗费大量时间来进行多次调整和评估以生成满足目标条件的版图布局。

发明内容

本公开的实施例提供了一种生成版图布局的方案。

在本公开的第一方面,提供了生成版图布局的方法。该方法包括:基于参数组合从模板库获取一组模板,该组模板中的每个模板包括经布局的多个宏单元。基于一组模板中的每个模板的邻接信息,在布局区域中布局该组模板。通过在布局区域中修改该组模板中的每个模板的边界,生成版图布局。

以此方式,可以利用模板提供的宏单元的布局信息来提高生成版图布局的效率。此外,利用模板生成的大量版图布局之间可以具有一致性。例如,不同的版图布局中可以包括由相同的模板构成的模块,并且这些模块以相似的方式与其他模块邻接。这有利于分析参数组合本身对版图布局的影响而减少布局过程中的人为因素的影响。

在第一方面的一些实施例中,所述多个子参数组合中的每个子参数组合指示对应的模板中的多个宏单元的类型和数目。

在第一方面的一些实施例中,所述邻接信息指示每个模板与所述一组模板中的另一模板和所述布局区域中的预定点中的至少一项之间的相对位置。

在第一方面的一些实施例中,通过在所述布局区域中修改所述一组模板中的每个模板的边界生成版图布局包括:基于所述参数组合,确定所述布局区域的面积和所述一组模板的目标面积;以及基于所述布局区域的面积和所述一组模板的目标面积,修改每个模板的边界以形成对应的模块的边界。

在第一方面的一些实施例中,方法还包括通过以下创建所述模板库:获取参考版图布局;确定所述参考版图布局中的多个模块的多个内部布局以及对应的多个子参数组合,所述多个内部布局中的每个内部布局指示相应模块中的多个宏单元的布局;确定与所述多个模块对应的多个模板,所述多个模板中的每个模板的边界包围所述多个模块中的相应模块中的多个宏单元;以及基于所述多个模板的多个边界,确定所述多个模板中的每个模板的所述邻接信息。

在第一方面的一些实施例中,所述多个模块包括第一模块,并且确定所述参考版图布局中的多个模块的多个内部布局以及对应的多个子参数组合包括:基于宏单元的标识信息,标识属于所述第一模块的多个宏单元;以及基于所述第一模块的多个宏单元的位置信息,确定所述第一模块的内部布局。

在第一方面的一些实施例中,确定与所述多个模块对应的多个模板包括:基于所述第一模块的多个宏单元的位置信息,确定包围所述第一模块的多个宏单元的初始边界;以及正交化所述初始边界,以确定与所述第一模块对应的模板的边界。

在第一方面的一些实施例中,所述多个模板包括第一模板和第二模板,并且基于所述多个模板的多个边界确定所述多个模板中的每个模板的所述邻接信息包括:在所述多个模板的多个顶点中标识所述第一模板的第一顶点,所述第一顶点与所述布局区域中的一个预定点距离最近;以及在所述多个模板中除了所述第一模板之外的剩余模板的多个顶点中标识所述第二模板的第二顶点,所述第二顶点与所述第一模板的一个顶点距离最近。

在本公开的第二方面,提供了用于生成版图布局的装置。该装置包括:模板获取单元,被配置为基于参数组合,从模板库获取一组模板,所述一组模板中的每个模板包括经布局的多个宏单元;模板布局单元,被配置为基于所述一组模板中的每个模板的邻接信息,在布局区域中布局所述一组模板;以及边界修改单元,被配置为通过在所述布局区域中修改所述一组模板中的每个模板的边界,生成版图布局。

在第二方面的一些实施例中,所述模板获取单元进一步被配置为:在与所述模板库中的模板对应的多个子参数组合中标识一组子参数组合,所述一组子参数组合中的每个子参数组合包括所述参数组合中的参数;以及从所述模板库获取与所述一组子参数组合对应的所述一组模板。

在第二方面的一些实施例中,所述多个子参数组合中的每个子参数组合指示对应的模板中的多个宏单元的类型和数目。

在第二方面的一些实施例中,所述邻接信息指示每个模板与所述一组模板中的另一模板和所述布局区域中的预定点中的至少一项之间的相对位置。

在第二方面的一些实施例中,所述边界修改单元进一步被配置为:基于所述参数组合,确定所述布局区域的面积和所述一组模板的目标面积;以及基于所述布局区域的面积和所述一组模板的目标面积,修改每个模板的边界以形成对应的模块的边界。

在第二方面的一些实施例中,装置还包括模板库创建单元,所述模板库创建单元被配置为:获取参考版图布局;确定所述参考版图布局中的多个模块的多个内部布局以及对应的多个子参数组合,所述多个内部布局中的每个内部布局指示相应模块中的多个宏单元的布局;确定与所述多个模块对应的多个模板,所述多个模板中的每个模板的边界包围所述多个模块中的相应模块中的多个宏单元;以及基于所述多个模板的多个边界,确定所述多个模板中的每个模板的所述邻接信息。

在第二方面的一些实施例中,所述多个模块包括第一模块,并且所述模板库创建单元进一步被配置为:基于宏单元的标识信息,标识属于所述第一模块的多个宏单元;以及基于所述第一模块的多个宏单元的位置信息,确定所述第一模块的内部布局。

在第二方面的一些实施例中,所述模板库创建单元进一步被配置为:基于所述第一模块的多个宏单元的位置信息,确定包围所述第一模块的多个宏单元的初始边界;以及正交化所述初始边界,以确定与所述第一模块对应的模板的边界。

在第二方面的一些实施例中,所述多个模板包括第一模板和第二模板,并且所述模板库创建单元进一步被配置为:在所述多个模板的多个顶点中标识所述第一模板的第一顶点,所述第一顶点与所述布局区域中的一个预定点距离最近;以及在所述多个模板中除了所述第一模板之外的剩余模板的多个顶点中标识所述第二模板的第二顶点,所述第二顶点与所述第一模板的一个顶点距离最近。

在本公开的第三方面,提供了一种电子设备,包括:至少一个计算单元;至少一个存储器,至少一个存储器被耦合到至少一个计算单元并且存储用于由至少一个计算单元执行的指令,指令当由至少一个计算单元执行时,使得设备实现第一方面所提供的方法。

在本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其中计算机程序被处理器执行实现第一方面所提供的方法。

在本公开的第五方面,提供一种计算机程序产品,包括计算机可执行指令,当指令在被处理器执行时实现第一方面的方法的部分或全部步骤。

可以理解地,上述提供的第三方面的电子设备、第四方面的计算机存储介质或者第五方面的计算机程序产品均用于执行第一方面所提供的方法。因此,关于第一方面的解释或者说明同样适用于第三方面、第四方面和第五方面。此外,第三方面、第四方面和第五方面所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了根据本公开的一些实施例的生成版图布局的过程的示意图;

图2示出了根据本公开的一些实施例的生成版图布局的过程的流程图;

图3示出了根据本公开的一些实施例的所确定的模板的边界的示意图;

图4示出了根据本公开的一些实施例的正交化边界的过程的示意图;

图5示出了根据本公开的一些实施例的调整布局的过程的示意图;

图6示出了根据本公开的一些实施例的用于生成版图布局的装置的示意性框图;以及

图7示出了能够实施本公开的多个实施例的计算设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

如上文所简要提及的,通常需要耗费大量时间来调整和评估宏单元的布局以便生成满足目标条件的版图布局。目前,设计空间探索(Design Space Exploration,DSE)已成为业界领先的方法学。在DSE方法学中,可以基于目标条件生成多个参数组合并且针对每个参数组合生成相应的版图布局。然后,通过对所生成的多个版图布局进行评估(例如针对功率、性能、面积的评估),可以确定满足目标条件的优选版图布局,以用于后续芯片设计流程。

然而,在该方法中仍然需要针对每个参数组合来人工地生成版图布局。例如,仍然需要遵循各种约束条件来人工地调整模块内宏单元的布局和各模块的布局,因此会耗费大量时间。此外,人工生成版图布局还要求工程师具备丰富的经验和对知识规则的深入理解,因此需要大量高水平的工程师来实现对大量的参数组合的评估。

为了至少部分地解决上述问题以及其他潜在问题,本公开的各种实施例提供了一种生成版图布局的方案。总体而言,根据在此描述的各种实施例,首先基于参数组合从模板库获取一组模板,该组模板中的每个模板包括经布局的多个宏单元。基于一组模板中的每个模板的邻接信息,在布局区域中布局该组模板。通过在布局区域中修改该组模板中的每个模板的边界,生成版图布局。

以此方式,通过基于模板来生成版图布局,可以无需针对每个宏单元来调整布局,从而能够提高生成版图布局的效率。此外,利用模板生成的大量版图布局之间可以具有一致性。例如,不同的版图布局中可以包括由相同的模板构成的模块,并且这些模块以相似的方式与其他模块邻接。这样,可以更好地分析参数组合本身对所生成的版图布局的性能的影响,而减少布局过程中的人为因素的影响。

以下参考附图来描述本公开的各种示例实施例。

图1示出了根据本公开的一些实施例的生成版图布局的过程100的示意图。如图1所示,首先基于参数组合(未示出)从模板库110获取一组模板,例如模板121、122、123、124、125和126(统称为模板120)。参数组合可以是指多个参数的集合,并且参数组合中的一个参数或多个参数可以指示待生成的版图布局中的模块的性质。模块的性质可以包括模块中的宏单元的类型和/或数目。例如,参数组合可以包括指示待生成的版图布局中的存储模块的大小的参数和指示存储模块的类型的参数。

模板120中的每个模板可以包括经布局的多个宏单元。换言之,模板中的多个宏单元之间的相对位置是已知的。宏单元的示例可以包括存储单元、算术逻辑单元等。取决于模板内的多个宏单元的布局,模板可以具有不同的边界(也即,不同的形状)。例如,如图1所示,模板121可以是长方形而模板126可以是多边形。

模板120中的每个模板具有相应的邻接信息。在一些实施例中,邻接信息可以指示模板与其他模板之间的相对位置。邻接信息可以指示与模板最近邻的另一模板的标识。邻接信息还可以指示一对近邻模板中的一对近邻点。邻接信息还可以指示一对近邻点之间的距离。距离可以用实际距离或针对布局区域的边长的百分比来表示。

例如,模板123的邻接信息可以指示在除模板123之外的其他模板中,模板122与模板123之间的距离最近。也即,模板123的邻接信息可以指示模板123与模板122构成一对近邻模板。模板123的邻接信息还可以指示模板123的左上顶点与模板122的左下顶点构成一对近邻点。模板123的邻接信息还可以指示模板123的左上顶点与模板122的左下顶点之间的距离为(0,d

在一些实施例中,邻接信息可以指示模板与布局区域中的预定点之间的相对位置。布局区域中的预定点可以是预先确定的任何合适的点。预定点的示例可以包括布局区域的顶点、中心点和边界的中点。例如,模板121的邻接信息可以指示模板121的左上顶点与布局区域的左顶点之间的距离为(0,0)。在另一示例中,模板124的邻接信息可以指示模板124的左下顶点与布局区域的中心点的距离为(d

基于模板120的邻接信息,模板120被布局在布局区域中以生成初始版图布局130。基于初始版图布局130,通过修改模板120中的每个模板的边界,生成版图布局140。经修改的模板的边界可以被确定为与模板120对应的一组模块的边界,也即,包括与模板120对应的一组模块的版图布局140被确定。在一些实施例中,修改边界包括向外扩展边界的至少一部分。附加地,修改边界还包括向内收缩边界的至少一部分。

例如,如图1所示,在版图布局140中,模板121的边界被修改以形成模块141的边界;模板122的边界被修改以形成模块142的边界;模板123的边界被修改以形成模块143的边界;模板124的边界被修改以形成模块144的边界;模板125的边界被修改以形成模块145的边界;模板126的边界被修改以形成模块146的边界。

在一些实施例中,通过修改模板120的边界而形成的模块141-146的面积可以大于对应模板的面积。经扩展的面积可以用来布局标准单元和其他适合的电路组件(未示出)。

应当理解,图1仅是示例性的而非限制性的。图1中示出的模板120的数目以及初始版图布局130和版图布局140中的布局仅是示例性的。此外,图1仅示出了针对一个参数组合生成一个版图布局140的示例,根据本公开的实施例还可以针对特定参数组合获取多组模板,并生成对应的多个版图布局。具体细节将在下文中详述。

图2示出了根据本公开的一些实施例的生成版图布局的过程200的流程图。过程200可以由任何合适的计算设备实现,例如可以由部署在计算设备上的EDA软件来实现。下文将参考图1来描述生成版图布局的细节。

在框202,基于参数组合,从模板库110获取一组模板120,该组模板120中的每个模板包括经布局的多个宏单元。模板库110可以被存储在计算设备的存储装置中或被存储在与计算设备通信的外部存储装置中。模板库110中包括多个模板,并且每个模板可以对应于一个子参数组合。例如,模板库110中可以存储模板与子参数组合之间的映射关系。子参数组合可以指示对应的模板的性质。例如,子参数组合可以指示模板中的多个宏单元的类型和数目。

在一些实施例中,可以基于参考版图布局来创建模板库110。参考版图布局可以是先前由人工生成的版图布局。可以从已完成的版图布局项目获取多个参考版图布局。参考版图布局可以指示关于模块的布局以及模块内的多个宏单元的布局的先验知识。

针对每个参考版图布局,可以确定参考版图布局中的多个模块的多个内部布局以及与每个模块对应的子参数组合。每个内部布局可以指示相应模块中的多个宏单元的布局。子参数组合可以用于指示相应模块中的宏单元的类型和数目。

在一些实施例中,可以基于宏单元的标识信息来将参考版图布局包括的宏单元分类到对应的模块,也即标识属于每个模块的宏单元。例如,可以通过对宏单元的命名和参考版图布局中的模块的命名进行正则式匹配来将宏单元分类到相应的模块中。这样,基于每个模块中的多个宏单元的信息(例如,类型、数目、位置信息等),可以确定该模块的内部布局和子参数组合。例如,可以对模块中的多个宏单元的坐标针对布局区域的边长进行归一化处理以确定该模块的内部布局。附加地,模块中的多个宏单元的位置信息可以直接指示模块的内部布局。

在一些实施例中,基于每个模块中的多个宏单元的信息,可以确定与该模块对应的模板。每个模板的边界包围相应模块中的多个宏单元。在一些实施例中,可以确定以最小面积包围模块中的多个宏单元的边界以作为模板的边界。例如,可以利用最小凸包算法来确定包围每个模块中的多个宏单元的边界。附加地,可以正交化该边界以形成最小凸包的正交的边界,从而适应芯片设计中的正交约束。

图3示出了根据本公开的一些实施例的所确定的模板的边界310的示意图。如图3所示,以实线示出的边界310以最小面积包围一个模块中的多个宏单元(每个宏单元以虚线框标记)并且边界310为正交的边界。可以利用任何合适的算法来基于多个宏单元的位置信息来确定边界310,本公开的范围在此不受限制。

图4示出了根据本公开的一些实施例的正交化边界的过程的示意图。如图4所示,以实线示出的点401与点409之间的边界片段410是初始边界的一部分,该初始边界是利用例如最小凸包算法得到的以最小面积包围多个宏单元(每个宏单元以虚线框标记)的边界。通过正交化边界片段410,可以确定点401与点409之间的正交的边界片段420(以实线示出),从而满足正交约束。

在一些实施例中,可以通过标识边界上的截止点并且利用与截止点关联的矩形边界代替对应的边界部分(也称为斜边切割)来进行正交化处理。截止点可以是指与边界上的起点构成的矩形与宏单元不重叠的点。在截止点被确定之后,可以将截止点作为新的起点以进行下一轮迭代。

例如,可以将边界片段410的一个端点(例如,点401)作为第一个起点,从另一端点(点409)沿着边界片段410搜索截止点。例如,点421可以被确定为第一个截止点。当点421被搜索到时,可以利用与该点421关联的矩形的边界来代替边界片段的对应部分。也即,在点401与点421之间的边界片段(以虚线示出)被替换为正交的边界(以实线示出)。然后,可以将搜索到的点421设置为新的起点以进行下一轮迭代,也即进行下一次截止点搜索与斜边切割。例如,点422可以被搜索为第二个截止点,并且点421与点422之间的边界片段可以被替换为以实线示出的正交的边界。如图4所示,经过正交化处理,边界片段410被更新为正交的边界片段420,从而符合芯片设计的正交约束。

备选地,在边界片段的一个端点为起点的情况下,可以从该起点开始沿着边界片段向另一端点开始搜索。附加地,还可以使用二分搜索来提高效率。可以从与起点相对的终点开始尝试构建无重叠矩形,如果判定矩形与宏单元发生重叠,则将起点与终点之间的中点作为新的终点开始尝试构建无重叠矩形。这样,可以更高效地获得正交的最小凸包边界。

基于所确定的多个边界,可以确定多个模板中的每个模板的邻接信息。如上所述,邻接信息可以指示模板之间的相对位置。附加地或备选地,邻接信息可以指示模板与布局区域中的预定点之间的相对位置。

在一些实施例中,可以基于多个模板的多个边界来确定每个模板的邻接信息。可以标识多个模板的多个边界中与布局区域的顶点最近邻的顶点并将其确定为一级锚点。可以将具有一级锚点的模板标识为一级模板。针对一级模板的边界中除一级锚点之外的每个顶点,标识其他模板的边界中与其最近邻的顶点,并将其确定为二级锚点。可以将具有二级锚点的模板标识为二级模板。以此类推,可以确定其他级别的锚点和对应的模板。

可以将关于模板的边界中的锚点的信息作为模板的邻接信息。关于锚点的信息可以包括一级锚点、二级锚点和/或更高级别锚点的标识。关于锚点的信息还可以包括锚点的近邻点的标识。这样,邻接信息可以指示模板的哪个顶点与布局区域的哪个顶点最近邻,并且可以指示这一对近邻点之间的距离。备选地或附加地,锚点信息还可以指示模板的哪个顶点与另一模板的哪个顶点最近邻,并且指示这一对近邻点之间的距离。

在一些实施例中,当模板与布局区域和其他模板之间的距离超过预定阈值时,可以将该模板标识为悬浮模板,并且将其与布局区域中的预定点之间的距离作为该模板的邻接信息。布局区域中的预定点的示例可以包括布局区域的中心点、布局区域的边界的中点以及其他适合的预定点。

应理解,在创建模板库110时,由于不同参考版图布局中具有功能相似的模块,也即,模板库110中可能包括分别对应于相似模块的相似模板,因此模板的邻接信息可以不指示特定模板之间的相对位置,而是指示特定功能类型的模板之间的相对位置。换言之,相似的模板的邻接信息可能是相同的。例如,属于A类型的模板A

此外,可以将不同参考版图布局中相似的多对近邻模板之间的距离的平均值确定为同类型的近邻模板对之间的距离。例如,第一参考版图布局中指示模板A

继续参考图2,在框202,基于参数组合,从所创建的模板库110获取模板120。在一些实施例中,可以在与模板库110中的多个模板对应的多个子参数组合中标识一组子参数组合,并且从模板库110获取与该组子参数组合对应的一组模板120。所标识的一组子参数组合中的每个子参数组合可以包括该参数组合中的参数。换言之,可以将每个子参数组合与该参数组合进行比较,如果一个子参数组合中的所有参数与该参数组合中的一部分参数相同,则可以标识出该子参数组合并且从模板库110获取与该子参数组合对应的模板。

在一些实施例中,由于参数的不同组合方式,基于一个参数组合可以标识出多组子参数组合。在这种情况下,可以获取多组模板并生成对应的多个版图布局。例如,如果第一子参数组合包括参数A、B、C,第二子参数组合包括参数D、E,第三子参数组合包括参数A、B、C、D、E,那么基于包括参数A、B、C、D、E的参数组合可以标识出第一子参数组合和第二子参数组合并且可以获取与第一子参数组合对应的模板和与第二子参数组合对应的模板。或者,可以标识出第三子参数组合并且可以获取与第三子参数组合对应的一个模板。

继续参考图2,在框204,基于该组模板120中的每个模板的邻接信息,在布局区域中布局该组模板120。布局区域的形状和大小可以基于参数组合来确定。在一些实施例中,可以基于邻接信息中关于锚点的信息来布局模板120。可以首先基于一级锚点的标识来布局一级模板。然后可以基于二级锚点的标识来在一级模板附近布局二级模板。

参考图1,相应的邻接信息可以指示模板121的左上顶点、模板123的左下顶点、模板125的右上顶点和模板126的右下顶点是一级锚点。在这种情况下,在布局模板120时可以首先布局模板121、123、125和126。例如,模板121的邻接信息可以指示模板121的左上顶点与布局区域的左上顶点之间的距离为零,因此可以将模板121布局在布局区域的左上角。在一级模板被布局之后,可以布局二级模板。例如,根据模板123的邻接信息指示的模板123的左上顶点与模板122的左下顶点之间的距离来布局模板122。

在一些实施例中,可以最后布局悬浮模板。例如,模板124的邻接信息可以指示其为悬浮模板。在这种情况下,可以在模板121、123、125、126和122之后布局模板124。可以基于模板124的邻接信息指示的与布局区域的中心点的距离来布局模板124。

在一些实施例中,在布局模板120时可以调整模板120之间的相对位置,以使得模板120之间不相互重叠并且经调整的相对位置仍然与邻接信息指示的相对位置相似。图5示出了根据本公开的一些实施例的调整布局的过程的示意图。如图5所示,在调整之前的布局510中,来自不同的参考版图布局的模板122和模板123之间存在重叠。在调整之后的布局520中,模板122和模板123之间不再重叠,并且两者之间的相对位置近似于原始的相对位置。

在一些实施例中,可以保持相互重叠的两个模板中的低级别模板(例如,模板123)的位置不变,并且逐步移动高级别模板(例如,模板122)来确定使得两个模板不再重叠的相对位置。具体地,可以逐步移动高级别模板中的锚点(例如,锚点511)来确定使得两个模板不再重叠时该锚点的位置。

可以利用邻域广度优先搜索算法(Breath First Search,BFS)来调整模板之间的相对位置。例如,可以将高级别模板的锚点(例如,点511)分别移动到低级别模板中的对应近邻点(例如,点512)的八个(或四个或更少个)近邻点处,并确定两个模板之间是否仍然重叠。如果仍然重叠,则可以将高级别模板中的锚点(例如,点511)移动到更远的近邻点处并确定两个模板之间是否仍然重叠。

如果在移动锚点之后两个模板之间不再重叠,则可以将此时的相对位置作为经调整的布局。附加地,可以向反方向再次移动锚点(也即,向近邻点的方向移动),并确定两个模板是否会重叠。这样,可以使得两个模板之间的相对位置尽量接近邻接信息指示的相对位置而不会相距太远。

以此方式,通过逐级地布局模板120并逐级地调整模板120之间的相对位置,可以逐步向布局区域的中心调整模板120的布局,从而提高布局模板120的效率。

继续参考图2,在框206,通过在布局区域中修改该组模板120中的每个模板的边界,生成版图布局140。如上所述,经修改的模板的边界可以被确定为与模板120对应的一组模块的边界,也即,包括与模板120对应的一组模块的版图布局140被确定。

在一些实施例中,可以基于参数组合确定布局区域的面积和一组模板120的目标面积。参数组合可以包括指示布局区域的面积的参数。参数组合还可以包括指示布局区域中期望实现的目标模块的面积的参数。如上所述,取决于对子参数组合的标识,一个目标模块可能由一个或多个模板构成。因此,基于所指示的目标模块的面积,可以确定与目标模块对应的一个或多个模板的目标面积。

基于所确定的布局区域的面积和一组模板120的目标面积,可以修改每个模板的边界以形成与模板对应的目标模块(或组成目标模块的子模块)的边界。在一些实施例中,可以均匀地扩展每个模板的边界,也即,使每个模板均匀地膨胀以达到其目标面积。例如,可以使用BFS八点邻域搜索算法来实现边界的扩展。

在一些实施例中,可以利用链表和字典数据结构来记录模板的边界,从而可以高效地存储和更新边界的位置。例如,可以利用链表来记录边界上的每个采样点的坐标。这样,当边界片段向外扩展时可以方便地插入新的点,并且当边界片段向内收缩时可以方便地删除原有的点。

在一些实施例中,可以按照一定的顺序来修改模板120的边界。可以监测布局区域中未被模板占据的空白区域的大小。当检测到空白区域的大小基本不变时,也即空白区域附近的模板在互相挤压而不是向空白区域扩展边界时,可以基于模板120的邻接信息和空白区域的位置信息来确定用于修改模板120的边界的顺序。

基于模板120的邻接信息和空白区域的位置信息,可以确定模板与该空白区域之间的距离并以此来确定修改边界的顺序。与该空白区域的距离越远,则该模板的边界可以越早被修改。由于距离最远的模板通常是位于布局区域的边界处的模板,以此方式可以加速模板120整体向空白区域膨胀而不是相互挤压,从而提高生成版图布局140的效率。

在一些实施例中,可以以逐步提高的分辨率来修改模板120的边界。例如,可以先以较低的分辨率来实现每个模板的边界的自由膨胀。当空白区域的面积基本不变时,可以提高分辨率以更精细地修改模板120的边界。备选地,可以按照迭代的次数来递增分辨率。

应理解,过程200仅是示例性的,过程200也可以包括其他动作或减少动作。例如,可以在基于邻接信息布局一组模板之后确定一组模板之间的重叠程度是否超过阈值,如果超过阈值则可以丢弃该组模板或向工程师发送提示。

上文参考图1至图5描述了生成版图布局的过程。通过基于模板来生成版图布局,可以无需调整模板内的宏单元的布局并且可以基于模板之间的初始相对位置来快速确定对应模块的边界,从而提高生成版图布局的效率。这使得对于大规模参数组合的评估成为可能。此外,利用模板生成的大量版图布局之间可以具有一致性。例如,所生成的不同的版图布局中可以包括由相同的模板构成的模块,并且这些模块以相似的方式与其他模块邻接。这样,可以更好地分析参数组合本身对所生成的版图布局的性能的影响,而减少布局过程中的人为因素的影响。

示例装置和设备

图6示出了根据本公开实施例的用于生成版图布局的装置600的框图,装置600可以包括多个模块,以用于执行如图2中所讨论的过程200中的对应步骤。如图6所示,装置600包括模板获取单元610,被配置为基于参数组合从模板库获取一组模板,所述一组模板中的每个模板包括经布局的多个宏单元;模板布局单元620,被配置为基于所述一组模板中的每个模板的邻接信息,在布局区域中布局所述一组模板;以及边界修改单元630,被配置为通过在所述布局区域中修改所述一组模板中的每个模板的边界,生成版图布局。

在一些实施例中,所述模板获取单元610进一步被配置为:在与所述模板库中的模板对应的多个子参数组合中标识一组子参数组合,所述一组子参数组合中的每个子参数组合包括所述参数组合中的参数;以及从所述模板库获取与所述一组子参数组合对应的所述一组模板。

在一些实施例中,所述多个子参数组合中的每个子参数组合指示对应的模板中的多个宏单元的类型和数目。

在一些实施例中,所述邻接信息指示每个模板与所述一组模板中的另一模板和所述布局区域中的预定点中的至少一项之间的相对位置。

在一些实施例中,所述边界修改单元630进一步被配置为:基于所述参数组合,确定所述布局区域的面积和所述一组模板的目标面积;以及基于所述布局区域的面积和所述一组模板的目标面积,修改每个模板的边界以形成对应的模块的边界。

在一些实施例中,装置600还包括模板库创建单元,所述模板库创建单元被配置为:获取参考版图布局;确定所述参考版图布局中的多个模块的多个内部布局以及对应的多个子参数组合,所述多个内部布局中的每个内部布局指示相应模块中的多个宏单元的布局;确定与所述多个模块对应的多个模板,所述多个模板中的每个模板的边界包围所述多个模块中的相应模块中的多个宏单元;以及基于所述多个模板的多个边界,确定所述多个模板中的每个模板的所述邻接信息。

在一些实施例中,所述多个模块包括第一模块,并且所述模板库创建单元进一步被配置为:基于宏单元的标识信息,标识属于所述第一模块的多个宏单元;以及基于所述第一模块的多个宏单元的位置信息,确定所述第一模块的内部布局。

在一些实施例中,所述模板库创建单元进一步被配置为:基于所述第一模块的多个宏单元的位置信息,确定包围所述第一模块的多个宏单元的初始边界;以及正交化所述初始边界,以确定与所述第一模块对应的模板的边界。

在一些实施例中,所述多个模板包括第一模板和第二模板,并且所述模板库创建单元进一步被配置为:在所述多个模板的多个顶点中标识所述第一模板的第一顶点,所述第一顶点与所述布局区域中的一个预定点距离最近;以及在所述多个模板中除了所述第一模板之外的剩余模板的多个顶点中标识所述第二模板的第二顶点,所述第二顶点与所述第一模板的一个顶点距离最近。

图7示出了可以用来实施本公开的实施例的示例设备700的示意性框图。设备700可以用于实现装置600。如图所示,设备700包括计算单元701,其可以根据存储在随机存取存储器(RAM)703和/或只读存储器(ROM)702的计算机程序指令或者从存储单元708加载到RAM703和/或ROM 702中的计算机程序指令,来执行各种适当的动作和处理。在RAM703和/或ROM 702中,还可存储设备700操作所需的各种程序和数据。计算单元701和RAM703和/或ROM702通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。

设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如过程200和过程500。例如,在一些实施例中,过程200和过程500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由RAM和/或ROM和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM和/或ROM并由计算单元701执行时,可以执行上文描述的过程200和过程500的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200和过程500。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,DVD)等),或者半导体介质(如固态硬盘等)。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

相关技术
  • 保险产品的生成方法、装置、计算机设备及存储介质
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 图像处理方法和装置、电子设备、存储介质、程序产品
  • 目标检测方法和装置、电子设备、存储介质、程序产品
  • 行人再识别方法和装置、电子设备、存储介质、程序产品
  • 生成印制电路板布局的方法、装置、设备、存储介质和程序产品
  • 布局生成方法、装置、存储介质及程序产品
技术分类

06120116483185