确定用于可重配置逻辑器件的至少一个电路的布置的方法和计算机程序与流程

文档序号:14796968发布日期:2018-06-29 19:36阅读:172来源:国知局

示例涉及用于确定用于可重配置的逻辑器件的至少一个电路的布置的方法和计算机程序,更具体但不唯一地,基于力导向布图绘制。



背景技术:

编译流程常常被认为是黑盒。基于输入代码,它们的任务是产生处理描述的可执行版本。该转换对于任何编译编程语言和执行环境都是必要的。因此,编译器通常完成将抽象描述转换成具体机器指令的任务。

然而,程序员频繁地使用该过程用于所有不同种类的编译语言,对结果的影响经常限于常见的编译器选项,例如,优化等级的指定。然而,编译器开发本身是非常有趣的计算机科学学科。影响转换处理的不同可能性的可用性不仅可以提高所得到的实施方案的质量,还改进了开发的处理本身。针对x86处理器,编译器通常提供大量的选项,然而常常仅考虑非常少的选项,像在例如英特尔或GNU的编译器集合中通常使用的“-O3”选项。

在处理较“外来”的架构时,情形类似甚至更加显著。不同的情形和不同的目标需要关于“编译器应采取哪个方向”的灵活的可配置性来将输入描述转换成可执行指令甚至合成的硬件。在为了保证系统的正确功能而必须遵守硬性限制(像不可或缺的定时约束)就特别是这种情况。在这种情况下,FPGA或其他可重配置的硬件装置经常是所选择的架构。硬件中的直接实施与在不需要更换任何硬件部件的情况下更新该硬件实施方案的选项配合,使得这种装置越来越重要,特别是在预期硬件设计的频繁变化的时候或仅在应当产生少量的硬件的时候。制造少量ASIC设计常常远远贵于集成(非常大量生产的)适当的可重配置的等同物。最后,该较通用的芯片仅必须配置有适当的功能。在此上下文中,“布置”是向架构上的合适位置指派经合成的逻辑单元的编译流程的一部分。



技术实现要素:

至少一些实施方式提供了基于至少一个电路的电路图的力导向布图进行的用于可重配置的逻辑器件的至少一个电路的布置。一种用于提供布置的方法基于电路图的节点之间的引力且基于归于节点本身的斥力生成力导向布图,该引力基于节点之间的边。然后可以以结构保存方式将电路图的逻辑块的力导向布图映射在可重配置的逻辑器件的可用逻辑块上,并且可以基于逻辑块在可重配置的逻辑器件上的映射添加另外的块,诸如输入/输出(I/O)块、存储器块、特殊功能块以及块之间的布线。为了进一步改善力导向布图到可重配置的逻辑器件的映射,可以添加局部细化和重复映射,例如,利用固定的I/O块。

实施方式提供了一种用于确定可重配置的逻辑器件的至少一个电路的布置的方法。该方法包括以下步骤:获得与至少一个电路有关的信息。至少一个电路包括多个块和多个块之间的多个连接。多个块包括多个逻辑块。方法还包括以下步骤:基于与至少一个电路有关的信息计算电路图。电路图包括多个节点和多个边。多个节点表示至少一个电路的多个块的至少子集,并且其中,多个边表示至少一个电路的多个块之间的多个连接的至少子集。方法还包括以下步骤:确定电路图的力导向布图。力导向布图基于引力且基于多个块之间的斥力,该引力基于多个块之间的多个连接。方法还包括以下步骤:基于电路图的力导向布图确定多个逻辑块到可重配置的逻辑器件的多个可用逻辑单元(cell)上的布置。

基于电路图的力导向布图确定多个逻辑块的布置可以以减小的计算工作量提供多个逻辑块的布置。基于斥力和引力的力导向布图可以在维持群集之间的距离的同时提供密集互连的逻辑块的聚类,这可以提高多个逻辑块之间的路线的可布线性。

例如,多个逻辑块的布置的确定可以基于由电路图的力导向布图限定的多个节点的节点的排列。例如,多个逻辑块的布置的确定可以基于由电路图的力导向布图限定的多个节点的节点之间的距离(分别为节点的排列)。例如,多个逻辑块的布置的确定可以基于由电路图的力导向布图限定的多个节点的结构保存布置。例如,多个逻辑块的布置的确定将多个节点中的节点排列为节点的两个或更多个群集以及节点的所述两个或更多个群集之间的自由空间。由电路图的力导向布图限定的排列以减小的计算工作量提供逻辑块的改进布置。

例如,力导向布图的确定可以基于(例如,可以使用)多个节点中的节点之间的曼哈顿距离。因为基于曼哈顿状网格的随后布线可以基于曼哈顿距离,所以使用曼哈顿距离确定力导向布图可以提高力导向布图的精度。

例如,电路图的力导向布图的确定可以基于确定多个节点之间的多个弹簧功能(spring function)的能量最小状态。多个弹簧功能可以基于引力与斥力之间的对抗作用。弹簧功能可以提供电路图的力导向布图的改善计算,例如,基于电路图的力导向布图的可并行计算。

例如,多个块中的块的斥力可以随着多个块的块的连接的数量而增大。这可以使得促进群集在电路图想的力导向布图内的出现,并且可以改善所布置的逻辑块之间的可布线性。

例如,多个逻辑块的布置的确定可以包括将多个逻辑块的布置划分为多个分区。例如,多个逻辑块的布置的确定可以包括基于多个分区的分区的局部细化确定多个逻辑块到多个可用逻辑单元上的布置的细化,该局部细化基于优化准则。例如,对分区执行局部细化可以在维持减少的计算工作量的同时进一步改善布置。

例如,电路图的力导向布图的确定还可以包括旋转电路图的中间力导向布图。电路图的中间力导向布图的旋转可以基于多个旋转角度的预测布线距离的评价。电路图的中间力导向布图的旋转可以实现具有改善的特性的逻辑块排列,例如基于块之间的布线。

例如,电路图的力导向布图的确定可以包括至少确定电路图的第一力导向布图并且确定电路图的第二力导向布图以获得电路图的力导向布图。用于电路图的第二力导向布图的引力可以基于路径或连接的关键性或基于松弛(slack),路径或连接的关键性或松弛由多个逻辑块限定并由电路图的第一力导向布图的边的长度限定(影响)。这可以通过考虑从之前布置的定时分析获得的路径的关键性来改善块的布置。

例如,多个逻辑块到多个可用逻辑单元上的布置的确定可以包括基于第一方向将多个逻辑块分割成多个切片,该第一方向基于电路图的力导向布图。例如,多个逻辑块到多个可用逻辑单元上的布置的确定可以包括基于第二方向分配多个切片中的切片的逻辑块,该第二方向基于电路图的力导向布图。将多个块布置为切片可以支持至少逻辑块的结构保存布置。

例如,多个块还可以包括多个输入/输出块。方法还可以包括以下步骤:确定多个输入/输出块到多个可用输入/输出单元上的布置。多个输入/输出块的布置的确定可以基于电路图的力导向布图且基于多个逻辑块的布置。基于多个逻辑块的布置确定I/O块的布置可以支持I/O块的改善分配,并且可以使得能够在不需要I/O块的预定或固定指派或排列的情况下确定用于可重配置的逻辑器件的块的布置。

另选地,多个输入/输出(和逻辑)块的布置的确定可以基于多个输入/输出块的预定布置。电路图的力导向布图的确定还可以基于多个输入/输出块的预定布置。使用预定布置可以使得能够将具有固定扇出的设计中的布置用于例如印刷电路板(PCB)。

例如,方法还可以包括以下步骤:基于多个输入/输出块的布置且基于由多个单元之间的多个连接指示的引力确定(152)电路图的另外力导向布图。方法还可以包括以下步骤:基于电路图的另外力导向布图确定(154)多个逻辑块到多个可用逻辑单元上的布置的细化,这可以进一步改善逻辑块的布置。

例如,电路图的力导向布图可以基于第一距离度量,并且电路图的另外力导向布图可以基于与第一距离度量不同的第二距离度量。使用不同的距离度量可以进一步改善逻辑块的布置,例如,关键路径的传输引起的延迟。

例如,多个输入/输出块的布置的确定可以基于连接到多个输入/输出块的多个逻辑块的布置的逻辑块的质心,这可以改善布线的路线的长度,并且可以减少路线交叉。

例如,方法还可以包括以下步骤:基于多个逻辑块的布置且基于和多个输入/输出块的布置确定多个块之间的多个连接的布线。例如,多个连接的布线的确定可以基于至少一个电路的至少一个关键路径的优选布线。例如,多个连接的布线的确定可以基于预测信号松弛(signal slack),该预测信号松弛基于至少一个电路的关键路径。基于至少一个关键路径、基于路径的关键性和/或基于松弛量确定可以在改善定时关键路径的同时提高可布线性。

例如,多个块还可以包括多个存储器块。例如,方法还可以包括以下步骤:基于电路图的力导向布图且基于多个逻辑块的布置确定多个存储器块到多个可用存储器单元上的布置。例如,多个块还可以包括多个特殊功能块。例如,方法还可以包括以下步骤:基于电路图的力导向布图且基于多个逻辑块的布置确定多个可用特殊功能块到多个可用特殊功能单元上的布置。在多个逻辑块的布置之后布置存储器块和/或特殊功能块可以进一步减小多个块之间的连接的布线的导线长度。

例如,连接多个可用逻辑单元的导线区段的利用可以在不考虑实际资源限制的情况下由所有连接的最短路径布线来估计。产生的多个可用逻辑单元之间的导线区段的过度使用可以提供可用逻辑单元的布置的可布线性的估计,这提供对架构上的布线资源的利用的经评价的测量。

例如,方法还可以包括以下步骤:在对所述能够重新配置的逻辑器件的布线架构没有容量约束的情况下确定(190)模拟最短路径路由以估计布置的可布线性,多个逻辑块的布置的确定、多个输入/输入块的布置的确定、多个存储器块的布置的确定以及多个特殊功能块的布置的确定中的至少一个还可以基于布置的所估计的可布线性。通过对于所估计的可布线性调节布置,可以确定具有改进的可布线性的布置,例如使用来自以下引入的“FieldPlacer拥塞驱动迷宫布线器”的测量结果。可布线性还可以通过在确定力导向布图时调节斥力来提高。

例如,多个可用逻辑单元可以以三维网格排列。电路图的力导向布图可以与基于引力和斥力的电路图的三维力导向布图对应。将方法应用于三维图可以使得能够以改进的导线长度来三维布置多个块。

实施方式还提供了一种具有程序代码的计算机程序,该程序代码用于在计算机程序在计算机、处理器或可编程硬件部件上执行时执行根据前述权利要求中任一项的方法。

实施方式还提供了一种钻石形的可重配置的逻辑器件。实施方式还提供了具有对角布线路径的可重配置的逻辑器件。

附图说明

下文中将仅用示例的方式且参照附图描述设备和/或方法的一些示例,附图中:

图1例示了用于确定可重配置的逻辑器件的至少一个电路的布置的方法的实施方式的流程图;

图1a例示了用于确定可重配置的逻辑器件的至少一个电路的布置的方法的实施方式的流程图;

图2描绘了弹簧嵌入器过程中的迭代处理;

图3示出了具有输入/输出块和可配置的逻辑块的FPGA架构的一部分;

图4示出了所得到的力导向布图的布图;

图5a和图5b示出了CLB到具有中心分配的架构上的嵌入;

图6例示了基本的FieldPlacer工作流程的整个工作流程;以及

图7描绘了围绕FieldPlacer的统计框架。

具体实施方式

现在将参照例示了一些示例的附图更完全地描述各种示例。在附图中,为了清楚起见,可以夸大线、层和/或区域的厚度。

因此,虽然另外示例能够具有各种修改和另选形式,但附图中示出了其一些特定示例且随后将详细地描述它们。然而,该具体实施方式不将另外的示例限于所描述的特定形式。另外的示例可以覆盖落在本公开范围内的所有修改、等同物以及替代。同样的附图标记贯穿附图的描述指代同样或类似的元件,这些元件在提供相同或类似功能的同时在与彼此比较时可以相同或以修改形式来实施。

将理解,在元件被称为“连接”或“耦接”到另一个元件时,元件可以直接连接或耦接或经由一个或更多个介入元件。如果两个元件A和B使用“或”组合,则这应被理解为公开所有可能的组合(即,仅A、仅B以及A和B)。用于相同组合的另选措辞是“A和B中的至少一个”。这同样适用于多于2个元件的组合。

这里用于描述特定示例的目的的术语对于另外示例不旨在限制。每当使用单数形式(诸如“一”、“一个”以及“所述”)且仅使用单个元件时既不被明显也不被隐含定义为强制,另外的示例还可以使用复数个元件来实施相同功能。同样,在功能随后被描述为使用多个元件来实施时,另外的示例可以使用单个元件或处理实体类实施相同的功能。还将理解,术语“包括”在使用时指定所述特征、整数、步骤、操作、处理、动作、元件和/或部件的存在,但不排除一个或更多个其他特征、整数、步骤、操作、处理、动作、元件、部件和/或其组的存在或增加。

除非另外限定,否则所有术语(包括科技术语)在这里以示例所所属的领域的、它们的普通含义来使用。

FPGA(现场可编程门阵列)是由于它们的能量效率和高性能而在许多硬件区域中变得越来越重要的可重配置的处理器(可重配置的逻辑器件)。现场可编程门阵列(FPGA)是一种其中逻辑电路可以被编程的集成电路。和用于传统计算机硬件的程序不同,描述语言可以描述单个通用块(例如,可配置的逻辑块(CLB))和特殊块的连接性。因此,描述语言还被称为配置。不同于其他可编程电路,例如ASIC-专用集成电路,FPGA可以允许在操作期间改变该配置。在FPGA中,配置可以设置在SRAM(静态随机存取存储器)中。近年来,它们的通用性和传播由于新的编程框架和初学者友好、廉价的开发者硬件而强烈地增加。然而,直到几年前,可以用专用硬件描述语言(例如,VHDL(甚高速集成电路硬件描述语言))来对这些处理器编程(除了一些研究项目之外),但存在方案使得FPGA作为计算加速器可用于用OpenCL(开放计算语言)甚至用原生C代码进行的编程。

在需要快速信号处理的情况下,例如,用于作为数字滤波器的一部分的数字信号处理或用于快速傅里叶(Fourier)变换,可以使用FPGA,并且然而可以使用硬件的快速重配置,例如,实施安全相关更新。协议实施,诸如以太网MAC(媒体访问控制)层、数字视频信号的编码、数据加密和纠错方法中的部分,是通常应用的领域。由此,在伴随着在快速和专用硬件中的同时实施的以高发展速度为标志的领域中,FPGA可以是所选择的架构。然而,在创新的情况下,传统ASIC可以被作为硬件更换,在使用FPGA时芯片可以由通过软件更新来简单地重新配置。由此,FPGA可以将产品的快速开发和随后简单且廉价的维护组合起来。此外,FPGA经常可以用作用于在后期进入生产的ASIC的开发平台。在这种开发中,可以频繁执行编译过程。此时,耗时的编译过程的加速会是重要的。

因为用于FPGA的程序可以在硬件中执行而不是在运行时间由处理器执行的二进制代码,所以用于可重配置的处理器的编译过程可以与标准处理器的过程不同。为此,各种可配置基本单元可以在FPGA板上可用,各接收由编译过程进行的特定处理命令且互连。在该编译过程内,程序代码可以被划分成可以在可用的基本单元中实施的代码部分。随后,板上的单元可以与合适的硬件元件关联。这些元件然后可以连接到彼此。这个布置和组网的过程被称为“布置和布线”。该过程内的重要目标是减少总体导线长度。在这点上,可用的线的数量可以是受限制的。然而,各种其他对象函数也是可以的,例如,支持快速/容易走线的布置。

各种项目可以展示FPGA甚至作为高性能并行计算器适于特殊应用领域(在用于数据加密标准DES的代码破译的项目中)。一些公司可以提供基于FPGA的并行计算器系统,其特别适于与语音识别(例如,呼叫中心)有关的任务和生物信息学(基因组组装)中,并且可以在这些领域中广泛采用。

目前,在所谓的集成“片上系统”(SoC)中的FPGA例如连同ARM(高级精简指令集计算机)处理器一起可能特别常见。为了开发操作配置,可能需要用于将电路的描述映射到给定FPGA的部件上(布置),并且确定各种部件的连接性(布线)。在这两个过程中,可以采用优化算法来在一方面占用尽可能少的空间并减小连接的最大路径长度(因为该长度与提供结果所需的时钟数量可以有直接联系)。

FPGA的硬件制造商也可以供应用于它们的硬件的专有开发工具。只是关于这里使用哪些算法很少公开,特别是在布置和布线中。这同样也适用于第三方供应商,诸如Mentor Graphics和Altium。Altera至少提供经由API将自己的算法用于布置和布线的可能性。

此外,多伦多大学的“通用布置和布线”(VPR)框架提供一种开源编译环境。这里,配置初始可以在FPGA模拟器中测试。目标FPGA的架构可以在VPR中描述,以随后对于其进行编译。该工具可以适合于用于市场上不可获得的FPGA模型的研究和开发等。然而,模型可对于很少的常见FPGA架构可用,导致几乎无例外地无法忽视使用专用工具来进行应用项目。

仅仅创建较简单的配置就非常耗时,并且可能依赖多个因素。这里可以假定几分钟到几小时的时段,借此,大多数时间花费在布置和布线阶段中。单独精确解决布置问题可以为NP困难问题(可归于二次指派问题(QAP))。相反可以使用启发式方法。

其他布置器可以基于以随机但许可的方式在板上初始分配元件并执行模拟退火方法,其迭代地互换相同基本类型的元件,并且由此可以尝试减小走线长度。虽然这可以将元件平凡地嵌入在网格中,但通常非常慢,并且结果会(仅)例示局部最优。

在独立于用于确定解的矩阵的相邻结构而根据基于力的方案来确定逻辑块的布置时,这种系统可以在没有任何另外限制即所有元素位于同一点中的情况下总是具有平凡解。这种排列可以将边长度减小至零,但可能不是期望的结果。为了找到问题的“合理”解,可以固定外部I/O节点。假定各逻辑单元直接或间接连接到这样固定的I/O节点中的至少一个I/O节点(因为逻辑单元否则在芯片外将不有助于有用解),可以使用固定的I/O节点来计算该系统的(唯一)解。然而,在此上下文中,在已定义的坐标上的I/O节点的特定固定可能对解具有显著影响。在基本上自由选择I/O节点的排列的情况下(例如,在芯片的原型开发中),在改善结果中包括I/O节点可以进一步改善总体导线长度,并且可以促进布线。由于这些方法限制,其他的数值方案可能本身不能做到这一点。

