CN116821437A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116821437A CN116821437A CN202311098811.5A CN202311098811A CN116821437A CN 116821437 A CN116821437 A CN 116821437A CN 202311098811 A CN202311098811 A CN 202311098811A CN 116821437 A CN116821437 A CN 116821437A
- Authority
- CN
- China
- Prior art keywords
- current
- target
- string
- character string
- data processing
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 57
- 230000004044 response Effects 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 239000007787 solid Substances 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000000926 separation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 241000282312 Proteles Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请关于一种数据处理方法、装置、电子设备及存储介质,所述数据处理方法包括:接收用户输入的用于在目标设计文件中查找对象的数据处理指令;按照所述目标字符串中的元素的顺序,在当前容器中查找与当前查找元素对应的候选对象;响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找;返回对所述数据处理指令的查找结果。根据本申请的数据处理方法、装置、电子设备及存储介质可以解决了无法查找到名称中包括分隔符的对象而导致查找失败或报错的问题,可以通过扩展查找找到相应的对象,更全面、更可靠地查找对象,提高数据处理效率。
Description
技术领域
本申请涉及集成电路技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
在集成电路电子设计自动化软件中,用户在描述对象时,通过在对象的名称之前,增加诸如斜杠“/”(slash)的层次化分隔符(hierarchical separator character)来描述对象之间的层次关系。例如,在统一功耗标准(Unified Power Format,UPF)规范中,对象的命名格式可以为“前缀名(hierarchical name)+层次化分隔符(hierarchical separatorcharacter)+实例对象名称(object name)”这样的形式。
在相关的数据处理方法中,在查找对象时,通常是按照层次化分隔符所划分的层次来逐层查找对象。然而,在一些情况下,对象名称本身可能包括与层次化分隔符相同的字符,例如对象名称中可以包括斜杠“/”,在此情况下,斜杠“/”属于对象名称的一部分,而并不表示层次的划分,如果按照相关的数据处理方法通过识别层次化分隔符来逐层查找对象,则可能会无法查找到名称中包括与层次化分隔符相同字符的对象,导致查找失败或报错,不利于提高工作效率。
发明内容
本申请提供一种数据处理方法、装置、电子设备及存储介质,以至少解决相关技术中无法查找到名称中包括与层次化分隔符相同字符的对象而导致查找失败或报错的问题。本申请的技术方案如下:
根据本申请的实施例的第一方面,提供一种数据处理方法,所述数据处理方法应用于集成电路电子设计自动化软件,其中,所述数据处理方法包括:接收用户输入的用于在目标设计文件中查找对象的数据处理指令,其中,所述数据处理指令中包括目标字符串,所述目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开;按照所述目标字符串中的元素的顺序,通过以下方式查找与所述目标字符串对应的目标对象,直到完成所述目标字符串中所有元素的查找:在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为所述目标设计文件的加载环境,当前查找元素为所述目标字符串中的首个元素;响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,所述扩展字符串包括从所述当前查找元素至与所述当前查找元素向后间隔至少一个分隔符的元素;返回对所述数据处理指令的查找结果。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,通过以下方式确定所述当前扩展字符串:确定所述当前查找元素的首字符位置,得到第一指针;确定在所述当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针,其中,所述目标扩展元素为与所述当前查找元素间隔所述至少一个分隔符的元素;将所述目标字符串中所述第一指针至所述第二指针的内容作为所述当前扩展字符串。
可选地,通过以下方式确定所述第一指针和所述第二指针:记录所述目标字符串中的每个分隔符的位置以及所述目标字符串的尾字符后的位置,得到分隔符位置序列;根据所述分隔符位置序列,确定在所述当前查找元素之前的分隔符的第一位置;基于所述第一位置,在所述分隔符位置序列中,确定在所述第一位置之后,与所述第一位置间隔目标数量个位置的第二位置,其中,所述目标数量为所述至少一个分隔符的数量;在所述目标字符串中,将所述第一位置的后一位置确定为第一指针,将所述第二位置的前一位置确定为第二指针。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,通过以下方式确定用于下一次查找的扩展字符串:响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针;基于与本次查找的扩展字符串对应的第一指针和所述更新的第二指针,确定用于下一次查找的扩展字符串。
可选地,所述数据处理方法还包括:根据可变参数,确定所述扩展字符串中包含的分隔符的目标数量,其中,所述目标数量小于或等于可变参数,其中,所述可变参数由用户指定或者为预设值。
可选地,所述目标设计文件包括至少一个展平模块,所述可变参数小于或等于由所述展平模块所包含的层次数中的最大值减1得到的值。
可选地,所述查找与所述目标字符串对应的目标对象的步骤还包括:若所述扩展查找的次数达到所述可变参数的值,则结束对所述目标字符串的查找。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述查找与所述目标字符串对应的目标对象的步骤还包括:若所述扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则将所述最大尝试字符串至所述目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串,其中,所述最大尝试字符串为与所述最大尝试次数对应的扩展字符串。
可选地,所述查找与所述目标字符串对应的目标对象的步骤还包括:响应于未查找到与扩展至所述目标字符串的尾字符的扩展字符串对应的候选对象,将所述最大尝试字符串至在所述最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
可选地,所述目标设计文件包括多个对象类型,其中,所述查找与所述目标字符串对应的目标对象的步骤还包括:在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
可选地,所述查找与所述目标字符串对应的目标对象的步骤还包括:响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,所述与当前查找到的候选对象对应的容器是所述当前容器中的子容器。
根据本申请的实施例的第二方面,提供一种数据处理装置,所述数据处理装置应用于集成电路电子设计自动化软件,其中,所述数据处理装置包括:接收单元,被配置为接收用户输入的用于在目标设计文件中查找对象的数据处理指令,其中,所述数据处理指令中包括目标字符串,所述目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开;目标对象查找单元,被配置为按照所述目标字符串中的元素的顺序,所述目标对象查找单元包括候选对象查找单元和扩展查找单元,所述目标对象查找单元通过以下方式查找与所述目标字符串对应的目标对象,直到完成所述目标字符串中所有元素的查找:所述候选对象查找单元被配置为在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为所述目标设计文件的加载环境,当前查找元素为所述目标字符串中的首个元素;所述扩展查找单元被配置为响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,所述扩展字符串包括从所述当前查找元素至与所述当前查找元素向后间隔至少一个分隔符的元素;返回单元,被配置为返回对所述数据处理指令的查找结果。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,所述扩展查找单元通过以下方式确定所述当前扩展字符串:确定所述当前查找元素的首字符位置,得到第一指针;确定在所述当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针,其中,所述目标扩展元素为与所述当前查找元素间隔所述至少一个分隔符的元素;将所述目标字符串中所述第一指针至所述第二指针的内容作为所述当前扩展字符串。
可选地,所述扩展查找单元通过以下方式确定所述第一指针和所述第二指针:记录所述目标字符串中的每个分隔符的位置以及所述目标字符串的尾字符后的位置,得到分隔符位置序列;根据所述分隔符位置序列,确定在所述当前查找元素之前的分隔符的第一位置;基于所述第一位置,在所述分隔符位置序列中,确定在所述第一位置之后,与所述第一位置间隔目标数量个位置的第二位置,其中,所述目标数量为所述至少一个分隔符的数量;在所述目标字符串中,将所述第一位置的后一位置确定为第一指针,将所述第二位置的前一位置确定为第二指针。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述扩展查找单元通过以下方式确定用于下一次查找的扩展字符串:响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针;基于与本次查找的扩展字符串对应的第一指针和所述更新的第二指针,确定用于下一次查找的扩展字符串。
可选地,所述数据处理装置还包括:目标数量确定单元,被配置为根据可变参数,确定所述扩展字符串中包含的分隔符的目标数量,其中,所述目标数量小于或等于可变参数,其中,所述可变参数由用户指定或者为预设值。
可选地,所述目标设计文件包括至少一个展平模块,所述可变参数小于或等于由所述展平模块所包含的层次数中的最大值减1得到的值。
可选地,所述目标对象查找单元还被配置为:若所述扩展查找的次数达到所述可变参数的值,则结束对所述目标字符串的查找。
可选地,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述目标对象查找单元还被配置为:若所述扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则将所述最大尝试字符串至所述目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串,其中,所述最大尝试字符串为与所述最大尝试次数对应的扩展字符串。
可选地,所述目标对象查找单元还被配置为:响应于未查找到与扩展至所述目标字符串的尾字符的扩展字符串对应的候选对象,将所述最大尝试字符串至在所述最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
可选地,所述目标设计文件包括多个对象类型,其中,所述目标对象查找单元还被配置为:在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
可选地,所述目标对象查找单元还被配置为:响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,所述与当前查找到的候选对象对应的容器是所述当前容器中的子容器。
根据本申请的实施例的第三方面,提供一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器,其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据本申请的实施例所述的数据处理方法。
根据本申请的实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据本申请的实施例所述的数据处理方法。
本申请的实施例提供的技术方案至少带来以下有益效果:
本申请的实施例可以按照目标字符串的顺序对分隔符间的元素进行查找,并且在未查找到与元素对应的候选对象的情况下,可以在当前容器中尝试至少一次扩展查找,以将元素与元素之间的分隔符也作为被查找的扩展字符串的一部分,如此,即使在对象名称中包括与层次化分隔符相同字符的情况下,也可通过扩展查找找到相应的对象,与现有的处理方案相比,能够更全面、更可靠地查找对象,提高数据处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是根据一示例性实施例示出的逻辑层次的示意设计图。
图2是根据一示例性实施例示出的一种数据处理方法的示意性流程图。
图3是根据一示例性实施例示出的一种数据处理方法中确定扩展字符串的步骤的一示例的示意性流程图。
图4是根据一示例性实施例示出的一种数据处理方法中的第一指针和第二指针的一示例的示意图。
图5是根据一示例性实施例示出的一种数据处理方法中的确定第一指针和第二指针的示意性流程图。
图6是根据一示例性实施例示出的一种数据处理方法中的确定用于下一次查找的扩展字符串的步骤的示意性流程图。
图7是根据一示例性实施例示出的一种数据处理方法中的第一指针和第二指针的另一示例的示意图。
图8是根据另一示例性实施例示出的逻辑层次的示意设计图。
图9和图10是采用根据一示例性实施例的一种数据处理方法执行对象查找的一示例的过程示意图。
图11是根据一示例性实施例示出的一种数据处理装置的框图。
图12是根据一示例性实施例示出的一种电子设备的框图。
实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请的实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本申请中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
如前所述,在集成电路电子设计自动化(Electronic Design Automation,EDA)软件中,在查找对象时,在对象名称本身包括与层次化分隔符相同的字符的情况下,现有的数据处理方法可能会无法查找到名称中包括与层次化分隔符相同字符的对象,导致查找失败或报错,不利于提高工作效率。
具体来说,集成电路EDA软件是集成电路设计人员常用的电子设计自动化软件,诸如Protel、OrCAD、EnFortius等。统一低功耗标准已被IEEE(Institute of Electrical andElectronics Engineers,电气与电子工程师协会)纳入标准IEEE标准1801-2018TM,在引入统一低功耗标准后,集成电路EDA软件能够更好地描述用户在芯片设计中的低功耗意图。
统一低功耗标准规定了如何使用层次化分隔符来描述UPF对象的描述规范,其中,用户在描述UPF对象时,通过在UPF对象的名称之前增加层次化分隔符来描述对象之间的层次关系,这里,UPF对象的对象类型例如可以包括实例(instance)类型、端口(port)类型和线网(net)类型。例如,UPF规范的命名格式可以是“前缀名+层次化分隔符+实例对象名”。
对于层次化分隔符,在IEEE标准1801-2018TM中描述了如何使用层次分隔符描述设计层次的语法规则,层次分隔符是一种用于组成层次名称的特殊字符,层次分隔符可以是一个斜杠(“/”)。层次名称可以是通过层次分隔符分隔的一系列名称,其最终名称可以是合法硬件描述语言(hardware description language,HDL)名称或统一功耗格式(UPF)名称,每个在前名称可以是声明在后名称的实例或生成块的名称。
由于层次化分隔符可以是诸如斜杠的通用字符,在一些情况下,对象名称本身可能会包括与层次化分隔符相同的字符,这样的字符不表示对层次的划分,导致软件无法正确查找到对象。
具体来说,在用户使用集成电路EDA软件时,用户的设计文件可以通过诸如read_design命令的读入指令被集成电路EDA软件读入,相应的数据可以通过对象(object)的形式存入到集成电路EDA软件(以下也简称为设计工具)的数据结构中,在集成电路EDA软件中,可以通过诸如find_object命令的对象查找指令,对相应的待查找参数(例如对象的名称)去找到相应的对象。这里,在查找过程中,通常是以用户在对象查找指令中给定的待查找参数去匹配容器中存储的对象的名称,如果名称相同则返回相应的对象。尽管这里以find_object命令为例对对象查找指令进行了说明,但是对象查找指令不限定于find_object命令,具体来说,find_object命令是按照UPF语法标准中、用于在目标设计文件中查找对象的数据处理指令的函数名,除此之外,在一些其他实施例中,在集成电路EDA软件中也可能使用诸如find、search等其他函数名或命令作为上述用于在目标设计文件中查找对象的数据处理指令,本文中所述的find_object命令仅是一种示例,并不构成对用于查找对象的函数名或命令的限定。
例如,若用户的设计文件的某些模块如果已经是展平的形式的话,容器中的对象名称则会包括层次化分隔符,即,层次化分隔符是对象名称中的一部分,不代表层次分隔,在此情况下,若软件仍将层次化分隔符作为层次的分隔标志,根据这种标准定义的对象名称去查找对象,则会产生一系列问题。这里,展平(Flattening)可以是指将组合逻辑层次变成多级逻辑层次之和的形式,展平通常可以意味着去掉被展平的层次之间的层次结构。
在集成电路EDA软件中,软件的用户在使用软件的过程中可能不会完全遵循统一低功耗标准表述实例层次名称,例如不会严格将斜杠“/”作为层次化分隔符、按照设计层次逐层描述实例。作为示例,在一些情况下,用户可以出于设计简便的考虑,在设计文件中使用展平的形式描述某些模块,在此情况下,集成电路EDA软件在容器中保存的对象名称中本身可能包含一些斜杠“/”,这些斜杠“/”作为展平模块中的对象名称的一部分,而非表示整个设计文件中的层次关系。
然而,按照现有的数据处理方法,集成电路EDA软件会按照统一低功耗标准将对象名称中的斜杠“/”转义理解成层次化分隔符,并且在设计文件里查找斜杠“/”后面的这个设计层次,此时,虽然集成电路EDA软件中存在对应的实例对象,但是由于集成电路EDA软件中缺少该实例对象对应的层次名称(hierarchical name),仍然会出现匹配查找失败或报错的情况。
例如,假定当前的设计层次为“/a/b/c”,用户可以在该层次的基础上引入展平的层次化实例“/x/y/z/i/j/k”,其中,“/x/y/z/i/j/k”是这个展平的层次化实例的实例名,其所包含的斜杠“/”不再表示层次分隔,然而,由于集成电路EDA软件会按照统一低功耗标准将斜杠“/”转义为层次化分隔符,并且在斜杠前面的设计层次里查找斜杠后面的实例名,例如,软件会在“/a/b/c”这个设计层次中查找名称为“x”的实例对象,而该层次中不存在实例名称“x”的实例对象,最终会由于找不到对应的实例名称而导致匹配失败的情况。
又例如,如图1所示的一示例的逻辑层次的简化设计图,在该设计图中,逻辑层次由上至下分别为“top”、“i1”、“i2”、“i3”和“i4/i5/i6”,其中,最底层的示例对象的名称为“i4/i5/i6”,其存储在对象“i3”的容器中,因此需要先找到对象“i3”,再找到对象“i3”的容器,从而从对象“i3”的容器中找名称为“i4/i5/i6”的实例对象。在此情况下,用户例如可以向软件输入命令“find_object. -pattern i1/i2/i3/i4/i5/i6 -object inst”,以指示软件从最顶层的“top”中最终找到实例对象“i4/i5/i6”。
对此,在现有的软件中的数据处理方法中,软件会按照UPF标准,将作为层次分隔符的斜杠“/”作为分层依据,因此,在查找时,会首先在“top”的容器中找到名称为“i1”的实例对象,然后拿到对象“i1”的容器,在对象“i1”的容器中查找名称为“i2”的实例对象,然后拿到对象“i2”的容器,在对象“i2”的容器中查找名称为“i3”的实例对象,即逐层执行查找,然后拿到对象“i3”的容器,在对象“i3”的容器中查找名称为“i4”的实例对象,然而,由于对象“i3”的容器中不存在名称为“i4”的实例对象,而是存在名称为“i4/i5/i6”的实例对象,因此此时是找不到名称为“i4”的实例对象的,导致查找失败,将会返回空值。也就是说,用户向软件输入命令“find_object. -pattern i1/i2/i3/i4/i5/i6 -object inst”后,没有返回任何结果,即使以“i4/i5/i6”为名称的实例对象在对象“i3”的容器中是真实存在。
从上述两个示例中可以看出,在现有软件的数据处理过程中,无法对名称中包含分隔符的对象进行查找,导致查找失败,影响工作效率。
这里,需要说明的是,尽管上面以展平模块为例对对象名称包含层次分隔符的情况进行了描述,但是对象名称包含层次分隔符的示例不限于此,例如用户在对对象进行命名时也可能直接在对象名称写入层次分隔符,也会存在上述问题,这些情况均属于本申请的实施例所讨论的范围之内。
鉴于上述问题,本申请的示例性实施例提出一种数据处理方法、数据处理装置、电子设备以及计算机可读存储介质,其能够解决或至少缓解上述问题。
在本申请的示例性实施例的第一方面,提供一种数据处理方法,下面将参照图1至图8进行描述。
根据本申请的示例性实施例的数据处理方法可以应用于用户与软件进行交互的场景,例如,用户终端上可以加载有软件,用户可以在用户终端上输入用于查找对象的数据处理指令,该数据处理指令中可以包括目标字符串,所述目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开。
具体来说,用户终端可以接收数据处理指令,并且基于数据处理指令,按照目标字符串中的元素的顺序,查找与目标字符串对应的目标对象,直到完成目标字符串中所有元素的查找。在查找目标对象的过程中,可以在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为目标设计文件的加载环境,当前查找元素为目标字符串中的首个元素。响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,扩展字符串包括从当前查找元素至与当前查找元素向后间隔至少一个分隔符的元素。在查找完成后,用户终端可以向用户返回对数据处理指令的查找结果。
上述用户终端可以是诸如平板电脑、笔记本电脑、数字助理、可穿戴设备等,然而,上面数据处理方法的实施场景仅是一示例场景,根据本申请的示例性实施例的数据处理方法还可以应用于其他应用场景,例如也可以是用户在用户终端(例如,手机、台式电脑、平板电脑等)通过网络向服务器请求查找对象,服务器可以通过执行根据本申请的示例性实施例的数据处理方法来完成数据处理,这里,服务器可以是独立服务器,也可以是服务器集群,还可以是云计算平台或虚拟化中心。
此外,本申请的实施例中所称的软件例如可以是但不限于计算机程序、规程、规则、文件、文档及数据等。尽管在本申请的实施例中以示例的方式描述了集成电路EDA软件在示例场景下的应用,但是本申请的实施例不限于此,也可以适用于集成电路EDA软件的其他应用场景。
根据本申请的示例性实施例的数据处理方法,即使在对象名称中包括与层次化分隔符相同字符的情况下,也可通过扩展查找找到相应的对象,与现有的处理方案相比,能够更全面、更可靠地查找对象,提高数据处理效率。
下面将参照图2描述根据一示例性实施例的一种数据处理方法的具体步骤。该数据处理方法可以应用于集成电路电子设计自动化(集成电路EDA)软件。如图2所示,该数据处理方法可以包括以下步骤:
在步骤S210,可以接收用户输入的用于在目标设计文件中查找对象的数据处理指令。
这里,数据处理指令中可以包括目标字符串,目标字符串可以包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开。目标设计文件可以是任意集成电路电子设计自动化软件可加载的设计文件。
以图1的逻辑层次为例,数据处理指令例如可以是但不限于上文中所述的输入命令“find_object. -pattern i1/i2/i3/i4/i5/i6 -object inst”。
目标字符串可以用于查找用户需要的对象,例如,以图1为例,当用户希望查找对象“i4/i5/i6”时,目标字符串可以为“i1/i2/i3/i4/i5/i6”。
元素可以指的是在目标字符串中被分隔符隔开的字符或字符串,元素例如可以是对象名称或者是对象名称的一部分,例如,以目标字符串“i1/i2/i3/i4/i5/i6”为例,元素可以包括“i1”、“i2”、“i3”、“i4”、“i5”和“i6”,其中,参照图1可知,“i1”、“i2”和“i3”分别为对象名称,“i4”、“i5”和“i6”分别为对象名称“i4/i5/i6”的一部分。
分隔符可以是上文中所述的作为层次分隔符的字符,例如斜杠“/”,但是其不限于此,也可以是其他符号或字符。在目标字符串中,分隔符可以用于表示层次分隔,也可以是对象名称中的一部分,例如,参照图1的层次结构,在目标字符串“i1/i2/i3/i4/i5/i6”中,“i1”与“i2”之间的斜杠“/”可以表示层次分隔,而“i4”与“i5”之间的斜杠“/”是对象名称“i4/i5/i6”中的字符,其不表示层次分隔,例如,对象“i4/i5/i6”可以是一个展平模块。
这里,需要说明的是,在图1以及后文将描述的图8和图9中,以框与框之间的包围关系表现不同模块之间的层次关系,但是这里仅是为了清晰示出各模块之间的逻辑关系(或者说功能关系),不表示模块之间的物理位置、实际布局等。例如,对象“i1”的执行逻辑在对象“i2”的上层,但是实现二者的真实物理模块或器件的位置或布局可以是任意的。
此外,尽管未示出,在图1以及后文将描述的图8和图9中还可以包括其他并列的模块,例如,图1的对象“i1”可以包括已示出的对象“i2”,也可以包括未示出的对象“i21”、“i22”等。
在步骤S220,可以按照目标字符串中的元素的顺序,查找与目标字符串对应的目标对象,直到完成目标字符串中所有元素的查找。
在该步骤中,可以依次查找目标字符串中的各元素所对应的候选对象,例如,以上述目标字符串“i1/i2/i3/i4/i5/i6”为例,可以按照“i1”、“i2”、“i3”、“i4”、“i5”至“i6”这样的顺序查找对象。
具体来说,在步骤S220中,可以通过以下方式查找目标对象:
在步骤S221,可以在当前容器中查找与当前查找元素对应的候选对象。
这里,在首次查找中,当前容器可以为目标设计文件的加载环境,当前查找元素为目标字符串中的首个元素。
作为示例,在该步骤S221中,软件可以读取设计文件和用户输入的数据处理指令,从数据处理指令中识别到待进一步处理的目标字符串,从目标字符串中获取首个元素作为当前查找元素,并且可以在软件加载目标设计文件时生成的环境中查找与该当前查找元素匹配的对象。
作为示例,如图1所示,在集成电路EDA软件中,在软件加载目标设计文件后,可以生成加载环境“top”,将目标设计文件放在该环境中进行处理,而目标设计文件中的首个元素可以在该加载环境中查找到,例如可以在“top”中查找到对象“i1”。而在后续查找中,可以将查找到的候选对象所对应的容器作为进一步查找的容器,例如,在查找到对象“i1”后,在进一步查找元素“i2”时,可以将与对象“i1”对应的容器作为用于查找“i2”的当前容器。
这里,容器可以指的是软件存储数据的一种数据结构,例如为图(map)、集合(set)、向量(vector)、表(list)等形式,容器中可以存储自定义对象、字符串、数字等数据。在集成电路EDA软件中,在读取设计文件后会创建容器保存符合规范的UPF对象数据。
每个对象可以对应有相应的容器,容器可以存储与相应的对象相关的数据,而在存在逻辑层次关系的对象之间,容器可以是按照层次的包含关系,例如,如图1所示,对象“i2”可以是对象“i1”的下一层对象,在逻辑关系上,对象“i2”可以从属于对象“i1”,相应地,与对象“i2”对应的容器可以是与对象“i1”对应的容器中的子容器。
例如,对于目标字符串“i1/i2/i3/i4/i5/i6”,在首次查找时,当前容器可以为目标设计文件的加载环境“top”,当前查找元素为元素“i1”。
在查找前,软件尚未知晓当前查找元素(例如,元素“i1”)是否能够匹配到对应的候选对象,因此,每一次查找实际上是尝试在当前容器中查找是否存在与当前查找元素对应的候选对象。
在步骤S222,可以响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找。
这里,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,扩展字符串包括从当前查找元素至与当前查找元素向后间隔至少一个分隔符的元素。
具体来说,在未查找到与当前查找元素对应的候选对象的情况下,可以根据目标字符串的元素的顺序,对当前查找元素进行扩展得到扩展字符串,将扩展字符串作为下一次查找的待查找参数,这里,扩展字符串例如可以是目标字符串中的至少一部分。
仍以目标字符串“i1/i2/i3/i4/i5/i6”为例,若在首次查找时未查找到与当前查找元素“i1”对应的候选对象,则可以对当前查找元素“i1”向后扩展间隔至少一个分隔符的元素,例如可以扩展间隔一个分隔符的元素,即扩展到元素“i2”,由此,得到的扩展字符串为“i1/i2”,可以将该字符串“i1/i2”作为下一次查找的待查找参数,并且可以将当前容器“top”继续作为下一次查找的容器,从而执行一次扩展查找。
若在执行第一次扩展查找中,在当前容器“top”中仍未找到与当前扩展字符串“i1/i2”对应的候选对象,则可以继续对当前扩展字符串“i1/i2”向后扩展间隔至少一个分隔符的元素,例如可以扩展间隔一个分隔符的元素,即扩展到元素“i3”,由此,得到的扩展字符串为“i1/i2/i3”,可以将该字符串“i1/i2/i3”作为下一次扩展查找的待查找参数,并且可以将当前容器“top”继续作为下一次扩展查找的容器,从而执行第二次扩展查找。
依次类推,可以在当前查找中未查找到候选对象的情况下,通过更新扩展字符串,将分隔符作为对象名称的一部分来尝试查找相应的候选对象,如此,可以避免由于对象名称中包含分隔符而导致查找失败的问题。
需要说明的是,上面以向后扩展间隔一个分隔符的元素为例进行了描述,但是也可以向后扩展间隔多个分隔符的元素,向后扩展的元素数量的确定方式以及扩展字符串的确定方式将在下文中详细描述。
此外,根据本申请的实施例,可以响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,与当前查找到的候选对象对应的容器是当前容器中的子容器。
这里,仍以目标字符串“i1/i2/i3/i4/i5/i6”为例,若在首次查找时查找到与当前查找元素“i1”对应的候选对象,则可以将当前查找元素之后的下一个元素“i2”作为下一次查找的待查找参数,将当前查找到的候选对象“i1”所对应的容器作为下一次查找的查找容器,从而执行下一次查找。
若在下一次查找中,在当前容器“i1”中未找到与当前查找元素“i2”对应的候选对象,则可以根据上面步骤S122中所述的方式,对当前查找元素“i2”向后扩展至少一个元素,例如可以扩展间隔一个分隔符的元素,即扩展到元素“i3”,由此,得到的扩展字符串为“i2/i3”,可以将该字符串“i2/i3”作为第一次扩展查找的待查找参数,并且可以将当前容器“i1”继续作为第一次扩展查找的查找容器,从而执行第一次扩展查找。
根据本申请的实施例,在查找到当前查找元素所对应的候选对象时,可以继续查找与下一个元素对应的对象,而在未查找到候选对象时,则可以通过扩展字符串的方式来进行扩展查找,如此,一方面可以保留在现有软件中已有的对象查找逻辑,即按照分隔符分隔出的元素依次查找每个元素所对应的对象;另一方面,在遇到现有软件的查找逻辑查找失败的情况下,可以切换至本申请的实施例所述的方式,基于扩展字符串来查找对象,从而可以在保留现有查找逻辑的同时避免由于对象名称中引入分隔符而导致查找失败的问题,这使得根据本申请的实施例的方案可以被添加到现有集成电路电子设计自动化软件中,而无需大幅修改软件的原有逻辑。
此外,作为示例,目标设计文件包括多个对象类型,对此,上述查找与所述目标字符串对应的目标对象的步骤还可以包括:在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
作为示例,对象类型可以包括但不限于实例(instance)、线网(net)和端口(port)(也可以被称为针脚(pin))。在集成电路EDA软件中,在读入设计文件时,数据结构中会存有对象类型,实例对应有实例类型的ID(Identity document,身份标识),线网对应有线网类型的ID,端口(或针脚)对应有端口类型(或针脚类型)的ID。软件在查询候选对象时,可以确定候选对象的对象类型。
例如,若查询的实例数据是实例类型,则使用整个待查找参数在集成电路EDA软件的容器里查询是否存在对应的实例对象名称。若查询的实例数据是除了实例类型以外的UPF对象(例如,线网或者端口(/针脚)),则可以使用待查找参数中最后一个斜杠之前的内容(最后一个斜杠之前是实例对象名称,最后一个斜杠之后是实例对象对应的附加其他UPF对象,例如线网或者端口(/针脚)),然后在集成电路EDA软件的容器里查询是否存在对应的实例对象名称。
通过上述方法,可以通过遍历各种对象类型查找对象,避免遗漏查找,使查找结果更准确。
在步骤S230,可以返回对数据处理指令的查找结果。
作为示例,查找结果可以包括与查找的最后一个查找元素或最后一个扩展字符串对应的候选对象或者包括空值。
根据上面所描述的查找候选对象的方式,可以按照目标字符串中的元素的顺序,逐一查找候选对象,直至最后一个查找元素或扩展字符串。
具体来说,在对最后一个查找元素或最后一个扩展字符串进行对象查找后,认为对目标字符串的查找结束。此时,若查找到与最后一个查找元素或最后一个扩展字符串对应的候选对象,则可以将该候选对象作为查找结果返回给用户;若未查找到与最后一个查找元素或最后一个扩展字符串对应的候选对象,则可以认为对目标字符串的查找结果为空,可以将表示空值的查找结果返回给用户。
根据上述数据处理方法,可以按照目标字符串的顺序对分隔符间的元素进行查找,并且在未查找到与元素对应的候选对象的情况下,可以在当前容器中尝试至少一次扩展查找,以将元素与元素之间的分隔符也作为被查找的扩展字符串的一部分,如此,即使在对象名称中包括与层次化分隔符相同字符的情况下,也可通过扩展查找找到相应的对象,与现有的处理方案相比,能够更全面、更可靠地查找对象,提高数据处理效率。
上面对根据本申请的示例性实施例的数据处理方法进行了描述,下面将进一步描述各步骤在实施中的可选示例。
图3示出了根据本申请的实施例的数据处理方法中确定扩展字符串的步骤。如图3所示,响应于在当前容器中未查找到与当前查找元素对应的候选对象,可以通过以下方式确定当前扩展字符串:
在步骤S310,可以确定当前查找元素的首字符位置,得到第一指针。
参照图1所示的逻辑层次,以图4为例,目标字符串为“i1/i2/i3/i4/i5/i6”,其中,软件可以按照UPF标准,以分隔符(例如斜杠“/”)作为分层依据,先在对象“top”的容器中查找到名字为“i1”的对象,然后在对象“i1”的容器中查找到名字为“i2”的对象,然后在对象“i2”的容器中查找到名字为“i3”的对象,然后在对象“i3”的容器中查找到名字为“i4”的对象,由于“i4/i5/i6”为对象名称,因此在此次查找中,将找不到名字为“i4”的对象。
在此情况下,响应于在当前容器“i3”中未查找到与当前查找元素“i4”对应的候选对象,可以确定当前查找元素“i4”的首字符位置,得到第一指针,该第一指针为如图4中的实线箭头p1所指的位置,即元素“i4”的“i”。
在步骤S320,可以确定在当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针。
这里,目标扩展元素可以为与当前查找元素间隔至少一个分隔符的元素。例如,在间隔的分隔符的数量为1时,目标扩展元素可以为与元素“i4”间隔1个分隔符的元素“i5”。如此,第二指针可以为如图4中的实线箭头p2所指的位置,即元素“i5”的“5”。
作为一示例,在上述步骤S310和步骤S320中,可以在目标字符串中按照字符顺序查找上面所述的第一指针和第二指针。
然而,本申请的实施例不限于此,作为另一示例,也可以通过生成分隔符位置序列的方式,确定第一指针和第二指针。
具体来说,如图5所示,可以通过以下方式确定第一指针和第二指针:
在步骤S510,可以记录目标字符串中的每个分隔符的位置以及目标字符串的尾字符后的位置,得到分隔符位置序列。
在该步骤中,可以将目标字符串中每个元素后面的位置记录下来,即每个分隔符的位置以及目标字符串的尾字符后的一个位置,得到分隔符位置序列。例如,可以响应于接收到数据处理指令,生成分隔符位置序列。
分隔符位置序列例如可以包括但不限于各个位置的位置标识(或者也可以称为位置值),例如,可以按照目标字符串中的每个字符的顺序进行编号,将相应的编号作为位置标识记录在分隔符位置序列中。
参照图1的逻辑层次,以图4为例,在接收到用户的数据处理指令“find_object. -pattern i1/i2/i3/i4/i5/i6 -object inst”后,可以对目标字符串“i1/i2/i3/i4/i5/i6”,进行解析,记录斜杠“/”的位置以及最后一个字符“6”后面的一个位置。例如,如下表1所示,可以按照从0开始的整数对目标字符串中的字符进行编号,得到各位置的位置标识。例如,第一个斜杠的位置标识是“2”,第二个斜杠的位置标识是“5”,第三个斜杠的位置标识是“8”,第四个斜杠的位置标识是“11”,第五个斜杠的位置标识是“14”,最后一个字符“6”后面的一个位置的位置标识是“17”,如此,可以得到分隔符位置序列[2,5,8,11,14,17],可以创建位置记录容器,以用于存储分隔符位置序列,并且还可以为该位置记录容器进行命名,例如可以为“containerA”。
表1
需要说明的是,尽管上面描述了以从0开始的整数对各字符进行编号的示例,但是本申请的实施例不限于此,例如也可以采用从1开始的整数对各字符进行编号等。
在步骤S520,可以根据分隔符位置序列,确定在当前查找元素之前的分隔符的第一位置。
在该步骤中,根据分隔符位置序列,可以确定当前查找元素之前的分隔符的位置,例如,以图4和上述表1为例,第一位置为如图4中的虚线箭头s1所指示的位置,即根据分隔符位置序列中的记录,其字符位置为“8”。
在步骤S530,可以基于第一位置,在分隔符位置序列中,确定在第一位置之后,与第一位置间隔目标数量个位置的第二位置。
这里,目标数量可以为上面所述的与当前查找元素间隔的至少一个分隔符的数量,也可以认为是基于当前查找元素向后扩展的元素的数量。
以目标数量是1个为例,可以在分隔符位置序列中,查找与第一位置“8”间隔1个位置的位置,即为第二位置,第二位置为图4中的虚线箭头s2所指示的位置,其字符位置为“14”。
在步骤S540,可以在目标字符串中,将第一位置的后一位置确定为第一指针,将第二位置的前一位置确定为第二指针。
仍以图4为例,虚线箭头s1所指示的第一位置为“8”,可以将第一位置的后一个字符,即8+1=9,目标字符串“i1/i2/i3/i4/i5/i6”中的字符位置为“9”的字符作为扩展字符串的起始字符(也可以称为第一指针),即如图4中的实线箭头p1所指的位置。虚线箭头s2所指示的第二位置为“14”,可以将第二位置的前一个字符,即14-1=13,目标字符串“i1/i2/i3/i4/i5/i6”中的字符位置为“13”的字符作为扩展字符串的终止字符(也可以称为第二指针),即如图4中的实线箭头p2所指的位置。
根据上述确定第一指针和第二指针的方式,可以通过生成分隔符位置序列来基于第一指针定位到第二指针,这与直接从目标字符串中定位第一指针和第二指相比,无需针对第一指针和第二指分别遍历一次目标字符串,从而可以根据第二指针相对于第一指针的相对定位,更快速地、更简便地确定第二指针。
尽管上面描述了可以响应于接收到数据处理指令生成分隔符位置序列的示例,但是本申请的实施例不限于此,也可以在其他时间或者响应于其他触发条件生成分隔符位置序列,例如可以响应于未查找到与当前查找元素对应的候选对象,生成分隔符位置序列;又例如可以在查找到任意一个候选对象之后,生成分隔符位置序列。
此外,作为示例,在对目标字符串的查找完成后,例如响应于返回查找结果,可以将上述分隔符位置序列删除,例如可以删除存储分隔符位置序列的位置记录容器,以减少对象查找的过程数据占用存储空间,避免系统冗余。
返回参照图3,在步骤S330,可以将目标字符串中第一指针至第二指针的内容作为当前扩展字符串。
在确定第一指针和第二指针后,可以将第一指针和第二指针之间所夹(包括指针本身的字符)的字符串作为当前扩展字符串,以执行一次扩展查找。
仍以图4和表1为例,第一指针“9”至第二指针“13”的内容可以为字符串“i4/i5”,可以将字符串“i4/i5”作为扩展字符串。
如此,在未查找到与当前查找元素对应的候选对象时,可以通过上述双指针法可以得到扩展字符串,这种双指针法可以定位到扩展字符串的起始字符和终止字符,便于从目标字符串中截取用于执行扩展查找的扩展字符串。
此外,根据本申请的实施例,响应于在当前容器中未查找到与当前查找元素对应的候选对象,可以在当前容器中尝试多次扩展查找,在此示例中,如图6所示,可以通过以下方式确定用于下一次查找的扩展字符串:
在步骤S610,可以响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针。
在该步骤中,若在本次扩展查找中未查找到与当前的扩展字符串对应的候选对象,则可以进行下一次扩展查找,并且可以通过更新第二指针的方式来确定用于下一次扩展查找的扩展字符串。
例如,在图4的示例中,在以当前扩展字符串“i4/i5”查找候选对象时,由于对象“i3”的容器中存在的相应的对象名称为“i4/i5/i6”,因此当前扩展字符串与实际对象的对象名称不相等,即“i4/i5”≠“i4/i5/i6”,因此本次扩展查找没有查找到与当前扩展字符串“i4/i5”对应的候选对象。
在此情况下,可以将当前的第二指针向后移动,直到下一个元素“i6”的尾字符,即“6”,得到更新的第二指针,更新的第二指针如图7中的实线箭头p2'所指示。
作为示例,在生成有分隔符位置序列的情况下,可以将当前的第二指针向后移动到当前第二位置的下一个位置的前一个字符处。例如,以分隔符位置序列“[2,5,8,11,14,17]”为例,当前的第二指针指示“13”的位置,当前的第二位置为“14”,可以将第二指针向后移动到第二位置“14”的下一个位置“17”(如图7中的虚线箭头s2'所指示)的前一个字符处,即17-1=16,即更新的第二指针指示字符位置“16”,即指示字符“6”。
在步骤S620,可以基于与本次查找的扩展字符串对应的第一指针和更新的第二指针,确定用于下一次查找的扩展字符串。
在该步骤中,可以将当前的第一指针至更新的第二指针的内容(包括第一指针和第二指针本身的字符)作为下一次查找的扩展字符串。
例如,在没有查找到与当前扩展字符串“i4/i5”对应的候选对象的情况下,当前的第一指针指示“i4”的“i”,在该步骤中,可以保持第一指针的位置不动,将第二指针的移动到“6”,得到下一次查找的扩展字符串“i4/i5/i6”。
如此,可以在对象“i3”的容器中查找扩展字符串“i4/i5/i6”,由于对象“i3”所对应的容器中存在名称为“i4/i5/i6”的对象,因此,当前扩展字符串“i4/i5/i6”与对象名称匹配,即,“i4/i5/i6”=“i4/i5/i6”,则查找到候选对象。
至此,基于用户输入的数据处理指令“find_object. -pattern i1/i2/i3/i4/i5/i6 -object inst”, 查找的最后一个扩展字符串为“i4/i5/i6”,可以将与字符串“i4/i5/i6”对应的候选对象确定为与目标字符串对应的目标对象,并且将其作为候选对象返回给用户。
根据上面参照图6所述的查找扩展字符串的示例,在本次扩展查找未查找到候选对象的情况下,可以通过向后移动第二指针,实现对待查找参数的扩展,从而可以快速确定下一次查找的扩展字符串,提高对象查找效率。
上面描述了在未查找到候选对象的情况下可以通过扩展查找来覆盖分隔符的示例,其中,以间隔的分隔符的目标数量为1个为例进行了示例性描述,但是本申请的实施例不限于此,向后扩展覆盖的分隔符的目标数量也可以是其他值。
作为示例,在本申请的实施例的数据处理方法中,可以根据可变参数,确定扩展字符串中包含的分隔符的目标数量,其中,目标数量可以小于或等于可变参数,可变参数可以由用户指定或者为预设值。
这里,可变参数可以是任意设定的,例如可以是由软件开发者预先设置的默认值,或者也可以由用户自行指定的,在由用户自行指定的情况下,在对不同目标字符串进行查找时,可变参数可以是不同的,例如可以根据目标字符串来确定可变参数。
作为示例,可以在软件中创建设定或更改可变参数的命令,用户可以在软件启动前设定可变参数,例如可以输入命令“set_param ui.search flat_name_level N”,其中,N表示可变参数。然而,本申请的实施例不限于此,用户也可以在其他时刻设定可变参数,例如用户也可以在软件查找过程中,响应于软件提示未查找到与当前查找元素对应的候选对象,输入可变参数。
可变参数例如可以表示但不限于:软件支持查找的对象名称中所包含的分隔符的最大数量,或者说,可以表示在未查找到与当前查找元素对应的候选对象的情况下,允许将当前查找元素向后扩展覆盖的分隔符的最大数量。
例如,若可变参数为2,在图1的示例中,软件支持查找对象名称中最多包含两个分隔符的对象,因此,在查找到对象名称为“i4”的候选对象时,可以检测可变参数,并且检测到可变参数为2,在此情况下,最多可从“i4”向后扩展两个元素,或者说,扩展得到的扩展字符串中最多可以包含两个分隔符,即,最多可以扩展得到“i4/i5/i6”。
通过设置可变参数,可以允许开发者或者用户约束扩展字符串所覆盖的分隔符的数量,或者说可以约束向后扩展的元素数量,如此,可以更灵活地执行可变参数,根据需要调节可变参数的大小,在实现扩展查找的同时可以控制查找时长,平衡查找效率与准确性。
此外,根据本申请的实施例,可以根据目标设计文件中的展平模块的层次数来确定可变参数。
作为示例,目标设计文件可以包括至少一个展平模块,可变参数可以小于或等于由展平模块所包含的层次数中的最大值减1得到的值。
具体来说,目标设计文件中可以存在一个或多个展平模块,不同展平模块被展平的层次数可以是不同的,不同展平模块可以处于相同或不同的层次。
例如,如图8所示,目标设计文件可以包括三个展平模块,其中,非展平模块“i31”可以包括展平模块“i4/i5/i6”和“i7/i8/i9/i10”,展平模块“i32/i33”可以与非展平模块“i31”处于同一层次,其均包括在非展平模块“i2”中。
在确定展平模块所包含的层次数中的最大值时,可以不考虑展平模块所处的层次以及从属关系,只关注于每个展平模块本身的层次数即可。例如,在图8中,展平模块“i4/i5/i6”的层次数可以为3,展平模块“i7/i8/i9/i10”的层次数可以为4,展平模块“i32/i33”的层次数可以为2,因此,这些展平模块中的层次数的最大值为4,可变参数可以小于或等于3,即4-1=3。
在可变参数由用户指定的情况下,可以由用户确定设计文件中展平模块的最大层次数,再根据最大层次数设定可变参数,例如,用户引入设计文件中的展平模块最多包含5层,则可以将可变参数设定为4,即,查询参数最多向后扩展4个元素、最大匹配次数为5次。这里,在可变参数等于展平模块所包含的层次数中的最大值减1的情况下,可以通过对待查找参数向后扩展的方式覆盖所有展平模块的对象名称的长度范围,从而确保所有展平模块均允许被查找到。
通过上述方式,可以在考虑展平模块的层次数的情况下设定可变参数,一方面,可以确保设定的可变参数允许所有的展平模块被查找到,提高查找的准确性,另一方面,可以避免将可变参数设定得过大,而导致软件的冗余计算,提高查找的速度。
需要说明的是,尽管这里给出了设定可变参数的一种示例方式,但是本申请的实施例不限于此,也可以根据实际需要来设定可变参数。
此外,可变参数也可以设置0,在可变参数为0的情况下,表示不执行扩展查找,即不对当前未查找到的元素进行字符串内容增加的补充匹配,即实现关闭兼容展平模块的对象描述方式的功能。
此外,在上述步骤S220中,查找与目标字符串对应的目标对象的步骤还可以包括:若扩展查找的次数达到可变参数的值,则结束对目标字符串的查找。
具体来说,在扩展查找次数达到可变参数的情况下,可以认为达到用户或开发者所设定的扩展查找次数,为了避免在数据处理指令中的对象名称拼写错误,误判为层次表达不规范而无限度地继续向后扩展查找影响计算效率,可以将可变参数作为最长匹配长度,即容许扩展字符串包含的分隔符的最大数量,当扩展查找失败次数达到可变参数时,认为目标字符串可能存在拼写错误,终止查找,用户可以及时对数据处理指令中的目标字符串进行检查和修正。
此外,根据本申请的实施例,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,还可以设置最大尝试次数,当达到该最大尝试次数时,可以直接对当前查找元素至目标字符串的尾字符的内容进行对象匹配。
例如,若扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则可以将最大尝试字符串至目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串。
这里,最大尝试字符串可以为与最大尝试次数对应的扩展字符串。
具体来说,如上面所述,在未查找到与当前查找元素对应的候选对象的情况下,可以尝试对当前查找元素向后扩展,得到扩展查找的扩展字符串;若第一次扩展查找中仍未找到对应的候选对象,则可以继续尝试向后扩展字符串,进行第二次扩展查找,依次类推,可以逐步向后扩展,将更多个元素增加到扩展字符串中。在这个过程中,尝试查找的次数越多,查找的耗时可能会越长。
作为示例,如上所述,可以采用双指针法确定从最大尝试字符串至目标字符串的尾字符的字符串,具体地,在设置有最大尝试次数的情况下,若查找次数从1次遍历到预设的最大尝试次数,仍未查找到匹配的对象,则可以将与当前最末次查找所使用的最大尝试字符串对应的第二指针向后移动到目标字符串的尾字符,得到更新的第二指针,并且将最大尝试字符串对应的第一指针至更新的第二指针的内容作为从最大尝试字符串至目标字符串的尾字符的字符串。
例如,若目标字符串为“i1/i2/i3/i4/i5/i6/i7”,其中,字符串“i4/i5/i6/i7”可以对应于对象“i3”所对应的容器中的实例对象,假定将最大尝试次数设置为1,在对扩展字符串“i4/i5”(即最大尝试字符串)进行第一次扩展查找后,可以直接扩展为字符串“i4/i5/i6/i7”进行下一次扩展查找,如此可以省略逐一元素向后扩展所带来的多次扩展查找,即省略了对扩展字符串“i4/i5/i6”的查找过程。
通过上述方式,可以设置最大尝试次数,并且记录没有查找成功的尝试次数,当查找次数达到最大尝试次数时,可以直接将待查找的字符串扩展至目标字符串最末字符的内容进行查找,如此,可以自动解析出用户输入的目标字符串中的最底层是否为展平模块,提高计算和用户使用展平层次描述方式情形的诊断速度。
上面描述了在扩展查找的次数达到预设的最大尝试次数时则直接扩展到目标字符串的尾字符进行查找,在此基础上,响应于未查找到与扩展至目标字符串的尾字符的扩展字符串对应的候选对象,可以将最大尝试字符串至在最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
具体来说,在扩展至目标字符串的尾字符后仍未查找到匹配的对象的情况下,可以返回扩展至尾字符之前的状态,继续按照逐个元素向后扩展的方式进行扩展查找。
例如,若目标字符串为“i1/i2/i3/i4/i5/i6/i7”,其中,字符串“i4/i5/i6”可以对应于对象“i3”所对应的容器中的实例对象,假定将最大尝试次数设置为1,在对扩展字符串“i4/i5”(即最大尝试字符串)进行第一次扩展查找后,可以直接扩展为字符串“i4/i5/i6/i7”进行下一次扩展查找,此时在对象“i3”所对应的容器中仍未查找到相应的对象。
响应于此,可以将最大尝试字符串“i4/i5”至在最大尝试字符串“i4/i5”之后的一个元素“i6”作为用于下一次扩展查找的扩展字符串,即“i4/i5/i6”。如此,在进行扩展至目标字符串的尾字符的查找后,还可以继续返回之前的状态进行查找,能够在确保对用户使用展平层次描述方式情形的诊断速度的同时避免遗漏,实现准确查找。
下面将参照图9和图10描述采用根据本申请的实施例的数据处理方法查找对象的一示例过程。
用户输入的数据处理指令中的目标字符串可以是“inst1/inst2/inst3/inst4/mid/last/inst5/inst6”。该目标字符串中的分隔符“/”可能是严格遵循统一低功耗标准规范的表达方式,例如,在“inst1/inst2/inst3”的设计层次下存在名称为“inst4”的实例对象,在“inst1/inst2/inst3/inst4”的设计层次下存在名称为“mid”的实例对象;也可能是用户不规范的使用展平的层次化实例对象名称的情形,例如,在“inst1/inst2/inst3”的设计层次下存在名称为“inst4/mid/last”的实例对象,实际上,如图9所示的设计文件的逻辑层次简图可知,“inst4/mid/last”为对象的名称。
在此情况下,对于上述目标字符串,如图10所示,在第1次查找中,可以获取第一个元素“inst1”,在容器里查找匹配与元素“inst1”对应的对象。
在匹配成功的情况下,即获取到的元素是“inst1”,在容器里也记录有对象“inst1”,可以继续执行第2次查找,在当前层次“inst1”中查找到下一个层次的元素“inst2”对应的对象。依次类推,可以在第3次查找中,在当前层次“inst2”中查找到下一个层次的元素“inst3”对应的对象。
在第4次查找中,由于在对象“inst3”对应的容器中不存在名称为“inst4”的对象,而是存在名称为“inst4/mid/last”的对象,因此,第4次查找失败,未查找到对象。在此情况下,可以尝试进行扩展查找,在当前查询元素“inst4”的后面,增加下至少一个分隔符之前的字符串内容作为新的查询字符串,在对象“inst3”对应的容器中重新进行查找匹配。
具体来说,如图10所示,在第5次查找中,在对象“inst3”对应的容器中查找与扩展字符串“inst4/mid”对应的对象。若没有找到,则可以继续按照前面描述的规则重新确定下一次查找的扩展字符串,再次向后扩展一个元素,直到扩展字符串所包含的分隔符达到可变参数,若仍未找到,则向用户返回查找结果为空值。
而在该示例中,在第6次查找中,在对象“inst3”对应的容器中查找与扩展字符串“inst4/mid/last”对应的对象。如此,可以继续后续元素的查找,即在第7次查找中,在对象“inst4/mid/last”对应的容器中查找到对象“inst5”;在第8次查找中,在对象“inst5”对应的容器中查找到对象“inst6”。
至此,可以向用户返回对目标字符串“inst1/inst2/inst3/inst4/mid/last/inst5/inst6”的查找结果,即找到最底层的对象“inst6”。
根据上面所述的实施例,可以通过一种集成电路EDA软件中对象名称数据的处理方法,可以在软件未查找到实例数据信息的情况下,在当前查询字符串的后面,增加一个或多个分隔符之前的元素,并用增加后的内容作为新的查询字符串,在当前设计层次里的容器中再次进行查找匹配。如此,既能支持使用规范方式(例如,统一低功耗标准)描述实例数据的对象名称,也能够支持用户未按照统一低功耗标准描述对象名称(例如,用户使用展平的形式描述对象名称)的情况下成功匹配到对应的实例数据。
图11是根据一示例性实施例示出的一种数据处理装置的框图。参照图11,数据处理装置应用于集成电路电子设计自动化软件,该数据处理装置可以包括接收单元100、目标对象查找单元200和返回单元300。
接收单元100被配置为接收用户输入的用于在目标设计文件中查找对象的数据处理指令,其中,数据处理指令中包括目标字符串,目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开。
目标对象查找单元200被配置为按照目标字符串中的元素的顺序,目标对象查找单元200包括候选对象查找单元210和扩展查找单元220,目标对象查找单元200通过以下方式查找与目标字符串对应的目标对象,直到完成目标字符串中所有元素的查找:
候选对象查找单元210被配置为在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为目标设计文件的加载环境,当前查找元素为目标字符串中的首个元素。
扩展查找单元220被配置为响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,扩展字符串包括从当前查找元素至与当前查找元素向后间隔至少一个分隔符的元素。
返回单元300被配置为返回对数据处理指令的查找结果。
作为示例,响应于在当前容器中未查找到与当前查找元素对应的候选对象,扩展查找单元220通过以下方式确定当前扩展字符串:确定当前查找元素的首字符位置,得到第一指针;确定在当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针,其中,目标扩展元素为与当前查找元素间隔至少一个分隔符的元素;将目标字符串中第一指针至第二指针的内容作为当前扩展字符串。
作为示例,扩展查找单元220通过以下方式确定第一指针和第二指针:记录目标字符串中的每个分隔符的位置以及目标字符串的尾字符后的位置,得到分隔符位置序列;根据分隔符位置序列,确定在当前查找元素之前的分隔符的第一位置;基于第一位置,在分隔符位置序列中,确定在第一位置之后,与第一位置间隔目标数量个位置的第二位置,其中,目标数量为至少一个分隔符的数量;在目标字符串中,将第一位置的后一位置确定为第一指针,将第二位置的前一位置确定为第二指针。
作为示例,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,扩展查找单元220通过以下方式确定用于下一次查找的扩展字符串:响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针;基于与本次查找的扩展字符串对应的第一指针和更新的第二指针,确定用于下一次查找的扩展字符串。
作为示例,数据处理装置还包括:目标数量确定单元,被配置为根据可变参数,确定扩展字符串中包含的分隔符的目标数量,其中,目标数量小于或等于可变参数,其中,可变参数由用户指定或者为预设值。
作为示例,目标设计文件包括至少一个展平模块,可变参数小于或等于由展平模块所包含的层次数中的最大值减1得到的值。
作为示例,目标对象查找单元200还被配置为:若扩展查找的次数达到可变参数的值,则结束对目标字符串的查找。
作为示例,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,目标对象查找单元200还被配置为:若扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则将最大尝试字符串至目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串,其中,最大尝试字符串为与最大尝试次数对应的扩展字符串。
作为示例,目标对象查找单元200还被配置为:响应于未查找到与扩展至目标字符串的尾字符的扩展字符串对应的候选对象,将最大尝试字符串至在最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
作为示例,目标设计文件包括多个对象类型,其中,目标对象查找单元200还被配置为:在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
作为示例,目标对象查找单元200还被配置为:响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,与当前查找到的候选对象对应的容器是当前容器中的子容器。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图12是根据一示例性实施例示出的一种电子设备的框图。如图12所示,电子设备10包括处理器101和用于存储处理器可执行指令的存储器102。这里,处理器可执行指令在被处理器运行时,促使处理器执行如上述示例性实施例所述的数据处理方法。
作为示例,电子设备10并非必须是单个的设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备10还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的服务器。
在电子设备10中,处理器101可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器101还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器101可运行存储在存储器102中的指令或代码,其中,存储器102还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器102可与处理器101集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器102可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器102和处理器101可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器101能够读取存储在存储器102中的文件。
此外,电子设备10还可以包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备10的所有组件可经由总线和/或网络而彼此连接。
在示例性实施例中,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如上述示例性实施例所述的数据处理方法。计算机可读存储介质例如可以是包括指令的存储器,可选地,计算机可读存储介质可以是:只读存储器(ROM)、随机存取存储器(RAM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请所述的实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。
此外,还需要说明的是,尽管上面参照具体附图描述了各步骤的若干示例,但是应理解的是,本申请的实施方式不限于示例中给出的组合,不同附图中出现的步骤可以相结合,在此不作出穷举。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (24)
1.一种数据处理方法,其特征在于,所述数据处理方法应用于集成电路电子设计自动化软件,其中,所述数据处理方法包括:
接收用户输入的用于在目标设计文件中查找对象的数据处理指令,其中,所述数据处理指令中包括目标字符串,所述目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开;
按照所述目标字符串中的元素的顺序,通过以下方式查找与所述目标字符串对应的目标对象,直到完成所述目标字符串中所有元素的查找:
在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为所述目标设计文件的加载环境,当前查找元素为所述目标字符串中的首个元素;
响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,所述扩展字符串包括从所述当前查找元素至与所述当前查找元素向后间隔至少一个分隔符的元素;
返回对所述数据处理指令的查找结果。
2.根据权利要求1所述的数据处理方法,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,通过以下方式确定所述当前扩展字符串:
确定所述当前查找元素的首字符位置,得到第一指针;
确定在所述当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针,其中,所述目标扩展元素为与所述当前查找元素间隔所述至少一个分隔符的元素;
将所述目标字符串中所述第一指针至所述第二指针的内容作为所述当前扩展字符串。
3.根据权利要求2所述的数据处理方法,其特征在于,通过以下方式确定所述第一指针和所述第二指针:
记录所述目标字符串中的每个分隔符的位置以及所述目标字符串的尾字符后的位置,得到分隔符位置序列;
根据所述分隔符位置序列,确定在所述当前查找元素之前的分隔符的第一位置;
基于所述第一位置,在所述分隔符位置序列中,确定在所述第一位置之后,与所述第一位置间隔目标数量个位置的第二位置,其中,所述目标数量为所述至少一个分隔符的数量;
在所述目标字符串中,将所述第一位置的后一位置确定为第一指针,将所述第二位置的前一位置确定为第二指针。
4.根据权利要求2所述的数据处理方法,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,通过以下方式确定用于下一次查找的扩展字符串:
响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针;
基于与本次查找的扩展字符串对应的第一指针和所述更新的第二指针,确定用于下一次查找的扩展字符串。
5.根据权利要求1至4中的任一项所述的数据处理方法,其特征在于,所述数据处理方法还包括:
根据可变参数,确定所述扩展字符串中包含的分隔符的目标数量,其中,所述目标数量小于或等于可变参数,其中,所述可变参数由用户指定或者为预设值。
6.根据权利要求5所述的数据处理方法,其特征在于,所述目标设计文件包括至少一个展平模块,所述可变参数小于或等于由所述展平模块所包含的层次数中的最大值减1得到的值。
7.根据权利要求5所述的数据处理方法,其特征在于,所述查找与所述目标字符串对应的目标对象的步骤还包括:
若所述扩展查找的次数达到所述可变参数的值,则结束对所述目标字符串的查找。
8.根据权利要求1所述的数据处理方法,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述查找与所述目标字符串对应的目标对象的步骤还包括:
若所述扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则将所述最大尝试字符串至所述目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串,其中,所述最大尝试字符串为与所述最大尝试次数对应的扩展字符串。
9.根据权利要求8所述的数据处理方法,其特征在于,所述查找与所述目标字符串对应的目标对象的步骤还包括:
响应于未查找到与扩展至所述目标字符串的尾字符的扩展字符串对应的候选对象,将所述最大尝试字符串至在所述最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
10.根据权利要求1所述的数据处理方法,其特征在于,所述目标设计文件包括多个对象类型,其中,所述查找与所述目标字符串对应的目标对象的步骤还包括:
在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
11.根据权利要求1所述的数据处理方法,其特征在于,所述查找与所述目标字符串对应的目标对象的步骤还包括:
响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,所述与当前查找到的候选对象对应的容器是所述当前容器中的子容器。
12.一种数据处理装置,其特征在于,所述数据处理装置应用于集成电路电子设计自动化软件,其中,所述数据处理装置包括:
接收单元,被配置为接收用户输入的用于在目标设计文件中查找对象的数据处理指令,其中,所述数据处理指令中包括目标字符串,所述目标字符串包括多个元素和至少一个分隔符,相邻的两个元素之间通过分隔符隔开;
目标对象查找单元,被配置为按照所述目标字符串中的元素的顺序,所述目标对象查找单元包括候选对象查找单元和扩展查找单元,所述目标对象查找单元通过以下方式查找与所述目标字符串对应的目标对象,直到完成所述目标字符串中所有元素的查找:
所述候选对象查找单元被配置为在当前容器中查找与当前查找元素对应的候选对象,其中,在首次查找中,当前容器为所述目标设计文件的加载环境,当前查找元素为所述目标字符串中的首个元素;
所述扩展查找单元被配置为响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试至少一次扩展查找,其中,在每次扩展查找中,查找与当前扩展字符串对应的候选对象,其中,所述扩展字符串包括从所述当前查找元素至与所述当前查找元素向后间隔至少一个分隔符的元素;
返回单元,被配置为返回对所述数据处理指令的查找结果。
13.根据权利要求12所述的数据处理装置,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,所述扩展查找单元通过以下方式确定所述当前扩展字符串:
确定所述当前查找元素的首字符位置,得到第一指针;
确定在所述当前查找元素之后的目标扩展元素的尾字符的位置,得到第二指针,其中,所述目标扩展元素为与所述当前查找元素间隔所述至少一个分隔符的元素;
将所述目标字符串中所述第一指针至所述第二指针的内容作为所述当前扩展字符串。
14.根据权利要求13所述的数据处理装置,其特征在于,所述扩展查找单元通过以下方式确定所述第一指针和所述第二指针:
记录所述目标字符串中的每个分隔符的位置以及所述目标字符串的尾字符后的位置,得到分隔符位置序列;
根据所述分隔符位置序列,确定在所述当前查找元素之前的分隔符的第一位置;
基于所述第一位置,在所述分隔符位置序列中,确定在所述第一位置之后,与所述第一位置间隔目标数量个位置的第二位置,其中,所述目标数量为所述至少一个分隔符的数量;
在所述目标字符串中,将所述第一位置的后一位置确定为第一指针,将所述第二位置的前一位置确定为第二指针。
15.根据权利要求13所述的数据处理装置,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述扩展查找单元通过以下方式确定用于下一次查找的扩展字符串:
响应于在当前容器中未查找到与本次查找的扩展字符串对应的候选对象,将与本次查找的扩展字符串对应的第二指针向后移动到下一个元素的尾字符,得到更新的第二指针;
基于与本次查找的扩展字符串对应的第一指针和所述更新的第二指针,确定用于下一次查找的扩展字符串。
16.根据权利要求12至15中的任一项所述的数据处理装置,其特征在于,所述数据处理装置还包括:
目标数量确定单元,被配置为根据可变参数,确定所述扩展字符串中包含的分隔符的目标数量,其中,所述目标数量小于或等于可变参数,其中,所述可变参数由用户指定或者为预设值。
17.根据权利要求16所述的数据处理装置,其特征在于,所述目标设计文件包括至少一个展平模块,所述可变参数小于或等于由所述展平模块所包含的层次数中的最大值减1得到的值。
18.根据权利要求16所述的数据处理装置,其特征在于,所述目标对象查找单元还被配置为:
若所述扩展查找的次数达到所述可变参数的值,则结束对所述目标字符串的查找。
19.根据权利要求12所述的数据处理装置,其特征在于,响应于在当前容器中未查找到与当前查找元素对应的候选对象,在当前容器中尝试多次扩展查找,其中,所述目标对象查找单元还被配置为:
若所述扩展查找的次数达到预设的最大尝试次数,仍未查找到与最大尝试字符串对应的候选对象,则将所述最大尝试字符串至所述目标字符串的尾字符的字符串作为用于下一次扩展查找的扩展字符串,其中,所述最大尝试字符串为与所述最大尝试次数对应的扩展字符串。
20.根据权利要求19所述的数据处理装置,其特征在于,所述目标对象查找单元还被配置为:
响应于未查找到与扩展至所述目标字符串的尾字符的扩展字符串对应的候选对象,将所述最大尝试字符串至在所述最大尝试字符串之后的一个元素作为用于下一次扩展查找的扩展字符串。
21.根据权利要求12所述的数据处理装置,其特征在于,所述目标设计文件包括多个对象类型,其中,所述目标对象查找单元还被配置为:
在当前容器中,遍历所有对象类型,查找与当前查找元素或当前扩展字符串对应的候选对象。
22.根据权利要求12所述的数据处理装置,其特征在于,所述目标对象查找单元还被配置为:
响应于在当前容器中查找到与当前查找元素或当前扩展字符串对应的候选对象,在与当前查找到的候选对象对应的容器中,查找与在当前查找元素或当前扩展字符串之后的下一个元素对应的候选对象,其中,所述与当前查找到的候选对象对应的容器是所述当前容器中的子容器。
23.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器,
其中,所述处理器可执行指令在被所述处理器运行时,促使所述处理器执行根据权利要求1至11中任一项所述的数据处理方法。
24.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行根据权利要求1至11中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311098811.5A CN116821437B (zh) | 2023-08-30 | 2023-08-30 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311098811.5A CN116821437B (zh) | 2023-08-30 | 2023-08-30 | 数据处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116821437A true CN116821437A (zh) | 2023-09-29 |
CN116821437B CN116821437B (zh) | 2023-11-07 |
Family
ID=88122483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311098811.5A Active CN116821437B (zh) | 2023-08-30 | 2023-08-30 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116821437B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117250480A (zh) * | 2023-11-08 | 2023-12-19 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
CN117421324A (zh) * | 2023-12-19 | 2024-01-19 | 英诺达(成都)电子科技有限公司 | 电源状态表的合并方法、装置、设备及存储介质 |
CN117574821A (zh) * | 2023-10-19 | 2024-02-20 | 英诺达(成都)电子科技有限公司 | 基于代表单元的信息关联方法、装置、设备及存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434974A (en) * | 1992-03-30 | 1995-07-18 | International Business Machines Corporation | Name resolution for a multisystem network |
CN1744543A (zh) * | 2004-09-04 | 2006-03-08 | 华为技术有限公司 | 一种用域名标识用户归属地实现漫游接入数据网的方法 |
CN101661479A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区顺达电脑厂有限公司 | 优化文件系统及其方法 |
KR20100117335A (ko) * | 2009-04-24 | 2010-11-03 | 주식회사 엘지유플러스 | 검색어가 포함된 텍스트를 기초로 검색 사이트를 특정하여 검색 결과를 요청하는 검색 중계 서버 및 그 제어방법 |
CN103870588A (zh) * | 2014-03-27 | 2014-06-18 | 杭州朗和科技有限公司 | 一种在数据库中使用的方法及装置 |
CN106874442A (zh) * | 2017-02-08 | 2017-06-20 | 三和智控(北京)系统集成有限公司 | 通过数据名称命名实现数据自携带特征信息的方法及装置 |
US9880966B1 (en) * | 2015-09-03 | 2018-01-30 | Xilinx, Inc. | Encapsulating metadata of a platform for application-specific tailoring and reuse of the platform in an integrated circuit |
CN108319589A (zh) * | 2018-03-14 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 参数字符串处理方法、装置、计算机可读存储介质和设备 |
US10204119B1 (en) * | 2017-07-20 | 2019-02-12 | Palantir Technologies, Inc. | Inferring a dataset schema from input files |
CN110516124A (zh) * | 2019-08-09 | 2019-11-29 | 济南浪潮数据技术有限公司 | 一种文件解析方法、装置和计算机可读存储介质 |
CN113901280A (zh) * | 2021-12-07 | 2022-01-07 | 南京集成电路设计服务产业创新中心有限公司 | 一种集成电路展平式设计的字符串存储与查询系统及方法 |
CN116150093A (zh) * | 2023-03-04 | 2023-05-23 | 北京大道云行科技有限公司 | 一种对象存储列举对象的实现方法及电子设备 |
CN116486603A (zh) * | 2023-02-15 | 2023-07-25 | 湖南大学 | 一种基于智能交通系统的实时性强的路况信息提供方法 |
-
2023
- 2023-08-30 CN CN202311098811.5A patent/CN116821437B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5434974A (en) * | 1992-03-30 | 1995-07-18 | International Business Machines Corporation | Name resolution for a multisystem network |
CN1744543A (zh) * | 2004-09-04 | 2006-03-08 | 华为技术有限公司 | 一种用域名标识用户归属地实现漫游接入数据网的方法 |
CN101661479A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区顺达电脑厂有限公司 | 优化文件系统及其方法 |
KR20100117335A (ko) * | 2009-04-24 | 2010-11-03 | 주식회사 엘지유플러스 | 검색어가 포함된 텍스트를 기초로 검색 사이트를 특정하여 검색 결과를 요청하는 검색 중계 서버 및 그 제어방법 |
CN103870588A (zh) * | 2014-03-27 | 2014-06-18 | 杭州朗和科技有限公司 | 一种在数据库中使用的方法及装置 |
US9880966B1 (en) * | 2015-09-03 | 2018-01-30 | Xilinx, Inc. | Encapsulating metadata of a platform for application-specific tailoring and reuse of the platform in an integrated circuit |
CN106874442A (zh) * | 2017-02-08 | 2017-06-20 | 三和智控(北京)系统集成有限公司 | 通过数据名称命名实现数据自携带特征信息的方法及装置 |
US10204119B1 (en) * | 2017-07-20 | 2019-02-12 | Palantir Technologies, Inc. | Inferring a dataset schema from input files |
CN108319589A (zh) * | 2018-03-14 | 2018-07-24 | 腾讯科技(深圳)有限公司 | 参数字符串处理方法、装置、计算机可读存储介质和设备 |
CN110516124A (zh) * | 2019-08-09 | 2019-11-29 | 济南浪潮数据技术有限公司 | 一种文件解析方法、装置和计算机可读存储介质 |
CN113901280A (zh) * | 2021-12-07 | 2022-01-07 | 南京集成电路设计服务产业创新中心有限公司 | 一种集成电路展平式设计的字符串存储与查询系统及方法 |
CN116486603A (zh) * | 2023-02-15 | 2023-07-25 | 湖南大学 | 一种基于智能交通系统的实时性强的路况信息提供方法 |
CN116150093A (zh) * | 2023-03-04 | 2023-05-23 | 北京大道云行科技有限公司 | 一种对象存储列举对象的实现方法及电子设备 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574821A (zh) * | 2023-10-19 | 2024-02-20 | 英诺达(成都)电子科技有限公司 | 基于代表单元的信息关联方法、装置、设备及存储介质 |
CN117574821B (zh) * | 2023-10-19 | 2024-09-24 | 英诺达(成都)电子科技有限公司 | 基于代表单元的信息关联方法、装置、设备及存储介质 |
CN117250480A (zh) * | 2023-11-08 | 2023-12-19 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
CN117250480B (zh) * | 2023-11-08 | 2024-02-23 | 英诺达(成都)电子科技有限公司 | 组合逻辑电路的环路检测方法、装置、设备及存储介质 |
CN117421324A (zh) * | 2023-12-19 | 2024-01-19 | 英诺达(成都)电子科技有限公司 | 电源状态表的合并方法、装置、设备及存储介质 |
CN117421324B (zh) * | 2023-12-19 | 2024-03-12 | 英诺达(成都)电子科技有限公司 | 电源状态表的合并方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116821437B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116821437B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111339041A (zh) | 文件解析入库、文件生成方法及装置 | |
US20090094609A1 (en) | Dynamically providing a localized user interface language resource | |
US10191838B2 (en) | Method and device for checking influence of deleting cache file, and mobile terminal | |
US10212067B2 (en) | Dynamic symbolic links for referencing in a file system | |
CN110888837B (zh) | 对象存储小文件归并方法及装置 | |
US20160239509A1 (en) | File explorer system usable in an emulated integrated development environment (ide) | |
CN110263104B (zh) | Json字符串处理方法及装置 | |
US8196093B2 (en) | Apparatus and method for componentizing legacy system | |
CN114880289A (zh) | 一种文件分组显示方法及计算设备 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
CN113342741B (zh) | 快照实现方法及装置、电子设备及计算机可读存储介质 | |
CN110704573A (zh) | 目录存储方法、装置、计算机设备及存储介质 | |
CN116467975B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN116501415B (zh) | 命令执行方法及装置、电子设备、计算机可读存储介质 | |
CN112835638A (zh) | 一种基于嵌入式应用程序的配置信息管理方法及装置 | |
CN115080114B (zh) | 应用程序的移植处理方法、装置和介质 | |
CN112988278B (zh) | 资源文件的meta文件修改方法、装置、电子设备及存储介质 | |
CN114861003A (zh) | 一种指定目录下的对象列举方法、装置及其介质 | |
CN114489481A (zh) | 硬盘存储数据并访问的方法及系统 | |
CN112256669A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN117908930B (zh) | 代码与代码文档的同步方法、装置、设备、介质及产品 | |
CN112231300B (zh) | 一种函数的分析方法、装置及电子设备 | |
CN116894007B (zh) | 一种目录信息显示方法、装置、计算设备和存储介质 | |
CN114880286A (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 |