掌桥专利:专业的专利平台
掌桥专利
首页

系统级芯片SoC的配置方法、装置和电子设备

文献发布时间:2023-06-19 18:29:06


系统级芯片SoC的配置方法、装置和电子设备

技术领域

本公开涉及系统级芯片SoC技术领域,更具体地,涉及一种系统级芯片SoC的配置方法、装置和电子设备。

背景技术

系统级芯片(System on Chip,SoC)是指在单一芯片上集成数字和模拟混合器、信号采集和转换、I/O接口、存储器、MCU(Micro Controller Unit)和DSP(Digital SignalProcessing)等具有系统功能的IC芯片(Integrated Circuit Chip)。SoC具有片内资源丰富、集成度高、体积小、使用灵活性大等优点。

随着芯片制造工艺的不断提升,芯片设计的集成化程度越来越高。对于当前百万门级的数字设计而言,需要SoC集成的模块规模也越来越大,给高集成度的SoC集成设计带来了更大的技术挑战。

相关技术中,SoC集成通常通过各子系统的研发人员一起采用手动连接方式,来实现SoC中各子模块的集成。然而,在SoC顶层模块例化较多的情况下,手动集成方式耗时且出错率高。

发明内容

本公开提出了一种系统级芯片SoC的配置方法、装置和电子设备。

根据本公开的第一方面,提出了一种系统级芯片SoC的配置方法,包括:获取SoC的至少一个目标子模块各自的子模块基础信息和顶层模块的顶层模块基础信息;其中,子模块基础信息包括子模块名称和子模块端口信息,顶层模块基础信息包括顶层模块名称和顶层模块端口信息;根据子模块基础信息和顶层模块基础信息,分别得到第一配置文件和第二配置文件;根据子模块端口信息与顶层模块端口信息之间的映射关系以及第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件;将子模块名称和顶层模块名称进行例化处理,得到例化配置文件;以及,根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。

例如,根据子模块端口信息与顶层模块端口信息之间的映射关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件,包括:根据至少一个目标子模块各自的子模块的输入端口与顶层模块的第一源端口之间的连接关系、至少一个目标子模块各自的子模块的输出端口与顶层模块的第二源端口之间的连接关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

例如,还包括:获取系统级芯片SoC中至少一个目标子模块的Verilog代码;以及,根据Verilog代码,提取至少一个目标子模块各自的子模块基础信息。

例如,根据Verilog代码,提取至少一个目标子模块各自的子模块基础信息,包括:利用第一脚本,在Verilog代码执行关键词检索,提取至少一个目标子模块各自的子模块基础信息。

例如,还包括:将至少一个目标子模块的新增基础信息添加至更新的第一配置文件中添加,得到第三配置文件;根据至少一个目标子模块的新增基础信息更新第二配置文件,得到更新的第二配置文件;根据至少一个目标子模块的子模块新增端口信息与顶层模块端口信息之间的映射关系和更新的第二配置文件,将顶层模块端口信息中与新增端口信息对应的第二顶层模块端口信息,添加至第三配置文件中,得到第四配置文件;根据第四配置文件、更新的第二配置文件和例化配置文件,生成新的SoC顶层Verilog代码。

例如,还包括:在更新的第一配置文件中变更至少一个目标子模块的至少一个端口信息,得到第五配置文件;根据变更的该至少一个端口信息,在第二配置文件中变更与该至少一个端口信息对应的至少一个顶层模块端口信息,得到第六配置文件;根据该至少一个端口信息与顶层模块端口信息之间的映射关系和第六配置文件,将顶层模块端口信息中与该至少一个端口信息对应的第三顶层模块端口信息添加至第五配置文件中,得到更新的第五配置文件;根据更新的第五配置文件、第六配置文件和例化配置文件,生成新的SoC顶层Verilog代码。

例如,根据子模块基础信息,得到第一配置文件,包括:根据子模块基础信息,利用第二脚本生成第一配置文件。

根据本公开实施例的第二方面,提供了一种系统级芯片SOC的配置装置,包括:第一获取单元,配置为获取SoC的至少一个目标子模块各自的子模块基础信息和顶层模块的顶层模块基础信息;其中,子模块基础信息包括子模块名称和子模块端口信息,顶层模块基础信息包括顶层模块名称和顶层模块端口信息;第一生成单元,配置为根据子模块基础信息和顶层模块基础信息,分别得到第一配置文件和第二配置文件;第二生成单元,配置为根据子模块端口信息与顶层模块端口信息之间的映射关系以及第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件;第三生成单元,配置为将子模块名称和顶层模块名称进行例化处理,得到例化配置文件;以及,第四生成单元,配置为根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。

