FPGA布局方法、装置、电子设备和计算机可读介质与流程

文档序号:23383905发布日期:2020-12-22 13:48阅读:147来源:国知局
FPGA布局方法、装置、电子设备和计算机可读介质与流程

本申请实施例涉及集成电路设计领域,具体而言,涉及但不限于一种fpga布局方法、装置、电子设备和计算机可读介质。



背景技术:

fpga(field-programmablegatearray,现场可编程门阵列)是一种具有丰富硬件资源、强大并行处理能力和灵活可重配置能力的逻辑器件,这些特征使得fpga在数据处理、通信、网络等很多领域得到越来越多的广泛应用。

随着fpga芯片规模的扩大,芯片的布局愈发显得关键和重要,直接决定着芯片布线的复杂度和布线的成功率,并影响着芯片的面积、频率等性能。因此,在芯片布局上需要综合考虑多方面的代价,在满足多种约束的条件下,如何更好的对fpga进行布局是亟待解决的问题。



技术实现要素:

本申请实施例提供的一种fpga布局方法、装置、电子设备和计算机可读介质,主要解决的技术问题如何减少fpga电路时序延迟时间,提高fpga电路的工作效率。

第一方面,本申请实施例提供一种fpga布局方法,该方法包括:根据全局布局算法对fpga进行初始布局,得到初始布局结果,所述初始布局结果包括多个路径,每个所述路径上包括一个逻辑单元;获取每个所述路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,其中,所述路径的时间余量为电路信号从所述路径的起点传输至所述路径的终点的所消耗的时间与时间阈值之间的差值;确定所述第一路径上的第一逻辑单元,并根据所述第一逻辑单元查找位于第二路径的第二逻辑单元,所述第二路径的时间余量大于所述第一路径的时间余量;将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

可选的,将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元,包括:获取所述第二逻辑单元的代价值,所述代价值用于表征所述第二逻辑单元对应的时序特性;当所述第二逻辑单元的代价值大于代价阈值时,将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

可选的,第二逻辑单元包括多个逻辑子单元,每个所述逻辑子单元对应一条子路径,获取所述第二逻辑单元的代价值,包括:获取所述第二逻辑单元对应的关键子路径和非关键子路径的时间余量;根据所述第二逻辑单元对应的关键子路径和非关键子路径的时间余量获取所述第二逻辑单元的代价值。

可选的,所述代价值的计算公式如下:

其中,costsite为代价值,w为权重因子,slackcritical_inst和为同一逻辑单元对应的关键子路径和非关键子路径的时间余量,slackwors+margint的值是fpga中最小的时间余量值和经验值之和,margin为经验值,k为非关键子路径的个数。

可选的,将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元,包括:当存在多个代价值大于代价阈值的第二逻辑单元时,将代价值最大的第二逻辑单元作为目标逻辑单元,所述目标逻辑单元位于目标路径上;将所述第一路径上的逻辑单元替换为目标逻辑单元,将所述目标路径上的逻辑单元替换为所述第一逻辑单元。

可选的,所述方法还包括:当所述第二逻辑单元的代价值小于或者等于代价阈值时,再次执行第二逻辑单元查找操作,并判断再次获取的第二逻辑单元是否大于代价阈值,直到所述第二逻辑单元的代价值大于代价阈值时循环结束。

可选的,所述根据所述第一逻辑单元查找位于第二路径的第二逻辑单元,包括:确定所述第一逻辑单元的第一位置,并以所述第一位置确定查找范围;在所述查找范围内确定满足预设条件的第二逻辑单元。

第二方面,本申请实施例还提供一种fpga布局装置,该装置包括:初始布局模块、第一路径获取模块、逻辑单元查找模块以及单元交换模块。其中,初始布局模块用于根据全局布局算法对fpga进行初始布局,得到初始布局结果,所述初始布局结果包括多个路径,每个所述路径上包括一个逻辑单元。第一路径获取模块用于获取每个所述路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,其中,所述路径的时间余量为电路信号从所述路径的起点传输至所述路径的终点的所消耗的时间与时间阈值之间的差值。逻辑单元查找模块用于确定所述第一路径上的第一逻辑单元,并根据所述第一逻辑单元查找位于第二路径的第二逻辑单元,所述第二路径的时间余量大于所述第一路径的时间余量。单元交换模块用于将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行第一方面提供的方法。

第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行第一方面提供的方法。

本申请实施例提供的一种fpga布局方法、装置、电子设备和计算机可读介质,该方法通过将其获取的第二逻辑单元与第一逻辑单元进行交换可以有效减少fpga电路时序延迟时间,进而提高电路的工作效率,具体的,本申请首先可以根据全局布局算法对fpga进行初始布局,得到初始布局结果,而后基于该初始布局结果获取每个路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,在此基础上确定第一路径上的第一逻辑单元,并根据所述第一路径单元查找位于第二路径的第二逻辑单元,最后将第一路径上的逻辑单元替换为第二逻辑单元,以及将第二路径上的逻辑单元替换为第一逻辑单元。本申请中因获取的第二逻辑单元对应的第二路径的时间余量大于第一路径的时间余量,故其在一定程度上可以减少fpga电路时序延迟时间,提高fpga应用开发的效率。

本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。

附图说明

图1为本申请一实施例提供的一种fpga布局方法的流程示意图;

图2为本申请一实施例提供的一种fpga布局方法中网格示意图;

图3为本申请一实施例提供的一种fpga布局方法中步骤s130的流程示意图;

图4为本申请一实施例提供的一种fpga布局方法中第一逻辑单元和第二逻辑单元关系示意图;

图5为本申请一实施例提供的一种fpga布局方法中第一逻辑单元和第二逻辑单元交换后的示意图;

图6为本申请另一实施例提供的一种fpga布局方法的流程示意图;

图7为本申请另一实施例提供的一种fpga布局方法中步骤s260的流程示意图;

图8为本申请实施例提供的一种fpga布局装置的模块框图;

图9为本申请实施例提供的电子设备的模块框图;

图10为本申请实施例提供的一种计算机可读存储介质的模块框图。

具体实施方式

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

fpga芯片主要由可编程单元、输入/输出单元和可编程布线资源构成,现有技术中人们主要利用fpga的软件开发工具对应用设计依次进行逻辑综合、布局布线和配置位流生成,接着将硬件描述语言编写的逻辑电路程序编译并生成用于配置芯片的位流下载文件,最后将文件下载到芯片上以构建出能够实现相应逻辑功能的电路。现有fpga的逻辑单元数已经达到亿门级别,即现有fpga的资源多且程序大,如此也使的软件工具编译运行时间不断增长,进而导致了fpga应用开发效率过低,故减小fpga电路的时序延迟时间、提高电路工作速度成为fpga电路设计的关键。在fpga软件工作流程中,通过布局可以确定使用哪些逻辑单元来实现用户的电路功能,即布局处理效果在很大程度上会影响软件编译运行时间以及fpga电路的时序。

现有技术需通过迭代方式不断遍历芯片上的位置,从而找到一个符合要求的放置位置,但是扩展迭代过程通常由于设计本身、资源限制等,导致多数候选位置无法通过合法化检测,因此需要不断在更大范围寻找合法位置;或者在对各逻辑单元块进行性能优化时需要移除大量已放置的逻辑单元并对它们进行重新布局,如此会导致软件工具编译时间过长。

针对上述问题,发明人提出了本申请实施例提供的fpga布局方法、装置、电子设备和计算机可读介质,本申请实施例通过将其获取的第二逻辑单元与第一逻辑单元交换可以减少fpga电路时序延迟时间,提高电路的工作效率。

请参阅图1,为本申请一实施例提供的一种fpga布局方法的方法流程图,该方法中该方法包括步骤s110至步骤s140。

步骤s110:根据全局布局算法对fpga进行初始布局,得到初始布局结果。

