CN114741993B - 一种基于脚本的数据流图生成方法及装置 - Google Patents
一种基于脚本的数据流图生成方法及装置 Download PDFInfo
- Publication number
- CN114741993B CN114741993B CN202210402011.7A CN202210402011A CN114741993B CN 114741993 B CN114741993 B CN 114741993B CN 202210402011 A CN202210402011 A CN 202210402011A CN 114741993 B CN114741993 B CN 114741993B
- Authority
- CN
- China
- Prior art keywords
- variable
- module
- information
- port
- script
- 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
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/32—Circuit design at the digital level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- 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
-
- 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
Abstract
本发明涉及数字逻辑设计领域,具体提供了一种基于脚本的数据流图生成方法,其特征在于,首先,用户根据需求进行语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;然后,用户编写端口变量及实例化连接变量检索脚本,所述脚本能够识别Verilog‑1995及之后的版本。与现有技术相比,本发明根据用户需求自动化生成变量的数据流图,实施方便,流程简单,高效稳定,可以大幅缩短数字逻辑设计开发的时间。
Description
技术领域
本发明涉及数字逻辑设计领域,具体提供一种基于脚本的数据流图生成方法及装置。
背景技术
目前,电子信息技术产业发展迅速,对于专用芯片的性能要求越来越高,在集成电路制技术迅速进步的同时,集成电路的复杂度呈指数增加,数字逻辑设计规模越来越大,包含大量的输出变量和中间变量,因此,非常容易出现赋值对象错误、遗漏赋值或者位宽不匹配等问题。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的基于脚本的数据流图生成方法。
本发明进一步的技术任务是提供一种设计合理,安全适用的基于脚本的数据流图生成装置。
本发明解决其技术问题所采用的技术方案是:
一种基于脚本的数据流图生成方法,首先,用户根据需求进行语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;然后,用户编写端口变量及实例化连接变量检索脚本,所述脚本能够识别Verilog-1995及之后的版本。
进一步的,所述脚本的工作流程为:
S1、设计变量结构体;
S2、检索工程设计的实例化递归关系;
S3、按照类似二叉树前序遍历算法;
S4、以“reg/wire”为关键字检索当前模块中所有的变量名声明;
S5、以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量;
S6、根据步骤S3到步骤S5检索得到的信息,以“变量名=/<=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息;
S7、循环步骤S3至步骤S6直至完成工程树中所有节点模块的信息检索和保存;
S8、用户向脚本输入。
进一步的,在步骤S1中,所述结构体分为端口域、变量域、常量域和指针域,所述指针域存储父指针和多个子指针的信息,所述端口域、变量域和常量域采用链表存储方式。
进一步的,在步骤S2中,从顶层模块开始,按照类似二叉树前序遍历算法,检索整个工程,得出以顶层模块为树根,各实例化模块为树枝和树叶的工程树;
为每一个节点实例化一个对应的变量结构体,得到结构体树,并根据工程树为每一个变量结构体填入各自的父指针,既实例化当前模块的上级模块和子指针,既当前模块中实例化的下级模块。
进一步的,在步骤S3中,按照类似二叉树前序遍历算法,从工程树树根开始,以当前模块设计文件顶端“()”为关键字,找到当前模块所有的端口变量,如果在端口声明前有变量类型和位宽声明,则完成当前模块端口变量检索并将检索结果储存在该模块对应的变量结构体端口域中;
否则,在模块设计中以端口名为关键字检索对应的类型和位宽声明,完成后存储在变量结构体端口域中。
进一步的,在步骤S4中,以“reg/wire”为关键字检索当前模块中所有的变量名声明,然后将上一步S3中检索出的端口变量剔除后,得到所有内部变量信息,完成后存储在变量结构体变量域中。
进一步的,在步骤S5中,以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量,并存储在变量结构体常量域中。
进一步的,在步骤S6中,根据步骤S3到步骤S5检索得到的信息,以“变量名=/<=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句;
以“.(变量名)”为关键字逐一检索每一个变量在当前模块子模块端口中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句、子模块实例化名,将信息存入结构体中对应变量名后,完成当前模块信息检索和保存。
进一步的,在步骤S8中,用户向脚本了解数据流图的变量名及所在实例化模块名,脚本根据实例化模块名找到结构体树中对应的变量结构体节点,将结构体中变量名所对应的信息以类二叉树前序遍历算法打印输出。
一种基于脚本的数据流图生成装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种基于脚本的数据流图生成方法。
本发明的一种基于脚本的数据流图生成方法及装置和现有技术相比,具有以下突出的有益效果:
本发明针对现有数字逻辑设计流程中的人工检查和debug设计中变量数据流的方法,提出了一种通过使用脚本语言,根据用户需求自动化生成变量的数据流图。该方法实施方便,流程简单,高效稳定,可以大幅缩短数字逻辑设计开发的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种基于脚本的数据流图生成方法的流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1所示,本实施例中的一种基于脚本的数据流图生成方法,首先,用户根据需求使用Verilog硬件描述语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;
然后,用户编写端口变量及其实例化连接变量检索脚本,该脚本可以识别Verilog-1995及之后的版本。
该脚本的工作流程如下:
S1、设计并声明变量结构体,该结构体内分为端口域、变量域、常量域和指针域,指针域存储父指针和多个子指针的信息,端口域、变量域和常量域采用链表存储方式。
S2、检索工程设计的实例化递归关系,从顶层模块开始,按照类似二叉树前序遍历算法,检索整个工程,得出以顶层模块为树根,各实例化模块为树枝和树叶的工程树,为每一个节点实例化一个对应的变量结构体,得到结构体树,并根据工程树为每一个变量结构体填入各自的父指针既实例化当前模块的上级模块和子指针既当前模块中实例化的下级模块。
S3、按照类似二叉树前序遍历算法,从工程树树根开始,以当前模块设计文件顶端“()”为关键字,找到当前模块所有的端口变量,如果在端口声明前有变量类型和位宽声明,则完成当前模块端口变量检索并将检索结果储存在该模块对应的变量结构体端口域中;
否则,在模块设计中以端口名为关键字检索对应的类型和位宽声明,完成后存储在变量结构体端口域中。
S4、以“reg/wire”为关键字检索当前模块中所有的变量名声明,然后将上一步S3中检索出的端口变量剔除后,得到所有内部变量信息,完成后存储在变量结构体变量域中。
S5、以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量,并存储在变量结构体常量域中。
S6、根据步骤S3到步骤S5检索得到的信息,以“变量名=/<=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息,这些被赋值的信息包括赋值行为的行号、完整赋值语句;
以“.(变量名)”为关键字逐一检索每一个变量在当前模块子模块端口中被赋值的信息,这些被赋值的信息包括赋值行为的行号、完整赋值语句、子模块实例化名,将信息存入结构体中对应变量名后,完成当前模块信息检索和保存。
S7、循环步骤S3到步骤S6,直至完成工程树中所有节点模块的信息检索和保存。
S8、用户向脚本输入需要了解数据流图的变量名及其所在实例化模块名,脚本根据实例化模块名找到结构体树中对应的变量结构体节点,将结构体中变量名所对应的信息以类二叉树前序遍历算法打印输出,如果更改了设计,只需要重新调用脚本就可以获得新设计各变量的数据流图。
基于上述方法,本实施例中的一种基于脚本的数据流图生成装置,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行一种基于脚本的数据流图生成方法。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种基于脚本的数据流图生成方法及装置权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (3)
1.一种基于脚本的数据流图生成方法,其特征在于,首先,用户根据需求进行语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;然后,用户编写端口变量及实例化连接变量检索脚本,所述脚本能够识别Verilog-1995及之后的版本;
所述脚本的工作流程为:
S1、设计变量结构体;
S2、检索工程设计的实例化递归关系;
从顶层模块开始,按照类似二叉树前序遍历算法,检索整个工程,得出以顶层模块为树根,各实例化模块为树枝和树叶的工程树;
为每一个节点实例化一个对应的变量结构体,得到结构体树,并根据工程树为每一个变量结构体填入各自的父指针,既实例化当前模块的上级模块和子指针,既当前模块中实例化的下级模块;
S3、按照类似二叉树前序遍历算法;
按照类似二叉树前序遍历算法,从工程树树根开始,以当前模块设计文件顶端“()”为关键字,找到当前模块所有的端口变量,如果在端口声明前有变量类型和位宽声明,则完成当前模块端口变量检索并将检索结果储存在该模块对应的变量结构体端口域中;
否则,在模块设计中以端口名为关键字检索对应的类型和位宽声明,完成后存储在变量结构体端口域中;
S4、以“reg/wire”为关键字检索当前模块中所有的变量名声明;
以“reg/wire”为关键字检索当前模块中所有的变量名声明,然后将上一步S3中检索出的端口变量剔除后,得到所有内部变量信息,完成后存储在变量结构体变量域中;
S5、以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量;
以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量,并存储在变量结构体常量域中;
S6、根据步骤S3到步骤S5检索得到的信息,以“变量名=/<=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息;
根据步骤S3到步骤S5检索得到的信息,以“变量名=/<=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句;
以“.(变量名)”为关键字逐一检索每一个变量在当前模块子模块端口中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句、子模块实例化名,将信息存入结构体中对应变量名后,完成当前模块信息检索和保存;
S7、循环步骤S3至步骤S6直至完成工程树中所有节点模块的信息检索和保存;
S8、用户向脚本输入;
用户向脚本了解数据流图的变量名及所在实例化模块名,脚本根据实例化模块名找到结构体树中对应的变量结构体节点,将结构体中变量名所对应的信息以类二叉树前序遍历算法打印输出。
2.根据权利要求1所述的一种基于脚本的数据流图生成方法,其特征在于,在步骤S1中,所述结构体分为端口域、变量域、常量域和指针域,所述指针域存储父指针和多个子指针的信息,所述端口域、变量域和常量域采用链表存储方式。
3.一种基于脚本的数据流图生成装置,其特征在于,包括:至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至2中任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210402011.7A CN114741993B (zh) | 2022-04-18 | 2022-04-18 | 一种基于脚本的数据流图生成方法及装置 |
PCT/CN2023/082101 WO2023202290A1 (zh) | 2022-04-18 | 2023-03-17 | 一种基于脚本的数据流图生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210402011.7A CN114741993B (zh) | 2022-04-18 | 2022-04-18 | 一种基于脚本的数据流图生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114741993A CN114741993A (zh) | 2022-07-12 |
CN114741993B true CN114741993B (zh) | 2023-06-16 |
Family
ID=82281966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210402011.7A Active CN114741993B (zh) | 2022-04-18 | 2022-04-18 | 一种基于脚本的数据流图生成方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114741993B (zh) |
WO (1) | WO2023202290A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741993B (zh) * | 2022-04-18 | 2023-06-16 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391793A (zh) * | 2014-11-27 | 2015-03-04 | 中国联合网络通信集团有限公司 | 测试步骤及测试脚本生成方法及装置 |
CN110413468A (zh) * | 2019-08-06 | 2019-11-05 | 哈尔滨工业大学 | 基于代码突变的fpga在线故障注入方法 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1783604A3 (en) * | 2005-11-07 | 2007-10-03 | Slawomir Adam Janczewski | Object-oriented, parallel language, method of programming and multi-processor computer |
US8510706B1 (en) * | 2009-09-04 | 2013-08-13 | The Mathworks, Inc. | Generating comments for code generated from a model |
JP5842255B2 (ja) * | 2013-12-12 | 2016-01-13 | 国立大学法人東京工業大学 | プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法 |
US9619601B1 (en) * | 2015-01-22 | 2017-04-11 | Xilinx, Inc. | Control and data flow graph generation for hardware description languages |
CN106155755B (zh) * | 2015-06-03 | 2020-06-23 | 上海红神信息技术有限公司 | 程序编译方法和程序编译器 |
CN105718372B (zh) * | 2016-01-22 | 2018-05-18 | 珠海市精实测控技术有限公司 | 一种电控板黑盒测试用例生成及自动测试方法 |
US10379825B2 (en) * | 2017-05-22 | 2019-08-13 | Ab Initio Technology Llc | Automated dependency analyzer for heterogeneously programmed data processing system |
CN107341010B (zh) * | 2017-06-26 | 2019-12-13 | 华中科技大学 | 一种C/C++与COStream混合编程方法和可视化编译系统 |
CN107516040A (zh) * | 2017-07-25 | 2017-12-26 | 中国人民解放军63928部队 | 一种基于数据控制流图的脆弱性特征分析和获取方法 |
CN110489297B (zh) * | 2019-08-26 | 2023-07-25 | 山东浪潮科学研究院有限公司 | 一种基于图形界面的fpga调试信号设置方法 |
US11429604B2 (en) * | 2019-09-10 | 2022-08-30 | Oracle International Corporation | Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing |
US20210203549A1 (en) * | 2019-12-30 | 2021-07-01 | Oracle International Corporation | Autonomous terraforming on cloud infrastructures |
CN111949269B (zh) * | 2020-07-14 | 2021-06-11 | 华中科技大学 | 一种COStream语法分析过程中符号表和静态数据流图生成方法 |
CN112083897A (zh) * | 2020-07-30 | 2020-12-15 | 济南浪潮高新科技投资发展有限公司 | 一种数字逻辑设计中信号声明系统、方法、设备及介质 |
CN113419740A (zh) * | 2021-06-22 | 2021-09-21 | 中国工商银行股份有限公司 | 程序数据流的分析方法、装置、电子设备及可读存储介质 |
CN114253524A (zh) * | 2021-12-20 | 2022-03-29 | 山东浪潮科学研究院有限公司 | 一种基于脚本的用于辅助状态机逻辑代码设计的方法 |
CN114741993B (zh) * | 2022-04-18 | 2023-06-16 | 山东浪潮科学研究院有限公司 | 一种基于脚本的数据流图生成方法及装置 |
-
2022
- 2022-04-18 CN CN202210402011.7A patent/CN114741993B/zh active Active
-
2023
- 2023-03-17 WO PCT/CN2023/082101 patent/WO2023202290A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391793A (zh) * | 2014-11-27 | 2015-03-04 | 中国联合网络通信集团有限公司 | 测试步骤及测试脚本生成方法及装置 |
CN110413468A (zh) * | 2019-08-06 | 2019-11-05 | 哈尔滨工业大学 | 基于代码突变的fpga在线故障注入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114741993A (zh) | 2022-07-12 |
WO2023202290A1 (zh) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6530072B1 (en) | Rule based hierarchy generation in a circuit design verification system | |
JPH03156572A (ja) | 論理回路比較検証システムおよび方法 | |
US6886140B2 (en) | Fast algorithm to extract flat information from hierarchical netlists | |
CN110109681B (zh) | 不同平台间代码的转换方法及系统 | |
US11042467B2 (en) | Automated searching and identification of software patches | |
CN108052453A (zh) | 可编程逻辑控制器程序的测试方法、装置、设备和介质 | |
CN114741993B (zh) | 一种基于脚本的数据流图生成方法及装置 | |
CN107330014B (zh) | 一种数据表的创建方法与设备 | |
Wang et al. | Code search via topic-enriched dependence graph matching | |
CN113255258B (zh) | 逻辑综合方法、装置、电子设备及存储介质 | |
CN105260357A (zh) | 基于哈希有向图的敏感词检查方法和设备 | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN114491172A (zh) | 树形结构节点的快速检索方法、装置、设备及存储介质 | |
US20030200522A1 (en) | Method and apparatus for hierarchically restructuring portions of a hierarchical database based on selected attributes | |
CN109710307B (zh) | 基于Python代码重建抽象语法树的方法、电子设备 | |
CN111381828A (zh) | 生成代码文件的语法树的方法、装置及电子设备 | |
CN110309214A (zh) | 一种指令执行方法及其设备、存储介质、服务器 | |
CN110806973A (zh) | 一种接口报文的自动生成方法及装置 | |
CN115982416A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN111381826A (zh) | 生成代码文件的语法树的方法、装置及电子设备 | |
Yuan et al. | An efficient algorithm for solving the dyck-cfl reachability problem on trees | |
CN112115125B (zh) | 数据库访问对象名称解析方法、装置及电子设备 | |
CN115390852A (zh) | 一种生成统一抽象语法树与程序分析的方法和装置 | |
Lange | Alternating context-free languages and linear time μ-calculus with sequential composition | |
CN111381827A (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 |