例如,第二生成单元配置为:根据至少一个目标子模块各自的子模块的输入端口与顶层模块的第一源端口之间的连接关系、至少一个目标子模块各自的子模块的输出端口与顶层模块的第二源端口之间的连接关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

例如,还包括:第二获取单元,配置为获取系统级芯片SoC中至少一个目标子模块的Verilog代码;以及,第五生成单元,配置为根据Verilog代码,提取至少一个目标子模块各自的子模块基础信息。

根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据本公开提供的方法。

根据本公开实施例的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,该计算机指令用于使计算机执行根据本公开提供的方法。

根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现根据本公开提供的方法。

根据公开实施例的技术方案,提供了一种系统级芯片SoC的配置方法。通过将获取的目标子模块的基础信息和顶层模块的基础信息进行文件化处理,并在文件化的底层端口配置文件中插入关联的顶层端口信息,根据各配置文件完成SoC顶层Verilog代码集成。该方法避免了在顶层Verilog代码中手动例化和连接底层模块与顶层模块的端口,提高了SoC顶层Verilog代码的生成效率。

附图说明

通过下面结合附图说明本公开实施例,将使本公开实施例的上述及其它目的、特征和优点更加清楚。应注意,贯穿附图,相同的元素由相同或相近的附图标记来表示。图中:

图1示出了根据本公开一实施例的系统级芯片SoC的配置方法的流程图;

图2示出了根据本公开一实施例的系统级芯片SoC的结构示意图;

图3示出了根据本公开一实施例的新增目标子模块端口的流程图;

图4示出了根据本公开一实施例的变更目标子模块端口的流程图;

图5示出了根据本公开另一实施例的系统级芯片SoC的结构示意图;

图6示出了根据本公开一实施例的系统级芯片SoC的配置装置的结构框图;

图7示出了根据本公开一实施例的可以应用系统级芯片SoC的配置方法的电子设备的框图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部。基于所描述的本公开实施例,本领域普通技术人员在无需创造性劳动的前提下获得的所有其他实施例都属于本公开保护的范围。在以下描述中,一些具体实施例仅用于描述目的,而不应该理解为对本公开有任何限制,而只是本公开实施例的示例。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。应注意,图中各部件的形状和尺寸不反映真实大小和比例,而仅示意本公开实施例的内容。

除非另外定义,本公开实施例使用的技术术语或科学术语应当是本领域技术人员所理解的通常意义。本公开实施例中使用的“第一”、“第二”、“第三”以及类似词语并不表示任何顺序、数量或重要性,而只是用于区分不同的组成部分。

本公开实施例提供了一种系统级芯片SoC的配置方法,将获取的目标子模块的基础信息和顶层模块的基础信息进行文件化处理,并在文件化的底层端口配置文件中插入关联的顶层端口信息,根据各配置文件完成SoC顶层Verilog代码集成。该方法避免了在顶层Verilog代码中手动例化和连接底层模块与顶层模块的端口,提高了SoC顶层Verilog代码的生成效率。

应注意,以下方法中各个操作的序号仅作为该操作的表示以便描述,而不应被看作表示该各个操作的执行顺序。除非明确指出,否则该方法不需要完全按照所示顺序来执行。

图1示出了根据本公开一实施例的系统级芯片SoC的配置方法的流程图。

如图1所示,该SoC的配置方法100可以包括操作S110~S150。

在操作S110,获取SoC的至少一个目标子模块各自的子模块基础信息和顶层模块的顶层模块基础信息。其中,子模块基础信息包括子模块名称和子模块端口信息,顶层模块基础信息包括顶层模块名称和顶层模块端口信息。

在本公开实施例中,SoC可以包括一个或多个目标子模块。每个目标子模块为SoC下一层级的子模块,用于实现某一个SoC系统子功能。

例如,每个目标子模块可以为底层模块。子模块基础信息可以包括子模块名称和子模块端口信息。子模块端口信息可以包括端口名称(Port Name)、端口类型(I/O)和端口位宽(Port Width)。

例如,子模块名称可以为Module 1、Module 2、Module 3、....。或者,子模块名称还可以以模块功能或其他方式进行命名等,本公开对此不做限定。

例如,子模块端口可以包括子模块输入端口和子模块输出端口。子模块输入端口名称可以为MIP1、MIP2、MIP3、...。子模块输出端口名称可以为MOP1、MOP2、MOP3、....。在其他一些实施例中,子模块输入端口和输出端口名称以其他方式进行命名,如按照输入、输出信息进行命名等,本公开对此不做限定。

