首页> 中国专利> 一种硬件仿真中多个FPGA自动互联的方法及系统

一种硬件仿真中多个FPGA自动互联的方法及系统

摘要

本发明揭示了一种硬件仿真中多个FPGA自动互联的方法及系统,方法包括步骤:读取待分割芯片的源文件;提取并存储源文件中的模块信息,模块信息包括多个模块的模块名及与多个模块对应的端口信息;读取配置文件;提取并存储配置文件中的配置信息,配置信息包括模块名及与模块名对应的FPGA信息;根据配置信息中的模块名读取对应的端口信息;根据配置信息中的FPGA信息存储端口信息;根据端口信息生成分别对应每一FPGA的顶层文件和互联线信息文件;通过顶层文件和互联线信息文件实现多个FPGA之间的互联。本发明自动索引模块间的互联线信息,并可人为随意指定FPGA和其包含的模块数量,在效率、准确度和灵活度上有很大的提高。

著录项

  • 公开/公告号CN104536931A

    专利类型发明专利

  • 公开/公告日2015-04-22

    原文格式PDF

  • 申请/专利权人 盛科网络(苏州)有限公司;

    申请/专利号CN201510024174.6

  • 发明设计人 魏旋;胡国兴;周磊;

    申请日2015-01-16

  • 分类号G06F13/38(20060101);

  • 代理机构苏州威世朋知识产权代理事务所(普通合伙);

  • 代理人杨林洁

  • 地址 215021 江苏省苏州市工业园区星汉街5号B幢4楼13/16单元

  • 入库时间 2023-12-18 08:20:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-28

    授权

    授权

  • 2015-05-20

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20150116

    实质审查的生效

  • 2015-04-22

    公开

    公开

说明书

技术领域

本发明涉及电子设计自动化设计技术领域,尤其涉及一种硬件仿真中多个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的数量和其内部包含的模块数量,在效率、准确度和灵活度上有很大的提高。

附图说明

图1是本发明一实施方式的硬件仿真中多个FPGA自动互联的方法流程图;

图2是本发明一实施方式的硬件仿真中多个FPGA自动互联的系统框图;

图3是本发明一具体示例的待分割芯片的结构示意图;

图4是本发明一具体示例的待分割芯片逻辑分割后分配至多个FPGA中的结构示意图。

具体实施方式

以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

本发明将一整个待分割芯片进行逻辑分割,形成多个模块,多个模块分别容置于多个FPGA中,其中,FPGA及模块的数量、每一所述FPGA中容纳的模块数量可依据实际情况而定。

如图1所示,本发明的硬件仿真中多个FPGA自动互联的方法包括如下步骤:

读取所述待分割芯片的源文件;

提取并存储所述源文件中的模块信息,所述模块信息包括所述多个模块的模块名及与所述多个模块对应的端口信息;

读取配置文件;

提取并存储所述配置文件中的配置信息,所述配置信息包括所述模块名及与所述模块名对应的FPGA信息;

根据所述配置信息中的所述模块名读取对应的所述端口信息;

根据所述配置信息中的所述FPGA信息存储所述端口信息;

根据所述端口信息生成分别对应每一所述FPGA的顶层文件和互联线信息文件;

通过所述顶层文件和所述互联线信息文件实现多个FPGA之间的互联。

其中,所述源文件为所述待分割芯片的源代码,本实施方式以verilog HDL语言编写的源代码为例,但不以此为限;所述配置文件主要用于指定每一模块分配到对应的FPGA中;所述端口信息包括模块的端口、线网、寄存器、逻辑运算以及硬件可描述语言的语法信息等;所述互联线信息文件包含所述FPGA之间互联线的端口名称、位宽等,所述互联线信息以特定的格式进行输出,用于后续FPGA之间的互联;生成的所述顶层文件和所述互联线信息文件下载至对应的FPGA中,并将所述顶层文件和所述互联线信息文件存储以备后续使用。

在本实施方式中,“提取并存储所述源文件中的模块信息,所述模块信息包括所述多个模块的模块名及与所述多个模块对应的端口信息”具体包括:

利用真值表进行源文件匹配;

提取并存储所述源文件中匹配成功的所述模块信息。

其中,所述真值表定义了一些特征量,用以匹配源文件中的模块信息,具体的,所述真值表根据硬件可描述语言的语法原则,将模块定义的结构特点和数据类型等原语定义为关键字,并根据关键字匹配提取各源文件中包含的端口、互联线、模块名等信息。例如,源文件中定义输入端口信息时,采用“input”,此时可将“input”作为匹配的关键字,当搜索到源文件中包含“input”时,说明源文件中包含输入端口信息,此时,匹配成功,输入端口信息的输出值为1,若匹配失败,输出值可为0或不输出。匹配成功的模块信息可与对应的模块名一起存储,以备后续使用。

