一种测试向量生成方法及装置与流程

文档序号:15019867发布日期:2018-07-25 00:27阅读:292来源:国知局

本发明涉及计算机技术领域,特别涉及一种测试向量生成方法及装置。



背景技术:

SRIO(Serial Rapid I/O)是面向嵌入式系统开发提出的高可靠、高性能、基于包交换的新一代高速互联技术。目前,基于SRIO接口的开发越来越多。由于不同设计中,用户在SRIO总线中的自定义协议不同,故需要为每一个设计编写特定的测试向量。

目前,可以人工为每一个设计编写特定的测试向量。

显而易见的,测试向量的人工编写导致工作量较大。



技术实现要素:

本发明提供了一种测试向量生成方法及装置,能够降低生成测试向量的工作量。

为了达到上述目的,本发明是通过如下技术方案实现的:

一方面,本发明提供了一种测试向量生成方法,包括:

S1:基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;

S2:通过运行预设的测试向量打印生成脚本,以执行:

根据所述IO信息文档,在测试向量文件中例化第一数量的SRIO设计顶层模块、所述第一数量的FIFO(First in First out,先进先出队列)设计顶层模块;

根据所述源数据包信息文档和所述数据源信息文档,在所述测试向量文件中例化第二数量的数据生成模块;

执行所述第一数量的FIFO设计顶层模块,分别与所述第二数量的数据生成模块和所述第一数量的SRIO设计顶层模块间的信号连接,并打印生成所述测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。

进一步地,所述S1包括:根据所述当前被测设计中使用的自定义协议格式、数据包长度范围、数据内容范围、无效数据内容、无效数据长度中的任意一种或多种信息,编写所述源数据包信息文档;根据所述当前被测设计中使用的至少一路Rapio IO的路数,和/或,每一路所述Rapio IO的速率,编写所述IO信息文档;根据所述当前被测设计中设定的对源数据的发送要求,编写所述数据源信息文档;

所述第一数量等于所述路数;

每一个所述SRIO设计顶层模块的速率与所述每一路所述Rapio IO的速率一一对应相等;

每一个所述FIFO设计顶层模块与每一个所述SRIO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求各路SRIO接口独立发送完整数据包时,所述第二数量等于所述路数,每一个所述数据生成模块与每一个所述FIFO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求多路SRIO接口轮询发送一个数据包时,所述第二数量等于1,所述数据生成模块分别与每一个所述FIFO设计顶层模块信号连接。

进一步地,所述FIFO设计包括:具有wr_clk、rst_n、rd_clk、wr_en、din、dout、rd_en、almost_empty、almost_full中的任意一个或多个规定接口的FIFO设计;

所述SRIO设计包括:具有AXI(Advanced eXtensible Interface)总线的SRIO设计。

进一步地,在所述S2之后还包括:根据生成的所述测试向量,在测试平台中例化测试向量模块;执行所述测试向量模块与所述当前被测设计间的信号连接;运行所述测试平台以执行一次功能测试;统计所述功能测试对应的功能覆盖率;判断所述功能覆盖率是否达到预设阈值,若是,结束当前流程,否则,根据预设调整规则,调整所述源数据包信息文档、所述IO信息文档、所述数据源信息文档中的任意一个或多个,并执行所述S2。

进一步地,在所述统计所述功能测试对应的功能覆盖率之后,还包括:针对生成的所述测试向量对应的至少一个功能,在预设的功能集合中,标记所述至少一个功能中的每一个有效功能,其中,所述有效功能存在于所述功能集合中且未标记;

所述功能覆盖率满足公式一;

所述公式一包括:Xi=n/N+Xi-1

其中,Xi为所述功能覆盖率,n为所述有效功能的个数,N为所述功能集合中全部功能的个数,Xi-1为统计的上一个功能覆盖率,X0=0。

另一方面,本发明提供了一种测试向量生成装置,包括:

文档编写单元,用于基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;

脚本运行单元,用于通过运行预设的测试向量打印生成脚本,以执行:根据所述IO信息文档,在测试向量文件中例化第一数量的SRIO设计顶层模块、所述第一数量的FIFO设计顶层模块;根据所述源数据包信息文档和所述数据源信息文档,在所述测试向量文件中例化第二数量的数据生成模块;执行所述第一数量的FIFO设计顶层模块,分别与所述第二数量的数据生成模块和所述第一数量的SRIO设计顶层模块间的信号连接,并打印生成所述测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。

