存储器内建自测试方法及其电路、芯片与流程

未命名 09-18 阅读:89 评论:0

1.本公开总体说来涉及存储器测试技术领域,更具体地讲,涉及一种存储器内建自测试方法及其电路、芯片。


背景技术:

2.现有soc(system on chip,数字芯片系统)在进行mbist(memory build-in-self test,存储器内建自测试)时,通常使用jtag(joint test action group,联合测试工作组)接口作为数据传输接口,以实现与外部tap(test access port,测试访问口)之间的数据通信。使用jtag控制mbist完成存储器测试是芯片设计中较常使用的有效dft(design for test,可测性设计)方法,它解决了mbist带来的冗余复杂的复用设计及复用资源的竞争。
3.然而,如果采用jtag接口作为对外的数据传输接口,则需要在芯片设计中为jtag额外生成引脚,这样做无疑会增加成本,并且会增加芯片面积,不利于soc芯片的集成。


技术实现要素:

4.本公开的示例性实施例在于提供一种存储器内建自测试方法及其电路、芯片,其能够解决为了进行存储器内建自测试,需要在芯片中为jtag额外生成引脚的问题。
5.根据本公开实施例的第一方面,提供一种存储器内建自测试电路,所述存储器内建自测试电路包括:选择模块,用于根据通过apb总线从apb总线主设备接收到的模式选择信号,选择读写模式或测试模式;测试模块,用于在所述测试模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;读写模块,用于在所述读写模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。
6.可选地,所述测试模块包括:信号处理模块,用于在所述测试模式下,对通过所述apb总线从所述apb总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入所述信号处理模块中的寄存器组;测试控制模块,用于在所述测试模式下,根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入所述寄存器组;其中,所述信号处理模块还用于从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。
7.可选地,所述测试控制模块还用于根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;所述信号处理模块还用于响应于所述apb总线主设备通过所述apb总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。
8.可选地,所述选择模块通过所述apb总线连接到所述apb总线主设备,所述信号处理模块和所述读写模块分别通过所述apb总线连接到所述选择模块,所述测试控制模块连接到所述读写模块,所述读写模块连接到所述芯片内的存储器;其中,所述测试控制模块根据所述寄存器组内的信息产生地址线测试或数据线测试所需的测试信号,并将所述测试信
号传输到所述读写模块,以通过所述读写模块向所述待测试存储器写入或读取数据。
9.可选地,所述测试控制模块通过状态机实现对所述待测试存储器的地址线测试和数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的处理。
10.可选地,所述第二子状态机用于对所述待测试存储器的数据线进行n次测试;其中,在每次对所述待测试存储器的数据线进行测试时,所述测试控制模块将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,所述n次测试所使用的测试数据各不相同,所述n次测试所使用的测试算法各不相同,n为大于1的整数。
11.可选地,所述第二子状态机包括:n个写状态、n个读状态以及n个匹配状态,其中,在第i个写状态下执行以下处理:将第i次测试所使用的测试数据依次写入所述待测试存储器的各个存储地址,其中,在所述各个存储地址均被写入测试数据后,跳转到第i个读状态;在第i个读状态下执行以下处理:判断j是否大于m,如果j小于或等于m,则从第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态;在第i个匹配状态下执行以下处理:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将所述第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态;其中,i为大于0且小于或等于n的整数,i和j的初始值为1,m为所述待测试存储器中的存储地址的总个数。
12.可选地,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于m且i等于n,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下处理:根据所述第一匹配错误计数器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
13.可选地,所述读写模块根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;所述读写模块根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。
14.根据本公开实施例的第二方面,提供一种存储器内建自测试方法,所述存储器内建自测试方法包括:根据通过apb总线从apb总线主设备接收到的模式选择信号,选择读写模式或测试模式;在所述测试模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;在所述读写模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。
15.可选地,所述根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作的步骤包括:对通过所述apb总线从所述apb总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入用于存储器测试的寄存器组;根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入所述寄存器组;从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述apb
总线传输到所述apb总线主设备。
16.可选地,还包括:根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;响应于所述apb总线主设备通过所述apb总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。
17.可选地,所述对芯片内的待测试存储器进行测试操作的步骤包括:通过状态机对所述待测试存储器进行地址线测试和/或数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的步骤。
18.可选地,所述第二子状态机用于对所述待测试存储器的数据线进行n次测试;其中,在每次对所述待测试存储器的数据线进行测试时,将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,所述n次测试所使用的测试数据各不相同,所述n次测试所使用的测试算法各不相同,n为大于1的整数。
19.可选地,所述第二子状态机包括:n个写状态、n个读状态以及n个匹配状态,其中,在第i个写状态下执行以下步骤:将第i次测试所使用的测试数据依次写入所述待测试存储器的各个存储地址,其中,在所述各个存储地址均被写入测试数据后,跳转到第i个读状态;在第i个读状态下执行以下步骤:判断j是否大于m,如果j小于或等于m,则从第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态;在第i个匹配状态下执行以下步骤:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将所述第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态;其中,i为大于0且小于或等于n的整数,i和j的初始值为1,m为所述待测试存储器中的存储地址的总个数。
20.可选地,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于m且i等于n,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下步骤:根据所述第一匹配错误计数器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
21.可选地,还包括:根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;和/或,根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。
22.根据本公开实施例的第三方面,提供一种芯片,所述芯片包括:如上所述的存储器内建自测试电路。
23.根据本公开的示例性实施例的存储器内建自测试方法及其电路、芯片,提出了一种基于apb总线的mbist电路,通过apb总线不仅可以对存储器进行读写操作,还能够对存储器进行内建自测试,一方面进行mbist不需要通过芯片引脚与外部测试访问装置进行通信,仅通过apb总线与芯片内部的apb总线主设备进行通信即可,节省了芯片对外的开销;另一方面,无需为了进行mbist而额外加增芯片引脚,从而节省了成本、降低了芯片面积,并能够
缩短芯片设计和开发周期。
24.将在接下来的描述中部分阐述本公开总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本公开总体构思的实施而得知。
附图说明
25.通过下面结合示例性地示出实施例的附图进行的描述,本公开示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:图1示出现有的存储器内建自测试电路的示例;图2示出根据本公开的示例性实施例的存储器内建自测试电路的结构框图;图3示出根据本公开的示例性实施例的apb总线地址映射归属的示例;图4示出根据本公开的另一示例性实施例的存储器内建自测试电路的结构框图;图5示出根据本公开的示例性实施例的用于存储器测试的状态机的状态转移图的示例;图6示出根据本公开的示例性实施例的数据线扫描的工作流程图;图7示出根据本公开的示例性实施例的march算法实现框图的示例;图8示出根据本公开的示例性实施例的第二子状态机的状态转移图的示例;图9示出根据本公开的示例性实施例的第一子状态机的状态转移图的示例;图10示出根据本公开的示例性实施例的地址线测试控制仿真波形示意图;图11示出根据本公开的示例性实施例的读写模块的结构示意图;图12示出根据本公开的示例性实施例的sram写使能信号产生逻辑图;图13示出根据本公开的示例性实施例的sram读使能信号产生逻辑图;图14示出根据本公开的示例性实施例的直接读写sram时序图;图15示出根据本公开的示例性实施例的存储器内建自测试方法的流程图。
具体实施方式
26.现将详细参照本公开的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本公开。
27.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
28.在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括a和b之中的至少一个”即包括如下三种并列的情况:(1)包括a;(2)包括b;(3)包括a和b。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
29.图1示出现有的存储器内建自测试电路的示例。如图1所示,现有的存储器内建自
测试电路通常采用jtag接口作为对外的数据传输接口,jtag的基本原理是在器件内部定义一个tap,以实现与芯片外部tap之间的数据通信,从而外部专用的jtag测试工具能够对内部节点进行测试。而jtag最少需使用四个信号,包括tck,trst,tms,tdi和tdo。这就需要在芯片中为jtag额外生成引脚,这样做无疑会增加成本,并且会增加芯片面积,不利于soc芯片的集成。
30.而本公开提出了一种基于apb总线的mbist电路,通过apb总线不仅可以对存储器进行读写操作,还能够对存储器进行内建自测试,一方面进行mbist不需要通过芯片引脚与外部测试访问装置进行通信,仅通过apb总线与芯片内部的apb总线主设备进行通信即可,节省了芯片对外的开销;另一方面,无需为了进行mbist而额外加增芯片引脚,换言之,无需设置jtag引脚,缩减了芯片的引脚,从而节省了成本、降低了芯片面积,并能够缩短芯片设计和开发周期。
31.图2示出根据本公开的示例性实施例的存储器内建自测试电路的结构框图。
32.参照图2,根据本公开的示例性实施例的存储器内建自测试电路1000包括:选择模块100、测试模块200、读写模块300。
33.具体说来,选择模块100用于根据通过apb总线从apb总线主设备2000接收到的模式选择信号,选择读写模式或测试模式。
34.具体地,选择模块100如从apb总线主设备2000接收到指示选择读写模式的信号,则选择读写模式;如从apb总线主设备2000接收到指示选择测试模式的信号,则选择测试模式。
35.图3示出根据本公开的示例性实施例的apb总线地址映射归属的示例。参照图3,作为示例,上述模式选择信号可为通过apb总线从apb总线主设备2000接收到的地址信号i_paddr。例如,可利用地址信号i_paddr的高4位判断地址信号的归属,如果接收到的地址信号的高4位为4’b0000,则将通过apb总线从apb总线主设备2000接收到的片选信号i_pselx作为读写模块300的使能信号o_sram_psel,从而将apb总线路由到读写模块300进行处理,以使apb总线主设备2000直接对芯片内的存储器3000进行读写操作;如果接收到的地址信号的高4位为4’b0001,则将通过apb总线从apb总线主设备2000接收到的片选信号i_pselx作为测试模块200的使能信号o_reg_psel,从而将apb总线路由到测试模块200进行处理,以使apb总线主设备2000直接对芯片内的存储器3000进行测试操作。即,本公开实现了通过一个apb接口(即,选择模块100)不仅可以读写存储器,还可以对存储器进行在线测试。
36.apb总线主设备2000即芯片内的apb master,作为示例,apb总线主设备2000可为芯片的主控制器。
37.测试模块200用于在测试模式下,根据通过apb总线从apb总线主设备2000接收到的信号,对芯片内的待测试存储器3000进行测试操作。
38.作为示例,测试模块200可对待测试存储器3000进行地址线测试和/或数据线测试。
39.应该理解,可使用适当的算法来实现地址线测试和数据线测试。作为示例,可使用地址遍历算法来实现地址线测试,可使用march算法来实现数据线测试。
40.下面将会结合图4至图10来详细描述测试模块200的示例性实施例,此处暂不展开。
41.读写模块300用于在读写模式下,根据通过apb总线从apb总线主设备2000接收到的信号,对芯片内的待读写存储器3000进行读写操作。
42.应该理解,待测试存储器3000即需要对其进行测试的芯片内存储器,待读写存储器3000即需要对其进行读写的芯片内存储器。值得注意的是,待测试存储器3000和待读写存储器3000可能为同一个存储器,也可能为不同的存储器,例如,可先对一个存储器3000进行测试操作,测试通过后再对该存储器3000进行读写操作。而具体何时对哪一存储器进行测试、对哪一存储器进行读写均由apb总线主设备2000决定。
43.存储器3000的类型可包括但不限于:sram(static random-access memory,静态随机存取存储器)。应该理解,也可包括其他类型,例如,flash存储器等,本公开对此不作限制。
44.作为示例,选择模块100通过apb总线连接到apb总线主设备2000,测试模块200和读写模块300分别通过apb总线连接到选择模块100,换言之,测试模块200和读写模块300经由选择模块100连接到总线主设备2000。
45.作为示例,测试模块200可连接到读写模块300,读写模块300连接到芯片内的存储器3000,换言之,测试模块200经由读写模块300连接到存储器3000。作为示例,测试模块200可产生地址线测试或数据线测试所需的测试信号,并将产生的测试信号传输到读写模块300,以通过读写模块300向待测试存储器3000写入测试数据或读取数据,即,测试模块200通过读写模块300来完成测试。
46.作为示例,测试信号可具体包括:数据信号、地址信号、读使能信号、写使能信号。
47.图4示出根据本公开的另一示例性实施例的存储器内建自测试电路1000的结构框图。
48.参照图4,测试模块200可包括:信号处理模块201和测试控制模块202。
49.具体说来,信号处理模块201用于在测试模式下,对通过apb总线从apb总线主设备2000接收到的信号进行解帧处理,并将解帧处理得到的信息写入信号处理模块201中的寄存器组。
50.应该理解的是,信号处理模块201中的寄存器组具体包括多个例化定义好的寄存器,不同寄存器用于存储不同类型的信息,例如,可包括但不限于用于存储测试结果的寄存器、用于存储测试状态信息的寄存器、用于存储测试数据的寄存器、用于指示开始测试寄存器等用于存储与存储器测试相关的信息的寄存器,在此不再赘述。并且,寄存器组内的寄存器的类型也不局限于单个类型,例如,可包括只读寄存器和可读可写寄存器两种类型。
51.测试控制模块202用于在测试模式下,根据寄存器组内的信息,对待测试存储器3000进行测试操作,并将测试结果写入寄存器组。
52.信号处理模块201还用于从寄存器组读取测试结果进行组帧处理,并将组帧处理结果通过apb总线传输到apb总线主设备2000。作为示例,信号处理模块201可响应于通过apb总线从apb总线主设备2000接收到的测试结果访问信号,从寄存器组读取测试结果进行组帧处理,并将组帧处理结果上报到apb总线主设备2000。
53.作为示例,测试控制模块202还用于根据测试状态的改变,对寄存器组内的用于表征当前测试状态的信息进行设置。相应地,信号处理模块201还用于响应于apb总线主设备2000通过apb总线发送的状态访问信号,从寄存器组读取用于表征当前测试状态的信息进
行组帧处理,并将组帧处理结果通过apb总线传输到apb总线主设备2000。
54.作为示例,信号处理模块201通过apb总线连接到选择模块100,测试控制模块202连接到读写模块300。例如,测试控制模块202与读写模块300可采用自定义信号进行连接,如写数据、写使能、读数据、读使能等自定义信号。
55.作为示例,测试控制模块202根据寄存器组内的信息产生地址线测试或数据线测试所需的测试信号,并将测试信号传输到读写模块300,以通过读写模块300向待测试存储器3000写入测试数据或读取数据。从而,测试控制模块202能够根据读写模块300读取的数据与测试数据进行匹配,以得到测试结果。
56.根据本公开的示例性实施例,通过信号处理模块201实现对上下游数据需要写入和读出寄存器组进行处理(例如,解帧、组帧处理),具体地,对来自apb总线主设备2000的信号先进行解帧处理,然后将信息送入到定义好的寄存器中,供测试控制模块202进行读取使用;在测试控制模块202将需要上报的信息写入规定好的寄存器后,对这些信息进行读取并组帧后通过apb总线上传给apb总线主设备2000。
57.下面示出根据本公开的示例性实施例的信号处理模块201的部分功能代码的示例,其示出了组解帧功能的rtl(registertransferlevel,寄存器传输级)实现示例。
58.//对总线的读写使能操作assignwr_en=i_reg_psel&(~i_reg_penable)&i_reg_pwrite;assignrd_en=i_reg_psel&(~i_reg_penable)&(~i_reg_pwrite);//对总线解帧操作if(wr_en==1'b1)case(paddr)reg0:reg0_wr_en=1'b1;reg1:reg1_wr_en=1'b1;reg2:reg2_wr_en=1'b1;......reg(n-1):reg(n-1)_wr_en=1'b1;default:beginreg0:reg0_wr_en=1'b0;reg1:reg1_wr_en=1'b0;reg2:reg2_wr_en=1'b0;
……
reg(n-1):reg(n-1)_wr_en=1'b0;endendcase//对总线组帧操作if(rd_en==1'b1)case(paddr)reg0:prdata<=reg0;
reg1:prdata<=reg1;reg2:prdata<=reg2;
……
reg(n-1):prdata<=reg(n-1);default:prdata<={data_width{1'b0}};endcase根据本公开的示例性实施例,通过测试控制模块202实现对寄存器组中可读可写寄存器值的执行以及执行后结果的缓存,并能根据apb总线主设备2000的指令需求产生对应的测试信号进行测试。
59.本公开的示例性实施例采用apb总线作为存储器内建自测试电路1000与soc的通信方式,这种方式在soc设计中能够得到很好的运用。存储器测试过程及测试状态可以通过apb总线实时反馈给soc,具体地,信号处理模块201通过apb的方式与apb总线主设备进行连接,更便于soc的主控制器等对信号处理模块201中的寄存器组进行读写,以控制测试过程及访问测试结果、测试状态等。而现有的存储器内建自测试电路采用jtag作为与外部的通信方式,并且外部还需要连接tap控制器,一方面非常不便于现代数字ic设计的集成,另一方面,增加了芯片对外的开销。此外,由于jtag采用串行通信,需要几个tck周期(testclock,测试接口中的时钟周期)才能启动存储器自测试,这无疑增加了测试时间,而本公开由于通过芯片内apb总线进行芯片主设备与mbist电路之间的通信,能够快速启动存储器自测试,从而有效缩短测试时间。
60.作为示例,测试控制模块202可通过状态机实现对待测试存储器的地址线测试和数据线测试。图5示出根据本公开的示例性实施例的用于存储器测试的状态机的状态转移图的示例。
61.参照图5,用于存储器测试的状态机包括:初始状态c0、仲裁状态c1、用于地址线测试的第一子状态机c2、用于数据线测试的第二子状态机c3、结束状态c4。
62.在仲裁状态c1下执行判断跳转入第一子状态机c2或第二子状态机c3的处理。作为示例,信号处理模块201可通过apb总线从apb总线主设备2000接收测试指令,并将解帧处理得到的信息写入信号处理模块201中的寄存器组,测试控制模块202从寄存器组中读取该信息,并根据该信息判断跳转入第一子状态机c2还是第二子状态机c3。
63.作为示例,第二子状态机c3用于对待测试存储器的数据线进行n次测试,n为大于1的整数。n次测试所使用的测试数据各不相同,此外,n次测试所使用的测试算法也可各不相同,可自定义每次所使用的测试算法。优选地,n的取值可为6。根据本公开,在算法实现上,数据线测试可采用6种自定义算法运行,比传统的算法更加可靠;并且通过一个状态机实现多种算法,比传统的算法实现更加简便。
64.在每次对待测试存储器3000的数据线进行测试时,测试控制模块202将本次测试所使用的测试数据写入待测试存储器3000的各个存储地址,然后依次从每个存储地址读取数据,并将读取的数据与本次测试所使用的测试数据进行匹配,当不匹配时将第一匹配错误计数器的计数加1。
65.作为示例,下面示出根据本公开的示例性实施例的用于存储器测试的状态机的rtl伪代码。
66.case(scan_state)//主状态机idle://初始状态arbit://仲裁状态,判断进入地址线扫描还是数据线扫描状态scan_addr:case(scan_addr_state)//子状态机1,对地址线扫描scan_addr_idle://子状态机1的初始状态scan_addr_write://写数据scan_addr_read://读数据compar://读写数据对比scan_addr_finished://地址线扫描结束default:scan_addr_state<=scan_addr_idle;endcasescan_data:case(scan_data_state)//子状态机2,对数据线扫描step0_wr://写数据step0_rd://读数据match0://对比step1_wr://执行算法1step1_rd:match1:step2_wr://执行算法2step2_rd:match2:step3_wr://执行算法3step3_rd:match3:step4_wr://执行算法4step4_rd:match4:step5_wr://执行算法5step5_rd:match5:step6_wr://执行算法6step6_rd:match6:step_stop://数据线扫描结束default:scan_data_state<=step_stop;endcasefinished://主状态机结束
default:scan_state<=idle;endcase图6示出根据本公开的示例性实施例的数据线扫描的工作流程图。图7示出根据本公开的示例性实施例的march算法实现框图的示例。参照图6和图7,使用march算法对存储器数据线进行自动扫描。将test_datan作为扫描测试数据,依次使用test_data0-test_data5六组数据作为扫描测试数据,执行六次march算法。
67.作为示例,初始可先向待测试存储器3000的全部单元(也即,各个地址)中写32’b0,然后读出并进行匹配。接下来,可将全部单元改写为test_datan,依次对test_data0-test_data5六组数据执行march算法,如果存在不匹配的情况,则上报扫描fail结果;如果全部匹配,则上报扫描pass结果。
68.图8示出根据本公开的示例性实施例的第二子状态机的状态转移图的示例。
69.参照图8,第二子状态机包括:n个写状态、n个读状态以及n个匹配状态。
70.具体地,在第i个写状态下执行以下处理:将第i次测试所使用的测试数据依次写入待测试存储器3000的各个存储地址,其中,在各个存储地址均被写入测试数据后,跳转到第i个读状态。换言之,从第i个写状态跳转到第i个读状态的跳转条件是:待测试存储器3000的各个存储地址均被写入测试数据。i为大于0且小于或等于n的整数,i的初始值为1。
71.在第i个读状态下执行以下处理:判断j是否大于m,如果j小于或等于m,则从待测试存储器3000的第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态。j的初始值为1,m为待测试存储器3000中的存储地址的总个数。
72.在第i个匹配状态下执行以下处理:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态。
73.此外,第二子状态机还可包括:数据线测试结果上报状态。如果j大于m且i等于n,则从第i个读状态跳转到数据线测试结果上报状态;在数据线测试结果上报状态下执行以下处理:根据第一匹配错误计数器的计数结果,将待测试存储器3000的数据线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
74.作为示例,下面示出根据本公开的示例性实施例的第二子状态机的rtl伪代码。
75.case(scan_data_state)step0_wr:begin//执行初始状态,并读出进行匹配。
76.scan_wen<=1'b1;scan_wdata<=32'd0;if(scan_addr>=16'd1023)beginscan_data_state<=step0_rd;scan_wen<=1'b0;scan_addr<=16'd0;endelseif(scan_addr<16'd1023&scan_wen==1'b1)begin
scan_addr<= scan_addr + 16'b1;scan_wdata<= 32'd0;scan_data_state<= step0_wr;scan_wen<= 1'b1;endendstep0_rd:beginscan_ren<= 1'b1;if(scan_addr> 16'd1023)beginscan_data_state<= step1_wr;scan_addr<= 16'd0;scan_ren<= 1'b0;endelse if(scan_addr<= 16'd1023&scan_ren == 1'b1)beginscan_addr<= scan_addr + 1'b1;scan_ren<= 1'b0;scan_data_state<= match0;endendmatch0:beginscan_rdata<= i_scan_rdata;scan_ren<= 1'b0;if(dely_cnt == 16'd1)beginscan_data_state<= step0_rd;dely_cnt<= 16'd0;endelse begindely_cnt<= dely_cnt + 1'b1;endif(scan_rdata != 32'd0)beginerror_cnt<= error_cnt + 1'b1;endend//执行前5次算法step6_wr:begin//执行第6次算法scan_wen<= 1'b1;scan_wdata<= i_test_data5;if(scan_addr>= 16'd1023)beginscan_data_state<= step6_rd;scan_wen<= 1'b0;
scan_addr<=16'd0;endelseif(scan_addr<16'd1023&scan_wen==1'b1)beginscan_addr<=scan_addr+1'b1;scan_wdata<=i_test_data5;scan_data_state<=step6_wr;scan_wen<=1'b1;endendstep6_rd:beginscan_ren<=1'b1;if(scan_addr>16'd1023)beginscan_data_state<=step_stop;scan_addr<=16'd0;scan_ren<=1'b0;endelseif(scan_addr<=16'd1023&scan_ren==1'b1)beginscan_addr<=scan_addr+1'b1;scan_ren<=1'b0;scan_data_state<=match6;endendmatch6:beginscan_rdata<=i_scan_rdata;scan_ren<=1'b0;if(dely_cnt==16'd1)beginscan_data_state<=step6_rd;dely_cnt<=16'd0;endelsebegindely_cnt<=dely_cnt+1'b1;endif(scan_rdata!=i_test_data5)beginerror_cnt<=error_cnt+1'b1;endendstep_stop:begin//退出算法执行过程,并上报测试结果data_scan_status<=2'b11;scan_state<=finished;scan_data_state<=step0_wr;
if(error_cnt != 16'd0)begino_data_scan_result<= 1'b1;endelse begino_data_scan_result<= 1'b0;endenddefault: scan_data_state<= step_stop;endcase可根据apb总线主设备2000的测试指令判断是否进入第二子状态机(scan_data_state),如进入,将数据线扫描状态寄存器scan_data_status由2’b00置为2’b01,代表正在执行数据线扫描操作。
77.当状态机进入到第二子状态机(scan_data_state)后,首先进入step0_wr状态(写状态)执行初始状态的写操作,即将待测试存储器3000的所有地址(这里是1024个地址空间)写零,在写状态下会将scan_wen置1,用来操作待测试存储器3000的写控制,同时会将累加的地址送给待测试存储器3000的地址线,当所有地址写完之后(scan_addr寄存器累加到1023时)进入到step0_rd状态(读状态)执行初始状态的读操作,在读状态下会将scan_ren置1,用来操作待测试存储器3000的读控制,将从待测试存储器3000读出的数据传到scan_rdata寄存器中缓存,然后状态机会进入match0状态(匹配状态)执行初始状态的匹配操作,将读出来的数据scan_rdata与之前写进去的数据(初始状态写的0)进行匹配,如果不同,error_cnt(第一匹配错误计数器)将会累加计数,否则不会累加;当待测试存储器3000的所有单元都读出并匹配完成后,状态机会进入到下一个算法的轮询。依次类推执行多次测试算法。
78.当第二子状态机进入最后一次算法写状态(step6_wr状态),执行第6次测试算法的写操作,即将待测试存储器3000的所有地址写0x5a5a_5a5a,在写状态下scan_wen会置1,用来操作待测试存储器3000的写控制,同时会将累加的地址送给待测试存储器3000的地址线,当所有地址写完之后进入到step6_rd状态执行第6次算法的读操作,在读状态下会将scan_ren置1,用来操作待测试存储器3000的读控制,将从待测试存储器3000读出的数据传到scan_rdata寄存器中缓存,然后状态机会进入到match6状态,match6状态为第6次算法的匹配操作,将读出来的数据scan_rdata与之前写进去的数据(写的0x5a5a_5a5a)进行匹配,如果不同,error_cnt(第一匹配错误计数器)将会累加计数,否则不会累加;当待测试存储器3000的所有单元都读出并匹配完成后,第二子状态机会进入step_stop状态执行完成数据扫描操作,在该状态下会将scan_data_status值由2’b01置为2’b11,代表数据线扫描已经完成;并检查error_cnt的计数结果;如果计数器结果为0,代表此次扫描过程中没有错误;否则,代表此次扫描过程有错误。如果扫描有错误则将扫描结果寄存器data_scan_result置1;否则,置0。
79.图9示出根据本公开的示例性实施例的第一子状态机的状态转移图的示例。
80.参照图9,第一子状态机包括:写状态、读状态、匹配状态以及地址线测试结果上报状态。
81.具体地,在所述写状态下执行以下处理:将地址线测试所使用的测试数据依次写入待测试存储器3000的多个指定存储地址,其中,在所有指定存储地址均被写入测试数据后,跳转到所述读状态。作为示例,所述多个指定存储地址可包括但不限于:全0地址,全1地址,1010
……
1010地址,0101
……
0101地址。
82.在所述读状态下执行以下处理:判断k是否大于p,如果k小于或等于p,则从所述多个指定存储地址中的第k个存储地址读取数据,并令k=k+1,其中,在每次读取数据后,跳转到所述匹配状态;如果k大于p,则跳转到地址线测试结果上报状态。k为大于0且小于或等于p的整数,k的初始值为1,p为所述多个指定存储地址的总个数。
83.在所述匹配状态下执行以下处理:将从第k个存储地址读取的数据与地址线测试所使用的测试数据进行匹配,并当不匹配时将第二匹配错误计数器的计数加1,其中,在每次匹配后,跳转到所述读状态。
84.在所述地址线测试结果上报状态下执行以下处理:根据第二匹配错误计数器的计数结果,将待测试存储器3000的地址线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征地址线测试已完成的信息。
85.图10示出根据本公开的示例性实施例的地址线测试控制仿真波形示意图。图10为截取的地址线扫描波形示意图,其中mbist_clk为工作时钟,mbist_addr_state为第一子状态机,mbist_addr为地址线,mbist_wdata为写数据线,mbist_wen为写使能,mbist_ren为读使能,mbist_rdata为读数据线,error_cnt为扫描过程中累计错误个数的计数器数。
86.作为示例,读写模块300主要用于对外部信号的逻辑控制转换以及跨时钟域处理操作。由于不同类型的存储器其读写控制逻辑不一样,当需要读写或者测试其它类型的存储器时,只需要更改这部分的逻辑控制功能就可以达到读写或测试的目的。例如,读写模块300可根据待读写存储器3000的类型,将通过apb总线从apb总线主设备2000接收到的写使能信号转换成适于待读写存储器3000的写使能信号;读写模块300可根据待读写存储器3000的类型,将通过apb总线从apb总线主设备2000接收到的读使能信号转换成适于待读写存储器3000的读使能信号。根据本公开的示例性实施例,能够对apb接口与存储器接口进行转化。
87.图11示出根据本公开的示例性实施例的读写模块的结构示意图。
88.参照图11,读写模块300具体可包括:总线到存储器读写控制模块301、测试模块200到存储器读写控制模块302、二选一模块303、异步fifo模块304、存储器读写控制模块305。以实现数据路由的选择、跨时钟域的处理、存储器读写控制逻辑。
89.读写模块300中调用两个异步fifo进行数据的跨时钟域处理。第一个fifo用来进行写的跨时钟域处理,将数据拼接后写入fifo中,读出时数据具有同样的格式;第二个fifo用来进行读的跨时钟域处理。
90.图12示出根据本公开的示例性实施例的sram写使能信号产生逻辑图;图13示出根据本公开的示例性实施例的sram读使能信号产生逻辑图;图14示出根据本公开的示例性实施例的直接读写sram时序图。如图12和13所示,apb接口经过总线到存储器读写控制模块301转换成适于sram的接口,而向sram中写读的数据不变。
91.应该理解,根据本公开示例性实施例的存储器内建自测试电路中的各个模块可被实现为硬件组件。本领域技术人员根据限定的各个模块所执行的处理,可以例如使用现场
可编程门阵列(fpga)或专用集成电路(asic)来实现各个模块。
92.本公开的示例性实施例提供一种芯片,该芯片包括如上述示例性实施例所述的存储器内建自测试电路。作为示例,该芯片可为基于apb总线开发的soc芯片。
93.图15示出根据本公开的示例性实施例的存储器内建自测试方法的流程图。作为示例,该存储器内建自测试方法可由存储器内建自测试电路来执行。
94.参照图15,在步骤s100中,根据通过apb总线从apb总线主设备接收到的模式选择信号,选择读写模式或测试模式。
95.在步骤s200中,在测试模式下,根据通过apb总线从apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作。
96.在步骤s300中,在读写模式下,根据通过apb总线从apb总线主设备接收到的信号,对芯片内的待读写存储器进行读写操作。
97.作为示例,步骤s200可包括:对通过apb总线从apb总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入用于存储器测试的寄存器组;接下来,根据寄存器组内的信息,对待测试存储器进行测试操作,并将测试结果写入寄存器组;然后,从寄存器组读取测试结果进行组帧处理,并将组帧处理结果通过apb总线传输到apb总线主设备。
98.作为示例,根据本公开的示例性实施例的存储器内建自测试方法还可包括:根据测试状态的改变,对寄存器组内的用于表征当前测试状态的信息进行设置;响应于述apb总线主设备通过apb总线发送的状态访问信号,从寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过apb总线传输到apb总线主设备。
99.作为示例,步骤s200可包括:通过状态机对待测试存储器进行地址线测试和/或数据线测试;其中,状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在仲裁状态下执行判断跳转入第一子状态机或第二子状态机的步骤。
100.作为示例,第二子状态机用于对待测试存储器的数据线进行n次测试;其中,在每次对待测试存储器的数据线进行测试时,将本次测试所使用的测试数据写入待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,n次测试所使用的测试数据各不相同,n次测试所使用的测试算法各不相同,n为大于1的整数。
101.作为示例,第二子状态机可包括:n个写状态、n个读状态以及n个匹配状态,在第i个写状态下执行以下步骤:将第i次测试所使用的测试数据依次写入待测试存储器的各个存储地址,其中,在各个存储地址均被写入测试数据后,跳转到第i个读状态;在第i个读状态下执行以下步骤:判断j是否大于m,如果j小于或等于m,则从第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态;在第i个匹配状态下执行以下步骤:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态;其中,i为大于0且小于或等于n的整数,i和j的初始值为1,m为待测试存储器中的存储地址的总个数。
102.作为示例,第二子状态机还可包括:数据线测试结果上报状态;其中,如果j大于m且i等于n,则从第i个读状态跳转到数据线测试结果上报状态;其中,在数据线测试结果上
报状态下执行以下步骤:根据第一匹配错误计数器的计数结果,将待测试存储器的数据线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
103.作为示例,第一子状态机可包括:写状态、读状态、匹配状态以及地址线测试结果上报状态;其中,在写状态下执行以下步骤:将地址线测试所使用的测试数据依次写入待测试存储器的多个指定存储地址,其中,在所述多个指定存储地址均被写入测试数据后,跳转到读状态;在读状态下执行以下步骤:判断k是否大于p,如果k小于或等于p,则从所述多个指定存储地址中的第k个存储地址读取数据,并令k=k+1,其中,在每次读取数据后,跳转到匹配状态;如果k大于p,则跳转到地址线测试结果上报状态;在匹配状态下执行以下步骤:将从第k个存储地址读取的数据与地址线测试所使用的测试数据进行匹配,并当不匹配时将第二匹配错误计数器的计数加1,其中,在每次匹配后,跳转到读状态;在地址线测试结果上报状态下执行以下步骤:根据第二匹配错误计数器的计数结果,将待测试存储器的地址线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征地址线测试已完成的信息;其中,k为大于0且小于或等于p的整数,k的初始值为1,p为所述多个指定存储地址的总个数。
104.作为示例,根据本公开的示例性实施例的存储器内建自测试方法还可包括:根据待读写存储器的类型,将通过apb总线从apb总线主设备接收到的写使能信号转换成适于待读写存储器的写使能信号;和/或,根据待读写存储器的类型,将通过apb总线从apb总线主设备接收到的读使能信号转换成适于待读写存储器的读使能信号。
105.应该理解,根据本公开示例性实施例的存储器内建自测试方法所执行的具体步骤已经参照图2至图14进行了详细描述,这里将不再赘述相关细节。
106.虽然已表示和描述了本公开的一些示例性实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同物限定其范围的本公开的原理和精神的情况下,可以对这些实施例进行修改。

技术特征:
1.一种存储器内建自测试电路,其特征在于,所述存储器内建自测试电路包括:选择模块,用于根据通过apb总线从apb总线主设备接收到的模式选择信号,选择读写模式或测试模式;测试模块,用于在所述测试模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;读写模块,用于在所述读写模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。2.根据权利要求1所述的存储器内建自测试电路,其特征在于,所述测试模块包括:信号处理模块,用于在所述测试模式下,对通过所述apb总线从所述apb总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入所述信号处理模块中的寄存器组;测试控制模块,用于在所述测试模式下,根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入所述寄存器组;其中,所述信号处理模块还用于从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。3.根据权利要求2所述的存储器内建自测试电路,其特征在于,所述测试控制模块还用于根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;所述信号处理模块还用于响应于所述apb总线主设备通过所述apb总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。4.根据权利要求2所述的存储器内建自测试电路,其特征在于,所述选择模块通过所述apb总线连接到所述apb总线主设备,所述信号处理模块和所述读写模块分别通过所述apb总线连接到所述选择模块,所述测试控制模块连接到所述读写模块,所述读写模块连接到所述芯片内的存储器;其中,所述测试控制模块根据所述寄存器组内的信息产生地址线测试或数据线测试所需的测试信号,并将所述测试信号传输到所述读写模块,以通过所述读写模块向所述待测试存储器写入或读取数据。5.根据权利要求1至4之中任意一项所述的存储器内建自测试电路,其特征在于,所述测试控制模块通过状态机实现对所述待测试存储器的地址线测试和数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的处理。6.根据权利要求5所述的存储器内建自测试电路,其特征在于,所述第二子状态机用于对所述待测试存储器的数据线进行n次测试;其中,在每次对所述待测试存储器的数据线进行测试时,所述测试控制模块将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;
其中,所述n次测试所使用的测试数据各不相同,所述n次测试所使用的测试算法各不相同,n为大于1的整数。7.根据权利要求6所述的存储器内建自测试电路,其特征在于,所述第二子状态机包括:n个写状态、n个读状态以及n个匹配状态,其中,在第i个写状态下执行以下处理:将第i次测试所使用的测试数据依次写入所述待测试存储器的各个存储地址,其中,在所述各个存储地址均被写入测试数据后,跳转到第i个读状态;在第i个读状态下执行以下处理:判断j是否大于m,如果j小于或等于m,则从第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态;在第i个匹配状态下执行以下处理:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将所述第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态;其中,i为大于0且小于或等于n的整数,i和j的初始值为1,m为所述待测试存储器中的存储地址的总个数。8.根据权利要求7所述的存储器内建自测试电路,其特征在于,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于m且i等于n,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下处理:根据所述第一匹配错误计数器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。9.根据权利要求1所述的存储器内建自测试电路,其特征在于,所述读写模块根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;所述读写模块根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。10.一种存储器内建自测试方法,其特征在于,所述存储器内建自测试方法包括:根据通过apb总线从apb总线主设备接收到的模式选择信号,选择读写模式或测试模式;在所述测试模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;在所述读写模式下,根据通过所述apb总线从所述apb总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。11.根据权利要求10所述的存储器内建自测试方法,其特征在于,所述根据通过所述apb总线从所述apb总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作的步骤包括:对通过所述apb总线从所述apb总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入用于存储器测试的寄存器组;根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入
所述寄存器组;从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。12.根据权利要求11所述的存储器内建自测试方法,其特征在于,还包括:根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;响应于所述apb总线主设备通过所述apb总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述apb总线传输到所述apb总线主设备。13.根据权利要求10至12之中任意一项所述的存储器内建自测试方法,其特征在于,所述对芯片内的待测试存储器进行测试操作的步骤包括:通过状态机对所述待测试存储器进行地址线测试和/或数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的步骤。14.根据权利要求13所述的存储器内建自测试方法,其特征在于,所述第二子状态机用于对所述待测试存储器的数据线进行n次测试;其中,在每次对所述待测试存储器的数据线进行测试时,将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,所述n次测试所使用的测试数据各不相同,所述n次测试所使用的测试算法各不相同,n为大于1的整数。15.根据权利要求14所述的存储器内建自测试方法,其特征在于,所述第二子状态机包括:n个写状态、n个读状态以及n个匹配状态,其中,在第i个写状态下执行以下步骤:将第i次测试所使用的测试数据依次写入所述待测试存储器的各个存储地址,其中,在所述各个存储地址均被写入测试数据后,跳转到第i个读状态;在第i个读状态下执行以下步骤:判断j是否大于m,如果j小于或等于m,则从第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于m且i小于n,则跳转到第i+1个写状态;在第i个匹配状态下执行以下步骤:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将所述第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态;其中,i为大于0且小于或等于n的整数,i和j的初始值为1,m为所述待测试存储器中的存储地址的总个数。16.根据权利要求15所述的存储器内建自测试方法,其特征在于,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于m且i等于n,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下步骤:根据所述第一匹配错误计数
器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。17.根据权利要求10所述的存储器内建自测试方法,其特征在于,还包括:根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;和/或,根据所述待读写存储器的类型,将通过所述apb总线从所述apb总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。18.一种芯片,其特征在于,所述芯片包括:如权利要求1至9中的任意一项所述的存储器内建自测试电路。

技术总结
提供了一种存储器内建自测试方法及其电路、芯片。所述存储器内建自测试电路包括:选择模块,用于根据通过APB总线从APB总线主设备接收到的模式选择信号,选择读写模式或测试模式;测试模块,用于在所述测试模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;读写模块,用于在所述读写模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。所述芯片内的待读写存储器进行读写操作。所述芯片内的待读写存储器进行读写操作。


技术研发人员:杨军
受保护的技术使用者:英诺达(成都)电子科技有限公司
技术研发日:2023.08.16
技术公布日:2023/9/16
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