CN110209387B - 一种顶层hdl文件生成方法和装置、计算机可读存储介质 - Google Patents
一种顶层hdl文件生成方法和装置、计算机可读存储介质 Download PDFInfo
- Publication number
- CN110209387B CN110209387B CN201910447812.3A CN201910447812A CN110209387B CN 110209387 B CN110209387 B CN 110209387B CN 201910447812 A CN201910447812 A CN 201910447812A CN 110209387 B CN110209387 B CN 110209387B
- Authority
- CN
- China
- Prior art keywords
- module
- information
- file
- text
- hdl
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种顶层硬件描述语言HDL文件生成方法和装置、计算机可读存储介质,所述方法包括获取文件清单,所述文件清单包括多个文件及各个文件对应的模块的层次信息,所述层次信息为顶层模块或子模块;读取各个文件对应的HDL程序代码,根据HDL程序代码提取模块信息,将提取的模块信息转化成可扩展标记语言文本配置文件;响应于用户的第一操作,在所述文本配置文件中添加模块整合信息;解析所述文本配置文件,根据解析到的模块信息和模块整合信息生成顶层HDL文件。本申请能够使得模块整合过程充分地自动化,减少了开发人员模块整合过程的工作量。
Description
技术领域
本申请涉及但不限于计算机技术领域,尤其涉及一种顶层HDL文件生成方法和装置、计算机可读存储介质。
背景技术
在开发过程中,常常会因为底层Verilog/SystemVerilog代码(Verilog与SystemVerilog均为硬件描述语言,用于描述硬件的逻辑、结构和层次)的修改而需要对顶层代码进行多处改动;在系统模块整合时,还需要编写顶层模块的Verilog/SystemVerilog代码。对于复杂系统,编写和排版顶层Verilog/SystemVerilog代码的工作量非常大,这个过程非常繁琐。由于可扩展标记语言(Extensible Markup Language,XML)文件非常容易地能被脚本处理,现有技术中会利用XML编写配置文件,再利用编写的配置文件和脚本生成Verilog/SystemVerilog代码,这样就可以快速地生成正确、整齐、风格一致的代码。
但是,利用XML生成Verilog/SystemVerilog代码的前提是编写文本配置文件的工作量要小于直接编写Verilog/SystemVerilog代码的工作量,并且需要生成的Verilog/SystemVerilog代码内容相对固定,不需要过多人工干预。由于XML设计的初衷是用于方便地存储和传输数据,模块整合的顶层Verilog/SystemVerilog代码虽然相对固定,但包含大量的连接和层次信息,此时,编写XML文件的工作量很可能大于直接编写Verilog/SystemVerilog代码工作量,因此,通过编写XML文件来生成模块整合的顶层Verilog/SystemVerilog代码就显得得不偿失。
现有的模块整合通常采取直接工程师编写顶层模块Verilog/SystemVerilog代码方案来实现。采取直接编写顶层模块的Verilog/SystemVerilog代码的缺点是工作量大而且容易出错。
发明内容
本申请提供了一种顶层HDL文件生成方法和装置、计算机可读存储介质,能够使模块整合过程充分地自动化,减少开发人员模块整合过程的工作量。
本发明实施例提供了一种顶层硬件描述语言HDL文件生成方法,包括:
获取文件清单,所述文件清单包括多个文件及各个文件对应的模块的层次信息,所述层次信息为顶层模块或子模块;
读取各个文件对应的HDL程序代码,根据HDL程序代码提取模块信息,将提取的模块信息转化成文本配置文件;
响应于用户的第一操作,在所述文本配置文件中添加模块整合信息;
解析所述文本配置文件,根据解析到的模块信息和模块整合信息生成顶层HDL文件。
在一种示例性实施例中,所述模块信息包括模块名、参数定义及默认值、端口信息,所述端口信息包括端口名及其方向、位宽、组数。
在一种示例性实施例中,所述文本配置文件的格式为可扩展标记语言XML、超文本标记语言HTML、文本文档TXT或数字音频带DAT格式。
在一种示例性实施例中,所述将提取的模块信息转化成文本配置文件,包括:
将所述提取的模块信息按对应的层次结构存入哈希表中;
创建所述文本配置文件,并在所述文本配置文件中打印首行声明;
提取哈希表中的所述顶层模块的模块信息,将所述顶层模块的模块信息转化成第一文本,并将第一文本打印到所述文本配置文件中的首行声明之后;
提取哈希表中的所述子模块的模块信息,将所述子模块的模块信息转化成第二文本,并将第二文本打印到所述文本配置文件中的所述顶层模块的模块信息之后。
在一种示例性实施例中,在所述文本配置文件中添加模块整合信息,包括以下至少之一:
确认或修改所述顶层模块的模块信息;
确认所述子模块的例化份数;
确认或修改所述子模块的模块信息;
添加模块连接关系。
在一种示例性实施例中,所述解析所述文本配置文件,包括:
读取所述文本配置文件中的一行文本内容;
对所述文本内容进行预处理,所述预处理包括删除文本行首末空白符、多余空白符、注释内容;
将预处理后的文本内容存入文本容器;
判断所述文本容器中是否包含完整的模块描述信息,所述模块描述信息包括所述模块信息和所述模块整合信息,若是,则提取模块描述信息并存入哈希表中;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程;
清空文本容器,并检测是否读取至所述文本配置文件的最后一行文本内容,若是,则所述文本配置文件解析完成;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程。
在一种示例性实施例中,所述根据解析到的模块信息和模块整合信息生成顶层HDL文件,包括:
创建所述顶层HDL文件;
提取所述哈希表中的顶层模块的模块描述信息;
根据提取的所述模块描述信息和所述顶层HDL文件的语法要求,在所述顶层HDL文件中打印模块声明、参数定义及默认值、端口信息、线网声明、一个或多个模块实例以及模块描述结束定界符。
在一种示例性实施例中,在所述获取文件清单的步骤之前,所述方法还包括:
响应于用户的第二操作,生成所述文件清单,所述文件清单的一行用于标识一个所述文件,每个所述文件包括文件路径、文件名、所述文件对应的模块的层次信息。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的顶层HDL文件生成方法的步骤。
本发明实施例还提供了一种顶层HDL文件生成装置,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如以上任一项所述的顶层HDL文件生成方法的步骤。
与相关技术相比,本申请的顶层HDL文件生成方法和装置、计算机可读存储介质,通过根据文件清单中的各个文件对应的模块信息生成文本配置文件并在文本配置文件中添加模块整合信息,然后解析文本配置文件并生成顶层HDL文件,使得模块整合过程充分地自动化,减少了开发人员模块整合过程的工作量。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书、权利要求书以及附图中所描述的方案来实现和获得。
附图说明
附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。
图1为本发明实施例的一种顶层HDL文件生成方法的流程示意图;
图2为本发明实施例的将文件清单中的文件及其层次信息转化为文件句柄存储过程的流程示意图;
图3为本发明实施例的文件解析过程的流程示意图;
图4为本发明实施例的文本配置文件生成过程的流程示意图;
图5为本发明实施例的文本配置文件编辑过程的流程示意图;
图6为本发明实施例的文件配置文件解析过程的流程示意图;
图7为本发明实施例的生成顶层HDL文件的流程示意图。
具体实施方式
本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。
本申请包括并设想了与本领域普通技术人员已知的特征和元件的组合。本申请已经公开的实施例、特征和元件也可以与任何常规特征或元件组合,以形成由权利要求限定的独特的发明方案。任何实施例的任何特征或元件也可以与来自其它发明方案的特征或元件组合,以形成另一个由权利要求限定的独特的发明方案。因此,应当理解,在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。因此,除了根据所附权利要求及其等同替换所做的限制以外,实施例不受其它限制。此外,可以在所附权利要求的保护范围内进行各种修改和改变。
此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。因此,说明书中阐述的步骤的特定顺序不应被解释为对权利要求的限制。此外,针对该方法和/或过程的权利要求不应限于按照所写顺序执行它们的步骤,本领域技术人员可以容易地理解,这些顺序可以变化,并且仍然保持在本申请实施例的精神和范围内。
本申请的主流程包括:文件清单编写、文件清单解析、文件解析、文本配置文件生成、文本配置文件编辑、文本配置文件解析和顶层HDL文件生成。本申请首先需手工编写一个文件清单;其次,将文件清单交由脚本解析,脚本将文件清单转化为文件句柄存储;再次,将文件句柄依次打开并解析,提取各模块的模块描述信息;然后,将提取到的模块描述信息转化成文本配置文件;之后,需要手工编辑文本配置文件,添加模块整合信息;再后,运行脚本,解析编辑后的文本配置文件;最后,根据解析得到的配置信息生成顶层HDL文件。本申请利用了Perl等编程语言强大的文本处理能力和XML等文本格式良好的存储传输数据能力,将模块整合过程充分自动化。
本发明实施例提供了一种顶层HDL文件生成方法,包括如下步骤:
步骤101:获取文件清单,所述文件清单包括多个文件及各个文件对应的模块的层次信息,所述层次信息为顶层模块或子模块;
在一种示例性实施例中,所述HDL文件的格式包括但不限于Verilog、SystemVerilog、超高速集成电路硬件描述语言(Very-High-Speed Integrated CircuitHardware Description Language,VHDL)等硬件描述语言。
所述步骤101可以由Perl、Java、C++、Python等编程语言实现。
在一种示例性实施例中,在所述获取文件清单的步骤之前,所述方法还包括:
响应于用户的第二操作,生成所述文件清单,所述文件清单的一行用于标识一个所述文件,每个所述文件包括文件路径、文件名、所述文件对应的模块的层次信息。
在进行模块整合时,开发人员会得到一系列HDL程序代码(可以为Verilog程序代码、SystemVerilog程序代码或者VHDL程序代码等)。本申请首先需要开发人员编写一个文件清单来确定待集成的子模块。编写的文件清单要求每行表示一个文件,并且必须包含完整的路径和文件名。文件清单可以在文件名后添加‘-top’,表征该文件为顶层模块的描述文件;也可使用行注释符‘//’对文件进行注释说明。
在一种示例性实施例中,在所述步骤101之后,所述方法还包括:将所述文件及其层次信息转化为文件句柄存储。
如图2所示,在一种示例性实施例中,所述将所述文件及其层次信息转化为文件句柄存储,具体包括:
1011)打开编写好的文件清单,读取文件清单的一行内容;
1012)对这一行内容进行预处理:包括删除注释,删除前后空白符等操作;
1013)提取该行内容对应的文件的层次信息,若文件名后包含‘-top’字符,则表征该文件为顶层描述文件,若不包含,则为子模块描述文件;
1014)将该文件句柄存储到一个数组中,并记录文件所属的层次;
1015)重复上述流程直到文件清单中所有的文件都转化为文件句柄存储在所述数组中。
步骤102:读取各个文件对应的HDL程序代码,根据HDL程序代码提取模块信息,将提取的模块信息转化成文本配置文件;
所述步骤102可以由Perl、Java、C++、Python等编程语言实现。
在一种示例性实施例中,所述文本配置文件的格式包括但不限于XML、超文本标记语言(Hyper Text Markup Language,HTML)、文本文档TXT、数字音频带(Digital AudioTape,DAT)等格式。
在一种示例性实施例中,所述模块信息包括模块名、参数定义及默认值、端口信息,所述端口信息包括端口名及其方向、位宽、组数。
在一种示例性实施例中,在所述根据HDL程序代码提取模块信息的步骤之后且在所述将提取的模块信息转化成文本配置文件的步骤之前,所述方法还包括:
根据HDL语法要求,编写对应的正则表达式,以支持不同的描述风格。
描述风格:HDL语法对同一功能(对于本申请,尤指模块端口声明)可能存在多种描述方式,不同设计者编码风格不一致,需要考虑所有情况。因此需要编写多个正则表达式来匹配各种编码风格的文本,也可以在设计阶段对编码风格加以限制,从而减少后期工作量。
正则表达式(Regular Expression)用于描述具有某种特征模式(Pattern)的字符串;Perl是众多语言中对正则表达式的支持最为强大和专业的。这是本申请选择Perl作为文本处理工具的主要原因,所有对HDL和XML文件的处理都是通过Perl完成的。
如图3所示,所述读取各个文件对应的HDL程序代码,根据HDL程序代码提取模块信息,具体包括:
1021)打开文件句柄,读取一个文件,并得到该文件所属的层次信息;
1022)读取该文件的一行HDL程序代码;
1023)对该行HDL程序代码进行预处理,包括删除行注释、删除首末空白字符、删除无关代码、提取宏定义信息等;
1024)将预处理后的HDL程序代码存入代码容器中;
代码容器即经过预处理的有效代码文本(字符串形式)的临时存储空间,可以是(Perl中的)列表或数组,其中每个元素存储完整的一行HDL语句(以字符串形式)。列表和数组可以包含任意多个元素(直到没有可用的内存),因此对代码长度没有限制。
1025)判断代码容器中是否包含完整的HDL语句,如果是,则执行1026);否则跳转至1022)读取下一行HDL程序代码;
1026)从HDL程序代码中依次提取模块名、参数定义和端口信息,根据HDL的语法要求,编写对应的正则表达式,以支持不同的描述风格;
1027)将上述提取到的各信息按对应的层次结构存入哈希表中,包括模块名及其所属层次,参数名及其默认值,端口名及其方向、位宽、组数;
1028)提取完成后,程序将清空代码容器,并判断当前是否为最后一行HDL程序代码。若是,则完成一个文件解析;否则跳转至1022)继续执行,直至当前文件解析完成。
当程序完成一个文件的解析后,将判断是否为最后一个文件,若是,则进行下一步(将提取的模块信息转化成文本配置文件);否则进行下一个文件解析,直至文件句柄数组中所对应的所有文件解析完成。
在一种示例性实施例中,所述将提取的模块信息转化成文本配置文件,包括:
将所述提取的模块信息按对应的层次结构存入哈希表中;
创建所述文本配置文件,并在所述文本配置文件中打印首行声明;
提取哈希表中的所述顶层模块的模块信息,将所述顶层模块的模块信息转化成第一文本,并将第一文本打印到所述文本配置文件中的首行声明之后;
提取哈希表中的所述子模块的模块信息,将所述子模块的模块信息转化成第二文本,并将第二文本打印到所述文本配置文件中的所述顶层模块的模块信息之后。
文本配置文件生成的步骤可以由Perl、Java、C++、Python等编程语言实现。如图4所示,在一种示例性实施例中,所述将提取的模块信息转化成文本配置文件,具体包括:
1029)创建XML配置文件,打印XML配置文件首行声明并修改文件名和后缀;
10210)打印顶层模块的模块描述信息:程序提取所述哈希表中的顶层模块的模块描述信息,将顶层模块的模块描述信息转化成XML格式文本,并打印到1029)创建的XML配置文件中;
10211)打印子模块的模块描述信息:程序提取所述哈希表中的子模块的模块描述信息,将子模块的模块描述信息转化为XML格式文本,添加到10210)得到的文本之后。
至此,通过脚本自动完成文件清单到文本配置文件的转化。
步骤103:响应于用户的第一操作,在所述文本配置文件中添加模块整合信息;
在一种示例性实施例中,在所述文本配置文件中添加模块整合信息,包括以下至少之一:
确认或修改所述顶层模块的模块信息;
确认所述子模块的例化份数;
确认或修改所述子模块的模块信息;
添加模块连接关系。
所述步骤103可通过开发者手工完成。开发者使用文本编辑器打开文本配置文件,文本配置文件中已经包含经由步骤102自动提取得到的各模块信息。开发者需确认、修改、按照模板格式添加必要信息。
如图5所示,在一种示例性实施例中,所述步骤103具体包括:
1031)确认或修改顶层模块描述的各参数:包括顶层模块名、参数定义名及默认定义值、顶层模块接口名、方向、位宽和组数等;
1032)确认子模块的例化份数及其各参数:对于两份及两份以上的例化,需要首先复制对应子模块的模块描述信息的文本内容,然后依次修改例化名和传递参数值,并确认子模块输入输出端口名、位宽等;对于单份例化,直接修改和确认模板信息即可;
1033)添加模块连接关系:开发者只需要将模板中的各输出端口名填入对应的输入端口以建立两者连接关系。
至此,本申请完成了顶层HDL文件生成所需要的所有信息传递,剩余过程可通过程序自动完成。
步骤104:解析所述文本配置文件,根据解析到的模块信息和模块整合信息生成顶层HDL文件。
在一种示例性实施例中,所述解析所述文本配置文件,包括:
读取所述文本配置文件中的一行文本内容;
对所述文本内容进行预处理,所述预处理包括删除文本行首末空白符、多余空白符、注释内容;
将预处理后的文本内容存入文本容器;
判断所述文本容器中是否包含完整的模块描述信息,所述模块描述信息包括所述模块信息和所述模块整合信息,若是,则提取模块描述信息并存入哈希表中;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程;
清空文本容器,并检测是否读取至所述文本配置文件的最后一行文本内容,若是,则所述文本配置文件解析完成;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程。
所述解析所述文本配置文件的步骤可以由Perl、Java、C++、Python等编程语言实现。如图6所示,在一种示例性实施例中,所述解析所述文本配置文件包括:
1041)读取一行文本内容;
1042)对该行文本内容进行预处理,删除文本行首末空白符和多余空白符等操作;
1043)将预处理后的文本内容存入文本容器中;
1044)删除文本容器中的注释内容和无关描述;
1045)判断文本容器中是否包含完整的模块描述信息,若是,则提取模块信息存入哈希表中;否则跳转至1041)中;
1046)清空文本容器,然后判断当前读取的文本内容是否是最后一行文本内容,若是,则文本配置文件解析完成;否则跳转回1041)中。
在一种示例性实施例中,所述根据解析到的模块信息和模块整合信息生成顶层HDL文件,包括:
创建所述顶层HDL文件;
提取所述哈希表中的顶层模块的模块描述信息;
根据提取的所述模块描述信息和所述顶层HDL文件的语法要求,在所述顶层HDL文件中打印模块声明、参数定义及默认值、端口信息、线网声明、一个或多个模块实例以及模块描述结束定界符。
所述根据解析到的模块信息和模块整合信息生成顶层HDL文件的步骤可以由Perl、Java、C++、Python等编程语言实现。如图7所示,在一种示例性实施例中,所述根据解析到的模块信息和模块整合信息生成顶层HDL文件包括:
1047)创建顶层HDL文件,修改文件名和后缀,打开文件句柄;
1048)提取哈希表中的顶层模块描述信息,根据HDL语法要求打印模块声明;
1049)打印参数定义及默认值;
10410)打印端口声明,包括:端口名称、方向、位宽和组数等信息;
10411)打印模块中使用的线网声明;
10412)打印模块实例,包括:模块名、例化名、参数名及传递值、输入输出端口名及对应的连接端口名等;
10413)判断当前是否为最后一个模块实例,若是,则打印相应HDL代码模块描述结束定界符,完成顶层HDL文件的生成;否则跳转到10412)中,直至完成最后一个模块实例的打印。
至此,完成了顶层HDL文件的生成。整个方法中,人工工作量只有文件清单编写和文本配置文件编辑,其余流程均可由程序自动化实现。本申请高度地将模块整合过程自动化,简化了开发人员工作量,提升了开发效率。
本申请将模块整合过程高度程序化,将模块层次信息利用编写文件清单的方式向程序传递,将建立模块连接关系的过程用编辑文本配置文件的形式完成,利用文本配置文件和程序良好的数据传递特性,高效的完成模块整合顶层HDL文件的生成。
本申请通过编写文件清单方式,利用脚本自动解析子模块的HDL程序代码,以生成包含模块整合信息的文本配置文件。
本申请通过编辑自动生成的文本配置文件的方式,完成模块整合信息的定义。
本申请通过高度程序化,将模块整合的人工工作量简化为文件清单编写和文本配置文件编辑两个过程。
由于本申请采用脚本自动提取HDL程序代码,生成文本配置文件,然后编辑文本配置文件,而非手动直接编写文本配置文件,与直接编写文本配置文件生成顶层Verilog/SystemVerilog代码的方法相比,本申请更加简单和高效。本申请简化了由子模块的模块描述信息得到顶层模块的模块描述信息的顶层HDL文件的生成过程。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如以上任一项所述的顶层HDL文件生成方法的步骤。
本发明实施例还提供了一种顶层HDL文件生成装置,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如以上任一项所述的顶层HDL文件生成方法的步骤。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (8)
1.一种顶层硬件描述语言HDL文件生成方法,其特征在于,包括:
获取文件清单,所述文件清单包括多个文件及各个文件对应的模块的层次信息,所述层次信息为顶层模块或子模块;
读取各个文件对应的HDL程序代码,根据HDL程序代码提取模块信息,将提取的模块信息转化成文本配置文件;
响应于用户的第一操作,在所述文本配置文件中添加模块整合信息;
解析所述文本配置文件,根据解析到的模块信息和模块整合信息生成顶层HDL文件;
其中,所述将提取的模块信息转化成文本配置文件,包括:将所述提取的模块信息按对应的层次结构存入哈希表中;创建所述文本配置文件,并在所述文本配置文件中打印首行声明;提取哈希表中的所述顶层模块的模块信息,将所述顶层模块的模块信息转化成第一文本,并将第一文本打印到所述文本配置文件中的首行声明之后;提取哈希表中的所述子模块的模块信息,将所述子模块的模块信息转化成第二文本,并将第二文本打印到所述文本配置文件中的所述顶层模块的模块信息之后;
其中,所述解析所述文本配置文件,包括:读取所述文本配置文件中的一行文本内容;对所述文本内容进行预处理,所述预处理包括删除文本行首末空白符、多余空白符、注释内容;将预处理后的文本内容存入文本容器;判断所述文本容器中是否包含完整的模块描述信息,所述模块描述信息包括所述模块信息和所述模块整合信息,若是,则提取模块描述信息并存入哈希表中;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程;清空文本容器,并检测是否读取至所述文本配置文件的最后一行文本内容,若是,则所述文本配置文件解析完成;若否,则继续读取所述文本配置文件中的下一行文本内容并循环所述预处理过程。
2.根据权利要求1所述的方法,其特征在于,所述模块信息包括模块名、参数定义及默认值、端口信息,所述端口信息包括端口名及其方向、位宽、组数。
3.根据权利要求1所述的方法,其特征在于,所述文本配置文件的格式为可扩展标记语言XML、超文本标记语言HTML、文本文档TXT或数字音频带DAT格式。
4.根据权利要求1所述的方法,其特征在于,在所述文本配置文件中添加模块整合信息,包括以下至少之一:
确认或修改所述顶层模块的模块信息;
确认所述子模块的例化份数;
确认或修改所述子模块的模块信息;
添加模块连接关系。
5.根据权利要求1所述的方法,其特征在于,所述根据解析到的模块信息和模块整合信息生成顶层HDL文件,包括:
创建所述顶层HDL文件;
提取所述哈希表中的顶层模块的模块描述信息;
根据提取的所述模块描述信息和所述顶层HDL文件的语法要求,在所述顶层HDL文件中打印模块声明、参数定义及默认值、端口信息、线网声明、一个或多个模块实例以及模块描述结束定界符。
6.根据权利要求1所述的方法,其特征在于,在所述获取文件清单的步骤之前,所述方法还包括:
响应于用户的第二操作,生成所述文件清单,所述文件清单的一行用于标识一个所述文件,每个所述文件包括文件路径、文件名、所述文件对应的模块的层次信息。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1至权利要求6中任一项所述的顶层硬件描述语言HDL文件生成方法的步骤。
8.一种顶层HDL文件生成装置,其特征在于,包括处理器及存储器,其中:所述处理器用于执行存储器中存储的程序,以实现如权利要求1至权利要求6中任一项所述的顶层硬件描述语言HDL文件生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447812.3A CN110209387B (zh) | 2019-05-27 | 2019-05-27 | 一种顶层hdl文件生成方法和装置、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910447812.3A CN110209387B (zh) | 2019-05-27 | 2019-05-27 | 一种顶层hdl文件生成方法和装置、计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110209387A CN110209387A (zh) | 2019-09-06 |
CN110209387B true CN110209387B (zh) | 2023-08-15 |
Family
ID=67788995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910447812.3A Active CN110209387B (zh) | 2019-05-27 | 2019-05-27 | 一种顶层hdl文件生成方法和装置、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110209387B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666730B (zh) * | 2020-05-22 | 2022-10-28 | 中国人民解放军国防科技大学 | 基于信号名哈希匹配的Verilog模块接口信号自动连接方法及系统 |
CN112364580A (zh) * | 2020-11-13 | 2021-02-12 | 上海兆芯集成电路有限公司 | 自动在寄存器传输级设计文件中插入特定代码的方法及装置 |
CN113138808B (zh) * | 2021-04-29 | 2023-08-08 | 上海阵量智能科技有限公司 | 一种集成方法、装置、计算机设备和存储介质 |
CN117709260B (zh) * | 2024-02-01 | 2024-05-14 | 北京开源芯片研究院 | 一种芯片设计方法、装置、电子设备及可读存储介质 |
CN117973288B (zh) * | 2024-04-01 | 2024-06-11 | 西安智多晶微电子有限公司 | 一种基于fpga dsp的滤波器ip生成系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7770147B1 (en) * | 2004-03-08 | 2010-08-03 | Adaptec, Inc. | Automatic generators for verilog programming |
CN108762764A (zh) * | 2018-06-05 | 2018-11-06 | 中国平安人寿保险股份有限公司 | 代码自动生成方法、装置、计算机设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020129341A1 (en) * | 2000-12-30 | 2002-09-12 | Gregory Hibdon | Selective expansion of high-level design language macros for automated design modification |
-
2019
- 2019-05-27 CN CN201910447812.3A patent/CN110209387B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7770147B1 (en) * | 2004-03-08 | 2010-08-03 | Adaptec, Inc. | Automatic generators for verilog programming |
CN108762764A (zh) * | 2018-06-05 | 2018-11-06 | 中国平安人寿保险股份有限公司 | 代码自动生成方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110209387A (zh) | 2019-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110209387B (zh) | 一种顶层hdl文件生成方法和装置、计算机可读存储介质 | |
US8219901B2 (en) | Method and device for filtering elements of a structured document on the basis of an expression | |
CN110442822A (zh) | 一种小程序内容展示方法、装置、设备及存储介质 | |
CN111913739B (zh) | 一种服务接口原语定义方法和系统 | |
JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
CN111309313A (zh) | 一种快速生成html以及存储表单数据的方法 | |
CN111241793A (zh) | 解析富文本编辑器内容给原生客户端渲染的方法、系统及介质 | |
CN111158687B (zh) | Java插件的界面生成方法、装置、计算机设备和存储介质 | |
CN111159995A (zh) | 一种模板化生成word文档的方法 | |
CN111124380A (zh) | 一种前端代码生成方法 | |
CN112363706A (zh) | 一种嵌套组合的预处理方法及设备 | |
CN109325217B (zh) | 一种文件转换方法、系统、装置及计算机可读存储介质 | |
CN115858336A (zh) | 测试向量生成方法及装置、计算设备和存储介质 | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
CN114791808A (zh) | 一种数据流图生成方法及装置 | |
US10656922B2 (en) | Systems and methods for providing an application transformation tool | |
CN112631604B (zh) | 一种前端框架实现方法及装置 | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
KR100762712B1 (ko) | 규칙기반의 전자문서 변환방법 및 그 시스템 | |
CN115796190B (zh) | 基于vue和webpack的前端国际化多语言转换方法及系统 | |
CN115758973A (zh) | 芯片寄存器设计文件的生成方法及装置、设备、存储介质 | |
CN109254774A (zh) | 软件开发系统中代码的管理方法和装置 | |
CN114625413A (zh) | 一种路由数据生成方法、装置、设备及存储介质 | |
CN113760291A (zh) | 日志输出的方法和装置 | |
CN116880826B (zh) | 一种可视化代码生成方法 |
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 |