基于问题的连续数值解,可以将逻辑单元指派给目标架构上的对应狭缝。对于FPGA,该问题可以使用递归划分策略来解,并且可以在允许元件的走线的同时包括芯片元件的交叠。其他方案可以尝试关于总体走线长度来改善整个系统。这可能不是必定有意义的,因为可能(也)经常追求其他目标。其他基于力的方案可以排他地处理同构FPGA架构。对出现的方程组求解的时间可以较短,特别是对于稀疏图;图越密,解的明显性可以增加的越大,例如基于O(n3)的复杂度。

至少一些实施方式可以基于根据基于力的模型来分配元件,其中节点中心彼此排斥,而连接的节点彼此吸引。在该模型内,可以追求整个系统的最小能量状态。

例如可以关于大的图使用这种模型和能量最小化,因为这引起“平衡的”排列,并且该方法可以允许用于高效执行的大并行性。该方法还可以减小整体边长度。可能发生在下一步骤中的布线可能往往受这种分配有利地影响。方法可以直接应用于三维图,由此可以应用于具有三维块排列的将来的FPGA。

与已建立的方法相比,实施方式可以允许具有良好结果的较短的编译时段。由此,可以减少FPGA上的程序和/或电路的开发时间。至少一些实施方式可以提供与可用方法的至少一些差异:例如,根据至少一些实施方式的方法可以全局改善包括I/O块在内的系统。例如,根据至少一些实施方式的方法可以包括直接且快速的布置策略,其可以使用基于力的解中的现有距离/排列来实现短边长度与“走线友好”之间的良好平衡。至少一些示例可以优化整个系统,因为除已连接的块之间的引力之外,还可以模拟(所有)节点对之间的斥力。由此,系统不会“崩溃”,并且可以维持了节点之间的距离,这特别是对于强连接的区域,可以产生比在使用没有斥力的数值方案时更一致的结构。结果可以表明,该方法连同所提出的嵌入策略可以提供短边长度与“走线友好”(可布线性)这两个目的之间改善的平衡。

图1例示了用于确定可重配置的逻辑器件的至少一个电路的布置的方法的流程图。例如,可重配置的逻辑器件可以与现场可编程门阵列或可编程逻辑器件(PLD)对应。例如,可重配置的逻辑器件可以包括可用单元的(二维或三维)网格。例如,可用单元的网格的单元可以包括逻辑单元、输入/输出单元、存储器单元以及特殊功能单元(例如,乘法器或数字信号处理器)中的一个。例如,可用单元的网格可以包括行和列。例如,网格的列可以包括相同类型的可用单元,例如,逻辑单元、存储器单元或特殊功能单元。例如,可用输入/输出单元可以以条块(bank)排列。可用输入/输出单元的条块可以在网格的周边(周边I/O)以行和/或列排列,或者排列为网格内的行或列。

例如,(至少一个电路的)电路可以包括输入/输出块、存储器块以及特殊功能块中的至少一个和逻辑块,它们由多个连接互连作为已连接部件。例如,至少一个电路可以与至少一个已连接部件对应。

方法包括以下步骤:获得110与至少一个电路有关的信息。至少一个电路包括多个块和在多个块之间的多个连接。多个块包括多个逻辑块。

例如,与至少一个电路有关的信息可以包括用硬件描述语言编制的源代码,或至少一个电路的网表,硬件描述语音例如Verilog或VHDL。例如,获得110与至少一个电路有关的信息可以读入包括与至少一个电路有关的信息的至少一个文件,或者经由(编程)接口接收与至少一个电路有关的信息。例如,多个块可以与网表的多个实例或硬件描述语言的各种模块的多个实例对应。例如,多个连接可以基于网表的多个网或基于硬件描述语言的源代码的输入/输出。例如,多个逻辑块可以与由可重配置的逻辑的多个可用逻辑单元表示的逻辑门或逻辑门的积累对应。例如,多个逻辑块中的逻辑块可以由查找表来表示。例如,与至少一个电路有关的信息可以包括与输出值有关的信息,这些输出值与用于多个逻辑单元的对应输入值有关。例如,多个逻辑块中的至少一个逻辑块可以被映射到一个查找表。多个块还可以包括多个输入/输出块、多个存储器块以及多个特殊功能块中的至少一个。

方法还包括以下步骤:基于与至少一个电路有关的信息计算120电路图。电路图包括多个节点和多个边。多个节点表示至少一个电路的多个块的至少子集。多个边表示至少一个电路的多个块之间的多个连接的至少子集。

例如,计算120电路图可以使用多个块(例如,多个逻辑块或多个逻辑块和其他块(例如,多个输入/输出块))的至少子集作为节点和多个连接(例如,多个逻辑块中的逻辑块之间和/或多个逻辑块中的逻辑块与多个输入/输出块中的输入/输出块之间的连接)的至少子集。例如,计算120电路图可以将多个块中的块之间的多个连接组合成多个块之间的单个连接,其例如具有(例如,关于关键性/松弛的)共享/组合特性。例如,计算120电路图可以以计算机可读格式例如文件格式提供与电路图有关的信息,以输出到绘图应用。

方法还包括以下步骤:确定130电路图的力导向布图。力导向布图基于引力且基于多个块之间的斥力,该引力基于多个块之间的多个连接。

例如,多个连接中的连接可以引起多个块之间的引力,并且多个块(例如,多个逻辑块或多个逻辑块与多个输入/输出块)的至少子集可以包括斥力。例如,由多个块中的块展示的斥力可以作用于多个块中的其他块。例如,确定130电路图的力导向布图可以基于确定多个节点之间的多个弹簧功能的能量最小状态。多个弹簧功能可以基于引力与斥力之间的对抗作用。例如,多个块中的块可以由到多个块中的其他块的连接所引起的引力吸引到多个块中的其他块,并且可以由斥力从多个块的其他块的子集排斥。例如,确定130电路图的力导向布图可以基于一个块附近(例如,在该块的预定距离内)的块的斥力。另外或另选地,确定130电路图的力导向布图可以基于对于多个块中的块的子集(例如,群集)积累的斥力。对于块的子集的斥力可以在块的子集的块的质心处积累。例如,当确定块与不在该块附近内的块之间的弹簧功能时,可以使用在块的子集的质心处的块的子集的所积累的斥力,而不是使用块对块的斥力。例如,为了实现块群集之间的另外距离,多个块中的块的斥力可以随着多个块中的块的连接的数量而增大。

例如,确定130力导向布图可以基于多个节点中的节点之间的曼哈顿距离。另选地或另外,确定用于力导向布图的至少一个中间力导向布图可以基于多个节点中的节点之间的欧几里得距离和切比雪夫距离中的一种。

减小距离的平方和可以从关于距离的“欧几里得”角度明显,并且可以具有以下优点:已知各种数值方法来对所得到的具有二次目标函数的方程组求解。FPGA上的边长度可以基于曼哈顿距离来计算。这一点的原因可能是走线元件的正交“网格架构”。然而,曼哈顿距离的函数无法微分;由此,在数值求解器中的直接应用不可以。

例如,确定130电路图的力导向布图可以包括至少确定电路图的第一力导向布图和确定电路图的第二力导向布图以获得电路图的力导向布图。用于电路图的第二力导向布图的引力可以基于路径的关键性,该路径的关键性由多个逻辑块且由对所嵌入的电路图的第一力导向布图的定时分析限定。例如,路径可以包括多个块中的至少两个块和至少两个块之间的至少一个连接。路径的关键性可以基于与该至少两个块的处理时间以及该至少一个连接对应的第一力导向布图的边的长度,其。第一力导向布图的边的长度可以指示(并影响)由穿过第一力导向布图的边的信号引发的适当信号传播延迟。

例如,至少多个可用逻辑单元(例如和多个输入/输出单元)可以以三维网格排列。电路图的力导向布图可以与电路图的三维力导向布图对应。

例如,确定130电路图的力导向布图还可以包括旋转132电路图的中间力导向布图旋转(例如,如图1a所示)。例如,在使用曼哈顿距离范数时,旋转132可以使中间力导向布图旋转45°。例如,电路图的中间力导向布图的旋转132可以基于针对多个旋转角度的预测布线距离的评价。例如,对于欧几里得距离度量,旋转132可以在多个(例如,10个)步中将中间力导向布图旋转0°到90°,以评价最佳旋转角度。

方法还包括以下步骤:基于电路图的力导向布图确定140多个逻辑块到可重配置的逻辑器件的多个可用逻辑单元上的布置。

例如,多个逻辑块的(第一)布置的确定140可以基于由电路图的力导向布图限定的多个节点中的节点的排列。例如,多个逻辑块的布置的确定140可以基于由电路图的力导向布图限定的多个节点中的节点的结构保存布置。例如,多个逻辑块的结构保存布置可以保存在电路图的力导向布图与多个逻辑块的布置之间的逻辑块的在第一方向(例如,水平方向)和/或在第二方向(例如,垂直方向)上的顺序。例如,多个逻辑块的布置的确定可以将多个节点中的节点排列为节点的两个或更多个群集以及节点的两个或更多个群集之间的自由空间。

例如,多个逻辑块的布置的确定140可以基于由电路图的力导向布图限定的多个节点中的(与逻辑块对应的)节点的排列。例如,在多个逻辑块的布置的确定140之后的逻辑块的(初始)排列可以将多个节点中的节点的水平和/或垂直顺序保存/投影到多个逻辑块中的已布置的逻辑块的水平和/或垂直顺序。

例如,在示例性实施方案中,多个逻辑块到多个可用逻辑单元上的布置的确定140可以包括基于第一(例如,垂直或水平)方向将多个逻辑块分割成多个切片,该第一方向基于电路图的力导向布图。例如,基于第一方向的多个切片可以与第一方向的坐标的多个随后范围(例如,从0...2,2.01...4,4.01...6等范围的y坐标)对应。例如,拟合多个随后范围中的范围的多个节点的节点可以被指派给多个切片中对应的切片。例如,多个可用逻辑单元可以沿第一方向和第二方向(例如,水平或垂直)方向以(二维)网格排列。例如,基于第一方向的多个切片可以群集在多个可用逻辑单元的网格的第一方向的中心周围。另选地,基于第一方向的多个切片可以根据在电路图的力导向布图的第一方向上的节点的相应距离排列在网格的第一方向上。另选地,基于第一方向的多个切片可以跨网格的第一方向等距地排列。多个逻辑块的布置的确定140还可以包括基于第二方向分配多个切片中的一个切片的逻辑块,该第二方向基于电路图的力导向布图。例如,多个切片中的切片的逻辑块可以包括第一方向上的相同坐标。例如,多个切片中的切片的逻辑块可以根据在电路图的力导向布图的第二方向上的节点的相应距离排列在网格的第二方向上。另选地,多个切片中的切片的逻辑块可以群集在多个可用逻辑单元的网格的第二方向的中心周围。另选地,多个切片中的切片的逻辑块可以跨网格的第二方向等距地排列。

例如,多个逻辑块的布置的确定140还可以包括将多个逻辑块的布置(例如,和多个输入/输出块的布置、多个存储器块的布置和/或多个特殊功能块的布置)划分146成多个分区。例如,划分146可以递归地划分多个逻辑块。例如,分区可以包括另外的(子)分区。例如,划分146可以将多个逻辑块划分成包括最大量的逻辑块(例如,2或3个逻辑块)的分区。例如,划分146可以对应于多个逻辑块的布置的不同大小的分区的框架化。例如,为了局部细化逻辑块的布置,可以逐步地缩小用于局部细化的分区。多个逻辑块的布置的确定140还可以包括基于多个分区中的分区的局部细化确定148多个逻辑块到多个可用逻辑单元上的布置的细化,该局部细化基于优化准则。例如,布置的细化的确定148可以基于包围盒成本函数、(总/平均)导线长度、关键路径延迟或过度使用(作为优化准则)中的至少一个。例如,布置的细化的确定148可以包括以初始系统温度0进行的多个逻辑块的至少子集的模拟退火。

例如,多个块还可以包括多个输入/输出块。例如,输入/输出块可以包括输入容量、输出容量或输入/输出容量。方法(例如,如图1a所示)还可以包括以下步骤:确定150多个输入/输出块到多个可用输入/输出单元上的布置。例如,多个可用输入/输出单元可以以(四个)周边输入/输出条块、基于列的输入/输出条块或输入/输出网格排列。多个输入/输出块的布置的确定150可以基于电路图的力导向布图且基于多个逻辑块的布置。例如,多个输入/输出块的布置的确定150可以基于在连接到多个输入/输出块的多个逻辑块的布置之后的逻辑块的质心。例如,确定150可以将多个输入/输出块布置在连接到多个输入/输出块的已布置的逻辑块的质心附近。例如,多个输入/输出块的布置150可以基于多个输入/输出块与多个逻辑块(在多个逻辑块的(第一)布置之后)之间的连接的预测(总/平均/最大)导线长度的减小,例如,基于多个输入/输出块与多个逻辑块之间的连接的关键性。例如,多个输入/输出块的布置的确定150可以包括已布置的输入/输出块的成对交换,例如,基于多个输入/输出块与多个逻辑块之间的连接的预测(总/平均/最大)导线长度的减小。例如,如果多个可用输入/输出单元以(四个)周边输入/输出条块排列,则多个输入/输出块的布置的确定150可以包括将已布置的输入/输出块从输入/输出条块移动到相邻的周边输入/输出条块。

另选地,多个输入/输出块的布置的确定150可以基于多个输入/输出块的预定布置。电路图的力导向布图的确定130还可以基于多个输入/输出块的预定布置。例如,与多个输入/输出块的至少子集对应的节点在电路图的力导向布图的确定130期间可以固定到预定位置,并且与多个逻辑块对应的节点(以及与多个输入/输出块的其他输入/输出块对应的节点)可以关于/基于多个输入/输出块的至少子集的固定位置来确定。

例如,如图1a进一步所示的,方法还可以包括以下步骤:基于多个输入/输出块的布置且基于由多个单元之间的多个连接指示的引力确定152电路图的另外力导向布图。例如,另外力导向布图可以将固定位置用于与多个输入/输出块对应的节点,并且可以关于/基于与多个输入/输出块对应的节点的位置确定与多个逻辑块对应的节点的位置。方法还可以包括以下步骤:基于电路图的另外力导向布图确定154多个逻辑块到多个可用逻辑单元上的布置的细化。例如,细化的确定154可以基于电路图的另外力导向布图与多个逻辑块的布置的确定140类似地来实施。另选地,细化的确定154可以包括通过朝向由电路图的另外力导向布图指示的对应节点的位置移动块来调节之前确定140的多个逻辑块的布置。例如,电路图的力导向布图可以基于第一距离度量,并且电路图的另外力导向布图可以基于与第一距离度量不同的第二距离度量。例如,第一距离度量和/或第二距离度量可以为欧几里得距离、曼哈顿距离度量以及切比雪夫距离度量中的一种。

例如,多个块还可以包括多个存储器块。方法还可以如图1a进一步所示的包括以下步骤:基于电路图的力导向布图且基于多个逻辑块的布置确定170多个存储器块到多个可用存储器单元上的布置。例如,多个可用存储器单元可以以单元网格的列排列在可重配置的逻辑器件中。例如,存储器块的布置的确定170可以在逻辑块的布置的确定140之后和输入/输出单元的布置的确定150之后来执行。例如,多个存储器块的布置的确定170可以确定多个存储器块中的存储器块到在连接到存储器块的(逻辑)块的质心附近(例如,最靠近质心)的多个可用存储器块中的可用存储器块上的布置。例如,多个存储器块的布置的确定170可以按由它们到其他块(逻辑或输入/输出)的连接的数量指定的顺序来布置存储器块,例如从具有多个存储器块中的存储器块的连接的最大数量的多个存储器块中的存储器块开始。例如,多个存储器块的布置的确定170可以与多个输入/输出块的布置的确定150类似地来实施。

例如,多个块还可以包括多个特殊功能块。方法还可以如图1a进一步所示的包括以下步骤:基于电路图的力导向布图且基于多个逻辑块的布置确定180多个特殊功能块到多个可用特殊功能单元上的布置。例如,多个可用特殊功能单元可以以单元网格的列排列在可重配置的逻辑器件中。例如,存储器块的布置的确定180可以在逻辑块的布置的确定140之后和输入/输出单元的布置的确定150之后来执行。例如,多个特殊功能块的布置的确定180可以确定多个特殊功能块中的特殊功能块到在连接到特殊功能块的(逻辑)块的质心附近(例如,最靠近质心)的多个可用特殊功能块中的可用特殊功能块上的布置。例如,多个特殊功能块的布置的确定180可以按由它们到其他块(逻辑或输入/输出)的连接的数量指定的顺序来布置特殊功能块,例如,从具有多个特殊功能块中的特殊功能块的连接的最大数量的多个特殊功能块中的特殊功能块开始。例如,多个特殊功能块的布置的确定180可以与多个输入/输出块的布置的确定150类似地来实施。

例如,多个输入/输出块、存储器块和/或特殊功能块的布置的确定150、170和/或180还可以包括将多个输入/输出块、存储器块和/或特殊功能块的布置划分为多个分区(例如,连同多个逻辑块的划分146一起)。例如,划分可以递归地划分多个输入/输出块、存储器块和/或特殊功能块。例如,分区可以包括另外的(子)分区。例如,输入/输出块、存储器块和/或特殊功能块的划分可以将多个输入/输出块、存储器块和/或特殊功能块划分成包括最大量的逻辑块、输入/输出块、存储器块和/或特殊功能块(例如,2或3个逻辑块、输入/输出块、存储器块和/或特殊功能块)的分区。例如,输入/输出块、存储器块和/或特殊功能块的划分可以与多个输入/输出块、存储器块和/或特殊功能块的布置的不同大小分区的框架化对应。例如,为了局部细化输入/输出块、存储器块和/或特殊功能块的布置,可以逐步地缩小用于局部细化的分区。多个输入/输出块、存储器块和/或特殊功能块的布置的确定150、170和/或180还可以包括基于多个分区中的分区的局部细化确定多个输入/输出块、存储器块和/或特殊功能块到多个可用输入/输出单元、存储器单元和/或特殊功能单元上的布置的细化,该局部细化基于优化准则。例如,多个输入/输出块、存储器块和/或特殊功能块的布置的细化的确定可以基于包围盒成本函数、(总/平均)导线长度、关键路径延迟或过度使用中的至少一个(作为优化准则)。例如,多个输入/输出块、存储器块和/或特殊功能块的布置的细化的确定可以包括以初始系统温度0进行的、多个输入/输出块、存储器块和/或特殊功能块的至少子集的模拟退火。

