一种基于uvm的存储控制器功能测试方法及系统的制作方法

文档序号:10534671阅读:405来源:国知局
一种基于uvm的存储控制器功能测试方法及系统的制作方法
【专利摘要】本发明公开了一种基于UVM的存储控制器功能测试方法,包括:设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;利用所述预定参数生成测试激励;将所述测试激励分别施加到所述被测存储控制器及测试模型中,并分别监测所述被测存储控制器及测试模型的输出;对所述被测存储控制器及测试模型的输出进行对比,得到测试结果;该方法中的测试环境可以无缝集成到系统测试环境中,从而提高了验证效率,缩短了验证周期,实现可重用测试;本发明还公开了一种基于UVM的存储控制器功能测试系统。
【专利说明】
一种基于UVM的存储控制器功能测试方法及系统
技术领域
[0001]本发明涉及电子技术领域,特别涉及一种基于UVM的存储控制器功能测试方法及系统。
【背景技术】
[0002]随着芯片规模的增大,芯片设计中测试验证已成为流程中开销最大的工作,占整个设计周期的比例越来越大。验证的工作量已经占到整个SOC研发的70%到80%,因此提高芯片测试验证的效率已变得至关重要。因此,如何高效、全面地对存储控制器的功能进行测试,是本领域技术人员需要解决的技术问题。

【发明内容】

