CN111104267B - 存储器的调试处理方法及其调试处理*** - Google Patents
存储器的调试处理方法及其调试处理*** Download PDFInfo
- Publication number
- CN111104267B CN111104267B CN201811260457.0A CN201811260457A CN111104267B CN 111104267 B CN111104267 B CN 111104267B CN 201811260457 A CN201811260457 A CN 201811260457A CN 111104267 B CN111104267 B CN 111104267B
- Authority
- CN
- China
- Prior art keywords
- instruction
- operation instruction
- test code
- module
- verified
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2273—Test methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及存储器测试技术领域,具体而言,涉及一种存储器的调试处理方法及其调试处理***。该存储器的调试处理方法包括:获取原始测试代码;通过原始测试代码对存储器进行测试;在测试过程中检测到存储器出现错误时,提取原始测试代码中的原生测试代码,原生测试代码仅包括操作指令,且操作指令包括设置指令、读指令、写指令中的一种或多种;确认原生测试代码中与错误出现的时间点相对应的操作指令,此操作指令为待验证操作指令;将待验证操作指令替换为通过测试的操作指令或空操作指令并再次对存储器进行测试,若存储器未出现错误,则待验证操作指令为错误指令。该技术方案能够快速定位错误代码,从而能够提高存储器的调试效率。
Description
技术领域
本申请涉及存储器测试技术领域,具体而言,涉及一种存储器的调试处理方法及其调试处理***。
背景技术
存储器的主要功能是存储程序和各种数据,并能在计算机的运行过程中高速、自动地完成程序或数据的存取。在存储器的使用之前,需要对其进行功能测试。
相关技术中,在测试过程中,测试代码数据庞大,出现的问题也是随机的,因此,不容易定位错误代码,从而降低了存储器的调试效率。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请的目的在于提供一种存储器的调试处理方法及其调试处理***,能够快速定位错误代码,从而能够提高存储器的调试效率。
本申请第一方面提供了一种存储器的调试处理方法,其包括:
获取原始测试代码;
通过所述原始测试代码对所述存储器进行测试;
在测试过程中检测到所述存储器出现错误时,提取所述原始测试代码中的原生测试代码,所述原生测试代码仅包括操作指令,所述操作指令包括设置指令、读指令、写指令中的一种或多种;
确认所述原生测试代码中与错误出现的时间点相对应的操作指令,所述操作指令为待验证操作指令;
将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,若所述存储器未出现错误,则所述待验证操作指令为错误指令。
在本申请的一个示例性实施例中,所述提取所述原始测试代码中的原生测试代码,包括:
检测所述原始测试代码的指令中是否存在空操作指令;
在检测到所述原始测试代码的指令中存在所述空操作指令时,判断所述空操作指令中是否存在读数据或写数据;
在判断出所述空操作指令中不存在所述读数据或所述写数据时,将所述原始测试代码中的所述空操作指令删除,以提取所述原生测试代码。
在本申请的一个示例性实施例中,在所述提取所述原始测试代码中的原生测试代码之前,还包括:
检测所述原始测试代码中是否包括循环语句;
在所述原始测试代码包括循环语句时,将所述循环语句中的指令展开;
对所述原始测试代码中的指令进行处理,使得所述原始测试代码中的各指令中的数据整理成一行。
在本申请的一个示例性实施例中,在提取所述原始测试代码中的原生测试代码之后,且在所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令之前,还包括:
检测所述原生测试代码中的操作指令是否包括读指令或写指令;
在检测到所述原生测试代码包括所述读指令或写指令时,将所述读指令或所述写指令的数据中的标识符号删除。
在本申请的一个示例性实施例中,在提取所述原始测试代码中的原生测试代码之后,且在所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令之前,还包括:
根据所述存储器的空闲状态将所述原生测试代码划分成多个子模块,各所述子模块包括操作指令。
在本申请的一个示例性实施例中,所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令,包括:
根据错误出现的时间点定位错误出现的位置;
基于所述错误出现的位置,查找到待验证子模块,所述待验证子模块为包括所述错误出现的位置的所述子模块;
确认所述待验证子模块中与所述错误出现的位置相对应的操作指令为所述待验证操作指令。
在本申请的一个示例性实施例中,在所述确认所述待验证子模块与所述错误出现的位置相对应的操作指令为所述待验证操作指令之后,且在所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试之前,包括:
在所述待验证操作指令为读指令时,确认与所述读指令相对应的写指令所在的子模块,所述子模块为相应子模块;
检测所述待验证子模块和所述相应子模块中是否包括设置指令;
在检测到所述待验证子模块和所述相应子模块中包括所述设置指令时,保留所述待验证子模块和所述相应子模块中的设置指令,并将所述待验证操作指令中其他读指令和所述相应子模块中与所述其他读指令相对应的其他写指令删除。
在本申请的一个示例性实施例中,在所述确认所述待验证子模块与所述错误出现的位置相对应的操作指令为所述待验证操作指令之后,且在所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试之前,包括:
在所述待验证操作指令为读指令时,确认与所述读指令相对应的写指令所在的子模块,所述子模块为相应子模块;
判断所述多个子模块中除所述待验证子模块和所述相应子模块之外的其他子模块中的操作指令中是否存在设置指令;
在所述其他子模块中存在所述设置指令时,将所述其他子模块中除所述设置指令之外的其他指令替换成空操作指令。
在本申请的一个示例性实施例中,所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,包括:
在所述待验证操作指令为读指令时,将所述读指令替换为通过测试的读指令并再次对所述存储器进行测试。
在本申请的一个示例性实施例中,所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,包括:
在所述待验证操作指令为设置指令时,判断所述设置指令是否为MRS模式寄存器指令;
在所述设置指令为所述MRS模式寄存器指令时,将所述MRS模式寄存器指令替换成通过测试的MRS模式寄存器指令并再次对所述存储器进行测试;
在所述设置指令为除所述MRS模式寄存器指令之外的其他设置指令时,将所述其他设置指令替换成空操作指令并再次对所述存储器进行测试。
在本申请的一个示例性实施例中,还包括:
在判断出所述空操作指令中存在所述读数据或所述写数据时,将所述读数据或所述写数据规整到所述原始测试代码中与所述空操作指令邻近的读指令或写指令中。
本申请第二方面提供了一种存储器的调试处理***,其包括:
获取模块,用于获取原始测试代码;
测试模块,用于通过所述原始测试代码对所述存储器进行测试;
提取模块,用于在测试过程中检测到所述存储器出现错误时,提取所述原始测试代码中的原生测试代码,所述原生测试代码仅包括操作指令,所述操作指令包括设置指令、读指令、写指令中的一种或多种;
确认模块,用于确认所述原生测试代码中与错误出现的时间点相对应的操作指令,所述操作指令为待验证操作指令;
替换模块,用于将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,若所述存储器未出现错误,则所述待验证操作指令为错误指令。
本申请提供的技术方案可以达到以下有益效果:
本申请所提供的存储器的调试处理方法及其调试处理***,在测试过程中检测到存储器出现错误时,提取原始测试代码中的原生测试代码,以实现对原始测试代码的简化,这样便于快速确认原生测试代码中与错误出现的时间点对应的操作指令,从而便于对该操作指令进行快速验证,该验证方法为:将与错误出现的时间点对应的操作指令替换为通过测试的操作指令或空操作指令并再次对存储器进行测试,若存储器未出现错误,则待验证操作指令为错误指令,这样设计提高了错误代码的定位效率,从而能够提高存储器的调试效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所述的存储器的调试处理方法的流程图;
图2为图1中步骤S30的流程图;
图3为本申请一实施例所述的原始测试代码的示意图;
图4为图3中所示的原始测试代码在完成步骤S13之后的示意图;
图5为本申请另一实施例所述的原始测试代码在完成步骤S13之后的示意图;
图6为图5中所示的原始测试代码在完成步骤S32之后的示意图;
图7为本申请一实施例所述的对各子模块编码后的记录图;
图8为本申请一实施例所述的原生测试代码的示意图;
图9为图8中所示的原始测试代码在完成步骤S43之后的示意图;
图10为本申请实施例所述的存储器的调试处理***的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本申请将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。图中相同的附图标记表示相同或类似的结构,因而将省略它们的详细描述。
虽然本说明书中使用相对性的用语,例如“上”“下”来描述图标的一个组件对于另一组件的相对关系,但是这些术语用于本说明书中仅出于方便,例如根据附图中所述的示例的方向。能理解的是,如果将图标的装置翻转使其上下颠倒,则所叙述在“上”的组件将会成为在“下”的组件。当某结构在其它结构“上”时,有可能是指某结构一体形成于其它结构上,或指某结构“直接”设置在其它结构上,或指某结构通过另一结构“间接”设置在其它结构上。
用语“一个”、“一”、“该”、“所述”用以表示存在一个或多个要素/组成部分/等;用语“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”和“第二”等仅作为标记使用,不是对其对象的数量限制。
存储器的主要功能是存储程序和各种数据,并能在计算机的运行过程中高速、自动地完成程序或数据的存取。在存储器的使用之前,需要对其进行功能测试。
相关技术中,在测试过程中,测试代码数据庞大,出现的问题也是随机的,因此,不容易定位错误代码,从而降低了存储器的调试效率。
为解决上述技术问题,本申请实施例提供了一种存储器的调试处理方法,该存储器可为动态随机存储器,如图1所示,该调试处理方法可包括:
步骤S10、获取原始测试代码;
步骤S20、通过原始测试代码对存储器进行测试;
步骤S30、在测试过程中检测到存储器出现错误时,提取原始测试代码中的原生测试代码,原生测试代码仅包括操作指令,操作指令包括设置指令、读指令、写指令中的一种或多种;
步骤S40、确认原生测试代码中与错误出现的时间点相对应的操作指令,操作指令为待验证操作指令;
步骤S50、将待验证操作指令替换为通过测试的操作指令或空操作指令并再次对存储器进行测试,若存储器未出现错误,则待验证操作指令为错误指令。
本实施例中,通过提取原始测试代码中的原生测试代码,可实现对原始测试代码的简化,这样便于快速确认原生测试代码中与错误出现的时间点对应的操作指令,从而便于对该操作指令进行快速验证,即:将与错误出现的时间点对应的操作指令替换为通过测试的操作指令或空操作指令并再次对存储器进行测试,若存储器未出现错误,则待验证操作指令为错误指令,这样设计提高了错误代码的定位效率,从而能够提高存储器的调试效率。
举例而言,如图2所示,提取原始测试代码中的原生测试代码,可具体包括:
步骤S302、检测原始测试代码的指令中是否存在空操作指令;
步骤S304、在检测到原始测试代码的指令中存在空操作指令时,判断空操作指令中是否存在读数据或写数据;
步骤S306、在判断出空操作指令中不存在读数据或写数据时,将原始测试代码中的空操作指令删除,以提取原生测试代码。
本实施例中,由于不包括读数据或写数据的空操作指令仅用于占用时序,对存储器的测试结果没有影响,因此,为了简化原始测试代码,便于测试人员能够快速找到错误代码,可将原始测试代码中不包括读数据或写数据的空操作指令删除,即:将原生测试代码从原始测试代码中提取出来,这样可实现对原始测试代码的简化,便于测试人员快速确认原生测试代码中与错误出现的时间点对应的操作指令,从而便于对该操作指令进行快速验证。
需要说明的是,前述提到的空操作指令可为DES指令或NOP指令。
其中,提取原始测试代码中的原生测试代码,还可包括:
步骤S308、在判断出空操作指令中存在读数据或写数据时,将读数据或写数据规整到原始测试代码中与空操作指令邻近的读指令或写指令中。这样设计可实现测试代码的规范化,便于测试人员能够快速找到错误代码。
在一实施例中,在步骤S30之前,存储器的测试方法还包括:
步骤S21、检测原始测试代码中是否包括循环语句。
步骤S22、在原始测试代码包括循环语句时,将循环语句中的指令展开;
步骤S23、对原始测试代码中的指令进行处理,使得原始测试代码中的各指令中的数据整理成一行。
举例而言,本实施例中的原始测试代码(如图3所示)包括循环语句,例如:for语句,通过将原始测试代码的for语句中的指令展开,该指令可为图3中所示的DES指令,然后将各指令中的数据整理成一行,如图4所示,每一个行指令(该指令可为图4中的ACT激活指令、DES指令、WRT写指令)表示一个时间点状态;这样使得原始测试代码更加规范化,从而使得后续提取的原生测试代码更加规范化,便于测试人员快速确认原生测试代码中与错误出现的时间点对应的操作指令,从而便于对该操作指令进行快速验证。需要说明的是,图3所示的内容仅仅用来表示原始测试代码中代码的展现形式,图3中所示各指令里的数据在本申请里并不具有实际意义,图4中所示的内容仅仅用来示意经步骤S23之后,原始测试代码中代码的展开形式,图4中所示各指令里的数据在本申请里并不具有实际意义。
其中,在步骤S30之后,且在步骤S40之前,存储器的调试处理方法还包括:
步骤S31、检测原生测试代码中的操作指令是否包括读指令或写指令;
步骤S32、在检测到原生测试代码包括读指令或写指令时,将读指令或写指令的数据中的标识符号删除。
举例而言,在将图5中的空操作指令(例如:DES指令)删除的同时,还可将图5中读指令(RED)中的标识符号删除,以形成图6所示的原生测试代码,此标识符号可为图5中的CMDADDR-C、PLH、CTRL等符号,在此不一一列举。
需要说明的是,图5所示的内容仅仅用来表示测试代码的展现形式,图5中所示各指令里的数据在本申请里并不具有实际意义,图6中所示的内容仅仅用来示意经步骤S32之后,测试代码的展开形式,图6中所示各指令里的数据在本申请里并不具有实际意义。因此,不需要关注图5和图6中各指令中数据所代表的实际意义,图5和图6中里面的数据可相匹配,也可不匹配,从图5到图6,仅仅是为了说明经步骤S32后测试代码的展现形式的变化。
在一实施例中,在步骤S30之后,且在步骤S40之前,存储器的调试处理方法还包括:
步骤S33,根据存储器的空闲状态将原生测试代码划分成多个子模块,各子模块包括操作指令。
举例而言,各子模式可包括设置指令模块、读指令模块及写指令模块,该设置指令模块中的操作指令可包括设置指令,而读指令模块中的操作指令可包括读指令和设置指令,写指令模块中的操作指令可包括写指令和设置指令。其中,读指令模块和写指令模块以返回IDLE空闲状态结束,具体地,该读指令模块和写指令模块中均包括ACT激活指令和PRE关闭指令。而在IDLE空闲状态期间的设置指令被划分到设置指令模块中。该设置指令可包括MRS模式寄存器指令、REF自动刷新指令、SET置位指令、ZQCL长校准指令、ZQCS短校准指令等
如图6所示,在将原生测试代码划分成多个子模块后,对各子模块依次进行编号,并记录各子模块中的起始行与终止行,其中,该原生测试代码反应原始模式测试代码,也就是说,各子模块中的起始行与终止行对应与原始测试代码中的位置相对应。
本实施例中,通过对各子模块进行编码,可在确认错误出现的时间点之后,定位错误出现的位置,然后快速找到对应编号的子模块,找到该子模块中与错误出现的位置相对应的操作指令。
需要说明的是,图7中最左列中的1、2、3……表示每个子模块的编号,第二列(isBlocked)表示一个编号对应一个子模块,第三列(Startline)表示各子模块的起始行,第四列(Endline)表示各子模块的终止行。
基于上述内容,步骤S40可包括:
步骤S402,根据错误出现的时间点定位错误出现的位置;
步骤S404,基于错误出现的位置,查找到待验证子模块,待验证子模块为包括错误出现的位置的子模块;
步骤S406,确认待验证子模块中与错误出现的位置相对应的操作指令为待验证操作指令。
在一实施例中,在步骤S406之后,且在步骤S50之前,包括:
步骤S41、在待验证操作指令为读指令时,确认与读指令相对应的写指令所在的子模块,子模块为相应子模块;
步骤S42、检测待验证子模块和相应子模块中是否包括设置指令;
步骤S43、在检测到待验证子模块和相应子模块中包括设置指令时,保留待验证子模块和相应子模块中的设置指令,并将待验证操作指令中其他读指令和相应子模块中与其他读指令相对应的其他写指令删除。
本实施例中,通过将待验证操作指令中其他读指令(RED)和相应子模块中与其他读指令相对应的其他写指令(WRT)删除,实现了对原生测试代码稀疏化的过程,即:简化了测试代码,这样便于测试人员快速确认错误代码,提高了错误代码的定位效率,从而能够提高存储器的调试效率。此外,由于在存储器的IDLE空闲状态期间,在对待验证子模块和相应子模块稀疏化的过程中,为了提高错误代码定位准确度,因此可将待验证子模块和相应子模块中的设置指令保留。
举例而言,在完成上述步骤S43之后,可将图8所示的原生测试代码图稀疏成如图9所示的原生测试代码图。需要说明的是,图8所示的内容仅仅用来表示测试代码的展现形式,图8中所示各指令里的数据在本申请里并不具有实际意义,图9中所示的内容仅仅用来示意经步骤S43之后,测试代码的展开形式,图9中所示各指令里的数据在本申请里并不具有实际意义。从图8到图9,仅仅是为了说明经步骤S43后测试代码的展现形式的变化。
在一实施例中,在步骤S406之后,且在步骤S50之前,包括:
步骤S44、在待验证操作指令为读指令时,确认与读指令相对应的写指令所在的子模块,子模块为相应子模块;
步骤S45、判断多个子模块中除待验证子模块和相应子模块之外的其他子模块中的操作指令中是否存在设置指令;
步骤S46、在其他子模块中存在设置指令时,将其他子模块中除设置指令之外的其他指令替换成空操作指令。
本实施例中,通过将其他子模块中除设置指令之外的其他指令替换成空操作指令,然后可再将这些空操作指令删除,实现了对原生测试代码稀疏化的过程,即:简化了测试代码,这样便于测试人员快速确认错误代码,提高了错误代码的定位效率,从而能够提高存储器的调试效率。此外,由于在存储器的IDLE空闲状态期间,因此在对其他子模块稀疏化的过程中,为了提高错误代码定位准确度,可将其他子模块的设置指令保留。
在一实施例中,步骤S50具体可包括:
在待验证操作指令为读指令时,将读指令替换为通过测试的读指令并再次对存储器进行测试。若存储器未出现错误,则可以确认该读指令为错误指令,然后可对存储器进行修复。
在另一实施例中,步骤S50具体可包括:
步骤S502,在待验证操作指令为设置指令时,判断设置指令是否为MRS模式寄存器指令;
步骤S504,在设置指令为MRS模式寄存器指令时,将MRS模式寄存器指令替换成通过测试的MRS模式寄存器指令并再次对存储器进行测试;若存储器未出现错误,则可以确认MRS模式寄存器指令为错误指令,然后可对存储器进行修复。需要说明的是,在对MRS模式寄存器指令进行替换时,需保留包括此MRS模式寄存器指令的子模块中的读指令和写指令;
步骤S506,在设置指令为除MRS模式寄存器指令之外的其他设置指令时,将其他设置指令替换成空操作指令并再次对存储器进行测试。若存储器未出现错误,则可以确认其他设置指令为错误指令,然后可对存储器进行修复。需要说明的是,该其他错误指令可为REF自动刷新指令、SET置位指令、ZQCL长校准指令、ZQCS短校准指令等。
需要说明的是,上述提到的替换指令、删除指令、删除字符等操作只是为了使显示的测试代码更加简化,以便于测试人员能够快速找到错误指令,并不会对测试过程有影响。
本申请中还提供了一种存储器的调试处理***,该调试处理***与上述任一实施例的调试处理方法相对应,因此,该调试处理***所具有的技术效果与前述调试处理方法的技术效果相同,下面不在详细描述。
其中,如图10所示,该调试处理***100可包括:
获取模块101,用于获取原始测试代码;
测试模块102,用于通过原始测试代码对存储器进行测试;
提取模块103,用于在测试过程中检测到存储器出现错误时,提取原始测试代码中的原生测试代码,原生测试代码仅包括操作指令,操作指令包括设置指令、读指令、写指令中的一种或多种;
确认模块104,用于确认原生测试代码中与错误出现的时间点相对应的操作指令,操作指令为待验证操作指令;
替换模块105,用于将待验证操作指令替换为通过测试的操作指令或空操作指令并再次对存储器进行测试,若存储器未出现错误,则待验证操作指令为错误指令。
具体地,提取模块103可包括:
第一检测单元,用于检测原始测试代码的指令中是否存在空操作指令;
第一判断单元,用于在检测到原始测试代码的指令中存在空操作指令时,判断空操作指令中是否存在读数据或写数据;
第一删除单元,用于在判断出空操作指令中不存在读数据或写数据时,将原始测试代码中的空操作指令删除,以提取原生测试代码。
一可选地实施例中,该调试处理***100还可包括:
第二检测单元,用于检测原始测试代码中是否包括循环语句;
展开单元,用于在原始测试代码包括循环语句时,将循环语句中的指令展开;
第一处理单元,用于对原始测试代码中的指令进行处理,使得原始测试代码中的各指令中的数据整理成一行。
一可选地实施例中,该调试处理***100还可包括:
第三检测单元,用于检测原生测试代码中的操作指令是否包括读指令或写指令;
第二删除单元,用于在检测到原生测试代码包括读指令或写指令时,将读指令或写指令的数据中的标识符号删除。
可选地,该调试处理***还可包括:
划分单元,用于根据存储器的空闲状态将原生测试代码划分成多个子模块,各子模块包括操作指令。
一可选地实施例中,该确认模块104可包括:
定位单元,用于根据错误出现的时间点定位错误出现的位置;
查找单元,用于基于错误出现的位置,查找到待验证子模块,待验证子模块为包括错误出现的位置的子模块;
第一确认单元,用于确认待验证子模块中与错误出现的位置相对应的操作指令为待验证操作指令。
一可选地实施例中,该调试处理***100还可包括:
第二确认单元,用于在待验证操作指令为读指令时,确认与读指令相对应的写指令所在的子模块,子模块为相应子模块;
第四检测单元,用于检测待验证子模块和相应子模块中是否包括设置指令;
第二处理单元,用于在检测到待验证子模块和相应子模块中包括设置指令时,保留待验证子模块和相应子模块中的设置指令,并将待验证操作指令中其他读指令和相应子模块中与其他读指令相对应的其他写指令删除。
一可选地实施例中,该调试处理***100还可包括:
第二确认单元,用于在待验证操作指令为读指令时,确认与读指令相对应的写指令所在的子模块,子模块为相应子模块;
第二判断单元,用于判断多个子模块中除待验证子模块和相应子模块之外的其他子模块中的操作指令中是否存在设置指令;
第一替换单元,在其他子模块中存在设置指令时,将其他子模块中除设置指令之外的其他指令替换成空操作指令。
一可选地实施例中,替换模块105包括:
第二替换单元,用于在待验证操作指令为读指令时,将读指令替换为通过测试的读指令并再次对存储器进行测试。
另一可选地实施例中,替换模块105包括:
第三判断单元,用于在待验证操作指令为设置指令时,判断设置指令是否为MRS模式寄存器指令;
第三替换单元,用于在设置指令为MRS模式寄存器指令时,将MRS模式寄存器指令替换成通过测试的MRS模式寄存器指令并再次对存储器进行测试;
第三替换单元还用于在设置指令为除MRS模式寄存器指令之外的其他设置指令时,将其他设置指令替换成空操作指令并再次对存储器进行测试。
可选地,该调试处理***100还可包括:
规整单元,用于在判断出空操作指令中存在读数据或写数据时,将读数据或写数据规整到原始测试代码中与空操作指令邻近的读指令或写指令中。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由所附的权利要求指出。
Claims (11)
1.一种存储器的调试处理方法,其特征在于,包括:
获取原始测试代码;
通过所述原始测试代码对所述存储器进行测试;
在测试过程中检测到所述存储器出现错误时,提取所述原始测试代码中的原生测试代码,所述原生测试代码仅包括操作指令,所述操作指令包括设置指令、读指令、写指令中的一种或多种;
确认所述原生测试代码中与错误出现的时间点相对应的操作指令,所述操作指令为待验证操作指令;
将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,若所述存储器未出现错误,则所述待验证操作指令为错误指令;
其中,所述提取所述原始测试代码中的原生测试代码,包括:
检测所述原始测试代码的指令中是否存在空操作指令;
在检测到所述原始测试代码的指令中存在所述空操作指令时,判断所述空操作指令中是否存在读数据或写数据;
在判断出所述空操作指令中不存在所述读数据或所述写数据时,将所述原始测试代码中的所述空操作指令删除,以提取所述原生测试代码。
2.根据权利要求1所述的调试处理方法,其特征在于,在所述提取所述原始测试代码中的原生测试代码之前,还包括:
检测所述原始测试代码中是否包括循环语句;
在所述原始测试代码包括循环语句时,将所述循环语句中的指令展开;
对所述原始测试代码中的指令进行处理,使得所述原始测试代码中的各指令中的数据整理成一行。
3.根据权利要求1所述的调试处理方法,其特征在于,在提取所述原始测试代码中的原生测试代码之后,且在所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令之前,还包括:
检测所述原生测试代码中的操作指令是否包括读指令或写指令;
在检测到所述原生测试代码包括所述读指令或写指令时,将所述读指令或所述写指令的数据中的标识符号删除。
4.根据权利要求1所述的调试处理方法,其特征在于,在提取所述原始测试代码中的原生测试代码之后,且在所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令之前,还包括:
根据所述存储器的空闲状态将所述原生测试代码划分成多个子模块,各所述子模块包括操作指令。
5.根据权利要求4所述的调试处理方法,其特征在于,所述确认所述原生测试代码中与错误出现的时间点相对应的操作指令,包括:
根据错误出现的时间点定位错误出现的位置;
基于所述错误出现的位置,查找到待验证子模块,所述待验证子模块为包括所述错误出现的位置的所述子模块;
确认所述待验证子模块中与所述错误出现的位置相对应的操作指令为所述待验证操作指令。
6.根据权利要求5所述的调试处理方法,其特征在于,在所述确认所述待验证子模块与所述错误出现的位置相对应的操作指令为所述待验证操作指令之后,且在所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试之前,包括:
在所述待验证操作指令为读指令时,确认与所述读指令相对应的写指令所在的子模块,所述子模块为相应子模块;
检测所述待验证子模块和所述相应子模块中是否包括设置指令;
在检测到所述待验证子模块和所述相应子模块中包括所述设置指令时,保留所述待验证子模块和所述相应子模块中的设置指令,并将所述待验证操作指令中其他读指令和所述相应子模块中与所述其他读指令相对应的其他写指令删除。
7.根据权利要求5所述的调试处理方法,其特征在于,在所述确认所述待验证子模块与所述错误出现的位置相对应的操作指令为所述待验证操作指令之后,且在所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试之前,包括:
在所述待验证操作指令为读指令时,确认与所述读指令相对应的写指令所在的子模块,所述子模块为相应子模块;
判断所述多个子模块中除所述待验证子模块和所述相应子模块之外的其他子模块中的操作指令中是否存在设置指令;
在所述其他子模块中存在所述设置指令时,将所述其他子模块中除所述设置指令之外的其他指令替换成空操作指令。
8.根据权利要求5所述的调试处理方法,其特征在于,所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,包括:
在所述待验证操作指令为读指令时,将所述读指令替换为通过测试的读指令并再次对所述存储器进行测试。
9.根据权利要求5所述的调试处理方法,其特征在于,所述将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,包括:
在所述待验证操作指令为设置指令时,判断所述设置指令是否为MRS模式寄存器指令;
在所述设置指令为所述MRS模式寄存器指令时,将所述MRS模式寄存器指令替换成通过测试的MRS模式寄存器指令并再次对所述存储器进行测试;
在所述设置指令为除所述MRS模式寄存器指令之外的其他设置指令时,将所述其他设置指令替换成空操作指令并再次对所述存储器进行测试。
10.根据权利要求1所述的调试处理方法,其特征在于,还包括:
在判断出所述空操作指令中存在所述读数据或所述写数据时,将所述读数据或所述写数据规整到所述原始测试代码中与所述空操作指令邻近的读指令或写指令中。
11.一种存储器的调试处理***,其特征在于,包括:
获取模块,用于获取原始测试代码;
测试模块,用于通过所述原始测试代码对所述存储器进行测试;
提取模块,用于在测试过程中检测到所述存储器出现错误时,提取所述原始测试代码中的原生测试代码,所述原生测试代码仅包括操作指令,所述操作指令包括设置指令、读指令、写指令中的一种或多种;
确认模块,用于确认所述原生测试代码中与错误出现的时间点相对应的操作指令,所述操作指令为待验证操作指令;
替换模块,用于将所述待验证操作指令替换为通过测试的操作指令或空操作指令并再次对所述存储器进行测试,若所述存储器未出现错误,则所述待验证操作指令为错误指令;
所述提取模块包括:
第一检测单元,用于检测原始测试代码的指令中是否存在空操作指令;
第一判断单元,用于在检测到原始测试代码的指令中存在空操作指令时,判断空操作指令中是否存在读数据或写数据;
第一删除单元,用于在判断出空操作指令中不存在读数据或写数据时,将原始测试代码中的空操作指令删除,以提取原生测试代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260457.0A CN111104267B (zh) | 2018-10-26 | 2018-10-26 | 存储器的调试处理方法及其调试处理*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811260457.0A CN111104267B (zh) | 2018-10-26 | 2018-10-26 | 存储器的调试处理方法及其调试处理*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104267A CN111104267A (zh) | 2020-05-05 |
CN111104267B true CN111104267B (zh) | 2022-05-13 |
Family
ID=70419087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811260457.0A Active CN111104267B (zh) | 2018-10-26 | 2018-10-26 | 存储器的调试处理方法及其调试处理*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104267B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111629205B (zh) * | 2020-07-28 | 2020-11-20 | 天津美腾科技股份有限公司 | 一种应用于工业相机模拟测试的***和方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808397A (zh) * | 2005-01-21 | 2006-07-26 | 明基电通股份有限公司 | 电子装置程序的测试方法 |
CN102446134A (zh) * | 2010-10-13 | 2012-05-09 | 无锡江南计算技术研究所 | 一种实现编译器错误的自动定位方法和装置 |
WO2012069872A1 (en) * | 2010-11-22 | 2012-05-31 | Freescale Semiconductor, Inc. | Method for setting breakpoints, and an integrated circuit and debug tool therefor |
CN103744782A (zh) * | 2014-01-02 | 2014-04-23 | 北京百度网讯科技有限公司 | 程序执行序列的获取方法及装置 |
CN106708669A (zh) * | 2015-11-13 | 2017-05-24 | 中兴通讯股份有限公司 | 设备测试方法、装置及*** |
CN106951372A (zh) * | 2017-04-05 | 2017-07-14 | 西安邮电大学 | 一种基于变量切片和关联规则的软件错误定位方法 |
CN107239374A (zh) * | 2017-06-06 | 2017-10-10 | 烽火通信科技股份有限公司 | 基于fpga实现ddr接口自动化读写测试的装置及方法 |
CN107346282A (zh) * | 2016-05-04 | 2017-11-14 | 世意法(北京)半导体研发有限责任公司 | 用于微处理器的调试支持单元 |
CN108491322A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130132063A1 (en) * | 2011-11-18 | 2013-05-23 | Michael J. Rieschl | Systems and methods for debugging just-in-time static translation in an emulated system |
-
2018
- 2018-10-26 CN CN201811260457.0A patent/CN111104267B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808397A (zh) * | 2005-01-21 | 2006-07-26 | 明基电通股份有限公司 | 电子装置程序的测试方法 |
CN102446134A (zh) * | 2010-10-13 | 2012-05-09 | 无锡江南计算技术研究所 | 一种实现编译器错误的自动定位方法和装置 |
WO2012069872A1 (en) * | 2010-11-22 | 2012-05-31 | Freescale Semiconductor, Inc. | Method for setting breakpoints, and an integrated circuit and debug tool therefor |
CN103744782A (zh) * | 2014-01-02 | 2014-04-23 | 北京百度网讯科技有限公司 | 程序执行序列的获取方法及装置 |
CN106708669A (zh) * | 2015-11-13 | 2017-05-24 | 中兴通讯股份有限公司 | 设备测试方法、装置及*** |
CN107346282A (zh) * | 2016-05-04 | 2017-11-14 | 世意法(北京)半导体研发有限责任公司 | 用于微处理器的调试支持单元 |
CN106951372A (zh) * | 2017-04-05 | 2017-07-14 | 西安邮电大学 | 一种基于变量切片和关联规则的软件错误定位方法 |
CN107239374A (zh) * | 2017-06-06 | 2017-10-10 | 烽火通信科技股份有限公司 | 基于fpga实现ddr接口自动化读写测试的装置及方法 |
CN108491322A (zh) * | 2018-03-06 | 2018-09-04 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及存储介质 |
Non-Patent Citations (2)
Title |
---|
Compiler optimizations for code density of variable length instructions;Heikki Kultala等;《IEEE》;20141218;全文 * |
基于TCL语言和边界扫描技术的存储器测试脚本设计;陆颖莹等;《桂林电子科技大学学报》;20120831;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111104267A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086203B (zh) | 页面的检测方法和装置 | |
CN109871326B (zh) | 一种脚本录制的方法和装置 | |
US10204698B2 (en) | Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic | |
US7565579B2 (en) | Post (power on self test) debug system and method | |
US8201037B2 (en) | Semiconductor integrated circuit and method for controlling semiconductor integrated circuit | |
CN104978270A (zh) | 一种自动化地软件测试方法和装置 | |
CN106776319B (zh) | 自动测试方法及装置 | |
CN112181800A (zh) | 车辆功能测试装置及其控制方法 | |
CN101236790A (zh) | 集成有只读存储器的芯片及内建自测试***及方法 | |
CN111104267B (zh) | 存储器的调试处理方法及其调试处理*** | |
CN112199268A (zh) | 一种软件兼容性测试方法及电子设备 | |
TW201820148A (zh) | 記憶體位址保護電路與方法 | |
CN107704351B (zh) | 一种芯片的验证方法和装置 | |
US20140281719A1 (en) | Explaining excluding a test from a test suite | |
KR20140029735A (ko) | E-Fuse를 이용하여 불량을 구제하는 리페어 시스템 및 그의 제어 방법 | |
CN112446442A (zh) | 一种样本分析***、信息匹配方法及计算机存储介质 | |
CN111291531A (zh) | 集成电路的电学相关的设计规则检查方法及装置 | |
CN112083891B (zh) | 一种存储器中数据块的检测方法及相关设备 | |
JP5670156B2 (ja) | テスト結果照合システム、方法、及びプログラム | |
CN113030692B (zh) | 测试***和测试方法 | |
CN106855894B (zh) | 一种获取存储器中存储单元的位置信息的方法及装置 | |
CN108231134B (zh) | Ram良率补救方法及装置 | |
KR20170060297A (ko) | 반도체 장치 및 그를 포함하는 반도체 시스템 | |
US20050159925A1 (en) | Cache testing for a processor design | |
CN101458968B (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 |