首页> 中国专利> 一种基于UVM的SPI验证平台及验证方法

一种基于UVM的SPI验证平台及验证方法

摘要

本发明公开了一种基于UVM的SPI验证平台及验证方法,验证平台包括:测试用例库,包括多个测试用例;虚拟序列库,用于调度一系列测试序列的执行顺序,为测试序列指定序列器;测试序列库,包括多个测试序列,测试序列用于向指定的序列器发送事务;配置模块,用于配置SPI模块的工作模式;验证环境,用于封装所述SPI验证平台的验证组件。该SPI验证平台将一系列测试用例放进测试用例库,可根据需要选择需要启用不同数量的测试用例,同时将一系列测试序列放进测试序列库,根据需要调用,提高验证平台的可重用性;在满足SPI验证平台器可重复使用的前提下,通过配置模块实现了对验证平台工作模式的精确控制。

著录项

  • 公开/公告号CN112527723A

    专利类型发明专利

  • 公开/公告日2021-03-19

    原文格式PDF

  • 申请/专利权人 广州昂瑞微电子技术有限公司;

    申请/专利号CN202011488701.6

  • 申请日2020-12-16

  • 分类号G06F13/42(20060101);G06F11/36(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人李婷婷

  • 地址 510670 广东省广州市黄埔区科学大道18号A栋1002房

  • 入库时间 2023-06-19 10:19:37

说明书

技术领域

本发明涉及软件技术领域,更具体的说,是涉及一种基于UVM的SPI验证平台及验证方法。

背景技术

现如今芯片的规模越来越大,复杂度也持续增加,这给相关验证工作带来极大挑战,传统的验证方法已经不能满足现在的验证需求。

SPI是一种串行总线接口,由于其高速、全双工、简单易用的特点,很多芯片内部都集成了SPI总线接口。为了满足外设多样性的需求,SPI总线具有多种工作模式,验证每一种工作模式的正确性都需要运行大量的测试用例,对传统的验证方法来说是一个极其艰巨的任务。

发明内容

有鉴于此,本发明提供如下技术方案:

一种基于UVM的SPI验证平台,包括:

测试用例库,包括多个测试用例,测试用例用于建立和配置验证环境,根据不同的测试用例名运行相应的测试;

虚拟序列库,用于调度一系列测试序列的执行顺序,为测试序列指定序列器,并通过提起异议和撤销异议来控制相应任务阶段的开始和结束;

测试序列库,包括多个测试序列,测试序列用于向指定的序列器发送事务;

配置模块,用于生成配置SPI不同工作模式的相关数据;

验证环境模块,用于封装所述SPI验证平台的验证组件,所述验证环境包括APB代理器和SPI代理器。

可选的,所述验证环境模块包括:

虚拟序列器,用于实例化其他序列器并启动虚拟序列;

APB代理器,用于模仿APB总线上主机的操作;

APB接口,用于所述APB代理器与与SPI模块的数据交互;

SPI代理器,用于模仿SPI总线上主机的操作;

SPI接口,用于所述SPI代理器与SPI模块的数据交互;

计分板,用于所述APB代理器和所述SPI代理器中事务数据的比对。

可选的,所述APB代理器包括APB序列器、APB驱动器和APB监视器,其中,APB序列器用于将测试序列产生的总线事务数据发送给APB驱动器,APB驱动器用于根据所述事务数据的内容驱动APB总线,APB监控器用于监测APB总线的活动;

所述SPI代理器包括SPI主代理器和SPI从代理器,所述SPI主代理器和所述SPI从代理器中均包括一个SPI序列器、SPI驱动器和SPI监视器,其中SPI序列器用于将测试序列产生的总线事务数据发送给SPI驱动器,所述SPI驱动器用于根据所述事务数据的内容驱动SPI总线,所述SPI监控器用于监测SPI总线的活动。

可选的,所述SPI主代理器在所述SPI模块处于从机模式时工作,所述SPI从代理器在所述SPI模块处于主机模式时工作。

可选的,所述验证环境还包括:

覆盖率模块,用于收集仿真过程中的功能覆盖率信息。

一种基于UVM的SPI验证方法,应用于上述任意一种SPI验证平台,包括:

确定目标测试用例;

基于所述目标测试用例启动对应的目标虚拟序列,以使得所述目标虚拟序列对测试序列库中相关的目标测试序列进行调度,并为其指定目标序列器;

虚拟序列器接收所述测试序列产生的事务,并将所述事务发送给所述目标序列器对应的APB代理器或SPI代理器;

接收到所述事务的APB代理器或SPI代理器正常处理所述事务,完成SPI模块的验证。

可选的,还包括:

通过配置模块来配置需要发送给所述APB代理器的的事务数据,所述事务数据用于配置所述SPI模块的工作模式。

可选的,所述目标测试用例通过为所述SPI主代理器和所述SPI从代理器中的驱动器和监控器中的指定变量赋值来控制所述SPI模块的工作模式,所述工作模式包括主机模式和从机模式。

可选的,还包括:

在SPI模块验证过程中,计分板收集来自APB代理器、SPI主代理器和SPI从代理器中相应监控器发送的事务数据,对这些事务数据进行比对并报告比对结果,以实现所述SPI验证平台的自检功能。

可选的,还包括:

覆盖率模块接收APB代理器、SPI主代理器和SPI从代理器中相应监控器发送的事务数据,并基于所述事务数据进行验证功能覆盖率的统计确定。

经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种基于UVM的SPI验证平台及验证方法,验证平台包括:测试用例库,包括多个测试用例,测试用例用于建立和配置验证环境,根据不同的测试用例名运行相应的测试;虚拟序列库,用于调度一系列测试序列的执行顺序,为测试序列指定序列器,并通过提起异议和撤销异议来控制相应任务阶段的开始和结束;测试序列库,包括多个测试序列,测试序列用于向指定的序列器发送事务;配置模块,用于生成配置SPI不同工作模式的相关数据;验证环境,用于封装所述SPI验证平台的验证组件,所述验证环境包括APB代理器和SPI代理器。该SPI验证平台将一系列测试用例放进测试用例库,既可以通过脚本文件一次性运行所有测试用例,也可以单独运行其中一个或几个测试用例,同时将一系列测试序列放进测试序列库,每个测试用例都可以通过虚拟序列器调用其中任意的测试序列,提高验证平台的可重用性;此外,实现中在不同测试用例中可以给配置模块配置不同的数据,测试序列根据配置模块内部的数据,生成配置SPI工作模式的事务,并将其发送给APB代理器,实现对验证平台的精确控制。

附图说明

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

图1为本发明实施例公开的基于UVM的SPI验证平台的架构示意图;

图2为本发明实施例公开的另一个UVM的SPI验证平台的架构原理图;

图3为本发明实施例公开的一种基于UVM的SPI验证方法的流程图。

具体实施方式

为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:

UVM:Universal Verification Methodology,通用验证方法学。

APB:Advanced Peripheral Bus,高级外围总线,该总线协议规定了模块之间的通信规则。

SPI:Serial Peripheral Interface,串行外设接口。

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

图1为本发明实施例公开的基于UVM的SPI验证平台的架构示意图,参见图1所示,基于UVM的SPI验证平台可以包括:

测试用例库10,包括多个测试用例,测试用例用于建立和配置验证环境,根据不同的测试用例名运行相应的测试。

测试用例库中可以包括多种测试用例,在使用过程中,需要对SPI模块进行哪些测试,就选择启用对应测试用例即可。测试用例库中的测试用例可以通过脚本文件一次性运行所有的测试用例,也可以单独运行其中一个或几个测试用例。

虚拟序列库20,用于调度一系列测试序列的执行顺序,为测试序列指定序列器,并通过提起异议和撤销异议来控制相应任务阶段的开始和结束。

虚拟序列库中可以包括多个虚拟序列,在SPI模块验证过程中,可根据需要选择对应的虚拟序列,以满足测试序列库中相应测试序列的调用。

测试序列库30,包括多个测试序列,测试序列用于向指定的序列器发送事务。

测试序列库中的多个测试序列可以满足SPI模块验证工作中不同的事务数据的获取,保证各种测试用例对应测试工作的顺利进行。

配置模块40,用于生成配置SPI不同工作模式的相关数据。

验证环境模块50,用于封装所述SPI验证平台的验证组件,所述验证环境包括APB代理器和SPI代理器。

在一个示意性的实现中,验证环境模块可以但不限于包括:

虚拟序列器,用于实例化其他序列器并启动虚拟序列;

APB代理器,用于模仿APB总线上主机的操作;

APB接口,用于所述APB代理器与SPI模块的数据交互,其中的SPI模块即为需要验证或测试的SPI模块;

SPI代理器(包括SPI主代理器和SPI从代理器),用于模仿SPI总线上主机的操作;

SPI接口,用于所述SPI代理器与SPI模块的数据交互。

计分板,用于所述APB代理器和所述SPI代理器中事务数据的比对。

其中,所述APB代理器包括APB序列器、APB驱动器和APB监视器,其中,APB序列器用于将测试序列产生的总线事务数据发送给APB驱动器,APB驱动器用于根据所述事务数据的内容驱动APB总线,APB监控器用于监测APB总线的活动。

所述SPI代理器包括SPI主代理器和SPI从代理器,所述SPI主代理器和所述SPI从代理器中均包括一个SPI序列器、SPI驱动器和SPI监视器,其中SPI序列器用于将测试序列产生的总线事务数据发送给SPI驱动器,所述SPI驱动器用于根据所述事务数据的内容驱动SPI总线,所述SPI监控器用于监测SPI总线的活动。

所述SPI主代理器在所述SPI模块处于从机模式时工作,所述SPI从代理器在所述SPI模块处于主机模式时工作。

本申请公开的SPI验证平台一系列测试用例放进测试用例库,既可以通过脚本文件一次性运行所有测试用例,也可以单独运行其中一个或几个测试用例,同时将一系列测试序列放进测试序列库,每个测试用例都可以通过虚拟序列器调用其中任意的测试序列,提高验证平台的可重用性;此外,实现中在不同测试用例中可以给配置模块配置不同的数据,测试序列根据配置模块内部的数据,生成配置SPI工作模式的事务,并将其发送给APB代理器,实现对验证平台的精确控制。

在另一个实现中,验证环境还可以包括:覆盖率模块58,用于收集仿真过程中的功能覆盖率信息。通过覆盖率信息,可以明确SPI模块的验证过程已经进行到什么进度,哪些功能已经完成验证,那些功能还没有完成验证。

图2为本发明实施例公开的另一个UVM的SPI验证平台的架构原理图,可结合图2理解本申请实施例公开的相关内容。本发明使用UVM验证方法学搭建了可重用的SPI自动化验证平台,并编写测试用例,采用受约束的随机激励方法、覆盖率驱动方法对SPI进行了功能验证。其中,将覆盖率模块与APB代理器分离,使用TLM接口进行通信,提高了APB代理器的可重用性;将SPI主代理器和SPI从代理器分别封装,使得验证平台组件功能划分更明确,提高了验证平台的灵活性和可重用性。

结合图2,整个验证平台可通过Top模块中的run_test()函数来启动,在脚本文件中的UVM_TESTNAME(测试名称)后指明不同的测试用例名,验证平台会通过工厂机制,根据指定的测试用例名来实例化该类,之后按照UVM中的phase机制,依次执行各个组件中的各个phase。

在不同的测试用例中会通过默认序列的方式启动不同的虚拟序列,虚拟序列对其他测试序列进行调度并为其指定序列器,这些序列器的指针都包含在虚拟序列器中,在测试用例中为这些指针赋值,然后由虚拟序列器将各测试序列产生的事务发送给指定的序列器。其中,发送给APB代理器中序列器的事务数据需要根据配置模块来生成,根据不同的事务数据配置SPI处于不同的工作模式。

当SPI被配置为主模式或从模式时,测试用例会通过uvm_config_db::set函数为两个SPI代理器中驱动器和监控器的指定变量传递值”0”或者”1”,以此控制其是否需要工作。当SPI被配置为主模式时,SPI从代理器工作,当SPI被配置为从模式时,SPI主代理器工作。

序列器得到测试序列发送的事务数据后会将其发送给驱动器,驱动器提取事务数据内的信息,按照协议时序要求,将数据驱动到接口interface,同时监控器会一直监测总线信号,根据协议要求,实时采样总线信号,并打包成对应的事务,通过TLM传递给计分板,计分板中维持了3个队列,用于收集来自APB代理器和两个SPI代理器中监控器的事务数据,之后计分板会对这些数据进行比对,并报告比对结果,实现验证平台的自检功能。

当APB代理器中的监控器采样到总线数据后,除了要把事务数据传递给计分板用作结果比对之外,还可以同样的数据通过TLM传递给覆盖率模块,覆盖率模块在得到事务数据之后会提取其中的信息用作覆盖率的统计。

本发明还公开的一种基于UVM的SPI验证方法。图3为本发明实施例公开的一种基于UVM的SPI验证方法的流程图,参见图3所示,方法可以包括:

步骤301:确定目标测试用例。

确定目标测试用例,即确定需要进行哪些测试用例的测试,目标测试用例可以是一个,也可以是多个。

步骤302:基于所述目标测试用例启动对应的目标虚拟序列,以使得所述目标虚拟序列对测试序列库中相关的目标测试序列进行调度,并为其指定目标序列器。

步骤303:虚拟序列器接收所述测试序列产生的事务,并将所述事务发送给所述目标序列器对应的APB代理器或SPI代理器。

步骤304:接收到所述事务的APB代理器或SPI代理器正常处理所述事务,完成SPI模块的验证。

具体的基于UVM的SPI验证方法的具体实现可参见SPI验证平台中对于各个模块的功能介绍的内容来理解,在此不再反复赘述。

在一个实现中,基于UVM的SPI验证方法还可以包括:通过配置模块来配置需要发送给所述APB代理器的的事务数据,所述事务数据用于配置所述SPI模块的工作模式。

具体的,所述目标测试用例通过为所述SPI主代理器和所述SPI从代理器中的驱动器和监控器中的指定变量赋值来控制所述SPI模块的工作模式,所述工作模式包括主机模式和从机模式。

一个实现中,基于UVM的SPI验证方法还可以包括:在SPI模块验证过程中,计分板收集来自APB代理器、SPI主代理器和SPI从代理器中相应监控器发送的事务数据,对这些事务数据进行比对并报告比对结果,以实现所述SPI验证平台的自检功能。

一个实现中,基于UVM的SPI验证方法还可以包括:覆盖率模块接收APB代理器、SPI主代理器和SPI从代理器中相应监控器发送的事务数据,并基于所述事务数据进行验证功能覆盖率的统计确定。

本发明实施例公开的基于UVM的SPI验证方法,将一系列测试用例放进测试用例库,既可以通过脚本文件一次性运行所有测试用例,也可以单独运行其中一个或几个测试用例。将一系列测试序列放进测试序列库,每个测试用例都可以通过虚拟序列器调用其中任意的测试序列,提高验证平台的可重用性。将覆盖率模块与APB代理器分离,使用TLM接口进行通信,使得APB代理器的功能更加独立,可以完全重用于其他验证项目。

可以理解的,实现中,将SPI主代理器和SPI从代理器分别封装,使用一个内部变量控制是否工作,使得验证平台组件功能划分更明确,SPI验证过程中改正错误更方便,同时提高了验证平台的可重用性。

可以理解的,在不同测试用例中给配置模块配置不同的数据,测试序列根据配置模块内部的数据,生成配置SPI工作模式的事务,并将其发送给APB代理器中的序列器,最终由驱动器驱动,实现对验证平台的精确控制。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号