CN117667748B - 一种基于复合框架的芯片系统级验证方法 - Google Patents

一种基于复合框架的芯片系统级验证方法 Download PDF

Info

Publication number
CN117667748B
CN117667748B CN202410128869.8A CN202410128869A CN117667748B CN 117667748 B CN117667748 B CN 117667748B CN 202410128869 A CN202410128869 A CN 202410128869A CN 117667748 B CN117667748 B CN 117667748B
Authority
CN
China
Prior art keywords
function
test
event
chip
interrupt
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.)
Active
Application number
CN202410128869.8A
Other languages
English (en)
Other versions
CN117667748A (zh
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.)
Chengdu Yichuang Microelectronics Co ltd
Original Assignee
Chengdu Yichuang Microelectronics Co 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 Chengdu Yichuang Microelectronics Co ltd filed Critical Chengdu Yichuang Microelectronics Co ltd
Priority to CN202410128869.8A priority Critical patent/CN117667748B/zh
Publication of CN117667748A publication Critical patent/CN117667748A/zh
Application granted granted Critical
Publication of CN117667748B publication Critical patent/CN117667748B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于复合框架的芯片系统级验证方法,包括以下步骤:S1:将测试用例写成测试函数;S2:将所有测试函数放置在函数指针数组中;S3:定义一个事件记录器;S4:在事件记录器中添加一个对应测试函数的事件,初始状态为未测试;S5:对芯片进行测试,通过测试函数则将对应事件的状态修改为通过,否则修改为失败;S6:重复S4‑S5直至所有测试函数均进行测试;S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集并打印,结束仿真,本申请将多个用例结合在一起,使用函数指针来减少代码的耦合,并且通过使用事件记录器来支持复杂场景,以及记录各个用例的运行情况,为可能的调试提供足够的信息。

Description

