一种集成电路展平式设计的字符串存储与查询系统及方法与流程

专利2023-01-25  98



1.本发明属于集成电路展平式设计技术领域,尤其涉及一种集成电路展平式设计的字符串存储与查询系统及方法。


背景技术:

2.集成电路(integrated circuit)是一种微型电子器件或部件。采用一定的工艺,把一个电路中所需的晶体管、电阻、电容和电感等元件及布线互连一起,制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构;其中所有元件在结构上已组成一个整体,使电子元件向着微小型化、低功耗、智能化和高可靠性方面迈进了一大步。它在电路中用字母“ic”表示。集成电路发明者为杰克
·
基尔比(基于锗(ge)的集成电路)和罗伯特
·
诺伊斯(基于硅(si)的集成电路)。当今半导体工业大多数应用的是基于硅的集成电路。然而,现有集成电路展平式设计的字符串存储与查询系统及方法在每次检索遍历整个电路元素字符串数据库,检索查询效率较低;同时,在对电路元素字符串进行存储时,需要首先根据所选定的字符集,对待编码的电路元素字符串逐字进行编码;进而,存储所得到的电路元素字符串的二进制编码,因此,在存储电路元素字符串时,可能浪费更多存储空间。
3.通过上述分析,现有技术存在的问题及缺陷为:
4.(1)现有集成电路展平式设计的字符串存储与查询系统及方法在每次检索遍历整个电路元素字符串数据库,检索查询效率较低。
5.(2)在对电路元素字符串进行存储时,需要首先根据所选定的字符集,对待编码的电路元素字符串逐字进行编码;进而,存储所得到的电路元素字符串的二进制编码,因此,在存储电路元素字符串时,可能浪费更多存储空间。


技术实现要素:

6.针对现有技术存在的问题,本发明提供了一种集成电路展平式设计的字符串存储与查询系统及方法。
7.本发明是这样实现的,一种集成电路展平式设计的字符串存储与查询系统包括:
8.电路图设计模块、电路字符获取模块、字符数据结构构建模块、字符串查询模块、字符串存储模块、电路模拟测试模块;
9.电路图设计模块,与电路字符获取模块连接,用于通过电路设计程序设计集成电路图;
10.电路字符获取模块,与电路图设计模块、字符数据结构构建模块连接,用于获取电路元素对应的字符串;
11.字符数据结构构建模块,与电路字符获取模块、字符串查询模块连接,用于构建电路元素字符串数据结构;
12.字符串查询模块,与字符数据结构构建模块、字符串存储模块连接,用于通过查询
程序查询电路元素对应的字符串;
13.字符串存储模块,与字符串查询模块、电路模拟测试模块连接,用于通过存储器存储电路元素字符串;
14.电路模拟测试模块,与字符串存储模块连接,用于通过模拟测试程序对设计的集成电路进行模拟测试。
15.一种集成电路展平式设计的字符串存储与查询方法包括以下步骤:
16.步骤一,通过电路图设计模块利用电路设计程序设计集成电路图;
17.步骤二,通过电路字符获取模块获取电路元素对应的字符串;通过字符数据结构构建模块构建电路元素字符串数据结构;
18.步骤三,通过字符串查询模块利用查询程序查询电路元素对应的字符串;通过字符串存储模块利用存储器存储电路元素字符串;
19.步骤四,通过电路模拟测试模块利用模拟测试程序对设计的集成电路进行模拟测试。
20.进一步,所述字符串查询模块查询方法如下:
21.(1)构建电路元素字符串数据库;接收检索请求,所述检索请求中请求从数据库中查询包含有检索字符的电路元素字符串数据;并对电路元素字符串进行匹配;
22.(2)通过索引信息从前缀树中查询目标子树;所述前缀树是基于所述数据库中包含的电路元素字符串数据构建的;所述索引信息用于指示所述前缀树中各个节点作为起始节点的子树所包含的字符组合;所述目标子树是对应的字符组合与所述检索字符相同的子树;
23.(3)从所述前缀树中获取所述目标子树的前缀字符和后缀字符;所述前缀字符是所述前缀树的根节点到所述目标子树的首个节点之间的各个节点对应的字符组合;所述后缀字符是所述目标子树之后的数据尾节点到所述目标子树的最后一个节点之间的各个节点对应的字符组合;所述数据尾节点是所述前缀树中,对应所述数据库中的电路元素字符串数据的最后一个字符的节点;将所述前缀字符、所述检索字符以及所述后缀字符拼接,得到所述检索请求对应的目标电路元素字符串数据;
24.所述对电路元素字符串进行匹配方法:
25.通过fpga并行处理在一个时钟周期找到模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值,通过前缀和后缀的最大公共元素值可直接得到并输出next数组,利用next数组可实现多个模式的模式电路元素字符串并行匹配,根据实现的next函数,每一个模式对应一个匹配引擎,同时对不同的next函数值和模式电路元素字符串,实现的一对多同时比较,最后根据匹配的标志输出最终的匹配结果;
26.所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的具体寻找过程如下:
27.列出前j=2个字符的子串到除去模式电路元素字符串本身的最大的子串;分别比较步骤1中每一个子串的相同大小的前后缀,如果比较相等,输出用一位标志位s=1表示;每一个子串所有的比较的输出标志位s作为一个优先级编码器的输入,编码器输出即可得到所述模式电路元素字符串前j个字符所构成的电路元素字符串最大的前后缀的公共元素值;
28.通过next函数值与前j个字符的子串,它的前后缀的最大公共元素值的关系转而得到next数组;
29.所述得到next数组的具体过程如下:根据next函数值的定义知,next[1]=0;如果最大公共元素值max[1]=0,也就是说,j=2时,前2字符是不等的,可得next[2]=1;即如果得到的max值为零,那么就等于1;如果,最大公共元素值不为零,那么就满足next[j]=max[j-1];即可一一对应next函数值;
[0030]
在所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的实现方式如下:
[0031]
在模式电路元素字符串存储中按地址为分别可得到前j个字符的子串,每一个子串由8bit的ascii码表示,j的值等于字节的数目;
[0032]
根据步骤1中的得到的j字节的二进制数,通过相应位的比较器,比较器输出1bit,相等输出为1,否则为0;
[0033]
根据每一个前j个字符的子串,它每一个比较器输出由高位到低位作为编码器的输入,以最高位优先级编码,得到对应第j位的max值;
[0034]
实现next函数值的方式如下:
[0035]
根据得到max值,此处用到比较器,判断max值是否为零,然后在不为零的情况用到加法器执行加1操作,否则不执行,直接对应为赋值为1;
[0036]
根据上面比较器和加法器共同作用的结果后,依次按地址存放得到next函数值。
[0037]
进一步,所述通过索引信息从前缀树中查询目标子树,包括:
[0038]
从所述索引信息指示的各种字符组合中确定目标字符组合,所述目标字符组合包含n位字符,且所述目标字符组合与所述检索字符中的前n位字符相同;n为大于或者等于1的整数;
[0039]
将所述目标字符组合对应的起始节点确定为目标起始节点;
[0040]
从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树。
[0041]
进一步,所述索引信息包括所述各种字符组合对应的起始节点的指针;
[0042]
所述将所述目标字符组合对应的起始节点确定为目标起始节点,包括:
[0043]
获取所述索引信息中包含的,所述目标字符组合对应的起始节点的指针;
[0044]
将所述前缀树中,所述目标字符组合对应的起始节点的指针指向的节点确定为所述目标起始节点。
[0045]
进一步,所述从所述索引信息指示的各种字符组合中确定目标字符组合,包括:
[0046]
将所述各种字符组合中,构成所述检索字符中的前缀部分的字符组合确定为候选字符组合;
[0047]
将所述候选字符组合中字符位数最大的字符组合确定为所述目标字符组合。
[0048]
进一步,所述索引信息指示的各种字符组合包括双字符组合之外的各种字符组合;
[0049]
响应于所述目标起始节点包括m个节点,m为大于或者等于2的整数,所述从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树,包括:
[0050]
获取所述m个节点各自在所述前缀树中的层级,所述层级用于指示对应的节点到根节点的距离;
[0051]
按照层级从低到高的顺序,依次从所述m个节点中的各个节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树;
[0052]
所述从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:
[0053]
从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点;
[0054]
所述前缀树中的各个节点对应有各自的父节点指针,所述父节点指针用于指示对应节点的父节点;
[0055]
所述从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点,包括:
[0056]
根据所述目标子树的首个节点的父节点指针,从所述目标子树的首个节点开始依次向所述前缀树的根节点迭代查询父节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点。
[0057]
进一步,所述从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:
[0058]
获取所述前缀树中,位于所述目标子树之后的各个节点对应的尾节点标识,所述尾节点标识用于指示对应的节点是否为数据尾节点;
[0059]
根据所述尾节点标识,确定位于所述目标子树之后的各个节点中的数据尾节点。
[0060]
进一步,所述字符串存储模块存储方法如下:
[0061]
1)获得待存储的电路元素字符串,对电路元素字符串进行统计;其中,所述电路元素字符串是由多个字段下的字段值构成的;将所述电路元素字符串按照字段拆分为多个字符组;
[0062]
2)针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
[0063]
3)将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值;存储所述电路元素字符串的编码值。
[0064]
进一步,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:
[0065]
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;
[0066]
如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值;
[0067]
关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:
[0068]
为该字段值可控的字段的各个字段值分配一个数字编号;基于该字段值可控的字
段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
[0069]
针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值;
[0070]
所述将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值的步骤,包括:
[0071]
判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
[0072]
计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
[0073]
判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;
[0074]
如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
[0075]
将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述电路元素字符串的编码值;
[0076]
所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:
[0077]
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
[0078]
按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
[0079]
结合上述的技术方案和解决的技术问题,请从以下几方面分析本发明所要保护的技术方案所具备的优点及积极效果为:
[0080]
第一、针对上述现有技术存在的技术问题以及解决该问题的难度,紧密结合本发明的所要保护的技术方案以及研发过程中结果和数据等,详细、深刻地分析本发明技术方案如何解决的技术问题,解决问题之后带来的一些具备创造性的技术效果。具体描述如下:
[0081]
本发明通过字符串查询模块可以通过预先建立的索引信息,从基于电路元素字符串数据构建的前缀树中确定出检索字符对应的目标子树,然后在前缀树中获取该目标子树对应的前缀字符和后缀字符,通过将前缀字符、检索字符和后缀字符进行拼接,即可以得到数据库中任意位置包含检索字符的目标电路元素字符串数据,在上述过程中,一方面由于检索过程是通过前缀树和索引信息来实现的,不需要遍历数据库中的所有电路元素字符串数据,能够保证较高的检索查询效率;同时,通过字符串存储模块所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数;因此,在存储电路元素字符串时,可以节省存储空间。
[0082]
第二,把技术方案看做一个整体或者从产品的角度,本发明所要保护的技术方案
具备的技术效果和优点,具体描述如下:
[0083]
本发明通过字符串查询模块可以通过预先建立的索引信息,从基于电路元素字符串数据构建的前缀树中确定出检索字符对应的目标子树,然后在前缀树中获取该目标子树对应的前缀字符和后缀字符,通过将前缀字符、检索字符和后缀字符进行拼接,即可以得到数据库中任意位置包含检索字符的目标电路元素字符串数据,在上述过程中,一方面由于检索过程是通过前缀树和索引信息来实现的,不需要遍历数据库中的所有电路元素字符串数据,能够保证较高的检索查询效率;同时,通过字符串存储模块所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数;因此,在存储电路元素字符串时,可以节省存储空间。
附图说明
[0084]
图1是本发明实施例提供的集成电路展平式设计的字符串存储与查询方法流程图。
[0085]
图2是本发明实施例提供的集成电路展平式设计的字符串存储与查询系统结构框图。
[0086]
图3是本发明实施例提供的字符串查询模块查询方法流程图。
[0087]
图4是本发明实施例提供的字符串存储模块存储方法流程图。
[0088]
图2中:1、电路图设计模块;2、电路字符获取模块;3、字符数据结构构建模块;4、字符串查询模块;5、字符串存储模块;6、电路模拟测试模块。
具体实施方式
[0089]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0090]
一、解释说明实施例。为了使本领域技术人员充分了解本发明如何具体实现,该部分是对权利要求技术方案进行展开说明的解释说明实施例。
[0091]
如图1所示,本发明提供的集成电路展平式设计的字符串存储与查询方法包括以下步骤:
[0092]
s101,通过电路图设计模块利用电路设计程序设计集成电路图;
[0093]
s102,通过电路字符获取模块获取电路元素对应的字符串;通过字符数据结构构建模块构建电路元素字符串数据结构;
[0094]
s103,通过字符串查询模块利用查询程序查询电路元素对应的字符串;通过字符串存储模块利用存储器存储电路元素字符串;
[0095]
s104,通过电路模拟测试模块利用模拟测试程序对设计的集成电路进行模拟测试。
[0096]
如图2所示,本发明实施例提供的集成电路展平式设计的字符串存储与查询系统包括:电路图设计模块1、电路字符获取模块2、字符数据结构构建模块3、字符串查询模块4、字符串存储模块5、电路模拟测试模块6。
[0097]
电路图设计模块1,与电路字符获取模块2连接,用于通过电路设计程序设计集成电路图;
[0098]
电路字符获取模块2,与电路图设计模块1、字符数据结构构建模块3连接,用于获取电路元素对应的字符串;
[0099]
字符数据结构构建模块3,与电路字符获取模块2、字符串查询模块4连接,用于构建电路元素字符串数据结构;
[0100]
字符串查询模块4,与字符数据结构构建模块3、字符串存储模块5连接,用于通过查询程序查询电路元素对应的字符串;
[0101]
字符串存储模块5,与字符串查询模块4、电路模拟测试模块6连接,用于通过存储器存储电路元素字符串;
[0102]
电路模拟测试模块6,与字符串存储模块5连接,用于通过模拟测试程序对设计的集成电路进行模拟测试。
[0103]
如图3所示,本发明提供的字符串查询模块4查询方法如下:
[0104]
s201,构建电路元素字符串数据库;接收检索请求,所述检索请求中请求从数据库中查询包含有检索字符的电路元素字符串数据;并对电路元素字符串进行匹配;
[0105]
s202,通过索引信息从前缀树中查询目标子树;所述前缀树是基于所述数据库中包含的电路元素字符串数据构建的;所述索引信息用于指示所述前缀树中各个节点作为起始节点的子树所包含的字符组合;所述目标子树是对应的字符组合与所述检索字符相同的子树;
[0106]
s203,从所述前缀树中获取所述目标子树的前缀字符和后缀字符;所述前缀字符是所述前缀树的根节点到所述目标子树的首个节点之间的各个节点对应的字符组合;所述后缀字符是所述目标子树之后的数据尾节点到所述目标子树的最后一个节点之间的各个节点对应的字符组合;所述数据尾节点是所述前缀树中,对应所述数据库中的电路元素字符串数据的最后一个字符的节点;将所述前缀字符、所述检索字符以及所述后缀字符拼接,得到所述检索请求对应的目标电路元素字符串数据;
[0107]
所述对电路元素字符串进行匹配方法:
[0108]
通过fpga并行处理在一个时钟周期找到模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值,通过前缀和后缀的最大公共元素值可直接得到并输出next数组,利用next数组可实现多个模式的模式电路元素字符串并行匹配,根据实现的next函数,每一个模式对应一个匹配引擎,同时对不同的next函数值和模式电路元素字符串,实现的一对多同时比较,最后根据匹配的标志输出最终的匹配结果;
[0109]
所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的具体寻找过程如下:
[0110]
列出前j=2个字符的子串到除去模式电路元素字符串本身的最大的子串;分别比较步骤1中每一个子串的相同大小的前后缀,如果比较相等,输出用一位标志位s=1表示;每一个子串所有的比较的输出标志位s作为一个优先级编码器的输入,编码器输出即可得到所述模式电路元素字符串前j个字符所构成的电路元素字符串最大的前后缀的公共元素值;
[0111]
通过next函数值与前j个字符的子串,它的前后缀的最大公共元素值的关系转而
得到next数组;
[0112]
所述得到next数组的具体过程如下:根据next函数值的定义知,next[1]=0;如果最大公共元素值max[1]=0,也就是说,j=2时,前2字符是不等的,可得next[2]=1;即如果得到的max值为零,那么就等于1;如果,最大公共元素值不为零,那么就满足next[j]=max[j-1];即可一一对应next函数值;
[0113]
在所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的实现方式如下:
[0114]
在模式电路元素字符串存储中按地址为分别可得到前j个字符的子串,每一个子串由8bit的ascii码表示,j的值等于字节的数目;
[0115]
根据步骤1中的得到的j字节的二进制数,通过相应位的比较器,比较器输出1bit,相等输出为1,否则为0;
[0116]
根据每一个前j个字符的子串,它每一个比较器输出由高位到低位作为编码器的输入,以最高位优先级编码,得到对应第j位的max值;
[0117]
实现next函数值的方式如下:
[0118]
根据得到max值,此处用到比较器,判断max值是否为零,然后在不为零的情况用到加法器执行加1操作,否则不执行,直接对应为赋值为1;
[0119]
根据上面比较器和加法器共同作用的结果后,依次按地址存放得到next函数值。
[0120]
本发明提供的通过索引信息从前缀树中查询目标子树,包括:
[0121]
从所述索引信息指示的各种字符组合中确定目标字符组合,所述目标字符组合包含n位字符,且所述目标字符组合与所述检索字符中的前n位字符相同;n为大于或者等于1的整数;
[0122]
将所述目标字符组合对应的起始节点确定为目标起始节点;
[0123]
从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树。
[0124]
本发明提供的索引信息包括所述各种字符组合对应的起始节点的指针;
[0125]
所述将所述目标字符组合对应的起始节点确定为目标起始节点,包括:
[0126]
获取所述索引信息中包含的,所述目标字符组合对应的起始节点的指针;
[0127]
将所述前缀树中,所述目标字符组合对应的起始节点的指针指向的节点确定为所述目标起始节点。
[0128]
本发明提供的从所述索引信息指示的各种字符组合中确定目标字符组合,包括:
[0129]
将所述各种字符组合中,构成所述检索字符中的前缀部分的字符组合确定为候选字符组合;
[0130]
将所述候选字符组合中字符位数最大的字符组合确定为所述目标字符组合。
[0131]
本发明提供的索引信息指示的各种字符组合包括双字符组合之外的各种字符组合;
[0132]
响应于所述目标起始节点包括m个节点,m为大于或者等于2的整数,所述从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树,包括:
[0133]
获取所述m个节点各自在所述前缀树中的层级,所述层级用于指示对应的节点到
根节点的距离;
[0134]
按照层级从低到高的顺序,依次从所述m个节点中的各个节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树;
[0135]
所述从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:
[0136]
从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点;
[0137]
所述前缀树中的各个节点对应有各自的父节点指针,所述父节点指针用于指示对应节点的父节点;
[0138]
所述从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点,包括:
[0139]
根据所述目标子树的首个节点的父节点指针,从所述目标子树的首个节点开始依次向所述前缀树的根节点迭代查询父节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点。
[0140]
本发明提供的从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:
[0141]
获取所述前缀树中,位于所述目标子树之后的各个节点对应的尾节点标识,所述尾节点标识用于指示对应的节点是否为数据尾节点;
[0142]
根据所述尾节点标识,确定位于所述目标子树之后的各个节点中的数据尾节点。
[0143]
如图4所示,本发明提供的字符串存储模块5存储方法如下:
[0144]
s301,获得待存储的电路元素字符串,对电路元素字符串进行统计;其中,所述电路元素字符串是由多个字段下的字段值构成的;将所述电路元素字符串按照字段拆分为多个字符组;
[0145]
s302,针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
[0146]
s303,将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值;存储所述电路元素字符串的编码值。
[0147]
本发明提供的针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:
[0148]
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;
[0149]
如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值;
[0150]
关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:
[0151]
为该字段值可控的字段的各个字段值分配一个数字编号;基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
[0152]
针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值;
[0153]
所述将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值的步骤,包括:
[0154]
判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
[0155]
计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
[0156]
判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;
[0157]
如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
[0158]
将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述电路元素字符串的编码值;
[0159]
所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:
[0160]
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
[0161]
按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
[0162]
二、应用实施例。为了证明本发明的技术方案的创造性和技术价值,该部分是对权利要求技术方案进行具体产品上或相关技术上的应用实施例。
[0163]
本发明通过字符串查询模块可以通过预先建立的索引信息,从基于电路元素字符串数据构建的前缀树中确定出检索字符对应的目标子树,然后在前缀树中获取该目标子树对应的前缀字符和后缀字符,通过将前缀字符、检索字符和后缀字符进行拼接,即可以得到数据库中任意位置包含检索字符的目标电路元素字符串数据,在上述过程中,一方面由于检索过程是通过前缀树和索引信息来实现的,不需要遍历数据库中的所有电路元素字符串数据,能够保证较高的检索查询效率;同时,通过字符串存储模块所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数;因此,在存储电路元素字符串时,可以节省存储空间。
[0164]
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电
子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0165]
三、实施例相关效果的证据。本发明实施例在研发或者使用过程中取得了一些积极效果,和现有技术相比的确具备很大的优势,下面内容结合试验过程的数据、图表等进行描述。
[0166]
本发明通过字符串查询模块可以通过预先建立的索引信息,从基于电路元素字符串数据构建的前缀树中确定出检索字符对应的目标子树,然后在前缀树中获取该目标子树对应的前缀字符和后缀字符,通过将前缀字符、检索字符和后缀字符进行拼接,即可以得到数据库中任意位置包含检索字符的目标电路元素字符串数据,在上述过程中,一方面由于检索过程是通过前缀树和索引信息来实现的,不需要遍历数据库中的所有电路元素字符串数据,能够保证较高的检索查询效率;同时,通过字符串存储模块所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数;因此,在存储电路元素字符串时,可以节省存储空间。
[0167]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

技术特征:
1.一种集成电路展平式设计的字符串存储与查询系统,其特征在于,所述集成电路展平式设计的字符串存储与查询系统包括:电路图设计模块、电路字符获取模块、字符数据结构构建模块、字符串查询模块、字符串存储模块、电路模拟测试模块;电路图设计模块,与电路字符获取模块连接,用于通过电路设计程序设计集成电路图;电路字符获取模块,与电路图设计模块、字符数据结构构建模块连接,用于获取电路元素对应的字符串;字符数据结构构建模块,与电路字符获取模块、字符串查询模块连接,用于构建电路元素字符串数据结构;字符串查询模块,与字符数据结构构建模块、字符串存储模块连接,用于通过查询程序查询电路元素对应的字符串;字符串存储模块,与字符串查询模块、电路模拟测试模块连接,用于通过存储器存储电路元素字符串;电路模拟测试模块,与字符串存储模块连接,用于通过模拟测试程序对设计的集成电路进行模拟测试。2.一种如权利要求1所述的集成电路展平式设计的字符串存储与查询方法,其特征在于,所述集成电路展平式设计的字符串存储与查询方法包括以下步骤:步骤一,通过电路图设计模块利用电路设计程序设计集成电路图;步骤二,通过电路字符获取模块获取电路元素对应的字符串;通过字符数据结构构建模块构建电路元素字符串数据结构;步骤三,通过字符串查询模块利用查询程序查询电路元素对应的字符串;通过字符串存储模块利用存储器存储电路元素字符串;步骤四,通过电路模拟测试模块利用模拟测试程序对设计的集成电路进行模拟测试。3.如权利要求1所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述字符串查询模块查询方法如下:(1)构建电路元素字符串数据库;接收检索请求,所述检索请求中请求从数据库中查询包含有检索字符的电路元素字符串数据;并对电路元素字符串进行匹配;(2)通过索引信息从前缀树中查询目标子树;所述前缀树是基于所述数据库中包含的电路元素字符串数据构建的;所述索引信息用于指示所述前缀树中各个节点作为起始节点的子树所包含的字符组合;所述目标子树是对应的字符组合与所述检索字符相同的子树;(3)从所述前缀树中获取所述目标子树的前缀字符和后缀字符;所述前缀字符是所述前缀树的根节点到所述目标子树的首个节点之间的各个节点对应的字符组合;所述后缀字符是所述目标子树之后的数据尾节点到所述目标子树的最后一个节点之间的各个节点对应的字符组合;所述数据尾节点是所述前缀树中,对应所述数据库中的电路元素字符串数据的最后一个字符的节点;将所述前缀字符、所述检索字符以及所述后缀字符拼接,得到所述检索请求对应的目标电路元素字符串数据;所述对电路元素字符串进行匹配方法:通过fpga并行处理在一个时钟周期找到模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值,通过前缀和后缀的最大公共元素值可直接得到并输出
next数组,利用next数组可实现多个模式的模式电路元素字符串并行匹配,根据实现的next函数,每一个模式对应一个匹配引擎,同时对不同的next函数值和模式电路元素字符串,实现的一对多同时比较,最后根据匹配的标志输出最终的匹配结果;所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的具体寻找过程如下:列出前j=2个字符的子串到除去模式电路元素字符串本身的最大的子串;分别比较步骤1中每一个子串的相同大小的前后缀,如果比较相等,输出用一位标志位s=1表示;每一个子串所有的比较的输出标志位s作为一个优先级编码器的输入,编码器输出即可得到所述模式电路元素字符串前j个字符所构成的电路元素字符串最大的前后缀的公共元素值;通过next函数值与前j个字符的子串,它的前后缀的最大公共元素值的关系转而得到next数组;所述得到next数组的具体过程如下:根据next函数值的定义知,next[1]=0;如果最大公共元素值max[1]=0,也就是说,j=2时,前2字符是不等的,可得next[2]=1;即如果得到的max值为零,那么就等于1;如果,最大公共元素值不为零,那么就满足next[j]=max[j-1];即可一一对应next函数值;在所述模式电路元素字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的实现方式如下:在模式电路元素字符串存储中按地址为分别可得到前j个字符的子串,每一个子串由8bit的ascii码表示,j的值等于字节的数目;根据步骤1中的得到的j字节的二进制数,通过相应位的比较器,比较器输出1bit,相等输出为1,否则为0;根据每一个前j个字符的子串,它每一个比较器输出由高位到低位作为编码器的输入,以最高位优先级编码,得到对应第j位的max值;实现next函数值的方式如下:根据得到max值,此处用到比较器,判断max值是否为零,然后在不为零的情况用到加法器执行加1操作,否则不执行,直接对应为赋值为1;根据上面比较器和加法器共同作用的结果后,依次按地址存放得到next函数值。4.如权利要求3所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述通过索引信息从前缀树中查询目标子树,包括:从所述索引信息指示的各种字符组合中确定目标字符组合,所述目标字符组合包含n位字符,且所述目标字符组合与所述检索字符中的前n位字符相同;n为大于或者等于1的整数;将所述目标字符组合对应的起始节点确定为目标起始节点;从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树。5.如权利要求3所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述索引信息包括所述各种字符组合对应的起始节点的指针;所述将所述目标字符组合对应的起始节点确定为目标起始节点,包括:获取所述索引信息中包含的,所述目标字符组合对应的起始节点的指针;
将所述前缀树中,所述目标字符组合对应的起始节点的指针指向的节点确定为所述目标起始节点。6.如权利要求3所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述从所述索引信息指示的各种字符组合中确定目标字符组合,包括:将所述各种字符组合中,构成所述检索字符中的前缀部分的字符组合确定为候选字符组合;将所述候选字符组合中字符位数最大的字符组合确定为所述目标字符组合。7.如权利要求3所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述索引信息指示的各种字符组合包括双字符组合之外的各种字符组合;响应于所述目标起始节点包括m个节点,m为大于或者等于2的整数,所述从所述目标起始节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树,包括:获取所述m个节点各自在所述前缀树中的层级,所述层级用于指示对应的节点到根节点的距离;按照层级从低到高的顺序,依次从所述m个节点中的各个节点开始,在所述前缀树中对所述检索字符进行前缀匹配,得到所述目标子树;所述从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点;所述前缀树中的各个节点对应有各自的父节点指针,所述父节点指针用于指示对应节点的父节点;所述从所述目标子树的首个节点开始依次查询祖先节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点,包括:根据所述目标子树的首个节点的父节点指针,从所述目标子树的首个节点开始依次向所述前缀树的根节点迭代查询父节点,得到所述前缀树的根节点到所述目标子树的首个节点之间的各个节点。8.如权利要求3所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述从所述前缀树中获取所述目标子树的前缀字符和后缀字符之前,还包括:获取所述前缀树中,位于所述目标子树之后的各个节点对应的尾节点标识,所述尾节点标识用于指示对应的节点是否为数据尾节点;根据所述尾节点标识,确定位于所述目标子树之后的各个节点中的数据尾节点。9.如权利要求1所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述字符串存储模块存储方法如下:1)获得待存储的电路元素字符串,对电路元素字符串进行统计;其中,所述电路元素字符串是由多个字段下的字段值构成的;将所述电路元素字符串按照字段拆分为多个字符组;2)针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
3)将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值;存储所述电路元素字符串的编码值。10.如权利要求9所述集成电路展平式设计的字符串存储与查询系统,其特征在于,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值;关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:为该字段值可控的字段的各个字段值分配一个数字编号;基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值;所述将各个字符组的编码值进行组合,得到所述电路元素字符串的编码值的步骤,包括:判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述电路元素字符串的编码值;所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。

技术总结
本发明属于集成电路展平式设计技术领域,公开了一种集成电路展平式设计的字符串存储与查询系统及方法,所述集成电路展平式设计的字符串存储与查询系统包括:电路图设计模块、电路字符获取模块、字符数据结构构建模块、字符串查询模块、字符串存储模块、电路模拟测试模块。本发明通过字符串查询模块不需要遍历数据库中的所有电路元素字符串数据,能够保证较高的检索查询效率;同时,通过字符串存储模块所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数;因此,在存储电路元素字符串时,可以节省存储空间。可以节省存储空间。可以节省存储空间。


技术研发人员:刘庆 华钧 黄成刚
受保护的技术使用者:北京科能腾达信息技术股份有限公司
技术研发日:2022.07.26
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-500.html

最新回复(0)