本发明涉及soc芯片技术领域,也涉及验证技术领域,具体涉及一种soc芯片的验证系统及其方法。
背景技术:
soc称为系统级芯片,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。同时它又是一种技术,用以实现从确定系统功能开始,到软/硬件划分,并完成设计的整个过程。
随着集成电路产业的飞速发展,soc芯片规模越来越大,设计也越来越复杂,使得soc验证也越来越困难。每个验证场景几乎都需要一个独立的激励产生模块产生激励,因此验证场景越多,激励产生模块也就越多,工作量越大,代码维护也更困难。以使用c语言编写激励产生模块为例,每种场景几乎都需要一个c文件编写的激励产生模块,在需要验证该场景时,使用c编译器编译该c文件,生成可执行文件,提供给相应的处理器进行处理操作,完成相应的功能验证,但编写大量的c文件类型的testcase不但会给验证人员带来大量的繁琐的工作量,而且对后期平台的维护也相当不利。
具体而言,按照芯片项目流程,芯片设计完成后需要进行全方位的验证工作,其主要目的是验证设计的正确性,确定芯片设计是否符合所有的设计规范,是否存在遗留问题和是否处在正常工作状态等。
采用uvm验证方法学可以实现:
1.受约束的随机验证(constrainedrandomverification),受约束的随机验证是在设定的约束条件下进行随机验证,以覆盖正常工作场景和意外工作场景;
2.覆盖率驱动验证(coveragedrivenverification),覆盖率驱动验证是当功能覆盖率、代码覆盖率达目标值以后停止随机验证;全自动在线比较,遇到错误自动报警并停止仿真,保存现场。
uvm验证方法实现了验证方法从信号级向事务级的转变,方便了数据通路类型芯片的验证。但由于uvm验证方法的数据交互和控制比较复杂,对某些芯片来说,操作待验证芯片的方法相当复杂,不方便控制仿真流程,易用性低,而且因为其无法加入设备驱动,故无法验证复杂的应用场景和升级成系统级验证平台。
另外,一些算法复杂度比较高的模块,并没有与之相匹配的精确的参考模型作为参照,无法实现精确的结果比对。
技术实现要素:
为解决上述问题,本发明提供了一种soc芯片的验证系统及其方法,有效避免了现有技术中针对soc芯片的uvm验证方法的数据交互和控制比较复杂、不方便控制仿真流程使得易用性低、无法验证复杂的应用场景和升级成系统级验证以及一些算法复杂度比较高的模块无法实现精确的结果比对的缺陷。
为了克服现有技术中的不足,本发明提供了一种soc芯片的验证系统及其方法的解决方案,具体如下:
一种soc芯片的验证系统,包括测试程序;
所述测试程序用于在所述待测试的soc芯片上加载测试程序进行检测。
所述待测试的soc芯片包括相互连接的作为a核的第一处理器和作为p核的第二处理器;所述第二处理器与调制解调器modem连接;
所述第一处理器用于控制所述第二处理器启动对调制解调器modem的控制。
所述soc芯片的验证系统的方法,包括:
加载测试程序进行检测;
所述测试程序使用脚本环境和c编译器结合uvm验证方法搭建而成。
所述加载测试程序进行检测的方法,包括:
步骤1-1:加载测试程序后,根据所述测试程序在系统接口函数库中调用相应的系统函数;
步骤1-2:根据所述系统函数,及所述系统函数对应的维护列表,生成随机事务;所述步骤1-1和步骤1-2用uvm验证方法实现;
步骤1-3:根据所述随机事务,对待测试的soc芯片进行验证。
所述测试程序进行检测的方法包括构建验证用例stimulus,所述构建验证用例是采用c+sv的方式,所述c+sv的方式包括:
利用sv语言具有的约束随机的特性构建随机的验证用例;
在所述待测试的soc芯片上加载测试程序进行检测的方法,包括:
步骤2-1:构建所述待测试的soc芯片;
步骤2-2:构造随机验证用例,构造随机验证用例包括利用sv语言具有的约束随机的特性构建随机的验证用例;
步骤2-4:针对a核和p核分别构造包括控制函数的a.c和p.c文件,使用c编译器编译a.c文件和p.c文件,分别生成a.c文件的可执行文件和p.c文件的可执行文件;
所述pmem函数用于模拟调制解调器modem接口的写入和读出的时序操作;所述ahb函数用于控制时钟发生器和复位发生器的启动运行,所述控制函数用于让第一处理器控制第二处理器启动对调制解调器modem的控制。
本发明的有益效果为:
总之,本发明通过包含有大量运算的.out文件来完成某些对应软件算法部分的工作,将其加载到验证环境之后,可进一步完成期望的操作;同时验证平台自身会调用uvm进行事务级的处理,完成某些信号的驱动以及对应结果的运算、采集以及最终的比对过程,该机制可避免直接编写大量测试c文件、浪费大量的工作量和不易维护的弊端,使用方便且适用于任何soc芯片的验证。有效避免了现有技术中针对soc芯片的uvm验证方法的数据交互和控制比较复杂、不方便控制仿真流程使得易用性低、无法验证复杂的应用场景和升级成系统级验证以及一些算法复杂度比较高的模块无法实现精确的结果比对的缺陷。
附图说明
图1为本发明的soc芯片的验证系统一个实例的整体结构示意图。
图2为本发明在所述待测试的soc芯片上加载测试程序进行检测的方法的流程图。
具体实施方式
下面将结合附图和实施例对本发明做进一步地说明。
如图1-图2所示,soc芯片的验证系统,包括测试程序;
所述待测试的soc芯片包括相互连接的作为a核的第一处理器和作为p核的第二处理器;所述第二处理器与调制解调器modem连接;所述第一处理器用于控制所述第二处理器启动对调制解调器modem的控制;所述第一处理器用于控制所述第二处理器的方式能够是:所述第一处理器对所述第二处理器发送启动指令,所述第二处理器接收该启动指令后,就启动对调制解调器modem执行如读写这样的控制,以此实现对所述调制解调器modem的控制。所述第二处理器还与时钟发生器、复位发生器、第一处理器以及其他外设连接。所述soc芯片的验证系统的方法,包括:
步骤1-3:根据所述随机事务,对待测试的soc芯片进行验证。这样使得软件工程师编写的测试程序可以直接在现有的验证平台上运行,实现了软硬件协同验证,同时把低层信息进行封装,使得验证系统便于使用,且易于复用,降低了uvm验证方法的数据交互和控制的复杂度。
所述测试程序进行检测的方法包括构建验证用例stimulus,所述构建验证用例是采用c+sv的方式,这样的方式实现方法灵活,所述c+sv的方式包括:
利用sv语言具有的约束随机的特性构建随机的验证用例,利用sv语言具有的约束随机的特性构建随机的验证用例的方法就是uvm验证方法的重点之一;
作为验证平台的所述测试程序可以模拟软件对处理器的操作,其中的testcase采用c语言和sv软硬结合的方法来实现。充分发挥了软件和硬件联合仿真调试的优势,可以快速有效的帮助软件工程师定位软件调试中遇到的问题。
步骤2-1:构建所述待测试的soc芯片;所述待测试的soc芯片包括相互连接的作为a核a-core的第一处理器和作为p核a-core的第二处理器;所述第二处理器与调制解调器modem连接;所述第一处理器用于控制所述第二处理器启动对调制解调器modem的控制;所述第一处理器用于控制所述第二处理器的方式能够是:所述第一处理器对所述第二处理器发送启动指令,所述第二处理器接收该启动指令后,就启动对调制解调器modem执行如读写这样的控制,以此实现对所述调制解调器modem的控制。所述第二处理器还与时钟发生器和复位发生器clk&resetgenerator连接。
一些算法复杂度比较高的模块,并没有与之相匹配的精确的参考模型作为参照,无法实现精确的结果比对,在这里会借助matlab来辅助进行结果判断,比如计算信号snr的方式来做一个模糊比对等。编验证平台中集成有matlab脚本,所述验证平台包括一套采用python语言编写的脚本,其中的核心脚本负责整个验证平台的架构组织和文件操作,会形成文件列表,也会控制仿真工具的启动,仿真结束后会调用其中集成的matlab脚本,来帮助对搜集到的结果数据做一个性能方面的检查判断。完整的流程是这样:
1.sv语言实现的vlog.v中随机产生调制解调器modem的工作模式,验证平台会将对应的模式下的激励file给到激励输入点,这样完成预处理;
2.然后软件方面(.c文件构造出的处理器和和总线等工作场景)的激励也相应产生;
3.调制解调器会和p核通过pmem函数进行多次软硬件交互,控制整个仿真流程往下顺利执行,直到结束;
4.vlog.v文件里会在判断硬件结束的时刻将结果数据采集并存储到file中,作为matlab检查脚本的一个输入;核心脚本调用matlab脚本,通过模式参数和结果文件的输入,来计算一个特性指标出来,并画出各节点的星座图,辅助进行结果检查。
这里的.c文件的软件部分可根据自身开发环境生成相应的作为可执行文件的.out文件来完成其对应部分的工作,将其加载到验证环境之后,可进一步完成期望的操作;同时验证平台自身会调用uvm进行事务级的处理,完成某些信号的驱动以及对应结果的运算、采集以及最终的比对过程,该机制可避免直接编写大量测试c文件、浪费大量的工作量和不易维护的弊端,并且使用方便且适用于任何soc芯片的验证。
从验证平台角度来看,首先平台中的集成脚本调用了c编译器,将a核分支的c文件进行编译运行,硬件启动相应工作,然后对p核分支提供的.out文件展开执行,调用算法模块的执行,验证平台会随机产生一些独立模块的激励,灌输到算法模块中,并且检测输出结果,在最终结束的时候进行比对。在执行完仿真流程后,离线结果文件已生成,脚本中会根据场景和目录关键字提取关键参数信息,自动调用matlab刚提取的参数传入,调用matlab比对最终的计算结果是否满足要求,并将判定结果按照指定格式输出到指定路径文件。
本平台覆盖范围比较全面,包含了多核处理器和各种外设,以及复杂的数据通信模块验证,在cdv的验证思想下可通过uvm+sv的随机约束支持来进行局部配置/数据激励的随机化,来满足搜集各种覆盖率的要求。同时也兼顾了各类结果检查手段的融合,既可以通过自己编写组件代码来实现一些简单结果的检查,也可以通过借助matlab工具来实现一些复杂的算法方面的结果检查,还可以借助断言等手段帮助进行一些协议类的白盒检查。激励产生模块可以得到最大程度的复用,大大减少了测试用例代码的开发工作量,同时代码维护起来也非常方便。
以上以用实施例说明的方式对本发明作了描述,本领域的技术人员应当理解,本公开不限于以上描述的实施例,在不偏离本发明的范围的情况下,可以做出各种变化、改变和替换。