CN116629190B - 一种基于元胞自动机和禁忌搜索的fpga布局方法 - Google Patents
一种基于元胞自动机和禁忌搜索的fpga布局方法 Download PDFInfo
- Publication number
- CN116629190B CN116629190B CN202310896666.9A CN202310896666A CN116629190B CN 116629190 B CN116629190 B CN 116629190B CN 202310896666 A CN202310896666 A CN 202310896666A CN 116629190 B CN116629190 B CN 116629190B
- Authority
- CN
- China
- Prior art keywords
- cell
- target
- state
- neighbor
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000001413 cellular effect Effects 0.000 title claims abstract description 19
- 230000008859 change Effects 0.000 claims abstract description 59
- 230000007704 transition Effects 0.000 claims abstract description 40
- 230000008569 process Effects 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 24
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000000737 periodic effect Effects 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 3
- 238000003860 storage Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 15
- 239000002184 metal Substances 0.000 description 9
- 101150103187 Reg4 gene Proteins 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 5
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 5
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 5
- 101100412401 Rattus norvegicus Reg3a gene Proteins 0.000 description 5
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000005562 fading Methods 0.000 description 2
- 230000002068 genetic effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了一种基于元胞自动机和禁忌搜索的FPGA布局方法,包括:获取FPGA和包括节点和节点的拓扑关系的网表;将FPGA划分为多个元胞;根据元胞和节点生成包括各元胞的状态和属性的初始解;状态指元胞是否被节点占用;计算布局初始解的造价值,得到初始造价值;根据初始解、禁忌条件、邻居元胞和元胞状态转移条件,进行目标元胞状态和属性的改变,根据此改变确定候选解,计算候选解的造价值;当候选解的造价值大于初始造价值时,采用候选解和候选解的造价值分别更新初始解和初始造价值,得到更新后的初始解和更新后的初始造价值后,继续确定候选解直至得到对FPGA布局的解;当候选造价值小于或等于初始造价值时,继续确定候选解直至得到对FPGA布局的解。
Description
技术领域
本发明属于集成电路技术领域,具体涉及一种基于元胞自动机和禁忌搜索的FPGA布局方法。
背景技术
FPGA具有现场可配置、开发周期短,风险低、逻辑资源丰富等特点,因此被广泛应于通信、图形图像处理、显示控制、工业控制、汽车电子等领域。随着FPGA规模和集成度的提升,对相关EDA工具提出了极大挑战,布局是FPGA EDA实现流程中重要的核心步骤之一,对整个流程的最终结果和优化程度影响至关重要。
相关技术中,通常采用随机优化的算法,如模拟褪火算法、遗传算法等算法进行FPGA布局。虽然,模拟褪火算法和遗传算法等算法,相比其它类算法(如基于划分的算法、解析式算法等)而言,能够取得更优化的结果。但这些算法运行时间长,不适合处理大规模的FPGA阵列。
发明内容
为了解决相关技术中存在的上述问题,本发明提供了一种基于元胞自动机和禁忌搜索的FPGA布局方法。本发明要解决的技术问题通过以下技术方案实现:
本发明提供一种基于元胞自动机和禁忌搜索的FPGA布局方法,包括:
S1、获取待布局FPGA和网表;所述网表包括多个节点和节点之间的拓扑关系;
S2、将所述待布局FPGA划分为多个元胞,每个元胞具有位置信息;
S3、根据所述多个元胞和所述多个节点,生成布局初始解;所述布局初始解包括各个元胞的状态和属性;状态用于表征元胞是否被节点占用;属性用于表征占用元胞的节点;
S4、确定每个被占用的元胞的邻居元胞;
S5、计算所述布局初始解的造价函数值,得到初始造价值;
S6、根据所述布局初始解、预设禁忌条件、预设元胞状态转移条件和目标元胞的所述邻居元胞,进行每个目标元胞的状态和属性的改变,并根据状态和属性的改变确定布局候选解,计算所述布局候选解的造价函数值,得到候选造价值;
S7、当所述候选造价值大于所述初始造价值时,采用所述布局候选解和所述候选造价值分别更新所述布局初始解和所述初始造价值,得到更新后的布局初始解和更新后的初始造价值,之后,返回步骤S6继续执行,直至得到用于对所述待布局FPGA进行布局的所述布局初始解;
S8、当所述候选造价值小于或等于所述初始造价值时,返回步骤S6继续执行,直至得到用于对所述待布局FPGA进行布局的所述布局初始解。
在一些实施例中,步骤S6包括:
S61、根据所述布局初始解从所述多个元胞中选取至少一个元胞,作为至少一个目标元胞;
S62、根据所述预设元胞状态转移条件、每个目标元胞的当前状态和当前属性,以及每个目标元胞的邻居元胞的当前状态和当前属性,确定每个目标元胞的下一个状态和下一个属性,以及每个目标元胞的目标邻居元胞的下一个状态和下一个属性;
S63、根据所述预设禁忌条件、所述下一个状态和所述下一个属性,确定所述布局候选解,并计算所述布局候选解的造价函数值,得到所述候选造价值。
在一些实施例中,每个元胞的状态包括:占用状态和空闲状态;每个处于占用状态的元胞的属性为占用所述元胞的节点,每个处于空闲状态的元胞的属性为空,步骤S61具体包括:
根据所述布局初始解,从所述多个元胞中选取状态为占用状态的一个或多个元胞,作为所述至少一个目标元胞。
在一些实施例中,步骤S62包括:
S621、为所述至少一个目标元胞对应分配至少一个处理进程;每个目标元胞与每个处理进程一一对应;
S622、在每个处理进程中,根据所述预设元胞状态转移条件从所述处理进程对应的目标元胞的邻居元胞中,筛选出所述目标邻居元胞;
S623、在每个进程中,将所述处理进程对应的目标元胞的当前状态和当前属性,与所述目标邻居元胞的当前状态和当前属性互换,得到所述处理进程对应的目标元胞的下一个状态和下一个属性,以及所述目标邻居元胞的下一个状态和下一个属性。
在一些实施例中,所述预设元胞状态转移条件包括:所述目标元胞的邻居元胞中的任意一个邻居元胞;或者,所述预设元胞状态转移条件包括以下条件中的至少一个:
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的曼哈顿距离减小;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的数据传输延迟减小;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞的时序余量增加;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的拥挤程度减小。
在一些实施例中,步骤S63包括:
S631、根据所述下一个状态和所述下一个属性,确定每个目标元胞的状态转移结果;
S632、对于每个目标元胞,当所述目标元胞的状态转移结果不满足所述预设禁忌条件时,将所述目标元胞的当前状态和当前属性分别更新为所述目标元胞的所述下一个状态和所述下一个属性,将所述目标元胞的目标邻居元胞的当前状态和当前属性分别更新为所述目标邻居元胞的所述下一个状态和所述下一个属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
S633、对于每个目标元胞,当所述目标元胞的状态转移结果满足所述预设禁忌条件时,保持所述目标元胞和所述目标邻居元胞的当前状态和当前属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
S634、根据所述状态属性更新结果,以及所述布局初始解中除所述目标元胞和所述目标邻居元胞之外的元胞的状态和属性,得到所述布局候选解,并计算所述布局候选解的造价函数值,得到所述候选造价值。
在一些实施例中,每个目标元胞的状态转移结果包括:所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径;所述预设禁忌条件为用于存储预设数量的元胞改变路径的禁忌表;步骤S632具体包括:
获取当前禁忌表;
对于每个目标元胞,当所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径未包含在所述禁忌表时,将所述目标元胞的当前状态和当前属性分别更新为所述目标元胞的所述下一个状态和所述下一个属性,将所述目标元胞的目标邻居元胞的当前状态和当前属性分别更新为所述目标邻居元胞的所述下一个状态和所述下一个属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
当所述当前禁忌表中存储的元胞改变路径的条数小于所述预设数量时,将所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径添加至所述禁忌表中,得到更新后的禁忌表;
当所述当前禁忌表中存储的元胞改变路径的条数大于或等于所述预设数量时,将所述当前禁忌表中存储时间最早的元胞改变路径删除后,将所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径添加至所述禁忌表,得到更新后的禁忌表。
在一些实施例中,每个目标元胞的状态转移结果包括以下至少一个:
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间没有关联;
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间具有关联;
所述目标元胞的目标邻居元胞的位置是否满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞的目标邻居元胞的位置不满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞与所述目标邻居元胞之间的数据流方向变化;
所述目标元胞与所述目标邻居元胞之间的数据流方向不变化;
对应的,所述预设禁忌条件包括以下至少一个:
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间没有关联;
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间具有关联;
所述目标元胞的目标邻居元胞的位置不满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞与所述目标邻居元胞之间的数据流方向变化;
所述目标元胞与所述目标邻居元胞之间的数据流方向不变化。
在一些实施例中,步骤S4包括:
S41、将周期性边界作为划分邻居元胞的边界条件,采用冯诺依曼型邻居划分方式、摩尔型邻居划分方式或扩展摩尔型邻居划分方式,为每个被占用的元胞划分邻居元胞。
在一些实施例中,步骤S4包括:
S42、根据所述拓扑关系,确定占用每个元胞的节点的邻居节点;
S43、将所述邻居节点所占用的元胞,作为所述节点所占用的元胞的邻居元胞。
本发明具有如下有益技术效果:
本发明方法将FPGA布局问题视为一个多状态的元胞自动机系统,其中,每个元胞的状态表示一个网表元件的位置,整个网表的布局结果就是所有元胞的状态的组合;通过对元胞状态的改变来搜索最优解,并且,在每次迭代中,通过使用预设禁忌条件和预设元胞状态转移条件,可以以禁忌搜索方式选择特定元胞进行状态改变,以得到新的布局,减少了搜索空间,进而减少了搜索较优布局的运行时间;并且,在得到新的布局之后,可以根据造价函数计算新的布局的质量,如果新的布局是更好的布局,则更新当前布局,否则继续寻找更好的布局。因此,本方法可以在较短的时间内找到较优的FPGA布局,从而提高了FPGA设计的效率和优化程度,适用于处理大规模的FPGA阵列。
以下将结合附图及实施例对本发明做进一步详细说明。
附图说明
图1为本发明实施例提供的基于元胞自动机和禁忌搜索的FPGA布局方法的一个流程图;
图2为本发明实施例提供的示例性的元胞Y的邻居元胞的一个划分示意图;
图3为本发明实施例提供的示例性的元胞Y的邻居元胞的另一个划分示意图;
图4为本发明实施例提供的示例性的元胞Y的邻居元胞的又一个划分示意图;
图5为本发明实施例提供的示例性的当将周期性边界作为划分邻居元胞的边界条件时,元胞Y的邻居元胞的一个划分示意图;
图6为本发明实施例提供的示例性的待布局FPGA的格点阵列图;
图7为本发明实施例提供的示例性的网表中包含的节点的拓扑关系图;
图8为本发明实施例提供的示例性的得到的布局初始解的一个示意图;
图9为本发明实施例提供的示例性的从元胞(3,1)的邻居元胞中确定出目标邻居元胞的一个示意图;
图10为本发明实施例提供的示例性的得到的布局候选解的一个示意图;
图11为本发明实施例提供的示例性的从元胞(5,3)的邻居元胞中确定出目标邻居元胞的一个示意图;
图12为本发明实施例提供的示例性的得到的布局候选解的另一个示意图;
图13为本发明实施例提供的示例性的从元胞(1,0)的邻居元胞中确定出目标邻居元胞的一个示意图;
图14为本发明实施例提供的示例性的得到的布局候选解的又一个示意图;
图15为本发明实施例提供的示例性的从元胞(3,3)的邻居元胞中确定出目标邻居元胞的一个示意图;
图16为本发明实施例提供的示例性的得到的布局候选解的再一个示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。
尽管在此结合各实施例对本发明进行了描述,然而,在实施所要求保护的本发明过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
图1是本发明实施例提供的基于元胞自动机和禁忌搜索的FPGA布局方法的一个流程图,如图1所示,所述方法包括以下步骤:
S1、获取待布局FPGA和网表;网表包括多个节点和节点之间的拓扑关系。
这里,网表中包含了多个节点,以及这多个节点之间的拓扑关系,每个节点对应一个电路元件,拓扑关系表征了这些电路元件之间的连接关系。
S2、将待布局FPGA划分为多个元胞,每个元胞具有位置信息。
示例性的,可以将待布局FPGA划分为多个单元格阵列,不同的单元格的位置不同,一个单元格为一个元胞,每个单元格在待布局FPGA中的位置信息即为元胞的位置信息;每个元胞的初始状态均为空闲状态,用于表示元胞未被任何节点占用(即元胞未匹配任何节点),每个元胞的初始属性也均为空,用于表示元胞未被任何节点占用(即元胞未匹配任何节点)。
S3、根据多个元胞和多个节点,生成布局初始解;布局初始解包括各个元胞的状态和属性;状态用于表征元胞是否被节点占用;属性用于表征占用元胞的节点。
示例性的,当网表中包含的节点数量小于或等于预设节点数量(即网表规模较小)时,将网表中的多个节点随机分配至划分出的多个元胞中的一些元胞中,并且,每个元胞最多分配一个节点,如此,待布局FPGA的所有元胞中,分配了节点的元胞的状态由空闲状态改变为占用状态,并且,分配了节点的元胞的属性由空改变为占用该元胞的节点,此时,待布局FPGA的所有元胞的状态和属性构成了待布局FPGA的布局初始解。
示例性的,当网表中包含的节点数量大于预设节点数量(即网表规模较大)时,可以采用协方差矩阵自适应演化方法(Covariance Matrix Adaptation EvolutionStrategy,CMA-ES)将网表中的多个节点分配至划分出的多个元胞中的一些元胞中,并得到待布局FPGA的布局初始解。
S4、确定每个被占用的元胞的邻居元胞。
在一些实施例中,可以将周期性边界作为划分邻居元胞的边界条件,采用冯诺依曼型邻居划分方式、摩尔型邻居划分方式或扩展摩尔型邻居划分方式,为每个被占用的元胞划分邻居元胞。
示例性的,如图2所示,当一个被占用的元胞为图2中的黑色方格,且采用冯诺依曼型邻居划分方式从划分出的所有元胞中为该黑色方格划分邻居元胞时,图2中的四个灰色方格为该黑色方格的邻居元胞。
示例性的,如图3所示,当一个被占用的元胞为图3中的黑色方格,且采用摩尔型邻居划分方式从划分出的所有元胞中为该黑色方格划分邻居元胞时,图3中的8个灰色方格为该黑色方格的邻居元胞。
示例性的,如图4所示,当一个被占用的元胞为图4中的黑色方格,且采用扩展摩尔型邻居划分方式从划分出的所有元胞中为该黑色方格划分邻居元胞,且划分半径为2时,图4中的24个灰色方格为该黑色方格的邻居元胞。
示例性的,如图5所示,当将周期性边界作为划分邻居元胞的边界条件,且采用扩展摩尔型邻居划分方式从划分出的所有元胞中为每个目标元胞划分邻居元胞时,目标元胞a的邻居元胞为a1、a2、a3、a4、a5、a6、a7、a8;目标元胞b的邻居元胞为b1、b2、b3、b4、b5、b6、b7、b8。
在一些实施例中,还可以根据拓扑关系,确定占用每个元胞的节点的邻居节点;将邻居节点所占用的元胞,作为节点所占用的元胞的邻居元胞。
S5、计算布局初始解的造价函数值,得到初始造价值。
这里,可以采用造价函数计算造价函数值。示例性的,造价函数可以为公式(1):,/>表示造价函数值,/>表示所有被占用的元胞之间的总的曼哈顿距离。示例性的,造价函数可以为公式(2):,/>为预设权重因子,且数值在0~1之间,/>为所有节点的总的时序造价,且,/>为所有节点的总的延迟值,/>为所有节点的总的最差负时序裕量(Worst Negative Slack,WNS),/>为幂函数常数。
S6、根据布局初始解、预设禁忌条件、预设元胞状态转移条件和目标元胞的邻居元胞,进行每个目标元胞的状态和属性的改变,并根据状态和属性的改变确定布局候选解,计算布局候选解的造价函数值,得到候选造价值。
具体的,步骤S6包括:S61~S63:
S61、根据布局初始解从多个元胞中选取至少一个元胞,作为至少一个目标元胞。
这里,根据所述布局初始解,从多个元胞中选取状态为占用状态的一个或多个元胞,作为至少一个目标元胞。
S62、根据预设元胞状态转移条件、每个目标元胞的当前状态和当前属性,以及每个目标元胞的邻居元胞的当前状态和当前属性,确定每个目标元胞的下一个状态和下一个属性,以及每个目标元胞的目标邻居元胞的下一个状态和下一个属性。
在一些实施例中,可以为至少一个目标元胞对应分配至少一个处理进程;每个目标元胞与每个处理进程一一对应;在每个处理进程中,根据预设元胞状态转移条件从该处理进程对应的目标元胞Y的邻居元胞中,筛选出目标邻居元胞M;在该处理进程中,将该处理进程对应的目标元胞Y的当前状态和当前属性,与目标邻居元胞M的当前状态和当前属性互换,得到目标元胞Y的下一个状态和下一个属性,以及目标邻居元胞M的下一个状态和下一个属性。
这里,处理进程可以是CPU进程,也可以是GPU协处理进程。上述通过使用与目标元胞的数量相同的处理进程进行各个元胞的状态和属性的并行改变,可以提高状态改变速度,从而有利于提高搜索最优布局解的速度。
在一些实施例中,预设元胞状态转移条件可以包括:一个目标元胞Y的邻居元胞中的任意一个邻居元胞。
在一些实施例中,预设元胞状态转移条件可以包括以下转移条件中的至少一个:
转移条件1):在目标元胞Y的状态和属性与目标邻居元胞M的状态和属性互换之后,目标元胞Y与邻居元胞之间的曼哈顿距离减小;
转移条件2):在目标元胞Y的状态和属性与目标邻居元胞M的状态和属性互换之后,目标元胞Y与邻居元胞之间的数据传输延迟减小;
转移条件3):在目标元胞Y的状态和属性与目标邻居元胞M的状态和属性互换之后,目标元胞Y的时序余量增加;
转移条件4):在目标元胞Y的状态和属性与目标邻居元胞M的状态和属性互换之后,目标元胞Y与邻居元胞之间的拥挤程度减小。
例如,当预设元胞状态转移条件为一个目标元胞Y的邻居元胞中的任意一个邻居元胞时,对于一个目标元胞Y,可以从目标元胞Y的所有邻居元胞中选择任意一个邻居元胞,作为目标元胞Y的目标邻居元胞M。又例如,当预设元胞状态转移条件为上述的转移条件1)和转移条件2)时,对于一个目标元胞Y,可以从目标元胞Y的所有邻居元胞中,选择出既能够使得目标元胞Y的状态和属性与该邻居元胞的状态和属性互换之后,目标元胞Y与目标元胞Y的邻居元胞之间的总的曼哈顿距离减小,又能使得目标元胞Y与目标元胞Y的邻居元胞之间的总的数据传输延迟减小的一个邻居元胞,作为目标元胞Y的目标邻居元胞M。
这里,FPGA包括了多种基本单元(例如,多种具有一定数量的金属线),并且在FPGA内,每种基本单元都有固定的数据传输延迟值;例如,X2金属线和X6金属线,X2金属线用于连接曼哈顿距离为2的格点(元胞),且数据传输延迟为200ps(皮秒);X6金属线用于连接曼哈顿距离为6的格点,且数据传输延迟为350ps。对于每个目标元胞Y,可以根据占用目标元胞Y的节点与占用目标元胞Y的邻居元胞的节点之间的拓扑关系,确定出用于实现这些拓扑关系的金属线,之后,再将这些金属线的数据传输延迟进行累加,累加后得到的值即为目标元胞Y与邻居元胞之间的数据传输延迟。
这里,可以通过已有的时序余量计算方法进行目标元胞Y与邻居元胞之间的时序余量的计算。例如,以计算两个直接相连的寄存器之间的时序余量为例,进行一种时序余量计算方法的简单介绍。即,时序余量为时钟周期与连线延迟之差,其中,连线延迟表示用来连接这两个寄存器的所有金属线的总的数据传输延迟。当两个直接相连的寄存器为Reg1和Reg2,且Reg1和Reg2之间的连线延迟是7ns(纳秒),Reg1和Reg2在100Mhz时钟域(即时钟周期为10ns)时,Reg1和Reg2之间的时序余量为:+3ns=10ns-7ns。当两个直接相连的寄存器为Reg3和Reg4,且Reg3和Reg4之间的连线延迟是5ns,Reg3和Reg4在250Mhz时钟域(即时钟周期为4ns)时,Reg3和Reg4之间的时序余量为-1ns=4ns-5ns。即, Reg1与Reg2之间的连线延迟虽然长(对应的曼哈顿距离较远),但时序余量大,所以还可以让Reg1与Reg2之间的延迟更长(即距离更远),这样可以让出更好的资源给其他元件之间的连接;Reg3和Reg4之间的连线延迟虽然已经较小(即距离较近),但由于Reg3和Reg4之间的时序目标严格,所以它们之间的延迟还是不够小,还需要进一步缩短它们之间的距离,或者采用数据传输延迟更小的金属线。
这里,评估目标元胞Y与邻居元胞之间的拥挤程度的方法可以有多种。示例性的,对于目标元胞Y,可以采用目标元胞Y的邻居元胞中处于被占用状态的邻居元胞的数量,作为目标元胞Y与邻居元胞之间的拥挤程度。示例性的,对于目标元胞Y,还可以采用拥挤度造价函数评估目标元胞Y与邻居元胞之间的拥挤程度,例如,拥挤度造价函数=处于占用状态的邻居元胞数量/总的邻居元胞的数量;还可以采用与目标元胞Y的邻居元胞中处于被占用状态的邻居元胞的数量相关的其他函数作为拥挤度造价函数,对此不作限定。
S63、根据预设禁忌条件、下一个状态和下一个属性,确定布局候选解,并计算布局候选解的造价函数值,得到候选造价值。
具体的,步骤S63包括:S631~S634:
S631、根据下一个状态和下一个属性,确定每个目标元胞Y的状态转移结果。
在一些实施例中,一个目标元胞Y的状态转移结果包括:目标元胞Y的目标邻居元胞M的下一个属性的元胞改变路径;并且,确定目标元胞Y的目标邻居元胞M的下一个属性的元胞改变路径的方法为:将目标元胞Y的位置信息至目标邻居元胞M的位置信息构成的路径,作为目标邻居元胞M的下一个属性的元胞改变路径。例如,目标元胞Y的位置信息为(3,1),目标邻居元胞M的位置信息为(4,1),则目标邻居元胞M的下一个属性的元胞改变路径为:(3,1)→(4,1)。
在一些实施例中,一个目标元胞Y的状态转移结果包括以下结果中的至少一种:
结果1):在拓扑关系中,占用目标元胞Y的节点与占用目标邻居元胞M的节点之间没有关联;
结果2):在拓扑关系中,占用目标元胞Y的节点与占用目标邻居元胞M的节点之间具有关联;
结果3):目标元胞Y的目标邻居元胞M的位置满足占用目标元胞Y的节点的位置约束条件(例如,节点的进位链长度等);
结果4):目标元胞Y的目标邻居元胞M的位置不满足占用目标元胞Y的节点的位置约束条件(例如,节点的进位链长度等);
结果5):目标元胞Y与目标邻居元胞M之间的数据流方向变化;
结果6):目标元胞Y与目标邻居元胞M之间的数据流方向不变化。
S632、对于每个目标元胞Y,当目标元胞Y的状态转移结果不满足预设禁忌条件时,将目标元胞Y的当前状态和当前属性分别更新为目标元胞Y的下一个状态和下一个属性,将目标元胞Y的目标邻居元胞M的当前状态和当前属性分别更新为目标邻居元胞M的下一个状态和下一个属性,得到目标元胞Y和目标邻居元胞M的状态属性更新结果。
在一些实施例中,当预设禁忌条件为用于存储预设数量的元胞改变路径的禁忌表,且每个目标元胞Y的状态转移结果为该目标元胞Y的目标邻居元胞M的下一个属性的元胞改变路径时,S632可以具体实现为:获取当前禁忌表;对于目标元胞Y,当目标元胞Y的目标邻居元胞的下一个属性的元胞改变路径未包含在禁忌表时,将目标元胞Y的当前状态和当前属性分别更新为目标元胞的下一个状态和下一个属性,将目标元胞Y的目标邻居元胞M的当前状态和当前属性分别更新为目标邻居元胞M的下一个状态和下一个属性,得到目标元胞Y和目标邻居元胞M的状态属性更新结果;当当前禁忌表中存储的元胞改变路径的条数小于预设数量时,将目标元胞Y的目标邻居元胞的下一个属性的元胞改变路径添加至禁忌表中,得到更新后的禁忌表;当当前禁忌表中存储的元胞改变路径的条数大于或等于预设数量时,将当前禁忌表中存储时间最早的元胞改变路径删除后,将目标元胞Y的目标邻居元胞的下一个属性的元胞改变路径添加至禁忌表,得到更新后的禁忌表。
通过此种方法,可以将搜索过程中最先的状态变化解禁,使得后续依然可以尝试先前的状态变化,从而可以避免搜索过程陷入局部最优的问题。
在一些实施例中,当每个目标元胞Y的状态转移结果为上述的结果1)、结果3)和结果5)中的至少一个,或者为上述的结果2)、结果4)和结果6)中的至少一个时,对应的,预设禁忌条件可以为下述的禁忌条件1)、禁忌条件2)、禁忌条件3)、禁忌条件4)和禁忌条件5)中的至少一个对应的条件。禁忌条件1):在拓扑关系中,占用目标元胞的节点与占用目标邻居元胞的节点之间没有关联(例如,在下述图7所示的拓扑关系中,由于节点4与节点1之间没有边,所以节点4与节点1没有关联);禁忌条件2):在拓扑关系中,占用目标元胞的节点与占用目标邻居元胞的节点之间具有关联(例如,在下述图7所示的拓扑关系中,由于节点2与节点1之间的边为a,所以节点2与节点1具有关联);禁忌条件3):目标元胞的目标邻居元胞的位置不满足占用目标元胞的节点的位置约束条件;禁忌条件4):目标元胞与目标邻居元胞之间的数据流方向变化(即占用目标元胞的节点与占用目标邻居元胞的任一节点之间的边的方向发生变化,例如,下述图7中,若节点2与节点1之间的边a的方向由节点2指向节点1,变为了由节点1指向节点2,则说明边a的方向发生变化);禁忌条件5):目标元胞与目标邻居元胞之间的数据流方向不变化(即占用目标元胞的节点与占用目标邻居元胞的任一节点之间的边的方向不发生变化)。
S633、对于每个目标元胞Y,当目标元胞Y的状态转移结果满足预设禁忌条件时,保持目标元胞Y和目标邻居元胞M的当前状态和当前属性,得到目标元胞Y和目标邻居元胞M的状态属性更新结果。
S634、根据状态属性更新结果,以及布局初始解中除目标元胞Y和目标邻居元胞M之外的元胞的状态和属性,得到布局候选解,并计算布局候选解的造价函数值,得到候选造价值。
S7、当候选造价值大于初始造价值时,采用布局候选解和候选造价值分别更新布局初始解和初始造价值,得到更新后的布局初始解和更新后的初始造价值,之后,返回步骤S6继续执行,直至得到用于对待布局FPGA进行布局的布局初始解。
这里,当候选造价值大于初始造价值时,采用布局候选解更新布局初始解,采用候选造价值更新初始造价值,得到更新后的布局初始解和更新后的初始造价值,并确定当前求解状态,当当前求解状态未达到预设的求解终止条件时,返回步骤S6继续执行,直至当前求解状态达到预设的求解终止条件时,将最后一次更新的布局初始解作为用于对待布局FPGA进行布局的布局初始解。
这里,当前求解状态可以为当前的迭代次数、候选造价值大于或等于初始造价值的累计次数或当前布局候选解对应的网表中所有节点的总WNS;对应的,预设的求解终止条件可以为:预设迭代次数阈值、预设的累计次数阈值或预设总WNS阈值。
S8、当候选造价值小于或等于初始造价值时,返回步骤S6继续执行,直至得到用于对待布局FPGA进行布局的布局初始解。
这里,当候选造价值小于或等于初始造价值时,确定当前求解状态,若当前求解状态未达到预设的求解终止条件时,返回步骤S6继续执行,直至当前求解状态达到预设的求解终止条件时,将最后一次更新的布局初始解作为用于对待布局FPGA进行布局的布局初始解。
以下通过一个具体的示例对本方法进行进一步说明。在以下示例中,待布局FPGA为6列4行的格点阵列,例如图6所示。网表中包括节点1、节点2、节点3、节点4、节点5这5个节点,并且,这5个节点的拓扑关系如图7所示。将周期性边界作为划分邻居元胞的边界条件,并采用摩尔型邻居划分方式划分每个元胞的邻居元胞。预设元胞状态转移条件为:目标元胞的邻居元胞中的任意一个邻居元胞。每个目标元胞的状态转移结果为:该目标元胞的目标邻居元胞的下一个属性的元胞改变路径。预设禁忌条件为:禁忌表(TABU_LIST),且初始禁忌表为空,禁忌表最多可以存储3条元胞改变路径。造价函数为上述公式(1),即造价函数值为总的曼哈顿距离(线长)。
S10、将待布局FPGA划分为6列x4行=24个格点,这24个格点即为24个元胞,元胞的位置信息为格点的列数和行数坐标,将5个节点分配至24个元胞中的任意5元胞,从而分配到节点的元胞的状态从空闲变为占用,其余元胞的状态为空闲,得到布局初始解,如图8所示,节点1占用元胞(1,0)、节点2占用元胞(0,2)、节点3占用元胞(2,3)、节点4占用元胞(3,1)、节点5占用元胞(5,3);
S20、根据布局初始解,计算边a、b、c、d和e各自的线长,得到边a的线长wl(a)=3、边b的线长wl(b)=4、边c的线长wl(c)=3、边d的线长wl(d)=7、边e的线长wl(e)=3;计算总线长wl=wl(a)+ wl(b)+ wl(c)+ wl(d)+ wl(e)=20,得到布局初始解的初始造价值为20;
S30[1]、选取元胞(3,1),占用元胞(3,1)的节点为节点4,如图9所示,图9中灰色区域的元胞为元胞(3,1)的所有邻居元胞,随机选取邻居元胞(4,1)作为元胞(3,1)的目标邻居元胞,元胞(4,1)为空闲状态,互换元胞(3,1)和元胞(4,1)的状态和属性,即如图10所示,相当于把节点4从元胞(3,1)移动到元胞(4,1),得到的元胞改变路径为:(3,1)→(4,1);基于此状态和属性互换,得到布局候选解;
此处需要说明的是,[.]表示迭代求解的次数,例如,[1]表示第一次迭代,[2]表示第二次迭代。
S40[1]、获取当前的TABU_LIST,由于当前TABU_LIST为空,因此该元胞改变路径(3,1)→(4,1)没有在TABU_LIST中,将该元胞改变路径加入TABU_LIST,得到更新后的TABU_LIST;
S50[1]、根据S30[1]得到的布局候选解,计算边a、b、c、d和e各自的线长,得到边a的线长wl(a)=3、边b的线长wl(b)=5、边c的线长wl(c)=4、边d的线长wl(d)=7、边e的线长wl(e)=3;计算总线长wl=wl(a)+ wl(b)+ wl(c)+ wl(d)+ wl(e)=22,得到布局候选解的候选造价值为22;
S60[1]、由于初始造价值为20,候选造价值为22,因此,S30[1]得到的布局候选解不被接受,不对S10得到的布局初始解进行更新,并返回继续执行S30;
S30[2]、选取元胞(5,3),占用元胞(5,3)的节点为节点5,如图11所示,图中灰色区域的元胞为元胞(5,3)的所有邻居元胞,随机选取图11中虚线框中的元胞作为元胞(3,1)的目标邻居元胞,由于元胞越界,再根据周期性边界规则,则选取到元胞(0,2)作为元胞(5,3)的目标邻居元胞,占用元胞(0,2)的节点为节点2,互换元胞(5,3)和元胞(0,2)的状态和属性,即如图12所示,相当于布局时把节点2和节点5的位置互换,得到元胞改变路径为:(5,3)→(0,2);基于此状态和属性互换,得到布局候选解;
S40[2]、获取当前的TABU_LIST,由于当前TABU_LIST中仅包含元胞改变路径:(3,1)→(4,1),因此,元胞改变路径:(5,3)→(0,2)没有包含在TABU_LIST中,因此将其加入当前TABU_LIST,得到更新后的TABU_LIST;
S50[2]、根据S30[2]得到的布局候选解,计算边a、b、c、d和e各自的线长,得到边a的线长wl(a)=7、边b的线长wl(b)=4、边c的线长wl(c)=3、边d的线长wl(d)=3、边e的线长wl(e)=3;计算总线长wl=wl(a)+ wl(b)+ wl(c)+ wl(d)+ wl(e)=20,得到布局候选解的候选造价值为20;
S60[2]、由于初始造价值为20,候选造价值为20,因此,S30[2]得到的布局候选解不被接受,不对S10得到的布局初始解进行更新,并返回继续执行S30;
S30[3]、选取元胞(1,0),占用元胞(1,0)的节点为节点1,如图13所示,图中灰色区域的元胞为元胞(1,0)的所有邻居元胞,随机选取图13中虚线框中的元胞作为元胞(1,0)的目标邻居元胞,由于元胞越界,再根据周期性边界规则,则选取到元胞(1,3)作为元胞(1,0)的目标邻居元胞,元胞(1,0)为空闲状态,互换元胞(1,0)和元胞(1,3)的状态和属性,即如图14所示,相当于布局时把节点1从(1,0)移动至元胞(1,3),得到元胞改变路径为:(1,0)→(1,3);基于此状态和属性互换,得到布局候选解;
S40[3]、获取当前的TABU_LIST,由于当前TABU_LIST中仅包含元胞改变路径(3,1)→(4,1)和元胞改变路径(5,3)→(0,2),因此,元胞改变路径(1,0)→(1,3)没有包含在TABU_LIST中,因此将其加入当前TABU_LIST,得到更新后的TABU_LIST;
S50[3]、根据S30[3]得到的布局候选解,计算边a、b、c、d和e各自的线长,得到边a的线长wl(a)=2、边b的线长wl(b)=4、边c的线长wl(c)=3、边d的线长wl(d)=4、边e的线长wl(e)=3;计算总线长wl=wl(a)+ wl(b)+ wl(c)+ wl(d)+ wl(e)=16,得到布局候选解的候选造价值为16;
S60[3]、由于初始造价值为20,候选造价值为16,因此,S30[3]得到的布局候选解被接受,采用S30[3]得到的布局候选解对S10得到的布局初始解进行更新,以及采用候选造价值为16对初始造价值为20进行更新,更新后的布局初始解为S30[3]得到的布局候选解,更新后的初始造价值为16,之后,返回继续执行S30;
S30[4]、选取元胞(2,3),占用元胞(2,3)的节点为节点3,如图15所示,图中灰色区域的元胞为元胞(2,3)的所有邻居元胞,随机选取元胞(3,3)作为元胞(2,3)的目标邻居元胞,元胞(3,3)为空闲状态,互换元胞(2,3)和元胞(3,3)的状态和属性,即如图16所示,相当于布局时把节点3从元胞(2,3)移动至元胞(3,3),得到元胞改变路径为:(2,3)→(3,3);基于此状态和属性互换,得到布局候选解;
S40[4]、获取当前的TABU_LIST,由于当前TABU_LIST中仅包含元胞改变路径(3,1)→(4,1)、元胞改变路径(5,3)→(0,2)和元胞改变路径(1,0)→(1,3),因此,元胞改变路径(2,3)→(3,3)没有包含在TABU_LIST中,但由于当前的TABU_LIST中存储的元胞改变路径已经达到了3条,因此,先将这3条中最早存储的元胞改变路径(3,1)→(4,1)删除,再将元胞改变路径(2,3)→(3,3)加入当前TABU_LIST,得到更新后的TABU_LIST;
S50[4]、根据S30[4]得到的布局候选解,计算边a、b、c、d和e各自的线长,得到边a的线长wl(a)=2、边b的线长wl(b)=4、边c的线长wl(c)=2、边d的线长wl(d)=4、边e的线长wl(e)=2;计算总线长wl=wl(a)+ wl(b)+ wl(c)+ wl(d)+ wl(e)=14,得到布局候选解的候选造价值为14;
S60[4]、由于初始造价值为16,候选造价值为14,因此,S30[4]得到的布局候选解被接受,采用S30[4]得到的布局候选解对S30[3]得到的布局候选解进行更新,以及采用候选造价值为14对初始造价值为16进行更新,更新后的布局初始解为S30[4]得到的布局候选解,更新后的初始造价值为14,之后,返回继续执行S30,直至达到预设条件(例如,将每个节点均迭代了一次,或,迭代次数达到预设次数,等等)时,将最后一次得到的更新后的布局初始解作为对待布局FPGA进行布局的解。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,包括:
S1、获取待布局FPGA和网表;所述网表包括多个节点和节点之间的拓扑关系;
S2、将所述待布局FPGA划分为多个元胞,每个元胞具有位置信息;
S3、根据所述多个元胞和所述多个节点,生成布局初始解;所述布局初始解包括各个元胞的状态和属性;状态用于表征元胞是否被节点占用;属性用于表征占用元胞的节点;
S4、确定每个被占用的元胞的邻居元胞;
S5、计算所述布局初始解的造价函数值,得到初始造价值;
S61、根据所述布局初始解从所述多个元胞中选取至少一个元胞,作为至少一个目标元胞;
S62、根据预设元胞状态转移条件、每个目标元胞的当前状态和当前属性,以及每个目标元胞的邻居元胞的当前状态和当前属性,确定每个目标元胞的下一个状态和下一个属性,以及每个目标元胞的目标邻居元胞的下一个状态和下一个属性;
S63、根据预设禁忌条件、所述下一个状态和所述下一个属性,确定布局候选解,并计算所述布局候选解的造价函数值,得到候选造价值;
S7、当所述候选造价值大于所述初始造价值时,采用所述布局候选解和所述候选造价值分别更新所述布局初始解和所述初始造价值,得到更新后的布局初始解和更新后的初始造价值,之后,返回步骤S6继续执行,直至得到用于对所述待布局FPGA进行布局的所述布局初始解;
S8、当所述候选造价值小于或等于所述初始造价值时,返回步骤S6继续执行,直至得到用于对所述待布局FPGA进行布局的所述布局初始解。
2.根据权利要求1所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,每个元胞的状态包括:占用状态和空闲状态;每个处于占用状态的元胞的属性为占用所述元胞的节点,每个处于空闲状态的元胞的属性为空,步骤S61具体包括:
根据所述布局初始解,从所述多个元胞中选取状态为占用状态的一个或多个元胞,作为所述至少一个目标元胞。
3.根据权利要求1所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,步骤S62包括:
S621、为所述至少一个目标元胞对应分配至少一个处理进程;每个目标元胞与每个处理进程一一对应;
S622、在每个处理进程中,根据所述预设元胞状态转移条件从所述处理进程对应的目标元胞的邻居元胞中,筛选出所述目标邻居元胞;
S623、在每个进程中,将所述处理进程对应的目标元胞的当前状态和当前属性,与所述目标邻居元胞的当前状态和当前属性互换,得到所述处理进程对应的目标元胞的下一个状态和下一个属性,以及所述目标邻居元胞的下一个状态和下一个属性。
4.根据权利要求3所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,所述预设元胞状态转移条件包括:所述目标元胞的邻居元胞中的任意一个邻居元胞;或者,所述预设元胞状态转移条件包括以下条件中的至少一个:
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的曼哈顿距离减小;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的数据传输延迟减小;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞的时序余量增加;
在所述目标元胞的状态和属性与所述目标邻居元胞的状态和属性互换之后,所述目标元胞与邻居元胞之间的拥挤程度减小。
5.根据权利要求1所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,步骤S63包括:
S631、根据所述下一个状态和所述下一个属性,确定每个目标元胞的状态转移结果;
S632、对于每个目标元胞,当所述目标元胞的状态转移结果不满足所述预设禁忌条件时,将所述目标元胞的当前状态和当前属性分别更新为所述目标元胞的所述下一个状态和所述下一个属性,将所述目标元胞的目标邻居元胞的当前状态和当前属性分别更新为所述目标邻居元胞的所述下一个状态和所述下一个属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
S633、对于每个目标元胞,当所述目标元胞的状态转移结果满足所述预设禁忌条件时,保持所述目标元胞和所述目标邻居元胞的当前状态和当前属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
S634、根据所述状态属性更新结果,以及所述布局初始解中除所述目标元胞和所述目标邻居元胞之外的元胞的状态和属性,得到所述布局候选解,并计算所述布局候选解的造价函数值,得到所述候选造价值。
6.根据权利要求5所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,每个目标元胞的状态转移结果包括:所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径;所述预设禁忌条件为用于存储预设数量的元胞改变路径的禁忌表;步骤S632具体包括:
获取当前禁忌表;
对于每个目标元胞,当所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径未包含在所述禁忌表时,将所述目标元胞的当前状态和当前属性分别更新为所述目标元胞的所述下一个状态和所述下一个属性,将所述目标元胞的目标邻居元胞的当前状态和当前属性分别更新为所述目标邻居元胞的所述下一个状态和所述下一个属性,得到所述目标元胞和所述目标邻居元胞的状态属性更新结果;
当所述当前禁忌表中存储的元胞改变路径的条数小于所述预设数量时,将所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径添加至所述禁忌表中,得到更新后的禁忌表;
当所述当前禁忌表中存储的元胞改变路径的条数大于或等于所述预设数量时,将所述当前禁忌表中存储时间最早的元胞改变路径删除后,将所述目标元胞的目标邻居元胞的下一个属性的元胞改变路径添加至所述禁忌表,得到更新后的禁忌表。
7.根据权利要求5所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,每个目标元胞的状态转移结果包括以下至少一个:
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间没有关联;
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间具有关联;
所述目标元胞的目标邻居元胞的位置满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞的目标邻居元胞的位置不满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞与所述目标邻居元胞之间的数据流方向变化;
所述目标元胞与所述目标邻居元胞之间的数据流方向不变化;
对应的,所述预设禁忌条件包括以下至少一个:
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间没有关联;
在所述拓扑关系中,占用所述目标元胞的节点与占用所述目标邻居元胞的节点之间具有关联;
所述目标元胞的目标邻居元胞的位置不满足占用所述目标元胞的节点的位置约束条件;
所述目标元胞与所述目标邻居元胞之间的数据流方向变化;
所述目标元胞与所述目标邻居元胞之间的数据流方向不变化。
8.根据权利要求1所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,步骤S4包括:
S41、将周期性边界作为划分邻居元胞的边界条件,采用冯诺依曼型邻居划分方式、摩尔型邻居划分方式或扩展摩尔型邻居划分方式,为每个被占用的元胞划分邻居元胞。
9.根据权利要求1所述的基于元胞自动机和禁忌搜索的FPGA布局方法,其特征在于,步骤S4包括:
S42、根据所述拓扑关系,确定占用每个元胞的节点的邻居节点;
S43、将所述邻居节点所占用的元胞,作为所述节点所占用的元胞的邻居元胞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310896666.9A CN116629190B (zh) | 2023-07-21 | 2023-07-21 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310896666.9A CN116629190B (zh) | 2023-07-21 | 2023-07-21 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116629190A CN116629190A (zh) | 2023-08-22 |
CN116629190B true CN116629190B (zh) | 2023-11-03 |
Family
ID=87610169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310896666.9A Active CN116629190B (zh) | 2023-07-21 | 2023-07-21 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116629190B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117350204A (zh) * | 2023-09-14 | 2024-01-05 | 苏州异格技术有限公司 | 目标网表的生成方法、装置、计算机设备及可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103280817A (zh) * | 2013-05-24 | 2013-09-04 | 武汉大学 | 一种基于禁忌搜索的无功平衡区域确定方法 |
CN103501235A (zh) * | 2013-07-15 | 2014-01-08 | 中国航天标准化研究所 | 基于元胞自动机的复杂系统可用性确定方法 |
WO2015074529A1 (zh) * | 2013-11-19 | 2015-05-28 | 国家电网公司 | 一种模块化多电平换流器的子模块电容电压平衡优化方法 |
CN105005503A (zh) * | 2015-07-26 | 2015-10-28 | 孙凌宇 | 基于元胞自动机的云计算负载均衡任务调度方法 |
CN105608276A (zh) * | 2015-12-24 | 2016-05-25 | 国家电网公司 | 输电线路路径自动选择方法及元胞自动机模型 |
CN106919769A (zh) * | 2017-03-15 | 2017-07-04 | 冷明 | 一种基于多层次方法和赋权超图的层次式fpga布局布线方法 |
CN107239661A (zh) * | 2017-06-05 | 2017-10-10 | 中国电子科技集团公司第五十四研究所 | 一种遥感卫星观测任务规划方法 |
CN107681666A (zh) * | 2017-11-02 | 2018-02-09 | 浙江群力电气有限公司 | 一种农网配电台低电压综合治理方法及装置 |
CN108287932A (zh) * | 2017-01-10 | 2018-07-17 | 上海复旦微电子集团股份有限公司 | 一种基于解析方法的总体fpga自动化布局方法 |
WO2020135378A1 (zh) * | 2018-12-25 | 2020-07-02 | 无锡华润上华科技有限公司 | 一种沟槽型vdmos的元胞版图结构 |
EP4187448A1 (en) * | 2021-11-26 | 2023-05-31 | Fujitsu Limited | Information processing apparatus, information processing method, and program |
CN116341480A (zh) * | 2023-05-29 | 2023-06-27 | 华中科技大学 | 数字芯片布局布线全局优化方法及系统 |
-
2023
- 2023-07-21 CN CN202310896666.9A patent/CN116629190B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103280817A (zh) * | 2013-05-24 | 2013-09-04 | 武汉大学 | 一种基于禁忌搜索的无功平衡区域确定方法 |
CN103501235A (zh) * | 2013-07-15 | 2014-01-08 | 中国航天标准化研究所 | 基于元胞自动机的复杂系统可用性确定方法 |
WO2015074529A1 (zh) * | 2013-11-19 | 2015-05-28 | 国家电网公司 | 一种模块化多电平换流器的子模块电容电压平衡优化方法 |
CN105005503A (zh) * | 2015-07-26 | 2015-10-28 | 孙凌宇 | 基于元胞自动机的云计算负载均衡任务调度方法 |
CN105608276A (zh) * | 2015-12-24 | 2016-05-25 | 国家电网公司 | 输电线路路径自动选择方法及元胞自动机模型 |
CN108287932A (zh) * | 2017-01-10 | 2018-07-17 | 上海复旦微电子集团股份有限公司 | 一种基于解析方法的总体fpga自动化布局方法 |
CN106919769A (zh) * | 2017-03-15 | 2017-07-04 | 冷明 | 一种基于多层次方法和赋权超图的层次式fpga布局布线方法 |
CN107239661A (zh) * | 2017-06-05 | 2017-10-10 | 中国电子科技集团公司第五十四研究所 | 一种遥感卫星观测任务规划方法 |
CN107681666A (zh) * | 2017-11-02 | 2018-02-09 | 浙江群力电气有限公司 | 一种农网配电台低电压综合治理方法及装置 |
WO2020135378A1 (zh) * | 2018-12-25 | 2020-07-02 | 无锡华润上华科技有限公司 | 一种沟槽型vdmos的元胞版图结构 |
EP4187448A1 (en) * | 2021-11-26 | 2023-05-31 | Fujitsu Limited | Information processing apparatus, information processing method, and program |
CN116341480A (zh) * | 2023-05-29 | 2023-06-27 | 华中科技大学 | 数字芯片布局布线全局优化方法及系统 |
Non-Patent Citations (2)
Title |
---|
元胞蚂蚁模型在路径规划中的应用探讨;刘佶鑫;赵英凯;;计算机工程与应用(第25期);全文 * |
基于优先权编码的改进禁忌搜索算法求解TSP问题;王宏斌;刘娜;;物流科技(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116629190A (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11853677B2 (en) | Generating integrated circuit placements using neural networks | |
CN116629190B (zh) | 一种基于元胞自动机和禁忌搜索的fpga布局方法 | |
US6668365B2 (en) | Quadratic programming method for eliminating cell overlap and routing congestion in an IC layout | |
JP2708287B2 (ja) | 回路設計方法 | |
US20170331687A1 (en) | Optimizing the topology of a network with variable traffic demands | |
US20020184607A1 (en) | Practical methodology for early buffer and wire resource allocation | |
US20070245281A1 (en) | Placement-Driven Physical-Hierarchy Generation | |
US20020138816A1 (en) | Placement method for integrated circuit design using topo-clustering | |
Lin et al. | POLAR: Placement based on novel rough legalization and refinement | |
Liu et al. | PSO-based power-driven X-routing algorithm in semiconductor design for predictive intelligence of IoT applications | |
US6694502B2 (en) | Data structure for fine-grid multi-level VLSI routing and method for storing the data structure in a computer readable medium | |
CN107729261A (zh) | 一种多核/众核处理器中Cache地址映射方法 | |
Debacker et al. | Vertical M1 routing-aware detailed placement for congestion and wirelength reduction in sub-10nm nodes | |
US7430699B2 (en) | Trading propensity-based clustering of circuit elements in a circuit design | |
CN112861466A (zh) | 一种布线轨道分配方法、电子设备及计算机可读存储介质 | |
Osman | A tabu search procedure based on a random Roulette diversification for the weighted maximal planar graph problem | |
CN116306463A (zh) | 芯片单元布局优化方法、装置、设备及可读存储介质 | |
Flach et al. | An incremental timing-driven flow using quadratic formulation for detailed placement | |
CN114690782A (zh) | 无人船的航迹规划方法、装置、设备和存储介质 | |
Bultan et al. | Circuit partitioning using parallel mean field annealing algorithms | |
Monteiro | Algorithms to improve area density utilization, routability and timing during detailed placement and legalization of VLSI circuits | |
Monteiro | VLSI Placement Optimization Algorithms | |
Ding et al. | Efficient Three-Dimensional Processor Array Reconfiguration Algorithms Based on Bucket Effect | |
CN116956795A (zh) | 一种基于距离分布的连接信号分组方法 | |
CN116227640A (zh) | 卷烟烟箱排布的优化方法、系统、设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |