CN113255272A - 语句块封装方法、装置、电子设备及存储介质 - Google Patents
语句块封装方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113255272A CN113255272A CN202110606072.0A CN202110606072A CN113255272A CN 113255272 A CN113255272 A CN 113255272A CN 202110606072 A CN202110606072 A CN 202110606072A CN 113255272 A CN113255272 A CN 113255272A
- Authority
- CN
- China
- Prior art keywords
- module
- current processing
- processing module
- statement
- statement block
- 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
- 238000004806 packaging method and process Methods 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 269
- 230000011218 segmentation Effects 0.000 claims abstract description 85
- 238000013461 design Methods 0.000 claims abstract description 16
- 238000005538 encapsulation Methods 0.000 claims description 30
- 238000005192 partition Methods 0.000 claims description 15
- 230000009471 action Effects 0.000 claims description 4
- 235000000332 black box Nutrition 0.000 claims description 3
- 230000002441 reversible effect Effects 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 claims description 2
- 238000004220 aggregation Methods 0.000 claims description 2
- 238000012856 packing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 17
- 239000002131 composite material Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 7
- 230000015572 biosynthetic process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000003786 synthesis reaction Methods 0.000 description 6
- 230000004931 aggregating effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 239000003292 glue Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 150000001875 compounds Chemical group 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- 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/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Stored Programmes (AREA)
Abstract
本说明书实施例提供一种语句块封装方法、装置、电子设备及存储介质,应用于电子设计自动化技术领域,其中封装方法包括:根据RTL分割工具获得的分割边界确定若干待封装语句块;遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,依据黑盒信号聚类子模块和语句块进行封装处理。通过以黑盒信号为纽带进行封装处理,使得RTL分割工具适用于对不同语法规则下的子模块和语句块进行封装处理,提高处理效率,实现快速布局规划。
Description
技术领域
本发明涉及电子设计自动化技术领域,具体涉及一种语句块封装方法、装置、电子设备及存储介质。
背景技术
RTL(Register Transfer Level,寄存器转换级电路)分割工具的作用是将用户的芯片逻辑设计代码分割为若干部分的代码,分别运行在不同的FPGA(Field ProgrammableGate Array,现场可编程逻辑门阵列)上,其中FPGA之间通过互连线相互通信,FPGA可以进行并行综合和逻辑验证。其中,RTL分割工具的处理流程大致是:确定分割边界、封装语句块、形成图结构、图分割、图分割结果转回RTL级语言,从而便于综合工具对各部分RTL进行逻辑综合、布局布线等处理。
在利用RTL分割工具进行分割时,要求分割结果不应改变用户设计的逻辑,也要求尽可能少地改变用户原有代码的内容和层次结构等,以及能够根据分割结果还原用户原有代码的逻辑。
现有方案是直接扫描语句块的语法结构,分析并提取输入输出端口信号,并根据提取的信号对分割代码进行封装。
但是,在遇到含有复合结构的语句块时,如含有如interface/package/struct等复合结构体的语句块,需要深入到这些结构体内部,搜索并分析其语法和信号,而这些复合结构体的内部结构特别复杂,所涉及的语法类型数量都极其庞大,需要构建专用的语法解析库来匹配所有语法规则,才能保证正确解析。
另外,在将这些含有复杂结构的语句块封装为新module(模块)后,新module的代码形式与写法与用户原始设计存在不同,并且新module的代码变化属于不可逆,与RTL分割工具要求在切割边界模块以外的区域尽量减少对用户原始代码的修改相违背。
因此,亟需一种针对RTL分割语句块进行封装的新方案。
发明内容
有鉴于此,本说明书实施例提供一种语句块封装方法、装置、电子设备及存储介质,提高RTL分割工具的处理效率,实现快速布局规划。
本说明书实施例提供以下技术方案:
本说明书实施例提供一种语句块封装方法,包括:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
本说明书实施例还提供一种语句块封装装置,包括:
确定模块,根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历模块,遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
合并模块,扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
本说明书实施例还提供一种用于语句块封装的电子设备,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
本说明书实施例还提供一种用于语句块封装的计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含黑盒信号的语句块聚合为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以替换所述当前处理模块中包含黑盒信号的语句块;若所述当前处理模块中未包含黑盒信号,则扫描所述当前处理模块中的各待封装语句块,提取端口信息,根据提取的端口信息将各待封装语句块聚合为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述当前处理模块中的各待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:
通过以黑盒信号为线索和纽带,在当前module内部,将与黑盒信号相关的模块(可包括子模块、语句块等)通过聚类成更大的模块(module),收回黑盒信号至新模块的内部信号,可避免递归搜索、深入分析黑盒内部嵌套结构,避免分析、提取内部信号互联关系和逻辑关系、语法,虽然模块被聚类,分割边界加以调整,但因为复合型结构体的作用域通常是有限的,对分割结果的最终影响是较小的;同时,通过本说明书提供的封装方案进行封装操作后,便于把RTL转超图阶段的如信号提取、封装、聚类等操作在获得分割结果后反向执行来还原用户的原始代码和层级,未破坏源代码结构,减少引入错误的风险,实现RTL分割工具快速布局规划。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是硬件电路描述语言描述的电路模块的结构示意图。
图2是对语句块进行封装的示意图。
图3是本说明书实施例提供的一种语句块封装方案的结构示意图。
图4是本说明书实施例提供的一种语句块封装方法的流程图。
图5是本说明书实施例提供的一种语句块封装方法中模块语句之间合并封装前的结构示意图。
图6是本说明书实施例提供的一种语句块封装方法中根据需要合并的模块语句创建新模块的结构示意图。
图7是本说明书实施例提供的一种语句块封装方法中将合并获得的新模块更新到原模块中的结构示意图。
图8是本说明书实施例提供的一种语句块封装方法中模块语句与语句块之间合并封装前的结构示意图。
图9是本说明书实施例提供的一种语句块封装方法中根据需要合并的语句创建新模块的结构示意图。
图10是本说明书实施例提供的一种语句块封装方法中将合并获得的新模块更新到原模块中的结构示意图。
图11是本说明书实施例提供的一种语句块封装方法中根据多个需要合并的语句块创建新模块的结构示意图。
图12是本说明书实施例提供的一种语句块封装方法中将合并获得的新模块更新到原模块中的结构示意图。
图13是本说明书实施例提供的一种语句块封装方法中语句块之间合并封装前的结构示意图。
图14是本说明书实施例提供的一种语句块封装方法中根据需要合并的语句块创建新模块的结构示意图。
图15是本说明书实施例提供的一种语句块封装方法中将合并获得的新模块更新到原模块中的结构示意图。
图16是本说明书实施例提供的一种语句块封装装置的结构示意图。
图17是本说明书实施例提供的一种用于语句块封装的电子设备的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本申请,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目和方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本申请的基本构想,图式中仅显示与本申请中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等描述的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
电路模块之间经常存在一些连接关系,比如通信、逻辑控制等,而且采用硬件描述语言设计的电路中,如时钟信号、复位信号等,常常出现在多个module(模块)中,这些信号也常见于assign/always语句块、实例化语句中,从而通过assign/always语句块、实例化语句等表达简单逻辑电路,以通过简单逻辑电路连接出复杂逻辑电路。
通常,电路模块间的连接或时序逻辑关系可称为胶合逻辑(glue logic),其中胶合逻辑可为组合逻辑或时序逻辑。如图1所示,在module中典型胶合逻辑可为assign/always语句块。
目前RTL分割工具中,封装常常指将如assign/always语句块等非模块代码封装成module形式,通过将非模块代码自动处理成module的形式,基于形成的module,记录下正确的语句块与图结构中节点的对应关系以及节点之间的连接关系,其中assign/always是指包含在某个module中的一段代码逻辑。
现有封装方案是直接扫描需要进行封装的代码块的语法结构,分析并提取输入输出端口信号的方式进行封装。
如图2所示,当需要将位于某个module中的一个always语句块(如图示左侧的test模块中虚线框标识的always代码块)进行封装时,首先是将该always语句块从该module中提取出来(如图示中部标识),然后分析并提取其输入输出端口信号,再根据端口信号将该语句块封装成对应module形式(如图示右侧标识)。
但在一些硬件描述和验证语言的语法规则中,比如system verilog语言,可支持采用复合结构进行描述电路。比如 assign/always语句块的内部均可以包含如interface/package/struct等复合结构体,同时这些复合结构体的内部又可以嵌套有一些结构体,比如其他复杂结构,与其本身同类型结构,其他复杂数据类型如数组、枚举等等,即assign/always语句块内可能嵌套有若干结构。
因此,现有封装方案需要先进入到这些语句块中,提取出所有结构体中的输入、输出等信号,即需要深入到如interface/package/struct等复杂结构体内部搜索、分析其语法和信号,需要构建专用的语法解析库来匹配所有语法规则来正确解析,造成封装难度大、处理速度慢等。
还有,分割工具并非是语法解析器,很难胜任对结构体的解析工作。另外,即便能够成功深入复合结构体内部,获得封装需要的输入输出信号类型、名称、数量,能够成功地将always/assign语句块封装成新module。但是,通过递归搜索、深入复合结构体内部(可能还有嵌套结构需要递归搜索等)分析获得的深层通信信号,将必会被提取至新module的端口中,而这种深层次的信号抽取,将不可逆地破坏用户源代码的结构,因而在超图(图分割结果)转RTL的最后阶段,程序无法根据用户的源代码和分割结果还原为原始设计的内容和层级。
以及,RTL 分割工具难以分析处理如system verilog等语言中变化多样、种类繁多的语法特征,因而在面对未知语法特征时往往只能中断当前分割流程,导致难以正确提取封装模块的输入输出信号,无法进行封装,导致整体分割过程无法进行。而且,RTL分割工具的一个基本原则是需要保护用户非边界原始代码的结构层次和内容不变,这是因为RTL分割的职责是帮助用户分割逻辑,而不是修改代码写法,因而通过深入复合结构体后进行封装,可能存在引入意外语法错误、破坏源代码可读性、破坏设计模式等风险。
最后,RTL分割工具的定位是为用户的设计进行快速、初步布局规划,而深入复合结构体内部进行详尽的语法细节分析耗时耗力,不利于快速给出分割结果。
因此,发明人针对分割边界对应的语句块进行封装,提出一种新封装方案。
如图3所示,在新封装方案中,以黑盒信号为线索和纽带,在黑盒信号的作用域(可称为当前处理模块(即module))的内部,比如黑盒信号d的作用域仅为top模块内部,进而可将与黑盒信号相关的代码功能块(其中代码功能块可包括进行实例化子模块的语句和/或如always/assign等语句块(block)),比如语句块2至语句块4,聚合封装成新模块(module),比如combine_module模块,从而将黑盒信号收回至新module的内部信号中,可避免对包含有黑盒信号的语句块进行内部嵌套结构的递归搜索、深入分析,避免分析、提取内部信号的互联关系和逻辑关系、语法等。
需要说明的是,如图中所示的top模块中,其他非黑盒信号,比如内部信号c,如果内部信号c只被语句块2-语句块4等所用,在将语句块2-语句块4封装为新模块时,内部信号c也可以像黑盒信号d一样放进combine_module新模块中,如果内部信号c除了被语句块2-语句块4使用外,还被其他语句块所用,则内部信号c应留在top模块中,且在combine_module新模块的端口中进行声明,下面说明中不再赘述。
需要说明的是,如图中所示的top模块中,其他待封装语句块因未包含黑盒信号,比如未包含黑盒信号的语句块1,可独立封装为新模块,并采用封装的新模块对应替换该语句块,下面说明中不再赘述。
需要说明的是,黑盒信号可包括RTL分割工具未支持的信号类型的信号,比如复合结构体信号类型的信号,比如未有对应解析规则可以进行解析的信号类型的信号,通过将这些信号作为黑盒信号进行处理,可在封装时无需进入到包含黑盒信号的语句块内部(比如复合结构体)进行递归搜索、深入嵌套结构进行语法分析和信号抽取,而是将这些黑盒信号相关的语句块聚合形成新模块,便于完成语句块封装。
其中,复合结构体可包括由某种语言的语法规则支持的复合结构信号类型构成的结构体,比如system verilog语言支持的复合结构信号类型,如interface/package/struct等;未有对应解析规则可以进行解析的信号类型可包括如未列入白名单库的信号类型,其中该白名单库可以是工具内部建立的、在封装语句块中可以正确处理的信号类型的清单,比如简单类型信号(如wire, register等),封装时白名单中的信号类型可直接提取端口和封装成模块module,无需深入、递归搜索,以及分析其内部嵌套结构和语法。还有,使用白名单库可不断扩展对复杂信号类型的支持范围,这样白名单库越大,所遇到的黑盒信号将越少。通过以黑盒信号为线索和纽带,将包含黑盒信号的语句块聚合为更大的新模块,避免了进入包含有黑盒信号的语句块内部进行递归搜索、深入嵌套结构进行语法分析和信号抽取,而且基于新模块,不仅可在综合、展开(flatten)后记录下正确的语句块与节点的对应关系以及节点之间的连接关系,进而基于正确的对应关系和连接关系,可以正确地完成节点转化为RTL语言,还可以逆向地还原用户的原始代码和层级,未破坏源代码结构,减少引入错误的风险,实现RTL分割工具快速布局规划。
以下结合附图,说明本申请各实施例提供的技术方案。
如图4所示,本说明书实施例提供一种用于RTL分割工具中对语句块进行封装的语句块封装方法,可包括:
步骤S202、根据RTL分割工具获得的分割边界确定若干待封装语句块。
实施中,RTL分割工具的作用是将用户的芯片逻辑设计分割为指定数量的不同部分,分别运行在不同的FPGA上,FPGA之间存在相应的互连线,以方便用户进行FPGA的并行综合和逻辑验证,其中分割前后用户逻辑功能应保持不变,但是分割边界处的代码必然被改动,即需要将分割边界处的代码逻辑进行切割,因而需要将切割前的代码进行封装,其中封装是指把代码处理成module的形式,只有将语句块封装成module的形式,才能在综合、展开(flatten)后记录下正确的语句块与图结构中节点的对应关系以及节点之间的连接关系,有了正确的对应关系和连接关系才能正确完成节点转化为RTL语言,相反若不进行封装则在综合后将找不回该语句块以及综合后网表的对应关系,相当于丢失了此语句块。
实施中,可通过分割边界搜索模块找到分割边界,然后在找到分割边界后,可获知哪些模块中的内部子模块和语句块需要成为图结构中的节点参与分割,进而获知哪些语句块有封装的需要。
因此,RTL分割工具可以根据每条分割边界,来确定出该分割边界所对应的哪些语句块需要进行封装。
在一些实施方式中,可将处于边界之中和/或边界之上的语句块确定为待封装语句块。
需要说明的是,这里的语句块是指一个语法上自成体系的单位,它由在语法上有关连的一组代码构成,例如verilog语言中的always语句块、assign语句块等。
步骤S204、遍历每个待封装语句块,其中针对当前遍历中当前待封装语句块,将其所在的模块作为当前处理模块。
实施中,可从某个分割边界开始遍历该分割边界对应的各个待封装语句块。
在遍历中,可在语法树中快速获得当前遍历的待封装语句块,将该语句块所在的模块(module)作为当前处理模块。
在一些实施方式中,可通过语法分析来确定当前语句块所在的模块。
实施中,可在确定待封装语句块前,先读入所有要封装的语句块进入内存列表,比如读入用户的原始设计,即用户源代码,并在内存中生成语法实例(Instance)树,从而根据语法实例树可快速确定出语句块所在的模块,也可根据语法实例树快速遍历每个待封装语句块。
步骤S206、扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,其中,黑盒信号包括RTL分割工具未支持的信号类型的信号。
若当前处理模块中存在黑盒信号,则执行步骤S208,否则执行步骤S214。
步骤S208、在确定当前处理模块中存在黑盒信号时,根据黑盒信号所在的层级进行相应处理。
实施中,可先针对当前处理模块的对外端口信号进行遍历,以确定对外端口信号中是否存在黑盒信号,若是则执行步骤S210,即放弃对当前处理模块的处理转而处理其父模块,若否则执行步骤S212,即对当前处理模块进行处理。
步骤S210、将实例化当前处理模块的父模块作为新的当前处理模块,从而放弃对原来的当前处理模块进行处理,转而对新的当前处理模块进行处理。
实施中,若当前处理模块的端口中有黑盒信号,如果封装其内部语句块,就要知道黑盒信号模块外的连接关系,即需要深入分析这些黑盒信号的连接关系,实际处理中分割工具将无法处理。因此,如果当前处理模块的端口中有黑盒信号,可转而处理实例化它的父模块,这样当处理父模块的时候,原来的模块被当作黑盒,即能看见模块名字和端口列表,但是看不见内部实现,避免分割工具需要深入到黑盒信号的对外连接关系变得无法处理而发生中断。
步骤S212、将包含有同一黑盒信号的语句块和/或子模块聚合为新模块(比如第一模块),并将新模块进行实例化更新到当前处理模块中以替换当前处理模块中包含黑盒信号的语句块和/或子模块。
实施中,在将黑盒信号相关的语句块和/或子模块处理后,对应未包含有黑盒信号的其他待封装语句块,可依次各自封装为对应的新模块,以及将新模块对应地替换原语句块,这里不再展开说明。
步骤S214、对当前处理模块中各待封装语句块分别执行:扫描待封装语句块,提取该待封装语句块的端口信息,根据提取的端口信息将所述待封装语句块封装为对应的新模块(比如第二模块),并将新模块进行实例化更新到当前处理模块中以替换封装前的所述待封装语句块。
例如,针对未包含有黑盒信号的多个always/assign等语句块,可分别封装为各自对应的新module,进而将新module对应地替换这些always或者assign语句块。封装为新module时,可根据该always/assign等语句块中存在哪些输入、输出信号以及它们的信号类型来提取端口信息,新建并命名一个子模块以包含此语句块中的逻辑,并将输入输出作为该子模块的参数列举出来。
需要说明的是,对于端口中不含黑盒信号的子模块,鉴于其本身就是模块,因而并不需要重新封装为新模块,即不做封装处理。
通过步骤S202至步骤S214,针对各条分割边界获得各待封装语句块,通过以黑盒信号为线索和纽带,根据黑盒信号的作用域对应的代码层级和结构进行聚合形成新module,比如当前处理模块中对外端口信号未包含黑盒信号,仅模块中的语句块和/或子模块中包含有黑盒信号,这时可将这些包含同一个黑盒信号的语句块和/或子模块封装为新module,通过新module记录下这些语句块和/或子模块的逻辑;相反,在当前处理模块的对外端口信号中包含黑盒信号,意味着当前处理模块是通过黑盒信号(比如复合结构体信号)对外有连接关系,因而可选择不分析该复合结构的内部信号和语法,即放弃对此module的处理,转而处理其父module。
通过前述步骤处理,所有语句块均得到处理,即语句块封装中,均以黑盒信号为线索,可避免递归搜索、深入分析黑盒内部嵌套结构,避免分析、提取内部信号互联关系和逻辑关系、语法,虽然可能聚类(即聚合)出更大的module,但因为复合型结构体的作用域通常是有限的,因而对分割结果的最终影响是较小的;同时,这样聚类方案因为没有抽取黑盒信号(比如复合结构)的深层次信号,也没有破坏源代码结构,可以逆向还原用户的原始代码和层级。
在一些实施方式中,在确定当前处理模块是否存在黑盒信号中,可先对当前处理模块的对外端口信息中是否存在黑盒信号,再扫描当前处理模块内部的各个语句块、子模块是否包含黑盒信号,可提高处理效率。
实施中,先遍历所述当前处理模块的对外端口信号,若遍历后未发现所述对外端口信号中包含有黑盒信号,则再扫描所述当前处理模块中各语句块、子模块,来确定当前模块是否包含有黑盒信号。
在一些实施方式中,在对当前处理模块中的语句块、子模块进行扫描时,可采用队列来记录扫描到的黑盒信号,便于后续对每个包含黑盒信号的语句块进行封装处理,提高处理效率。
实施中,所述语句块封装方法还可包括以下步骤:建立黑盒信号队列,将所述黑盒信号对应的队列元素信息存储于所述黑盒信号队列,所述队列元素信息用于表征黑盒信号在语句块和/或子模块中的信号属性。
需要说明的是,队列元素信息可根据应用需要而设置,比如用于表征信号属性的数据可包括以下至少一种信息:信号名称、信号类型、信号方向、信号所属结构体等信息。
在一些实施方式中,可采用先进先出队列作为黑盒信号队列,从而在后续处理中依据进入队列中的先后顺序依次处理,可提高处理效率。
在一些实施方式中,在采用队列后,可通过遍历队列中的各个队列元素信息来依次将包含有同一黑盒信号的语句块和/或子模块进行聚合封装为module形式。
实施中,在将所述当前处理模块中包含同一黑盒信号的语句块和/或子模块聚合封装为新模块时,可包括:逐一弹出(POP)队列中元素进行处理,即通过依次弹出所述黑盒信号队列中各队列元素信息来依次完成对包含该元素对应的相同黑盒信号的语句块和/或子模块进行聚合封装处理。
在遍历中,针对当前队列元素信息,可执行以下步骤:
搜索所述当前处理模块中各语句块和/或各子模块,即对当前处理模块中的各个语句块和/或子模块进行扫描搜索;
然后将包含所述当前队列元素信息的语句块和/或子模块作为语句项收集起来,比如包含同一个黑盒信号的语句块、子模块分别作为语句项形成待处理语句项集合;
接着,对收集所得的语句项进行合并操作,即对包含有同一黑盒信号的语句块和/或子模块进行合并操作封装为新module。
需要说明的是,这里的语句项可为由若干语句构成的语句块和/或子模块等,语句项用于表达某个设计逻辑,比如进行子模块(sub module)实例化的模块实例化语句,比如对信号进行逻辑处理的语句块,如always语句块、assign语句块等。
实施中,合并操作可为合并为一个新模块(new module)的操作,从而通过合并所得的新module来封装各个语句块和/或子模块,使得后续RTL分割中能够正确地记录这些语句块在图结构中的逻辑。其中,合并操作可以包括以下几种形式:
(1)多个实例化子模块(sub module)进行合并,即module之间的合并;
(2)若干个表达逻辑处理的语句块进行合并,即语句块之间的合并;
(3)子模块与语句块之间的合并,即module与语句块的合并。
实施中,合并规则可为:将彼此间的通信信号收回并作为内部信号进行声明;将其他对外输入输出信号进行并集操作,作为新module的端口,判断彼此包含的黑盒信号是否在当前操作模块范围内只存在于新module中,如果是,则收回此黑盒信号至新module内部作为内部通信信号;如果不是,则作为新module的端口。
下面针对上述三种合并情形进行示例性说明。
示例1:module之间的合并操作。
假设当前处理模块为如图5所示top module,针对合并前的top module内部的子模块和语句块进行合并操作,top module具有一个输入信号top_signal1和一个输出信号top_signal2,而且module里面具有内部信号 inter_signal1和一个复合型结构体(Interface类型)实例 interf1,和两个使用了interf1的子模块的实例,以及其他的信号、子模块、语句块。
假如,interf1如果没有被其他子模块或语句块使用,只被sub_module1和sub_module2使用,且inter_signal1为这两个module的内部传递信号。
因此,如图6所示,根据合并操作规则,可将sub_module1和sub_module2进行合并操作,即收回interf1和inter_signal1为内部信号,创建合并后的新模块(即newmodule),创建的新模块可以如图中所示。
然后,将创建的新模块更新到topmodule中,即合并操作后的topmodule如图7所示。
示例2:module和语句块(block)之间的合并。
假设当前处理模块为如图8所示的top module,其中包含了一个always语句块(block),该语句块中使用了interf1,所以该语句块为复杂语句块,且sub_module1也使用了该interf1,需要进行合并。下面将它们进行合并操作。
假如interf1只被此always语句块和sub_module1使用,则合并结果可如图9所示,更新到topmodule后结果如图10所示。
进一步,如图11-图12所示进行示意说明,即如果interf1被topmodule内除always语句块和sub_module1的其他子模块或语句块使用,那么应该在new module(即图中的combine_sub_module_new模块)的端口中保留此interface,以完成和其他部分的进一步合并,直至使用interf1的所有子模块或语句块被合并完毕为止。
示例3:语句块之间的合并。
两个语句块之间的合并操作,与其上两种合并情形的原理相同。
假定interf1只被这两个alwaysblock所使用,合并效果如图13-图15所示。
进一步,如果有其他子模块或者语句块使用,处理方法与前述示例2中的说明内容相似,即在新子模块种保留interf1的端口,以待与其他相关部分进一步合并,不再展开说明。
在一些实施方式中,合并操作中可采用两两合并方式,依次聚合为更大的新module,可提高处理效率。
实施中,将收集的语句项进行合并操作,可包括:
将收集的语句项,按两两语句项进行合并操作形成第三模块;
将所述第三模块进行实例化更新到所述当前处理模块中以替换合并前的所述两两语句项。
在合并得到新module后,立即删除合并前的语句项,进而将合并所得的新module实例化更新到当前处理模块中以替换原来的语句项,从而利用新module记录原来语句项的逻辑,即记录原来RTL语句项的逻辑内涵。
在一些实施方式中,由于合并可能导致分割边界发生调整,这时可根据合并过程记录分割边界,便于后续对分割边界的处理。
实施中,所述语句块封装方法还可包括:判断合并操作的语句项是否为分割边界;若是,则生成第一提示信息,所述第一提示信息用于表征所述合并操作的语句项的分割边界与其他语句项进行合并。
通过记录封装中分割边界的情况,可及时提示用户,便于用户了解分割边界在封装过程中的调整情况。
在一些实施方式中,在封装中,可将每次合并操作进行记录,形成合并操作的操作记录。
实施中,可采用栈数据结构存储该操作记录,即在每次合并操作后,将操作记录存入栈数据结构中,其中所述操作记录中可包括合并操作的对象、动作和端口信息,方便根据操作记录进行后续处理。
在一些实施方式中,可采用先进后出的栈数据结构来存储操作记录,可方便进行逆向操作恢复用户源代码的内容和层级。
进一步,可依据先进后出的栈数据结构,在超图转RTL阶段依次弹出所述堆栈中的操作记录,逆向操作还原原始设计代码逻辑,比如用户源代码的内容和层级。
在一些实施方式中,在遍历处理,可将已封装为新module的语句块标记为已处理,从而可逐一遍历未处理的语句项,简化处理过程,提高处理效率。
在一些实施方式中,分割边界可能处于当前处理模块中,而在放弃对当前处理模块处理转而处理其父模块时,这时分割边界应作相应调整。
实施中,在所述当前处理模块中的对外端口信号中存在黑盒信号时,所述语句块封装方法还可包括:生成第二提示信息,所述第二提示信息用于表征将分割边界移至上一层模块。
通过提示用户分割边界的调整,及时提醒用户,以免切割到用户并不想切割的地方。
基于相同发明构思,本说明书实施例还提供与前述封装方法对应的语句块封装装置、电子设备以及计算机存储介质。
图16为本说明书实施例提供的一种语句块封装装置。
如图16所示,语句块封装装置包括:确定模块401,根据RTL分割工具获得的分割边界确定若干待封装语句块;遍历模块403,遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;以及合并模块405,扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
可选地,所述语句块封装装置还可包括:实例树模块(图中未示出),在根据分割边界确定待封装语句块前,将设计代码读入内存中,以及在内存中生成所述设计代码对应的语法实例树。
可选地,遍历每个待封装语句块,包括:通过所述语法实例树遍历每个待封装语句块。
可选地,扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,包括:遍历所述当前处理模块的对外端口信号;若所述对外端口信号中未包含有黑盒信号,则扫描所述当前处理模块中各语句块和/或子模块中是否包含有黑盒信号。
可选地,所述语句块封装装置还可包括:队列模块(图中未示出),建立黑盒信号队列,将所述黑盒信号对应的队列元素信息存储于所述黑盒信号队列,所述队列元素信息用于表征黑盒信号在语句块和/或子模块中的信号属性。
可选地,所述黑盒信号队列的结构包括先进先出的队列结构。
可选地,将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,包括:遍历所述黑盒信号队列中各队列元素信息,遍历中针对当前队列元素信息,执行:搜索所述当前处理模块中各语句块和/或子模块,收集包含所述当前队列元素信息的语句块和/或子模块作为语句项,将收集的语句项进行合并操作。
可选地,将收集的语句项进行合并操作,包括:将收集的语句项,按两两语句项进行合并操作形成第三模块;将所述第三模块进行实例化更新到所述当前处理模块中以替换合并前的所述两两语句块项。
可选地,所述语句块封装装置还可包括:第一提示模块(图中未示出),判断合并操作的语句项是否为分割边界,若是,则生成第一提示信息,所述第一提示信息用于表征所述合并操作的语句项的分割边界与其他语句项进行合并。
可选地,所述语句块封装装置还可包括:第一记录模块(图中未示出),将每次合并操作的操作记录存储于栈数据结构中,所述操作记录包括合并操作的对象、动作和端口信息。
可选地,所述栈数据结构包括先进后出的数据结构。
可选地,所述语句块封装装置还可包括:还原模块(图中未示出),在超图转RTL阶段,依次弹出所述栈数据结构中的操作记录,逆向操作还原原始设计代码逻辑。
可选地,所述封装装置还可包括:第二记录模块(图中未示出),在根据提取的端口信息将所述待封装语句块封装为第二模块后,将已封装为所述第二模块的所述待封装语句块作标记。
可选地,所述语句块封装装置还可包括:第二提示模块(图中未示出),在确定出所述当前处理模块中的对外端口信号中存在黑盒信号时,生成第二提示信息,所述第二提示信息用于表征将分割边界移至上一层模块。
基于相同发明构思,本说明书实施例提供一种用于语句块封装的电子设备。
如图17所示,本发明还提供的电子设备的结构示意图,图中示出了电子设备500的结构,以用于实现前述的语句块封装方案,这里电子设备500仅仅是一个示例,不应对本发明实施例的功能和使用范围带来限定。
如图17所示,在电子设备500中,可包括:至少一个处理器510;以及,
与所述至少一个处理器通信连接的存储器520;其中,
所述存储器存储520有可被所述至少一个处理器510执行的指令,所述指令被所述至少一个处理器510执行,以使所述至少一个处理器510能够:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
需要说明的是,电子设备500可以以通用计算设备的形式表现,例如其可以为服务器设备。
实施中,电子设备500的组件可以包括但不限于:上述至少一个处理器510、上述至少一个存储器520、连接不同系统组件(包括存储器520和处理器510)的总线530,其中总线530可包括数据总线、地址总线和控制总线。
实施中,存储器520可以包括易失性存储器,例如随机存取存储器(RAM)5201和/或高速缓存存储器5202,还可以进一步包括只读存储器(ROM)5203。
存储器520还可以包括具有一组(至少一个)程序模块5204的程序工具5205,这样的程序模块5204包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器510通过运行存储在存储器520中的计算机程序,从而执行各种功能应用以及数据处理。
电子设备500也可以与一个或多个外部设备540(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口550进行。并且,电子设备500还可以通过网络适配器560与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信,网络适配器560通过总线530与电子设备500中的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
基于相同发明构思,本说明书实施例提供一种用于语句块封装的计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
需要说明的是,所述计算机存储介质可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以提供将数据处理实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行前述任意一个实施例所述方法中的若干步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明中的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例侧重说明的都是与其他实施例的不同之处。尤其,对于后面说明的产品实施例而言,由于其与方法是对应的,描述比较简单,相关之处参见方法实施例的部分说明即可。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (17)
1.一种语句块封装方法,其特征在于,包括:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:
若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;
若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;
若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
2.根据权利要求1所述的语句块封装方法,其特征在于,在根据分割边界确定待封装语句块前,所述语句块封装方法还包括:
将设计代码读入内存中;
在内存中生成所述设计代码对应的语法实例树。
3.根据权利要求2所述的语句块封装方法,其特征在于,遍历每个待封装语句块,包括:通过所述语法实例树遍历每个待封装语句块。
4.根据权利要求1所述的语句块封装方法,其特征在于,扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,包括:
遍历所述当前处理模块的对外端口信号;
若所述对外端口信号中未包含有黑盒信号,则扫描所述当前处理模块中各语句块和/或子模块是否包含有黑盒信号。
5.根据权利要求4所述的语句块封装方法,其特征在于,所述语句块封装方法还包括:
建立黑盒信号队列;
将所述黑盒信号对应的队列元素信息存储于所述黑盒信号队列,所述队列元素信息用于表征黑盒信号在语句块和/或子模块中的信号属性。
6.根据权利要求5所述的语句块封装方法,其特征在于,所述黑盒信号队列的结构包括先进先出的队列结构。
7.根据权利要求5所述的语句块封装方法,其特征在于,将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,包括:
遍历所述黑盒信号队列中各队列元素信息,遍历中针对当前队列元素信息,执行:
搜索所述当前处理模块中各语句块和/或子模块;
收集包含所述当前队列元素信息的语句块和/或子模块作为语句项;
将收集的语句项进行合并操作。
8.根据权利要求7所述的语句块封装方法,其特征在于,将收集的语句项进行合并操作,包括:
将收集的语句项,按两两语句项进行合并操作形成第三模块;
将所述第三模块进行实例化更新到所述当前处理模块中以替换合并前的所述两两语句项。
9.根据权利要求7所述的语句块封装方法,其特征在于,所述语句块封装方法还包括:
判断合并操作的语句项是否为分割边界;
若是,则生成第一提示信息,所述第一提示信息用于表征所述合并操作的语句项的分割边界与其他语句项进行合并。
10.根据权利要求7所述的语句块封装方法,其特征在于,所述语句块封装方法还包括:
将每次合并操作的操作记录存储于栈数据结构中,所述操作记录包括合并操作的对象、动作和端口信息。
11.根据权利要求10所述的语句块封装方法,其特征在于,所述栈数据结构包括先进后出的数据结构。
12.根据权利要求11所述的语句块封装方法,其特征在于,所述语句块封装方法还包括:
在超图转RTL阶段,依次弹出所述栈数据结构中的操作记录,逆向操作还原原始设计代码逻辑。
13.根据权利要求1所述的语句块封装方法,其特征在于,在根据提取的端口信息将所述待封装语句块封装为第二模块后,所述语句块封装方法还包括:
将已封装为所述第二模块的所述待封装语句块作标记。
14.根据权利要求1所述的语句块封装方法,其特征在于,当所述当前处理模块中的对外端口信号中存在黑盒信号时,所述语句块封装方法还包括:
生成第二提示信息,所述第二提示信息用于表征将分割边界移至上一层模块。
15.一种语句块封装装置,其特征在于,包括:
确定模块,根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历模块,遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
合并模块,扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:
若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;
若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;
若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
16.一种用于语句块封装的电子设备,其特征在于,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:
若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;
若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或子模块聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;
若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
17.一种用于语句块封装的计算机存储介质,其特征在于,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令设置为:
根据RTL分割工具获得的分割边界确定若干待封装语句块;
遍历每个所述待封装语句块,其中将当前所述待封装语句块所在的模块作为当前处理模块;
扫描所述当前处理模块,确定所述当前处理模块是否包含黑盒信号,并执行:
若所述当前处理模块中的对外端口信号中存在黑盒信号,则放弃对所述当前处理模块的处理,将实例化所述当前处理模块的父模块作为新的当前处理模块进行处理;
若所述当前处理模块中的语句块和/或子模块中包含有黑盒信号,则将所述当前处理模块中包含有同一黑盒信号的语句块和/或黑盒信号聚合封装为第一模块,并将所述第一模块进行实例化更新到所述当前处理模块中以对应替换所述当前处理模块中包含所述同一黑盒信号的语句块和/或子模块;
若所述当前处理模块中未包含黑盒信号,则对所述当前处理模块中的各待封装语句块分别执行:扫描所述待封装语句块,提取端口信息,根据提取的端口信息将所述待封装语句块封装为第二模块,并将所述第二模块实例化更新到所述当前处理模块中以替换所述待封装语句块;
其中,所述黑盒信号包括RTL分割工具未支持的信号类型的信号。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606072.0A CN113255272B (zh) | 2021-06-01 | 2021-06-01 | 语句块封装方法、装置、电子设备及存储介质 |
US18/565,473 US20240256747A1 (en) | 2021-06-01 | 2021-10-27 | Statement block encapsulation method and apparatus, electronic device, and storage medium |
PCT/CN2021/126677 WO2022252481A1 (zh) | 2021-06-01 | 2021-10-27 | 语句块封装方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110606072.0A CN113255272B (zh) | 2021-06-01 | 2021-06-01 | 语句块封装方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113255272A true CN113255272A (zh) | 2021-08-13 |
CN113255272B CN113255272B (zh) | 2021-10-01 |
Family
ID=77185580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110606072.0A Active CN113255272B (zh) | 2021-06-01 | 2021-06-01 | 语句块封装方法、装置、电子设备及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240256747A1 (zh) |
CN (1) | CN113255272B (zh) |
WO (1) | WO2022252481A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113673190A (zh) * | 2021-09-07 | 2021-11-19 | 杭州云合智网技术有限公司 | 验证环境中配置对象的快速配置和传递方法、装置及设备 |
CN113947048A (zh) * | 2021-10-21 | 2022-01-18 | 杭州云合智网技术有限公司 | 用于对待测设计进行验证的接口连接方法及相关设备 |
WO2022252481A1 (zh) * | 2021-06-01 | 2022-12-08 | 上海国微思尔芯技术股份有限公司 | 语句块封装方法、装置、电子设备及存储介质 |
CN116595917A (zh) * | 2023-07-17 | 2023-08-15 | 奇捷科技(深圳)有限公司 | 无需先验知识的逻辑功能更正方法、装置、设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246960A1 (en) * | 2009-07-25 | 2011-10-06 | Irina Kleingon | Methods for software mass production |
CN105468702A (zh) * | 2015-11-18 | 2016-04-06 | 中国科学院计算机网络信息中心 | 一种大规模rdf数据关联路径发现方法 |
CN106778101A (zh) * | 2016-12-08 | 2017-05-31 | 合肥康捷信息科技有限公司 | 一种基于控制流和外形混淆的Python代码混淆方法 |
CN108319459A (zh) * | 2018-02-12 | 2018-07-24 | 张伟 | 一种行为级描述到rtl描述的ccc编译器 |
CN110941932A (zh) * | 2019-11-29 | 2020-03-31 | 大连理工大学 | 一种面向硬件逻辑设计的需求建模与验证方法 |
US10922462B1 (en) * | 2019-11-22 | 2021-02-16 | SiFive, Inc. | Intellectual property block validation and design integration for integrated circuits |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5115003B2 (ja) * | 2007-03-30 | 2013-01-09 | 日本電気株式会社 | 論理設計支援システム及びプログラム |
CN109981599B (zh) * | 2019-03-06 | 2022-01-18 | 南京理工大学 | 一种通讯数据流的通用数据解析平台及方法 |
CN112257369B (zh) * | 2020-12-21 | 2021-03-16 | 上海国微思尔芯技术股份有限公司 | 一种逻辑设计分割方法及系统 |
CN112632884B (zh) * | 2020-12-23 | 2023-03-03 | 海光信息技术股份有限公司 | 门级网表生成方法、装置及电子设备 |
CN113255272B (zh) * | 2021-06-01 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 语句块封装方法、装置、电子设备及存储介质 |
-
2021
- 2021-06-01 CN CN202110606072.0A patent/CN113255272B/zh active Active
- 2021-10-27 US US18/565,473 patent/US20240256747A1/en active Pending
- 2021-10-27 WO PCT/CN2021/126677 patent/WO2022252481A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246960A1 (en) * | 2009-07-25 | 2011-10-06 | Irina Kleingon | Methods for software mass production |
CN105468702A (zh) * | 2015-11-18 | 2016-04-06 | 中国科学院计算机网络信息中心 | 一种大规模rdf数据关联路径发现方法 |
CN106778101A (zh) * | 2016-12-08 | 2017-05-31 | 合肥康捷信息科技有限公司 | 一种基于控制流和外形混淆的Python代码混淆方法 |
CN108319459A (zh) * | 2018-02-12 | 2018-07-24 | 张伟 | 一种行为级描述到rtl描述的ccc编译器 |
US10922462B1 (en) * | 2019-11-22 | 2021-02-16 | SiFive, Inc. | Intellectual property block validation and design integration for integrated circuits |
CN110941932A (zh) * | 2019-11-29 | 2020-03-31 | 大连理工大学 | 一种面向硬件逻辑设计的需求建模与验证方法 |
Non-Patent Citations (2)
Title |
---|
J. LAN 等: "An Automatic Chip-Package Co-Design Flow for Multi-core Neuromorphic Computing SiPs", 《2020 IEEE 22ND ELECTRONICS PACKAGING TECHNOLOGY CONFERENCE (EPTC)》 * |
宋杰 等: "面向代码的软件能耗优化研究进展", 《计算机学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022252481A1 (zh) * | 2021-06-01 | 2022-12-08 | 上海国微思尔芯技术股份有限公司 | 语句块封装方法、装置、电子设备及存储介质 |
CN113673190A (zh) * | 2021-09-07 | 2021-11-19 | 杭州云合智网技术有限公司 | 验证环境中配置对象的快速配置和传递方法、装置及设备 |
CN113673190B (zh) * | 2021-09-07 | 2022-05-10 | 杭州云合智网技术有限公司 | 验证环境中配置对象的快速配置和传递方法、装置及设备 |
CN113947048A (zh) * | 2021-10-21 | 2022-01-18 | 杭州云合智网技术有限公司 | 用于对待测设计进行验证的接口连接方法及相关设备 |
CN116595917A (zh) * | 2023-07-17 | 2023-08-15 | 奇捷科技(深圳)有限公司 | 无需先验知识的逻辑功能更正方法、装置、设备及介质 |
CN116595917B (zh) * | 2023-07-17 | 2023-10-17 | 奇捷科技(深圳)有限公司 | 无需先验知识的逻辑功能更正方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022252481A1 (zh) | 2022-12-08 |
CN113255272B (zh) | 2021-10-01 |
US20240256747A1 (en) | 2024-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113255272B (zh) | 语句块封装方法、装置、电子设备及存储介质 | |
JP4768896B1 (ja) | 製造ワークフローの為のチップデザインにおけるセルの整合性、変更、由来を独立評価する方法、及び、装置 | |
US7685545B2 (en) | Methods and devices for independent evaluation of cell integrity, changes and origin in chip design for production workflow | |
US10360294B2 (en) | Methods and systems for efficient and accurate text extraction from unstructured documents | |
JP4940973B2 (ja) | 論理構造認識処理プログラム、論理構造認識処理方法および論理構造認識処理装置 | |
US8504968B2 (en) | Method to determine high level power distribution and interface problems in complex integrated circuits | |
CN113255258B (zh) | 逻辑综合方法、装置、电子设备及存储介质 | |
CN110612526A (zh) | 系统c模型生成方法和系统c模型生成程序 | |
CN112988163A (zh) | 编程语言智能适配方法、装置、电子设备和介质 | |
CN114692532A (zh) | 芯片系统的集成方法、装置及计算机可读存储介质 | |
US11651126B2 (en) | Recovery of a hierarchical functional representation of an integrated circuit | |
CN110286912A (zh) | 代码检测方法、装置及电子设备 | |
CN111353264A (zh) | Xdl电路网表的前向电路图构建方法 | |
US10839117B1 (en) | Robust exclusive sum-of-product (ESOP) refactoring | |
CN114330173B (zh) | 边界节点连接关系获取方法、装置、设备和存储介质 | |
Flanagan et al. | Modular and polymorphic set-based analysis: Theory and practice | |
CN111368513A (zh) | Xdl电路网表文件到有向超图的转换方法 | |
US7350162B2 (en) | Structure analytic program | |
US6691288B1 (en) | Method to debug IKOS method | |
CN114792079A (zh) | 一种门级网表转换为可综合硬件描述语言代码的方法 | |
CN117707514A (zh) | 一种图形化应用逻辑开发系统、方法、设备及介质 | |
JP2001109621A (ja) | ソフトウェア仕様書生成方法およびソフトウェア仕様書生成装置 | |
Rowe | Modeling Data With Functional Programming In R | |
JPH06251102A (ja) | 回路設計方法と回路検索方法と回路修正方法および回路設計装置 | |
WO2013158826A1 (en) | Method to determine high level power distribution and interface problems in complex integrated circuits |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 27, 6th floor, No. 29 and 30, Lane 1775, Qiushan Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee after: Shanghai Sierxin Technology Co.,Ltd. Address before: Room 27, 6th floor, No. 29 and 30, Lane 1775, Qiushan Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306 Patentee before: Shanghai Guowei silcore Technology Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |