CN114443027A - 覆盖率收集代码的重用方法、计算机可读介质 - Google Patents

覆盖率收集代码的重用方法、计算机可读介质 Download PDF

Info

Publication number
CN114443027A
CN114443027A CN202210085224.1A CN202210085224A CN114443027A CN 114443027 A CN114443027 A CN 114443027A CN 202210085224 A CN202210085224 A CN 202210085224A CN 114443027 A CN114443027 A CN 114443027A
Authority
CN
China
Prior art keywords
coverage
class
bin
collection
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210085224.1A
Other languages
English (en)
Inventor
马骁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Clounix Technology Ltd
Original Assignee
Hangzhou Clounix Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Clounix Technology Ltd filed Critical Hangzhou Clounix Technology Ltd
Priority to CN202210085224.1A priority Critical patent/CN114443027A/zh
Publication of CN114443027A publication Critical patent/CN114443027A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种覆盖率收集代码的重用方法,包含如下步骤:创建覆盖仓基类;根据需要,覆盖仓基类派生覆盖仓子类,并重载覆盖仓基类的静态方法;创建覆盖率收集组件基类,用于代码重载;对覆盖率收集组件基类进行派生,派生为参数化类,参数为覆盖仓子类,即需要忽略的覆盖率收集特性;将覆盖仓子类作为参数传入该参数化的类,得到覆盖率收集参数类;声明和实例化覆盖率收集组件基类,通过代码重载将该基类替换为覆盖率收集参数类。本发明通过将需要忽略的覆盖率收集特性传入参数化的类以实现对覆盖率的代码重用;同时,通过调用覆盖仓子类的静态方法来获得目标需要忽略的覆盖仓ignore_bins。

Description

覆盖率收集代码的重用方法、计算机可读介质
技术领域
本发明涉及芯片验证技术领域,特别涉及一种覆盖率收集代码的重用方法及计算机可读介质。
背景技术
如图1所示,是对一款芯片的功能逻辑进行抽象后的示例图。
各个端口信号如下:
op:运算指令,包括加法ADD,减法SUB,乘法MUL,除法DIV运算;
A:运算操作数,使用寄存器组来运算和寄存操作数;B:运算操作数,使用寄存器组来运算和寄存操作数;rslt:运算结果,使用寄存器组来运算和寄存结果。
通常为了面向不同的市场需要,会制定不同的产品策略,并进行相应的产品规划,规划出多种不同性能的同类型系列芯片,那么对该芯片支持的性能参数可以做如下抽象:
support_mode:支持的工作模式,包括HIGH_MODE,MEDIUM_MODE,LOW_MODE,性能越高,其支持的模式就越多;
support_op:支持的运算指令,包括ADD,SUB,MUL,DIV性能越高,其支持的运算指令种类就越多,而这取决于其支持的工作模式support_mode;
support_reg:支持的寄存器组,包括寄存器R0~R7,性能越高,其对运算指令进行运算时,运算的操作数和运算后的结果使用的寄存器就越多,那么运算速度就越快,而这同样取决于其支持的工作模式support_mode。
那么简单对其运算指令进行抽象,并在验证平台中用枚举型变量来表示。具体包括:
mode:工作模式;
op:运算指令;
A_reg:运算操作数A所使用的寄存器组;
B_reg:运算操作数B所使用的寄存器组;
rslt_reg:运算结果rslt所使用的寄存器组。
通常需要编写覆盖率组件coverage来对该芯片的一些重要覆盖点做覆盖率收集统计,该组件获取来自monitor监测到的事务数据,可以通过订阅者模式来实现,也可以通过TLM通信端口连接来实现。
该覆盖率组件包含的覆盖点一般至少包括:
mode:收集覆盖到所支持的工作模式;
op:收集覆盖到所支持的运算指令;
A_reg:收集覆盖到的运算操作数A所使用的寄存器组;
B_reg:收集覆盖到的运算操作数B所使用的寄存器组;
rslt_reg:收集覆盖到的运算结果rslt所使用的寄存器组。
一些交叉覆盖点,比如运算指令和运算操作数A所使用的寄存器组等其他一些corner覆盖点。
前面说为了面向不同的市场需要,会制定不同的产品策略,并进行相应的产品规划,规划出多种不同性能的同类型系列芯片,因此为了对多款不同性能的同类型芯片进行验证,那么可能就需要维护多套覆盖率收集代码。比如,规划面向中低端市场的同类型芯片不再支持HIGH_MODE工作模式,此时该芯片也就不再支持乘法MUL和除法 DIV的运算指令,同时该芯片的运算速度也会降低,即此时其运算操作数和运算结果不再能使用全部的寄存器组R0~R7,而只能使用寄存器组R0~R3,那么需要重写上述覆盖率收集代码coverage并增加一些ignore_bins来忽略当前不再支持的一些性能特性的覆盖率收集。
对此,虽然仅需增加一些ignore_bins,但是需要对之前的coverage覆盖率收集代码进行完整的复制,同样如果还有其他性能的同类型芯片,那么会存在大量的重复代码,此时需要同时维护多套几乎一样的覆盖率收集代码。另外如果后面需要修改的话,可能需要同步修改多个地方,麻烦且容易遗漏出错。
发明内容
根据本发明实施例,提供了一种覆盖率收集代码的重用方法,包含如下步骤:
创建覆盖仓基类;
根据需要,覆盖仓基类派生覆盖仓子类,覆盖仓子类为需要忽略的覆盖率收集特性,并重载覆盖仓基类的静态方法;
创建覆盖率收集组件基类,用于代码重载;
对覆盖率收集组件基类进行派生,派生为参数化类,该参数化类的参数为覆盖仓子类;
将覆盖仓子类作为参数传入上述参数化的类,获取覆盖率收集参数类;
声明和实例化覆盖率收集组件基类,通过代码重载将覆盖率收集组件基类替换为覆盖率收集参数类。
优选地,初始状态下,覆盖仓基类中不存在需要忽略的覆盖率收集。
优选地,覆盖仓基类和覆盖仓子类中的函数供静态调用。
优选地,覆盖仓基类和覆盖仓子类中的函数通过static关键字实现静态调用。
优选地,需要忽略的不再支持的覆盖率代码派生于覆盖仓基类。
优选地,采用factory机制进行代码重载。
根据本发明又一实施例,提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器运行上述任一项覆盖率收集代码的重用方法。
根据本发明实施例的覆盖率收集代码的重用方法和计算机可读介质,通过将需要忽略的覆盖率收集特性传入参数化的类以实现对覆盖率的代码重用;同时,通过调用覆盖仓子类的静态方法来获得目标需要忽略的覆盖仓ignore_bins。
要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并 且意图在于提供要求保护的技术的进一步说明。
附图说明
图1为现有技术中对芯片功能逻辑进行抽象后的示例图;
图2为根据本发明实施例覆盖率收集代码的重用方法的流程图;
图3为根据图2的方法原理示意图。
具体实施方式
以下将结合附图,详细描述本发明的优选实施例,对本发明做进一步阐述。
首先,将结合图2~3描述根据本发明实施例的覆盖率收集代码的重用方法,用于不同性能和不同模式的芯片验证,其应用场景很广。
如图2~3所示,本发明实施例的覆盖率收集代码的重用方法,具有如下步骤:
具体地,如图2~3所示,在步骤S1中,创建覆盖仓基类cg_ignore_bins_default,在本实施例中,覆盖仓基类的函数加有关键字static,以方便后续步骤通过::符号进行静态调用。
进一步,初始状态下,是没有ignore_bins的,即不存在需要忽略的不再支持的一些性能特性的覆盖率收集。
具体地,如图2~3所示,在步骤S2中,根据实际项目需要,对覆盖仓基类cg_ignore_bins_default进行派生,派生出覆盖仓子类subclass_cg_ignore_bins_default,覆盖仓子类为需要忽略的覆盖率收集特性,并重载覆盖仓基类的静态方法;在本实施例中,覆盖仓子类的函数同样需要加上static关键字,以方便后面通过::符号进行静态调用。
具体地,如图2~3所示,在步骤S3中,创建覆盖率收集组件基类coverage_base,用于代码重载。在本实施例中,采用factory机制进行代码重载。
具体地,如图2~3所示,在步骤S4中,对覆盖率收集组件基类coverage_base进行派生,派生为参数化类,该参数化类的参数为覆盖仓子类。
具体地,如图2~3所示,在步骤S5中,将覆盖仓子类subclass_cg_ignore_bins_default作为参数传入参数化的类,从而,覆盖率收集组件基类coverage_base的覆盖率收集对象coverage忽略需要忽略的不再支持的覆盖率代码,生成覆盖率收集参数类。在本实施例中,需要忽略的不再支持的覆盖率代码派生于覆盖仓基类cg_ignore_bins_default。
具体地,如图2~3所示,在步骤S6中,声明和实例化覆盖率收集组件基类coverage_base,通过代码重载将覆盖率收集组件基类coverage_base替换为覆盖率收集参数类,从而实现对覆盖率收集代码的重用。在本实施例中,采用factory机制进行代码重载。
如上,在根据本发明实施例的覆盖率收集代码的重用方法中,通过将需要忽略的覆盖率收集特性传入参数化的类以实现对覆盖率的代码重用;同时,通过调用覆盖仓子类的静态方法来获得目标需要忽略的覆盖仓ignore_bins。
以上结合附图2~3描述了根据本发明实施例的覆盖率收集代码的重用方法。进一步地,本发明还可以应用于具有处理器可执行的非易失的程序代码的计算机可读介质。
本发明实施例的具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器运行上述实施例的覆盖率收集代码的重用方法。
以上,参照图2~3描述了根据本发明实施例的覆盖率收集代码的重用方法和计算机可读介质,通过将需要忽略的覆盖率收集特性传入参数化的类以实现对覆盖率的代码重用;同时,通过调用覆盖仓子类的静态方法来获得目标需要忽略的覆盖仓ignore_bins。
需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包含……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

Claims (7)

1.一种覆盖率收集代码的重用方法,其特征在于,包含如下步骤:
创建覆盖仓基类;
根据需要,所述覆盖仓基类派生所述覆盖仓子类,所述覆盖仓子类为需要忽略的覆盖率收集特性,并重载所述覆盖仓基类的静态方法;
创建覆盖率收集组件基类,用于代码重载;
对所述覆盖率收集组件基类进行派生,派生为参数化类,所述参数化类的参数为覆盖仓子类;
将所述覆盖仓子类作为参数传入所述参数化的类,获取覆盖率收集参数类;
声明和实例化所述覆盖率收集组件基类,通过代码重载将所述覆盖率收集组件基类替换为所述覆盖率收集参数类。
2.如权利要求1所述覆盖率收集代码的重用方法,其特征在于,初始状态下,所述覆盖仓基类中不存在需要忽略的覆盖率收集。
3.如权利要求1所述覆盖率收集代码的重用方法,其特征在于,所述覆盖仓基类和所述覆盖仓子类中的函数供静态调用。
4.如权利要求2所述覆盖率收集代码的重用方法,其特征在于,所述覆盖仓基类和所述覆盖仓子类中的函数通过static关键字实现静态调用。
5.如权利要求1所述覆盖率收集代码的重用方法,其特征在于,所述需要忽略的不再支持的覆盖率代码派生于所述覆盖仓基类。
6.如权利要求1所述覆盖率收集代码的重用方法,其特征在于,采用factory机制进行代码重载。
7.一种具有处理器可执行的非易失的程序代码的计算机可读介质,其特征在于,所述程序代码使所述处理器运行所述权利要求1~6任一项所述覆盖率收集代码的重用方法。
CN202210085224.1A 2022-01-25 2022-01-25 覆盖率收集代码的重用方法、计算机可读介质 Pending CN114443027A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210085224.1A CN114443027A (zh) 2022-01-25 2022-01-25 覆盖率收集代码的重用方法、计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210085224.1A CN114443027A (zh) 2022-01-25 2022-01-25 覆盖率收集代码的重用方法、计算机可读介质

Publications (1)

Publication Number Publication Date
CN114443027A true CN114443027A (zh) 2022-05-06

Family

ID=81370397

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210085224.1A Pending CN114443027A (zh) 2022-01-25 2022-01-25 覆盖率收集代码的重用方法、计算机可读介质

Country Status (1)

Country Link
CN (1) CN114443027A (zh)

Similar Documents

Publication Publication Date Title
US5732263A (en) Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time
US7321988B2 (en) Identifying a code library from the subset of base pointers that caused a failure generating instruction to be executed
US6779187B1 (en) Method and system for dynamic interception of function calls to dynamic link libraries into a windowed operating system
US7487494B2 (en) Approach to monitor application states for self-managing systems
US5528753A (en) System and method for enabling stripped object software monitoring in a computer system
CN108319460B (zh) 应用程序安装包的生成方法、装置、电子设备及存储介质
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
JPH02272627A (ja) デイジタル・コンピユータ・システムとその手続呼び出し方法
US5960197A (en) Compiler dispatch function for object-oriented C
US7319948B2 (en) Blocking access to selected APIs
CN111068328A (zh) 游戏广告配置表格的生成方法、终端设备及介质
US6665671B2 (en) System and method for optimization of shared data
CN109766139B (zh) 配置文件的配置方法及装置
US6810519B1 (en) Achieving tight binding for dynamically loaded software modules via intermodule copying
US6519768B1 (en) Instruction translation method
US6735774B1 (en) Method and apparatus for system call management
JP4404993B2 (ja) 強化機能を備えるシステムおよび方法
CN111158667B (zh) 代码注入方法和装置、电子设备及存储介质
US6198813B1 (en) System and method for providing call processing services using call independent building blocks
CN114443027A (zh) 覆盖率收集代码的重用方法、计算机可读介质
CN111240728A (zh) 应用程序更新方法、装置、设备和存储介质
US9396239B2 (en) Compiling method, storage medium and compiling apparatus
CN113031964B (zh) 一种大数据应用的管理方法、装置、设备及存储介质
CN115757172A (zh) 测试执行方法、装置、存储介质及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Country or region after: China

Address after: 3 / F, 665 Zhangjiang Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant after: Yunhe Zhiwang (Shanghai) Technology Co.,Ltd.

Address before: 311200 room 107, building D, integrated circuit design Industrial Park, No. 858, Jianshe Second Road, Xiaoshan Economic and Technological Development Zone, Xiaoshan District, Hangzhou, Zhejiang Province

Applicant before: Hangzhou yunhezhi Network Technology Co.,Ltd.

Country or region before: China

CB02 Change of applicant information