基于线性学习快速提高芯片验证随机回归覆盖率的方法与流程

文档序号:12466755阅读:451来源:国知局
基于线性学习快速提高芯片验证随机回归覆盖率的方法与流程

本发明涉及芯片验证技术领域,具体涉及一种基于线性学习快速提高芯片验证随机回归覆盖率的方法。



背景技术:

在大规模以及超大规模的芯片验证过程中,为了保证设计的功能点都被验证到,检查代码覆盖率是检验验证质量的重要手段之一。然而,由于代码量大以及验证输入激励的随机性较大,为了得到更高的覆盖率,在验证时需要不断修改输入激励的约束范围。每次修改约束范围后都需要再次收集分析覆盖率,如此多次迭代的收集覆盖率,大大的拉长了验证的周期,消耗大量的人力资源,所以如何快速提高设计的覆盖率则成为提高芯片验证效率的关键。

现有技术中,一般通过人工分析代码的分支以及走向,再根据分支以及走向修改激励的约束。由于大规模的芯片设计代码量非常大,采用人工逐条的分析覆盖率中没有覆盖的代码,不仅需要花费大量的时间,而且不可避免的出现反复,也容易由于分析的错误导致工作量的增大,甚至可能会遗漏验证存在的错误。

如图1所示,假设其中a,b,c,d,m,n是直接从激励中获得的,而e是激励进来之后经过逻辑处理得到的值,“f=1”未被覆盖,首先需要满足(a&&b||c)为正值,之后再满足(~d&&e)为正值,方能执行到“f=1”这一行并且得到覆盖。而(a&&b||c)为正值又需至少满足(a&&b)为正值或c为正值,(a&&b)为正值需满足a和b都为正值;(~d&&e)为正值分解为:d为FALSE,e为正值;e为正值进一步分解为:m为正值或n为正值。经过不断的分解,最终得到相应的激励组合。

具体地,对“f=1”进行覆盖的分析过程如下:

(a&&b||c)==1—>a&&b==1或者c==1—>a&&b==1—>a==1&&b==1;

(~d&&e)==1—>d==0&&e==1—>m==1或者n==1;

由此可见,规模越大的芯片对于没有覆盖的某些代码,分析得到的激励组合越多,花费的时间越多。



技术实现要素:

针对现有技术的不足,本发明的主要目的在于:为了减小芯片验证过程中不断修改输入激励约束而提高代码覆盖率的迭代时间,提出了一种基于线性学习快速提高随机回归覆盖率的方法。

为实现前述目的,本发明公开了一种基于线性学习快速提高芯片验证随机回归覆盖率的方法,具体包括:

对待覆盖功能点相关的逻辑代码进行解析,获取可覆盖所述功能点的激励组合;

根据所述逻辑代码的逻辑运算符建立相应的逻辑树;

计算每一组激励组合对应所述逻辑树中的路径长度;

基于线性原则选取最短路径对应的一组激励组合;

根据所选取的激励组合对输入激励进行约束并验证。

优选地,使用脚本程序对所述逻辑代码进行解析。

优选地,所述逻辑树的叶子节点为直接激励,中间节点由所述直接激励经过逻辑运算得到,根节点为待覆盖功能点。

优选地,所述逻辑代码中每一级逻辑运算或条件判断对应所述逻辑树的一个层级,每一组激励组合对应的路径长度为所述激励组合相关节点到根节点所需要越过的级数之和。

优选地,所述最短路径有两条以上时,选取任意一条路径所对应的一组激励组合。

优选地,所述最短路径有两条以上时,选取采用叶子节点最少的一条路径所对应的一组激励组合。

与现有技术相比,本发明的优点在于:本发明公开的一种基于线性学习快速提高芯片验证随机回归覆盖率的方法,对没有覆盖的代码进行分析,根据逻辑运算符生成树形结构,然后基于线性的原则选出合适的激励组合。采用本发明的技术方案,可大大缩短在验证收敛阶段为了提高覆盖率而花费的时间,提高验证人员分析和增加代码覆盖率的效率。

附图说明

图1是本发明一实施例提出的需要覆盖的代码示意图;

图2是本发明一实施例提出的待覆盖代码对应的树形结构示意图。

具体实施方式

鉴于现有技术中的不足,本案发明人经长期研究和大量实践,得以提出本发明的技术方案。如下将对该技术方案、其实施过程及原理等作进一步的解释说明。

本发明实施例提供了一种快速提高代码覆盖率的方法,具体包括:

a.对待覆盖功能点相关的逻辑代码进行解析,获取可覆盖所述功能点的激励组合;

可采用脚本对待覆盖代码中不同的逻辑运算符的语句进行分析和解析,得到能够达到需要覆盖代码的激励组合;

b.根据逻辑运算符建立相应的逻辑树;

根据待覆盖代码中的逻辑运算符建立相应的树形结构,其中:叶子节点作为激励,中间节点由所述激励经过逻辑运算得到,根节点作为待覆盖功能点代码;

c.计算每一组激励组合对应所述逻辑树中的路径长度,基于线性原则选取最短路径对应的一组激励组合;

基于线性原则计算每一组激励组合所对应的节点形成的路径的长度,并根据其中最短路径选取所对应的一组激励组合作为最优激励组合。逻辑代码中每一级逻辑运算或条件判断对应逻辑树的一个层级,每一组激励组合对应的路径长度为所述激励组合相关节点到根节点所需要越过的级数之和。

d.根据所选取的激励组合修改对应的输入激励数值并对待覆盖功能点进行验证。

其中,在步骤c选择最优激励组合时,除计算从叶子节点到根节点的路径长度外,还可结合该激励组合采用的叶子节点数目。采用的叶子节点越少,并且越级越少,则该激励组合可选为最优激励组合。

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明实施例仍以图1示意的代码为待覆盖的代码为例,如图1所示,“f=1”是待覆盖的功能点代码语句,根据代码中的逻辑关系可得到覆盖该语句所需的激励组合,并根据逻辑运算符建立相应的逻辑树形结构,该树形结构如图2所示。

图2所示的逻辑树包含树叶(叶子)节点、中间节点及树根(根)节点,图1代码中的变量a、b、c、m和n在对应图2中各个树叶节点,分别是直接通过约束得到的激励;中间节点是直接激励经过逻辑运算而得,树根节点“f=1”是需要覆盖的功能点语句,逻辑运算符“||”为“或”关系,表示只需要取其中一个节点,而逻辑运算符“&&”为“与”关系表示两个节点都需满足条件。

根据逻辑运算关系,该树形结构中包含Level1、Level2和Level3三个层级,每一级对应代码中一级逻辑运算或条件判断。计算路径时每越过其中一个Level,该路径长度的计算要加1,例如:从树叶节点“a=1”遍历到中间节点“temp(a&&b)=1”,需要越过level1,则相应的路径长度加1;但是从中间节点“temp(~d&&e)=1”遍历到树叶节点“d=0”不需要越级,则相应的路径长度不需要加1。

图2中到达树根节点的激励组合有以下几组:

第一组:a=1,b=1,d=0,m=1;

第二组:a=1,b=1,d=0,n=1;

第三组:c=1,d=0,m=1;

第四组:c=1,d=0,n=1;

基于线性原则,计算各组激励覆盖树根节点的最优路径的路径长度,第一组激励组合相应的路径长度计算过程如下:

到达中间节点树叶节点“temp(a&&b)=1”,需要两个树叶节点“a=1”与“b=1”,这两个节点都需要越过Level1,则路径长度加2;再越过Level2到达中间“temp(~d&&e)=1”,路径长度加1;再遍历至树叶节点“d=0”,由于没有发生越级,路径长度不需要加1;树叶节点“m=1”越过Level2到达中间节点“e(m||n)=1”,路径长度加1;最后,树叶节点“d=0”与中间节点“e(m||n)=1”都需要越过Level3到达树根节点,路径长度加2;最终可得出第一组激励组合相应的路径长度为2+1+1+2=6。

按同样的方法计算,另外三组激励组合相应的路径长度为:第二组激励组合的路径长度同样为6,第三组和第四组激励组合的路径长度均为4,且第一组和第二组激励组合的树叶节点数均为4,第三组和第四组激励组合的树叶节点数均为3。

可见,第三组和第四组激励组合的路径长度相同,且路径内所包含的树叶节点数相同,可以从第三组和第四组的激励组合中任意选一组,作为最优激励组合。按照该激励组合对输入激励进行约束,再次进行测试后,即可实现覆盖到树根节点“f=1”的代码。

本发明技术方案将待覆盖代码以树状结构表示,便于对覆盖所需的激励进行择优选择,缩短了在验证收敛阶段为了提高覆盖率而花费的时间,从而提高验证人员分析和增加代码覆盖率的效率。

应当理解,上述实施例仅为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

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