CN112988491A - 一种内存测试方法、装置及内存控制器 - Google Patents
一种内存测试方法、装置及内存控制器 Download PDFInfo
- Publication number
- CN112988491A CN112988491A CN202110548898.6A CN202110548898A CN112988491A CN 112988491 A CN112988491 A CN 112988491A CN 202110548898 A CN202110548898 A CN 202110548898A CN 112988491 A CN112988491 A CN 112988491A
- Authority
- CN
- China
- Prior art keywords
- data
- test data
- test
- memory
- row
- 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
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
- G06F11/221—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 to test buses, lines or interfaces, e.g. stuck-at or open line faults
-
- 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
- G06F11/2236—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 to test CPU or processors
-
- 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
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)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本申请实施例提供了一种内存测试方法、装置及内存控制器。方案如下:接收来自BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;将第一测试数据写入存储空间标识对应的第一存储空间;从第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至BIST模块,以使BIST模块比较第一测试数据和读取到的第一实际数据,得到第一存储空间的测试结果。应用本申请实施例提供的技术方案,在降低了内存测试成本的同时,提高了内存测试的效率,以及提高了内存测试的普及性。
Description
技术领域
本申请涉及自动化测试领域,特别是涉及一种内存测试方法、装置及内存控制器。
背景技术
内存是计算机系统中非常重要的硬件部件,常被用于存放指令和数据。在现代计算机系统中几乎所有的应用程序都是运行在内存中的。鉴于内存在整个计算机系统中的重要性,需要对内存进行测试,从而确保内存的存取访问和数据存储等功能的正常使用。
目前,内存测试的方式可以分别两种:一种,利用软件进行内存测试;另一种,利用自动化测试设备(Automatic Test Equipment,ATE)进行内存测试。
对于上述利用软件进行内存测试的方式,由于软件运行在中央处理器(CentralProcessing Unit,CPU)上,CPU与内存间的访问路径较长,并且每一次访问的数据量也相对较少,这使得内存测试所需的时长较长,内存测试的准确性也无法得到保证。
对于上述利用ATE的内存测试的方式,由于ATE是ATE供应商根据用户的测试需求定制开发的,其成本较高,因此,利用ATE进行内存测试的方式不适用于单个用户的计算机设备的内存测试。
发明内容
本申请实施例的目的在于提供一种内存测试方法、装置及内存控制器,以在降低内存测试成本的同时,提高内存测试的效率,以及提高内存测试的普及性。具体技术方案如下:
第一方面,本申请实施例提供了一种内存测试方法,应用于内存控制器,所述内存控制器上设置了BIST(Built-in Self Test,内建自测试)模块,或所述内存控制器的上一级硬件模块上设置了BIST模块,所述方法包括:
接收来自所述BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;
将所述第一测试数据写入所述存储空间标识对应的第一存储空间;
从所述第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至所述BIST模块,以使所述BIST模块比较所述第一测试数据和读取到的第一实际数据,得到所述第一存储空间的测试结果。
可选的,所述第一测试数据的数量为两个,两个第一测试数据中相同位置处的比特值相反;
所述第一测试数据和所述存储空间标识为中央处理单元(Central ProcessingUnit,CPU)写入BIST模块的。
可选的,所述内存包括N条数据总线;所述方法还包括:
接收CPU下发的至少两个第二测试数据,所述至少两个第二测试数据中同一数据总线传输的比特值有两种;
通过所述N条数据总线,向所述内存中预先设定的第二存储空间写入每个第二测试数据;
通过所述N条数据总线,从所述第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至所述CPU,以使所述CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
可选的,所述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,所述第二比特值在N个第二测试数据中的位置不同。
可选的,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述方法还包括:
接收CPU下发的第三测试数据和第四测试数据,所述第三测试数据和第四测试数据的长度与所述内存库中每行存储单元的长度相同,所述第三测试数据和第四测试数据中相同位置处的比特值相反;
通过所述地址总线,向所述内存库的第1行存储单元写入所述第三测试数据;
通过所述地址总线,向所述内存库的第m行存储单元写入所述第四测试数据,所述m大于1,且所述m小于等于M;
通过所述地址总线,从所述第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至所述CPU,以使所述CPU比较所述第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果,所述第三实际数据为所述第三测试数据或所述第四测试数据。
可选的,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述方法还包括:
接收CPU下发的第五测试数据和第六测试数据,所述第五测试数据和第六测试数据的长度与所述内存库中每行存储单元的长度相同,所述第五测试数据和第六测试数据中相同位置处的比特值相反;
通过所述地址总线,向所述内存库第2至M行存储单元写入所述第五测试数据;
通过所述地址总线,向所述内存库第1行存储单元写入所述第六测试数据;
通过所述地址总线,从所述第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至所述CPU,以使所述CPU比较所述第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果,所述第四实际数据为所述第五测试数据或所述第六测试数据。
可选的,所述方法还包括:
在将读取到的第一实际数据发送至所述BIST模块之后,接收来自所述BIST模块的初始化测试数据,所述初始化测试数据的比特值均为0;
将所述初始化测试数据写入所述第一存储空间。
第二方面,本申请实施例提供了一种内存测试装置,应用于内存控制器,所述内存控制器上设置了BIST模块,或所述内存控制器的上一级硬件模块上设置了BIST模块,所述装置包括:
第一接收模块,用于接收来自所述BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;
第一存储模块,用于将所述第一测试数据写入所述存储空间标识对应的第一存储空间;
第一读取模块,用于从所述第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至所述BIST模块,以使所述BIST模块比较所述第一测试数据和读取到的第一实际数据,得到所述第一存储空间的测试结果。
可选的,所述第一测试数据的数量为两个,两个第一测试数据中相同位置处的比特值相反;
所述第一测试数据和所述存储空间标识为CPU写入BIST模块的。
可选的,所述内存包括N条数据总线;所述装置还包括:
第二接收模块,用于接收CPU下发的至少两个第二测试数据,所述至少两个第二测试数据中同一数据总线传输的比特值有两种;
第二存储模块,用于通过所述N条数据总线,向所述内存中预先设定的第二存储空间写入每个第二测试数据;
第二读取模型,用于通过所述N条数据总线,从所述第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至所述CPU,以使所述CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
可选的,所述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,所述第二比特值在N个第二测试数据中的位置不同。
可选的,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述装置还包括:
第三接收模块,用于接收CPU下发的第三测试数据和第四测试数据,所述第三测试数据和第四测试数据的长度与所述内存库中每行存储单元的长度相同,所述第三测试数据和第四测试数据中相同位置处的比特值相反;
第三存储模块,用于通过所述地址总线,向所述内存库的第1行存储单元写入所述第三测试数据;
第四存储模块,用于通过所述地址总线,向所述内存库的第m行存储单元写入所述第四测试数据,所述m大于1,且所述m小于等于M;
第三读取模块,用于通过所述地址总线,从所述第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至所述CPU,以使所述CPU比较所述第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果,所述第三实际数据为所述第三测试数据或所述第四测试数据。
可选的,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述装置还包括:
第四接收模块,用于接收CPU下发的第五测试数据和第六测试数据,所述第五测试数据和第六测试数据的长度与所述内存库中每行存储单元的长度相同,所述第五测试数据和第六测试数据中相同位置处的比特值相反;
第五存储模块,用于通过所述地址总线,向所述内存库第2至M行存储单元写入所述第五测试数据;
第六存储模块,用于通过所述地址总线,向所述内存库第1行存储单元写入所述第六测试数据;
第四读取模块,用于通过所述地址总线,从所述第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至所述CPU,以使所述CPU比较所述第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果,所述第四实际数据为所述第五测试数据或第六测试数据。
可选的,所述装置还包括:
第五接收模块,用于在将读取到的第一实际数据发送至所述BIST模块之后,接收来自所述BIST模块的初始化测试数据,所述初始化测试数据的比特值均为0;
第七存储模块,用于将所述初始化测试数据写入所述第一存储空间。
第三方面,本申请实施例提供了一种内存控制器,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一所述的方法步骤。
第四方面,本申请实施例提供了一种机器可读存储介质,所述机器可读存储介质存储有能够被处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一所述的方法步骤。
本申请实施例提供的技术方案中,BIST模块向内存控制器发送第一测试数据,以及需要测试内存的存储空间标识。内存控制器将接收到的第一测试数据写入存储空间标识所对应的第一存储空间中,并从第一存储空间中读取数据,发送给BIST模块。BIST模块比较第一测试数据和内存控制器所读取到的数据,完成对内存存储空间的测试。
相比于利用软件进行内存测试的方式,利用硬件的测试方式的耗时明显低于利用软件的测试方式的耗时,因此,利用BIST模块进行内存测试可以明显缩短了内存测试所需的时间,提高了内存测试效率。
再者,由于BIST模块设置在内存控制器上,或者设置在内存控制器上一级硬件模块上,可以有效缩短了内存测试的访问路径,从而缩短了内存测试所需的时间,避免了数据传输过程路径上其他模块异常对测试结果的影响,在缩短内存测试时长,提高内存测试效率的同时,提高了内存测试结果的准确性。
此外,相比于利用ATE的内存测试的方式,由于不再需要依赖额外定制的ATE,这有效降低了内存测试的成本,提高了内存测试的普及性。
当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的内存测试方法的第一种流程示意图;
图2为本申请实施例提供的计算机设备的一种结构示意图;
图3为本申请实施例提供的内存测试方法的第二种流程示意图;
图4为本申请实施例提供的内存测试过程的一种信令图;
图5为本申请实施例提供的数据总线测试方法的一种流程示意图;
图6为本申请实施例提供的数据总线测试过程的一种信令图;
图7为本申请实施例提供的地址总线测试方法的第一种流程示意图;
图8为本申请实施例提供的地址总线测试过程的第一种信令图;
图9为本申请实施例提供的地址总线测试方法的第二种流程示意图;
图10为本申请实施例提供的地址总线测试过程的第二种信令图;
图11为本申请实施例提供的内存测试装置的一种结构示意图;
图12为本申请实施例提供的内存控制器的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
内存作为计算机系统中的重要部件,可以由CPU直接访问,是外存(如硬盘)与CPU进行沟通的桥梁。目前,计算机系统中的内存主要采用第4代和第5代双倍速率同步动态随机存取内存(Double Data Rate Synchronous Dynamic Random-Access Memory,DDR4/DDR5 SDRAM)存储器,为便于描述,记为DDR。
相关技术中,为了保证内存的存取访问和数据存储等功能的正常使用,需要对内存进行内存测试。具体包括以下两种方式:
方式一,在CPU上运行一个软件测试程序,该软件测试程序遍历访问内存的所有地址空间。如果所有的地址空间均可以正常访问,且内存的存储功能也正常,则认为测试通过,内存功能正常。如果某一地址空间无法正常访问,和/或存储功能异常,则认为测试未通过,内存功能异常。
具体的,Uboot(Universal Boot Loader,一种主流的嵌入式设备系统引导程序)中内置一mtest命令,即上述软件测试程序。该mtest命令通过命令行的形式指定内存测试的起始地址、结束地址和测试数据(也可称为测试图样,test pattern),具体命令格式如下:
mtest <start-address> <end-address> <test pattern>。
该mtest命令的基本实现逻辑为:CPU将test pattern写入到指定地址的DDR存储空间中,即上述mtest命令中的参数“<start-address>(起始地址)”到“<end-address>(结束地址)”所指定的地址范围内的存储空间,然后再从该存储空间中读回数据,并将写入的数据和读取的数据进行比较,确定该存储空间的功能是否正常。如果写入和读取的数据相同,则确定内存功能正常,否则,则确定内存功能异常。
针对上述方式一,在对内存进行测试时,往往是进行全域空间测试。由于计算机系统的内存容量少则几个兆字节(GB),多则数个太字节(TB),而CPU每次访问内存时访问的数据量相对较小,这严重影响了内存测试的效率。另外,由于CPU与内存之间还存在其他硬件模块,例如,高速缓冲存储器(Cache),内存控制器(Memory Controller,MC)等,这使得CPU访问内存的路径较长,在影响内存测试的效率的同时,路径中异常模块的存在可能导致测试结果出错,影响内存测试的准确性。
此外,现阶段主流32位计算机系统,CPU能够直接寻址的物理存储空间最多为4GB。如果是36位计算机系统,则可能能访问更大的内存空间,这存在不确定性。基于此,计算机系统中可以设置内存管理单元(Memory Management Unit,MMU)。在内存测试过程中,由MMU按照预设的地址映射规则访问内存的存储空间。此时,CPU通过MMU可以访问内存的所有存储空间。但是,MMU中的地址映射规则由MMU自身的硬件算法实现,不受CPU控制。这使得CPU无法控制可以测试哪些内存的存储空间,也无法保证能遍历完内存的所有存储空间,无法确定访问的存储空间是否正确,从而严重影响内存测试的可靠性和准确性。
方式二,根据用户的测试需求,定制开发专门的ATE进行内存测试。具体的,将定制的ATE与待测试的计算机设备连接后,通过特定的操作流程(具体由ATE设备提供商决定)来完成测试工作。其中,待测试的计算机设备为需要测试的内存所在的计算机设备。
针对上述方式二,由于定制开发的ATE的成本相对较高,定制开发的ATE并不满足其他用户的测试需求,以及定制开发的ATE的操作方式的多样性等问题的存在,这使得利用ATE进行内存测试的方式不适用于单个用户的计算机设备的内存测试。
为了解决相关技术中的问题,本申请实施例提供了一种内存测试方法。如图1所示,图1为本申请实施例提供的内存测试方法的第一种流程示意图。该方法应用于内存控制器,该内存控制器上设置了BIST模块,或该内存控制器的上一级硬件模块上设置了BIST模块。该方法包括以下步骤。
步骤S101,接收来自BIST模块的第一测试数据、以及需要测试的内存的存储空间标识。
步骤S102,将第一测试数据写入存储空间标识对应的第一存储空间。
步骤S103,从第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至BIST模块,以使BIST模块比较第一测试数据和读取到的第一实际数据,得到第一存储空间的测试结果。
上述内存控制器和BIST模块部署在同一计算机设备上。为便于理解,以图2为例进行说明。图2为本申请实施例提供的计算机设备的一种结构示意图。
在图2所示的计算机设备中包括CPU、高速缓冲存储器、内存控制器、BIST模块和内存。其中,BIST模块设置在内存控制器上。除此以外,在高速缓冲存储器与内存控制器之间还可以存在其他硬件模块。例如,高速缓冲存储器与内存控制器之间还存在模块A和模块B,其中,模块B是内存控制器的上一级硬件设备,上述BIST模块也可以设置在模块B上。在此,对高速缓冲存储器与内存控制器之间存在的硬件模块不作具体说明。另外,为便于描述,下文均以BIST模块设置在内存控制器上为例进行说明,并不起任何限定作用。
在本申请实施例中,上述BIST模块中可以包括但不限于静态随机存取存储器(Static Random-Access Memory,SRAM)、比较模块、MC接口、寄存器读写接口以及其他辅助模块。
其中,SRAM用于存储CPU发送的测试数据、存储空间标识等数据。比较模块用于将SRAM中存储的测试数据与MC从内存中读取的数据进行比较,从而确定测试结果。MC接口用于与MC进行地址或数据等信息的交互。寄存器读写接口用于软件程序(即CPU)控制BIST模块。其他辅助模块用于接收时钟信号或电源信号等。关于上述BIST模块中各个模块及接口的功能可参见下文描述,在此不作具体说明。
通过图1所示的方法,相比于利用软件进行内存测试的方式,利用硬件的测试方式的耗时明显低于利用软件的测试方式的耗时,因此,利用BIST模块进行内存测试可以明显缩短了内存测试所需的时间,提高了内存测试效率。
再者,由于BIST模块设置在内存控制器上,或者设置在内存控制器上一级硬件模块上,可以有效缩短了内存测试的访问路径,从而缩短了内存测试所需的时间,避免了数据传输过程路径上其他模块异常对测试结果的影响,在缩短内存测试时长,提高内存测试效率的同时,提高了内存测试结果的准确性。
此外,本申请实施例中,BIST模块设置在内存控制器上,或设置在内存控制器的上一级硬件模块上。而内存控制器和内存控制器的上一级硬件模块为:需要测试的内存所在的计算机设备的一部分,也就是,BIST模块设置测试的内存所在的计算机设备。相比于利用ATE的内存测试的方式,本申请实施例提供的技术方案,不再需要依赖额外定制的ATE,这有效降低了内存测试的成本,可兼容设备开发阶段测试、设备出厂前的测试和用户在使用过程中的测试,即在设备生命周期的任何阶段都可以很方便地进行内存测试,提高了内存测试的普及性和灵活性。
另外,本申请实施例提供的技术方案中,不需要利用MMU对内存进行测试,避免出现通过MMU进行地址映射,无法控制所测试的存储空间的问题,提高了内存测试结果的准确性。
下面通过具体的实施例,对本申请实施例进行说明。
针对上述步骤S101,即接收来自BIST模块的第一测试数据、以及需要测试的内存的存储空间标识。
在本步骤中,BIST模块的SRAM中存储有多个测试数据。在对内存的存储空间进行测试时,BIST模块可以通过上述MC接口向内存控制器发送第一测试数据,以及需要进行内存测试的存储空间的标识信息,即上述存储空间标识。
在本申请实施例中,根据实际内存测试过程中用户需求的不同,上述存储空间标识所对应的存储空间可以为内存中的全部存储空间,也可以为内存全部存储空间中的部分存储空间。在此,对上述存储空间标识所对应的存储空间不作具体限定。
在计算机系统中数据以二进制数的形式进行传输和存储的,上述测试数据可以有二进制数构成。另外,上述存储空间标识中包括测试的起始地址和结束地址。
在本申请实施例中,为了使得上述存储空间所对应的存储空间中的每一比特位均可以被测试到,内存测试过程可以采用多个测试数据对每一存储空间进行多次测试,从而提高内存测试的准确性。
一个可选的实施例中,上述第一测试数据的数量可以为两个,两个第一测试数据中相同位置处的比特值相反。为便于理解,对第一测试数据进行举例说明。
在内存中内存地址是以字节为单位,每一个字节大小的存储空间只占用一个地址编号,每个字节对应有8个比特的存储空间。例如,内存中的某一地址所对应的存储空间用于存储的比特位分别为bit7至bit0。
在设置上述第一测试数据时,由于每一比特位所存储的数据可以为1,也可以为0,因此,可以设置两个第一测试数据,这两个第一测试数据中相同位置处的比特值相反。也就是相同比特位所对应的数据相反。
例如,第一测试数据可以为:8个比特位(即bit7至bit0)的比特值全为0的测试数据,具体表示为:0000 0000;以及8个比特位(即bit7至bit0)的比特值全为1的测试数据,具体表示为:1111 1111。
在本申请实施例中,考虑到每一比特位之间的干扰可能会影响内存测试结果的准确性,为了降低每一比特位之间的干扰,在设置上述第一测试数据时,可以使得第一测试数据中相邻两个比特位的数据不同。
例如,第一测试数据可以为:奇数比特位(即bit1,bit3,bit5和bit7)的比特值为1,偶数比特位(即bit0,bit2,bit4和bit6)的比特值为0,具体表示为:1010 1010;以及奇数比特位(即bit1,bit3,bit5和bit7)的比特值为0,偶数比特位(即bit0,bit2,bit4和bit6)的比特值为1,具体表示为:0101 0101。
在本申请实施例中,对上述第一测试数据不作具体限定。
通过上述对第一测试数据的设置,可以使得BIST模块分别测试内存中每个比特位对比特值“0”和“1”的存储和读取是否正常,从而保证内存测试结果的准确性和全面性。
一个可选的实施例中,上述第一测试数据和存储空间标识可以为CPU写入BIST模块的。
例如,CPU可以通过BIST模块的寄存器读写接口,向BIST模块发送上述第一测试数据。BIST模块接收到CPU发送的第一测试数据,并将接收到的第一测试数据存储至上述SRAM中。
再例如,用户可以设置内存测试的起始地址和结束地址,CPU根据用户设置的起始地址和结束地址,确定对应存储空间所对应的存储空间标识,从而将该存储空间标识发送给BIST模块。BIST模块接收到该存储空间标识后,可以对该存储空间标识进行存储。
在本申请实施例中,用户除了设置上述起始地址和结束地址以外,还可以对测试模式、测试步长和测试次数等信息进行设置。
上述测试模式包括写和比较(write and compare)模式,只写(write only)模式和只比较(compare only)模式。其中,write and compare模式属于一个完整的内存测试过程,应用于图1所示的内存测试过程。write only模式是只把测试数据写入到内存,不再进行数据读取和数据比较两个步骤,应用于下文对内存的初始化操作过程。compare only模式只负责把数据从内存中存储的数据读取出来,并与写入的测试数据进行比较,可以应用于对内存的调试过程。关于write and compare模式和write only模式可参见下文描述,compare only模式在此不作具体说明。
上述测试步长用于表示相邻两次向内存写入数据时,后一次写操作的地址相较于前一次写操作地址的变化程度。
例如,一次写操作可以写入4字节(Byte)的存储空间。当测试步长为4Byte时,可以保证一片连续的DDR空间都可以被测试到。而当测试步长大于4Byte时,测试到的DDR空间会出现离散,这将导致部分DDR空间不会被测试到,影响测试结果的准确性。
在上述测试的起始地址和结束地址不变的情况下,测试步长越大,测试的耗时就越少,但测试的准确性也会相应下降。因此,用户可以根据具体测试情况设置上述测试步长。在此,对上述测试步长设置不作具体限定。
上述测试次数可以根据用户需求进行设置。例如,在设备调试阶段,上述测试次数可以设置为无限次。或者,在内存测试阶段,测试次数可以为一次,或者一旦检测到错误即停止。在此,对上述测试次数不作具体限定。
针对上述步骤S102,即将第一测试数据写入存储空间标识对应的第一存储空间。
在本步骤中,内存控制器根据存储空间标识,在该存储空间标识所对应的每一存储空间中写入上述第一测试数据。也就是将第一测试数据存储到存储空间标识所对应的每一存储空间中。
为便于理解,对第一测试数据的写入进行具体说明。现假设存储空间标识所对应的第一存储空间为:地址1-地址2,也就是起始地址为地址1,结束地址为地址2,上述第一测试数据为1010 1010。地址1-地址2的第一存储空间可以划分为4个地址范围,分别为地址1-地址12,地址12-地址13,地址13-地址14,地址14-地址2。每个地址范围的存储空间大小为8比特(bit),即一个第一测试数据的大小。测试步长为4Byte。
内存控制器在将第一测试数据写入存储空间标识所对应的第一存储空间时,首先将第一测试数据(即10101010)写入至地址1-地址12所对应的存储空间。之后,内存控制器可以按照上述测试步长,将地址12作为要操作的起始地址,地址12-地址13所对应的存储空间作为需要写入第一测试数据的存储空间,并判断地址12是否小于等于结束地址(即地址2)。若是,则将第一测试数据(即1010 1010)写入地址12-地址13所对应的存储空间;若否,则结束写入步骤。以此类推,依次将上述第一测试数据(即1010 1010)写入地址13-地址14,地址14-地址2。
在本申请实施例中,上述测试步长可以根据上述存储空间标识所对应的存储空间的大小,以及第一测试数据所对应的比特位的数量进行设置。在此,对上述测试步长不作具体限定。
当第一测试数据有多个的情况下,内存控制器将一个第一测试数据写入第一存储空间,对第一存储空间测试结束后,再将另一个第一测试数据写入第一存储空间,对第一存储空间测试。以此类推。
一个可选的实施例中,为了保证BIST模块和内存之间传输数据的准确性,上述内存控制器在上述第一存储空间中写入第一测试数据前,BIST模块将写命令发送给内存控制器。BIST模块接收内存控制器返回的写响应后,开始将第一测试数据写入上述第一存储空间。
通过上述写命令的发送可以使得内存控制器确定即将有数据需要写入內存,通过写响应的接收可以使得BIST模块确定内存控制器可以开始将第一测试数据写入至存储空间标识所对应的第一存储空间中。
步骤S103,从第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至BIST模块,以使BIST模块比较第一测试数据和读取到的第一实际数据,得到第一存储空间的测试结果。
在本步骤中,内存控制器可以读取第一存储空间中存储的第一实际数据,从而将第一存储空间中读取出的第一实际数据发送至BIST模块。BIST模块在接收内存控制器所发送的第一实际数据后,可以由上述比较模块对接收到的第一实际数据与其SRAM中存储的第一测试数据进行比较,从而确定这两份数据是否相同。针对需要进行内存测试的第一存储空间,若从该第一存储空间读取到的第一实际数据与SRAM中存储的该存储空间的第一测试数据相同,则BIST模块可以确定该第一存储空间通过测试;若从该第一存储空间读取到的第一实际数据与SRAM中存储的该存储空间的第一测试数据不相同,则BIST模块可以确定该存储空间未通过测试,从而得到内存测试结果。
一个可选的实施例中,BIST模块在确定存储空间标识所对应第一存储空间的内存测试结果后,可以对该内存测试结果进行存储。例如,BIST模块可以将内存测试结果存储到状态寄存器中。该状态寄存器可以位于上述SRAM中。
一个可选的实施例中,针对未通过测试的存储空间,上述BIST模块在对该存储空间的内存测试结果进行存储时,还可以对错误的具体信息进行存储。例如,BIST模块可以对出错的地址、出错的比特位和出错的比特值等信息进行存储。
一个可选的实施例中,针对上述BIST模块中存储内存测试结果,CPU可以通过上述寄存器读写接口,从BIST模块的状态寄存器中读取内存测试结果。
一个可选的实施例中,根据图1所示的方法,本申请实施例还提供了一种内存测试方法。如图3所示,图3为本申请实施例提供的内存测试方法的第二种流程示意图。具体在上述步骤S103后,增加了对内存的初始化操作过程,即步骤S104-步骤S105。
步骤S104,在将读取到的第一实际数据发送至BIST模块之后,接收来自BIST模块的初始化测试数据,初始化测试数据的比特值均为0。
在本步骤中,内存控制器在将读取到的第一实际数据发送至BIST模块之后,或者BIST模块确定内存测试结果后,BIST模块可以向内存控制器发送初始化测试数据。该初始化测试数据中的每一比特值均值为0。内存控制器接收该初始化测试数据。
步骤S105,将初始化测试数据写入第一存储空间。
在本步骤中,内存控制器将接收到的初始化测试数据写入上述第一存储空间。初始化测试数据的写入方式可以参照上述第一测试数据的写入方式,在此不作具体说明。
在图3所示的实施例中,由于上述第一测试数据仅被写入第一存储空间,因此,上述初始化操作过程仅将初始化测试数据写入第一存储空间。除此以外,为了保证初始化后的内存中的数据全部清零,内存控制器可以将上述初始化测试数据写入内存的全部存储空间。
通过上述初始化测试数据的写入,可以实现对内存中已经写入数据的清零处理,从而保证内存在计算机设备的后续使用过程中的正常运行。
为便于理解,下面结合图4对上述内存测试过程进行说明。图4为本申请实施例提供的内存测试过程的一种信令图。
步骤S401,CPU通过寄存器向BIST模块发送第一测试数据。
步骤S402,BIST模块将接收到的第一测试数据存储至SRAM中。
步骤S403,CPU确定内存测试的测试模式、测试步长、起始地址和结束地址,并通过寄存器触发BIST模块进行内存测试。
在本步骤中,CPU所确定出的测试模式为上述write and compare模式。也就是将测试数据写入至内存,并从内存中读取出数据,并读取出的数据与写入的测试数据进行比较,从而得到内存测试结果。
步骤S404,BIST模块向内存控制器发送写命令。
步骤S405,内存控制器在接收到写命令后,向BIST模块发送写响应。
步骤S406,BIST模块根据CPU触发内存测试时确定的测试模式、测试步长、起始地址和结束地址,向内存控制器发送第一测试数据以及需要测试的存储空间的存储空间标识。
上述存储空间标识与确定出的起始地址和结束地址对应。也就是需要测试的存储空间为内存中起始地址至结束地址之间的存储空间。
步骤S407,内存控制器确定接收到的存储空间标识所对应的第一存储空间,并将接收到的第一测试数据写入至第一存储空间中。
在本步骤中,内存控制器按照上述测试步长依次将第一测试数据写入至第一存储空间包括的每一存储空间中。
步骤S408,BIST模块向内存控制器发送读命令,以及需要读取的内存的存储空间标识。
在本申请实施例中,上述步骤S408中的存储空间标识与上述步骤S406中的存储空间标识相同。
步骤S409,内存控制器从第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至BIST模块。
步骤S410,BIST模块比较第一测试数据和读取到的第一实际数据,得到第一存储空间的测试结果。
步骤S411,BIST模块对确定出的第一存储空间的测试结果进行存储。
步骤S412,CPU获取BIST模块中存储的第一存储空间的测试结果。
步骤S413,BIST模块向内存控制器发送初始化测试数据。
在本步骤中,BIST模块将启动上述write only模式。也就是在将测试数据写入内存即终止操作。
上述初始化测试数据的比特值均为0。
在本申请实施例中,对上述步骤S411与上述步骤S413的执行顺序不作具体限定。
步骤S414,内存控制器将接收到的初始化测试数据写入第一存储空间。
在图4所示的实施例中,仅给出了一个第一测试数据中一个测试数据进行内存测试的过程,针对第一测试数据中另一测试数据,执行上述步骤S410后,可以返回执行上述步骤S406。关于第一测试数据中另一测试数据进行内存测试的过程在此不作具体说明。
一个可选的实施例中,上述内存包括N条数据总线(Data Input/ Output Bus,DQBus)。该数据总线为一种传输DDR数据的信号线。
基于同一种发明构思,根据上述本申请实施例提供的内存测试方法,本申请实施例还提供了一种数据总线测试方法。如图5所示,图5为本申请实施例提供的数据总线测试方法的一种流程示意图。该方法应用于上述内存控制器。其中,内存包括N条数据总线。该方法包括以下步骤。
步骤S501,接收CPU下发的至少两个第二测试数据,至少两个第二测试数据中同一数据总线传输的比特值有两种。
在本步骤中,CPU向内存控制器下发至少两个第二测试数据。该至少两个第二测试数据中同一数据总线传输的比特值有两种。内存控制器接收CPU下发的第二测试数据。
为便于理解,以数据总线数量为16(即N=16)对上述第二测试数据进行说明。16条数据总线具体表示为DQ15至DQ0。
以上述第二测试数据的数量为两个为例。为满足同一数据总线传输的比特值有两种的要求,一个第二测试数据中16条数据总线可以均传输数据0,该第二测试数据具体可以表示为:0000 0000 0000 0000,另一第二测试数据中16条数据总线可以均传输数据1,该第二测试数据具体可以表示为:1111 1111 1111 1111。
一个可选的实施例中,为了提高对每一条数据总线测试过程的准确性,在设置上述第二测试数据时,上述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,第二比特值在N个第二测试数据中的位置不同。
上述第一比特值为0,上述第二比特值为1。为便于理解,仍以数据总线的数量为16为例进行说明。
上述1个所有比特值均为第一比特值的第二测试数据可以表示为:上述0000 00000000 0000。N个具有一个第二比特值的第二测试数据可以如表1所示。
表1
数据总线 | 第二测试数据 | 数据总线 | 第二测试数据 |
DQ15 | 1000 0000 0000 0000 | DQ7 | 0000 0000 1000 0000 |
DQ14 | 0100 0000 0000 0000 | DQ6 | 0000 0000 0100 0000 |
DQ13 | 0010 0000 0000 0000 | DQ5 | 0000 0000 0010 0000 |
DQ12 | 0001 0000 0000 0000 | DQ4 | 0000 0000 0001 0000 |
DQ11 | 0000 1000 0000 0000 | DQ3 | 0000 0000 0000 1000 |
DQ10 | 0000 0100 0000 0000 | DQ2 | 0000 0000 0000 0100 |
DQ9 | 0000 0010 0000 0000 | DQ1 | 0000 0000 0000 0010 |
DQ8 | 0000 0001 0000 0000 | DQ0 | 0000 0000 0000 0001 |
在表1中,针对每一条数据总线,该数据总线所对应第二测试数据中该数据总线对应比特值为上述第二比特值,即1。例如,上述DQ15所对应的第二测试数据为:1000 00000000 0000。
通过上述至少两个第二测试数据,可以实现对每一数据总线传输数据0和数据1的测试,保证每一数据总线的测试结果的准确性。另外,通过设置N个具有一个第二比特值的第二测试数据,可以有效降低所有数据总线传输数据1时的干扰,提高数据总线测试结果的准确性。
在本申请实施例中,上述第二测试数据具体可以根据数据总线的数量和用户测试需求进行设置。在此,对上述第二测试数据不作具体限定。
步骤S502,通过N条数据总线,向内存中预先设定的第二存储空间写入每个第二测试数据。
在本步骤中,内存控制器在接收到的上述第二测试数据后,可以通过N条数据总线,将每一第二测试数据写入内存中预先设定的第二存储空间中。
上述第二存储空间可以为内存中的任一存储空间,在此,对上述第二存储空间不作具体限定。
步骤S503,通过N条数据总线,从第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至CPU,以使CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
在本申请实施例中,由于在将上述第二测试数据写入内存的第二存储空间时,可以采取多种方式将所有第二测试数据写入第二存储空间,因此,内存控制器在读取第二测试数据时,也可以采用多种方式。为便于理解,以上述17个第二测试数据为例进行说明。
在本申请实施例中,上述内存测试过程和数据总线测试过程中,内存是在时钟信号的上升沿和下降沿传输数据。因此,上述第一测试数据和第二测试数据的长度也受到时钟信号中上升沿和下降沿的时长影响。在此,上述第一测试数据和第二测试数据的设置不作具体限定。
一个可选的实施例中,内存控制器可以在利用16条数据总线,每将一个第二测试数据写入内存的第二存储空间后,读取该第二存储空间中存储的数据,即该第二测试数据所对应的第二实际数据。从而将读取到的第二实际数据发送给CPU,使得CPU比较该第二实际数据与该第二测试数据进行比较,确定对应数据总线的测试结果。以此类推,分别将其他16个第二测试数据写入第二存储空间,读取第二存储空间的数据,并将读取到的数据发送给CPU,从而得到每一条数据总线对应的测试结果。在该实施例中,每一第二测试数据所写入的第二存储空间可以相同,也可以不相同。
另一个可选的实施例中,内存控制器可以在利用16条数据总线将每一第二测试数据写入到对应的第二存储空间后,针对每一第二测试数据,读取该第二存储图样对应的第二存储空间中的数据,得到每一第二测试数据对应的第二实际数据。内存控制器将每一第二测试数据对应的第二实际数据发送给CPU。针对每一第二测试数据,CPU通过比较该第二测试数据与该第二测试数据所对应的第二实际数据,确定对应数据总线的测试结果。在该实施例中,每一第二测试数据所写入的第二存储空间不相同。
在本申请实施例中,CPU在确定数据总线的测试结果时,若某一第二测试数据与该第二测试数据所对应的第二实际数据相同,则数据总线测试通过,即数据总线未出现异常。若某一第二测试数据与该第二测试数据所对应的第二实际数据不相同,则数据总线测试未通过,即该第二测试数据对应的数据总线出现异常。
为便于理解,仍以上述17个第二测试数据为例进行说明。
例如,写入第二存储空间的第二测试数据为:0000 0000 0000 0000。若CPU所接收到的该第二测试数据对应的第二实际数据仍为:0000 0000 0000 0000。此时,CPU可以确定16条数据总线均可以正常传输数据0。若CPU所接收到的该第二测试数据对应的第二实际数据不是:0000 0000 0000 0000,例如,DQ15对应的比特值为1。此时,CPU可以确定DQ14至DQ0可以正常传输数据0,DQ15不可以正常传输数据0。
再例如,写入第二存储空间的第二测试数据为:1000 0000 0000 0000,即DQ15所对应的第二测试数据。若CPU所接收到的该第二测试数据对应的第二实际数据仍为:10000000 0000 0000。此时,CPU可以确定DQ15可以正常传输数据1,其余数据总线可以正常传输数据0。若CPU所接收到的该第二测试数据对应的第二实际数据中DQ15所对应的比特值为0。此时,CPU可以确定DQ15,DQ15不可以正常传输数据1,其余数据总线可以正常传输数据0。
一个可选的实施例中,在内存控制器在将每一第二测试数据所对应的第二实际数据发送给CPU后,可以对内存进行初始化操作。具体参见上文初始化过程,在此不作赘述。
上述第二存储空间可以预先设置的DDR中的任一存储空间,只要保证能存储下第二测试数据即可。
为便于理解,下面结合图6对上述数据总线的测试过程进行说明。图6为本申请实施例提供的数据总线测试过程的一种信令图。
步骤S601,CPU获取第二测试数据。
步骤S602,CPU向内存控制器发送第二测试数据以及第二存储空间所对应的存储空间标识。
步骤S603,内存控制器根据接收到的存储空间标识,通过N条数据总线,将接收到的第二测试数据写入至内存的第二存储空间。
步骤S604,内存控制器读取第二存储空间中的第二实际数据,作为第二测试数据对应的第二实际数据。
步骤S605,内存控制器将读取到的第二测试数据所对应的第二实际数据发送给CPU。
步骤S606,CPU比较第二测试数据与第二测试数据对应的第二实际数据,得到数据总线的测试结果。
步骤S607,CPU对确定出的每一数据总线的测试结果进行存储。
步骤S608,CPU向内存控制器发送初始化测试数据。
步骤S609,内存控制器将接收到的初始化测试数据写入第二存储空间。
在本申请实施例中,上述初始化测试数据可以由CPU发送给内存控制器,也可以由CPU发送给上述BIST模块,再由BIST模块发送给内存控制器。在此,对上述初始化测试数据的发送不作具体限定。
一个可选的实施例中,上述内存还可以包括内存库和地址总线,内存库包括M行存储单元。
上述内存中包括多个内存库构成的内存库组(bank group),每一bank group中包括多个内存库(bank),每一bank中包括多个由行和列所共同组成的存储单元。为便于理解,以表格的形式对一个bank进行说明,具体如表2所示。
表2
在表2所示的bank中包括4列(column,以下简称col)地址和4行(row)地址,每一行和每一列所组成的单元格为该bank中的一个存储单元。
在本申请实施例中,对上述内存中内存库组的数量、内存库数量和存储单元的数量不作具体限定。
上述地址总线(Command Address Bus,CA Bus)也称地址命令总线,是一种用于传输DDR地址和命令的信号线。在此,对上述内存中包括的地址总线的数量不作具体限定。
基于同一种发明构思,根据上述本申请实施例提供的内存测试方法,本申请实施例还提供了一种地址总线测试方法。如图7所示,图7为本申请实施例提供的地址总线测试方法的第一种流程示意图。该方法应用于上述内存控制器,具体可以包括以下步骤。
步骤S701,接收CPU下发的第三测试数据和第四测试数据,第三测试数据和第四测试数据的长度与内存库中每行存储单元的长度相同,第三测试数据和第四测试数据中相同位置处的比特值相反。
在本步骤中,CPU在进行地址总线测试时,获取第三测试数据和第四测试数据,并向内存控制器发送第三测试数据和第四测试数据。内存控制器接收该第三测试数据和第四测试数据。
上述第三测试数据不同于第四测试数据。例如,上述内存库中每一行存储单元的容量为16Byte,上述第三测试数据和第四测试数据可以为任意两个不同的16字节的二进制数。
上述第三测试数据和第四测试数据的字节数是根据内存库中每一行存储单元的容量确定的,在此,对上述第三测试数据和第四测试数据不作具体限定。
上述第三测试数据和第四测试数据中相同位置处的比特值相反,使得第三测试数据和第四测试数据之间存在较大的差异,从而降低了第三测试数据和第四测试数据间差异较小时,数据传输过程出错影响测试结果的可能性。
为便于理解,以第三测试数据为十六进制数0xA5(即二进制数1010 0101)为例进行说明。为了使得第三测试数据和第四测试数据中每一位置处对应的比特值均不相同,第四测试数据可以为二进制数0101 1010(即十六进制数0x5A)。
在本申请实施例中,在数据传输过程中,数据中的某一比特位上的比特值存在出现错误的风险,因此,若上述第三测试数据和第四测试数据之间的误差较小,例如,仅存在一个比特值的不同,其他比特值均相同,一旦传输过程某一测试数据中不同的比特值出现错误,将导致第三测试数据与第四测试数据相同,此时,总线测试结果也将受到影响。因此,当上述第三测试数据和第四测试数据中相同位置处的比特值相反时,某一比特值的出错,并不会导致第三测试数据与第四测试数据相同,这有效提高了第三测试数据和第四测试数据间的差异性,从而提高了地址总线测试的测试结果的准确性。
步骤S702,通过地址总线,向内存库的第1行存储单元写入第三测试数据。
在本步骤中,内存控制器在接收到的CPU发送的第三测试数据和第四测试数据后,可以针对每一内存库,通过上述地址总线,在该内存库的第1行存储单元中写入接收到的第三测试数据。
步骤S703,通过地址总线,向内存库的第m行存储单元写入第四测试数据,m大于1,且m小于等于M。
在本步骤中,针对每一内存库,在将上述第三测试数据写入该内存库的第一行存储单元后,内存控制器可以该内存库的第m行存储单元中写入第四测试数据。
上述第m行存储单元为内存库中除第1行存储单元以外的任一行存储单元。也就是m大于1,且m小于等于M。
步骤S704,通过地址总线,从第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至CPU,以使CPU比较第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果。
在本步骤中,内存控制器在将上述第四测试数据写入第m行存储单元后,可以通过地址总线,从第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送给CPU。CPU在接收到内存控制器发送的第三实际数据时,可以比较第三测试数据和接收到的第三实际数据,从而确定地址总线的第一测试结果,即地址总线的低地址处测试结果。其中,第三实际数据为上述第三测试数据或第四测试数据。
在本申请实施例中,将内存库中行地址为0(即内存库中第一行存储单元)的地址称为低地址,行地址大于等于1(即内存库中第m行存储单元)的地址称为高地址。当地址总线卡在低地址处(stuck low)时,也就是在低地址时无法改变地址总线上的值时,将无法通过高地址对应的地址总线将数据写入内存,地址总线出现异常。
为便于理解,对上述地址总线卡在低地址处的情况进行说明。现假设上述M为16,即内存库中存在16行存储单元。
内存控制器在通过上述地址总线向内存库的第一行存储单元写入数据时,将地址总线上第一行存储单元的状态位设置为1,其他行存储单元的状态位将被设置为0,此时,内存控制器可以成功将数据写入该内存库的第一行存储单元。以此类推,通过调整每一行存储单元的状态位,可以成功将数据写入内存库对应的行存储单元中。但是,当地址总线卡在低地址处时,低地址所对应的行存储单元的状态位保持为1,无法调整为0,高地址所对应的行存储单元的状态位无法被设置为1,此时,数据无法被写入高地址所对应的行存储单元。
以内存库的第二行存储单元为例,当地址总线卡在低地址处时,需要将第二行存储单元的状态位设置为1,其他行存储单元的状态位设置为0。但是由于此时地址总线卡在低地址处,也就是第一行存储单元的状态位为1,无法调整为0,因此,无法将第二行存储单元的状态位设置为1,这将导致数据仍被写入第一行存储单元中,出现上述地址总线卡在低地址处的现象。
在本申请实施例中,上述地址总线除了会出现卡在低地址处的现象以外,还会出现卡在高地址处的现象。地址总线卡在高地址处的情况与上述地址总线卡在低地址处的情况相似,在此不作具体说明。关于地址总线卡在高地址处的检测方法可参见下文描述,在此不作赘述。
在本申请实施例中,通过先在内存库的第1行存储单元中写入第三测试数据,再在内存库的第m行中写入第四测试数据。此时,若地址总线卡在低地址处,第四测试数据将被写入第1行存储单元,内存控制器所读出的第三实际数据为第四测试数据。CPU通过比较第三测试数据和第三实际数据可以准确确定出地址总线是否卡在低地址处。
本申请实施例中,为准确的确定地址总线是否卡在低地址处,可以循环执行上述步骤S702-步骤S704,向内存库的第2-M行存储单元依次写入第四测试数据。
为便于理解,以第三测试数据为test_data0,第四测试数据为test_data1为例,结合图8对第一个bank group(记为bank_group=0)中的第一个bank(记为bank=0)的地址总线测试为例进行说明。图8为本申请实施例提供的地址总线测试过程的第一种信令图。
现假设bank=0中包括M行存储单元,也就是row的取值范围为row=0至row=M-1。
步骤S801,CPU获取test_data0和test_data1,并将test_data0和test_data1发送给内存控制器。
步骤S802,内存控制器通过地址总线,将test_data0写入(bank_group=0,bank=0,row=0,col=0)地址处的存储单元。
步骤S803,内存控制器通过地址总线,将test_data1写入(bank_group=0,bank=0,row=1,col=0)地址处的存储单元。
在本步骤中,若地址总线未卡在低地址处,则test_data1将被写入(bank_group=0,bank=0,row=1,col=0)地址处的存储单元中。
若地址总线卡在低地址处,则test_data1将被写入(bank_group=0,bank=0,row=0,col=0)地址处的存储单元中,也就是(bank_group=0,bank=0,row=0,col=0)地址处的存储单元中的数据由test_data0变为test_data1。
步骤S804,内存控制器读取(bank_group=0,bank=0,row=0,col=0)地址处的存储单元中的数据,得到第三实际数据,并将读取到的第三实际数据发送给CPU。
上述第三实际数据可能为test_data0,也可能为test_data1。
步骤S805,CPU在接收到第三实际数据后,比较test_data0和第三实际数据,得到低地址的地址总线的测试结果。
在本步骤中,当test_data0和第三实际数据相同时,也就是第三实际数据为test_data0时,CPU可以确定地址总线未卡在低地址,即低地址为的地址总线测试通过。当test_data0和第三实际数据不相同时,也就是第三实际数据为test_data1时,CPU可以确定地址总线卡在低地址,即低地址为的地址总线测试未通过。
上述图7和图8所示的实施例中,仅以第四测试数据写入一行存储单元为例进行说明的。为了保证地址总线测试的有序性和完整性,针对上述内存库中除第1行存储单元以外的每一行存储单元,内存控制器均可以进行低地址地址总线测试。以图8所示的实施例为例,在执行上述步骤S805后,内存控制器可以依次将test_data1所写入的row=2至row=M-1行存储单元,重复执行上述步骤S802-步骤S805。
一个可选的实施例中,上述在进行低地址的地址总线测试后,可以对内存库进行初始化操作。仍以地址总线为16字节为例,内存控制器可以将全为0的16字节数据写入内存库的每一行存储单元中。在此,对初始化操作过程不作具体说明。
一个可选的实施例中,本申请实施例还提供了一种地址总线测试方法。如图9所示,图9为本申请实施例提供的地址总线测试方法的第二种流程示意图。该方法应用于上述内存控制器,具体可以包括以下步骤。
步骤S901,接收CPU下发的第五测试数据和第六测试数据,第五测试数据和第六测试数据的长度与内存库中每行存储单元的长度相同,第五测试数据和第六测试数据中相同位置处的比特值相反。
在本步骤中,CPU在进行地址总线测试时,获取第五测试数据和第六测试数据,并向内存控制器发送第五测试数据和第六测试数据。内存控制器接收该第五测试数据和第六测试数据。
上述第五测试数据不同于第六测试数据。上述第五测试数据和第六测试数据中相同位置处的比特值相反,使得第五测试数据和第六测试数据之间存在较大的差异,从而降低了第五测试数据和第六测试数据间差异较小时,数据传输过程出错影响测试结果的可能性。
在本申请实施例中,上述第五测试数据和第六测试数据可以与上述第三测试数据和第四测试数据相同,也可以不同。关于第五测试数据和第六测试数据可参照上述第三测试数据和第四测试数据的描述。在此,对上述第五测试数据和第六测试数据不作具体说明。
步骤S902,通过地址总线,向内存库第2至M行存储单元写入第五测试数据。
在本步骤中,内存控制器在接收到的CPU发送的第五测试数据和第六测试数据后,可以针对每一内存库,通过上述地址总线,在该内存库的第2行存储单元至第M行存储单元中依次写入接收到的第五测试数据。也就是按照从第2行至第M行的顺序,将第五测试数据依次写入每一行存储单元中。
步骤S903,通过地址总线,向内存库第1行存储单元写入第六测试数据。
在本步骤中,针对每一内存库,内存控制器通过地址总线,将上述第六测试数据写入该内存库的第1行存储单元中。
步骤S904,通过地址总线,从第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至CPU,以使CPU比较第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果。
在本步骤中,内存控制器通过地址总线,依次从第2存储单元至M行存储单元中读取第四实际数据。内存控制器将读取到的每一行存储单元所对应的第四实际数据发送给CPU。CPU在接收到的每一行存储单元所对应的第四实际数据后,针对每一行存储单元所对应的第四实际数据,比较该行存储单元对应的第四实际数据与第五测试数据,得到地址总线的第二测试结果,即地址总线的高地址处的测试结果。其中,第四实际数据为上述第五测试数据或第六测试数据。
在本申请实施例中,地址总线除了可能卡在上述低地址处以外,还可能卡在高地址处。通过图9所示的实施例,先在内存库的第2行存储单元至第M行存储单元中写入第五测试数据,再在第1行存储单元中写入第四测试数据,这将使得在地址总线卡在高地址后,所卡在的高地址中的数据将变为第六测试数据,从而使得CPU在对第五测试数据和每一第四实际数据进行比较时,可以准确确定出地址总线所卡在的高地址。
为便于理解,以第五测试数据为test_data1,第六测试数据为test_data0,结合图10对上述bank_group=0中bank=0的地址总线测试为例进行说明。图10为本申请实施例提供的地址总线测试过程的第二种信令图。
仍假设bank=0中包括M行存储单元,也就是row的取值范围为row=0至row=M-1。
步骤S1001,CPU获取test_data0和test_data1,并将test_data0和test_data1发送给内存控制器。
步骤S1002,内存控制器依次以(bank_group=0,bank=0,row=1,col=0)地址处的存储单元至(bank_group=0,bank=0,row=M-1,col=0)地址处的存储单元为目标存储单元,通过地址总线,将test_data1写入该目标存储单元。
若地址总线未卡在高地址,则第2行至第M行存储单元中的数据均为test_data1。也就是(bank_group=0,bank=0,row=1,col=0)地址处的存储单元至(bank_group=0,bank=0,row=M-1,col=0)地址处的存储单元中的数据均为test_data1。
若地址总线卡在高地址,则第2行至所卡在的高地址的存储单元中的数据均为test_data1。所卡在的高地址之后的存储单元中的数据为空。
为便于理解,以地址总线卡在第5行存储单元,也就是(bank_group=0,bank=0,row=4,col=0)地址处的存储单元为例进行说明。在执行上述步骤S1002后,第2行至第5行存储单元中的数据均为test_data1。也就是(bank_group=0,bank=0,row=1,col=0)地址处的存储单元至(bank_group=0,bank=0,row=4,col=0)地址处的存储单元中的数据均为test_data1。而第6行至第M行存储单元中的数据为空。也就是(bank_group=0,bank=0,row=5,col=0)地址处的存储单元至(bank_group=0,bank=0,row=M-1,col=0)地址处的存储单元中的数据均为空。
步骤S1003,内存控制器通过地址总线,将test_data0写入(bank_group=0,bank=0,row=0,col=0)地址处的存储单元。
若地址总线未卡在高地址,则test_data0将被成功写入(bank_group=0,bank=0,row=0,col=0)地址处的存储单元,即第1行存储单元中的数据为test_data0。
若地址总线卡在高地址,则test_data0将被写入地址总线所卡在的高地址对应的存储单元中。
仍以上述地址总线卡在第5行存储单元为例进行说明。此时,(bank_group=0,bank=0,row=4,col=0)地址处的存储单元中的数据将由test_data1变为test_data0。(bank_group=0,bank=0,row=0,col=0)地址处的存储单元中的数据为空,其他行存储单元中的数据未变化。
在本申请实施例中,由于地址总线中高地址的数量有多个,即M-1个,并且地址总线所卡在的高地址具有不确定性,因此,上述第2行至第M行存储单元中的数据可能为test_data1,也可能为test_data0。也就是(bank_group=0,bank=0,row=1,col=0)地址处的存储单元至(bank_group=0,bank=0,row=M-1,col=0)地址处的存储单元中的数据可能为test_data1,也可能为test_data0。
步骤S1004,内存控制器从第2行-第M行存储单元中读取第四实际数据,得到每一行存储单元对应的第四实际数据,并将读取到的每一第四实际数据发送给CPU。
步骤S1005,CPU在接收到内存控制器发送的第四实际数据后,将第五测试数据与每一第四实际数据进行比较,得到高地址地址总线的测试结果。
在本步骤中,CPU可以按照第2行至第M行的顺序,依次判断每一行存储单元所对应的第四实际数据与第五测试数据是否相同。若相同,则确定该行存储单元所对应的高地址未出现地址总线卡住的情况,若不相同,则确定地址总线在该行存储单元对应的高地址处卡住。
为便于理解,仍以上述地址总线卡在第5行存储单元为例进行说明。此时,由于内存控制器从第2行存储单元至第4行存储单元读取出的第四实际数据均为test_data1,因此,CPU在对第四实际数据和第五测试数据进行比较时,可以确定地址总线未卡住。而内存控制器从第5行存储单元至第M行存储单元读取出的第四实际数据均为test_data0,因此,CPU在比较第5行存储单元对应的第四实际数据(即test_data0)与第五测试数据(即test_data1)时,可以确定第四实际数据与第五测试数据不同。此时,CPU可以确定地址总线卡在第5行存储单元。
一个可选的实施例中,上述在进行高地址的地址总线测试后,可以对内存库进行初始化操作。在此,对初始化存储过程不作具体说明。
在本申请实施例中,上述数据总线测试过程和地址总线测试过程均是通过调用测试软件的方式进行的。以数据总线测试过程为例,由CPU向控制下发至少两个第二测试数据,从而获取内存控制器从存储空间中读取每个第二测试数据对应的第二实际数据,并根据读取到的第二实际数据和第二测试数据,确定数据总线的测试结果。这一过程均是由CPU通过测试软件的方式完成的。考虑到采用硬件模块进行上述数据总线测试和地址总线测试需要复杂的集成电路(Integrated Circuit,IC)设计,以及数据总线测试和地址总线测试的工作量较小的原因,在本申请实施例中,不额外设计数据总线测试和地址总线测试的硬件模块,采用直接调用测试软件的方式进行测试,这可以在实现数据总线测试和地址总线测试的同时,保证测试效率,降低测试成本。
在本申请实施例中,上述数据总线测试过程和地址总线测试过程均可以在上述内存测试之前或者之后进行,也就是在上述步骤S101之前或者步骤S103之后执行。在此,对上述内存测试过程、数据总线测试过程和地址总线测试过程的执行顺序不作具体限定。
本申请实施例中,采用软硬件结合的方式进行测试。
软件测试部分,即利用CPU对数据总线和地址总线进行测试。虽然软件测试的速度较慢,但只是对数据总线和地址总线进行测试,工作量较小,耗时可以忽略不计。
硬件测试部分,即利用BIST模块对内存的存储空间进行测试。硬件测试部分工作量较大,采用效率较高、访问路径较短的BIST模块来完整硬件测试部分的工作。
通过上述软硬件结合的方式进行测试,很好的平衡了测试效率和芯片设计复杂度的问题。
基于同一种发明构思,根据上述本申请实施例提供的内存测试方法,本申请实施例还提供了一种内存测试装置。如图11所示,图11为本申请实施例提供的内存测试装置的一种结构示意图。该装置应用于上述内存控制器,具体包括以下模块。
第一接收模块1101,用于接收来自BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;
第一存储模块1102,用于将第一测试数据写入存储空间标识对应的第一存储空间;
第一读取模块1103,用于从第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至BIST模块,以使BIST模块比较第一测试数据和读取到的第一实际数据,得到第一存储空间的测试结果。
可选的,上述第一测试数据的数量为两个,两个第一测试数据中相同位置处的比特值相反;
上述第一测试数据和上述存储空间标识为CPU写入BIST模块的。
可选的,上述内存包括N条数据总线;
上述内存测试装置还可以包括:
第二接收模块,用于接收CPU下发的至少两个第二测试数据,至少两个第二测试数据中同一数据总线传输的比特值有两种;
第二存储模块,用于通过N条数据总线,向内存中预先设定的第二存储空间写入每个第二测试数据;
第二读取模型,用于通过N条数据总线,从第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至CPU,以使CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
可选的,上述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,第二比特值在N个第二测试数据中的位置不同。
可选的,上述内存包括内存库和地址总线,内存库包括M行存储单元;
上述内存测试装置还可以包括:
第三接收模块,用于接收CPU下发的第三测试数据和第四测试数据,第三测试数据和第四测试数据的长度与内存库中每行存储单元的长度相同,第三测试数据和第四测试数据中相同位置处的比特值相反;
第三存储模块,用于通过地址总线,向内存库的第1行存储单元写入第三测试数据;
第四存储模块,用于通过地址总线,向内存库的第m行存储单元写入第四测试数据,m大于1,且m小于等于M;
第三读取模块,用于通过地址总线,从第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至CPU,以使CPU比较第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果,第三实际数据为第三测试数据或第四测试数据。
可选的,上述内存包括内存库和地址总线,内存库包括M行存储单元;
上述内存测试装置还可以包括:
第四接收模块,用于接收CPU下发的第五测试数据和第六测试数据,第五测试数据和第六测试数据的长度与内存库中每行存储单元的长度相同,第五测试数据和第六测试数据中相同位置处的比特值相反;
第五存储模块,用于通过地址总线,向内存库第2至M行存储单元写入第五测试数据;
第六存储模块,用于通过地址总线,向内存库第1行存储单元写入第六测试数据;
第四读取模块,用于通过地址总线,从第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至CPU,以使CPU比较第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果,第四实际数据为第五测试数据或第六测试数据。
可选的,上述内存测试装置还可以包括:
第五接收模块,用于在将读取到的第一实际数据发送至BIST模块之后,接收来自BIST模块的初始化测试数据,初始化测试数据的比特值均为0;
第七存储模块,用于将初始化测试数据写入第一存储空间。
通过本申请实施例提供的装置,计算机设备中的BIST模块通过向内存控制器发送测试数据,以及需要测试内存的存储空间标识,使得内存控制器将接收到的测试数据写入存储空间标识所对应的存储空间中,并从第一存储空间中读取数据。BIST模块通过比较第一测试数据和内存控制器所读取到的数据,完成对内存的测试。相比于相关技术中利用软件进行内存测试的方式,由于利用硬件的测试方式的耗时明显低于利用软件的测试方式的耗时,因此,直接利用BIST模块进行内存测试可以明显缩短了内存测试所需的时间,提高了内存测试效率。并且,由于BIST模块设置在内存控制器上,或者设置在内存控制器上一级硬件模块上,可以有效缩短了内存的访问路径,从而缩短了内存测试所需的时间,避免了数据传输过程路径上其他模块异常对测试结果的影响,在缩短内存测试时长,提高内存测试效率的同时,提高了内存测试结果的准确性。 相比于相关技术利用ATE的内存测试的方式,不再需要依赖额外定制的ATE,这有效降低了内存测试的成本,提高了内存测试的普及性。
基于同一种发明构思,根据上述本申请实施例提供的内存测试方法,本申请实施例还提供了一种内存控制器,如图12所示,包括处理器1201和机器可读存储介质1202,机器可读存储介质1202存储有能够被处理器1201执行的机器可执行指令。处理器1201被机器可执行指令促使实现上述图1-图10所示的任一步骤。
一个可选的实施例中,如图12所示,内存控制器还可以包括:通信接口1203和通信总线1204;其中,处理器1201、机器可读存储介质1202、通信接口1203通过通信总线1204完成相互间的通信,通信接口1203用于上述内存控制器与其他设备之间的通信。
在本申请实施例中,上述CPU为上述计算机设备中的中央处理器,上述处理器1201为上述内存控制器中的处理单元。上述机器可读存储介质1202为上述内存控制器中的存储介质,如上述SRAM。内存控制器可以利用机器可读存储介质1202中存储的数据,通过数据总线向内存的存储空间中写入数据,以及通过地址总线向内存的内存库中写入数据。
基于同一种发明构思,根据上述本申请实施例提供的内存测试方法,本申请实施例还提供了一种机器可读存储介质,机器可读存储介质存储有能够被处理器执行的机器可执行指令。处理器被机器可执行指令促使实现上述图1-图10所示的任一步骤。
上述通信总线可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
上述机器可读存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括CPU、NP(Network Processor,网络处理器)等;还可以是DSP(Digital Signal Processing,数字信号处理器)、ASIC(ApplicationSpecific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于内存测试装置、内存控制器和机器可读存储介质实施例而言,由于其内存测试方法实施例,所以描述的比较简单,相关之处参见内存测试方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (13)
1.一种内存测试方法,其特征在于,应用于内存控制器,所述内存控制器上设置了内建自测试BIST模块,或所述内存控制器的上一级硬件模块上设置了BIST模块,所述方法包括:
接收来自所述BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;
将所述第一测试数据写入所述存储空间标识对应的第一存储空间;
从所述第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至所述BIST模块,以使所述BIST模块比较所述第一测试数据和读取到的第一实际数据,得到所述第一存储空间的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述第一测试数据的数量为两个,两个第一测试数据中相同位置处的比特值相反;
所述第一测试数据和所述存储空间标识为中央处理单元CPU写入BIST模块的。
3.根据权利要求1所述的方法,其特征在于,所述内存包括N条数据总线;所述方法还包括:
接收中央处理单元CPU下发的至少两个第二测试数据,所述至少两个第二测试数据中同一数据总线传输的比特值有两种;
通过所述N条数据总线,向所述内存中预先设定的第二存储空间写入每个第二测试数据;
通过所述N条数据总线,从所述第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至所述CPU,以使所述CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
4.根据权利要求3所述的方法,其特征在于,所述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,所述第二比特值在N个第二测试数据中的位置不同。
5.根据权利要求1所述的方法,其特征在于,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述方法还包括:
接收中央处理单元CPU下发的第三测试数据和第四测试数据,所述第三测试数据和第四测试数据的长度与所述内存库中每行存储单元的长度相同,所述第三测试数据和第四测试数据中相同位置处的比特值相反;
通过所述地址总线,向所述内存库的第1行存储单元写入所述第三测试数据;
通过所述地址总线,向所述内存库的第m行存储单元写入所述第四测试数据,所述m大于1且小于等于M;
通过所述地址总线,从所述第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至所述CPU,以使所述CPU比较所述第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果,所述第三实际数据为所述第三测试数据或所述第四测试数据。
6.根据权利要求1所述的方法,其特征在于,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述方法还包括:
接收中央处理单元CPU下发的第五测试数据和第六测试数据,所述第五测试数据和第六测试数据的长度与所述内存库中每行存储单元的长度相同,所述第五测试数据和第六测试数据中相同位置处的比特值相反;
通过所述地址总线,向所述内存库第2至M行存储单元写入所述第五测试数据;
通过所述地址总线,向所述内存库第1行存储单元写入所述第六测试数据;
通过所述地址总线,从所述第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至所述CPU,以使所述CPU比较所述第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果,所述第四实际数据为所述第五测试数据或所述第六测试数据。
7.一种内存测试装置,其特征在于,应用于内存控制器,所述内存控制器上设置了内建自测试BIST模块,或所述内存控制器的上一级硬件模块上设置了BIST模块,所述装置包括:
第一接收模块,用于接收来自所述BIST模块的第一测试数据、以及需要测试的内存的存储空间标识;
第一存储模块,用于将所述第一测试数据写入所述存储空间标识对应的第一存储空间;
第一读取模块,用于从所述第一存储空间中读取第一实际数据,并将读取到的第一实际数据发送至所述BIST模块,以使所述BIST模块比较所述第一测试数据和读取到的第一实际数据,得到所述第一存储空间的测试结果。
8.根据权利要求7所述的装置,其特征在于,所述第一测试数据的数量为两个,两个第一测试数据中相同位置处的比特值相反;
所述第一测试数据和所述存储空间标识为中央处理单元CPU写入BIST模块的。
9.根据权利要求7所述的装置,其特征在于,所述内存包括N条数据总线;所述装置还包括:
第二接收模块,用于接收中央处理单元CPU下发的至少两个第二测试数据,所述至少两个第二测试数据中同一数据总线传输的比特值有两种;
第二存储模块,用于通过所述N条数据总线,向所述内存中预先设定的第二存储空间写入每个第二测试数据;
第二读取模型,用于通过所述N条数据总线,从所述第二存储空间中读取每个第二测试数据对应的第二实际数据,并将读取到的第二实际数据发送至所述CPU,以使所述CPU比较每个第二测试数据和对应的第二实际数据,得到数据总线的测试结果。
10.根据权利要求9所述的装置,其特征在于,所述至少两个第二测试数据包括1个所有比特值均为第一比特值的第二测试数据,和N个具有一个第二比特值的第二测试数据,所述第二比特值在N个第二测试数据中的位置不同。
11.根据权利要求7所述的装置,其特征在于,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述装置还包括:
第三接收模块,用于接收中央处理单元CPU下发的第三测试数据和第四测试数据,所述第三测试数据和第四测试数据的长度与所述内存库中每行存储单元的长度相同,所述第三测试数据和第四测试数据中相同位置处的比特值相反;
第三存储模块,用于通过所述地址总线,向所述内存库的第1行存储单元写入所述第三测试数据;
第四存储模块,用于通过所述地址总线,向所述内存库的第m行存储单元写入所述第四测试数据,所述m大于1,且所述m小于等于M;
第三读取模块,用于通过所述地址总线,从所述第1行存储单元中读取第三实际数据,并将读取到的第三实际数据发送至所述CPU,以使所述CPU比较所述第三测试数据和读取得到的第三实际数据,得到地址总线的第一测试结果,所述第三实际数据为所述第三测试数据或所述第四测试数据。
12.根据权利要求7所述的装置,其特征在于,所述内存包括内存库和地址总线,所述内存库包括M行存储单元;所述装置还包括:
第四接收模块,用于接收中央处理单元CPU下发的第五测试数据和第六测试数据,所述第五测试数据和第六测试数据的长度与所述内存库中每行存储单元的长度相同,所述第五测试数据和第六测试数据中相同位置处的比特值相反;
第五存储模块,用于通过所述地址总线,向所述内存库第2至M行存储单元写入所述第五测试数据;
第六存储模块,用于通过所述地址总线,向所述内存库第1行存储单元写入所述第六测试数据;
第四读取模块,用于通过所述地址总线,从所述第2至M行存储单元中读取第四实际数据,并将读取到的每个第四实际数据发送至所述CPU,以使所述CPU比较所述第五测试数据和读取得到的每个第四实际数据,得到地址总线的第二测试结果,所述第四实际数据为所述第五测试数据或所述第六测试数据。
13.一种内存控制器,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110548898.6A CN112988491B (zh) | 2021-05-20 | 2021-05-20 | 一种内存测试方法、装置及内存控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110548898.6A CN112988491B (zh) | 2021-05-20 | 2021-05-20 | 一种内存测试方法、装置及内存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988491A true CN112988491A (zh) | 2021-06-18 |
CN112988491B CN112988491B (zh) | 2021-08-06 |
Family
ID=76337073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110548898.6A Active CN112988491B (zh) | 2021-05-20 | 2021-05-20 | 一种内存测试方法、装置及内存控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988491B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880181A (zh) * | 2022-07-05 | 2022-08-09 | 摩尔线程智能科技(北京)有限责任公司 | 内存测试方法及装置 |
CN117009157A (zh) * | 2023-06-30 | 2023-11-07 | 深圳市晶存科技有限公司 | 一种模拟游戏场景的device测试方法、控制器、系统和介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5568437A (en) * | 1995-06-20 | 1996-10-22 | Vlsi Technology, Inc. | Built-in self test for integrated circuits having read/write memory |
JP2000215110A (ja) * | 1999-01-25 | 2000-08-04 | Nec Commun Syst Ltd | メモリアドレスバス試験方式 |
CN1427420A (zh) * | 2001-12-20 | 2003-07-02 | 华为技术有限公司 | Ram高速测试控制电路及其测试方法 |
CN1681048A (zh) * | 2004-04-07 | 2005-10-12 | 华为技术有限公司 | 存储器地址线测试方法 |
US7334159B1 (en) * | 2003-09-29 | 2008-02-19 | Rockwell Automation Technologies, Inc. | Self-testing RAM system and method |
CN101814050A (zh) * | 2009-02-19 | 2010-08-25 | 鸿富锦精密工业(深圳)有限公司 | 内存测试方法 |
US20110202803A1 (en) * | 2007-10-15 | 2011-08-18 | Thomas Schneider | Method for testing an address bus in a logic module |
CN105589770A (zh) * | 2015-07-20 | 2016-05-18 | 杭州昆海信息技术有限公司 | 一种故障检测的方法和装置 |
CN110082672A (zh) * | 2018-01-25 | 2019-08-02 | 大唐移动通信设备有限公司 | 一种芯片内逻辑模型的测试方法及装置 |
CN112420117A (zh) * | 2020-11-19 | 2021-02-26 | 深圳忆联信息系统有限公司 | 测试sram的方法、装置、计算机设备及存储介质 |
-
2021
- 2021-05-20 CN CN202110548898.6A patent/CN112988491B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5568437A (en) * | 1995-06-20 | 1996-10-22 | Vlsi Technology, Inc. | Built-in self test for integrated circuits having read/write memory |
JP2000215110A (ja) * | 1999-01-25 | 2000-08-04 | Nec Commun Syst Ltd | メモリアドレスバス試験方式 |
CN1427420A (zh) * | 2001-12-20 | 2003-07-02 | 华为技术有限公司 | Ram高速测试控制电路及其测试方法 |
US7334159B1 (en) * | 2003-09-29 | 2008-02-19 | Rockwell Automation Technologies, Inc. | Self-testing RAM system and method |
CN1681048A (zh) * | 2004-04-07 | 2005-10-12 | 华为技术有限公司 | 存储器地址线测试方法 |
US20110202803A1 (en) * | 2007-10-15 | 2011-08-18 | Thomas Schneider | Method for testing an address bus in a logic module |
CN101814050A (zh) * | 2009-02-19 | 2010-08-25 | 鸿富锦精密工业(深圳)有限公司 | 内存测试方法 |
CN105589770A (zh) * | 2015-07-20 | 2016-05-18 | 杭州昆海信息技术有限公司 | 一种故障检测的方法和装置 |
CN110082672A (zh) * | 2018-01-25 | 2019-08-02 | 大唐移动通信设备有限公司 | 一种芯片内逻辑模型的测试方法及装置 |
CN112420117A (zh) * | 2020-11-19 | 2021-02-26 | 深圳忆联信息系统有限公司 | 测试sram的方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
冯华亮: "走比特测试-主流DSP存储器测试方法学习指南", 《WWW.ELECFANS.COM/EMB/DSP/20140722349047_2.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114880181A (zh) * | 2022-07-05 | 2022-08-09 | 摩尔线程智能科技(北京)有限责任公司 | 内存测试方法及装置 |
CN114880181B (zh) * | 2022-07-05 | 2022-09-06 | 摩尔线程智能科技(北京)有限责任公司 | 内存测试方法及装置 |
CN117009157A (zh) * | 2023-06-30 | 2023-11-07 | 深圳市晶存科技有限公司 | 一种模拟游戏场景的device测试方法、控制器、系统和介质 |
CN117009157B (zh) * | 2023-06-30 | 2024-07-16 | 深圳市晶存科技有限公司 | 一种模拟游戏场景的device测试方法、控制器、系统和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112988491B (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8732533B2 (en) | Devices, methods, and apparatuses for detection, sensing, and reporting functionality for semiconductor memory | |
TWI517172B (zh) | 用於資料感測之方法、裝置及系統 | |
CN114974384B (zh) | 高效的io区段中断系统和方法 | |
US10908990B2 (en) | Shared address counters for multiple modes of operation in a memory device | |
US11656935B2 (en) | Semiconductor memory devices and memory systems | |
CN112988491B (zh) | 一种内存测试方法、装置及内存控制器 | |
WO2019068012A1 (en) | METHOD AND APPARATUS FOR SPECIFYING READ VOLTAGE SHIFTS FOR READING CONTROL | |
US11257563B2 (en) | Apparatus and method for testing a defect of a memory module and a memory system | |
CN109217876B (zh) | 串行器和包括该串行器的存储装置 | |
US20220137859A1 (en) | Computing system and operating method thereof | |
CN113626264A (zh) | 存储器模块、计算系统以及计算系统的启动方法 | |
CN114115715B (zh) | 执行存储器的低时延存取的设备和方法 | |
CN112667445A (zh) | 封装后的内存修复方法及装置、存储介质、电子设备 | |
CN114121112A (zh) | 半导体装置中的气泡破裂寄存器 | |
US8639879B2 (en) | Sorting movable memory hierarchies in a computer system | |
CN117334241A (zh) | 测试方法、测试结构及存储器 | |
US11893276B2 (en) | Apparatuses and methods for data management in a memory device | |
CN113496745A (zh) | 用于修复存储模块缺陷的装置和方法以及存储器系统 | |
WO2023137855A1 (zh) | 存储芯片的测试方法及设备 | |
US11803501B2 (en) | Routing assignments based on error correction capabilities | |
US20230230649A1 (en) | Method and device for testing memory chip | |
US11327867B2 (en) | On-die logic analyzer | |
US20230092302A1 (en) | System for outputting test data from multiple cores and method thereof | |
CN114003515A (zh) | 一种提高嵌入式Flash良率的处理方法及系统 | |
US10229057B2 (en) | Method and apparatus for avoiding bus contention after initialization failure |
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 |