在芯片设计的验证中建立无限测试矢量的方法 【技术领域】
本发明涉及一种芯片验证中建立测试矢量的方法,尤其是一种在超大规模片上系统芯片设计的验证中为模拟出真实网络环境,建立无限测试矢量的方法。
背景技术
芯片设计的验证是将数据包(测试矢量)发往按照芯片设计文件制成的芯片上,测试该设计芯片的性能和功能的过程。在以往的验证方法中是逐条的发送数据包,而真实网络环境中发往芯片模型的数据包是随机无穷的,所以传统的验证方法的验证结果不能真实反映该芯片的性能和功能。但若没有目的的完全随机发送数据包,而没有对芯片功能和性能的针对性,则会使验证效率大大降低,所以在产生随机数据包时,必须有目地性和针对性的。
当今世界的计算能力不可能彻底地同时运行数百万SOC ASIC门中所有的门。(如果一个指令运行一个组合,那么一台1000.00MIPS计算机运行1000.000门ASIC会花上一年时间)。一个数百万门的模拟系统要求产生的测试矢量能被系统所接受,人工智能随机可以同时处理所有用户的数百万门级的组合。因为那些门的纯随机组合是无穷的,所以是不可能简单的运行它们全部的组合。
【发明内容】
本发明旨在模拟出真实网络环境,而又避免完全随机测试带来的弊端,使超大规模片上系统芯片设计的验证结果能真实反映芯片的性能、功能,而提出的一种建立测试矢量的方法。
为解决上述技术问题,本发明所采用的技术方案如下:
一种在芯片设计的验证中建立无限测试矢量的方法,其特征在于:该方法包括如下两个步骤:
a建立随机代码的N维空间;
b建立N维测试矢量产生引擎。
本发明上述a项中首先确定需要随机产生的数据对象,一个这样的数据对象就是N维随机空间种的一维;然后确定数据对象值的变化范围,数据对象的取值范围包括所有合法的范围和一定非法范围,用以检查系统的容错性;对于需要的数据对象,将其数据变化范围划分为几段,定义数据在随机产生的过程在中随机出现在其中某段的几率,定义的这些几率都有默认值,即,没有重新定义的时候使用的值;
本发明在建立测试矢量产生引擎的时候,根据测试的需要有两种不同的情形:
a)有的测试需要绝对的避免重复数据,这时需要引擎采用自动跟踪算法来避免通常随机过程中的重复,这样就在系统中建立一个小的数据库,记录正在产生和已经产生的数据,如果正在产生的数据和已经产生的数据重复则重新产生该数据;
b)有的测试在对已经产生的数据要做全部或局部的修改,这时引擎根据来自其他模块随机产生的值做相应的修改。
本发明的有益效果表现在:
采用本发明,在芯片的验证过程中随机无穷而又有目的性和针对性且的发送数据包,逼真地模拟出真实网络环境,大大提高了验证效率,使验证结果能够真实反映该芯片的性能和功能。
【附图说明】
图1为本发明流程框图
【具体实施方式】
本发明采取如下两大步骤:
a建立随机代码的N维空间;
随机代码空间由N维组成,每个维在自己特有的坐标轴产生测试矢量,同时正交的分配给对方。
建立一个N+1维的随机代码空间的原则是抽象演绎的过程,是根据ASIC SOC(专用集成电路片上系统)的泛函性、ASIC SOC寄存器配置空间、非功能性但可发生错误,这三方面决定的。这三个方面包含了一般的ASIC验证要求的功能,用户可编程配置和可容性的错误。
具体步骤是:
a)确定需要随机产生的数据对象。比如,以太网数据包的包长,这样的数据时非常大量的。一个这样的数据对象就是N维随机空间种的一维;
b)确定数据对象值的变化范围,这些值可能时各种数据类型;
c)数据对象的取值范围应该包括所有合法的范围和一定非法范围,用以检查系统的容错性,比如协议规定以太网包长的最短为64字节,则可以定义测试用的数据包的最短包长为60字节;
d)对于需要的数据对象,将其数据变化范围划分为几段,定义数据在随机产生的过程在中随机出现在其中某段的几率,定义的这些几率都有默认值,即,没有重新定义的时候使用的值;
b、建立N维测试矢量产生引擎,
具体建立测试矢量产生引擎的时候,根据测试的需要会有不同;有的测试需要绝对的避免重复数据,这时需要引擎采用自动跟踪算法来避免通常随机过程中的重复,这样就在系统中建立一个小的数据库,记录正在产生和已经产生的数据,如果正在产生的数据和已经产生的数据重复则重新产生该数据;有的测试在对已经产生的数据要做全部或局部的修改,这时引擎需要能做这样的修改,而修改的根据可能来自其他模块随机产生的值。