一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于脚本的数据流图生成方法及装置与流程

2022-07-13 17:50:48 来源:中国专利 TAG:


1.本发明涉及数字逻辑设计领域,具体提供一种基于脚本的数据流图生成方法及装置。


背景技术:

2.目前,电子信息技术产业发展迅速,对于专用芯片的性能要求越来越高,在集成电路制技术迅速进步的同时,集成电路的复杂度呈指数增加,数字逻辑设计规模越来越大,包含大量的输出变量和中间变量,因此,非常容易出现赋值对象错误、遗漏赋值或者位宽不匹配等问题。


技术实现要素:

3.本发明是针对上述现有技术的不足,提供一种实用性强的基于脚本的数据流图生成方法。
4.本发明进一步的技术任务是提供一种设计合理,安全适用的基于脚本的数据流图生成装置。
5.本发明解决其技术问题所采用的技术方案是:
6.一种基于脚本的数据流图生成方法,首先,用户根据需求进行语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;然后,用户编写端口变量及实例化连接变量检索脚本,所述脚本能够识别verilog-1995及之后的版本。
7.进一步的,所述脚本的工作流程为:
8.s1、设计变量结构体;
9.s2、检索工程设计的实例化递归关系;
10.s3、按照类似二叉树前序遍历算法;
11.s4、以“reg/wire”为关键字检索当前模块中所有的变量名声明;
12.s5、以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量;
13.s6、根据步骤s3到步骤s5检索得到的信息,以“变量名=/《=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息;
14.s7、循环步骤s3至步骤s6直至完成工程树中所有节点模块的信息检索和保存;
15.s8、用户向脚本输入。
16.进一步的,在步骤s1中,所述结构体分为端口域、变量域、常量域和指针域,所述指针域存储父指针和多个子指针的信息,所述端口域、变量域和常量域采用链表存储方式。
17.进一步的,在步骤s2中,从顶层模块开始,按照类似二叉树前序遍历算法,检索整个工程,得出以顶层模块为树根,各实例化模块为树枝和树叶的工程树;
18.为每一个节点实例化一个对应的变量结构体,得到结构体树,并根据工程树为每一个变量结构体填入各自的父指针,既实例化当前模块的上级模块和子指针,既当前模块中实例化的下级模块。
19.进一步的,在步骤s3中,按照类似二叉树前序遍历算法,从工程树树根开始,以当前模块设计文件顶端“()”为关键字,找到当前模块所有的端口变量,如果在端口声明前有变量类型和位宽声明,则完成当前模块端口变量检索并将检索结果储存在该模块对应的变量结构体端口域中;
20.否则,在模块设计中以端口名为关键字检索对应的类型和位宽声明,完成后存储在变量结构体端口域中。
21.进一步的,在步骤s4中,以“reg/wire”为关键字检索当前模块中所有的变量名声明,然后将上一步s3中检索出的端口变量剔除后,得到所有内部变量信息,完成后存储在变量结构体变量域中。
22.进一步的,在步骤s5中,以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量,并存储在变量结构体常量域中。
23.进一步的,在步骤s6中,根据步骤s3到步骤s5检索得到的信息,以“变量名=/《=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句;
24.以“.(变量名)”为关键字逐一检索每一个变量在当前模块子模块端口中被赋值的信息,所述被赋值的信息包括赋值行为的行号、完整赋值语句、子模块实例化名,将信息存入结构体中对应变量名后,完成当前模块信息检索和保存。
25.进一步的,在步骤s8中,用户向脚本了解数据流图的变量名及所在实例化模块名,脚本根据实例化模块名找到结构体树中对应的变量结构体节点,将结构体中变量名所对应的信息以类二叉树前序遍历算法打印输出。
26.一种基于脚本的数据流图生成装置,包括:至少一个存储器和至少一个处理器;
27.所述至少一个存储器,用于存储机器可读程序;
28.所述至少一个处理器,用于调用所述机器可读程序,执行一种基于脚本的数据流图生成方法。
29.本发明的一种基于脚本的数据流图生成方法及装置和现有技术相比,具有以下突出的有益效果:
30.本发明针对现有数字逻辑设计流程中的人工检查和debug设计中变量数据流的方法,提出了一种通过使用脚本语言,根据用户需求自动化生成变量的数据流图。该方法实施方便,流程简单,高效稳定,可以大幅缩短数字逻辑设计开发的时间。
附图说明
31.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.附图1是一种基于脚本的数据流图生成方法的流程示意图。
具体实施方式
33.为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对
本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
34.下面给出一个最佳实施例:
35.如图1所示,本实施例中的一种基于脚本的数据流图生成方法,首先,用户根据需求使用verilog硬件描述语言编写设计代码,并将各设计模块实例化,组成一个单一顶层的工程设计;
36.然后,用户编写端口变量及其实例化连接变量检索脚本,该脚本可以识别verilog-1995及之后的版本。
37.该脚本的工作流程如下:
38.s1、设计并声明变量结构体,该结构体内分为端口域、变量域、常量域和指针域,指针域存储父指针和多个子指针的信息,端口域、变量域和常量域采用链表存储方式。
39.s2、检索工程设计的实例化递归关系,从顶层模块开始,按照类似二叉树前序遍历算法,检索整个工程,得出以顶层模块为树根,各实例化模块为树枝和树叶的工程树,为每一个节点实例化一个对应的变量结构体,得到结构体树,并根据工程树为每一个变量结构体填入各自的父指针既实例化当前模块的上级模块和子指针既当前模块中实例化的下级模块。
40.s3、按照类似二叉树前序遍历算法,从工程树树根开始,以当前模块设计文件顶端“()”为关键字,找到当前模块所有的端口变量,如果在端口声明前有变量类型和位宽声明,则完成当前模块端口变量检索并将检索结果储存在该模块对应的变量结构体端口域中;
41.否则,在模块设计中以端口名为关键字检索对应的类型和位宽声明,完成后存储在变量结构体端口域中。
42.s4、以“reg/wire”为关键字检索当前模块中所有的变量名声明,然后将上一步s3中检索出的端口变量剔除后,得到所有内部变量信息,完成后存储在变量结构体变量域中。
43.s5、以“parameter/localparam”为关键字进行检索,获取当前模块所有的常量,并存储在变量结构体常量域中。
44.s6、根据步骤s3到步骤s5检索得到的信息,以“变量名=/《=”为关键字逐一检索每一个变量在当前模块代码行中被赋值的信息,这些被赋值的信息包括赋值行为的行号、完整赋值语句;
45.以“.(变量名)”为关键字逐一检索每一个变量在当前模块子模块端口中被赋值的信息,这些被赋值的信息包括赋值行为的行号、完整赋值语句、子模块实例化名,将信息存入结构体中对应变量名后,完成当前模块信息检索和保存。
46.s7、循环步骤s3到步骤s6,直至完成工程树中所有节点模块的信息检索和保存。
47.s8、用户向脚本输入需要了解数据流图的变量名及其所在实例化模块名,脚本根据实例化模块名找到结构体树中对应的变量结构体节点,将结构体中变量名所对应的信息以类二叉树前序遍历算法打印输出,如果更改了设计,只需要重新调用脚本就可以获得新设计各变量的数据流图。
48.基于上述方法,本实施例中的一种基于脚本的数据流图生成装置,包括:至少一个
存储器和至少一个处理器;
49.所述至少一个存储器,用于存储机器可读程序;
50.所述至少一个处理器,用于调用所述机器可读程序,执行一种基于脚本的数据流图生成方法。
51.上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种基于脚本的数据流图生成方法及装置权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
52.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献