一种基于UVM的系统级芯片验证平台及验证方法转让专利

申请号 : CN202310168843.1

文献号 : CN115841089B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 舒杰敏杨善宝

申请人 : 合肥六角形半导体有限公司

摘要 :

本发明公开了一种基于UVM的系统级芯片验证方法及平台,其方法包括:搭建UVM仿真测试环境;生成模块文件和测试用例,创建测试通路;进行RTL阶段验证、门级网表阶段验证,进行验证判断;其中,门级网表阶段验证时重载寄存器适配器,将寄存器模型的操作激励序列转化并编码,表征寄存器模型读写操作、地址和值,并存储到存储单元的固定地址区域配合CPU执行固定C代码程序,完成对待验证的系统级芯片中寄存器和存储单元的访问。本发明在门级网表阶段可以复用RTL阶段的UVM测试用例,而不用重新开发测试用例,极大加快系统级芯片从RTL阶段到门级网表阶段的仿真验证,并有效的降低时间和人力成本。

权利要求 :

1.一种基于UVM的系统级芯片验证方法,其特征在于,包括:搭建UVM仿真测试环境;

生成模块文件和测试用例,创建测试通路;

进行RTL阶段验证、门级网表阶段验证,进行验证判断;

其中,门级网表阶段验证时重载寄存器适配器,将寄存器模型的操作激励序列转化并编码,表征寄存器模型读写操作、地址和值,并存储到存储单元的固定地址区域配合CPU执行固定C代码程序,完成对待验证的系统级芯片中寄存器和存储单元的访问;

重载寄存器适配器具体操作包括:

等待CPU执行SYNC,往存储单元的第一地址内写一个预设的任意值;

判断激励序列对寄存器的操作类型;

若激励序列是对寄存器的写操作,则通过UVM的寄存器模型后门访问将激励序列中的地址和数据对应放到存储单元地址为第三地址和第二地址,等待CPU执行完程序后将处理后的新数据写入第二地址处后,返回等待CPU写SYNC;

若激励序列是对寄存器的读操作,则通过UVM的寄存器模型后门访问将激励序列中的地址放到存储单元地址为第一地址,等待CPU从所述第一地址读取数据并执行程序后,将处理后的新数据写进所述第二地址,适配器将所述新数据返回寄存器模型。

2.根据权利要求1所述的基于UVM的系统级芯片验证方法,其特征在于,CPU执行固定C代码程序包括:CPU向第一地址写SYNC,读取第二地址的值OP,如果OP等于NOP,则继续向第一地址写SYNC;

如果OP值表示总线写操作,则CPU读第三地址所存储的数据,和读取第四地址的数据,执行相应程序后向通过总线以从第三地址所读取的数据为地址写入新数据,返回向第一地址写SYNC;

如果OP值表示总线读操作,则CPU读第三地址所存储的数据,然后以该数据为地址读取该地址处存储的数据,接着将数据写入第四地址,返回向第一地址写SYNC。

3.根据权利要求1所述的基于UVM的系统级芯片验证方法,其特征在于,进行RTL阶段验证包括:新建UVM随机测试用例,UVM随机测试用例通过寄存器模型访问芯片总线,控制芯片中的IP内核模块,实现对各个IP内核模块或其组合的测试,收集覆盖率和通过率。

4.根据权利要求1所述的基于UVM的系统级芯片验证方法,其特征在于,进行门级网表阶段验证包括:重载寄存器适配器;

调试CPU执行C程序轮询存储单元的固定地址存储的值,并解码执行相应的总线操作,将总线操作回写存储单元固定地址处;

复用或挑选在RTL级阶段的UVM随机测试用例,UVM随机测试用例通过寄存器模型访问芯片总线,控制芯片中的IP内核模块,实现对各个IP内核模块或其组合的测试,收集覆盖率和通过率。

说明书 :

一种基于UVM的系统级芯片验证平台及验证方法

技术领域

[0001] 本发明涉及芯片验证技术领域,尤其涉及一种基于UVM的系统级芯片验证平台及验证方法。

背景技术

[0002] 系统级芯片仿真验证是指通过EDA工具,给予芯片激励,模拟芯片实际运行场景,从而找出芯片设计的缺陷,并验证芯片的设计合乎规范或者需求,提高产品的性能。在芯片流片前,进行大量充足的验证能够有效降低芯片流片失败所带来的成本。
[0003] 现有系统级芯片验证技术中的一种方式为:通过编写C代码程序,经过编译器编译为CPU可执行的机器码,CPU执行测试代码,配置被测系统级芯片,验证平台控制激励的产生,协调仿真的进行与结束。但是C代码程序无法做到测试用例的随机。因此只能进行直接测试,即给被测系统固定的配置激励。这样为达到完备的覆盖率,就需要花费大量的时间和人力来构建大量的直接测试,影响了项目进度。同时,有些极端的场景是无法通过直接测试构建,这就影响了收集完备的测试覆盖率。而且,由于由CPU执行C程序配置芯片仿真,不容易调试,影响了验证的效率。
[0004] 另一方面,现有系统级芯片验证技术可以通过使用基于UVM(Universal Verification Methodology,通用验证方法学)的验证平台,利用通用验证方法学,不仅可以构建随机测试用例,还可采用面向对象的验证设计。但是系统级芯片在门级网表,由于插入了测试链和时间延迟,不能通过CPU模型来访问和配置总线,此外,门级网表阶段需要使用实际的CPU网表和时延做仿真。

发明内容

