CN113158613A - 一种将超图结构转rtl级hdl文件的方法及装置 - Google Patents
一种将超图结构转rtl级hdl文件的方法及装置 Download PDFInfo
- Publication number
- CN113158613A CN113158613A CN202110360258.2A CN202110360258A CN113158613A CN 113158613 A CN113158613 A CN 113158613A CN 202110360258 A CN202110360258 A CN 202110360258A CN 113158613 A CN113158613 A CN 113158613A
- Authority
- CN
- China
- Prior art keywords
- module
- syntax tree
- sub
- file
- hypergraph
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种将超图结构转RTL级HDL文件的方法及装置;该方法包括:获取原始RTL级HDL文件的总语法树结构、超图结构文件和超图分割结果;基于总语法树结构构建初始顶层模块;基于超图结构文件和超图分割结果,将子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;基于超图结构文件,以Map数据结构存储模块互联关系;基于模块互联关系,调整对应FPGA的内外端口,以使子语法树结构能够被例化为完整的FPGA;基于调整后的各个子语法树结构和初始顶层模块生成转换后的RTL级HDL文件。本发明可以将超图分割结果高效、准确地还原至HDL语言的RTL级设计。
Description
技术领域
本发明属于集成电路辅助设计领域,具体涉及一种将超图结构转RTL级HDL文件的方法及装置。
背景技术
现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种重要的半导体器件,可通过现场重新编程以实现用户所需的逻辑设计。当设计者使用FPGA进行前期设计逻辑验证时,若设计较为庞大,单个FPGA无法满足设计者的使用需求,则需要使用多颗FPGA构成平台来进行逻辑验证及仿真。因此,设计者需要将原始的设计进行分割,使得在不影响设计者原始设计的逻辑机构前提下,使用多颗FPGA对设计进行逻辑验证及仿真。
实现上述分割需求需要借助电子设计自动化(Electronic Design Automation,EDA)工具。具体的,设计者使用EDA工具将HDL(Hardware Description Language)语言所编写的RTL(Register Transfer Level,寄存器转换级电路)设计转换为超图结构;通过分割算法将超图分割后,得到分割后的超图结构。然后,将分割后的超图结构写回至HDL语言的RTL级设计。以使分割结果可以在多颗FPGA上运行。只有写回后的RTL级设计方可进行进一步的逻辑综合、布局布线、生成比特流并写入FPGA。由此可见,上述流程中最为关键的部分,主要体现将分割后的超图结构写回至HDL语言的RTL级设计,这一写回操作需要最大程度还原设计者的设计且保证逻辑一致。
现有技术中,将分割后的超图结构写回至HDL语言的RTL级设计有两种方式,一种是设计者基于分割的超图结构来手工构建HDL语言的RTL级设计;还有一种方式是先对原始的RTL级设计进行逻辑综合,输出网表(netlist)级别文件,然后对网表级文件进行逐级group操作,以此实现写回。
然而,手工写回的方式不仅费时费力,且容易产生错误;而通过逻辑综合输出网表的方式在写回过程中容易产生冗余结构,从而影响写回结果。虽然在得到写回的RTL级设计后,可以通过增加一些补救操作来纠正结果的正确性,但这样增加了写回操作的复杂性。因此,对于如何将超图分割结果高效、准确地还原至HDL语言的RTL级设计,现有技术中还没有切实可行的方案。
发明内容
为了解决现有技术中所存在的上述技术问题,本发明提供了一种将超图结构转RTL级HDL文件的方法及装置。
本发明要解决的技术问题通过以下技术方案实现:
第一方面,本发明提供了一种将超图结构转RTL级HDL文件的方法,包括:
获取原始RTL级HDL文件的总语法树结构,获取所述原始RTL级HDL文件经超图转换后的超图结构文件,并获取所述超图结构文件的超图分割结果;其中,所述超图分割结果包括:将所述原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,所述多个FPGA和所述多个子语法树结构一一对应;
基于所述总语法树结构构建初始顶层模块;
基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;其中,所述第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;所述第二目标模块为与所述超图结构文件中的时序逻辑模块对应的模块,所述第三目标模块为与所述超图结构文件中的组合逻辑模块对应的模块;
基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系;
基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA;
基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件
可选地,基于所述总语法树结构构建初始顶层模块,包括:
将所述总语法树结构中除原始顶层模块外的所有模块进行删除,并删除所述原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。
可选地,基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块,包括:
通过比对所述超图分割结果中的design.name,找出并删除每个所述子语法树结构中的第一目标模块;
基于所述超图分割结果和所述超图结构文件的模块对应关系,将每个所述子语法树结构中的第二目标模块删除,并将所述超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中;
基于所述模块对应关系,将每个所述子语法树结构中的第三目标模块删除,并将所述超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
可选地,基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系,包括:
基于所述超图结构文件,以Map数据结构存储关于各个所述子语法树结构的驱动模块和负载模块的模块互联关系。
可选地,基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,包括:
针对每个所述子语法树结构,响应于该子语法树结构的驱动模块被分配到对应的FPGA内、且负载模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部负载端口,并为该外部负载端口与该驱动模块之间的各级中间模块增设信号流出端口;
针对每个所述子语法树结构,响应于该子语法树结构的负载模块被分配到对应的FPGA内、且驱动模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部驱动端口,并为该外部驱动端口与该负载模块之间的各级中间模块增设信号流入端口。
可选地,基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件,包括:
对调整后的各个所述子语法树结构进行例化;
去除例化后的每个所述子语法树结构中的package模块,并利用Verific将剩余内容输出为HDL格式的文件,作为转换后的RTL级HDL文件的一部分;
从所述总语法树结构中获取所有package模块,并利用Verific将获取的所有package模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的又一部分;
利用Verific将所述初始顶层模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的最后一部分。
第二方面,本发明提供了一种将超图结构转RTL级HDL文件的装置,包括:
获取模块,用于获取原始RTL级HDL文件的总语法树结构,获取所述原始RTL级HDL文件经超图转换后的超图结构文件,并获取所述超图结构文件的超图分割结果;其中,所述超图分割结果包括:将所述原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,所述多个FPGA和所述多个子语法树结构一一对应;
顶层建模模块,用于基于所述总语法树结构构建初始顶层模块;
初步建模模块,用于基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;其中,所述第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;所述第二目标模块为与所述超图结构文件中的时序逻辑模块对应的模块,所述第三目标模块为与所述超图结构文件中的组合逻辑模块对应的模块;
Map数据结构存储模块,用于基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系;
FPGA建模模块,用于基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA;
HDL文件生成模块,用于基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件。
可选地,所述顶层建模模块,具体用于:
将所述总语法树结构中除原始顶层模块外的所有模块进行删除,并删除所述原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。
可选地,所述初步建模模块,具体用于:
通过比对所述超图分割结果中的design.name,找出并删除每个所述子语法树结构中的第一目标模块;
基于所述超图分割结果和所述超图结构文件的模块对应关系,将每个所述子语法树结构中的第二目标模块删除,并将所述超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中;
基于所述模块对应关系,将每个所述子语法树结构中的第三目标模块删除,并将所述超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
可选地,所述Map数据结构存储模块,具体用于:
基于所述超图结构文件,以Map数据结构存储关于各个所述子语法树结构的驱动模块和负载模块的模块互联关系。
可选地,所述FPGA建模模块,具体用于:
针对每个所述子语法树结构,响应于该子语法树结构的驱动模块被分配到对应的FPGA内、且负载模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部负载端口,并为该外部负载端口与该驱动模块之间的各级中间模块增设信号流出端口;
针对每个所述子语法树结构,响应于该子语法树结构的负载模块被分配到对应的FPGA内、且驱动模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部驱动端口,并为该外部驱动端口与该负载模块之间的各级中间模块增设信号流入端口。
可选地,所述HDL文件生成模块,具体用于:
对调整后的各个所述子语法树结构进行例化;
去除例化后的每个所述子语法树结构中的package模块,并利用Verific将剩余内容输出为HDL格式的文件,作为转换后的RTL级HDL文件的一部分;
从所述总语法树结构中获取所有package模块,并利用Verific将获取的所有package模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的又一部分;
利用Verific将所述初始顶层模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的最后一部分。
本发明提供的将超图结构转RTL级HDL文件的方法,通过原始RTL级HDL文件的语法树结构及超图结构所包含的互联关系,对原始设计进行模块拆分、冗余模块删减、模块建模、生成多FPGA以及模块互连关系重建等操作实现了一种快速写回HDL的方法。该方法中,无须进行逻辑综合操作,极大地减少了操作步骤和运算量级;并且,本发明可以最大程度的还原原始设计的结构及语法逻辑,不会产生新的冗余结构,不会影响原始设计逻辑,实现了将超图分割结果高效、准确地还原至HDL语言的RTL级设计。
以下将结合附图及对本发明做进一步详细说明。
附图说明
图1是本发明实施例提供的一种将超图结构转RTL级HDL文件的方法的流程图;
图2是本发明实施例中基于模块互联关系调整子语法树结构所对应FPGA的内外端口的示意图;
图3是本发明实施例提供的一种将超图结构转RTL级HDL文件的装置的结构图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
为了将超图分割结果高效、准确地还原至HDL语言的RTL级设计,本发明实施例提供了一种将超图结构转RTL级HDL文件的方法及装置。首先,对本发明实施例提供的将超图结构转RTL级HDL文件的方法进行说明。参见图1所示,该方法可以包括以下步骤:
S10:获取原始RTL级HDL文件的总语法树结构,获取原始RTL级HDL文件经超图转换后的超图结构文件,并获取超图结构文件的超图分割结果。
其中,所获取的超图结构文件包括:原始RTL级HDL文件中的模块的互联关系以及各个模块在原始RTL级HDL文件中的位置信息;所获取的超图分割结果包括:将原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,多个FPGA和多个子语法树结构一一对应。
在实际应用中,可利用verific将原始RTL级HDL文件读入内存生成总语法树结构。其中,verific是一款现有软件工具。另外,超图转换和超图分割的具体实现方式非本发明实施例的发明点,可利用已有相关工具和算法实现,本发明实施例不做赘述。
在实际应用中,超图转换前的总语法树结构中的模块称为Module,超图转换后的超图结构文件以及超图分割结果中的模块称为Node。
S20:基于总语法树结构构建初始顶层模块。
具体的,将总语法树结构中除原始顶层模块外的所有模块进行删除,并删除该原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。这里说的原始顶层模块指的是总语法树结构中的Top Module。在实际应用中,该步骤中可移除总语法树结构中全部的Instance以及除Top Module外的所有Module。其中,Instance指Instance Module,代表例化模块的含义。
S30:基于超图结构文件和超图分割结果,将子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块。
其中,第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;第二目标模块为与超图结构文件中的时序逻辑模块对应的模块,第三目标模块为与超图结构文件中的组合逻辑模块对应的模块。
该步骤S30可以具体包括下述的多个子步骤:
(1)通过比对超图分割结果中的design.name,找出并删除每个子语法树结构中的第一目标模块。
具体而言,通过比对超图分割结果中的design.name,找出不属于该子语法树结构对应的FPGA的模块node的层级位置,从而移除该node,被移除的node即是该子语法树结构中的第一目标模块。
(2)基于超图分割结果和超图结构文件的模块对应关系,将每个子语法树结构中的第二目标模块删除,并将超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中。
在实际应用中,通过超图分割结果的design.name以及做超图转换时生成的中间文件可以找出子语法树结构中与总语法树结构原有的时序逻辑模块相对应的模块;具体的,如果子语法树结构中有node为Assign/Always/Package/interface,则删除该node下的全部Assign/Always,再将总语法树结构中的对应的时序逻辑模块下的Assign/Always添加到该子语法树结构中。
(3)基于步骤(2)中所说的模块对应关系,将每个子语法树结构中的第三目标模块删除,并将超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
同理的,通过超图分割结果的design.name以及做超图转换时生成的中间文件可以找出子语法树结构中与总语法树结构原有的组合逻辑模块相对应的模块;具体的,如果子语法树结构中有node为Assign/Always/Package/interface,先删除该node下的全部Assign/Always,再将总语法树结构中的对应的组合逻辑模块下的Assign/Always添加到该子语法树结构中。
S40:基于超图结构文件,以Map数据结构存储各个子语法树结构的模块互联关系。
具体的,基于超图结构文件,以Map数据结构存储关于各个子语法树结构的驱动模块和负载模块的模块互联关系。这里,该模块互联关系可以用数据结构Map<s-node,l-node>来表示。其中,s-node代表驱动模块,l-node代表负载模块。
S50:基于模块互联关系,调整每个子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA。
可以理解的是,原来的总语法树结构对应一个大型的FPGA,而超图分割后的各个子语法树结构如果要分别作为单颗小型的FPGA,则原本属于大型的FPGA内部的互连关系需要适应地调整。为了方案布局清晰,后续对具体的调整方式进行详细说明。
S60:基于调整后的各个子语法树结构和初始顶层模块生成转换后的RTL级HDL文件。
具体的,该步骤S60可以包括下述的多个子步骤:
(1)对调整后的各个子语法树结构进行例化。
即将调整后的各个子语法树结构实例至Top.v。
(2)去除例化后的每个子语法树结构中的package模块,并利用Verific将剩余内容输出为HDL格式的文件,作为转换后的RTL级HDL文件的一部分。
具体的,去除例化后的每个子语法树结构中的package模块,并利用Verific将每个子语法树结构中的剩余内容Pretty_Print至本地。
(3)从总语法树结构中获取所有package模块,并利用Verific将获取的所有package模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的又一部分。
具体的,添加include信息至Top.v文件头部。
(4)利用Verific将初始顶层模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的最后一部分。
具体的,输出XML格式的FPGA互连文件。
可以理解的是,上述三个部分的HDL格式的文件即构成转换后的RTL级HDL文件。
本发明实施例提供的将超图结构转RTL级HDL文件的方法,通过原始RTL级HDL文件的语法树结构及超图结构所包含的互联关系,对原始设计进行模块拆分、冗余模块删减、模块建模、生成多FPGA以及模块互连关系重建等操作实现了一种快速写回HDL的方法。该方法中,无须进行逻辑综合操作,极大地减少了操作步骤和运算量级;并且,本发明实施例可以最大程度的还原原始设计的结构及语法逻辑,不会产生新的冗余结构,不会影响原始设计逻辑,实现了将超图分割结果高效、准确地还原至HDL语言的RTL级设计。
下面,对步骤S50中,基于模块互联关系,调整每个子语法树结构所对应FPGA的内外端口的具体实现方式进行说明,具体可以包括:
(1)针对每个子语法树结构,响应于该子语法树结构的驱动模块被分配到对应的FPGA内、且负载模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部负载端口,并为该外部负载端口与该驱动模块之间的各级中间模块增设信号流出端口;
(2)针对每个子语法树结构,响应于该子语法树结构的负载模块被分配到对应的FPGA内、且驱动模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部驱动端口,并为该外部驱动端口与该负载模块之间的各级中间模块增设信号流入端口。
举例而言,参见图2所示,假设FPGA1中的负载模块被分配到了FPGA2中,而驱动模块则位于该FPGA1内,那么,给FPGA1增设外部负载端口P1,并为该外部负载端口P1和该驱动模块之间的中间模块A增设信号流出端口P2,以及为中间模块a增设信号流出端口P3。
可以理解的是,上述的外部负载端口、外部驱动端口、信号流出端口以及信号流入端口各自具有特定的信号传输方向,从而可以确保最终转换后的单颗小型FPGA以及各个单个小型FPGA中的信号传输方向性与原始RTL级HDL文件保持一致。
在实际操作中,如果有子语法树结构的负载模块l-node被分配到了对应的FPGA外,则将该负载模块l-node的端口port提升至该FPGA的顶层,并将该l-node连接的s-node的port_out添加至该l-node的port_in。如果有子语法树结构的驱动模块s-node被分配到了对应的FPGA外,则将该驱动模块s-node的端口port提升至该FPGA的顶层,并将该s-node连接的l-node的port_in添加至该s-node的port_out。
相应于上述的将超图结构转RTL级HDL文件的方法,本发明实施例还提供了一种将超图结构转RTL级HDL文件的装置,该装置可以应用于电子设备中,在具体应用中,该电子设备可以是台式计算机、便携式计算机、智能移动终端、服务器等,在此不作限定,任何可以实现本发明的电子设备,均属于本发明的保护范围。
参见图3所示,该装置可以包括:
获取模块401,用于获取原始RTL级HDL文件的总语法树结构,获取原始RTL级HDL文件经超图转换后的超图结构文件,并获取超图结构文件的超图分割结果;其中,超图分割结果包括:将原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,多个FPGA和多个子语法树结构一一对应;
顶层建模模块402,用于基于总语法树结构构建初始顶层模块;
初步建模模块403,用于基于超图结构文件和超图分割结果,将子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;其中,第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;第二目标模块为与超图结构文件中的时序逻辑模块对应的模块,第三目标模块为与超图结构文件中的组合逻辑模块对应的模块;
Map数据结构存储模块404,用于基于超图结构文件,以Map数据结构存储各个子语法树结构的模块互联关系;
FPGA建模模块405,用于基于模块互联关系,调整每个子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA;
HDL文件生成模块406,用于基于调整后的各个子语法树结构和初始顶层模块生成转换后的RTL级HDL文件。
可选地,顶层建模模块402,具体用于:
将总语法树结构中除原始顶层模块外的所有模块进行删除,并删除原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。
可选地,初步建模模块403,具体用于:
通过比对超图分割结果中的design.name,找出并删除每个子语法树结构中的第一目标模块;
基于超图分割结果和超图结构文件的模块对应关系,将每个子语法树结构中的第二目标模块删除,并将超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中;
基于模块对应关系,将每个子语法树结构中的第三目标模块删除,并将超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
可选地,Map数据结构存储模块404,具体用于:
基于超图结构文件,以Map数据结构存储关于各个子语法树结构的驱动模块和负载模块的模块互联关系。
可选地,FPGA建模模块405,具体用于:
针对每个子语法树结构,响应于该子语法树结构的驱动模块被分配到对应的FPGA内、且负载模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部负载端口,并为该外部负载端口与该驱动模块之间的各级中间模块增设信号流出端口;
针对每个子语法树结构,响应于该子语法树结构的负载模块被分配到对应的FPGA内、且驱动模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部驱动端口,并为该外部驱动端口与该负载模块之间的各级中间模块增设信号流入端口。
可选地,HDL文件生成模块406,具体用于:
对调整后的各个子语法树结构进行例化;
去除例化后的每个子语法树结构中的package模块,并利用Verific将剩余内容输出为HDL格式的文件,作为转换后的RTL级HDL文件的一部分;
从总语法树结构中获取所有package模块,并利用Verific将获取的所有package模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的又一部分;
利用Verific将初始顶层模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的最后一部分。
本发明还提供了一种计算机可读存储介质。在该计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现上述任一种将超图结构转RTL级HDL文件的方法所述的方法步骤。
可选地,该计算机可读存储介质可以为非易失性存储器(Non-Volatile Memory,NVM),例如为至少一个磁盘存储器。
可选的,所述计算机可读存储器还可以是至少一个位于远离前述处理器的存储装置。
在本发明的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一种将超图结构转RTL级HDL文件的方法所述的方法步骤。
需要说明的是,对于装置/存储介质/计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。此外,本领域的技术人员可以将本说明书中描述的不同实施例或示例进行接合和组合。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。
本申请是参照本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种将超图结构转RTL级HDL文件的方法,其特征在于,包括:
获取原始RTL级HDL文件的总语法树结构,获取所述原始RTL级HDL文件经超图转换后的超图结构文件,并获取所述超图结构文件的超图分割结果;其中,所述超图分割结果包括:将所述原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,所述多个FPGA和所述多个子语法树结构一一对应;
基于所述总语法树结构构建初始顶层模块;
基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;其中,所述第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;所述第二目标模块为与所述超图结构文件中的时序逻辑模块对应的模块,所述第三目标模块为与所述超图结构文件中的组合逻辑模块对应的模块;
基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系;
基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA;
基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件。
2.根据权利要求1所述的方法,其特征在于,基于所述总语法树结构构建初始顶层模块,包括:
将所述总语法树结构中除原始顶层模块外的所有模块进行删除,并删除所述原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。
3.根据权利要求1所述的方法,其特征在于,基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块,包括:
通过比对所述超图分割结果中的design.name,找出并删除每个所述子语法树结构中的第一目标模块;
基于所述超图分割结果和所述超图结构文件的模块对应关系,将每个所述子语法树结构中的第二目标模块删除,并将所述超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中;
基于所述模块对应关系,将每个所述子语法树结构中的第三目标模块删除,并将所述超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
4.根据权利要求1所述的方法,其特征在于,基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系,包括:
基于所述超图结构文件,以Map数据结构存储关于各个所述子语法树结构的驱动模块和负载模块的模块互联关系。
5.根据权利要求4所述的方法,其特征在于,基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,包括:
针对每个所述子语法树结构,响应于该子语法树结构的驱动模块被分配到对应的FPGA内、且负载模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部负载端口,并为该外部负载端口与该驱动模块之间的各级中间模块增设信号流出端口;
针对每个所述子语法树结构,响应于该子语法树结构的负载模块被分配到对应的FPGA内、且驱动模块被分配到对应的FPGA外,在该子语法树结构中为对应的FPGA增设外部驱动端口,并为该外部驱动端口与该负载模块之间的各级中间模块增设信号流入端口。
6.根据权利要求4所述的方法,其特征在于,基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件,包括:
对调整后的各个所述子语法树结构进行例化;
去除例化后的每个所述子语法树结构中的package模块,并利用Verific将每个所述子语法树结构中的剩余内容输出为HDL格式的文件,作为转换后的RTL级HDL文件的一部分;
从所述总语法树结构中获取所有package模块,并利用Verific将获取的所有package模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的又一部分;
利用Verific将所述初始顶层模块输出为HDL格式的文件,作为转换后的RTL级HDL文件的最后一部分。
7.一种将超图结构转RTL级HDL文件的装置,其特征在于,包括:
获取模块,用于获取原始RTL级HDL文件的总语法树结构,获取所述原始RTL级HDL文件经超图转换后的超图结构文件,并获取所述超图结构文件的超图分割结果;其中,所述超图分割结果包括:将所述原始RTL级HDL文件中的各个模块分割至多个FPGA所得到多个子语法树结构;其中,所述多个FPGA和所述多个子语法树结构一一对应;
顶层建模模块,用于基于所述总语法树结构构建初始顶层模块;
初步建模模块,用于基于所述超图结构文件和所述超图分割结果,将所述子语法树结构中的第一目标模块进行删除、第二目标模块还原为时序逻辑模块、第三目标模块还原为组合逻辑模块;其中,所述第一目标模块为:位于子语法树结构中的、且不属于该子语法树结构对应的FPGA的模块;所述第二目标模块为与所述超图结构文件中的时序逻辑模块对应的模块,所述第三目标模块为与所述超图结构文件中的组合逻辑模块对应的模块;
Map数据结构存储模块,用于基于所述超图结构文件,以Map数据结构存储各个所述子语法树结构的模块互联关系;
FPGA建模模块,用于基于所述模块互联关系,调整每个所述子语法树结构所对应FPGA的内外端口,以使调整后的该子语法树结构能够被例化为完整的FPGA;
HDL文件生成模块,用于基于调整后的各个所述子语法树结构和所述初始顶层模块生成转换后的RTL级HDL文件。
8.根据权利要求7所述的装置,其特征在于,所述顶层建模模块,具体用于:
将所述总语法树结构中除原始顶层模块外的所有模块进行删除,并删除所述原始顶层模块内的所有信号和例化的模块,得到初始顶层模块。
9.根据权利要求7所述的装置,其特征在于,所述初步建模模块,具体用于:
通过比对所述超图分割结果中的design.name,找出并删除每个所述子语法树结构中的第一目标模块;
基于所述超图分割结果和所述超图结构文件的模块对应关系,将每个所述子语法树结构中的第二目标模块删除,并将所述超图结构文件中与该第二目标模块对应的时序逻辑模块添加到该子语法树结构中;
基于所述模块对应关系,将每个所述子语法树结构中的第三目标模块删除,并将所述超图结构文件中与该第三目标模块对应的组合逻辑模块添加到该子语法树结构中。
10.根据权利要求7所述的装置,其特征在于,所述Map数据结构存储模块,具体用于:
基于所述超图结构文件,以Map数据结构存储关于各个所述子语法树结构的驱动模块和负载模块的模块互联关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360258.2A CN113158613B (zh) | 2021-04-02 | 2021-04-02 | 一种将超图结构转rtl级hdl文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110360258.2A CN113158613B (zh) | 2021-04-02 | 2021-04-02 | 一种将超图结构转rtl级hdl文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113158613A true CN113158613A (zh) | 2021-07-23 |
CN113158613B CN113158613B (zh) | 2022-08-12 |
Family
ID=76886226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110360258.2A Active CN113158613B (zh) | 2021-04-02 | 2021-04-02 | 一种将超图结构转rtl级hdl文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113158613B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117313622A (zh) * | 2023-10-27 | 2023-12-29 | 深圳华芯盛软件科技有限公司 | 一种芯片设计中模块层次调整的方法、设备及介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149765A (zh) * | 2007-11-09 | 2008-03-26 | 北京航空航天大学 | 高可靠性数字集成电路设计方法 |
CN102693340A (zh) * | 2012-05-19 | 2012-09-26 | 孙凌宇 | 基于多水平划分法和赋权超图的大规模集成电路划分方法 |
CN103262081A (zh) * | 2010-10-18 | 2013-08-21 | 艾尔葛托奇普股份有限公司 | 用于驱动从架构优化到物理设计闭合的设计收敛的基于集成数据模型的框架 |
US20150020038A1 (en) * | 2013-07-10 | 2015-01-15 | Microsemi SoC Corporation | Method for Efficient FPGA Packing |
US20150331983A1 (en) * | 2014-05-13 | 2015-11-19 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for automatically generating a netlist of an fpga program |
CN106919769A (zh) * | 2017-03-15 | 2017-07-04 | 冷明 | 一种基于多层次方法和赋权超图的层次式fpga布局布线方法 |
US20180004862A1 (en) * | 2016-06-30 | 2018-01-04 | Synopsys, Inc. | Optimizing The Ordering Of The Inputs To Large Commutative-Associative Trees Of Logic Gates |
WO2018127557A1 (en) * | 2017-01-05 | 2018-07-12 | Koninklijke Philips N.V. | Compiling device and method |
CN109143952A (zh) * | 2018-06-13 | 2019-01-04 | 华东师范大学 | 可编程逻辑控制器编程语言转换系统 |
CN110612526A (zh) * | 2017-05-29 | 2019-12-24 | 富士通株式会社 | 系统c模型生成方法和系统c模型生成程序 |
CN112232010A (zh) * | 2020-12-21 | 2021-01-15 | 上海国微思尔芯技术股份有限公司 | 可编程逻辑器件分组方法和装置 |
CN112257369A (zh) * | 2020-12-21 | 2021-01-22 | 上海国微思尔芯技术股份有限公司 | 一种逻辑设计分割方法及系统 |
CN112269566A (zh) * | 2020-11-03 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 脚本生成处理方法、装置、设备及系统 |
-
2021
- 2021-04-02 CN CN202110360258.2A patent/CN113158613B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101149765A (zh) * | 2007-11-09 | 2008-03-26 | 北京航空航天大学 | 高可靠性数字集成电路设计方法 |
CN103262081A (zh) * | 2010-10-18 | 2013-08-21 | 艾尔葛托奇普股份有限公司 | 用于驱动从架构优化到物理设计闭合的设计收敛的基于集成数据模型的框架 |
CN102693340A (zh) * | 2012-05-19 | 2012-09-26 | 孙凌宇 | 基于多水平划分法和赋权超图的大规模集成电路划分方法 |
US20150020038A1 (en) * | 2013-07-10 | 2015-01-15 | Microsemi SoC Corporation | Method for Efficient FPGA Packing |
US20150331983A1 (en) * | 2014-05-13 | 2015-11-19 | Dspace Digital Signal Processing And Control Engineering Gmbh | Method for automatically generating a netlist of an fpga program |
US20180004862A1 (en) * | 2016-06-30 | 2018-01-04 | Synopsys, Inc. | Optimizing The Ordering Of The Inputs To Large Commutative-Associative Trees Of Logic Gates |
WO2018127557A1 (en) * | 2017-01-05 | 2018-07-12 | Koninklijke Philips N.V. | Compiling device and method |
CN106919769A (zh) * | 2017-03-15 | 2017-07-04 | 冷明 | 一种基于多层次方法和赋权超图的层次式fpga布局布线方法 |
CN110612526A (zh) * | 2017-05-29 | 2019-12-24 | 富士通株式会社 | 系统c模型生成方法和系统c模型生成程序 |
CN109143952A (zh) * | 2018-06-13 | 2019-01-04 | 华东师范大学 | 可编程逻辑控制器编程语言转换系统 |
CN112269566A (zh) * | 2020-11-03 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 脚本生成处理方法、装置、设备及系统 |
CN112232010A (zh) * | 2020-12-21 | 2021-01-15 | 上海国微思尔芯技术股份有限公司 | 可编程逻辑器件分组方法和装置 |
CN112257369A (zh) * | 2020-12-21 | 2021-01-22 | 上海国微思尔芯技术股份有限公司 | 一种逻辑设计分割方法及系统 |
Non-Patent Citations (3)
Title |
---|
T.FRANGIEH等: ""PATIS: Using partial configuration to improve static FPGA design productivity"", 《2010 IEEE INTERNATIONAL SYMPOSIUM ON PARALLEL & DISTRIBUTED PROCESSING》 * |
U.FAROOQ等: ""FPGA Architectures: An Overview"", 《TREE-BASED HETEROGENEOUS FPGA ARCHITECTURES》 * |
WANG L.等: ""Development of Hypergraph Theory"", 《JOURNAL OF COMPUTER AND SYSTEMS SCIENCES》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117313622A (zh) * | 2023-10-27 | 2023-12-29 | 深圳华芯盛软件科技有限公司 | 一种芯片设计中模块层次调整的方法、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113158613B (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7788625B1 (en) | Method and apparatus for precharacterizing systems for use in system level design of integrated circuits | |
US6530073B2 (en) | RTL annotation tool for layout induced netlist changes | |
US7124071B2 (en) | Partitioning a model into a plurality of independent partitions to be processed within a distributed environment | |
US7111269B2 (en) | Comparison of two hierarchical netlist to generate change orders for updating an integrated circuit layout | |
US7360180B2 (en) | Computer program product, method, and system for hardware model conversion | |
US9864828B1 (en) | Hardware acceleration device handoff for using programmable integrated circuits as hardware accelerators | |
US8397190B2 (en) | Method for manipulating and repartitioning a hierarchical integrated circuit design | |
US10621299B1 (en) | Dynamic platform support in programmable integrated circuits | |
CN108140067B (zh) | 用于电路设计优化的方法和系统 | |
TW202205128A (zh) | 針對具有嵌入式邏輯的多位元記憶體的系統與方法 | |
US8769450B1 (en) | Synthesis flow for formal verification | |
US9588791B2 (en) | Flexible physical function and virtual function mapping | |
CN109902318B (zh) | 生成标准延时格式文件的方法和装置 | |
CN113158613B (zh) | 一种将超图结构转rtl级hdl文件的方法及装置 | |
US10706193B1 (en) | Computer processing during simulation of a circuit design | |
US8782587B2 (en) | Systems and methods for generating a higher level description of a circuit design based on connectivity strengths | |
CN112861455B (zh) | Fpga建模验证系统及方法 | |
US11023646B2 (en) | Hierarchical clock tree construction based on constraints | |
CN112818616A (zh) | 管脚命名方法、寄存器激励源添加方法及电子装置 | |
US7742909B2 (en) | Reconstruction of data from simulation models | |
JPH07287051A (ja) | 論理シミュレータ用入力データ作成装置 | |
CN117933169A (zh) | 芯片设计文件生成方法、装置、系统及相关设备 | |
US8015516B2 (en) | System and method for creating a logical representation of a functional logic system from a physical representation | |
US11334702B1 (en) | Mixed-signal simulation for complex design topologies | |
JP2002032427A (ja) | Lsiの接続検証装置、接続検証方法および接続検証プログラムを記録した媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Room 27, 6th Floor, No. 29 and 30, Lane 1775, Qiushan Road, Lingang New Area, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Patentee after: Shanghai Sierxin Technology Co.,Ltd. Address before: Room 3332, No.26 Guoding Branch Road, Yangpu District, Shanghai 200082 Patentee before: Shanghai Guowei silcore Technology Co.,Ltd. |