CN117743658A - 一种约束信息的集中可视化方法、电子设备及存储介质 - Google Patents
一种约束信息的集中可视化方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117743658A CN117743658A CN202410186736.6A CN202410186736A CN117743658A CN 117743658 A CN117743658 A CN 117743658A CN 202410186736 A CN202410186736 A CN 202410186736A CN 117743658 A CN117743658 A CN 117743658A
- Authority
- CN
- China
- Prior art keywords
- constraint information
- node
- constraint
- nodes
- target
- 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
- 238000007794 visualization technique Methods 0.000 title abstract description 6
- 238000000034 method Methods 0.000 claims abstract description 25
- 238000000605 extraction Methods 0.000 claims abstract description 21
- 230000000007 visual effect Effects 0.000 claims abstract description 13
- 230000014509 gene expression Effects 0.000 claims description 10
- 238000012800 visualization Methods 0.000 claims description 3
- 238000012795 verification Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 10
- 238000013518 transcription Methods 0.000 description 4
- 230000035897 transcription Effects 0.000 description 4
- 230000005284 excitation Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002715 modification method Methods 0.000 description 1
Abstract
本发明涉及芯片验证技术领域,特别是涉及一种约束信息的集中可视化方法、电子设备及存储介质。其通过对源代码进行解析得到语法树;从根节点遍历语法树,根据约束信息提取策略提取语法树中节点的约束信息并进行可视化显示,具体步骤包括:通过约束信息提取策略提取语法树中包含约束信息的所有目标子树;回溯所有目标子树的根节点的先辈节点,根据先辈节点获取目标子树的命名空间信息;根据所有目标子树、每个目标子树的命名空间信息和每个节点的行编号提取源代码中相同行编号的源代码,得到约束信息,方便用户集中可视化查看源代码中的约束信息。
Description
技术领域
本发明涉及芯片验证技术领域,特别是涉及一种约束信息的集中可视化方法、电子设备及存储介质。
背景技术
SystemVerilog语言的随机化约束(constraint)部分有着相比于其他约束表示语言在约束满足问题上更加丰富和完善的语法体系。其他约束表示语言如smt-lib、minizinc等。但是当查看源代码中的约束语句时,又会发现SystemVerilog的面向对象编程风格在大部分情况下是造成麻烦、带来不便的。例如,约束信息为“rand int a, b; 和 a<b;”这两句时,在SystemVerilog中需要先通过class声明随机变量和约束语句,然后再进行module等声明,并定义randomize函数等。
传统查看源代码中约束信息的方式是用户人工筛选源代码中的约束信息,由于源代码中约束的定义较为复杂,需要从复杂的源代码中人工筛选出用于求解器的约束信息,观察或记录下关键的约束信息,但是极易在抄写的过程中出现遗漏或抄写错误的问题。
发明内容
针对上述技术问题,本发明采用的技术方案为:一种约束信息的集中可视化方法,所述方法包括如下步骤:
S100,对源代码进行解析得到语法树,所述语法树包括多个节点,其中每个节点的属性包括当前节点在源代码中的行编号、当前节点的语法类型、当前节点的父节点和所有子节点的身份标识。
S200,从根节点遍历语法树,根据约束信息提取策略提取语法树中的约束信息并进行可视化显示,包括:
S210,通过约束信息提取策略提取语法树中包含约束信息的所有目标子树,包括:
S212,通过约束信息提取策略判断第i个节点的语法类型,当第i个节点的语法类型属于不包含约束信息的非约束类型时,结束第i个节点的判断;当第i个节点的语法类型属于包含约束信息的约束类型时,提取以第i个节点为根节点的目标子树,结束第i个节点的判断;当第i个节点的语法类型属于可能包含约束信息的未知类型时,执行S214。
S214,根据第i个节点的属性中所有子节点的身份标识,遍历所有子节点,根据S212判断每个子节点。
S220,回溯所有目标子树的根节点的先辈节点,根据先辈节点获取目标子树的命名空间信息。
S230,根据所有目标子树、每个目标子树的命名空间信息和每个节点的行编号提取源代码中相同行编号的源代码,得到约束信息。
本发明至少具有以下有益效果:
本发明公开了一种约束信息的集中可视化方法、电子设备及存储介质,其通过对源代码进行解析得到语法树;从根节点遍历语法树,根据约束信息提取策略提取语法树中节点的约束信息并进行可视化显示,使用户集中查看源代码中的约束信息,不需要查看源代码中复杂约束块,解决了现有的上下翻页查看源代码导致的易漏易错的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种约束信息修改方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了一种约束信息的集中可视化方法,所述方法包括如下步骤:
S100,对源代码进行解析得到语法树,所述语法树包括多个节点,其中每个节点的属性包括当前节点在源代码中的行编号、当前节点的语法类型、当前节点的父节点和所有子节点的身份标识。
其中,源代码为符合硬件描述语言的源代码,例如Verilog源代码、SystemVerilog源代码或Verilog HDL源代码。
可选的,解析由语法解析器或编译器完成。
其中,语法树中的节点是根据硬件描述语言的语法生成。语法树具有N层,在语法树中,每个节点都具有自身的属性,属性包括当前节点在源代码中的行编号、当前节点的语法类型、当前节点的父节点和子节点信息。其中当前节点的语法类型表示在硬件描述语言中的语法类型。具体的,根节点代表整个设计,根节点的非叶子节点的子节点代表不同的设计模块,每个设计模块表示一种语法类型。设计模块的子节点包括设计模块的关键字节点、设计模块的名称节点和主体子节点,其中关键字节点和名称节点同时为叶子节点,主体子节点还包括多个子节点,每个子节点为不同语法类型的子设计模块,每个子模块包括子模块的关键字节点、子模块的名称节点和主体子节点,以此类推。
S200,从根节点遍历语法树,根据约束信息提取策略提取语法树中的约束信息并进行可视化显示。约束信息提取策略约束信息提取策略。
其中,约束信息用于生成随机激励,将随机激励施加给待验设计进行芯片测试或验证。随机激励由激励发生器生成,激励发生器是验证环境的重要部件,也称为驱动器(driver)。激励发生器的主要职责是模拟接口协议。与真正的设计相比,激励发生器只关注如何模拟接口信号,使其能够以真实的接口协议来发送随机激励给待验设计。
其中,约束信息包括变量声明和约束表达式,约束表达式用于限制变量的随机激励值。
其中,约束表达式包括操作数和运算符。操作数为变量、常量或表达式。运算符可以为逻辑运算符、位运算符、算数运算符、关系运算法、集合运算符或者if-then-else运算符等。
例如,变量声明语句“rand int a, b”,约束表达式语句“a<b”等。
其中,可视化显示是在窗口中进行显示,且仅显示约束信息的变量声明和约束条件的部分,不显示其他无关部分,以便用户集中查看关键约束信息,而不需要查看源代码中分散的约束信息。
需要说明的是,传统查看源代码中约束信息的方式是用户人工筛选源代码中的约束信息,由于源代码中约束的定义较为复杂,需要从复杂的源代码中人工筛选出用于求解器的约束信息,观察或记录下关键的约束信息,但是极易在抄写的过程中出现遗漏或抄写错误的问题。因此本发明通过将约束信息提取出来之后进行可视化显示,方便用户在可视化窗口中快速获取源代码中重要的约束信息,没有源代码中冗余的无关信息干扰,解决了易漏易错的问题。
需要说明的是,在语法树中包括芯片设计中的所有信息,其中也包括约束信息。从语法树中提取约束信息需要根据约束信息提取策略进行提取。其中,约束信息提取策略用于指定在语法树中提取并显示出的内容。约束信息提取策略包括三步,第一步提取包含约束信息的目标子树,第二步回溯所有目标子树的先辈节点,最后将先辈节点和目标子树进行可视化显示。
S210,通过约束信息提取策略提取语法树中包含约束信息的所有目标子树,包括:
S212,通过约束信息提取策略判断第i个节点的语法类型,当第i个节点的语法类型属于不包含约束信息的非约束类型时,结束第i个节点的判断;当第i个节点的语法类型属于包含约束信息的约束类型时,提取以第i个节点为根节点的目标子树,结束第i个节点的判断;当第i个节点的语法类型属于可能包含约束信息的未知类型时,执行S214。
其中,约束信息提取策略为判断语法树中的节点为哪种类型的依据。
其中,约束信息在语法树中的子树很大,直接提取会将很多无关约束的其他信息提取出来,因此需要通过约束信息提取策略根据语法树中的以下节点提取:约束信息的基本说明declaration、变量说明Variable declaration和约束表达式说明constraintdeclaration。在语法树中,基本说明declaration的子节点为变量说明Variabledeclaration和约束表达式说明constraint declaration。在变量说明Variabledeclaration和约束表达式说明constraint declaration下还分别包括详细说明。其中,基本说明declaration属于未知类型,约束表达式说明constraint declaration一定属于约束类型。其中,基本说明declaration的子节点下的变量说明Variable declaration也是未知类型,其可能属于包含约束信息的约束类型,也可能属于不包含约束信息的非约束类型,例如,当基本说明declaration下只有一个变量声明为“int b=10”时,由于变量声明不是一个约束信息,因此declaration最终判断为属于非约束类型。
需要说明的是,在判断得到第i个节点属于约束类型时,不再进一步遍历并判断第i个节点的子节点属于的类型,直接提取以第i个节点为根节点的子树。
S214,根据第i个节点的属性中所有子节点的身份标识,遍历所有子节点,根据S212判断每个子节点。需要说明的是,将每个属于未知类型的节点的每个子节点继续按照S212的步骤判断属于哪种类型,直到确定子节点是约束类型还是非约束类型。以此类推,判断每个子节点的类型属于结束类型还是非约束类型。
S220,回溯所有目标子树的根节点的先辈节点,根据先辈节点获取目标子树的命名空间信息;
其中,先辈节点包括父节点、祖父节点、曾祖父节点等。
其中,回溯是指提取目标子树的根节点中的父节点,再根据根节点的父节点提取祖父节点,依此类推。
其中,命名空间是用于限制名字的解析和使用范围,将全局作用域划分为一个个命名空间,每个命名空间具有独立的作用域在不同命名空间内部定义的名字彼此之间互不影响。
S230,根据所有目标子树、每个目标子树的命名空间信息和每个节点的行编号提取源代码中相同行编号的源代码,得到约束信息。
该方法能够使用户集中查看源代码中的约束信息,不需要查看源代码中复杂约束块,解决了现有的上下翻页查看源代码导致的易漏易错的问题。
作为一个优选实施例,S200中可视化显示的节点的约束信息中包括节点在源代码中的行编号;所述方法还包括以下步骤:
S300,当可视化显示的节点的约束信息被修改时,根据被修改的节点在源代码中的行编号同步修改源代码的相应行中相同节点的约束信息。
需要说明的是,由于可视化显示的约束信息中包括每个节点在源代码中的行编号,通过行编号将可视化显示的约束信息与源代码相应行的源代码进行绑定,当可视化显示的约束信息被修改时,系统根据行编号同时自动修改源代码中相应行的代码信息。不仅方便用户集中查看,而且方便用户集中修改并自动同步修改源代码,保证集中修改部分与源代码严格同步更新。
综上所述,本发明提供了一种约束信息的集中可视化方法,其通过对源代码进行解析得到语法树;从根节点遍历语法树,根据约束信息提取策略提取语法树中节点的约束信息并进行可视化显示,使用户集中查看源代码中的约束信息,不需要查看源代码中复杂约束块,解决了现有的上下翻页查看源代码导致的易漏易错的问题。
本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。
Claims (7)
1.一种约束信息的集中可视化方法,其特征在于,所述方法包括如下步骤:
S100,对源代码进行解析得到语法树,所述语法树包括多个节点,其中每个节点的属性包括当前节点在源代码中的行编号、当前节点的语法类型、当前节点的父节点和所有子节点的身份标识;
S200,从根节点遍历语法树,根据约束信息提取策略提取语法树中的约束信息并进行可视化显示,包括:
S210,通过约束信息提取策略提取语法树中包含约束信息的所有目标子树,包括:
S212,通过约束信息提取策略判断第i个节点的语法类型,当第i个节点的语法类型属于不包含约束信息的非约束类型时,结束第i个节点的判断;当第i个节点的语法类型属于包含约束信息的约束类型时,提取以第i个节点为根节点的目标子树,结束第i个节点的判断;当第i个节点的语法类型属于可能包含约束信息的未知类型时,执行S214;
S214,根据第i个节点的属性中所有子节点的身份标识,遍历所有子节点,根据S212判断每个子节点;
S220,回溯所有目标子树的根节点的先辈节点,根据先辈节点获取目标子树的命名空间信息;
S230,根据所有目标子树、每个目标子树的命名空间信息和每个节点的行编号提取源代码中相同行编号的源代码,得到约束信息。
2.根据权利要求1所述的方法,其特征在于,S200中可视化显示的节点的约束信息中包括节点在源代码中的行编号;所述方法还包括以下步骤:
S300,当可视化显示的节点的约束信息被修改时,根据被修改的节点在源代码中的行编号同步修改源代码的相应行中相同节点的约束信息。
3.根据权利要求1所述的方法,其特征在于,所述当前节点的语法类型为变量声明或约束表达式。
4.根据权利要求3所述的方法,其特征在于,所述约束表达式包括操作数和运算符。
5.根据权利要求1所述的方法,其特征在于,S100中的解析由语法解析器完成。
6.一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,其特征在于,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1-5中任意一项的所述方法。
7.一种电子设备,其特征在于,包括处理器和权利要求6中所述的非瞬时性计算机可读存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410186736.6A CN117743658B (zh) | 2024-02-20 | 2024-02-20 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410186736.6A CN117743658B (zh) | 2024-02-20 | 2024-02-20 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117743658A true CN117743658A (zh) | 2024-03-22 |
CN117743658B CN117743658B (zh) | 2024-04-19 |
Family
ID=90279884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410186736.6A Active CN117743658B (zh) | 2024-02-20 | 2024-02-20 | 一种约束信息的集中可视化方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117743658B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7565631B1 (en) * | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
CN107533464A (zh) * | 2015-04-28 | 2018-01-02 | 株式会社日立制作所 | 源代码等价性检查装置以及源代码等价性检查方法 |
US20190188006A1 (en) * | 2017-12-20 | 2019-06-20 | Sapse | Adapter configuration |
CN110781086A (zh) * | 2019-10-23 | 2020-02-11 | 南京大学 | 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法 |
CN111126012A (zh) * | 2019-12-27 | 2020-05-08 | 深圳华策辉弘科技有限公司 | 定制生成表达式方法及装置 |
CN112306479A (zh) * | 2020-10-10 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种基于抽象语法的代码可视化分析方法及装置 |
CN114253549A (zh) * | 2021-12-03 | 2022-03-29 | 胡云锋 | 一种基于语法树AST编辑实现的JavaScript混淆方法 |
CN117171741A (zh) * | 2023-07-26 | 2023-12-05 | 奇安信科技集团股份有限公司 | 代码缺陷分析方法及装置 |
-
2024
- 2024-02-20 CN CN202410186736.6A patent/CN117743658B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7565631B1 (en) * | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
CN107533464A (zh) * | 2015-04-28 | 2018-01-02 | 株式会社日立制作所 | 源代码等价性检查装置以及源代码等价性检查方法 |
US20190188006A1 (en) * | 2017-12-20 | 2019-06-20 | Sapse | Adapter configuration |
CN110781086A (zh) * | 2019-10-23 | 2020-02-11 | 南京大学 | 一种基于程序依赖关系和符号分析的跨项目缺陷影响分析方法 |
CN111126012A (zh) * | 2019-12-27 | 2020-05-08 | 深圳华策辉弘科技有限公司 | 定制生成表达式方法及装置 |
CN112306479A (zh) * | 2020-10-10 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种基于抽象语法的代码可视化分析方法及装置 |
CN114253549A (zh) * | 2021-12-03 | 2022-03-29 | 胡云锋 | 一种基于语法树AST编辑实现的JavaScript混淆方法 |
CN117171741A (zh) * | 2023-07-26 | 2023-12-05 | 奇安信科技集团股份有限公司 | 代码缺陷分析方法及装置 |
Non-Patent Citations (5)
Title |
---|
ADAM DULEY 等: "Vdiff: a program differencing algorithm for Verilog hardware description language", 《AUTOMATED SOFTWARE ENGINEERING》, vol. 19, no. 4, 9 May 2012 (2012-05-09), pages 459, XP035097507, DOI: 10.1007/s10515-012-0107-6 * |
QINLIN CHEN 等: "The Essence of Verilog: A Tractable and Tested Operational Semantics for Verilog", 《PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES》, vol. 7, 16 October 2023 (2023-10-16), pages 234, XP059181863, DOI: 10.1145/3622805 * |
毛侠: "面向可编程逻辑控制器的功能安全形式化建模与验证方法研究", 《中国博士学位论文全文数据库 信息科技辑》, no. 12, 15 December 2022 (2022-12-15), pages 140 - 5 * |
邓茜 等: "基于C语言程序分析验证技术的Verilog代码验证方法", 《计算机工程与科学》, vol. 45, no. 12, 15 December 2023 (2023-12-15), pages 2146 - 2154 * |
陈天蔚: "Verilog代码可疑漏洞检测系统设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 01, 15 January 2023 (2023-01-15), pages 135 - 812 * |
Also Published As
Publication number | Publication date |
---|---|
CN117743658B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221832B2 (en) | Pruning engine | |
US10146532B2 (en) | Apparatus and method for detecting code cloning of software | |
US10705943B2 (en) | Automating identification of test cases for library suggestion models | |
US8028276B1 (en) | Method and system for generating a test file | |
US8132156B2 (en) | Methods and systems for testing tool with comparative testing | |
CA2675332C (en) | Framework for automatically merging customizations to structured code that has been refactored | |
US20010037492A1 (en) | Method and apparatus for automatically extracting verification models | |
Geneves et al. | On the analysis of cascading style sheets | |
Fu et al. | Model checking XML manipulating software | |
Liu et al. | Identifying renaming opportunities by expanding conducted rename refactorings | |
Srikanth et al. | Complexity verification using guided theorem enumeration | |
Hague et al. | Detecting redundant CSS rules in HTML5 applications: a tree rewriting approach | |
US20150193213A1 (en) | Computer Implemented System and Method for Checking a Program Code | |
Peruma et al. | Using grammar patterns to interpret test method name evolution | |
Balachandran | Fix-it: An extensible code auto-fix component in review bot | |
US8225275B2 (en) | System and method for providing indicators of textual items having intrinsic executable computational meaning within a graphical language environment | |
Kremer et al. | ddsmt 2.0: Better delta debugging for the smt-libv2 language and friends | |
CN112328226B (zh) | 一种嵌入式系统自动化测试代码生成方法及装置 | |
Bajwa et al. | NL2 Alloy: A Tool to Generate Alloy from NL Constraints. | |
CN117743658B (zh) | 一种约束信息的集中可视化方法、电子设备及存储介质 | |
Anderson et al. | Supporting analysis of SQL queries in PHP AiR | |
Liu et al. | Simplifying the analysis of software design variants with a colorful alloy | |
Carvalho et al. | DMOSS: Open source software documentation assessment | |
EP2535813B1 (en) | Method and device for generating an alert during an analysis of performance of a computer application | |
Yusuf et al. | An automatic approach to measure and visualize coupling in object-oriented programs |
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 |