一种ASIC芯片中Hash模块的验证方法及装置与流程

文档序号:14716593发布日期:2018-06-16 01:28阅读:229来源:国知局
一种ASIC芯片中Hash模块的验证方法及装置与流程

本发明涉及一种集成电路技术领域,尤其是涉及一种ASIC芯片中Hash模块的验证方法及装置。



背景技术:

在ASIC(Application Specific Integrated Circuit,专用集成电路)芯片中Hash模块通过计算数据元素的存储地址进行查找。其工作过程为:取数据元素的关键字Key,关键字Key经过散列(Hash)函数映射到关键字存储器的某一存储单元,并与该存储单元存储的关键字Key比较后,若匹配,则输出查找结果为Hit(命中),同时输出该存储单元中存储的相关数据以及位置信息。

Hash模块在使用之前需要对其进行验证,找出其潜在的漏洞。现有技术中使用随机化激励测试方法对其进行验证。当Hash模块中只有一个关键字存储器时,在仿真初始化时通过在关键字存储器中配入随机的关键字,并在仿真开始时发送随机生成的关键字作为输入激励。由于Hash算法的特殊性,关键字存储器中的随机关键字只有极小的概率是按照Hash函数正确映射到存储单元中的。随机生成的关键字只能以极小的概率命中关键字存储器中的关键字。因此,Hash模块在验证时需要发送大量的激励,并进行长时间的回归测试,才能获得足够多的结果为Hit(命中)的查找结果。若想要获得多次连续的结果都为命中的情况,则所需的测试时间可能会多一个数量级,因此使用传统的方法验证Hash模块,效率低。

另外,当Hash模块中存在两个或多个关键字存储器时,此处以两个关键字存储器为例,在验证时,需要覆盖的情况包括(1)同时命中第一关键字存储器和第二关键字存储器(2)命中第一关键字存储器,未命中第二关键字存储器(3)未命中第一关键字存储器,命中第二关键字存储器。采用随机化激励方法覆盖上述三种情况时,需要发送比一个关键字存储器时多得多的激励,验证效率更低。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种ASIC芯片中Hash模块的验证方法及装置,提高Hash模块的验证效率。

为实现上述目的,本发明提出如下技术方案:一种ASIC芯片中Hash模块的验证方法,所述Hash模块包括至少一个关键字存储器,方法包括如下步骤:

S1,建立含有D个随机关键字的关键字动态数组;

S2,根据关键字存储器的个数N将关键字动态数组分成2N-1个连续的关键字片段,且每个关键字片段不重叠;

S3,将每个关键字片段中的关键字按照给定规则配入关键字存储器中,使在每个关键字片段中选取至少一个关键字作为测试激励输入时可获得所有的Hash查找结果;

S4,将关键字动态数组中的关键字作为测试激励输入至Hash模块中进行测试,其中,D为大于或等于1的整数,D>2N-1,N为关键字存储器的个数,N为大于或等于1的整数。

优选地,在步骤S2中,每个关键字片段的长度相同或不同。

优选地,在步骤S3中,将每个关键字片段中的关键字按照给定规则配入关键字存储器中包括如下步骤:

S301,从起始位置开始将C(N,1)个关键字片段分别配入N个关键字存储器中;

S302,从1+C(N,1)个关键字片段开始选取C(N,2)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的两个关键字存储器中,且不同的关键字片段不能配入完全相同的两个关键字存储器中;

S303,从1+C(N,1)+C(N,2)个关键字片段开始选取C(N,3)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的三个关键字存储器中,且不同的关键字片段不能配入完全相同的三个关键字存储器中;

S304,以此类推,从1+C(N,1)+C(N,2)+…+C(N,N-1)个关键字片段开始选取C(N,N)个关键字片段,并将每段关键字片段均配入关键字存储器中任意选取的N个关键字存储器中,且不同的关键字片段不能配入完全相同的N个关键字存储器中,其中,N为关键字存储器的个数,N为大于或等于1的整数。

优选地,每个关键字存储器均对应一个Hash函数,所述Hash函数用于将关键字片段中的关键字映射到关键字存储器的存储单元中。

优选地,在步骤S4中,测试时,在每个关键字片段中选取至少一个关键字作为测试激励输入至Hash模块中或者选取关键字动态数组中任意一个关键字作为测试激励输入至Hash模块中。

一种ASIC芯片中Hash模块的验证装置,所述Hash模块包括至少一个关键字存储器,装置包括:

关键字动态数组生成模块,用于建立含有D个随机关键字的关键字动态数组;

数组分段模块,用于关键字存储器的个数N将关键字动态数组分成2N-1个关键字片段,且每个关键字片段不重叠;

关键字配入模块,用于将每个关键字片段中的关键字按照给定规则配入关键字存储器中,使在每个关键字片段中选取至少一个关键字作为测试激励输入时可获得所有的Hash查找结果;

测试模块,用于将关键字动态数组中的关键字作为测试激励输入至Hash模块中进行测试,其中,D为大于或等于1的整数,D>2N-1,N为关键字存储器的个数,且N为大于或等于1的整数。

优选地,所述关键字配入模块包括:

第一配入模块,用于从起始位置开始将C(N,1)个关键字片段分别配入N个关键字存储器中;

第二配入模块,用于从1+C(N,1)个关键字片段开始选取C(N,2)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的两个关键字存储器中,且不同的关键字片段不能配入完全相同的两个关键字存储器中;以此类推,

第N配入模块,从C(N,1)+C(N,2)+…+C(N,N)个关键字片段开始选取C(N,N)个关键字片段,并将每段关键字片段均配入关键字存储器中任意选取的N个关键字存储器中,且不同的关键字片段不能配入完全相同的N个关键字存储器中;

优选地,所述第一配入模块至第N配入模块均包括:

选取模块,用于选取关键字片段;

映射模块,用于将选取的关键字片段中的关键字映射到关键字存储器的存储单元中。

优选地,每个关键字存储器均对应一个Hash函数,所述映射模块根据该关键字存储器对应的Hash函数将关键字片段中的关键字映射到该关键字存储器的存储单元中。

本发明的有益效果是:

与现有技术相比,本发明所述的一种ASIC芯片中Hash模块的验证方法及装置,可提高Hash模块的验证效率,能够快速找出潜在的缺陷,从而避免了传统方法需要长时间的回归测试,以及不能覆盖所有Hash查找结果导致的遗漏缺陷的问题。

附图说明

图1是本发明的Hash模块的验证方法流程图示意图;

图2是本发明的2N-1个连续的关键字片段配入到关键字存储器中方法流程图示意图;

图3是本发明的实施例一中数组分段及配入存储器示意图;

图4是本发明的结构框图示意图。

具体实施方式

下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。

本发明所揭示的一种ASIC芯片中Hash模块的验证方法及装置,能够提高Hash模块的验证效率。

如图1所示,一种ASIC芯片中Hash模块的验证方法,包括如下步骤:

S1,建立含有D个随机关键字的关键字动态数组;

具体的,关键字动态数组用于存放至少一个关键字,并且关键字动态数组的长度可变。实施时,关键字作为验证Hash模块的测试激励被输入至Hash模块中。还可以通过设置一个参数来配置关键字动态数组的长度。进一步地,关键字动态数组建立后在其内存放D个随机的关键字,其中,D为大于或等于1的整数。

S2,根据关键字存储器的个数N将关键字动态数组分成2N-1个连续的关键字片段,且每个关键字片段不重叠,其中,D>2N-1,N为关键字存储器的个数,N为大于等于1的整数;

具体的,Hash模块包括至少一个关键字存储器,每个关键字存储器均包括若干个存储单元,关键字可存储在存储单元中。进一步地,在2N-1个连续的关键字片段中,每个关键字片段的长度可相同,也可以不相同。实施时,每个关键字片段的长度均可通过一个参数来配置其长度。

S3,将每个关键字片段中的关键字按照给定规则配入关键字存储器中,使在每个关键字片段中选取至少一个关键字时可获得所有的Hash查找结果;

具体的,如图2所示,2N-1个连续的关键字片段按照如下给定规则配入到关键字存储器中:

S301,从起始位置开始将C(N,1)个关键字片段分别配入N个关键字存储器中;

S302,从1+C(N,1)个关键字片段开始选取C(N,2)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的两个关键字存储器中,且不同的关键字片段不能配入完全相同的两个关键字存储器中;

S303,从1+C(N,1)+C(N,2)个关键字片段开始选取C(N,3)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的三个关键字存储器中,且不同的关键字片段不能配入完全相同的三个关键字存储器中;

S304,以此类推,从1+C(N,1)+C(N,2)+…+C(N,N-1)个关键字片段开始选取C(N,N)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的N个关键字存储器中,且不同的关键字片段不能配入完全相同的N个关键字存储器中,其中,N为关键字存储器的个数,N为大于等于1的整数。

进一步地,C(N,1)、C(N,2)…C(N,N-1),以及C(N,N)根据如下公式进行计算:

其中,Q小于等于P,且P、Q为自然数。

通常情况下,Hash模块中的关键字存储器个数不超过4个,因此,本实施例中,分别以Hash模块中包括两个和四个关键字存储器为例进行详细的说明。

实施例一(Hash模块包括两个关键字存储器,记为KM1和KM2)

如图3所示,首先,根据关键字存储器的数量将关键字动态数组分为3个关键字片段,分别记为K1,K2,K3;

其次,从起始位置开始选取C(2,1)个关键字片段,即从起始位置开始选取两个关键字片段,选取到K1和K2,同时,将K1配入至KM1中,将K2配入至KM2中;

最后,从1+C(2,1)个关键字片段开始选取C(2,2)个关键字片段,即从第三个位置开始选取一个关键字片段,选取到K3,同时,将K3均配入任意选取的两个关键字存储器中,即将K3分别配入至KM1和KM2中。

至此,所有关键字片段均配入关键字存储器中,即KM1中含有K1和K3,KM2中含有K2和K3。

实施例二(Hash模块包括四个关键字存储器,记为KM1、KM2、KM3、KM4)

首先,根据关键字存储器的数量将关键字动态数组分为15个关键字片段,分别记为K1,K2,K3…K15。

其次,从起始位置开始选取C(4,1)个关键字片段,即从起始位置选取四个关键字片段,即选取到的关键字片段为K1、K2、K3和K4。同时,将K1配入至KM1中,将K2配入至KM2中,K3配入至KM3中,K4配入至KM4中;

其次,从1+C(4,1)个关键字片段开始选取C(4,2)个关键字片段,即从K5开始,选取六个关键字片段,即选取到的关键字片段为K5、K6、K7、K8、K9和K10。此时,需将每个关键字片段均配入任意选取的两个关键字存储器中,且不同的关键字片段不能配入完全相同的两个关键字存储器中。若将K5均配入至KM1和KM2中,则K6~K10均不能再同时配入至KM1和KM2中。此时,K6可配入至KM1、KM3、KM4中任选的两个。若将K6均配入至KM3和KM4中,则K7~K10均不能再同时配入至KM3和KM4中。同理可得,将K7均配入至KM1和KM3中,将K8均配入至KM2和KM4中,将K9均配入至KM2和KM3中,将K10均配入至KM1和KM4中。

其次,从1+C(4,1)+1+C(4,2)个关键字片段开始选取C(4,3)个关键字片段,即从K11开始,选取四个关键字片段,即选取到的关键字片段为K11、K12、K13和K14。此时,需将每个关键字片段均配入任意选取的三个关键字存储器中,且不同的关键字片段不能配入完全相同的三个关键字存储器中。若将K11均配入至KM1、KM2和KM3中,则K12~K14均不能同时再配入至KM1、KM2和KM3中。同理可得,将K12均配入至KM2、KM3和KM4,将K13均配入至KM1、KM2和KM4中,将K14均配入至KM1、KM3和KM4中。