进一步地,所述文档编写单元,具体用于根据所述当前被测设计中使用的自定义协议格式、数据包长度范围、数据内容范围、无效数据内容、无效数据长度中的任意一种或多种信息,编写所述源数据包信息文档;根据所述当前被测设计中使用的至少一路Rapio IO的路数,和/或,每一路所述Rapio IO的速率,编写所述IO信息文档;根据所述当前被测设计中设定的对源数据的发送要求,编写所述数据源信息文档;

所述第一数量等于所述路数;

每一个所述SRIO设计顶层模块的速率与所述每一路所述Rapio IO的速率一一对应相等;

每一个所述FIFO设计顶层模块与每一个所述SRIO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求各路SRIO接口独立发送完整数据包时,所述第二数量等于所述路数,每一个所述数据生成模块与每一个所述FIFO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求多路SRIO接口轮询发送一个数据包时,所述第二数量等于1,所述数据生成模块分别与每一个所述FIFO设计顶层模块信号连接。

进一步地,所述FIFO设计包括:具有wr_clk、rst_n、rd_clk、wr_en、din、dout、rd_en、almost_empty、almost_full中的任意一个或多个规定接口的FIFO设计;

所述SRIO设计包括:具有AXI总线的SRIO设计。

进一步地,该测试向量生成装置还包括:处理单元,用于根据生成的所述测试向量,在测试平台中例化测试向量模块;执行所述测试向量模块与所述当前被测设计间的信号连接;运行所述测试平台以执行一次功能测试;统计所述功能测试对应的功能覆盖率;判断所述功能覆盖率是否达到预设阈值,若是,结束当前流程,否则,根据预设调整规则,调整所述源数据包信息文档、所述IO信息文档、所述数据源信息文档中的任意一个或多个,并触发所述脚本运行单元。

进一步地,所述处理单元,还用于针对生成的所述测试向量对应的至少一个功能,在预设的功能集合中,标记所述至少一个功能中的每一个有效功能,其中,所述有效功能存在于所述功能集合中且未标记;

所述功能覆盖率满足公式一;

所述公式一包括:Xi=n/N+Xi-1

其中,Xi为所述功能覆盖率,n为所述有效功能的个数,N为所述功能集合中全部功能的个数,Xi-1为统计的上一个功能覆盖率,X0=0。

本发明提供了一种测试向量生成方法及装置,该方法包括:基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;通过运行测试向量打印生成脚本,以根据编写好的各信息文档,对应的在测试向量文件中例化特定数量的SRIO设计顶层模块、FIFO设计顶层模块和数据生成模块,再执行FIFO设计顶层模块分别与数据生成模块和SRIO设计顶层模块间的信号连接,并打印生成测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。基于当前被测设计在测试向量文件中例化各所需模块,且完成模块间信号连接、生成所需声明后,即完成生成测试向量。由于可自动生成测试向量,故本发明能够降低生成测试向量的工作量。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种测试向量生成方法的流程图;

图2是本发明一实施例提供的另一种测试向量生成方法的流程图;

图3是本发明一实施例提供的一种测试向量生成装置的示意图;

图4是本发明一实施例提供的另一种测试向量生成装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

详细地,SRIO总线的协议是标准的、规范的,用户协议都可以看做总线中的数据进行传输,不同设计的自定义协议具有架构上的统一性,因此,可以考虑使用协议信息文档配合脚本,来实现自动化生成测试向量。

如图1所示,本发明实施例提供了一种测试向量生成方法,可以包括以下步骤:

步骤101:基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档。

步骤102:通过运行预设的测试向量打印生成脚本,以执行:根据所述IO信息文档,在测试向量文件中例化第一数量的SRIO设计顶层模块、所述第一数量的FIFO设计顶层模块;根据所述源数据包信息文档和所述数据源信息文档,在所述测试向量文件中例化第二数量的数据生成模块;执行所述第一数量的FIFO设计顶层模块,分别与所述第二数量的数据生成模块和所述第一数量的SRIO设计顶层模块间的信号连接,并打印生成所述测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。

本发明实施例提供了一种测试向量生成方法,基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;通过运行测试向量打印生成脚本,以根据编写好的各信息文档,对应的在测试向量文件中例化特定数量的SRIO设计顶层模块、FIFO设计顶层模块和数据生成模块,再执行FIFO设计顶层模块分别与数据生成模块和SRIO设计顶层模块间的信号连接,并打印生成测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。基于当前被测设计在测试向量文件中例化各所需模块,且完成模块间信号连接、生成所需声明后,即完成生成测试向量。由于可自动生成测试向量,故本发明实施例能够降低生成测试向量的工作量。

在本发明的一个实施例中,为了说明一种可能的信息文档编写实现方式,所以,所述步骤101包括:根据所述当前被测设计中使用的自定义协议格式、数据包长度范围、数据内容范围、无效数据内容、无效数据长度中的任意一种或多种信息,编写所述源数据包信息文档;根据所述当前被测设计中使用的至少一路Rapio IO的路数,和/或,每一路所述Rapio IO的速率,编写所述IO信息文档;根据所述当前被测设计中设定的对源数据的发送要求,编写所述数据源信息文档;

所述第一数量等于所述路数;

每一个所述SRIO设计顶层模块的速率与所述每一路所述Rapio IO的速率一一对应相等;

每一个所述FIFO设计顶层模块与每一个所述SRIO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求各路SRIO接口独立发送完整数据包时,所述第二数量等于所述路数,每一个所述数据生成模块与每一个所述FIFO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求多路SRIO接口轮询发送一个数据包时,所述第二数量等于1,所述数据生成模块分别与每一个所述FIFO设计顶层模块信号连接。

详细地,脚本可以读取编写好的每一个信息文档,以用于相应各模块的例化。

详细地,上述至少一路Rapio IO的路数,通常可以为1路、2路、4路中的任意一种。

举例来说,假设路数为4路,且要求独立发送数据包。对应地,在上述步骤102中,可以在测试向量文件中打印生成4个SRIO设计顶层模块的例化、4个FIFO设计顶层模块的例化、4个数据生成模块的例化。

其中,各SRIO设计顶层模块的速率与各路Rapio IO的速率一一对应相等。比如,第1个SRIO设计顶层模块的速率等于第1路Rapio IO的速率,……,第4个SRIO设计顶层模块的速率等于第4路Rapio IO的速率。

然后,可以自动完成各类模块间的信号连接。比如,4个数据生成模块一一对应的与4个FIFO设计顶层模块间信号连接,然后,4个FIFO设计顶层模块一一对应的与4个SRIO设计顶层模块间信号连接。

最后,自动打印生成测试向量文件的输入输出接口声明和内部信号声明,即完成测试向量的生成。

在本发明的一个实施例中,所述FIFO设计包括:具有wr_clk、rst_n、rd_clk、wr_en、din、dout、rd_en、almost_empty、almost_full中的任意一个或多个规定接口的FIFO设计;

所述SRIO设计包括:具有AXI总线的SRIO设计。

通常情况下,生成的测试向量对应有至少一个功能。基于生成的测试向量,可以对当前被测设计进行功能测试。测试结束后,若统计的功能覆盖率情况未达标,便可调整各信息文档以再次生成新的测试向量,并完成迭代功能测试,如此循环,直到达到目标功能覆盖率,从而完成功能验证。

因此,在本发明的一个实施例中,在所述步骤102之后进一步包括:根据生成的所述测试向量,在测试平台中例化测试向量模块;执行所述测试向量模块与所述当前被测设计间的信号连接;运行所述测试平台以执行一次功能测试;统计所述功能测试对应的功能覆盖率;判断所述功能覆盖率是否达到预设阈值,若是,结束当前流程,否则,根据预设调整规则,调整所述源数据包信息文档、所述IO信息文档、所述数据源信息文档中的任意一个或多个,并执行所述步骤102。

详细地,只要当前循环中统计到的功能覆盖率未达到预设阈值,则可以再次执行上述步骤102以进入下一循环。由于在进入下一循环之前,以对信息文档进行调整,故再次步骤102即可生成与该调整相关的测试向量。通常情况下,新生成的测试向量可以引入新功能,故新功能的存在可以相应提高功能覆盖率。如此循环,完成迭代功能测试,直到达到目标功能覆盖率,完成功能验证。

基于上述内容,在本发明一个实施例中,为了说明一种统计功能覆盖率的可能实现方式,所以,在所述统计所述功能测试对应的功能覆盖率之后,进一步包括:针对生成的所述测试向量对应的至少一个功能,在预设的功能集合中,标记所述至少一个功能中的每一个有效功能,其中,所述有效功能存在于所述功能集合中且未标记;

所述功能覆盖率满足下述公式(1);

Xi=n/N+Xi-1(1)

其中,Xi为所述功能覆盖率,n为所述有效功能的个数,N为所述功能集合中全部功能的个数,Xi-1为统计的上一个功能覆盖率,X0=0。

举例来说,预设的功能集合中包括有100个功能,分别为功能1~功能100,即N=100。假设当前循环为第1个循环,如此,i=1,Xi-1=X0=0。假设第1个循环中生成的测试向量对应的功能有3个,分别为功能1、功能2、功能8。由于这3个功能均存在于功能集合中且均未标记,故均为有效功能,故n=3。如此,可以计算出Xi=X1=3/100+0=3%。然后,在功能集合中,标记这3个功能。

假设预设阈值为80%,故进入下一个循环,即第2个循环。在第2个循环中,i=2,Xi-1=X1=3%。假设第2个循环中生成的测试向量对应的功能有3个,分别为功能2、功能3、功能8。由于这3个功能中,功能2和功能8虽存在于功能集合但已标记,故均不为有效功能,而功能3存在于功能集合中且未标记,故为有效功能。如此,n=1。如此,可以计算出Xi=X2=1/100+3%=4%。然后,在功能集合中,标记功能3。

如此循环,直到功能覆盖率达到80%,完成功能验证。可以看出,每一次循环中均可以生成测试向量,尤其循环次数较多时,本发明实施例由于可以自动生成测试向量,故可以大大降低工作量。

如图2所示,本发明一个实施例提供了另一种测试向量生成方法,具体包括以下步骤:

步骤201:根据当前被测设计中使用的自定义协议格式、数据包长度范围、数据内容范围、无效数据内容、无效数据长度,编写源数据包信息文档。

步骤202:根据当前被测设计中使用的4路Rapio IO的路数及各路Rapio IO的速率,编写IO信息文档。

步骤203:根据当前被测设计中设定的要求多路SRIO接口轮询发送一个数据包,编写数据源信息文档。

步骤204:通过运行预设的测试向量打印生成脚本,以执行:根据IO信息文档,在测试向量文件中例化4个SRIO设计顶层模块、4个FIFO设计顶层模块;根据源数据包信息文档和数据源信息文档,在测试向量文件中例化1个数据生成模块;执行数据生成模块分别与每一个FIFO设计顶层模块间的信号连接,执行4个FIFO设计顶层模块与4个SRIO设计顶层模块间的一一对应信号连接;打印生成测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。

详细地,4个SRIO设计顶层模块的速率与4路Rapio IO的速率一一对应相等。

步骤205:根据生成的测试向量,在测试平台中例化测试向量模块,并执行测试向量模块与当前被测设计间的信号连接。

步骤206:运行测试平台以执行一次功能测试。

步骤207:统计功能测试对应的功能覆盖率。

步骤208:针对生成的测试向量对应的至少一个功能,在预设的功能集合中标记该至少一个功能中的每一个有效功能,其中,有效功能存在于功能集合中且未标记。

详细地,功能覆盖率满足上述公式(1)。

步骤209:判断功能覆盖率是否达到预设阈值,若是,结束当前流程,否则,根据预设调整规则,调整源数据包信息文档、IO信息文档、数据源信息文档,并执行步骤204。

本发明实施例中,提供了基于脚本自动生成用于SRIO接口测试向量的实现过程,可以生成的测试向量可以用于IC设计验证,比如可以对使用SRIO接口的设计进行功能仿真。通过修改各信息文档中的部分参数,循环使用脚本即可方便快捷的生成多种形式、多种大小的测试向量,以使功能验证快速达到所需的较高功能覆盖率。本发明实施例实施方便,流程简单,高效稳定,可以大幅缩短为不同的基于SRIO接口的设计编写测试向量的开发周期,提高功能验证效率。

如图3所示,本发明一个实施例提供了一种测试向量生成装置,包括:

文档编写单元301,用于基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;

脚本运行单元302,用于通过运行预设的测试向量打印生成脚本,以执行:根据所述IO信息文档,在测试向量文件中例化第一数量的SRIO设计顶层模块、所述第一数量的FIFO设计顶层模块;根据所述源数据包信息文档和所述数据源信息文档,在所述测试向量文件中例化第二数量的数据生成模块;执行所述第一数量的FIFO设计顶层模块,分别与所述第二数量的数据生成模块和所述第一数量的SRIO设计顶层模块间的信号连接,并打印生成所述测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。

在本发明一个实施例中,所述文档编写单元301,具体用于根据所述当前被测设计中使用的自定义协议格式、数据包长度范围、数据内容范围、无效数据内容、无效数据长度中的任意一种或多种信息,编写所述源数据包信息文档;根据所述当前被测设计中使用的至少一路Rapio IO的路数,和/或,每一路所述Rapio IO的速率,编写所述IO信息文档;根据所述当前被测设计中设定的对源数据的发送要求,编写所述数据源信息文档;

所述第一数量等于所述路数;

每一个所述SRIO设计顶层模块的速率与所述每一路所述Rapio IO的速率一一对应相等;

每一个所述FIFO设计顶层模块与每一个所述SRIO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求各路SRIO接口独立发送完整数据包时,所述第二数量等于所述路数,每一个所述数据生成模块与每一个所述FIFO设计顶层模块间一一对应信号连接;

所述对源数据的发送要求包括:要求多路SRIO接口轮询发送一个数据包时,所述第二数量等于1,所述数据生成模块分别与每一个所述FIFO设计顶层模块信号连接。

在本发明一个实施例中,所述FIFO设计包括:具有wr_clk、rst_n、rd_clk、wr_en、din、dout、rd_en、almost_empty、almost_full中的任意一个或多个规定接口的FIFO设计;

所述SRIO设计包括:具有AXI总线的SRIO设计。

在本发明一个实施例中,请参考图4,该测试向量生成装置还可以包括:处理单元401,用于根据生成的所述测试向量,在测试平台中例化测试向量模块;执行所述测试向量模块与所述当前被测设计间的信号连接;运行所述测试平台以执行一次功能测试;统计所述功能测试对应的功能覆盖率;判断所述功能覆盖率是否达到预设阈值,若是,结束当前流程,否则,根据预设调整规则,调整所述源数据包信息文档、所述IO信息文档、所述数据源信息文档中的任意一个或多个,并触发所述脚本运行单元302。

在本发明一个实施例中,所述处理单元401,还用于针对生成的所述测试向量对应的至少一个功能,在预设的功能集合中,标记所述至少一个功能中的每一个有效功能,其中,所述有效功能存在于所述功能集合中且未标记;

所述功能覆盖率满足上述公式(1)。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明的各个实施例至少具有如下有益效果:

1、本发明实施例中,基于当前被测设计,编写源数据包信息文档、IO信息文档、数据源信息文档;通过运行测试向量打印生成脚本,以根据编写好的各信息文档,对应的在测试向量文件中例化特定数量的SRIO设计顶层模块、FIFO设计顶层模块和数据生成模块,再执行FIFO设计顶层模块分别与数据生成模块和SRIO设计顶层模块间的信号连接,并打印生成测试向量文件的输入输出接口声明和内部信号声明,以完成生成测试向量。基于当前被测设计在测试向量文件中例化各所需模块,且完成模块间信号连接、生成所需声明后,即完成生成测试向量。由于可自动生成测试向量,故本发明实施例能够降低生成测试向量的工作量。

2、本发明实施例中,提供了基于脚本自动生成用于SRIO接口测试向量的实现过程,可以生成的测试向量可以用于IC设计验证,比如可以对使用SRIO接口的设计进行功能仿真。通过修改各信息文档中的部分参数,循环使用脚本即可方便快捷的生成多种形式、多种大小的测试向量,以使功能验证快速达到所需的较高功能覆盖率。本发明实施例实施方便,流程简单,高效稳定,可以大幅缩短为不同的基于SRIO接口的设计编写测试向量的开发周期,提高功能验证效率。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

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

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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