[0003]本发明的目的是提供一种基于UVM的存储控制器功能测试方法,该方法能够提高验证效率,缩短验证周期,实现可重用测试;本发明的另一目的是提供一种基于UVM的存储控制器功能测试系统。
[0004]为解决上述技术问题,本发明提供一种基于UVM的存储控制器功能测试方法,包括:
[0005]设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;
[0006]利用所述预定参数生成测试激励;
[0007]将所述测试激励分别施加到所述被测存储控制器及测试模型中,并分别监测所述被测存储控制器及测试模型的输出;
[0008]对所述被测存储控制器及测试模型的输出进行对比,得到测试结果。
[0009]其中,所述设置UVM环境的预定参数,包括:
[0010]定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成;
[0011 ]将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单元。
[0012]其中,所述将所述测试激励分别施加到所述被测存储控制器及测试模型中,包括:
[0013]将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号;
[0014]分别将所述端口信号作为所述被测存储控制器及测试模型的输入。
[0015]其中,还包括:
[0016]收集预定功能覆盖率参数的数据信息;
[0017]利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。
[0018]其中,所述计算得到功能覆盖率和/或代码覆盖率之后,还包括:
[0019]实时打印计算得到的功能覆盖率和/或代码覆盖率。
[0020]本发明还提供一种基于UVM的存储控制器功能测试系统,包括:
[0021]设置数据包模块,用于设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;
[0022]Sequencer模块,用于利用所述预定参数生成测试激励;
[0023]驱动器模块,用于将所述测试激励分别施加到所述被测存储控制器及测试模型中;
[0024]监视器模块,用于分别监测所述被测存储控制器及测试模型的输出;
[0025]对比模块,用于对所述被测存储控制器及测试模型的输出进行对比,得到测试结果O
[0026]其中,所述设置数据包模块包括:
[0027]参数设置单元,用于定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成;
[0028]封装单元,用于将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单元。
[0029]其中,所述驱动器模块为将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号;分别将所述端口信号作为所述被测存储控制器及测试模型的输入的模块。
[0030]其中,还包括:
[0031 ]功能覆盖率参数收集模块,用于收集预定功能覆盖率参数的数据信息;
[0032]功能覆盖率分析模块,用于利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。
[0033]其中,还包括:
[0034]打印模块,用于实时打印计算得到的功能覆盖率和/或代码覆盖率。
[0035]本发明所提供的基于UVM的存储控制器功能测试方法,包括:设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;利用所述预定参数生成测试激励;将所述测试激励分别施加到所述被测存储控制器及测试模型中,并分别监测所述被测存储控制器及测试模型的输出;对所述被测存储控制器及测试模型的输出进行对比,得到测试结果;该方法中的UVM测试环境可以无缝集成到系统测试环境中,从而提高了验证效率,缩短了验证周期,实现可重用测试;本发明还提供了一种基于UVM的存储控制器功能测试系统。
【附图说明】
[0036]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0037]图1为本发明实施例所提供的基于UVM的存储控制器功能测试方法的流程图;
[0038]图2为本发明实施例所提供的存储控制器的结构示意图;
[0039]图3为本发明实施例所提供的基于UVM的存储控制器功能测试系统的结构框图;
[0040]图4为本发明实施例所提供的UVM测试平台的树形结构示意图;
[0041]图5为本发明实施例所提供的UVM测试平台的结构示意图;
[0042]图6为本发明实施例所提供的基于UVM的存储控制器功能测试系统的结构示意图。
【具体实施方式】
[0043]本发明的核心是提供一种基于UVM的存储控制器功能测试方法,该方法能够提高验证效率,缩短验证周期,实现可重用测试;本发明的另一核心是提供一种基于UVM的存储控制器功能测试系统。
[0044]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]请参考图1,图1为本发明实施例所提供的基于UVM的存储控制器功能测试方法的流程图;该方法可以包括:
[0046]S100、设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;
[0047]其中,UVM(UniversalVerificat1n Methodology,通用验证方法学)是一个以SystemVerilog类库为主体的验证平台开发框架,可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。UVM相比于传统的定向验证方法,UVM验证方法学所产生的受约束随机激励增加了几种边界条件的可能性既可以进行随机化约束,能够更有效地发现设计中的缺陷,sv语言本身的面向对象风格使得UVM验证平台更有利于验证平台的维护、扩展和复用。
[0048]预定参数的设置要根据用户具体被测存储控制器的实际情况进行确定。可选的,所述设置UVM环境的预定参数可以包括:
[0049]定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成;
[0050]将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单元。
[0051 ] 其中,具体的可以用packet来定义UVM环境内部变量及随机化约束,可以通过集成uvm_sequence_item这个基类来实现,它是UVM环境中最基本的组件。在该测试验证环境中,将地址和控制信号封装在其中,作为UVM环境的TLM数据单元,由sequence产生。其中Sequence的选择与调度是由sequencer决定,一般在UVM环境中设置sequencer的默认default_sequence即可在UVM测试验证平台启动后自动加载其产生的随机数据包。
[0052]S110、利用所述预定参数生成测试激励;
[0053]其中,要测试被测存储控制器的正确性,就必须能够给被测存储器施加不同的激励。因此,一个测试验证平台最重要的功能在于产生各种各样不同的激励,并且观测被测存储控制器DUT的输出结果,将此结果与测试模型的输出结果进行比较,由此判断DUT的正确性。UVM中的类中包含着各种函数和任务,通过对这些函数和任务的设定可以完成各种测试激励的生成。
[0054]S120、将所述测试激励分别施加到所述被测存储控制器及测试模型中,并分别监测所述被测存储控制器及测试模型的输出;
[0055]其中,可选的,所述将所述测试激励分别施加到所述被测存储控制器及测试模型中,包括:
[0056]将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号;
[0057]分别将所述端口信号作为所述被测存储控制器及测试模型的输入。
[0058]具体的,将由sequence产生的TLM数据单元根据AHB主机发送洗衣额转换成AHB端口信号,即先在时钟上升沿发送地址和控制信号,再在下一个时钟上升沿发送或接受数据或响应信号,同时发送下一个TLM数据单元的地址和控制信号。
[0059]S130、对所述被测存储控制器及测试模型的输出进行对比,得到测试结果。
[0060]其中,为了要测试该被测存储控制器的功能,因此要将产生的测试激励分别施加到被测存储控制器及测试模型中,被测存储控制器和测试模型形成对比,将测试模型的输出值作为期望值与被测存储控制器的输出值进行对比,来判定被测存储控制器在该测试激励下是否能够正常输出。对比结果一致,则被测存储控制器输出正确,对比结果不一致,则被测存储控制器输出结果错误。这里还可以将对比结果进行打印。
[0061]这里的测试激励不是一个,可以是覆盖被测存储控制器的所有正常输入的,形成一个测试激励组,将测试激励组中的每个测试激励都分别施加到被测存储控制器及测试模型中,直到测试激励组中的所有测试激励都被测试为止。
[0062 ]作为SOC的片上系统总线,AHB是AMBA总线协议的重要组成部分,主要用于连接ARM之类的高性能嵌入式处理器与片上存储控制器、DMA控制器及其他控制接口,采用时钟上升沿操作,支持流水线式的突发传输和分段式传输。AHB总线系统主要由三个部分组成:主机、从机、仲裁器。总线上的命令和地址信息由主机发出,从机响应。而仲裁器根据特定的优先级算法决定主机的总线使用权。AHB总线上一次完整的数据传输分为两个阶段:地址传输阶段和数据传输阶段。地址传输阶段由主机发出地址信号和控制信号,而在数据传输阶段由主机发出写入地址或从机返回读出数据和应答信号。
[0063]存储控制器是挂在AHB总线上的从机,能够根据AHB总线上的地址信号访问外部不同的RAM或R0M,其结构如图2所示。由于外部存储单元的带宽有限,AHB总线上的地址和数据信号需经过读写FIFO的缓存,以保证读写信号的完整性。存储控制器根据AHB总线上主机发送的地址所在取件和读写控制信号来宣统外部的EEPROM阵列和SRAM阵列进行读写操作。
[0064]该方法应用UVM高级验证方法学,搭建了适用于AHB总线上挂载的存储控制器的验证平台和验证环境,并通过UVM验证平台产生受约束的随机激励信号,对存储控制器进行了全面高效的验证,使得该验证平台能够有效地查出设计缺陷,验证环境可以无缝集成到系统验证环境中,从而提高了验证效率,缩短了验证周期。提供了一种基于UVM的高级加密IP验证方法。
[0065]基于上述技术方案,本发明实施例提供的基于UVM的存储控制器功能测试方法,利用开源的测试验证方法学,它采用了最佳的测试验证框架去实现覆盖率驱动验证,有效结合了测试随机产生、自测试平台和随机化约束等特点,该方法中的UVM测试环境可以无缝集成到系统测试环境中,从而提高了验证效率,缩短了验证周期,实现可重用测试。
[0066]基于上述实施例,该方法还包括:
[0067]收集预定功能覆盖率参数的数据信息;
[0068]利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。
[0069]其中,为了自动高效地得到测试功能覆盖率和/或代码覆盖率,需要自动收集特定的功能覆盖率参数,再根据这些参数计算得到功能覆盖率和/或代码覆盖率;可以通过UVM的监视器monitor来收集预定功能覆盖率参数的数据信息(如覆盖率组中的覆盖点包括地址信号、读写信号以及数据大小信号等信息),再由分析模块(如功能覆盖率分析模块funct1nal coverage)计算得到功能覆盖率和/或代码覆盖率。
[0070]其中,所述计算得到功能覆盖率和/或代码覆盖率之后,还包括:
[0071 ]实时打印计算得到的功能覆盖率和/或代码覆盖率。
[0072]利用上述方法进行测试后,可以通过分析测试结果,功能覆盖率及代码覆盖率来判定被测存储控制器的效果,并且该测试环境可以无缝的集成到系统验证环境中,IP模块可以在顶层验证中应用,真正做到了可重用验证。
[0073]基于上述技术方案,本发明实施例提供的基于UVM的存储控制器功能测试方法,利用开源的测试验证方法学,它采用了最佳的测试验证框架去实现覆盖率驱动验证,有效结合了测试随机产生、自测试平台和随机化约束等特点,该方法中的UVM测试环境可以无缝集成到系统测试环境中,从而提高了验证效率,缩短了验证周期,实现可重用测试。
[0074]本发明实施例提供了基于UVM的存储控制器功能测试方法,提高了验证效率,缩短了验证周期,实现可重用测试。
[0075]下面对本发明实施例提供的基于UVM的存储控制器功能测试系统进行介绍,下文描述的基于UVM的存储控制器功能测试系统与上文描述的基于UVM的存储控制器功能测试方法可相互对应参照。
[0076]请参考图3,图3为本发明实施例所提供的基于UVM的存储控制器功能测试系统的结构框图;该系统可以包括:
[0077]设置数据包模块100,用于设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号;
[0078]Sequencer模块200,用于利用所述预定参数生成测试激励;
[0079]驱动器模块300,用于将所述测试激励分别施加到所述被测存储控制器及测试模型中;
[0080]监视器模块400,用于分别监测所述被测存储控制器及测试模型的输出;
[0081]对比模块500,用于对所述被测存储控制器及测试模型的输出进行对比,得到测试结果。
[0082]可选的,所述设置数据包模块100包括:
[0083]参数设置单元,用于定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成;
[0084]封装单元,用于将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单元。
[0085]可选的,所述驱动器模块300为将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号;分别将所述端口信号作为所述被测存储控制器及测试模型的输入的模块。
[0086]基于上述任意实施例,该系统还包括:
[0087]功能覆盖率参数收集模块,用于收集预定功能覆盖率参数的数据信息;
[0088]功能覆盖率分析模块,用于利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。
[0089]基于上述任意实施例,该系统还包括:
[0090]打印模块,用于实时打印计算得到的功能覆盖率和/或代码覆盖率。
[0091]在UVM平台下列举一个具体测试系统;
[0092]一个基本的验证平台由以下几个部分组成:
[0093]driver:产生不同的激励施加给被测存储控制器即DUT ;即上述sequencer模块200。
[0094]monitor:监测DUT的输出;即上述监视器模块400。
[0095]scoreboard:将期望值与monitor监测到的DUT输出做比较;即上述对比模块500。
[0096]reference mode I或mode 1:它的输入和DUT完全一样,它的输出送给scoreboard,用于和DUT输出比较;即上述测试模型。
[0097]在UVM验证方法中,driver、monitor、mode1、scoreboard等组成部分都是一个基于System Verilog的类来实现的。类包含函数,任务,通过这些函数和任务可以完成driver的输出激励功能,完成monitor的监测功能,完成model的计算功能,完成scoreboard的比较功能,类中可以有成员变量,这些成员变量可以控制类的行为,如控制driver的行为等。所以类是实现这些验证平台组成部分的最好选择。
[0098]UVM预先定义好了 一个类,名字为uvm_component ,driver、monitor、mo del、scoreboard等都要从这个类派生而来。通过这种形式,把driver、moni tor、modle、scoreboard等都组织在一棵树上,这样UVM就可以方便的执行后面的操作。整个UVM测试平台的各个部分就如同一棵倒置的树,如图4所示。driver、monitor和sequencer封装在In_agent,0ut_agent中只封装monitor,整个组成一个测试环境env。
[0099]图5中的sequencer,它是UVM中独有的一个概念,driver负责向DUT发送数据,而这些数据由sequencer产生,一个sequencer通过启动一个sequence,从sequence获取数据,并把这些数据转交给driver。这种功能划分让driver不再关注数据的产生,而只负责数据的发送,只能更加清晰,更容易使用。图5中出现的另外的组件就是In_agent和0ut_agent,它们是UVM中的agent,所谓的agent其实只是简单的把driver、monitor和sequencer封装在一起。通常来说,agent对应的是物理接口协议,不同的忌口协议对应不同的agent,接口协议规定了数据的交换格式和方式,agent通过driver和monitor来实现接口协议的这些内容。在一个测试平台通常会有多个agent,如上面所示的In_agent,里面有driver和monitor,用于向DUT发送数据,而0ut_agent中只有monitor,用于监测DUT的输出。图5中的env则相当于是一个特大的容器,它把所有的uvm_component都包含在其内部作为成员变量。
[0?00] 请参考图6,Sequence的选择与调度由sequencer决定,一般在UVM环境中设置sequencer的默认default_sequence即可在UVM验证平台启动后自动加载其产生的随机数据包。
[Ο?Ο? ]驱动器driver是UVM验证平台中较为复杂的部件,它需要将受到的TLM数据单元依照特定的协议和时序关系转换成端口信号。在本设计中,将由sequence产生的TLM数据单元根据AHB主机发送洗衣额转换成AHB端口信号,即先在时钟上升沿发送地址和控制信号,再在下一个时钟上升沿发送或接受数据或响应信号,同时发送下一个TLM数据单元的地址和控制信号。
[0102]监视器monitor是检验验证结果的重要部件,它将端口信号转换成TLM数据单元发送给scoreboard,并收集功能覆盖率。本设计覆盖率组中的覆盖点包括地址信号、读写信号以及数据大小信号等信息。
[0?03]功能覆盖率分析模块funct1nal coverage采集覆盖率组中定义的覆盖点信息,并实时打印出功能覆盖率。记分板将同步收集存储控制器返回的数据和外部存储器数据总线上的数据进行对比,并打印比对结果。
[0104]说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0105]专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0106]结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(R0M)、电可编程R0M、电可擦除可编程R0M、寄存器、硬盘、可移动磁盘、CD-R0M、或技术领域内所公知的任意其它形式的存储介质中。
[0107]以上对本发明所提供的基于UVM的存储控制器功能测试方法及系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
【主权项】
1.一种基于UVM的存储控制器功能测试方法,其特征在于,包括: 设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号; 利用所述预定参数生成测试激励; 将所述测试激励分别施加到所述被测存储控制器及测试模型中,并分别监测所述被测存储控制器及测试模型的输出; 对所述被测存储控制器及测试模型的输出进行对比,得到测试结果。2.如权利要求1所述的基于UVM的存储控制器功能测试方法,其特征在于,所述设置UVM环境的预定参数,包括: 定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成; 将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单J L ο3.如权利要求2所述的基于UVM的存储控制器功能测试方法,其特征在于,所述将所述测试激励分别施加到所述被测存储控制器及测试模型中,包括: 将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号; 分别将所述端口信号作为所述被测存储控制器及测试模型的输入。4.如权利要求1-3任一项所述的基于UVM的存储控制器功能测试方法,其特征在于,还包括: 收集预定功能覆盖率参数的数据信息; 利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。5.如权利要求4所述的基于UVM的存储控制器功能测试方法,其特征在于,所述计算得到功能覆盖率和/或代码覆盖率之后,还包括: 实时打印计算得到的功能覆盖率和/或代码覆盖率。6.一种基于UVM的存储控制器功能测试系统,其特征在于,包括: 设置数据包模块,用于设置UVM环境的预定参数;其中,所述预定参数包括:UVM环境内部变量,随机化约束,被测存储控制器对应的地址信息和控制信号; Sequencer模块,用于利用所述预定参数生成测试激励; 驱动器模块,用于将所述测试激励分别施加到所述被测存储控制器及测试模型中; 监视器模块,用于分别监测所述被测存储控制器及测试模型的输出; 对比模块,用于对所述被测存储控制器及测试模型的输出进行对比,得到测试结果。7.如权利要求6所述的基于UVM的存储控制器功能测试系统,其特征在于,所述设置数据包t吴块包括: 参数设置单元,用于定义UVM内部的uvm_sequence_item基类,进行UVM环境内部变量及随机化约束的设置集成; 封装单元,用于将被测存储控制器对应的地址信息和控制信号进行封装,作为UVM环境的TLM数据单元。8.如权利要求7所述的基于UVM的存储控制器功能测试系统,其特征在于,所述驱动器模块为将接收到的所述测试激励的TLM数据单元,通过指定的协议和时序关系转换为端口信号;分别将所述端口信号作为所述被测存储控制器及测试模型的输入的模块。9.如权利要求6-8任一项所述的基于UVM的存储控制器功能测试系统,其特征在于,还包括: 功能覆盖率参数收集模块,用于收集预定功能覆盖率参数的数据信息; 功能覆盖率分析模块,用于利用所述数据信息,计算得到功能覆盖率和/或代码覆盖率。10.如权利要求9所述的基于UVM的存储控制器功能测试系统,其特征在于,还包括: 打印模块,用于实时打印计算得到的功能覆盖率和/或代码覆盖率。
【文档编号】G06F11/26GK105893202SQ201610266445
【公开日】2016年8月24日
【申请日】2016年4月26日
【发明人】高亚力
【申请人】浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1