在一些实施方式中,全局布局算法主要根据电路参数要求以及电路优化方法计算出fpga的最优布局方案,以使用户设计的逻辑单元(instance)可以放置在芯片的理想位置上,本申请可以将该理想位置称为初始放置位置。显然,本申请利用全局布局算法对fpga进行初始布局后可以为用户设计的逻辑单元分配一个初始位置,而这些逻辑单元的初始位置则可以构成初始布局结果。

作为一种方式,利用全局布局算法对fpga进行初始布局时,首先可以将fpga的芯片资源均匀切分为多个逻辑单元块,其中,逻辑单元块又可以包括多个逻辑单元,通过初始布局可以形成一个资源网格表,该资源网格表用于描述每个逻辑单元在芯片中二维分布的位置,即逻辑单元的位置可以用二维坐标表示。如图2给出了资源网格表示意图,通过图2可以知道在进行初始布局前需将fpga芯片均匀切分成多个网格,每个网格处可以对应放置不同的instance。

作为一种方式,本申请实施例可以利用全局布局算法对用户设计的电路进行布局,得到一个初始的布局结果。具体的,获取用户输入的电路,该电路可以包括多个逻辑单元(instance),而后对所述多个instance进行初始布局,即为每个instance分配一个芯片放置位置,该放置位置可以称为逻辑单元的初始放置位置。为了方便描述,本申请将instance称为逻辑单元,该instance也可以称为用户设计程序中的逻辑单元,每个逻辑单元可以包括多个逻辑子单元。

在一些实施方式中,根据全局布局算法对fpga进行初始布局,得到初始布局结果后可以对该初始布局结果进行分析,并获取关键路径上逻辑单元的放置信息,其中,关键路径指的是多条时序路径中时间余量最小的路径。时序路径主要是指由起点为电路主输入、传输路径经过逻辑单元和终点为电路的主输出构成的电路信号传输路径,即关键路径指的是对电路的工作频率有较大影响的时序路径。

本申请实施例中,初始布局结果可以包括多个路径,且每个所述路径上均可以包括一个逻辑单元,所述多个路径可以是多个关键路径,即不同的逻辑单元可以对应放置在不同的关键路径上。

步骤s120:获取每个所述路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径。

本申请实施例中,每个路径对应一个时间余量(slack)值,该时间余量为电路信号从路径的起点传输至路径的终点的所消耗的时间与时间阈值之间的差值。其中,电路信号从路径的起点传输至路径的终点的所消耗的时间可以称为延迟时间,而时间阈值则可以称为时钟周期,本申请实施例中时间余量可以是时钟周期减去延迟时间的值。如果时间余量为正值,则表示电路可以在规定的时钟周期内完成预设动作,如果时间余量为负值,则表示该条电路在规定的时钟周期内无法完成预设动作。因此,路径对应的时间余量越大,则表示该条路径的时序越好,而路径对应的时间余量越小,则表示该条路径的时序越差,其在一定程度上可能会影响整个电路的时序。另外,时间余量可以包括建立时间余量和保持时间余量,即本申请实施例中的时间余量可以是建立时间余量和保持时间余量之和,也可以指的是保持时间余量等。

为了优化初级布局结果,本申请可以根据对多个路径的时间余量进行排序,并选出时间余量较差的路径,而后对这些时间余量较差路径上的逻辑单元进行替换,即为这些路径上的逻辑单元查找一个更优的放置位置,以此来减少fpga电路时序的延迟时间。

作为一种方式,本申请可以将时间余量小于时间阈值的路径作为第一路径,该时间阈值可以根据实际情况进行设置,如获取不同时刻的最小时间余量值,并对这些时间余量加权求平均,得到的值就可以作为时间阈值,另外时间阈值也可以是经验值,时间阈值具体如何设置这里不进行明确限制可以根据实际需求设置。

