CN112906332B - Fpga设计的综合实现方法和装置 - Google Patents

Fpga设计的综合实现方法和装置 Download PDF

Info

Publication number
CN112906332B
CN112906332B CN202110321055.2A CN202110321055A CN112906332B CN 112906332 B CN112906332 B CN 112906332B CN 202110321055 A CN202110321055 A CN 202110321055A CN 112906332 B CN112906332 B CN 112906332B
Authority
CN
China
Prior art keywords
target
register
register chain
chain group
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.)
Active
Application number
CN202110321055.2A
Other languages
English (en)
Other versions
CN112906332A (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.)
Shandong Gowin Semiconductor Technology Co ltd
Original Assignee
Shandong Gowin Semiconductor Technology 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 Shandong Gowin Semiconductor Technology Co ltd filed Critical Shandong Gowin Semiconductor Technology Co ltd
Priority to CN202110321055.2A priority Critical patent/CN112906332B/zh
Publication of CN112906332A publication Critical patent/CN112906332A/zh
Application granted granted Critical
Publication of CN112906332B publication Critical patent/CN112906332B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请提供了一种FPGA设计的综合实现方法和装置,该方法包括:获取FPGA设计中的寄存器链组,寄存器链组包括至少一个寄存器链,寄存器链为多个寄存器串联构成的,多个寄存器的控制信号相同,且多个寄存器均为同步寄存器或异步寄存器;确定目标寄存器链组对应的目标存储器;使用目标存储器替换对应的目标寄存器链组,得到更新后的FPGA设计。该方法保证了更新后的FPGA设计中的节点较少,从而保证了占用的芯片资源较少,解决了现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。

Description

FPGA设计的综合实现方法和装置
技术领域
本申请涉及半导体领域,具体而言,涉及一种FPGA设计的综合实现方法、装置、计算机可读存储介质、处理器和电子设备。
背景技术
FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)作为一种通用的可编程逻辑器件,设计更接近于硬件底层的架构,拥有大量的存储资源、DSP(DigitalSignal Processing,数字信号处理)资源等,具有擅长数据并行计算、更加灵活和低延迟的特点,同时FPGA还具有功耗低、可编程及设计灵活等的特点,因此FPGA在很多领域得到广泛的使用。
在FPGA开发过程中,用户需要将用Verilog HDL(Hardware DescriptionLanguage,硬件描述语言)或VHDL(Very-High-Speed Integrated Circuit HardwareDescription Language,超高速集成电路硬件描述语言)语言编写的硬件设计电路进行综合来完成从硬件设计电路到网表的转化。随着FPGA产业的发展,用户设计的规模变得越来越大,由于用户设计规模的提升,综合后电路占用的芯片资源也越来越多,这样会影响芯片的整体性能,还会造成布局失败的情况发生,不利于布局布线的进行。
因此,如何对电路进行优化,来减小芯片资源的占用,是现有技术亟需解决的问题。
在背景技术部分中公开的以上信息只是用来加强对本文所描述技术的背景技术的理解,因此,背景技术中可能包含某些信息,这些信息对于本领域技术人员来说并未形成在本国已知的现有技术。
发明内容
本申请的主要目的在于提供一种FPGA设计的综合实现方法、装置、计算机可读存储介质、处理器和电子设备,以解决现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。
根据本发明实施例的一个方面,提供了一种FPGA设计的综合实现方法,包括:获取FPGA设计中的寄存器链组,所述寄存器链组包括至少一个寄存器链,所述寄存器链为多个寄存器串联构成的,多个所述寄存器的控制信号相同,且多个所述寄存器均为同步寄存器或异步寄存器;确定目标寄存器链组对应的目标存储器;使用所述目标存储器替换对应的所述目标寄存器链组,得到更新后的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示出了根据本申请的实施例的遍历确定寄存器链组的示意图;
图5示出了根据本申请的一种具体的实施例的根据寄存器链组确定对应的存储器的各端口的流程示意图。
其中,上述附图包括以下附图标记:
100、目标寄存器;200、寄存器链。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,在说明书以及权利要求书中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
正如背景技术中所说的,现有技术中FPGA设计在综合阶段的实现方法导致芯片资源占用较多,为了解决上述问题,本申请的一种典型的实施方式中,提供了一种FPGA设计的综合实现方法、装置、计算机可读存储介质、处理器和电子设备。
根据本申请的实施例,提供了一种FPGA设计的综合实现方法。
图1是根据本申请实施例的FPGA设计的综合实现方法的流程图。如图1所示,该方法包括以下步骤:
步骤S101,获取FPGA设计中的寄存器链组,上述寄存器链组包括至少一个寄存器链,上述寄存器链为多个寄存器串联构成的,多个上述寄存器的控制信号相同,且多个上述寄存器均为同步寄存器或异步寄存器;
步骤S102,确定目标寄存器链组对应的目标存储器;
步骤S103,使用上述目标存储器替换对应的上述目标寄存器链组,得到更新后的FPGA设计。
上述的FPGA设计的综合实现方法,首先获取FPGA设计中的寄存器链组,上述寄存器链组中至少包括一个寄存器链,即上述寄存器链组可以包括一个寄存器链,还可以包括多个寄存器链,一个寄存器链中包括串联的多个寄存器;然后确定目标寄存器链组对应的目标存储器,上述寄存器链组包括上述目标寄存器链组;最后使用目标存储器替换对应的目标寄存器链组,得到更新后的FPGA设计。本申请的上述方法中,通过使用目标存储器替换FPGA设计中的对应的目标寄存器链组,即使用一个目标存储器替换了FPGA设计中对应的多个寄存器,由于一个目标存储器对应的节点数量少于多个寄存器对应的节点数量,这样保证了更新后的FPGA设计中的节点较少,从而保证了芯片的占用面积较少,保证了芯片资源占用较少,解决了现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。
在实际的应用过程中,存储器的数据输入或输出都为总线形式,因此可以将长度相同并且类型相同的寄存器链合并成寄存器链组,将寄存器链组映射为存储器。
根据本申请的一种具体的实施例,获取FPGA设计中的寄存器链组,包括:获取上述FPGA设计中的目标寄存器;根据上述目标寄存器,对上述FPGA设计进行遍历,确定上述寄存器链组。通过上述目标寄存器,对FPGA设计进行遍历,得到上述寄存器链组,这样可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组,方便了后续将寄存器链组中的至少部分寄存器链组替换为对应的存储器。
为了进一步地保证可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组,根据本申请的另一种具体的实施例,如图4所示,在上述寄存器链组中包括一个上述寄存器链的情况下,根据上述目标寄存器100,对上述FPGA设计进行遍历,确定上述寄存器链组,包括:以上述目标寄存器100作为起始位置,沿第一方向和第二方向分别对上述FPGA设计进行遍历,确定上述寄存器链200,上述寄存器链200为上述寄存器链组,上述第一方向为上述目标寄存器100的输入端的延伸方向,上述第二方向为上述目标寄存器100的输出端的延伸方向,上述第一方向和上述第二方向相反。
根据本申请的再一种具体的实施例,在上述寄存器链组中包括多个上述寄存器链的情况下,根据上述目标寄存器,对上述FPGA设计进行遍历,确定上述寄存器链组,包括:以上述目标寄存器作为起始位置,沿第一方向和第二方向分别对上述FPGA设计进行遍历,确定多个上述寄存器链,多个上述寄存器链的容量和类型均相同,上述第一方向为上述目标寄存器的输入端的延伸方向,上述第二方向为上述目标寄存器的输出端的延伸方向,上述第一方向和上述第二方向相反;将多个上述寄存器链进行合并,得到上述寄存器链组。这样进一步地保证了可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组。
本申请的一种具体的实施例中,先确定FPGA设计中的一个目标寄存器,由目标寄存器的输出引脚向后遍历搜索寄存器,直到寄存器的链尾,然后再从此目标寄存器的输入引脚向前遍历搜索寄存器,直到寄存器的链头,记录此寄存器的链头及链尾。遍历过程中要满足此链中的所有寄存器控制信号相同并且同为同步或异步。循环上述步骤,直到找到FPGA设计中所有的寄存器链,并记录寄存器链的输入输出及寄存器链的长度。
本申请的又一种具体的实施例中,确定目标寄存器链组对应的目标存储器,包括:根据上述目标寄存器链组,确定对应的上述目标存储器的输入端、输出端、写使能端以及初始值;根据上述目标寄存器链组,构建对应的上述目标存储器的地址总线。上述方法,根据上述目标寄存器链组,确定对应的上述目标存储器的输入端、输出端、写使能端以及初始值,并构建对应的上述目标存储器的地址总线,进一步地方便了后续使用上述目标存储器替换对应的上述目标寄存器链组,从而进一步地保证了更新后的FPGA设计中的节点较少,进一步地保证了占用的芯片资源较少。
为了较为简单地建立上述目标存储器的地址总线,从而进一步地方便后续使用上述目标存储器替换对应的上述目标寄存器链组,本申请的再一种具体的实施例中,根据上述目标寄存器链组,构建对应的上述目标存储器的地址总线,包括:获取上述目标寄存器链组中目标寄存器链的深度;根据上述目标寄存器链的深度,确定上述地址总线的宽度;根据上述地址总线的宽度,构建计数器;确定上述计数器的输出端为上述地址总线。
在实际的应用过程中,上述计数器的构建可以使用FPGA设计上具有加法功能的原语来实现,也可以使用其他逻辑原语来实现。上述目标存储器的地址位宽为log2 depth向上取整,depth(深度)为对应的目标寄存器链组的深度,例如目标寄存器链组的深度为16,那么对应的目标存储器的地址宽度为4,当目标寄存器链组的深度为17时,那么对应的目标存储器的地址宽度为5。
为了进一步方便后续使用上述目标存储器替换对应的上述目标寄存器链组,从而进一步地保证更新后的FPGA设计中的节点较少,根据本申请的再一种具体的实施例,如图5所示,根据上述目标寄存器链组,确定对应的上述目标存储器的输入端、输出端、写使能端以及初始值,包括如下步骤:
步骤S201,确定上述目标寄存器链组中目标寄存器链的输入端为上述目标存储器的输入端;
步骤S202,确定上述目标寄存器链的输出端为上述目标存储器的输出端;
步骤S203,确定上述目标寄存器链组中多个上述寄存器的使能端为上述目标存储器的写使能端;
步骤S204,获取上述目标寄存器链组中多个上述寄存器的初始值;
步骤S205,根据多个上述寄存器的初始值,确定上述目标存储器的初始值。
在实际的应用过程中,根据多个上述寄存器的初始值,确定上述目标存储器的初始值,包括:按照上述目标寄存器链组的结构信息,确定多个上述寄存器的初始值的排列顺序,得到初始值数组,上述结构信息至少包括上述目标寄存器链的串联顺序;确定上述初始值数组为上述目标存储器的初始值。上述方法,通过上述目标寄存器链的串联顺序,可以较为简单快捷地确定对应的上述目标存储器的初始值。
根据本申请的又一种具体的实施例,在上述目标寄存器链组包括多个上述目标寄存器链的情况下,上述结构信息还包括各上述目标寄存器链的输入端与上述目标存储器的输入端的对应关系。在上述目标寄存器链组包括多个上述目标寄存器链的情况下,根据上述目标寄存器链的串联顺序以及各上述目标寄存器链的输入端与上述目标存储器的输入端的对应关系,确定上述目标存储器的初始值。
在实际的应用过程中,存在目标寄存器链组的容量小于对应的目标存储器的容量的情况,在这种情况下,为了进一步地保证后续可以使用上述目标存储器替换对应的目标寄存器链组,本申请的再一种具体的实施例中,在按照上述目标寄存器链组的结构信息,确定多个上述寄存器的初始值的排列顺序之后,在确定上述初始值数组为上述目标存储器的初始值之前,上述方法还包括:确定上述目标存储器的容量是否大于上述目标寄存器链组的容量;在上述目标存储器的容量大于上述目标寄存器链组的容量的情况下,确定上述初始值数组的缺失位,上述缺失位为上述目标寄存器链组与上述目标存储器相比缺少上述初始值的位置;将预定数值作为上述缺失位的初始值,得到更新后的上述初始值数组。
一种具体的实施例中,当目标寄存器链组的容量不满足对应的目标存储器的容量时,缺失位的初始值均补0。
图2为根据本申请的FPGA设计的综合实现方法生成的流程图。由图2可得,首先找到FPGA设计中的所有的寄存器链,然后将相同的寄存器链合并为寄存器链组,之后在寄存器链组的基础上构建对应的存储器的输入输出信号以及初始值,最后使用存储器替换FPGA设计中所有对应的寄存器链组,并删除对应的寄存器链组,得到更新后的FPGA设计。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种FPGA设计的综合实现装置,需要说明的是,本申请实施例的FPGA设计的综合实现装置可以用于执行本申请实施例所提供的用于FPGA设计的综合实现方法。以下对本申请实施例提供的FPGA设计的综合实现装置进行介绍。
图3是根据本申请实施例的FPGA设计的综合实现装置的示意图。如图3所示,该装置包括获取单元10、第一确定单元20和替换单元30,其中,上述获取单元10用于获取FPGA设计中的目标寄存器链组,上述目标寄存器链组包括至少一个寄存器链,上述寄存器链为多个寄存器串联构成的,多个上述寄存器的控制信号相同,且多个上述寄存器均为同步寄存器或异步寄存器;上述第一确定单元20用于确定上述目标寄存器链组对应的目标存储器;上述替换单元30用于使用上述目标存储器替换对应的上述目标寄存器链组,得到更新后的FPGA设计。
上述的FPGA设计的综合实现装置,通过上述获取单元获取FPGA设计中的寄存器链组,上述寄存器链组中至少包括一个寄存器链,即上述寄存器链组可以包括一个寄存器链,还可以包括多个寄存器链,一个寄存器链中包括串联的多个寄存器;通过上述第一确定单元确定目标寄存器链组对应的目标存储器,上述寄存器链组包括上述目标寄存器链组;通过上述替换单元使用目标存储器替换对应的目标寄存器链组,得到更新后的FPGA设计。本申请的上述装置中,通过使用目标存储器替换FPGA设计中的对应的目标寄存器链组,即使用一个目标存储器替换了FPGA设计中对应的多个寄存器,由于一个目标存储器对应的节点数量少于多个寄存器对应的节点数量,这样保证了更新后的FPGA设计中的节点较少,从而保证了芯片的占用面积较少,保证了芯片资源占用较少,解决了现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。
在实际的应用过程中,存储器的数据输入或输出都为总线形式,因此可以将长度相同并且类型相同的寄存器链合并成寄存器链组,将寄存器链组映射为存储器。
根据本申请的一种具体的实施例,上述获取单元包括获取模块和遍历模块,其中,上述获取模块用于获取上述FPGA设计中的目标寄存器;上述遍历模块用于根据上述目标寄存器,对上述FPGA设计进行遍历,确定上述寄存器链组。通过上述目标寄存器,对FPGA设计进行遍历,得到上述寄存器链组,这样可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组,方便了后续将寄存器链组中的至少部分寄存器链组替换为对应的存储器。
为了进一步地保证可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组,根据本申请的另一种具体的实施例,如图4所示,在上述寄存器链组中包括一个上述寄存器链的情况下,上述遍历模块包括第一遍历子模块,上述第一遍历子模块用于以上述目标寄存器100作为起始位置,沿第一方向和第二方向分别对上述FPGA设计进行遍历,确定上述寄存器链200,上述寄存器链200为上述寄存器链组,上述第一方向为上述目标寄存器100的输入端的延伸方向,上述第二方向为上述目标寄存器100的输出端的延伸方向,上述第一方向和上述第二方向相反。
根据本申请的再一种具体的实施例,在上述寄存器链组中包括多个上述寄存器链的情况下,上述遍历模块包括第二遍历子模块和合并模块,其中,上述第二遍历子模块用于以上述目标寄存器作为起始位置,沿第一方向和第二方向分别对上述FPGA设计进行遍历,确定多个上述寄存器链,多个上述寄存器链的容量和类型均相同,上述第一方向为上述目标寄存器的输入端的延伸方向,上述第二方向为上述目标寄存器的输出端的延伸方向,上述第一方向和上述第二方向相反;上述合并模块用于将多个上述寄存器链进行合并,得到上述寄存器链组。这样进一步地保证了可以较为快捷准确地找到上述FPGA设计中所有的寄存器链组。
本申请的一种具体的实施例中,先确定FPGA设计中的一个目标寄存器,由目标寄存器的输出引脚向后遍历搜索寄存器,直到寄存器的链尾,然后再从此目标寄存器的输入引脚向前遍历搜索寄存器,直到寄存器的链头,记录此寄存器的链头及链尾。遍历过程中要满足此链中的所有寄存器控制信号相同并且同为同步或异步。循环上述步骤,直到找到FPGA设计中所有的寄存器链,并记录寄存器链的输入输出及寄存器链的长度。
本申请的又一种具体的实施例中,上述第一确定单元包括确定模块和构建模块,其中,上述确定模块用于根据上述目标寄存器链组,确定对应的上述目标存储器的输入端、输出端、写使能端以及初始值;上述构建模块用于根据上述目标寄存器链组,构建对应的上述目标存储器的地址总线。上述装置,根据上述目标寄存器链组,确定对应的上述目标存储器的输入端、输出端、写使能端以及初始值,并构建对应的上述目标存储器的地址总线,进一步地方便了后续使用上述目标存储器替换对应的上述目标寄存器链组,从而进一步地保证了更新后的FPGA设计中的节点较少,进一步地保证了占用的芯片资源较少。
为了较为简单地建立上述目标存储器的地址总线,从而进一步地方便后续使用上述目标存储器替换对应的上述目标寄存器链组,本申请的再一种具体的实施例中,上述构建模块包括第一获取子模块、第一确定子模块、构建子模块和第二确定子模块,其中,上述第一获取子模块用于获取上述目标寄存器链组中目标寄存器链的深度;上述第一确定子模块用于根据上述目标寄存器链的深度,确定上述地址总线的宽度;上述构建子模块用于根据上述地址总线的宽度,构建计数器;上述第二确定子模块用于确定上述计数器的输出端为上述地址总线。
在实际的应用过程中,上述计数器的构建可以使用FPGA设计上具有加法功能的原语来实现,也可以使用其他逻辑原语来实现。上述目标存储器的地址位宽为log2 depth向上取整,depth(深度)为对应的目标寄存器链组的深度,例如目标寄存器链组的深度为16,那么对应的目标存储器的地址宽度为4,当目标寄存器链组的深度为17时,那么对应的目标存储器的地址宽度为5。
为了进一步方便后续使用上述目标存储器替换对应的上述目标寄存器链组,从而进一步地保证更新后的FPGA设计中的节点较少,根据本申请的再一种具体的实施例,上述确定模块包括第三确定子模块、第四确定子模块、第五确定子模块、第二获取子模块和第六确定子模块,其中,上述第三确定子模块用于确定上述目标寄存器链组中目标寄存器链的输入端为上述目标存储器的输入端;上述第四确定子模块用于确定上述目标寄存器链的输出端为上述目标存储器的输出端;上述第五确定子模块用于确定上述目标寄存器链组中多个上述寄存器的使能端为上述目标存储器的写使能端;上述第二获取子模块用于获取上述目标寄存器链组中多个上述寄存器的初始值;上述第六确定子模块用于根据多个上述寄存器的初始值,确定上述目标存储器的初始值。
在实际的应用过程中,上述第六确定子模块还用于按照上述目标寄存器链组的结构信息,确定多个上述寄存器的初始值的排列顺序,得到初始值数组,上述结构信息至少包括上述目标寄存器链的串联顺序;上述第六确定子模块还用于确定上述初始值数组为上述目标存储器的初始值。上述装置,通过上述目标寄存器链的串联顺序,可以较为简单快捷地确定对应的上述目标存储器的初始值。
根据本申请的又一种具体的实施例,在上述目标寄存器链组包括多个上述目标寄存器链的情况下,上述结构信息还包括各上述目标寄存器链的输入端与上述目标存储器的输入端的对应关系。在上述目标寄存器链组包括多个上述目标寄存器链的情况下,根据上述目标寄存器链的串联顺序以及各上述目标寄存器链的输入端与上述目标存储器的输入端的对应关系,确定上述目标存储器的初始值。
在实际的应用过程中,存在目标寄存器链组的容量小于对应的目标存储器的容量的情况,在这种情况下,为了进一步地保证后续可以使用上述目标存储器替换对应的目标寄存器链组,本申请的再一种具体的实施例中,上述装置还包括第二确定单元、第三确定单元和得到单元,其中,上述第二确定单元用于在按照上述目标寄存器链组的结构信息,确定多个上述寄存器的初始值的排列顺序之后,在确定上述初始值数组为上述目标存储器的初始值之前,确定上述目标存储器的容量是否大于上述目标寄存器链组的容量;上述第三确定单元用于在上述目标存储器的容量大于上述目标寄存器链组的容量的情况下,确定上述初始值数组的缺失位,上述缺失位为上述目标寄存器链组与上述目标存储器相比缺少上述初始值的位置;上述得到单元用于将预定数值作为上述缺失位的初始值,得到更新后的上述初始值数组。
一种具体的实施例中,当目标寄存器链组的容量不满足对应的目标存储器的容量时,缺失位的初始值均补0。
上述FPGA设计的综合实现装置包括处理器和存储器,上述获取单元、上述第一确定单元和上述替换单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决现有技术中FPGA设计在综合阶段占用较多芯片资源的问题的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(Flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述FPGA设计的综合实现方法。
本发明实施例提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行上述FPGA设计的综合实现方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S101,获取FPGA设计中的寄存器链组,上述寄存器链组包括至少一个寄存器链,上述寄存器链为多个寄存器串联构成的,多个上述寄存器的控制信号相同,且多个上述寄存器均为同步寄存器或异步寄存器;
步骤S102,确定目标寄存器链组对应的目标存储器;
步骤S103,使用上述目标存储器替换对应的上述目标寄存器链组,得到更新后的FPGA设计。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S101,获取FPGA设计中的寄存器链组,上述寄存器链组包括至少一个寄存器链,上述寄存器链为多个寄存器串联构成的,多个上述寄存器的控制信号相同,且多个上述寄存器均为同步寄存器或异步寄存器;
步骤S102,确定目标寄存器链组对应的目标存储器;
步骤S103,使用上述目标存储器替换对应的上述目标寄存器链组,得到更新后的FPGA设计。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请上述的FPGA设计的综合实现方法,首先获取FPGA设计中的寄存器链组,上述寄存器链组中至少包括一个寄存器链,即上述寄存器链组可以包括一个寄存器链,还可以包括多个寄存器链,一个寄存器链中包括串联的多个寄存器;然后确定目标寄存器链组对应的目标存储器,上述寄存器链组包括上述目标寄存器链组;最后使用目标存储器替换对应的目标寄存器链组,得到更新后的FPGA设计。本申请的上述方法中,通过使用目标存储器替换FPGA设计中的对应的目标寄存器链组,即使用一个目标存储器替换了FPGA设计中对应的多个寄存器,由于一个目标存储器对应的节点数量少于多个寄存器对应的节点数量,这样保证了更新后的FPGA设计中的节点较少,从而保证了芯片的占用面积较少,保证了芯片资源占用较少,解决了现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。
2)、本申请上述的FPGA设计的综合实现装置,通过上述获取单元获取FPGA设计中的寄存器链组,上述寄存器链组中至少包括一个寄存器链,即上述寄存器链组可以包括一个寄存器链,还可以包括多个寄存器链,一个寄存器链中包括串联的多个寄存器;通过上述第一确定单元确定目标寄存器链组对应的目标存储器,上述寄存器链组包括上述目标寄存器链组;通过上述替换单元使用目标存储器替换对应的目标寄存器链组,得到更新后的FPGA设计。本申请的上述装置中,通过使用目标存储器替换FPGA设计中的对应的目标寄存器链组,即使用一个目标存储器替换了FPGA设计中对应的多个寄存器,由于一个目标存储器对应的节点数量少于多个寄存器对应的节点数量,这样保证了更新后的FPGA设计中的节点较少,从而保证了芯片的占用面积较少,保证了芯片资源占用较少,解决了现有技术中FPGA设计在综合阶段占用较多芯片资源的问题。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种FPGA设计的综合实现方法,其特征在于,包括:
获取FPGA设计中的寄存器链组,所述寄存器链组包括至少一个寄存器链,所述寄存器链为多个寄存器串联构成的,多个所述寄存器的控制信号相同,且多个所述寄存器均为同步寄存器或异步寄存器;
确定目标寄存器链组对应的目标存储器;
使用所述目标存储器替换对应的所述目标寄存器链组,得到更新后的FPGA设计,
获取FPGA设计中的寄存器链组,包括:
获取所述FPGA设计中的目标寄存器;
根据所述目标寄存器,对所述FPGA设计进行遍历,确定所述寄存器链组,
根据所述目标寄存器,对所述FPGA设计进行遍历,确定所述寄存器链组,包括:
以所述目标寄存器作为起始位置,沿第一方向和第二方向分别对所述FPGA设计进行遍历,确定多个所述寄存器链,多个所述寄存器链的容量和类型均相同,所述第一方向为所述目标寄存器的输入端的延伸方向,所述第二方向为所述目标寄存器的输出端的延伸方向,所述第一方向和所述第二方向相反;
将多个所述寄存器链进行合并,得到所述寄存器链组。
2.根据权利要求1所述的方法,其特征在于,根据所述目标寄存器,对所述FPGA设计进行遍历,确定所述寄存器链组,包括:
以所述目标寄存器作为起始位置,沿第一方向和第二方向分别对所述FPGA设计进行遍历,确定所述寄存器链,所述寄存器链为所述寄存器链组,所述第一方向为所述目标寄存器的输入端的延伸方向,所述第二方向为所述目标寄存器的输出端的延伸方向,所述第一方向和所述第二方向相反。
3.根据权利要求1所述的方法,其特征在于,确定目标寄存器链组对应的目标存储器,包括:
根据所述目标寄存器链组,确定对应的所述目标存储器的输入端、输出端、写使能端以及初始值;
根据所述目标寄存器链组,构建对应的所述目标存储器的地址总线。
4.根据权利要求3所述的方法,其特征在于,根据所述目标寄存器链组,构建对应的所述目标存储器的地址总线,包括:
获取所述目标寄存器链组中目标寄存器链的深度;
根据所述目标寄存器链的深度,确定所述地址总线的宽度;
根据所述地址总线的宽度,构建计数器;
确定所述计数器的输出端为所述地址总线。
5.根据权利要求3所述的方法,其特征在于,根据所述目标寄存器链组,确定对应的所述目标存储器的输入端、输出端、写使能端以及初始值,包括:
确定所述目标寄存器链组中目标寄存器链的输入端为所述目标存储器的输入端;
确定所述目标寄存器链的输出端为所述目标存储器的输出端;
确定所述目标寄存器链组中多个所述寄存器的使能端为所述目标存储器的写使能端;
获取所述目标寄存器链组中多个所述寄存器的初始值;
根据多个所述寄存器的初始值,确定所述目标存储器的初始值。
6.根据权利要求5所述的方法,其特征在于,根据多个所述寄存器的初始值,确定所述目标存储器的初始值,包括:
按照所述目标寄存器链组的结构信息,确定多个所述寄存器的初始值的排列顺序,得到初始值数组,所述结构信息至少包括所述目标寄存器链的串联顺序;
确定所述初始值数组为所述目标存储器的初始值。
7.根据权利要求6所述的方法,其特征在于,在所述目标寄存器链组包括多个所述目标寄存器链的情况下,所述结构信息还包括各所述目标寄存器链的输入端与所述目标存储器的输入端的对应关系。
8.根据权利要求6或7所述的方法,其特征在于,在按照所述目标寄存器链组的结构信息,确定多个所述寄存器的初始值的排列顺序之后,在确定所述初始值数组为所述目标存储器的初始值之前,所述方法还包括:
确定所述目标存储器的容量是否大于所述目标寄存器链组的容量;
在所述目标存储器的容量大于所述目标寄存器链组的容量的情况下,确定所述初始值数组的缺失位,所述缺失位为所述目标寄存器链组与所述目标存储器相比缺少所述初始值的位置;
将预定数值作为所述缺失位的初始值,得到更新后的所述初始值数组。
9.一种FPGA设计的综合实现装置,其特征在于,包括:
获取单元,用于获取FPGA设计中的目标寄存器链组,所述目标寄存器链组包括至少一个寄存器链,所述寄存器链为多个寄存器串联构成的,多个所述寄存器的控制信号相同,且多个所述寄存器均为同步寄存器或异步寄存器;
第一确定单元,用于确定所述目标寄存器链组对应的目标存储器;
替换单元,用于使用所述目标存储器替换对应的所述目标寄存器链组,得到更新后的FPGA设计,
所述获取单元包括获取模块和遍历模块,其中,所述获取模块用于获取所述FPGA设计中的目标寄存器;所述遍历模块用于根据所述目标寄存器,对所述FPGA设计进行遍历,确定所述寄存器链组,通过所述目标寄存器,对FPGA设计进行遍历,得到所述寄存器链组,在所述寄存器链组中包括多个所述寄存器链的情况下,
所述遍历模块包括第二遍历子模块和合并模块,其中,所述第二遍历子模块用于以所述目标寄存器作为起始位置,沿第一方向和第二方向分别对所述FPGA设计进行遍历,确定多个所述寄存器链,多个所述寄存器链的容量和类型均相同,所述第一方向为所述目标寄存器的输入端的延伸方向,所述第二方向为所述目标寄存器的输出端的延伸方向,所述第一方向和所述第二方向相反;
所述合并模块用于将多个所述寄存器链进行合并,得到所述寄存器链组。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,所述程序执行权利要求1至8中任意一项所述的方法。
11.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至8中任意一项所述的方法。
12.一种电子设备,其特征在于,包括:一个或多个处理器,存储器以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至8中任意一项所述的方法。
CN202110321055.2A 2021-03-25 2021-03-25 Fpga设计的综合实现方法和装置 Active CN112906332B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110321055.2A CN112906332B (zh) 2021-03-25 2021-03-25 Fpga设计的综合实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110321055.2A CN112906332B (zh) 2021-03-25 2021-03-25 Fpga设计的综合实现方法和装置

Publications (2)

Publication Number Publication Date
CN112906332A CN112906332A (zh) 2021-06-04
CN112906332B true CN112906332B (zh) 2022-08-23

Family

ID=76106524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110321055.2A Active CN112906332B (zh) 2021-03-25 2021-03-25 Fpga设计的综合实现方法和装置

Country Status (1)

Country Link
CN (1) CN112906332B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113836852B (zh) * 2021-08-18 2024-04-05 深圳市紫光同创电子有限公司 模拟位流生成方法、装置、设备和存储介质
CN114116600A (zh) * 2021-10-31 2022-03-01 山东云海国创云计算装备产业创新中心有限公司 一种芯片降功耗设计方法及芯片

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111108492A (zh) * 2017-11-14 2020-05-05 超威半导体公司 虚拟fpga管理和优化***

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0463721A3 (en) * 1990-04-30 1993-06-16 Gennum Corporation Digital signal processing device
US6937531B2 (en) * 2003-07-21 2005-08-30 Infineon Technologies Ag Memory device and method of storing fail addresses of a memory cell
EP1684180A4 (en) * 2003-11-12 2008-10-29 Matsushita Electric Ind Co Ltd CACHE MEMORY AND CONTROL PROCEDURE THEREFOR
US7535254B1 (en) * 2007-05-14 2009-05-19 Xilinx, Inc. Reconfiguration of a hard macro via configuration registers
US7633800B2 (en) * 2007-08-08 2009-12-15 Atmel Corporation Redundancy scheme in memory
US8281190B2 (en) * 2009-08-02 2012-10-02 Avago Technologies Enterprise IP (Singapore) Pte. Ltd. Circuits and methods for processing memory redundancy data
GB2540948B (en) * 2015-07-31 2021-09-15 Advanced Risc Mach Ltd Apparatus with reduced hardware register set
FR3065303B1 (fr) * 2017-04-12 2019-06-07 Stmicroelectronics (Rousset) Sas Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
US10699053B1 (en) * 2018-01-17 2020-06-30 Xilinx, Inc. Timing optimization of memory blocks in a programmable IC

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111108492A (zh) * 2017-11-14 2020-05-05 超威半导体公司 虚拟fpga管理和优化***

Also Published As

Publication number Publication date
CN112906332A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN112906332B (zh) Fpga设计的综合实现方法和装置
CN111079917B (zh) 张量数据分块存取的方法及装置
CN112130768B (zh) 磁盘阵列在线扩容方法、装置及计算机可读存储介质
CN104281455A (zh) 一种接口调用方法、装置及终端
US11455781B2 (en) Data reading/writing method and system in 3D image processing, storage medium and terminal
CN107577629B (zh) 一种数据接口处理方法、装置、服务器及介质
CN109189327A (zh) 区块链数据的压缩处理方法和装置
CN105468538A (zh) 一种内存迁移方法及设备
EP4012573A1 (en) Graph reconstruction method and apparatus
US10970206B2 (en) Flash data compression decompression method and apparatus
CN115712394A (zh) 数据读写方法、装置、计算机设备及可读存储介质
CN113760751B (zh) 生成测试用例的方法、电子设备及存储介质
CN104678815A (zh) Fpga芯片的接口结构及配置方法
Wu et al. Hetero layer fusion based architecture design and implementation for of deep learning accelerator
CN113253939A (zh) 数据处理方法、装置、电子设备及存储介质
CN113328948A (zh) 资源管理方法、装置、网络设备及计算机可读存储介质
CN114579189B (zh) 单核以及多核访问寄存器数据的方法、处理器和***
CN108733678B (zh) 一种数据搜索的方法、装置和相关设备
CN113918879A (zh) 矩阵运算的方法和加速器
CN112949235A (zh) 电子设备的配置方法、装置、处理器及存储介质
CN116248577B (zh) 一种确定算力节点的方法及装置
CN113610223B (zh) 乘法电路、卷积运算方法、介质、片上***和电子设备
CN113986134B (zh) 存储数据的方法、读取数据的方法和装置
CN113126918B (zh) 一种碎片化数据读取方法、装置及介质
CN107665281A (zh) 一种基于fpga的处理器模拟方法

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