例如,方法如图1a进一步所示的还可以包括以下步骤:基于(例如,任意类型的)多个逻辑块的布置且基于多个输入/输出块的布置确定160多个块之间的多个连接的布线。例如,布线的确定160可以基于连接网格,该连接网格包括将多个逻辑块(和多个输入/输出块、多个存储器块以及多个特殊功能块中的至少一个)连接的多个水平和垂直段。例如,多个水平和垂直段可以各具有预定数量的连接的容量。例如,布线的确定160可以基于连接网格上的最短路径布线。例如,可以采取多个连接的理想化/模拟布线的确定160来测量网格上的布线资源的过度使用。例如,多个连接的布线的确定160可以用于基于任意类型的多个逻辑块的实际布置来评定用于布线的区域的使用程度。例如,多个连接的布线的确定160可以基于优选穿过优选地较少使用的区域的路径的优选布线。例如,包括在至少一个关键路径中的连接可以基于较短路径布线来布线,并且不被包括在至少一个关键路径中的连接可以基于最短路径布线或基于另选路线来布线,例如,基于多个水平和垂直段的已用容量。例如,多个连接的布线的确定可以基于预测信号松弛,该预测信号松弛基于至少一个电路的至少一个关键路径。例如,具有较低预测信号松弛的连接可以基于最短路径路线来布线,并且具有较高预测信号松弛的连接可以基于最短路径路线或基于另选路线来布线,例如,基于多个水平和垂直段的已用容量。

例如,方法还可以包括以下步骤:在没有对可重配置的逻辑器件的布线架构的容量约束的情况下确定190所模拟的最短路径布线,以估计布置的可布线性。即使例如没有(对水平和垂直段的)容量约束,所模拟最大路径布线的确定190也可以与路线的确定160类似地来实施。所模拟的最短路径路线的确定190可以基于FieldPlacer拥塞驱动迷宫布线器。例如,多个逻辑块的布置的确定140、多个输入/输入块的布置的确定150、多个存储器块的布置的确定170以及多个特殊功能块的布置的确定180中的至少一个还基于布置的所估计的可布线性。例如,方法还可以包括以下步骤:基于布置的所估计的可布线性调节多个逻辑块的布置的确定、多个输入/输入块的布置的确定、多个存储器块的布置的确定以及多个特殊功能块的布置的确定中的至少一个。例如,可以基于布置的所估计的可布线性重复多个逻辑块的布置的确定140、多个输入/输入块的布置的确定150、多个存储器块的布置的确定170以及多个特殊功能块的布置的确定180中的至少一个。

方法的至少一些示例可以直接且在没有任何复杂近似函数的情况下使用曼哈顿范数(以及其他范数)作为优化目的/准则。连同总体走线长度,至少一些示例还可以允许各种其他组合目标函数(作为优化准则)。关于这点,可以引入可以基于理想化的走线方案来评价“走线友好”的范数。

根据至少一些实施方式的方法可以布置具有一直到如现今在FPGA中越来越多使用的复杂DSP(数字信号处理器)的各种块类型的特别异构的FPGA设计。

根据至少一些实施方式的方法可以包括O(n log(n))复杂度。实施方式可以提供用于异构可重配置的处理器架构的灵活且自由的力导向布置方法。

至少一些实施方式的方法可以被命名为FieldPlacer方法。FieldPlacer方法可以基于力基图布图并考虑引力和斥力来在预定义FPGA架构(例如,具有各种狭缝类型的整体网格)上布置用于异构FPGA设计的芯片元件(例如,多个块)。虽然数值法可以对于稀疏图快速找到解,但FieldPlacer方法可以展示总体上低程度的复杂度O(n log(n))。

根据各种实施方式的方法可以在从一开始不固定元素的情况下(通过采用弹簧嵌入器模拟而不是采用数值求解器并与许多其他方案相比)生成总体FPGA设计的全局布图。可以应用许多不同的目标函数(短边长度、走线友好、短关键路径、小的“半周长包围盒”范数等)来进行用于异构FPGA的布图的目标优化。此外,由弹簧嵌入器模拟计算的力的均衡可以直接使用无法被整体微分的曼哈顿度量来进行。

总的说来,根据至少一些实施方式的方法借助基于绘图的方案可以提供用于随后扩展的直观访问。在其他方法中,在I/O元件的固定之前(仅)可以采用它们的优化排列。

根据至少一些实施方式的方法可以基于弹簧嵌入器,基于弹簧嵌入器中的各种类型的距离度量、通过嵌入整体网格中进行的连续力基布图的仿真、和/或一般而言地由具有引起和斥力的系统以及在力的均衡中的解进行的包括所有类型的逻辑块的全局优化。

根据至少一些实施方式的方法可以用作用于FPGA的任意转换工具中的布置方法,但还可以在其他可重配置的处理器架构(PLD)中采用。此外,方法基本上也可以用于创建用于非可重配置的芯片(例如,ASIC)的布置。

至少一些实施方式,例如,FieldPlacer,背后的主要构思可以是使在过去数十年内在图绘制领域中、具体为力导向图绘制领域中、取得的进步恢复至FPGA布置的连同新指派方法和另外研究一起的当代领域。此工作中中的所提出方法可以追求几个目标。在下文中,示出了方法FieldPlacer的示例性实施方式。在下文中,术语最小化和最大化用于表达对之前存在的问题的解的改进,并且不意指绝对值,例如,使值或值的集合最小化或最大化与(例如,使用启发法)改进值对应,然而,所发现的解可能不是绝对最佳解,而是足够好的解。

用形成相等尺寸的设施和先验地限定的位置进行的芯片布置(或布图规划(floorplanning))的问题可以由贝克曼和库普曼在1957年在运算研究的数学领域中介绍的二次指派问题(QAP)来正式化。QAP是来自范畴“设施定位问题”的一般布图规划的特殊情况。它可以被算式化为如下:

定义:(二次指派问题(非正式的))。给定一组n个设施F和n个相应的位置L,连同两个位置之间的距离和必须在每对设施之间运输的流(有时为重量)的定义。找到使反过来作为距离和流程的乘积的成本之和最小化的、设施到位置的指派。

作为对QAP求解的基本元启发法,可以实施简单局部搜索(LS)方法。局部搜索方法取得作为输入的初始解因此使得它称为第一解scur并因此成为到目前为止找到的最佳解s*。该局部搜索方法然后生成具有元素scur’的scur的完全邻域,并且在邻域中寻找相继为新的scur的最佳元素,并且如果其改进s*,则还作为新的s*。重复该过程,直到找不到改进邻居的邻域出现为止。算法然后停止并返回s*作为最优解。可能的修改将是选择第一改进scur,而不是选择完全邻域中的最佳解。这将总体上减小邻域中的搜索时间。用于最大化问题的类似的局部搜索方法例如是“爬山”算法。局部搜索算法单调迭代到局部最优。

模拟退火(SA)是基于在统计力学领域中模拟物理系统退火的行为的启发式优化技术。实际上,方法初始地被柯克帕特里克(Kirkpatrick)等人应用以对微处理器布图(布图规划)问题求解,并且在对于组合优化中的许多不同问题开始运行。

为了取得基本构思的有形印象,可以想象金属板被加热然后再被冷却。通过加热该板,金属的晶体结构中的原子不规则性被提供能量,以逃离不利情形,因此加强了材料的结构。凭借降低的温度,越来越多的排列由于能量的缺乏而变得固定,最终达到较稳定的冷状态。

遵循来自统计力学的根本构思,对状态scur移动至相邻状态s’cur的可能性进行估计的转移概率可以由借助忽视波尔兹曼常数的波尔兹曼分布来描述

其中

