CN111931447B - Fpga布局方法、装置、电子设备及存储介质 - Google Patents

Fpga布局方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111931447B
CN111931447B CN202010711217.9A CN202010711217A CN111931447B CN 111931447 B CN111931447 B CN 111931447B CN 202010711217 A CN202010711217 A CN 202010711217A CN 111931447 B CN111931447 B CN 111931447B
Authority
CN
China
Prior art keywords
laid
unit
layout
fpga
priority
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
Application number
CN202010711217.9A
Other languages
English (en)
Other versions
CN111931447A (zh
Inventor
蒋涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Pango Microsystems Co Ltd
Original Assignee
Shenzhen Pango Microsystems Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Pango Microsystems Co Ltd filed Critical Shenzhen Pango Microsystems Co Ltd
Priority to CN202010711217.9A priority Critical patent/CN111931447B/zh
Publication of CN111931447A publication Critical patent/CN111931447A/zh
Application granted granted Critical
Publication of CN111931447B publication Critical patent/CN111931447B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Architecture (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请公开了一种FPGA布局方法、装置、电子设备及存储介质,FPGA布局方法包括:根据全局布局算法对FPGA进行初始布局,获得初始布局结果;根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例;根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,移动优先级与布局比例呈正相关;根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级。本方法可实现根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。

Description

FPGA布局方法、装置、电子设备及存储介质
技术领域
本申请涉及集成电路设计技术领域,更具体地,涉及一种FPGA布局方法、装置、电子设备及存储介质。
背景技术
FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种具有丰富硬件资源、强大并行处理能力和灵活可重配置能力的逻辑器件,使用FPGA来开发数字电路,可以大大缩短设计时间,减少印刷电路板(Printed Circuit Board,PCB)的电路面积,提高***的可行性和稳定性。
FPGA布局和布线是数字电路开发中很重要的一部分,其性能的好坏对数字电路的可靠性有很大影响。FPGA布局将各布局单元放到适当的位置,FPGA布线实现各布局单元之间的连线,传统FPGA布局后,不同单位区域内布局的单元的数量并不均匀,比如在一些单位区域中的可能布局的单元的数量较多,而一些单位区域中布局的单元的数量较少,导致进行布线时,使得线长增加,从而导致FPGA的时序降低。
发明内容
鉴于上述问题,本申请提出了一种FPGA布局方法、装置、电子设备及存储介质,能够实现根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
第一方面,本申请实施例提供了一种FPGA布局方法,包括:根据全局布局算法对FPGA进行初始布局,获得初始布局结果;根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到;根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,移动优先级与布局比例呈正相关;根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级。
第二方面,本申请实施例提供了一种FPGA布局装置,包括:初始布局模块,用于根据全局布局算法对FPGA进行初始布局,获得初始布局结果;第一确定模块,用于根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到;第二确定模块,用于根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,移动优先级与布局比例呈正相关;布局单元移动模块,用于根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面提供的FPGA布局方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读取存储介质中存储有程序代码,程序代码可被处理器调用执行上述第一方面提供的FPGA布局方法。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种FPGA合法性检测的流程示意图;
图2示出了本申请实施例提供的一种FPGA合法性检测前的布局示意图;
图3示出了本申请实施例提供的一种FPGA合法性检测后的布局示意图;
图4示出了本申请一个实施例提供的FPGA布局方法的流程示意图;
图5示出了本申请实施例提供的一种FPGA单位区域划分示意图;
图6示出了本申请实施例提供的一种FPGA单位区域的布局示意图;
图7示出了本申请实施例提供的另一种FPGA单位区域的布局示意图;
图8示出了本申请另一个实施例提供的一种FPGA布局方法的流程示意图;
图9示出了本申请实施例提供的一种FPGA上存在目标区域时的布局示意图;
图10示出了本申请再一个实施例提供的FPGA布局方法的流程示意图;
图11示出了本申请还一个实施例提供的一种FPGA布局方法的流程示意图;
图12示出了本申请又一个实施例提供的FPGA布局方法的流程示意图;
图13示出了本申请又另一个实施例提供的FPGA布局方法的流程示意图;
图14示出了本申请实施例提供的FPGA布局装置的一种结构示意图;
图15示出了本申请实施例提供的一种电子设备的结构框图;
图16示出了本申请实施例的用于保存或者携带现实根据本申请实施例的FPGA布局方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
鉴于科技日新月异,用户需求大幅扩展,数字电路开发的规模呈***式增长,FPGA的效率与性能面临着前所未有的挑战,通常会采用布局布线流程的运行时长、布线的效率以及布局布线后的时序来衡量FPGA的性能。在FPGA的合法性检测中,会将所有的布局单元依次放置到FPGA的某个合适的单位区域,在这个过程中,并不会考虑时序、密集程度和可布通性,纯粹只是以布局单元为中心向四周扩散,直到在FPGA上找到一个可以布局的单位区域,并且在布局成功后将不再移动。请参阅图1,FPGA合法性检测的流程示意图,每个数字区域表示一个单位区域,数字大小即为布局单元移动的顺序,且数字1表示布局后的单位区域,即合法性检测的初始单位区域,数字2-5为同一次迭代过程,数字6-13为同一次迭代过程,数字14-25为同一次迭代过程,如果在一次迭代过程中没有找到一个合法的单位区域进行布局,则继续迭代。
传统FPGA布局后,FPGA上单位区域内的布局单元的平均数量不够准确,比如一些单位区域中布局的布局单元的数量较多,而一些单位区域中布局的布局单元的数量较少,将导致FPGA上单位区域内的布局单元的平均数量偏低,且低于设定的阈值时,会导致无法检测出合法性检测的初始单位区域。另外,合法性检测可能会使得的某个单位区域中布局的单元数量过多,使得布线时的线长增加,从而导致FPGA的时序降低。
可以理解的,FPGA布局后,当FPGA上一些单位区域内的布局单元密集度高于预设密集度时,合法性检测过程中可能会将布局单元密集度高的单位区域中,具有强连接关系的几个布局单元布局的很远,导致进行布线时,使得线长增加,从而导致FPGA的时序降低。请参阅图2,其示出了FPGA合法性检测前的布局示意图,如图2中,Y1-Y17区域表示可以布局的单位区域,N1-N8区域表示不可布局的单位区域,X区域表示当前正在进行合法性检测的单位区域,Z1-Z10区域表示已布局的单位区域,每个单位区域均只能布局4个布局单元,而Z1区域和Z2区域均布局了5个具有强连接关系的布局单元,以及X区域已布局6个布局单元,在进行合法性检测时,当X区域中的2个布局单元分别布局到Y1区域和Y2区域后,且此时的可布局位置只剩下Y3区域和Y4区域时,则Z1区域和Z2区域中多余的两个布局单元只能布局到Y3区域和Y4区域,使得原本具有强连接关系的两个布局单元没有布局在靠近的两个单位区域,反而布局在距离很远的两个单位区域,使得布线时的线长增加,从而导致FPGA的时序降低。在图2的基础上,如图3所示,图3为FPGA合法性检测后的布局示意图。
针对上述问题,发明人经过长时间的研究并提出了本申请实施例提供的FPGA布局方法、装置、电子设备及存储介质,能够实现根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
下面对本申请实施例提供的应用场景进行介绍。
请参阅图4,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图4所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S101:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
在本申请实施例中,在对已布局单元进行移动之前,可以根据全局布局算法对FPGA进行初始布局,获得初始布局结果,以便确定每个已布局单元的布局比例。布局单元可以包括查找表(Look-Up-Table,LUT)单元、触发器(Flip Flop,FF)单元、算术处理(Arithmetic Process Module,APM)单元以及专用存储(Dedicated RAM Module,DRM)单元等,此处不做限定,具体布局的单元可以根据实际需求确定。
在一些实施方式中,全局布局算法主要根据电路参数要求以及电路优化方法计算出FPGA的最优布局方案,以使用户设计的布局单元可以布局在芯片的理想位置上,本申请可以将该理想位置称为初始布局位置。显然,本申请利用全局布局算法对FPGA进行初始布局后,可以为用户设计的布局单元分配一个初始位置,而这些布局单元的初始布局位置可以构成初始布局结果。
作为一种方式,利用全局布局算法对FPGA进行初始布局时,首先可以将FPGA的芯片资源均匀切分为多个大小相同的单位区域,其中,单位区域又可以包括多个布局单元,通过初始布局可以形成一个资源网格表,该资源网格表用于描述每个布局单元在芯片中二维分布的位置,即布局单元的位置可以用二维坐标表示。请再次参考图1,如图1给出了资源网格表的示意图,通过图1可以知道在进行初始布局前需将FPGA芯片均匀切分成多个网格,每个网格对应一个单位区域,每个网格处可以对应布局不同的布局单元。可以理解的,单位区域根据具体FPGA以及实际使用效果来设置,请参阅图5,FPGA芯片也可以被均匀划分成12个相同的基本单元,可以将每个基本单元记为一个单位区域,也可以将水平或竖直相邻的两个基本单元记为一个单位区域,还可以将某个布局位置为中心的3x3个基本单元记为一个单位区域,也还可以将单位区域设置成一个布局位置的大小,此处不做限定。
作为另一种方式,本申请实施例可以利用全局布局算法对用户设计的电路进行布局,得到一个初始的布局结果。具体的,获取用户输入的电路,该电路可以包括多个单位区域,而后对多个单位区域进行初始布局,即将布局单元布局于多个单位区域。
步骤S102:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
在本申请实施例中,在获得初始布局结果之后,可以根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,以便根据布局比例确定每个已布局单元的移动优先级。其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到。已布局单元对应的布局比例可以一定程度上反映其所在单位区域上已布局单元的数量,单位区域上已布局单元的密集程度等,从而可以用于后续作为移动已布局单元的依据。
在一些实施方式中,FPGA上单位区域内的已布局单元可以为同一类型的布局单元,根据每个已布局单元所在的单位区域内的所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值,得到每个已布局单元对应的布局比例,即同一单位区域内的每个已布局单元的布局比例均相同。例如,如图6所示,FPGA上的每个单位区域内可布局4个LUT单元,且单位区域A内已布局4个LUT单元,单位区域B内已布局2个LUT单元,则得到单位区域A内的每个已布局单元的布局比例为1:1,单位区域B内的每个已布局单元的布局比例为1:2。
在另一些实施方式中,FPGA上单位区域内的已布局单元可以为不同类型的布局单元,根据每个已布局单元所在单位区域内,该已布局单元对应的类型的所有已布局单元的数量,与每个已布局单元所在单位区域内,该已布局单元对应的类型的可布局单元的数量的比值,得到每个已布局单元对应的布局比例。例如,如图7所示,FPGA上的每个单位区域内可布局4个LUT单元和8个FF单元,且单位区域A′内已布局4个LUT单元和4个FF单元,单位区域B′内已布局2个LUT单元和2个FF单元,则得到单位区域内A′内的已布局LUT单元的布局比例为1:1,单位区域A′内的已布局FF单元的布局比例为1:2,单位区域B′内的已布局LUT单元的布局比例为1:2,以及单位区域B′内的已布局FF单元的布局比例为1:4。
在又一些实施方式中,在针对每个单位区域上已布局单元获取布局比例时,也可以不区分已布局单元的类型,直接根据单位区域上已布局单元的数量,与所有可布局单元的数量的比值,获得该单位区域上已布局单元对应的布局比例。该实施方式下,一个单位区域内所有已布局单元对应的布局比例应当相同。
当然,在本申请实施例中,FPGA上每个单位区域内的可布局单元的类型和数量可以不做限定。
步骤S103:根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级。
在本申请实施例中,在确定FPGA上每个单位区域内的每个已布局单元对应的布局比例之后,可以根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,以便根据移动优先级,移动每个已布局单元。其中,移动优先级与布局比例呈正相关,表示布局比例越大,则移动优先级越高。
在一些实施方式中,每个已布局单元的布局比例可以为Density,每个已布局单元的移动优先级为priority,且移动优先级priority与布局比例Density存在如下关系priority=k*Density,其中k≥1,若Density(i)>Density(j),(i,j)≥1,i≠j,则priority(i)>priority(j),(i,j)≥1,i≠j,其中,Density(i)为第i个已布局单元对应的布局比例,Density(j)为第j个已布局单元对应的布局比例,priority(i)为第i个已布局单元的移动优先级,priority(j)为第j个已布局单元的移动优先级;表示当第i个已布局单元对应的布局比例大于第j个已布局单元对应的布局比例时,则第i个已布局单元的移动优先级大于第j个已布局单元的移动优先级,即第i个已布局单元优先移动。
步骤S104:根据每个已布局单元的移动优先级,移动每个已布局单元。
在本申请实施例中,在确定每个已布局单元的移动优先级之后,可以根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,由于移动优先级与布局比例呈正相关,从而使得每个已布局单元对应的布局比例不会过大,保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而可提升时序。
具体地,在确定每个已布局单元的移动优先级之后,可以根据每个已布局单元的移动优先级进行排序,只有移动优先级不低于预设优先级阈值的已布局单元,才会被移动,已布局单元的移动过程可以参阅图1中所示的方法。
在一些实施方式中,在根据每个已布局单元的移动优先级,移动每个已布局单元之后,则可以再次执行确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,至根据每个已布局单元的移动优先级,移动每个已布局单元的步骤,不断重复该过程,最终使得每个已布局单元的移动优先级均低于预设优先级。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
请参阅图8,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图8所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S201:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
步骤S202:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
在本申请实施例中,步骤S201以及步骤S202可以参阅前述实施例的内容,此处不再赘述。
步骤S203:获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量。
在本申请实施例中,为了确定每个已布局单元的移动优先级,可以获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,目标区域用于表征相邻的两个单位区域内存在不同的已布局单元,以便根据目标区域,计算每个已布局单元的移动优先级,从而根据移动优先级移动已布局单元时,可以避免任意两个具有强连接关系的布局单元被布局至相距很远的两个单位区域,可缩短FPGA的布线长度,从而提升FPGA的时序。
可以理解的,当FPGA上存在目标区域,且具有强连接关系的布局单元被分别布局在目标区域的四周时,由于相互目标区域之间没有直接布线的布局单元,因此,在布线过程中需要绕过目标区域,导致增加FPGA布线的线长,从而降低时序。如图9所示,为FPGA上的单位区域存在目标区域的布局示意图,已布局单元C和已布局单元D分别被布局到目标区域的两侧,已布局单元C和已布局单元D在布线时需要绕线,如图9中已布局单元C和已布局单元D之间的连线。在相关技术中,通常是将已布局单元C和已布局单元D布局到目标区域的同一侧,从而已布局单元C和已布局单元D之间的布线就不再需要绕远,此时可缩短FPGA的布线线长,从而提升FPGA的时序。但是如果已布局单元C或者已布局单元D与此前所在位置的单元为具有强连接关系的单元时,会导致具有强连接关系的布局单元被布局至相距很远的区域。而根据目标区域来确定各个已布局单元的移动优先级,后续再根据移动优先级移动,可以避免将具有强连接关系的布局单元被布局至相距很远的两个单位区域,并且能避免线长过长,使得时序降低。
例如,FPGA上任意相邻的两个单位区域E和F,若单位区域E内布局了LUT单元和FF单元,单位区域F内布局了LUT单元和APM单元,则单位区域E和单位区域F互为目标区域;若单位区域E内布局了LUT单元和FF单元,单位区域F内未布局单元,则单位区域E和单位区域F也互为目标区域。
在一些实施方式中,FPGA上所有单位区域内的已布局单元可以为同一类型的布局单元,针对每个单位区域内的每个已布局单元,可以从与该单位区域相邻的所有单位区域中,获取没有布局单元的单位区域的数量,即为FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量。
在另一些实施方式中,FPGA上单位区域内的已布局单元可以为不同类型的布局单元,针对每个单位区域内的每个已布局单元,可以从与该单位区域相邻的所有单位区域中,获取与该单位区域内的已布局单元存在不同的已布局单元的单位区域的数量,和/或,没有布局单元的单位区域的数量,即为每个FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量。
步骤S204:确定FPGA上每个单位区域内的每个已布局单元到FPGA的边界的距离。
在本申请实施例中,为了确定每个已布局单元的移动优先级,可以确定FPGA上每个单位区域内的每个已布局单元到FPGA的边界的距离,以便根据每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级,并根据移动优先级移动已布局单元时,避免FPGA的边界上的单位区域的布局单元过于密集,可改善布局出现局部拥塞,从而保证每个已布局单元的布局比例均匀。
可以理解的,FPGA边界区域的已布局单元在合法性检查过程中极大可能会往FPGA的边界处扩散,从而会导致这部分的已布局单元簇拥FPGA的边界区域或者角落处,而导致局部布线拥塞,从而导致FPGA的时序变差,甚至导致布线失败。
需要说明的是,在本申请实施例中,步骤S202、步骤S203以及步骤S204之间并无先后顺序,也可以在确定FPGA上每个单位区域内的每个已布局单元对应的布局比例以及到FPGA的边界的距离之后,再获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,还可以在获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量之后,再确定FPGA上每个单位区域内的每个已布局单元对应的布局比例以及到FPGA的边界的距离,依此类推,此处不再赘述。
步骤S205:根据优先级计算公式、布局比例、目标区域的数量以及每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级数值。
在本申请实施例中,在获取到FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,以及确定出FPGA上每个单位区域内的每个已布局单元到FPGA的边界的距离之后,可以根据优先级计算公式、布局比例、目标区域的数量以及每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级数值,移动优先级数值用于表征移动优先级的高低,以便根据每个已布局单元的移动优先级的高低,先后移动每个已布局单元,可保证每个已布局单元的布局比例均匀,并且避免布线线长增加,进而提升时序。
其中,移动优先级计算公式为:
prority=α·Density+β·Block_num+γ·Edge_dist,prority为每个已布局单元的移动优先级数值,Density为每个已布局单元对应的布局比例,Block_num为每个已布局单元周边的目标区域的数量,Edge_dist为每个已布局单元到FPGA的边界的距离,α为每个已布局单元对应的布局比例的权重,β为每个已布局单元周边的目标区域的数量的权重,γ为每个已布局单元到FPGA的边界的距离的权重,α,β,γ≥0。
在一些实施方式中,FPGA上单位区域内的每个已布局单元可以为同一类型的布局单元,则单位区域内的每个已布局单元的布局比例与该单位区域内已布局单元的平均布局比例相同,单位区域内的每个已布局单元的目标区域的数量与该单位区域内的已布局单元的平均目标区域的数量相同,以及单位区域内的每个已布局单元到FPGA的边界的距离与该单位区域内的已布局单元到FPGA的边界的平均距离相同。因此,每个已布局单元的移动优先级数值,可以根据上述移动优先级公式计算得到。
在另一些实施方式中,FPGA上单位区域内的每个已布局单元可以为不同类型的布局单元,可以先计算每个已布局单元的布局比例、目标区域的数量以及到FPGA的边界的距离,再分别计算每个已布局单元所在的单位区域内已布局单元的平均布局比例、平均目标区域的数量以及到FPGA的边界的平均距离,然后根据移动优先级计算公式、平均布局比例、平均目标区域的数量以及到FPGA的边界的平均距离,计算每个已布局单元所在单位区域内已布局单元的平均优先级数值,即为每个已布局单元的移动优先级数值。
步骤S206:根据每个已布局单元的移动优先级,移动每个已布局单元。
在本申请实施例中,步骤S206可以参阅前述实施例的内容,此处不再赘述。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。并且,根据每个已布局单元周边的目标区域的数量计算,每个已布局单元的移动优先级,然后根据移动优先级移动每个已布局单元,可缩短FPGA的布线长度,从而提高FPGA的时序;以及根据每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级,然后根据移动优先级移动每个已布局单元,可改善布局出现局部拥塞,从而保证每个已布局单元的布局比例均匀。
请参阅图10,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图10所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S301:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
步骤S302:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
步骤S303:根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级。
在本申请实施例中,步骤S301、步骤S302以及步骤S303可以参阅前述实施例的内容,此处不再赘述。
步骤S304:移动目标已布局单元。
在本申请实施例中,在根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级之后,可以移动目标已布局单元,目标已布局单元为任一已布局单元。
步骤S305:当目标已布局单元的移动次数达到相应的预设次数阈值时,获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域。
在本申请实施例中,在移动目标已布局单元之后,可以判断目标已布局单元的移动次数是否达到相应的预设次数阈值,以便根据判断结果获取可布局单位区域。当判断目标已布局单元的移动次数达到相应的预设次数阈值时,获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域,以便根据可布局单位区域确定目标已布局单元对应的目标单位区域;当判断目标已布局单元的移动次数未达到相应的预设次数阈值时,继续移动目标已布局单元,直至目标已布局单元的移动次数达到相应的预设次数阈值。可以理解的,预设阈值可以设置为1,也可以设置为10,还可以设置为100,预设阈值的具体数值,此处不做限定。
步骤S306:根据预设布局位置选取条件,从所有可布局单位区域中,确定目标已布局单元对应的目标单位区域。
在本申请实施例中,在获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域之后,可以根据预设布局位置选取条件,从所有可布局单位区域中,确定目标已布局单元对应的目标单位区域,以便将目标已布局单元布局于目标单位区域。
在一些实施方式中,预设布局位置选取条件包括:选取所有可布局单位区域中单位区域代价函数值最小的可布局单位区域;在获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域之后,可以根据代价函数公式,计算所有可布局单位区域的单位区域代价函数值,然后根据单位区域代价函数值,从所有可布局单位区域中,选取单位区域代价函数值最小的可布局单位区域作为目标单位区域。其中,代价函数公式为:Cost=σ·wirelength+τ·slack,Cost为单位区域代价函数值,wirelength为单位区域的线长,σ为单位区域的线长对应的权重,slack为单位区域的延迟裕量,τ为单位区域的延迟裕量对应的权重。
步骤S307:将目标已布局单元布局于目标单位区域。
在本申请实施例中,在确定目标已布局单元对应的目标单位区域之后,可以将目标已布局单元布局于目标单位区域,可避免同一已布局单元被反复移动多次,从而提高布局效率。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。并且,根据目标已布局单元的预设次数阈值以及预设布局位置选取条件,将目标已布局单元布局于目标已布局单元移动过程中,经过的单位区域代价函数值最小的可布局单位区域,可避免同一已布局单元被反复移动多次,从而提高布局效率。
请参阅图11,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图11所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S401:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
在本申请实施例中,步骤S401可以参阅前述实施例的内容,此处不再赘述。
步骤S402:根据初始布局结果,判断FPGA上的单位区域是否存在目标区域。
在本申请实施例中,在确定每个已布局单元的移动优先级的值之前,可以根据初始布局结果,判断FPGA上的单位区域是否存在目标区域,其中,目标区域用于表征相邻的两个单位区域内存在不同的已布局单元,以便根据判断结果,移动目标区域周边的已布局单元。当相邻的两个单位区域内存在不同类型的已布局单元时,则判断FPGA上的单位区域存在目标区域;当相邻的两个单位区域内的已布局单元类型相同时,则判断FPGA上的单位区域不存在目标区域。
步骤S403:当FPGA上的单位区域存在目标区域时,移动目标区域周边的已布局单元至目标区域的同一侧。
在本申请实施例中,当根据初始布局结果,判断FPGA上的单位区域存在目标区域时,移动目标区域周边的已布局单元至目标区域的同一侧,可缩短FPGA的布线线长,从而可提升FPGA的时序。
步骤S404:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
步骤S405:根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级的值。
在本申请实施例中,步骤S404以及步骤S405可以参阅前述实施例的内容,此处不再赘述。
步骤S406:根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且FPGA上不存在目标区域。
在本申请实施例中,在移动目标区域周边的已布局单元至目标区域的同一侧之后,可以根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且FPGA上不存在目标区域,可缩短FPGA的布线线长,从而提升时序。
其中,由于在将目标区域周边的已布局单元至目标区域的同一侧之后,再计算已布局单元的布局比例,进而根据每个已布局单元的布局比例确定移动优先级,而后续可能根据移动优先级对已布局单元进行移动的过程中,又会使得FPGA上产生目标区域,因此,再返回执行“判断FPGA上的单位区域是否存在目标区域”,至步骤“根据每个已布局单元的移动优先级,移动每个已布局单元”,通过不断重复以上过程,对已布局单元进行移动调整之后,可以使得FPGA上每个已布局单元的移动优先级均低于预设优先级,且FPGA上不存在目标区域。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。并且,在确定每个已布局单元的移动优先级的值之前,可以根据初始布局结果,判断FPGA上的单位区域存在目标区域时,移动目标区域周边的已布局单元至目标区域的同一侧,可缩短FPGA的布线线长,从而提升FPGA的时序。
请参阅图12,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图12所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S501:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
在本申请实施例中,步骤S501可以参阅前述实施例的内容,此处不再赘述。
步骤S502:根据初始布局结果,获取FPGA的所有已布局单元到FPGA的边界的平均距离。
在本申请实施例中,在确定每个已布局单元的移动优先级的值之前,可以根据初始布局结果,获取FPGA的所有已布局单元到FPGA的边界的平均距离,以便根据平均距离,移动FPGA的边界区域内的至少部分已布局单元。
步骤S503:当平均距离小于预设距离阈值时,移动FPGA的边界区域内的至少部分已布局单元至靠近FPGA中心的单位区域,直至平均距离大于或等于预设距离阈值。
在本申请实施例中,在获取FPGA的所有已布局单元到FPGA的边界的平均距离之后,可以根据平均距离与预设距离阈值,移动FPGA的边界区域内的至少部分已布局单元,其中,边界区域为FPGA上邻近边界的预设范围内的区域。当平均距离小于预设距离阈值时,移动FPGA的边界区域内的至少部分已布局单元至靠近FPGA中心的单位区域,直至平均距离大于或等于预设距离阈值,可改善已布局单元出现局部拥塞,使得已布局单元的布局比例相对均匀,从而改善布线效率。
步骤S504:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
步骤S505:根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级的值。
在本申请实施例中,步骤S504以及步骤S505可以参阅前述实施例的内容,此处不再赘述。
步骤S506:根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且所有已布局单元到FPGA的边界的平均距离大于或等于预设距离阈值。
在本申请实施例中,在移动FPGA的边界区域内的至少部分已布局单元至靠近FPGA中心的单位区域,直至平均距离大于或等于预设距离阈值之后,可以根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且所有已布局单元到FPGA的边界的平均距离大于或等于预设距离阈值,可防止已布局单元紧密的布局在FPGA的边界区域,从而避免布局出现局部拥塞,可使已布局单元的布局比例相对均匀,从而改善布线效率。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。并且,在确定每个已布局单元的移动优先级的值之前,可以根据初始布局结果,获取FPGA的所有已布局单元到FPGA的边界的平均距离,当平均距离小于预设距离阈值时,移动FPGA的边界区域的至少部分已布局单元至靠近FPGA中心的单位区域,直至平均距离大于或等于预设距离阈值,可防止已布局单元紧密的布局在FPGA的边界区域,从而避免布局出现局部拥塞,可使已布局单元的布局比例相对均匀,从而改善布线效率。
请参阅图13,其示出了本申请实施例提供的一种FPGA布局方法的流程示意图,下面将针对图13所示的流程图进行详细的阐述,FPGA布局方法可以包括以下步骤:
步骤S601:根据全局布局算法对FPGA进行初始布局,获得初始布局结果。
步骤S602:根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例。
步骤S603:获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量。
步骤S604:确定FPGA上每个单位区域内的每个已布局单元到FPGA的边界的距离。
步骤S605:根据优先级计算公式、布局比例、目标区域的数量以及每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级数值。
在本申请实施例中,步骤S601、步骤S602、步骤S603、步骤S604以及步骤S605可以参阅前述实施例,此处不再赘述。
步骤S606:判断每个已布局单元的移动优先级是否均低于预设优先级。
在本申请实施例中,在计算出每个已布局单元的移动优先级数值之后,可以判断每个已布局单元的移动优先级是否均低于预设优先级,以便根据每个已布局单元的优先级判断结果,确定是否根据每个已布局单元的移动优先级,移动每个已布局单元。当判断存在已布局单元的移动优先级不低于预设优先级时,根据每个已布局单元的移动优先级,移动每个已布局单元;当判断每个已布局单元的移动优先级均低于预设优先级时,终止布局。
步骤S607:当存在已布局单元的移动优先级不低于预设优先级时,获取移动优先级最高的目标已布局单元,并移动目标已布局单元。
在本申请实施例中,当判断出存在已布局单元的移动优先级不低于预设优先级时,可以获取移动优先级最高的目标已布局单元,并移动目标已布局单元,以使移动后的每个已布局单元的移动优先级均低于预设优先级,从而实现了根据已布局单元的移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
步骤S608:判断目标已布局单元的移动次数是否达到预设次数阈值。
在本申请实施例中,在移动目标已布局单元时,可以根据目标已布局单元的移动次数,获取可布局单位区域。具体地,可以根据判断目标已布局单元的移动次数是否达到预设次数阈值,获取可布局单位区域。
步骤S609:当目标已布局单元的移动次数未达到预设次数阈值时,继续移动目标已布局单元,直至目标已布局单元的移动次数达到预设次数阈值。
在本申请实施例中,当判断目标已布局单元的移动次数未达到预设次数阈值时,表示未获取到可布局单位区域,可以继续移动目标已布局单元,直至目标已布局单元的移动次数达到预设次数阈值,即表示已获取到可布局单位区域。
步骤S610:当目标已布局单元的移动次数已达到预设次数阈值时,获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域。
步骤S611:根据代价函数公式,计算所有可布局单位区域的单位区域代价函数值。
步骤S612:根据单位区域代价函数值,从所有可布局单位区域中,选取单位区域代价函数值最小的可布局单位区域作为目标单位区域。
在本申请实施例中,步骤S610、步骤S611以及步骤S612可以参阅前述实施例的内容,此处不再赘述。
步骤S613:将目标已布局单元布局于目标单位区域,重复执行步骤S602,直至每个已布局单元的移动优先级均低于预设优先级。
在本申请实施例中,在确定目标已布局单元对应的目标单位区域之后,可以将目标已布局单元布局于目标单位区域,且可以再次执行步骤S602,直至每个已布局单元的移动优先级均低于预设优先级,可避免同一已布局单元被反复移动多次,从而提高布局效率。
步骤S614:当每个已布局单元的移动优先级均低于预设优先级时,终止布局。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据各个单位区域内的单元布局情况,确定已布局单元的移动优先级,再根据移动优先级对已布局单元进行调整,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。并且,在移动每个已布局单元之后,及时更新每个已布局单元的移动优先级,并根据更新后的每个已布局单元的移动优先级移动每个已布局单元,可提高布局效率。
请参阅图14,其示出了本申请一个实施例提供的FPGA布局装置的结构示意图,在本申请实施例中,FPGA布局装置700可以包括:
初始布局模块701,用于根据全局布局算法对FPGA进行初始布局,获得初始布局结果;
第一确定模块702,用于根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到;
第二确定模块703,用于根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,移动优先级与布局比例呈正相关;
布局单元移动模块704,用于根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级。
在一些实施方式中,FPGA布局装置700还可以包括:
第一获取模块,用于在第二确定模块703根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级之前,获取FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,其中,目标区域用于表征相邻的两个单位区域内存在不同的已布局单元;
第三确定模块,用于确定FPGA上每个单位区域内的每个已布局单元到FPGA的边界的距离。
在该实施方式下,第二确定模块703可以包括:
计算单元,用于根据优先级计算公式、布局比例、目标区域的数量以及每个已布局单元到FPGA的边界的距离,计算每个已布局单元的移动优先级数值,移动优先级数值用于表征移动优先级的高低;
其中,优先级计算公式为:
priority=α·Density+β·Block_num+γ·Edge_dist,priority为每个已布局单元的移动优先级数值,Density为布局比例,Block_num为目标区域的数量,Edge_dist为每个已布局单元到FPGA的边界的距离,α为布局比例的权重、β为目标区域的数量的权重、γ为每个已布局单元到FPGA的边界的距离的权重,α,β,γ≥0。
在另一些实施方式中,布局单元移动模块704可以包括:
第一移动单元,用于移动目标已布局单元,目标已布局单元为任一已布局单元;
获取单元,用于当目标已布局单元的移动次数达到相应的预设次数阈值时,获取目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域;
确定单元,用于根据预设布局位置选取条件,从所有可布局单位区域中,确定目标已布局单元对应的目标单位区域;
布局单元,用于将目标已布局单元布局于目标单位区域。
在该实施方式下,预设布局位置选取条件包括:选取所有可布局单位区域中单位区域代价函数值最小的可布局单位区域,确定单元可以包括:
计算子单元,用于根据代价函数公式,计算所有可布局单位区域的单位区域代价函数值;
选取单元,用于根据单位区域代价函数值,从所有可布局单位区域中,选取单位区域代价函数值最小的可布局单位区域作为目标单位区域;
其中,代价函数公式为:Cost=α1·wirelength+α2·slack,Cost为单位区域代价函数值,wirelength为单位区域的线长,α1为单位区域的线长对应的权重,slack为单位区域的延迟裕量,α2为单位区域的延迟裕量对应的权重。
在再一些实施方式中,FPGA布局装置700还可以包括:
判断模块,用于在第一确定模块702根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例之前,根据初始布局结果,判断FPGA上的单位区域是否存在目标区域,其中,目标区域用于表征相邻的两个单位区域内存在不同的已布局单元;
目标移动模块,用于当FPGA上的单位区域存在目标区域时,移动目标区域周边的已布局单元至目标区域的同一侧。
在该实施方式下,布局单元移动模块704还可以包括:
第二移动单元,用于根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且FPGA上不存在目标区域。
在还一些实施方式中,FPGA布局装置700还可以包括:
第二获取模块,用于在第一确定模块702根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例之前,根据初始布局结果,获取FPGA的所有已布局单元到FPGA的边界的平均距离;
边界移动模块,用于当平均距离小于预设距离阈值时,移动FPGA的边界区域内的至少部分已布局单元至靠近FPGA中心的单位区域,直至平均距离大于或等于预设距离阈值,边界区域为FPGA上邻近边界的预设范围内的区域。
在该实施方式下,布局单元移动模块704还可以包括:
第三移动单元,用于根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,且所有已布局单元到FPGA的边界的平均距离大于或等于预设距离阈值。
在又一些实施方式中,布局单元移动模块704还可以包括:
第四移动单元,用于根据每个已布局单元的移动优先级,移动每个已布局单元;
重复单元,用于重复确定FPGA上每个单位区域内的每个已布局单元对应的布局比例的步骤,至根据每个已布局单元的移动优先级,移动每个已布局单元的步骤,直至每个已布局单元的移动优先级均低于预设优先级。
本申请提供的方案,根据全局布局算法对FPGA进行初始布局,获得初始布局结果,然后根据初始布局结果,确定FPGA上每个单位区域内的每个已布局单元对应的布局比例,然后根据每个已布局单元对应的布局比例,确定每个已布局单元的移动优先级,并根据每个已布局单元的移动优先级,移动每个已布局单元,直至每个已布局单元的移动优先级均低于预设优先级,因此,实现了根据每个已布局单元的移动优先级,自动布局每个已布局单元至移动优先级均低于预设优先级,从而保证每个已布局单元的布局比例均匀,可避免布线线长增加,进而提升FPGA的时序。
请参阅图15,其示出了本申请一个实施例提供的电子设备800,包括存储器801、处理器802以及存储在存储器801中并可在处理器802上运行的计算机程序,处理器802执行计算机程序时实现前述方法实施例中所描述的方法。
处理器802可以包括一个或者多个处理核。处理器802利用各种接口和线路连接整个电子设备800内的各个部分,通过运行或执行存储在存储器801内的指令、程序、代码集或指令集,以及调用存储在存储器801内的数据,执行电子设备800的各种功能和处理数据。可选地,处理器802可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器802可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,调制解调器也可以不集成到处理器802中,单独通过一块通信芯片进行实现。
存储器801可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器801可用于存储指令、程序、代码、代码集或指令集。存储器801可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如初始布局、确定每个已布局单元对应的布局比例、确定每个已布局单元的移动优先级以及移动每个已布局单元等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备800在使用中所创建的数据(比如初始布局结果、布局比例、移动优先级、预设优先级以及目标区域的数量)等。
请参阅图16,其示出了本申请一个实施例提供的计算机可读存储介质,其特征在于,计算机可读取存储介质900中存储有程序代码,程序代码可被处理器调用执行前述方法实施例中所描述的方法。
计算机可读存储介质900可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质900包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质900具有执行上述方法中的任何方法步骤的程序代码901的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码901可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种FPGA布局方法,其特征在于,所述方法包括:
根据全局布局算法对FPGA进行初始布局,获得初始布局结果;
根据所述初始布局结果,确定所述FPGA上每个单位区域内的每个已布局单元对应的布局比例,其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到;
根据所述每个已布局单元对应的布局比例,确定所述每个已布局单元的移动优先级,所述移动优先级与所述布局比例呈正相关;
根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级;
在所述根据所述每个已布局单元对应的布局比例,确定所述每个已布局单元的移动优先级之前,所述方法还包括:
获取所述FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,其中,所述目标区域用于表征相邻的两个单位区域内存在不同的已布局单元;
确定所述FPGA上每个单位区域内的每个已布局单元到所述FPGA的边界的距离;
所述根据所述每个已布局单元对应的布局比例,确定所述每个已布局单元的移动优先级,包括:
根据优先级计算公式、所述布局比例、所述目标区域的数量以及所述每个已布局单元到所述FPGA的边界的距离,计算所述每个已布局单元的移动优先级数值,所述移动优先级数值用于表征移动优先级的高低;
其中,所述优先级计算公式为:
,/>为所述每个已布局单元的移动优先级数值,/>为所述布局比例,/>为所述目标区域的数量,为所述每个已布局单元到所述FPGA的边界的距离,/>为所述布局比例的权重、/>为所述目标区域的数量的权重、/>为所述每个已布局单元到所述FPGA的边界的距离的权重,/>
2.根据权利要求1所述的方法,其特征在于,所述移动所述每个已布局单元,包括:
移动目标已布局单元,所述目标已布局单元为任一已布局单元;
当所述目标已布局单元的移动次数达到相应的预设次数阈值时,获取所述目标已布局单元移动过程中经过的单位区域内的所有可布局单位区域;
根据预设布局位置选取条件,从所述所有可布局单位区域中,确定所述目标已布局单元对应的目标单位区域;
将所述目标已布局单元布局于所述目标单位区域。
3.根据权利要求2所述的方法,其特征在于,所述预设布局位置选取条件包括:选取所有可布局单位区域中单位区域代价函数值最小的可布局单位区域;
所述根据预设布局位置选取条件,从所述所有可布局单位区域中,确定所述目标已布局单元对应的目标单位区域,包括:
根据代价函数公式,计算所述所有可布局单位区域的单位区域代价函数值;
根据所述单位区域代价函数值,从所述所有可布局单位区域中,选取所述单位区域代价函数值最小的可布局单位区域作为所述目标单位区域;
其中,所述代价函数公式为:,/>为所述单位区域代价函数值,/>为所述单位区域的线长,/>为所述单位区域的线长对应的权重,为所述单位区域的延迟裕量,/>为所述单位区域的延迟裕量对应的权重。
4.根据权利要求1所述的方法,其特征在于,在所述根据所述初始布局结果,确定所述FPGA上每个单位区域内的每个已布局单元对应的布局比例之前,所述方法还包括:
根据所述初始布局结果,判断所述FPGA上的单位区域是否存在目标区域,其中,所述目标区域用于表征相邻的两个单位区域内存在不同的已布局单元;
当所述FPGA上的单位区域存在所述目标区域时,移动所述目标区域周边的已布局单元至所述目标区域的同一侧;
所述根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级,包括:
根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级,且所述FPGA上不存在目标区域。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述初始布局结果,确定所述FPGA上每个单位区域内的每个已布局单元对应的布局比例之前,所述方法还包括:
根据所述初始布局结果,获取所述FPGA的所有已布局单元到所述FPGA的边界的平均距离;
当所述平均距离小于预设距离阈值时,移动所述FPGA的边界区域内的至少部分已布局单元至靠近所述FPGA中心的单位区域,直至所述平均距离大于或等于所述预设距离阈值,所述边界区域为所述FPGA上邻近边界的预设范围内的区域;
所述根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级,包括:
根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级,且所述所有已布局单元到所述FPGA的边界的平均距离大于或等于所述预设距离阈值。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级,包括:
根据所述每个已布局单元的移动优先级,移动所述每个已布局单元;
重复所述确定所述FPGA上每个单位区域内的每个已布局单元对应的布局比例的步骤,至所述根据所述每个已布局单元的移动优先级,移动所述每个已布局单元的步骤,直至所述每个已布局单元的移动优先级均低于预设优先级。
7.一种FPGA布局装置,其特征在于,所述装置包括:
初始布局模块,用于根据全局布局算法对FPGA进行初始布局,获得初始布局结果;
第一确定模块,用于根据所述初始布局结果,确定所述FPGA上每个单位区域内的每个已布局单元对应的布局比例,其中,每个已布局单元对应的布局比例根据每个已布局单元所在单位区域内所有已布局单元的数量,与每个已布局单元所在单位区域内可布局单元的数量的比值得到;
第二确定模块,用于根据所述每个已布局单元对应的布局比例,确定所述每个已布局单元的移动优先级,所述移动优先级与所述布局比例呈正相关;
布局单元移动模块,用于根据所述每个已布局单元的移动优先级,移动所述每个已布局单元,直至所述每个已布局单元的移动优先级均低于预设优先级;
所述FPGA布局装置还包括:
第一获取模块,用于在所述第二确定模块根据所述每个已布局单元对应的布局比例,确定所述每个已布局单元的移动优先级之前,获取所述FPGA上每个单位区域内的每个已布局单元周边的目标区域的数量,其中,所述目标区域用于表征相邻的两个单位区域内存在不同的已布局单元;
第三确定模块,用于确定所述FPGA上每个单位区域内的每个已布局单元到所述FPGA的边界的距离;
所述第二确定模块包括:
计算单元,用于根据优先级计算公式、所述布局比例、所述目标区域的数量以及所述每个已布局单元到所述FPGA的边界的距离,计算所述每个已布局单元的移动优先级数值,所述移动优先级数值用于表征移动优先级的高低;
其中,所述优先级计算公式为:
,/>为所述每个已布局单元的移动优先级数值,/>为所述布局比例,/>为所述目标区域的数量,为所述每个已布局单元到所述FPGA的边界的距离,/>为所述布局比例的权重、/>为所述目标区域的数量的权重、/>为所述每个已布局单元到所述FPGA的边界的距离的权重,/>
8.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至6任一项所述的方法。
CN202010711217.9A 2020-07-22 2020-07-22 Fpga布局方法、装置、电子设备及存储介质 Active CN111931447B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010711217.9A CN111931447B (zh) 2020-07-22 2020-07-22 Fpga布局方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010711217.9A CN111931447B (zh) 2020-07-22 2020-07-22 Fpga布局方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111931447A CN111931447A (zh) 2020-11-13
CN111931447B true CN111931447B (zh) 2024-06-18

Family

ID=73315658

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010711217.9A Active CN111931447B (zh) 2020-07-22 2020-07-22 Fpga布局方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111931447B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113591427B (zh) * 2021-08-05 2023-09-22 上海立芯软件科技有限公司 考虑单位移动和复杂布线约束的增量三维全局布线方法
CN114357931B (zh) * 2022-03-10 2022-05-17 中国人民解放军国防科技大学 存储体编译和布局协同的片上缓存设计方法和片上缓存

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680848A (zh) * 2014-11-19 2016-06-15 京微雅格(北京)科技有限公司 基于区域时钟的优化fpga芯片布局的方法
CN106528923A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种芯片全局布局方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7360190B1 (en) * 2003-07-11 2008-04-15 Altera Corporation Method and apparatus for performing retiming on field programmable gate arrays
US9424388B2 (en) * 2014-12-17 2016-08-23 International Business Machines Corporation Dividing lithography exposure fields to improve semiconductor fabrication
US10303202B1 (en) * 2016-08-15 2019-05-28 Altera Corporation Method and apparatus for performing clock allocation for a system implemented on a programmable device
CN108073740B (zh) * 2016-11-17 2021-05-28 上海复旦微电子集团股份有限公司 一种fpga详细布局的模拟退火方法
CN110998585B (zh) * 2017-06-22 2024-07-16 株式会社半导体能源研究所 布局设计***及布局设计方法
US10372871B2 (en) * 2017-07-28 2019-08-06 Globalfoundries Inc. IC layout post-decomposition mask allocation optimization
US10846456B2 (en) * 2018-05-02 2020-11-24 Taiwan Semiconductor Manufacturing Company Ltd. Integrated circuit modeling methods and systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105680848A (zh) * 2014-11-19 2016-06-15 京微雅格(北京)科技有限公司 基于区域时钟的优化fpga芯片布局的方法
CN106528923A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种芯片全局布局方法

Also Published As

Publication number Publication date
CN111931447A (zh) 2020-11-13

Similar Documents

Publication Publication Date Title
CN111931447B (zh) Fpga布局方法、装置、电子设备及存储介质
US20010014965A1 (en) Automatic global routing device for efficiently determining optimum wiring route on integrated circuit and global routing method therefor
CN104517092A (zh) 一种qr码校正图形的检测方法及***
US8108814B2 (en) Dummy metal insertion processing method and apparatus
US10289141B2 (en) Method for generating power distribution network (PDN) model, and power distribution network analysis method and device
CN113919266B (zh) 可编程器件的时钟规划方法、装置、电子设备及存储介质
CN114330212B (zh) 芯片管脚的排布方法、装置、计算机设备及存储介质
CN112150350A (zh) 模型平面布局方法、***以及计算机设备
CN111754429A (zh) 运动矢量后处理方法和装置、电子设备及存储介质
CN111738424B (zh) 神经网络处理方法、装置、电子设备及存储介质
GB2433379A (en) Modelling of cellular communication systems
CN108734665A (zh) 一种图像的校正方法、装置、设备及存储介质
KR20180055447A (ko) 데이터 처리 방법 및 장치
CN111881907B (zh) 一种边框回归的定位方法、装置和电子设备
KR101688435B1 (ko) 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법
CN110865882B (zh) 数据处理方法、装置、计算机设备和存储介质
CN113792509A (zh) 一种复位信号平衡方法和装置
CN108733869B (zh) 一种大规模三维集成电路分区方法和装置
CN109675316A (zh) 游戏场景图生成方法及装置
CN112257586B (zh) 目标检测中的真值框选择方法、装置、存储介质及设备
CN117556760B (zh) 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法
CN114201938A (zh) 延时模型确定方法、布局布线方法、装置、设备及介质
CN114999373A (zh) 确定显示屏配置方案的方法、装置、电子设备及介质
WO2023075742A1 (en) Efficiently performing inference computations of a fully convolutional network for inputs with different sizes
CN116933713A (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