作为另一种方式,本申请也可以根据时间余量的大小对所有的路径进行从小到大排序,并将前n个时间余量对应的路径作为第一路径。另外,本申请也可以结合关键路径的时间余量和节点等级来获取第一路径,其中,节点等级主要用于描述信号从电路主输入传输到当前逻辑单元经过的逻辑单元的数量,同时节点等级也用于表示信号在电路路径中传输的方向。换句话说,本申请可以按照时间余量从小到大和节点等级由高到低的标准对关键路径的逻辑单元进行排序。例如,初始布局结果中存在逻辑单元a、逻辑单元b和逻辑单元c,逻辑单元a和逻辑单元c对应的路径的时间余量相同均为0.1s,而逻辑单元c对应的路径的时间余量为0.2s,同时获取到逻辑单元a对应的节点等级为1级,而逻辑单元b对应的节点等级为2级,此时对这三个逻辑单元进行排序,得到的结果是逻辑单元b、逻辑单元a和逻辑单元c,因为逻辑单元b的时间余量和节点等级都符合预设条件,故可以将其对应的路径作为第一路径。

步骤s130:确定所述第一路径上的第一逻辑单元,并根据所述第一逻辑单元查找位于第二路径的第二逻辑单元。

在一些实施方式中,将时间余量小于时间阈值的路径作为第一路径之后,可以确定所述第一路径上的第一逻辑单元,该第一逻辑单元为用户设计程序中的逻辑单元,其中,第一逻辑单元可以包括多个逻辑子单元,且每个所述逻辑子单元对应一个路径,这些子路径可以分为关键子路径和非关键子路径,本申请实施例中第一逻辑单元可以对应一个关键子路径,以及对应多个非关键子路径。

作为一种方式,确定第一路径上的第一逻辑单元后,可以根据所述第一逻辑单元查找位于第二路径的第二逻辑单元,具体,设定扩展迭代的位置寻找区域和范围,并以第一逻辑单元的第一位置为网格中心向网格四周扩散查找一个满足预设条件的第二逻辑单元,所述第二逻辑单元位于第二路径上。其中,第二路径的时间余量大于所述第一路径的时间余量,即在获取到第二逻辑单元后可以先判断所述第二逻辑单元对应的第二路径的时间余量是否大于第一路径的时间余量,如果第二路径的时间余量大于第一路径的时间余量则进入步骤s140。如果第二路径的时间余量小于或者等于第一路径的时间余量则根据第一逻辑单元重新查找一个新的第二逻辑单元,所述新的第二逻辑单元与旧的第二逻辑单元位于不同的路径上。

作为另一种方式,当第二路径的时间余量大于第一路径的时间余量时,可以进一步检测所述第二路径的时间余量是否大于时间阈值,如果第二路径的时间余量大于时间阈值,则进入步骤s140;如果第二路径的时间余量小于或者等于时间阈值,则重新查找一个新的第二逻辑单元,所述新的第二逻辑单元与旧的第二逻辑单元位于不同的路径上。

请参阅图3,根据所述第一逻辑单元查找位于第二路径的第二逻辑单元可以包括步骤s131至步骤s132。

步骤s131:确定所述第一逻辑单元的第一位置,并以所述第一位置确定查找范围。

在一些实施方式中,在确定第一逻辑单元的第一位置后,可以以第一位置为中心确定一个查找范围,所述查找范围可以是fpga芯片的部分区域,当在该部分区域中未查找到符合条件的第二逻辑单元时,可以重新确定一个查找范围,即扩大查找范围。本申请实施例中,查找范围也可以是fpga芯片的整个区域,查找范围具体指的是芯片的那个区域,或者查找范围的面积具体多大,这里不进行明确限制可以根据实际情况进行选择。

步骤s132:在所述查找范围内确定满足预设条件的第二逻辑单元。

作为一种方式,在确定好第一位置的查找范围后,本申请可以以第一逻辑单元为网格中心向网格四周扩展查找符合预设条件的第二逻辑单元,其中,满足预设条件可以是所述第二逻辑单元对应的第二路径的时间余量是否大于时间阈值,或者也可以是所述第二逻辑单元对应的第二路径的时间余量是否大于第一逻辑单元的时间余量,且所述第二逻辑单元的节点等级低于所述第一逻辑单元的节点等级。

