一种闪存芯片的编程方法及测试方法与流程

阅读: 评论:0



1.本发明涉及闪存技术领域,尤其涉及一种闪存芯片的编程方法及测试方法。


背景技术:



2.闪存(flash memory)是一种非易失性存储器,断电不会丢失数据,应用广泛。闪存芯片包括闪存阵列,图1是现有技术中的一种闪存阵列的结构示意图,如图1所示,闪存阵列中包含多个闪存单元,闪存单元10例如为目标单元,目标单元为已编程或已擦除的闪存单元,与闪存单元10的同行相邻的单元为闪存单元11和闪存单元12。
3.图2是存算单元的工作曲线图,如图2所示,横坐标为控制栅电压,纵坐标为存算单元的电流,存算单元的工作电流较小,为纳安级别,则存算单元的状态变化时,例如存算编程状态下较小的浮栅电势变化时,存算单元的电流变化率较大,即存算单元的电流变化量与编程前的电流的比值较大。
4.若闪存单元11和闪存单元12为存算单元,当闪存阵列的编程为随机编程时,存在闪存单元10先编程结束,再对闪存单元11和闪存单元12进行编程的情况;当闪存阵列的编程为顺序编程时,闪存单元10编程结束后,再对闪存单元12进行编程。而闪存单元11和闪存单元12与目标单元相邻,闪存单元11和闪存单元12的浮栅与目标单元的浮栅之间的耦合电容较大,闪存单元11和闪存单元12的电流(浮栅的电势)变化较大时,导致目标单元的电流变化较大。因此,上述两种编程方式都会对已编程的闪存单元产生干扰。


技术实现要素:



