CN116758968A - 存储器内建自测试方法及其电路、芯片 - Google Patents

存储器内建自测试方法及其电路、芯片 Download PDF

Info

Publication number
CN116758968A
CN116758968A CN202311026911.7A CN202311026911A CN116758968A CN 116758968 A CN116758968 A CN 116758968A CN 202311026911 A CN202311026911 A CN 202311026911A CN 116758968 A CN116758968 A CN 116758968A
Authority
CN
China
Prior art keywords
test
memory
read
state
apb bus
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
Application number
CN202311026911.7A
Other languages
English (en)
Other versions
CN116758968B (zh
Inventor
杨军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Innoda Chengdu Electronic Technology Co ltd
Original Assignee
Innoda Chengdu Electronic Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Innoda Chengdu Electronic Technology Co ltd filed Critical Innoda Chengdu Electronic Technology Co ltd
Priority to CN202311026911.7A priority Critical patent/CN116758968B/zh
Publication of CN116758968A publication Critical patent/CN116758968A/zh
Application granted granted Critical
Publication of CN116758968B publication Critical patent/CN116758968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

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

Description

存储器内建自测试方法及其电路、芯片
技术领域
本公开总体说来涉及存储器测试技术领域,更具体地讲,涉及一种存储器内建自测试方法及其电路、芯片。
背景技术
现有SOC(System on Chip,数字芯片系统)在进行MBIST(Memory Build-in-selfTest,存储器内建自测试)时,通常使用JTAG(Joint Test Action Group,联合测试工作组)接口作为数据传输接口,以实现与外部TAP(Test Access Port,测试访问口)之间的数据通信。使用JTAG控制MBIST完成存储器测试是芯片设计中较常使用的有效DFT(Design forTest,可测性设计)方法,它解决了MBIST带来的冗余复杂的复用设计及复用资源的竞争。
然而,如果采用JTAG接口作为对外的数据传输接口,则需要在芯片设计中为JTAG额外生成引脚,这样做无疑会增加成本,并且会增加芯片面积,不利于SOC芯片的集成。
发明内容
本公开的示例性实施例在于提供一种存储器内建自测试方法及其电路、芯片,其能够解决为了进行存储器内建自测试,需要在芯片中为JTAG额外生成引脚的问题。
根据本公开实施例的第一方面,提供一种存储器内建自测试电路,所述存储器内建自测试电路包括:选择模块,用于根据通过APB总线从APB总线主设备接收到的模式选择信号,选择读写模式或测试模式;测试模块,用于在所述测试模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;读写模块,用于在所述读写模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。
可选地,所述测试模块包括:信号处理模块,用于在所述测试模式下,对通过所述APB总线从所述APB总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入所述信号处理模块中的寄存器组;测试控制模块,用于在所述测试模式下,根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入所述寄存器组;其中,所述信号处理模块还用于从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述APB总线传输到所述APB总线主设备。
可选地,所述测试控制模块还用于根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;所述信号处理模块还用于响应于所述APB总线主设备通过所述APB总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述APB总线传输到所述APB总线主设备。
可选地,所述选择模块通过所述APB总线连接到所述APB总线主设备,所述信号处理模块和所述读写模块分别通过所述APB总线连接到所述选择模块,所述测试控制模块连接到所述读写模块,所述读写模块连接到所述芯片内的存储器;其中,所述测试控制模块根据所述寄存器组内的信息产生地址线测试或数据线测试所需的测试信号,并将所述测试信号传输到所述读写模块,以通过所述读写模块向所述待测试存储器写入或读取数据。
可选地,所述测试控制模块通过状态机实现对所述待测试存储器的地址线测试和数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的处理。
可选地,所述第二子状态机用于对所述待测试存储器的数据线进行N次测试;其中,在每次对所述待测试存储器的数据线进行测试时,所述测试控制模块将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,所述N次测试所使用的测试数据各不相同,所述N次测试所使用的测试算法各不相同,N为大于1的整数。
可选地,所述第二子状态机包括: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为所述待测试存储器中的存储地址的总个数。
可选地,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于M且i等于N,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下处理:根据所述第一匹配错误计数器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
可选地,所述读写模块根据所述待读写存储器的类型,将通过所述APB总线从所述APB总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;所述读写模块根据所述待读写存储器的类型,将通过所述APB总线从所述APB总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。
根据本公开实施例的第二方面,提供一种存储器内建自测试方法,所述存储器内建自测试方法包括:根据通过APB总线从APB总线主设备接收到的模式选择信号,选择读写模式或测试模式;在所述测试模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作;在所述读写模式下,根据通过所述APB总线从所述APB总线主设备接收到的信号,对所述芯片内的待读写存储器进行读写操作。
可选地,所述根据通过所述APB总线从所述APB总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作的步骤包括:对通过所述APB总线从所述APB总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入用于存储器测试的寄存器组;根据所述寄存器组内的信息,对所述待测试存储器进行测试操作,并将测试结果写入所述寄存器组;从所述寄存器组读取所述测试结果进行组帧处理,并将组帧处理结果通过所述APB总线传输到所述APB总线主设备。
可选地,还包括:根据测试状态的改变,对所述寄存器组内的用于表征当前测试状态的信息进行设置;响应于所述APB总线主设备通过所述APB总线发送的状态访问信号,从所述寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过所述APB总线传输到所述APB总线主设备。
可选地,所述对芯片内的待测试存储器进行测试操作的步骤包括:通过状态机对所述待测试存储器进行地址线测试和/或数据线测试;其中,所述状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在所述仲裁状态下执行判断跳转入所述第一子状态机或所述第二子状态机的步骤。
可选地,所述第二子状态机用于对所述待测试存储器的数据线进行N次测试;其中,在每次对所述待测试存储器的数据线进行测试时,将本次测试所使用的测试数据写入所述待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,所述N次测试所使用的测试数据各不相同,所述N次测试所使用的测试算法各不相同,N为大于1的整数。
可选地,所述第二子状态机包括: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为所述待测试存储器中的存储地址的总个数。
可选地,所述第二子状态机还包括:数据线测试结果上报状态;其中,如果j大于M且i等于N,则从第i个读状态跳转到所述数据线测试结果上报状态;其中,在所述数据线测试结果上报状态下执行以下步骤:根据所述第一匹配错误计数器的计数结果,将所述待测试存储器的数据线测试结果写入所述寄存器组;并将所述寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
可选地,还包括:根据所述待读写存储器的类型,将通过所述APB总线从所述APB总线主设备接收到的写使能信号转换成适于所述待读写存储器的写使能信号;和/或,根据所述待读写存储器的类型,将通过所述APB总线从所述APB总线主设备接收到的读使能信号转换成适于所述待读写存储器的读使能信号。
根据本公开实施例的第三方面,提供一种芯片,所述芯片包括:如上所述的存储器内建自测试电路。
根据本公开的示例性实施例的存储器内建自测试方法及其电路、芯片,提出了一种基于APB总线的MBIST电路,通过APB总线不仅可以对存储器进行读写操作,还能够对存储器进行内建自测试,一方面进行MBIST不需要通过芯片引脚与外部测试访问装置进行通信,仅通过APB总线与芯片内部的APB总线主设备进行通信即可,节省了芯片对外的开销;另一方面,无需为了进行MBIST而额外加增芯片引脚,从而节省了成本、降低了芯片面积,并能够缩短芯片设计和开发周期。
将在接下来的描述中部分阐述本公开总体构思另外的方面和/或优点,还有一部分通过描述将是清楚的,或者可以经过本公开总体构思的实施而得知。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本公开示例性实施例的上述和其他目的和特点将会变得更加清楚,其中:
图1示出现有的存储器内建自测试电路的示例;
图2示出根据本公开的示例性实施例的存储器内建自测试电路的结构框图;
图3示出根据本公开的示例性实施例的APB总线地址映射归属的示例;
图4示出根据本公开的另一示例性实施例的存储器内建自测试电路的结构框图;
图5示出根据本公开的示例性实施例的用于存储器测试的状态机的状态转移图的示例;
图6示出根据本公开的示例性实施例的数据线扫描的工作流程图;
图7示出根据本公开的示例性实施例的MARCH算法实现框图的示例;
图8示出根据本公开的示例性实施例的第二子状态机的状态转移图的示例;
图9示出根据本公开的示例性实施例的第一子状态机的状态转移图的示例;
图10示出根据本公开的示例性实施例的地址线测试控制仿真波形示意图;
图11示出根据本公开的示例性实施例的读写模块的结构示意图;
图12示出根据本公开的示例性实施例的SRAM写使能信号产生逻辑图;
图13示出根据本公开的示例性实施例的SRAM读使能信号产生逻辑图;
图14示出根据本公开的示例性实施例的直接读写SRAM时序图;
图15示出根据本公开的示例性实施例的存储器内建自测试方法的流程图。
具体实施方式
现将详细参照本公开的实施例,所述实施例的示例在附图中示出,其中,相同的标号始终指的是相同的部件。以下将通过参照附图来说明所述实施例,以便解释本公开。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
图1示出现有的存储器内建自测试电路的示例。如图1所示,现有的存储器内建自测试电路通常采用JTAG接口作为对外的数据传输接口,JTAG的基本原理是在器件内部定义一个TAP,以实现与芯片外部TAP之间的数据通信,从而外部专用的JTAG测试工具能够对内部节点进行测试。而JTAG最少需使用四个信号,包括TCK,TRST,TMS,TDI和TDO。这就需要在芯片中为JTAG额外生成引脚,这样做无疑会增加成本,并且会增加芯片面积,不利于SOC芯片的集成。
而本公开提出了一种基于APB总线的MBIST电路,通过APB总线不仅可以对存储器进行读写操作,还能够对存储器进行内建自测试,一方面进行MBIST不需要通过芯片引脚与外部测试访问装置进行通信,仅通过APB总线与芯片内部的APB总线主设备进行通信即可,节省了芯片对外的开销;另一方面,无需为了进行MBIST而额外加增芯片引脚,换言之,无需设置JTAG引脚,缩减了芯片的引脚,从而节省了成本、降低了芯片面积,并能够缩短芯片设计和开发周期。
图2示出根据本公开的示例性实施例的存储器内建自测试电路的结构框图。
参照图2,根据本公开的示例性实施例的存储器内建自测试电路1000包括:选择模块100、测试模块200、读写模块300。
具体说来,选择模块100用于根据通过APB总线从APB总线主设备2000接收到的模式选择信号,选择读写模式或测试模式。
具体地,选择模块100如从APB总线主设备2000接收到指示选择读写模式的信号,则选择读写模式;如从APB总线主设备2000接收到指示选择测试模式的信号,则选择测试模式。
图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)不仅可以读写存储器,还可以对存储器进行在线测试。
APB总线主设备2000即芯片内的APB master,作为示例,APB总线主设备2000可为芯片的主控制器。
测试模块200用于在测试模式下,根据通过APB总线从APB总线主设备2000接收到的信号,对芯片内的待测试存储器3000进行测试操作。
作为示例,测试模块200可对待测试存储器3000进行地址线测试和/或数据线测试。
应该理解,可使用适当的算法来实现地址线测试和数据线测试。作为示例,可使用地址遍历算法来实现地址线测试,可使用MARCH算法来实现数据线测试。
下面将会结合图4至图10来详细描述测试模块200的示例性实施例,此处暂不展开。
读写模块300用于在读写模式下,根据通过APB总线从APB总线主设备2000接收到的信号,对芯片内的待读写存储器3000进行读写操作。
应该理解,待测试存储器3000即需要对其进行测试的芯片内存储器,待读写存储器3000即需要对其进行读写的芯片内存储器。值得注意的是,待测试存储器3000和待读写存储器3000可能为同一个存储器,也可能为不同的存储器,例如,可先对一个存储器3000进行测试操作,测试通过后再对该存储器3000进行读写操作。而具体何时对哪一存储器进行测试、对哪一存储器进行读写均由APB总线主设备2000决定。
存储器3000的类型可包括但不限于:SRAM(Static Random-Access Memory,静态随机存取存储器)。应该理解,也可包括其他类型,例如,Flash存储器等,本公开对此不作限制。
作为示例,选择模块100通过APB总线连接到APB总线主设备2000,测试模块200和读写模块300分别通过APB总线连接到选择模块100,换言之,测试模块200和读写模块300经由选择模块100连接到总线主设备2000。
作为示例,测试模块200可连接到读写模块300,读写模块300连接到芯片内的存储器3000,换言之,测试模块200经由读写模块300连接到存储器3000。作为示例,测试模块200可产生地址线测试或数据线测试所需的测试信号,并将产生的测试信号传输到读写模块300,以通过读写模块300向待测试存储器3000写入测试数据或读取数据,即,测试模块200通过读写模块300来完成测试。
作为示例,测试信号可具体包括:数据信号、地址信号、读使能信号、写使能信号。
图4示出根据本公开的另一示例性实施例的存储器内建自测试电路1000的结构框图。
参照图4,测试模块200可包括:信号处理模块201和测试控制模块202。
具体说来,信号处理模块201用于在测试模式下,对通过APB总线从APB总线主设备2000接收到的信号进行解帧处理,并将解帧处理得到的信息写入信号处理模块201中的寄存器组。
应该理解的是,信号处理模块201中的寄存器组具体包括多个例化定义好的寄存器,不同寄存器用于存储不同类型的信息,例如,可包括但不限于用于存储测试结果的寄存器、用于存储测试状态信息的寄存器、用于存储测试数据的寄存器、用于指示开始测试寄存器等用于存储与存储器测试相关的信息的寄存器,在此不再赘述。并且,寄存器组内的寄存器的类型也不局限于单个类型,例如,可包括只读寄存器和可读可写寄存器两种类型。
测试控制模块202用于在测试模式下,根据寄存器组内的信息,对待测试存储器3000进行测试操作,并将测试结果写入寄存器组。
信号处理模块201还用于从寄存器组读取测试结果进行组帧处理,并将组帧处理结果通过APB总线传输到APB总线主设备2000。作为示例,信号处理模块201可响应于通过APB总线从APB总线主设备2000接收到的测试结果访问信号,从寄存器组读取测试结果进行组帧处理,并将组帧处理结果上报到APB总线主设备2000。
作为示例,测试控制模块202还用于根据测试状态的改变,对寄存器组内的用于表征当前测试状态的信息进行设置。相应地,信号处理模块201还用于响应于APB总线主设备2000通过APB总线发送的状态访问信号,从寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过APB总线传输到APB总线主设备2000。
作为示例,信号处理模块201通过APB总线连接到选择模块100,测试控制模块202连接到读写模块300。例如,测试控制模块202与读写模块300可采用自定义信号进行连接,如写数据、写使能、读数据、读使能等自定义信号。
作为示例,测试控制模块202根据寄存器组内的信息产生地址线测试或数据线测试所需的测试信号,并将测试信号传输到读写模块300,以通过读写模块300向待测试存储器3000写入测试数据或读取数据。从而,测试控制模块202能够根据读写模块300读取的数据与测试数据进行匹配,以得到测试结果。
根据本公开的示例性实施例,通过信号处理模块201实现对上下游数据需要写入和读出寄存器组进行处理(例如,解帧、组帧处理),具体地,对来自APB总线主设备2000的信号先进行解帧处理,然后将信息送入到定义好的寄存器中,供测试控制模块202进行读取使用;在测试控制模块202将需要上报的信息写入规定好的寄存器后,对这些信息进行读取并组帧后通过APB总线上传给APB总线主设备2000。
下面示出根据本公开的示例性实施例的信号处理模块201的部分功能代码的示例,其示出了组解帧功能的RTL(Register Transfer Level,寄存器传输级)实现示例。
//对总线的读写使能操作
assign wr_en = i_reg_psel&(~i_reg_penable)&i_reg_pwrite;
assign rd_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 :
begin
REG0 : 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;
end
endcase
//对总线组帧操作
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的指令需求产生对应的测试信号进行测试。
本公开的示例性实施例采用APB总线作为存储器内建自测试电路1000与SOC的通信方式,这种方式在SOC设计中能够得到很好的运用。存储器测试过程及测试状态可以通过APB总线实时反馈给SOC,具体地,信号处理模块201通过APB的方式与APB总线主设备进行连接,更便于SOC的主控制器等对信号处理模块201中的寄存器组进行读写,以控制测试过程及访问测试结果、测试状态等。而现有的存储器内建自测试电路采用JTAG作为与外部的通信方式,并且外部还需要连接TAP控制器,一方面非常不便于现代数字IC设计的集成,另一方面,增加了芯片对外的开销。此外,由于JTAG采用串行通信,需要几个TCK周期(TestClock,测试接口中的时钟周期)才能启动存储器自测试,这无疑增加了测试时间,而本公开由于通过芯片内APB总线进行芯片主设备与MBIST电路之间的通信,能够快速启动存储器自测试,从而有效缩短测试时间。
作为示例,测试控制模块202可通过状态机实现对待测试存储器的地址线测试和数据线测试。图5示出根据本公开的示例性实施例的用于存储器测试的状态机的状态转移图的示例。
参照图5,用于存储器测试的状态机包括:初始状态C0、仲裁状态C1、用于地址线测试的第一子状态机C2、用于数据线测试的第二子状态机C3、结束状态C4。
在仲裁状态C1下执行判断跳转入第一子状态机C2或第二子状态机C3的处理。作为示例,信号处理模块201可通过APB总线从APB总线主设备2000接收测试指令,并将解帧处理得到的信息写入信号处理模块201中的寄存器组,测试控制模块202从寄存器组中读取该信息,并根据该信息判断跳转入第一子状态机C2还是第二子状态机C3。
作为示例,第二子状态机C3用于对待测试存储器的数据线进行N次测试,N为大于1的整数。N次测试所使用的测试数据各不相同,此外,N次测试所使用的测试算法也可各不相同,可自定义每次所使用的测试算法。优选地,N的取值可为6。根据本公开,在算法实现上,数据线测试可采用6种自定义算法运行,比传统的算法更加可靠;并且通过一个状态机实现多种算法,比传统的算法实现更加简便。
在每次对待测试存储器3000的数据线进行测试时,测试控制模块202将本次测试所使用的测试数据写入待测试存储器3000的各个存储地址,然后依次从每个存储地址读取数据,并将读取的数据与本次测试所使用的测试数据进行匹配,当不匹配时将第一匹配错误计数器的计数加1。
作为示例,下面示出根据本公开的示例性实施例的用于存储器测试的状态机的RTL伪代码。
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;
endcase
SCAN_DATA:
case(scan_data_state)//子状态机2,对数据线扫描
STEP0_WR: //写数据
STEP0_RD: //读数据
MATCH0: //对比
STEP1_WR: //执行算法1
STEP1_RD:
MATCH1:
STEP2_WR://执行算法2
STEP2_RD:
MATCH2:
STEP3_WR://执行算法3
STEP3_RD:
MATCH3:
STEP4_WR://执行算法4
STEP4_RD:
MATCH4:
STEP5_WR: //执行算法5
STEP5_RD:
MATCH5:
STEP6_WR: //执行算法6
STEP6_RD:
MATCH6:
STEP_STOP: //数据线扫描结束
default: scan_data_state<= STEP_STOP;
endcase
FINISHED://主状态机结束
default:scan_state<=IDLE;
endcase
图6示出根据本公开的示例性实施例的数据线扫描的工作流程图。图7示出根据本公开的示例性实施例的MARCH算法实现框图的示例。参照图6和图7,使用MARCH算法对存储器数据线进行自动扫描。将test_dataN作为扫描测试数据,依次使用test_data0-test_data5六组数据作为扫描测试数据,执行六次MARCH算法。
作为示例,初始可先向待测试存储器3000的全部单元(也即,各个地址)中写32’b0,然后读出并进行匹配。接下来,可将全部单元改写为test_dataN,依次对test_data0-test_data5六组数据执行MARCH算法,如果存在不匹配的情况,则上报扫描fail结果;如果全部匹配,则上报扫描pass结果。
图8示出根据本公开的示例性实施例的第二子状态机的状态转移图的示例。
参照图8,第二子状态机包括:N个写状态、N个读状态以及N个匹配状态。
具体地,在第i个写状态下执行以下处理:将第i次测试所使用的测试数据依次写入待测试存储器3000的各个存储地址,其中,在各个存储地址均被写入测试数据后,跳转到第i个读状态。换言之,从第i个写状态跳转到第i个读状态的跳转条件是:待测试存储器3000的各个存储地址均被写入测试数据。i为大于0且小于或等于N的整数,i的初始值为1。
在第i个读状态下执行以下处理:判断j是否大于M,如果j小于或等于M,则从待测试存储器3000的第j个存储地址读取数据,并令j=j+1,其中,在每次读取数据后,跳转到第i个匹配状态;如果j大于M且i小于N,则跳转到第i+1个写状态。j的初始值为1,M为待测试存储器3000中的存储地址的总个数。
在第i个匹配状态下执行以下处理:将从第j个存储地址读取的数据与第i次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1,其中,在每次匹配后,跳转到第i个读状态。
此外,第二子状态机还可包括:数据线测试结果上报状态。如果j大于M且i等于N,则从第i个读状态跳转到数据线测试结果上报状态;在数据线测试结果上报状态下执行以下处理:根据第一匹配错误计数器的计数结果,将待测试存储器3000的数据线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
作为示例,下面示出根据本公开的示例性实施例的第二子状态机的RTL伪代码。
case(scan_data_state)
STEP0_WR:begin//执行初始状态,并读出进行匹配。
scan_wen<= 1'b1;
scan_wdata<= 32'd0;
if(scan_addr>= 16'd1023)begin
scan_data_state<= STEP0_RD;
scan_wen<= 1'b0;
scan_addr<= 16'd0;
end
else if(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;
end
end
STEP0_RD:begin
scan_ren<= 1'b1;
if(scan_addr> 16'd1023)begin
scan_data_state<= STEP1_WR;
scan_addr<= 16'd0;
scan_ren<= 1'b0;
end
else if(scan_addr<= 16'd1023&scan_ren == 1'b1)begin
scan_addr<= scan_addr + 1'b1;
scan_ren<= 1'b0;
scan_data_state<= MATCH0;
end
end
MATCH0:begin
scan_rdata<= i_scan_rdata;
scan_ren<= 1'b0;
if(dely_cnt == 16'd1)beginscan_data_state<= STEP0_RD;
dely_cnt<= 16'd0;
end
else begin
dely_cnt<= dely_cnt + 1'b1;
end
if(scan_rdata != 32'd0)begin
error_cnt<= error_cnt + 1'b1;
end
end
//执行前5次算法
STEP6_WR:begin//执行第6次算法
scan_wen<= 1'b1;
scan_wdata<= i_test_data5;
if(scan_addr>= 16'd1023)begin
scan_data_state<= STEP6_RD;
scan_wen<= 1'b0;
scan_addr<= 16'd0;
end
else if(scan_addr< 16'd1023&scan_wen == 1'b1)begin
scan_addr<= scan_addr + 1'b1;
scan_wdata<= i_test_data5;
scan_data_state<= STEP6_WR;
scan_wen<= 1'b1;
end
end
STEP6_RD:begin
scan_ren<= 1'b1;
if(scan_addr> 16'd1023)begin
scan_data_state<= STEP_STOP;
scan_addr<= 16'd0;
scan_ren<= 1'b0;
end
else if(scan_addr<= 16'd1023&scan_ren == 1'b1)begin
scan_addr<= scan_addr + 1'b1;
scan_ren<= 1'b0;
scan_data_state<= MATCH6;
end
end
MATCH6:begin
scan_rdata<= i_scan_rdata;
scan_ren<= 1'b0;
if(dely_cnt == 16'd1)begin scan_data_state<= STEP6_RD;
dely_cnt<= 16'd0;
end
else begin
dely_cnt<= dely_cnt + 1'b1;
end
if(scan_rdata != i_test_data5)begin
error_cnt<= error_cnt + 1'b1;
end
end
STEP_STOP:begin //退出算法执行过程,并上报测试结果
data_scan_status<= 2'b11;
scan_state<= FINISHED;
scan_data_state<= STEP0_WR;
if(error_cnt != 16'd0)begin
o_data_scan_result<= 1'b1;
end
else begin
o_data_scan_result<= 1'b0;
end
end
default: scan_data_state<= STEP_STOP;
endcase
可根据APB总线主设备2000的测试指令判断是否进入第二子状态机(scan_data_state),如进入,将数据线扫描状态寄存器scan_data_status由2’b00置为2’b01,代表正在执行数据线扫描操作。
当状态机进入到第二子状态机(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的所有单元都读出并匹配完成后,状态机会进入到下一个算法的轮询。依次类推执行多次测试算法。
当第二子状态机进入最后一次算法写状态(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。
图9示出根据本公开的示例性实施例的第一子状态机的状态转移图的示例。
参照图9,第一子状态机包括:写状态、读状态、匹配状态以及地址线测试结果上报状态。
具体地,在所述写状态下执行以下处理:将地址线测试所使用的测试数据依次写入待测试存储器3000的多个指定存储地址,其中,在所有指定存储地址均被写入测试数据后,跳转到所述读状态。作为示例,所述多个指定存储地址可包括但不限于:全0地址,全1地址,1010……1010地址,0101……0101地址。
在所述读状态下执行以下处理:判断k是否大于P,如果k小于或等于P,则从所述多个指定存储地址中的第k个存储地址读取数据,并令k=k+1,其中,在每次读取数据后,跳转到所述匹配状态;如果k大于P,则跳转到地址线测试结果上报状态。k为大于0且小于或等于P的整数,k的初始值为1,P为所述多个指定存储地址的总个数。
在所述匹配状态下执行以下处理:将从第k个存储地址读取的数据与地址线测试所使用的测试数据进行匹配,并当不匹配时将第二匹配错误计数器的计数加1,其中,在每次匹配后,跳转到所述读状态。
在所述地址线测试结果上报状态下执行以下处理:根据第二匹配错误计数器的计数结果,将待测试存储器3000的地址线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征地址线测试已完成的信息。
图10示出根据本公开的示例性实施例的地址线测试控制仿真波形示意图。图10为截取的地址线扫描波形示意图,其中mbist_clk为工作时钟,MBIST_ADDR_STATE为第一子状态机,mbist_addr为地址线,mbist_wdata为写数据线,mbist_wen为写使能,mbist_ren为读使能,mbist_rdata为读数据线,error_cnt为扫描过程中累计错误个数的计数器数。
作为示例,读写模块300主要用于对外部信号的逻辑控制转换以及跨时钟域处理操作。由于不同类型的存储器其读写控制逻辑不一样,当需要读写或者测试其它类型的存储器时,只需要更改这部分的逻辑控制功能就可以达到读写或测试的目的。例如,读写模块300可根据待读写存储器3000的类型,将通过APB总线从APB总线主设备2000接收到的写使能信号转换成适于待读写存储器3000的写使能信号;读写模块300可根据待读写存储器3000的类型,将通过APB总线从APB总线主设备2000接收到的读使能信号转换成适于待读写存储器3000的读使能信号。根据本公开的示例性实施例,能够对APB接口与存储器接口进行转化。
图11示出根据本公开的示例性实施例的读写模块的结构示意图。
参照图11,读写模块300具体可包括:总线到存储器读写控制模块301、测试模块200到存储器读写控制模块302、二选一模块303、异步fifo模块304、存储器读写控制模块305。以实现数据路由的选择、跨时钟域的处理、存储器读写控制逻辑。
读写模块300中调用两个异步fifo进行数据的跨时钟域处理。第一个fifo用来进行写的跨时钟域处理,将数据拼接后写入fifo中,读出时数据具有同样的格式;第二个fifo用来进行读的跨时钟域处理。
图12示出根据本公开的示例性实施例的SRAM写使能信号产生逻辑图;图13示出根据本公开的示例性实施例的SRAM读使能信号产生逻辑图;图14示出根据本公开的示例性实施例的直接读写SRAM时序图。如图12和13所示,APB接口经过总线到存储器读写控制模块301转换成适于SRAM的接口,而向SRAM中写读的数据不变。
应该理解,根据本公开示例性实施例的存储器内建自测试电路中的各个模块可被实现为硬件组件。本领域技术人员根据限定的各个模块所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个模块。
本公开的示例性实施例提供一种芯片,该芯片包括如上述示例性实施例所述的存储器内建自测试电路。作为示例,该芯片可为基于APB总线开发的SOC芯片。
图15示出根据本公开的示例性实施例的存储器内建自测试方法的流程图。作为示例,该存储器内建自测试方法可由存储器内建自测试电路来执行。
参照图15,在步骤S100中,根据通过APB总线从APB总线主设备接收到的模式选择信号,选择读写模式或测试模式。
在步骤S200中,在测试模式下,根据通过APB总线从APB总线主设备接收到的信号,对芯片内的待测试存储器进行测试操作。
在步骤S300中,在读写模式下,根据通过APB总线从APB总线主设备接收到的信号,对芯片内的待读写存储器进行读写操作。
作为示例,步骤S200可包括:对通过APB总线从APB总线主设备接收到的信号进行解帧处理,并将解帧处理得到的信息写入用于存储器测试的寄存器组;接下来,根据寄存器组内的信息,对待测试存储器进行测试操作,并将测试结果写入寄存器组;然后,从寄存器组读取测试结果进行组帧处理,并将组帧处理结果通过APB总线传输到APB总线主设备。
作为示例,根据本公开的示例性实施例的存储器内建自测试方法还可包括:根据测试状态的改变,对寄存器组内的用于表征当前测试状态的信息进行设置;响应于述APB总线主设备通过APB总线发送的状态访问信号,从寄存器组读取用于表征当前测试状态的信息进行组帧处理,并将组帧处理结果通过APB总线传输到APB总线主设备。
作为示例,步骤S200可包括:通过状态机对待测试存储器进行地址线测试和/或数据线测试;其中,状态机包括:初始状态、仲裁状态、用于地址线测试的第一子状态机、用于数据线测试的第二子状态机、结束状态;其中,在仲裁状态下执行判断跳转入第一子状态机或第二子状态机的步骤。
作为示例,第二子状态机用于对待测试存储器的数据线进行N次测试;其中,在每次对待测试存储器的数据线进行测试时,将本次测试所使用的测试数据写入待测试存储器的各个存储地址,将从每个存储地址读取的数据与本次测试所使用的测试数据进行匹配,并当不匹配时将第一匹配错误计数器的计数加1;其中,N次测试所使用的测试数据各不相同,N次测试所使用的测试算法各不相同,N为大于1的整数。
作为示例,第二子状态机可包括: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为待测试存储器中的存储地址的总个数。
作为示例,第二子状态机还可包括:数据线测试结果上报状态;其中,如果j大于M且i等于N,则从第i个读状态跳转到数据线测试结果上报状态;其中,在数据线测试结果上报状态下执行以下步骤:根据第一匹配错误计数器的计数结果,将待测试存储器的数据线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征数据线测试已完成的信息。
作为示例,第一子状态机可包括:写状态、读状态、匹配状态以及地址线测试结果上报状态;其中,在写状态下执行以下步骤:将地址线测试所使用的测试数据依次写入待测试存储器的多个指定存储地址,其中,在所述多个指定存储地址均被写入测试数据后,跳转到读状态;在读状态下执行以下步骤:判断k是否大于P,如果k小于或等于P,则从所述多个指定存储地址中的第k个存储地址读取数据,并令k=k+1,其中,在每次读取数据后,跳转到匹配状态;如果k大于P,则跳转到地址线测试结果上报状态;在匹配状态下执行以下步骤:将从第k个存储地址读取的数据与地址线测试所使用的测试数据进行匹配,并当不匹配时将第二匹配错误计数器的计数加1,其中,在每次匹配后,跳转到读状态;在地址线测试结果上报状态下执行以下步骤:根据第二匹配错误计数器的计数结果,将待测试存储器的地址线测试结果写入寄存器组;并将寄存器组内的用于表征当前测试状态的信息设置为用于表征地址线测试已完成的信息;其中,k为大于0且小于或等于P的整数,k的初始值为1,P为所述多个指定存储地址的总个数。
作为示例,根据本公开的示例性实施例的存储器内建自测试方法还可包括:根据待读写存储器的类型,将通过APB总线从APB总线主设备接收到的写使能信号转换成适于待读写存储器的写使能信号;和/或,根据待读写存储器的类型,将通过APB总线从APB总线主设备接收到的读使能信号转换成适于待读写存储器的读使能信号。
应该理解,根据本公开示例性实施例的存储器内建自测试方法所执行的具体步骤已经参照图2至图14进行了详细描述,这里将不再赘述相关细节。
虽然已表示和描述了本公开的一些示例性实施例,但本领域技术人员应该理解,在不脱离由权利要求及其等同物限定其范围的本公开的原理和精神的情况下,可以对这些实施例进行修改。

Claims (18)

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中的任意一项所述的存储器内建自测试电路。
CN202311026911.7A 2023-08-16 2023-08-16 存储器内建自测试方法及其电路、芯片 Active CN116758968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311026911.7A CN116758968B (zh) 2023-08-16 2023-08-16 存储器内建自测试方法及其电路、芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311026911.7A CN116758968B (zh) 2023-08-16 2023-08-16 存储器内建自测试方法及其电路、芯片

Publications (2)

Publication Number Publication Date
CN116758968A true CN116758968A (zh) 2023-09-15
CN116758968B CN116758968B (zh) 2023-12-08

Family

ID=87957487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311026911.7A Active CN116758968B (zh) 2023-08-16 2023-08-16 存储器内建自测试方法及其电路、芯片

Country Status (1)

Country Link
CN (1) CN116758968B (zh)

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744009A (zh) * 2013-12-17 2014-04-23 记忆科技(深圳)有限公司 一种串行传输芯片测试方法、系统及集成芯片
US20170277613A1 (en) * 2016-03-25 2017-09-28 Qualcomm Incorporated Multiple mode testing in a vector memory restricted test environment
CN108899061A (zh) * 2018-07-20 2018-11-27 北京嘉楠捷思信息技术有限公司 一种电源常开芯片中的存储器内建自测试方法和系统
CN109684245A (zh) * 2018-12-11 2019-04-26 中国航空工业集团公司西安航空计算技术研究所 一种apb总线访问spi flash的方法及装置
CN109801666A (zh) * 2019-01-23 2019-05-24 西安微电子技术研究所 一种混合电路中存储器芯片的测试装置
CN110120242A (zh) * 2019-05-05 2019-08-13 珠海市杰理科技股份有限公司 存储器测试方法、装置、计算机设备以及存储介质
CN110415751A (zh) * 2019-08-06 2019-11-05 南京邮电大学 一种可参数化配置的存储器内建自测试电路
CN110445585A (zh) * 2019-08-13 2019-11-12 北京简约纳电子有限公司 基于ppp数据帧组帧和解帧硬件加速器
CN112614534A (zh) * 2020-12-17 2021-04-06 珠海市一微半导体有限公司 一种mbist电路系统
CN114035027A (zh) * 2021-11-10 2022-02-11 成都利普芯微电子有限公司 一种mbist电路、驱动芯片、电子设备及测试方法
CN114127853A (zh) * 2019-08-21 2022-03-01 华为技术有限公司 一种存储器测试电路及装置
CN114385426A (zh) * 2020-10-16 2022-04-22 长鑫存储技术有限公司 存储器测试方法、装置、设备及存储介质
CN114678057A (zh) * 2022-03-28 2022-06-28 长鑫存储技术有限公司 存储器测试修复电路、存储装置和存储器测试修复方法
CN116521466A (zh) * 2023-07-03 2023-08-01 武汉芯必达微电子有限公司 一种嵌入式Flash内建自测试的电路与方法
CN116543823A (zh) * 2023-06-05 2023-08-04 海光信息技术股份有限公司 存储器装置及其自修复方法、芯片及其测试方法

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744009A (zh) * 2013-12-17 2014-04-23 记忆科技(深圳)有限公司 一种串行传输芯片测试方法、系统及集成芯片
US20170277613A1 (en) * 2016-03-25 2017-09-28 Qualcomm Incorporated Multiple mode testing in a vector memory restricted test environment
CN108899061A (zh) * 2018-07-20 2018-11-27 北京嘉楠捷思信息技术有限公司 一种电源常开芯片中的存储器内建自测试方法和系统
CN109684245A (zh) * 2018-12-11 2019-04-26 中国航空工业集团公司西安航空计算技术研究所 一种apb总线访问spi flash的方法及装置
CN109801666A (zh) * 2019-01-23 2019-05-24 西安微电子技术研究所 一种混合电路中存储器芯片的测试装置
CN110120242A (zh) * 2019-05-05 2019-08-13 珠海市杰理科技股份有限公司 存储器测试方法、装置、计算机设备以及存储介质
CN110415751A (zh) * 2019-08-06 2019-11-05 南京邮电大学 一种可参数化配置的存储器内建自测试电路
CN110445585A (zh) * 2019-08-13 2019-11-12 北京简约纳电子有限公司 基于ppp数据帧组帧和解帧硬件加速器
CN114127853A (zh) * 2019-08-21 2022-03-01 华为技术有限公司 一种存储器测试电路及装置
CN114385426A (zh) * 2020-10-16 2022-04-22 长鑫存储技术有限公司 存储器测试方法、装置、设备及存储介质
CN112614534A (zh) * 2020-12-17 2021-04-06 珠海市一微半导体有限公司 一种mbist电路系统
CN114035027A (zh) * 2021-11-10 2022-02-11 成都利普芯微电子有限公司 一种mbist电路、驱动芯片、电子设备及测试方法
CN114678057A (zh) * 2022-03-28 2022-06-28 长鑫存储技术有限公司 存储器测试修复电路、存储装置和存储器测试修复方法
CN116543823A (zh) * 2023-06-05 2023-08-04 海光信息技术股份有限公司 存储器装置及其自修复方法、芯片及其测试方法
CN116521466A (zh) * 2023-07-03 2023-08-01 武汉芯必达微电子有限公司 一种嵌入式Flash内建自测试的电路与方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王枭: "一种DDR SDRAM通用内建自测试电路的设计与实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, pages 135 - 271 *

Also Published As

Publication number Publication date
CN116758968B (zh) 2023-12-08

Similar Documents

Publication Publication Date Title
US7580807B2 (en) Test protocol manager for massive multi-site test
KR101524451B1 (ko) Ip 블럭의 회로 테스팅을 위한 기능적 패브릭 기반 테스트 래퍼
US8839057B2 (en) Integrated circuit and method for testing memory on the integrated circuit
JP4856429B2 (ja) バス検査のためのオンチップ回路
CN103310852B (zh) 基于ieee 1500标准兼容sram/rom的mbist控制器结构系统
Grecu et al. Testing network-on-chip communication fabrics
CN101458971B (zh) 一种嵌入式静态存储器的测试系统及测试方法
US8386864B2 (en) Locally synchronous shared BIST architecture for testing embedded memories with asynchronous interfaces
US8156391B2 (en) Data controlling in the MBIST chain architecture
CN100573537C (zh) 一种soc芯片系统级验证系统及方法
JP3216449B2 (ja) 半導体メモリの故障自己診断装置
CN102403042B (zh) 基于锁存器的存储器设备
US7844867B1 (en) Combined processor access and built in self test in hierarchical memory systems
CN109061446A (zh) 一种单端口传输芯片的测试方法及系统
US20160259000A1 (en) Communication and control topology for efficient testing of sets of devices
US7237168B2 (en) Design for test of analog module systems
CN116758968B (zh) 存储器内建自测试方法及其电路、芯片
US6990621B2 (en) Enabling at speed application of test patterns associated with a wide tester interface on a low pin count tester
Zorian et al. IEEE 1500 utilization in SOC design and test
CN100442072C (zh) 用以测试数字逻辑电路的测试电路
US7716549B2 (en) Semiconductor apparatus and testing method
US20090295403A1 (en) Inter-device connection test circuit generating method, generation apparatus, and its storage medium
CN115443413A (zh) 芯片测试电路及电路测试方法
Dhar et al. Coverage driven verification of I2C protocol using System Verilog
CN111124769A (zh) 一种嵌入式tdp ram模块测试电路与测试方法

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