为了更清楚的说明第二逻辑单元的获取过程本申请给出了如图2所示的示例,图2中的“1”表示的第一位置,该第一位置处放置有第一逻辑单元,通过分析发现所述第一逻辑单元对应的路径的时间余量小于余量阈值,或者该第一逻辑单元对应的节点等级较高时,可以以“1”为中心向网格四周扩展查找到第二逻辑单元,查找顺序是2、3、4、5、6、7、8、9、10、11、12、13......等,当查找到符合条件的第二逻辑单元,则查找结束。例如,通过查找发现位置“4”处逻辑单元的路径的时间余量大于位置“1”处逻辑单元的路径的时间余量,此时就可以将位置“4”处的逻辑单元称为第二逻辑单元。

作为另一种方式,当查找到符合条件的第二逻辑单元后,确定查找操作是否超出查找范围,如果检测到查找操作超出查找范围则查找操作结束,如果未超出查找范围,则继续查找符合条件的第二逻辑单元,如此便存在多个符合条件的第二逻辑单元可能,当存在多个符合条件的第二逻辑单元时,本申请可以从所述多个第二逻辑单元中选出一个最优的作为目标逻辑单元,而后将第一路径上的逻辑单元替换为第二逻辑单元/目标逻辑单元,将第二路径/目标路径上的逻辑单元替换为第一逻辑单元,即进入步骤s140。

步骤s140:将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

在一些实施方式中,根据第一逻辑单元查找到位于第二路径的第二逻辑单元之后,本申请可以将所述第一路径上的逻辑单元替换为第二逻辑单元,以及将所述第二路径上的逻辑单元替换为第一逻辑单元。作为一种方式,当第一逻辑单元不包含其他子逻辑单元时,获取到第二逻辑单元后可以将第一路径上的逻辑单元替换为第二逻辑单元,将第二路径上的逻辑单元替换为第一逻辑单元。

通常情况下第一逻辑单元可以包括多个子逻辑单元,且每个子逻辑单元均对应一个子路径,当所述第一逻辑单元中的一个子逻辑单元对应的子路径的时间余量小于时间阈值时,则可以根据所述第一逻辑单元查找位于第二路径上的第二路径单元。为了更清楚的理解逻辑单元与逻辑子单元的关系,本申请给出了如图4所示的示图,图4中101可以称为第一逻辑单元,而insta、instb以及instc都可以称为逻辑子单元,且insta、instb以及instc分别位于不同的路径上,因insta对应的路径的时间余量最小,故可以将其对应的路径称为关键子路径,而instb和instc对应的路径则可以称为非关键子路径。本申请可以以第一逻辑单元101为中心向网格四周扩展查找符合条件的第二逻辑单元,也可以以第一逻辑单元101下的子逻辑单元insta为中心向网格四周扩展查找符合条件的第二逻辑单元。以insta为例,以其为中心向四周扩展查找到符合条件的第二逻辑单元102,该第二逻辑单元102可以包括多个子逻辑单元,这些子逻辑单元分别为instd、inste和instf。通过查找发现instd符合第二逻辑单元的查找条件,此时则可以将insta和instd进行替换。即将instd从102的位置上移到101的insta处,同时将insta从101的位置上移到102的instd处。

在另一些实施方式中,为了减少逻辑单元之间的连线资源,缩短连线长度,通常会将相关性大的多个子逻辑单元放置在同一个逻辑单元下,故insta、instb和instc之间的相关性比较大,且instd、inste和instf之间的相关性比较大,为了避免交换导致的连线冲突增大电路时序延迟,本申请可以将第一逻辑单元101和第二逻辑单元102进行整体替换,即格点交换。具体的,将第一逻辑单元101和第二逻辑单元102中所有逻辑子单元进行一一对应调换,即将第一逻辑单元101的为insta、instb和instc和第二逻辑单元102内的为instd、inste和instf进行位置交换,如此交换后的第一逻辑单元101内放置的是为instd、inste和instf,而交换后的第二逻辑单元102内放置的则是insta、instb和instc,交换后的第一逻辑单元101和第二逻辑单元102如图5所示,通过整体的格点交换可以加快扩展迭代的速度,同时可以减少电路的时序延迟。