Δc=c(Scur)-c(S'cur)

热力学温度是热力学的主要参数。热力学温度还被称为温度的绝对测度,并且由热力学第三定律来定义,该热力学第三定律将理论最低温度宣布为空。在该“绝对零度”环境中,物质的微粒成分具有最小运动,并且无法变得更冷。

Δc测量两个状态在成本方面的差异,或更精确地为当前解的相邻解的绝对改进。如果这种相邻解s’cur与到目前为止的最佳已知解(scur)相比是改进(具有较低成本的解),则由其遵循Δc=c(Scur)-c(S'cur)>0。由此,因为热力学温度t由定义为正,所以方程中的指数为正并且这意味着总是接受这种改进互换。如果Δc<0,则由此断定现在,需要定义阈值r∈[0,1]以决定对于哪些概率这种非改进互换将被接受。因为应将Δc映射在概率上,

重要的是注意,转移概率是严格正的被称为“非零转移概率”,使得任何非改进互换不管其劣化强度和温度如何也潜在地可以被接受(成本的退化越大且系统越冷,则越不那么可能)。

模拟退火从较高的热力学温度开始,确定随机阈值r∈[0,1],并且计算针对在初始解的缩小邻域中的解的转移概率如果则执行到s’cur的移动,否则不执行。因此,模拟退火方案的特殊特性是除了所有改进移动之外,还随机地接受非改进移动(如果移动的概率超过随机参数r),这给予了该方法逃脱局部最优的良好机会。系统越暖,非改进移动越被接受。对于各邻域随机计算新的阈值r。

力导向图布图是至少一些实施方式的基础。

定义:图G=(V,E)是具有节点(顶点)V和连接(边)E的非定向图。因此,其保持对于u,v e V有效。图G=(V,E)在其边没有方位的情况下被称为非定向的。由此,边(u,v)和(v,u)是相同的。该工作通常在这种非定向图上运行(除非相反陈述)。图G=(V,E)在至多一个边存在于该图中的任一对节点之间的情况下被称为简单的。具有节点V和边E的图G=(V,E)在E包含该图中各可能的节点到节点连接的情况下被称为完整的。非定向完整图精确地包含个边。当且仅当(u,v)∈E,节点v∈V是非定向图G=(V,E)中的节点u∈V(v∈N(u))的邻居。节点v和u然后被称为相邻。图G=(V,E)中的节点v在它精确地具有δ(v)个邻居时具有度数δ(v)。具有节点V和边E的图G=(V,E)在不存在两个节点u、v e V使得G不包含将u和v作为端点的边的路径的情况下被称为连接的。(不完整)图在不存在去除一组(k-1)个顶点则断开图的情况下具有连接性。该图然后被称为k连接的,或更精确地被称为k顶点连接的。(二维)图G=(V,E)的嵌入是节点到平面(具有二维坐标)和边到平面曲线的指派。G的嵌入在没有两个边彼此交叉的情况下被称为平面的。图G在G的平面嵌入存在的情况下被称为平面的。图G的嵌入的画布(canvas)是包含G的所有节点在内的最小矩形。

为了实现各节点处于其邻居的质心中的情形,所有节点的x和y坐标可以满足方程:

基本“质心”构思通过迭代地计算作用在各自由节点上并使该节点沿该方向移动(可能仅“一点点”)的引力F(vi),可以应用于具有至少3个固定节点的任意图。在已经这样移动了图的所有自由节点一次之后,可以再次再次地重复该过程,直到已经执行了固定数量的迭代为止或直到系统到达稳定状态为止(形式上为直到所有力向量几乎为零为止)。

使整体边长度(或边力)最小化的没有固定节点的系统将导致同一位置到图中的各点的指派。代替将节点固定以获得反作用力,边可以被认为是将节点彼此连接的具有理想长度l的机械螺旋弹簧。理想边长度为弹簧的“零能量长度”,由此为弹簧在其未弯曲均衡状态下的长度。

这种线性弹簧的力可以由虎克定律来估计,该虎克定律声称了将弹簧从其自然松弛状态拉伸或压缩所需的力与弹簧的当前长度(换言之,弹簧端点之间的距离d)与其零能量长度l的差ΔL呈线性。如果d>l,则弹簧处于拉伸状态,并且差ΔL=(d-l)大于零,而ΔL在弹簧出于压缩状态时变得小于零。弹簧的该力强度还可以通过引入依赖于弹簧材料的常数ca来形式化。

fa=ca·ΔL=ca·(d-l)

虎克定律通过线性近似“真实”力来量化借助弹簧作用的力的强度。然而,明显的是,该假定在“远离”零能量状态的情况下无法为真。一方面,任何材料在被太猛烈的拉伸时将断裂,并且另一方面,不可以将物理弹簧压缩到长度零。

代替使用该线性近似,伊德斯提出对数关系,像在方程中,对于远远隔开的点对在实际上表现的较好,因为线性近似在在这种情形下“太强”(参见Peter Eades.A Heuristic for Graph Drawing)。在下文中,pu表示节点u的位置(定位)。

假设pu和pv为欧几里得空间中的两个点,并且假设l(u,v)为两个点之间的弦的零能量长度。然后,在伊德斯模型中两个连接点之间的引力的强度可以近似为b:

零能量长度对于各弹簧独立,而伊德斯将其建模为全系统常数。

如果两个相邻点的距离d等于相应弦的零能量长度l,则对数中的比为一,并且因此,力强度fa变为零。因此,弹簧处于其“松弛”状态,并且没有力作用来压缩或拉伸它。

除了用于作用在节点pv上的力的强度的模型(近似)之外,需要力的方向来计算因此的力向量。假定借助pu和pv的连接作用在点pv上的力作用在(pu-pv)的方向上,并且假定ca=1。然后,力向量可以被计算为:

如果d>1,则弹簧处于拉伸状态,因此往往进一步收缩本身以达到零能量状态。由此,在(pu-pv)的方向上作用在pv上的力强度fa在这种情况下为正。然而,如果d<1,则弹簧处于压缩状态,因此往往进一步推动其端部分开以达到零能量状态。由此,在(pu-pv)的方向上作用在pv上的力强度fa在这种情况下为负。

因此,d和l的比的对数类似于虎克的线性假设对力强度定性地建模,但是其不同地对力强度量化。为了更精确,对数在量化用于远远隔开的节点对的力“强度”时较“缓和”。

除了由已连接节点之间的弦引入的引力之外,伊德斯通过引入对节点的斥力使得(仅)系统中的非相邻节点彼此排斥来扩展模型。构思是将力模拟为静电带电微粒的斥力Frep。因此,所得到的斥力可以被假定为由于库仑定律(还被称为库仑平方反比定律)而与成比例。

假定两个点pu和pv在图中不连接且因此不遭受借助连接弹簧的相互引力。然后,这两个节点之间的斥力的强度可以由以下来量化:

所得到的从节点u出发的作用在节点v上(且因此沿方向(pv—pu))的斥力的向量由以下算式来计算:

两种类型的力向量(吸引和排斥)可以由力强度(fa和fr)与力的方向(向量)(分别为(pu-pv)和(pv-pu))的乘积来计算。

所提出的定义fa、fr以及形成近似力的一个示例模型。该模型通常可以被改变。

凭借两个主要力源,整个系统可以能够收敛于平衡力的稳定状态,其不是针对所有节点的单个点且不需要节点的任何固定。该一般化且扩展的模型包含非相邻节点之间的斥力(以及已连接节点的零能量长度),作为已连接节点的引力的“反”。

由此,即使图是完整的(发生在没有斥力的系统中),只要弹簧的零能量长度l不为零,它也不塌陷到单个点。

如果斥力和引力彼此抵消且如果因此所有已连接节点之间的成对距离d与期望的零能量长度对应,则作用在节点v上的总力强度降低为零。这种力模型由于其真实世界对应物而经常被称为“弹簧和磁铁的系统”。

用伊德斯力模型进行的朝向均衡状态的迭代处理在算法弹簧嵌入器(Algorithm Spring Embedder)中总结。在随机定位所有节点以获得初始配置之后,开始使系统中的力最小化的迭代过程。在各迭代中,根据之前定义的力模型计算作用在各个节点上的斥力和引力。通过对相关力求和并用被称为用于引力的刚劲因数Aattr和用于斥力的排斥因数Arep的参数潜在地缩放力的和来对于各节点v得到所产生的力F(v)。在对于所有节点完成这些计算之后,各节点v沿所产生的作用力F(v)的方向移动“一些”(更正式地为比例δ)。因此,由于节点更新的位置,用作用在节点上的新的力重复整个处理。如果已经执行固定次数的这种迭代,则处理终止,这返回所有节点的最终位置。

在各迭代中,需要计算由弹簧(本身表示图的|E|边)引起的引力和在各非相邻节点对(图中的各对节点但为已连接的各对节点:|V|2-|E|)之间的斥力。

终止准则例如可以更适应性且动态地算式化,例如,通过系统中的所有作用力的和∑(v∈V)F(v)一落至特定预定义的(小)阈值以下(因为这指示均衡状态)或在已经执行最大次数的迭代时就停止。

弹簧嵌入器模型背后的一般原理是,一方面,已连接的顶点应被布置为靠近彼此,在另一方面,顶点通常不应被布置为太靠近彼此。一个单个迭代的复杂度为O(|V|2)的事实使得伊德斯的方案不适用于较大的图。节点的初始随机定位另外可以阻止算法达到良好的局部甚至全局最优。对该方法的改进可以是(仅)计算由节点邻域中的节点产生的作用在节点v∈V上的斥力。为此,图可以被布置在画布上,并且遵循富莱特曼(Fruchterman)和莱因戈尔德(Reingold)(F&R),邻域现在通过用等距离网格划分用于绘制的该画布来构造(托马斯(Thomas M.J.Fruchterman和Edward M.Reingold,Graph drawing by force-directed placement)。现在,对于作用在节点v上的斥力的计算,(仅)考虑v自己和八个相邻单元中的节点。

图2描绘了弹簧嵌入器过程中的迭代处理。绘制节点周围的圆202,以指示在其紧密空间附近作用的节点的斥力。从随机初始布图204开始,弹簧力(边)吸引(attr)远离彼此的已连接节点。在处理期间,节点必须穿过具有较高斥(rep)力的区域,以克服局部最优。这在较大隔开的已连接节点的强引力的情况下是可以的。重要的是注意,在该处理中,节点无疑可以卡在这种情形下。因此,期望从良好的初始布图开始,以尽可能多的避免这种情形。这样做的一个策略是用于所提出的实施方案并说明的多级布图。在已连接节点之间的所有距离差不多平衡时,通过将所有节点对排列为较一致地隔开,斥力变得较有影响。迭代描绘了以初始图204开始、具有低斥力但具有高引力的图206、具有增大的斥力但具有减小的引力的状态208、基于减小两个力的进一步变换210、两个力的进一步减小212以及最终的稳定均衡状态214的示例性时间序列。

用于该工作的稍后部分的另一个重要的观察是制图没有真实的方位。该嵌入的任何旋转具有所有节点之间的相同量的作用力,其为形式上基于L2范数应用于力计算方法中的事实。

理想边长度l:为了使用本工作中提出的所有技术,重要(但通常不强制)的是将用于期望图布图的零能量边长度引入到力导向布图中的已连接节点之间的距离转向。虽然已经在之前章节中引入这些值,但以下段落应给出它们在力模型中的影响的稍微更深的洞悉。

考虑作为已建模为以下方程的具有引力的阿奇乌尔(Hachul)和容格(Jünger)的力模型。

如果边比其零能量长度长(d>l),则作用的引力为正,而它在边的长度小于其零能量长度(d<l)时变为负。对于d=l,对数的自变量确切地为一,尽管对数为零而表示没有作用的引力。已连接节点的所有距离与它们的零能量长度精确对应的状态可以被称为引力均衡。因此,零能量长度可以被看作引力强度的阻尼器或放大器。

除零能量长度在力模型中的该一般并入之外,FM3还包含后处理过程,该后处理过程通过用极度降低的排斥因素Arep和增大的刚劲因素Aattr的对嵌入器的几个额外的迭代来非常准确地重新调节边的期望长度。在这些假定下,在主模拟之后执行几乎忽视了斥力的少量改进迭代。因此,FM3布图的边的最终长度与先验地期望的用户定义的边长度相当精确地对应。由于零能量长度,即使没有斥力,已连接节点也将仍然保持对彼此的最小距离。

对于该工作而应用、扩展并调整的力导向布图法是快速多级别多极法(FMMM或FM3)。Stefan Hachul在其在计算机科学主席教授Michael Jünger处的博士工作中开发并实施了该FMMM或FM3,并且FMMM或FM3可实际用于已经提及的图绘制框架OGDF中。然而,在该框架中并入的力导向布图算法可借助实施方案中非常常见的界面由任何其他布图算法(甚至不是必须为力导向布图法)容易地交换。由FM3使用的力模型为:

Fres(v)=λrep·Frep(v)+λattr·Fattr(v)→0目标力均衡

该模型仅是力的近似计算的一个示例。其他模型通常也可以用于FieldPlacer。力(仅)在两个节点不处于同一位置中时计算(这在处理整数坐标时特别重要),否则忽略力。然而,实施了机制来避免这种情形。在计算作用在各节点v上的引力和斥力之后,作用在节点v上的所产生的力Fres(v)被积累,并且节点因此沿该方向移动。

用于斥力的近似的四叉树:为了克服Fruchterman和Reingold的基于相当静态的网格的算法的缺点来加速斥力的计算,像“减小的桶四叉树”的树数据结构可能被用于另外的改进。在以下段落中,提出了如何创建数据结构且如何将该数据结构用于快速斥力计算的基本构思。

为了创建图G的四叉树数据结构,可以递归地将图的画布分割为四个(相等大小的)子单元,各单元表示位于单元中的一组节点。对于各单元递归地重复该过程,直到(仅)包含恒定(小)数量的节点K,在极端情况下仅为单个。如果K>1,则树的叶因此可以包含超过一个节点。这种叶被称为桶,并且对应的四叉树更精确地被称为具有桶容量K的“桶四叉树”。粗糙化过程中的各所创建的单元变为四叉树中的节点,并且因为对于通过该构造的单元具有至多四个非空的子,所以四叉树中的各节点具有至多四个子。在第i个这种递归之后,图的当前“粗糙化”被称为图到阶段Ci的粗糙化,并且它由四叉树的级别i来表示。在数量n个递归之后,各单元包含至多K个节点,并且构造终止。由此,树的叶包含图的节点(的桶)。每当单元包含与其子相同的节点时,换言之,每当单元(仅)具有一个子时,可以对于该单元“跳过”该阶段,并且技术上的两个单元变成因此被称为“减小的(桶)四叉树”的树中的一个。如果一系列这种节点形成路径(vi,...,vp),则该整个路径收缩且用简单边(vi,vp)代替。

使用该四叉树来加速斥力计算的简单近似方案是由位于单元中所有节点的质心处的已累积群集力来表示各四叉树节点的斥力。考虑图中的节点v和“远离”v的节点的云。

不是计算从该云的节点中的每个节点作用到v上的斥力,总力可以由群集力来近似。在该云中存在大量节点时,这可以大幅减少针对v的计算量。然而,这种近似引入了与基础力模型有关的不准确(误差)。此外,该云的作用力越大,这种不准确的影响越大。因为FM3中的斥力与两个节点的距离的平方成反比,所以斥力的影响且由此所引入的误差的影响随着距离快速减小。无法决定性地清楚回答在距节点的哪个距离来近似力的问题。力被近似计算的越早,可以节省越多的计算,但该误差的影响越大。

为了构造地计算作用在节点v上的所有斥力,算法可以开始于树的根处,其具有初始力Frep(v)=0。现在,按照用于递归步骤的以下规则来访问所有(至多四个且至少两个)子u1、u2、...:如果v是源于四叉树子节点(或单元)的子树中的叶,则up访问up的所有子。如果v不在源于子节点Ui的子树中,则以下三个情况是可以的:

■如果子ui是叶,则将从单元Ui作用在v上的斥力增加到Frep(v),

■如果ui不是叶但距v“足够远离”(s/d<t),则将从单元ui中的云作用在v上的近似群集力增加到Frep,

■否则访问所有子并类似地前进。

t越大,算法在遍历树的同时停止的越早,并且必须执行的计算越少,但所引入的误差也越大。再次,它是选择“良好”参数t的平衡做法。虽然该近似通过减少每个节点计算的有影响的力的数量可以加速斥力计算,但四叉树的构造引入潜在地有关的另外开销。因此,为了得益于以所说明的方式进行的四叉树的使用,需要是图中的节点数足够大。对于三维图,类似构造得到八叉树表示。

用于斥力的准确且快速近似的多极方案:多极可以用于近似电荷在电势场中的相互作用,而不是用于计算所有成对的相互作用。多极方案相当复杂,并且其应用于对于所提出的方案不是重要的。单极近似也将工作,并将加速斥力的计算,而多极方案较准确。此外,对于此工作中所提出的方案没有修改斥力计算。多极近似的目标是通过分解一大组电荷对电势场中的其他电荷的影响来描述该影响,然而,更多这种基础部件的并入提高了近似的准确性。电势场中的相互作用的这些基础部件为单极的、双极的、四极的、八极的等。通过考虑仅几个这种部件可以保持确定近似的工作量小。基础部件的数量的“正确”选择再次是在近似的成本(在时间方面)与准确度之间的折中问题。

克服弱的初始布置的分层多级别方案:如同对于其他迭代技术,用于力道向图布图的一个关键挑战是方法行为及其结果对节点的初始布置的依赖。虽然直接方案在不需要随机化的初始坐标的情况下计算布置,但它们不全面适用,而且不如例如弹簧嵌入器算法那样可定制。然而,初始节点的完全随机化布置会导致需要非常长的时间来达到稳定均衡状态,或者(或者并且)导致产生的低质量的局部最小。

图绘制领域中的多级别方案的主要目标是针对用于布图阶段创建节点(或节点的组)的良好初始布置。具体地,常常使用的方案是创建图G的(潜在递归地)粗糙化表示G1,G2,...,Gn并且因此按照从Gn开始的相反顺序对图布图,同时将对较粗糙的表示进行的改进转移到较细化的表示。即使在像FM3处理高效的布图方案时,这种较小的(粗糙化)图的布图比细化的甚至原始表示G(分别为G0)的布图花费显著少的时间。

用于该工作中的多级别策略是Hachul在FM3中实施的一个。不是针对粗糙化使用匹配,Hachul提出了其“太阳-行星-月亮”模型,其类似于星系和太阳系。构思如下工作。整个图G被认为是被划分成一组太阳系的星系,各太阳系包含中央对象,该中央对象被称为系统的太阳。图中太阳的直接邻居被称为行星,并且这些行星可以具有被称为月亮的邻居。为了使邻居的特性、或更一般地为节点到彼此的距离、形式化,需要被称为图理论距离的度量。给定(已连接的)图G(V,E),则两个节点u、v∈V之间的图理论距离dg(u,v)是G中u与v之间的最短路径上的边数量。

为了标记表示G中的太阳的节点,创建所有节点V的“工作副本”V’。从V’拾取随机节点v,并且将其在V中的“双胞胎节点”标记为太阳节点。现在从V’删除到v具有图理论距离dG(u,v)<3的所有节点u。执行该过程,直到没有节点留在V’中为止。之后,仅用初始的一组节点V来执行另外的步骤。

注意,所有太阳节点这样来标记,各太阳节点v的直接邻居u∈V被标记为v的太阳系的行星。因为在将v标记为太阳之后从潜在太阳的集合排除了dG(u,v)<3的所有节点,所以其后没有v的直接邻居变为太阳。因此,可以在没有任何冲突的情况下执行行星指派。最后,剩余节点是星系中的月亮并且具有到星系中的太阳中的至少一个太阳的小于3的图理论距离(通过构造)。这种月亮中的每一个现在被指派给最近的行星及其太阳系。

在这样划分图Gi之后,通过将所有太阳系塌陷到在较粗糙的级别(i+1)上表示该系统的单个点来创建粗糙化的图Gi+1。由Gi+1中连接节点的各边表示Gi中连接不同太阳系的所有路径(太阳系间路径)。由此,甚至两个太阳系之间的多个边或路径可以塌陷到一个。为了将零能量长度(该长度对于该方案可以非常重要)从图Gi的一级别继承到较粗糙的表示Gi+1,具有太阳sk和si的两个已塌陷太阳系之间的在Gi+1中的各边(sk,si)取得为在Gi中的sk与si之间的所有路径的平均零能量长度的零能量长度。在此上下文中,路径的零能量长度是路径上的所有边的零能量长度的和。由该构造,关于边长度的一般愿望从一个粗糙化级别继承到下一级别。

FM3还能够创建具有用户定义的节点大小的图画。为了在粗糙化步骤中考虑这种大小,较粗糙的级别(i+1)上的各节点取得为级别(i)上的其祖先的节点大小的和的期望节点大小。

如已经提及的,粗糙化阶段中的整个处理创建图G的较粗糙表示,直到创建了具有预定恒定数量的节点的图Gn为止。该最大粗糙化的表示Gn随后利用力导向方法来布图。之后,将Gn-i中明显的所有行星和月亮布置为靠近它们各自的太阳并因此已经靠近它们的最终位置。然后,由力导向方法对Gn-1布图。重复该处理,直到达到G0=G为止。粗糙表示上的布图由于该表示中非常少量的节点而可以非常快速地来执行。然而,图变得越细化,则必须对越多的节点布图。然而,因为所插入的节点已经靠近它们期望的均衡状态位置,所以较细化的级别上的模拟相对快速地收敛。

关键是在图的较粗糙表示上非常准确地执行布图。在G的任何粗糙级别上引起的错误在较细化的级别上传播,因此影响较大数量的节点。这种误差将创建下一级别上的初始布图,其为局部最小值且难以逃脱或因此逃脱是耗时的。

如果对较细化的级别上所应用的迭代的数量不大到至足以“修正”这一点,则布图可以以弱的局部最优结束。因为在较细化的级别上计算斥力和引力要花费远远较长的时间,所以在细化级别上“理顺”这种情形的处理花费非常多的时间。相反,在较粗糙级别上应用多个迭代由于小数量的节点和边而非常廉价(在时间方面)。由于在较粗糙图上的多个廉价迭代以及(由于良好的初始布置而)渐渐减少的在较细化且“较昂贵”的图上的多个迭代,用于粗糙化级别i上的迭代次数的快速成长函数可以被应用,以通过在少量时间内避免局部最小值来获得良好的最终布图质量。

该多级别策略问题的实际结构,以创建良好的初始布置,从而避免弱的局部最优。与例如在模拟退火方法开始时的强扰动相比,它是更“精确”且更问题相关的技术。这是为何使用多级别策略来提高期望芯片布置的质量和运行时间的原因之一。

所选择的太阳节点的节点度数直接影响处理中的“粗糙化的量”。太阳系包含的行星和月亮越多,在将系统塌陷到下一级别上的单个节点时的缩小越强。由此,用于快速粗糙化的策略可以是根据太阳候选的度数(相邻节点的数量)渐渐减少地对V’中的太阳候选排序。如果列表按升序来排序,则可以实现适度的粗糙化。

在多级别处理中,通过避免四叉树创建开销,为了更好的性能甚至可以确切地计算非常粗颗粒的表示上的斥力。

FM3不仅并入了许多机制来产生其中边长度与期望零能量长度匹配的布图,还并入了类似地指派不同期望节点大小的技术。至少一些示例可以增大具有到其他节点的许多连接(高节点度数)的这种节点的节点大小。这样,可以主动地减少这种繁重“加载”的节点周围的区域中的应力。

之前的章节提出了FM3的良好性能和高准确性的主要来源。它基于对隔开节点的斥力计算的急剧减少,组合以基于多极的准确近似、以及得到节点的良好初始布置的快速的多级别方案。该多级别方案(主要)还通过以“低成本”(在需要的时间方面)较精确地对较粗糙的图表示布图来摆脱最终解的质量对初始排列的依赖。

存在大量可用的力导向图布图方案,这些方法不仅在力模型上不同,还在于它们获得布图的主要技术上不同。除了基于具有和不具有多级别机制且例如针对斥力使用不同近似方案的迭代弹簧嵌入器构思的方案外,(例如,Thomas M.J.Fruchterman and Edward M.Reingold的Graph drawing by force-directed placemen中的The Grid Variant Algorithm(GVA)、Pawel Gajer,Michael T.Goodrich以及Stephen G.Kobourov的Multi-dimensional Approach to Force-Directed Layouts of Large Graphs中的Graph Drawing with Intelligent Placement(GRIP)、以及Pawel Gajer和Stephen Kobourov的Grip:Graph drawing with intelligent placement、David Harel和Yehuda Koren的A fast multi-scale method for drawing large graphs中的A Fast Multi-scale Method(FMS))之外,还存在使用由图的接近性结构构造的矩阵(例如,拉普拉斯矩阵)的特征向量和特征值的“直接”方法(例如Tutte的基于求解线性方程组的一个方案)。

另选地,可以使用OGDF中由Gronemann开发并实施的快速多极多级别嵌入器(FastMultipoleMultilevelEmbedder)方案。与Hachul的FM3实施方案相比,其包括不同的四叉树空间划分和良好分离的对分解(WSPD)。与由“简单”单极进行的斥力的近似组合,该方案的执行可以比FM3快一个数量级(甚至更多)。然而,为了在所提出的框架中直接应用该方案,可以添加零能量长度的识别和用于这些的已提及的后处理。通常,布图处理可以由另外的参数调谐或其他力和力近似模型来加速或细化。因为FM3的实施方案提供许多有用机制并且提供速度与准确性之间非常良好的平衡,所以它用于该框架。然而,所提出的框架提供交换图布局过程的灵活结构。

首先,可以提供用于异构FPGA的力导向布置例程,以满足现今的FPGA架构的需要,例如基于用包括引力和斥力的力系进行的迭代弹簧嵌入器模拟(例如,FM3)。针对高准确度的快速模拟,期望建立并入了对斥力的多级别粗糙化和多极近似的方法。

许多可用的分析布置方法的特性是可以固定周围I/O焊盘,以创建找到所有内部节点的最优坐标的唯一可解方程组。至少一些实施方式在没有节点的任何固定以较全局地改进系统的情况下可以是可使用的,因为节点的初始固定可能不利地影响产生的布置的质量或者如果对其预先计算,则是非常耗时的。总之,I/O位置和内部逻辑的位置相当大地彼此影响,使得所有节点可以在情形允许的情况下(例如,在原型设计阶段)被宣布为自由。

这两个事实、固定节点到预限定位置的实际指派的影响以及在斥力不存在情况下的不平衡分布可以强调全局且完全自由的弹簧嵌入器方案的应用。(由于通用接口而)可以在工作流程内由任何绘图软件提供的绘图直接使用可以生成直观进入点和灵活的访问,作为由其他研究者支持的该领域中的将来开发的基础,例如来自一般图绘制领域。具体地,芯片设计到基础图的抽象化将被使用来创建具有不同目标的布置策略,例如,导线长度驱动、定时驱动或可布线性驱动布置甚至它们的加权组合。另外,具有时间与质量之间的不同折中的各种运行模式可以可用(依赖于设计的开发状态),并且芯片上元件的主要分配也可以是可调节的(对于不同的需求)。

最后,系统可以具有模块化设计,使得它可以将它的零件与其他方案组合使用。因为许多之前的分析布置器需要固定的I/O焊盘,所以从该工作流程的快速全局优化例如还可以用于获得用于这种分析方法的良好初始I/O分布。

布置和布线工具VPR可以嵌入到综合的Verilog到布线(VTR)CAD流程中,并且基本上需要两个输入文件来运行FPGA编译链。

首先,其需要可以以网表形式实施到硬件中的设计。在由Odin执行的详尽步骤中,使用伯克利逻辑交换格式将设计的高级Verilog描述变换成文本文件。随后由合成步骤取得该文件,以进行硬件独立的优化等。

第二,其可以要求目标硬件架构的描述。VPR期望以可扩展标示语言(XML)文件对架构进行主要描述。存在由VTR框架提供的已经用于测试FieldPlacer框架的多个示例架构,例如,对于一些说明的而示例性使用的“压缩架构”。该异构架构包括CLB(具有可以用作一个6-LUT或两个5-LUT的可断裂LUT(查找表))、可断裂乘法器、可配置的存储器以及I/O焊盘。综合架构的每第八列是乘法器块的列,并且在具有偏移的情况下,每第八列构成存储器块。因为两个特殊块类型大于普通LUT,所以它们跨多个行。因为乘法器是可断裂的,所以36×36乘法器还可以用作两个独立的18×18乘法器,或者这些18×18乘法器再次可以用作两个9×9乘法器。存储器块可以由它们的字长来断裂。I/O块围绕架构,而各I/O块保持可以用作输出或输入的8个I/O引脚。

VTR中的架构假定基于来自Xilinx和Altera的真实架构来进行,更多细节参见VTR7.0的出版物。然而,所提出的方法不在任何意义上限于这种架构。另外的特殊块类型以及不同的CLB或I/O类型在将来可以容易地添加到模型。

VPR首先读取设计描述并将其包装(或分组)成在架构上可用的基本块(I/O、CLB、MEM、MUL)。此后,已知各类型的多少资源对于设计是需要的。可以自动创建包含充足数量的所有这种基本块的具有前面提及的特性的架构,而不是人工传递FPGA的大小。该自动模式用于该工作的所有标尺(benchmark)运行中。在真实实施方案中(与这种模拟对照),常常选择整个FPGA的合适子区域。

以开始通过简单的对切确定自动得到的呈正方形的N×N架构的大小。如果存在所有类型的足够资源,则将尺寸N0二等分为N1=N0/2(否则将其加倍),并且例程随后检查所有异构类型的足够资源在该大小的架构上是否可用。如果不,则检查N2=(N0+N1)/2,依次类推。一发现使得各类型的足够资源可用的合适的大小,将架构上所有块的位置输出到被命名为FPGAArch的适当数据结构。

在布置例程开始之前,适当的架构大小由用户人工定义或由在之前章节中介绍的基于对切的例程来找到。总之,自动的基于对切的方法保证了所包装的设计可以在所定义的硬件架构中来实施。如果用户人工定义大小,则这一点被检查并且如果大小不足够,则程序不前进。

整个架构(且因此还有布置)可以在包含逻辑块和布线资源(RR)的二维网格(FPGAArch[x][y])上表示。该网格上的各元素包含类型信息(CLB、I/O、MEM、MUL或RR)。I/O块另外可以包含该I/O块中可用的I/O焊盘的数量(例如,对于各I/O块为八)。布线导线例如补充地存储它们的通道宽度。通常,架构上的各块由在其中心的二维基准点来表示。I/O块中的所有(例如,八个)I/O焊盘由它们块的中心(x,y)坐标连同区分块中的不同焊盘的另外的z坐标(例如,从0至7的范围内)来表示。

除了CLB坐标在FPGAArch阵列中的一般可用性外,FPGA的各行中的CLB的数量稍后存储在单独阵列中以用于快速创建适当分配。在示例性架构中,这个架构上CLB的分配在12个CLB行中的每个行中包含8个CLB。异构块(特殊功能块)(MEM和MUL)由中心基准点来表示。

VPR中的主要范数是包围盒成本范数,其考虑所有网的半周长包围盒大小和FPGA的区域中的可用平均通道宽度。VPR中的实施方案还包括估计盒内的导线交叉,并且基于之前命名的包围盒的参数来评定布线中的随之发生的导线延长。基于对导线交叉的该估计(该估计基本上使用与Steiner树有关的统计),根据依赖于网中的端的数量的因数q(i)缩放包围盒。

VPR中的模拟退火方案将该范数用于其成本函数中。由此,VPR中的优化同时考虑总体导线长度(通过半周长包围盒大小)和可布线性(通过通道宽度和对交叉的估计)。

VPR包括估计实际布线之后及其之前的关键路径延迟的方法。如果该范数在布置之后来使用并且因此在布线之前,则(当然)需要粗略估计导线延迟,因为具体布线轨迹是未知的。该范数估计了设计中的时钟周期的最大延迟,因此估计有效运行它的最大可能速度。

VPR中的布线器与探路者(PathFinder)协商拥塞延迟算法类似地尝试通过应用迭代迷宫布线器来用架构上的可用布线轨迹来对网的所有连接进行布线。如果之前的布线在布线架构的限制下不成功(因此在下一布线迭代中优先化关键连接),则网被撕碎并在各布线迭代中用已调节参数(在所应用的默认配置中为定时驱动)重新布线。重复该处理,直到创建了满足所有指南(包括一些另外成本函数)的成功布线为止,或直到已经执行了预定义数量(该默认设置中为50)的布线迭代为止。在布线处理之后,报告用于各导线区段上的布线轨迹(它们的占用)的数量。因此,最大通道占用(MCO)是由最终布线在各导线区段上使用的通道的最大数量。如果布线满足架构的要求,则占用小于针对各导线区段的通道宽度。否则,其占用超过指南,并且在给定架构上将不可实现。

最大通道占用可以作为评定特定布线中的拥塞和布置的可布线性的范数。连同布线之后的在最后实现的关键路径延迟一起,可以评定设计的布图的总质量。

连同所提出的FieldPlacer方法一起,引入了另外的范数来评定朝向不同目的的布置的质量。所有这些范数在考虑了架构上的全局布线的模型上操作。通常,存在用于执行基础力导向布图的具有任意坐标的初始图表示GD和具有受约束整数坐标的在缝隙指派之后的架构上的嵌入式表示

VPR中的包围盒成本范数包括通过网的半周长包围盒尺寸来近似总体导线长度。由于在布置阶段连接的实际布线是未知的,所以该近似是合理且良好的适应且相当准确。然而,将用于该工作中的力导向布图方案倾向于通过引力使设计的所引入的图模型的目标力均衡中的点到点导线长度和最小化,同时通过斥力保持节点之间的距离。由此,实施了另外的范数,其在设计的图表示的边上迭代并且合计已连接节点之间的所有距离。由于布线架构的特性,距离作为曼哈顿距离来测量。因此,图中的导线长度可以由以下方程来导出:

在将图嵌在芯片的整体网格上之后,架构的各节点接收其指派的坐标。由此,可以用在对应的图上类似地计算芯片上的缝隙上的点到点导线长度。注意,图中的连接信息(ED)不由布图或嵌入改变。

VPR使用半周长包围盒近似,不仅因为实际布线是未知的,还因为包围盒更新可以比在位置变化之后重新计算节点的所有连接长度快地执行。这对于VPR布置器是极其重要的,因为模拟退火方法需要在每个迭代中频繁重新计算距离。不是在图的优化处理内,而是在图的优化处理之后应用点到点导线长度,以取得对所实现的质量的最终评价,使得耗时“可忽略”。

不仅只有产生布图中对导线长度的估计对布置起作用。其他准则甚至可能更相关,尽管不是容易地可评估。例如,将经常较期望使关键路径长度最小化,而不是使总体导线长度最小化。然而,在模拟退火处理中,每个迭代中对关键路径长度的估计会太耗时。由此,这种复杂估计通常在布置之后执行一次。

拥塞的近似:除了导线长度之外,VPR的布置器还包括对导线交叉的统计评价,以讲退火处理中的可布线性考虑在内。通常,评定可布线性是困难的任务,但由于可布线性影响稍后的布线时间和质量,所以期望它的近似来对不同的布置进行比较。

FieldPlacer拥塞驱动迷宫布线器:由于VPR应用迷宫布线器迭代地以对网进行布线,用“FieldPlacer拥塞范数”仿真了该行为。实际上,逻辑块之间的各点到点连接的布线通过经由波传播和后向跟踪以搜索最短路线来模拟。通常存在多个最短路线(涉及曼哈顿距离)。构思是在各布线通道中无限数量的布线轨迹的假定下进行一个布线尝试。另外,在最短路线上的可能单元中(贪婪地)选择具有最小的当前拥塞的布线单元。此后,通过合计所有布线轨迹上的拥塞来测量所有布线导线的过度使用。下文中将例示该处理。

图3示出了具有I/O和CLB的FPGA架构的一部分。在该示例中,必须找到从已标记的CLB(源302)到已标记的I/O(目标304)的连接。因此,波从源点展开,标记每个布线单元回到源的曼哈顿距离。因为整个架构不仅仅由布线单元构成,还包含逻辑单元,所以展开的波具有孔。然而,由于模型中的逻辑和布线资源的规则网格,返回至源的最短轨迹对于每个连接可用。波被展开直到以最终的曼哈顿距离n到达目标点为止。处理的该部分被称为波展开。

此后,通过在目标点处开始并通过选择具有从n到1的降低的曼哈顿距离的布线资源跟随返回至源的波来确定路线。处理的该部分被称为后向跟踪。图3示出了具有最小曼哈顿距离的三个不同路线306。由于波中的从逻辑单元出现的“孔”,所以处理总是从一个开关盒遍历一个导线区段向下一开关盒前进。

图3中所有所描绘的路线306由于该构造而明显地具有相同(最小)导线长度。现在,考虑由于已布线的连接进行的单元的占用。如果均在最佳轨迹上的两个导线区段(布线单元)作为下个单元可用,则“FieldPlacer拥塞驱动迷宫布线器”贪婪地取具有最小当前占用的下一导线区段来继续布线。该决策是局部最优的,但不一定为全局最优的。

以当前导线使用(为占用阵列的形式)开始,波被从源展开并且从目标跟踪返回。到达第一开关盒,轨迹例如可以继续向上或向右。在选择下一布线单元之后,更新占用阵列。最后,将针对实际路线而选择的单元上的导线使用均增加一。对于设计中的块之间的每个连接连续执行该过程。

在以涉及导线长度的全局最优和涉及布线轨迹的拥塞的局部最优布线了每个连接之后,通过合计所有单元的过度使用评定来获得在该简化模型中的布线资源的总体过度使用。

由此,过度使用范数(仅)考虑在所设计的架构上以所描述方式不可布线的那些导线区段。该过度使用范数评定布线单元将以多少量被过度使用。在实际布线阶段,这种拥塞将通过在迂回上布线非关键路径来解决。这扩大了最终的总体导线长度,而且还增加布线时间。因此,通常期望具有小的过度使用的布置。

因为在“相交的”导线区段处方向的每个变化不是都是可以的,所以开关盒的容量不是容易地可估计的。详细布线对于准确调查将是需要的。由此,在该模型中不考虑开关盒的容量。

类似于在“真实”布线中,连接的顺序针对该处理起作用,但由于范数(仅)用于取得布线架构上的应力的印象,所以在范数计算中不考虑该事实。不是简单地累积导线区段的过渡使用,而是可以进行超线性假定,例如以与仅稍微过度使用的资源相比,对严重过度使用的资源较多地处罚,因为在这种情况下,重新布线会花费在比例上较长的时间。

找到用于多度使用成本的合适函数在任意情况下将是困难的,并将基于实验来进行,因为存在许多影响和未知因素。在该工作中,假定了过度使用成本的线性行为。由此,函数是分段线性的(0至过度使用的点,并且然后以斜率1直接成比例)。因此,区段被过度使用的越多,惩罚越高,而忽视了非过度使用段。

FieldPlacer方法创建启发式能量最小化图布图,作为设计的基本“排列草图”,并且将具有任意(例如,浮点)坐标的该非限制图嵌入在给定的异构FPGA架构上(因此在受约束的整体网格上)。创建初始图布图的算法可任意交换,尽管力导向图布图对于该方案是建议的,以与所提出的嵌入处理匹配。基础FieldPlacer方法主要基于嵌套排序技术和与用户可定义的分配配对的质心和角度计算。其由几个连续步骤组成,并且可以对于具有其他块类型且具有另外方法的将来的FPGA架构进行扩展。FieldPlacer本身的开发已经是逐步骤添加越来越多细化和功能的迭代处理。方法设立表示需要布置的设计的图,创建自由(非约束)力导向布图,并且遵循不同的(可选)策略通过向FPGA芯片的受限网格上的合适(拟合且适当的)整数位置指派各元件来布置该力导向布图。然后已经由另外的优化步骤等扩展了该基本的FieldPlacer法,例如,局部细化、布图阶段中不同距离范数的应用、第二能量阶段甚至方法(的部分)在统计框架中的重复应用。

第1步骤-设立:在FPGAGraphRep结构(例如,电路图)中存储的设计的表示是过程的基础和对(电路图的)力导向图布局的输入。对于其设立,FPGA设计的各经包装的(CLB块(逻辑块)、I/O块(输入/输出块)、MEM块(存储器块)、MUL块(例如,特殊功能块))块变成FPGAGraphRep中的节点,并且设计的网的所有点到点连接被遍历且并入,作为FPGAGraphRep中的边。在该处理中,因为全局网可能无法在正常布线架构上被布线且通常不影响布图的布置、布线以及定时,所以(仅)考虑不属于全局网的连接。

如果在设计中存在无法被移动的固定节点,则(仅)需要节点的初始位置。目前,情况不是这样。由此,图表示不包含与节点的位置有关的信息,而(仅)包含与它们的连接性(或接近性)及其异构块类型有关的信息。因此,图表示是没有明确几何结构(没有嵌入)的纯抽象图。

依赖于随后应用的图布局方案,可以期望去除在图中因多对逻辑块之间的多个连接产生的平行边。这在FieldPlacer法中可选地是可以的。对于本工作所提出的构思,该选项是实际上总是启动,因为它在用于对连接长度在布图中转向的松弛图变形过程中变得特别重要。

总之,FPGAGraphRep结构将输入的设计的网表表示为具有所有异构块(VD)及其互联性(ED)的图GD=(VD,ED)。该图可以具有处理不同独立任务的多个部件。然而,从在VTR7.0中设置的异构标尺取得的输入大多数包含一个单个或至少一个主要部件(在块/节点的数量方面)。

第2步骤-图布局:FPGAGraphRep内部地存储在结构中,并且另外输出到公共的图建模语言(GML)文件。这样,由能够读和写这种文件的任何图布局软件可以执行任意图布局。可以实施另外接口。在FieldPlacer方法中,该GML文件被传递到在OGDFFM3字和下文中的FieldOGDF(参见:The Open Graph Drawing Framework)中实施的FM3算法的稍微修改且增强的版本。以下段落中方法地描述了扩展,并且给出一些技术洞悉。

在VPR的模拟退火方案中,所有块被随机指派给架构上的合适缝隙,以创建合法初始解。FieldFM3中的图不图取得一般图描述(没有嵌入),并且以多级别框架的最粗糙表示上的随机初始指派开始。

在开始时可以随机指派(所有)节点,只要没有用户定义的固定节点。由于在标尺集中没有具有这种固定块的输入,所以在该工作中总是这样假定。然而,具有初始固定的节点的扩展由于在字段FM3中实施的扩展而是直接可以的。

图4示出了对于两个示例代码402、404从FieldFM3获得的力导向图布图的所产生的布图。虽然这些布图是在没有关于节点的产生坐标的任何限制的情况下产生的,但结果通常示出所实现的力导向布图的一些不同独特性。首先,由于能量最小化解倾向于使已连接节点之间的距离的和最小化,所以各节点被近似布置在其邻居的质心中。

另外,I/O节点(用橙色描绘)倾向于为布图的边界。这基于大多数I/O焊盘仅连接到一个单个内部逻辑块(CLB、MEM或MUL)的事实。由此,这种I/O节点是图的叶,并且除了这些单个连接之外没有向图布图“内”拉节点的力。这通常完美地匹配FPGA的结构(例如,所考虑的岛式FPGA)或芯片架构,因为I/O连接当然包围其他元件。还可以存在连接到多个内部节点的I/O节点。再次,这些节点然后被布置在它们邻居的质心附近。

另一种类型(除了I/O)的每个块通常具有处理数据的输入和输出,因此被承载到图布图的内部区域。因此,虽然I/O节点由于斥力而被向布图外拉,但相邻的内部节点常驻在它们附近。内部节点通常较强地连接到多个其他节点(例如,用白色描绘的CLB,包含多个LUT,并且这些LUT具有多个输入和输出)。实际上,MEM(蓝色)元件和MUL(灰色)元件经常具有异常多的输入和输出,因此被强连接(并且被布置在它们邻居的质心附近)。

GD的布图遵循一些物理启示的特性。类似于来自分析布置技术的许多公布方案,已连接元件在力模型中由引力彼此吸引。然而,FieldPlacer方法另外考虑了斥力。因此,可以自由分配I/O节点,以在没有系统的塌陷的情况下找到用于它们的良好位置(类似于所有其他节点)。另一个非常积极的效果是节点被非常均匀地分配,并且在布图中不浪费太多空间。由于VD中各节点的斥力的影响,节点倾向于彼此排斥,并且这减轻了交叠问题。在另一方面,ED中的各边生成可想象为弹簧的在已连接块之间的收缩力。通过这些引力,已连接节点仍然倾向于被紧密地布置在一起。

总之,该阶段生成系统(设计)的低能量排列,其聚集强连接在一起的“群集”(使得保持群集中的节点之间的许多导线短),并且其在具有更少数量的连接的组之间保持较大的距离。从而,方法保持整体边长度和小,并且生成设计的一致分配的节点排列,而斥力确保布图的所有区域中的应力(分别为交叠)保留适度。

主要构思现在是把该力导向布图当作稍后嵌入的“初步草稿”。对于所描绘的图布图,使用FieldFM3实施方案(其使用FM3算法),因为其极快而同时准确。然而,方法绝对可交换。无论使用哪一种特定力导向布图方案和实施方案,所提及的积极核心效果在这些方法的实质中,因此通常可以对于各独立实施方案而存在。

通过如例如在松弛图变形中那样通过调节边的零能量长度以迭代地减小设计中的总体松弛且因此减小关键路径延迟(“长度”)来修改图模型GD的特性,稍后的布置可以容易地控制、调节并扩展。

使关键路径延迟最小化在主优化目标是性能时是合理的。如果开发者的目的比如在于较佳的热分配,则在应用力导向布图之前可以沿该方向(例如,通过用于斥力的较“有力的”函数进一步减小应力)修改图模型和布局算法。在这种情况下甚至可以使用完全不同的布图技术。调节所生成的布置的另一可能性是在布局节点内选择用于距离的不同范数。

第3步骤-CLB布置:假设GD为设计块的连接性(接近性)的基本描述的图,为具有任意坐标的力导向布图的输出图,并且为具有受约束整数坐标的在缝隙指派之后的架构上的嵌入式图。

在来自之前章节中的步骤2的中的力导向布图的节点可以具有任意(浮点和任意大小的)坐标。下一步骤将该图布图嵌入到FPGA架构的受限整体网格上。

由于CLB是普通FPGA的基本逻辑块(“通用FPGA的工作者”),因此通常是设计中的主要(非I/O)块类型,所以首先嵌入这些CLB。为此,将来自图布局方法的GML输出当作以下步骤的输入。

为了能够从图布图创建CLB的嵌入,从(包含所有块类型的提取CLB节点及其坐标,同时该步骤中可以忽略连接。所提取的一组CLB节点由表示,并且它们现在可以被布置在整体网格上,其在所获得的布图中通常保留它们到彼此的二维排列。

在下文中,节点对v和的节点总是表示FPGA设计的相同节点,而具有布图的任意坐标,并且是嵌在架构上的布图的对应物。

垂直排序:首先,在GD中的另一个节点布图下方的节点在中在架构上的最终嵌入中可以不被布置在v上方。如果是具有整数坐标的嵌入节点,则可以保持真。因此,CLB节点的集合排列在链表(CLB节点列表(CLBNodeList))中,该链表首先根据所有节点的垂直坐标升序排序。

在此阶段,CLB节点列表中的连续节点具有上升的垂直坐标。在下一步骤中,将该列表划分成节点Ri的不相交子集(例如,多个切片),而一个子集Ri中的所有节点将被布置在FPGA架构上的CLB的同一行ri中(其中)。对于划分,可以选择不同的期望CLB分布(CLBDistribution)。

中心(CENTER)分配将CLB密集地布置在FPGA的中心。为此,选择包含充足数量的CLB缝隙(>#CLB)的架构上的大小为NSQUARE×NSQUARE的最小中心正方形区域,并且将CLBNodeList划分成节点的NSQUARE个相应集合。

无、相等以及距离分配-其他分配将CLB一致地布置在FPGA的行上。由此,每行的元素的数量被计算为因此,最后使用的行可以取得较少数量的CLB,并且架构上的一些最终行可以由于凑整而保持为空。在该假定下,限定了划分所有CLB到将被布置在FPGA的第一行(R1)和第二行(R2)等中的组中,因此可以进行中垂直坐标的指派。

下一步骤遵循不同分配策略各行内生成中的另外的节点的水平坐标。

水平排序

对于节点的水平指派,独立地考虑各个所包装的行Ri(切片),并且由来自的其节点的水平坐标来对链表的子集排序。在该步骤之后,将对于来自同一行的每对节点u,v保持为真。除了它们的纯水平顺序之外,遵循分配策略(例如,针对分配144),在节点之间可以被布置惩罚(自由缝隙)。

中心分配:为了对各行定心,以列偏移(ColumnOffset)个逻辑块的偏移布置每个行,以在左边和右边留下自由余裕(如同被留在顶部和底部处)。

将各行的节点从左向右地布置到下一自由CLB缝隙上,并且跳过具有异构“特殊”块类型的列(如果它们出现)。

无分配:无(NO)分配使用FPGA的所有行(参见之前的段落)。将CLB从左向右简单地布置到下一自由CLB缝隙上,在它们之间没有自由CLB缝隙。

相等分配–相等(EQUAL)分配目的在于在各行内均匀地展开该行的CLB。为此,在布置CLB之后将惩罚计数器p增大#CLBsToBePlacedInThisRow/#CLBColumnsOnArch。每当该计数器p变得等于或大于1时,跳过CLB个缝隙,并且将p更新为这可以保证所有CLB可以被布置在行内,并且可用惩罚跨行近似均匀地分配。

距离分配:这可以为FieldPlacer的核心分配。不是相等地分配惩罚,根据力导向布图G_D^layout中的相应开放空间来指派在行的块之间的自由CLB缝隙。在布图中的两个节点u,v之间的较大的空间假设在嵌入节点之间产生多个自由缝隙,反之亦然。为了实现这一点,从提取最小和最大水平坐标,以如在以下方程所示的,得到集合的总宽度。

对于各行Ri,#FreeCLBsInThisRow=#CLBColumnsOnArch-#CLBsToBePlacedInThisRow的数量现在根据中的水平距离来分配。因此,行中两个连续节点之间的各单位距离基本上用个自由缝隙来惩罚。

对到芯片架构的左边界的行中的初始自由空间同样进行这一点。对于CLB节点列表中的两个连续节点vj和vj+1,因此将惩罚计算器p增大pj。

类似于对于EQUAL分配,在vj与vj+1之间将个CLB缝隙保留为自由,并且将p更新到通过该策略,在架构上且因此在G_D^arch中“仿真”节点在中的分配。

DISTANCE分配可以向各行Ri(除了最后一行之外)指派相同数量的节点,并且架构上的意识布图的分配可以由行内的节点之间的相应惩罚来实现。将来,通过节点的相应垂直分配可以实现架构上的的更合适仿真。例如,可以计算中的节点的垂直分配的直方图,以较适应性地划分节点。此外,无疑可想到其他较复杂的技术来考虑垂直惩罚。

惩罚的累积确保了各基本惩罚(比)pj合法地插在节点vj附近。在没有累积的情况下,将简单地全局忽略较小的距离(pj<1)。下一段落描述不同的分配策略背后的动机。

分配策略的动机:节点的主要排列对于所有所提出的分配类型而言是相同的,因为它们对彼此的相对位置由它们在中的出现且由二维排序来定义)。所插入的惩罚遵循不同的目的。

CENTER分配将CLB密集地布置在架构的中心。由于块通常与多个元件连接,所以表示CLB(正如对于MEM和MUL)的节点平均上具有比I/O节点远高的节点度数。因此,CENTER分配可以良好地适于保持多个内部连接小,同时(仅)扩大I/O与内部逻辑块之间的较少连接的长度。由此,嵌入时的总体导线长度可以较小。然而,相反可以期望过度使用和最大通道占用相对高,因为连接对于低应力迂回没有良好的机会。由此,具有CENTER分配的布置的布线时间由撕碎和重新布线阶段而扩展。在另一方面,展开的波相对小,使得在两个点之间创建独立路线在较短的时间内可以是可能的。

EQUAL分配可以以相反的方式起作用。由于CLB之间的自由空间,因为用于迂回的许多时机,所以布线可以较“松散”。然而,节点之间的距离相对大,使得总体导线长度因此变大,并且独立连接的布线需要较多时间。EQUAL分配旨在产生节点在架构中的均匀散布。

最后,DISTANCE分配是FieldPlacer方法的主要目的。它利用斥力仿真力导向布图中的自由(或非约束)情形,因此可以找到前面提及的两个极端选项之间的良好平衡(均衡)。例如,具有多个节点的区域由斥力而展开,并且弱连接的节点可以由于小作用的引力而被承载为彼此较远离。

在至少一些实施方式中,利用斥力的这种力导向布图的均衡状态得到导线长度与过度使用之间的有益折中。

NO分配主要是为了比较的目的而示出的。它与EQUAL和DISTANCE分配相比在各行中具有确切相同的节点顺序。用于该分配策略的结果因此可以被考虑以调查所引入的惩罚对质量的不同测度的影响。

图5a、图5b示出了CLB(图5a中为且图5b中为)到具有CENTER分配的架构上的嵌入。附图示出了如何由在该章节中提出的CLB嵌入技术保存节点相对于彼此的位置。算法CLB布置(Placement)示出了方法的总结伪代码。

整个处理用每行恒定数量的LCB来描述。然而,在各行中可以具有不同数量的CLB。因此,使用两个阵列来分别存储每行多少CLB可用以及被使用的信息。

第4步骤-I/O布置(确定输入/输出块的布置):

基本I/O划分:为了能够从图布图创建I/O引脚的嵌入,从布图GD提取I/O节点及其坐标并将其存储在链表IONodeList中。另外,对于列表中的各节点,到图的质心(BC)的角度ω被存储为另外的参数。旋转该角度,以在西北方的-π开始(并在π结束)。

I/O节点通过根据它们的ω参数排序来基本上被分组到四个面中。这产生在IONodeList中节点的顺时针列举(在西北方开始)。对于到FPGA架构的四个I/O面中的基本划分,各节点(仅)基于其在中的位置被指派到北面(-π<ω(v)≤π/2)、东面(-π/2<ω(v)≤0)、南面(0<ω(v)≤π/2)或西面(π/2<ω(v)≤π)。

容量合法化:虽然FPGA包含足够的I/O引脚来满足代码的需求(由架构的设立来确保),但一些面可能过满,而其他面由于之前章节中描述的与它们的角度有关的到BC的简单划分而仍然具有空闲容量。在这种情况下,节点可以被重新分配到相邻的面中,使得最后没有面是过满的。

对于(已排序)列表的划分,包含各面的最后节点的(仅)索引已经被存储为列表中的面的分割点。对于I/O面中的容量的合法化,应用了以下技术。首先,顺时针遍历已排序的列表的split_point(分割_点)(北端、东端、南端)。如果超过预期面的容量(this.nb_nodes>this.capacity),则通过调节针对已排序的IONodeList的split_point this.end(该面的最后节点的索引)来从该面的末端向下一面的开端转移节点的该超过量。此后,西面可能仍然过满,因为它例如可能“接收了”来自南面的超过节点)。由此,然后逆时针遍历链表的split_point(南端、东端、北端),并且通过调节prev.end将超过预期面的容量的节点的数量转移到逆时针的邻居。

在这两次遍历之后,可以(由方法和架构的构造)保证遵守所有面的容量。最后,向架构上的面缝隙顺时针地指派各面中的I/O节点的集合(将来自已排序的IONodeList的I/O节点连续指派给北面、东面、南面以及西面),而架构上的各整数I/O块通常包括多个I/O引脚(对于前面提及的示例“综合架构”为八个)。节点具有z坐标以各块的引脚之间区分。由此,已排序的IONodeList中的八个连续节点的组总是具有相同的水平和垂直坐标。在各面中,节点的集合被另外定心,使得面中的空闲I/O引脚被相等地分配到该面的外端。

该技术按需局部地转移多个节点但尽可能少地转移到相邻面。合法化方法的时间复杂度(仅)依赖面的数量,由此对于给定的架构为恒定(独立于设计)。

虽然CLB和I/O这两者的所引入的嵌入主要保存图布局中的位置的关系,但详细说明的定位不可避免的受在受限整体网格上的嵌入打扰。为了考虑来自之前步骤的CLB的实际嵌入,在I/O合法化之后可以执行另外的优化步骤。

构思是采取合法化的I/O划分并利用快速启发法来重新排列各面中的I/O引脚,以使导线长度和导线交叉最小化。使交叉最小化可以是非常有利的,因为外部CLB与I/O面之间的短连接在布线架构的繁重使用区域中经常无法具有太多的迂回可能性。

使I/O节点与CLB节点之间的导线交叉最小化的问题基本上为“(一侧)双级别直线交叉最小化问题”。所有CLB到I/O连接的CLB节点限定问题的固定层,并且I/O节点在自由层上。CLB节点不是必须在一个水平线上的事实可以被忽略。然而,问题被称为NP困难。在该工作中,相反应用了质心启发法。

对自由层上的各节点,质心启发法指派已连接固定节点(CLB)的水平坐标的算术平均数,随后根据该平均值对自由节点(I/O)排序。可以对于垂直平行层类似地执行该过程。

将该启发法应用于架构的所有四个面可能得到各面中的I/O节点的意识CLB的重新排序。通过重新排序改进导线长度可以通过累积已连接节点v(I/O)与u(CLB)之间的纯水平(北面和南面:|xI/O(v)-xCLB(u)|)或纯垂直(东面和西面:|yI/O(v)-yCLB(u)|)距离来测量。例如,如果发现各I/O节点连接到同一列或行中的CLB的总交叉空闲排列,则该位移将为零。

总之,质心启发法可以显著改进固定CLB之后的I/O节点的布置,特别是对于具有较大数量的I/O块的代码。由于在I/O面中的居中,当然无法太多地改进仅具有非常少的I/O连接的代码。然而,在这种设计中,它也不是那么重要。在该第四步骤中,在基础FieldPlacer方法中将CLB块和I/O引脚这两者设置到它们的最终位置。随后,最终的优化交换可以(可能)发生在第二能量阶段或局部细化中。

设计中的多个部件:设计以及因此表示图GD可以具有超过一个部件(未连接的子图)(例如,超过一个电路)。FM3算法具有将图的所有部件的独立布图组合到紧凑公共制图的有力的后处理步骤。FieldPlacer方法中这种设计的整体布置基于该公共制图直接实现。由于具有随后固化的部件的单独不图,各部件可以取得芯片架构的基本上单独的部分,其具有在布线架构上的短的所得到的连接。

基础FieldPlacer方法假定架构上的所有节点的空闲(非约束)指派。然而,如果在设计中存在(用户)固定的块,则因为增强FieldOGDF实施方案可以处理这种固定节点,所以也可以考虑这种固定节点。这在第二能量阶段中利用。由此,在FieldPlacer方法中可以考虑具有预先固定节点的输入。在预先固定I/O节点的情况下,可以进行初始空闲力导向布图,以针对随后的模拟中的力提取节点位置的良好缩放。

FieldPlacer的I/O指派技术还可以用于基于需要预先固定I/O节点的方程组的其他数字力导向方案。在这种情况下,FieldPlacer可以用于快速创建用于其他布置器的良好I/O指派。通过单独使用质心启发法实现的改进示出了I/O节点的自由定位实际上可以非常有效。

然而,固定I/O块还出现在“生产设计流程”的特定情形中,并且随机引脚指派是FPGA设计的已知问题。所提出快速FieldPlacerI/O指派的应用可以用于这种该情况中(甚至在没有FieldPlacer的所有其他嵌入技术的情况下)。

另外,通过对于各I/O类型执行单独的顺时针列举且随后关于架构的装备分割IONodeList可以考虑不同的I/O块类型。

最后,将顺时针列举的IONodeList分类成少于四个面是可以容易地执行的,例如在大FPGA的(仅)少部分用于布置在芯片的一个角落中的设计的情况下。在这些情况下,将期望(仅)连接到两个附近的I/O面。

第5步骤-特殊块(MEM+MUL),例如,确定170/180多个存储器块/多个特殊功能块的布置:

最后,可以布置另外的异构块类型。使用公共设计中的这种块的两个主要特性。第一,它们(仅)以较少数量出现,第二,它们通常具有高的节点度数(因为它们由于许多输入和输出引脚而被强连接)。这是由于它们的高的内部复杂度,该高内部复杂度是在设计中使用这种特殊元件的必要动机。这些特殊块中的每个现在在FPGA的通用元件(CLB和I/O)已经被指派到合适的位置之后来布置。为此,首先从力导向布图提取所有存储器块(MEM)并将其连同与针对各个存储器块的已连接I/O和CLB节点有关的信息一起存储在链表中。然后,对于各存储器块计算在(从取得的)架构上所有这种已连接节点的坐标的质心并且存储连接的数量(节点度数)。随后根据存储器块的节点度数降序地排序存储器块。最后,将存储器块按它们的已排序的顺序指派到最靠近(已经嵌在架构上的)已连接节点的先前计算的质心的位置,直到布置了所有块为止。对于乘法器(MUL)独立执行相同过程。还可以对于稍后布置的特殊块考虑不同特殊类型的块之间的连接。

如已经提及的,可以在所有其他“普通”元件之后布置这些特殊元件。构思是关于已布置的CLB和I/O将这些特殊元件指派到最佳的合适可用布置,并且优先化影响芯片上的许多连接的这种元件,以保持总导线长度小。由于这种元件的数量现今仍然较小的事实,可以使用相当朴素的指派实施方案。将来,例如可以应用基于四叉树来找到最近的可用缝隙的较先进技术。

虽然异构块的数量可以是少的,但它们经常具有许多输入和输出引脚,由此,它们的影响是重要的,并且可以对于布置中的导线长度且对于良好的可布线性变得关键。因此,合理的是在考虑来自的这些节点的最终坐标的情况下,相对于所有已经布置的块来布置这些节点。

在这5各阶段之后,所有元件被布置在FPGA上,并且通过组合以及来产生基本的FieldPlacer布置

图6例示了基本的FieldPlacer工作流程的整个工作流程。工作流程包括设立图表示620(步骤1,例如,计算120电路图)。工作流程还包括确定630图的力导向图布图(步骤2,例如,确定130力导向图布图)、CLB布置640(步骤3,例如,确定140多个逻辑块的布置)、I/O布置650(步骤4,例如,确定150多个输入/输出块的布置)、MEM+MUL特殊块处理660(步骤5,例如,确定170/180多个存储器块/特殊功能块的布置)。

在FieldPlacer的实施方案中,通过DISTANCE分配仿真力导向图布图可以在不同类别中实现良好结果。因此,该实施方案组合了力导向布图的前面提及的积极特性与引力和斥力。引力倾向于保持已连接的节点之间的距离小(对于小包围盒成本、关键路径延迟以及总导线长度),而斥力保持节点彼此远离且抵消布图中高度密集的区域(基本上对于随后布线阶段中减少导线区段的过度使用)。

过度使用:为了在实际布线发生之前提取用于布置的可布线性的测度,在没有对布线架构的容量限制的情况下,引入了FieldPlacer拥塞驱动迷宫布线器来模拟“理想布线”。在FieldPlacer的示例性实施方按的评价中,可以示出布线资源的过度使用与分配类型的形状如何匹配,因为过度使用主要由于逻辑块间的连接而发生。在架构的外部区域中几乎没有过度使用,因为存在的到I/O的连接比内部逻辑块的之间少并且可能还因为通过应用质心启发法而进行的良好I/O布置。

由于对过度使用的估计模拟了理想化环境下的布线,实际布线事实上可能看起来不同,并且可能由于许多不同的影响(像连接的顺序和拥塞的解决)而不是必须表现为过度使用范数尝试预测的那样。实际布线与过度使用估计之间的比较可以示出过度使用估计与最终最大通道占用之间的比较在一定程度上是可测量的。例如,具有最小平均过度使用的分配策略(EQUAL分配)是具有最小最大通道占用的策略。然而,两个策略仍然不是“确切”测度,而(仅)是设计的布置的一般可布线性的(或多或少粗糙的)估计。

EQUAL和DISTANCE分配的过度使用通常可以远小于其他两个FieldPlacer分配策略。因此,对于这两个策略,可由模拟退火用VPR的布置来布线的所有代码最后可用基本的FieldPlacer布置来布线。对于CENTER布置,三倍多的代码是不可布线的(对于具有关于通道宽度的特定限制的给定架构)。布置的该实际可布线性实际上非常良好地与由FieldPlacer拥塞驱动迷宫布线器执行的所引入的对过度使用的估计相关。调查另外可以示出布线时间不是必须遵循过度使用或最大通道占用的趋势。这除了别的之外还基于以下事实:虽然设计的布置可以比另个布置以较小的最大通道占用来布线,但两个布置都仍然可完全布线,使得可以同时生成合法布线,只是具有对通道宽度的不同要求。

为了测量布置过程的质量,可以(仅)在布置之后估计关键路径延迟,因为布线影响连接的走线和导线长度且由此影响产生的(导线)延迟)。测量结果示出所估计的与最终的关键路径延迟之间的相关性几乎完美地为正的。由此,可以考虑在布置之后的所估计的关键路径延迟,以已在布置之后且没有随后的实际布线的情况下估计设计在架构上的速度。

调查示出不同的分配策略实际上具有之前假定的特性。已经示出策略关于不同的质量测度而不同,并且示出所引入的过度使用范数可以有助于预测布置的可布线性。因此,其可以用于在几个尝试中选择“可良好布线的”布置,或例如针对设计者的需求选择正确分配策略,因为较佳的可布线性通常以增大的导线长度为代价(其与关键路径延迟和包围盒成本正相关)。由此,导线长度最小化和可布线性通常可能为矛盾的目标。然而,对力导向图布图的排列进行仿真的DISTANCE分配在组合良好的可布线性和短导线长度上可以是有的,因此是下文中的选择策略。

由于实际布线时间通常非常长,具有支持布线处理的布置可能是重要的。实际上,布线可能花费比默认构造中用VPR布置器和布线器产生的布置时间长许多倍(3至>400)的时间,尽管这无疑依赖于所使用的具体布线器(和布置器)。除了布线时间之外,布置的一般可布线性已经被示出为可受分配策略的影响。

因为对关键路径延迟的良好估计,基本的FieldPlacer例如可以应用以快速检查设计的变化可以如何在对设计详细进行布置以及布线之前帮助实现期望的时钟速度。

FieldPlacer扩展:

第51/2步骤-第二能量阶段:在步骤2中可能需要基本的FieldPlacer中的运行时间的最大部分来计算力导向图布图中的斥力。模拟(甚至求解)没有斥力但相反具有固定I/O节点的(稀疏)系统可以较快速地工作。然而,广泛合理的是预先固定I/O节点可以大量影响随后的设计,并且可能不是至少一些实施方式的构思。然而,假定I/O节点与基本的FieldPlacer结果一样良好地分配,保留的问题是斥力的参加是完全必要还是有利。为了调查这一点,可以在应用了基本的FieldPlacer之后进行第二能量阶段(例如,通过确定152另外的力导向布图并确定多个逻辑块的布置的细化)。在第二能量阶段,所有I/O节点固定,并且仅考虑已连接的节点之间的引力。产生的力系为:

Fres(v)=λattr·Fattr(v)→0目标

优化该系统为双重的。一方面,斥力的不存在可以帮助从局部最小值逃脱(在步骤2中由斥力来促进),并且在另一方面,无法由节点的相互排斥使保持节点远离彼此。最后,这种“修订”关注于最终I/O位置,因此特别可以能够改进CLB布置,该CLB布置曾是在仅仅基于且在没有稍后嵌入的I/O在中的位置的明确知识的情况下执行的。

由于该阶段的初始布置可能已经非常好且可以(仅)被改进,所以用于所有节点的初始位置当然从FieldPlacer的嵌入布图取得(而不是像在第一阶段那样随机布置节点)。由于良好的初始解,所以可以停用FieldFM3的多级别能力。

通常,用固定的外部I/O节点执行的迭代越多,中的导线长度变得越小。然而,因为在嵌入时可能布保存节点到彼此的距离,所以这不是必须意指中的架构上的嵌入结果也可以受益于多次迭代。

在示例性实施方案中,力导向布图可以在100000次迭代之后将中的导线长度改善达69.43%,同时嵌入的布图中的导线长度变得越来越差。甚至对于可以以更结构保存方式执行嵌入的代码,由于该第二能量阶段而产生的最终改进可以相当小,并且这种细化可能花费大量时间(依赖于图的密度),虽然可能不进行斥力算。连同相当差的整体改进一起,可以(仅)执行这种第二能量阶段的非常少(若有的话)的迭代。

这示出了基于没有斥力的力系并且对最小导线长度求解的前面提及的方案为何在基本布图之后可能需要加强的分层划分方案。斥力的使用使得可以(仅)小位移的情况下嵌入所创建的布图,因此可以在不需要“通用”划分的情况下受益于布图的细颗粒特性。总而言之,这些结果加强了借助FieldPlacer方法进行的嵌入的良好质量。

最后,针对情形的细颗粒改进,通常(仅)可以执行非常少的另外迭代。因为所有节点收缩到内部区域(且由内部区域收缩),所以浪费图的外部区域中的空间。这基于来自固定的周围I/O节点的非常少的引力,这些固定周围I/O节点受图的强连接内部部分中的引力支配。到相当满的芯片架构上的结构保存嵌入在这种情形下是不可以的。

固定节点集合的其他选择在FieldPlacer中是直接可以的。例如,还可以被配置为固定除了CLB节点之外的所有节点。

具有不同距离范数的第2步骤:力导向布置技术领域中的一些方案通常用欧几里得距离来测量已连接的块之间的距离并对其建模。然而,架构上的走线相反遵循曼哈顿距离。为了追求该事实,FieldPlacer不仅支持欧几里得距离(||.||2范数)在引力的力模型中的使用,还包含使用曼哈顿距离(||.||1范数)或切比雪夫距离(||.||max或||.||∞范数)的选项。

在FieldPlacer方法中,可以任意改变用于计算距离的范数。如果FieldPlacer被配置为使用例如曼哈顿距离来对连接的导线长度建模,则来自FM3的初始力模型可以改变为:

在一些示例中,用于斥力的范数计算还可以在FieldPlacer中用他范数来执行。

当然,图中连接到公共中心的节点在从力导向布图方法中获得力均衡中倾向于在绕着该中心的圆周上扩散。这基于以下事实:节点之间的引力的强度依赖于它们到彼此的距离,因此,到中心具有相同距离的节点经历相同的力,使得在斥力和引力在所应用的p范数的单位圆上互补时达到均衡状态。

虽然欧几里得图布图结果是圆形图,但两个其他布图由于它们不同的距离函数而具有“方位”。曼哈顿图具有钻石形状,并且切比雪夫图具有正方形形状。由此,由于产生的布图不是全部具有二次形状(如芯片上的嵌入必须具有的),所以可以有利的是适当旋转布图以匹配芯片的形状。在不旋转的情况下,嵌入时节点的位移(从到)会变大,甚至可能根除使用其他范数的优点,因为所创建的钻石和正方形芯片形状根本不匹配。产生的力导向布图的形状越可以与芯片的形状匹配,p越大。

由此,应用切比雪夫距离(p→∞)产生完美匹配的(外部)图形状。然而,曼哈顿范数完美遵守布线架构。为了使得曼哈顿结果也匹配芯片的形状,可以将其普通地旋转45°(在欧几里得的意义上)。虽然“普通欧几里得”旋转不改变在欧几里得范数下任意两个点之间的距离,但对于其他度量情况不是这样。由此,因为针对走线可以就曼哈顿范数而言使芯片上的距离最小化,这种旋转实际上影响图中节点之间的曼哈顿距离。

对于完整图,该劣化是最大可能值,因为由于旋转而引起的边的延长可以由具有不同初始方位的其他边(完全或部分地)补偿。正如许多其他已执行的标尺,“真实世界图”上的旋转标尺已经示出由于相当“不正交的”图结构而效果实际上远远较小。

一个问题是在力模型中直接优化曼哈顿距离并在旋转步骤中“松动导线长度质量”或在嵌入步骤中具有较大位移是否有好处。由于曼哈顿距离的“水平和垂直(正交)特性”,不在0°与90°之间的较大的旋转角度导致周期结果。

首先,旋转在力模型中用欧几里得距离创建的所产生的图可以改进图总(曼哈顿)导线长度,但最优角度可能是不可预测的。这简单地基于以下事实:用欧几里得距离产生的图没有“区别方位”,换句话说,在力导向最小中最终圆如何被旋转的趋势,因为旋转不影响布图的能量势。然而,这还意味着一般位移(关于形状)对于所有旋转相同。

虽然曼哈顿图在其产生的能量最小布图中具有最小的总导线长度(没有旋转,因为朝向导线长度的距离范数进行了特别优化),但切比雪夫图在被旋转45°且因此与曼哈顿图类似地定向时在中具有导线长度。

虽然导线长度可以在旋转芯片时被优化,但这仍然在实际嵌入到芯片上之前用布图图布图GD来执行。再次,由于导线长度是由已连接的块之间的曼哈顿距离计算的,(已定向的)曼哈顿和切比雪夫结果这两者在1范数单位圆的钻石形状旋转中在中具有最小总导线长度。这意味着曼哈顿结果可能根本不被旋转,并且切比雪夫图可能旋转大约45°以使在中的距离最小化。另一方面,图的钻石形状不匹配芯片架构的形状。由此,在(用所有不同的分配策略)将布图嵌入到用于的受限二次整体网格上时引入了较大的位移。这基于以下事实:节点可以被移动较远离它们在钻石形状中的相对位置,以将它们嵌在正方形芯片上。实际上,另外重复的标尺结果已经示出,平均来说,由于创建的这些位移而引起的导线长度的劣化抵消了在针对使用切比雪夫距离的情况下应用于的旋转的优点,同时曼哈顿图的结果旋转45°是有好处的。因此,两个图在不必须使中的导线长度最小化的同时都匹配了芯片的形状。由此,匹配芯片的形状以尽可能良好地保存节点到彼此的排列是较有利的。

由于针对欧几里得图的不可预测最优旋转角度,可以期望尝试0°与90°之间的不同角度并选择最佳的一个角度。由于其最佳角度的选择和相对恒定的外部形状,欧几里得图的该旋转无疑是有益的,但因此较耗时。

考虑中的嵌入结果,对于能量图的最终旋转定义以下策略。

■范数策略-欧几里得:在10个步骤中从0°到90°旋转图,并且选择最佳旋转角度。

■范数策略-曼哈顿:在G_D^arch中以小位移将图旋转45°。

■范数策略-切比雪夫:在G_D^arch中以小位移根本不旋转图。

虽然嵌入之后的整体改进较小(部分由于芯片原则上非常密集地填充有逻辑块),但最佳策略是在力模型中用曼哈顿距离执行力导向布图,将旋转45°并用期望的CLB分配策略来将其嵌入。

标尺示出对所有标尺代码的(嵌入之后的)平均导线长度且对总导线长度的影响(再次相对于在VPR中的完全模拟退火运行的结果)。从使用曼哈顿范数获得的优点关于整体总导线长度和较高,而不是关于每个代码测量平均值优点示出“正确”范数的影响对于具有较大总导线长度的较大设计是较大的。标尺另外示出使用具有其45°旋转策略的曼哈顿范数甚至导致降低的过度使用。总之,不同范数对中的最终嵌入的导线长度的影响然而平均来说是较小的,因此不如说是微调,因为节点的基本排列不由范数本身显著地影响。例如,分配策略的影响通常大的多。

然而,当在力模型中使用曼哈顿距离伴随着随后布图图的随后45°旋转时,CENTER分配例如得到最短的总导线长度。这示出了曼哈顿范数不仅(由DISTANCE分配策略中的更小惩罚)改进已连接节点之间的纯距离,还略微地改进节点的一般排列(因为CENTER分配(在中)对于布图的各结果将所有节点密集地包装到芯片的同一区域中)。

结果,特别是来自切比雪夫图的结果,示出了朝向钻石形状的旋转通常对于是最佳选择。然而,因为芯片架构经常具有正方形形状,所以无法保存钻石排列,并且嵌入阶段中与之间的位移会使良好的初始导线长度结果劣化。结果还示出钻石形状芯片或等效地为具有“正交布线架构”的正方形芯片实际上可以有利地使芯片上的导线长度最小化。

在一些示例中,可以不应用第二能量阶段,并且具有曼哈顿距离的力系伴随着布图图的随后45°旋转可以用于获得最佳结果。DISTANCE惩罚选项在下文中通常可以用于已布置的设计的性能(短导线长度)与可布线性之间的良好平衡。

第6步骤-局部细化:模拟退火可以是解决QAP问题的有利方法,因为它相对独立于初始解并在合适的时间得到良好的结果。虽然根本性的局部搜索方法可以在短时间内得到局部最优,但所获得的解的质量强烈依赖于初始配置,因为算法在找到第一(最近)局部最优时最终停止。然而,局部搜索可以是非常快速地改进已具有良好质量的结果的有益技术,因为它根本不使解劣化。

实际上,在FieldPlacer方法的步骤1至步骤5之后,所获得的结果已经具有较高的质量。由此,应用最终的局部搜索可以期望是有利且快速的。

标尺还示出,在多年以来调整的在VPR中实施的模拟退火(SA)方案得到相当好的结果,并且示出,包围盒成本函数是针对多个优化目标(如导线长度、关键路径延迟甚至过度使用)的准确范数,因为它实际上考虑所有有影响的效果。因此,最后可以执行局部搜索(其基本上可以基于VPR SA方案且特别是基于其成本函数来实施)。对此,VPR SA方案以初始系统温度0来调用。这样,(仅)接受有改进的互换,并且布图的包围盒成本因此(仅)变得较小。另外,缩小从其中取得块对的区域(框架)的构思用于在开始时进行全局互换,并且在处理中接受较少的互换时变得越来越局部。

由于温度为0且因此(仅)接受有改进的互换的事实,可以简化该“冷退火”方案(或更精确地为局部搜索方法)的停止准则。在VPR SA方法中,在各迭代块中执行多个内部迭代#inner_iter=annealing_sched.inner_num·|VD|1.3333(annealing_sched.inner_num的默认配置=1.0)。依赖于成功互换的数量,缩小或放大选择互换候选的框架,并且处理下一迭代块。对于以下的扩展FieldPlacer标尺,如果在一个这种迭代块中的包围盒成本的改进小于1%,则方法停止。

总之,第6步骤(局部细化)可以被视为具有起始温度0的模拟退火,因此改进布图一直到目标函数的最近局部最优。虽然一般的模拟退火方案通过在方法开始时接受劣化互换来克服局部最优,但该任务由基本的FieldPlacer的在前的力导向多级别布图来进行,其提供用于该局部搜索的初始解。

然而,可以已经提及的是,即使包括局部细化,扩展FieldPlacer方法也仍然可以显著快于VPR SA方法。所执行的迭代块的数量在扩展FieldPlacer实施方案中曾限于100以限制最大运行时间。直到改进落到阈值1%以下为止的实际上执行的迭代块的数量实际上在标尺中显著更小。

在FieldPlacer方法中,非常大部分的时间被花费在通过弹簧嵌入器方案创建力导向图布图。整个所提出的嵌入本身对于所有代码仅需要非常小的时间跨度。

扩展的FieldPlacer连同LocalRefinement的结果示出了,平均而言,该方案得到在所有已提及的质量度量上与VPR SA方案的布置可比较的所产生的布置。基本的FieldPlacer布图用作具有减小的“互换框架”的LocalRefinement(局部细化)的良好起始点。虽然所产生的质量是可比较的,但基于FieldPlacer的布置的运行时间小了10倍(在VTR7.0中),并且由于方法的实际较小的运行时间复杂度,扩展FieldPlacer的运行时间优点随着较大的输入而提高。

FieldPlacer的理论运行时间行为:类似于之前,VD和ED表示设计的图表示(GD)的节点和边。所有步骤中的大多数由可以在O(|VD|log|VD|)时间内进行的节点的排序来支配。所有边的遍历花费另外的O(|ED|)时间,使得(没有局部细化的)FieldPlacer的总的理论运行时间为O(|VD|log|VD|+|ED|)。由于MEM/MUL节点的数量(通常)非常小,所以实际实施方案在步骤5中使用简单的来避免设立四叉树。对于具有其他条件的将来的架构,这可以容易地交换到具有O(|VMEM/MUL|log|VMEM/MUL|)运行时间的适当方法。然而,类似于在FM3算法中,这将(仅)对较大数量的这种特殊节点有意义。由于架构上的缝隙较均匀地来分配,实际上非常简单的四叉树构造是可以使用的。因此,FieldPlacer不延长所包括的FM3算法的理论运行时间。

实际上,FieldPlacer嵌入方法的运行时间显著小于执行图布图所需的时间。基于弹簧嵌入器的力导向图布图例程的实际较快的实施方案(如Gronemann在OGDF(开放绘图框架)中的工作)实际上可以帮助较多地改进整个FieldPlacer方法的运行时间。然而,可以调查没有多极的这种方案是否仍然与FM3一样准确以及准确的边长度转向是否可以被集成。

FieldPlacer实施方案中的LocalRefinement的运行时间为O(|VD|1.3333)。这是由于以下事实而产生:(根据默认)各迭代块执行|VD|1.3333个交换,并且这些迭代块的数量在FieldPlacer中限于100。

除了所介绍的具有I/O块、CLB块、MEM块以及MUL块的异构FPGA架构外,其他类型甚至全然不同的架构也可以容易地集成到框架中。依赖于这种新块类型的元件的典型数量及其对布置质量的影响,需要在连续FieldPlacer中选择适当执行点。在下文中,给出用于这种集成的一些构思。

非均匀CLB:对于具有非均匀CLB(例如,具有CLB类型CLB1和CLB2,该CLB1和CLB2具有不同大小/数量的LUT)的扩展架构,可以以小的调整来应用FieldPlacer方法。除了CLB布置外的所有步骤可以确切按照之前说明的方式操作。CLB布置可以从力导向图布图取得能量最小化图布图,并且将CLB节点划分成类型1(CLB1)的节点集合和类型2(CLB2)的节点集合。此后,可以用包括不同分配策略的所提出方法对于这些类型独立地执行CLB缝隙指派。因此,可以(基于芯片上的类型1CLB的可用性)(仅)考虑针对CLB1缝隙在目标架构上的分配,并且类型1CLB可以用所选择的分配策略来嵌入。随后,可以以相同方式关于类型2CLB(CLB2)进行这一操作。毫无疑问,以这种方式,超过2个CLB类型是可以的。

另外的特殊块类型:如果在架构上存在(仅)稀疏可用的另外特殊块类型(类似于另外的DSP),则可以关于新的块类型重复特殊块的布置,以将这种节点指派到芯片上的适当缝隙。

3D-FPGA:方法甚至可以被扩展以布置用于3维FPGA的布图。为此,可以用3维坐标与FM3类似地来执行3维力导向布图,例如,用对应的3维多极开发和Hachul的“太阳-行星-月亮”多级别模型的3维版本。

可以通过在水平切片划分节点来嵌入3维图布图(基本上由它们的z坐标来排序并根据架构相关的分配来划分,这与如何在用于CLB的FieldPlacer的CLB布置中进行的类似)。然而,根据“FPGA立方体”中的对应层,可以执行这些切片中的每个的2维嵌入。为了获得所产生的布置,最终可以关于2维切片的z坐标堆叠2维切片。

然而,可以预期的是,布图中的切片间通信和在这种硬件环境中的I/O资源的排列(以及许多其他更特定效果)将需求另外的优化步骤。

用于旋转力导向图布图的旋转策略是关于所选择的度量自动设置的,但用户可以以相同的简单方式来改变该旋转策略,例如,对于45°旋转由fmmm.innerrotationstrategy(ROT_45)进行。不是挨个旋转图的各部件(如在初始FM3实施方案中在优化图中的各个部件的区域的压紧之前),在FieldFM3中部件同时旋转。这在使用欧几里得距离并例如在0°至90°之间的10个角度中选择最佳旋转角度时是重要的,因为必须对于各角度同时地对于所有图部件进行对曼哈顿导线长度的评价,以选择最佳的角度。

在FMMM中固定节点的处理和使用:FieldOGDF中的节点对象取得关于节点是固定还是自由的另外参数来存储。这对于执行第二能量阶段并在将来处理预先固定的节点是需要的。为了在该构思中保存多级功能,从较细的级别向较粗糙级别继承固定或自由状态。每当四叉树中的较粗糙表示的群集节点包含至少一个固定子节点时,该群集节点因此也固定。因此,任一级别上的(群集)节点(仅)在它不固定时移动,否则节点总是保持在其位置。每当需要计算连接到固定节点的自由节点的移动时,在这两个节点之间不分割引力和斥力,但引力和斥力整体作用在自由节点上。

在FMMM中处理同一地点中的多个节点:由于多个I/O节点可能在架构上的同一位置中的事实,必须跳过这种对之间的斥力的计算。这不是问题,因为两个节点无论如何也固定,因此将根本不移动。OGDF库中的初始FM3实施方案通常通过将节点稍微远离彼此(在小ε半径内)移动来处理这种情况,以避免从具有零距离的节点对进行的斥力计算中的奇点。

其他修改例:介绍几个其他修改例来支持与FieldPlacer框架的无暇疵的相互作用。然而,当然保持了FM3方法的一般行为,并且修改例对于在FieldPlacer内的应用不是必须的。对于FieldPlacer(没有第二能量阶段)中的基本使用,可以使用把图的gml描述作为输入并输出布图的gml描述的任何布局方法(在任意情况下可以保持节点的数量/标签,以适当地重新指派节点)。作为另外的扩展,在FM3中可以用节点的度数来缩放节点的大小,以在具有较高节点度数的节点周围创建较大的空白区域来最终促进布线。

FieldPlacer框架:FieldPlacer是独立的实施方案且在VTR 7.0和VTR 6.0中测试。通过将FieldPlacer源添加到VPR的SRC文件夹并运行补丁脚本以将布置方法并入到VTR(更精确地为VPR)的布置器例程中,FieldPlacer可以容易地集成到这些框架中。实际上,用户可以以后选择哪一个布置器用于GUI中或由命令线选项vprfieldplacer来选择。所有选项初始地可以在报头文件中配置,并且还可以在FieldPlacerGUI(VPR GUI的GUI扩展)中在运行时间改变,以相互作用地测试不同的策略和选项。因为VTR7.0用C++编写,而VTR6.0仅以纯C编写,所以FieldPlacer实施方案提供用于这两者的调用,并且修补VTR的脚本预期描绘可以修补多少代码基的参数。详细地,FieldPlacer对两个VTR版本的集成修改几个源代码文件,以集成新的选项、图、输出等。然而,FieldPlacer方法本身保持尽可能解耦,并且相当封闭地工作。为了将FieldPlacer集成到其他FPGA“编译流程”中,框架仅需要提供架构和设计的描述。在整个处理之后,输出例程需要向编译流程传回最终布图的块位置。

FieldPlacer的图调试器部件是用于所有所提出的特征的开发的一大帮助。图调试器部件从FieldPlacer的不同步骤输出图表示,作为gml文件,以使得所有步骤的效果和结果可容易地综合。该特征还非常有助于找到并固定实施方案中的方法缺陷。最后,该特征可以支持将来的进一步扩展的开发。此外,可以支持命令行调试模式,该模式例如输出分类之前和之后的不同节点列表(NodeList)的节点参数(如坐标、到质心的角度、位移等)以及特别用于另外开发的其他有帮助信息。

方法的各种方面的多个重复可以进一步提高结果的质量。不是重复整个工作流程,而是已经可以有利的是在选择最佳嵌入(经受预定义度量)的同时(仅)重复基本的FieldPlacer(用于的图布局和嵌入),并且(潜在地)继续进行局部细化(LocalRefinement),以节省重复且较高的细化运行时间。为此,在FieldPlacer周围实施可以评定在重复运行中生成的布置的等级、备份并恢复该布置的统计框架。连同预定义目标函数(例如,使关键路径延迟最小化)一起,每当新布置比该布置劣时,创建并恢复所获得的最佳布置的备份。除了对“随机性”的简单利用之外,可以使用松弛图变形过程通过并入定时分析以修改图模型,来为了系统中的低的松弛因此为了小的关键路径延迟而对系统进行优化。最后,组合的目标函数(例如,小的关键路径延迟和小的过度使用)是可以的,并且在重复的过程中适应性的终止准则也可适用。

图7描绘了围绕FieldPlacer的整个框架。框架包括子框架嵌入框架(EF)710、统计框架(SF)720以及图框架(GF)730。处理流程包括读入电路描述701、合成702、提取连接性711(在EF 710内执行)、创建数据结构(712)(EF)和图设立713(EF/GF)。处理流程还包括力导向图布图731(GF)和第二能量阶段(732)(GF)。嵌入框架710还包括FieldPlacer嵌入714/715(EF)和局部细化716(例如,确定细化148)。统计框架720还包括关于在嵌入/局部细化之后是否重复图布图和嵌入以及备份或恢复功能723的评价721/722。处理流程最终包括布线703(例如,确定160布线)。例如,在720中可以使用FieldPlacer拥塞驱动迷宫布线器评价。

假定主要期望局部细化来提高布置的质量,则第一选项是执行内部重复。在这种情况下,图布图被执行多次,并且用基本的FieldPlacer方法嵌入各图。所提出的度量(包围盒成本、导线长度、关键路径延迟、过度使用)中的任一个可以用于评定这些基本嵌入,并且如果嵌入优于到目前为止已经发现的最佳嵌入,则返回解并创建下一布图。例如可以重复该处理,直到已经执行已定义数量的迭代为止。此外,在从备份恢复所发现的最佳解之后,局部细化可以进一步改进该布图。

不是(仅)以该方式重复基本的FieldPlacer方法,可以启动外部重复选项来重复整个扩展FieldPlacer多次并选择最佳布置(再次经受预定义目标函数)。该处理可以由用户交互式地来重复,直到创建了满意解为止,或者用恒定数量的重复或用适应的终止准则来自动重复。

重复整个扩展FieldPlacer(每个迭代中包括局部细化)无疑比(仅)在唯一的最终局部细化阶段之前重复基本的FieldPlacer耗时。然而,(仅)重复方法的内部部分将仅在(关于所选目标函数的)局部细化之前与之后的质量之间存在高度相关性时有意义。为了调查这一点,已经创建“最平均”VPR标尺码的1000个独立扩展FieldPlacer布图。由于图布局阶段中的随机化决策,关于不同范数,结果的质量变化。而且,在弹簧嵌入方法中的迭代数量受限,由此,系统无法在具有多级布图的默认配置的所有级别上收敛。

在具有随机化影响的多个布置中选择最佳布置是以较高的总运行时间为代价提高布置的最终质量的一个可能性。然而,FieldPlacer框架包括专门改进关键路径延迟的另一机制,该机制涉及各布置之后对整个设计的定时分析,该定时分析需要被执行以用任何方式评定关键路径延迟。例如,可以估计设计中的各路径上的松弛。松弛在一个信号必须等待另一个信号以进行信号处理时出现。因此,设计的关键路径是没有松弛和最高延迟的路径。松弛基本上是接合的路径上的不同量的延迟的结果,而延迟由于不同的延迟类型而发生。虽然逻辑延迟和传播延迟独立于布置,但导线延迟依赖于已连接的逻辑块之间的距离且由此依赖于图布图中的(曼哈顿)边长度。此时不考虑依赖于详细布线的其他影响事实(例如,更详细的电阻器-电容器效应)。

松弛图变形:FieldPlacer中的松弛图变形的构思如下:具有高的松弛的路径最终需要在下一同步点“等待”其他信号达较长时间。由此,这种路径上的导线可以在不劣化总定时的情况下延长,只要由延长增加的延迟不超过可用松弛。这开启了将这种节点扩散为较远离彼此以使其他节点变得较靠近彼此的可能性。该机会可以直接用于在设计上具有小的松弛甚至无松弛的路径。可以缩小这种路径上的连接,以减少线延迟并甚至可能减少设计的关键路径(延迟)。由此,非关键路径的延长开启了用于关键路径的改进的新的可能性(因为架构上的缝隙和布线资源的数量都受限)。这样,系统可以在各重复中改进最终布图的定时,并且可以在多个这种迭代之后达到“均衡松弛状态”。在该处理期间,关键路径(不仅其延迟)甚至可以变化,因为一个路径的优化可能使得另一个路径变得关键。

如果在设计中存在负的松弛(例如,由于用户定义的定时约束),则所有松弛值可以恒定偏移了最负松弛,以使得所有松弛值变得非负,并在系统中维持松弛与彼此的比。

FieldPlacer框架中的松弛图变形基于以下模型。第一,各连接/边e上的绝对松弛slk(e)与平均松弛有关,以取得各边上的松弛的相对测度。

产生的值slk(e)=1.0因此意指边e上的松弛正好为设计的平均值。小于1.0的值与具有低于平均值的松弛的连接(较关键)对应,并且具有slk(e)>1.0的连接具有超过平均值的时间裕量的量(不那么关键)。使用该信息,关键边应可以缩短,同时非关键边被延长。FieldPlacer框架使用弹簧嵌入器方法的力系中的零能量长度来调节这种不平衡。默认地(因此也在所重复流程的首次迭代中),对于所有边,零能量长度被设置为lzero(e)=1.0。在每次迭代之后,通过用从新的布图的定时分析获得的新的所计算的相对时间裕量值算出的各边的实际零能量长度的平均来更新该值。在各迭代中,所有slk(e)值的和为|E|。由此,边的相对延长量由其他边的缩小确切补偿。具体对于FieldPlacer框架的该部分,应启动去除平行的(多个)边的选项,以使得连接长度的准确转向变得可能。如已经提及的,FM3异常良好地适于该目的,因为它非常精确地创建满足已定义零能量长度的要求的布图。在多个边ei,e2,...,en已经组合成FieldPlacer框架内的一个公共边e时,该产生的边e因此取得尽可能受限的时间裕量

由于两个目标的原理上矛盾的特性,在重复运行中明确改善关键路径延迟恶化了所产生的布图中的过度使用,反之亦然。然而,经常可以期望同时在两个方向上的“优化”。由此,FieldPlacer框架包括使用组合测度来选择同时具有可能小的关键路径延迟(CriticalPathDelay)和小的过度使用(OverUse)的布图的能力。可以由表示所有期望目标的凸组合的函数来简单地引导折中。

考虑在重复j中生成的布置的成本的n个测度。每个运行(j=0,...,n-1)生成这种一组量度,使得指示重复j中的类型i的布置成本。因为不同的成本测度可以在非常不同的数值范围内(例如,单位为纳秒的关键路径延迟相比于过度使用),所以可以将重复(j>0)的各成本值缩放第一获得值因此,相对成本量度用于将所有成本值变换到更一般标度。由此,相对量度评定了迭代j中的成本与首次获得的布图相比好多少或差多少。由于该一般标度,可以使用凸组合以提供不同成本值之间的“直观且有意义的”折中。

Cj表示用于在运行j中生成的布置的组合量度。作为示例,执行将两个已调查且基本上矛盾的测度(关键路径延迟(c0)和过度使用(c1))以相等份额(λ0=λ1=0.5)组合的标尺集。

凭借组合的成本函数和启动的时间裕量图变形,选择与两个量度之间的期望折中有关的良好布图,因此,平均来说改善了这两个度量。实际上,所有成本量度由该组合目标的应用进一步改善(总计)。

对于各度量,结果倾向于“公共状态”(平均布图),其基于由力导向图布图达到的类似但不相同的均衡状态。特别是在局部细化之后,情景变得较清晰。大多数布置具有与平均布置类似的质量,而显著好或差的布置是罕见的。

在重复的运行中,这些罕见的显著好的布图是用户感兴趣的布图。因为要使所有度量最小化,所以直方图的左端包含感兴趣的布图。为了找到这种布图,由于所有布图努力朝向的力均衡中的公共平均状态,可以假定布图的质量(在这些情况下且对于这些度量)近似遵循正态分布的。

在期望用启动时间裕量图变形进行的关键路径延迟的优化时,可以使用系统中的时间裕量在每个迭代中有倾向地减小的事实,来在改进一落到特定阈值以下时终止。然而,遵循正态分布的一般成本量度可以在任一个迭代中达到其被随机影响的最优。因此,已经引入备份和恢复功能来存储所发现的最佳布置。

仍然必须回答一个问题:系统可以如何确定是否发现“显著好的”布置使得系统最终可以终止搜索?

为了发现用于术语“显著好的”布置的测度,FieldPlacer框架可以使用置信区间(CI)。假定正态分布的群体存在,则一个测量结果的值以特定概率位于置信区间中。科斯(Cox)和霍尔(Hall)将其有形地描述如下:“置信区间表示用于群体参数的值,对于这些值,参数与所观察的估计之间的差在10%级别在统计上是不显著的”。

然而,因为测量结果的集合仅表示样本,所以在处理内知道已知真实分布。这在仅完成很少布置时的过程的开始时特别重要。因此,可以估计实际分布的参数。

通常,置信区间的大小依赖于样本的大小和经修正的样本标准偏差s(样本偏差的平方根),精确地说依赖于该比越小,则该区间越大。然而,特别是对于小的样本尺寸,必须扩展该值,以估计置信区间。考虑仅具有(碰巧)几乎相同的成本函数值的两个测量结果的集合。经修正的样本标准偏差s将非常小,因此,置信区间也将非常小。因此,显著好的样本经常仅基于样本大小太小的事实来检测。

为了克服小大小的正态分布样本的该问题,威廉希利戈塞(William Sealy Gosset)开发t分布。T分布可以应用以“修正”小样本大小(例如,针对n<30)的所测量的置信区间参数。在使用FieldPlacer方法时样本实际上经常那么非常小。为了最终操纵置信区间的大小并因此操纵结果的期望质量,可以在FieldPlacer框架中改变置信级别。在运行时可以选择三个预定义置信级别0.75(小)、0.975(中)以及0.998(高),而其他置信级别可以容易地插入。方法还可以包括以下步骤:在对具有拥塞驱动迷宫布线器的布线架构没有容量约束的情况下,重复确定130电路图的力导向布图、确定140多个逻辑块的布置、确定150多个输入/输出块的布置、确定170存储器块的布置、确定180特殊功能块的布置以及确定160实际布线或模拟布线中的至少一个,以估计布置的可布线性,例如基于前面提及的方法步骤的先前运行的优化准则的统计分布的质心区间。

连同之前详细说明的示例和附图中的一个或更多个一起提及并描述的方面和特征为了代替其他示例的同样特征或为了向其他示例另外引入特征而也可以与其他示例的一个或更多个组合。

示例还可以为计算机程序或与其相关,该计算机程序具有用于在计算机程序在计算机或处理器上执行时执行以上方法中的一个或更多个的程序代码。各种以上所描述的方法的步骤、操作或处理可以由已编程计算机或处理器来执行。示例还可以覆盖程序存储装置(诸如数字数据存储介质),这些程序存储装置是机器、处理器或计算机可读且编码机可执行的、处理器可执行的或计算机可执行的指令程序。指令执行或使得执行以上所描述的动作中的一些或所有。程序存储装置可以包括或可以是比如数字存储器、磁存储介质(诸如磁盘和磁带)、硬盘驱动器或光学可读数字数据存储介质。另外的示例还可以覆盖被编程为执行以上所描述的方法的动作的计算机、处理器或控制单元、或被编程为执行以上所描述的方法的动作的(现场)可编程逻辑阵列((F)PLA)或(现场)可编程门阵列((F)PGA)。

描述和附图仅例示了本公开的原理。此外,这里列举的所有示例主要明确旨在仅用于帮助读者理解本公开的原理并由发明人贡献以促进现有技术的概念的教学目的。这里列举的公开的原理、方面以及示例及其具体示例的所有陈述旨在包含其等同物。

执行特定功能的、被表示为“用于……的单元”的功能块可以提及被配置为执行特定功能的电路。因此,“用于…的单元”可以被实施为“被配置为或适于某事的单元”(诸如被配置为或适于相应任务的单元或电路)。

附图所示的各种元素(包括被标记为“单元”、“用于提供传感器信号的单元”、“用于生成发送信号的单元”等)的功能可以以专用硬件(诸如“信号提供器”、“信号处理单元”、“处理器”、“控制器”等)以及能够执行与适当软件关联的软件的硬件的形式来实施。当由处理器提供时,功能可以由单个专用处理器、由单个共享处理器、或由多个独立处理器(该多个独立处理器中的一些可以被共享)来提供。然而,术语“处理器”或“控制器”到目前为止不限于唯一能够执行软件的硬件,而是可以包括数字信号处理器(DSP)硬件、网络处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、用于存储软件的只读存储器(ROM)、随机存取存储器(RAM)以及非易失性储存器。还可以包括其他硬件(传统和/或定制的)。

框图比如可以例示实施本公开的原理的高级电路图。类似地,流程图、状态过渡图、伪代码等可以表示实质上可以在计算机可读介质上表示并因此由计算机或处理器(不管这种计算机或处理器是否被明确示出)执行的各种处理、操作或步骤。规范或权利要求中所公开的方法可以由具有用于执行这些方法的各个相应动作的装置的装置来实施。

应理解,规范或权利要求中所公开的多个动作、处理、操作、步骤或功能的公开可以不被解释为在特定顺序内,除非比如由于技术原因而另外显式或隐式陈述。因此,多个动作或功能的公开将不将这些动作、处理、操作、步骤或功能限于特定顺序,除非这种动作或功能由于技术原因而不可互换。此外,在一些示例中,单个动作、功能、处理、操作或步骤可以分别包括或可以分别分解成多个子动作、子功能、子处理、子操作或子步骤。这种子动作可以被包括在该单个动作的本公开中并为其一部分,除非明确不包括。

此外,在此将以下权利要求并入示例性实施方式中,其中,各权利要求可以独立作为单独示例。虽然各权利要求可以独立作为单独示例,但应注意,虽然从属权利要求在权利要求中可以提及与一个或更多个其他权利要求的特定组合,但其他示例还可以包括从属权利要求与各其他从属或独立权利要求的主题的组合。这里明确提出这种组合,除非陈述不打算特定组合。此外,旨在还包括权利要求到任意其他独立权利要求的特征,即使该权利要求不被直接使得依赖于独立权利要求。

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