用于基于源代码中定义的硬件要求来设计FPGA的方法和系统技术方案

技术编号:16557266 阅读:43 留言:0更新日期:2017-11-14 16:50
本发明专利技术提供用于基于源代码中定义的硬件要求来设计FPGA的方法和系统。根据一个实施例,解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程。基于源代码中定义的与第一例程和第二例程相关联的一个或多个声明来确定第一例程与第二例程之间的控制信令拓扑。分配描述第一硬件配置的第一逻辑块,第一硬件配置表示第一例程的第一函数。分配描述第二硬件配置的第二逻辑块,第二硬件配置表示第二例程的第二函数。基于第一逻辑块和第二逻辑块来生成寄存器传输级网表,其中,第二逻辑块用以基于控制信令拓扑来执行依赖于由第一逻辑块执行的第一函数的第二函数。

Method and system for designing FPGA based on hardware requirements defined in source code

The present invention provides a method and system for designing FPGA based on the hardware requirements defined in source code. According to an example, the source code is parsed to identify the first routine for executing the first function and the second routine for executing the second function. A control signaling topology between the first routine and the second routine is determined based on one or more declarations defined in the source code associated with the first routine and the second routine. A first logical block describing the first hardware configuration is assigned, and the first hardware configuration represents the first function of the first routine. A second logical block is assigned to describe the second hardware configuration, and the second hardware configuration represents the second function of the second routine. A register transmission level netlist is generated based on the first logical block and the second logical block, wherein the second logic block executes the second function dependent on the first function executed by the first logical block based on the control signaling topology.

【技术实现步骤摘要】
用于基于源代码中定义的硬件要求来设计FPGA的方法和系统
本专利技术的实施例一般涉及设计现场可编程门阵列(FPGA)。更具体地,本专利技术的实施例涉及基于软件定义的硬件要求来设计FPGA。
技术介绍
在当今的高性能计算(HPC)领域内,使用现场可编程门阵列(FPGA)装置作为协处理器以加速高容量数据中心应用已成为广为接受的解决方案。该方法不仅能够将相当大的计算工作量从中央处理单元(CPU)转移至FPGA并释放CPU以用于其他任务,而且由于FPGA的高并行性、高吞吐量、低功耗和低的确定性延迟时间而能够实现更好的性能。当今,现有技术的FPGA设计方法通常使用两种类型的设计流程,这两种类型的设计流程都仍是以硬件为导向并具有开发周期长、可扩展性有限且不灵活的显著问题。在第一种类型的设计流程中,在接收到对于软件应用程序的功能要求之后,FPGA设计者提出硬件设计架构,并且以诸如VerilogTM和VHDL的硬件描述语言(HDL)撰写作为设计输入以构建从块级到系统级的FPGA设计。该方法需要并行编程和HDL的特殊知识。其需要非常具体的设计以覆盖硬件电路的每个方面。由于HDL的复杂性和长开发周期,该方法通常将硬件开发与软件演进隔离开来,因此无法跟上软件进步的快速步调,也不支持软件优化的快速迭代。使用该方法,也意味着当移植应用程序进行FPGA技术的更新换代时需要相当大的工作量。在第二种类型的设计流程中,在软件应用程序中提取并识别某些功能块之后,FPGA设计者使用高级综合(HLS)工具来执行某一级代码变换,然后基于原始的C/C++源代码来生成HDL,然后使用HDL来将这些HDL块插入系统级设计中。由于HLS的C至寄存器传输级(RTL)编译流程,该方法稍微缩短了HDL开发时间。然而,其通常预先定义固定的自顶向下的硬件架构,包括在多个功能块之间的固定数据路径、数据流和拓扑。这样的固定架构无法容易地或有效地支持软件重新划分或者数据流重新安排,这是因为这些功能块之间的接口和互连线仍以HDL撰写。撰写并验证HDL代码仍是耗时的任务。此外,在高性能计算(HPC)系统中,也需要使多个FPGA一起工作以提供扩大计算容量并支持大规模软件例程的扩展解决方案。在如上所述的两种设计流程中,将FPGA间通信预定义为硬件架构的一部分来替代软件抽象。其通常需要软件/硬件协同设计以决定固定的架构。这种专用于某些软件应用程序所创建的架构未向软件开发者提供允许他们使不同数据流迭代的灵活且适应性强的解决方案。
技术实现思路
鉴于现有技术中的上述缺陷或不足,本专利技术在第一方面提供一种用于对现场可编程门阵列FPGA进行编程的计算机实现方法,所述方法包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。本专利技术在第二方面提供一种非暂态计算机可读介质,其存储有在由处理器执行时使得该处理器执行设计FPGA的操作的指令,所述操作包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。本专利技术在第三方面提供一种用于在移动装置中搜索图像的数据处理系统,所述系统包括:处理器;以及存储器,耦合至所述处理器,所述处理器存储在由所述处理器执行时使得所述处理器执行对FPGA进行编程的操作的指令,所述操作包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。附图说明在附图的各图中,作为示例而不作为限制示出了本专利技术的实施例,其中,相同的附图标记表示相同的元件。图1是示出根据本专利技术的一个实施例的软件定义的FPGA设计架构的框图。图2是示出根据本专利技术的一个实施例的、基于软件定义的要求的FPGA设计的处理流程的流程图。图3A至图3D是表示根据本专利技术的某些实施例的定义逻辑块间通信拓扑的源代码的伪代码。图4是示出根据本专利技术的第一实施例的、由图3A-3D定义的FPGA的框图。图5是示出根据本专利技术的一个实施例的、基于软件定义的特征来设计FPGA的处理的流程图。图6A是表示经由FIFO进行数据传输的传统源代码的伪代码。图6B是表示根据本专利技术的一个实施例的软件定义的存储器映射数据传输的伪代码。图7是示出根据本专利技术的一个实施例的、由图6A-6B定义的FPGA的框图。图8是示出根据本专利技术的另一实施例的、基于软件定义特征来设计FPGA的处理的流程图。图9是示出根据本专利技术的一个实施例的、在设计FPGA中软件定义的对功能分割的伪代码。图10是示出根据本专利技术的一个实施例的软件定义的对FPGA分割的示例的框图。图11是示出根据本专利技术的另一实施例的、用于基于软件定义的要求来设计FPGA的处理的流程图。图12是示出根据一个实施例的数据处理系统的框图。具体实施方式将参照以下讨论的详情来描述本专利技术的各个实施例和方面,并且附图将示出各个实施例。以下描述和附图对本专利技术给予说明而不应解释为限制本专利技术。为了提供对本专利技术的各个实施例的彻底理解而描述了许多具体详情。然而,在某些实例中,为了使对本专利技术的实施例的讨论简要而未描述已知或传统的详情。在说明书中对“一个实施例”或“实施例”的提及意味着,结合该实施例所描述的特定特征、结构或特性可以包括在本专利技术的至少一个实施例中。在说明书中的各个地方中短语“在其他实施例”的出现不一定都是指同一实施例。根据一些实施例,利用软件定义的FPGA平台来提供整体的软件抽象环境以及关于计算函数和数据流这两者(FPGA内和FPGA间这两者)的编程模型、以及可以快速适应并映射至这样的抽象的耦合硬件设计。硬件平台可以包括经由互连总线连接至一个或多个FPGA装置(客户端)的一个或多个CPU(主机)本文档来自技高网
...
用于基于源代码中定义的硬件要求来设计FPGA的方法和系统

【技术保护点】
一种用于对现场可编程门阵列FPGA进行编程的计算机实现方法,所述方法包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。

【技术特征摘要】
2016.05.06 US 15/148,4781.一种用于对现场可编程门阵列FPGA进行编程的计算机实现方法,所述方法包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。2.根据权利要求1所述的方法,其中,所述控制信令拓扑指定:直到完成所述第一函数才执行所述第二函数,而无需与所述FPGA外部的主机处理器进行信令传送。3.根据权利要求2所述的方法,其中,所述控制信令拓扑指定:只要所述第一函数的结果满足预定条件就执行所述第二函数。4.根据权利要求1所述的方法,其中,所述源代码包括指定所述第一例程是非阻塞例程的第一声明,并且其中,所述源代码还包括指定所述第二例程是非阻塞例程的第二声明,以使得异步地执行所述第一例程和所述第二例程。5.根据权利要求1所述的方法,还包括:基于所述源代码中指定的应用程序编程接口API来确定所述第一例程经由存储器位置将数据传输至所述第二例程;以及在所述第一逻辑块与所述第二逻辑块之间分配存储器块,以允许所述第一逻辑块将数据写入至所述存储器块以及允许所述第二逻辑块从所述存储器块读取数据。6.根据权利要求5所述的方法,其中,所述存储器块提供存储所述第一逻辑块和所述第二逻辑块能够异步访问的数据的存储器映射存储位置。7.根据权利要求6所述的方法,其中,所述存储器块能够由第三逻辑块访问,以基于所述第一逻辑块产生的、存储在所述存储器块中的数据执行第三函数。8.根据权利要求6所述的方法,其中,所述第二逻辑块将第二数据写入至所述存储器块。9.根据权利要求1所述的方法,还包括:基于所述源代码中的与所述第一例程相关联的第一声明来确定所述第一例程要以第一FPGA来实现;基于所述源代码中的与所述第二例程相关联的第二声明来确定所述第二例程要以第二FPGA来实现;生成用于要编程至所述第一FPGA的所述第一例程的第一RTL网表;以及生成用于要编程至所述第二FPGA的所述第二例程的第二RTL网表。10.根据权利要求9所述的方法,其中,所述第一RTL网表包括描述第一接口电路与所述第二FPGA接口的指令,并且,其中,所述第二RTL网表包括描述第二接口电路与所述第一FPGA接口的指令。11.一种非暂态计算机可读介质,其存储有在由处理器执行时使得该处理器执行设计FPGA的操作的指令,所述操作包括:解析源代码以识别用以执行第一函数的第一例程和用以执行第二函数的第二例程;基于所述源代码中定义的与所述第一例程和所述第二例程相关联的一个或多个声明来确定所述第一例程与所述第二例程之间的控制信令拓扑;分配描述第一硬件配置的第一逻辑块,所述第一硬件配置表示所述第一例程的所述第一函数;分配描述第二硬件配置的第二逻辑块,所述第二硬件配置表示所述第二例程的所述第二函数;以及基于所述第一逻辑块和所述第二逻辑块来生成寄存器传输级RTL网表,其中,所述第二逻辑块用以基于所述控制信令拓扑来执行依赖于由所述第一逻辑块执行的所述第一函数的所述第二函数。12.根据权利要求11所述的非暂态机器可读介质,其中,所述控制信令拓扑指定:直到完成所述第一函数才执行所述第二函数,而无需与所述FPGA外部的主机处理器进行信令传送。13.根据权利要求12所述的非暂态机器可读介质,,其中,所述控制信令拓扑指定:只要所述第一函数的结果满足预定条件就执行所述第二函数。14.根据权利要求11所述的非暂态机器可读介质,其中,所述源代码包括指定所述第一例程是非阻塞例程的第一声明,并且其中,所述源代码还包括规定所述第二例程是非阻塞例程的第二声明,以使得异步地执行所述第一例程和所述第二例程。15.根据权利要求11所述的非暂态机器可读介质,其中,所述操作还包括:基于所述源代码中指定的应用程序编程接口AP...

【专利技术属性】
技术研发人员:黄岱冯佳哈桑·基亚尼内杰德张妍嫣张满江
申请(专利权)人:百度美国有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1