在本实施方式中,每一所述FPGA包括对应的顶层文件及位于所述顶层文件下方的低层文件,顶层文件由于端口信息已经改变,可以按照硬件可描述语言的语法,将生成顶层文件的端口信息进行调整,使其正确输出端口信号,从而确定最终的顶层文件,端口信息的调整规则如下:

(1)当所述低层文件的端口用于传输每一所述FPGA内部多个子模块之间的信息时,若所述端口为待分割芯片初始状态时的输入端或输出端,则根据所述端口信息将所述端口定义为所述FPGA的输入端口或输出端口,若所述端口不是待分割芯片初始状态时的输入端或输出端,则于所述FPGA内部连接所述端口;当所述端口用于传输外部信息时,根据所述端口信息将所述端口定义为所述FPGA的输入端口或输出端口;

(2)当所述低层文件的端口在不同层级具有不同的互联线信息时,采用最顶层互联线信息作为所述端口的所述互联线信息;

(3)当所述低层文件中的模块的上一级路径发生变化时,所述子模块利用所述端口信息与所述子模块的路径做组合后替代初始的所述端口信息;如此,可以防止出现信号重复的现象,添加路径时,采用反斜杠开头,每个层级之间用“.”分隔开;

(4)当所述低层文件的端口连接常数或者悬空时,所述顶层文件的端口对应连接常数或者悬空;

(5)当所述FPGA中的模块为待分割芯片分割多次后重组形成的模块时,重新命名所述模块如此,可对模块进行区分;

(6)当所述端口信息中包含系统任务或预编译处理语句时,识别并存储对应的所述端口信息,并将所述端口信息复现至对应每一所述FPGA的初始的所述端口信息中;其中,系统任务例如为宏定义,但不以此为限。

如图2所示,本发明一实施方式的一种硬件仿真中多个FPGA自动互联的系统包括多个模块、源文件读取单元10、模块信息提取单元11、第一结构体12、配置文件读取单元20、配置信息提取单元21、第二结构体22、端口信息读取单元30、第三结构体31及生成单元32,多个模块被划分至所述多个FPGA中,所述多个模块通过逻辑分割待分割芯片而成;源文件读取单元10用于读取所述待分割芯片的源文件;模块信息提取单元11用于提取所述源文件中的模块信息,所述模块信息包括所述多个模块的模块名及与所述多个模块对应的端口信息;第一结构体12用于存储所述模块信息;配置文件读取单元20用于读取配置文件;配置信息提取单元21用于提取所述配置文件中的配置信息,所述配置信息包括所述模块名及与所述模块名对应的FPGA信息;第二结构体22用于存储所述配置信息;端口信息读取单元30用于根据所述配置信息中的所述模块名读取对应的所述端口信息;第三结构体31用于根据所述配置信息中的所述FPGA信息存储所述端口信息;生成单元32用于根据所述端口信息生成分别对应每一所述FPGA的顶层文件和互联线信息文件,从而通过所述顶层文件和所述互联线信息文件实现多个FPGA之间的互联。

其中,所述源文件为所述待分割芯片的源代码,本实施方式以verilog HDL语言编写的源代码为例,但不以此为限;所述配置文件主要用于指定每一模块分配到对应的FPGA中;所述端口信息包括模块的端口、线网、寄存器、逻辑运算以及硬件可描述语言的语法信息等;所述互联线信息文件包含所述FPGA之间互联线的端口名称、位宽等,所述互联线信息以特定的格式进行输出,用于后续FPGA之间的互联;生成单元32生成的所述顶层文件和所述互联线信息文件下载至对应的FPGA中,并存储于第三结构体31中。

在本实施方式中,所述系统还包括真值表,所述真值表用于进行所述源文件的匹配,所述第一结构体12用于存储匹配成功的所述模块信息。

其中,所述真值表定义了一些特征量,用以匹配源文件中的模块信息,具体的,所述真值表根据硬件可描述语言的语法原则,将模块定义的结构特点和数据类型等原语定义为关键字,并根据关键字匹配提取各源文件中包含的端口、互联线、模块名等信息。例如,源文件中定义输入端口信息时,采用“input”,此时可将“input”作为匹配的关键字,当搜索到源文件中包含“input”时,说明源文件中包含输入端口信息,此时,匹配成功,输入端口信息的输出值为1,若匹配失败,输出值可为0或不输出。匹配成功的模块信息可与对应的模块名一起存储,以备后续使用。

在本实施方式中,每一所述FPGA包括对应的顶层文件及位于所述顶层文件下方的低层文件,顶层文件由于端口信息已经改变,可以按照硬件可描述语言的语法,将生成顶层文件的端口信息进行调整,使其正确输出端口信号,从而确定最终的顶层文件,端口信息的调整规则如下:

(1)当所述低层文件的端口用于传输每一所述FPGA内部多个子模块之间的信息时,若所述端口为待分割芯片初始状态时的输入端或输出端,则根据所述端口信息将所述端口定义为所述FPGA的输入端口或输出端口,若所述端口不是待分割芯片初始状态时的输入端或输出端,则于所述FPGA内部连接所述端口;当所述端口用于传输外部信息时,根据所述端口信息将所述端口定义为所述FPGA的输入端口或输出端口;

(2)当所述低层文件的端口在不同层级具有不同的互联线信息时,采用最顶层互联线信息作为所述端口的所述互联线信息;

(3)当所述低层文件中的模块的上一级路径发生变化时,所述子模块利用所述端口信息与所述子模块的路径做组合后替代初始的所述端口信息;如此,可以防止出现信号重复的现象,添加路径时,采用反斜杠开头,每个层级之间用“.”分隔开;

(4)当所述低层文件的端口连接常数或者悬空时,所述顶层文件的端口对应连接常数或者悬空;

(5)当所述FPGA中的模块为待分割芯片分割多次后重组形成的模块时,重新命名所述模块;如此,可对模块进行区分;

(6)当所述端口信息中包含系统任务或预编译处理语句时,识别并存储对应的所述端口信息,并将所述端口信息复现至对应每一所述FPGA的初始的所述端口信息中;其中,系统任务例如为宏定义,但不以此为限。

下面就以一具体示例来说明本发明的硬件仿真中多个FPGA自动互联的方法及系统,结合上述方法及系统的说明,并参考图3及图4,本示例的具体流程如下:

源文件读取单元10读取所述待分割芯片的源文件;其中,参考图3,待切割芯片包括Module A、 Module B1、Module B2及Module C,四个初始模块Module A、 Module B1、Module B2及Module C之间通过端口彼此相连,且Module A包括A1及A2两个子模块,两个子模块内部相连,源文件包括模组名及Module A、 Module B1、Module B2及Module C的端口信息;

模块信息提取单元11用于提取所述源文件中的模块信息,所述模块信息包括所述多个模块的模块名及与所述多个模块对应的端口信息;此时,模块名为Module A、 Module B1、Module B2及Module C,端口信息为对应Module A、 Module B1、Module B2及Module C的端口、线网、寄存器、逻辑运算以及硬件可描述语言的语法信息等信息;

第一结构体12用于存储所述模块信息;

配置文件读取单元20用于读取配置文件;

配置信息提取单元21用于提取所述配置文件中的配置信息,所述配置信息包括所述模块名及与所述模块名对应的FPGA信息;如图4所示,所述配置信息为将Module A分配到FPGA0中,Module B1(Module B)分配到FPGA1中,Module C分配到FPGA2中,Module B2(Module D)分配到FPGA3中;

第二结构体22用于存储所述配置信息;

端口信息读取单元30用于根据所述配置信息中的所述模块名读取对应的所述端口信息;例如,端口信息读取单元30根据第二结构体22中的模块名Module A找到第一结构体12中对应模块名Module A的端口信息,以此类推,可以找到各个模块的端口信息;

第三结构体31用于根据所述配置信息中的所述FPGA信息存储所述端口信息;例如,Module A设置于FPGA0中,即可将Module A的端口信息对应FPGA0存储,以此类推,可以存储FPGA1、FPGA2、FPGA3对应的端口信息,在此过程中,可对端口信息进行调整,如图4所示,可根据实际需求将Module B1更名为Module B,Module B2更名为Module D,以及将Module A的子模块A1、A2内部连接等;

生成单元32用于根据所述端口信息生成分别对应每一所述FPGA的顶层文件和互联线信息文件,从而通过所述顶层文件和所述互联线信息文件实现多个FPGA之间的互联;在实际运用中,如图4所示,由于Module A中对外连接端口的位宽要远大于FPGA0可提供的接口数,故要添加Mux/DeMux模块以实现串并转换,使Module A的端口与FPGA0的实际端口对应连接,以此类推,FPGA1、FPGA2、FPGA3中也可以做相似处理。

本发明采用工具自动索引模块间的互联线信息,并且可以人为随意指定FPGA的数量和其内部包含的模块数量,在效率、准确度和灵活度上有很大的提高;另外,本发明的端口出现非正常连接时,仍能自动识别,防止出现错误。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号