CN115329699B - 用于Flash仿真模型的注错方法、装置及系统 - Google Patents
用于Flash仿真模型的注错方法、装置及系统 Download PDFInfo
- Publication number
- CN115329699B CN115329699B CN202211268931.0A CN202211268931A CN115329699B CN 115329699 B CN115329699 B CN 115329699B CN 202211268931 A CN202211268931 A CN 202211268931A CN 115329699 B CN115329699 B CN 115329699B
- Authority
- CN
- China
- Prior art keywords
- error
- data
- simulation model
- odd
- flash simulation
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本申请涉及非易失存储芯片技术领域,公开一种用于Flash仿真模型的注错方法,包括:读取快闪存储器Flash仿真模型的期望输入数据;随机生成位宽为n bits的reg类型变量数据;将期望输入数据与reg类型变量数据进行或运算,获得注错后的Flash仿真模型的实际输入数据;将实际输入数据写入Flash仿真模型对应的存储单元。通过生成随机数据屏蔽Flash仿真模型的端口输入数据的方式进行随机注错,能够将注错最小单位缩小到bit,同时让实际写入数据的各个bit写入错误的概率相对独立,实现写入错误的随机分步。本申请还公开一种用于Flash仿真模型的注错装置及系统。
Description
技术领域
本申请涉及非易失存储芯片技术领域,例如涉及一种用于Flash仿真模型的注错方法、装置及系统。
背景技术
Flash(快闪存储器)具有存储单元面积小,编程速度快,擦除时间短等优势,是目前业界非常流行的存储介质。但是,在实际的应用中,Flash芯片进行大量数据的写入时,不可避免地会出现数据写入失败的场景,而当Flash存储芯片应用于存储操作系统,存储配置文件和其他敏感信息的时候,任何一次数据写入的错误,都将会对整个系统造成致命影响。为此,通用的Flash控制器设计通常都具有一定的纠错功能,即在写数据动作完成后,会读取相应单元中的数据校验是否写入成功,如果写入失败,会对相应单元进行二次写入。因此在Flash存储芯片仿真模拟中模拟实际写入时写入功能的偶发错误尤为重要。目前通用的Flash模型不具备模拟写入失败场景的能力,导致针对Flash控制器纠错功能的验证工作较为复杂。
相关技术中,通常需要在写动作结束后,数据校验动作前,根据数据写入地址和写入数据,从后门修改Flash仿真模型,实现写入错误的场景。
在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:在Flash模型写入完成后,通过后门修改Flash仿真模型中已写入的数据来强行制造写入错误的场景,无法真正实现写入错误的随机分布。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于Flash仿真模型的注错方法、装置及系统,通过生成随机数据屏蔽Flash仿真模型端口输入数据的方式进行随机注错,实现写入错误的随机分布,较好地模拟了实际应用中出现的写入失败的场景。
在一些实施例中,用于Flash仿真模型的注错方法包括:读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0];随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同;将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0];将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元。
在一些实施例中,用于Flash仿真模型的注错装置包括:数据读取模块,配置为读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0];数据生成模块,被配置为随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同;数据计算模块,被配置为将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0];数据写入模块,被配置为将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元。
在一些实施例中,用于Flash仿真模型的注错装置包括处理器和存储有程序指令的存储器,处理器被配置为在执行程序指令时,执行前述用于Flash仿真模型的注错方法。
在一些实施例中,用于Flash仿真模型的注错系统包括:Flash仿真模型;以及前述用于Flash仿真模型的注错装置。
本公开实施例提供的用于Flash仿真模型的注错方法、装置及系统,可以实现以下技术效果:
通过生成位宽与Flash仿真模型的数据输入端口位宽相同的随机数error_position[n-1:0],与数据输入端口的期望输入数据Data_in[n-1:0]进行按位或操作,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],通过对期望输入数据Data_in[n-1:0]进行屏蔽,从而实现模拟写入失败的场景的功能。如此,通过上述生成随机数据屏蔽端口输入数据的方式进行随机注错,能够将注错最小单位缩小到bit,同时让实际写入数据的各个bit写入错误的概率相对独立,实现写入错误的随机分步,很好的模拟了实际应用中出现的写入失败的场景,为Flash仿真模型纠错能力的验证提供了一个灵活性好且应用简便的注错方式。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本公开实施例提供的一个用于Flash仿真模型的注错方法的流程示意图;
图2是本公开实施例提供的另一个用于Flash仿真模型的注错方法的流程示意图;
图3是本公开实施例提供的另一个用于Flash仿真模型的注错方法的流程示意图;
图4是本公开实施例提供的另一个用于Flash仿真模型的注错方法的流程示意图;
图5是本公开实施例提供的一个用于Flash仿真模型的注错装置的结构示意图;
图6是本公开实施例提供的另一个用于Flash仿真模型的注错装置的结构示意图;
图7是本公开实施例提供的另一个用于Flash仿真模型的注错装置的结构示意图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,A和/或B,表示:A或B,或,A和B这三种关系。术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
根据Flash存储芯片特性,Flash的存储单元在写入之前进行擦除处理,擦除处理将对应的存储单元擦为1,而写操作智能将已经被擦成1的存储单元写成0。即,对于Flash存储芯片而言,写动作只会出现1写0的情况,写入错误时1写0失败,对应的存储单元在写入操作后仍为1。
结合图1所示,本公开实施例提供一种用于Flash仿真模型的注错方法,包括以下步骤:
S101,读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0]。
Data_in[n-1:0]为Flash控制器直接驱动的端口,即期望写入的数据。读取Data_in[n-1:0],包括读取Data_in[n-1:0]的数值,以及Data_in[n-1:0]的位宽。例如,Data_in[n-1:0]的数值为10001100,则其位宽为n=8 bits。
S102,随机生成位宽为n bits的reg类型变量数据error_position[n-1:0]。
其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同。
reg类型变量泛指这种类型的值受到别的信号的影响,比如选择器,输出信号受输入信号的影响,当输入信号改变时,输出信号就会改变,这种影响可以称为“触发”。本公开实施例中的数据error_position[n-1:0] 为reg类型变量,只要输入随机数,就可以直接调用变量,确定相应的随机数据error_position[x]。error_position[n-1:0]中的每bit的数据随机生成,相对独立。
error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同,通过生成位宽与数据输入端口位宽相同的随机数,与数据输入端口进行按位或操作,对写入数据进行屏蔽,从而实现模拟写入失败的场景的功能。
S103,将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0]。
可选地,将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],包括:在Data_in[x]为1,且error_position[x]为1的情况下,获得real_Data_in[x]为1;在Data_in[x]为1,且error_position[x]为0的情况下,获得real_Data_in[x]为1;在Data_in[x]为0,且error_position[x]为1的情况下,获得real_Data_in[x]为1;在Data_in[x]为0,且error_position[x]为0的情况下,获得real_Data_in[x]为0。
例如,Data_in[n-1:0]为10001100,error_position[n-1:0]为10000011,则real_Data_in[n-1:0]为10001111。即,在Data_in[0]为1,且error_position[0]为1的情况下,获得real_Data_in[0]为1;在Data_in[4]为1,且error_position[4]为0的情况下,获得real_Data_in[4]为1;在Data_in[6]为0,且error_position[6]为1的情况下,获得real_Data_in[6]为1;在Data_in[1]为0,且error_position[1]为0的情况下,获得real_Data_in[1]为0。
S104,将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元。
可选地,将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元,包括:对Flash仿真模型的存储单元进行擦除,将所有存储单元擦为1;将real_Data_in[n-1:0]中error_position[n-1:0]为0的bit正常写入对应的存储单元;将real_Data_in[n-1:0]中error_position[n-1:0]为1的bit屏蔽。
Flash的存储单元在写入之前进行擦除处理,擦除处理将对应的存储单元擦为1,而写操作智能将已经被擦成1的存储单元写成0。即,对于Flash存储芯片而言,写动作只会出现1写0的情况,real_Data_in[n-1:0]中error_position[n-1:0]为0的bit正常写入对应的存储单元,real_Data_in[n-1:0]中error_position[n-1:0]为1的bit屏蔽,对应的存储单元在写入操作后仍为1。
采用本公开实施例提供的用于Flash仿真模型的注错方法,通过生成位宽与Flash仿真模型的数据输入端口位宽相同的随机数error_position[n-1:0],与数据输入端口的期望输入数据Data_in[n-1:0]进行按位或操作,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],通过对期望输入数据Data_in[n-1:0]进行屏蔽,从而实现模拟写入失败的场景的功能。如此,通过上述生成随机数据屏蔽端口输入数据的方式进行随机注错,能够将注错最小单位缩小到bit,同时让实际写入数据的各个bit写入错误的概率相对独立,实现写入错误的随机分步,很好的模拟了实际应用中出现的写入失败的场景,为Flash仿真模型纠错能力的验证提供了一个灵活性好且应用简便的注错方式。
在一些实施例中,结合图2所示,提供一种用于Flash仿真模型的注错方法,其随机生成位宽为n bits的reg类型变量数据error_position[n-1:0],包括以下步骤:
S201,创建随机数error_inject以及固定数error_odd,并设置常数MAX_NUM。
S202,设置error_odd的值;其中,MAX_NUM/2≤error_odd≤MAX_NUM-1。
例如,当MAX_NUM=10,则5≤error_odd≤9。
S203,通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1。
例如,当MAX_NUM=10,则error_inject≤9。
可选地,通过随机函数对error_inject进行赋值,包括按照如下公式计算error_inject:
error_inject=$random%MAX_NUM
其中,$random产生有符号随机数。
例如,当MAX_NUM=10,则error_inject=$random%10,产生介于-9到9的数。
S204,将error_inject/error_odd的结果赋值给error_position[x],生成error_position[n-1:0]。
将随机产生的第一个error_inject/error_odd的结果(例如1)赋值给error_position[0];将随机产生的第二个error_inject/error_odd的结果(例如0)赋值给error_position[1];将随机产生的第三个error_inject/error_odd的结果(例如0)赋值给error_position[2];将随机产生的第四个error_inject/error_odd的结果(例如0)赋值给error_position[3];将随机产生的第五个error_inject/error_odd的结果(例如0)赋值给error_position[4];将随机产生的第六个error_inject/error_odd的结果(例如0)赋值给error_position[5];将随机产生的第七个error_inject/error_odd的结果(例如1)赋值给error_position[6];将随机产生的第八个error_inject/error_odd的结果(例如1)赋值给error_position[7]。如此,生成error_position[7:0]为10000011。
将error_inject/error_odd的结果赋值给error_position[x],则error_position[x]为0的概率为error_odd/MAX_NUM,error_position[x]为1的概率为(MAX_NUM-error_odd)/MAX_NUM。将error_position[n-1:0]的每一位分别赋值,此时error_position[n-1:0]中每一位为0或1的几率相对独立。
本公开实施例中,随机生成位宽为n bits的数据error_position[n-1:0],将error_position[n-1:0]与Flash仿真模型的数据输入端口进行按位或操作,对写入数据进行屏蔽,从而实现模拟写入失败的场景的功能,能够将注错最小范围缩小到bit,并让实际写入数据的各个bit出错的概率相对独立。
在一些实施例中,结合图3所示,提供一种用于Flash仿真模型的注错方法,其随机生成位宽为n bits的reg类型变量数据error_position[n-1:0],包括以下步骤:
S301,创建随机数error_inject以及固定数error_odd,并设置常数MAX_NUM。
S302,设置error_odd[x]的值;其中,MAX_NUM/2≤error_odd[x]≤MAX_NUM-1。
例如,随机生成error_position[0]的值,则设置error_odd[0]的值。
S303,通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1。
S304,将error_inject/error_odd[x]的结果赋值给error_position[x]。
例如,将error_inject/error_odd[0]的结果赋值给error_position[0]。
S305,设置error_odd[x+1]的值;其中,MAX_NUM/2≤error_odd[x+1]≤MAX_NUM-1。
完成对error_position[x]的赋值后,在对error_position[x+1]进行赋值时,按照如下方式修改error_odd的值:
error_odd[x+1]=error_odd[x]+m
其中,m为error_position[n-1:0]的第m个bit位。
例如,完成对error_position[0]的赋值后,在对error_position[1]进行赋值时,设置error_odd[1]的值,则error_odd[1]=error_odd[0]+1。这里,m=1。完成对error_position[1]的赋值后,在对error_position[2]进行赋值时,设置error_odd[2]的值,则error_odd[2]=error_odd[1]+2。这里,m=2。
由于MAX_NUM/2≤error_odd[x]≤MAX_NUM-1,当error_odd[x]≤MAX_NUM-1,且error_odd[x+1]>MAX_NUM-1时,m=0。
亦即,在error_odd[x+1]≤MAX_NUM-1的情况下,m=n-1;在error_odd[x]≤MAX_NUM-1,且error_odd[x+1]>MAX_NUM-1的情况下,m=0,即error_odd[x+1]=error_odd[x]。
S306,通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1。
S307,将error_inject/error_odd[x+1]的结果赋值给error_position[x+1],生成error_position[n-1:0]。
例如,将error_inject/error_odd[1]的结果赋值给error_position[1]。按照上述方式,依次生成error_position[2]…error_position[n-1],生成error_position[n-1:0]。
本公开实施例中,随机生成位宽为n bits的数据error_position[n-1:0],将error_position[n-1:0]与Flash仿真模型的数据输入端口进行按位或操作,对写入数据进行屏蔽,实现写入失败场景的随机分布,从而实现模拟写入失败的场景的功能,能够将注错最小范围缩小到bit,并让实际写入数据的各个bit出错的概率相对独立;同时,通过修改error_odd的值,进一步提高error_position[n-1:0]的随机性,并能够设置每个bit写入失败的几率,实现注错的灵活性。
结合图4所示,本公开实施例提供一种用于Flash仿真模型的注错方法,包括以下步骤:
S401,读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0]。
S402,随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同。
S403,将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0]。
S404,将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元。
S405,对Flash仿真模型进行数据校验操作。
将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元后,对Flash仿真模型进行数据校验操作。
S406,对Flash仿真模型中数据校验失败的存储单元进行二次写入。
S407,再次调用注错功能,直到所有bit都被成功写入Flash仿真模型的存储单元。
本公开实施例中,Flash仿真模型成功注错后,Flash进行数据校验动作,并对写入失败的单元进行二次写入,同时调用上述注错方法,即再次读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0],然后随机生成位宽为n bits的reg类型变量数据error_position[n-1:0],将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],并将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元,直至Flash仿真模型的全部存储单元写入成功,提高了Flash仿真模型纠错能力验证的准确性。
结合图5所示,本公开实施例提供一种用于Flash仿真模型的注错装置,包括数据读取模块501、数据生成模块502、数据计算模块503和数据写入模块504。数据读取模块501被配置为读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0];数据生成模块502被配置为随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同;数据计算模块503被配置为将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0];数据写入模块504被配置为将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元。
可选地,数据生成模块502被配置为创建随机数error_inject以及固定数error_odd,并设置常数MAX_NUM;设置error_odd的值;其中,MAX_NUM/2≤error_odd≤MAX_NUM-1;通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1;将error_inject/error_odd的结果赋值给error_position[x],生成error_position[n-1:0]。
可选地,数据生成模块502被配置为完成对error_position[x]的赋值后,在对error_position[x+1]进行赋值时,按照如下方式修改error_odd的值:
error_odd[x+1]=error_odd[x]+m
其中,m为error_position[n-1:0]的第m个bit位。
可选地,数据计算模块503被配置为在Data_in[x]为1,且error_position[x]为1的情况下,获得real_Data_in[x]为1;在Data_in[x]为1,且error_position[x]为0的情况下,获得real_Data_in[x]为1;在Data_in[x]为0,且error_position[x]为1的情况下,获得real_Data_in[x]为1;在Data_in[x]为0,且error_position[x]为0的情况下,获得real_Data_in[x]为0。
可选地,数据写入模块504被配置为对Flash仿真模型的存储单元进行擦除,将所有存储单元擦为1;将real_Data_in[n-1:0]中error_position[n-1:0]为0的bit正常写入对应的存储单元;将real_Data_in[n-1:0]中error_position[n-1:0]为1的bit屏蔽。
采用本公开实施例提供的用于Flash仿真模型的注错装置,通过生成位宽与Flash仿真模型的数据输入端口位宽相同的随机数error_position[n-1:0],与数据输入端口的期望输入数据Data_in[n-1:0]进行按位或操作,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],通过对期望输入数据Data_in[n-1:0]进行屏蔽,从而实现模拟写入失败的场景的功能。如此,通过上述生成随机数据屏蔽端口输入数据的方式进行随机注错,能够将注错最小单位缩小到bit,同时让实际写入数据的各个bit写入错误的概率相对独立,实现写入错误的随机分步,很好的模拟了实际应用中出现的写入失败的场景,为Flash仿真模型纠错能力的验证提供了一个灵活性好且应用简便的注错方式。
可选地,如图6所示,该用于Flash仿真模型的注错装置还包括数据校验模块505。数据校验模块505被配置为将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元后,对Flash仿真模型进行数据校验操作;对Flash仿真模型中数据校验失败的存储单元进行二次写入;再次调用注错功能,直到所有bit都被成功写入Flash仿真模型的存储单元。
结合图7所示本公开实施例提供一种用于Flash仿真模型的注错装置,包括处理器(processor)70和存储器(memory)71,还可以包括通信接口(Communication Interface)72和总线73。其中,处理器70、通信接口72、存储器71可以通过总线73完成相互间的通信。通信接口72可以用于信息传输。处理器70可以调用存储器71中的逻辑指令,以执行上述实施例的用于Flash仿真模型的注错方法。
此外,上述的存储器71中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器70通过运行存储在存储器71中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的用于Flash仿真模型的注错方法。
存储器71可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器。
采用本公开实施例提供的用于Flash仿真模型的注错装置,通过生成位宽与Flash仿真模型的数据输入端口位宽相同的随机数error_position[n-1:0],与数据输入端口的期望输入数据Data_in[n-1:0]进行按位或操作,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],通过对期望输入数据Data_in[n-1:0]进行屏蔽,从而实现模拟写入失败的场景的功能。如此,通过上述生成随机数据屏蔽端口输入数据的方式进行随机注错,能够将注错最小单位缩小到bit,同时让实际写入数据的各个bit写入错误的概率相对独立,实现写入错误的随机分步,很好的模拟了实际应用中出现的写入失败的场景,为Flash仿真模型纠错能力的验证提供了一个灵活性好且应用简便的注错方式。
本公开实施例提供了一种用于Flash仿真模型的注错系统,包含Flash仿真模型,以及上述用于Flash仿真模型的注错装置。
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于Flash仿真模型的注错方法。
本公开实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述用于Flash仿真模型的注错方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。本公开实施例的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。当用于本申请中时,虽然术语“第一”、“第二”等可能会在本申请中使用以描述各元件,但这些元件不应受到这些术语的限制。这些术语仅用于将一个元件与另一个元件区别开。例如,在不改变描述的含义的情况下,第一元件可以叫做第二元件,并且同样第,第二元件可以叫做第一元件,只要所有出现的“第一元件”一致重命名并且所有出现的“第二元件”一致重命名即可。第一元件和第二元件都是元件,但可以不是相同的元件。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (7)
1.一种用于Flash仿真模型的注错方法,其特征在于,包括:
读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0];
随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同;
将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0];
将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元;
所述随机生成位宽为n bits的reg类型变量数据error_position[n-1:0],包括:创建随机数error_inject以及固定数error_odd,并设置常数MAX_NUM;设置error_odd的值;其中,MAX_NUM/2≤error_odd≤MAX_NUM-1;通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1;将error_inject/error_odd的结果赋值给error_position[x],生成error_position[n-1:0];所述随机生成位宽为n bits的reg类型变量数据error_position[n-1:0],还包括:完成对error_position[x]的赋值后,在对error_position[x+1]进行赋值时,按照如下方式修改error_odd的值:error_odd[x+1]=error_odd[x]+m,其中,m为error_position[n-1:0]的第m个bit位;
所述将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元,包括:对Flash仿真模型的存储单元进行擦除,将所有存储单元擦为1;将real_Data_in[n-1:0]中error_position[n-1:0]为0的bit正常写入对应的存储单元;将real_Data_in[n-1:0]中error_position[n-1:0]为1的bit屏蔽。
2.根据权利要求1所述的注错方法,其特征在于,所述通过随机函数对error_inject进行赋值,包括:
按照如下公式计算error_inject:
error_inject=$random%MAX_NUM
其中,$random产生有符号随机数。
3.根据权利要求1所述的注错方法,其特征在于,所述将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0],包括:
在Data_in[x]为1,且error_position[x]为1的情况下,获得real_Data_in[x]为1;
在Data_in[x]为1,且error_position[x]为0的情况下,获得real_Data_in[x]为1;
在Data_in[x]为0,且error_position[x]为1的情况下,获得real_Data_in[x]为1;
在Data_in[x]为0,且error_position[x]为0的情况下,获得real_Data_in[x]为0。
4.根据权利要求1至3任一项所述的注错方法,其特征在于,还包括:
将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元后,对Flash仿真模型进行数据校验操作;
对Flash仿真模型中数据校验失败的存储单元进行二次写入;
再次调用注错功能,直到所有bit都被成功写入Flash仿真模型的存储单元。
5.一种用于Flash仿真模型的注错装置,其特征在于,包括:
数据读取模块,被配置为读取快闪存储器Flash仿真模型的期望输入数据Data_in[n-1:0];
数据生成模块,被配置为随机生成位宽为n bits的reg类型变量数据error_position[n-1:0];其中,error_position[n-1:0]的位宽与Data_in[n-1:0]的位宽相同;
数据计算模块,被配置为将Data_in[n-1:0]与error_position[n-1:0]进行或运算,获得注错后的Flash仿真模型的实际输入数据real_Data_in[n-1:0];
数据写入模块,被配置为将real_Data_in[n-1:0]写入Flash仿真模型对应的存储单元;
所述数据生成模块被配置为:创建随机数error_inject以及固定数error_odd,并设置常数MAX_NUM;设置error_odd的值;其中,MAX_NUM/2≤error_odd≤MAX_NUM-1;通过随机函数对error_inject进行赋值;其中,error_inject≤MAX_NUM-1;将error_inject/error_odd的结果赋值给error_position[x],生成error_position[n-1:0];完成对error_position[x]的赋值后,在对error_position[x+1]进行赋值时,按照如下方式修改error_odd的值:error_odd[x+1]=error_odd[x]+m,其中,m为error_position[n-1:0]的第m个bit位;
所述数据写入模块被配置为:对Flash仿真模型的存储单元进行擦除,将所有存储单元擦为1;将real_Data_in[n-1:0]中error_position[n-1:0]为0的bit正常写入对应的存储单元;将real_Data_in[n-1:0]中error_position[n-1:0]为1的bit屏蔽。
6.一种用于Flash仿真模型的注错装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在执行所述程序指令时,执行如权利要求1至4任一项所述的用于Flash仿真模型的注错方法。
7.一种用于Flash仿真模型的注错系统,其特征在于,包括:
Flash仿真模型;
如权利要求6所述的用于Flash仿真模型的注错装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268931.0A CN115329699B (zh) | 2022-10-17 | 2022-10-17 | 用于Flash仿真模型的注错方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211268931.0A CN115329699B (zh) | 2022-10-17 | 2022-10-17 | 用于Flash仿真模型的注错方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115329699A CN115329699A (zh) | 2022-11-11 |
CN115329699B true CN115329699B (zh) | 2023-03-24 |
Family
ID=83915224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211268931.0A Active CN115329699B (zh) | 2022-10-17 | 2022-10-17 | 用于Flash仿真模型的注错方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115329699B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113705141A (zh) * | 2021-07-19 | 2021-11-26 | 深圳市紫光同创电子有限公司 | Fpga芯片验证方法、系统、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626517B2 (en) * | 2013-01-23 | 2017-04-18 | Seagate Technology Llc | Non-deterministic encryption |
CN104536864B (zh) * | 2014-12-10 | 2016-09-07 | 山东华芯半导体有限公司 | 一种位翻转可控的Nand Flash仿真模型的注错方法 |
CN110134557A (zh) * | 2019-05-17 | 2019-08-16 | 深圳忆联信息系统有限公司 | 一种读Flash接口数据随机注错的验证方法及其系统 |
CN113704040A (zh) * | 2021-09-09 | 2021-11-26 | 王海滨 | 一种微处理器内存可靠性测试方法 |
CN115080330A (zh) * | 2022-06-30 | 2022-09-20 | 山东华芯半导体有限公司 | 一种用于加密Nand Flash仿真模型的注错系统及方法 |
-
2022
- 2022-10-17 CN CN202211268931.0A patent/CN115329699B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113705141A (zh) * | 2021-07-19 | 2021-11-26 | 深圳市紫光同创电子有限公司 | Fpga芯片验证方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115329699A (zh) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104217494B (zh) | 一种卡号校验方法和装置 | |
CN110136769A (zh) | Otp寄存器数据修正方法、装置、计算机设备和存储介质 | |
CN106155855B (zh) | 对微处理器进行功能验证的方法及服务器 | |
CN115329699B (zh) | 用于Flash仿真模型的注错方法、装置及系统 | |
CN113470723A (zh) | 读重试测试方法、装置、可读存储介质及电子设备 | |
CN109671466A (zh) | 一种阈值电压调试方法、装置及电子设备 | |
EP3404662B1 (en) | A method and system for implementing a non-volatile counter using non-volatile memory | |
CN111143240A (zh) | 图像存储方法、系统及终端设备 | |
EP3226141B1 (en) | Method for performing data updates | |
CN108897522A (zh) | 数据处理方法、数据处理装置以及电子设备 | |
CN111782271A (zh) | 一种软硬件交互方法及装置、存储介质 | |
CN108614664A (zh) | 基于NANDflash的读错误处理方法和装置 | |
CN115543876B (zh) | 用于验证地址译码功能的方法及装置、电子设备、介质 | |
CN114968312B (zh) | 用于变更智能卡cap文件的方法、装置及系统 | |
CN118468804A (zh) | 用于微控制器芯片的仿真方法及装置、电子设备 | |
CN113223597B (zh) | 闪存测试方法、装置、存储介质和终端设备 | |
US20230103004A1 (en) | Data protection method for memory and storage device thereof | |
CN110275596A (zh) | 基于固态硬盘的上电初始化加速方法、装置和计算机设备 | |
CN110389724A (zh) | 基于固态硬盘的parity page识别方法和装置 | |
CN113821321B (zh) | 任务处理芯片、方法、装置、计算机设备及存储介质 | |
CN115588454A (zh) | 存储器的数据写入方法及装置、电子设备、存储介质 | |
CN113966499A (zh) | 用于存储器的数据保护方法及其存储装置 | |
CN114115754B (zh) | 用于数据更新的方法及装置、电子设备、存储介质 | |
CN117215857A (zh) | 用于验证芯片寄存器合格性的方法、芯片、电子设备 | |
US20230110499A1 (en) | Address solving for instruction sequence generation |
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 |