一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

可编程逻辑器件中节点单元的布局方法、装置及相关设备与流程

2022-02-20 05:43:39 来源:中国专利 TAG:

1.本发明涉及可编程逻辑器件(programmablelogicdevice)
技术领域
,尤其涉及一种可编程逻辑器件中节点单元的布局方法、装置、计算机设备及存储介质。
背景技术
:2.可编程逻辑器件中的fpga芯片具有可编程的功能,但是经常需要设计出来的芯片达到比较高的时序要求,如何在芯片布局设计的时候保时序满足设计要求非常重要;全局布局是芯片设计布局过程中一个非常重要的环节,基本决定了芯片设计单元的大概位置,对于芯片设计的实际时序有很大的影响,所以在全局布局过程中保证芯片设计的时序要求更加重要。3.传统技术中fpga芯片的全局布局过程,会不断调整设计单元的位置,在每次调整完成之后,需要重新计算调整的设计单元所在的每条有时序要求的路径的总延时是否在规定范围内,导致全局布局过程耗时十分长,降低了fpga芯片设计和开发的效率。技术实现要素:4.本发明实施例提供一种可编程逻辑器件中节点单元的布局方法、装置、计算机设备及存储介质,以解决传统fpga芯片设计中全局布局过程耗时长的问题。5.一种可编程逻辑器件中节点单元的布局方法,包括:6.获取所有从输入单元到输出单元的时序路径,以及每条时序路径的预设最大延时阈值;7.设定每条时序路径中相邻节点单元的路径为子时序路径,并根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时,所述节点单元包括所述输入单元和所述输出单元;8.至少调整一个所述节点单元的位置,使得被调整的节点单元的子时序路径的实际子时序路径延时小于所述预设子时序路径最大延时;9.根据所述预设子时序路径最大延时、所述实际子时序路径延时和预设的损失函数计算时序损失值;10.判断所述时序损失值是否小于预设时序损失值,若否,则循环所述至少调整一个所述节点单元的位置至所述判断所述时序损失值是否小于预设时序损失值之间的步骤,直到所述时序损失值小于预设时序损失值时完成布局。11.一种可编程逻辑器件中节点单元的布局装置,包括:12.获取模块,用于获取所有从输入单元到输出单元的时序路径,以及每条时序路径的预设最大延时阈值;13.第一计算模块,用于设定每条时序路径中相邻节点单元的路径为子时序路径,并根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时,所述节点单元包括所述输入单元和所述输出单元;14.调整模块,用于至少调整一个所述节点单元的位置,使得被调整的节点单元的子时序路径的实际子时序路径延时小于所述预设子时序路径最大延时;15.第二计算模块,用于根据所述预设子时序路径最大延时、所述实际子时序路径延时和预设的损失函数计算时序损失值;16.判断模块,用于判断所述时序损失值是否小于预设时序损失值,若否,则循环所述至少调整一个所述节点单元的位置至所述判断所述时序损失值是否小于预设时序损失值之间的步骤,直到所述时序损失值小于预设时序损失值时完成布局。17.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述可编程逻辑器件中节点单元的布局方法的步骤。18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述可编程逻辑器件中节点单元的布局方法的步骤。19.本技术提出的可编程逻辑器件中节点单元的布局方法、装置、计算机设备及存储介质,应用于fpga芯片设计领域,通过根据每条时序路径设置的预设最大延时阈值,计算出每个子时序路径的预设子时序路径最大延时,然后在所述fpga芯片的全局布局过程中,在调整单个节点单元的位置时保证所述节点单元所在的子时序路径的实际延时都不会超过所述预设子时序路径最大延时,在全局布局过程中调整了节点单元后并不需要进行时序计算分析任务,很大程度降低了全局布局过程的耗时,也满足了所述fpga芯片设计的时序要求。附图说明20.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。21.图1是本发明一实施例中可编程逻辑器件中节点单元的布局方法的一流程图;22.图2是本发明一实施例中时序路径和子时序路径的结构示意图;23.图3是本发明一实施例中简单时序路径的一示例图;24.图4是本发明一实施例中复杂时序路径的一示例图;25.图5是本发明一实施例中可编程逻辑器件中节点单元的布局装置的结构示意图;26.图6是本发明一实施例中计算机设备的一示意图。具体实施方式27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。28.在一实施例中,如图1所示,提供一种可编程逻辑器件中节点单元的布局方法,包括如下步骤s101至s105:29.s101、获取所有从输入单元到输出单元的时序路径,以及每条时序路径的预设最大延时阈值。30.其中,在本实施例中以可编程逻辑器件之一的fpga芯片为例进行说明。31.其中,如图2所示,ff1、ff2是fpga芯片设计中常见的寄存器单元,lut1、lut2、lut3是fpga芯片设计中常见的查找表(lookuptable,lut),clk是跟时序有关的系统时钟;需要传输的数据data需要从所述ff1单元输入,然后经过所述lut1单元、所述lut2单元、所述lut3单元,最后从所述ff2单元输出,则从所述ff1单元到所述ff2单元有时序要求的数据传输路径称为一条时序路径;进行全局布局时,会设置从所述ff1单元到所述ff2单元的时序路径的最大延时阈值。32.在一些实施例中,给每条所述时序路径设置预设最大延时阈值,可以保证在fpga芯片设计的全局布局流程中所述时序路径满足设计要求。33.其中,所述时序路径的确定可以是从ff1单元到ff2单元的时序路径,也可以是从ff2单元到ff1单元的时序路径,即从ff1单元到ff2单元的时序路径和从ff2单元到ff1单元的时序路径规定为同一条时序路径;在进行时序路径搜索前,会先拟定时序路径的确定规则,即统一从输入单元到输出单元的路径作为唯一的一条时序路径或统一从输出单元到输入单元的路径作为唯一的一条时序路径。34.s102、设定每条时序路径中相邻节点单元的路径为子时序路径,并根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时,所述节点单元包括所述输入单元和所述输出单元。35.其中,如图2所示,从所述ff1单元到所述ff2单元的时序路径上,存在从所述ff1单元到所述lut1单元的子路径、从所述lut1单元到所述lut2单元的子路径、从所述lut2单元到所述lut3单元的子路径、从所述lut3单元到所述ff2单元的子路径。36.在所述时序路径存在预设最大延时阈值后,可以计算出所述子时序路径的预设子时序路径最大延时;根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时的步骤包括:37.通过以下公式计算预设子时序路径最大延时:38.z_time=tmax/nnode39.其中,tmax表示预设最大延时阈值,nnode表示子时序路径的数量,z_time表示预设子时序路径最大延时。40.如图3所示,ff3表示输入单元,ff4表示输出单元,从ff3单元到ff4单元存在一条时序路径,lut3单元、lut4单元、lut5单元是所述时序路径中的节点单元,所述时序路径的预设最大延时阈值是total_delay,所述时序路径存在4个子时序路径,即ff3单元到lut3单元的第一子时序路径、lut3单元到lut4单元的第二子时序路径、lut4单元到lut5单元的第三子时序路径、lut5单元到ff4单元的第四子时序路径,最后可以根据预设子时序路径最大延时计算公式计算出第一子时序路径、第二子时序路径、第三子时序路径和第四子时序路径的预设子时序路径最大延时delay。41.在fpga芯片设计图中存在比图2所示的时序路径更加复杂的时序路径,本实施例将fpga芯片设计图中所述时序路径包括简单时序路径和复杂时序路径。42.其中,简单时序路径与其他时序路径没有相同的节点单元,复杂时序路径与其他时序路径存在至少一个相同的节点单元;图2所示的就是一条简单时序路径;如图4所述,图中给出了一例复杂路径的范例,图中不仅存在从ff5单元到ff6单元的第一条时序路径以及所述第一条时序路径的预设最大延时阈值total_delay0,还存在从ff5单元到ff7单元的第二条时序路径以及所述第二条时序路径的预设最大延时阈值total_delay1;所述第一条时序路径包含了所述ff5单元到lut6单元的子时序路径、所述lut6单元到lut7单元的子时序路径、所述lut7单元到lut8单元的子时序路径、所述lut8单元到所述ff6单元的子时序路径,所述第二条时序路径包含了所述ff5单元到所述lut6单元的子时序路径、所述lut6单元到所述lut7单元的子时序路径、所述lut7单元到所述ff7单元的子时序路径;所述第一条时序路径和第二条时序路径存在相同的节点单元:所述ff5单元、所述lut6单元和所述lut7单元;根据所述第一条时序路径的预设最大延时阈值total_delay0、所述第一条时序路径的子时序路径数量4,以及所述预设子时序路径最大延时计算公式计算出所述第一条时序路径的预设子时序路径最大延时delay0;所述第二条时序路径的已经计算出所述ff5单元到所述lut6单元的第一预设子时序路径最大延时,和所述lut6单元到所述lut7单元的第二预设子时序路径最大延时,用所述第二条时序路径的预设延时最大阈值total_delay1减去所述第一预设子时序路径最大延时和所述第二预设子时序路径最大延时,得到所述lut7单元到所述ff7单元的预设子时序路径最大延时delay1。43.其中,所述lut7单元所述ff7单元的预设子时序路径最大延时delay1还可以有第二种计算方式;所述预设子时序路径最大延时delay1还可以根据所述预设子时序路径最大延时及计算公式进行计算,得到所述lut7单元到所述ff7单元的预设子时序路径最大延时;还可以将所述预设子时序路径最大延时delay1赋值给所述ff5单元到所述lut6单元的子时序路径和所述lut6单元到lut7单元的子时序路径;具体的预设子时序路径最大延时的计算方式,可根据所述fpga芯片设计的时序要求来灵活选择和更改,也可以只选定一部分的时序路径运用所述第二种计算方式。44.s103、至少调整一个所述节点单元的位置,使得被调整的节点单元的子时序路径的实际子时序路径延时小于所述预设子时序路径最大延时。45.其中,在全局布局过程中,会根据设计需求或者其他情况,调整一个或者多个节点单元的位置,由于预设了子时序路径最大延时,则在所述节点单元调整位置的过程中会不断计算所述节点单元所在的子时序路径的实际路径延时与所述预设子时序路径最大延时进行比较,若所述子时序路径的实际路径延时大于所述预设子时序路径最大延时,则判定所述节点单元当前被调整后的位置不合要求需要重新进行调整,若所述子时序路径的实际路径延时小于或等于所述预设子时序路径最大延时,则判定所述节点单元当前被调整后的位置符合要求。46.s104、根据所述预设子时序路径最大延时、所述实际子时序路径延时和预设的损失函数计算时序损失值。47.在一些实施例中,所述计算时序损失值的步骤包括:48.通过以下预设损失函数计算所述时序损失值:[0049][0050]其中,d表示实际子时序路径延时,c表示预设子时序路径最大延时,k表示预设常量值,i表示子时序路径的序号,c_time表示计算出的时序损失值。[0051]在一些实施例中,所述根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时包括如下步骤:[0052]计算简单时序路径的预设子时序路径最大延时;[0053]计算复杂时序路径的预设子时序路径最大延时。[0054]其中,默认可以先计算简单时序路径的预设子时序路径最大延时然后再计算复杂时序路径的预设子时序路径最大延时,或者先计算复杂时序路径的预设子时序路径最大延时然后再计算简单时序路径的预设子时序路径最大延时,同时也允许对默认设置的计算顺序进行更改。[0055]在一些实施例中,所述计算复杂时序路径的预设子时序路径最大延时的步骤包括:[0056]获取所述复杂时序路径中包含的单条时序路径;[0057]将所述单条时序路径按照包含所述子时序路径的数量进行升序或降序排列;[0058]按照所述排列的结果依次计算所述单条时序路径的预设子时序路径最大延时。[0059]在一些实施例中,所述单条时序路径拥有的子时序路径的数量代表了计算预设子时序路径最大延时的复杂程度;本实施例会开启多个线程计算所述复杂路径的预设子时序路径最大延时;因为将所述单条时序路径按照包含所述子时序路径的数量进行升序或降序排列后,即对所有所述单条时序路径进行了计算复杂程度进行了排序,可以根据所述单条时序路径的数量决定建立多少个线程进行计算,然后根据所述计算复杂程度的排序将所述单条时序路径均衡的分配给每个线程进行计算。[0060]在一些实施例中,因为所述单条时序路径都是从输入单元开始到输出单元结束,所以获取所述复杂时序路径中包含的单条时序路径采用有向图算法来统计复杂时序路径中存在的单条时序路径集合;其中,对于所述有向图算法有广度优先和深度优先两种不同的遍历方式,可以根据所述fpga芯片设计的节点单元的布局特性,合理地选择广度优先方式和/或深度优先方式;所述广度优先方式和深度优先方式是算法领域常见的遍历方式,所述广度优先方式和深度优先方式的具体实现原理在本实施例中在此不作赘述。[0061]s105、判断所述时序损失值是否小于预设时序损失值,若否,则循环所述至少调整一个所述节点单元的位置至所述判断所述时序损失值是否小于预设时序损失值之间的步骤,直到所述时序损失值小于预设时序损失值时完成布局。[0062]其中,通过所述预设损失函数计算出所述时序损失值大于或等于预设时序损失值时,则会调整所述fpga芯片设计图中至少一个节点单元,然后重新根据所述预设损失函数计算新的所述时序损失值并进行判断,直到所述时序损失值小于预设损失值时,停止调整所述节点单元,终止所述fpga的全局布局过程。[0063]本实施例提出的可编程逻辑器件中节点单元的布局方法,通过根据每条时序路径设置的预设最大延时阈值,计算出每个子时序路径的预设子时序路径最大延时;然后在所述fpga芯片的全局布局过程中,在调整单个节点单元的位置时保证所述节点单元所在的子时序路径的实际延时都不会超过所述预设子时序路径最大延时,在全局布局过程中调整了节点单元后减轻了进行时序计算分析任务,保证了节点单元每次调整都满足了时序要求,降低了节点单元调整的试错次数和消耗时间,很大程度降低了全局布局过程的耗时,也满足了所述fpga芯片设计的时序要求。[0064]应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。[0065]在一实施例中,提供一种可编程逻辑器件中节点单元的布局装置,该可编程逻辑器件中节点单元的布局装置与上述实施例中可编程逻辑器件中节点单元的布局方法一一对应。如图5所示,该可编程逻辑器件中节点单元的布局装置20包括获取模块201、第一计算模块202、调整模块203、第二计算模块204和判断模块205。各功能模块详细说明如下:[0066]获取模块,用于获取所有从输入单元到输出单元的时序路径,以及每条时序路径的预设最大延时阈值;[0067]第一计算模块,用于设定每条时序路径中相邻节点单元的路径为子时序路径,并根据所述预设最大延时阈值和所述子时序路径的数量计算出预设子时序路径最大延时,所述节点单元包括所述输入单元和所述输出单元;[0068]其中,所述第一计算模块,通过以下公式计算所述预设子时序路径最大延时:[0069]z_time=tmax/nnode[0070]其中,tmax表示所述预设最大延时阈值,nnode表示所述子时序路径的数量,z_time表示计算出的所述预设子时序路径最大延时。[0071]调整模块,用于至少调整一个所述节点单元的位置,使得被调整的节点单元的子时序路径的实际子时序路径延时小于所述预设子时序路径最大延时;[0072]第二计算模块,用于根据所述预设子时序路径最大延时、所述实际子时序路径延时和预设的损失函数计算时序损失值;[0073]其中,所述第二计算模块,通过以下预设的损失函数计算所述时序损失值:[0074][0075]其中,d表示实际子时序路径延时,c表示预设子时序路径最大延时,k表示预设常量值,i表示子时序路径的序号,c_time表示计算出的时序损失值。[0076]判断模块,用于判断所述时序损失值是否小于预设时序损失值,若否,则循环所述至少调整一个所述节点单元的位置至所述判断所述时序损失值是否小于预设时序损失值之间的步骤,直到所述时序损失值小于预设时序损失值时完成布局。[0077]在一些实施例中,所述时序路径包括简单时序路径和复杂时序路径,其中,简单时序路径与其他时序路径没有相同的节点单元,复杂时序路径与其他时序路径存在至少一个相同的节点单元;所述第一计算模块包括:[0078]简单时序路径计算单元,用于计算简单时序路径的预设子时序路径最大延时阈值;[0079]复杂时序路径计算单元,用于计算复杂时序路径的预设子时序路径最大延时阈值。[0080]在一些实施例中,所述复杂时序路径计算单元还包括:[0081]单条时序路径获取子单元,用于获取所述复杂时序路径中包含的单条时序路径;[0082]单条时序路径排序子单元,用于将所述单条时序路径按照包含所述子时序路径的数量进行升序或降序排列;[0083]第三计算子单元,用于按照所述排列的结果依次计算所述单条时序路径的预设子时序路径最大延时。[0084]其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。[0085]关于可编程逻辑器件中节点单元的布局装置的具体限定可以参见上文中对于可编程逻辑器件中节点单元的布局方法的限定,在此不再赘述。上述可编程逻辑器件中节点单元的布局装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。[0086]在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中可编程逻辑器件中节点单元的布局方法的步骤,例如图1所示的步骤101至步骤105及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器执行时实现上述实施例中可编程逻辑器件中节点单元的布局装置的各模块/单元的功能,例如图5所示模块201至模块205的功能。为避免重复,这里不再赘述。[0087]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。[0088]在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中可编程逻辑器件中节点单元的布局方法的步骤,例如图1所示的步骤101至步骤105及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机程序时实现上述实施例中可编程逻辑器件中节点单元的布局装置的各模块/单元的功能,例如图5所示模块201至模块205的功能。为避免重复,这里不再赘述。[0089]所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。[0090]所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如文字编辑功能、图像绘制功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据(比如文字数据、图像数据等)等。[0091]所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。[0092]所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。[0093]以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献