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来将这些HD ...
【技术保护点】
一种用于对现场可编程门阵列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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。