[0005] 为解决背景技术中存在的技术问题,本发明提出一种基于UVM的系统级芯片验证方法及平台,提供系统级芯片从RTL阶段到门级网表阶段可复用的测试用例和覆盖率收敛平台和方法,实现快速收敛验证时间,减少验证人员的工作任务。
[0006] 为了更好的理解本发明技术方案,对部分名词术语解释如下:
[0007] IP:Intellectual Property,IP是已经设计完整且经过完备验证的具有某种确定功能的部件,供芯片集成设计人员选用,SOC内一般集成有多个IP内核模块。
[0008] UVM:Universal Verification Methodology,通用验证方法学。
[0009] 覆盖率:Coverage,覆盖率是验证完整性和有效性表征的指标之一。
[0010] 寄存器模型:Register Model,是UVM对芯片中寄存器抽象的类。
[0011] 寄存器适配器:Register Adapter,实现测试用例中通过Register Model对寄存器的读写访问与CPU代理 transaction之间的转换。
[0012] CPU代理:是基于UVM通过虚拟接口(virtualinterface)实现对总线访问功能的抽象模型,实现将抽象的UVM Transaction转换为具体接口总线协议时序。
[0013] DUT: Design Under Test,RTL阶段或者门级网表阶段待验证的设计。
[0014] 本发明提出一种基于UVM的系统级芯片验证平台,包括:DUT和UVM平台;
[0015] DUT包括待验证的系统级芯片,该待验证的系统级芯片包括中央处理器单元、多个IP内核模块、存储单元和总线;中央处理器单元、多个IP内核模块、存储单元均连接至总线;
[0016] UVM平台包括CPU代理、多个IP代理、寄存器适配器、寄存器模型、测试序列库、计分板;CPU代理、多个IP代理均具有可与总线连接的虚拟接口;测试序列库、寄存器模型、寄存器适配器、CPU代理依次连接,计分板与IP代理连接。
[0017] 优选地,测试序列库包括多个测试序列,多个测试序列可调用和组合为不同测试用例,并调用寄存器模型形成寄存器操作项;
[0018] 寄存器适配器用于将寄存器操作项中激励序列转换为支持总线协议的抽象类CPU事务;
[0019] CPU代理用于将上述CPU事务转换为具体总线协议时序,并通过虚拟接口对总线进行访问。
[0020] 优选地,CPU代理包括CPU驱动器,通过重载CPU驱动器可实现寄存器适配器重载。
[0021] 优选地,计分板包括参考模型,参考模型用于提供参考事务;
[0022] 计分板用于接收IP代理发送的事务,并将该事务与参考模型提供的参考事务进行比对,确定DUT是否存在异常。
[0023] 优选地,IP代理用于进行时序信息与事务转换。
[0024] 本发明还提出一种基于UVM的系统级芯片验证方法,包括:
[0025] 搭建UVM仿真测试环境;
[0026] 生成模块文件和测试用例,创建测试通路;
[0027] 进行RTL阶段验证、门级网表阶段验证,进行验证判断;
[0028] 其中,门级网表阶段验证时重载寄存器适配器,将寄存器模型的操作激励序列转化并编码,表征寄存器模型读写操作、地址和值,并存储到存储单元的固定地址区域配合CPU执行固定C代码程序,完成对待验证的系统级芯片中寄存器和存储单元的访问。
[0029] 优选地,重载寄存器适配器具体操作包括:
[0030] 等待CPU执行SYNC,往存储单元的第一地址内写一个预设的任意值;
[0031] 判断激励序列对寄存器的操作类型;
[0032] 若激励序列是对寄存器的写操作,则通过UVM的寄存器模型后门访问将激励序列中的地址和数据对应放到存储单元地址为第三地址和第二地址,等待CPU执行完程序后将处理后的新数据写入第二地址处后,返回等待CPU写SYNC;
[0033] 若激励序列是对寄存器的读操作,则通过UVM的寄存器模型后门访问将激励序列中的地址放到存储单元地址为第一地址,等待CPU从所述第一地址读取数据并执行程序后,将处理后的新数据写进所述第二地址,适配器将所述新数据返回寄存器模型。
[0034] 优选地,CPU执行固定C代码程序包括:
[0035] CPU向第一地址写SYNC,读取第二地址的值OP,如果OP等于NOP,则继续向第一地址写SYNC
[0036] 如果OP值表示总线写操作,则CPU读第三地址所存储的数据,和读取第四地址的数据,执行相应程序后向通过总线以从第三地址所读取的数据为地址写入新数据,返回向第一地址写SYNC;
[0037] 如果OP值表示总线读操作,则CPU读第三地址所存储的数据,然后以该数据为地址读取该地址处存储的数据,接着将数据写入第四地址,返回向第一地址写SYNC。
[0038] 优选地,进行RTL阶段验证包括:新建UVM随机测试用例,UVM随机测试用例通过寄存器模型访问芯片总线,控制芯片中的IP内核模块,实现对各个IP内核模块或其组合的测试,收集覆盖率和通过率。
[0039] 优选地,进行门级网表阶段验证包括:
[0040] 重载寄存器适配器;
[0041] 调试CPU执行C程序轮询存储单元的固定地址存储的值,并解码执行相应的总线操作,将总线操作回写存储单元固定地址处;
[0042] 复用或挑选在RTL级阶段的UVM随机测试用例,UVM随机测试用例通过寄存器模型访问芯片总线,控制芯片中的IP内核模块,实现对各个IP内核模块或其组合的测试,收集覆盖率和通过率。
[0043] 本发明以UVM验证平台为基础,结合CPU执行特殊的C程序,在RTL阶段快速构建随机测试用例并收集覆盖率,以保证测试用例的完备性和系统级芯片的完整与无错性;在门级网表阶段,通过重载寄存器适配器,重载UVM验证平台环境,CPU单元执行固定的代码,实现复用RTL阶段的UVM测试用例,而不用重新开发测试用例,极大加快系统级芯片从RTL阶段到门级网表阶段的仿真验证,并有效的降低时间和人力成本。

附图说明

[0044] 图1为本发明实施例中在RTL阶段的基于UVM的验证平台;
[0045] 图2为本发明实施例中在门级网表阶段的基于UVM的测试平台;
[0046] 图3为本发明实施例中重载后寄存器适配器的执行流程示意图;
[0047] 图4为本发明实施例中CPU执行C程序流程示意图;
[0048] 图5为本发明实施例中从RTL阶段到门级网表阶段验证方法流程示意图。

具体实施方式

