一种SOC芯片系统级验证系统及方法与流程

文档序号:33521454发布日期:2023-03-22 06:38阅读:92来源:国知局
一种SOC芯片系统级验证系统及方法与流程
一种soc芯片系统级验证系统及方法
技术领域
1.本发明涉及一种验证系统及方法,特别是一种soc芯片系统级验证系统及方法。


背景技术:

2.ip复用使得soc设计更为简单、快捷,但仍然需要在系统级进行验证,传统的testbench无法实现灵活的随机约束和结果自查,从0搭建uvm验证环境需要前期消耗大量的时间搭建验证平台。


技术实现要素:

3.发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种soc芯片系统级验证系统及方法。
4.为了解决上述技术问题,本发明公开了一种soc芯片系统级验证系统及方法,包括:硬件平台顶层、验证平台和脚本文件;
5.其中,所述验证平台通过gpi接口与硬件平台顶层连接,完成所述验证平台对待测soc芯片系统中硬件的激励驱动,并获取硬件数据;脚本文件指定待测soc芯片系统中的设计代码和验证代码,并指定仿真类型;所述硬件平台顶层用于运行待测soc芯片系统中的硬件。
6.所述硬件平台顶层,包括:待测设计即待测soc芯片系统和外部的设备模型;所述硬件平台顶层运行在仿真器中。
7.所述验证平台,包括:测试用例、激励模型以及计分板。
8.所述测试用例包括两类协程,即公共配置的协程和特定功能相关的协程:根据不同功能模块的工作流进行程配置,协程通过访问硬件信号在硬件平台顶层中的层次化路径完成硬件信号的驱动和采集,与硬件平台之间通常进行信号级别的通信;
9.所述激励模型用于遵循设定协议的信号束:通信总线,按照接口协议完成激励的驱动和响应的采集,与硬件平台之间进行信号束级别的通信。
10.所述计分板通过比对从待测soc芯片系统中采集到的响应数据和期望值的异同,判断响应数据是否正确,给出测试用例通过与否的标志,并打印结论。
11.所述脚本文件用于设置测试参数,包括:通过设置待测soc芯片系统的顶层模块和包含所有代码的文件列表指定设计代码;通过定义测试用例的名称指定参与仿真的验证代码;通过全局变量的定义对仿真类型进行区分。
12.所述脚本文件设置的测试参数,包括:前仿真、后仿真、是否需要保留波形文件以及回归测试的规模。
13.所述测试用例,按照场景进行分类,具体方法如下:
14.验证处理器相关场景:采用c+python的方式,使用c语言和python语言分别构建软件部分的操作和硬件部分的激励;
15.忽略处理器参与的场景:跳过待测soc芯片系统中的cpu启动程序,仅利用cocotb
验证框架具有的随机约束特性构建硬件部分的激励。
16.一种soc芯片系统级验证方法,采用一种soc芯片系统级验证系统,进行验证,包括以下步骤:
17.步骤一:通过赋值全局变量指定测试用例,运行开始;使用仿真工具编译待测soc芯片系统中的的rtl代码;运行编译代码启动仿真,利用gpi接口进行验证平台对硬件平台的仿真控制;
18.步骤二:若定义全局变量为cpu参与值,则cpu在上电后通过flash加载对应测试用例的指令,并将其转化为硬件行为;否则复位cpu使其停止工作,直接执行测试用例中的python代码,激励源头为总线模型模拟cpu的行为;
19.步骤三:若cpu参与,则根据验证场景控制cpu配置待测soc芯片系统中的待测设计的相关功能,并由cpu响应其他设备的反馈信息;若无需cpu控制,则在python的测试用例中通过总线配置使得待测soc芯片系统进入该验证场景需要的工作模式;
20.步骤四:信号级激励产生并发送:根据场景及功能需要,产生随机数据并通过信号在硬件平台中的层次化路径发送到硬件接口;
21.步骤五:信号束激励产生并发送:根据场景及功能需要,对信号束中的每一根信号产生随机数据,根据激励模型中定义的行为时序要求将激励数据驱动到信号束对应的硬件接口,使其满足接口的行为规范;
22.步骤六:响应采集和判断,激励模型按照时序要求采集响应,在计分板中判断该响应是否为预期数据,如果正确则给出测试用例通过的标志,等待所有代码执行完毕结束仿真,错误则打印错误信息并结束仿真。
23.有益效果:
24.本发明中验证系统和测试用例均使用python实现,无需引入其他语言、脚本,省去建立复杂的uvm验证环境,环境搭建容易,可以同时实现以总线行为为激励入口和以c程序为激励入口的测试方法,该验证方法以随机约束和覆盖率驱动为原则,具有灵活高效、可快速收敛、验证效率高的特点。
25.1)该验证系统基于python语言和cocotb验证框架实现soc验证的目的,验证人员无需具备sv/uvm验证背景,python/cocotb学习周期短,验证更加高效。
26.2)测试用例按照验证的功能特点分为两类,无需cpu参与的用例使用总线行为为灌入激励,否则通过读取c程序灌入激励,由处理器转变成soc的硬件行为,前者跳过cpu启动流程,提高了验证效率。
27.3)针对soc顶层接口建立类,测试用例中直接进行例化实现信号的驱动或采集,相比于uvm中的接口传递更加简洁高效。
28.4)开发的脚本文件可实现众多功能,如指定设计代码、验证代码和硬件平台的入口,对仿真类型进行区分,如前仿真、后仿真,其他节省资源的行为,如是否需要保留波形文件、回归测试的规模等,在实现验证目的的前提下可以实现资源的高效利用。
29.5)在无ip level验证环境时,该验证方法可以实现对总线连接、并发访问、中断连接、中断响应、时钟、复位等功能进行快速验证。
30.6)该系统以随机约束和覆盖率驱动技术为原则,具有灵活高效、可快速收敛、验证效率高的特点。
附图说明
31.下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
32.图1为本发明系统架构示意图。
33.图2为本发明中验证方法流程示意图。
具体实施方式
34.本发明提出了一种soc芯片系统级验证系统及方法,其中:
35.1、验证系统,如图1所示:
36.该系统包括硬件平台顶层、验证平台和脚本文件,验证平台通过gpi接口与硬件平台顶层连接实现对硬件的激励驱动、获取硬件数据,脚本文件指定待测soc的设计代码和验证代码、指定仿真类型;
37.1)硬件平台顶层包括待测设计(即待测soc芯片系统)和外部的设备模型,整个硬件平台顶层运行在仿真器中(一般的,验证平台和硬件平台都运行在仿真器中,因此一方代码修改后都需要重新编译),如:vcs。在本发明中,验证代码的修改不会导致整个系统的重新编译。
38.2)验证平台使用python代码编写,包括:测试用例、激励模型、用于结果检查的计分板;其中测试用例包含多个协程,主要分为公共配置的协程和特定功能相关的协程:不同功能模块的工作配置流程,协程可以通过访问硬件信号在硬件平台中的层次化路径实现硬件信号的驱动和采集,与硬件平台之间通常进行信号级别的通信;激励模型用于遵循特定协议的的信号束:通信总线,按照接口协议完成激励的驱动和响应的采集,计分板通过比对从待测soc芯片系统中采集到的响应数据和期望值的异同,判断响应数据是否正确,给出测试用例通过与否的标志和结论打印。
39.3)脚本文件通过设置待测soc芯片系统的顶层模块和包含所有代码的文件列表指定设计代码,通过定义测试用例的名称指定参与仿真的验证代码,通过全局变量的定义对仿真类型进行区分,如前仿真、后仿真、是否需要保留波形文件、回归测试的规模等。
40.2、测试用例分类以提高验证效率
41.1)验证处理器相关场景:采用c+python的方式,验证处理器相关的场景时,使用c语言和python语言分别构建硬件部分的激励和软件部分的操作。
42.2)可忽略处理器参与的场景:跳过cpu启动程序,仅利用cocotb具有的随机约束特性构建随机的验证用例。
43.3、验证方法,如图2所示:
44.步骤一:通过赋值全局变量指定测试用例,运行开始;使用仿真工具编译待测soc的rtl代码;运行编译代码启动仿真,利用图一中的gpi接口进行验证平台对硬件平台的仿真控制;
45.步骤二:若定义全局变量为cpu参与值,cpu会在上电后通过flash加载对应测试用例的指令,并将其转化为硬件行为;否则复位cpu使其停止工作,直接执行测试用例中的代码,激励源头为总线模型模拟cpu的行为;
46.步骤三:若cpu参与,则根据验证场景控制cpu配置待测设计相关功能,并由cpu响
应其他设备的反馈信息如(中断);若无需cpu控制,需要在python的测试用例中通过总线配置使得待测soc进入该验证场景需要的工作模式;
47.步骤四:信号级激励产生并发送:根据场景及功能需要,产生一定范围的随机数据并通过信号在硬件平台中的层次化路径发送到硬件接口;
48.步骤五:信号束激励产生并发送:根据场景及功能需要,对信号束中的每一根信号产生一定范围的随机数据,根据激励模型中定义的行为时序要求依次或同时将激励数据驱动到信号束对应的多个硬件接口,使其满足接口的行为规范,如总线的通信协议。
49.步骤六:响应采集和判断,激励模型按照时序要求采集响应,在计分板中判断该响应是否为预期数据,如果正确则给出测试用例通过的标志,等待所有代码执行完毕结束仿真,错误则打印错误信息并结束仿真。
50.一种soc芯片系统级验证系统及方法,其中,验证系统基于cocotb的开源框架,使用python实现,搭建容易,无需建立复杂的uvm验证环境。
51.该系统可以通过不同的测试用例使用总线行为为灌入激励或者读取c程序灌入激励,无iplevel验证环境及相关测试的前提下,对系统中总线连接、并发访问、中断连接、中断响应、时钟、复位等功能进行验证时,可使用系统中开发的总线模型、时钟模型、复位模型等作为参考模型进行比对。
52.该系统使用随机约束的函数遍历所有状态空间,建立功能覆盖率模型进行覆盖率收敛达到交付水平。
53.(1)验证系统组成:
54.dut部分:rtl文件及filelist
55.python部分:用于测试不同功能的用例,不同测试用例中重复配置的流程,构成环境组件的类。
56.其他模型:用于仿真的外部设备模型
57.makefile:指导编译、仿真,区分前仿真、后仿真、回归行为。
58.(2)验证的流程
59.1、验证环境搭建
60.2、脚本开发:前仿真、后仿真、回归测试
61.3、验证计划
62.4、测试用例开发及前仿真
63.5、回归测试
64.6、后仿真
65.具体实现中,本技术提供计算机存储介质以及对应的数据处理单元,其中,该计算机存储介质能够存储计算机程序,所述计算机程序通过数据处理单元执行时可运行本发明提供的一种soc芯片系统级验证系统及方法的发明内容以及各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
66.本领域的技术人员可以清楚地了解到本发明实施例中的技术方案可借助计算机程序以及其对应的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序即软件产品的形式体现
出来,该计算机程序软件产品可以存储在存储介质中,包括若干指令用以使得一台包含数据处理单元的设备(可以是个人计算机,服务器,单片机,muu或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
67.本发明提供了一种soc芯片系统级验证系统及方法的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1