具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中在创建验证计划时需要定义一套复杂语法并开发一套专门编辑器,造成验证计划撰写难度大的技术问题,本发明提供了实施例一。
实施例一
请参阅图1,其示出了一种验证计划的创建系统的结构框图,所述系统包括数据库、可视化的表格编辑区和层次化控制区。
需要说明的是,其中表格编辑区和层次化控制区均为可视化窗口部分,而数据库的内容是非可视化的。
可选的,表格编辑区为excel表格文件,或者为wps表格文件,现有技术中其他表格文件均在本发明的保护范围之内。
其中,层次化控制区为可视化窗口,在层次化控制区中设有多个按钮,用于增加、删除或者修改节点之间的层次关系。其中层次化控制区独立于表格编辑区,且层次化控制区与表格编辑区的数据均来源于数据库,因此层次化控制区、表格编辑区和数据库中的层次结构同时变化。
进一步,所述表格编辑区包括可扩展的多个验证点条目,每个验证点条目包括多个属性字段,其中,属性字段包括验证点的唯一标识id字段、验证点父节点的唯一标识pid字段、验证点的名称字段、验证点所统计的覆盖指标类型字段和匹配规则字段;其中验证点的唯一标识id字段和验证点父节点的唯一标识pid字段为层次关系属性字段。
其中,验证点为验证计划或验证特性。用户设计一般比较大,会创建多个验证计划对用户设计进行验证,每个验证计划中包括多个验证特性的验证。验证计划之间构成层次结构,验证特性之间也构成层次结构。其中验证计划也称为plan,验证特性也称为feature,验证特性为验证计划中细化的验证对象。
其中,覆盖指标类型包括行覆盖率、条件覆盖率、有限状态机覆盖率、断言覆盖率等。
其中,验证点的名称为验证计划或验证特性的名称。
其中,匹配规则为用户指定的验证特性的匹配规则。需要说明的是,在根据验证计划进行验证时,需要根据当前验证特性在匹配规则的约束下在覆盖率数据库中查找对应的覆盖对象,并将覆盖对象的覆盖率数据反标在当前验证特性上。可选的,匹配规则的匹配格式为全路径名或符合覆盖率数据交换标准(Unified Coverage InteroperabilityStandard,UCIS)定义的对象唯一标识符。其中,全路径名用于在覆盖率数据库中匹配覆盖对象,全路径名包括从用户设计的根节点到当前待匹配的覆盖对象之间每层查找到的对象名,其中不同层的对象名称之间采用分隔符进行分隔,例如全路径名:instance:inst1/inst1.1/inst1.1.2。其中,符合UCIS标准定义的对象唯一标识符是根据UCIS中规定的标准格式进行匹配,例如/24:work.top/12:cg/14:cvpa/30:a/:0:#bin#。
优选的,匹配规则的匹配格式为符合UCIS标准定义的对象唯一标识符。不受不同厂商的不同定义的影响,匹配规则由于符合USCIS标准定义,因此匹配规则通用。
其中,id和pid的设置能够构建验证点之间的父子关系,也即能够通过id和pid的配置得到相应条目之间的层次关系。具体的,验证计划的层次结构是通过每个验证点的id和pid的值来定义的。
可选的,id用于唯一标识验证计划或验证特性。id为数字或具有层次结构的字符串,现有技术中其他用于标识层次结构的编码或者字符规则均落入本发明的保护范围之内。作为一个示例,id为1.1.2.5,依次表示四级层次结构。
进一步,所述层次化控制区包括与各验证点条目对齐且可视化的树形结构,所述树形结构与所述表格编辑区关联同一所述数据库。
需要说明的是,在层次化控制区的树形结构反映了表格编辑区中id和pid所标识的层次关系。在创建验证计划时,当用户在层次化控制区中执行操作建立属性结构的同时,在表格编辑区中相应验证点条目中自动生成验证点的唯一标识id字段和验证点父节点的唯一标识pid字段。
进一步,当用户对层次化控制区中树形结构的执行操作时,在数据库中生成具有对应层次结构的数据块,并同时生成可视化的表格编辑区中的层次关系属性字段。
其中,每个验证点的数据块包括验证点的唯一标识id、验证点父节点的唯一标识pid、验证点的名称、验证点所统计的覆盖指标类型和匹配规则。可选的,每个数据块为json数据块,数据块中每个属性均为键值对格式。
其中,执行操作可以是增加一个节点,删除一个节点,修改节点名称或者修改节点与节点之间的层次关系。在修改节点与节点之间的层析关系时可以采用拖拽的操作方式。
由于验证计划的层次结构能够很容易的在可视化的层次化控制区内进行操作,并且当需要变更节点与节点之间的层次结构时,在可视化的层次化控制区能够很容易的改变,即可因此很大程度上降低了验证计划创建的难度。
进一步,当用户在表格编辑区指定验证点的属性字段时,在数据库中生成验证点对应的数据块的所有属性字段的数据信息,进而得到验证计划。需要说明的是,表格编辑区和层次化控制区为两个独立的可视化窗口且可并排显示。
本发明无需专门为验证计划定义一套复杂语法,无需为编辑验证计划开发一套专门的编辑器,只需要使用表格文件就能完成验证计划的创建。
作为一个优选实施例,为了保留用户在制作规范文档spec时提供的额外信息,指定所述表格编辑区的结束行和结束列。具体的,按照验证计划执行的顺序,指定表格编辑区的起始行和起始列,起始行之后出现的第一个指定结束行标志为结束行,起始列之后出现的第一个指定结束列标志为结束列;起始行和结束行、起始列和结束列围成的连续区域为有效区,在有效区之外的内容不参与验证。在有效区之外可以添加规范文档spec中的表格、图片或者其他备注信息,能够在保留这些额外信息的情况下保证额外信息不参与验证,为用户提供了极大的便利。
可选的,指定结束行标志和指定结束列标志成对出现,指定结束行标志为空行和指定结束列标志为空列,或者指定结束行标志和指定结束列标志均为指定编码或字符,编码或字符可以相同,也可以不同,由用户指定。
作为一个优选实施例,所述系统还包括配置信息,所述配置信息包括覆盖率指标配置信息和属性配置信息,所述配置信息独立存储,所述配置信息的存储位置与所述表格编辑区的存储位置不同。
其中,覆盖率指标配置信息用于配置在表格编辑区中创建的验证计划中每种覆盖指标类型字段。其中,覆盖率指标配置信息包括对每种类型的覆盖率指标的配置条目,每个配置条目包括覆盖指标类型的名称、覆盖率指标数据类型和数据聚合方式。每个配置条目用于配置每种类型的覆盖率指标的数据类型和聚合方式等。现有技术中其他用于配置覆盖率的配置信息也落入本发明的保护范围之内。
可选的,覆盖指标类型的名称为行覆盖率、条件覆盖率、有限状态机覆盖率、断言覆盖率等。现有技术中其他覆盖指标类型的名称也落入本发明的保护范围之内。
可选的,内置的覆盖率指标数据类型为比率型数据ratio,整型数据int,实数数据real,现有技术中其他数据类型也落入本发明的保护范围之内。
可选的,数据聚合方式为求和sum、均值average、最小值min,或最大值max。用户也可以添加自定义聚合器来定义数据聚合方式。
可选的,覆盖率指标配置信息中还包括覆盖率的权重weight。其中权重用于调整过相应覆盖率在计算过程中的比重。
可选的,覆盖率指标配置信息中还包括覆盖率指标的目标表达式。其中,目标表达式用于限定覆盖率的最低值。例如将目标表达式设置为覆盖率满分的90%(goal>0.9),则当验证计划的覆盖率大于90%时,验证通过。
其中,属性配置信息包括属性名称、属性数据类型和标识该属性值是否需要向下传递。可选的,属性数据类型为字符串数据、整型数据或实数,现有技术中其他数据类型也落入本发明的保护范围之内。
可选的,所述配置信息存储在数据库中,所有验证计划共享同一份全局的配置信息。通过独立配置全局配置信息的方式能够实现配置信息的全局共享重用,而不是每次都在验证计划中重复定义。
可选的,所述配置信息分别独立存储在表格文件中,通过复制表格文件实现复用。将配置信息存储在数据库中作为全局配置或者将配置信息存储在独立的表格文件中,通过复制表格文件实现复用,这两种实现方式同样都能够达到复用配置信息的目的。在需要进行添加、修改、删除某些配置时只需要修改配置文件即可,不需要像现有技术中一样对每个验证计划中的相应语法进行修改,本发明使得这些操作更加简便快速。
作为一个优选实施例,当单个验证特性包括多条匹配规则时,不同的匹配规则之间按照指定分隔符进行分隔。可选的,指定分隔符为逗号或分号,现有技术中其他用于分隔两条匹配规则的分隔符也落入本发明的保护范围之内。
作为一个优选实施例,所述系统还包括:当用户对层次化控制区中树形结构的执行变更操作时,更新数据库中数据块的层次关系属性字段的数据信息,并同时更新可视化的表格编辑区中的层次关系属性字段。
作为一个优选实施例,在根据验证计划进行验证时,抽取验证计划中的验证数据。可选的,通过第三方工具或VBA直接读取表格编辑区的内容,抽取验证计划区域中的数据生成中间格式并输入给覆盖率反标程序进行匹配计算。或者,直接导出csv文件,并输入给覆盖率反标程序进行匹配计算。
作为一个优选实施例,所述表格编辑区中还包括覆盖率指标字段;当单个验证特性包括多条匹配规则时,覆盖率指标与匹配规则按照顺序配置。例如,单个验证特性包括三条匹配规则,每个匹配规则验证生成一个覆盖率指标,则覆盖率指标按照三条匹配规则的排序而排序。
采用表格编辑区来创建验证计划的好处还在于,表格工具中集成的功能都可以辅助创建验证计划,例如复制粘贴、加粗加亮等功能。
实施例一只需要使用表格文件就能完成验证计划的创建,不需要专门定义一套语法和编辑器,用户不需要学习复杂的语法,直接填写或者拖拽内容即可完成验证计划的创建,降低了用户创建验证计划的门槛。但是当系统自动提取由表格文件所创建的验证计划中的数据,得到能够用于在用户设计中查找覆盖率的验证计划数据文件之后,在该验证计划数据文件中包括大量的数据块,若用户需要对数据块之间的层次结构进行调整,则会导致大量的数据块需要改动,不仅容易出错而且容易造成数据的卡顿,若需要改动的数据块在验证计划数据文件中包括多个重复数据块,需要为所有重复的数据块统一做修改,增加改动的难度,为了解决上述问题本发明提供了实施例二。
实施例二
请参阅图2,其示出了一种可重用验证计划创建方法流程图,所述方法包括以下步骤:
S100,将验证计划中每个验证点的层次结构信息保存在结构文件的结构数据块中,将每个验证点的非层次结构信息保存在关联文件的关联数据块中,分别得到每个验证计划的结构文件和关联文件。需要说明的是,结构文件和关联文件为验证计划数据文件。
进一步,结构文件包括多个结构数据块,每个结构数据块的层次结构信息包括验证点的唯一标识id和验证点父节点的唯一标识pid。需要说明的是,实施例二是在实施例一的基础上进行的改进,实施例二中的验证点、验证点的唯一标识id和验证点父节点的唯一标识pid的概念与实施例一相同,不再赘述。需要说明的是,每个验证点的数据都分别存储在两个独立的json格式数据块中:结构数据块和关联数据块。并通过id和pid之间的绑定关系反映出各验证点条目之间的层次结构。结构文件能够快速加载计划的整体层次结构,支持对层次结构的增删改查操作。
进一步,关联文件包括多个关联数据块,每个关联数据块的非层次结构信息包括验证点的唯一标识id和匹配规则。当关联数据块中验证点的唯一标识id与结构数据块中验证点的唯一标识id相同时,关联数据块和结构数据块为同一个验证点的两部分数据。其中,结构数据块中携带的是验证点在层次结构中的位置结构信息,关联数据块携带的是验证点的匹配信息等非层次结构信息。其中,匹配规则与实施例一中相同,不再赘述。需要说明的是,当验证点为验证计划时,关联数据块中的匹配规则为空。
进一步,每个结构文件中有且仅有一个根节点;所述关联文件中的关联数据块与所述结构文件中的结构数据块通过验证点的唯一标识id映射关联。
需要说明的是,在定义验证计划的结构文件中的根节点为计划,在定义子计划的结构文件中的根节点为子计划,在定义子验证特性的文件中的根节点为子验证特性。具体的,在定义验证计划的结构文件中,根节点为验证计划,根节点的子节点为各个不同的验证点,每个验证点可能还具有子验证点,以此类推。
S200,获取用户指定的待嵌套的验证模块的名称以及在验证计划中目标嵌套验证点;所述待嵌套的验证模块的层次结构信息保存在结构文件的结构数据块中,且非层次结构信息保存在关联文件的关联数据块中。
其中,验证模块为子验证计划或子验证特性。且待嵌套的验证模块的信息也分别保存在结构文件和关联文件中。需要说明的是,验证模块与验证计划的保存方式相同,子验证计划也同样包括多个验证点的数据块且验证点之间具有层次结构。同理,子验证特性也同样包括包括多个验证点的数据块且验证点之间具有层次结构。
其中,目标嵌套验证点为待嵌套的验证模块的父节点。
S300,新建目标结构数据块,所述目标结构数据块的验证点为待嵌套的验证模块,验证点父节点的唯一标识pid绑定目标嵌套验证点,并在目标结构数据块中增加索引属性,所述索引属性用于指定待嵌套的验证模块的名称。
当验证计划很大时,只加载结构文件;当用户查看详细属性时,一次性或通过id分布加载关联文件中的内容,这样能提高验证计划的加载速度。
当用户仅修改验证计划的层次结构时,只需更新结构文件,无需对关联文件的内容进行修改;同样的,对于非层次结构信息的属性修改,也不会对结构文件的内容进行修改。对于大型验证计划,现有技术中通过自定义语法将各验证点的所有属性定义到一个文件中的方式其无法修改层次结构以及无法复用的问题。采用本实施例二所提供的方法,可以极大限度的减少需要移动的数据块大小,从而达到提高速度,减少内存开销的作用,解决了卡顿的问题。
实施例二采用数据块来定义验证计划,提高了验证计划的通用性,用户无需熟悉某个厂商定义的特殊语法,也无需依赖厂商提供的定制编辑器来编写验证计划。也能支持被Web应用所支持,无需额外的数据转换。同时,通过扁平化的数据格式,降低验证计划中计划(plan)和验证特性(feature),验证特性和验证特性的耦合关系,从而使得验证计划和验证特性具备可重用性,不仅解决了卡顿的问题,同时也解决了在重用的验证计划或者验证特性需要修改时,只需要修改一个数据块即可,解决了重复模块需要统一修改的问题。
作为一个优选实施例,在S100之前还包括:
S10,根据用户指定在表格编辑区创建原始验证计划,得到原始验证计划表格文件;其中,所述表格编辑区包括可扩展的多个验证点条目,每个验证点条目包括多个属性字段,其中,属性字段包括验证点的唯一标识id字段、验证点父节点的唯一标识pid字段、验证点的名称字段、验证点所统计的覆盖指标类型字段和匹配规则字段;其中验证点的唯一标识id字段和验证点父节点的唯一标识pid字段为层次关系属性字段。
S20,在覆盖率指标编辑区中配置覆盖率指标,得到覆盖率指标配置文件,所述覆盖率指标文件独立于原始验证计划表格文件;其中,配置的覆盖率指标配置信息包括对每种类型的覆盖率指标的配置条目,每个配置条目包括覆盖指标类型的名称、覆盖率指标数据类型和数据聚合方式,现有技术中其他用于配置覆盖率的配置信息也落入本发明的保护范围之内。
S30,在属性编辑区中配置属性,得到属性配置文件,所述属性配置文件为独立于原始验证计划表格文件和覆盖率指标配置文件;其中属性配置信息包括属性名称、属性数据类型和标识该属性值是否向下传递。
需要说明的是,表格编辑区及表格编辑区所包括的内容、覆盖率指标配置信息、属性配置信息均与实施例一中相同,不再赘述。
S40,根据指定关键字提取原始验证计划表格文件中的数据,得到验证计划数据文件,其中验证计划数据文件包括层级结构信息和非层次结构信息。通过层级结构信息的关键字和非层级结构信息的关键字提取原始验证计划表格文件中的数据即可得到验证计划数据文件。验证计划数据文件用于查找覆盖率数据库并获取相应的覆盖率数据。
作为一个优选实施例,当结构文件中数据块包括的验证点类型不唯一时,所述结构文件中的所有结构数据块中还包括验证点类型或验证点类型的唯一标识,所述验证点类型包括不同类型验证点的唯一标识及每种类型的验证点作为子节点时的唯一标识。作为一个示例,当结构文件中数据块的验证点可以为验证特性,也可以为验证计划时,验证点类型包括验证特性、子验证特性、验证计划和子验证计划四类,将验证特性的唯一标识配置为1,子验证特性的唯一标识配置为2,验证计划的唯一标识配置为3和子验证计划的唯一标识配置为4。
作为一个优选实施例,所述关联文件中的数据块还可以包括覆盖指标类型,用于指定该验证点需要收集哪种类型的覆盖指标。当验证点为验证特性时,若不包括覆盖指标类型,将收集匹配规则中所对应的覆盖指标;当验证点为验证计划时,若不包括覆盖指标类型,将收集验证计划下所有验证特性所对应的覆盖指标。
基于与实施例二的方法相同的发明构思,实施例二还提供了一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现实施例二所提供的方法。
实施例二还提供了一种电子设备,包括处理器和上述非瞬时性计算机可读存储介质。
验证计划的核心功能之一是通过用户指定的区域表达式,在覆盖率数据库中快速找到对应的覆盖对象,并获取其覆盖率数据。在得到实施例二生成的验证计划数据文件之后,如何实现快速找到对应的覆盖对象是亟需解决的技术问题。
实施例三
请参阅图3,其提供了一种验证计划中覆盖对象的快速匹配方法流程图,所述方法包括以下步骤:
P100,根据用户设计获取索引数据库,所述用户设计包括不同设计层次的覆盖对象,所述索引数据库包括用户设计中不同设计层次的覆盖对象的索引文件,每个设计层次的覆盖对象对应一个索引文件;每个设计层次的索引文件中包括覆盖对象的名称、覆盖对象类型和覆盖对象的唯一标识id。
其中,覆盖对象包括覆盖域和覆盖项。例如,覆盖对象为UCIS标准中的Object。覆盖域为用户设计的设计层次中所有可包含子节点的对象,覆盖域为UCIS标准中的Scope。覆盖项为用户设计的设计层次中所有叶子节点的对象,为UCIS标准中的Coveritem。
其中,为了提高检索效率,需要将不同设计层次的对象创建不同的索引数据库,因此,将所有的覆盖对象划分为三组:第一层覆盖域,第二层覆盖域和第三层覆盖项。第一层覆盖域包括模块module,实例instance,覆盖组group,断言assert等。第二层覆盖域为除了第一层覆盖域之外支持搜索功能的其他覆盖域。第三层覆盖项为支持搜索功能的覆盖项。
其中,覆盖对象类型,在不同的用户设计的设计层次覆盖对象类型不同,例如在第一层覆盖域,覆盖对象类型为模块module,实例instance,覆盖组group,断言assert等。
P200,获取用户设计的验证计划,抽取验证计划中所有的区域表达式;根据区域表达式生成数据匹配模式,所述数据匹配模式包括覆盖对象的基本信息和不同层次的匹配条件,其中匹配条件包括覆盖对象类型、匹配方式和匹配规则,所述基本信息包括动作指令。
其中,区域表达式为符合指定规则的字符串,用于在原始的用户设计中定位一个或者多个覆盖对象。区域表达式的格式包括两种类型:第一种是[覆盖对象类型]:[对象全名],第二种是UCIS中的唯一标识。第一种中的对象全名为对象的完整层次结构名称,不同层次之间通过指定分隔符来分隔,例如:instance:top.sub1.sub2。第一种区域表达式的可读性强,用户能够很方便的根据设计写出区域表达式;但是仅通过每层的名称无法直观的知道该名称的对象类型,需要额外的开销来建立名称和对象类型的映射关系。第二种区域表达式在UCIS标准中通过覆盖对象类型type的id能够知道改成对象所对应的类型,例如:“/24:work.top/12:cg/14:cvpb/31:c/:19:#ignore_bin#”,其通用性强,由于每层信息里已经包含了类型信息(type id),无需额外的开销来建立名称和对象类型的映射关系,但是可读性差,需要熟悉UCIS标准,用户写区域表达式较为困难。
需要说明的是,当根据用户创建的验证计划计算覆盖率数据时,通过抽取验证计划中所有的区域表达式,并在索引数据库中查询每个区域表达式所对应的对象id,再通过对象id在内存中找到该对象的覆盖率数据,最后再根据验证计划的层次结构,将每个节点的覆盖率数据从下至上聚合到每个feature和plan上,得到每个feature和plan的覆盖率数据。在这个过程中,由于不同平台定义的验证计划语法和区域表达式的格式不尽相同,为了提高通用性,本发明定义了一套中间层的数据匹配模式,用以存储匹配覆盖对象所需的基本信息,并基于此数据格式生成索引数据库。不同厂商的验证计划可以通过抽取相应信息,并生成中间层的数据匹配模式,以达到复用本匹配搜索方案。
其中,对于每个区域表达式,其对应的数据匹配模式包括基本信息和不同层次的匹配条件。数据匹配模式中的基本信息和每层的匹配条件均采用键值对格式。数据匹配模式必须包括基本信息和第一层覆盖域的匹配条件。数据匹配模式还可以包括第二层覆盖域的匹配条件和第三层覆盖域的匹配条件。用户可根据需要自定义更多属性。
其中,基本信息主要用于描述匹配规则,基本信息包括动作命令,动作命令用于标识该数据匹配模式用于执行的操作,例如include操作和exclude操作,include操作对应于验证计划的覆盖对象匹配,exclude操作对应于从覆盖指标中排除的功能,用户也可以根据需要定义更多的操作。基本信息还可以包括自定义名称和注释,自定义名称用于标识当前数据匹配模式的标识符;当需要将所有数据匹配模式都存储在数据库中,并重复使用的时候,可以根据自定义名称在数据库中更删改查该数据匹配模式;如果不考虑重用的情况下,可不指定该属性。
作为一个优选实施例,P200中:当匹配条件为第一层覆盖域或第二层覆盖域的匹配条件时,覆盖对象类型为覆盖域类型。当匹配条件为第三层覆盖项的匹配条件时,覆盖对象类型为覆盖项类型。也即,第一层覆盖域和第二层覆盖域的匹配条件均包括覆盖对象类型、匹配方式和匹配规则。
可选的,第一层覆盖域的匹配条件中还可以包括覆盖指标类型。
可选的,匹配方式为字符串匹配、UCIS unique ID匹配、正则表达式匹配或通配符匹配。
其中,匹配规则为用户指定的匹配内容。
其中,第二层覆盖域的匹配条件和第三层覆盖项的匹配条件均为可选条件。例如,当区域表达式定义为assert时,只需指定第一层覆盖域的匹配条件,无需再定义第二层覆盖域的匹配条件和第三层覆盖项的匹配条件;当第一层覆盖域的匹配条件中覆盖对象类型为模型module或实例instance时,可以在第二层覆盖域的匹配条件中指定覆盖指标类型的第二覆盖域。
P300,根据覆盖对象的名称和覆盖对象类型在索引数据库中查找满足匹配条件的所有覆盖对象的唯一标识id,通过覆盖对象的唯一标识id获取覆盖率数据。
需要说明的是,根据索引数据库的构成不同,其查询的方式不同。
作为一个优选实施例,在P100之前采用以下两种创建方式中的一种为第一层覆盖域建立索引表:第一种:为第一层覆盖域中每种覆盖域类型分别创建多个第一层索引表文件,每个第一层索引表文件中包括每个覆盖域对象的索引数据块,每个索引数据块包括覆盖域的名称和覆盖域对象在内存中的唯一标识。第二种:为第一层覆盖域创建一张第一层索引表文件,第一层索引表文件包括每个覆盖域对象的索引数据块,每个索引数据块包括覆盖域的名称、覆盖域类型、覆盖域对象在内存中的唯一标识。
作为一个优选实施例,在P100之前采用以下两种创建方式中的一种为第二层覆盖域建立索引表:第一种:为第二层覆盖域中每种覆盖指标类型分别创建多个第二层索引表文件,每个第二层索引表文件中包括每个覆盖域对象的索引数据块,每个索引数据块包括覆盖域的名称、父节点唯一标识、覆盖域类型、覆盖域在内存中的唯一标识。第二种:为第二层覆盖域创建一张第二层索引表文件,第二层索引表文件包括每个覆盖域对象的索引数据块,每个索引数据块包括覆盖域的名称、父节点唯一标识、覆盖域类型、覆盖域在内存中的唯一标识;
作为一个优选实施例,在P100之前采用以下创建方式为第三层覆盖项建立索引表:为第三层覆盖项中指定的覆盖指标类型创建第三层索引表文件,第三层索引表文件包括每个覆盖项对象的索引数据块,每个索引数据块包括覆盖项的名称、父节点唯一标识、覆盖项类型、覆盖项在内存中的唯一标识。需要说明的是,由于覆盖项的数量可能会非常庞大,如果为设计中的所有覆盖项建立索引,将会增加索引数据库的大小,影响索引数据库生成的速度和查询效率,因此一般情况下直接在内存中查找即可,若用户指定建立索引表,可以对覆盖项数量不多且查找内容为可读性强的字符串的覆盖项建立索引表文件。
作为一个优选实施例,P300还包括:当创建一张第一层索引文件和一张第二层索引文件时,创建线程池,用多线程按顺序查询每条匹配模式,每个匹配模式的查询步骤包括:
P310,对于匹配模式中的第一层覆盖域的匹配条件,根据第一层覆盖域类型和第一层覆盖域名称在第一层索引文件中查找满足第一层覆盖域的匹配条件的第一层覆盖对象的唯一标识。
P320,若匹配模式中不包括第二层覆盖域的匹配条件,则结束查找,返回找到的满足第一层覆盖域的匹配条件的第一层覆盖对象的唯一标识。若匹配模式中包括第二层覆盖域的匹配条件,通过满足第一层覆盖域的匹配条件的第一层覆盖对象的唯一标识、第二层覆盖域名称和第二层覆盖域类型,在第二层索引文件中查找满足第二层覆盖域的匹配条件的第二层覆盖对象的唯一标识。
P330,若匹配模式中不包括第三层覆盖域的匹配条件,结束查找,返回找到的满足第二层覆盖域的匹配条件的第二层覆盖对象的唯一标识。如匹配模式中包括第三层覆盖项的匹配条件,通过满足第二层覆盖域的匹配条件的第二层覆盖对象的唯一标识、第三层覆盖项名称和第三层覆盖项类型,在第三层索引文件或内存中查找满足第三层覆盖项的匹配条件的第三层覆盖对象的唯一标识。
作为一个优选实施例,P300还包括:当创建多张第一层索引文件和多张第二层索引文件时,按照第一层覆盖域的覆盖对象类型对所有的数据匹配模式进行分组,用单独的进程根据每组数据匹配模式对多张第一层索引文件和多张第二层索引文件进行搜索。
本发明实施例通过对不同设计层次和不同类型的覆盖对象按照一定规则建立索引数据库,对每种类型的区域表达式进行并发查找。比传统的通过遍历整个原始的用户设计结构,再通过正则表达式逐一匹配每一条区域表达式的性能大幅度的提高。同时,由于通过通用的数据匹配模式,能够适用于不同平台创建的验证计划的语法和区域表达式格式,通用性强。
本发明实施例三还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
本发明实施例三还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
本发明的实施例三还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。