例如,子模块的端口类型可以包括I/O端口。I/O端口可以为外接顶层模块的源端口或固定值端口。外接顶层模块的源端口表示为接入顶层模块的信号源端口。固定值端口表示该端口的输入信息为一个固定值,如常值等。

例如,子模块的端口位宽表示I/O端口一次能传递的数据宽度。子模块的端口位宽可以表示为[1:0]、[2:0]、[3:0]、...。[1:0]表示端口位宽为2位,分别为in[0]、in[1]。[2:0]表示端口位宽为3位,分别为in[0]、in[1]、in[2]。[3:0]表示端口位宽为4位,分别为in[0]、in[1]、in[2]、in[3]。

例如,顶层模块可以是用于将各目标子模块连接起来的模块。顶层模块的基础信息包括顶层模块名称和顶层模块端口信息。

例如,顶层模块名称命名方式可以与底层模块命名方式相同,也可以按照功能进行命名或其他方式进行命名。每个目标子模块例化(Instance)后,可对应一个或多个顶层模块。

例如,顶层模块端口信息包括顶层端口名称、顶层端口类型和顶层端口位宽。顶层端口类型也包括I/O端口。顶层端口名称和顶层端口位宽与底层端口名称和底层端口位宽采取相同的命名方式,此处不再赘述。

需说明的是,上述实施例中端口名称、端口位宽等参数仅为示例性的说明,以便于本领域技术人员对本公开的理解,并不构成本公开实施例中端口名称、端口位宽等参数的限定。

在操作S120,根据子模块基础信息和顶层模块基础信息,分别得到第一配置文件和第二配置文件。

在本公开实施例中,根据步骤S110中获取的子模块基础信息可得到第一配置文件,根据顶层模块基础信息得到第二配置文件。

例如,本公开的配置文件可以为excel、.txt、.XLSX、.doc等格式文件。

例如,根据子模块基础信息,利用第二脚本生成第一配置文件。该第一配置文件中包括子模块名称、端口名称、端口类型和端口位宽。

例如,第二脚本可以为Python脚本、Shell脚本、Tc1脚本等,本公开对此不做限定。

例如,根据顶层模块基础信息,系统研发工程师可以采用第一配置文件相同的格式生成第二配置文件,以便于进行端口信息关联。该第二配置文件包括:顶层模块名称、顶层端口名称、顶层端口类型和顶层端口位宽。

在操作S130,根据子模块端口信息与顶层模块端口信息之间的映射关系以及第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

在本公开实施例中,子模块端口信息与顶层模块端口信息之间的映射关系指的是子模块端口与顶层模块端口之间的映射关系。例如,每个子模块端口与其对应的顶层模块端口之间的连接关系。

例如,根据子模块端口信息和顶层模块端口信息,在第一配置文件中添加与每个子模块端口对应的第一顶层模块端口信息。该第一顶层模块端口信息为顶层模块端口信息中与每个子模块端口对应的端口信息。

例如,根据子模块端口与顶层模块端口之间的映射关系,可知子模块端口MIP1对应的顶层端口为TP1,则将顶层端口TP1的端口信息添加至第一配置文件中子模块端口MIP1对应的位置。类似地,添加其他子模块端口对应的第一顶层模块端口信息,得到更新的第一配置文件。该更新的第一配置文件包括第一配置文件的信息及顶层模块端口信息。

在操作S140,将子模块名称和顶层模块名称进行例化处理,得到例化配置文件。

在本公开实施例中,通过将子模块名称和顶层模块名称进行例化处理,可以将顶层模块与各子模块连接起来,构成一个与顶层模块相同层级的系统模块。

例如,该例化配置文件包括顶层模块名称、顶层模块例化名称、子模块名称和子模块例化名称。一个顶层模块可以对应多个子模块。

在操作S150,根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。

在本公开实施例中,通过分别提取更新的第一配置文件、第二配置文件和例化配置文件中的信息,生成针对SoC的顶层Verilog代码。该顶层Verilog代码包括顶层模块与目标子模块的连接关系和各子模块之间的连接关系。

根据本公开的实施例,在步骤S110之前,该方法还包括:获取系统级芯片SoC中至少一个目标子模块的Verilog代码。以及,根据Verilog代码,提取至少一个目标子模块各自的子模块基础信息。

例如,根据实际研发应用需求,获取系统级芯片SoC中至少一个目标子模块的Verilog代码。例如,至少一个目标子模块可以为子模块A、B、C。

例如,获取子模块A、B、C的Verilog代码。再根据子模块A、B、C的Verilog代码,提取子模块A、B、C的子模块基础信息。该子模块基础信息包括子模块A、B、C的模块名称和端口信息。