最后,从1+C(4,1)+1+C(4,2)+C(4,3)个关键字片段开始选取C(4,4)个关键字片段,即从K15开始,选取一个关键字片段,即选取到的关键字片段为K15,将其均配入至KM1~KM4中。

进一步地,在Hash模块中,每个关键字存储器均对应一个Hash函数,其可以将关键字片段中的关键字映射到该关键字存储器中。

S4,将关键字动态数组中的关键字作为测试激励输入至Hash模块中进行测试。

具体的,测试时,在每个关键字片段中选取至少一个关键字作为激励输入至Hash模块时,可覆盖所有Hash查找结果。以Hash模块中包含两个关键字存储器为例。当按照上述方法将关键字片段配入关键字存储器后。在K1、K2、K3中各选取一个关键字,则Hash查找结果包括如下几种情况:(1)命中KM1,未命中KM2(2)未命中KM1,命中KM2(3)同时命中KM1和KM2。

当然,当不从关键字动态数组中选取任何一个关键字时,则KM1和KM2都不会命中。

与现有技术相比,本发明所述的Hash模块的验证方法,可提高Hash模块的验证效率,能够快速找出潜在的缺陷,避免了传统方法需要长时间的回归测试,以及不能覆盖所有Hash查找结果导致的遗漏缺陷。

如图4所示,一种ASIC芯片中Hash模块的验证装置,包括关键字动态数组生成模块、数组分段模块、关键字配入模块,以及测试模块。其中,关键字动态数组生成模块用于建立关键字动态数组,并在数组中存入D个随机关键字,D为大于或等于1的整数,D>2N-1,N为关键字存储器的个数,N为大于等于1的整数。实施时,可以通过设置一个参数来配置关键字动态数组的长度。

数组分段模块用于根据Hash模块中关键字存储器的个数N将关键字动态数组分成2N-1个关键字片段,且每个关键字片段不重叠。每个关键字片段的长度可以相同也可以不相同,实施时,每个关键字片段的长度可通过设置一个参数来配置。

关键字配入模块用于将每个关键字片段中的关键字按照给定规则配入关键字存储器中,使在每个关键字片段中选取至少一个关键字作为测试激励输入时可获得所有的Hash查找结果。其包括第一配入模块、第二配入模块…第N配入模块,N为关键字存储器的个数。第一配入模块用于从起始位置开始将C(N,1)个关键字片段分别配入N个关键字存储器中;第二配入模块用于从1+C(N,1)个关键字片段开始选取C(N,2)个关键字片段,并将每个关键字片段均配入关键字存储器中任意选取的两个关键字存储器中,且不同的关键字片段不能配入完全相同的两个关键字存储器中。以此类推,第N配入模块用于从1+C(N,1)+C(N,2)+…+C(N,N-1)个关键字片段开始选取C(N,N)个关键字片段,并将每段关键字片段均配入关键字存储器中任意选取的N个关键字存储器中,且不同的关键字片段不能配入完全相同的N个关键字存储器中。

进一步地,第一配入模块、第二配入模块…第N配入模块均包括选取模块和映射模块。其中,选取模块用于选取关键字片段;映射模块用于将选取的关键字片段中的关键字映射到关键字存储器的存储单元中。每个关键字存储器均对应一个Hash函数,其可将关键字映射到关键字存储单元中。因此,映射模块根据该关键字存储器对应的Hash函数将关键字片段中的关键字映射到该关键字存储器的存储单元中。

测试模块用于将关键字动态数组中的关键字作为测试激励输入至Hash模块中进行测试。在测试时,既可以在每个关键字片段中选取至少一个关键字作为激励输入至Hash模块中,也可以不选取关键字动态数组中任何一个关键字作为激励输入至Hash模块中,也可以在关键字动态数组中随机选取多个关键字作为激励输入至Hash模块中。当在每个关键字片段中选取至少一个关键字作为激励输入至Hash模块中进行测试时,可覆盖所有Hash查找结果。

本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1