CN118070724A - Fpga延时优化方法、装置、计算机设备及存储介质 - Google Patents
Fpga延时优化方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN118070724A CN118070724A CN202410253844.0A CN202410253844A CN118070724A CN 118070724 A CN118070724 A CN 118070724A CN 202410253844 A CN202410253844 A CN 202410253844A CN 118070724 A CN118070724 A CN 118070724A
- Authority
- CN
- China
- Prior art keywords
- nodes
- register
- fpga chip
- positions
- registers
- 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.)
- Granted
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000012300 Sequence Analysis Methods 0.000 claims abstract description 10
- 238000013507 mapping Methods 0.000 claims abstract description 10
- 230000015654 memory Effects 0.000 claims description 27
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 230000010354 integration Effects 0.000 description 5
- 238000002407 reforming Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000006866 deterioration Effects 0.000 description 2
- 238000007429 general method Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
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)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明涉及FPGA延时优化技术领域,公开了FPGA延时优化方法、装置、计算机设备及存储介质,方法包括:将用户设计的电路转化为目标网表;将目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置;对电路中的寄存器进行移动操作,更新目标网表和各节点在FPGA芯片上的位置;进行时序分析,获得优化结果;若优化结果为更优,判断更新次数是否达到预设更新次数阈值;若未达到预设更新次数阈值,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行对电路中的寄存器进行移动操作的步骤。本发明作用在布局阶段之后,延时优化效率高。
Description
技术领域
本发明涉及FPGA延时优化技术领域,具体涉及FPGA延时优化方法、装置、计算机设备及存储介质。
背景技术
时序重整(retiming)是一种常见的现场可编程门阵列(Field-ProgrammableGate Array,FPGA)延时优化方法,其通过调整寄存器的位置实现关键路径上延时的优化。其中,关键路径可简单理解为延时最长的路径。
现有的时序重整方法往往存在以下问题:
1、时间复杂度过高。理论上已经被证明,如果只考虑数据端口、输出端口以及时钟端口的寄存器,且时钟端口时钟信号相同的话,retiming问题存在最优解。但是如果使用相关方法,时间复杂度往往会达到O(n2log(n)) ,从而造成运行时长过长,无法处理较大网表(可简单理解为一种电路的表达方式)的情况。
2、作用在综合环节之后。从用户设计到FPGA芯片的使能往往需要经过综合,布局,布线,生成比特流几个流程。其中,将时序重整作用在综合环节之后,综合环节之后准确的时序信息极难获得,因此基于此时的时序信息进行的优化很多是无用的行为,另外一些优化可能导致结果的劣化。
发明内容
有鉴于此,本发明提供了一种FPGA延时优化方法、装置、计算机设备及存储介质,以解决现有的FPGA延时优化方法时间复杂度高且作用在综合环节之后,优化效率低的问题。
第一方面,本发明提供了一种FPGA延时优化方法,所述方法包括:
将用户设计的电路转化为目标网表,所述目标网表包括多个节点以及节点之间的连接关系,其中,每个所述节点对应所述电路中的一个器件,所述节点之间的连接关系表示所述电路上器件之间的连接关系,所述器件包括寄存器;
将所述目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置;
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果;
在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值;
在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤;
在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
本实施例通过将延时优化阶段作用在布局阶段之后,布线阶段之前,可以得到相较于将延时优化阶段作用在综合阶段之后更为准确的延时信息以及相较于布线阶段之后更小的操作复杂度与运行时间成本,以达到减少时间复杂度,提高FPGA延时优化效率的效果。
在一种可选的实施方式中,所述方法还包括:
在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时大于等于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,并且在更新次数未达到预设更新次数阈值的情况下,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤。
本实施例通过将延时优化阶段作用在布局阶段之后,布线阶段之前,达到减少时间复杂度,提高FPGA延时优化效率的效果。
在一种可选的实施方式中,所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置,包括:
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器;
判断每个寄存器的输出引脚是否为关键引脚;
在所述寄存器的输出引脚为关键引脚的情况下,判断所述寄存器能否进行前移操作,其中,若所述寄存器不存在用户约束,且所述寄存器的输入不是寄存器,且所述寄存器的输出所连接的组合逻辑单元的所有输入连接都是寄存器,且所述寄存器的输出所连接的组合逻辑单元为一个,则所述寄存器能进行前移操作;
在所述寄存器能进行前移操作的情况下,对所述寄存器进行前移操作,其中,前移操作包括:将所述寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器删除,在所述寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器;
在完成所有能进行前移操作的寄存器的前移操作的情况下,更新所述目标网表和所述各节点在FPGA芯片上的位置;
所述判断更新次数是否达到预设更新次数阈值,包括:
判断前移更新次数是否达到预设前移更新次数阈值;
所述在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤,包括:
在前移更新次数未达到预设前移更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器的步骤;
所述方法还包括:
在前移更新次数达到预设前移更新次数阈值的情况下,基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
所述判断更新次数是否达到预设更新次数阈值,包括:
判断后移更新次数是否达到预设后移更新次数阈值;
所述在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤,包括:
在后移更新次数未达到预设后移更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作的步骤;
所述在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置,包括:
在后移更新次数达到预设后移更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
本实施例通过全局网表遍历的形式确定需要被移动的寄存器,这种处理方式的时间复杂度仅为O(n),其中n代表网表中的节点数,相较于一般方法本方案在运行速度上将有极大提升。
在一种可选的实施方式中,通过以下步骤确定所述寄存器的输出引脚为关键引脚:
将所述寄存器的输出引脚的裕度,所述寄存器的输出引脚的最小裕度和当前关键路径的延时输入预设输出引脚关键性计算模型,获得所述寄存器的输出引脚的关键性;
其中,所述预设输出引脚关键性计算模型包括:
其中,c(i)代表第i个寄存器的输出引脚的关键性,slack(i)输出为第i个寄存器的输出引脚的裕度,slack(i)输出min为第i个寄存器的输出引脚的最小裕度,Tmax为当前关键路径的延时;
在所述寄存器的输出引脚的关键性大于预设关键性阈值的情况下,确定所述寄存器的输出引脚为关键引脚。
本实施例通过将延时优化阶段作用在布局阶段之后,布线阶段之前,达到减少时间复杂度,提高FPGA延时优化效率的效果。
在一种可选的实施方式中,所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作,更新所述目标网表和所述各节点在FPGA芯片上的位置,包括:
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器;
判断每个寄存器的输入引脚是否为关键引脚;
在所述寄存器的输入引脚为关键引脚的情况下,判断所述寄存器能否进行后移操作,其中,若所述寄存器不存在用户约束,且所述寄存器的输出端连接的不是寄存器,且所述寄存器的输入所连接的组合逻辑单元的所有输出连接都是寄存器,则所述寄存器能进行后移操作;
在所述寄存器能进行后移操作的情况下,对所述寄存器进行后移操作,其中,后移操作包括:将所述寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器删除,在所述寄存器的输入所连接的组合逻辑单元的每一个输入端插入一个寄存器;
在完成所有能进行后移操作的寄存器的后移操作的情况下,更新所述目标网表和所述各节点在FPGA芯片上的位置。
本实施例通过全局网表遍历的形式确定需要被移动的寄存器,这种处理方式的时间复杂度仅为O(n),其中n代表网表中的节点数,相较于一般方法本方案在运行速度上将有极大提升。
在一种可选的实施方式中,在所述对所述寄存器进行前移操作之前,所述方法还包括:
获取所述寄存器的初始态以及所述寄存器的输出所连接的组合逻辑单元的初始输出信号;
在所述更新所述目标网表和所述各节点在FPGA芯片上的位置之前,所述方法还包括:
判断前移操作插入的寄存器的输出值与所述初始输出信号是否相同;
在所述前移操作插入的寄存器的输出值与所述初始输出信号不同的情况下,在所述前移操作插入的寄存器的输入端和输出端分别添加一个反相器。
本实施例通过插入反向器的方式解决了寄存器移动过程中可能存在的初始态不一致的问题。
在一种可选的实施方式中,在所述对所述寄存器进行后移操作之前,所述方法还包括:
获取所述寄存器的初始态以及所述寄存器的输入所连接的组合逻辑单元的初始输入信号;
在所述更新所述目标网表和所述各节点在FPGA芯片上的位置之前,所述方法还包括:
判断后移操作插入的寄存器的输入值与所述初始输入信号是否相同;
在所述后移操作插入的寄存器的输入值与所述初始输入信号不同的情况下,在所述后移操作插入的寄存器的输入端和输出端分别添加一个反相器。
本实施例通过插入反向器的方式解决了寄存器移动过程中可能存在的初始态不一致的问题。
在一种可选的实施方式中,若所述寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器中至少一个寄存器能进行前移操作,且所述组合逻辑单元的所有输入连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行前移操作的寄存器数量对所述组合逻辑单元进行复制,将能进行前移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对所述寄存器进行前移操作;
若所述寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器中至少一个寄存器能进行后移操作,且所述组合逻辑单元的所有输出连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行后移操作的寄存器数量对所述组合逻辑单元进行复制,将能进行后移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对所述寄存器进行后移操作。
本实施例考虑了不同类别的寄存器移动的情况,通过节点复制可以极好的保证寄存器移动后的功能一致性。
在一种可选的实施方式中,在所述复制组合逻辑单元的个数超过限定值的情况下,确定所述组合逻辑单元的所有输入连接的寄存器无法进行前移操作或所述组合逻辑单元的所有输出连接的寄存器无法进行后移操作。
本实施例通过对新增节点的数量限制也保证了节点复制不会超出可控范围。
第二方面,本发明提供了一种FPGA延时优化装置,所述装置包括:
电路转化模块,用于将用户设计的电路转化为目标网表,所述目标网表包括多个节点以及节点之间的连接关系,其中,每个所述节点对应所述电路中的一个器件,所述节点之间的连接关系表示所述电路上器件之间的连接关系,所述器件包括寄存器;
节点映射模块,用于将所述目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置;
位置更新模块,用于基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
优化结果获取模块,用于基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果;
第一判断模块,用于在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值;
第一返回执行模块,用于在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤;
输出模块,用于在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的FPGA延时优化方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的FPGA延时优化方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术中获得FPGA芯片的使能的流程示意图;
图2是根据本发明实施例的获得FPGA芯片的使能的流程示意图;
图3是根据本发明实施例的FPGA延时优化方法的流程示意图;
图4是根据本发明实施例的寄存器的示意图;
图5是根据本发明实施例的另一FPGA延时优化方法的流程示意图;
图6是根据本发明实施例的又一FPGA延时优化方法的流程示意图;
图7是根据本发明实施例的寄存器能否进行前移操作或后移操作的合法性判断的流程示意图;
图8是根据本发明实施例的移动操作前后寄存器与组合逻辑单元的连接示意图;
图9是根据本发明实施例的又一FPGA延时优化方法的流程示意图;
图10是根据本发明实施例的解决前移操作初始态问题的流程示意图;
图11是根据本发明实施例的对不同类别的寄存器进行后移的示意图;
图12是根据本发明实施例的又一对不同类别的寄存器进行后移的示意图;
图13是根据本发明实施例的FPGA延时优化装置的结构框图;
图14是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出相关技术中获得FPGA芯片的使能的流程示意图。如图1所示,相关技术中,从用户设计到FPGA芯片的使能往往需要经过综合阶段、布局阶段、布线阶段和生成比特流阶段。其中,生成比特流阶段可以简单理解为将前面步骤所产生的结果转化为能将FPGA芯片使能的结果,不涉及优化操作。综合阶段是将用户设计转化为网表,其中,网表可以简单理解为一种电路的表示方式。布局阶段将综合阶段得到的网表上的每一个节点映射到FPGA芯片的具体位置上。布线阶段基于布局阶段的位置以及网表中的引脚连接关系确定在FPGA芯片上引脚之间的具体连接方式。上述综合阶段、布局阶段和布线阶段均涉及到关键路径延时的优化,但是可以看到上述三个阶段信息单向传递,每个阶段的优化手段均存在较大的局限性,因此还存在极大的优化空间。
相关技术中,时序重整(retiming)是一种常见的现场可编程门阵列(Field-Programmable Gate Array,FPGA)延时优化方法,其通过调整寄存器的位置实现关键路径上延时的优化。其中,关键路径可简单理解为延时最长的路径。
相关技术中的时序重整方法往往存在以下问题:
1、时间复杂度过高。理论上已经被证明,如果只考虑数据端口、输出端口以及时钟端口的寄存器,且时钟端口时钟信号相同的话,retiming问题存在最优解。但是如果使用相关方法,时间复杂度往往会达到O(n2log(n)) ,从而造成运行时长过长,无法处理较大网表(可简单理解为一种电路的表达方式)的情况。
2、作用在综合环节之后。从用户设计到FPGA芯片的使能往往需要经过综合,布局,布线,生成比特流几个流程。其中,将时序重整作用在综合环节之后,综合环节之后准确的时序信息极难获得,因此基于此时的时序信息进行的优化很多是无用的行为,另外一些优化可能导致结果的劣化。
3、忽略初始态的处理。一般的寄存器往往都能进行复位或置位设置,此时整个电路初始态下的功能也即为重要,忽略初始态极可能造成电路功能错误。
本发明实施例提供了一种FPGA延时优化方法,图2示出本发明实施例获得FPGA芯片的使能的流程示意图,如图2所示,本发明实施例从用户设计到FPGA芯片的使能需要经过综合阶段、布局阶段、延时优化阶段、布线阶段和生成比特流阶段。通过将延时优化阶段作用在布局阶段之后,布线阶段之前,可以得到相较于将延时优化阶段作用在综合阶段之后更为准确的延时信息以及相较于布线阶段之后更小的操作复杂度与运行时间成本,以达到减少时间复杂度,提高FPGA延时优化效率的效果。
根据本发明实施例,提供了一种FPGA延时优化方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种FPGA延时优化方法,可用于上述的移动终端,如中央处理单元,服务器等,图3是根据本发明实施例的FPGA延时优化方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,将用户设计的电路转化为目标网表,目标网表包括多个节点以及节点之间的连接关系,其中,每个节点对应电路中的一个器件,节点之间的连接关系表示电路上器件之间的连接关系,器件包括寄存器。
可以理解的是,该步骤相当于上述综合阶段的内容。
其中,本实施例中的寄存器共有四种类型,分别为同步复位、同步置位、异步置位和异步复位。复位和置位的区别在于复位信号来临时寄存器的输出为0,置位信号来临时寄存器的输出为1。同步和异步的区别在于同步在复位或置位信号来临时还需要处于时钟上升或下降沿,复位或置位信号才会有效,异步则复位或置位信号不依赖于时钟。
图4示出寄存器的结构示意图。上述四种类型的寄存器均有类似图4所示结构。如图4所示,一个寄存器共有5个引脚,分别为四个输入引脚D,CE,CLK,R/S和一个输出引脚Q。
其中,D引脚连接输入信号,CE引脚连接时钟使能信号,CLK引脚连接时钟信号,R/S引脚连接复位或置位信号。
需要说明的是,若CE引脚没有被使能,则整个寄存器就没有使能。在没有被复位或置位,且整个寄存器正常使能的情况下,在每一个时钟的上升沿或下降沿Q引脚的输出值会变为D引脚的输入值。
步骤S302,将目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置。
可以理解的是,该步骤即为上述布局阶段的步骤,将综合阶段得到的目标网表上的每一个节点映射到FPGA芯片的具体位置上,获得各节点在FPGA芯片上的位置,也即布局结果。
步骤S303,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作,更新目标网表和各节点在FPGA芯片上的位置。
本实施例将延时优化阶段作用在布局阶段之后,在该阶段,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作,基于移动操作对电路进行更新,根据更新的电路,更新对应的目标网表和各节点在FPGA芯片上的位置。
步骤S304,基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果。
其中,由于更新后的目标网表和更新后的各节点在FPGA芯片上的位置相较于原来的目标网表和各节点在FPGA芯片上的位置可能发生了改变,因此需要渐进布局基于更新后的目标网表更新各节点在FPGA芯片上的位置。其中,渐进布局为EDA(Electronic designautomation,电子设计自动化)工具的一个功能点,因此可以直接使用。
在完成渐进布局后通过时序分析工具对更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径进行时序分析,获得优化结果。
步骤S305,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值。
其中,预设更新次数阈值由相关技术人员进行设定,在此不做限制。
更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,说明更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的延时结果更优。
步骤S306,在更新次数未达到预设更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤。
可以理解的是,若更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的延时结果更优,则保留该结果,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤以及该步骤之后的步骤。
步骤S307,在更新次数达到预设更新次数阈值的情况下,输出更新后的目标网表和更新后的各节点在FPGA芯片上的位置。
若更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的延时结果更优且更新次数达到预设更新次数阈值,则不再进行下次更新,输出本次更新后的目标网表和更新后的各节点在FPGA芯片上的位置,以使后续布线阶段基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置确定FPGA芯片上引脚之间的具体连接方式,完成FPGA芯片的延时优化。
本实施例提供的FPGA延时优化方法,通过将延时优化阶段作用在布局阶段之后,布线阶段之前,可以得到相较于将延时优化阶段作用在综合阶段之后更为准确的延时信息以及相较于布线阶段之后更小的操作复杂度与运行时间成本,可极大程度上发掘未被优化的延时,以达到减少时间复杂度,提高FPGA延时优化效率的效果。
在本实施例中提供了一种FPGA延时优化方法,可用于上述的移动终端,如中央处理单元,服务器等,图5是根据本发明实施例的FPGA延时优化方法的流程图,如图5所示,该流程包括如下步骤:
步骤S501,将用户设计的电路转化为目标网表,目标网表包括多个节点以及节点之间的连接关系,其中,每个节点对应电路中的一个器件,节点之间的连接关系表示电路上器件之间的连接关系,器件包括寄存器。详细请参见图3所示实施例的步骤S301,在此不再赘述。
步骤S502,将目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置。详细请参见图3所示实施例的步骤S302,在此不再赘述。
步骤S503,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作,更新目标网表和各节点在FPGA芯片上的位置。详细请参见图3所示实施例的步骤S303,在此不再赘述。
步骤S504,基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果。详细请参见图3所示实施例的步骤S304,在此不再赘述。
步骤S505,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值。详细请参见图3所示实施例的步骤S305,在此不再赘述。
步骤S506,在更新次数未达到预设更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤。详细请参见图3所示实施例的步骤S306,在此不再赘述。
步骤S507,在更新次数达到预设更新次数阈值的情况下,输出更新后的目标网表和更新后的各节点在FPGA芯片上的位置。详细请参见图3所示实施例的步骤S307,在此不再赘述。
步骤S508,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时大于等于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,并且在更新次数未达到预设更新次数阈值的情况下,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤。
可以理解的是,更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时大于等于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,说明更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的延时结果相较于本次更新之前的目标网表和各节点在FPGA芯片上的位置对应的延时结果更劣,则以本次更新之前的电路、目标网表和各节点在FPGA芯片上的位置返回执行目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤以及该步骤之后的步骤。
本实施例提供的FPGA延时优化方法,通过将延时优化阶段作用在布局阶段之后,布线阶段之前,可以得到相较于将延时优化阶段作用在综合阶段之后更为准确的延时信息以及相较于布线阶段之后更小的操作复杂度与运行时间成本,可极大程度上发掘未被优化的延时,以达到减少时间复杂度,提高FPGA延时优化效率的效果。
在一些可选的实施方式中,上述步骤S503包括:
步骤a1,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
其中,在获取到目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置之后,根据目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
需要说明的是,每一次更新,都需要遍历电路中的所有寄存器,对所有寄存器进行是否能进行前移/后移判断。
步骤a2,判断每个寄存器的输出引脚是否为关键引脚。
其中,判断电路中每个寄存器的输出引脚Q是否为关键引脚。
步骤a3,在寄存器的输出引脚为关键引脚的情况下,判断寄存器能否进行前移操作。
其中,若寄存器不存在用户约束,且寄存器的输入不是寄存器,且寄存器的输出所连接的组合逻辑单元的所有输入连接都是寄存器,且寄存器的输出所连接的组合逻辑单元为一个,则寄存器能进行前移操作。
需要说明的是,若寄存器的输出引脚不是关键引脚,则该寄存器不能进行前移操作。
图6是本发明实施例的FPGA延时优化方法的流程图,如图6所示,在寄存器的输出引脚为关键引脚的情况下,判断寄存器能否进行前移操作,也即对寄存器能否进行前移操作进行合法性判断。
图7是本发明实施例的寄存器能否进行前移操作或后移操作的合法性判断的流程图。如图7所示,首先判断输出引脚为关键引脚的寄存器是否存在用户约束。其中,用户约束可以是限定该寄存器不可被处理,那么则判断该寄存器不可被优化,也即不可进行前移操作,不合法。若该寄存器不存在用户约束,则判断该寄存器的输入是否还是寄存器,若寄存器的输入还是寄存器,该寄存器也不可被优化,即不合法。需要说明的是,该寄存器的输入还是寄存器,这种情况下的优化可能会造成电路功能错误,因此,该寄存器不可被优化。若该寄存器的输入不是寄存器,则获取该寄存器输出所连接的组合逻辑单元,其中,该组合逻辑单元也是一个节点,判断该组合逻辑单元的所有输入连接是否都是寄存器,若该组合逻辑单元的所有输入连接都是寄存器,则判定该寄存器合法,可以进入寄存器前移操作。
需要说明的是,相较于寄存器后移操作,前移操作需要额外的一个判断合法性的条件,即输出引脚为关键引脚的寄存器的输出所连接的组合逻辑单元为一个,也就是说,该寄存器的输出仅能被连接到一个组合逻辑单元。
步骤a4,在寄存器能进行前移操作的情况下,对寄存器进行前移操作,其中,前移操作包括:将寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器删除,在寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器。
其中,图8中示出移动操作前后寄存器与组合逻辑单元的连接示意图。如图8所示,前移操作为图8中左半部分连接变为右半部分连接。即在电路中的某一寄存器能进行前移操作的情况下,将寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器删除,在寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器。
其中,LUT(Look-Up-Table,显示查找表)为FPGA芯片中的一个基本组合逻辑单元。
步骤a5,在完成所有能进行前移操作的寄存器的前移操作的情况下,更新目标网表和各节点在FPGA芯片上的位置。
其中,在完成电路中所有能进行前移操作的寄存器的前移操作的情况下,对目标网表和各节点在FPGA芯片上的位置进行一次更新。
本实施例提供的FPGA延时优化方法,选择了网表遍历选择寄存器,并对寄存器进行前移与后移的操作方案,可以将整个retiming的时间复杂度降低为O(n),其中n代表网表中的节点数,有着极高的运行效率。同时通过前移后移的多次迭代也保证了优化能被充分进行。
在一些可选的实施方式中,上述步骤S505包括:
步骤b1,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断前移更新次数是否达到预设前移更新次数阈值。
其中,预设前移更新次数阈值由技术人员进行预先设定,在此不做限制。
上述步骤S506包括:
步骤c1,在前移更新次数未达到预设前移更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器的步骤。
可以理解的是,若更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的延时结果更优,则保留该结果,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器的步骤以及该步骤之后的步骤,也即返回执行下一次前移操作。
图9示出本发明实施例FPGA延时优化方法的流程图。如图9所示,该方法还包括:
步骤d1,在前移更新次数达到预设前移更新次数阈值的情况下,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作,更新目标网表和各节点在FPGA芯片上的位置。
如图9所示,前移更新次数达到预设前移更新次数阈值,说明寄存器前移操作已完成,基于前移操作完成后获得的目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作,可以理解的是,该电路为前移操作完成后获得的电路。
在对电路中的寄存器进行后移操作后,更新目标网表和各节点在FPGA芯片上的位置。继续执行基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果的步骤。
上述步骤S505包括:
步骤e1,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断后移更新次数是否达到预设后移更新次数阈值。
其中,预设后移更新次数阈值由技术人员进行预先设定,在此不做限制。一般地,预设前移更新次数阈值与预设后移更新次数阈值相同。
上述步骤S506包括:
步骤f1,在后移更新次数未达到预设后移更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作的步骤。
其中,若优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,且后移更新次数未达到预设后移更新次数阈值,则将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作的步骤以及该步骤之后的步骤。
上述步骤S507包括:
步骤g1,在后移更新次数达到预设后移更新次数阈值的情况下,输出更新后的目标网表和更新后的各节点在FPGA芯片上的位置。
其中,本实施例是以先进行前移操作循环,后进行后移操作循环来说明的,因此在后移更新次数达到预设后移更新次数阈值的情况下,获得最终的更新后的目标网表和更新后的各节点在FPGA芯片上的位置。
需要说明的是,本发明实施例也可以采用前移后移穿插的方式进行,但时间结果证明穿插进行的优化效果不如先进行一种再进行另外一种的效果。因此本实施例是以先进行前移再进行后移进行说明,当然也可以先进行后移再进行前移,流程与上述流程类似,在此不再赘述。
在一些可选的实施方式中,通过以下步骤确定寄存器的输出引脚为关键引脚:
步骤h1,将寄存器的输出引脚的裕度,寄存器的输出引脚的最小裕度和当前关键路径的延时输入预设输出引脚关键性计算模型,获得寄存器的输出引脚的关键性。
其中,预设输出引脚关键性计算模型包括:
其中,c(i)代表第i个寄存器的输出引脚的关键性,slack(i)输出为第i个寄存器的输出引脚的裕度,slack(i)输出min为第i个寄存器的输出引脚的最小裕度,Tmax为当前关键路径的延时。
需要说明的是,关键性范围为0-1之间。裕度=要求延时-现有延时,每一个引脚都有其对应的裕度,其含义为所能接受的最长的延时,也即要求延时。
关键路径上所有引脚的裕度均为0。本实施例中,通过EDA工具自带的时序分析工具获得上述延时,裕度等时序信息。
步骤h2,在寄存器的输出引脚的关键性大于预设关键性阈值的情况下,确定寄存器的输出引脚为关键引脚。
其中,预设关键性阈值由技术人员进行设定。一般地,预设关键性阈值设置为0.85,也就是说,在寄存器的输出引脚的关键性大于0.85时,确定该寄存器的输出引脚为关键引脚。
在一些可选的实施方式中,上述步骤d1包括:
步骤d11,在前移更新次数达到预设前移更新次数阈值的情况下,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
其中,在获取到前移操作完成之后的目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置之后,根据目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
需要说明的是,每一次更新,都需要遍历电路中的所有寄存器,对所有寄存器进行是否能进行后移判断。
步骤d12,判断每个寄存器的输入引脚是否为关键引脚。
其中,判断电路中每个寄存器的输入引脚D是否为关键引脚。
确定寄存器的输入引脚D为关键引脚的方式与前述确定寄存器的输出引脚为关键引脚相似,包括:
将寄存器的输入引脚的裕度,寄存器的输入引脚的最小裕度和当前关键路径的延时输入预设输入引脚关键性计算模型,获得寄存器的输入引脚的关键性。
其中,预设输入引脚关键性计算模型包括:
其中,代表第j个寄存器的输入引脚的关键性,slack(j)输入为第j个寄存器的输入引脚的裕度,slack(j)输入min为第j个寄存器的输入引脚的最小裕度,Tmax为当前关键路径的延时。
在寄存器的输入引脚的关键性大于预设关键性阈值的情况下,确定寄存器的输入引脚为关键引脚。
步骤d13,在寄存器的输入引脚为关键引脚的情况下,判断寄存器能否进行后移操作。
其中,若寄存器不存在用户约束,且寄存器的输出端连接的不是寄存器,且寄存器的输入所连接的组合逻辑单元的所有输出连接都是寄存器,则寄存器能进行后移操作。
需要说明的是,若寄存器的输入引脚不是关键引脚,则该寄存器不能进行后移操作。
如图6所示,在寄存器的输入引脚为关键引脚的情况下,判断寄存器能否进行后移操作,也即对寄存器能否进行后移操作进行合法性判断。
如图7所示,首先判断输入引脚为关键引脚的寄存器是否存在用户约束。其中,用户约束可以是限定该寄存器不可被处理,那么则判断该寄存器不可被优化,也即不可进行后移操作。若该寄存器不存在用户约束,则判断该寄存器的输出是否还是寄存器,若寄存器的输出还是寄存器,该寄存器也不可被优化。需要说明的是,该寄存器的输出还是寄存器,这种情况下的优化可能会造成电路功能错误,因此,该寄存器不可被优化。若该寄存器的输出不是寄存器,则获取该寄存器输入所连接的组合逻辑单元,判断该组合逻辑单元的所有输出连接是否都是寄存器,若该组合逻辑单元的所有输出连接都是寄存器,则判定该寄存器合法,可以进入寄存器后移操作。
步骤d14,在寄存器能进行后移操作的情况下,对寄存器进行后移操作,其中,后移操作包括:将寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器删除,在寄存器的输入所连接的组合逻辑单元的每一个输入端插入一个寄存器。
可以理解的是,后移操作可以是图8中右半部分连接方式变为左半部分连接方式。
如图8所示,在电路中的某一寄存器能进行后移操作的情况下,将寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器删除,在寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器。
步骤d15,在完成所有能进行后移操作的寄存器的后移操作的情况下,更新目标网表和各节点在FPGA芯片上的位置。
其中,在完成电路中所有能进行后移操作的寄存器的后移操作的情况下,对目标网表和各节点在FPGA芯片上的位置进行一次更新。
本实施例提供的FPGA延时优化方法,选择了网表遍历选择寄存器,并对寄存器进行前移与后移的操作方案,可以将整个retiming的时间复杂度降低为O(n),有着极高的运行效率。同时通过前移后移的多次迭代也保证了优化能被充分进行。
在一些可选的实施例中,如果寄存器的移动不考虑其初始态,可能会造成整个网表的功能错误。初始态可简单理解为置位/复位时Q引脚的输出信号。
本实施例为解决上述初始态问题,在对寄存器进行前移操作之前,方法还包括:
步骤i1,获取寄存器的初始态以及寄存器的输出所连接的组合逻辑单元的初始输出信号。
若该寄存器可进行前移操作,首先确定该寄存器的初始态,之后基于该寄存器找到对应的输出连接的组合逻辑单元,得到在该初始态下的组合逻辑单元的初始输出信号。
需要说明的是,此时获得的初始输出信号值即为前移操作之后寄存器初始态下所应该输入到后续目标网表的值。
在更新目标网表和各节点在FPGA芯片上的位置之前,方法还包括:
判断前移操作插入的寄存器的输出值与初始输出信号是否相同。
如果前移操作插入的寄存器的输出值与初始输出信号完全相同则不需要做任何处理,直接进行寄存器移动操作即可。
在前移操作插入的寄存器的输出值与初始输出信号不同的情况下,在前移操作插入的寄存器的输入端和输出端分别添加一个反相器。
其中,如果前移操作插入的寄存器的输出值与初始输出信号不同,示例性地,一个为0另一个为1,则需要在前移操作插入的寄存器前后各添加一个反向器即可解决初始态问题。
图10示出本发明实施例的解决前移操作初始态问题的流程示意图。如图10所示,图10中,上部分为移动前的一个局部网表,中间部分为移动后的等价的网表。可以看到,移动前,寄存器的初始态为0,经过其Q引脚所连接到的一个LUT后值变为1,即在寄存器的初始态下针对于后续网表的输入是1。在寄存器移动的过程中所需要做到的即为保证后续网表在寄存器初始态下的输入值不变,同时不破坏原本网表的功能。为了保证后续网表的输入值不变,首先可以在移动后的寄存器后与后续网表之间插入一个反向器,同时为了保证整个网表的功能不变,因此需要在寄存器的数据输入引脚D前也加入一个反向器。从而得到了图10中中间部分的网表示意图。此处需要说明的是,所加入的反向器与LUT很容易进行合并,合并的方式即为将LUT所表达的函数的真值表每一位进行取反。图10中即为该合并的一个典型案例,假设原本的LUT其功能就是取反,所以有图10中上部分的0经过LUT后变为1。那么一个该LUT再经过一次取反后即变为一个导线从而可以被优化掉。基于上述描述,本方案针对寄存器初始态问题,首先判断寄存器在移动之后输入到后续网表的值是否发生改变,如果改变则在移动后的寄存器D引脚前,Q引脚后各加入一个反向器,之后再尝试将反相器与其相邻的LUT进行合并处理。此处仅以前移举例,后移的情况类似,在此不再赘述。
在一些可选的实施方式中,在对寄存器进行后移操作之前,方法还包括:
步骤j1,获取寄存器的初始态以及寄存器的输入所连接的组合逻辑单元的初始输入信号。
若该寄存器可进行后移操作,首先确定该寄存器的初始态,之后基于该寄存器找到对应的输入连接的组合逻辑单元,得到在该初始态下的组合逻辑单元的初始输入信号。
需要说明的是,此时获得的初始输入信号值即为后移操作之后寄存器初始态下所应该输入到后续目标网表的值。
在更新目标网表和各节点在FPGA芯片上的位置之前,方法还包括:
判断后移操作插入的寄存器的输入值与初始输入信号是否相同。
如果后移操作插入的寄存器的输入值与初始输入信号完全相同则不需要做任何处理,直接进行寄存器移动操作即可。
在后移操作插入的寄存器的输入值与初始输入信号不同的情况下,在后移操作插入的寄存器的输入端和输出端分别添加一个反相器。
其中,如果后移操作插入的寄存器的输入值与初始输入信号不同,示例性地,一个为0另一个为1,则需要在后移操作插入的寄存器前后各添加一个反向器即可解决初始态问题。
本实施例提供的FPGA延时优化方法,通过在寄存器前后插入反向器,解决了寄存器移动过程中可能存在的初始态不一致的问题,并尝试将反向器与其相邻LUT合并的方式既保证了整个网表功能的正确性同时也不会给网表的面积造成明显的影响。
需要说明的是,上述前移操作与后移操作涉及到的寄存器是以同一类别的寄存器进行说明的。而电路中的寄存器可能是不同类别的,针对电路中的寄存器是不同类别的情况,本实施例也提出了针对性的处理方法。
进一步需要说明的是,此处的类别与前述的类型不同。类别相同的寄存器需要满足的条件为:类型相同且控制信号相同。其中,此处的控制信号即为CE、CLK,R/S引脚的输入信号。
在一些可选的实施方式中,若寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器中至少一个寄存器能进行前移操作,且组合逻辑单元的所有输入连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行前移操作的寄存器数量对组合逻辑单元进行复制,将能进行前移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对寄存器进行前移操作。
若寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器中至少一个寄存器能进行后移操作,且组合逻辑单元的所有输出连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行后移操作的寄存器数量对组合逻辑单元进行复制,将能进行后移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对寄存器进行后移操作。
其中,图11示出对不同类别的寄存器进行后移的示意图。如图11所示,针对于不同类别的寄存器如果需要进行移动,则需要将对应的组合逻辑节点进行复制。以图11为例,将图11中的寄存器1和寄存器2进行后移,假设寄存器1与寄存器2并不属于同一种类别,因此不能简单将寄存器1和寄存器2从LUT的输出去除并在LUT的输入中增加一个寄存器,因为此时无法确定增加的寄存器的类别。为了处理这种情况,本方案的做法为将LUT节点进行复制,再进行寄存器移动,从而可以得到如图11右半部分的结果。需要注意的是,虽然此处仅有两种类别的寄存器,但是即使存在更多类别的寄存器复制也只需要进行一次,因为仅仅只需要考虑能进行移动操作的寄存器的处理。图12示出本发明实施例对不同类别的寄存器进行后移的示意图。假设寄存器1与寄存器2并不属于同一种类别,仅有寄存器2的输入引脚D为关键引脚,因此本质上仅需要对寄存器2进行移动即可,从而可以得到如图12所示的结果。
需要说明的是,对不同类别的寄存器进行前移的过程与后移的过程类似,在此不再赘述。
在一些可选的实施方式中,在复制组合逻辑单元的个数超过限定值的情况下,确定组合逻辑单元的所有输入连接的寄存器无法进行前移操作或组合逻辑单元的所有输出连接的寄存器无法进行后移操作。
当然,为了控制复制节点的数量,需要设定一个限定值如网表中组合逻辑节点数量的0.1倍,当新增的节点数目超过这个限定值时则不再考虑需要节点复制来进行的寄存器移动操作。
本实施例提供的FPGA延时优化方法,考虑了不同类别的寄存器移动的情况,通过节点复制可以极好的保证寄存器移动后的功能一致性。同时通过对新增节点的数量限制也保证了节点复制不会超出可控范围地进行。
在本实施例中还提供了一种FPGA延时优化装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种FPGA延时优化装置,如图13所示,包括:
电路转化模块1301,用于将用户设计的电路转化为目标网表,目标网表包括多个节点以及节点之间的连接关系,其中,每个节点对应电路中的一个器件,节点之间的连接关系表示电路上器件之间的连接关系,器件包括寄存器。
节点映射模块1302,用于将目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置。
位置更新模块1303,用于基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作,更新目标网表和各节点在FPGA芯片上的位置。
优化结果获取模块1304,用于基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果。
第一判断模块1305,用于在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值。
第一返回执行模块1306,用于在更新次数未达到预设更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤。
输出模块1307,用于在更新次数达到预设更新次数阈值的情况下,输出更新后的目标网表和更新后的各节点在FPGA芯片上的位置。
在一些可选的实施方式中,装置还包括:
第二返回执行模块,在优化结果为更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时大于等于目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,并且在更新次数未达到预设更新次数阈值的情况下,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行移动操作的步骤。
在一些可选的实施方式中,位置更新模块1303包括:
第一寄存器遍历单元,用于基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
第一关键引脚判断单元,用于判断每个寄存器的输出引脚是否为关键引脚。
前移操作判断单元,用于在寄存器的输出引脚为关键引脚的情况下,判断寄存器能否进行前移操作,其中,若寄存器不存在用户约束,且寄存器的输入不是寄存器,且寄存器的输出所连接的组合逻辑单元的所有输入连接都是寄存器,且寄存器的输出所连接的组合逻辑单元为一个,则寄存器能进行前移操作。
前移操作单元,用于在寄存器能进行前移操作的情况下,对寄存器进行前移操作,其中,前移操作包括:将寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器删除,在寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器。
第一位置更新子单元,用于在完成所有能进行前移操作的寄存器的前移操作的情况下,更新目标网表和各节点在FPGA芯片上的位置。
第一判断模块1305,包括:
前移更新次数判断模块,用于判断前移更新次数是否达到预设前移更新次数阈值。
第一返回执行模块1306,包括:
前移返回执行单元,用于在前移更新次数未达到预设前移更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器的步骤。
装置还包括:
后移操作单元,用于在前移更新次数达到预设前移更新次数阈值的情况下,基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作,更新目标网表和各节点在FPGA芯片上的位置。
第一判断模块1305,包括:
后移更新次数判断模块,用于判断后移更新次数是否达到预设后移更新次数阈值。
第一返回执行模块1306,包括:
后移返回执行单元,用于在后移更新次数未达到预设后移更新次数阈值的情况下,将更新后的目标网表作为目标网表,将更新后的各节点在FPGA芯片上的位置作为目标网中各节点在FPGA芯片上的位置,返回执行基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,对电路中的寄存器进行后移操作的步骤。
输出模块1307,包括:
输出子单元,用于在后移更新次数达到预设后移更新次数阈值的情况下,输出更新后的目标网表和更新后的各节点在FPGA芯片上的位置。
在一些可选的实施方式中,装置还包括:
关键性获取单元,用于将寄存器的输出引脚的裕度,寄存器的输出引脚的最小裕度和当前关键路径的延时输入预设输出引脚关键性计算模型,获得寄存器的输出引脚的关键性。
其中,预设输出引脚关键性计算模型包括:
其中,c(i)代表第i个寄存器的输出引脚的关键性,slack(i)输出为第i个寄存器的输出引脚的裕度,slack(i)输出min为第i个寄存器的输出引脚的最小裕度,Tmax为当前关键路径的延时。
关键引脚确定单元,用于在寄存器的输出引脚的关键性大于预设关键性阈值的情况下,确定寄存器的输出引脚为关键引脚。
在一些可选的实施方式中,后移操作单元,包括:
第二寄存器遍历单元,用于基于目标网表中节点之间的连接关系和各节点在FPGA芯片上的位置,遍历电路中的所有寄存器。
第二关键引脚判断单元,用于判断每个寄存器的输入引脚是否为关键引脚。
后移操作判断单元,用于在寄存器的输入引脚为关键引脚的情况下,判断寄存器能否进行后移操作,其中,若寄存器不存在用户约束,且寄存器的输出端连接的不是寄存器,且寄存器的输入所连接的组合逻辑单元的所有输出连接都是寄存器,则寄存器能进行后移操作。
后移操作子单元,用于在寄存器能进行后移操作的情况下,对寄存器进行后移操作,其中,后移操作包括:将寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器删除,在寄存器的输入所连接的组合逻辑单元的每一个输入端插入一个寄存器。
第二位置更新子单元,用于在完成所有能进行后移操作的寄存器的后移操作的情况下,更新目标网表和各节点在FPGA芯片上的位置。
在一些可选的实施方式中,在对寄存器进行前移操作之前,装置还包括:
输出信号获取单元,用于获取寄存器的初始态以及寄存器的输出所连接的组合逻辑单元的初始输出信号。
在更新目标网表和各节点在FPGA芯片上的位置之前,装置还包括:
输出信号判断单元,用于判断前移操作插入的寄存器的输出值与初始输出信号是否相同。
第一反相器添加单元,用于在前移操作插入的寄存器的输出值与初始输出信号不同的情况下,在前移操作插入的寄存器的输入端和输出端分别添加一个反相器。
在一些可选的实施方式中,在对寄存器进行后移操作之前,装置还包括:
输入信号获取单元,用于获取寄存器的初始态以及寄存器的输入所连接的组合逻辑单元的初始输入信号。
在更新目标网表和各节点在FPGA芯片上的位置之前,装置还包括:
输入信号判断单元,用于判断后移操作插入的寄存器的输入值与初始输入信号是否相同。
第二反相器添加单元,用于在后移操作插入的寄存器的输入值与初始输入信号不同的情况下,在后移操作插入的寄存器的输入端和输出端分别添加一个反相器。
在一些可选的实施方式中,装置还包括:
第一组合逻辑单元复制单元,用于若寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器中至少一个寄存器能进行前移操作,且组合逻辑单元的所有输入连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行前移操作的寄存器数量对组合逻辑单元进行复制,将能进行前移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对寄存器进行前移操作。
第二组合逻辑单元复制单元,用于若寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器中至少一个寄存器能进行后移操作,且组合逻辑单元的所有输出连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行后移操作的寄存器数量对组合逻辑单元进行复制,将能进行后移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对寄存器进行后移操作。
在一些可选的实施方式中,装置还包括:
移动操作单元,用于在复制组合逻辑单元的个数超过限定值的情况下,确定组合逻辑单元的所有输入连接的寄存器无法进行前移操作或组合逻辑单元的所有输出连接的寄存器无法进行后移操作。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的FPGA延时优化装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图13所示的FPGA延时优化装置。
请参阅图14,图14是本发明可选实施例提供的一种计算机设备的结构示意图,如图14所示,该计算机设备包括:一个或多个处理器1401、存储器1402,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图14中以一个处理器1401为例。
处理器1401可以是中央处理器,网络处理器或其组合。其中,处理器1401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器1402存储有可由至少一个处理器1401执行的指令,以使至少一个处理器1401执行实现上述实施例示出的方法。
存储器1402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器1402可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器1402可选包括相对于处理器1401远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器1402可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器1402还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口1403,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (12)
1.一种FPGA延时优化方法,其特征在于,所述方法包括:
将用户设计的电路转化为目标网表,所述目标网表包括多个节点以及节点之间的连接关系,其中,每个所述节点对应所述电路中的一个器件,所述节点之间的连接关系表示所述电路上器件之间的连接关系,所述器件包括寄存器;
将所述目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置;
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果;
在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值;
在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤;
在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时大于等于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时,并且在更新次数未达到预设更新次数阈值的情况下,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤。
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置,包括:
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器;
判断每个寄存器的输出引脚是否为关键引脚;
在所述寄存器的输出引脚为关键引脚的情况下,判断所述寄存器能否进行前移操作,其中,若所述寄存器不存在用户约束,且所述寄存器的输入不是寄存器,且所述寄存器的输出所连接的组合逻辑单元的所有输入连接都是寄存器,且所述寄存器的输出所连接的组合逻辑单元为一个,则所述寄存器能进行前移操作;
在所述寄存器能进行前移操作的情况下,对所述寄存器进行前移操作,其中,前移操作包括:将所述寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器删除,在所述寄存器的输出所连接的组合逻辑单元的每一个输出端插入一个寄存器;
在完成所有能进行前移操作的寄存器的前移操作的情况下,更新所述目标网表和所述各节点在FPGA芯片上的位置;
所述判断更新次数是否达到预设更新次数阈值,包括:
判断前移更新次数是否达到预设前移更新次数阈值;
所述在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤,包括:
在前移更新次数未达到预设前移更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器的步骤;
所述方法还包括:
在前移更新次数达到预设前移更新次数阈值的情况下,基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
所述判断更新次数是否达到预设更新次数阈值,包括:
判断后移更新次数是否达到预设后移更新次数阈值;
所述在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤,包括:
在后移更新次数未达到预设后移更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作的步骤;
所述在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置,包括:
在后移更新次数达到预设后移更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
4.根据权利要求3所述的方法,其特征在于,通过以下步骤确定所述寄存器的输出引脚为关键引脚:
将所述寄存器的输出引脚的裕度,所述寄存器的输出引脚的最小裕度和当前关键路径的延时输入预设输出引脚关键性计算模型,获得所述寄存器的输出引脚的关键性;
其中,所述预设输出引脚关键性计算模型包括:
其中,c(i)代表第i个寄存器的输出引脚的关键性,slack(i)输出为第i个寄存器的输出引脚的裕度,slack(i)输出min为第i个寄存器的输出引脚的最小裕度,Tmax为当前关键路径的延时;
在所述寄存器的输出引脚的关键性大于预设关键性阈值的情况下,确定所述寄存器的输出引脚为关键引脚。
5.根据权利要求3所述的方法,其特征在于,所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行后移操作,更新所述目标网表和所述各节点在FPGA芯片上的位置,包括:
基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,遍历所述电路中的所有寄存器;
判断每个寄存器的输入引脚是否为关键引脚;
在所述寄存器的输入引脚为关键引脚的情况下,判断所述寄存器能否进行后移操作,其中,若所述寄存器不存在用户约束,且所述寄存器的输出端连接的不是寄存器,且所述寄存器的输入所连接的组合逻辑单元的所有输出连接都是寄存器,则所述寄存器能进行后移操作;
在所述寄存器能进行后移操作的情况下,对所述寄存器进行后移操作,其中,后移操作包括:将所述寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器删除,在所述寄存器的输入所连接的组合逻辑单元的每一个输入端插入一个寄存器;
在完成所有能进行后移操作的寄存器的后移操作的情况下,更新所述目标网表和所述各节点在FPGA芯片上的位置。
6.根据权利要求3所述的方法,其特征在于,在所述对所述寄存器进行前移操作之前,所述方法还包括:
获取所述寄存器的初始态以及所述寄存器的输出所连接的组合逻辑单元的初始输出信号;
在所述更新所述目标网表和所述各节点在FPGA芯片上的位置之前,所述方法还包括:
判断前移操作插入的寄存器的输出值与所述初始输出信号是否相同;
在所述前移操作插入的寄存器的输出值与所述初始输出信号不同的情况下,在所述前移操作插入的寄存器的输入端和输出端分别添加一个反相器。
7.根据权利要求5所述的方法,其特征在于,在所述对所述寄存器进行后移操作之前,所述方法还包括:
获取所述寄存器的初始态以及所述寄存器的输入所连接的组合逻辑单元的初始输入信号;
在所述更新所述目标网表和所述各节点在FPGA芯片上的位置之前,所述方法还包括:
判断后移操作插入的寄存器的输入值与所述初始输入信号是否相同;
在所述后移操作插入的寄存器的输入值与所述初始输入信号不同的情况下,在所述后移操作插入的寄存器的输入端和输出端分别添加一个反相器。
8.根据权利要求5所述的方法,其特征在于,若所述寄存器的输出所连接的组合逻辑单元的所有输入连接的寄存器中至少一个寄存器能进行前移操作,且所述组合逻辑单元的所有输入连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行前移操作的寄存器数量对所述组合逻辑单元进行复制,将能进行前移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对所述寄存器进行前移操作;
若所述寄存器的输入所连接的组合逻辑单元的所有输出连接的寄存器中至少一个寄存器能进行后移操作,且所述组合逻辑单元的所有输出连接的寄存器存在至少一个寄存器类别与其余寄存器类别不同,基于能进行后移操作的寄存器数量对所述组合逻辑单元进行复制,将能进行后移操作的寄存器按照原始连接关系连接到复制的组合逻辑单元上,再对所述寄存器进行后移操作。
9.根据权利要求8所述的方法,其特征在于,在所述复制组合逻辑单元的个数超过限定值的情况下,确定所述组合逻辑单元的所有输入连接的寄存器无法进行前移操作或所述组合逻辑单元的所有输出连接的寄存器无法进行后移操作。
10.一种FPGA延时优化装置,其特征在于,所述装置包括:
电路转化模块,用于将用户设计的电路转化为目标网表,所述目标网表包括多个节点以及节点之间的连接关系,其中,每个所述节点对应所述电路中的一个器件,所述节点之间的连接关系表示所述电路上器件之间的连接关系,所述器件包括寄存器;
节点映射模块,用于将所述目标网表中的节点映射到FPGA芯片的对应位置,获得各节点在FPGA芯片上的位置;
位置更新模块,用于基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作,更新所述目标网表和所述各节点在FPGA芯片上的位置;
优化结果获取模块,用于基于更新后的目标网表和更新后的各节点在FPGA芯片上的位置进行时序分析,获得优化结果;
第一判断模块,用于在所述优化结果为所述更新后的目标网表和更新后的各节点在FPGA芯片上的位置对应的关键路径延时小于所述目标网表和各节点在FPGA芯片上的位置对应的关键路径延时的情况下,判断更新次数是否达到预设更新次数阈值;
第一返回执行模块,用于在更新次数未达到预设更新次数阈值的情况下,将所述更新后的目标网表作为所述目标网表,将更新后的各节点在FPGA芯片上的位置作为所述目标网中各节点在FPGA芯片上的位置,返回执行所述基于所述目标网表中所述节点之间的连接关系和各节点在FPGA芯片上的位置,对所述电路中的寄存器进行移动操作的步骤;
输出模块,用于在更新次数达到预设更新次数阈值的情况下,输出更新后的所述目标网表和更新后的各节点在FPGA芯片上的位置。
11.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至9中任一项所述的FPGA延时优化方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至9中任一项所述的FPGA延时优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410253844.0A CN118070724B (zh) | 2024-03-06 | 2024-03-06 | Fpga延时优化方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410253844.0A CN118070724B (zh) | 2024-03-06 | 2024-03-06 | Fpga延时优化方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN118070724A true CN118070724A (zh) | 2024-05-24 |
CN118070724B CN118070724B (zh) | 2024-07-02 |
Family
ID=91110797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410253844.0A Active CN118070724B (zh) | 2024-03-06 | 2024-03-06 | Fpga延时优化方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118070724B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350468A1 (en) * | 2015-05-29 | 2016-12-01 | Altera Corporation | Methods and apparatus for probing signals from a circuit after register retiming |
CN109815545A (zh) * | 2018-12-25 | 2019-05-28 | 河南工程学院 | 基于寄存器重定时的多流水级时序电路再综合操作方法 |
CN113128152A (zh) * | 2021-04-21 | 2021-07-16 | 无锡中微亿芯有限公司 | 基于时序的多裸片fpga的网表分割方法 |
WO2023001192A1 (zh) * | 2021-07-20 | 2023-01-26 | 深圳市紫光同创电子有限公司 | 基于fpga进位链的电路结构优化方法及系统 |
CN116401987A (zh) * | 2023-04-14 | 2023-07-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片时序优化方法、系统、设备及介质 |
CN117057290A (zh) * | 2023-07-26 | 2023-11-14 | 深圳市紫光同创电子有限公司 | 时序优化方法、装置、电子设备及存储介质 |
-
2024
- 2024-03-06 CN CN202410253844.0A patent/CN118070724B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350468A1 (en) * | 2015-05-29 | 2016-12-01 | Altera Corporation | Methods and apparatus for probing signals from a circuit after register retiming |
CN109815545A (zh) * | 2018-12-25 | 2019-05-28 | 河南工程学院 | 基于寄存器重定时的多流水级时序电路再综合操作方法 |
CN113128152A (zh) * | 2021-04-21 | 2021-07-16 | 无锡中微亿芯有限公司 | 基于时序的多裸片fpga的网表分割方法 |
WO2023001192A1 (zh) * | 2021-07-20 | 2023-01-26 | 深圳市紫光同创电子有限公司 | 基于fpga进位链的电路结构优化方法及系统 |
CN116401987A (zh) * | 2023-04-14 | 2023-07-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片时序优化方法、系统、设备及介质 |
CN117057290A (zh) * | 2023-07-26 | 2023-11-14 | 深圳市紫光同创电子有限公司 | 时序优化方法、装置、电子设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
HONGBIN ZHENG 等: "Fast and effective placement and routing directed high-level synthesis for FPGAs", FPGA \'14: PROCEEDINGS OF THE 2014 ACM/SIGDA INTERNATIONAL SYMPOSIUM ON FIELD-PROGRAMMABLE GATE ARRAYS, 26 February 2014 (2014-02-26), pages 1 - 10 * |
LINUS WITSCHEN 等: "Timing Optimization for Virtual FPGA Configurations", APPLIED RECONFIGURABLE COMPUTING. ARCHITECTURES, TOOLS, AND APPLICATIONS, 23 June 2021 (2021-06-23), pages 50 - 64, XP047599367, DOI: 10.1007/978-3-030-79025-7_4 * |
常琳: "FPGA布线技术的研究", 中国优秀硕士学位论文全文数据库 信息科技辑, 15 June 2014 (2014-06-15), pages 135 - 299 * |
徐嘉伟: "现代FPGA布局研究", 中国优秀硕士学位论文全文数据库 信息科技辑, 15 December 2009 (2009-12-15), pages 135 - 186 * |
Also Published As
Publication number | Publication date |
---|---|
CN118070724B (zh) | 2024-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6536031B2 (en) | Method for generating behavior model description of circuit and apparatus for logic verification | |
US10467365B1 (en) | Systems and methods for calculating common clock path pessimism for hierarchical timing analysis in an electronic design | |
CN108073762B (zh) | 用于利用经延迟的初始化来验证经重定时的电路的方法 | |
CN114861591B (zh) | 一种可微分时序驱动的芯片布局优化方法 | |
US10394989B2 (en) | Method for creating an FPGA netlist | |
CN118113660B (zh) | Fpga延时优化方法、装置、设备、存储介质及程序产品 | |
CN114548006A (zh) | 集成电路的验证方法、装置、电子设备、存储介质 | |
WO1999009497A1 (fr) | Procede d'extraction de caracteristiques de synchronisation de circuits a transistors, support de stockage stockant une bibliotheque de caracteristiques de synchronisation, procede de conception de lsi et procede d'extraction par grille | |
CN116401987A (zh) | 一种芯片时序优化方法、系统、设备及介质 | |
US6192508B1 (en) | Method for logic optimization for improving timing and congestion during placement in integrated circuit design | |
EP2098969A1 (en) | Logic circuit designing device for asynchronous logic circuit, logic circuit designing method, and logic circuit designing program | |
CN117077616B (zh) | 一种基于结构导向的电路生成方法、装置、设备及介质 | |
CN118070724B (zh) | Fpga延时优化方法、装置、计算机设备及存储介质 | |
US12073159B2 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
Kanase et al. | Physical implementation of shift register with respect to timing and dynamic drop | |
Kebaili et al. | Enabler-based synchronizer model for clock domain crossing static verification | |
CN117151015B (zh) | 集成电路布局布线方法、装置、集成电路芯片 | |
CN115983171B (zh) | 用于对片上系统进行后仿真的方法和仿真平台 | |
WO2024208159A1 (zh) | 用于评估时钟树的方法、装置、设备和存储介质 | |
CN116644580B (zh) | 一种电子产品模型设计自动化方法、装置、设备和介质 | |
CN117787169B (zh) | 基于fpga的网表优化方法、装置、计算机设备及存储介质 | |
CN113688587B (zh) | 一种电路布图的生成方法、装置、计算机设备及存储介质 | |
CN117408198B (zh) | 一种仿真模型建模方法、装置、设备及存储介质 | |
CN113449477B (zh) | 数字电路的连接方法、装置、电子设备和存储介质 | |
US7350162B2 (en) | Structure analytic program |
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 |