本申请实施例提供的一种fpga布局方法,通过将其获取的第二逻辑单元与第一逻辑单元进行交换可以有效减少fpga电路时序延迟时间,进而提高电路的工作效率,具体的,本申请首先可以根据全局布局算法对fpga进行初始布局,得到初始布局结果,而后基于该初始布局结果获取每个路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,在此基础上确定第一路径上的第一逻辑单元,并根据所述第一路径单元查找位于第二路径的第二逻辑单元,最后将第一路径上的逻辑单元替换为第二逻辑单元,以及将第二路径上的逻辑单元替换为第一逻辑单元。本申请中因获取的第二逻辑单元对应的第二路径的时间余量大于第一路径的时间余量,故其在一定程度上可以减少fpga电路时序延迟时间,提高fpga应用开发的效率。另外,本申请在进行逻辑单元交换时,当确定第一逻辑单元包括多个子逻辑单元时可以进行整体的格点交换,其不仅可以加快扩展迭代的速度,而且可以减少电路的时序延迟,同时本申请在进行逻辑单元交换时不需要大量移除已放置的逻辑单元,其在一定程度上可以减少软件的编译时长。

请参阅图6,为本申请另一实施例提供的一种fpga布局方法的方法流程图,该方法中该方法包括步骤s210至步骤s260。

步骤s210:根据全局布局算法对fpga进行初始布局,得到初始布局结果。

步骤s220:获取每个所述路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径。

步骤s230:确定所述第一路径上的第一逻辑单元,并根据所述第一逻辑单元查找位于第二路径的第二逻辑单元。

步骤s210至步骤s230详细内容请参阅上述申请实施例的介绍。

步骤s240:获取所述第二逻辑单元的代价值,所述代价值用于表征所述第二逻辑单元对应的时序特性。

本申请实施例中,获取到位于第二路径的第二逻辑单元后,本申请可以评估将第一逻辑单元放置在第二逻辑单元处其时序是否能够得到改善,以及其他路径的时序是否变差。具体的,本申请可以获取第二逻辑单元的代价值,该代价值用于表示所述第二逻辑单元对应的时序特征,该时序特征指的是第二逻辑单元传输信号或者处理数据的快慢,第二逻辑单元的时序越好则对应的时间余量越大。本申请中代价值为所述第二逻辑单元处所有关键路径对应的时间余量的综合值,通过分析该代价值可以确定第一逻辑单元放置在第二逻辑单元处是否合适。需要说明书的是,本申请实施例中代价值表示的是交换逻辑单元实际付出代价是大还是小,其可以是人为指定,也可以通过计算获取。

在一些实施方式中,第一逻辑单元和第二逻辑单元均可以包括多个逻辑子单元,且每个逻辑子单元对应一条路径,其中,获取第二逻辑单元的代价值可以包括:获取所述第二逻辑单元对应的关键子路径和非关键子路径的时间余量,然后根据所述第二逻辑单元对应的关键子路径和非关键子路径的时间余量获取所述第二逻辑单元的代价值。如图5第二逻辑单元102中的逻辑子单元instd对应的路径即可称为关键子路径,而inste和instf对应的路径则可以称为非关键子路径,每个子路径对应一个时间余量,通过综合计算这些时间余量即可获取到第二逻辑单元的代价值。

作为一种方式,第二逻辑单元的代价值的计算公式如下:

其中,costsite为代价值,w为权重因子,slackcritical_inst和为同一逻辑单元对应的关键子路径和非关键子路径的时间余量,slackwors+margint的值是fpga中最小的时间余量值和经验值之和,margin为经验值,k为非关键子路径的个数。本申请实施例中margin作为经验值,为常数,其可以根据实际需求进行设置。例如,将其设置为100或者1000等。代价值越大则表示逻辑单元对应的路径的时序越好。

步骤s250:判断所述代价值是否大于代价阈值。

