一种SoC自动化随机验证的方法与流程

文档序号:11620745阅读:882来源:国知局
一种SoC自动化随机验证的方法与流程

本发明涉及芯片设计与制造领域,尤其涉及一种实现新型的soc验证的交互机制的方法。



背景技术:

随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成,现在又发展到ip的集成,即soc(system-on-chip)设计技术。soc可以有效地降低电子/信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是当前工业界采用的最主要的产品开发方式。但是随着生产工艺越来越复杂,以及芯片规模越来越大,使得soc的验证复杂度呈现指数型增长。因此,通过测试平台添加有约束的随机激励的验证方法成为了业界主流。这就对随机激励的产生提出了很高的要求。传统的随机激励产生主要有两种方法,图1是c直接产生随机数的测试激励示例,在c程序中进行直接随机生成随机数据,然后使用其产生测试激励,再利用测试激励对soc芯片进行测试,最后检查输出,完成该次随机验证。该方法的缺点是无法做到真正的随机,每次运行得到的随机数都是一样的,无法满足激励随机的要求;图2是外部产生随机数的测试激励示例;通过在程序外使用别的方式(脚本语言或者matlab)产生随机数,然后使用c语言随机数据include,再使用随机数据产生测试激励,接着利用测试激励对soc芯片进行测试,最后检查输出,完成该次随机验证。此方法缺点是每次进行soc验证前,都必须先运行产生随机数的程序,使用不方便且影响验证效率。因此,soc验证过程需要新的随机技术,可以克服上述问题,以减少验证时间和提高验证覆盖率。



技术实现要素:

针对以上缺陷,本发明目的在于如何实现一种在不影响验证效率的前提下,提供出一种真正的激励随机的方法来满足soc自动化随机验证要求。

为了实现上述目的,本发明提供了一种soc自动化随机验证的方法,其特征在于通过脚本语言自动生成随机种子,将随机种子分别输入到c程序和soc的测试激励模块;c程序根据输入的随机种子生成内部需要的随机数;测试激励模块根据生成的随机种子随机生成测试激励,测试激励实现对soc芯片测试,通过检测输出判断测试结果。

所述的soc自动化随机验证的方法,其特征在于所述的脚本语言为perl、shell或python。

所述的soc自动化随机验证的方法,其特征在于随机种子通过c语言宏定义的方式输入c程序,具体为在使用随机种子的程序中增加宏c_seed的定义,在c程序编译时增加-dc_seed=<seed>的编译选项。

本发明结合了外部程序产生随机数和内部测试用例c程序产生随机数的优点,通过外部传入随机种子给内部测试用例c程序产生随机数据,简单方便高效,实现了自动产生真正随机数据的效果,大大提高了验证的覆盖率和效率。

附图说明

图1是c直接产生随机数的测试激励示例;

图2是外部产生随机数的测试激励示例;

图3是自动化生成随机数的测试激励示例;

具体实施方式

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

图3是自动化生成随机数的测试激励示例。相比于传统的soc验证随机技术,其主要的不同是自动产生随机种子并将其传递到验证平台和c程序中。

首先是使用脚本语言自动产生随机种子。使用的语言可以多种多样,比如perl,shell或者python。产生随机种子的方式也很多,一般采用跟linux时间相关,或者是linux时间和当前cpu进程数的组合。

其次是将随机种子传递到验证平台和c程序中,当下主流的soc验证都会将随机种子传递到验证平台,以产生随机的systemverilog激励。本发明最关键的操作是将同一随机种子传递到c程序中。传递方式比较方便的是采用c语言宏的方式,即,在c程序编译的时候,通过添加选项-dc_seed=<seed>。这样则在c程序中添加了一个宏c_seed,其值为随机种子。

然后在c程序中使用该随机种子,比如srand(c_seed),此时c语言设置了随机种子,之后调用随机函数将在此随机种子的基础上产生。因此后续c程序中如果想要产生随机数据,可以直接使用c语言rand()函数。如果还想对数据进行约束,可以在c程序中通过编程添加约束。

最后验证平台根据这些随机激励进行仿真。

通过上面描述的方式进行soc验证,全都可以通过脚本一次编译完成,无需另外步骤,因此使用起来非常方便高效。同时,由于每次c程序输入的随机种子都是不一样的,因此可以认为c程序rand()函数产生的数据也是随机的,因此做到了真正意义上的随机。如果再配合以不同的随机种子并行进行soc仿真,将大大提高soc验证的效率和覆盖率。而且,如果soc仿真出现错误,由于验证平台和c程序都使用了同一随机种子,完全可以使用此种子再次跑仿真来复现问题,debug,以及确认问题是否解决。

综上所述,本发明解决了传统soc验证随机技术上的缺陷,使用上方便高效,并做到了真正的随机,如果配合以不同随机种子并行soc仿真,势必将大大提高soc验证的效率。

以上所揭露的仅为本发明一种实施例而已,当然不能以此来限定本之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于本发明所涵盖的范围。



技术特征:

技术总结
本发明公开了一种SoC自动化随机验证的方法,其特征在于通过脚本语言自动生成随机种子,将随机种子分别输入到C程序和SoC的测试激励模块;C程序根据输入的随机种子生成内部需要的随机数;测试激励模块根据生成的随机种子随机生成测试激励,测试激励实现SoC芯片的测试,通过检测输出判断测试结果。结合了外部程序产生随机数和内部测试用例C程序产生随机数的优点,通过外部传入随机种子给内部测试用例C程序产生随机数据,简单方便高效,实现了自动产生真正随机数据的效果,大大提高了验证的覆盖率和效率。

技术研发人员:李亮亮;杨崇朋
受保护的技术使用者:记忆科技(深圳)有限公司
技术研发日:2017.03.09
技术公布日:2017.08.04
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1