[0049] 如图1‑2所示图1为本发明实施例中在RTL阶段的基于UVM的验证平台;图2为本发明实施例中在门级网表阶段的基于UVM的测试平台。
[0050] 参照图1‑2,本发明实施例提出一种基于UVM的系统级芯片验证平台,包括:DUT和UVM平台。
[0051] DUT包括待验证的系统级芯片,该待验证的系统级芯片包括中央处理器单元、多个IP内核模块、存储单元和总线;中央处理器单元、多个IP内核模块、存储单元均连接至总线;
[0052] UVM平台包括CPU代理、多个IP代理、寄存器适配器、寄存器模型、测试序列库、计分板;CPU代理、多个IP代理均具有可与总线连接的虚拟接口;测试序列库、寄存器模型、寄存器适配器、CPU代理依次连接,计分板与IP代理连接。
[0053] 可以理解,DUT作为待测设计,包括需要验证的系统级芯片;UVM平台提供仿真环境,通过仿真环境对系统级芯片的功能进行测试。该待验证的系统级芯片包括中央处理器单元(CPU)、多个IP内核模块(例如,IP1,IP2,……,IPn) 、存储单元和总线,每个所述IP内核模块IP1,IP2,……,IPn分别连接至所述总线,每个IP内核模块IP1,IP2,……,IPn是具有某种特定功能的部件。
[0054] 需要指出的是,该待验证的系统级芯片可以包括一个或多个中央处理器单元,例如,CPU0,CPU1,……,CPUk,每个所述中央处理器单元CPU0,CPU1,……,CPUk连接至所述总线。在本实施例中以单个中央处理器单元为例。
[0055] 仿真环境中包含有软件测试用例、通用验证方法学测试用例(UVM用例)和总线功能模型单元,软件测试实例是采用C语言编写的软件代码(C程序),通用验证方法学测试用例采用通用验证方法学编写的测试代码。总线功能模型单元在本实施例中由寄存器模型、寄存器适配器、CPU代理组成;绑定(binding)至中央处理器单元与所述总线连接的同一接口。
[0056] 软件测试用例和通用验证方法学测试用例则通过调用测试序列库中测试序列形成,并由总线功能模型单元处理后,通过总线对待验证的系统级芯片进行访问。方式可以是:测试序列库包括多个测试序列,多个测试序列可调用和组合为不同测试用例,并调用寄存器模型形成寄存器操作项;寄存器适配器用于将寄存器操作项中激励序列转换为支持总线协议的抽象类CPU事务;CPU代理用于将上述CPU事务转换为具体总线协议时序,并通过虚拟接口对总线进行访问。
[0057] 在本实施例中,测试序列库设计为针对各种测试场景的测试序列的集合。uvm_test通过调用和组合测试序列库里面的各个测试序列(sequence_1、sequence_2 … sequence_n),从而实现各个合理的测试用例。寄存器模型是UVM对待测设计(DUT)中寄存器和存储单元的抽象类(Class),测试序列通过调用抽象类寄存器模型的方法(例如读、写),产生UVM内部抽象的寄存器操作项item,并交给寄存器适配器。寄存器适配器将UVM寄存器模型内部的激励序列转换为支持具体总线协议的抽象类CPU事务,然后该CPU事务交给CPU代理,然后CPU代理将其转换为具体的总线协议时序,完成对待测设计总线的访问。CPU代理是通过虚拟接口连接待测设计内部的总线,实现对总线的访问。最终实现测试序列通过调用寄存器模型的方法完成对待测设计总线访问。记分板接收各个IP代理发送来的事务,并将各事务分别与记分板内部参考模型所提供的参考事务进行比较,若一致,则表示所述待测设备的功能正常,否则,表示所述待测设备的功能异常。IP 代理通过对应的虚拟接口连接至DUT对应的信号上,IP 代理功能包含但不限于:(1)驱动测试序列发送来的事务转换为对应IP核所支持的电平信号;(2)检测虚拟接口的时序信息,转换为事务,并发送给记分板做比对,并判断比对的成功与否。
[0058] 参考图3‑5,图3为本发明实施例中重载后寄存器适配器的执行流程示意图;图4为本发明实施例中CPU执行C程序流程示意图;图5为本发明实施例中从RTL阶段到门级网表阶段验证方法流程示意图。基于上述基于UVM的系统级芯片验证平台,本发明实施例还提出一种基于UVM的系统级芯片验证方法,包括:
[0059] 搭建UVM仿真测试环境;
[0060] 生成模块文件和测试用例,创建测试通路;
[0061] 进行RTL阶段验证、门级网表阶段验证,进行验证判断;
[0062] 其中,门级网表阶段验证时重载寄存器适配器,将寄存器模型的操作激励序列转化并编码,表征寄存器模型读写操作、地址和值,并存储到存储单元的固定地址区域配合CPU执行固定C代码程序,完成对待验证的系统级芯片中寄存器和存储单元的访问。
[0063] 本实施例中,搭建UVM仿真测试环境;生成模块文件和测试用例,创建测试通路;在验证平台实施例中已有阐述,此处不再赘述,对于RTL阶段验证、门级网表阶段验证,说明如下:
[0064] 在RTL验证阶段,为了快速开发测试用例,首先,使用CPU代理替换待测设计中的实际CPU,通过虚拟接口连接至总线,CPU代理同时也将CPU事务转换成具体总线协议的电平信号。寄存器适配器将UVM内部抽象的寄存器操作激励序列转换为CPU代理所对应的CPU事务。将待测设计中的寄存器和存储单元为抽象为寄存器模型,例如寄存器的物理地址与位宽,存储器的地址与位宽。测试场景序列库中的测试序列通过寄存器模型访问待测设计的总线。随机测试用例通过组合调用测试序列库中的序列完成各个具体的测试用例开发,利用标准的UVM方法学完成覆盖率的收敛。
[0065] 在门级网表阶段,由于门级网表中插入了测试信号以及时延信息,不能使用CPU代理替换实际的待测设计中CPU,需要实际的CPU网表进行时序仿真。为了重用RTL阶段建立测试用例和序列库,仅通过重载寄存器适配器,将寄存器模型的操作激励序列转化并编码,以表征寄存器模型读写操作(OP),地址(ADDR)和值(DATA),并后门存储到存储单元的固定地址区域(A,B,C,D)配合CPU执行固定C代码程序完成对待测设计中寄存器和存储单元的访问。UVM平台当中原有的寄存器模型、测试序列库、记分板,IP 代理均复用RTL阶段的代码。
[0066] 门级网表阶段,重载后寄存器适配器的执行流程如图3所示,如果测试用例有对寄存器的读写操作请求,CPU驱动器检测并等待CPU执行第一步写SYNC,即CPU往固定地址区域内写一个任意的预设固定值;
[0067] 如果激励序列是对寄存器的写操作,则通过UVM的寄存器模型后门访问将激励序列中的地址(ADDR)和数据(DATA)对应放到存储单元地址为C和D处,等待CPU执行完程序将处理后的新DATA写入ADDR处后,返回等待CPU写SYNC;
[0068] 如果激励序列是对寄存器的读操作,则通过UVM的寄存器模型后门访问将激励序列中的地址ADDR放到存储单元地址为C,等待CPU执行完对地址ADDR的读取,并将DATA写进地址D处,适配器将新DATA返回寄存器模型。
[0069] 门级网表阶段,CPU执行C程序流程如图4所示。CPU执行循环程序,第一步,CPU向地址A写SYNC,读取地址B的值OP,如果OP等于NOP,继续执行第一步。
[0070] 如果OP值表示总线写操作,则执行第五步,CPU读地址C所存储的ADDR值,和读取地址D的DATA值,然后执行第六步向通过总线以从地址ADDR处所读取的数据为地址,写入DATA值,返回第一步;
[0071] 如果OP值表示总线读操作,则执行第七步,CPU读地址C所存储的ADDR值,然后执行第八步读取总线地址ADDR处存储的值DATA,接着执行第九步将DATA写入地址D处,返回第一步。
[0072] 本发明以UVM验证平台为基础,结合CPU执行特殊的C程序,在RTL阶段快速构建随机测试用例并收集覆盖率,以保证测试用例的完备性和系统级芯片的完整与无错性;在门级网表阶段,通过重载寄存器适配器,重载UVM验证平台环境,CPU单元执行固定的代码,实现复用RTL阶段的UVM测试用例,而不用重新开发测试用例,极大加快系统级芯片从RTL阶段到门级网表阶段的仿真验证,并有效的降低时间和人力成本。
[0073] 本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0074] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。