例如,利用第一脚本,在子模块A、B、C的Verilog代码执行关键词检索,提取子模块A、B、C的Verilog代码中各子模块基础信息。

例如,该关键词可以为Module、Port、I/O、Width等,本公开对此不做限定。

例如,第一脚本可以为Python脚本、Shell脚本、Tcl脚本等,本公开对此不做限定。

根据本公开的实施例,步骤S130中得到更新的第一配置文件,可以包括:根据至少一个目标子模块各自的子模块的输入端口与顶层模块的第一源端口之间的连接关系、至少一个目标子模块各自的子模块的输出端口与顶层模块的第二源端口之间的连接关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

例如,顶层模块的第一源端口指的是顶层输入端口,第二源端口指的是顶层输出端口。

例如,至少一个目标子模块为子模块A~子模块N。子模块A的输入端口对应顶层模块的顶层输入端口,子模块N的输出端口对应顶层模块的顶层输出端口。子模块A~子模块N中相邻模块的输出端口和输入端口之间通过连线(Wire)进行对应连接。根据子模块A的输入端口与顶层模块的顶层输入端口的连接关系、子模块N的输出端口与顶层模块的顶层输出端口的连接关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

图2示出了根据本公开一实施例的系统级芯片SoC的结构示意图。

如图2所示,该SoC 200包括顶层模块210和目标子模块221、222、...、22N。N为大于等于2的整数。

顶层模块210包括顶层输入端口IP0、IP1、IP2、...、IPn和顶层输出端口OP0、OP1、OP2。根据顶层输入端口IP0、IP1、IP2、...、IPn和顶层输出端口OP0、OP1、OP2,可以得到各顶层端口的名称、端口类型和端口位宽。n为大于等于2的整数。

目标子模块221包括输入端口P

例如,目标子模块221的输入端口数量可以等于或不等于顶层模块210的输入端口数量。当目标子模块221的输入端口数量等于顶层模块210的输入端口数量时,代表目标子模块221的每个输入端口与顶层模块210的输入端口一一对应连接。当目标子模块221的输入端口数量不等于顶层模块210的输入端口数量时,代表目标子模块221的输入端口中存在固定值端口(即常值),或一个顶层输入端口与多个目标子模块221的输入端口连接。

目标子模块222包括输入端口P

目标子模块22N包括输入端口P

在本公开实施例中,根据目标子模块221、222、....22N的模块名称,目标子模块221中输入端口P

例如,第一配置文件可以为多个配置文件。每个配置文件对应一个目标子模块的基础信息。

例如,对于目标子模块221、222、...、22N,第一配置文件应该为N个。即,根据目标子模块221的基础信息生成与目标子模块221对应的配置文件,根据目标子模块222的基础信息生成与目标子模块222对应的配置文件,根据目标子模块22N的基础信息生成与目标子模块22N对应的配置文件。

例如,各配置文件格式为.excel格式,则每个配置文件中的列名至少包括PortName、I/O、Width。根据各子模块的基础信息,将每个端口信息分别对应至相应的行中,以生成各配置文件。

在本公开实施例中,根据顶层模块210的模块名称,顶层输入端口IP0、IP1、IP2、...、IPn和顶层输出端口OP0、OP1、OP2的名称、端口类型和端口位宽,得到第二配置文件。

例如,顶层端口与子模块各端口的映射关系可以包括顶层输入端口IP0、IP1、IP2、...、IPn与目标子模块221的输入端口之间的连接关系,以及顶层输出端口OP0、OP1、OP2与模块子模块22N的输出端口之间的连接关系。

例如,第二配置文件格式为.excel格式,则第二配置文件中的列名至少包括PortName、I/O、Width。根据顶层端口的基础信息,将每个端口信息分别对应至相应的行中,以生成第二配置文件。

在本公开实施例中,根据顶层端口与子模块各端口的映射关系,在第一配置文件中的各配置文件中,添加与该配置文件中端口对应的顶层端口的基础信息,得到更新后的第一配置文件。

例如,在目标子模块221对应的配置文件中,在目标子模块221的输入端口对应的行中分别添加顶层输入端口IP0、IP1、IP2、...、IPn的端口信息。目标子模块221的输出端口对应目标子模块222的输入端口,这两者的映射关系通过目标子模块之间的连线获取。

例如,在目标子模块22N对应的配置文件中,在目标子模块22N的输出端口对应的行中分别添加顶层输出端口OP0、OP1、OP2的端口信息。目标子模块22N的输入端口对应目标子模块22(N-1)的输出端口,这两者的映射关系通过目标子模块之间的连线获取。

在本公开实施例中,将子模块名称和顶层模块名称进行例化处理,得到例化配置文件。例如,将目标子模块221、222、...、22N的模块名称和顶层模块210的模块名称进行例化处理,得到例化配置文件。

例如,目标子模块221的模块名称为Object Module 1,对应的例化模块名称为U_Object Module 1。目标子模块222的模块名称为Object Module 2,对应的例化模块名称为U_Object Module 2。目标子模块22N的模块名称为Object Module N,对应的例化模块名称为U_Object Module N。

例如,顶层模块210的模块名称为Module_Top,对应的例化模块名称为U_Module_Top。

例如,该例化配置文件至少包括:顶层模块210的模块名称,顶层模块210的例化模块名称,目标子模块221、222、...、22N的模块名称和目标子模块221、222、...、22N的例化模块名称。顶层模块210对应目标子模块221、222、...、22N。

在本公开实施例中,根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。该顶层Verilog代码包括顶层模块与目标子模块的连接关系和各子模块之间的连接关系,该连接关系如图2所示。

需说明的是,目标子模块221、222、...、22N的输入/输出端口、顶层模块210的输入/输出端口仅为示例性的说明,并不构成本公开实施例的限定。

图3示出了根据本公开一实施例的新增目标子模块端口的流程图。

如图3所示,该目标子模块端口新增方法可以在上述实施例的步骤S150中生成的顶层Verilog代码后实现,包括:操作S310~S340。

在操作S310,将至少一个目标子模块的新增基础信息添加至更新的第一配置文件中添加,得到第三配置文件。

在本公开实施例中,在至少一个目标子模块新增端口时,可以将新增端口的端口信息添加至更新的第一配置文件中,得到第三配置文件。

例如,在更新的第一配置文件中新增相应的行数,以添加新增端口的端口信息。

在操作S320,根据至少一个目标子模块的新增基础信息更新第二配置文件,得到更新的第二配置文件。

例如,目标子模块A的新增端口为IPA1。根据新增端口IPA1的端口信息,在第二配置文件中新增与该新增端口IPA1对应的顶层端口信息,得到更新的第二配置文件。

在操作S330,根据至少一个目标子模块的子模块新增端口信息与顶层模块端口信息之间的映射关系和更新的第二配置文件,将顶层模块端口信息中与新增端口信息对应的第二顶层模块端口信息,添加至第三配置文件中,得到第四配置文件。

例如,根据新增端口IPA1与顶层模块端口之间的连接关系和更新的第二配置文件,将更新的第二配置文件中与该新增端口IPA1端口信息对应的第二顶层模块端口信息,添加至更新的第一配置文件中,得到第四配置文件。该第四配置文件相比更新的第一配置文件,还包括新增端口IPA1的端口信息和与该新增端口IPA1端口对应的顶层端口信息。

例如,该第二顶层模块端口信息与第一顶层模块端口信息不同。

在操作S340,根据第四配置文件、更新的第二配置文件和例化配置文件,生成新的SoC顶层Verilog代码。

例如,通过分别提取第四配置文件、更新的第二配置文件和例化配置文件中的信息,生成新的SoC的顶层Verilog代码。该新的顶层Verilog代码包括先前生成的顶层模块与目标子模块的连接关系和各子模块之间的连接关系,以及新增端口与该新增端口对应的顶层端口之间的连接关系。

需说明的是,新增端口可以为多个新增端口,如IPA1、IPA2、IPA3、...等,新增端口IPA1、IPA2、IPA3、...的新增过程如上述实施例新增端口IPA1所示,不再详细赘述。此外,新增端口还可以为新增相邻模块之间的连接端口。在其他一些实施例中,若目标子模块A的新增端口为相邻模块之间的连接端口。例如,目标子模块A的新增端口IPA1为目标子模块A的输出端口,该新增端口IPA1对应于目标子模块B的输入端口,此时在更新的第一配置文件中目标子模块B的对应的配置文件里添加该新增端口IPA1对应的端口信息,得到再次更新的第一配置文件。

根据本公开的实施例,在SoC配置过程中,当需要在某个子模块中新增端口时,可采用本公开提供的方法在配置过程中生成的配置文件里添加新增的端口信息,以使形成新增的端口连接关系。该操作过程不会影响先前生成的模块间的连接关系,提高了顶层Verilog代码的生成效率。

图4示出了根据本公开一实施例的变更目标子模块端口的流程图。

如图4所示,该目标子模块端口变更方法可以在上述实施例的步骤S150中生成的顶层Verilog代码后实现,包括:操作S410~S440。

在操作S410,在更新的第一配置文件中变更至少一个目标子模块的至少一个端口信息,得到第五配置文件。

例如,在SoC配置过程中,将目标子模块A的端口IPA变更为端口IPA’,在更新的第一配置文件中将端口IPA的端口信息更新为端口IPA’的端口信息,得到第五配置文件。例如,变更的端口数量为多个时,多个端口信息的变更原理与端口IPA的端口信息变更原理相同。

在操作S420,根据变更的该至少一个端口信息,在第二配置文件中变更与该至少一个端口信息对应的至少一个顶层模块端口信息,得到第六配置文件。

例如,根据端口IPA’的端口信息,在第二配置文件中将端口IPA对应的顶层模块端口信息变更为端口IPA’对应的顶层模块端口信息,得到第六配置文件。

在操作S430,根据该至少一个端口信息与顶层模块端口信息之间的映射关系和第六配置文件,将顶层模块端口信息中与该至少一个端口信息对应的第三顶层模块端口信息添加至第五配置文件中,得到更新的第五配置文件。

本公开实施例中,根据该端口IPA’的端口信息与顶层模块端口的连接关系和第六配置文件,将顶层模块端口信息中与该端口IPA’信息对应的第三顶层模块端口信息添加至第五配置文件中,得到更新的第五配置文件。

例如,该第三顶层模块端口信息可以与第一顶层模块端口信息和第二顶层模块端口信息不同。

在操作S440,根据更新的第五配置文件、第六配置文件和例化配置文件,生成新的SoC顶层Verilog代码。

例如,通过分别提取更新的第五配置文件、第六配置文件和例化配置文件中的信息,生成新的SoC的顶层Verilog代码。该新的顶层Verilog代码包括顶层模块与目标子模块的连接关系和各子模块之间的连接关系。

需说明的是,变更端口还可以为变更相邻模块之间的连接端口。在其他一些实施例中,若目标子模块A的变更端口为相邻模块之间的连接端口。例如,目标子模块A的端口IPA为目标子模块A的输出端口,该输出端口IPA对应于目标子模块B的输入端口。将该端口IPA变更为端口IPA’时,此时在更新的第一配置文件中目标子模块B的对应的配置文件中,将与端口IPA对应的端口信息变更为与端口IPA’对应的端口信息,得到再次更新的第一配置文件。

根据本公开的实施例,在SoC配置过程中,当需要在某个子模块中变更端口时,可采用本公开提供的方法在配置过程中生成的配置文件里更新端口信息,以使形成新的端口连接关系。该操作过程不会影响先前生成的模块间的连接关系,提高了顶层Verilog代码的生成效率。

图5示出了根据本公开另一实施例的系统级芯片SoC的结构示意图。

如图5所示,该SoC 500包括:顶层模块510和目标子模块521、522。

顶层模块510包括顶层输入端口i_a0、i_top0、i_top1、i_top2、i_top3和顶层输出端口o_b0、o_top0、o_top1。根据顶层输入端口i_a0、i_top0、i_top1、i_top2、i_top3和顶层输出端口o_b0、o_top0、o_top1,可以得到各顶层端口的名称、端口类型和端口位宽。

目标子模块521包括输入端口i_a0、i_a1、i_a2、i_a3、i_a4、i_a5、i_a6和输出端口o_a0、o_a1、o_a2、o_a3。根据输入端口i_a0、i_a1、i_a2、i_a3、i_a4、i_a5、i_a6和输出端口o_a0、o_a1、o_a2、o_a3,可以得到目标子模块521中各端口的名称、端口类型和端口位宽。

例如,输入端口i_a0、i_a1、i_a4、i_a5、i_a6分别与顶层输入端口连接。输入端口i_a2、i_a3为固定值端口,输入端口i_a2、i_a3的输入值为常值。

目标子模块522包括输入端口i_b0、i_b1、i_b2、i_b3和输出端口o_b0、o_b1、o_b2、o_b3。根据输入端口i_b0、i_b1、i_b2、i_b3和输出端口o_b0、o_b1、o_b2、o_b3,可以得到目标子模块522中各端口的名称、端口类型和端口位宽。

例如,根据目标子模块521和目标子模块522的基础信息,可以得到的第一配置文件可以表示如下:

表1

表2

上述表中,表1为第一配置文件中根据目标子模块521的基础信息生成的配置文件。表2为第一配置文件中根据目标子模块522的基础信息生成的配置文件。

例如,根据顶层模块510的基础信息,可以得到的第二配置文件可以表示如下:

表3

例如,目标子模块521、522的子模块端口信息与顶层模块510的顶层模块端口信息之间的映射关系指的是目标子模块521、522的各端口与顶层模块510的各端口之间的连接关系。

例如,如图5所示,目标子模块521的端口i_a0与顶层模块510的端口i_a0连接,代表目标子模块521的输入端口来自顶层模块,目标子模块521的端口名称与顶层模块的端口名称相同。目标子模块521的端口i_a1与顶层模块510的端口i_top0连接,代表目标子模块521的输入端口来自顶层模块,目标子模块521的端口名称与顶层模块的端口名称不同。目标子模块521的端口o_a0与目标子模块522的端口i_b0连接,代表目标子模块521的端口o_a0作为源端口,端口o_a0的名称与连线o_a0的名称相同。目标子模块521的端口o_a2为固定端口,端口o_a2的输入值可以为1′b1。需说明的是,其他端口的连接关系此处不作一一详述。

例如,根据目标子模块521、522的各端口与顶层模块510的各端口的连接关系以及第二配置文件,将顶层模块510端口信息中与目标子模块521、522端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。该更新的第一配置文件可以表示如下:

表4

表5

上述表中,Input default表示端口的输入默认值,例如端口i_a2的输入默认值为1′b1。Output open表示端口的打开状态。Link Module表示端口对应的连接模块。LinkModule Port表示端口对应连接的模块端口。o_a0、w_temp0、o_a2和w_temp1分别代表目标子模块之间的连线名称。通过各连线可以知道相邻目标子模块的端口连接关系。

例如,将目标子模块521、522的子模块名称和顶层模块510的模块名称进行例化处理,得到的例化配置文件可以表示为:

表6

在表6的示例中,顶层模块510的模块名称为Module_Top,例化后的模块名称为U_Module_Top。目标子模块521的模块名称为Module_A,例化后的模块名称为U_Module_A。目标子模块522的模块名称为Module_B,例化后的模块名称为U_Module_B。Module_Top与Module_A和Module_B连接。

例如,根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。该顶层Verilog代码包括顶层模块510与目标子模块521、522的连接关系和各子模块之间的连接关系,该连接关系可以如图5所示。

根据本公开的实施例,在SoC配置过程中,若在上述生成的顶层Verilog代码中新增目标子模块端口,可以包括以下步骤。

例如,在目标子模块521中新增输入端口i_a7、i_a8。将新增输入端口i_a7、i_a8的基础信息添加至更新的第一配置文件中添加,得到的第三配置文件可以表示为如表7所示。

例如,根据目标子模块521的新增输入端口i_a7、i_a8的基础信息更新第二配置文件,得到的更新的第二配置文件可以表示为如表8所示。

表7

表8

例如,根据目标子模块521的新增输入端口i_a7、i_a8的端口信息与顶层模块510端口信息之间的连接关系和更新的第二配置文件,将顶层模块510端口信息中与新增端口信息对应的第二顶层模块端口信息(i_top4、i_top5),添加至第三配置文件中,得到的第四配置文件可以表示为:

表9

例如,根据第四配置文件、更新的第二配置文件和例化配置文件,生成新的SoC顶层Verilog代码。该新的顶层Verilog代码包括先前生成的顶层模块510与目标子模块521、522的连接关系和各子模块之间的连接关系,以及目标子模块521的新增输入端口i_a7、i_a8与顶层模块510的顶层端口i_top4、i_top5之间的连接关系。

根据本公开的实施例,在SoC配置过程中,若在上述生成的顶层Verilog代码中变更目标子模块端口,可以包括以下步骤。

例如,将目标子模块521中的端口i_a1变更为端口i_a1’,对应的将更新的第一配置文件中的端口i_a1的端口信息,变更为端口i_a1’的端口信息,得到的第五配置文件可以表示为:

表10

例如,根据变更的该端口i_ao’的端口信息,在第二配置文件中变更与该端口i_ao对应的顶层模块端口i_top0的端口信息,即将顶层模块端口i_top0的端口信息变更为顶层模块端口i_top0’的端口信息,得到的第六配置文件可以表示为:

表11

例如,根据该端口i_ao’与顶层模块端口i_top0’之间的连接关系和第六配置文件,将顶层模块端口信息中与该端口i_ao’对应的第三顶层模块端口信息(i_top0’)添加至第五配置文件中,得到的更新的第五配置文件可以表示为:

表12

例如,根据更新的第五配置文件、第六配置文件和例化配置文件,生成新的SoC顶层Verilog代码。该新的SoC顶层Verilog代码包括先前生成的顶层模块510与目标子模块521、522的连接关系和各子模块之间的连接关系,以及目标子模块521的变更端口i_a1’与顶层模块510的顶层变更端口i_top’之间的连接关系。

需说明的是,尽管上述实施例以各配置文件为.excel格式举例说明,本公开实施例中各配置文件的格式包括但不仅限于.excel格式,还可以为其他格式的文件,如.doc、.txt、.XLSX等,本公开实施例对此不做限定。另外,各配置文件优选相同的文件格式,以便于进行端口信息关联。

本公开的实施例中,在SoC配置过程中,当需要在某个子模块中新增或变更端口时,可采用本公开提供的方法在配置过程中生成的配置文件里新增或更新端口信息,以使形成新的端口连接关系。该操作过程不会影响先前生成的模块间的连接关系,提高了顶层Verilog代码的生成效率,降低了人工手动连接的错误率。

图6示出了根据本公开一实施例的系统级芯片SoC的配置装置的结构框图。

如图6所示,该SoC的配置装置600可以实现方法100,包括:第一获取单元610、第一生成单元620、第二生成单元630、第三生成单元640和第四生成单元650。

第一获取单元610,配置为获取SoC的至少一个目标子模块各自的子模块基础信息和顶层模块的顶层模块基础信息。其中,子模块基础信息包括子模块名称和子模块端口信息,顶层模块基础信息包括顶层模块名称和顶层模块端口信息。

例如,第一获取单元610用于执行上述实施例中的操作S110,不再赘述。

第一生成单元620,配置为根据子模块基础信息和顶层模块基础信息,分别得到第一配置文件和第二配置文件。

例如,第一生成单元620用于执行上述实施例中的操作S120,不再赘述。

第二生成单元630,配置为根据子模块端口信息与顶层模块端口信息之间的映射关系以及第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

例如,第二生成单元630用于执行上述实施例中的操作S130,不再赘述。

第三生成单元640,配置为将子模块名称和顶层模块名称进行例化处理,得到例化配置文件。

例如,第三生成单元640用于执行上述实施例中的操作S140,不再赘述。

第四生成单元650,配置为根据更新的第一配置文件、第二配置文件和例化配置文件,生成针对SoC的顶层Verilog代码。

例如,第四生成单元650用于执行上述实施例中的操作S150,不再赘述。

根据本公开的实施例,第二生成单元630配置为根据至少一个目标子模块各自的子模块的输入端口与顶层模块的第一源端口之间的连接关系、至少一个目标子模块各自的子模块的输出端口与顶层模块的第二源端口之间的连接关系和第二配置文件,将顶层模块端口信息中与子模块端口信息对应的第一顶层模块端口信息添加至第一配置文件中,得到更新的第一配置文件。

根据本公开的实施例,该装置600还包括:第二获取单元和第五生成单元。

第二获取单元,配置为获取系统级芯片SoC中至少一个目标子模块的Verilog代码。

第五生成单元,配置为根据Verilog代码,提取至少一个目标子模块各自的子模块基础信息。

需说明的是,根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

例如,第一获取单元610、第一生成单元620、第二生成单元630、第三生成单元640和第四生成单元650中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,第一获取单元610、第一生成单元620、第二生成单元630、第三生成单元640和第四生成单元650中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一获取单元610、第一生成单元620、第二生成单元630、第三生成单元640和第四生成单元650中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。

图7示出了根据本公开一实施例的可以应用系统级芯片SoC的配置方法的电子设备的框图。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,本实施例中所描述的电子设备700,包括:处理器701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。处理器701例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器701还可以包括用于缓存用途的板载存储器。处理器701可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。

在RAM 703中,存储有系统700操作所需的各种程序和数据。处理器701、ROM 702以及RAM 703通过总线704彼此相连。处理器701通过执行ROM 702和/或RAM 703中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 702和RAM 703以外的一个或多个存储器中。处理器701也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。

根据本公开的实施例,电子设备700还可以包括输入/输出(I/O)接口705,输入/输出(I/O)接口705也连接至总线704。系统700还可以包括连接至I/O接口705的以下部件中的一项或多项:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。

根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被处理器701执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。

根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 702和/或RAM 703和/或ROM 702和RAM 703以外的一个或多个存储器。

需要说明的是,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来。

附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。

尽管已经参照本公开的特定示例性实施例示出并描述了本公开,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以对本公开进行形式和细节上的多种改变。因此,本公开的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

相关技术
  • 电子设备显示屏驱动芯片驱动方法、装置及电子设备
  • 入网配置方法、装置、电子设备以及网络系统
  • 芯片测试模式的配置方法、装置、SOC芯片及电子设备
  • 一种系统级芯片SOC启动方法、装置、SOC及存储介质
技术分类

06120115587042