在一些实施方式中,获取到第二逻辑单元的代价值后可以判断该代价值是否大于代价阈值,如果该代价值大于代价阈值则将第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元;如果第二逻辑单元的代价值小于或者等于代价阈值则不进行逻辑单元的交换。

在另一些实施方式中,本申请也可以分别获取第一逻辑单元的第一代价值和第二逻辑单元的第二代价值,而后判断第二逻辑单元的第二代价值是否大于第一逻辑单元的第一代价值,如果第二逻辑单元的第二代价值大于第一逻辑单元的第一代价值,则将第一路径上的逻辑单元替换为第二逻辑单元,将第二路径上的逻辑单元替换为第一逻辑单元。

步骤s260:将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

作为另一种方式,当第二逻辑单元的代价值小于或者等于代价阈值时,本申请实施例可以再次执行第二逻辑单元查找操作,并判断再次获取的第二逻辑单元是否大于代价阈值,直到所述第二逻辑单元的代价值大于代价阈值时循环结束。换句话说,当第二逻辑单元的代价阈值大于代价阈值时将第一路径上的逻辑单元替换为第二逻辑单元,以及将第二路径上的逻辑单元替换为第一逻辑单元,即进入步骤s260,而当第二逻辑单元的代价阈值小于或者等于代价阈值时再次此执行第二逻辑单元查找操作,即进入步骤s230。

请参阅图7,将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元可以包括步骤s261至步骤s262。

步骤s261:当存在多个代价值大于代价阈值的第二逻辑单元时,将代价值最大的第二逻辑单元作为目标逻辑单元。

通过上述介绍可以知道,获取到第一逻辑单元后可以确定出所述第一逻辑单元的第一位置,而后基于所述第一位置确定出一个查找范围,该查找范围中可能存在多个代价值大于代价阈值的第二逻辑单元,故此时可以将代价值最大的第二逻辑单元作为目标逻辑单元。另外,如果代价值最大的第二逻辑单元为多个时,可以分别获取这些第二逻辑单元的节点等级,并将节点等级低的第二逻辑单元作为目标逻辑单元,目标逻辑单元位于目标路径上。

步骤s262:将所述第一路径上的逻辑单元替换为目标逻辑单元,将所述目标路径上的逻辑单元替换为所述第一逻辑单元。

本申请实施例提供的一种fpga布局方法,通过将其获取的第二逻辑单元与第一逻辑单元进行交换可以有效减少fpga电路时序延迟时间,进而提高电路的工作效率,具体的,本申请首先可以根据全局布局算法对fpga进行初始布局,得到初始布局结果,而后基于该初始布局结果获取每个路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,在此基础上确定第一路径上的第一逻辑单元,并根据所述第一路径单元查找位于第二路径的第二逻辑单元,最后将第一路径上的逻辑单元替换为第二逻辑单元,以及将第二路径上的逻辑单元替换为第一逻辑单元。本申请中因获取的第二逻辑单元对应的第二路径的时间余量大于第一路径的时间余量,故其在一定程度上可以减少fpga电路时序延迟时间,提高fpga应用开发的效率。另外,本申请通过引入代价值可以获取到时序更好的第二逻辑单元,同时本申请提出的fpga布局方法在全局布局算法的基础上实现的,其实现简单易于工程实现。

请参阅图8,为本申请实施例提供的一种fpga布局装置的结构框图,该fpga布局装置300包括:初始布局模块310、第一路径获取模块320、逻辑单元查找模块330以及单元交换模块340。

初始布局模块310,用于根据全局布局算法对fpga进行初始布局,得到初始布局结果,所述初始布局结果包括多个路径,每个所述路径上包括一个逻辑单元。

第一路径获取模块320,用于获取每个所述路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,其中,所述路径的时间余量为电路信号从所述路径的起点传输至所述路径的终点的所消耗的时间与时间阈值之间的差值。

进一步地,第一路径获取模块320还用于确定所述第一逻辑单元的第一位置,并以所述第一位置确定查找范围,在所述查找范围内确定满足预设条件的第二逻辑单元。

逻辑单元查找模块330,用于确定所述第一路径上的第一逻辑单元,并根据所述第一逻辑单元查找位于第二路径的第二逻辑单元,所述第二路径的时间余量大于所述第一路径的时间余量。

单元交换模块340,用于将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

进一步地,单元交换模块340还用于获取所述第二逻辑单元的代价值,所述代价值用于表征所述第二逻辑单元对应的时序特性;当所述第二逻辑单元的代价值大于代价阈值时,将所述第一路径上的逻辑单元替换为第二逻辑单元,将所述第二路径上的逻辑单元替换为所述第一逻辑单元。

进一步地,单元交换模块340还用于获取第二逻辑单元对应的关键子路径和非关键子路径的时间余量,根据所述第二逻辑单元对应的关键子路径和非关键子路径的时间余量获取所述第二逻辑单元的代价值。代价值的计算公式:其中,costsite为代价值,w为权重因子,slackcritical_inst和为同一逻辑单元对应的关键子路径和非关键子路径的时间余量,slackwors+margint的值是fpga中最小的时间余量值和经验值之和,margin为经验值,k为非关键子路径的个数。

进一步地,单元交换模块340还用于当存在多个代价值大于代价阈值的第二逻辑单元时,将代价值最大的第二逻辑单元作为目标逻辑单元,所述目标逻辑单元位于目标路径上;将所述第一路径上的逻辑单元替换为目标逻辑单元,将所述目标路径上的逻辑单元替换为所述第一逻辑单元。

可选的,fpga布局装置300用于当所述第二逻辑单元的代价值小于代价阈值时,再次执行第二逻辑单元获取操作,并判断再次获取的第二逻辑单元是否大于代价阈值,直到所述第二逻辑单元的代价值大于代价阈值时循环结束。

综上所述,本申请实施例提供的一种fpga布局方法、装置、电子设备和计算机可读介质,该方法通过将其获取的第二逻辑单元与第一逻辑单元进行交换可以有效减少fpga电路时序延迟时间,进而提高电路的工作效率,具体的,本申请首先可以根据全局布局算法对fpga进行初始布局,得到初始布局结果,而后基于该初始布局结果获取每个路径的时间余量,并将时间余量小于时间阈值的路径作为第一路径,在此基础上确定第一路径上的第一逻辑单元,并根据所述第一路径单元查找位于第二路径的第二逻辑单元,最后将第一路径上的逻辑单元替换为第二逻辑单元,以及将第二路径上的逻辑单元替换为第一逻辑单元。本申请中因获取的第二逻辑单元对应的第二路径的时间余量大于第一路径的时间余量,故其在一定程度上不仅可以减少fpga电路时序延迟时间,同时能够提高fpga应用开发的效率。

请参阅图9,基于上述的一种fpga布局方法、装置、电子设备和计算机可读介质,本申请实施例还提供了另一种可以执行前述一种fpga布局方法的电子设备400。电子设备400包括相互耦合的一个或多个(图中仅示出一个)处理器410以及存储器420。其中,该存储器420中存储有可以执行前述实施例中内容的程序,而处理器410可以执行该存储器420中存储的程序,存储器420包括前述实施例中所描述的装置。

其中,处理器410可以包括一个或者多个处理核。处理器410利用各种接口和线路连接整个电子设备400内的各个部分,通过运行或执行存储在存储器420内的指令、程序、代码集或指令集,以及调用存储在存储器420内的数据,执行电子设备400的各种功能和处理数据。可选地,处理器410可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器410可集成中央处理器(centralprocessingunit,cpu)、视频图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器410中,单独通过一块通信芯片进行实现。

存储器420可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。存储器420可用于存储指令、程序、代码、代码集或指令集。存储器420可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、视频图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备400在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。

本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子设备的结构造成限定。例如,电子设备400还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。

请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质500中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。

计算机可读存储介质500可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质500包括非易失性计算机可读介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质500具有执行上述方法中的任何方法步骤的程序代码510的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码510可以例如以适当形式进行压缩。

可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、系统中的功能模块/单元可以被实施为软件(可以用计算系统可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。

此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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