一种基于复合框架的芯片系统级验证方法
技术领域
本发明属于芯片验证技术领域,具体涉及一种基于复合框架的芯片系统级验证方法。
背景技术
在芯片的系统级测试时,通常会用C语言来写很多用例,因为C语言的用例都是在Core启动后进行测试的,通过用例的时间会比较长。
传统方案有很多不便之处:
1、用例之间需要完全独立;
2、添加和删除用例需要修改主体程序(修改上面的main函数);
3、无法测试复杂场景(比如reset相关场景,中断相关场景)。
发明内容
为解决上述背景技术中提出的问题,本发明提供一种基于复合框架的芯片系统级验证方法,以解决现有技术中用例之间需要完全独立、添加和删除用例需要修改主体程序和无法测试复杂场景的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于复合框架的芯片系统级验证方法,包括以下步骤:
S1:在测试平台中设置多个测试用例,并将每个测试用例写成一个测试函数;
S2:将所有测试函数放置在一个函数指针数组中,函数指针数组放置在头文件中;
S3:定义一个事件记录器,事件记录器用于对事件进行编辑,包括初始化事件数量、批量设置事件的状态、增加事件数量、获取事件当前数量和状态;
S4:在事件记录器中添加一个事件,添加的一个事件对应函数指针数组中的一个测试函数,并将添加的事件的初始状态设置为未测试;
S5:对芯片进行测试,若芯片通过了S4中添加的事件对应的测试函数,则将添加的事件的状态修改为通过,若芯片未通过S4中添加的事件对应的测试函数,则将添加的事件的状态修改为失败;
S6:判断是否所有测试函数均进行了测试,是,则进入下一步骤,否,则返回S4;
S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集,然后传递到测试平台中进行打印,并通知测试平台结束仿真。
优选地,S7中,芯片的重启次数通过以下步骤进行统计:
S7.11:设置重启次数统计函数并调用;
S7.12:通过重启次数统计函数获取目前芯片重启次数,初始次数为0,每调用一次测试函数则初始次数加1,获得统计结果;
S7.13:判断函数列表中的测试函数是否都已调用,若都已调用则将统计结果输出至事件记录器中,若存在未调用的函数,则返回S7.12。
优选地,芯片的中断次数的统计步骤如下:
S7.21:设置中断处理函数,中断处理函数内置有中断计数器,中断计数器的记录值初始为0;
S7.22:运行需要中断处理的测试函数时,设置中断;
S7.23:需要中断处理的测试函数触发中断;
S7.24:中断处理函数响应中断,并修改需要中断处理的测试函数在事件记录器中的相应的事件状态为完成,同时中断计数器的记录值加1;
S7.25:重复S7.22-S7.25,直至所有需要中断处理的测试函数完成中断处理后,将中断计数器的记录值作为芯片的中断次数输出至事件记录器中。
优选地,在函数指针数组中,重启和不需要重启的测试函数通过编译器的宏RESET_MODE来分割。
与现有技术相比,本发明的有益效果是:
本申请提出一种基于复合框架的芯片系统级验证方法,通过将多个用例结合在一起,节省启动时间,从而达到减少总体用例运行时间的效果,并且通过使用函数指针来减少代码的耦合,在需要增加和减少测试用例时不需要修改main函数代码,并且通过使用事件记录器来支持复杂场景,如重启和中断,以及记录各个用例的运行情况,为可能的调试提供足够的信息。
附图说明
图1为函数指针数组的具体结构示意图;
图2为事件记录器的工作流程示意图;
图3为芯片重启次数的统计流程示意图;
图4为芯片中断次数的统计流程示意图。
具体实施方式
为便于本领域技术人员理解本发明的技术内容,以下结合附图和具体的实例对本发明作进一步地详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不用于限定本发明。
实施例1:
如图1、图2所示,一种基于复合框架的芯片系统级验证方法,包括以下步骤:
S1:在测试平台中设置多个测试用例,并将每个测试用例写成一个测试函数,即图1中的测试点一、二、三……函数;
S2:将所有测试函数放置在一个函数指针数组中;
示例代码如下:
//功能测试用例函数指针数组
static pfunc (*plist[])={local_reset,global_reset,stat_func};
该代码放在头文件中,这样增加测试用例只需要修改头文件即可,主体程序文件不用修改;
S3:定义一个事件记录器,初始化事件记录器;
事件记录器用于对事件进行编辑,包括初始化事件数量、批量设置事件的状态、增加事件数量、获取事件当前数量和状态。
事件记录器具备以下功能:
①初始化事件数量为0;
②设置某事件的状态;
③批量设置某些事件的状态;
④增加1个某事件,并设置它的状态;
⑤获取目前事件数量及事件状态;
对于每一个测试用例,我们要在测试用例记录表中增加1个事件,设置状态为未测试,如果成功的话,修改它的状态为通过;如果失败,则设置状态为失败。
S4:如图2所示,在事件记录器中添加一个事件,添加的一个事件对应函数指针数组中的一个测试函数,并将添加的事件的初始状态设置为未测试;
S5:对芯片进行测试,若芯片通过了S4中添加的事件对应的测试函数,则将添加的事件的状态修改为通过,若芯片未通过S4中添加的事件对应的测试函数,则将添加的事件的状态修改为失败;
S6:判断是否所有测试函数均进行了测试,是,则进入下一步骤,否,则返回S4;
S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集,然后传递到测试平台中进行打印,并通知测试平台结束仿真,之所以不直接在C代码中打印是因为,C中打印是一个系统调用,非常耗时。
由于一个事件对应一个测试函数,一个事件通过和失败的状态与一个测试函数通过测试和未通过测试的结果相对应,因此通过调用函数从事件记录器中收集每个事件的状态情况(通过或失败)可更直观的了解每个测试函数是否通过测试。
在本实施例中,本申请提出一种基于复合框架的芯片系统级验证方法,通过将多个用例结合在一起,节省启动时间,从而达到减少总体用例运行时间的效果,并且通过使用函数指针来减少代码的耦合,在需要增加和减少测试用例时不需要修改main函数代码,并且通过使用事件记录器来支持复杂场景,如重启和中断,以及记录各个用例的运行情况,为可能的调试提供足够的信息。
本申请将每个测试用例均写成一个函数然后依次调用,示例代码如下:
int main(){
<init>
case0();
case1();
case2();
case3();
return0;
}
实施例2:
本实施例与实施例1的区别在于,如图3所示,S7中,芯片的重启次数通过以下步骤进行统计:
S7.11:设置重启次数统计函数并调用;
S7.12:通过重启次数统计函数获取目前芯片重启次数,初始次数为0,每调用一次测试函数则初始次数加1,获得统计结果;
S7.13:判断函数列表中的测试函数是否都已调用,若都已调用则将统计结果输出至事件记录器中,若存在未调用的函数,则返回S7.12。
在本实施例中,为了测试重启的场景,我们需要记录芯片的重启次数,要么芯片有相关的寄存器,要么代码里把重启次数记录在一个不会被CPU重启复位的外设寄存器中。能够记录重启次数后,我们就可以进行一次性初始化和事件记录器的初始化。对于每个测试用例测完都要重启才能进行下一项测试的场景,就可以通过初始次数来确定调用的函数指针列表中的函数序列号。
实施例3:
本实施例与实施例1的区别在于,如图4所示,芯片的中断次数的统计步骤如下:
S7.21:设置中断处理函数,中断处理函数内置有中断计数器,中断计数器的记录值初始为0;
S7.22:运行需要中断处理的测试函数时,设置中断;
S7.23:需要中断处理的测试函数触发中断;
S7.24:中断处理函数响应中断,并修改需要中断处理的测试函数在事件记录器中的相应的事件状态为完成,同时中断计数器的记录值加1;
S7.25:重复S7.22-S7.25,直至所有需要中断处理的测试函数完成中断处理后,将中断计数器的记录值作为芯片的中断次数输出至事件记录器中。
在本实施例中,中断处理函数伪代码如下:
中断处理函数(){
清除中断源
关闭中断使能
设置相应事件记录器状态为通过
中断计数器的记录值加1
其他操作
};
有些测试用例属于异常场景,出现异常反而用例通过。比如做内存的注错测试,注错以后,写入的数据和读出的数据不一致才是期望的结果。可以定义一个check函数,传入地址、数据和期望结果。另外很多异常场景会进入异常处理中断,可以使用上面中断场景方法处理。
实施例4:
本实施例与实施例2的区别在于,在函数指针数组中,重启和不需要重启的测试函数通过编译器的宏RESET_MODE来分割。
在本实施例中,通过宏RESET_MODE控制测试用例是否支持芯片重启功能的测试;
#ifdef RESET_MODE
<code>
#endif
在编译的时候如果定义了RESET_MODE,那么<code>就会被编译,如果没有定义,那么<code>就不会被编译。

