CN104536864B - 一种位翻转可控的Nand Flash仿真模型的注错方法 - Google Patents
一种位翻转可控的Nand Flash仿真模型的注错方法 Download PDFInfo
- Publication number
- CN104536864B CN104536864B CN201410749886.XA CN201410749886A CN104536864B CN 104536864 B CN104536864 B CN 104536864B CN 201410749886 A CN201410749886 A CN 201410749886A CN 104536864 B CN104536864 B CN 104536864B
- Authority
- CN
- China
- Prior art keywords
- bit
- err
- nand flash
- data
- flipping
- 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
Landscapes
- Read Only Memory (AREA)
Abstract
本发明的位翻转可控的Nand Flash仿真模型的注错方法,包括:a).判断位翻转类型;b).随机产生位翻转数量;c).人为设定位翻转数量;d).创建类,并定义错误位置变量;e).创建类,并创建一个深度为、宽度为8 bit的二维数组;f).定义翻转位,定义字节翻转变量,利用中被值“1”的位置与Nand Flash页中8bit数据的翻转位位置相对应的原则,对进行赋值;g).数据注错运算,将中的数据与io_data_buf中的数据进行异或运算;h).纠错能力判断。本发明的编码纠错验证方法,实现了向Nand Flash页中进行数量、位置可控的翻转位注入,灵活地增加了数据位随机插错,有助于更全面快速地完成NFC的验证。
Description
技术领域
本发明涉及一种位翻转可控的Nand Flash仿真模型的注错方法,更具体的说,尤其涉及一种可对翻转位的个数和位置进行控制的Nand Flash控制器的编码纠错验证方法。
背景技术
现有Nand Flash仿真模型虽然实现了对Nand flash操作的读写、擦除以及时序检查等功能,但验证闪存控制器(Nand Flash Controller即NFC)的纠错编码功能时,存储数据位的随机插错功能却很难实现。
Nand flash(快闪存储器)具有存储单元面积小,编程速度快,擦除时间短,功耗低等优势,已成为业界非常流行的海量存储介质,然而所有的Nand Flash器件都受位翻转现象的困扰。所谓位翻转(bit flip)指的是,由于Nand Flash电学特性的局限,在Nand Flash被多次擦写之后,原先Nand Flash中的某个存储位的数据值可能会发生翻转,即要么从1变成0了,要么从0变成1了。如果Nand Flash只是应用于一般数据存储,那么位翻转所造成的影响也许并不太明显。但当将Nand Flash应用于存储操作系统,存储配置文件和其他敏感信息的时候,Nand Flash的位翻转现象对整个计算机系统将会是致命的。因此在NandFlash仿真模型中模拟器件的位翻转功能检查尤为重要。
现有的Nand Flash仿真模型一般采用前端RTL设计的思想利用verilog语言编写实现,这种方法虽然也能够实现Nand Flash模型简单的位翻转功能,但是操作方式复杂且可控性差,不能满足验证工程师在仿真时对位翻转和位翻转的数量进行随机控制。
发明内容
本发明为了克服上述技术问题的缺点,提供了一种位翻转可控的Nand Flash仿真模型的注错方法。
本发明的位翻转可控的Nand Flash仿真模型的注错方法,设Nand Flash的页大小为bit,NandFlash页中存储数据的寻址位数为;其特征在于,所述编码纠错验证方法通过以下步骤来实现:a).判断位翻转类型,判断是随机产生位翻转的数量还是人为设定位翻转的数量,如果为随机产生,则执行步骤b);如果为人为设定,则执行步骤c);b).随机产生位翻转数量,在限定的位翻转区间内随机生成一个数据,用该随机数据作为Nand Flash页中位翻转的个数,执行步骤d);c).人为设定位翻转数量,验证人员根据实际的需求设定Nand Flash页中位翻转的个数,执行步骤d);d).创建类,记步骤b)中获取的位翻转个数或步骤c)中人为设定的位翻转个数为;创建用于约束翻转位位置的类,并在该类中定义位数为的错误位置变量,的大小约束在区间之间,以使恰好能对Nand Flash一页大小的数据进行寻址;e).创建类,创建类,并在该类中创建一个深度为、宽度为8 bit的二维数组,使得二位数组的大小与Nand Flash一页的大小相等,二维数组中数据的初始值均为0;f).定义翻转位,定义宽度为8bit的字节翻转变量,类产生的错误位置作为二位数组的索引,利用中被值“1”的位置与NandFlash页中8bit数据的翻转位位置相对应的原则,对二维数组进行赋值,直至翻转位的数量与相等;g).数据注错运算,将二位数组中的数据与从NandFlash array中读取到io_data_buf中的数据进行异或运算,使得Nand Flash控制器从NandFlash io端口读取的数据为含有注错信息的数据;h).纠错能力判断,Nand Flash控制器读取到含有注错信息的数据后,判断其对该页中所有注错位的纠错能力。
本发明的位翻转可控的Nand Flash仿真模型的注错方法,步骤f)中定义翻转位通过以下步骤来实现:f-1).字节翻转变量赋值,利用中被值“1”的位置与Nand Flash页中8bit数据的翻转位位置相对应的原则,计算出二位数组当前索引位置所对应的字节翻转变量的值;f-2).二位数组赋值,通过=对二位数组相应位置处的8bit进行赋值,执行步骤f-3);f-3).判断位翻转是否完成,计算参与赋值的所有字节翻转变量中所含有的“1”的数目是否达到了,如果达到,则表明定义翻转位结束;如果没有达到,则表明位翻转没有完成,执行步骤f-4);f-4).继续定义翻转位,设二位数组中下一翻转位索引为,翻转变量为,则令=,=,继续执行步骤f-1)、f-2)。。
本发明的位翻转可控的Nand Flash仿真模型的注错方法,所述Nand Flash的页大小为8KB或16KB,即bit分别等于bit或bit;,Nand Flash页中存储数据的寻址位数为=16。
本发明的有益效果是:本发明的位翻转可控的Nand Flash仿真模型的注错方法,通过建立类,在该类中建立有约束翻转位位置的变量;通过建立类,并在该类中建立二维数组,通过作为二位数组的索引,利用字节翻转变量对二位数组进行赋值,即可对定义出翻转位位置;最后通过将二位数组中的数据依次与Nand Flash 的io_data_buf中的数据进行异或运算,相当于实现了向Nand Flash页中进行了数量、位置可控的翻转位注入,以便检测NFC的编码纠错能力。
本发明的注错机制采用SystemVerilog语言的class来实现,在类中对数据的翻转位置和翻转个数进行相应的约束和随机,实现了插错位置和插错数据的随机化与可控性。相比之前的Nand Flash验证模型,灵活地增加了数据位随机插错,更加真实地模拟了NandFlash的工作过程,有助于更全面快速地完成Nand Flash Controller的验证。
附图说明
图1为本发明的位翻转可控的Nand Flash控制器的编码纠错验证方的流程图;
图2为本发明的Nand Flash控制器的编码纠错验证方的原理图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
本发明的位翻转可控的Nand Flash仿真模型的注错方法,设Nand Flash的页大小为bit, Nand Flash页中存储数据的寻址位数为,常用Nand Flash的页大小为8KB或16KB,即bit分别等于bit或bit,所述编码纠错验证方法通过以下步骤来实现:
a).判断位翻转类型,判断是随机产生位翻转的数量还是人为设定位翻转的数量,如果为随机产生,则执行步骤b);如果为人为设定,则执行步骤c);
b).随机产生位翻转数量,在限定的位翻转区间内随机生成一个数据,用该随机数据作为Nand Flash页中位翻转的个数,执行步骤d);
该步骤中,位翻转区间可根据实际的测试需求设定。
c).人为设定位翻转数量,验证人员根据实际的需求设定Nand Flash页中位翻转的个数,执行步骤d);
d).创建类,记步骤b)中获取的位翻转个数或步骤c)中人为设定的位翻转个数为;创建用于约束翻转位位置的类,并在该类中定义位数为的错误位置变量,的大小约束在区间之间,以使恰好能对Nand Flash一页大小的数据进行寻址;
e).创建类,创建类,并在该类中创建一个深度为、宽度为8 bit的二维数组,使得二位数组的大小与Nand Flash一页的大小相等,二维数组中数据的初始值均为0;
f).定义翻转位,定义宽度为8bit的字节翻转变量,类产生的错误位置作为二位数组的索引,利用中被值“1”的位置与Nand Flash页中8bit数据的翻转位位置相对应的原则,对二维数组进行赋值,直至翻转位的数量与相等;
该步骤中,定义翻转位通过以下步骤来实现:
f-1).字节翻转变量赋值,利用中被值“1”的位置与NandFlash页中8bit数据的翻转位位置相对应的原则,计算出二位数组当前索引位置所对应的字节翻转变量的值;
f-2).二位数组赋值,通过=对二位数组相应位置处的8bit进行赋值,执行步骤f-3);
在该步骤中,如果=0000 0001B,可使相应地址上8bit数据的第一位发生位翻转,如果=0000 0010B,可使第二位发生翻转,以此类推;=0000 0000B,则对应的8bit存储空间上没有翻转位。
f-3).判断位翻转是否完成,计算参与赋值的所有字节翻转变量中所含有的“1”的数目是否达到了,如果达到,则表明定义翻转位结束;如果没有达到,则表明位翻转没有完成,执行步骤f-4);
f-4).继续定义翻转位,设二位数组中下一翻转位索引为,翻转变量为,则令=,=,继续执行步骤f-1)、f-2)。
g).数据注错运算,将二位数组中的数据依次与从Nand Flash array中读取到io_data_buf中的数据进行异或运算,使得Nand Flash控制器从Nand Flash io端口读取的数据为含有注错信息的数据;
h).纠错能力判断,Nand Flash控制器读取到含有注错信息的数据后,判断其对该页中所有注错位的纠错能力。
本发明的位翻转可控的Nand Flash仿真模型的注错方法,可对Nand Flash页中的翻转位置和翻转个数进行相应的约束和随机,实现了插错位置和插错数据的随机化与可控性;灵活地增加了数据位随机插错,更加真实地模拟了Nand Flash的工作过程,有助于更全面快速地完成Nand Flash Controller的验证。
Claims (3)
1.一种位翻转可控的Nand Flash仿真模型的注错方法,设Nand Flash的页大小为2N*8bit,Nand Flash页中存储数据的寻址位数为n;其特征在于,所述位翻转可控的NandFlash仿真模型的注错方法通过以下步骤来实现:
a).判断位翻转类型,判断是随机产生位翻转的数量还是人为设定位翻转的数量,如果为随机产生,则执行步骤b);如果为人为设定,则执行步骤c);
b).随机产生位翻转数量,在限定的位翻转区间[MIN_ERR_BITS,MAX_ERR_BITS]内随机生成一个数据,用该随机数据作为Nand Flash页中位翻转的个数,执行步骤d);
c).人为设定位翻转数量,验证人员根据实际的需求设定Nand Flash页中位翻转的个数,执行步骤d);
d).创建Err_pos_gen类,记步骤b)中获取的位翻转个数或步骤c)中人为设定的位翻转个数为err_num;创建用于约束翻转位位置的Err_pos_gen类,并在该类中定义错误位置变量err_pos,err_pos为一维数组,长度为n;err_pos的大小约束在区间[0,2N-1」之间,以使err_pos恰好能对Nand Flash一页大小的数据进行寻址;
e).创建Inject_err类;创建Inject_err类,并在Inject_err中创建一个深度为2N-1、宽度为8bit的二维数组err_bit,使得二维数组err_bit的大小与Nand Flash一页的大小相等,二维数组err_bit中数据的初始值均为0;
f).定义翻转位,定义宽度为8bit的字节翻转变量err_num_one_byte,Err_pos_gen类产生的错误位置err_pos作为二维数组err_bit的索引,利用err_num_one_byte中被值“1”的位置与Nand Flash页中8bit数据的翻转位位置相对应的原则,对二维数组err_bit进行赋值,直至翻转位的数量与err_num相等;
g).数据注错运算,将二维数组err_bit中的数据依次与从Nand Flash array中读取到io_data_buf中的数据进行异或运算,使得Nand Flash控制器从Nand Flash io端口读取的数据为含有注错信息的数据;
h).纠错能力判断,Nand Flash控制器读取到含有注错信息的数据后,判断其对该页中所有注错位的纠错能力。
2.根据权利要求1所述的位翻转可控的Nand Flash仿真模型的注错方法,其特征在于:步骤f)中定义翻转位通过以下步骤来实现:
f-1).字节翻转变量赋值,利用err_num_one_byte中被值“1”的位置与Nand Flash页中8bit数据的翻转位位置相对应的原则,计算出二维数组err_bit当前索引err_pos位置所对应的字节翻转变量err_num_one_byte的值;
f-2).二维数组赋值,通过err_bit[err_pos_gen.eer_pos]=err_num_one_byte对二维数组err_bit相应位置处的8bit数据进行赋值,执行步骤f-3);
f-3).判断位翻转是否完成,计算参与赋值的所有字节翻转变量err_num_one_byte中所含有的“1”的数目是否达到了err_num,如果达到,则表明定义翻转位结束;如果没有达到err_num,则表明位翻转没有完成,执行步骤f-4);
f-4).继续定义翻转位,设二维数组中下一翻转位索引为eer_pos′,翻转变量为err_num_one_byte′,则令eer_pos=eer_pos′,err_num_one_byte=err_num_one_byte′,继续执行步骤f-1)、f-2)。
3.根据权利要求1或2所述的位翻转可控的Nand Flash仿真模型的注错方法,其特征在于:所述Nand Flash的页大小为8KB或16KB,即2N*8bit分别等于213*8bit或214*8bit;NandFlash页中存储数据的寻址位数为n=16。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410749886.XA CN104536864B (zh) | 2014-12-10 | 2014-12-10 | 一种位翻转可控的Nand Flash仿真模型的注错方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410749886.XA CN104536864B (zh) | 2014-12-10 | 2014-12-10 | 一种位翻转可控的Nand Flash仿真模型的注错方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104536864A CN104536864A (zh) | 2015-04-22 |
CN104536864B true CN104536864B (zh) | 2016-09-07 |
Family
ID=52852394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410749886.XA Active CN104536864B (zh) | 2014-12-10 | 2014-12-10 | 一种位翻转可控的Nand Flash仿真模型的注错方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104536864B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106992027A (zh) * | 2017-04-14 | 2017-07-28 | 广东浪潮大数据研究有限公司 | 一种模拟Nand坏块的动态注入方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684150B (zh) * | 2018-12-24 | 2022-04-26 | 北京得瑞领新科技有限公司 | 存储颗粒控制器的性能测试系统、测试方法及仿真平台 |
CN110134557A (zh) * | 2019-05-17 | 2019-08-16 | 深圳忆联信息系统有限公司 | 一种读Flash接口数据随机注错的验证方法及其系统 |
CN113470723B (zh) * | 2021-06-29 | 2023-07-14 | 成都佰维存储科技有限公司 | 读重试测试方法、装置、可读存储介质及电子设备 |
CN115329699B (zh) * | 2022-10-17 | 2023-03-24 | 北京紫光青藤微系统有限公司 | 用于Flash仿真模型的注错方法、装置及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916306A (zh) * | 2010-07-16 | 2010-12-15 | 北京航空航天大学 | 一种用于fpga芯片敏感区域定位的系统及其方法 |
CN103594120A (zh) * | 2013-10-31 | 2014-02-19 | 西安华芯半导体有限公司 | 以读代写的存储器纠错方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070233752A1 (en) * | 2006-03-30 | 2007-10-04 | Kiran Bangalore | Method and apparatus to reclaim nonvolatile memory space |
US9047988B2 (en) * | 2012-11-20 | 2015-06-02 | International Business Machines Corporation | Flash interface error injector |
-
2014
- 2014-12-10 CN CN201410749886.XA patent/CN104536864B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916306A (zh) * | 2010-07-16 | 2010-12-15 | 北京航空航天大学 | 一种用于fpga芯片敏感区域定位的系统及其方法 |
CN103594120A (zh) * | 2013-10-31 | 2014-02-19 | 西安华芯半导体有限公司 | 以读代写的存储器纠错方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106992027A (zh) * | 2017-04-14 | 2017-07-28 | 广东浪潮大数据研究有限公司 | 一种模拟Nand坏块的动态注入方法 |
CN106992027B (zh) * | 2017-04-14 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种模拟Nand坏块的动态注入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104536864A (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104536864B (zh) | 一种位翻转可控的Nand Flash仿真模型的注错方法 | |
CN106133537B (zh) | 一种fpga功能模块仿真验证方法及其系统 | |
CN102841950B (zh) | 一种逻辑存储单元自动验证的方法及装置 | |
WO2020028550A1 (en) | Secure memory system programming | |
CN110347330A (zh) | 存储器系统及其操作方法 | |
CN108268337A (zh) | 于记忆装置中进行数据管理的方法、记忆装置及其控制器 | |
CN109542713A (zh) | 一种验证方法及验证装置 | |
CN106155582B (zh) | 非挥发性储存装置与控制器 | |
CN103744744B (zh) | 数据储存装置以及易失性存储器的数据校验方法 | |
CN106205728A (zh) | 奇偶校验电路及包括该奇偶校验电路的存储器装置 | |
CN105205019B (zh) | 基于高通平台手机的nv参数读写系统及方法 | |
US10949130B2 (en) | Virtual solid state storage system with solid state storage error emulation | |
JP4180757B2 (ja) | シミュレーション装置 | |
CN109062808A (zh) | 一种ssd开发性能的测试方法、装置及相关设备 | |
CN206696842U (zh) | 一种raid校验生成装置 | |
CN102495778B (zh) | 一种测试单包正则匹配逻辑的系统和方法 | |
CN111124790B (zh) | 一种可重用仿真接口模型的生成系统 | |
CN107729681A (zh) | 适用于在轨重构fpga的通用仿真方法和系统 | |
CN106971757A (zh) | 一种检验Nand Flash质量的方法及系统 | |
CN113470723B (zh) | 读重试测试方法、装置、可读存储介质及电子设备 | |
CN105373444B (zh) | 一种8位宽外部存储器控制器edac校验码的生成方法 | |
CN113760751B (zh) | 生成测试用例的方法、电子设备及存储介质 | |
CN105404572B (zh) | 一种基于遍历搜索存储模型的Cache系统形式化验证方法 | |
CN104063252B (zh) | 基于dsp芯片的带有看门狗电路的程序烧写与回读方法 | |
CN102200926B (zh) | 一种存储器读操作功能的仿真验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |