一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

芯片系统的集成方法、装置及计算机可读存储介质与流程

2022-07-02 13:26:27 来源:中国专利 TAG:


1.本发明涉及芯片设计领域,具体而言,涉及一种芯片系统的集成方法、装置及计算机可读存储介质。


背景技术:

2.超大规模的soc(system on chip,片上系统)集成电路设计通常是利用多个现有的芯片子模块进行设计,并且这些芯片子模块具有自己的ip(intellectual property,知识产权)设计信息,从而操作人员可将现有的ip设计信息进行集成,进而生成复杂的芯片系统。
3.但是,在现有技术中,通常需要操作人员首先对现有的ip设计信息进行解析等处理,然后以人工的方式对处理后的ip设计信息进行配置以及集成,该过程需要大量的时间,并且由于人工配置过程中容易出现配置错误的问题,从而使得芯片系统的集成效率较低。
4.针对上述的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种芯片系统的集成方法、装置及计算机可读存储介质,以至少解决现有技术中人工配置集成芯片系统时所存在的集成效率低的技术问题。
6.根据本发明实施例的一个方面,提供了一种芯片系统的集成方法,包括:获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件,其中,配置文件中至少包括用于存储设计信息的预设标签,多个芯片子模块用于集成目标芯片;根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到目标标签;基于所述目标标签生成抽象语法树,其中,所述抽象语法树由多个子节点组成,每个子节点与一个所述目标标签相对应;根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。
7.进一步地,芯片系统的集成方法还包括:在根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中之前,确定预设标签所对应的目标语言格式;将预设信息的语言格式转换为目标语言格式,得到目标预设信息,其中,预设信息中至少包括对设计信息进行处理的处理逻辑。
8.进一步地,芯片系统的集成方法还包括:对设计信息进行语言格式转换,得到语言格式为目标语言格式的设计信息;将目标语言格式的设计信息与目标预设信息存储至对应的预设标签中,得到目标标签。
9.进一步地,芯片系统的集成方法还包括:获取目标芯片中每个模块的模块信息,其中,模块信息至少包括每个模块的模块名称、模块参数信息以及模块端口信息;根据模块信息在预设标签中生成设计信息的调用程序,其中,调用程序的语言格式为目标语言格式,调用程序用于调用设计信息;将目标预设信息、调用程序与设计信息存储至对应的预设标签中,得到目标标签。
10.进一步地,芯片系统的集成方法还包括:在基于多个子节点生成抽象语法树之前,确定目标芯片中每个模块所对应的参考节点;根据参考节点生成初始抽象语法树,其中,初始抽象语法树中至少包含参考节点对应的链接信息,链接信息表征了与参考节点属于相同模块的子节点和参考节点之间的对应关系。
11.进一步地,芯片系统的集成方法还包括:对所述目标标签进行解析,得到解析信息;将所述解析信息存储至预设对象中,得到所述子节点,其中,每个所述目标标签对应一个所述预设对象,每个所述预设对象为所述抽象语法树中的一个子节点;获取每个参考节点在所述初始抽象语法树中的节点层级;根据所述链接信息和所述节点层级确定所述参考节点所对应的所有子节点之间的层级关系,其中,所述连接关系至少包括所述层级关系以及同层级的子节点之间的子连接关系;根据所述层级关系以及所述子连接关系对所述所有子节点进行组合,得到所述抽象语法树。
12.进一步地,芯片系统的集成方法还包括:根据层级关系从抽象语法树中确定顶层模块,其中,顶层模块为抽象语法树中计算优先级最高的节点模块,节点模块由多个子节点中的至少一个子节点组成;从抽象语法树的其他节点模块中确定至少一个目标节点模块,其中,其他节点模块为抽象语法树中除顶层模块之外的节点模块;根据至少一个目标节点模块中的目标节点信息生成目标代码,得到目标芯片系统。
13.根据本发明实施例的另一方面,还提供了一种芯片系统的集成装置,包括:获取模块,用于获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件,其中,配置文件中至少包括用于存储设计信息的预设标签,多个芯片子模块用于集成目标芯片;存储模块,用于根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到目标标签;生成模块,用于基于所述目标标签生成抽象语法树,其中,所述抽象语法树由多个子节点组成,每个子节点与一个所述目标标签相对应;集成模块,用于根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。
14.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的芯片系统的集成方法。
15.根据本发明实施例的另一方面,还提供了一种电子设备,电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的芯片系统的集成方法。
16.在本发明实施例中,采用将多个设计信息存储至对应的预设标签,得到目标标签,并基于目标标签生成抽象语法树的方式,通过获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件,并根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到目标标签,然后基于目标标签生成抽象语法树,从而根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。其中,所述抽象语法树由多个子节点组成,每个子节点与一个所述目标标签相对应,配置文件中至少包括用于存储设计信息的预设标签,多个芯片子模块用于集成目标芯片。
17.由上述内容可知,本技术在存储设计信息时,采用的是根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中的方式,由于预设标签在存储
设计信息时,也实现了对设计信息的分类以及标记,因此,即使在设计信息的数据量较大时,本技术也可以更加准确合理的对设计信息进行分类以及存储,从而避免了人工处理设计信息时所存在的处理效率低、容易出现错误的问题。另外,由于本技术是通过建立抽象语法树,并根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,以得到目标芯片系统,因此,本技术在对现有的设计信息进行集成时,可在抽象程度更高的抽象语法树中选取多个子节点进行集成,从而无需过多的通过人工编写代码的形式进行信息集成,进而在一定程度上减少了代码数量,并进一步地提升了芯片系统的集成效率。
18.由此可见,通过本技术的技术方案,达到了自动对多个芯片子模块的设计信息进行集成,以生成目标芯片系统的目的,从而实现了提升大规模soc集成电路的设计集成效率的技术效果,进而解决了现有技术中人工配置集成芯片系统时所存在的集成效率低的技术问题。
附图说明
19.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
20.图1是根据本发明实施例一种可选的芯片系统的集成方法的流程图;
21.图2是根据本发明实施例的一种可选的自定义语法的示意图;
22.图3是根据本发明实施例的一种可选的芯片子模块的设计信息导入方法示意图;
23.图4是根据本发明实施例的一种可选的芯片子模块的设计信息导入方法示意图;
24.图5是根据本发明实施例的一种可选的顶层集成描述示意图;
25.图6是根据本发明实施例的一种可选的集成工具结构示意图;
26.图7是根据本发明实施例的一种可选的芯片系统的集成装置示意图。
具体实施方式
27.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
28.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
29.实施例1
30.根据本发明实施例,提供了一种芯片系统的集成方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,
并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
31.另外,还需要说明的是,一种电子设备可作为本发明实施例中的芯片系统的集成方法的执行主体。
32.图1是根据本发明实施例一种可选的芯片系统的集成方法的流程图,如图1所示,该方法包括如下步骤:
33.步骤s102,获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件。
34.在步骤s102中,配置文件中至少包括用于存储设计信息的预设标签,并且多个芯片子模块用于集成目标芯片。芯片子模块可以是应用于现有芯片上的功能模块,芯片子模块的设计信息可以是一段代码。其中,操作人员可首先定义一种soc集成语法,该soc集成语法主要是在yaml(yaml ain’t markup,一种标记语言)语言的语法的基础上,添加一些自定义的预处理关键字和控制语法,从而生成的一种定制化的集成语法,通过这种soc集成语法,可以描述目标芯片中每个模块的端口信息、功能参数信息以及顶层互联信息。另外,上述soc集成语法还具有自定义标签功能,通过该自定义标签功能,操作人员可以为目标芯片自定义一些用于存储设计信息的预设标签。例如,如图2所示,操作人员可以自定义一个“!mod”的yaml标签(即预设标签),从而电子设备可将一个现有芯片的设计信息放入这个“!mod”的yaml标签中。另外,图2中还示出了“!port”、“!connect”、“!reg”等其他的预设标签。
35.可选的,操作人员还可以首先定义一些基础预设标签,这些基础预设标签可以是目标芯片中的基础变量,总线和模块。在生成得到这些基础预设标签之后,操作人员可对这些基础预设标签进行组合,从而得到更加复杂的预设标签。另外,预设标签之间支持继承功能,在生成得到基础预设标签之后,操作人员可以通过继承的方式对基础预设标签进行扩展,并且扩展生成的预设标签与基础预设标签之间保留继承关系,从而可以使用较少的代码量创建预设标签,提高创建效率,还可以确保不同的预设标签之间的结构关系清楚明了。此外,预设标签之间支持参数的传递,例如,在目标芯片中,对于同一个模块、总线和寄存器等,预设标签可以通过传递不同的参数来获取不同的实例。
36.需要注意到的是,预设标签在使用过程中可以被不同的实例例化,并通过抽象的结构降低集成的复杂性,从而提高了芯片系统的设计效率。
37.步骤s104,根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到目标标签。
38.在步骤s104中,预设标签和设计信息之间的关联关系存储在预设标签的属性信息中。可选的,在有设计信息需要存储在预设标签时,电子设备可通过识别设计信息中的关键字等关键信息确定设计信息所对应的预设标签,从而准确无误地将设计信息存储至对应的预设标签中。另外,基于每一个预设标签,电子设备可对应生成一个子节点,其中,子节点用于组合生成抽象语法树。
39.需要注意到的是,由于预设标签在存储设计信息时,也实现了对设计信息的分类以及标记,因此,本技术通过预设标签实现了更加准确合理的对设计信息进行分类以及存储的效果,从而避免了人工处理设计信息时所存在的处理效率低以及容易出现错误的问题。
40.步骤s106,基于目标标签生成抽象语法树。
41.在步骤s106中,抽象语法树由多个子节点组成,每个子节点与一个所述目标标签相对应。其中,操作人员可预先编写一个用于处理上述soc集成语法的集成工具,同时电子设备可调用该集成工具,电子设备通过该集成工具可首先将soc集成语法中自定义的预设信息(即预处理关键字和控制语法)进行语言格式转换,例如,将自定义的预处理关键字和控制语法转换为yaml语言格式。其中,yaml语言格式为本技术中的目标语言格式,并且转换为目标语言格式的预设信息也会和设计信息一样存储在预设标签中。需要注意到的是,由于预设标签也是基于yaml语言创建的标签,因此,在目标语言格式的预设信息以及设计信息都存储至预设标签内之后,此时所得到的目标标签内的文件信息可全部视为纯yaml语言格式的文件信息。
42.可选的,在目标语言格式的预设信息以及设计信息都存储在预设标签内之后,集成工具首先使用一个类来表示每一个目标标签。然后集成工具通过yaml解析器将目标标签内所有的yaml文件解析,并将解析后的所得到信息存入对应的预设对象中。其中,预设类型可以是一种类对象。由于目标标签的设计是有层次的,因此在获取到所有的预设对象之后,集成工具可从顶层模块开始,按层次的建立子节点,从而建立一个抽象语法树。另外,由于预设标签之间支持参数的传递,因此在生成抽象语法树之后,集成工具可进行参数的解析,并且确保将所有变量和参数的值在父结点中解析到,如果在父节点找不到变量或参数则生成报错信息。
43.步骤s108,根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。
44.在步骤s108中,抽象语法树中具有多个子节点,并且多个子节点可构成至少一个节点模块。在集成得到目标芯片系统时,电子设备可通过集成工具选取任意一个或多个节点模块作为目标节点模块,并确定目标节点模块所对应的子节点为目标子节点,从而根据目标子节点的节点信息生成目标代码,得到目标芯片系统。
45.另外,集成工具在执行集成过程的每一阶段时,都会自动进行错误检查,以便尽早的发现错误,防止对后续的设计带来潜在的影响。例如,在生成寄存器时,集成工具可自动检查是否越界;在进行连线时,集成工具可自动检查连接类型是否正确,或者是否所有端口全部连接等。同时,操作人员可以根据需要自定义设置集成工具在哪一些阶段进行错误检查,在哪一些阶段不进行错误检查。
46.基于上述步骤s102至步骤s108的内容可知,在本发明实施例中,采用将多个设计信息存储至对应的预设标签,得到目标标签,并基于目标标签生成抽象语法树的方式,通过获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件,并根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到目标标签,然后基于目标标签生成抽象语法树,从而根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。其中,所述抽象语法树由多个子节点组成,每个子节点与一个所述目标标签相对应,配置文件中至少包括用于存储设计信息的预设标签,多个芯片子模块用于集成目标芯片。
47.由上述内容可知,本技术在存储设计信息时,采用的是根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中的方式,由于预设标签在存储设计信息时,也实现了对设计信息的分类以及标记,因此,即使在设计信息的数据量较大
时,本技术也可以更加准确合理的对设计信息进行分类以及存储,从而避免了人工处理设计信息时所存在的处理效率低、容易出现错误的问题。另外,由于本技术是通过建立抽象语法树,并根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,以得到目标芯片系统,因此,本技术在对现有的设计信息进行集成时,可在抽象程度更高的抽象语法树中选取多个子节点进行集成,从而无需过多的通过人工编写代码的形式进行信息集成,进而在一定程度上减少了代码数量,并进一步地提升了芯片系统的集成效率。
48.由此可见,通过本技术的技术方案,达到了自动对多个芯片子模块的设计信息进行集成,以生成目标芯片系统的目的,从而实现了提升大规模soc集成电路的设计集成效率的技术效果,进而解决了现有技术中人工配置集成芯片系统时所存在的集成效率低的技术问题。
49.在一种可选的实施例中,在根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中之前,集成工具首先确定预设标签所对应的目标语言格式,并将预设信息的语言格式转换为目标语言格式,从而得到目标预设信息,其中,预设信息中至少包括对设计信息进行处理的处理逻辑。
50.可选的,由于预设标签是通过soc集成语法所创建的,并且soc集成语法是在yaml标记语言的基础上定制得到的,因此,目标语言格式也是yaml语言格式。另外,预设信息包括soc集成语法中自定义的预处理关键字和控制语法。其中,预设信息中至少包括对设计信息进行处理的处理逻辑,例如,如图2所示,操作人员可自定义设置“#include”的预处理关键字用于导入其他文件的设计信息,并且设置“#for/#if”等处理相关流程的控制语法。图2中还示出了其他预设信息,例如“$宏替换”。此外,图2中示出了一种定制化的soc集成语法的示例,具体如下:
[0051][0052]
可选的,在根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中之前,电子设备需要通过集成工具对预设信息进行预处理,从而实现对自定义的预处理关键字和控制语法进行语言格式的转换,进而输出一个纯yaml语言格式的文件。具体的,在操作人员自定义了一些预处理关键字,并且集成工具获取得到包含这些预处理关键字在内的文本之后,集成工具可以通过词法分析和语法分析,获取到文本中的预处理关键字,然后集成工具根据每一个预处理关键字所对应的处理方法处理每一个预处理关键字。其中,针对每一个预处理关键字,操作人员可预先在集成工具的代码中定义对应的处理方法。在预处理过程中,预处理关键字都完成了语言格式的转换,并且按照对应的处理方法进行了处理,从而最后生成一个纯yaml语言格式的文件。另外,在预处理过程中,集成工具还会进行简单的错误检查,例如,在计算表达式时进行基本的数学检查,出错时生成错误提醒信息,从而可以尽早的发现设计错误。
[0053]
需要注意到的是,操作人员可以根据需求添加自定义关键字和控制语法,从而实
现了降低代码量,更加灵活设计芯片系统的效果。
[0054]
在一种可选的实施例中,电子设备可以通过至少2种方式将设计信息导入至预设标签中。其中,第一种方式是自动解析设计信息的语言格式的方式。具体的,电子设备可以对设计信息进行语言格式转换,从而得到语言格式为目标语言格式的设计信息,然后电子设备将目标语言格式的设计信息与目标预设信息存储至对应的预设标签中,得到目标标签。
[0055]
可选的,对于多个芯片的设计信息,电子设备可直接通过解析器将设计信息的语言格式转换为目标语言格式,然后将解析后得到的目标语言格式的设计信息与目标存储预设信息一同存储在对应的预设标签中。例如,电子设备可对verilog(一种硬件描述语言)、systemverilog(sv语言,一种建立在verilog基础上的描述语言)、system rdl(一种用于描述寄存器结构和操作的语言)和ip-xact(一种电子知识产权的说明语言)等格式的设计信息分别采用对应的开源解析器进行解析,并将解析得到的信息转换为yaml语言格式,然后存入预先定义好的预设标签内。其中,图3示出了一种对verilog格式的设计信息进行自动解析以及自动导入的过程,如图3所示,对于!verilog标签,电子设备通过解析器解析verilogip设计信息,并返回ip子模块的端口的名字,使其能在yaml语言格式的文件中调用。在图3中,一种自动导入ip设计信息的示例如下:
[0056][0057]
在一种可选的实施例中,电子设备还可以采用第2种方式将设计信息导入至预设标签中。具体的,电子设备获取首先目标芯片中每个模块的模块信息,然后根据模块信息在预设标签中生成设计信息的调用程序,最后将目标预设信息、调用程序与设计信息存储至对应的预设标签中,得到目标标签。其中,模块信息至少包括每个模块的模块名称、模块参数信息以及模块端口信息,调用程序的语言格式为目标语言格式,调用程序用于调用设计信息。
[0058]
可选的,在获取得到目标芯片中每个模块的模块信息之后,电子设备可通过预先编写的python(一种编程语言)模板在预设标签中生成设计信息的调用程序。其中,调用程
序的语言格式为目标语言格式,调用程序既可以对应目标芯片中的模块,还可以在mako(python语言模板库中的一种模板)模板内引用yaml描述的端口去例化设计信息,即目标芯片可通过访问预设标签内的调用程序即可调用设计信息,电子设备不需要对设计信息进行解析以及语言格式转换。其中,图4示出了一种采用第2种方式手动将设计信息添加至预设标签的过程。如图4所示,集成工具在yaml中定义目标芯片的每个模块的端口,并在模板中将目标芯片的每个模块的端口和芯片子模块的ip端口手动连接,图4还示出了一种手动添加ip设计信息的示例,其中,mako模板中的信息为:
[0059][0060]
需要注意到的是,由于在python模板中能获取到预设标签中的设计信息,因此操
作人员还可以基于设计信息直接进行再次开发,得到新的设计信息,后续集成工具可自动的从预设标签中读取新的设计信息并利用新的设计信息完成上层的集成。另外,通过python模板支持的语法,不仅仅可以加强verilog设计的灵活性,还可以减少代码量,从而提高工作效率。其中,图5示出了一种顶层集成的描述的示例,具体如下:
[0061]-!mod
[0062]
name:top
[0063]
ports:
[0064]-!port[clk,bits,1,slave]
[0065]-!port[bus,axi4,1,slave]
[0066]
modules:
[0067]-!modinst[sub_a,a]
[0068]-!modinst[sub_b,b]
[0069]
connections:
[0070]-!connect
[0071]
srcs:
[0072]-!point[clk]
[0073]
dsts:
[0074]-!point[clk,sub_a]
[0075]
在一种可选的实施例中,在基于多个子节点生成抽象语法树之前,电子设备中的集成工具可确定目标芯片中每个模块所对应的参考节点,并根据参考节点生成初始抽象语法树,其中,初始抽象语法树中至少包含参考节点对应的链接信息,链接信息表征了与参考节点属于相同模块的子节点和参考节点之间的对应关系。
[0076]
可选的,在生成抽象语法树之前,集成工具首先根据目标芯片中每个模块所对应的参考节点生成初始抽象语法树。具体的,集成工具首先确定目标芯片中所有可用于参考的模块,并对应生成参考节点,从而将参考节点组合生成初始抽象语法树。例如,假设目标芯片中可用于参考的模块一共有10个,则集成工具对应生成有10个参考节点,并且这10个参考节点可组成生成一个初始抽象语法树。另外,集成工具除了根据可用于参考的模块生成参考节点之外,还可以根据可用于参考的总线和寄存器生成参考节点。
[0077]
在一种可选的实施例中,在得到初始抽象语法树之后,电子设备中的集成工具可基于目标标签生成抽象语法树。具体的,集成工具首先对所述目标标签进行解析,得到解析信息,并将所述解析信息存储至预设对象中,得到所述子节点,然后获取每个参考节点在所述初始抽象语法树中的节点层级,并根据所述链接信息和所述节点层级确定所述参考节点所对应的所有子节点之间的层级关系,最后根据所述层级关系以及所述子连接关系对所述所有子节点进行组合,得到所述抽象语法树。其中,每个所述目标标签对应一个所述预设对象,每个所述预设对象为所述抽象语法树中的一个子节点;所述连接关系至少包括所述层级关系以及同层级的子节点之间的子连接关系。
[0078]
可选的,由于初始抽象语法树中存在链接,因此集成工具可将初始抽象语法树转换为一个具体的初始抽象语法树。对于初始抽象语法树中的每个参考节点,集成工具可以根据链接信息确定对应的子节点,并对子节点所表示的信息进行显式的指明,例如,指明子
节点对应的模块的例化名字,端口的例化名字和位宽等各类基本信息。然后集成工具根据子节点之间的互联信息,将具有连接关系的子节点进行互联,并生成抽象语法树。另外,由于每个参考节点在初始抽象语法树中有自己对应的节点层级,因此,多个子节点之间也存在层级关系,其中,计算优先级最高的子节点组成了抽象语法树的顶层模块,集成工具可从顶层模块开始按照层级关系组合所有子节点。需要注意到的是,抽象语法树中至少包含目标芯片的模块信息以及模块之间的互联信息。
[0079]
在一种可选的实施例中,集成工具可根据层级关系从抽象语法树中确定顶层模块,并从抽象语法树的其他节点模块中确定至少一个目标节点模块,从而根据至少一个目标节点模块中的目标节点信息生成目标代码,得到目标芯片系统。其中,顶层模块为抽象语法树中计算优先级最高的节点模块,节点模块由多个子节点中的至少一个子节点组成,其他节点模块为抽象语法树中除顶层模块之外的节点模块。
[0080]
可选的,在得到抽象语法树之后,集成工具可从抽象语法树中获取目标节点信息,例如,模块名称、端口信息等,然后调用预先编写的后端模板对目标节点信息进行处理,即可自动生成对应的目标代码。具体的,集成工具首先生成verilog顶层代码(即顶层模块对应的顶层代码),然后基于顶层代码可以访问抽象语法树的每个节点模块的每一个属性,如模块名,端口连线方式等,通过调用不同的函数,集成工具即获取不同的目标节点信息,并且通过后端模板自动地生成对应的目标代码。
[0081]
需要注意到的是,由于抽象语法树具有很清晰的结构层次,因此,集成工具可以很方便地从抽象语法树中确定一个或者多个目标节点模块,进而获得目标节点模块中的目标节点信息并生成目标代码,以得到目标芯片系统。另外,集成工具还提供统一的后端基类接口,操作人员可以根据需求自定义编写后端部分,用于完成自定义代码格式的生成。
[0082]
可选的,图6示出了一种集成工具的结构示意图。如图6所示,集成工具包括预处理模块、yaml解析模块、低层次解析模块以及后端生成代码模块。其中,预处理模块用于将自定义的预设信息解析为纯yaml语法的语言格式,例如,展开流程控制语句#for/#if、扩展#include/#define内容以及进行宏替换和运算。此外,图6还示出了一种预处理过程,其中,预处理前的信息为:
[0083][0084]
可选的,yaml解析模块用于将定义的yaml标签进行解析,并构建抽象语法树。具体的,yaml解析模块可以解析!mod以及!port等yaml标签,并设计对应的python对象保存信息。另外,yaml解析模块还可将每个python对象作为一个子节点,从而根据设计的层次,构建抽象语法树。
[0085]
可选的,低层次解析模块用于对抽象语法树进行优化处理,从而确定方便调用的层次,并根据实际需求进行多层的优化处理。具体的,低层次解析模块可详细描述目标芯片每个端口的连接信息,并检查连接方向是否连接错误。低层次解析模块还可给定信号自动命名方法以及给出便于生成调用的接口。
[0086]
可选的,后端生成代码模块用于从抽象语法树中获取需要的目标节点信息,并根据目标节点信息生成目标代码。具体的,后端生成代码模块可根据不同后端的语法要求,生成对应格式的目标代码。例如,利用verilog后端生成verilog顶层代码,利用uvm(universal verification methodology,通用验证方法学)后端生成用于验证的package(代码程序包)和函数等代码,利用头文件和地址图后端生成头文件代码和地址图代码。另外,操作人员可以根据实际需要随时添加新的后端接口,从而生成更加丰富的目标代码。
[0087]
由上述过程可知,本技术的技术方案具有很强的可扩展性,通过定义预设标签和预设信息,使得设计更加合理并且具有较强的可读性,同时减少了代码数量,有利于提高设计集成的效率。同时,对每个预设标签可以有一个对应的python类来管理,从而可通过增加新的函数来实现新的功能。此外,由于是通过抽象语法树的方式实现目标芯片系统的集成,因此可以很快的添加新功能并且与原有功能不产生冲突。最后,本技术还可在统一的后端接口的基础上新增新的后端接口,从而可以扩展生成各种自定义的代码格式。
[0088]
由上述内容可知,本技术在存储设计信息时,采用的是根据预设标签与设计信息
之间的关联关系,将设计信息分别存储至对应的预设标签中的方式,由于预设标签在存储设计信息时,也实现了对设计信息的分类以及标记,因此,即使在设计信息的数据量较大时,本技术也可以更加准确合理的对设计信息进行分类以及存储,从而避免了人工处理设计信息时所存在的处理效率低、容易出现错误的问题。另外,由于本技术是通过建立抽象语法树,并根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,以得到目标芯片系统,因此,本技术在对现有的设计信息进行集成时,可在抽象程度更高的抽象语法树中选取多个子节点进行集成,从而无需过多的通过人工编写代码的形式进行信息集成,进而在一定程度上减少了代码数量,并进一步地提升了芯片系统的集成效率。
[0089]
由此可见,通过本技术的技术方案,达到了自动对多个芯片子模块的设计信息进行集成,以生成目标芯片系统的目的,从而实现了提升大规模soc集成电路的设计集成效率的技术效果,进而解决了现有技术中人工配置集成芯片系统时所存在的集成效率低的技术问题。
[0090]
实施例2
[0091]
根据本发明实施例的另一方面,还提供了一种芯片系统的集成装置,其中,图7是根据本发明实施例的一种芯片系统的集成装置示意图。如图7所示,该装置包括:获取模块701、存储模块702、生成模块703以及集成模块704。
[0092]
其中,获取模块701,用于获取多个芯片子模块的设计信息以及目标芯片所对应的配置文件,其中,配置文件中至少包括用于存储设计信息的预设标签,多个芯片子模块用于集成目标芯片;存储模块702,用于根据预设标签与设计信息之间的关联关系,将设计信息分别存储至对应的预设标签中,得到多个目标标签;生成模块703,用于基于目标标签生成抽象语法树,其中,抽象语法树由多个子节点组成,每个子节点与一个目标标签相对应;集成模块704,用于根据抽象语法树中的子节点之间的连接关系,对多个子节点的节点信息进行集成,得到目标芯片系统。
[0093]
需要说明的是,上述获取模块701、存储模块702、生成模块703以及集成模块704对应于上述实施例中的步骤s102至步骤s108,四个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
[0094]
可选的,上述集成装置还包括:确定模块以及转换模块。其中,确定模块,用于确定预设标签所对应的目标语言格式;转换模块,用于将预设信息的语言格式转换为目标语言格式,得到目标预设信息,其中,预设信息中至少包括对设计信息进行处理的处理逻辑。
[0095]
可选的,上述存储模块还包括:第一转换模块以及第一存储模块。其中,第一转换模块,用于对设计信息进行语言格式转换,得到语言格式为目标语言格式的设计信息;第一存储模块,用于将目标语言格式的设计信息与目标预设信息存储至对应的预设标签中,得到目标标签。
[0096]
可选的,上述存储模块还包括:第一获取模块、第一生成模块以及第二存储模块。其中,第一获取模块,用于获取目标芯片中每个模块的模块信息,其中,模块信息至少包括每个模块的模块名称、模块参数信息以及模块端口信息;第一生成模块,用于根据模块信息在预设标签中生成设计信息的调用程序,其中,调用程序的语言格式为目标语言格式,调用程序用于调用设计信息;第二存储模块,用于将目标预设信息、调用程序与设计信息存储至对应的预设标签中,得到目标标签。
[0097]
可选的,上述集成装置还包括:第一确定模块以及第二生成模块。其中,第一确定模块,用于确定目标芯片中每个模块所对应的参考节点;第二生成模块,用于根据参考节点生成初始抽象语法树,其中,初始抽象语法树中至少包含参考节点对应的链接信息,链接信息表征了与参考节点属于相同模块的子节点和参考节点之间的对应关系。
[0098]
可选的,上述生成模块还包括:解析模块、第三存储模块、第二获取模块、第二确定模块以及组合模块。其中,解析模块,用于对目标标签进行解析,得到解析信息;第三存储模块,用于将解析信息存储至预设对象中,得到子节点,其中,每个目标标签对应一个预设对象,每个预设对象为抽象语法树中的一个子节点;第二获取模块,用于获取每个参考节点在初始抽象语法树中的节点层级;第二确定模块,用于根据链接信息和节点层级确定参考节点所对应的所有子节点之间的层级关系,其中,连接关系至少包括层级关系以及同层级的子节点之间的子连接关系;组合模块,用于根据层级关系以及子连接关系对所有子节点进行组合,得到抽象语法树。
[0099]
可选的,上述集成模块还包括:第三确定模块、第四确定模块以及第三生成模块。其中,第三确定模块,用于根据层级关系从抽象语法树中确定顶层模块,其中,顶层模块为抽象语法树中计算优先级最高的节点模块,节点模块由多个子节点中的至少一个子节点组成;第四确定模块,用于从抽象语法树的其他节点模块中确定至少一个目标节点模块,其中,其他节点模块为抽象语法树中除顶层模块之外的节点模块;第三生成模块,用于根据至少一个目标节点模块中的目标节点信息生成目标代码,得到目标芯片系统。
[0100]
实施例3
[0101]
可选地,根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的芯片系统的集成方法。
[0102]
实施例4
[0103]
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述实施例1中的芯片系统的集成方法。
[0104]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0105]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0106]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0107]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0108]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0109]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0110]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献