CN117667748A - 一种基于复合框架的芯片系统级验证方法 - Google Patents
一种基于复合框架的芯片系统级验证方法 Download PDFInfo
- Publication number
- CN117667748A CN117667748A CN202410128869.8A CN202410128869A CN117667748A CN 117667748 A CN117667748 A CN 117667748A CN 202410128869 A CN202410128869 A CN 202410128869A CN 117667748 A CN117667748 A CN 117667748A
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 239000002131 composite material Substances 0.000 title claims abstract description 13
- 238000012795 verification Methods 0.000 title claims abstract description 12
- 230000006870 function Effects 0.000 claims abstract description 99
- 238000012360 testing method Methods 0.000 claims abstract description 85
- 238000004088 simulation Methods 0.000 claims abstract description 5
- 238000012545 processing Methods 0.000 claims description 27
- 238000010586 diagram Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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:定义一个事件记录器,初始化事件记录器;
S4:如图2所示,在事件记录器中添加一个事件,添加的一个事件对应函数指针数组中的一个测试函数,并将添加的事件的初始状态设置为未测试;
S5:对芯片进行测试,若芯片通过了S4中添加的事件对应的测试函数,则将添加的事件的状态修改为通过,若芯片未通过S4中添加的事件对应的测试函数,则将添加的事件的状态修改为失败;
S6:判断是否所有测试函数均进行了测试,是,则进入下一步骤,否,则返回S4;
S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集,然后传递到测试平台中进行打印,并通知测试平台结束仿真,之所以不直接在C代码中打印是因为,C中打印是一个系统调用,非常耗时。
由于一个事件对应一个测试函数,一个事件通过和失败的状态与一个测试函数通过测试和未通过测试的结果相对应,因此通过调用函数从事件记录器中收集每个事件的状态情况(通过或失败)可更直观的了解每个测试函数是否通过测试。
在本实施例中,本申请提出一种基于复合框架的芯片系统级验证方法,通过将多个用例结合在一起,节省启动时间,从而达到减少总体用例运行时间的效果,并且通过使用函数指针来减少代码的耦合,在需要增加和减少测试用例时不需要修改main函数代码,并且通过使用事件记录器来支持复杂场景,如重启和中断,以及记录各个用例的运行情况,为可能的调试提供足够的信息。
本申请将每个测试用例均写成一个函数然后依次调用,示例代码如下:
int main(){
<init>
case0();
case1();
case2();
case3();
return0;}
实施例2:
本实施例与实施例1的区别在于,事件记录器用于对事件进行编辑,包括初始化事件数量、批量设置事件的状态、增加事件数量、获取事件当前数量和状态。
在本实施例中,事件记录器具备以下功能:
①初始化事件数量为0;
②设置某事件的状态;
③批量设置某些事件的状态;
④增加1个某事件,并设置它的状态;
⑤获取目前事件数量及事件状态;
对于每一个测试用例,我们要在测试用例记录表中增加1个事件,设置状态为未测试,如果成功的话,修改它的状态为通过;如果失败,则设置状态为失败。
实施例3:
本实施例与实施例1的区别在于,如图3所示,S7中,芯片的重启次数通过以下步骤进行统计:
S7.11:设置重启次数统计函数并调用;
S7.12:通过重启次数统计函数获取目前芯片重启次数,初始次数为0,每调用一次测试函数则初始次数加1,获得统计结果;
S7.13:判断函数列表中的测试函数是否都已调用,若都已调用则将统计结果输出至事件记录器中,若存在未调用的函数,则返回S7.12。
在本实施例中,为了测试重启的场景,我们需要记录芯片的重启次数,要么芯片有相关的寄存器,要么代码里把重启次数记录在一个不会被CPU重启复位的外设寄存器中。能够记录重启次数后,我们就可以进行一次性初始化和事件记录器的初始化。对于每个测试用例测完都要重启才能进行下一项测试的场景,就可以通过初始次数来确定调用的函数指针列表中的函数序列号。
实施例4:
本实施例与实施例1的区别在于,如图4所示,芯片的中断次数的统计步骤如下:
S7.21:设置中断处理函数,中断处理函数内置有中断计数器,中断计数器的记录值初始为0;
S7.22:运行需要中断处理的测试函数时,设置中断;
S7.23:需要中断处理的测试函数触发中断;
S7.24:中断处理函数响应中断,并修改需要中断处理的测试函数在事件记录器中的相应的事件状态为完成,同时中断计数器的记录值加1;
S7.25:重复S7.22-S7.25,直至所有需要中断处理的测试函数完成中断处理后,将中断计数器的记录值作为芯片的中断次数输出至事件记录器中。
在本实施例中,中断处理函数伪代码如下:
中断处理函数(){
清除中断源
关闭中断使能
设置相应事件记录器状态为通过
中断计数器的记录值加1
其他操作
};
有些测试用例属于异常场景,出现异常反而用例通过。比如做内存的注错测试,注错以后,写入的数据和读出的数据不一致才是期望的结果。可以定义一个check函数,传入地址、数据和期望结果。另外很多异常场景会进入异常处理中断,可以使用上面中断场景方法处理。
实施例5:
本实施例与实施例3的区别在于,在函数指针数组中,重启和不需要重启的测试函数通过编译器的宏RESET_MODE来分割。
在本实施例中,通过宏RESET_MODE控制测试用例是否支持芯片重启功能的测试;
#ifdef RESET_MODE
<code>
#endif
在编译的时候如果定义了RESET_MODE,那么<code>就会被编译,如果没有定义,那么<code>就不会被编译。
Claims (5)
1.一种基于复合框架的芯片系统级验证方法,其特征在于,包括以下步骤:
S1:在测试平台中设置多个测试用例,并将每个测试用例写成一个测试函数;
S2:将所有测试函数放置在一个函数指针数组中;
S3:定义一个事件记录器;
S4:在事件记录器中添加一个事件,添加的一个事件对应函数指针数组中的一个测试函数,并将添加的事件的初始状态设置为未测试;
S5:对芯片进行测试,若芯片通过了S4中添加的事件对应的测试函数,则将添加的事件的状态修改为通过,若芯片未通过S4中添加的事件对应的测试函数,则将添加的事件的状态修改为失败;
S6:判断是否所有测试函数均进行了测试,是,则进入下一步骤,否,则返回S4;
S7:调用函数从事件记录器中将各个事件的状态情况、芯片的重启次数和中断次数进行收集,然后传递到测试平台中进行打印,并通知测试平台结束仿真。
2.根据权利要求1所述的一种基于复合框架的芯片系统级验证方法,其特征在于,事件记录器用于对事件进行编辑,包括初始化事件数量、批量设置事件的状态、增加事件数量、获取事件当前数量和状态。
3.根据权利要求1所述的一种基于复合框架的芯片系统级验证方法,其特征在于,S7中,芯片的重启次数通过以下步骤进行统计:
S7.11:设置重启次数统计函数并调用;
S7.12:通过重启次数统计函数获取目前芯片重启次数,初始次数为0,每调用一次测试函数则初始次数加1,获得统计结果;
S7.13:判断函数列表中的测试函数是否都已调用,若都已调用则将统计结果输出至事件记录器中,若存在未调用的函数,则返回S7.12。
4.根据权利要求1所述的一种基于复合框架的芯片系统级验证方法,其特征在于,芯片的中断次数的统计步骤如下:
S7.21:设置中断处理函数,中断处理函数内置有中断计数器,中断计数器的记录值初始为0;
S7.22:运行需要中断处理的测试函数时,设置中断;
S7.23:需要中断处理的测试函数触发中断;
S7.24:中断处理函数响应中断,并修改需要中断处理的测试函数在事件记录器中的相应的事件状态为完成,同时中断计数器的记录值加1;
S7.25:重复S7.22-S7.25,直至所有需要中断处理的测试函数完成中断处理后,将中断计数器的记录值作为芯片的中断次数输出至事件记录器中。
5.根据权利要求3所述的一种基于复合框架的芯片系统级验证方法,其特征在于,在函数指针数组中,重启和不需要重启的测试函数通过编译器的宏RESET_MODE来分割。
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 true CN117667748A (zh) | 2024-03-08 |
CN117667748B 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 (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188271A1 (en) * | 2004-01-13 | 2005-08-25 | West John R. | Method and system for rule-based generation of automation test scripts from abstract test case representation |
CN103544108A (zh) * | 2013-11-12 | 2014-01-29 | 福建联迪商用设备有限公司 | 嵌入式软件集成强度的测试系统及方法 |
CN104899132A (zh) * | 2014-03-05 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 应用软件测试方法、装置及系统 |
CN105630685A (zh) * | 2016-01-29 | 2016-06-01 | 广州酷狗计算机科技有限公司 | 程序接口测试方法及装置 |
US20170177455A1 (en) * | 2015-12-16 | 2017-06-22 | International Business Machines Corporation | Test case generation |
CN113326193A (zh) * | 2021-06-03 | 2021-08-31 | 深圳前海微众银行股份有限公司 | 一种小程序测试方法及装置 |
CN114185798A (zh) * | 2021-12-15 | 2022-03-15 | 平安证券股份有限公司 | 接口测试用例检测方法、装置、计算机设备和存储介质 |
WO2023051073A1 (zh) * | 2021-09-30 | 2023-04-06 | 中兴通讯股份有限公司 | 数据库测试方法、分布式数据库、存储介质 |
-
2024
- 2024-01-31 CN CN202410128869.8A patent/CN117667748B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188271A1 (en) * | 2004-01-13 | 2005-08-25 | West John R. | Method and system for rule-based generation of automation test scripts from abstract test case representation |
CN103544108A (zh) * | 2013-11-12 | 2014-01-29 | 福建联迪商用设备有限公司 | 嵌入式软件集成强度的测试系统及方法 |
CN104899132A (zh) * | 2014-03-05 | 2015-09-09 | 腾讯科技(深圳)有限公司 | 应用软件测试方法、装置及系统 |
US20170177455A1 (en) * | 2015-12-16 | 2017-06-22 | International Business Machines Corporation | Test case generation |
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)
Title |
---|
ARASH SABBAGHI 等: "A novel approach for combinatorial test case generation using multi objective optimization", 《2017 7TH INTERNATIONAL CONFERENCE ON COMPUTER AND KNOWLEDGE ENGINEERING》, 7 November 2017 (2017-11-07), pages 411 - 418 * |
付尧: "基于组合测试的嵌入式软件时序测试用例生成算法研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 1, 15 January 2021 (2021-01-15), pages 138 - 417 * |
周晔 等: "事件驱动软件的测试方法", 《>信息技术与标准化》, no. 10, 3 December 2007 (2007-12-03), pages 40 - 43 * |
王振 等: "一种嵌入式操作系统快速测试系统的设计与实现", 《工业控制计算机》, vol. 35, no. 3, 25 March 2022 (2022-03-25), pages 10 - 12 * |
Also Published As
Publication number | Publication date |
---|---|
CN117667748B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6182243B1 (en) | Selective data capture for software exception conditions | |
US7565579B2 (en) | Post (power on self test) debug system and method | |
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) | 一种基于复合框架的芯片系统级验证方法 | |
CN116401086A (zh) | 内存漏斗错误上报机制的测试方法、装置、设备及介质 | |
US7617417B2 (en) | Method for reading input/output port data | |
CN111125990A (zh) | 一种寄生参数结果正确性的判断方法 | |
CN115756935A (zh) | 嵌入式软件系统的异常故障定位方法、装置及设备 | |
CN114706702A (zh) | 一种基于fadec操作系统的故障快速定位方法 | |
JP2007328447A (ja) | ソフトウェア試験項目選択装置、ソフトウェア試験項目選択プログラム、ソフトウェア試験項目選択プログラムが格納された記憶媒体およびソフトウェア試験項目選択方法 | |
CN117076183B (zh) | 一种错误上报方法、片上系统、计算机设备及存储介质 | |
CN117076182B (zh) | 一种错误上报方法、片上系统、计算机设备及存储介质 | |
CN112346786B (zh) | 应用于开机阶段及开机后运行阶段的除错信息纪录方法 | |
CN101727369B (zh) | 自动验证环境变量设定的方法 | |
JPH05101697A (ja) | Lsi用故障診断回路 | |
CN116430835B (zh) | 一种Cortex-M微控制器的故障存储与分析方法 | |
JP2979553B2 (ja) | 障害診断方式 | |
JP2812037B2 (ja) | 業務処理プログラムの再起動制御方式 | |
CN115269446A (zh) | 一种隔离内存的方法和装置 | |
CN118051529A (zh) | 一种基于Shell语言的数据更新方法 | |
CN114694735A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |