用于高级综合的语言服务器的制作方法

摘要: 本申请涉及用于开发和测试以片上系统(soc)现场可编程门阵列(fpga)设备为目标的高级综合(hls)设计的系统和方法。背景技术:1、高级综合(hls)旨在通过...
用于高级综合的语言服务器的制作方法

本申请涉及用于开发和测试以片上系统(soc)现场可编程门阵列(fpga)设备为目标的高级综合(hls)设计的系统和方法。

背景技术:

1、高级综合(hls)旨在通过将硬件的设计抽象提升到软件来使硬件设计更容易。通常使用硬件描述语言(hdl)在寄存器传输级(rtl)设计硬件,在rtl级设计硬件是困难的、容易出错的并且难以调试。编写软件相对更容易,并且编译和调试更快。hls允许将以诸如c或c++的通用程序语言描述的软件程序编译成hdl。

2、虽然hls旨在使硬件设计更容易,但是对于用于生成高性能硬件的hls,用户需要插入c++编译指示或预定义的tcl命令来指导hls编译器如何转换输入软件。编译指示和预定义的tcl命令是允许将高级编程代码转换为hdl所必需的hls引导器的示例。编译指示的示例可以是“#pragma hls loop pipeline”,其需要被放置在循环之前以指示该循环需要被流水线化。在该示例中,第一字符是散列字符(即,“#”),后跟紧接着单词“pragma”。tcl命令引导器的示例是“set_operation_latency  ”,其为特定类型的操作设置定时目标。

3、编译指示和tcl命令需要是特定的格式,并且在正确的位置被指定。存在大量可用的编译指示和tcl命令,并且在不使用适当的编译指示和tcl命令的情况下,hls编译器不能将软件转换成硬件配置。这使得hls难以使用,因为用户知道要使用哪个编译指示和tcl命令、它们应该以什么格式使用以及它们将对所生成的硬件产生什么影响可能是具有挑战性的。用户理解这一点的典型过程是阅读数百页文档,这是耗时的、容易出错的并且难以理解的。这导致新hls用户高效地使用该方法的巨大投资。由于这种困难的学习曲线,只有高级用户才能充分利用hls优化的能力。需要帮助用户将hls应用于hdl设计。

技术实现思路

1、在一些示例中,提供了一种非暂态计算机可读存储器(crm),该非暂态计算机可读存储器(crm)包括指令,这些指令当在处理器上执行时:从源代码编辑器接收包括自动补全请求和在hls设计文件中的位置的请求消息,hls设计文件包括至少一个hls命令;标识用于请求的零个或更多个令牌;以及生成响应消息。该消息包含与零个或更多个令牌相对应的描述、有效hls命令的列表、适当的hls语法提示和对hls编译指示的提示中的至少一者。在一些示例中,crm包括指令,这些指令当在处理器上执行时:将源代码行中的hls命令令牌标识为请求消息的一部分;以及生成响应消息以包括零个或更多个所需自变量的列表和hls命令令牌。在一些示例中,零个或更多个令牌包括包含散列字符的一个令牌,并且响应消息包含对hls编译指示的提示。在一些示例中,hls设计文件包含c或c++代码,并且其中crm包括指令,这些指令当在处理器上执行时:标识跟随有hls令牌的编译指示令牌;以及标识跟随在hls令牌后面的部分hls编译指示令牌;并且生成响应消息包括:标识与所标识的部分hls命令令牌匹配的有效hls命令的列表的子集。在一些示例中,所标识的零个或更多个令牌包括需要程序变量的有效hls命令,并且crm包括指令,这些指令当在处理器上执行时:标识在hls设计文件中定义的程序变量的列表;以及将有效选项的列表附加到适当的hls语法提示。在一些示例中,有效hls命令要求参数自变量具有一个或多个允许的参数类型,crm包括指令,这些指令当在处理器上执行时:从定义的参数的列表中消除与允许的参数类型不匹配的所有参数。在一些示例中,crm包括指令,这些指令当在处理器上执行时:标识语法错误并且发送响应消息以包括错误消息。

