CN1916920A - 一种功能覆盖率测试度量系统和方法 - Google Patents
一种功能覆盖率测试度量系统和方法 Download PDFInfo
- Publication number
- CN1916920A CN1916920A CN 200610153890 CN200610153890A CN1916920A CN 1916920 A CN1916920 A CN 1916920A CN 200610153890 CN200610153890 CN 200610153890 CN 200610153890 A CN200610153890 A CN 200610153890A CN 1916920 A CN1916920 A CN 1916920A
- Authority
- CN
- China
- Prior art keywords
- measurand
- test
- score
- function
- function coverage
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种功能覆盖率测试度量系统和方法。该系统包括总线功能单元(3)、激励单元(2)、主控台(1)、结果分析单元(4)、以及验证用例功能覆盖率统计单元(5),用于通过所述分析结果,计算出验证用例中的各个度量要素参数的功能覆盖得分,并根据所述各个度量要素参数的功能覆盖得分得到验证用例的功能覆盖率;被测对象功能覆盖率统计单元(6),用于通过所述分析结果,计算出被测对象的各个测试层的功能覆盖得分,得到被测对象的功能覆盖率。本发明还提供一种功能覆盖率度量的测试方法,能够在EDA工具中实现,并可以对验证用例和被测对象功能覆盖率进行自动统计。
Description
技术领域
本发明涉及电子及通信领域的测试技术,特别是涉及一种功能覆盖率测试度量系统和方法。
背景技术
在电子及通信软件系统测试领域,通常都是用代码覆盖进行测试,代码覆盖无论是概念还是在得到电子设计自动化(Electronic Design Automotic,EDA)工具的支持方面,都已经非常成熟,代码覆盖率的度量在设计与测试激励确定以后就唯一确定了,然而,尽管能够达到100%的代码覆盖率,但在测试的过程中,测试人员还是不能肯定所设计的被测对象(Device Under Test,DUT)是否已经不存在问题。这是因为在代码覆盖测试中被测试的仅仅是代码自身,测试人员并不知道,在测试的过程中,是否已经输入了所有的激励,并已经接收了所有可能的结果,同时,被测对象的状态是否都已经访问,所有的内部转换是否都出现了,感兴趣的事件是否发生等等问题。
针对这些问题,业界提出了功能覆盖的概念,功能覆盖的定义为:来自设备和测试计划规格的清晰的功能需求。相对于代码覆盖而言,功能覆盖是一个比较新的概念,功能覆盖率的度量因功能覆盖率代码的不同而不同,所以功能覆盖在度量实现上并不如代码覆盖率那么清晰和容易界定。
在功能覆盖率度量的实现上,由于功能覆盖率来自于功能需求,功能需求(测试点)都以文档的方式来描述。
目前广泛采用的文档标记功能覆盖率的方法是在文档上标明功能点,并辅之以相应的验证用例,当一个验证用例通过了,就表示该验证用例对应的功能点被覆盖了,于是在文档上进行标记,最后测试人员根据文档的标记情况来统计整个测试项目的覆盖率情况。
这种方法存在着明显不足之处:
第一,因度量方式是手工操作,标记、统计起来都很是麻烦,而且往往会遗漏对一些功能点的标记和统计;
第二,功能需求容易与实际代码脱节,不能够紧密耦合,一旦需求或者实际代码改变,文档中记录的功能点就需要改变功能描述语句和重新标记。
发明内容
本发明的目的在于提出的一种的功能覆盖率测试度量系统和方法,该系统和方法能够在EDA工具中实现,并可以对验证用例和被测对象功能覆盖率进行自动统计。
为实现本发明目的而提供的一种功能覆盖率测试度量系统,包括:
总线功能单元,用于输出被测对象产生的测试请求;
激励单元,用于接收所述测试请求并进行转发,以及根据所述测试请求产生并输出验证用例;
主控台,用于接收所述激励单元产生的验证用例和转发的测试请求,并根据测试请求对激励事件进行测试,输出测试结果;
结果分析单元,用于接收所述测试结果进行分析,并输出分析结果;
验证用例功能覆盖率统计单元,用于通过所述分析结果,计算出验证用例中的各个度量要素参数的功能覆盖得分,并根据所述各个度量要素参数的功能覆盖得分得到验证用例的功能覆盖率;以及
被测对象功能覆盖率统计单元,用于通过所述分析结果,计算出被测对象的各个测试层的功能覆盖得分,得到被测对象的功能覆盖率。
所述验证用例功能覆盖率统计单元包括:
要素参数设置单元,用于按功能处理过程为验证用例设置功能覆盖率集合要素参数,对象要素参数和片段要素参数;
片段得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段的得分;
对象得分计算单元,用于根据一个对象下所有片段的得分及对应的权重,计算出所述对象的得分并输出;
功能覆盖率集合得分计算单元,用于根据一个验证用例下所有对象的得分及对应的权重,计算出所述验证用例的功能覆盖率。
所述验证用例功能覆盖率统计单元还包括:
第一权重赋值单元,用于为片段和对象赋予权重值。
所述被测对象功能覆盖率统计单元包括:
测试层划分单元,用以将被测对象划分为片段测试层、测试点测试层、验证特性测试层和需求规格测试层;
片段测试层得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段测试层的得分;
测试点测试层得分计算单元,用于根据一个测试点测试层中所有片段得分及对应的权重,计算出所述测试点测试层的得分并输出;
验证特性测试层得分计算单元,用于根据一个验证特性测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
需求规格测试层得分计算单元,用于根据一个需求规格测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
测试点通过率计算单元,用于根据通过的测试点数目和测试点总数计算出测试点通过率,得到被测对象的功能覆盖率。
所述被测对象功能覆盖率统计单元还包括:
第二权重赋值单元,用于为片段赋予权重值。
为实现本发明目的还提供了一种功能覆盖率测试度量方法,包括下列步骤:
步骤A)根据每个被测对象的功能将被测对象分解为多个测试点,并由被测对象发出测试请求,利用验证用例对测试点进行验证测试,得到分析结果;
步骤B)利用分析结果,计算出验证用例中的各个度量要素参数的覆盖得分,得到验证用例的功能覆盖率,并根据测试点中的被测片段命中的情况,结合被测对象的测试点的权重,计算出被测对象各个测试层的量化得分,得到被测对象的功能覆盖率。
所述步骤A)之前进一步包括下列步骤:
步骤A1)根据被测对象设计具体的验证用例,存储在激励单元中;同时,根据验证用例的功能处理过程,划分出多个功能覆盖率的基本度量要素参数。
所述步骤A1)包括下列步骤:
根据被测对象的功能将被测对象划分为四个测试层,分别是需求规格测试层、验证特性测试层、测试点测试层、被测片段测试层四个测试层;
根据验证用例的功能处理过程,为验证用例设置功能覆盖率集合要素参数、对象要素参数、度量片段要素参数。
所述步骤B)包括下列步骤:
步骤B1)利用分析结果,根据测试点中的被测片段被验证用例命中的情况,收集到与验证用例对应的被命中的被测片段,计算度量片段覆盖情况;
步骤B2)以验证用例对被测对象的功能覆盖率为基准,根据度量片段的覆盖情况,计算验证用例的得分,得到验证用例的功能覆盖率,以及根据被测片段被命中的情况,计算出被测对象的得分,得到被测对象的功能覆盖率。
所述步骤B2)中以验证用例对被测对象的功能覆盖率为基准,根据度量片段的覆盖情况,计算验证用例的得分,得到验证用例的功能覆盖率,具体包括下列步骤:
步骤B21)计算验证用例覆盖的对象中包含的所有度量片段的得分;
步骤B22)计算验证用例覆盖的功能覆盖率集合中包含的所有对象的得分,得到验证用例的得分。
所述步骤B2)中根据被测片段被命中的情况,计算出被测对象的得分,得到被测对象的功能覆盖率具体包括下列步骤:
步骤B31)根据被测对象中被测片段命中的情况,结合被测对象的测试点的权重,计算出被测片段测试层的功能覆盖率;
步骤B32)根据被测对象中测试点测试层中包含的所有片段的功能覆盖率,计算测试点测试层的功能覆盖率;
步骤B33)根据被测对象中验证特性测试层中包含的所有片段的功能覆盖率,计算验证特性测试层的功能覆盖率;
步骤B34)根据被测对象中需求规格测试层中包含的所有片段的功能覆盖率,计算需求规格测试层的功能覆盖率,然后计算出被测对象的所有测试点的通过率,得到被测对象的功能覆盖率。
本发明的有益效果是:通过本发明中的基于测试点的功能覆盖率测试度量系统和方法得出功能覆盖率数据,可以为测试项目的验证充分性提供定量评价标准和依据;利用集成了功能覆盖率度量模型的验证平台,验证人员使用本系统可以迅速建立起高效的验证环境,减少验证环境建立时间,提高验证质量,实现仿真验证的自动化。
附图说明
图1是本发明功能覆盖率测试度量系统示意图;
图2是本发明被测对象需求规格分解示意图;
图3是本发明功能覆盖率测试度量方法流程图;
图4是本发明验证用例与被测对象分层验证测试示意图。
具体实施方式
下面结合附图1~4进一步详细说明本发明的一种功能覆盖率测试度量系统和方法。其对于功能覆盖率的测试度量方法,在操作上,如EDA工具希望的一样,向代码覆盖率靠拢,使用可执行的语言描述功能需求,再由仿真工具在仿真时自动判断所描述的功能需求是否覆盖,实现自动执行和统计验证用例和测试目标(被测对象)的功能覆盖率的操作。
如图1所示,本发明一种功能覆盖率测试度量系统包括主控台1,总线功能单元(BFM)3,激励单元2,结果分析单元4,验证用例功能覆盖率统计单元5,以及被测对象功能覆盖率统计单元6。
其中:
总线功能单元3,用于输出被测对象产生的测试请求;
激励单元2,用于接收所述测试请求并进行转发,以及根据所述测试请求产生并输出验证用例;
主控台1,用于接收所述激励单元2产生的验证用例和转发的测试请求,并根据测试请求对激励事件进行测试,输出测试结果;
结果分析单元4,用于接收所述测试结果进行分析,并输出分析结果;
验证用例功能覆盖率统计单元5,用于通过所述分析结果,计算出验证用例中的各个度量要素参数的功能覆盖得分,并根据所述各个度量要素参数的功能覆盖得分得到验证用例的功能覆盖率;
进一步地,所述验证用例功能覆盖率统计单元包括:
要素参数设置单元,用于按功能处理过程为验证用例设置功能覆盖率集合要素参数,对象要素参数和片段要素参数;
片段得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段的得分;
对象得分计算单元,用于根据一个对象下所有片段的得分及对应的权重,计算出所述对象的得分并输出;
功能覆盖率集合得分计算单元,用于根据一个验证用例下所有对象的得分及对应的权重,计算出所述验证用例的功能覆盖率;
此外验证用例功能覆盖率统计单元5还可以包括:第一权重赋值单元,用于为片段和对象赋予权重值。在验证用例功能覆盖率统计单元5未包括第一权重赋值单元时,片段权重值均一样,对象权重值也均一样;在验证用例功能覆盖率统计单元5包括第一权重赋值单元时,片段、对象权重值采用第一权重赋值单元提供的赋值。
被测对象功能覆盖率统计单元6,用于通过所述分析结果,计算出被测对象的各个测试层的功能覆盖得分,得到被测对象的功能覆盖率。
进一步地,所述被测对象功能覆盖率统计单元包括:
测试层划分单元,用以将被测对象划分为片段测试层、测试点测试层、验证特性测试层和需求规格测试层;
片段测试层得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段测试层的得分;
测试点测试层得分计算单元,用于根据一个测试点测试层中所有片段得分及对应的权重,计算出所述测试点测试层的得分并输出;
验证特性测试层得分计算单元,用于根据一个验证特性测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
需求规格测试层得分计算单元,用于根据一个需求规格测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
测试点通过率计算单元,用于根据通过的测试点数目和测试点总数计算出测试点通过率,得到被测对象的功能覆盖率;
此外,被测对象功能覆盖率统计单元6还可以包括:第二权重赋值单元,用于为片段赋予权重值。在被测对象功能覆盖率统计单元6未包括第二权重赋值单元时,片段权重值均一样;在被测对象功能覆盖率统计单元6包括第二权重赋值单元时,片段权重值采用第二权重赋值单元提供的赋值。
在测试过程中,被测对象(DUT)通过总线功能单元3向激励单元2发出测试请求。激励单元2在收到被测对象发出的测试请求后,通知主控台1,并把收到的测试请求上交给主控台1。同时,激励单元2根据测试请求向主控台1发出激励事件,主控台1对激励事件进行测试,并将测试结果传送到结果分析单元4进行结果分析。
被测对象(DUT)指被测试的对象,即测试目标。
激励事件即为给被被测对象的输入验证数据,即验证用例,其由激励单元2发起,发起的过程为:激励单元2向主控台1发一个激励请求的信号。
在激励单元2产生激励事件和结果分析单元4对结果分析过程中,主控台1通过激励事件触发功能覆盖率统计单元5配合进行功能覆盖率测试。
主控台1是一个控制模块,对激励单元2和结果分析单元4起控制和协调作用。
总线功能单元3将测试请求发送到激励单元2,请求激励单元2发送激励事件(即验证用例)到主控台1;然后,激励单元2根据配置(即当前的状态,如发送数据的带宽),决定是否发送激励事件到主控台1,如果此时发送激励事件的带宽在预期的范围内,则允许发送;如果超出预期范围则不发送,给总线功能单元3返回一个等待的信号。
如果可以发送数据,则激励单元2生成相应的激励事件,发送给主控台1进行测试,同时对返回给结果分析单元4的分析结果,通过验证用例功能覆盖率统计单元5和被测对象功能覆盖率统计单元6进行验证用例和被测对象的功能覆盖率统计;
如果不能发送数据,激励单元2返回给总线功能单元(BFM)3一个延时数据,也就是等待的信号,总线功能单元(BFM)3在延时完成之后,再次向激励单元2申请报文,即发送测试请求。
结果分析单元4根据主控台1的配置和控制,接收测试数据。结果分析单元4在接收到测试数据后,进行分析得到分析结果;
最后通过验证用例功能覆盖率统计单元5和被测对象功能覆盖率统计单元6对分析结果进行统计,得到验证用例和被测对象的功能覆盖率得分。
具体的,本发明的验证用例功能覆盖率统计单元5,利用分析结果,计算出验证用例中的各个度量要素参数的覆盖得分,得到验证用例的功能覆盖率;同时和被测对象功能覆盖率统计单元6根据测试点中的被测片段命中的情况,结合被测对象的测试点的权重,计算出被测对象各个测试层的量化得分,得到被测对象的功能覆盖率。
如图2所示,对被测对象的需求规格进行逐层分解,最后分解为测试点,并根据测试点设计具体的验证用例,存储在激励单元2中。
当进行测试时,激励单元2根据总线功能单元3的请求,产生并发送验证用例(即激励事件数据),在主控台1对被测对象进行验证测试,在结果分析单元4进行分析,得到验证用例和被测对象的分析结果。通过验证用例功能覆盖率统计单元5和被测对象功能覆盖率统计单元6对验证用例和被测对象的分析结果进行量化,根据验证用例和被测对象的量化得分,从而测量出具体验证用例和被测对象的功能覆盖率,即通过利用分析结果,计算出验证用例中的各个度量要素参数的覆盖得分,得到验证用例的功能覆盖率;同时根据测试点中的被测片段命中的情况,结合被测对象的测试点的权重,计算出被测对象各个测试层的量化得分,得到被测对象的功能覆盖率。
如图3所示,下面进一步详细说明本发明的功能覆盖率测试度量方法:
步骤1)根据被测对象的需求规格设计具体的验证用例,存储在激励单元2中,同时,根据验证用例的功能处理过程,划分出多个功能覆盖率的基本度量要素参数;
作为本发明的实施例,可以将被测对象进行逐层分解如下:
步骤11)根据被测对象的功能将被测对象划分为四个测试层,分别是需求规格测试层(Spec)、验证特性测试层(Feature)、测试点测试层(Testcase)、被测片段测试层四个测试层;
如图2所示,首先,将被测对象的需求规格(Spec)分解为验证特性(Feature),所属验证特性是具有同一特征的规格的集合,是被测对象某一功能特征的集合,其中也包含被测对象隐含的特性。
其中,需求规格是指被测对象在功能、性能、应用环境等方面,事先约定能够达到的指标。
然后,将验证特性分解为测试点(Testcase),测试点是指验证特性中每一个不能再细分的功能需求项。
最后,测试点有一个或者多个被测片段,即被测对象的每个测试点(Testcase)中可以有一个或者多个被测片段;
根据被测片段设计具体的验证用例(Test),就可以利用验证用例度量每个被测对象的功能覆盖率。
验证用例是针对测试点的被测片段而设计的包含测试输入,执行条件和期望结果的集合,用于通过执行特定的程序以验证测试点的功能是否和需求规格相一致。
被测对象的测试点是一个不能再细分的功能需求项,对应着被测对象的某项功能。测试点和验证用例的关系可以是一对一的关系,还可以是一对多或多对一的关系,即一个验证用例可以对应测试一个测试点,也可以是多个验证用例测试同一个测试点,还可以是在一个验证用例测试多个测试点。
根据被测对象的需求规格,不一定只将被测对象分为被测对象需求规格、验证特性、测试点和被测片段多个层次,也可根据实际情况分为任意个层次,这些测试层次之间是相对的,没有严格的划分标准,本发明中,通过被测对象的需求规格进行分解,得到测试点,再根据测试点的一个或者多个被测片段,设计具体的验证用例,用于对被测对象的功能覆盖率测试。
在利用验证用例对被测对象进行测试时,通过对测试结果进行量化,根据量化的结果对被测对象的功能覆盖率进行度量。
步骤12)同时,根据验证用例的功能处理过程,可以为验证用例设置多个功能覆盖率的基本度量要素参数,用于通过验证用例对被测对象进行测试得到的分析结果,度量出验证用例的功能覆盖率。
如图4所示,根据验证用例的功能处理过程,可以为验证用例设置多个功能覆盖率的基本度量要素参数,将其设置在验证用例功能覆盖率统计单元5中,用于度量验证用例对被测对象的功能覆盖率,这些基本度量要素参数包括:功能覆盖率集合要素参数;对象要素参数;度量片段要素参数:
度量要素参数一:功能覆盖率集合要素参数
功能覆盖率集合要素参数物理意义:一个功能覆盖率集合中包含多个对象,并且和一个激励事件(验证用例)进行对应。
在逻辑仿真过程中,当一个功能覆盖率集合对应的激励事件(验证用例)触发时,就可以收集该功能覆盖率集合中所有的对象被命中情况的相关数据。
度量要素参数二:对象要素参数
对象要素参数的物理意义是被测对象在一个功能处理过程中所涉及的、有明确物理意义的相关要素参数;
被测对象通常是由FPGA/ASIC(FPGA:Field Programmable Gate Array现场可编程门阵列,ASIC:Application Specific Integrated Circuit特定用途集成电路)技术来实现的,被测对象在一个功能处理过程中相关的一些要素,比如“报文长度校验”功能(即判断报文长度是否在合法范围内)和报文长度相关,那么报文长度就是相关要素,即为对象(Object)。
对象由多个基础对象(BaseObject)构成。对象可以分为基本对象(BasicObject)、交叉对象(CrossObject)和序列对象(SequenceObject)三种类型。
基础对象是构造基本对象、交叉对象和序列对象的基础元素,即其它三种对象(Object)都是由基础对象(BaseObject)构成的,其中基本对象(BasicObject)是表示一维的验证空间,由一种基础对象(BaseObject)构成;交叉对象(CrossObject)表示多维的验证空间,由两种或两种以上的基础对象(BaseObject)构成;序列对象(SequenceObject)表示和时间相关的验证空间,由一种或多种基础对象(BaseObject)构成。
其中,可以认为基本对象是交叉对象的一个特例。
在大规模的逻辑测试中,典型的对象实例有:
A、单个有明确物理意义的信号(如中断信号);
B、输入数据包中需要关心的域(如互联网协议IP)包中循环冗余码校验CRC域);
C、输入数据流的抽象的特性参数(如包长);
D、内部逻辑或输出的某种处理;
E、验证用例的某类配置,如不同的工作模式。
度量要素参数三:度量片段要素参数
度量片段要素参数的物理意义是:根据等价类测试工程方法定义的对象的范围,在这个范围中包含了对象所有可能出现的结果,每一个范围为一个度量片段。一个对象中包含一个或者多个度量片段。和对象的三种类型相对应,度量片段分为基本度量片段、交叉度量片段和顺序度量片段三种类型。
同时,对于被测对象而言,每个测试点中有一个或者多个被测片段,对应地,每个验证用例中有一个或者多个度量片段。
当被测对象利用验证用例的测试,其测试结果落在某个已经定义的被测片段范围内,即被测片段被命中一次时,称度量片段被覆盖(Hit)1次。
在大规模逻辑测试中,典型的度量片段实例有:
A、中断信号:有效、无效;
B、校验(CRC):对、错;
C、包长:长包、短包、超长包、超短包、典型长度包;
D、包过滤处理的所有路径:路径1、路径2、……
E、输出处理:方式0、方式1、……
通过度量片段将被测对象的测试点和验证用例联系起来,因此,度量片段要素参数是验证用例功能覆盖率统计单元5的基本度量元素参数。
因此,验证用例的功能覆盖率可以以度量片段要素的得分(Score)情况进行量化,得分的取值范围为0到1之间(包括0和1)。得分为1时称之为完全覆盖到或达到目标,得分为0时称之为完全没有覆盖到或没有达到覆盖,介于0和1之间称之为部分覆盖到或部分达到覆盖。
步骤2)根据每个被测对象的功能将被测对象分解为多个测试点,并由被测对象发出测试请求,利用验证用例对测试点进行验证测试,得到分析结果;
在测试过程中,被测对象(DUT)通过总线功能单元3向激励单元2发出测试请求。激励单元2在收到被测对象发出的测试请求后,通知主控台1,并把收到的测试请求上交给主控台1。同时,激励单元2根据测试请求向主控台1发出激励事件,主控台1对激励事件进行测试,并将测试结果传送到结果分析单元4进行结果分析得到分析结果。
总线功能单元3将测试请求发送到激励单元2,请求激励单元2发送激励事件(即验证用例)到主控台1;然后,激励单元2根据配置(即当前的状态,如发送数据的带宽),决定是否发送激励事件到主控台1,如果此时发送激励事件的带宽在预期的范围内,则允许发送;如果超出预期范围则不发送,给总线功能单元3返回一个等待的信号。
如果可以发送数据,则激励单元2生成相应的激励事件数据,发送给主控台1进行测试;
如果不能发送数据,激励单元2返回给总线功能单元(BFM)3一个延时数据,总线功能单元(BFM)3在延时完成之后,再次向激励单元2申请报文。
结果分析单元4根据主控台1的配置和控制,接收结果数据。结果分析单元4在接收到结果数据后,进行分析得到分析结果。
步骤3)利用分析结果,计算出验证用例中的各个度量要素参数的覆盖得分,得到验证用例的功能覆盖率,并根据测试点中的被测片段命中的情况,结合被测对象的测试点的权重,计算出被测对象各个测试层的量化得分,得到被测对象的功能覆盖率。
步骤31)利用分析结果,根据测试点中的被测片段被验证用例命中的情况,收集到与验证用例(即激励事件)对应的被命中的被测片段,计算度量片段覆盖情况;
步骤32)验证用例功能覆盖率统计单元5以验证用例对被测对象的功能覆盖率为基准,根据度量片段的覆盖情况,计算的验证用例的得分,得到验证用例的功能覆盖率;
当被测对象利用验证用例的测试,其测试结果落在某个已经定义的被测片段范围内,即被测片段被命中一次时,称度量片段被覆盖(Hit)1次。
验证用例的功能覆盖率可以以度量片段要素的得分(Score)情况进行量化,得分的取值范围为0到1之间(包括0和1)。得分为1时称之为完全覆盖到或达到目标,得分为0时称之为完全没有覆盖到或没有达到覆盖,介于0和1之间称之为部分覆盖到或部分达到覆盖。
根据被命中的被测片段数据,确定覆盖的基础度量片段、交叉度量片段和序列度量片段,得到对应的基础对象、交叉对象和序列对象的覆盖情况;根据基础对象、交叉对象(CrossObject)、序列对象(SequenceObject)的覆盖情况,进一步得到验证用例总的功能覆盖率集合,从而得到验证用例的得分情况;
对象的覆盖情况是通过度量片段的覆盖情况来统计的,当对象中的相应度量片段被覆盖时,相应对象的覆盖数(Hits)加1。
对于每个验证用例,在定义时确定一个重要级别,如将验证用例分为高、中、低三个级别,每个级别对应着一个权重(Weight),如高为5,中为3,低为1。通过对验证用例定义重要级别,可以对每个验证用例的重要程度进行区分,可以指导验证人员设计验证用例,决定验证人员的测试策略。
以验证用例对被测对象的功能覆盖率集合为基准的验证用例的得分计算过程如下:
步骤321)计算验证用例覆盖的对象(Object)中包含的所有度量片段的得分;
Score(Segment)=min(1.00,Hits(Segment)/Goal(Segment))
该公式用于计算度量片段的得分,公式的意思是:先计算度量片段的覆盖数和目标值(Goal)之间的比值,即Hits(Segment)/Goal(Segment),然后该比值和1进行比较,取其中的较小值做为片段(Segment)的得分。
步骤322)计算验证用例覆盖的功能覆盖率集合(CoverSuit)中包含的所有对象(Object)的得分。
对象的得分计算公式如下:
score(Object)=∑(score(Segment)*weight(Segment))/∑(weight(Segment))
该公式用于计算对象得分,公式的意思是:该对象下包含的所有度量片段的得分乘以比重(Weight)的值的累加,除以该对象下包含的所有片段的比重(Weight)的累加和。
步骤323)计算验证用例覆盖的功能覆盖率集合的得分,得到验证用例的得分。
验证用例的功能覆盖率集合的得分计算公式如下:
score(CoverSuit)=∑(score(Object)*weight(Object))/∑(weight(Object))
该公式用于验证用例覆盖的功能覆盖率集合得分,公式的意思是:该验证用例下包含的所有度量片段得分乘以比重(Weight)的值的累加和除以该验证用例下包含的所有片段的比重(Weight)的累加和。
通过计算验证用例的功能覆盖率集合的得分,验证人员可以了解验证用例对被测对象在每个度量参数的功能覆盖的情况,从而得到验证用例的得分,从而可以根据验证用例的得分情况,进一步设计特定的验证用例来提高被测对象功能覆盖率。
步骤33)同时,被测对象功能覆盖率统计单元6以测试点为基准,根据被测片段被命中的情况,计算出被测对象的得分,得到被测对象的功能覆盖率。
被测片段实际上是指被测对象某一功能特性的一个验证区间,不专指测试结果的范围,每个测试点中包含的被测片段都有一个权重属性,该值即为所在测试点的重要级别所对应的权重值。
对于每个测试点(Testcase),在定义时确定一个重要级别,如将测试点分为高、中、低三个级别,每个级别对应着一个权重(Weight),如高为5,中为3,低为1。通过对测试点定义重要级别,可以对每个测试点的重要程度进行区分。
被测对象的被测片段测试层、测试点测试层、验证特性测试层、需求规格测试层四个测试层的功能覆盖率的计算公式基本一致,都以其所包含的度量片段的得分(Score)和权重(Weight)为基础。
对于测试点测试层和验证特性测试层,还加上是否通过的标志(Pass)计算,对于需求规格测试层而言,还有测试点通过率(PassRatio)的计算。
这一过程包括下列步骤:
步骤331)根据被测对象中被测片段命中的情况,结合被测对象的测试点的权重,计算出被测片段测试层的功能覆盖率(计算公式如公式(1));
被测片段测试层的功能覆盖率:
Score(Segment)=min(1.00,Hits(Segment)/Goal(Segment)) (1)
该公式用于计算被测片段测试层的得分(即功能覆盖率的度量,下同),公式的意思是:先计算被测片段(Segment)的命中数(Hits)和目标值(Goal)之间的比值,即Hits(Segment)/Goal(Segment),然后该比值和1进行比较,取其中的较小值做为片段(Segment)的得分。
步骤332)根据被测对象中测试点测试层中包含的所有片段,计算测试点测试层的功能覆盖率(计算公式如公式(2)和(3));
测试点测试层的功能覆盖率:
Score(Testcase)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment)) (2)
该公式用于计算测试点测试层的得分,公式的意思是:该测试点下包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加,除以该测试点下包含的所有片段(Segment)的比重(Weight)的累加和。
Pass(Testcase)=(Score(Testcase)=1)?1∶0 (3)
该公式用于计算某个测试点是否通过测试,通过时返回1,否则返回0,公式的意思是:该测试点的得分如果为1则返回1,否则返回0。
步骤333)根据被测对象中验证特性测试层中包含的所有片段,计算验证特性测试层的功能覆盖率(计算公式如公式(4)和(5));
验证特性测试层的功能覆盖率:
Score(Feature)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment)) (4)
该公式用于计算验证特性测试层的得分,公式的意思是:该验证特性下包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加和除以该验证特性下包含的所有片段(Segment)的比重(Weight)的累加和。
Pass(Feature)=(Score(Feature)=1)?1∶0 (5)
该公式用于计算某个验证特性是否通过测试,通过时返回1,否则返回0,公式的意思是:该验证特性的得分如果为1则返回1,否则返回0。
步骤334)根据被测对象中需求规格测试层中包含的所有片段,计算需求规格测试层的功能覆盖率(计算公式如公式(6)),然后计算出被测对象的所有测试点的通过率(计算公式如公式(7)),得到被测对象的功能覆盖率。
需求规格测试层的功能覆盖率
Score(Spec)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment)) (6)
该公式用于计算需求规格测试层的得分,公式的意思是:被测对象中包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加和除以被测对象中包含的所有片段(Segment)的比重(Weight)的累加和。
被测对象的所有测试点通过率,即被测对象的功能覆盖率为:
PassRatio(Testcase)=(通过的测试点数目)/(测试点总数)(7)
即测试点通过率为通过测试点数目除以测试点总数。
本发明中的测试度量系统和方法,对被测对象的测试点,分别利用存储在激励单元2中的验证用例进行验证测试,由结果分析单元4进行分析,得到分析结果;利用度量片段要素参数被覆盖的情况,计算出验证用例中的各个要素参数的覆盖情况,得到验证用例的功能覆盖率,并根据测试点中的被测片段被验证用例命中的情况,度量出各个测试层的量化得分,从而得到被测对象的各个层次的功能覆盖率。其通过分层次计算被测对象和验证用例的功能覆盖率得分,得出的功能覆盖率数据,验证人员可以了解到在被测对象和验证用例的各个层次上的功能覆盖情况,可以为测试项目的验证充分性提供定量评价标准和依据;利用集成了功能覆盖率度量模型的验证平台,验证人员使用本系统可以迅速建立起高效的验证环境,减少验证环境建立时间,提高验证质量,实现仿真验证的自动化。
本实施例是为了更好地理解本发明进行的详细的描述,而并不是对本发明所保护的范围的限定,因此,本领域普通技术人员不脱离本发明的主旨情况下,未经创造性劳动而对本发明所做的改变,是在本发明的保护范围内的。
Claims (11)
1.一种功能覆盖率测试度量系统,其特征在于,包括:
总线功能单元(3),用于输出被测对象产生的测试请求;
激励单元(2),用于接收所述测试请求并进行转发,以及根据所述测试请求产生并输出验证用例;
主控台(1),用于接收所述激励单元(2)产生的验证用例和转发的测试请求,并根据测试请求对激励事件进行测试,输出测试结果;
结果分析单元(4),用于接收所述测试结果进行分析,并输出分析结果;
验证用例功能覆盖率统计单元(5),用于通过所述分析结果,计算出验证用例中的各个度量要素参数的功能覆盖得分,并根据所述各个度量要素参数的功能覆盖得分得到验证用例的功能覆盖率;以及
被测对象功能覆盖率统计单元(6),用于通过所述分析结果,计算出被测对象的各个测试层的功能覆盖得分,得到被测对象的功能覆盖率。
2.根据权利要求1所述的功能覆盖率测试度量系统,其特征在于,所述验证用例功能覆盖率统计单元(5)包括:
要素参数设置单元,用于按功能处理过程为验证用例设置功能覆盖率集合要素参数,对象要素参数和片段要素参数;
片段得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段的得分;
对象得分计算单元,用于根据一个对象下所有片段的得分及对应的权重,计算出所述对象的得分并输出;
功能覆盖率集合得分计算单元,用于根据一个验证用例下所有对象的得分及对应的权重,计算出所述验证用例的功能覆盖率。
3.根据权利要求2所述的功能覆盖率测试度量系统,其特征在于,所述验证用例功能覆盖率统计单元(5)还包括:
第一权重赋值单元,用于为片段和对象赋予权重值。
4.根据权利要求1所述的功能覆盖率测试度量系统,其特征在于,所述被测对象功能覆盖率统计单元(6)包括:
测试层划分单元,用以将被测对象划分为片段测试层、测试点测试层、验证特性测试层和需求规格测试层;
片段测试层得分计算单元,用于计算片段的覆盖情况和目标值的比值,并与1比较大小后输出其中的较小值做为片段测试层的得分;
测试点测试层得分计算单元,用于根据一个测试点测试层中所有片段得分及对应的权重,计算出所述测试点测试层的得分并输出;
验证特性测试层得分计算单元,用于根据一个验证特性测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
需求规格测试层得分计算单元,用于根据一个需求规格测试层中所有片段的得分及对应的权重,计算出所述验证特性测试层的得分并输出;
测试点通过率计算单元,用于根据通过的测试点数目和测试点总数计算出测试点通过率,得到被测对象的功能覆盖率。
5.根据权利要求4所述的功能覆盖率测试度量系统,其特征在于,所述被测对象功能覆盖率统计单元(6)还包括:
第二权重赋值单元,用于为片段赋予权重值。
6.一种功能覆盖率测试度量方法,其特征在于,包括下列步骤:
步骤A)根据每个被测对象的功能将被测对象分解为多个测试点,并由被测对象发出测试请求,利用验证用例对测试点进行验证测试,得到分析结果;
步骤B)利用分析结果,计算出验证用例中的各个度量要素参数的覆盖得分,得到验证用例的功能覆盖率,并根据测试点中的被测片段命中的情况,结合被测对象的测试点的权重,计算出被测对象各个测试层的量化得分,得到被测对象的功能覆盖率。
7.根据权利要求6所述的功能覆盖率测试度量方法,其特征在于,所述步骤A)之前进一步包括下列步骤:
步骤A1)根据被测对象设计具体的验证用例,存储在激励单元(2)中;同时,根据验证用例的功能处理过程,划分出多个功能覆盖率的基本度量要素参数。
8.根据权利要求7所述的功能覆盖率测试度量方法,其特征在于,所述步骤A1)包括下列步骤:
根据被测对象的功能将被测对象划分为四个测试层,分别是需求规格测试层、验证特性测试层、测试点测试层、被测片段测试层四个测试层;
根据验证用例的功能处理过程,为验证用例设置功能覆盖率集合要素参数、对象要素参数、度量片段要素参数。
9.根据权利要求8所述的功能覆盖率测试度量方法,其特征在于,所述步骤B)包括下列步骤:
步骤B1)利用分析结果,根据测试点中的被测片段被验证用例命中的情况,收集到与验证用例对应的被命中的被测片段,计算度量片段覆盖情况;
步骤B2)以验证用例对被测对象的功能覆盖率为基准,根据度量片段的覆盖情况,计算验证用例的得分,得到验证用例的功能覆盖率,以及根据被测片段被命中的情况,计算出被测对象的得分,得到被测对象的功能覆盖率。
10.根据权利要求9所述的功能覆盖率测试度量方法,其特征在于,所述步骤B2)中以验证用例对被测对象的功能覆盖率为基准,根据度量片段的覆盖情况,计算验证用例的得分,得到验证用例的功能覆盖率具体包括下列步骤:
步骤B21)计算验证用例覆盖的对象中包含的所有度量片段的得分;
步骤B22)计算验证用例覆盖的功能覆盖率集合中包含的所有对象的得分,得到验证用例的得分。
11.根据权利要求9所述的功能覆盖率测试度量方法,其特征在于,所述步骤B2)中根据被测片段被命中的情况,计算出被测对象的得分,得到被测对象的功能覆盖率具体包括下列步骤:
步骤B31)根据被测对象中被测片段命中的情况,结合被测对象的测试点的权重,计算出被测片段测试层的功能覆盖率;
步骤B32)根据被测对象中测试点测试层中包含的所有片段的功能覆盖率,计算测试点测试层的功能覆盖率;
步骤B33)根据被测对象中验证特性测试层中包含的所有片段的功能覆盖率,计算验证特性测试层的功能覆盖率;
步骤B34)根据被测对象中需求规格测试层中包含的所有片段的功能覆盖率,计算需求规格测试层的功能覆盖率,然后计算出被测对象的所有测试点的通过率,得到被测对象的功能覆盖率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101538905A CN100428252C (zh) | 2006-09-14 | 2006-09-14 | 一种功能覆盖率测试度量系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101538905A CN100428252C (zh) | 2006-09-14 | 2006-09-14 | 一种功能覆盖率测试度量系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1916920A true CN1916920A (zh) | 2007-02-21 |
CN100428252C CN100428252C (zh) | 2008-10-22 |
Family
ID=37737918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101538905A Expired - Fee Related CN100428252C (zh) | 2006-09-14 | 2006-09-14 | 一种功能覆盖率测试度量系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100428252C (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304297B (zh) * | 2008-06-03 | 2011-04-20 | 华为技术有限公司 | 一种验证用例生成方法及装置 |
CN101487876B (zh) * | 2009-02-23 | 2011-08-03 | 中国科学院计算技术研究所 | 验证向量的优化方法及装置 |
CN102281282A (zh) * | 2010-06-09 | 2011-12-14 | 通用汽车环球科技运作有限责任公司 | 用于有效认证的系统和方法 |
CN102331967A (zh) * | 2011-06-15 | 2012-01-25 | 烽火通信科技股份有限公司 | 芯片验证测试用例的管理方法 |
CN102540047A (zh) * | 2010-12-14 | 2012-07-04 | 苏州工业园区谱芯科技有限公司 | 一种测试覆盖率的评估方法 |
CN102567551A (zh) * | 2010-12-14 | 2012-07-11 | 苏州工业园区谱芯科技有限公司 | 测试覆盖率的评估系统及其方法 |
CN104461813A (zh) * | 2014-12-18 | 2015-03-25 | 浪潮集团有限公司 | 利用功能覆盖率负反馈加速uvm验证收敛的方法 |
CN105528288A (zh) * | 2015-12-01 | 2016-04-27 | 深圳市迪菲特科技股份有限公司 | 一种软件测试方法以及装置 |
CN106383788A (zh) * | 2016-10-31 | 2017-02-08 | 上海华虹集成电路有限责任公司 | 验证测例判断方法 |
CN111045951A (zh) * | 2019-12-17 | 2020-04-21 | 上海创远仪器技术股份有限公司 | 基于无线电业务模型实现无线电应用软件质量测试效果分析处理的方法 |
CN111858207A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种SoC芯片验证测试系统及方法 |
CN112256553A (zh) * | 2019-07-22 | 2021-01-22 | 百度(中国)有限公司 | 一种应用软件测试方法、装置及电子设备 |
CN115983191A (zh) * | 2022-11-28 | 2023-04-18 | 海光集成电路设计(北京)有限公司 | 测试点验证方法及相关装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7114111B2 (en) * | 1999-06-08 | 2006-09-26 | Cadence Design (Isreal) Ii Ltd. | Method and apparatus for maximizing test coverage |
US20030121011A1 (en) * | 1999-06-30 | 2003-06-26 | Cirrus Logic, Inc. | Functional coverage analysis systems and methods for verification test suites |
CN1235278C (zh) * | 2002-09-11 | 2006-01-04 | 华为技术有限公司 | 通用数字电路仿真测试系统及测试方法 |
CN1248116C (zh) * | 2002-09-23 | 2006-03-29 | 上海贝尔有限公司 | 一种基于主机平台的嵌入式模块和子系统的通用测试装置 |
US20040243371A1 (en) * | 2003-05-30 | 2004-12-02 | Intel Corporation | System and method for automatic derivation of coverage metrics for validation of pipelined designs |
CN1641601A (zh) * | 2004-01-04 | 2005-07-20 | 华为技术有限公司 | 一种软件的单元测试方法 |
US7395196B2 (en) * | 2004-08-30 | 2008-07-01 | International Business Machines Corporation | Test-cases for functional verification of system-level interconnect |
CN100370465C (zh) * | 2004-09-04 | 2008-02-20 | 华为技术有限公司 | 一种自动调度逻辑仿真与代码覆盖率分析的方法与系统 |
-
2006
- 2006-09-14 CN CNB2006101538905A patent/CN100428252C/zh not_active Expired - Fee Related
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101304297B (zh) * | 2008-06-03 | 2011-04-20 | 华为技术有限公司 | 一种验证用例生成方法及装置 |
CN101487876B (zh) * | 2009-02-23 | 2011-08-03 | 中国科学院计算技术研究所 | 验证向量的优化方法及装置 |
CN102281282A (zh) * | 2010-06-09 | 2011-12-14 | 通用汽车环球科技运作有限责任公司 | 用于有效认证的系统和方法 |
CN102281282B (zh) * | 2010-06-09 | 2015-07-15 | 通用汽车环球科技运作有限责任公司 | 用于有效认证的系统和方法 |
CN102540047A (zh) * | 2010-12-14 | 2012-07-04 | 苏州工业园区谱芯科技有限公司 | 一种测试覆盖率的评估方法 |
CN102567551A (zh) * | 2010-12-14 | 2012-07-11 | 苏州工业园区谱芯科技有限公司 | 测试覆盖率的评估系统及其方法 |
CN102540047B (zh) * | 2010-12-14 | 2015-04-22 | 苏州工业园区谱芯科技有限公司 | 一种测试覆盖率的评估方法 |
CN102331967A (zh) * | 2011-06-15 | 2012-01-25 | 烽火通信科技股份有限公司 | 芯片验证测试用例的管理方法 |
CN102331967B (zh) * | 2011-06-15 | 2014-08-27 | 烽火通信科技股份有限公司 | 芯片验证测试用例的管理方法 |
CN104461813B (zh) * | 2014-12-18 | 2017-06-30 | 浪潮集团有限公司 | 利用功能覆盖率负反馈加速uvm验证收敛的方法 |
CN104461813A (zh) * | 2014-12-18 | 2015-03-25 | 浪潮集团有限公司 | 利用功能覆盖率负反馈加速uvm验证收敛的方法 |
CN105528288A (zh) * | 2015-12-01 | 2016-04-27 | 深圳市迪菲特科技股份有限公司 | 一种软件测试方法以及装置 |
CN105528288B (zh) * | 2015-12-01 | 2018-12-14 | 深圳市迪菲特科技股份有限公司 | 一种软件测试方法以及装置 |
CN106383788A (zh) * | 2016-10-31 | 2017-02-08 | 上海华虹集成电路有限责任公司 | 验证测例判断方法 |
CN112256553A (zh) * | 2019-07-22 | 2021-01-22 | 百度(中国)有限公司 | 一种应用软件测试方法、装置及电子设备 |
CN111045951A (zh) * | 2019-12-17 | 2020-04-21 | 上海创远仪器技术股份有限公司 | 基于无线电业务模型实现无线电应用软件质量测试效果分析处理的方法 |
CN111045951B (zh) * | 2019-12-17 | 2023-09-29 | 上海创远仪器技术股份有限公司 | 基于无线电业务模型实现无线电应用软件质量测试效果分析处理的方法 |
CN111858207A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种SoC芯片验证测试系统及方法 |
CN111858207B (zh) * | 2020-06-30 | 2022-03-22 | 浪潮(北京)电子信息产业有限公司 | 一种SoC芯片验证测试系统及方法 |
CN115983191A (zh) * | 2022-11-28 | 2023-04-18 | 海光集成电路设计(北京)有限公司 | 测试点验证方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100428252C (zh) | 2008-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1916920A (zh) | 一种功能覆盖率测试度量系统和方法 | |
CN1264307C (zh) | 代理、图像形成装置管理系统、图像形成装置管理方法 | |
CN1737598A (zh) | 用于配置在线测试的自动化调试的方法和装置 | |
CN1203383C (zh) | 自动测量装置,自动测量数据处理与控制装置,网络系统 | |
CN1828618A (zh) | 半导体设计装置 | |
CN1885273A (zh) | 一种逻辑测试的功能覆盖率分析方法 | |
CN1702635A (zh) | 高速接口电路检查模块、高速接口电路检查对象模块和高速接口电路检查方法 | |
CN1703657A (zh) | 在多事件同时发生期间确定竞争性原因事件的概率和/或系统有效性的方法 | |
CN1851491A (zh) | 一种故障定位方法 | |
CN1693916A (zh) | 用于在线测试的自动化调试和优化的方法和装置 | |
CN1900870A (zh) | 验证安全装置的方法和由相同方法验证的安全装置 | |
CN1845213A (zh) | 一种实现sms4密码算法中加解密处理的方法 | |
CN1488933A (zh) | 良否判定装置、判定程序、方法以及多变量统计解析装置 | |
CN100347682C (zh) | 自动化测试构建方法 | |
CN1908944A (zh) | 确定半导体ic可靠性可比性的基于知识的统计方法和系统 | |
CN1776724A (zh) | 基于网络的工程制图自动评判方法 | |
CN101047555A (zh) | 一种设备质量检查方法 | |
CN1719832A (zh) | 一种规范驱动的网格工作流描述和验证方法 | |
CN1862511A (zh) | 一种软件单元的测试方法 | |
CN1947003A (zh) | 荧光x射线分析方法及荧光x射线分析装置 | |
CN1858754A (zh) | 一种电路模块的查找方法及装置 | |
CN1878098A (zh) | 一种级联设备可靠性测试的方法及系统 | |
CN1744535A (zh) | Wap网关性能的测试方法 | |
CN1623826A (zh) | 公交车载机控制系统及其方法 | |
CN100337176C (zh) | 对数字版权中执行权限进行系统限制的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081022 Termination date: 20160914 |
|
CF01 | Termination of patent right due to non-payment of annual fee |