背景技术
嵌入式存储器是片上系统(SoC,System-on-a-Chip)设计中一个非常重要的部分。随着嵌入式存储器的容量快速增长,嵌入式存储器被广泛用来实现寄存器堆、先进先出存储器(FIFO,First In First Out)、数据高速缓冲存储器(D-Cache,Data Cache)、指令高速缓冲存储器(I-Cache,InstructionCache)、发送或接收缓冲存储器,以及用于音频视频数据的存储和用于图形文本文件的处理等。嵌入式存储器的测试无论是在基于核设计的SoC中,还是在复杂的微处理器中都是一个十分重要的问题。
对嵌入式存储器进行测试的方法为:采用设置的测试方式对嵌入式存储器的每个存储单元写入测试数据后,再将写入的测试数据读取出,对读取出的测试数据和写入的测试数据进行比较验证,确定该存储单元是否损坏:如果相同,则没有损坏;如果不相同,则损坏。采用的测试方式可以为存储器扫描测试方式(MSCAN,Memory SCAN),就是对嵌入式存储器中的其中一个存储单元写入全“0”,再读取出进行验证,然后再对嵌入式存储器中的该存储单元写入全“1”,再读取出进行验证,按照这个过程更改存储单元重复执行,直到嵌入式存储器的所有存储单元都操作完。采用的测试方式还可以采用March C方式,该方式对嵌入式存储器中的单个存储单元进行一系列的操作,然后才进行下个单元的操作。操作系列称为March单元。一个March单元可能包括一组简单的MSCAN系列,也可能包括一组复杂的、带有多个读/写操作的操作系列。
目前,嵌入式存储器的测试方法有三种,包括:第一种方法,内建自测试(BIST,Built-in Se1f-Test)方法;第二种方法,通过输入输出(I/O,Input/Output)多路选择器直接访问存储器的方法;第三种方法,通过SoC中的微处理器进行测试方法,下面分别介绍每一种测试方法。
第一种测试方法,BIST方法
BIST是嵌入式存储器测试中应用极为重要的方法,该方法常用于对SoC的量产测试。图1为现有技术采用BIST方法测试嵌入式存储器的结构示意图,如图所示,该测试嵌入式存储器的结构系统中包括作为被测试的嵌入式存储器的静态随机存储器(RAM,Random Access Memory)、自测试控制器、地址产生器、数据产生器及数据接收器,其中,自测试控制器、地址产生器、数据产生器及数据接收器构成的测试电路都设置在SoC中。
在测试时,按照某种测试算法,地址产生器产生RAM要输入测试数据的地址,自测试控制器从地址产生器获取所产生的地址,控制数据产生器产生测试数据写入地址产生器所产生的地址对应的RAM存储单元中,然后由数据接收器将该地址对应的RAM存储单元中的测试数据读取出,并且和从数据产生器接收的该测试数据进行比较验证,确定RAM的该地址对应的存储单元是否工作正常。
可以看出,这种方法可以对嵌入式存储器的各个地址下的存储单元进行测试。这种方法的优点就是整个测试在SoC内部根据测试算法自动完成,无需借助外部自动测试设备(ATE,Auto Test Equipment)完成,但是这种方法需要额外的测试电路设置在SoC中,特别是当嵌入式存储器能够读写的字长较长时,测试电路中的数据接收器所占的面积会很大,且测试数据的输入输出总线都需要耗费大量的布线,增加了SoC的成本开销。另外,由于测试电路设计在SoC内,通常只能实现有限的测试算法。测试中的故障分析也比较困难。
第二种测试方法,通过I/O多路选择器直接访问存储器的方法
这种方法在嵌入式存储器测试中应用非常广泛,常用于对SoC的量产测试。图2a为现有技术通过I/O多路选择器直接访问存储器的结构示意图,如图所示,为了实现对被测试嵌入式存储器,比如RAM的测试,将RAM的接口信号通过I/O多路选择器,映射到SoC的管脚上,也就是SoC接口上,RAM的接口信号包括存储器地址总线信号、存储器数据总线信号及存储器控制总线信号。
具体的测试结构示意图如图2b所示,当进行测试时,ATE可以按照某种测试方式,产生RAM的存储器地址总线、存储器数据总线以及存储器读写控制等信号,依次通过SOC的管脚和I/O多路选择器连接到RAM上,对RAM直接进行具有相应存储地址的存储单元的读/写操作。读/写数据的验证也是通过ATE来完成。
显然,这种方法需要占用SoC中较多的管脚资源,对管脚资源比较少的SoC不适用。该方法的优点为测试算法可以很方便地修改,测试结果也比较直观,便于进行测试分析和设计。
第三种测试方法,通过SoC中的微处理器进行测试方法
这种测试方法多用于测试分析,较少用于量产测试。图3为现有现有技术通过SoC中的微处理器进行测试的结构示意图,如图所示,使用这种测试方法,SoC中的微处理器就像一个测试仪,可以利用该微处理器的汇编程序对嵌入式存储器实现所需的存储器测试算法,同时对从嵌入式存储器得到的测试数据进行校验,完成测试。
这种方法的优点是不需要在SoC上增加额外的测试电路,也不需要对SoC设计进行更改,且可以灵活更改测试算法,其缺点是主要依赖于微处理器,且测试算法通过汇编语言程序来实现,使测试时间相对上述两种测试方法要长,导致过高的测试成本。
可以看出,无论采用以上三种测试方法的哪一种方法对嵌入式存储器进行测试,都存在着优缺点。因此,对于嵌入式存储器的测试来说,如何既能在节省测试成本,又能在减少SoC管脚数目的情况下,完成对SoC中的嵌入式存储器测试,并将该测试应用于量产测试,成为了一个亟待解决的问题。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
现有技术中的第二种测试方法存在的最大缺点就是:虽然使用了I/O多路选择器进行嵌入式存储器的接口信号映射到SoC的管脚上,但是仍然需要多个SoC管脚分别作为嵌入式存储器的存储器地址总线、存储器数据总线及存储器控制总线实现对嵌入式存储器的测试控制。更进一步地,随着嵌入式存储器的位数增加,其测试所需要的SoC管脚数也会越来越多,所以在测试嵌入式存储器时会导致SoC管脚数目较多,不利于SoC设计。
因此,本发明基于现有技术的第二种测试方法,在减少SoC管脚数目及节省测试成本的情况下,提出了测试嵌入式存储器的装置及方法,即在SoC上设置相互连接的存储器测试控制器和存储器测试总线接口单元,存储器测试控制器用于根据ATE输入的测试控制信号,进行状态转换,在相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,将ATE通过存储器测试总线接口单元输入的测试数据写入嵌入式存储器中,或者在其他相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,控制存储器测试总线接口单元读取嵌入式存储器中存储的测试数据并由存储器测试总线接口单元发送给ATE进行验证。
由于在本发明中,ATE输入的存储地址和测试数据都是通过和存储器测试总线单元之间的测试总线接口传输,进而传输给存储器测试控制器,存储器测试控制器根据ATE输入的测试控制信号,进行状态转换,在不同的状态下解析出存储地址和测试数据,对嵌入式存储器进行读/写测试数据的操作。所以,和现有技术中的第二种测试方法相比较,其不需要区分SoC的存储器地址总线接口和存储器数据总线接口,而是将SoC的两个总线接口合并为一个测试总线接口,减少SoC管脚数目及节省测试成本。
图4为本发明提供的嵌入式存储器的测试系统结构示意图,该系统包括嵌入式存储器的测试装置和与其相连的ATE,所述嵌入式存储器的测试装置包括在SoC上的存储器测试控制器和与其相连的存储器测试总线接口单元,存储器测试控制器通过存储器控制总线、存储器地址总线和存储器输入数据总线与嵌入式存储器相连接,存储器测试总线接口单元通过存储器输出数据总线与嵌入式存储器相连接,其中,
存储器测试控制器,用于根据ATE输入的测试控制信号,进行状态转换,在相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,将ATE通过存储器测试总线接口单元输入的测试数据写入嵌入式存储器中,或者在相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,控制存储器测试总线接口单元读取在嵌入式存储器存储的测试数据并由存储器测试总线接口单元发送给ATE进行验证;
存储器测试总线接口单元,用于将ATE发送的存储地址和测试数据发送给存储器测试控制器;在存储器测试控制器的控制下读取在嵌入式存储器存储的测试数据,发送给ATE进行验证。
在该装置中,存储器测试控制器进行状态转换后,会通过存储器控制总线向嵌入式存储器发送相应的控制信号,并通过存储器地址总线将解析出的存储地址发送给嵌入式存储器后,通过存储器输入数据总线进行测试数据的写入操作;或者通过存储器控制总线向嵌入式存储器发送相应的控制信号,并通过存储器地址总线将解析出的存储地址发送给嵌入式存储器后,发送存储器测试总线输出信号给存储器测试总线接口单元,存储器测试总线接口单元通过存储器输出数据总线进行测试数据的读取并发送给ATE的操作。
在该装置中,ATE通过测试总线接口单元和存储器测试控制器相连接,用于发送存储地址、发送测试数据或接收存储器测试总线接口单元所读取的嵌入式存储器中的测试数据。ATE还通过测试控制总线以及时钟信号总线和存储器测试控制器相连接,用于通过时钟信号总线发送测试时钟信号给存储器测试控制器,并在每个测试时钟信号的上升沿通过测试控制总线发送测试控制信号给存储器测试控制器。
在该装置中,存储器测试控制器和存储器测试总线接口单元之间通过测试总线接口(即测试总线接口单元上的管脚)的输入信号线和测试总线接口的输出使能信号线相连接,其中,测试总线接口的输入信号线用于将ATE输入的存储地址和测试数据由存储器测试总线接口单元输入给存储器测试控制器,测试总线接口的输出使能信号线用于由存储器测试控制器发送存储器测试总线输出信号给存储器测试总线接口单元,控制存储器测试总线接口单元读取嵌入式存储器中存储的测试数据并发送给ATE。
具体地说,存储器测试控制器在每个测试时钟信号(TCK,Test Clock)上升沿根据ATE输入的测试控制信号(TCS,Test Control Signals)的变化情况产生不同状态转换,进而在不同的状态下通过存储器地址总线、存储器输入数据总线及存储器控制总线对嵌入式存储器进行控制,通过存储器控制总线发送的控制信号包括:存储器写使能(MWE,Memory Write Enable)信号和存储器读使能(MRE,Memory Read Enable)信号。存储器测试总线接口单元通过测试输入输出接口(TIO,Test Input/Output)接收具有存储地址和测试数据的输入信号(TIO_I),发送给存储器器测试控制器,存储器测试控制器将接收的存储地址解析出来并通过存储器地址总线(MAB,Memory Address Bus)传输给嵌入式存储器,存储器测试控制器将接收的测试数据通过存储器输入数据总线(MDI,Memory Data Input)写入嵌入式存储器,在存储器测试控制器的测试输出信号(TIO_OE)的控制下嵌入式存储器中的测试数据通过存储器输出数据总线(MDO,Memory Data Output)由存储器测试总线接口单元读取,且将读取的测试数据发送到TIO上,传输给ATE。
存储器测试控制器为了保证在不同的状态下发送不同的测试信号,实现不同存储单元的读写测试数据操作,可以通过状态机来实现,该状态机的转换图如图5所示,包括空闲状态、地址状态、预读状态、读状态、读回状态和写状态。该状态机在TCK上升沿根据TCS的不同值进行状态转换,TCS共有四种可能的取值,分别设置为“0”、“1”、“2”和“3”,具体状态转换描述如下:
初始状态为空闲状态,当TCS为“0”时,维持空闲状态;当TCS不等于“0”时,即为“1”、“2”或“3”时,转换到地址状态;
在地址状态下,存储器测试控制器将TIO通过存储器测试总线接口单元输入的嵌入式存储器的存储地址解析出来,进入地址状态后,若TCS等于“0”,则转换到空闲状态,若TCS等于“1”或“3”,则转换到预读状态,若TCS等于“2”,则转换到写状态;
在预读状态下,存储器测试控制器将将在地址状态下解析出来的地址通过MAB发送给嵌入式存储器,在进入预读状态后,无论TCS为何值,都转换到读状态;
在读状态下,将嵌入式存储器中的测试数据读取,存储器测试控制器向嵌入式存储器发送MRE后,进入读状态后,也无论TCS为何值,都转换到读回状态;
在读回状态时,存储器测试控制器通过TIO_OE触发存储器测试总线接口单元,存储器测试总线接口单元通过MDO读取测试数据,并将读取出的测试数据返回到TIO上;当然,如果TCK频率设定不高,在一个时间周期内完成可以将读取出的测试数据直接返回到TIO上,而无需TCK再次采样后再返回到TIO上,这样读状态和读回状态可以合并为读状态;
进入读回状态后,若TCS等于“0”,则转换到地址状态;如果TCS等于“1”,将在地址状态下解析出来的地址顺序递增,转换到读状态,这表明接下来要对递增后的地址进行读操作;若TCS等于“3”,则将在地址状态下解析出来的地址顺序递减,转换到读状态,这表明接下来要对递减后的地址进行读操作;若TCS等于“2”,则转换到写状态,这表明对地址状态下解析出来的写地址进行写操作,即发送MWE后,进入写状态,将测试数据通过MDI写入嵌入式存储器中;
进入写状态后,若TCS等于“0”,转换到地址状态;若TCS等于“1”,将对地址状态下解析出来的地址顺序递增,转换到预读状态,这表明接下来要对递增后的地址进行读操作;若TCS等于“3”,将对地址状态下解析出来的地址顺序递减,转换到预读状态,这表明接下来要对递减后的地址进行读操作;若TCS等于“2”,将对地址状态下解析出来的地址顺序递增,仍然维持写状态,这表明接下来对要递增后的地址进行写操作。
可以看出,采用本发明提供的存储器测试控制器,就可以对嵌入式存储器进行读、写测试数据的操作。图6为本发明每次都重新输入地址对嵌入式存储器进行写-读-写操作过程中,相关信号及存储器测试控制器状态转换时序图,如图所示,在TCK的每个上升沿时,根据TCS的不同,会进行存储地址解析、写测试数据及读测试数据的过程,整个过程如上述具体状态转换描述。
图7为本发明提供的嵌入式存储器的测试方法流程图,其具体步骤为:
步骤701、在SoC上设置相互连接的存储器测试控制器和存储器测试总线接口单元;
步骤702、存储器测试控制器根据ATE输入的测试控制信号,进行状态转换;
步骤703、存储器测试控制器在相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,将ATE通过存储器测试总线接口单元输入的测试数据写入嵌入式存储器中,或者在相应状态下根据ATE通过存储器测试总线接口单元输入的存储地址,控制存储器测试总线接口读取嵌入式存储器中的测试数据并由存储器测试总线接口单元发送给ATE进行验证。
为了更清楚地说明本发明提供的测试装置及测试方法,以下结合具体实施例进行详细说明。
具体实施例一
本实施例以测试一个地址总线位数为8、字宽位数也为8的嵌入式存储器为例说明,用于校验及控制存储器测试控制器的ATE采用的测试方法为扫描测试方式,具体步骤如下:
步骤一,ATE控制TCS为“2”,使存储器测试控制器的状态从空闲状态跳转到地址状态,此时ATE在TIO上输入嵌入式存储器的第一个地址数值,即二进制的00000000,该地址数值通过存储器测试总线接口单元传输给存储器测试控制器,存储器测试控制器在地址状态下将其解析出来并通过MAB传输给嵌入式存储器;保持TCS上输入2使存储器测试控制器从地址状态转换到写状态,此时ATE在TIO上输入写入存储器的数值,即二进制的00000000,该数值通过存储器测试总线接口单元传输给存储器测试控制器,存储器测试控制器发送MWE给嵌入式存储器,通过MDI写入该数值到嵌入式存储器中;ATE在TCS上输入0,存储器测试控制器的状态回到地址状态;
步骤二,ATE控制TCS为“1”,使存储器测试控制器的状态从地址状态转换到预读状态,同时该ATE控制TIO上输入地址数值,即二进制的0000000,该地址数值通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器解析出地址数值并通过MAB传输给嵌入式存储器,保持TCS输入1直到转换到读回状态;在读回状态下通过存储器测试总线接口单元将嵌入式存储器输出的数值输出给ATE,由ATE将该数值和步骤一中写入的数值进行验证,如果不相同,则测试不通过,该ATE控制在TCS上输入“0”,直至返回到空闲状态,结束测试;如果相同,则测试通过,该ATE控制在TCS上输入“0”,存储器测试控制器的状态将返回地址状态;
步骤三,按照步骤一的过程继续执行,将写入嵌入式存储器的数值更改为11111111;
步骤四,按照步骤二的过程继续执行,输出给TIO的数值更改为1111111,用于验证。
步骤一~步骤四完成了嵌入式存储器的一个存储地址所对应的存储单元的测试操作,更改存储地址重复执行步骤一~步骤四,进行嵌入式存储器中的每一个存储地址的测试操作,直到嵌入式存储器的所有存储地址都被测试操作完。
可以看出,本发明可以在ATE上设置不同的测试方式,然后根据不同的测试算法,对存储器测试控制器的状态进行控制,以及将要解析的嵌入式存储器的存储地址及测试数据发送给存储器测试控制器,由存储器测试控制器在不同的状态下进行相应的解析存储地址及写测试数据的操作,然后ATE再通过存储器测试总线接口单元读取该解析存储地址下的测试数据,进行验证。
在具体实现中,任何一种测试算法在其前后要校验的存储单元对应的存储地址都是有一定关系的,主要表现为递增或递减,递增或递减的步长取决于嵌入式存储器的字宽,如果嵌入式存储器的字宽为1个字节则步长为1,依次类推。采用这种方法相对于每次写测试数据及读测试数据都需要重新输入存储地址可以大幅度提升测试时间。为了更清楚地说明本发明的这一个特性,下面结合具体实施例二作详细说明。
实施例二
本实施例以测试一个地址总线位数为32、字宽位数也为32的嵌入式存储器为例说明,用于校验及控制存储器测试控制器的ATE采用的测试方法为March C方式。
该实施例的具体步骤如图8所示,图8为本发明提供的第二个实施例采用March C算法对嵌入式存储器进行测试的方法流程图,其具体步骤为:
步骤一,ATE在存储器测试控制器的TCS上输入“2”,使存储器测试控制器的状态从空闲状态跳转到地址状态,此时,ATE在TIO输入地址数值,即十六进制的00000000,该地址数值通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器将地址数值解析出来通过MAB传输给控制嵌入式存储器;ATE保持在TCS上输入的“2”,使存储器测试控制器的状态从地址状态转换到写状态,此时,ATE在TIO输入测试数据,即十六进制的00000000,该测试数据通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器将测试数据解析出来通过MDI传输给嵌入式存储器;ATE保持在TCS输入“2”,此时存储器测试控制器将地址数值以步长为4进行递增,同时通过MAB将递增后的地址数值传输给嵌入式存储器,存储器测试控制器进入下一个写状态,ATE在TIO保持输入携带测试数据的输入信号,即十六进制的00000000,直到嵌入式存储器的最后一个存储地址被写入测试数据,最后一个地址为十六进制的FFFFFFC。
写完最后一个存储地址后,ATE在TCS上输入“0”,使存储器测试控制器的状态转换到地址状态。
步骤二,ATE在TCS上输入“1”,使存储器测试控制器从地址状态转换到预读状态,此时ATE在TIO输入地址数值,该地址数值为十六进制的00000000,该地址数值通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器将地址数值解析出来并通过MAB传输给嵌入式存储器存储器;ATE保持TCS输入“1”,使存储器测试控制器从地址状态转换到读状态再到读回状态。在读状态下将写入嵌入式存储器的测试数据读取到MDO,在读回状态下通过存储器测试总线接口单元将该测试数据再读回到TIO上并发送给ATE,由ATE验证该测试数据是否为十六进制的00000000,如果不是,则该存储地址的测试没有通过,ATE在TCS上输入“0”,直到使存储器测试控制器返回到空闲状态,结束测试,如果是,则在TCS上输入“2”,使存储器测试控制器转换到写状态,ATE在TIO上输入测试数据,即十六进制的FFFFFFFF,该测试数据通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器将该测试数据解析出来通过MDI写入嵌入式存储器;ATE在TCS上输入1,此时存储器测试控制器将地址数值以步长为4进行递增,并通过MAB将该地址数值传输给嵌入式存储器,开始嵌入式存储器的下一个地址对应的存储单元的验证,直至完成嵌入式存储器的所有存储地址的验证操作,当完成嵌入式存储器的最后一个存储单元的写操作,即地址为十六进制的FFFFFFFC的写测试数据操作后,ATE在TCS上输入“0”,使存储器测试控制器的状态转换到地址状态;
步骤三,ATE在TCS上输入“1”,使得存储器测试控制器的状态从地址状态转换到预读状态,此时ATE在TIO输入地址数值,该地址数值为十六进制的00000000,存储器测试模块通过过存储器测试总线接口单元接收到后,由控制嵌入式存储器测试控制器解析出该地址数据并通过MAB传输给嵌入式存储器;ATE保持TCS输入“1”,使得存储器测试控制器的从地址状态转换到读状态再到读回状态。即在读状态下将写入嵌入式存储器的测试数据读取到MDO,在读回状态下通过存储器测试总线接口单元将该测试数据再读回到TIO上并发送给ATE,由ATE验证该测试数据是否为十六进制的FFFFFFFF,如果不是,则该地址的测试没有通过,ATE在TCS上输入“0”,直到使得存储器测试控制器返回到空闲状态,结束测试,如果是,则在TCS上输入“2”,使得存储器测试控制器转换到写状态,ATE在TIO上输入测试数据,即十六进制的00000000,该测试数据通过存储器测试总线接口传输给存储器测试控制器,由存储器测试控制器解析出该测试数据并通过MDI写入控制嵌入式存储器;ATE在TCS上输入1,此时存储器测试控制器将地址数值以步长为4进行递增,并通过MAB将该地址数值传输给嵌入式存储器,开始嵌入式存储器的下一个存储地址的验证,直至完成嵌入式存储器的所有存储地址的校验操作,当完成嵌入式存储器的最后一个存储地址的,即地址为十六进制的FFFFFFFC的写操作后,ATE在TCS上输入“0”,使得存储器测试控制器的状态转换到地址状态。
步骤四,ATE在TCS上输入“1”,使存储器测试控制器的状态从地址状态转换到预读状态,此时ATE在TIO输入地址数值,该地址数值为十六进制的FFFFFFFC,存储器测试模块通过过存储器测试总线接口单元接收到后,由存储器测试控制器解析出该地址数据并通过MAB传输给嵌入式存储器;ATE保持TCS输入“1”,使存储器测试控制器的地址状态转换到读状态再到读回状态。在读状态下将写入嵌入式存储器的测试数据读取到MDO,在读回状态下通过存储器测试总线接口单元将该测试数据再读回到TIO上并送给ATE,由ATE验证该测试数据是否为十六进制的00000000,如果不是,则该地址的测试没有通过,ATE在TCS上输入“0”,直到使存储器测试控制器返回到空闲状态,结束测试,如果是,则在TCS上输入“2”,使存储器测试控制器转换到写状态,ATE在TIO上输入携带测试数据的输入信号,即十六进制的FFFFFFFF,该测试数据通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器解析出该测试数据并通过MDI写入嵌入式存储器;ATE在TCS上输入3,此时存储器测试控制器将地址数值以步长为4进行递减并通过MAB将该地址数值传输给嵌入式存储器,开始嵌入式存储器的下一个地址对应的存储单元的验证,直至完成嵌入式存储器的所有存储地址的验证操作,当完成嵌入式存储器的最后一个存储地址的,即地址为十六进制的00000000对应的存储地址的写操作后,ATE在TCS上输入“0”,使存储器测试控制器的状态转换到地址状态。
步骤五,ATE在TCS上输入“1”,使存储器测试控制器的状态从地址状态转换到预读状态,此时ATE在TIO输入地址数值,该地址数值为十六进制的FFFFFFFC,存储器测试模块通过过存储器测试总线接口单元接收到后,由存储器测试控制器解析出该地址数据并通过MAB传输给嵌入式存储器;ATE保持TCS输入“1”,使存储器测试控制器从地址状态转换到读状态再到读回状态。在读状态下将写入嵌入式存储器的测试数据读取到MDO,在读回状态下通过存储器测试总线接口单元将该测试数据再读回到TIO上并发送给ATE,由ATE验证该测试数据是否为十六进制的FFFFFFFF,如果不是,则该地址的测试没有通过,ATE在TCS上输入“0”,直到使存储器测试控制器返回到空闲状态,结束测试,如果是,则在TCS上输入“2”,使存储器测试控制器转换到写状态,ATE在TIO上输入测试数据,即十六进制的00000000,该测试数据通过存储器测试总线接口单元传输给存储器测试控制器,由存储器测试控制器解析出该测试数据并通过MDI写入嵌入式存储器;ATE在TCS上输入3,此时存储器测试控制器将地址数值以步长为4进行递减并通过MAB将该地址数值传输给嵌入式存储器,开始嵌入式存储器的下一个地址对应的验证,直至完成嵌入式存储器的所有存储地址的验证操作,当完成嵌入式存储器的最后一个存储地址的,即地址为十六进制的00000000对应的存储单元的写操作后,ATE在TCS上输入“0”,使存储器测试控制器的状态转换到地址状态,ATE保持在TCS上输入0,使存储器测试控制器的状态转换到空闲状态,结束整个测试过程。
类似地,采用图8所示的方法,也可以方便地实现March C方式的其他变换形式。
通过具体实施例一以及具体实施例二的举例说明,本发明还可以有很多方式实现对嵌入式存储器的测试,比如如果嵌入式存储器的地址总线位数超过数据总线位数,也可以对存储器测试控制器的地址状态所占的TCK进行增加来实现对嵌入式存储器的地址总线写入或读出测试数据来实现。
可以看出,本发明提供的嵌入式存储器的测试方法在现有的第二种测试方法的基础上,提出了直接通过存储器测试控制器和存储器测试总线接口单元相互配合,ATE通过控制存储器测试控制器和存储器测试总线接口单元就可以实现对嵌入式存储器的测试,由于在本发明中,ATE输入的存储地址和测试数据都是通过和存储器测试总线之间的测试总线接口单元传输,进而传输给存储器测试控制器,存储器测试控制器根据ATE输入的测试控制信号,进行状态转换,在不同的状态下解析出存储地址和测试数据,对嵌入式存储器进行读/写测试数据的操作,所以,和现有技术中的第二种测试方法相比较,其不需要区分SoC的地址总线接口和数据总线接口,而是将SoC的两个总线接口合并为一个测试总线接口,因此,本发明减少了SoC的管脚数目,可以在减少SoC管脚数目及节省测试成本的情况下,完成对嵌入式存储器的测试。
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。