5.本发明提供了一种闪存芯片的编程方法及测试方法,以减小对已编程的闪存单元产生的干扰。
6.根据本发明的一方面,提供了一种闪存芯片的编程方法,所述闪存芯片包括闪存阵列,所述闪存阵列包括存算单元;所述编程方法包括至少两次存算编程过程,一次所述存算编程过程包括:
7.向所有待编程存算单元写入第一编程电压;
8.读取每一所述待编程存算单元的当前电流;
9.计算每一所述待编程存算单元的当前电流与对应的第一目标电流的第一差值;
10.将所述第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压;其中,所述第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
11.可选地,在一次所述编程过程中,若所述第一编程电压达到电压限值,所述第二编程电压与所述第一编程电压相等。
12.可选地,在一次所述编程过程中,若所述第一编程电压小于电压限值,则所述第二编程电压大于所述第一编程电压。
13.可选地,所述闪存阵列还包括存储单元;所述编程方法还包括存储编程过程;
14.在执行所述存算编程过程之前,执行所述存储编程过程;所述存储编程过程包括:
15.向待编程存储单元写入第三编程电压,以使每一所述待编程存储单元达到对应的第二目标电流。
16.可选地,在执行所述存储编程过程之后,在执行所述存算编程过程之前,还包括:
17.对待编程存算单元进行初始编程操作,以使每一所述待编程存算单元的电流达到其初始编程电流。
18.可选地,所述对待编程存算单元进行初始编程操作,以使每一所述待编程存算单元的电流达到其初始编程电流,包括:
19.按照所述待编程存算单元的地址顺序,依次将待编程存算单元的电流编程至对应的初始编程电流。
20.可选地,所述对待编程存算单元进行初始编程操作包括至少两次初始编程过程,一次所述初始编程过程包括:
21.向所有所述待编程存算单元写入第一初始编程电压;
22.读取每一所述待编程存算单元的当前初始电流;
23.计算每一所述待编程存算单元的当前初始电流与其初始编程电流的第二差值;
24.将所述第二差值大于或等于所述第一预设值的待编程存算单元作为下一初始编程过程的待编程存算单元,并将第二初始编程电压作为下一初始编程过程的第一初始编程电压;其中,所述第二初始编程电压为当前初始编程过程中第一初始编程电压调整后的电压。
25.可选地,在执行所述存算编程过程之前,还包括:
26.对所述闪存阵列执行擦除操作。
27.根据本发明的另一方面,提供了一种闪存芯片的测试方法,所述测试方法包括本发明任意实施方案所述的编程方法,所述测试方法还包括:
28.若所述存算编程过程的执行次数小于预设次数时,所有待编程存算单元的当前电流与对应的第一目标电流的第一差值小于所述第一预设值,则所述闪存芯片合格。
29.可选地,所述测试方法还包括:
30.若所述存算编程过程的执行次数大于或等于所述预设次数时,仍存在待编程存算单元的当前电流与对应的第一目标电流的第一差值大于或等于所述第一预设值,则所述闪存芯片不合格。
31.本发明实施例的技术方案,闪存芯片的编程方法包括至少两次存算编程过程,通过循环执行至少两次存算编程过程,写入待编程存算单元的编程电压逐步增加,或者向待编程存算单元写入编程电压的编程时间逐步增加,使得每个待编程存算单元逐步达到其对应的第一目标电流,每次存算编程过程中,向待编程存算单元写入的第一编程电压与前一次写入的第一编程电压的差值较小,从而使得每个待编程存算单元的电流(浮栅的电势)变化较小。因此,在后写入第一编程电压的待编程存算单元,对已经写入第一编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰,有利于提高编程的准确度。
32.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
33.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1是现有技术中的一种闪存阵列的结构示意图;
35.图2是存算单元的工作曲线图;
36.图3是本发明实施例提供的一种闪存芯片的编程方法的流程图;
37.图4是本发明实施例提供的又一种闪存芯片的编程方法的流程图;
38.图5是本发明实施例提供的又一种闪存芯片的编程方法的流程图;
39.图6是本发明实施例提供的又一种闪存芯片的编程方法的流程图;
40.图7是本发明实施例提供的一种闪存芯片的测试方法的流程图;
41.图8是本发明实施例提供的又一种闪存芯片的测试方法的流程图。
具体实施方式
42.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
43.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
44.图3是本发明实施例提供的一种闪存芯片的编程方法的流程图,闪存芯片包括闪存阵列,闪存阵列包括存算单元;编程方法包括至少两次存算编程过程。如图3所示,闪存芯片的编程方法包括:
45.s101、向所有待编程存算单元写入第一编程电压。
46.其中,闪存阵列包括多个阵列排布的闪存单元,闪存单元可以作为存算单元,也可以作为存储单元。待编程存算单元为需要进行编程的存算单元。
47.具体地,按照待编程存算单元的地址顺序,依次向每一个待编程存算单元写入第一编程电压,从而向所有待编程存算单元写入第一编程电压。每一次存算编程过程写入的第一编程电压与前一次存算编程过程写入的第一编程电压的差值较小,从而使得每个待编程存算单元的电流(浮栅的电势)变化较小,从而可以减小相邻的存算单元之间的耦合电压。因此,在后写入第一编程电压的待编程存算单元,对已经写入第一编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰。
48.s102、读取每一待编程存算单元的当前电流。
49.具体地,待编程存算单元的当前电流是指待编程存算单元的当前沟道电流,通过读取每一待编程存算单元的当前电流,可以判断每个待编程存算单元是否达到其对应的第一目标电流。
50.s103、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
51.具体地,每个待编程存算单元对应的第一目标电流可以相同,也可以不同,则有的待编程存算单元可能先达到其对应的第一目标电流。将每一个待编程存算单元的当前电流减去其对应的第一目标电流的第一差值,根据第一差值的大小可以判断待编程存算单元是否达到其对应的第一目标电流。
52.s104、判断是否所有的第一差值均小于第一预设值,若是,结束,若否,执行步骤s105。
53.具体地,当所有的第一差值均小于第一预设值时,表明所有的待编程存算单元均达到编程的目标状态,则结束编程。若并非所有的第一差值均小于第一预设值,即存在第一差值大于或等于第一预设值的待编程存算单元,则需要继续对第一差值大于或等于第一预设值的待编程存算单元进行编程。
54.s105、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
55.具体地,对当前存算编程过程中的第一编程电压进行调整,例如是增大第一编程电压,或者减小第一编程电压,或者维持第一编程电压,得到第二编程电压。将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,返回继续执行步骤s101,进入下一存算编程过程。
56.需要说明的是,一次存算编程过程包括步骤s101-步骤s105;通过循环操作,执行完步骤s105之后,继续返回执行步骤s101,实现了至少两次执行存算编程过程,使得每个待编程存算单元逐步达到其对应的第一目标电流,则每次编程之后,待编程存算单元的电流(浮栅的电势)变化较小,因此,在后写入第一编程电压的待编程存算单元,对已经写入第一编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰。
57.本实施例的技术方案,闪存芯片的编程方法包括至少两次存算编程过程,通过循环执行至少两次存算编程过程,写入待编程存算单元的编程电压逐步增加,或者向待编程存算单元写入编程电压的编程时间逐步增加,使得每个待编程存算单元逐步达到其对应的第一目标电流;每次存算编程过程中,向待编程存算单元写入的第一编程电压与前一次写入的第一编程电压的差值较小,从而使得每个待编程存算单元的电流(浮栅的电势)变化较小。因此,在后写入第一编程电压的待编程存算单元,对已经写入第一编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰,有利于提高编程的准确度。
58.在上述技术方案的基础上,可选地,在一次编程过程中,若第一编程电压达到电压限值,第二编程电压与第一编程电压相等。
59.具体地,电压限值例如为待编程存算单元的最大编程电压,如果第一编程电压达到电压限值,则无法继续增大第一编程电压,第二编程电压与第一编程电压相等,即调整前
的第一编程电压与调整第一编程电压后的电压相等。通过增加编程时间的方式,使得待编程存算单元逐步达到其对应的第一目标电流。
60.可选地,在一次编程过程中,若第一编程电压小于电压限值,则第二编程电压大于第一编程电压。
61.具体地,如果第一编程电压小于电压限值,则可以继续增大第一编程电压,得到第二编程电压,即第二编程电压大于第一编程电压,便于控制待编程存算单元达到其对应的第一目标电流。
62.在其他一些实施方式中,如果一次存算编程过程完成后,待编程存算单元的电流与其对应的第一目标电流的差值较小,则可以维持上一次存算编程过程的第一编程电压,继续进行下一次存算编程过程,增加编程时间;若一次存算编程过程完成后,待编程存算单元的电流与其对应的第一目标电流的差值较大,则可以增大上一次存算编程过程的第一编程电压,根据增大后的第一编程电压继续进行下一次存算编程过程,使得待编程存算单元可以较快达到其第一目标电流。
63.在上述各技术方案的基础上,闪存阵列还包括存储单元,编程方法还包括存储编程过程,在执行存算编程过程之前,执行存储编程过程,从而对所有需要编程的闪存单元进行编程。下面对包含有存储编程过程的编程方法进行说明,但并不进行限定。
64.图4是本发明实施例提供的又一种闪存芯片的编程方法的流程图,可选地,参考图4,闪存芯片的编程方法包括:
65.s201、向待编程存储单元写入第三编程电压,以使每一待编程存储单元达到对应的第二目标电流。
66.具体地,在编程之前,存储单元工作电流一般在微安级别。存储单元状态变化时,存算单元还未进行编程,相邻存储单元状态的改变不影响存算单元的目标编程存算状态。而且,存算单元的工作电流较小,一般在纳安级别,所以存算单元微调编程时对已编程存算单元的影响也较小。因此,可以先将所有待编程存储单元直接编程到其对应的第二目标电流,再对待编程存算单元进行微调编程,从而使得所有需要编程的闪存单元达到目标状态,完成对所有需要编程的闪存单元的编程。
67.s202、向所有待编程存算单元写入第一编程电压。
68.s203、读取每一待编程存算单元的当前电流。
69.s204、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
70.s205、判断是否所有的第一差值均小于第一预设值,若是,结束,若否,执行步骤s206。
71.s206、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,并返回执行步骤s202;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
72.本实施例的技术方案,通过先执行存储编程过程,先将所有待编程存储单元直接编程到其对应的第二目标电流,再执行存算编程过程,使得所有需要编程的闪存单元达到目标状态,还可以减小编程的时间。并且,存储单元的状态变化时,存算单元还未进行编程,相邻存储单元状态的改变不影响存算单元的目标编程存算状态。而且,存算单元的工作电流较小,一般在纳安级别,所以存算单元微调编程时对已编程存算单元的影响也较小。
73.在另一种实施方案中,在执行存储编程过程之后,在执行存算编程过程之前,可以先对待编程存算单元进行初始编程操作,使得每一待编程存算单元的电流达到对应的初始编程电流,每一待编程存算单元的初始编程电流与其对应的第一目标电流的差值较小,因此,在待编程存算单元的电流达到对应的初始编程电流后,再进行存算微调编程过程,可以减小每个待编程存算单元的电流变化,从而减小对已编程存算单元的干扰。下面对包含有初始编程操作的编程方法进行说明,但并不进行限定。
74.图5是本发明实施例提供的又一种闪存芯片的编程方法的流程图,可选地,参考图5,闪存芯片的编程方法包括:
75.s301、向待编程存储单元写入第三编程电压,以使每一待编程存储单元达到对应的第二目标电流。
76.s302、对待编程存算单元进行初始编程操作,以使每一待编程存算单元的电流达到其初始编程电流。
77.具体地,将每一个待编程存算单元的电流编程至其对应的初始编程电流,每个待编程存算单元的初始编程电流较大于其对应的第一目标电流,在后编程的待编程存算单元的电流达到其初始编程电流后,其后续存算微调编程的状态变化在当前存算编程过程中对已经编程的存算单元的状态影响较小,减小对已编程存算单元的干扰。并且,每一待编程存算单元的初始编程电流与其对应的第一目标电流的差值较小,因此,在待编程存算单元的电流达到对应的初始编程电流后,再进行存算编程过程,可以减小每个待编程存算单元的电流变化,从而减小对已编程存算单元的干扰。
78.并且,将所有待编程存算单元的电流达到对应的初始编程电流后,可以减小存算编程过程的时间,从而减小了在后编程的待编程存算单元在存算编程过程中写入编程电压,对同一行中不相邻的已经写入编程的待编程存算单元产生干扰的时间。因此,采用本技术方案的编程方法,不仅可以减小在后编程的待编程存算单元在存算编程过程中写入编程电压,对相邻的已经写入编程的待编程存算单元产生的干扰;还可以减小对不相邻的已经写入编程的待编程存算单元产生干扰的时间,从而进一步减小对已经写入编程的待编程存算单元产生的干扰。
79.示例性的,如图1所示,在一次存算编程过程中,闪存单元10例如为在先写入第一编程电压的待编程存算单元,闪存单元13为在后写入第一编程电压的待编程存算单元,闪存单元10与闪存单元13位于同一行,且闪存单元10与闪存单元13不相邻。由于一行闪存单元共用一条控制栅线和一条选择栅线,在闪存单元10写入第一编程电压后,再对闪存单元13写入第一编程电压时,还需写入整行的控制栅电压和选择栅电压,可能会对已经编程的闪存单元10产生干扰。但是将所有待编程存算单元的电流达到对应的初始编程电流后,可以减小存算编程过程的时间,从而减小了闪存单元13对闪存单元10的干扰时间,从而减小了对已编程存算单元的干扰。
80.s303、向所有待编程存算单元写入第一编程电压。
81.s304、读取每一待编程存算单元的当前电流。
82.s305、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
83.s306、判断是否所有的第一差值均小于第一预设值,若是,结束,若否,执行步骤s307。
84.s307、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,并返回执行步骤s303;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
85.本实施例的技术方案,通过在执行存算编程过程之前,先执行初始编程操作,将所有待编程存算单元的电流编程至初始编程电流,每一待编程存算单元的初始编程电流与其对应的第一目标电流的差值较小,因此,在待编程存算单元的电流达到对应的初始编程电流后,再进行存算编程过程,可以减小每个待编程存算单元的电流变化,从而减小对已编程存算单元的干扰。并且,可以减小存算编程过程的时间,从而减小了在后编程的待编程存算单元在存算编程过程中写入编程电压,对同一行中不相邻的已经写入编程的待编程存算单元产生干扰的时间。
86.在上述技术方案的基础上,对待编程存算单元进行初始编程操作,可以依次将待编程存算单元的电流直接编程至对应的初始编程电流,也可以逐步将待编程存算单元的电流编程至对应的初始编程电流,下面对两种初始编程操作进行说明,但并不进行限定。
87.在一种实施方式中,可选地,s302、对待编程存算单元进行初始编程操作,以使每一待编程存算单元的电流达到其初始编程电流,包括:
88.按照待编程存算单元的地址顺序,依次将待编程存算单元的电流编程至对应的初始编程电流。
89.具体地,按照待编程存算单元的地址顺序,先将第一个待编程存算单元的电流编程至其对应的初始编程电流;再对下一下待编程存算单元进行编程,将下一个待编程存算单元的电流编程至其对应的初始编程电流,再对下一个待编程存算单元进行编程,直至将所有待编程存算单元的电流编程至对应的初始编程电流。其中,第一个待编程存算单元例如为需要编程的存算单元中,地址值最小的待编程存算单元,即所在行数和列数最小的待编程存算单元。在后编程的待编程存算单元的电流达到其初始编程电流后,后续存算微调编程的状态变化对已经编程的存算单元的状态影响较小。因此,即使按照顺序对待编程存算单元进行编程,将一个待编程存算单元的电流编程至其对应的初始编程电流,再对下一个待编程存算单元进行编程,也不会对后续存算微调编程中的已经编程的存算单元的状态产生较大影响。
90.在另一种实施方式中,可选地,s302、对待编程存算单元进行初始编程操作,以使每一待编程存算单元的电流达到其初始编程电流,包括:
91.步骤a1、向所有待编程存算单元写入第一初始编程电压。
92.具体地,按照待编程存算单元的地址顺序,依次向每一个待编程存算单元写入第一初始编程电压,从而向所有待编程存算单元写入第一初始编程电压。每一次写入的第一初始编程电压与前一次写入的第一初始编程电压的差值较小,从而使得每个待编程存算单元的电流(浮栅的电势)变化较小。因此,在后写入第一初始编程电压的待编程存算单元,对已经写入第一初始编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰。
93.步骤a2、读取每一待编程存算单元的当前初始电流。
94.具体地,待编程存算单元的当前初始电流是指待编程存算单元的当前沟道初始电流,通过读取每一待编程存算单元的当前初始电流,可以判断每个待编程存算单元是否达
到其对应的初始编程电流。
95.步骤a3、计算每一待编程存算单元的当前初始电流与其初始编程电流的第二差值。
96.具体地,每个待编程存算单元对应的初始编程电流可以相同,也可以不同,则有的待编程存算单元可能先达到其初始编程电流。将每一个待编程存算单元的当前初始电流减去其对应的初始编程电流的第二差值,根据第二差值的大小可以判断待编程存算单元是否达到其初始编程电流。
97.步骤a4、判断所有的第二差值是否小于第一预设值,若是,结束;若否,执行步骤a5。
98.具体地,当所有的第二差值均小于第一预设值时,表明所有的待编程存算单元均达到编程的目标初始状态,则结束初始编程操作。若并非所有的第二差值均小于第一预设值,即存在第二差值大于或等于第一预设值的待编程存算单元,则需要继续对第二差值大于或等于第一预设值的待编程存算单元进行初始编程。
99.步骤a5、将第二差值大于或等于第一预设值的待编程存算单元作为下一初始编程过程的待编程存算单元,并将第二初始编程电压作为下一初始编程过程的第一初始编程电压,并返回执行步骤a1;其中,第二初始编程电压为当前初始编程过程中第一初始编程电压调整后的电压。
100.具体地,对当前初始编程过程中的第一初始编程电压进行调整,例如是增大第一初始编程电压,或者减小第一初始编程电压,或者维持第一初始编程电压,得到第二初始编程电压。将第二差值大于或等于第一预设值的待编程存算单元作为下一初始编程过程的待编程存算单元,并将第二初始编程电压作为下一初始编程过程的第一初始编程电压,返回继续执行步骤s101,进入下一初始编程过程。
101.需要说明的是,一次初始编程过程包括步骤a1-步骤a5;通过循环操作,执行完步骤a5之后,继续返回执行步骤a1,实现了至少两次执行初始编程过程,使得每个待编程存算单元逐步达到其对应的初始编程电流,每次编程之后,待编程存算单元的电流(浮栅的电势)变化较小。因此,在后写入第一初始编程电压的待编程存算单元,对已经写入第一初始编程电压的待编程存算单元的干扰较小,从而减小了对已编程存算单元的干扰。
102.图6是本发明实施例提供的又一种闪存芯片的编程方法的流程图,可选地,参考图6,闪存芯片的编程方法包括:
103.s401、对闪存阵列执行擦除操作。
104.具体地,先对整个闪存阵列执行擦除操作,使得所有的闪存单元均处于擦除状态,可以擦除上一次编程写入的电压,然后再对需要编程的存算单元和存储单元进行编程,使得闪存单元编程后的状态与目标状态一致,有利于提高编程的效果。
105.s402、向待编程存储单元写入第三编程电压,以使每一待编程存储单元达到对应的第二目标电流。
106.s403、向所有待编程存算单元写入第一编程电压。
107.s404、读取每一待编程存算单元的当前电流。
108.s405、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
109.s406、判断是否所有的第一差值均小于第一预设值,若是,结束;若否,执行步骤
s407。
110.s407、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,并返回执行步骤s403;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
111.本实施例的技术方案,通过执行擦除操作,先对整个闪存阵列执行擦除操作,使得所有的闪存单元均处于擦除状态,可以擦除上一次编程写入的电压,可以保证闪存单元编程后的状态与目标状态一致。
112.本发明实施例的技术方案,还提供了一种闪存芯片的测试方法,该测试方法包括上述任意实施方案提供的闪存芯片的编程方法。图7是本发明实施例提供的一种闪存芯片的测试方法的流程图,如图7所示,闪存芯片的测试方法包括:
113.s501、向待编程存储单元写入第三编程电压,以使每一待编程存储单元达到对应的第二目标电流。
114.s502、向所有待编程存算单元写入第一编程电压。
115.s503、读取每一待编程存算单元的当前电流。
116.s504、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
117.s505、判断是否所有的第一差值均小于第一预设值,若是,则执行步骤s506;若否,执行步骤s507。
118.具体地,如果所有的第一差值均小于第一预设值时,表明所有的待编程存算单元均达到编程的目标状态,则闪存芯片合格,且表明上述实施方案提供的执行至少两次编程过程的编程方法是可行的。
119.s506、确定闪存芯片合格。
120.s507、判断存算编程过程的执行次数是否小于预设次数,若是,执行步骤s508;若否,执行步骤s509。
121.具体地,若并非所有的第一差值均小于第一预设值,即存在第一差值大于或等于第一预设值的待编程存算单元,则需要继续对第一差值大于或等于第一预设值的待编程存算单元进行编程。若存算编程过程的执行次数小于预设次数,则返回步骤s507,选出下一存算编程过程的待编程存算单元,并确定第二编程电压,继续对第一差值大于或等于第一预设值的待编程存算单元进行编程。如果存算编程过程的执行次数大于或等于预设次数,还存在第一差值大于或等于第一预设值的待编程存算单元,则闪存芯片不合格。
122.s508、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,并返回执行步骤s502;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
123.s509、确定闪存芯片不合格。
124.具体地,如果存算编程过程的执行次数大于或等于预设次数,还存在第一差值大于或等于第一预设值的待编程存算单元,则闪存芯片不合格。
125.本实施例的技术方案,通过判断所有的待编程存算单元是否能够在预设次数内达到对应的第一目标电流,可以判断闪存芯片是否合格。如果所有的待编程存算单元在预设次数内达到对应的第一目标电流,则闪存芯片合格,并证明上述实施方案中的执行至少两次编程过程的闪存芯片编程方法是可行的。
126.图8是本发明实施例提供的又一种闪存芯片的测试方法的流程图,参考图8,闪存芯片的测试方法包括:
127.s601、向待编程存储单元写入第三编程电压,以使每一待编程存储单元达到对应的第二目标电流。
128.s602、对待编程存算单元进行初始编程操作,以使每一待编程存算单元的电流达到其初始编程电流。
129.s603、向所有待编程存算单元写入第一编程电压。
130.s604、读取每一待编程存算单元的当前电流。
131.s605、计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值。
132.s606、判断是否所有的第一差值均小于第一预设值,若是,则执行步骤s607;若否,执行步骤s608。
133.具体地,如果所有的第一差值均小于第一预设值时,表明所有的待编程存算单元均达到编程的目标状态,则闪存芯片合格,且表明上述实施方案提供的先执行初始编程操作,再执行至少两次编程过程的编程方法是可行的。
134.s607、确定闪存芯片合格。
135.s608、判断存算编程过程的执行次数是否小于预设次数,若是,执行步骤s609;若否,则执行步骤s610。
136.s609、将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压,并返回执行步骤s603;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。
137.s610、确定闪存芯片不合格。
138.本实施例的技术方案,通过判断所有的待编程存算单元是否能够在预设次数内达到对应的第一目标电流,可以判断闪存芯片是否合格。如果所有的待编程存算单元在预设次数内达到对应的第一目标电流,则闪存芯片合格,并且证明了上述实施方案中的先执行初始编程操作,再执行至少两次编程过程的编程方法是可行的。
139.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
140.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

技术特征:


1.一种闪存芯片的编程方法,其特征在于,所述闪存芯片包括闪存阵列,所述闪存阵列包括存算单元;所述编程方法包括至少两次存算编程过程,一次所述存算编程过程包括:向所有待编程存算单元写入第一编程电压;读取每一所述待编程存算单元的当前电流;计算每一所述待编程存算单元的当前电流与对应的第一目标电流的第一差值;将所述第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压;其中,所述第二编程电压为当前存算编程过程中第一编程电压调整后的电压。2.根据权利要求1所述的编程方法,其特征在于,在一次所述编程过程中,若所述第一编程电压达到电压限值,所述第二编程电压与所述第一编程电压相等。3.根据权利要求1所述的编程方法,其特征在于,在一次所述编程过程中,若所述第一编程电压小于电压限值,则所述第二编程电压大于所述第一编程电压。4.根据权利要求1所述的编程方法,其特征在于,所述闪存阵列还包括存储单元;所述编程方法还包括存储编程过程;在执行所述存算编程过程之前,执行所述存储编程过程;所述存储编程过程包括:向待编程存储单元写入第三编程电压,以使每一所述待编程存储单元达到对应的第二目标电流。5.根据权利要求4所述的编程方法,其特征在于,在执行所述存储编程过程之后,在执行所述存算编程过程之前,还包括:对待编程存算单元进行初始编程操作,以使每一所述待编程存算单元的电流达到其初始编程电流。6.根据权利要求5所述的编程方法,其特征在于,所述对待编程存算单元进行初始编程操作,以使每一所述待编程存算单元的电流达到其初始编程电流,包括:按照所述待编程存算单元的地址顺序,依次将待编程存算单元的电流编程至对应的初始编程电流。7.根据权利要求5所述的编程方法,其特征在于,所述对待编程存算单元进行初始编程操作包括至少两次初始编程过程,一次所述初始编程过程包括:向所有所述待编程存算单元写入第一初始编程电压;读取每一所述待编程存算单元的当前初始电流;计算每一所述待编程存算单元的当前初始电流与其初始编程电流的第二差值;将所述第二差值大于或等于所述第一预设值的待编程存算单元作为下一初始编程过程的待编程存算单元,并将第二初始编程电压作为下一初始编程过程的第一初始编程电压;其中,所述第二初始编程电压为当前初始编程过程中第一初始编程电压调整后的电压。8.根据权利要求4或5所述的编程方法,其特征在于,在执行所述存算编程过程之前,还包括:对所述闪存阵列执行擦除操作。9.一种闪存芯片的测试方法,其特征在于,所述测试方法包括权利要求1-8任一项所述的编程方法,所述测试方法还包括:若所述存算编程过程的执行次数小于预设次数时,所有待编程存算单元的当前电流与
对应的第一目标电流的第一差值小于所述第一预设值,则所述闪存芯片合格。10.根据权利要求9所述的测试方法,其特征在于,还包括:若所述存算编程过程的执行次数大于或等于所述预设次数时,仍存在待编程存算单元的当前电流与对应的第一目标电流的第一差值大于或等于所述第一预设值,则所述闪存芯片不合格。

技术总结


本发明公开了一种闪存芯片的编程方法及测试方法。闪存芯片包括闪存阵列,闪存阵列包括存算单元;编程方法包括至少两次存算编程过程,一次存算编程过程包括:向所有待编程存算单元写入第一编程电压;读取每一待编程存算单元的当前电流;计算每一待编程存算单元的当前电流与对应的第一目标电流的第一差值;将第一差值大于或等于第一预设值的待编程存算单元作为下一存算编程过程的待编程存算单元,并将第二编程电压作为下一存算编程过程的第一编程电压;其中,第二编程电压为当前存算编程过程中第一编程电压调整后的电压。本发明实施例的技术方案减小了对已编程存算单元的干扰。的技术方案减小了对已编程存算单元的干扰。的技术方案减小了对已编程存算单元的干扰。


技术研发人员:

王春明 李伟民 郭昕婕

受保护的技术使用者:

北京知存科技有限公司

技术研发日:

2022.10.31

技术公布日:

2023/3/14

本文发布于:2023-03-26 21:36:10,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/1/80423.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:单元   电压   电流   闪存
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图