著录项信息
专利名称 | 用于执行硬件辅助布局的方法和装置 |
申请号 | CN201080050733.6 | 申请日期 | 2010-11-10 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2012-07-18 | 公开/公告号 | CN102598004A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/50 | IPC分类号 | G;0;6;F;1;7;/;5;0查看分类表>
|
申请人 | 阿尔特拉公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 阿尔特拉公司 | 当前权利人 | 阿尔特拉公司 |
发明人 | J·C·范迪肯 |
代理机构 | 北京市金杜律师事务所 | 代理人 | 王茂华;边海梅 |
摘要
公开了一种用于设计在目标器件上的系统的方法。基于准则,系统中的第一多个部件被指派成由计算机辅助设计(CAD)工具进行布局。基于所述准则,系统中的第二多个部件被指派成由硬件布局单元进行布局。使用来自CAD工具和硬件布局单元的布局结果来生成针对在目标器件上的系统的布局方案。还描述并且要求保护其他的实施例。
1.一种用于设计目标器件上的系统的方法,包括:
基于第一准则,指派所述系统中的第一多个部件由计算机辅助设计工具进行布局;
基于第二准则,指派所述系统中的第二多个部件由在硬件中实现的硬件布局单元进行布局;以及
利用来自所述计算机辅助设计工具和所述硬件布局单元的布局结果生成针对所述目标器件上的系统的布局方案。
2.根据权利要求1所述的方法,还包括:
对所述系统进行综合;
对所述系统进行布线;
对所述系统进行汇编;以及
对所述目标器件进行编程以物理转换所述目标器件上的资源,从而实现所述系统。
3.根据权利要求1所述的方法,其中所述第一准则包括在部件具有超出阈值的时序要求时使用计算机辅助设计工具对所述部件进行布局。
4.根据权利要求1所述的方法,其中所述第一准则包括在部件耦合至关键路径时使用计算机辅助设计工具对所述部件进行布局。
5.根据权利要求1所述的方法,其中所述第二准则包括在部件是输入输出时使用计算机辅助设计工具对所述部件进行布局。
6.根据权利要求1所述的方法,其中所述第二准则包括在部件是存储器时使用计算机辅助设计工具对所述部件进行布局。
7.根据权利要求1所述的方法,其中所述准则包括在部件是数字信号处理器时使用计算机辅助设计工具对所述部件进行布局。
8.根据权利要求1所述的方法,其中基于所述第二准则指派所述系统中的所述第二多个部件由所述硬件布局单元进行布局包括:
将所述目标器件上的资源映射至虚拟逻辑元件,所述虚拟逻辑元件在所述硬件布局单元上布置成行和列;
将所述虚拟逻辑元件划分成部分;
将移动处理单元指派给虚拟逻辑元件的每个部分;以及
引导移动处理单元计算在虚拟逻辑元件之间移动部件的成本。
9.根据权利要求8所述的方法,其中,如果在虚拟逻辑元件的一个集合之间的移动并不与虚拟逻辑元件的第二集合的行和列相交,则执行所述引导。
10.根据权利要求8所述的方法,其中,所述移动处理单元并行地计算在虚拟逻辑元件之间移动部件的成本。
11.一种用于使用现场可编程门阵列计算成本的方法,包括:
将目标器件上的资源映射至布置成行和列的虚拟逻辑元件;
将虚拟逻辑元件的群组划分成多个部分;
将所述现场可编程门阵列上的独特的移动处理单元指派给所述多个部分中的每个部分;
使每个独特的移动处理单元计算在所述移动处理单元相关联的部分中的虚拟逻辑元件之间移动部件的成本,其中使用现场可编程门阵列执行所述映射、划分、指派和使能中的至少一个;以及
使用另一移动处理单元来与所述移动处理单元中的每个移动处理单元并行地计算在另一群组中的虚拟逻辑元件之间移动其他部件的成本。
12.根据权利要求11所述的方法,其中通过以下各项所述独特的移动处理单元计算在所述移动处理单元相关联的部分中的虚拟逻辑元件之间移动部件的成本:
标识与在第一虚拟逻辑元件和第二虚拟逻辑元件处的部件相关联的网络的网络边界边缘;
标识用于实现耦合至所述网络的部件的、在所述网络边界边缘处的虚拟逻辑元件的数目;以及
基于所述网络边界增加还是减少以及还基于用于实现耦合至所述网络的部件的、在已移动的网络边界边缘处的虚拟逻辑元件的数目,指派成本给在所述第一虚拟逻辑元件和所述第二虚拟逻辑元件之间移动部件。
13.根据权利要求12所述的方法,其中指派所述成本给移动部件包括:
如果所述网络边界随着将所述部件从所述第一虚拟逻辑元件移动至所述第二虚拟逻辑元件而增加,则指派为1的成本。
14.根据权利要求12所述的方法,其中指派所述成本给移动部件包括:
如果所述网络边界随着移动所述部件而减少并且如果在移动的所述网络边界边缘处有1个虚拟逻辑元件,则指派为-1的成本。
15.根据权利要求12所述的方法,其中指派所述成本给移动包括:
如果所述网络边界随着移动所述部件而减少并且如果在移动的所述网络边界边缘处有多于1个的虚拟逻辑元件,则指派为0的成本。
16.根据权利要求12所述的方法,其中标识所述网络边界边缘包括取回存储在所述现场可编程门阵列的存储器中的网络边界边缘信息。
17.根据权利要求12所述的方法,其中标识在所述网络边界边缘处的虚拟逻辑元件的数目包括取回存储在所述现场可编程门阵列的存储器中的网络标识符信息。
18.根据权利要求12所述的方法,还包括:
响应于所计算的成本在所述第一虚拟逻辑元件和所述第二虚拟逻辑元件之间移动所述部件;以及
在移动所述部件之后,更新与网络相关联的网络边界边缘信息和网络标识符信息。
19.一种硬件布局单元,包括:
第一多个存储器组块,存储表示目标器件上的资源的虚拟逻辑元件、由所述虚拟逻辑元件表示的资源实现的系统设计中的部件、以及与所述部件相关联的网络;
第二多个存储器组块,存储网络边界元件,所述网络边界元件标识与所述部件相关联的网络的网络边界边缘;以及
移动处理单元,基于所述网络边界增加还是减少以及用于实现耦合至所述网络的所述部件的、在移动的网络边界边缘处的虚拟逻辑元件的数目来计算在第一虚拟逻辑元件和第二虚拟逻辑元件之间移动所述部件的成本。
20.根据权利要求19所述的硬件布局单元,还包括另一移动处理单元,其与计算在所述第一虚拟逻辑元件和所述第二虚拟逻辑元件之间移动部件的成本的所述移动处理单元并行地计算在第三虚拟逻辑元件和第四虚拟逻辑元件之间移动所述部件的成本。
21.根据权利要求19所述的硬件布局单元,其中所述移动处理单元响应于确定所述成本可接受而在所述第一虚拟逻辑元件和所述第二虚拟逻辑元件之间移动所述部件,并且更新所述虚拟逻辑元件和网络边界元件以反映所述移动。
22.根据权利要求19所述的硬件布局单元,其中所述硬件布局单元在现场可编程门阵列上实现。
23.一种系统设计器,包括:
综合单元,用于对系统进行综合;以及
布局准备单元,用于基于第一准则指派所述系统中的第一多个部件由计算机辅助设计工具进行布局,且基于第二准则指派所述系统中的第二多个部件由在硬件中实现的硬件布局单元进行布局,以及利用来自所述计算机辅助设计工具和所述硬件布局单元的布局结果来生成针对所述系统的布局方案。
24.根据权利要求23所述的系统设计器,其中所述布局准备单元包括时序单元,所述时序单元用于确定待布局的部件是否具有低于或高于阈值的时序要求。
25.根据权利要求23所述的系统设计器,其中所述布局准备单元包括部件类型标识符单元,所述部件类型标识符单元用于确定待布局的部件是否为以下之一:1)输入/输出;2)存储器;以及3)数字信号处理器。
用于执行硬件辅助布局的方法和装置\n[0001] 优先权\n[0002] 本申请要求于2009年11月12日提交的、序列号为12/590,643的早先提交的美国发明专利申请的优先权,该申请通过引用并入本文。\n技术领域\n[0003] 本发明的一些实施例涉及用于设计在目标器件上的系统的工具。更具体而言,本发明的一些实施例涉及用于硬件辅助布局的方法和装置。\n背景技术\n[0004] 大型系统的电子设计可以包括数百万个门和数百万比特的嵌入式存储器。在管理和优化在目标器件上的电子设计所需的任务中,利用可用资源进行综合、布局和布线可以是最具挑战和最为耗时的。大型系统的复杂性经常要求使用计算机辅助设计(CAD)或电子设计自动化(EDA)工具来管理和优化设计。CAD工具执行在目标器件上的综合、布局和布线的耗时任务。\n[0005] 布局当前占大型系统的设计时间的约50%。当前诸如现场可编程门阵列(FPGA)之类的目标器件的密度的增速超出处理器速度和CAD过程操作的速率,从而导致布局编译时间的增加。用于应对这类问题的一种途径在于使用硬件辅助布局来替代由CAD工具提供的布局算法。\n[0006] 过去的硬件辅助布局技术受与得到在布局中使用的成本度量关联的许多限制影响。例如,过去的硬件辅助布局技术受使用在计算用于界定网络的端子的网络的边界盒成本时是陈旧的信息的影响。过去的硬件辅助布局技术还无法提供对时序关键路径的考虑,这导致设计可以运行的最大频率受到不利影响。\n[0007] 因此,需要一种用于执行有效地和精确地导出在布局中使用的成本度量的硬件辅助布局的方法和装置。\n附图说明\n[0008] 通过示例示出本发明的一些实施例的特征和优势,并且这些特征和优势并不旨在将本发明的实施例的范围限制为所示出的特定实施例。\n[0009] 图1是根据本发明的一个示例性实施例的流程图,该流程图示出了用于设计系统的方法。\n[0010] 图2是本发明的一个示例性实施例的流程图,该流程图示出了用于执行布局准备的方法。\n[0011] 图3示出了将虚拟逻辑元件的群组划分为部分的示例。\n[0012] 图4示出了互斥移动的示例。\n[0013] 图5a至图5d示出了将虚拟逻辑元件的群组划分成每个部分以允许组块被移动至不同的VLE的示例。\n[0014] 图6是根据本发明的一个实施例的流程图,该流程图示出了用于执行硬件辅助布局的方法。\n[0015] 图7a至图7c示出了根据本发明的一个实施例的用于计算边界盒成本的示例。\n[0016] 图8示出了根据本发明的一个实施例的用于实现硬件布局单元的器件。\n[0017] 图9示出了根据本发明的一个示例性实施例的硬件布局单元的部件之间的交互。\n[0018] 图10示出了根据本发明的一个示例性实施例的用于缩放系统设计的处理窗。\n[0019] 图11是示出了本发明的一个示例性实施例驻留的计算机系统的框图。\n[0020] 图12是根据本发明的一个示例性实施例的系统设计器的框图。\n[0021] 图13是根据本发明的一个实施例的布局准备单元的框图。\n发明内容\n[0022] 根据本发明的一个示例性实施例,公开了一种用于设计在目标器件上的系统的方法和装置。基于准则,系统中的第一多个部件被指派成由计算机辅助设计(CAD)工具进行布局。基于所述准则,系统中的第二多个部件被指派成由硬件布局单元进行布局。利用来自CAD工具和硬件布局单元的布局结果来生成针对在目标器件上的系统的布局方案。所公开的混合硬件软件布局技术增加了并行性,同时对允许所得系统设计以可接受的最大频率操作的时序关键路径进行处理。\n具体实施方式\n[0023] 在下文描述中,出于说明的目的,阐述了特定命名法以提供对本发明的一些实施例的完整理解。对于本领域技术人员显然的是,可以不要求描述中的特定细节来实践本发明的一些实施例。在其他一些情形中,以框图的形式示出了众所周知的电路、器件和程序以避免不必要地模糊本发明的一些实施例。\n[0024] 图1是根据本发明的一个示例性实施例的流程图,其示出了用于设计在目标器件上的系统的方法。目标器件可以是FPGA、ASIC、结构化ASIC或其他器件。根据一个实施例,在图1中示出的过程可以由在计算机系统上实现的计算机辅助设计(CAD)/电子设计自动化(EDA)工具执行。在101处,对系统进行综合。综合包括生成待实现的系统的逻辑设计。根据本发明的一个实施例,综合从HDL设计定义生成系统的优化的逻辑表示。系统的优化的逻辑表示可以包括具有系统所需的最少数目的诸如逻辑门和逻辑元件之类的功能块和寄存器(“部件”)的表示。综合还包括映射优化的逻辑设计(技术映射)。映射包括确定如何使用在目标器件上可用的资源实现在优化的逻辑表示中的逻辑门和逻辑元件。根据本发明的一个实施例,通过映射生成网表。该网表可以是从HDL生成的优化的技术映射网表。\n[0025] 在102处,执行布局准备。根据本发明的一个实施例,布局准备包括标识优化的技术映射网表的待布局的部件以及确定将哪个部件指派给CAD布局过程来进行布局,以及将哪个部件指派给硬件布局单元来进行布局。在指派给硬件布局单元的部件中,可以维持调度以确定对部件进行布局的顺序以及是否并行地对部件进行布局。\n[0026] 在103处,确定待对特定部件执行的布局是由硬件布局单元还是由CAD工具实现的布局过程来执行。如果待由硬件布局单元执行布局,则控制行进至104。如果待由CAD工具实现的布局过程来执行布局,则控制行进至105。\n[0027] 在104处,映射的逻辑系统设计中的部件由硬件布局单元进行布局。对优化的技术映射网表执行布局以产生针对每个功能组块的布局。根据本发明的一个实施例,布局包括通过确定逻辑设计上的哪个资源将被用于如在综合期间确定的被确定用来实现系统的特定逻辑元件和其他功能组块而将该系统适配在目标器件上。根据本发明的一个实施例,布局可以包括以部件的初始布局开始,以及将在目标器件上的部件的位置与其他部件的位置互换。针对该互换可以计算成本。可以根据所计算的成本来确定互换是否是期望的。控制行进至106处。\n[0028] 在105处,映射的逻辑系统设计中的部件由CAD工具进行布局。CAD工具可以利用在软件中实现并且由计算机系统中的处理器执行的一个或多个布局过程。对优化的技术映射网表执行布局以产生针对每个功能组块的布局。根据本发明的一个实施例,布局包括通过确定逻辑设计上的哪个资源将被用于如在综合期间确定的被确定用来实现系统的特定逻辑元件和其他功能组块来将该系统适配在目标器件上。布局可以包括集群,该集群包括将逻辑元件分组在一起以形成存在于目标器件上的逻辑集群。根据本发明的一个实施例,在布局的早期阶段执行集群,并且集群紧接在综合之后在布局准备阶段期间发生。\n[0029] 在106处,从硬件布局单元通过过程104生成的布局方案和CAD工具通过过程105实现的布局过程生成的布局方案来生成布局方案。\n[0030] 在107处,确定布局是否可接受。根据本发明的一个实施例,可以使用多种参数来评估布局,这些参数包括时序、距离和/或其他准则。如果时序可接受,则控制行进至108。如果时序不可接受,则控制返回至103。在103处,可以执行硬件辅助布局和/或使用CAD工具的软件布局的另一迭代以生成不同的布局方案。\n[0031] 在108处,对经布局的设计进行布线。在布线期间,分配在目标器件上的布线资源以提供在目标器件上的逻辑门、逻辑元件和其他部件之间的互连。还可以对经布局的逻辑设计执行可布线性优化。根据本发明的一个实施例,可布线性优化的目标在于减少用于连接经布局的逻辑设计中的部件的布线的数量。可布线性优化可以包括执行扇出分裂、逻辑复制、逻辑重布线或其他过程。应该理解,可以对经布局的逻辑设计执行这些过程中的一个或多个。\n[0032] 在109处,执行汇编过程。汇编过程包括创建数据文件,数据文件包括由在101-108处描述的编译过程确定的信息。数据文件可以是可以用于对目标器件进行编程的比特流。\n根据本发明的一个实施例,在图1中示出的过程可以由在第一计算机系统上执行的EDA工具执行。所生成的数据文件可以被传送至第二计算机系统以允许进一步处理系统的设计。备选地,数据文件可以被传送至第二计算机系统,其可以用于根据系统设计对目标器件进行编程。应该理解,系统的设计还可以以其他形式输出,诸如在显示设备或其他介质上。\n[0033] 在109处,使用数据文件对目标器件进行编程。通过使用数据文件对目标进行编程,物理地转换目标器件上的部件以实现该系统。根据本发明的其中目标器件是ASIC或除FPGA之外的其他目标器件的实施例,可以不执行过程108和109。\n[0034] 图2是根据本发明的一个示例性实施例的流程图,其示出了用于执行布局准备的方法。图2中示出的过程可以在102处使用以实现图1中在102-106处示出的过程。在201处,确定部件是否具有在阈值之上或之下的时序要求。该准则可以用于确定部件是在关于与关键信号相关联的时序方面的关键部件还是在关键路径上。如果确定部件具有在阈值之上或是之下的时序要求,则控制行进至202。如果确定部件并不具有在阈值之上或是之下的时序要求,则过程行进至203。\n[0035] 在202处,将部件标识为待由计算机系统使用在软件中实现的CAD工具进行布局的部件。\n[0036] 在203处,确定部件是否是属于部件集合的类型。根据本发明的一个实施例,部件集合可以包括以下中的一个或多个:输入输出(IO)、存储器和数字信号处理器(DSP)或其他类型的部件。如果部件满足这一准则并且属于部件集合,则控制行进至202。如果部件并非是属于部件集合的类型,则控制行进至204。\n[0037] 在204处,将部件标识为待使用物理布局单元进行布局的部件。\n[0038] 在205处,将在目标器件上的、可用于被指派给部件的资源映射至硬件布局单元上的虚拟逻辑元件(VLE)。应该理解,可以将用于支持在202处标识的部件的布局的资源确定为不可用资源。每个VLE可以表示目标器件上的多个资源。每个VLE可以包括在目标器件上的位置坐标以及关于与使用资源的多个部件关联的所有网络的信息。\n[0039] 图3示出了本发明的实施例,其中VLE被布置成硬件布局单元上的行和列。VLE可以被划分成部分301-302,其中移动处理单元(MPU)(未示出)被指派至每个部分。在布局的迭代期间,MPU计算在每个部分中的VLE之间移动部件的成本。\n[0040] 再次参见图2,在206处,标识出互斥的移动集合。如果由移动覆盖的行/列并不相交,则两个单独的移动是互斥的。根据本发明的一个实施例,互斥的移动集合被标识以便允许MPU并行计算在VLE之间移动部件的成本。通过考虑相邻的水平或竖直移动来获得互斥移动的最大数目。考虑n×n矩阵的VLE,可以同时互换的已知组块配对的最大数是n/2。\n[0041] 图4示出了互斥移动的示例。在该示例中,多个组块B1-B4包括系统设计中待布局的部件。组块B1初始地驻留在第三列第三行上的VLE处。组块B2初始地驻留在第一行第四列上的VLE处。组块B3初始地驻留在第四行第一列上的VLE处。组块B4初始地驻留在第四行第二列上的VLE处。将组块B1移动至B2的位置与将组块B3移动至B4的位置是互斥的。将B1移动至B2覆盖了行1-3和列3-4。B3向B4的移动覆盖了行1和列1-2。\n[0042] 再次参见图2,在207处,将被指派成由物理布局单元进行布局的部件卸载至物理布局单元。根据本发明的一个实施例,物理布局单元计算移动的成本并且如果成本位于预定范围内则接受该移动。\n[0043] 在208处,确定是否考虑附加的移动。根据本发明的一个实施例,如果迭代的数目未超出阈值数目,如果与部件的布局相关联的成本超出阈值成本值,或其他准则,则可以考虑附加的移动。如果不考虑附加的移动,则控制行进至209处,在此处返回布局结果。如果考虑附加的移动,则控制返回至205。在返回205之后,可以将硬件布局单元上的VLE划分成不同的配置,其中MPU可以针对附加的布局选项计算在不同的VLE之间移动部件的成本。根据本发明的一个实施例,布局调度进程部件将在硬件布局和软件布局之间转换。例如,在布局退火开始时,组块对于时序可以是非关键的,并且因此由硬件布局引擎进行布局。在多次布局迭代之后,有可能的是该部件最终变为时序关键的。在此情形中,组块将被重新指派给软件布局器以便在时序方面获得优化的布局。硬件布局单元和使用CAD工具实现的软件布局过程并行地工作。软件布局过程获取从硬件布局单元返回的结果并且将其与当前布局视图合并。\n[0044] 图5a至图5d示出了将VLE群组划分成不同配置,以允许组块A移动至不同的VLE并且由目标器件上的不同资源实现的示例。图5a示出了第一水平划分配置,其中VLE被示出为划分成三个部分,其中允许VLE处的组块移动至与其水平相邻布置的另一VLE。如图所示,初始驻留在第二行第二列上的VLE处的组块A可以被移动至第二行第一列上的VLE。在组块互换迭代期间,每个组块与其邻居互换位置。例如,在图5a中,在第一列中的所有组块试图与第二列中的邻居互换。根据一个实施例,当n是行或列中的VLE的数目时,将有n/2个MPU并行计算移动,其中每个MPU彼此独立地操作。\n[0045] 图5b示出了第二水平划分配置,其中VLE被示出为划分成两个部分,其中VLE处的组块同样被允许移动至与其水平相邻布置的另一VLE处。如图所示,初始驻留在第二行第二列处的组块A可以被移动至第二行第三列上的VLE。\n[0046] 图5c示出了第一竖直划分配置,其中VLE被示出为划分成包括第一行和第二行的部分,其中VLE处的组块同样被允许移动至与其竖直相邻布置的另一VLE。如图所示,初始地驻留在第二行第二列上的VLE处的组块A可以移动至第一行第二列上的VLE。\n[0047] 图5d示出了第二竖直划分配置,其中VLE被示出为划分成包括第二行和第三行的部分,其中VLE处的组块同样被允许移动至与其竖直相邻布置的另一VLE。如图所示,初始地驻留在第二行第二列上的VLE处的组块A可以被移动至第三行第二列上的VLE。通过将互换距离限制为1,可以获得较大程度的并行性。在该实施例中,使用4个迭代来覆盖针对每个组块的4个移动方向。\n[0048] 图6是根据本发明的一个实施例的流程图,其示出了用于执行硬件辅助布局的方法。在图6中示出的过程可以在图1中的104处使用。在601处,为与待移动的组块相关联的网络标识网络边界。网络边界限定包围目标器件上的网络的边界盒。根据本发明的一个实施例,可以根据网络的网络边界元件(NBE)标识网络边界。网络边界元件表示目标设计上的网络的边缘。NBE可以被视为追踪目标器件的左、右、上以及下边界,其中芯片被视为具有x坐标和y坐标的二维平面。根据本发明的一个实施例,每个NBE追踪网络边界的x和y位置以及与网络相关联的、存在于网络边界上的VLE的数目的计数。在601处,为与在组块的初始位置和移动位置的组块相关联的网络标识NBE。\n[0049] 在602处,确定如下计数,该计数标识与网络相关联的、存在于响应于移动组块而改变的网络边界上的VLE的数目。如果VLE被用于实现耦合至网络的部件,则该VLE可以与网络相关联。根据本发明的一个实施例,可以根据网络的NBE确定计数。\n[0050] 在603处,确定网络边界是否随着移动而增加。如果网络的边界盒的面积增加,则网络边界增加。如果网络边界增加,则控制行进至604。如果网络边界并不增加,则控制行进至605。\n[0051] 在604处,将针对网络的成本设定为1。\n[0052] 在605处,确定网络边界是否随着移动减少。如果网络的边界盒的面积减少,则网络边界减少。如果网络边界减少,则控制行进至606。如果网络边界并不减少,则控制行进至\n608。\n[0053] 在606处,确定标识用于实现耦合至网络的部件的、沿着响应于移动而改变的网络边界驻留的VBE的数目的计数是否为1。如果针对网络的计数为1,则控制行进至607。如果网络的计数不为1,则控制行进至608。\n[0054] 在607处,将针对网络的成本设定为-1。\n[0055] 在608处,将针对网络的成本设定为0。\n[0056] 在609处,确定针对移动的成本。根据本发明的一个实施例,针对移动的成本可以通过计算与移动组块相关联的所有网络的成本的线性来生成。根据本发明的一个备选实施例,使用非线性方程来确定用于移动组块的成本。非线性方程可以应用至所确定的网络的成本,例如以用于预测接线长度。\n[0057] 在610处,确定附加的网络是否与组块相关联。如果附加的网络与组块相关联,则控制行进至601以评估与相对于尚未被评估的网络移动组块相关联的成本。如果附加的网络不与组块相关联,则控制行进至611。\n[0058] 在611处,确定与移动相关联的成本是否可接受。如果移动的成本不可接受,则控制行进至612处。如果移动的成本可接受,则控制行进至613处。\n[0059] 在612处,拒绝该移动并且可以考虑针对组块的其他移动。\n[0060] 在613处,组块被移动至目标器件上的新的位置。更新表示目标器件上的、实现的在旧位置和新位置处的组块的资源的VLE和与组块相关联的网络的NBE。\n[0061] 根据本发明的一个实施例,当确定移动组块的成本是否可接受时,与将组块从由第一VLE表示的、目标器件上的第一位置移动到由第二VLE表示的第二位置相关联的成本可以与如下的任何成本一同考虑,该成本与将另一组块从由第二VLE表示的第二位置移动至由第一VLE表示的第一位置相关联。\n[0062] 图1、图2和图6是示出了本发明的一些实施例的流程图。示出的一些技术可以顺序地、并行地执行或以所描述的顺序之外的顺序执行,并且可以重复所描述的过程。应该理解,并非要求执行所描述的所有技术,而是可以添加附件的技术,并且一些示出的技术可以被其他技术替代。\n[0063] 图7a至图7c示出了根据本发明的一个实施例的计算边界盒成本的一些示例。图7a至图7c包括目标器件上的资源的映射。该资源包括布置成行和列的多个VLE 701-705、711-\n715、721-725和731-735。图7a示出了表示系统设计中的多个部件的组块B1。B1由VLE 723表示的资源初始地实现。B1包括耦合至由VLE 733、703和715所表示的资源的第一网络。第一网络的网络边界由边界盒741表示。如果组块B1被移动成使得将通过由VLE 724表示的资源实现,则第一网络的网络边界将相同。因此,将B1从VLE 723移动至VLE 724的成本将为0。\n[0064] 图7b示出了与组块B1相关联的第二网络。第二网络耦合至由VLE 731和732表示的资源。第二网络的网络边界由边界盒751表示。如果组块B1被移动成使得其将通过由VLE \n724表示的资源实现,则第二网络的网络边界将由边界盒752表示。第二网络的边界盒将增加。因此,将B1从VLE 723移动至VLE 724的成本将为1。\n[0065] 图7c示出了与组块B1相关联的第三网络。第三网络耦合至由VLE 704表示的资源。\n第三网络的网络边界由边界盒761表示。如果组块B1被移动成使得其将通过由VLE 724表示的资源实现,则第三网络的网络边界将由边界盒762表示。第三网络的边界盒将减少。标识移动的边界上的、与网络相关联的VLE的数目的计数为1。因此,将B1从VLE 723移动至VLE \n724的成本将为-1。\n[0066] 在该示例中,用于移动B1的网络成本的总数将为0。应该理解,当确定是否应该移动B1时,可以考虑与将由B2表示的部件移动至由VLE 723表示的位置相关联的成本。\n[0067] 图8示出了根据本发明的一个实施例的可以用于实现硬件布局单元的器件800。器件800是包括多个逻辑阵列组块(LAB)的现场可编程门阵列(FPGA)。每个LAB可以从多个逻辑组块、进位链、LAB控制信号、(查找表)LUT链以及寄存器链连接线形成。逻辑组块是提供用户逻辑功能的有效实现方式的小单元的逻辑。逻辑组块包括一个或多个组合单元,其中每个组合单元具有寄存器和单个输出。根据本发明的一个实施例,逻辑组块可以与逻辑元件(LE)(诸如在由 公司制造的Stratix或Cyclone器件中的逻辑元件)或是与组合逻辑组块(由Xilinx有限公司制造的Virtex器件中的逻辑组块)类似地操作。在该实施例中,逻辑组块可以包括具有可配置寄存器的四输入查找表(LUT)。根据本发明的一个备选实施例,逻辑组块可以与自适应逻辑模块(ALM)(诸如由Altera公司制造的Stratix器件中的自适应逻辑模块)类似地操作。LAB被分组为跨器件800的行和列。LAB的列被示出为811-\n816。应该理解,逻辑组块可以包括附加的或备选的部件。\n[0068] 器件800包括存储器组块。存储器组块可以是例如双端口随机存取存储器(RAM)组块,其以高达各种位宽并且高达各种频率提供专用的真实双端口存储器、简单双端口存储器或单端口存储器。存储器组块可以分组成跨器件的、在所选的LAB之间的列,或单独地或成对地位于器件800内。存储器组块的列被示出为821-824。\n[0069] 器件800包括数字信号处理(DSP)组块。DSP组块可以用于实现具有加法或减法特征的各种配置的乘法器。DSP组块包括移位寄存器、乘法器、加法器和累加器。DSP组块可以被分组成跨器件800的列并且被示出为831。\n[0070] 器件800包括多个输入/输出元件(IOE)840。每个IOE向器件800上的IO管脚(未示出)供电。IOE 840定位在器件800的周界附近的LAB行和列的端部。每个IOE可以包括双向IO缓冲器和多个寄存器以用于寄存输入、输出和输出使能信号。\n[0071] 器件800可以包括诸如LAB局部互连线、行互连线(“H型接线”)和列互连线(“V型接线”)(未示出)的布线资源以在目标器件上的部件之间路由信号。\n[0072] 图8示出了用于实现硬件布局单元的器件的一个示例性实施例。还应该理解,如上所示,器件可以包括以不同方式布置的相同或不同的半导体器件。器件800还可以包括除了上面参考图8中所示的器件示出和描述的资源之外的FPGA资源。因此,虽然可以在图8中描述的架构上利用本文描述的本发明的一些实施例,但是应该理解,还可以在不同的架构上利用。\n[0073] 图9示出了根据本发明的一个示例性实施例的硬件布局单元的部件之间的交互。\n该硬件布局单元包括多个MPU,该多个MPU中的一个在图9中被示出为MPU 910。MPU 910可以由FPGA上的一个或多个LAB或其他资源实现以计算与移动组块相关联的成本。\n[0074] 硬件布局单元包括存储VLE的行或者列的第一多个存储器921-922。硬件布局单元还包括存储NBE的行或者列的第二多个存储器931-932。存储器921-922和931-932可以通过FPGA上的一个或多个M4K、M512或者其他存储器组块来实现。\n[0075] MPU 910通过从存储在存储器921-922中的VLE访问关于组块的信息和从存储在存储器931-932中的NBE访问关于网络边界的信息来计算与在VLE之间移动组块相关联的成本。从存储器921-922访问的信息可以包括与由VLE表示的组块相关联的网络的标识。从存储器931-932中访问的信息可以包括与组块相关联的网络的网络边界以及沿网络边界存在的VLE的计数。\n[0076] 本发明的一些实施例提供了一种利用FPGA的并行计算能力来减少布局时间的方法。公开了一种混合软件-硬件布局器,其保持软件布局过程的灵活性并且还利用了FPGA的并行处理能力。计算用于移动组块的成本需要大量时间。在成本计算、边界盒成本和时序计算中使用两种主要的成本度量。\n[0077] 过去,通过迭代经过组块的每个网络来计算边界盒成本。这些计算因网络的高度互联性而复杂。此外,在典型的移动中使用的访问模式具有影响设计中的任何组块的可能。\n这使得将移动分成单独的独立执行单元具有挑战性。当两个移动之间存在依赖关系时,移动的并行执行可能导致不精确的成本计算。此外,时序计算很大程度上依赖于器件特定的延迟计算。这要求对高速缓存的延迟的快速的存储器访问。\n[0078] 本发明的一些实施例了提供了一种用于通过局部化数据访问来执行边界盒成本的改进方法。与遍历每个网络的高度分散的扇出不同,遍历的是网络边缘(边界)。边界盒增加还是减少可以通过确定沿网络边缘驻留的组块的数目来得出。通过要求对沿给定边缘的VLE的数据访问,将数据访问局部化到VLE的特定的行或列。根据本发明的一个实施例,可以将针对VLE的行或者列中的所有n个组块的数据高速缓存。高速缓存的数据可以用于n个组块移动。如果移动了组块,则可以对高速缓存的数据进行递增更新,以避免使高速缓存的数据变得陈旧。当边界盒边缘在迭代之间改变时,高速缓存的数据可以擦除重新计算。组块网络数据可以通过硬件来流水化,可以使用将每个网络索引成行或者列的存储器查找表,或者可以使用基于二进制分类途径的并行散列(hash)。\n[0079] 本发明的一些实施例提供了一种用于还通过限定互斥移动来执行边界盒成本的改进技术。将由MPU并行做出的移动限制为互斥移动以消除用于成本计算的陈旧数据。根据本发明的一个实施例,如果由移动覆盖的行和列并不相交,则这两个单独的移动是互斥的。\n通过限制在VLE之间的互换距离,可以增加可以并行发生的潜在的候选移动的数目。根据本发明的一个实施例,为了考虑最大数目的互斥移动,仅考虑相邻的水平和竖直移动。在给定为n×n的组块矩阵的情况下,可以同时互换的已知组块配对的最大数为n/2。\n[0080] 根据本发明的一个实施例,硬件布局单元将对非时序关键组块执行布局。CAD工具中的软件布局过程处理时序关键组块。硬件布局单元和软件布局过程可以一同工作以产生最佳的布局方案,该布局方案包括系统可以进行操作的最大频率。\n[0081] 图10示出了根据本发明的一个示例性实施例的用于缩放系统设计的处理窗1010。\n当设计大型系统设计时,将系统设计进行细分以便允许硬件布局单元的存储器和面积限制更有效地操作可能是必要的。引入处理窗1010以对系统设计中的组块子集执行移动。每个网络边缘将具有相关联的固定边界盒值。该值可以由属于网络的、在处理窗1010之外的组块确定。为了降低带宽要求,处理窗1010将跨实际系统设计地递增扫描。\n[0082] 图11是其中驻留了本发明的一个示例实施例的示例性计算机系统1100的框图。如图所示,计算机系统1100包括处理器1101。处理器1101耦合至CPU总线1110,CPU总线1110在处理器1101和计算机系统1100中的其他部件之间传输数据信号。\n[0083] 计算机系统1100包括存储器1113。存储器1113可以是动态随机存取存储器设备、静态随机存取存储器设备和/或其他存储器设备。存储器1113可以存储可以由处理器1101执行的、由数据信号表示的指令和代码。桥存储器控制器1111耦合至CPU总线1110和存储器\n1113。桥存储器控制器1111在处理器1101、存储器1113和计算机系统1100中的其他部件之间引导数据信号,并且在CPU总线1110、存储器1113和第一IO总线1120之间桥接数据信号。\n[0084] 第一IO总线1120可以是单个总线或是多个总线的组合。第一IO总线1120提供在计算机系统1100中的部件之间的通信链接。网络控制器1121耦合至第一IO总线1120。网络控制器1121可以将计算机系统1100链接至计算机网络(未示出)并且支持机器之间的通信。显示设备控制器1122耦合至第一IO总线1120。显示设备控制器1122允许显示设备(未示出)耦合至计算机系统1100并且充当显示设备和计算机系统1100之间的接口。\n[0085] 第二IO总线1130可以是单个总线或是多个总线的组合。第二IO总线1130提供在计算机系统1100中的部件之间的通信链接。数据存储设备1131耦合至第二IO总线1130。数据存储设备1131可以是硬盘驱动、软盘驱动、CD-ROM设备、闪速存储器设备或其他大容量存储设备。输入接口1132耦合至第二IO总线1130。输入接口1132允许输入设备耦合至计算机系统1100并且将数据信号从输入设备传输至计算机系统100。总线桥1123将第一IO总线1120耦合到第二IO总线1130。总线桥1123进行操作以在第一IO总线1120和第二IO总线1130之间缓冲和桥接数据信号。应该理解,也可以使用具有不同架构的计算机系统来实现计算机系统1100。\n[0086] 系统设计器1140可以驻留在存储器1113中并且由处理器1101执行。系统设计器\n1140可以进行操作与对系统进行综合、对目标器件上的系统进行布局、对系统进行布线、对系统进行汇编以及对目标器件进行编程以实现该系统。\n[0087] 图12示出了根据本发明的一个示例性实施例的系统设计器1200。系统设计器1200可以用于实现在图11中示出的系统设计器1140并且可以执行在图1和图2中描述的过程的子集。系统设计器1200可以是用于设计目标器件上的系统的CAD工具。目标器件例如可以是ASIC、结构化ASIC、FPGA、可编程逻辑器件(PLD)、印刷电路板(PCB)或其他电路。图12示出了实现系统设计器1200的实施例的模块。根据一个实施例,系统设计可以通过执行由图12中所示的模块表示的指令序列的计算机系统(未示出)执行。执行指令序列使得计算机系统支持如后文描述的系统设计。在一些备选的实施例中,可以使用硬接线电路替代软件指令或与其组合来实现本发明。因此,本发明不限于硬件电路和软件的任何特定组合。系统设计器\n1200包括系统设计器管理器1210。系统设计器管理器1210连接至系统设计器1200的部件并且在其之间传输数据。系统设计管理器1210还可以对输入到系统设计器1200中的设计信息的执行详细说明。详细说明可以包括复核设计信息以确保信息语法正确。\n[0088] 组块1220表示综合单元。综合单元1220生成待在目标器件中实现的系统的逻辑设计。根据系统设计器1200的一个实施例,综合单元1220采用概念上的硬件描述语言(HDL)设计定义并且生成系统的优化的逻辑表示。由综合单元1220生成的系统的优化的逻辑表示可以包括具有系统所需的最小化数目的功能组块和寄存器(诸如逻辑门和逻辑元件)的表示。\n备选地,由综合单元1220生成的系统的优化的逻辑表示可以包括如下表示,该表示具有深度减少的逻辑并且生成较低的信号传播延迟。综合单元1220还确定如何利用目标器件上的特定资源实现在优化的逻辑表示中的功能组块和寄存器,从而创建优化的“技术映射”网表。技术映射网表示出了如何利用目标器件上的资源(部件)实现该系统。在目标器件是FPGA的实施例中,部件可以是逻辑元件或自适应逻辑模块。在目标器件是ASIC的实施例中,部件可以是门或标准单元。在目标器件是结构化ASIC的实施例中,技术映射网表可以包含可以在结构化ASIC架构中实现的部件,诸如RAM组块、乘法器组块和来自门库的门。\n[0089] 组块1230表示布局准备单元。布局准备单元1230标识优化的技术映射网表中的待布局的部件并且确定将哪个部件指派给CAD部件过程以用于布局以及将哪个部件指派给硬件布局单元以用于布局。根据本发明的一个实施例,布局准备单元1230将目标器件上的资源映射至硬件布局单元上的VLE,将VLE划分成区块,将MPU指派给每个VLE区块,并且设置MPU对VLE组块(系统设计中的部件)进行布局的迭代。布局准备单元1230还可以标识MPU可以并行执行的互斥移动。\n[0090] 组块1240表示由CAD布局过程实现的布局单元。布局单元1240通过确定目标器件上的哪个部件或区域用于特定功能组块和寄存器来将系统布局至目标器件上。根据系统设计器1200的一个实施例,布局单元1240首先确定如何以集群实现优化的逻辑设计的部分。\n集群可以表示逻辑设计上的部件子集。集群可以例如由被群集在一起的多个标准单元来表示。在该实施例中,在以集群实现优化的逻辑设计的一部分之后,可以通过将该集群指派给目标器件上的特定位置来对该集群进行布局。布局单元1240可以利用成本函数来确定目标器件上的资源的良好指派。\n[0091] 组块1250表示布线单元。布线单元1250确定目标器件上的布线资源以用于提供在实现功能组块的部件与逻辑设计的寄存器之间的互连。\n[0092] 组块1260表示汇编单元。汇编单元1260创建包括由编译过程确定的信息的数据文件,该编译过程由系统设计器800执行。数据文件可以是可以用于对目标器件进行编程的比特流。根据本发明的一个实施例,所生成的数据文件可以被传输至另一计算机系统以允许进一步处理系统的设计。备选地,数据文件可以被传输给另一计算机系统,其可以用于根据系统设计对目标器件进行编程。通过使用数据文件对目标器件进行编程,目标器件上的部件被物理地转换以实现该系统。应该理解,系统的设计还可以以其他形式输出,诸如在显示设备或其他介质上。\n[0093] 图13示出了根据本发明的一个示例性实施例的布局准备单元1300。布局准备单元\n1300可以用于实现在图12中示出的布局准备单元1230以及执行图2中示出的过程。备选地,布局准备单元1300的一部分可以由硬件布局单元实现。布局准备单元1300包括布局准备管理器单元(PPMU)1310。布局准备管理器单元1310连接至布局准备管理器单元1310中的部件,并且在其之间传输信息。\n[0094] 组块1320表示时序单元。时序单元1320确定待布局的部件是否具有在阈值之上或之下的时序要求。这可以确定部件是在关于与关键信号相关联的时序方面的关键部件,还是在关键路径上。如果确定部件具有在阈值之上或之下的时序要求,则该部件被标识为待使用由计算机系统在软件中实现的CAD工具进行布局的部件。\n[0095] 组块1330表示部件类型标识符单元。部件类型标识符单元1330确定部件是否是属于部件集合的类型。根据本发明的一个实施例,部件集合可以包括以下中的一个或多个:输入输出(IO)、存储器和数字信号处理器(DSP)或其他类型的部件。如果部件是属于部件集合的类型,则该部件被标识为待使用物理布局单元进行布局的部件。\n[0096] 组块1340表示划分单元。划分单元1340将可用于指派给部件的资源映射至硬件布局单元上的VLE。划分单元1340将VLE划分成部分,并且指派MPU给每个部分。在布局的迭代期间,MPU计算在每个部分中在VLE之间移动部件的成本。\n[0097] 组块1350表示互斥的移动标识符(MEMI)单元。MEMI单元1350标识被考虑用于布局的互斥移动。根据本发明的一个实施例,如果由移动覆盖的行/列并不相交,则两个单独的移动是互斥的。\n[0098] 布局准备管理器单元1310将被指派成由物理布局单元进行布局的部件的布局卸载至物理布局单元。卸载部件的布局可以包括让物理布局单元计算与将形成组块的部件或部件群组从一个VLE位置移动第二VLE位置相关联的成本。应该理解,布局准备单元1300可以支持关于以下的若干次迭代:移动、成本的加和以及成本是否可接受的估算。备选地,物理布局单元可以被配置成在片上执行功能中的一些功能。在由物理布局单元生成布局结果之后,布局准备管理器单元1310利用来自物理布局单元和CAD工具的布局结果来生成用于系统设计的布局方案。\n[0099] 本发明的一些实施例可以被提供为可以包括具有指令的计算机可读介质或机器可读介质的计算机程序产品或软件。计算机可读介质或机器可读介质上的指令可以用于对计算机系统或其他电子设备进行编程。机器可读介质包括但不限于软盘、光盘、CD-ROM和磁光盘或适于存储电子指令的其他类型的介质/机器可读介质。本文描述的技术并不限于任何特定的软件配置。它们可应用于任何计算或处理环境。本文使用的术语“计算机可读介质”或“机器可读介质”应当包括能够存储或编码供计算机执行并且使得计算机执行本文描述的方法中的任一种的指令序列的任何介质。此外,通常本领域中提及软件是作为采取动作或导致结果的一种形式或另一形式(例如程序、过程、处理、应用、模块、单元、逻辑等)。这类表述仅是阐述由处理系统执行软件来使得处理器执行动作以产生结果的简洁方式。\n[0100] 在前文说明书中,已经参考本发明的一些特定示例性实施例描述本发明的一些实施例。然而,显然的是,在不偏离本发明的较宽精神和范围的前提下可以对其做出各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的。
法律信息
- 2016-09-14
- 2012-09-19
实质审查的生效
IPC(主分类): G06F 17/50
专利申请号: 201080050733.6
申请日: 2010.11.10
- 2012-07-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
1998-07-01
|
1997-12-25
| | |
2
| |
2007-12-26
|
2007-06-25
| | |
3
| |
2008-06-11
|
2007-09-29
| | |
4
| |
2008-06-11
|
2007-10-25
| | |
5
| |
2008-06-11
|
2007-10-18
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |