CN114203253A - 芯片的存储器故障修复装置和芯片 - Google Patents
芯片的存储器故障修复装置和芯片 Download PDFInfo
- Publication number
- CN114203253A CN114203253A CN202111448187.8A CN202111448187A CN114203253A CN 114203253 A CN114203253 A CN 114203253A CN 202111448187 A CN202111448187 A CN 202111448187A CN 114203253 A CN114203253 A CN 114203253A
- Authority
- CN
- China
- Prior art keywords
- repair
- data
- memory
- chip
- fault
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
Landscapes
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
本申请提供一种芯片的存储器故障修复装置和芯片,用以解决硬件电路fuse故障导致芯片故障修复失败的问题。在执行对芯片存储器进行故障检测和修复时,本申请采用处理器读取flash中的第一修复信息,若基于第一修复信息确定对所述芯片进行故障检测,则发送检测指令给寄存器,检测模块在寄存器中获取到所述检测指令,对存储器进行故障检测,并生成检测结果,修复模块基于检测结果生成修复数据并发送给寄存器,然后,处理器基于各存储器的修复数据更新第一修复信息得到第二修复信息,并将各存储器的修复数据写入到flash中进行备份,最终,若确定对所述芯片进行修复时,发送修复指令给寄存器,修复模块接收到修复指令,修复存储器。
Description
技术领域
本申请涉及芯片检测技术领域,尤其涉及一种芯片的存储器故障修复装置和芯片。
背景技术
目前,芯片进行存储器的诊断和修复时,一般采用一次性可编程fuse存储修复进行。对芯片而言,需要增加fuse macro和控制电路,增加了芯片的面积和成本。同时,常规的芯片存储修复需要增加硬件电路,控制读写修复数据和修复后启动复位等功能,而硬件电路一旦出现故障,将导致芯片修复不能完成,硬件故障导致较大风险。又,现存方案采用fuse存储修复数据,只能读写一次数据,增大了芯片修复失败的风险。
发明内容
本申请的目的是提供一种芯片的存储器故障修复装置和芯片,用以解决硬件电路fuse故障导致芯片故障修复失败的问题。
第一方面,本申请提供一种芯片故障修复装置,所述装置包括:
处理器、非易失性存储器flash、寄存器、芯片,所述芯片中包括多个存储器,每个存储器分别对应一个检测模组,每个检测模组中包括测试模块和修复模块,其中:
所述处理器,用于读取所述flash中的第一修复信息;若基于所述第一修复信息确定对所述芯片进行故障检测,则发送检测指令给所述寄存器;
所述存储器的所述测试模块,用于在所述寄存器中获取到所述检测指令,则对所述存储器进行故障检测,并将检测结果发送给所述存储器的修复模块;
所述存储器的修复模块,用于基于所述检测结果生成修复数据并发送给所述寄存器;
所述处理器,还用于基于各所述存储器的修复数据更新所述第一修复信息得到第二修复信息,并将各存储器的修复数据写入到所述flash中进行备份,若基于所述第二修复信息确定对所述芯片进行修复时,发送修复指令给所述寄存器;
所述修复模块,还用于若从所述寄存器中接收到所述修复指令,则基于所述存储器的修复数据对所述存储器进行修复操作。
在一些实施例中,所述处理器具体用于基于以下方法确定是否对所述芯片进行故障检测:
若所述第一修复信息指示所述芯片未进行故障检测,则确定对所述芯片进行故障检测。
若所述第一修复信息指示为所述芯片进行过故障检测且测试通过不需要修复,则确定不需要所述芯片进行故障检测;
若所述修复信息指示为所述芯片进行过故障检测且所述芯片有故障但可以修复,则确定不需要所述芯片进行故障检测;
若所述修复信息指示为所述芯片进行过故障测试且测试失败芯片为坏片,则确定不需要所述芯片进行故障检测;
若所述修复信息指示为除去上述四种类型之外的其它情况,则确定需要所述芯片进行故障检测。
在一些实施例中,执行所述对所述存储器进行故障检测,所述测试模块具体用于:
发送测试激励给所述存储器,并获取所述测试激励的响应信息;
基于所述响应信息和预设值的比较结果,生成所述存储器的检测结果。
在一些实施例中,所述存储器包括多个片区,每个片区包括多个行和列,所述检测结果中包括故障代码,所述故障代码中包括:第一数据、第二数据和第三数据,其中:
所述第一数据用于指示存在故障的比特位所在的行/列;
所述第二数据用于指示存在故障的比特位所在片区标识,若所述第一数据指示有多个行/列出现故障,则所述第二数据用于指示存在故障的行/列的最低列/行的所在的片区;
所述第三数据用于指示存在故障的行/列所在片区的总片数。
和/或,所述检测结果还包括第一检测信号,第二检测信号和第三检测信号,其中,
所述第一检测信号用于指示所述存储器是否进行过测试;
所述第二检测信号用于指示所述存储器是否测试通过;
所述第三检测信号用于指示所述存储器是否可修复。
在一些实施例中,所述修复模块包括第一单元,第二单元和第三单元,其中,
所述第一单元,用于接收所述第一检测信号并存储所述故障代码;
所述第二单元,用于分析所述故障代码生成所述修复数据,并在生成所述修复数据之后生成分析完成信号;
所述第三单元,用于获取所述分析完成信号,若在所述分析完成信号的上升沿,将所述修复数据发送给寄存器,并生成发送完成信号给所述寄存器,其中,所述发送完成信号用于指示所述寄存器所述修复数据发送完成。
在一些实施例中,执行所述分析所述故障代码生成所述修复数据,所述第二单元具体用于:
若所述存储器包括冗余单元,基于以下方法生成所述修复数据:
若所述第一数据指示为不存在有故障的行/列,则按照修复数据的数据格式生成用于指示无故障且不需要修复的修复数据;
若所述第一数据指示有至多n个行/列出现故障,且所述第三数据指示有故障的行/列可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且可要修复的修复数据;其中,n为所述存储器的冗余单元的数量;
若所述第一数据指示有至多n个行/列出现故障,且所述第三数据指示有故障的行/列不可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据;
若所述第一数据指示有至少m个行/列出现故障,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据,其中m大于所述n。
在一些实施例中,所述装置还包括***总线APB模块,所述APB模块用于响应所述处理器的调度在所述flash和所述寄存器之间传输数据。
在一些实施例中,所述装置还包括串行外设接口SPI模块,所述处理器具体用于通过所述SPI模块对所述flash进行读写操作。
在一些实施例中,所述处理器还用于;
若所述寄存器和所述修复模块的所述修复信息丢失,则返回执行所述读取所述flash中的第一修复信息的步骤。
在一些实施例中,所述处理器还用于基于以下方法检测所述flash中的多个区域是否故障:
针对所述多个区域中任意一个目标区域,在所述目标区域写入随机数据;
读取所述随机数据,将所述读取值与所述随机数据进行比较;
若所述读取值与所述随机数据一致,则在所述目标区域写入无故障标志;
若所述读取值与所述随机数据不一致,则在所述目标区域写入故障标志;
所述无故障标志用于指示所述处理器在所述目标区域写入第二修复信息和各存储器的修复数据;
所述故障标志用于指示所述处理器禁止在所述目标区域读写数据。
第二方面,本申请提供一种芯片,包括如本申请第一方面提供的任一所述装置。
本申请的实施例提供的技术方案至少带来以下有益效果:
基于上述芯片故障修复装置和芯片,本申请使用板级flash对芯片进行修复,在少量增加额外硬件电路的情况下,例如时钟,完成芯片存储器的故障修复,避免了芯片面积和成本的增加,又采用了软件方式读写修复数据,不增加读写数据和复位电路,降低硬件电路故障带来的风险,其中,本申请采用的flash支持多次烧写同一位置,即使flash目标位置出现故障,也可软件灵活将修复数据存储到其他位置,采用外部flash替代片内fuse,解决一旦fuse出现故障无法替换导致芯片故障修复失败的问题,更好地提供高了整个装置的容错性,为用户提供了更简单方便的方法,改善了用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本申请各较佳实施例。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种芯片故障修复装置的结构示意图;
图2为本申请实施例提供的处理器确定是否对芯片存储器进行故障检测的流程示意图;
图3为本申请实施例提供的测试模块执行对存储器进行故障检测的流程示意图;
图4为本申请实施例提供的冗余单元接口的格式示意图;
图5为本申请实施例提供的对存在故障的存储器进行修复的流程示意图;
图6为本申请实施例提供的flash模块进行故障检测的流程示意图;
图7为本申请实施例提供的芯片故障修复装置的整体工作流程示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。其中,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
并且,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面将结合实施例对本申请提供的一种芯片故障修复装置和芯片进行介绍。
本申请实施例中主要用以解决硬件电路fuse故障导致芯片故障修复失败的问题。本申请的发明构思可概括为:在执行对芯片存储器进行故障检测和修复时,本申请采用处理器读取flash中的第一修复信息,若基于第一修复信息确定对所述芯片进行故障检测,则发送检测指令给寄存器,检测模块在寄存器中获取到所述检测指令,对相应的存储器进行故障检测,并将检测结果发送给存储器的修复模块,修复模块基于检测结果生成修复数据并发送给寄存器,然后,处理器基于各存储器的修复数据更新第一修复信息得到第二修复信息,并将各存储器的修复数据写入到flash中进行备份,最终,若基于第二修复信息确定对所述芯片进行修复时,发送修复指令给寄存器,修复模块接收到修复指令,完成对存储器的修复操作。综上,本申请实施例使用板级flash对芯片进行修复,在少量增加额外硬件电路的情况下,例如时钟,该增加的少量硬件设备在图1中没有体现,完成芯片存储器的故障检测和故障修复,避免了芯片面积和成本的增加,又采用了软件方式读写修复数据,不增加读写数据和复位电路,降低硬件电路故障带来的风险。此外,本申请采用的flash支持多次烧写同一位置,即使flash目标位置出现故障,也可软件灵活将修复数据存储到其他位置,采用外部flash替代片内fuse,解决一旦fuse出现故障无法替换的问题,更好地提供高了整个装置的容错性。给用户提供了一种芯片故障修复装置,改善了用户体验。
本申请提供的芯片的存储器故障修复装置可用于终端设备出厂前的芯片测试场景。例如智能电视内置的芯片在出厂之前,可以通过本申请提供的故障修复装置完成芯片的故障检测和修复。
在介绍完本申请实施例的主要发明思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
基于上述描述,本申请实施例提供的一种芯片故障修复装置,如图1所示,装置包括:处理器101、存储器108、非易失性存储器103flash103、寄存器105、芯片,芯片中包括多个存储器108,每个存储器108分别对应一个检测模组,每个检测模组中包括测试模块106和修复模块107,其中:
处理器101,对应图1中的CPU,用于读取存储器108非易失性存储器flash中的第一修复信息;若基于第一修复信息确定对芯片进行故障检测,则发送检测指令给寄存器105。
在一些实施例中,处理器101具体基于以下方法确定是否对芯片存储器108进行故障检测,如图2可实施为:
在步骤201中,若第一修复信息指示芯片存储器108未进行故障检测,则确定对芯片进行故障检测。例如,第一修复信息repair_data0为FFxxxxxx,则表示未进行故障检测,生成第一标志位boot_mode=0,基于该第一标志位确定对芯片进行故障检测,并由处理器101向寄存器105发送检测指令触发对各存储器108的建设。
在步骤202中,若第一修复信息指示为芯片存储器108进行过故障检测且测试通过不需要修复,则确定不需要芯片进行故障检测。例如,第一修复信息repair_data0为80xxxxxx,则生成第二标志位boot_mode=1,指示为芯片存储器108进行过故障检测且测试通过不需要修复,基于该第二标志位确定不需要芯片进行故障检测。
在步骤203中,若第一修复信息指示为芯片进行过故障检测且芯片有故障但可以修复,则确定不需要芯片进行故障检测。例如,第一修复信息repair_dataO为C0xxxxxx,生成第三标志位boot_mode=2,表明芯片进行过故障检测且芯片有故障但可以修复,基于该第三标志位确定不需要芯片进行故障检测。
在步骤204中,若第一修复信息指示为芯片进行过故障测试且测试失败芯片为坏片,则确定不需要芯片进行故障检测。例如,第一修复信息repair_dataO为A0xxxxxx,生成第四标志位boot_mode=3,表明了芯片进行过故障测试且测试失败芯片为坏片,基于该第四标志位确定不需要芯片进行故障检测。
在步骤205中,若第一修复信息指示为除去上述四种类型之外的其它情况,则生成第一标志位,即均按照第一类型处理,确定对芯片存储器108进行故障检测。
各个存储器108及其对应的检测模式的工作机制相同,为便于理解,下文以一个存储器108的角度阐述如何对该存储器108进行测试。
存储器108的测试模块106,对应图1中的BIST模块,用于在寄存器105TOP_REG中获取到处理器101发送的检测指令,则对存储器108进行故障检测,并将检测结果发送给存储器108的修复模块107,即图1中的RepariDataGen模块。
在一些实施例中,测试模块106执行对存储器108进行故障检测,通过处理器101配置该模块进入BIST MODE(测试模式),该模式下,对芯片存储器108发出相应的测试激励,等待芯片存储器108响应并输出结果,然后将结果与预期值进行比较,如果结果与预期值一致,则表示该芯片存储器108没有故障,否则表示该芯片存储器108存在故障。具体如图3可实施为:
在步骤301中,处理器101配置BIST模块使能。
在步骤302中,BIST模块按照顺序,进行不同类型的故障检测。
在步骤303中,将激励传送给存储器108mem然后读取存储器108mem的响应,并与预期值进行比较。
在步骤304中,生成故障检测结果。
存储器108包括多个片区,每个片区包括多个行和列,例如下表1所示:
表1
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 |
其中,假设表3位6x4的数组,每两行分为一个片区,则每个片区的数组为2x4,包括2行4列。
检测结果中包括故障代码,故障代码中包括:第一数据、第二数据和第三数据,其中:
第一数据用于指示存在故障的比特位所在的行/列;
第二数据用于指示存在故障的比特位所在片区标识,若第一数据指示有多个行/列出现故障,则第二数据用于指示存在故障的行/列的最低列/行的所在的片区;
第三数据用于指示存在故障的行/列所在片区的总片数。例如,下表2为第一数据、第二数据和第三数据:
表2
dataO | data1 | data2 |
其中,以8192x64的存储器108为例子,该存储器108包括一个列冗余单元。第一数据data0位宽为64bit,分别跟输出Q的64位一一对应,值为1表示输出Q的对应位出现故障,如10001表示输出Q的第0位和第4位出现故障。第二数据data1表示出现故障Q位于哪个column,该column为存在故障的比特位所在片区,如该8192x64的存储器108的8192行均分为四个column。如果输出Q的多个位出现故障,对于包括行冗余单元的存储器108,则只记录输出Q的存在故障的行的最低行的所在的片区,或者对于包括列冗余单元的存储器108,只记录输出Q的存在故障的列的最低列的所在的片区。第三数据data2表示故障是否对应多个column存在故障。
需要说明的是,上述为存储器108包括1个冗余单元的情况,如果存储器108有2个冗余单元,则需要将data0拆分为data0_H和data0_L,data0_H对应8192x64的存储器108的高32位,即32~63位,data0_L对应8192x64的存储器108的低32位,即0~31位,对应的data1和data2也要基于相同的原理进行拆分。如下表3所示:
表3
data0_H | data0_L | data1_H | data1_L | data2_H | data2_L |
其中,以8192x64的存储器108为例子,假设该存储器108包括2个列冗余单元。第一数据data0_H位宽为32bit,data0_L位宽同为32bit,分别跟输出Q的64位一一对应,值为1表示输出Q的对应位出现故障,如data0_H值为10001表示输出Q的第32位和第36位出现故障,data0_L值为10001表示输出Q的第0位和第4位出现故障。基于相同的工作机制,第二数据data1_H和data1_L表示出现故障Q位于哪个column,该column为存在故障的比特位所在片区,如该8192x64的存储器108的8192行均分为四个column。如果输出Q的多个位出现故障,对于包括行冗余单元的存储器108,则只记录输出Q的存在故障的行的最低列的所在的片区,第三数据data2_H和data2_L表示是否对应多个column存在故障。
除此之外,除了产生上述第一数据、第二数据和第三数据,该测试模块106还有其他信号作为状态输出,因此检测结果还包括第一检测信号,第二检测信号和第三检测信号,其中:
第一检测信号bist_done用于指示存储器108是否进行过测试;
第二检测信号bist_pass用于指示存储器108是否测试通过,无故障时,该信号值为1,否则值为0;
第三检测信号bist_repairable用于指示存储器108是否可修复。
综上所述,存储器108的检测结果可包括:第一检测信号bist_done,第二检测信号bist_pass,第三检测信号bist_repairable以及故障代码。
完成对存储器108的故障检测之后,存储器108的修复模块107基于检测结果生成修复数据并发送给寄存器105,即图1中的RepariDataGen模块将基于BIST模块所生成的检测结果生成修复数据并发送给寄存器105。
在一些实施例中,如图1所示,该修复模块107包括第一单元,第二单元和第三单元,其中:
第一单元FaultCapture,用于接收第一检测信号并存储故障代码,具体地,FaultCapture主要任务是接收BIST模块的bist_done信号,并锁存故障代码,保证此时BIST模块已经完成故障检测,此时为最终的故障代码。
在一些实施例中,第二单元RepairCalculate,用于分析故障代码生成修复数据,并在生成修复数据之后生成分析完成信号,具体如下:
若存储器108包括冗余单元,基于以下方法生成修复数据:
若第一数据指示为不存在有故障的行/列,则按照修复数据的数据格式生成用于指示无故障且不需要修复的修复数据;
若第一数据指示有至多n个行/列出现故障,且第三数据指示有故障的行/列可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且可要修复的修复数据;其中,n为存储器108的冗余单元的数量;
若第一数据指示有至多n个行/列出现故障,且第三数据指示有故障的行/列不可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据;
若第一数据指示有至少m个行/列出现故障,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据,其中m大于n。
以存储器108包括一个冗余单元为例进行说明,对于列冗余单元,行冗余单元基于以下方法生成修复数据:
若第一数据指示为不存在有故障的比特位,则按照修复数据的数据格式生成用于指示无故障且不需要修复的修复数据;
若第一数据指示有1列比特位出现故障,且第三数据指示有故障的比特位在一个片区,则按照修复数据的数据格式生成用于指示有故障且可要修复的修复数据;其中,若冗余单元为行冗余一个片区为若干列,若冗余单元为列冗余,一个片区为若干行;
若第一数据指示有1列比特位出现故障,且第三数据指示有故障的比特位在多个片区,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据;
若第一数据指示有多列比特位出现故障,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据。
对于行冗余单元,基于相同的工作原理,生成修复数据:
若第一数据指示为不存在有故障的比特位,则按照修复数据的数据格式生成用于指示无故障且不需要修复的修复数据;
若第一数据指示有1行比特位出现故障,且第三数据指示有故障的比特位在一个片区,则按照修复数据的数据格式生成用于指示有故障且可要修复的修复数据;其中,若冗余单元为行冗余一个片区为若干列,;
若第一数据指示有1行比特位出现故障,且第三数据指示有故障的比特位在多个片区,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据;
若第一数据指示有多行比特位出现故障,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据。
分析故障代码生成修复数据,该步骤主要分为2步:
第一步,判断是否可修复,判断依据是每个冗余单元对应的比特位只有1行或者1列出现故障,且该故障比特位所在的片区column只有1个。对应的第一数据data0,或data0_H和data0_L,只有1个bit为1,同时满足data2为0,或data2_H和data2_L为0。
例如,对于包括一个冗余单元的存储器108,行冗余单元和列冗余单元均可适用。若dataO全为0,则该mem无故障,不需要修复;若dataO只有1个bit为1,且data2=0,表示该存储器108存在1个bit故障,且位于1个片区column,可以修复;若dataO只有1个bit为1,且data2=1,表示该mem存在1个bit出现故障,但位于多个column,不可以修复;若dataO有多个bit为1,表示该存储器108多个bit存在故障,不可以修复。
对于包括2个列冗余单元的存储器108,以8192x64的存储器108为例子,假设该存储器108包括2个列冗余单元,则需要将data0拆分为data0_H和data0_L,data0_H对应8192x64的存储器108的高32位,即32~63位,dataO_L对应8192x64的存储器108的低32位,即0~31位,对应的datal和data2也要基于相同的原理进行拆分。若data0_H和dataO_L全为0,则该mem无故障,不需要修复若data0_H只有1个bit为1,且data2_H=0,表示该存储器108的高32位存在1个bit故障,且位于1个片区column,可以修复,又,data0_L只有1个bit为1,且data2_L=0,表示该存储器108的低32位存在1个bit故障,且位于1个片区column,可以修复;若data0_H只有1个bit为1,且data2_H=1,表示该存储器108的高32位存在1个bit出现故障,但位于多个column,不可以修复;若data0_L只有1个bit为1,且data2_L=1,表示该存储器108的低32位存在1个bit出现故障,但位于多个column,不可以修复。若data0_H和data0_L有多个bit为1,表示该存储器108的高32位和低32位均有多个bit存在故障,不可以修复。只有该存储器108的高32位和低32位的故障位均可以修复,才可以修复整个存储器108。
然后,基于判断结果产生bist_repairable信号。该信号的值为1表示可以修复,否则为0。
第二步,产生修复数据repair_data。该单元将data0和data1转换成修复数据repairdata,产生修复数据后,该单元产生分析完成信号update,并将该信号发送到第三单元UpdateRepairData。
带冗余的存储器108的冗余单元接口一般为固定格式,比如ARM的存储器采用针对输出Q的64bit进行修复,格式请参考图4。对于包含两个列冗余单元的存储器,具体含义如下:
Columnsegment(Right)表明该冗余单元位于最右边;
ShiftIORange:Q[31:0]表明右侧冗余可修复Q的0到31位;
FuseSet{FuseMap...}表明右侧FuseMap[4:0]与Q[31:0]的对应关系,具体对应关系请见图4;
PinMap{ReapirEnable:CRE1表明右侧冗余单元的使能信号是CRE1;
FuseMap[0]:FCA1[0]表明FCA1[0]对应右侧FuseMap[0];
FuseMap[1]:FCA1[0]表明FCA1[1]对应右侧FuseMap[1];
FuseMap[2]:FCA1[0]表明FCA1[2]对应右侧FuseMap[2];
FuseMap[3]:FCA1[0]表明FCA1[3]对应右侧FuseMap[3];
FuseMap[4]:FCA1[0]表明FCA1[4]对应右侧FuseMap[4];
Columnsegment(Left)表明冗余单元位于最左边;
ShiftIORange:Q[63:32]表明左侧冗余可修复Q的63到32位;
FuseSet{FuseMap...}表明左侧FuseMap与Q[63:32]的对应关系,具体关系请见图4;
PinMap{ReapirEnable:CRE2表明左侧冗余单元的使能信号CRE2;
FuseMap[0]:FCA1[0]表明FCA1[0]对应左侧FuseMap[0];
FuseMap[1]:FCA1[0]表明FCA1[1]对应左侧FuseMap[1];
FuseMap[2]:FCA1[0]表明FCA1[2]对应左侧FuseMap[2];
FuseMap[3]:FCA1[0]表明FCA1[3]对应左侧FuseMap[3];
FuseMap[4]:FCA1[0]表明FCA1[4]对应左侧FuseMap[4]。
接口信号有CRE1/FCA1[4:0]和CRE2/FCA2[4:0]。其中CRE1控制是否使用第一块冗余单元,当CRE1值为1表示用冗余单元代替故障单元,值为0表示不使用冗余单元。FCA1[4:0]表示第一块冗余单元可以修复Q的个Bit。如图4中所示,如FCA1[4:0]=0,表示Q的第32位出现故障,可以用冗余单元修复Q的第32位。CRE2和FCA2的也是同样如此。该例中CRE1可修复Q的0-31位,CRE2可修复Q的32-63位,即该存储器108的Q所有bit都可以进行修复。
在一些实施例中,第三单元UpdateRepairData将data0和data1转换成修复数据repairdata,产生修复数据,修复数据的格式如下表4:
表4
CRE2 | FCA2[4] | FCA2[3] | FCA2[2] | FCA2[1] | FCA2[0] | CRE1 | FCA1[4] | FCA1[3] | FCA1[2] | FCA1[1] | FCA1[0] |
表中CRE1和CRE2均包括两种状态,也就是值为1或0,1表示使能修复和0表示不使能修复。同时FCA1[4:0]和FCA2[4:0]分别对应输出0-31位和32-63位,值同为1或0,FCA1[4:0]和FCA2[4:0]在表4中所占的5个位置即为5位二进制的值,该值表示可修复的输出Q对应的故障位表4中CRE1、FCA1[4:0]、CRE2和FCA2[4:0]这12个接口信号对应12位二进制,该12位二进制即为对应存储器108的修复数据。
第三单元UpdataRepairData,用于获取分析完成信号,若获取分析完成信号的上升沿,将修复数据发送给寄存器105,并生成发送完成信号repair_done给寄存器105,其中,发送完成信号用于指示寄存器105修复数据发送完成。
至此,RepairDataGen模块完成是否可修复的判断、修复数据的产生和修复数据的传递及锁存。RepairDataGen主要产生发送完成信号repair_done、可修复信号repair_pass以及修复数据repairdata,然后将这两个信号以及修复数据发送给寄存器105。
以上介绍了一个存储器108的检测和修复数据的生成过程。
在一些实施例中,本申请完成对存储器108的故障检测并生成修复数据后,处理器101还用于基于各存储器108的修复数据更新第一修复信息得到第二修复信息,例如,第一修复信息repair_data0本来的值为FFxxxxxx,CPU发送指令给测试模块106完成故障检测并生成修复数据后,从寄存器105中汇总并读取修复数据,若基于修复数据确定该存储器108不存在故障,则更新第一修复信息repair_data0,得到第二修复信息为80xxxxxx,并将各存储器108的修复数据写入到flash中进行备份。若基于第二修复信息确定对存储器108进行修复时。对存在故障的存储器108进行修复的步骤如图5可实施为:
在步骤501中,处理器101发送修复指令给寄存器105。
在步骤502中,修复模块107若从寄存器105中接收到修复指令,则基于存储器108的修复数据对存储器108进行修复操作。由repair_data_gen将修复数据配置到存储器108的修复接口,例如,CRE1/FCA1/CRE2/FCA2。
存储器108的修复是通过增加冗余单元,使用冗余单元中正常的单元替换带故障的单元,包括行冗余单元和列冗余单元。
行冗余单元:如8192x64的mem,会在最上边和最下边增加2个冗余单元,实际为8194个64bit数据,对应[8193:0]。正常时使用中间的8192个64bit,即[8192:1]x[63:0]。如果地址A1的第N bit出现故障,该bit数据读写异常,进行修复后,会跳过A1这个地址,将存储单元分成左右2部分。假设地址A1位于右侧,则修复后存储mem的地址范围是{[8193:A1+1],[A1-1:1]}x[63:0],如果地址A1位于左侧,则修复后存储mem的地址范围是{[8192:A1+1],[A1-1:0]}x[63:0]。
列冗余单元:8192x64的存储mem,主要针对输出Q进行修复,实际为8192x66,正常使用[8191∶0]x[64:1],修复后使用[8191:0]x{[65:A1+1],[A1-1:1]}或[8191:0]x{[64:A1+1],[A1-1:0]}。两种冗余方式都实际项目都存在。列冗余单元使用更为广泛,本申请针对带列冗余单元的存储器108。
需要补充的是本申请实施例提供的装置还包括***总线APB模块102,该APB模块用于响应处理器101的调度在flash和寄存器105之间传输数据,主要配合CPU完成修复数据的搬运,主要包括从TOP_REG搬运至CPU,从CPU中将修复数据搬运至TOP_REG。
该装置还包括串行外设接口103SPI模块,处理器101将通过SPI模块对flash进行读写操作。该SPI模块是芯片自有功能,利用现有的SPI读写程序,减小了芯片软件重复开发。
在一些实施例中,若整个装置断电时,寄存器105和修复模块107的修复信息将会丢失,但flash中仍然保存有修复数据,则处理器101可以读取flash中的数据,返回执行读取flash中的第一修复信息的步骤。
在一些实施例中,flash模块是存储单元,属于板级器件。通常分配2-3块修复区,第一块修复区为默认,第2和3为备选区,处理器101还用于基于以下方法检测flash中的多个区域是否故障,如下图6可实施为:
在步骤601中,针对flash中的多个区域中任意一个目标区域,在目标区域写入随机数据。
在步骤602中,读取随机数据,将读取值与随机数据进行比较。
在步骤603中,若读取值与随机数据一致,则在目标区域写入无故障标志,该无故障标志用于指示处理器101在该目标区域写入第二修复信息和各存储器108的修复数据。例如,读取值与随机数据一致,则返回步骤601,重复进行20次测试,20次测试通过,则该区域第一个字节写入无故障标志数FF。
在步骤604中,若读取值与随机数据不一致,则在目标区域写入故障标志,故障标志用于指示处理器101禁止在目标区域写入第二修复信息和各存储器108的修复数据。例如,读取值与随机数据不一致,表明该区有故障,该区域第一个字节写入故障标志00,更换下一块备选区测试,,重复步骤601-603。
在一些实施例中,本申请提供的芯片故障修复装置的整体工作流程如下图7可实施为:
在步骤701中,芯片复位,即芯片接通电源,开始工作。
在步骤702中,CPU读取flash中的数据信息。
在步骤703中,判断独权的数据信息中的第一修复数据的最高8bit的值是否为FF,即判断第一修复信息repair_data0是否为FFxxxxxx,该芯片是否进行故障检测。
在步骤704中,若第一修复数据的最高8bit的值为FF,则CPU发出指令配置存储器108的修复接口处于无效状态,避免flash中的数据信息对修复接口的影响,又配置存储器108的时钟和rst都处于工作状态。
在步骤705中,CPU配置测试模块106BIST,发出存储器108的故障检测开始信号,并发出读写命令。
在步骤706中,测试模块106对对应的存储器108进行故障检测,得到故障结果。由于一颗芯片通常有N颗存储器108,对每个存储器108给予对应的编号N,那么会产生N个bist_done,bist_pass,bist_repairable。
在步骤707中,存储器108对应的修复模块107对该存储器108的故障结果进行分析,生成修复数据,发送到寄存器105中。因为在步骤706中会产生N个故障结果bist_done,bist_pass,bist_repairable,那么会产生N个repair_done/preairable/repair_data。为方便说明,以后称为repair_done_n,repairable_n,repairdata_n。
在步骤708中,CPU从寄存器105中汇总并读取修复数据,若基于修复数据确定该存储器108不存在故障,则更新第一修复信息repair_data0,得到第二修复信息为80xxxxxx,并将repair_data1-repair_data254的值读写均为0。
在步骤709中,CPU将修复数据写入flash进行备份。
在步骤710中,若CPU基于修复数据确定该存储器108存在故障,并确定该存储器108可修复,写更新第一修复信息repair_data0,得到第二修复信息为C0xxxxxx,从TOP_REG中读取repair_datal-repair_data254的值。
在步骤711中,CPU将修复数据写入flash进行备份,同时对故障存储器108进行修复。
在步骤712中、若CPU基于修复数据确定该存储器108存在故障,并确定该存储器108不可修复,则更新第一修复信息repair_data0,得到第二修复信息为A0xxxxxx,确定该存储器108为坏片。上述步骤真正实现了使用板级flash对芯片进行修复,在不增加额外硬件电路的情况下,完成芯片存储器108的故障修复,避免了芯片面积和成本的增加,又采用了软件方式读写修复数据,不增加读写数据和复位电路,降低硬件电路故障带来的风险,其中,本申请采用的flash支持多次烧写同一位置,即使flash目标位置出现故障,也可软件灵活将修复数据存储到其他位置,更好地提供高了整个装置的容错性。给用户提供了一种芯片故障修复装置和芯片,改善了用户体验。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种芯片的存储器故障修复装置,其特征在于,所述装置包括:
处理器、非易失性存储器flash、寄存器、芯片,所述芯片中包括多个存储器,每个存储器分别对应一个检测模组,每个检测模组中包括测试模块和修复模块,其中:
所述处理器,用于读取所述flash中的第一修复信息;若基于所述第一修复信息确定对所述芯片进行故障检测,则发送检测指令给所述寄存器;
所述存储器的所述测试模块,用于在所述寄存器中获取到所述检测指令,则对所述存储器进行故障检测,并将检测结果发送给所述存储器的修复模块;
所述存储器的修复模块,用于基于所述检测结果生成修复数据并发送给所述寄存器;
所述处理器,还用于基于各所述存储器的修复数据更新所述第一修复信息得到第二修复信息,并将各存储器的修复数据写入到所述flash中进行备份,若基于所述第二修复信息确定对所述芯片进行修复时,发送修复指令给所述寄存器;
所述修复模块,还用于若从所述寄存器中接收到所述修复指令,则基于所述存储器的修复数据对所述存储器进行修复操作。
2.根据权利要求1所述的装置,其特征在于,所述处理器具体用于基于以下方法确定是否对所述芯片进行故障检测:
若所述第一修复信息指示所述芯片未进行故障检测,则确定对所述芯片进行故障检测;
若所述第一修复信息指示为所述芯片进行过故障检测且测试通过不需要修复,则确定不需要所述芯片进行故障检测;
若所述第一修复信息指示为所述芯片进行过故障检测且所述芯片有故障但可以修复,则确定不需要所述芯片进行故障检测;
若所述第一修复信息指示为所述芯片进行过故障测试且测试失败芯片为坏片,则确定不需要所述芯片进行故障检测;
若所述第一修复信息指示为除去上述四种情况之外的其它情况,则确定需要所述芯片进行故障检测。
3.根据权利要求1所述的装置,其特征在于,执行所述对所述存储器进行故障检测,所述测试模块具体用于:
发送测试激励给所述存储器,并获取所述测试激励的响应信息;
基于所述响应信息和预设值的比较结果,生成所述存储器的检测结果。
4.根据权利要求1或3所述的装置,其特征在于,所述存储器包括多个片区,每个片区包括多个行和列,所述检测结果中包括故障代码,所述故障代码中包括:第一数据、第二数据和第三数据,其中:
所述第一数据用于指示存在故障的比特位所在的行/列;
所述第二数据用于指示存在故障的比特位所在片区标识,若所述第一数据指示有多个行/列出现故障,则所述第二数据用于指示存在故障的行/列的最低列/行的所在的片区;
所述第三数据用于指示存在故障的行/列所在片区的总片数;
和/或,所述检测结果中还包括第一检测信号,第二检测信号和第三检测信号,其中,
所述第一检测信号用于指示所述存储器是否进行过测试;
所述第二检测信号用于指示所述存储器是否测试通过;
所述第三检测信号用于指示所述存储器是否可修复。
5.根据权利要求4所述的装置,其特征在于,所述修复模块包括第一单元,第二单元和第三单元,其中,
所述第一单元,用于接收所述第一检测信号并存储所述故障代码;
所述第二单元,用于分析所述故障代码生成所述修复数据,并在生成所述修复数据之后生成分析完成信号;
所述第三单元,用于获取所述分析完成信号,若在所述分析完成信号的上升沿,将所述修复数据发送给寄存器,并生成发送完成信号给所述寄存器,其中,所述发送完成信号用于指示所述寄存器所述修复数据发送完成。
6.根据权利要求5所述的装置,其特征在于,执行所述分析所述故障代码生成所述修复数据,所述第二单元具体用于:
若所述存储器包括冗余单元,基于以下方法生成所述修复数据:
若所述第一数据指示为不存在有故障的行/列,则按照修复数据的数据格式生成用于指示无故障且不需要修复的修复数据;
若所述第一数据指示有至多n个行/列出现故障,且所述第三数据指示有故障的行/列可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且可要修复的修复数据;其中,n为所述存储器的冗余单元的数量;
若所述第一数据指示有至多n个行/列出现故障,且所述第三数据指示有故障的行/列不可采用冗余单元修复,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据;
若所述第一数据指示有至少m个行/列出现故障,则按照修复数据的数据格式生成用于指示有故障且无法修复的修复数据,其中m大于所述n。
7.根据权利要求1所述的装置,其特征在于,所述装置还包括***总线APB模块,所述APB模块用于响应所述处理器的调度在所述flash和所述寄存器之间传输数据。
8.根据权利要求1所述的装置,其特征在于,所述处理器还用于;
若所述寄存器和所述修复模块的所述修复信息丢失,则返回执行所述读取所述flash中的第一修复信息的步骤。
9.根据权利要求1所述的装置,其特征在于,所述处理器还用于基于以下方法检测所述flash中的多个区域是否故障:
针对所述多个区域中任意一个目标区域,在所述目标区域写入随机数据;
读取所述随机数据,将所述读取值与所述随机数据进行比较;
若所述读取值与所述随机数据一致,则在所述目标区域写入无故障标志;
若所述读取值与所述随机数据不一致,则在所述目标区域写入故障标志;
所述无故障标志用于指示所述处理器在所述目标区域写入第二修复信息和各存储器的修复数据;
所述故障标志用于指示所述处理器禁止在所述目标区域读写数据。
10.一种芯片,其特征在于,包括权利要求1-9中任一所述装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448187.8A CN114203253A (zh) | 2021-11-30 | 2021-11-30 | 芯片的存储器故障修复装置和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111448187.8A CN114203253A (zh) | 2021-11-30 | 2021-11-30 | 芯片的存储器故障修复装置和芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114203253A true CN114203253A (zh) | 2022-03-18 |
Family
ID=80649799
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111448187.8A Pending CN114203253A (zh) | 2021-11-30 | 2021-11-30 | 芯片的存储器故障修复装置和芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114203253A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860531A (zh) * | 2022-07-06 | 2022-08-05 | 北京智芯半导体科技有限公司 | 安全芯片的故障检测方法、装置、电子设备及介质 |
CN115168115A (zh) * | 2022-09-06 | 2022-10-11 | 北京象帝先计算技术有限公司 | 一种基于otp模块的数据修复方法、otp控制器以及芯片 |
CN115656792A (zh) * | 2022-12-29 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 芯片可测性设计的测试方法及测试平台 |
CN117316253A (zh) * | 2023-11-29 | 2023-12-29 | 蓝芯存储技术(赣州)有限公司 | 一种芯片测试方法、测试***、处理器和内存介质 |
-
2021
- 2021-11-30 CN CN202111448187.8A patent/CN114203253A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860531A (zh) * | 2022-07-06 | 2022-08-05 | 北京智芯半导体科技有限公司 | 安全芯片的故障检测方法、装置、电子设备及介质 |
CN114860531B (zh) * | 2022-07-06 | 2022-09-23 | 北京智芯半导体科技有限公司 | 安全芯片的故障检测方法、装置、电子设备及介质 |
CN115168115A (zh) * | 2022-09-06 | 2022-10-11 | 北京象帝先计算技术有限公司 | 一种基于otp模块的数据修复方法、otp控制器以及芯片 |
CN115168115B (zh) * | 2022-09-06 | 2022-11-15 | 北京象帝先计算技术有限公司 | 一种基于otp模块的数据修复方法、otp控制器以及芯片 |
CN115656792A (zh) * | 2022-12-29 | 2023-01-31 | 摩尔线程智能科技(北京)有限责任公司 | 芯片可测性设计的测试方法及测试平台 |
CN117316253A (zh) * | 2023-11-29 | 2023-12-29 | 蓝芯存储技术(赣州)有限公司 | 一种芯片测试方法、测试***、处理器和内存介质 |
CN117316253B (zh) * | 2023-11-29 | 2024-01-26 | 蓝芯存储技术(赣州)有限公司 | 一种芯片测试方法、测试***、处理器和内存介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114203253A (zh) | 芯片的存储器故障修复装置和芯片 | |
CN112331253B (zh) | 一种芯片的测试方法、终端和存储介质 | |
CN101369240B (zh) | 用于在信息处理***中管理存储错误的***和方法 | |
US8015438B2 (en) | Memory circuit | |
CN112667445B (zh) | 封装后的内存修复方法及装置、存储介质、电子设备 | |
WO2018118837A1 (en) | Method to dynamically inject errors in a repairable memory on silicon and a method to validate built-in-self-repair logic | |
JP2003059292A (ja) | メモリテスト情報を記憶する方法および装置 | |
US20140126313A1 (en) | Chip with embedded non-volatile memory and testing method therefor | |
CN112542199B (zh) | 检测flash存储出错的方法、电路、存储介质和终端 | |
US20060253764A1 (en) | Computer system and method for redundancy repair of memories installed in computer system | |
CN104425040A (zh) | 用于测试存储器的方法和*** | |
CN103247345A (zh) | 快闪存储器及快闪存储器失效存储单元检测方法 | |
CN104517654A (zh) | 半导体存储器件和包括其的半导体*** | |
CN101303897A (zh) | 存储器、修复***与其测试方法 | |
JP2009181425A (ja) | メモリモジュール | |
CN115552422A (zh) | 用于加速神经网络的存储器故障映射 | |
KR101545716B1 (ko) | 메모리 수리 장치 및 방법, 그리고 그를 이용한 메모리 칩 | |
JP2005310313A (ja) | 半導体記憶装置 | |
CN108735268B (zh) | 非易失性存储器修复电路 | |
CN101241769A (zh) | 可修复半导体存储器件及其修复方法 | |
US6539338B1 (en) | Self-diagnostic testing of a network interface adapter | |
JP5910356B2 (ja) | 電子装置、電子装置制御方法及び電子装置制御プログラム | |
CN115658373A (zh) | 基于服务器的内存处理方法和装置、处理器及电子设备 | |
JP6594712B2 (ja) | 半導体メモリ及び半導体メモリのベリファイ方法 | |
CN112463019A (zh) | 数据读取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |