RTL代码生成方法、装置、电子设备及存储介质与流程
未命名
09-22
阅读:334
评论:0
rtl代码生成方法、装置、电子设备及存储介质
技术领域
1.本技术涉及芯片技术领域,尤其涉及一种rtl代码生成方法、装置、电子设备及存储介质。
背景技术:
2.根据nec(日本电气株式会社)2004年发布的研究,一个拥有100万逻辑门的芯片设计通常需要编写30万行rtl(register transfer level)代码。因此,完全使用rtl级的逻辑抽象设计当代芯片是不现实的,且会对设计、验证、集成等各个环节造成巨大的压力。相比之下,使用诸如c、c++等高层次语言对系统建模,可以将代码密度压缩7到10倍,这极大的缓解了设计复杂度。因此,目前通常是先采用高层次语言进行集成电路设计,进而通过高层次综合将高层次语言转化成rtl代码。
3.然而,通过高层次综合对大型集成电路设计进行综合的时间过长,有时甚至会因为资源占用过高导致机器卡死,极大的影响开发的效率。
技术实现要素:
4.本技术的主要目的在于提供一种rtl代码生成方法、装置、电子设备及存储介质,旨在解决现有技术大型集成电路设计的开发效率较低的技术问题。
5.为实现上述目的,本技术提供一种rtl代码生成方法,包括以下步骤:
6.获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;
7.通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;
8.获取各所述子模块中的待连接接口各自对应的连接关系;
9.基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。
10.可选地,所述获取各所述子模块中的待连接接口各自对应的连接关系的步骤包括:
11.获取所述目标模块对应的约束规则和配置文件;
12.基于所述配置文件中的顶层信息字段,对各所述子模块rtl代码进行解析,确定各所述子模块中的待连接接口的接口信息;
13.根据所述约束规则和各所述接口信息,确定各个子模块中的待连接接口各自对应的连接关系。
14.可选地,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤包括:
15.基于所述连接关系和各所述接口信息生成顶层scala文件;
16.通过执行所述顶层scala文件,对各所述待连接接口进行连接,生成顶层模块代码;
17.对所述顶层模块代码和各所述子模块rtl代码进行集成,得到目标模块rtl代码。
18.可选地,所述约束规则包括同步约束规则、匹配约束规则、环回约束规则、映射约束规则、配置约束规则、忽视约束规则和仲裁约束规则。
19.可选地,各所述子模块中包括至少一对待互联子模块对,所述待互联子模块对中的两个待互联子模块通过乒乓操作模块进行数据互联。
20.可选地,所述乒乓操作模块包括输入数据选择单元、输出数据选择单元、第一缓冲单元和第二缓冲单元,其中,
21.所述输入数据选择单元用于切换输入数据存储的第一目标缓冲单元,所述第一目标缓冲单元包括第一缓冲单元和第二缓冲单元;
22.所述输出数据选择单元用于切换获取输出数据的第二目标缓冲单元,所述第二目标缓冲单元包括第一缓冲单元和第二缓冲单元。
23.可选地,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤之后还包括:
24.对所述目标模块rtl代码进行接口连接检测;
25.若检测到接口连接异常,则输出连接异常提醒信息。
26.本技术还提供一种rtl代码生成装置,所述rtl代码生成装置包括:
27.子模块设计文件获取模块,用于获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;
28.子模块rtl代码转换模块,用于通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;
29.连接关系获取模块,用于获取各所述子模块中的待连接接口各自对应的连接关系;
30.目标模块rtl代码生成模块,用于基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。
31.本技术还提供一种电子设备,所述电子设备为实体设备,所述电子设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述的rtl代码生成方法的程序,所述的rtl代码生成方法的程序被处理器执行时可实现如上述的rtl代码生成方法的步骤。
32.本技术还提供一种存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现rtl代码生成方法的程序,所述的rtl代码生成方法的程序被处理器执行时实现如上述的rtl代码生成方法的步骤。
33.本技术提供了一种rtl代码生成方法、装置、电子设备及存储介质,通过获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到,实现了对集成电路的分解,将较为大型集成电路的设计文件分解成了多个较为小型子模块的子模块设计文件,进而通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码,实现了分别对各个子模块设计文件的高层次综合,子模块设计文件远小于整个大型集成电路的设计文件,故而可以有效减少其高层次综合的时间和资源占用率,进而通过获取各所述子模块中的待连接接口各自对应的连接关系,基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码,实现了对分解后的各个小模块的连线,将分解后的
各个小模块的子模块rtl代码集成为大型的目标模块对应的目标模块rtl代码,也即获得了所述大型集成电路对应的rtl代码。这样,相比于大型集成电路整体进行高层次综合的方式,本技术通过将大型集成电路模块化之后分别进行高层次综合再连接,可以使得高层次综合的时间和资源占用率均大大减少,克服了通过高层次综合对大型集成电路设计进行综合的时间过长,有时甚至会因为资源占用过高导致机器卡死,极大的影响开发的效率的技术缺陷,提高了大型集成电路设计的开发效率。
附图说明
34.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
35.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图得到其他的附图。
36.图1为本技术中rtl代码生成方法的第一实施例的流程示意图;
37.图2为本技术实施例中乒乓操作模块的结构示意图;
38.图3为本技术实施例中连线工具的结构示意图;
39.图4为本技术中rtl代码生成方法的第二实施例的流程示意图;
40.图5为本技术中rtl代码生成装置的一实施例的结构示意图;
41.图6为本技术实施例中rtl代码生成方法涉及的硬件运行环境的设备结构示意图。
42.本技术目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
43.为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所得到的所有其它实施例,均属于本发明保护的范围。
44.实施例一
45.本技术实施例提供一种rtl代码生成方法,在本技术rtl代码生成方法的第一实施例中,参照图1,包括以下步骤:
46.步骤s10,获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;
47.本实施例方法的执行主体可以是一种rtl代码生成装置,也可以是一种rtl代码生成终端设备或服务器,本实施例以rtl代码生成装置进行举例,该rtl代码生成装置可以集成在具有数据处理功能的智能手机、平板电脑、计算机等终端设备上。
48.在本实施例中,需要说明的是,高层次综合(high-level synthesis)简称hls,是指将高层次语言描述的逻辑结构,自动转换成低抽象级语言描述的电路模型的过程;所述目标模块是指需要进行设计的集成电路整体;所述子模块是指由目标模块分解得到的模块;所述子模块设计文件是指采用高层次语言描述的子模块的逻辑结构的文件,其中,所述
高层次语言是指能够更好地满足软件开发需求的编程语言,包括c、c++、systemc等,它们具有更高的可编程性、可读性和可维护性,可以更好地支持软件开发的复杂性,使用高层次语言对系统建模,可以将代码密度压缩7到10倍,这极大的缓解了设计复杂度。
49.示例性地,在确定需要进行设计的集成电路之后,相关技术人员可以根据实际需要将所述集成电路设计分解为多个子模块,并分别采用高层次语言描述各个子模块对应的逻辑结构,即可获得各个子模块各自对应的子模块设计文件,其中,将所述集成电路设计分解为多个子模块的具体分解规则可以根据实际情况确定,本实施例对此不加以限制;进而,所述rtl代码生成装置获取预先设计好的各所述子模块各自对应的子模块设计文件。
50.可选地,各所述子模块中包括至少一对待互联子模块对,所述待互联子模块对中的两个待互联子模块通过乒乓操作模块进行数据互联。
51.在本实施例中,需要说明的是,由于本实施例中各个子模块是分别进行编写,且分别进行高层次综合的,故而在对各个子模块设计文件进行高层次综合之后获得的子模块rtl代码描述的子模块是相互独立的,但各个子模块之间可能会需要进行数据传输,各个子模块之间的数据传输可以采用axi(advanced extensible interface,一种由arm公司提出的总线协议)的方式相连,然而,axi的方式对于大模块的设计不是很友好,经常出现高层次综合时间过长的问题,并且不支持多读多写,在进行数据传输的两个模块之间的时钟不同步的情况下,会产生等待时间,导致整体的数据流处理时间增加。
52.示例性地,在对每个子模块进行设计和编写时,就可以根据数据传输过程中的时钟信息等实际情况,确定需要进行时钟同步的至少一对待互联子模块对,将每一对待互联子模块对中的两个待互联子模块之间设置乒乓操作模块,通过乒乓操作模块对两个待互联子模块进行数据互联控制,其中,所述乒乓操作模块至少包括两个缓冲单元,所述乒乓操作模块用于将数据从一个模块按节拍切换存入两个缓冲单元中,并按与存入方式相反的节拍输出到另一个模块中,例如,要将模块1的数据流传输至与模块1时钟不同步的模块2中,则可以在模块1和模块2之间设置乒乓操作模块,在第一个缓冲周期,将模块1的数据存入乒乓操作模块的第一缓冲单元中;在第二个缓冲周期,将输入数据的缓冲单元切换为第二缓冲单元,以将模块1的数据切换到存入乒乓操作模块的第二缓冲单元中,同步地,将缓存于第一缓冲单元中的数据输出到模块2中;在第三个缓冲周期,将输入数据的缓冲单元切换回第一缓冲单元,以将模块1的数据切换到存入乒乓操作模块的第一缓冲单元中,同步地,将输出数据的缓冲单元切换为第二缓冲单元,以将缓存于第二缓冲单元中的数据输出到模块2中,在之后的缓冲周期以上述相同的方式对输入数据的缓冲单元和输出数据的缓冲单元进行切换。这样,可以将数据流没有停顿地进行传输,所述乒乓操作模块的输入数据流和输出数据流可以一直连续不断,没有任何停顿,因此非常适合对数据流进行流水线式处理。
53.可选地,所述乒乓操作模块包括输入数据选择单元、输出数据选择单元、第一缓冲单元和第二缓冲单元,其中,
54.所述输入数据选择单元用于切换输入数据存储的第一目标缓冲单元,所述第一目标缓冲单元包括第一缓冲单元和第二缓冲单元;
55.所述输出数据选择单元用于切换获取输出数据的第二目标缓冲单元,所述第二目标缓冲单元包括第一缓冲单元和第二缓冲单元。
56.示例性地,所述乒乓操作模块包括输入数据选择单元、输出数据选择单元、第一缓
冲单元和第二缓冲单元,其中,所述输入数据选择单元用于切换输入数据存储的第一目标缓冲单元,所述第一目标缓冲单元包括第一缓冲单元和第二缓冲单元;所述输出数据选择单元用于切换获取输出数据的第二目标缓冲单元,所述第二目标缓冲单元包括第一缓冲单元和第二缓冲单元;所述第一缓冲单元可以为存储器或者寄存器;所述第二缓冲单元可以为存储器或者寄存器。
57.在一可行实施方式中,参照图2,要将模块1的数据流传输至与模块1时钟不同步的模块2中,则可以在模块1和模块2之间设置乒乓操作模块,在第一个缓冲周期,通过输入数据选择单元将输入数据的第一目标缓冲单元切换为第一缓冲单元,以将模块1的数据存入所述第一缓冲单元中;在第二个缓冲周期,通过输入数据选择单元将输入数据的第一目标缓冲单元切换为第二缓冲单元,以将模块1的数据切换到存入所述第二缓冲单元中,同步地,通过输出数据选择单元将输出数据的第二目标缓冲单元切换为第一缓冲单元,以将缓存于第一缓冲单元中的数据输出到模块2中,以供模块2进行数据处理;在第三个缓冲周期,通过输入数据选择单元将输入数据的第一目标缓冲单元切换回第一缓冲单元,以将模块1的数据切换到存入所述第一缓冲单元中,同步地,通过输出数据选择单元将输出数据的缓冲单元切换为第二缓冲单元,以将缓存于第二缓冲单元中的数据输出到模块2中,在之后的缓冲周期以上述相同的方式对输入数据的缓冲单元和输出数据的缓冲单元进行切换。这样,通过所述输入数据选择单元和所述输出数据选择单元,按节拍、相互配合对第一目标缓冲单元和第二目标缓冲单元进行切换,即可将经过缓冲的数据流没有停顿地从一个模块送到另一个模块进行运算与处理,把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。
58.步骤s20,通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;
59.示例性地,在获取到多个子模块设计文件之后,对各个子模块设计文件分别进行高层次综合,将各所述子模块设计文件转换为对应的子模块rtl代码。
60.步骤s30,获取各所述子模块中的待连接接口各自对应的连接关系;
61.步骤s40,基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。
62.在本实施例中,需要说明的是,由于本实施例中各个子模块是分别进行编写,且分别进行高层次综合的,故而在对各个子模块设计文件进行高层次综合之后获得的子模块rtl代码描述的子模块是相互独立的,需要将各个子模块中的待连接接口连接之后才能得到完整的连通的目标模块,其中,每个子模块中可以设置有一个或多个待连接接口。
63.示例性地,获取各所述子模块中的待连接接口各自对应的连接关系,基于所述连接关系将各所述子模块中的各个待连接接口与其各自对应的接口互连,对相互连接后的各所述子模块rtl代码进行集成,生成所述目标模块对应的目标模块rtl代码,其中,所述连接关系可以为与待连接接口进行连接的目标接口的信息,也可以为接口的约束规则,各个待连接接口的连接关系可以根据实际需要进行确定,本实施例对此不加以限制;所述约束规则是指对信号线的连线方式进行约束的规则,具体的约束内容和功能可以根据实际情况进行设置和调整,本实施例对此不加以限制。
64.在一可行实施方式中,所述基于所述连接关系和各所述子模块rtl代码,生成所述
目标模块对应的目标模块rtl代码的方式可以为人工编写连接代码,也可以通过预置的连线工具自动完成,所述连线工具可以根据实际需要进行开发或使用现有的连线工具,本实施例对此不加以限制。
65.在一可行实施方式中,参照图3,所述连线工具包括准备部分、python(一种编程语言)部分、scala(一种编程语言)部分和收尾部分,其中,准备部分包括预先通过人工设置配置文件与约束规则;python部分用于对子模块rtl代码进行解析,生成接口信息,并进一步基于接口信息和约束规则生成scala文件;scala部分用于进行例化,以及基于scala文件对子模块中的待连接接口进行连线,生成顶层模块代码;收尾部分用于对顶层模块代码和各所述子模块rtl代码进行集成,生成目标模块rtl代码,还可以进一步进行故障检测,在存在故障时,调整约束规则,重新生成目标模块rtl代码。
66.可选地,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤之后还包括:
67.步骤s50,对所述目标模块rtl代码进行接口连接检测;
68.步骤s60,若检测到接口连接异常,则输出连接异常提醒信息。
69.在本实施例中,需要说明的是,在集成电路设计完成之后,还需要对集成电路中各个接口的连接情况进行检查,以检查电路设计和制造的正确与否,质量是否合格,确保集成电路在应用时能够正常安全工作,对于不合格的产品,通过测试能够及时发现问题,找到不合格的原因,并进行调整。
70.示例性地,可以通过自动测试装置或人工对所述目标模块rtl代码进行接口连接检测,例如检测悬空引脚的设置是否正确、接口之间的连接是否正确等;若检测到接口连接异常,则输出连接异常提醒信息,以供相关人员基于所述连接异常提醒信息及时调整接口的连接情况或者更改接口间的连线规则之后,重新生成信息目标模块对应的目标模块rtl代码。
71.在本实施例中,通过获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到,实现了对集成电路的分解,将较为大型集成电路的设计文件分解成了多个较为小型子模块的子模块设计文件,进而通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码,实现了分别对各个子模块设计文件的高层次综合,子模块设计文件远小于整个大型集成电路的设计文件,故而可以有效减少其高层次综合的时间和资源占用率,进而通过获取各所述子模块中的待连接接口各自对应的连接关系,基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码,实现了对分解后的各个小模块的连线,将分解后的各个小模块的子模块rtl代码集成为大型的目标模块对应的目标模块rtl代码,也即获得了所述大型集成电路对应的rtl代码。这样,相比于大型集成电路整体进行高层次综合的方式,本技术通过将大型集成电路模块化之后分别进行高层次综合再连接,可以使得高层次综合的时间和资源占用率均大大减少,克服了通过高层次综合对大型集成电路设计进行综合的时间过长,有时甚至会因为资源占用过高导致机器卡死,极大的影响开发的效率的技术缺陷,提高了大型集成电路设计的开发效率。
72.实施例二
73.进一步地,参照图4,基于本技术上述实施例,在本技术的第二实施例中,与上述实施例相同或相似的内容,可以参考上文介绍,后续不再赘述。在此基础上,所述获取各所述
子模块中的待连接接口各自对应的连接关系,基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤包括:
74.步骤s31,获取所述目标模块对应的约束规则和配置文件;
75.在本实施例中,需要说明的是,对于越大型的目标模块来说,模块中的信号越多且越复杂,成千上万的信号,如果使用人工一一进行连线的方法费时费力。
76.示例性地,在确定需要进行设计的集成电路之后,相关技术人员即可根据所述集成电路的实际需求等设置约束规则和配置文件,在需要进行连线时,即可直接获取所述目标模块对应的约束规则和配置文件,其中,所述配置文件用于配置目标模块中各个子模块的模块名、约束名、顶层路径、模块类型和/或复位极性等;所述约束规则是指对信号线的连线方式进行约束的规则,具体的约束内容和功能可以根据实际情况进行设置和调整,本实施例对此不加以限制。
77.可选地,所述约束规则包括同步约束规则、匹配约束规则、环回约束规则、映射约束规则、配置约束规则、忽视约束规则和仲裁约束规则。
78.在本实施例中,所述约束规则包括同步约束规则、匹配约束规则、环回约束规则、映射约束规则、配置约束规则、忽视约束规则和仲裁约束规则,其中,所述同步约束规则用于连接处理器和负载、存储单元之间的同步信号;所述匹配约束规则用于连接各个子模块之间的axis(axi-stream,axi的其中一种协议)接口、ram(随机存取存储器,random access memory)接口;所述环回约束规则用于子模块自身的环回信号连接;所述映射约束规则用于把接口映射到顶层;所述配置约束规则用于把接口映射到顶层,例如direct_i(直接互联)接口;所述忽视约束规则用于接口的悬空;所述仲裁约束规则用于将需要仲裁的接口连接上。
79.在一可行实施方式中,可以采用模糊匹配的方式对待连接接口进行连线,例如,可以在所述约束规则设置通配符,通过应用通配符可以对信号名进行模糊匹配;还可以通过模糊匹配算法将约束的信号、同名的信号和相关stream(流式)、ram、fifo(first input first output,先进先出)等接口直接进行连接。
80.步骤s32,基于所述配置文件中的顶层信息字段,对各所述子模块rtl代码进行解析,确定各所述子模块中的待连接接口的接口信息;
81.示例性地,从所述配置文件中读取顶层信息字段,基于所述顶层信息字段确定各个待连接接口的接口类型,基于各个待连接接口的接口类型,对各所述子模块rtl代码进行解析,确定分布于各个子模块的多个待连接接口的接口信息。
82.在一可行实施方式中,所述基于各个待连接接口的接口类型,对各所述子模块rtl代码进行解析,确定分布于各个子模块的多个待连接接口的接口信息的方式可以为,确定待检索接口类型,根据预设的接口类型与检索关键字之间的映射关系,确定各个待检索接口类型各自对应的目标检索关键字,从而,基于各所述检索关键字从各所述子模块rtl代码中进行检索,得到各个待检索接口类型各自对应的待连接接口以及各自对应的待连接接口的接口信息。例如,接口类型、检索关键字以及输出信息的对应关系可参照表1:
83.表1
[0084][0085]
步骤s33,根据所述约束规则和各所述接口信息,确定各个子模块中的待连接接口各自对应的连接关系。
[0086]
示例性地,根据所述约束规则对各个待连接接口的接口信息进行信息匹配,确定与各个待连接接口相连接的目标接口的信息,其中,所述目标接口的信息可以为目标接口的接口名、接口类型等,所述目标接口的信息可以表征各所述待连接接口各自对应的连接关系。
[0087]
可选地,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤包括:
[0088]
步骤s41,基于所述连接关系和各所述接口信息生成顶层scala文件;
[0089]
在本实施例中,需要说明的是,由于本实施例中各个子模块是分别进行编写,且分别进行高层次综合的,故而在对各个子模块设计文件进行高层次综合之后获得的子模块rtl代码描述的子模块是相互独立的,但各个子模块之间可能会需要进行信号传输,故而需要将各个子模块中的接口进行连接,才能得到完整的相互联通的目标模块。
[0090]
示例性地,在解析rtl代码获得各个子模块中的各个待连接接口的接口信息之后,通过预先编写好的python脚本,基于各所述接口信息和所述连接关系,生成所述目标模块对应的顶层scala文件。
[0091]
步骤s42,通过执行所述顶层scala文件,对各所述待连接接口进行连接,生成顶层模块代码;
[0092]
步骤s43,对所述顶层模块代码和各所述子模块rtl代码进行集成,得到目标模块rtl代码。
[0093]
示例性地,通过预先编写的scala语法,自动执行所述顶层scala文件,自动实现对各所述待连接接口进行连接的顶层模块代码的编写,将所述顶层模块代码和各所述子模块rtl代码进行集成,即可得到目标模块的目标模块rtl代码。
[0094]
在一可行实施方式中,所述对各所述待连接接口进行连接的顶层模块代码的编写的步骤可以包括:定义时钟、复位和控制信号(表示开始、结束、忙、闲等信息的信号),将接口信息映射成接口,映射时钟域和接口重命名,进而,通过约束规则对各所述待连接接口进行连接,将寄存器进行连接。
[0095]
在本实施例中,通过约束规则可以实现子模块中各个待连接接口的自动连线,将分解后的各个子模块相连通,相比于人工手动编写连线代码,自动连线的效率明显提高。
[0096]
实施例三
[0097]
进一步地,本技术实施例还提供一种rtl代码生成装置,参照图5,所述rtl代码生成装置包括:
[0098]
子模块设计文件获取模块,用于获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;
[0099]
子模块rtl代码转换模块,用于通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;
[0100]
连接关系获取模块,用于获取各所述子模块中的待连接接口各自对应的连接关系;
[0101]
目标模块rtl代码生成模块,用于基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。
[0102]
可选地,所述连接关系获取模块,还用于:
[0103]
获取所述目标模块对应的约束规则和配置文件;
[0104]
基于所述配置文件中的顶层信息字段,对各所述子模块rtl代码进行解析,确定各所述子模块中的待连接接口的接口信息;
[0105]
根据所述约束规则和各所述接口信息,确定各个子模块中的待连接接口各自对应的连接关系。
[0106]
可选地,所述目标模块rtl代码生成模块,还用于:
[0107]
基于所述连接关系和各所述接口信息生成顶层scala文件;
[0108]
通过执行所述顶层scala文件,对各所述待连接接口进行连接,生成顶层模块代码;
[0109]
对所述顶层模块代码和各所述子模块rtl代码进行集成,得到目标模块rtl代码。
[0110]
可选地,在所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的操作之后,所述rtl代码生成装置还包括异常检测模块,所述异常检测模块用于:
[0111]
对所述目标模块rtl代码进行接口连接检测;
[0112]
若检测到接口连接异常,则输出连接异常提醒信息。
[0113]
本发明提供的rtl代码生成装置,采用上述实施例中的rtl代码生成方法,解决了现有技术大型集成电路设计的开发效率较低的技术问题。与现有技术相比,本发明实施例提供的rtl代码生成装置的有益效果与上述实施例提供的rtl代码生成方法的有益效果相同,且该rtl代码生成装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
[0114]
实施例四
[0115]
进一步地,本发明实施例提供一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例中的rtl代码生成方法。
[0116]
下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如蓝牙耳机、移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例
如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0117]
如图6所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(rom)中的程序或者从存储装置加载到随机访问存储器(ram)中的程序而执行各种适当的动作和处理。在ram中,还存储有电子设备操作所需的各种程序和数组。处理装置、rom以及ram通过总线彼此相连。输入/输出(i/o)接口也连接至总线。
[0118]
通常,以下系统可以连接至i/o接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(lcd)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数组。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。
[0119]
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从rom被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
[0120]
本发明提供的电子设备,采用上述实施例中的rtl代码生成方法,解决了现有技术大型集成电路设计的开发效率较低的技术问题。与现有技术相比,本发明实施例提供的电子设备的有益效果与上述实施例提供的rtl代码生成方法的有益效果相同,且该电子设备中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。
[0121]
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0122]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
[0123]
实施例五
[0124]
进一步地,本实施例提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例中的rtl代码生成方法。
[0125]
本发明实施例提供的计算机可读存储介质例如可以是u盘,但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述
的任意合适的组合。
[0126]
上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
[0127]
上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;获取各所述子模块中的待连接接口各自对应的连接关系;基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。
[0128]
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0129]
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0130]
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定。
[0131]
本发明提供的计算机可读存储介质,存储有用于执行上述rtl代码生成方法的计算机可读程序指令,解决了现有技术大型集成电路设计的开发效率较低的技术问题。与现有技术相比,本发明实施例提供的计算机可读存储介质的有益效果与上述实施例提供的rtl代码生成方法的有益效果相同,在此不做赘述。
[0132]
实施例六
[0133]
进一步地,本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的rtl代码生成方法的步骤。
[0134]
本技术提供的计算机程序产品解决了现有技术大型集成电路设计的开发效率较低的技术问题。与现有技术相比,本发明实施例提供的计算机程序产品的有益效果与上述实施例提供的rtl代码生成方法的有益效果相同,在此不做赘述。
[0135]
以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本技术的专利处理范围内。
技术特征:
1.一种rtl代码生成方法,其特征在于,所述rtl代码生成方法包括以下步骤:获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;获取各所述子模块中的待连接接口各自对应的连接关系;基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。2.如权利要求1所述的rtl代码生成方法,其特征在于,所述获取各所述子模块中的待连接接口各自对应的连接关系的步骤包括:获取所述目标模块对应的约束规则和配置文件;基于所述配置文件中的顶层信息字段,对各所述子模块rtl代码进行解析,确定各所述子模块中的待连接接口的接口信息;根据所述约束规则和各所述接口信息,确定各个子模块中的待连接接口各自对应的连接关系。3.如权利要求2所述的rtl代码生成方法,其特征在于,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤包括:基于所述连接关系和各所述接口信息生成顶层scala文件;通过执行所述顶层scala文件,对各所述待连接接口进行连接,生成顶层模块代码;对所述顶层模块代码和各所述子模块rtl代码进行集成,得到目标模块rtl代码。4.如权利要求2所述的rtl代码生成方法,其特征在于,所述约束规则包括同步约束规则、匹配约束规则、环回约束规则、映射约束规则、配置约束规则、忽视约束规则和仲裁约束规则。5.如权利要求1所述的rtl代码生成方法,其特征在于,各所述子模块中包括至少一对待互联子模块对,所述待互联子模块对中的两个待互联子模块通过乒乓操作模块进行数据互联。6.如权利要求5所述的rtl代码生成方法,其特征在于,所述乒乓操作模块包括输入数据选择单元、输出数据选择单元、第一缓冲单元和第二缓冲单元,其中,所述输入数据选择单元用于切换输入数据存储的第一目标缓冲单元,所述第一目标缓冲单元包括第一缓冲单元和第二缓冲单元;所述输出数据选择单元用于切换获取输出数据的第二目标缓冲单元,所述第二目标缓冲单元包括第一缓冲单元和第二缓冲单元。7.如权利要求1-6中任一项所述的rtl代码生成方法,其特征在于,所述基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码的步骤之后还包括:对所述目标模块rtl代码进行接口连接检测;若检测到接口连接异常,则输出连接异常提醒信息。8.一种rtl代码生成装置,其特征在于,所述rtl代码生成装置包括:子模块设计文件获取模块,用于获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;
子模块rtl代码转换模块,用于通过高层次综合将各所述子模块设计文件分别转换为子模块rtl代码;连接关系获取模块,用于获取各所述子模块中的待连接接口各自对应的连接关系;目标模块rtl代码生成模块,用于基于所述连接关系和各所述子模块rtl代码,生成所述目标模块对应的目标模块rtl代码。9.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至7中任一项所述的rtl代码生成方法的步骤。10.一种存储介质,其特征在于,所述存储介质为计算机可读存储介质,所述计算机可读存储介质上存储有实现rtl代码生成方法的程序,所述实现rtl代码生成方法的程序被处理器执行以实现如权利要求1至7中任一项所述的rtl代码生成方法的步骤。
技术总结
本申请公开了一种RTL代码生成方法、装置、电子设备及存储介质,所述的RTL代码生成方法包括以下步骤:获取多个子模块各自对应的子模块设计文件,其中,各所述子模块由目标模块分解得到;通过高层次综合将各所述子模块设计文件分别转换为子模块RTL代码;获取各所述子模块中的待连接接口各自对应的连接关系;基于所述连接关系和各所述子模块RTL代码,生成所述目标模块对应的目标模块RTL代码。本申请解决了现有技术大型集成电路设计的开发效率较低的技术问题。的技术问题。的技术问题。
技术研发人员:廖振雄 张鹏 武金彪 林昊 李英 都美江 姜宇程 王景生 胡亮
受保护的技术使用者:鹏城实验室
技术研发日:2023.05.25
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种双槽渡槽结构地震易损性分析方法 下一篇:内容展示方法及装置与流程