Claims (4)

1.一种基于复合框架的芯片系统级验证方法,其特征在于,包括以下步骤:
S1:在测试平台中设置多个测试用例,并将每个测试用例写成一个测试函数;
S2:将所有测试函数放置在一个函数指针数组中,函数指针数组放置在头文件中;
S3:定义一个事件记录器,事件记录器用于对事件进行编辑,包括初始化事件数量、批量设置事件的状态、增加事件数量、获取事件当前数量和状态;
S4:在事件记录器中添加一个事件,添加的一个事件对应函数指针数组中的一个测试函数,并将添加的事件的初始状态设置为未测试;
S5:对芯片进行测试,若芯片通过了S4中添加的事件对应的测试函数,则将添加的事件的状态修改为通过,若芯片未通过S4中添加的事件对应的测试函数,则将添加的事件的状态修改为失败;
S6:判断是否所有测试函数均进行了测试,是,则进入下一步骤,否,则返回S4;
S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集,然后传递到测试平台中进行打印,并通知测试平台结束仿真。
2.根据权利要求1所述的一种基于复合框架的芯片系统级验证方法,其特征在于,S7中,芯片的重启次数通过以下步骤进行统计:
S7.11:设置重启次数统计函数并调用;
S7.12:通过重启次数统计函数获取目前芯片重启次数,初始次数为0,每调用一次测试函数则初始次数加1,获得统计结果;
S7.13:判断函数列表中的测试函数是否都已调用,若都已调用则将统计结果输出至事件记录器中,若存在未调用的函数,则返回S7.12。
3.根据权利要求1所述的一种基于复合框架的芯片系统级验证方法,其特征在于,芯片的中断次数的统计步骤如下:
S7.21:设置中断处理函数,中断处理函数内置有中断计数器,中断计数器的记录值初始为0;
S7.22:运行需要中断处理的测试函数时,设置中断;
S7.23:需要中断处理的测试函数触发中断;
S7.24:中断处理函数响应中断,并修改需要中断处理的测试函数在事件记录器中的相应的事件状态为完成,同时中断计数器的记录值加1;
S7.25:重复S7.22-S7.25,直至所有需要中断处理的测试函数完成中断处理后,将中断计数器的记录值作为芯片的中断次数输出至事件记录器中。
4.根据权利要求2所述的一种基于复合框架的芯片系统级验证方法,其特征在于,在函数指针数组中,重启和不需要重启的测试函数通过编译器的宏RESET_MODE来分割。
CN202410128869.8A 2024-01-31 2024-01-31 一种基于复合框架的芯片系统级验证方法 Active CN117667748B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410128869.8A CN117667748B (zh) 2024-01-31 2024-01-31 一种基于复合框架的芯片系统级验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410128869.8A CN117667748B (zh) 2024-01-31 2024-01-31 一种基于复合框架的芯片系统级验证方法

Publications (2)

Publication Number Publication Date
CN117667748A CN117667748A (zh) 2024-03-08
CN117667748B true CN117667748B (zh) 2024-04-09

Family

ID=90071593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410128869.8A Active CN117667748B (zh) 2024-01-31 2024-01-31 一种基于复合框架的芯片系统级验证方法

Country Status (1)

Country Link
CN (1) CN117667748B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544108A (zh) * 2013-11-12 2014-01-29 福建联迪商用设备有限公司 嵌入式软件集成强度的测试系统及方法
CN104899132A (zh) * 2014-03-05 2015-09-09 腾讯科技(深圳)有限公司 应用软件测试方法、装置及系统
CN105630685A (zh) * 2016-01-29 2016-06-01 广州酷狗计算机科技有限公司 程序接口测试方法及装置
CN113326193A (zh) * 2021-06-03 2021-08-31 深圳前海微众银行股份有限公司 一种小程序测试方法及装置
CN114185798A (zh) * 2021-12-15 2022-03-15 平安证券股份有限公司 接口测试用例检测方法、装置、计算机设备和存储介质
WO2023051073A1 (zh) * 2021-09-30 2023-04-06 中兴通讯股份有限公司 数据库测试方法、分布式数据库、存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478365B2 (en) * 2004-01-13 2009-01-13 Symphony Services Corp. Method and system for rule-based generation of automation test scripts from abstract test case representation
US10318667B2 (en) * 2015-12-16 2019-06-11 International Business Machines Corporation Test case generation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103544108A (zh) * 2013-11-12 2014-01-29 福建联迪商用设备有限公司 嵌入式软件集成强度的测试系统及方法
CN104899132A (zh) * 2014-03-05 2015-09-09 腾讯科技(深圳)有限公司 应用软件测试方法、装置及系统
CN105630685A (zh) * 2016-01-29 2016-06-01 广州酷狗计算机科技有限公司 程序接口测试方法及装置
CN113326193A (zh) * 2021-06-03 2021-08-31 深圳前海微众银行股份有限公司 一种小程序测试方法及装置
WO2023051073A1 (zh) * 2021-09-30 2023-04-06 中兴通讯股份有限公司 数据库测试方法、分布式数据库、存储介质
CN114185798A (zh) * 2021-12-15 2022-03-15 平安证券股份有限公司 接口测试用例检测方法、装置、计算机设备和存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A novel approach for combinatorial test case generation using multi objective optimization;Arash Sabbaghi 等;《2017 7th International Conference on Computer and Knowledge Engineering》;20171107;第411-418页 *
一种嵌入式操作系统快速测试系统的设计与实现;王振 等;《工业控制计算机》;20220325;第35卷(第3期);第10-12页 *
周晔 等.事件驱动软件的测试方法.《信息技术与标准化》.2007,(第10期),第40-43页. *
基于组合测试的嵌入式软件时序测试用例生成算法研究;付尧;《中国优秀硕士学位论文全文数据库信息科技辑》;20210115(第1期);第I138-417页 *

Also Published As

Publication number Publication date
CN117667748A (zh) 2024-03-08

Similar Documents

Publication Publication Date Title
US7565579B2 (en) Post (power on self test) debug system and method
US6182243B1 (en) Selective data capture for software exception conditions
US7320114B1 (en) Method and system for verification of soft error handling with application to CMT processors
US20080163003A1 (en) Method and System for Autonomic Target Testing
Taşar et al. A study of intermittent faults in digital computers
CN103559121A (zh) 基于日志注入的驱动配置调试方法
US20050204345A1 (en) Method and apparatus for monitoring computer software
JP3206641B2 (ja) マイコンシステムのデバッグ方法、デバッグ装置及びデバッグプログラムを記録した記録媒体
CN117667748B (zh) 一种基于复合框架的芯片系统级验证方法
CN108021495B (zh) 基于回放的代码调试方法
US7617417B2 (en) Method for reading input/output port data
CN116401086A (zh) 内存漏斗错误上报机制的测试方法、装置、设备及介质
CN111125990A (zh) 一种寄生参数结果正确性的判断方法
CN115756935A (zh) 嵌入式软件系统的异常故障定位方法、装置及设备
CN114706702A (zh) 一种基于fadec操作系统的故障快速定位方法
JP2001331342A (ja) 情報処理装置のエラー表示方法、及びそのプログラムを記録した記録媒体
JP2007328447A (ja) ソフトウェア試験項目選択装置、ソフトウェア試験項目選択プログラム、ソフトウェア試験項目選択プログラムが格納された記憶媒体およびソフトウェア試験項目選択方法
CN117076183B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
CN117076182B (zh) 一种错误上报方法、片上系统、计算机设备及存储介质
JPH05101697A (ja) Lsi用故障診断回路
CN101727369B (zh) 自动验证环境变量设定的方法
CN112346786B (zh) 应用于开机阶段及开机后运行阶段的除错信息纪录方法
JP2979553B2 (ja) 障害診断方式
JPS58201152A (ja) 情報自動収得方式
JP2812037B2 (ja) 業務処理プログラムの再起動制御方式

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
GR01 Patent grant
GR01 Patent grant