一种覆盖率的统计方法及装置制造方法及图纸

技术编号:12258639 阅读:87 留言:0更新日期:2015-10-28 21:03
本发明专利技术公开了一种覆盖率的统计方法及装置,所述方法包括:在代码中分别为代码中的每个待覆盖点添加用于检测待覆盖点的覆盖情况的检测逻辑以及用于保存检测结果的寄存器;在代码开始执行后,检测逻辑检测对应的待覆盖点的覆盖情况,在检测到对应的待覆盖点被覆盖时,记录到对应的寄存器中,直到代码执行完毕;分别读取每个待覆盖点对应的寄存器的寄存器值,对读取的寄存器值进行统计分析,生成代码的覆盖结果。本发明专利技术在保证芯片的结构和功能实现的前提下,添加的检测逻辑和寄存器使覆盖率的统计,不再依赖于代码版本的稳定,对代码版本的变动不再敏感,可以灵活的应用于代码设计的初期和中期阶段,使验证工作尽早地高效开展。

【技术实现步骤摘要】

本专利技术涉及计算机技术,尤指一种覆盖率的统计方法及装置
技术介绍
随着工艺技术以及应用领域的不断发展,一方面芯片设计的复杂度不断提高,另一方面对芯片研发周期的要求越来越严格,这就要求对于芯片的各种验证工作需要尽早和高效地进行。相对应的,作为衡量验证充分程度的一个重要指标,覆盖率的统计和分析对于控制验证周期和提高验证效率,有着非常重要的意义。传统上的覆盖率统计,是利用仿真工具(如VCS,IES等)自带的覆盖率统计功能对代码覆盖进行检查。但这样的方式存在两个问题,一是对于多次仿真的覆盖率结果合并需要代码版本一致,但在代码设计初期和中期阶段,因为设计代码还在不断调试修改之中,全芯片代码的稳定版本很难实现;二是这样的覆盖率统计仅仅能用于仿真验证之中,对于现在验证超大规模芯片需要使用的FPGA验证无法使用。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种覆盖率的统计方法及装置,能够使得覆盖率的统计不再依赖于代码版本的稳定,对代码版本的变动不再敏感。为了达到本专利技术目的,本专利技术提供了一种覆盖率的统计方法,包括:在代码中分别为所述代码中的每个待覆盖点添加用于检测待覆盖点的覆盖情况的检测逻辑以及用于保存检测结果的寄存器;在所述代码开始执行后,所述检测逻辑检测对应的待覆盖点的覆盖情况,在检测到对应的待覆盖点被覆盖时,记录到对应的寄存器中,直到所述代码执行完毕;分别读取每个待覆盖点对应的寄存器的寄存器值,对读取的寄存器值进行统计分析,生成所述代码的覆盖结果。进一步地,所述方法还包括:在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器后,为所述检测逻辑和寄存器添加用于控制是否对所述检测逻辑和寄存器进行编译的控制开关;在对所述代码进行编译时,判断所述控制开关的状态,如果所述控制开关开启,则对所述检测逻辑和寄存器进行编译;否则,不对所述检测逻辑和寄存器进行编译。进一步地,所述方法还包括:在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,对所述代码的执行环境进行评估,确定能够支持的检测逻辑和寄存器的数量,根据该数量选择待覆盖点。进一步地,所述对读取的寄存器值进行统计分析,包括:根据预定义的所述寄存器值的含义,将寄存器值转化为被覆盖次数,得到每个待覆盖点的被覆盖次数。进一步地,所述方法还包括:在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,根据待覆盖点的被覆盖次数的检测需要配置所述寄存器的位数。进一步地,一种覆盖率的统计装置,包括:配置单元、检测单元和统计单元,其中:所述配置单元,用于在代码中分别为所述代码中的每个待覆盖点添加用于检测待覆盖点的覆盖情况的检测逻辑以及用于保存检测结果的寄存器;所述检测单元,用于在所述代码开始执行后,运行所述检测逻辑检测对应的待覆盖点的覆盖情况,在检测到对应的待覆盖点被覆盖时,记录到对应的寄存器中,直到所述代码执行完毕;所述统计单元,用于分别读取每个待覆盖点对应的寄存器的寄存器值,对读取的寄存器值进行统计分析,生成所述代码的覆盖结果。进一步地,所述装置还包括控制单元和编译单元,其中:所述控制单元,用于在所述配置单元在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器后,为所述检测逻辑和寄存器添加用于控制是否对所述检测逻辑和寄存器进行编译的控制开关;所述编译单元,用于在对所述代码进行编译时,判断所述控制开关的状态,如果所述控制开关开启,则对所述检测逻辑和寄存器进行编译;否则,不对所述检测逻辑和寄存器进行编译。进一步地,所述装置还包括选择单元,其中:所述选择单元,用于在所述配置单元在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,对所述代码的执行环境进行评估,确定能够支持的检测逻辑和寄存器的数量,根据该数量选择待覆盖点。进一步地,所述统计单元对读取的寄存器值进行统计分析,包括:根据预定义的所述寄存器值的含义,将寄存器值转化为被覆盖次数,得到每个待覆盖点的被覆盖次数。进一步地,所述配置单元,还用于在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,根据待覆盖点的被覆盖次数的检测需要配置所述寄存器的位数。与现有技术相比,本专利技术包括在代码中为每个待覆盖点添加检测逻辑和相应的寄存器进行覆盖率统计,在保证芯片的结构和功能实现的前提下,添加的检测逻辑和寄存器使覆盖率的统计,不再依赖于代码版本的稳定,对代码版本的变动不再敏感,可以灵活的应用于代码设计的初期和中期阶段,使验证工作尽早地高效开展。进一步地,通过为检测逻辑和寄存器添加控制开关可以确保添加的检测逻辑和寄存器不会影响实际芯片的结构和功能实现。进一步地,在代码中为每个待覆盖点添加检测逻辑和寄存器前,对代码的执行环境进行评估,根据资源的允许选择待覆盖点,可以很方便地移植到如FPGA验证中使用。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明附图用来提供对本专利技术技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本专利技术的技术方案,并不构成对本专利技术技术方案的限制。图1为本专利技术覆盖率的统计方法的流程图;图2为本专利技术覆盖率的统计装置的架构图;图3为本专利技术覆盖率的统计方法的应用场景的示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1所示为本专利技术的覆盖率的统计方法,包括:步骤101:在代码中分别为代码中的每个待覆盖点添加用于检测待覆盖点的覆盖情况的检测逻辑以及用于保存检测结果的寄存器;本专利技术可以应用于对芯片进行测试、验证时的覆盖率统计,也可以是其他情况下对代码进行测试、验证时的覆盖率统计。例如,对于超大规模芯片仿真验证的需求,针对覆盖目标,通过在芯片逻辑中添加额外的检测逻辑和寄存器,用于检测代码中的待覆盖点本文档来自技高网...

【技术保护点】
一种覆盖率的统计方法,其特征在于,包括:在代码中分别为所述代码中的每个待覆盖点添加用于检测待覆盖点的覆盖情况的检测逻辑以及用于保存检测结果的寄存器;在所述代码开始执行后,所述检测逻辑检测对应的待覆盖点的覆盖情况,在检测到对应的待覆盖点被覆盖时,记录到对应的寄存器中,直到所述代码执行完毕;分别读取每个待覆盖点对应的寄存器的寄存器值,对读取的寄存器值进行统计分析,生成所述代码的覆盖结果。

【技术特征摘要】
1.一种覆盖率的统计方法,其特征在于,包括:
在代码中分别为所述代码中的每个待覆盖点添加用于检测待覆盖点的覆
盖情况的检测逻辑以及用于保存检测结果的寄存器;
在所述代码开始执行后,所述检测逻辑检测对应的待覆盖点的覆盖情况,
在检测到对应的待覆盖点被覆盖时,记录到对应的寄存器中,直到所述代码
执行完毕;
分别读取每个待覆盖点对应的寄存器的寄存器值,对读取的寄存器值进
行统计分析,生成所述代码的覆盖结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器后,为
所述检测逻辑和寄存器添加用于控制是否对所述检测逻辑和寄存器进行编译
的控制开关;
在对所述代码进行编译时,判断所述控制开关的状态,如果所述控制开
关开启,则对所述检测逻辑和寄存器进行编译;否则,不对所述检测逻辑和
寄存器进行编译。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,对
所述代码的执行环境进行评估,确定能够支持的检测逻辑和寄存器的数量,
根据该数量选择待覆盖点。
4.根据权利要求1或2所述的方法,其特征在于,所述对读取的寄存器
值进行统计分析,包括:
根据预定义的所述寄存器值的含义,将寄存器值转化为被覆盖次数,得
到每个待覆盖点的被覆盖次数。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在代码中分别为所述代码的每个待覆盖点添加检测逻辑和寄存器前,根
据待覆盖点的被覆盖次数的检测需要配置所述寄存器的位数。
6.一种覆盖率的统计装置,其特征在于,包括:配置单元、检测单元和
统计单元,其中:
所述配置单元,用于在代码中分别为所述代码...

【专利技术属性】
技术研发人员:李拓童元满李仁刚
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1