CN112989731B - 一种基于抽象语法树的集成电路建模获取方法及系统 - Google Patents
一种基于抽象语法树的集成电路建模获取方法及系统 Download PDFInfo
- Publication number
- CN112989731B CN112989731B CN202110300020.0A CN202110300020A CN112989731B CN 112989731 B CN112989731 B CN 112989731B CN 202110300020 A CN202110300020 A CN 202110300020A CN 112989731 B CN112989731 B CN 112989731B
- Authority
- CN
- China
- Prior art keywords
- node
- syntax tree
- abstract syntax
- file
- type
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/31—Design entry, e.g. editors specifically adapted for circuit design
-
- 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
本发明公开了一种基于抽象语法树的集成电路建模获取方法及系统,属于集成电路设计技术领域。包括:获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;分析数据结构以获取分析结果,并将分析结果导出为TXT文件。由于抽象语法树不依赖于具体的文法,不依赖于语言的细节,将源代码转化为抽象语法树后,可以对抽象语法树做很多的操作,进而可以提高超大规模集成电路建模设计的灵活性及效率。
Description
技术领域
本发明属于集成电路设计技术领域,更具体地,涉及一种基于抽象语法树的集成电路建模设计方法及系统。
背景技术
超大规模集成电路一般指现场可编程逻辑门阵列,系统级芯片以及大容量静态随机存取存储器等集成度相对较高的集成电路。随着其规模越来越大,层次化、模块化设计已经成为主流。Verilog HDL是电路设计中常用的语言之一,它是以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。在进行设计、编码的过程中,各设计层次、各模块单元以及各类型端口的使用情况都是十分重要的信息,从而需要经常统计,并以此来分析设计状态、衡量电路规模大小以及指导后续设计与优化工作。基于单一的VHDL文件在分析电路的设计状态时,目前还存在不够高效的问题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于抽象语法树的集成电路建模获取方法及系统,其目的在于,解决现有集成电路设计由于基于单一的VHDL文件以分析电路的设计状态,而造成建模获取或设计不够高效的技术问题。
为实现上述目的,按照本发明的第一个方面,提供了一种基于抽象语法树的集成电路建模获取方法,包括以下步骤:
获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;
遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;
分析数据结构以获取分析结果,并将分析结果导出为TXT文件。
优选地,Verilog HDL源代码工程文件用于表示如下三项内容中的至少一项内容,三项内容分别为逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能。
优选地,将.v文件解析为抽象语法树这一过程进一步包括:
在Linux环境下,下载、安装并配置开源工具Slang;
将.v文件传入至配置好的Slang工具环境中,对.v文件进行解析,以得到抽象语法树。
优选地,抽象语法树至少包括Verilog HDL源代码的端口信息、连线信息、模块信息、实例化单元信息及层次结构信息。
优选地,该方法进一步包括遍历符合标准json格式的文件之前的如下步骤:
若.json文件不符合json文件的标准格式,则遍历.json文件并进行预处理,以得到符合标准json格式的文件。
优选地,数据信息至少包括抽象语法树中每一类型节点的节点信息;相应地,分析数据结构以获取分析结果这一过程进一步包括:
根据抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重,节点信息至少包括节点对应的端口位宽及节点类型;
根据每一类型节点在抽象语法树中所属实例,对所属实例下各个节点的权值进行求和,以归并至所属实例中,并获取所属实例的权重数据以及对应的层级结构,作为分析结果。
优选地,根据抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重这一过程进一步包括:
对于.json文件中存在的IntegerLiteral、RealLiteral以及StringLiteral类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成常数D触发器,以计算每一类型节点的权重;
对于.json文件中存在的UnaryOp及BinaryOp类型的节点,则按照节点对应表达式的类别及变量的位宽方式,计算每一类型节点的权重;
对于.json文件中存在的ConditionalOp、Conditional及Case类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成多路选择器,以计算每一类型节点的权重;
对于.json文件中存在的ForLoop类型的节点,则按照节点对应的循环次数进行加权,以得到每一类型节点的权重;
对于.json文件中存在的ElementSelect及RangeSelect类型的节点,若节点的选择项为变量类型,则将选择项转换成移位器,以计算每一类型节点的权重。
优选地,数据信息至少包括抽象语法树中模块单元的实例化调用关系;相应地,分析数据结构以获取分析结果这一过程进一步包括:
对于抽象语法树中的任一实例,根据实例化调用关系,获取如下两种实例以及如下两种实例之间的层级结构关系,以作为分析结果,如下两种实例分别为调用该实例的实例与被该实例调用的实例。
优选地,数据信息至少包括抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息;相应地,分析数据结构以获取分析结果这一过程进一步包括:
将大规模集成电路的电路设计图与抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息进行一一对应,以获取抽象语法树中实例与其它实例之间端口相连的相关信息,并作为分析结果。
按照本发明的第二个方面,提供了一种基于抽象语法树的集成电路建模获取系统,包括:
第一模块,用于获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
第二模块,用于将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;
第三模块,用于遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;
第四模块,用于分析数据结构以获取分析结果,并将分析结果导出为TXT文件。
本发明实施例提供的基于抽象语法树的集成电路建模获取方法及系统,通过本发明所构思的以上技术方案与现有技术相比,能够取得如下有益效果:
(1)由于抽象语法树是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,且抽象语法树不依赖于具体的文法,不依赖于语言的细节,将源代码转化为抽象语法树后,可以对抽象语法树做很多的操作,进而可以提高超大规模集成电路建模设计的灵活性及效率。
(2)由于基于抽象语法树进行建模,可以将Verilog HDL源代码进行解析简化,从而可在保证分析出电路的设计状态前提下,能够满足一次性载入大规模的Verilog HDL源代码文件,并可一次性完成获取所有模块的各项信息,进而能够提高方法流程的兼容性。
(3)由于基于抽象语法树进行建模,由于可以将Verilog HDL源代码解析为树状层级结构,以便于分析电路的设计状态、衡量电路规模大小以及指导后续的设计与优化工作。
(4)由于最终可以用TXT形式的文件输出,从而有利于可视化以及后续基于TXT文件作进一步内容拓展,进而能够有效指导后续的设计与优化工作。
附图说明
图1是本发明实施例提供的一种基于抽象语法树的集成电路建模获取方法的流程示意图;
图2是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图3是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图4是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图5(a)是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图5(b)是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图5(c)是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图5(d)是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图6是本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图7为本发明实施例提供的一种抽象语法树中不同部分的结构示意图;
图8为本发明实施例提供的一种超大规模集成电路的实例instance模型的结构示意图;
图9为本发明实施例提供的一种权重计算的流程示意图;
图10为本发明实施例提供的一种经过权重计算之后每个instance的自重示意图;
图11为本发明实施例提供的一种基于抽象语法树的超大规模集成电路建模的获取方法流程示意图;
图12为本发明实施例提供的一种基于抽象语法树的集成电路建模获取系统的结构示意图;
图13为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
超大规模集成电路一般指现场可编程逻辑门阵列,系统级芯片以及大容量静态随机存取存储器等集成度相对较高的集成电路。随着其规模越来越大,层次化、模块化设计已经成为主流。Verilog HDL是电路设计中常用的语言之一,它是以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。在进行设计、编码的过程中,各设计层次、各模块单元以及各类型端口的使用情况都是十分重要的信息,从而需要经常统计,并以此来分析设计状态、衡量电路规模大小以及指导后续设计与优化工作。由于需要统计的内容众多,从而基于单一的VHDL文件在分析电路的设计状态时,目前还存在不够高效的问题。
基于上述存在的问题,本发明实施例提供了一种基于抽象语法树的集成电路建模获取方法。如图1所示,该方法包括:
101、获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
102、将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;
103、遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;
104、分析数据结构以获取分析结果,并将分析结果导出为TXT文件。
对于上述步骤101,在大规模集成电路的设计中,项目文件通常包含很多类型的文件,其中,.v文件是使用硬件描述语言Verilog HDL编写的文件,需要先将这些.v文件提取出来。Verilog HDL可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。在上述步骤102中,在提取出.v文件后,可以使用解析工具,将.v文件解析为抽象语法树,并导出为.json文件。如图2至图7所示,图2至图7为抽象语法树中不同部分的结构示意图。其中,图2为顶层抽象语法树的结构示意图,图3为declaration部分的抽象语法树的结构示意图,图4为实例instance:U1部分的抽象语法树的结构示意图,图5(a)至图5(d)为U1子节点部分的抽象语法树的结构示意图,图6为外层for循环部分的抽象语法树的结构示意图,图7为里层for循环部分的抽象语法树的结构示意图。
在上述步骤103中,可以自顶向下遍历步骤102中得到的.json文件,从而获得数据信息,并存储至数据结构中。其中,数据信息主要用来描述抽象语法树的构成。在上述步骤104中,通过分析数据结构中的层次结构、模块单元、实例化信息等,经过分析、筛选、统计、整合之后,从而导出为一个TXT文件,以便进行全面的分析电路设计状态,衡量电路规模大小和复杂程度。如图8所示,图8为超大规模集成电路的实例instance模型的结构示意图。
本发明实施例提供的方法,可以带来如下有益效果:
(1)由于抽象语法树是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,且抽象语法树不依赖于具体的文法,不依赖于语言的细节,将源代码转化为抽象语法树后,可以对抽象语法树做很多的操作,进而可以提高超大规模集成电路建模设计的灵活性及效率。
(2)由于基于抽象语法树进行建模,可以将Verilog HDL源代码进行解析简化,从而可在保证分析出电路的设计状态前提下,能够满足一次性载入大规模的Verilog HDL源代码文件,并可一次性完成获取所有模块的各项信息,进而能够提高方法流程的兼容性。
(3)由于基于抽象语法树进行建模,由于可以将Verilog HDL源代码解析为树状层级结构,以便于分析电路的设计状态、衡量电路规模大小以及指导后续的设计与优化工作。
(4)由于最终可以用TXT形式的文件输出,从而有利于可视化以及后续基于TXT文件作进一步内容拓展,进而能够有效指导后续的设计与优化工作。
基于上述实施例的内容,作为一种可选实施例,Verilog HDL源代码工程文件用于表示如下三项内容中的至少一项内容,三项内容分别为逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能。
基于上述实施例的内容,作为一种可选实施例,将.v文件解析为抽象语法树这一过程进一步包括:在Linux环境下,下载、安装并配置开源工具Slang;将.v文件传入至配置好的Slang工具环境中,对.v文件进行解析,以得到抽象语法树。
具体地,可以先下载安装解析工具Slang,并在Linux环境下配置其运行环境。其中,Slang是目前业界广泛使用的一种语法、词法和语义解析工具。通过Slang可以最终生成抽象语法树,并且可以将抽象语法树中的信息导出为.json文件。
基于上述实施例的内容,作为一种可选实施例,抽象语法树至少包括Verilog HDL源代码的端口信息、连线信息、模块信息、实例化单元信息及层次结构信息。
由于Verilog HDL源代码中比较复杂,对于其中某些代码块,Slang并不能导出完全符合.json格式的文件,从而需先对.json文件进行预处理,以得到符合标准json格式文件。基于上述说明及实施例的内容,作为一种可选实施例,在执行遍历符合标准json格式的文件之前,还可以执行如下步骤:若.json文件不符合json文件的标准格式,则遍历.json文件并进行预处理,以得到符合标准json格式的文件。
基于上述实施例的内容,作为一种可选实施例,数据信息至少包括抽象语法树中每一类型节点的节点信息;相应地,分析数据结构以获取分析结果这一过程进一步包括:根据抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重,节点信息至少包括节点对应的端口位宽及节点类型;根据每一类型节点在抽象语法树中所属实例,对所属实例下各个节点的权值进行求和,以归并至所属实例中,并获取所属实例的权重数据以及对应的层级结构,作为分析结果。
具体地,可获取.json文件中应计入计算的节点类型以及对应的端口位宽大小、操作类型等信息,计算每个类型节点的权重并存储下来。按照节点是否属于某个实例instance,对各个节点的权值进行求和,归并到相应的实例instance中,获取每个实例instance的权重数据和对应的层级结构。
基于上述实施例的内容,作为一种可选实施例,根据抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重这一过程进一步包括:对于.json文件中存在的IntegerLiteral、RealLiteral以及StringLiteral类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成常数D触发器,以计算每一类型节点的权重;
对于.json文件中存在的UnaryOp及BinaryOp类型的节点,则按照节点对应表达式的类别及变量的位宽方式,计算每一类型节点的权重;
对于.json文件中存在的ConditionalOp、Conditional及Case类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成多路选择器,以计算每一类型节点的权重;
对于.json文件中存在的ForLoop类型的节点,则按照节点对应的循环次数进行加权,以得到每一类型节点的权重;
对于.json文件中存在的ElementSelect及RangeSelect类型的节点,若节点的选择项为变量类型,则将选择项转换成移位器,以计算每一类型节点的权重。
需要说明的是,D触发器(flipflop)即为DFF器件,是边沿敏感的存储单元,数据存储的动作有某一信号的上升或者下降沿进行同步的。多路选择器,出现在组合逻辑电路中,使用always语句进行描述,在实际电路中,程序会选择其中一个路径执行。移位器,即移位寄存器,它不仅能寄存数据,而且在时钟信号的作用下使它存储的数据依次左移或者右移。常见的是桶形移位器,是一个多输入、单输出电路,它根据MIPS指令来决定如何进行移位。其中,权重计算的流程示意图可以参考图9。图10为每个实例instance的权重数据,也即经过权重计算之后每个instance的自重。
基于上述实施例的内容,作为一种可选实施例,数据信息至少包括抽象语法树中模块单元的实例化调用关系;相应地,分析数据结构以获取分析结果这一过程进一步包括:对于抽象语法树中的任一实例,根据实例化调用关系,获取如下两种实例以及如下两种实例之间的层级结构关系,以作为分析结果,如下两种实例分别为调用该实例的实例与被该实例调用的实例。
具体地,获取并分析模块单元module的实例化调用关系,获取调用该实例instance的其它instance以及被该instance调用的实例和它们之间的层级关系。
基于上述实施例的内容,作为一种可选实施例,数据信息至少包括抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息;相应地,分析数据结构以获取分析结果这一过程进一步包括:将大规模集成电路的电路设计图与抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息进行一一对应,以获取抽象语法树中实例与其它实例之间端口相连的相关信息,并作为分析结果。
具体地,可获取并存储实例instance名字、各类型节点信息、连线信息等,将大规模的电路设计图与这些信息一一对应起来,获取instance与其它instance端口相连的具体相关信息。结合上述实施例的内容,基于抽象语法树的超大规模集成电路建模的设计方法流程示意图可参考图11。
基于上述实施例的内容,本发明实施例提供了一种基于抽象语法树的集成电路建模获取系统,该系统用于执行上述方法实施例中提供的基于抽象语法树的集成电路建模获取方法。参见图12,该系统包括:
第一模块1201,用于获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
第二模块1202,用于将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;
第三模块1203,用于遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;
第四模块1204,用于分析数据结构以获取分析结果,并将分析结果导出为TXT文件。
图13示例了一种电子设备的实体结构示意图,如图13所示,该电子设备可以包括:处理器(processor)1310、通信接口(Communications Interface)1320、存储器(memory)1330和通信总线1340,其中,处理器1310,通信接口1320,存储器1330通过通信总线1340完成相互间的通信。处理器1310可以调用存储器1330中的逻辑指令,以执行如下方法:获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;将.v文件解析为抽象语法树,并将抽象语法树导出为.json文件;遍历符合标准json格式的文件,以获取数据信息,并将数据信息存储至数据结构中;分析数据结构以获取分析结果,并将分析结果导出为TXT文件。
此外,上述的存储器1330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于抽象语法树的集成电路建模获取方法,其特征在于,包括:
获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
将所述.v文件解析为抽象语法树,并将所述抽象语法树导出为.json文件;所述将所述.v文件解析为抽象语法树这一过程进一步包括:
在Linux环境下,下载、安装并配置开源工具Slang;
将所述.v文件传入至配置好的Slang工具环境中,对所述.v文件进行解析,以得到所述抽象语法树;
遍历符合标准json格式的文件,以获取数据信息,并将所述数据信息存储至数据结构中;所述数据信息至少包括所述抽象语法树中每一类型节点的节点信息;
分析所述数据结构以获取分析结果,并将所述分析结果导出为TXT文件;所述分析所述数据结构以获取分析结果这一过程进一步包括:
根据所述抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重,所述节点信息至少包括节点对应的端口位宽及节点类型;
根据每一类型节点在所述抽象语法树中所属实例,对所属实例下各个节点的权值进行求和,以归并至所属实例中,并获取所属实例的权重数据以及对应的层级结构,作为所述分析结果。
2.如权利要求1所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述Verilog HDL源代码工程文件用于表示如下三项内容中的至少一项内容,所述三项内容分别为逻辑电路图、逻辑表达式以及数字逻辑系统所完成的逻辑功能。
3.如权利要求1或2所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述抽象语法树至少包括Verilog HDL源代码的端口信息、连线信息、模块信息、实例化单元信息及层次结构信息。
4.如权利要求1所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述方法进一步包括遍历符合标准json格式的文件之前的如下步骤:
若所述.json文件不符合json文件的标准格式,则遍历所述.json文件并进行预处理,以得到所述符合标准json格式的文件。
5.如权利要求1所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述根据所述抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重这一过程进一步包括:
对于所述.json文件中存在的IntegerLiteral、RealLiteral以及StringLiteral类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成常数D触发器,以计算每一类型节点的权重;
对于所述.json文件中存在的UnaryOp及BinaryOp类型的节点,则按照节点对应表达式的类别及变量的位宽方式,计算每一类型节点的权重;
对于所述.json文件中存在的ConditionalOp、Conditional及Case类型的节点,则按照节点对应的端口位宽,将每一类型节点的节点信息转换成多路选择器,以计算每一类型节点的权重;
对于所述.json文件中存在的ForLoop类型的节点,则按照节点对应的循环次数进行加权,以得到每一类型节点的权重;
对于所述.json文件中存在的ElementSelect及RangeSelect类型的节点,若节点的选择项为变量类型,则将选择项转换成移位器,以计算每一类型节点的权重。
6.如权利要求1所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述数据信息至少包括所述抽象语法树中模块单元的实例化调用关系;相应地,所述分析所述数据结构以获取分析结果这一过程进一步包括:
对于所述抽象语法树中的任一实例,根据所述实例化调用关系,获取如下两种实例以及所述如下两种实例之间的层级结构关系,以作为所述分析结果,所述如下两种实例分别为调用所述任一实例的实例与被所述任一实例调用的实例。
7.如权利要求1所述的基于抽象语法树的集成电路建模获取方法,其特征在于,所述数据信息至少包括所述抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息;相应地,所述分析所述数据结构以获取分析结果这一过程进一步包括:
将大规模集成电路的电路设计图与所述抽象语法树中的实例名称、每一类型节点的节点信息以及连线信息进行一一对应,以获取所述抽象语法树中实例与其它实例之间端口相连的相关信息,并作为所述分析结果。
8.一种基于抽象语法树的集成电路建模获取系统,其特征在于,包括:
第一模块,用于获取大规模集成电路的Verilog HDL源代码工程文件,并提取出具有相互依赖关系的.v文件;
第二模块,用于将所述.v文件解析为抽象语法树,并将所述抽象语法树导出为.json文件;
第三模块,用于遍历符合标准json格式的文件,以获取数据信息,并将所述数据信息存储至数据结构中;所述数据信息至少包括所述抽象语法树中每一类型节点的节点信息;
第四模块,用于分析所述数据结构以获取分析结果,并将所述分析结果导出为TXT文件;所述分析所述数据结构以获取分析结果这一过程进一步包括:
根据所述抽象语法树中每一类型节点的节点信息,计算每一类型节点的权重,所述节点信息至少包括节点对应的端口位宽及节点类型;
根据每一类型节点在所述抽象语法树中所属实例,对所属实例下各个节点的权值进行求和,以归并至所属实例中,并获取所属实例的权重数据以及对应的层级结构,作为所述分析结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110300020.0A CN112989731B (zh) | 2021-03-22 | 2021-03-22 | 一种基于抽象语法树的集成电路建模获取方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110300020.0A CN112989731B (zh) | 2021-03-22 | 2021-03-22 | 一种基于抽象语法树的集成电路建模获取方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989731A CN112989731A (zh) | 2021-06-18 |
CN112989731B true CN112989731B (zh) | 2023-10-13 |
Family
ID=76334179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110300020.0A Active CN112989731B (zh) | 2021-03-22 | 2021-03-22 | 一种基于抽象语法树的集成电路建模获取方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989731B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117077583B (zh) * | 2023-10-17 | 2024-02-02 | 北京汤谷软件技术有限公司 | 一种寄存器传输级电路设计的资源估算方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN107862161A (zh) * | 2017-12-08 | 2018-03-30 | 江南大学 | 一种基于层次化处理与分簇约束的多阈值单元替换方法 |
CN109445834A (zh) * | 2018-10-30 | 2019-03-08 | 北京计算机技术及应用研究所 | 基于抽象语法树的程序代码相似性快速比较方法 |
WO2019099404A1 (en) * | 2017-11-14 | 2019-05-23 | Code Walker L.L.C. | Computer code mapping and visualization |
CN111176993A (zh) * | 2019-12-24 | 2020-05-19 | 中国科学院电子学研究所苏州研究院 | 一种基于抽象语法树的代码静态检测方法 |
CN111931181A (zh) * | 2020-07-07 | 2020-11-13 | 北京理工大学 | 基于图挖掘的软件逻辑漏洞检测方法 |
CN112199913A (zh) * | 2020-10-15 | 2021-01-08 | 湖南泛联新安信息科技有限公司 | 一种基于Coq的超大规模集成电路RTL漏洞形式化分析方法 |
CN112306951A (zh) * | 2020-11-11 | 2021-02-02 | 哈尔滨工业大学 | 一种基于fpga的cnn-svm资源高效型加速架构 |
CN112363706A (zh) * | 2020-11-20 | 2021-02-12 | 上海悦易网络信息技术有限公司 | 一种嵌套组合的预处理方法及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100037213A1 (en) * | 2008-08-07 | 2010-02-11 | Microsoft Corporation | Grammar-based generation of types and extensions |
CN110147139B (zh) * | 2018-02-12 | 2022-10-18 | 创意电子股份有限公司 | 计算机执行方法、时脉数据处理系统以及计算机可读取储存媒体 |
-
2021
- 2021-03-22 CN CN202110300020.0A patent/CN112989731B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
WO2019099404A1 (en) * | 2017-11-14 | 2019-05-23 | Code Walker L.L.C. | Computer code mapping and visualization |
CN107862161A (zh) * | 2017-12-08 | 2018-03-30 | 江南大学 | 一种基于层次化处理与分簇约束的多阈值单元替换方法 |
CN109445834A (zh) * | 2018-10-30 | 2019-03-08 | 北京计算机技术及应用研究所 | 基于抽象语法树的程序代码相似性快速比较方法 |
CN111176993A (zh) * | 2019-12-24 | 2020-05-19 | 中国科学院电子学研究所苏州研究院 | 一种基于抽象语法树的代码静态检测方法 |
CN111931181A (zh) * | 2020-07-07 | 2020-11-13 | 北京理工大学 | 基于图挖掘的软件逻辑漏洞检测方法 |
CN112199913A (zh) * | 2020-10-15 | 2021-01-08 | 湖南泛联新安信息科技有限公司 | 一种基于Coq的超大规模集成电路RTL漏洞形式化分析方法 |
CN112306951A (zh) * | 2020-11-11 | 2021-02-02 | 哈尔滨工业大学 | 一种基于fpga的cnn-svm资源高效型加速架构 |
CN112363706A (zh) * | 2020-11-20 | 2021-02-12 | 上海悦易网络信息技术有限公司 | 一种嵌套组合的预处理方法及设备 |
Non-Patent Citations (3)
Title |
---|
Ilaria Scarabottolo, G. Ansaloni, L. Pozzi.Circuit carving: A methodology for the design of approximate hardware.《 Computer Science》.2018,全文. * |
冯晓.分类树方法在集成电路设计功能验证中的应用.《计算机工程》.2012,232-236. * |
航天型号FPGA硬件描述语言代码检查软件设计;黄子桓;《中国优秀博硕士学位论文全文数据库(硕士)工程科技Ⅱ辑》;20180215(第02期);C031-493 * |
Also Published As
Publication number | Publication date |
---|---|
CN112989731A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109450900A (zh) | 拟态判决方法、装置及系统 | |
CN104317928A (zh) | 一种基于分布式数据库的业务etl方法及系统 | |
Benoit et al. | The PEPS software tool | |
CN113778449B (zh) | 航空电子接口数据适配转换系统 | |
CN108694221A (zh) | 数据实时分析方法、模块、设备和装置 | |
CN112989731B (zh) | 一种基于抽象语法树的集成电路建模获取方法及系统 | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
CN112307303A (zh) | 基于云计算的网络页面高效精准去重系统 | |
CN114036183A (zh) | 一种数据etl处理方法、装置、设备及介质 | |
CN117077583B (zh) | 一种寄存器传输级电路设计的资源估算方法及装置 | |
CN101056210B (zh) | 一种网络集中管理平台上的事件处理系统和方法 | |
CN114692532A (zh) | 芯片系统的集成方法、装置及计算机可读存储介质 | |
US9679092B1 (en) | Constraint handling for parameterizable hardware description language | |
CN114841103B (zh) | 门级电路的并行仿真方法、系统、存储介质及设备 | |
CN113568598B (zh) | 基于yosys实现求和运算的FPGA逻辑综合方法及装置 | |
CN100562008C (zh) | 消息处理系统及其处理方法 | |
CN115066673A (zh) | 用于etl流水线处理的系统和方法 | |
CN113033132A (zh) | 一种确定端口时序约束的方法及相关装置 | |
US20230144285A1 (en) | Resource estimation for implementing circuit designs within an integrated circuit | |
US10242150B1 (en) | Circuit design implementation using control-set based merging and module-based replication | |
US20230032302A1 (en) | Inter-kernel dataflow analysis and deadlock detection | |
US20230305949A1 (en) | Static and automatic inference of inter-basic block burst transfers for high-level synthesis | |
Visser et al. | Efficient CTL* model checking for analysis of rainbow designs | |
US11520570B1 (en) | Application-specific hardware pipeline implemented in an integrated circuit | |
CN116738900B (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 |