可编程逻辑仿真测试功能覆盖率的统计方法和装置与流程

文档序号:13934238阅读:301来源:国知局
可编程逻辑仿真测试功能覆盖率的统计方法和装置与流程

本发明涉及安全级仪控系统仿真测试的技术领域,尤其涉及一种可编程逻辑仿真测试功能覆盖率的统计方法和装置。



背景技术:

在一些对可靠性和安全性要求较高的行业,如核、军工、航空航天等领域,非常重视测试的完整性和可靠性。现有技术中,通常的统计方法是将需求、设计、测试等环节条目化,建立自上而下的追踪关系,以保证从需求到最终交付成果之间的一致性。

例如,hpd(hdl-programmeddevice的简称,即hdl可编程器件;而hdl是hardwaredescriptionlanguage的简称,中文翻译为硬件描述语言)白盒验证方法除代码审查外主要有仿真测试和形式化验证两种:仿真统计方法根据设计说明书编写测试激励,将仿真波形与设计进行比较后,记录测试结果;形式化验证方法根据设计编写约束,将输入信号限制在一个可控的范围内,再通过断言判断被测对象的响应是否正确。但是但前者的缺点是功能覆盖率无法统计;后者缺点是机器自动执行运行效率低下,无法根据实际功能调整和优化测试用例。

为了解决上述两种方法存在的不足,申请号为cn201410178300.9的中国专利公开了一种采用“功能仿真加断言”的方式开展仿真测试,具体地:通过手动编制测试向量或通过测试工具自动生成随机测试向量的方式产生测试激励,再通过断言判断被测对象输出的响应是否符合预期结果。

但是发明人在实现本发明的过程中发现:上述方法虽然能兼顾仿真测试和形式化验证各自的优点,例如,可以提高测试效率,尤其对于回归测试和重复测试效果非常明显,并且测试结果的自动判断还可以减少人为判断失误导致的错漏检。上述技术方案虽然从一定程度上提高了测试效率和可重用性,但由于功能覆盖率得不到根本性的保证,因此无法从根本上解决从需求项到最终交付成果之间的一致性和完整性问题,也不便于审查和监管,很难达到核行业对于高可靠性和监管的要求。



技术实现要素:

为了解决现有技术中仿真测试功能覆盖率不能准确得到的技术问题,本发明的目的是提供一种有效提高可编程逻辑仿真测试功能覆盖率的统计方法和装置,能够通过在仿真测试过程中增加对编码环节进行有效的追踪和监控,并对hpd需求(设计)项进行形式化描述,从而直观的体现功能覆盖率,使可编程逻辑的仿真测试过程更严谨、更符合高可靠性的要求。

为了实现上述目的,本发明提供的技术方案包括:

一种可编程逻辑仿真测试功能覆盖率的统计方法,其特征在于,包括:

s1、对研发生命周期中的需求规格书、设计说明书、测试设计、测试用例、测试规程、sva断言和测试记录进行形式化描述,并按照预定的编码规则对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录建立唯一的编号;

s2、通过形式化描述,并按照预定的编码规则,建立对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录之间的追踪矩阵;

s3、在构建仿真测试环境中,编写测试规程中的每条测试通过准则相应的sva断言代码;

s4、按照所述测试用例对应的测试激励,自动执行测试;测试执行过程中,若某条断言没有通过,自动提示设计人员修改设计;若某条断言没有被遍历到,自动提示设计人员对应测试项功能覆盖率不足,需要补充测试激励;并且所有测试用例执行完成后通过sva断言自动生成测试结果。

本发明实施例优选地,所述方法还包括:s5、步骤s4测试执行完成后,通过所述sva断言内嵌的统计功能得到各测试项的测试覆盖情况,以及是否测试通过;并且形成测试记录和功能覆盖率的统计报告。

本发明实施例优选地,所述方法还包括:s6、当某个所述测试项中的测试结论为不通过的,需判断所述测试项目不通过是测试激励的问题还是被测设计的问题,修订所述测试激励或所述被测设计后重新执行测试用例,直至得到测试结论为通过。

本发明实施例优选地,所述步骤s3中的测试通过准则包括:如果一个在测试中被检查的属性与测试通过准则不一致,则断言为失败;或者果一个被禁止在设计中出现的属性在测试过程中发生,则断言为失败。

本发明实施例优选地,所述sva断言用于描述和控制时序相关的内容,并且还提供多个内嵌的函数,所述内嵌的函数用于测试时序关系和自动收集功能覆盖率数据。

本发明了另一方面提供一种可编程逻辑仿真测试功能覆盖率的统计装置,其特征在于,包括:

编码生成模块,用于对研发生命周期中的需求规格书、设计说明书、测试设计、测试用例、测试规程、sva断言和测试记录进行形式化描述,并按照预定的编码规则对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录建立唯一的编号;

追踪矩阵生成模块,用于通过形式化描述,并按照预定的编码规则,建立对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录之间的追踪矩阵;

仿真测试环境生成模块,用于在构建仿真测试环境中,编写测试规程中的每条测试通过准则相应的sva断言代码;

测试结果生成模块,用于按照所述测试用例对应的测试激励;测试执行过程中,若某条断言没有通过,自动提示设计人员修改设计;若某条断言没有被遍历到,自动提示设计人员对应测试项功能覆盖率不足,需要补充测试激励;自动执行测试,并且所有测试用例执行完成后通过sva断言自动生成测试结果。

本发明实施例优选地,所述统计装置还包括:统计报告生成模块,用于在测试执行完成后,通过所述sva断言内嵌的统计功能得到各测试项的测试覆盖情况,以及是否测试通过;并且形成测试记录和功能覆盖率的统计报告。

本发明实施例优选地,所述统计装置还包括:测试结果诊断模块,当某个所述测试项中的测试结论为不通过的,需判断所述测试项目不通过是测试激励的问题还是被测设计的问题,修订所述测试激励或所述被测设计后重新执行测试用例,直至得到测试结论为通过。

本发明实施例优选地,所述仿真测试环境生成模块设置成如果一个在测试中被检查的属性与测试通过准则不一致,则断言为失败;或者果一个被禁止在设计中出现的属性在测试过程中发生,则断言为失败。

本发明实施例优选地,所述sva断言用于描述和控制时序相关的内容,并且还提供多个内嵌的函数,所述内嵌的函数用于测试时序关系和自动收集功能覆盖率数据。

采用本发明提供的上述技术方案,可以获得以下有益效果中的至少一种:

1、通过断言将形式化的设计和验证思想与核行业的全生命周期可追踪性相结合,使得产品验证过程中的功能覆盖率指标可以被量化;进而有效提高hpd测试活动完备性,使测试过程更严谨、测试结果更具有说服力。

2、将断言及其判断结果作为测试记录的一部分,测试执行过程中依据sva自动生成测试结果。测试结果自动化分析可有效提高测试效率,避免人工操作产生的测试结果误判断。

3、追踪矩阵和sva代码编写可以根据用户需求自行拓展,所以针对典型设计开发的sva代码具有一定的可重用性。

发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书变得显而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。

附图说明

图1为本发明实施例提供一种可编程逻辑仿真测试功能覆盖率的统计方法的流程图。

图2为本发明实施例提供一种可编程逻辑仿真测试功能覆盖率的统计装置的结构框图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,这些具体的说明只是让本领域普通技术人员更加容易、清晰理解本发明,而非对本发明的限定性解释;并且只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

另外,在附图的流程图示出的步骤可以在诸如一组控制器可执行指令的控制系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

下面通过附图和具体实施例,对本发明的技术方案进行详细描述:

实施例

如图1所示,本实施例提供一种可编程逻辑仿真测试功能覆盖率的统计方法,该统计方法包括:

s1、对研发生命周期中的需求规格书、设计说明书、测试设计、测试用例、测试规程、sva断言和测试记录进行形式化描述,并按照预定的编码规则对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录建立唯一的编号。保证所有的需求项不会在设计和测试过程中出现遗漏,同时保证代码实现阶段没有产生与系统需求不相关的冗余逻辑。

s2、通过形式化描述,并按照预定的编码规则,建立对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录之间的追踪矩阵;本实施例提及的待测试系统通常是针对fpga(英文全称field-programmablegatearray,现场可编程门阵列)类型逻辑编辑器的测试,并且该步骤中建立的追踪矩阵,是指搭建矩阵的框架,矩阵中部分参数需要待后续步骤完成后,再将运行结果填充至追踪矩阵中;本实施例提及的追踪矩阵追踪矩阵的建立方法包括,首先是对需求文档中的需求项进行编号,当然编号肯定是有规则的,通常是三段式,中间用“-”隔开;第一段是阶段名称,比如用fre表示需求项,用fde表示设计项,用fit表示测试项,以此类详细请见下文的表4;第二段是芯片名称或板卡名称如表4中的afabb01,用来与其他产品进行区分;第三段表示功能,像表4中举例的nnet指的是nnet接口功能。

s3、在构建仿真测试环境中,编写测试规程中的每条测试通过准则相应的sva断言代码;本实施例优选地,规则描述性语言为sva类型的描述性语言,用于描述和控制时序相关的内容,并且还提供多个内嵌的函数,内嵌的函数用于测试时序关系和自动收集功能覆盖率数据。具体地,sva(英文全称为systemverilogassertion)语言,是一种简洁的过程语言,可以更好的控制时序,这种描述性语言,本身简洁移动,维护容易;并且提供内嵌的机制来提供功能覆盖的数据,当断言失败时,仿真系统会根据;断言(assertion)是设计的属性的描述(如果一个在模拟中被检查的属性不像我们期望的那样表现,那么这个断言失败;如果一个被禁止在设计中出现的属性在模拟过程中发生,那么这个断言失败);并且步骤s3中的测试通过准则与前述步骤s1中的预定规则相对应,下文还有详细的描述。

s4、按照测试用例对应的测试激励,自动执行测试;测试执行过程中,若某条断言没有通过,自动提示设计人员修改设计;若某条断言没有被遍历到,自动提示设计人员对应测试项功能覆盖率不足,需要补充测试激励;并且所有测试用例执行完成后通过sva断言自动生成测试结果;即测试执行过程中,按照预定脚本注入测试激励,并自动执行测试用例,测试过程无测试人员干预,所有测试用例执行完成后通过sva断言自动生成测试结果。

因此,通过上述统计方法中的步骤s1-s4可以与核行业的全生命周期可追踪性相结合,更好的实现功能覆盖的测试。

本实施例优选地,上述统计方法还包括:s5、步骤s4测试执行完成后,通过sva断言内嵌的统计功能得到各测试项的测试覆盖情况,以及是否测试通过;并且形成测试记录和功能覆盖率的统计报告。由于sva断言(包括但不限于sva)实现在测试规格中从自然语言到机器语言的转化过程,并且测试结果还能通过自然语言直观的体现。

本实施例进一步优选地,上述统计方法还包括:s6、当某个测试项中的测试结论为不通过的,需判断测试项目不通过是测试激励的问题还是被测设计的问题,修订测试激励或被测设计后重新执行测试用例,直至得到测试结论为通过。具体地,通过规则描述性语言中的描述和内嵌函数,能够快速定位到具体哪个测试结果不通过,然后修订测试激励或被测设计。

本实施例优选地,步骤s3中的测试通过准则包括:如果一个在测试中被检查的属性与测试通过准则不一致,则断言为失败;或者果一个被禁止在设计中出现的属性在测试过程中发生,则断言为失败。

采用上述统计方法,可以利用形式化断言,链接测试规程、测试执行和测试记录,自动化的进行结果分析。为了本领域技术人员更容易理解本实施例中的技术方案,下面进一步解释如下:

1)、本实施例优选的一种测试规程,如表1所示,规则编号即步骤s1中“编号”的一种体现方式,其中,测试规程是测试向量的上一个阶段;追踪矩阵的覆盖范围和顺序是:需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录,其中sva描述需与表1中的判定标准完全一致;具体过程是将需求文件中的各需求项进行条目化,之后对这些需求项进行编号;下文中表4的例子中为了节省篇幅只列了一个需求项,实际会有很多;对这些需求项分别进行逐级追踪,按照上面的顺序一直追踪到测试记录,这样就保证了过程可控。

表1.统计方法中的一种测试规则示例

2)、在测试代码中与表1中的测试规程相对应的测试向量和sva部分描述如下:

需要说明的是,上述代码只是针对表1中这种特定规则的sva描述,assertproperty为sva的关键字,描述属性;$error为sva的内嵌函数,用于定位错误位置。

3)、下面结合表3,示意一种测试结果形成的测试记录:

表3.与表1中测试规定对应的一种测试结果

4)、生成追踪矩阵,其中,追踪矩阵的意义在于证明所有需求规格书中的需求项都在研发生命周期过程中进行了有效的设计和验证,并且各研发过程满足一致性和正确性:

表4.追踪矩阵局部示意图

如图2所示,本实施例还提供一种可编程逻辑仿真测试功能覆盖率的统计装置,该统计装置包括:

编码生成模块110,用于对研发生命周期中的需求规格书、设计说明书、测试设计、测试用例、测试规程、sva断言和测试记录进行形式化描述,并按照预定的编码规则对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录建立唯一的编号;

追踪矩阵生成模块120,用于通过形式化描述,并按照预定的编码规则,建立对各个需求项、设计项、测试项、测试用例、测试规程、sva断言和测试记录之间的追踪矩阵。具体地,sva(英文全称为systemverilogassertion),是一种简洁的过程语言,可以更好的控制时序,这种描述性语言,本身简洁移动,维护容易;并且提供内嵌的机制来提供功能覆盖的数据,当断言失败时,仿真系统会根据;

仿真测试环境生成模块130,用于在构建仿真测试环境中,编写测试规程中的每条测试通过准则相应的sva断言代码;

测试结果生成模块140,用于按照测试用例对应的测试激励,自动执行测试,并且所有测试用例执行完成后通过sva断言自动生成测试结果。

本实施例优选地,统计装置还包括:统计报告生成模块,用于在测试执行完成后,通过sva断言内嵌的统计功能得到各测试项的测试覆盖情况,以及是否测试通过;并且形成测试记录和功能覆盖率的统计报告。

本实施进一步例优选地,统计装置还包括:测试结果诊断模块,当某个测试项中的测试结论为不通过的,需判断测试项目不通过是测试激励的问题还是被测设计的问题,修订测试激励或被测设计后重新执行测试用例,直至得到测试结论为通过。

本实施例优选地,仿真测试环境生成模块设置成如果一个在测试中被检查的属性与测试通过准则不一致,则断言为失败;或者果一个被禁止在设计中出现的属性在测试过程中发生,则断言为失败。

本实施例优选地,上述sva断言,用于描述和控制时序相关的内容,并且还提供多个内嵌的函数,内嵌的函数用于测试时序关系和自动收集功能覆盖率数据。

需要说明的是,本实施例提及的不同模块为分别加载执行与相应模块功能对应程序的控制器,并且可以是同一个控制器中加载在存储器中保存的不同应用程序,也可以是不同控制器中加载不同的应用程序。

采用本发明实施例提供的上述技术方案,可以获得以下有益效果中的至少一种:

1、通过断言将形式化的设计和验证思想与核行业的全生命周期可追踪性相结合,使得产品验证过程中的功能覆盖率指标可以被量化;进而有效提高hpd测试活动完备性,使测试过程更严谨、测试结果更具有说服力。

2、将断言及其判断结果作为测试记录的一部分,测试执行过程中依据sva自动生成测试结果;测试结果自动化分析可有效提高测试效率,避免人工操作产生的测试结果误判断。

3、追踪矩阵和sva代码编写可以根据用户需求自行拓展,所以针对典型设计开发的sva代码具有一定的可重用性。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后需要说明的是,上述说明仅是本发明的最佳实施例而已,并非对本发明做任何形式上的限制。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围内,都可利用上述揭示的做法和技术内容对本发明技术方案做出许多可能的变动和简单的替换等,这些都属于本发明技术方案保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1