2、在一些示例中,crm包括指令,这些指令当在处理器上执行时:与源代码编辑器建立套接字连接;通过套接字连接接收引用hls设计文件的编辑通知,解析hls设计文件的第一行以生成令牌的第一列表;将令牌的第一列表中的一个令牌标识为hls命令;标识令牌的第一列表中的错误;将错误消息包括在诊断列表中;以及通过套接字将诊断列表发送到源代码编辑器。在一些示例中,crm包括指令,这些指令当在处理器上执行时:将hls命令标识为无效命令;以及将有效hls命令建议包括在诊断列表中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:检索hls命令的预期数量的参数;确定令牌的第一列表包含少于hls命令的预期数量的参数;以及将不完整的命令消息包括在诊断列表中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:确定令牌的第一列表包含hls命令的无效参数;以及将无效参数消息包括在诊断列表中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:确定令牌的第一列表包含hls引导器的无效类型的参数;以及将无效参数类型消息包括在诊断列表中。在一些示例中,crm包括当在处理器上执行时解析hls设计文件的每个剩余非空行。在一些示例中,错误消息包括hls设计文件中的行号。

3、在一些示例中,crm包括指令,这些指令当在处理器上执行时:从源代码编辑器接收包括指定hls设计文件内的行号和字符号的位置的请求消息,hls设计文件包括至少一个hls命令;从hls设计文件中的指定的行号处检索一行源代码,对从hls设计文件中所检索到的一行源代码进行令牌化;标识源代码的所令牌化的行中与字符号相对应的令牌;以及生成包含所标识的令牌的描述的响应消息。在一些示例中,crm包括当在处理器上执行时确定请求消息指示悬停请求,以及将所标识的令牌的文档包括在响应消息中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:确定所标识的令牌是散列字符;以及将对hls编译指示的提示包括在响应消息中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:标识令牌是部分hls命令;标识与部分hls命令匹配的有效hls引导器的列表;以及将匹配hls命令的列表包括在响应消息中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:确定令牌是需要参数的hls命令;标识在hls设计文件中定义的程序变量的匹配列表;以及将匹配列表包括在响应消息中。在一些示例中,crm包括指令,这些指令当在处理器上执行时:确定所需参数被指定为指定类型;以及从程序变量的匹配列表中排除具有与指定类型不同的类型的任何程序变量。

1.一种非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在处理器上执行时:

2.根据权利要求1所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

3.根据权利要求1至2中任一项所述的非暂态计算机可读存储器,其中:

4.根据权利要求1至3中任一项所述的非暂态计算机可读存储器,其中:

5.根据权利要求1至4中任一项所述的非暂态计算机可读存储器,其中所标识的零个或更多个令牌包括需要程序变量的有效hls命令,所述计算机可读存储器包括指令,所述指令当在处理器上执行时:

6.根据权利要求5所述的非暂态计算机可读存储器,其中所述有效hls命令要求参数自变量具有一个或多个允许的参数类型,所述计算机可读存储器包括指令,所述指令当在处理器上执行时:从定义的参数的列表中消除与所述允许的参数类型不匹配的所有参数。

7.根据权利要求1至6中任一项所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在处理器上执行时:

8.一种非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在处理器上执行时:

9.根据权利要求8所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

10.根据权利要求8至9所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

11.根据权利要求8至10中任一项所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

12.根据权利要求8至11中任一项所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

13.根据权利要求8至12中任一项所述的非暂态计算机可读存储器,所述非暂态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

14.根据权利要求8至13中任一项所述的非暂态计算机可读存储器,其中所述错误消息包括所述hls设计文件中的行号。

15.一种非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在处理器上执行时使所述处理器:

16.根据权利要求15所述的非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

17.根据权利要求15至16所述的非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

18.根据权利要求15至17中任一项所述的非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

19.根据权利要求15至18中任一项所述的非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在所述处理器上执行时:

20.根据权利要求19所述的非瞬态计算机可读存储器,所述非瞬态计算机可读存储器包括指令,所述指令当在所述处理器上执行时: