发明名称 一种对FPGA内部嵌入式多位存储器故障的测试方法
摘要 一种对FPGA内部嵌入式多位存储器故障的测试方法,它有六大步骤:一、基于March C-算法,首先增加测试图样数2×(1+log<sub>2</sub>n);二、将2×(1+log<sub>2</sub>n)种测试图样代入March C-算法的6个March单元,得到位宽为n bit的以存储单元为基准的存储器March C-测试算法;三、利用Verilog硬件描述语言在FPGA内部构建BIST结构;四、在BIST平台下,由控制单元控制不同状态下输入被测存储器的测试图形、状态控制器所在状态以及内部响应分析器的启动与停止,由测试图形生成器生成针对存储器不同故障模型所需的March元素测试图形序列;五、根据以上生成的测试图形对存储器进行测试;六、观察测试波形,确定存储器故障类型。本发明方法简单,实现容易,在FPGA内部嵌入式多位存储器测试领域有很广阔的应用前景。
申请公布号 CN102157205B 申请公布日期 2015.09.30
申请号 CN201110119650.4 申请日期 2011.05.10
申请人 北京航空航天大学 发明人 高成;刘孝章;黄姣英
分类号 G11C29/12(2006.01)I 主分类号 G11C29/12(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种对FPGA内部嵌入式多位存储器故障的测试方法,其特征在于:该方法具体实施步骤如下:步骤一:首先基于March C‑算法,增加测试图样;对于FPGA内部嵌入式n位存储器来说,其测试图样数应为2×(1+log<sub>2</sub>n);XC3S400型FPGA内嵌存储器位宽为16位,故其测试图样数为10;该测试图样如下所示:<tables num="0001" id="ctbl0001"><table><tgroup cols="4"><colspec colname="c001" colwidth="15%" /><colspec colname="c002" colwidth="32%" /><colspec colname="c003" colwidth="17%" /><colspec colname="c004" colwidth="36%" /><tbody><row><entry morerows="1">Group0</entry><entry morerows="1">0000000000000000</entry><entry morerows="1">Group1</entry><entry morerows="1">1111111111111111</entry></row><row><entry morerows="1">Group2</entry><entry morerows="1">0101010101010101</entry><entry morerows="1">Group3</entry><entry morerows="1">1010101010101010</entry></row><row><entry morerows="1">Group4</entry><entry morerows="1">0011001100110011</entry><entry morerows="1">Group5</entry><entry morerows="1">1100110011001100</entry></row><row><entry morerows="1">Group6</entry><entry morerows="1">0000111100001111</entry><entry morerows="1">Group7</entry><entry morerows="1">1111000011110000</entry></row><row><entry morerows="1">Group8</entry><entry morerows="1">0000000011111111</entry><entry morerows="1">Group9</entry><entry morerows="1">1111111100000000</entry></row></tbody></tgroup></table></tables>步骤二:将10种测试图样代入March C‑算法的6个March元素中,即M0,M1,M2,M3,M4和M5六个March单元,就得到XC3S400型FPGA内嵌存储器的March C‑测试算法如下:<img file="FDA0000677327050000011.GIF" wi="1624" he="1269" />步骤三:该测试采用内建自测试技术,利用Verilog硬件描述语言在XC3S400内部构建BIST平台,实现对其内部嵌入式存储器的测试;BIST结构共包括六部分:控制单元、测试图形生成器、存储器时钟、内部响应分析器、状态控制器、被测存储器;步骤四:在利用Verilog硬件描述语言构建的存储器BIST平台下,控制单元用于控制不同状态下输入被测存储器的测试图形、状态控制器所在状态以及内部响应分析器的启动与停止;测试图形生成器根据FPGA内部嵌入式多位存储器故障的测试方法生成针对存储器不同故障模型所需的March元素测试图形序列;步骤五:被测存储器位宽为16位,其测试图样数为10;扩充后的测试图样变量分别定义为:<img file="FDA0000677327050000021.GIF" wi="912" he="479" />存储器时钟以系统时钟clk为输入信号生成存储器所需时钟输入信号r_clk;状态控制器用于控制存储器当前所处的测试状态,状态变量march_state包括空闲idle、地址升序写入操作asc_w、地址升序先读取后写入操作asc_r_w、地址降序先读取后写入操作desc_r_w、地址升序读取操作asc_r以及停止stop六个基本操作状态,当将扩充后的March元素测试图样带入状态变量march_state后,其实际状态被扩充为空闲idle、地址升序写入m0操作asc_w0、地址升序先读取m0后写入m1操作asc_r0_w1、地址升序先读取m1后写入m0操作asc_r1_w0、地址降序先读取m0后写入m1操作desc_r0_w1、地址降序先读取m1后写入m0操作desc_r1_w0、地址升序先读取m0后写入m2操作asc_r0_w2、地址升序先读取m2后写入m3操作asc_r2_w3、地址升序先读取m3后写入m2操作asc_r3_w2、地址降序先读取m2后写入m3操作desc_r2_w3、地址降序先读取m3后写入m2操作desc_r3_w2、地址升序先读取m2后写入m4操作asc_r2_w4、地址升序先读取m4后写入m5操作asc_r4_w5、地址升序先读取m5后写入m4操作asc_r5_w4、地址降序先读取m4后写入m5操作desc_r4_w5、地址降序先读取m5后写入m4操作desc_r5_w4、地址升序先读取m4后写入m6操作asc_r4_w6、地址升序先读取m6后写入m7操作asc_r6_w7、地址升序先读取m7后写入m6操作asc_r7_w6、地址降序先读取m6后写入m7操作desc_r6_w7、地址降序先读取m7后写入m6操作desc_r7_w6、地址升序先读取m6后写入m8操作asc_r6_w8、地址升序先读取m8后写入m9操作asc_r8_w9、地址升序先读取m9后写入m8操作asc_r9_w8、地址降序先读取m8后写入m9操作desc_r8_w9、地址降序先读取m9后写入m8操作desc_r9_w8、地址升序读取m8操作asc_r8以及停止stop二十八个状态;当BIST测试系统对存储器进行测试时,状态控制器将当前系统操作状态置于初始空闲状态idle,在此状态下,被测存储器工作使能信号r_en被置高,启动其进入工作状态;由于测试开始后测试系统首先对存储器进行地址升序写入m0操作,因此在初始空闲状态下存储器写使能信号r_we被置高,状态变量寄存器被写入asc_w0状态,测试地址寄存器被写入存储器最低存储单元地址;同时由存储器时钟模块向被测存储器提供时钟输入信号r_clk,r_clk在系统时钟clk信号的下降沿翻转,从而保证控制单元在r_clk信号为低电平时改变存储器的地址输入信号r_addr和数据输入信号r_di;当测试系统离开初始空闲状态进入测试状态后,状态控制器通过状态变量march_state控制系统所处测试状态,控制单元与状态控制器相互配合,实现测试系统在二十八个测试状态间转换,系统故障标志信号fault为高电平时表示存储器在当前工作状态下存在故障,为低电平时表示存储器在当前工作状态下无故障;写使能信号r_we为高电平时表示存储器工作在写入数据状态,为低电平时表示存储器工作在读取数据状态;地址数据信号r_addr为当前工作状态下存储器写入或读取数据所针对的存储单元地址;状态转换计数器wait_r_clk用于调整系统不同工作状态转换时,输出响应分析器采样地址单元与比对测试图样间的匹配关系;数据输入信号r_di为存储器测试图形数据输入端口,r_do为存储器数据输出端口;步骤六:将配置图形下载到XC3S400开发板上,通过在线逻辑分析仪,实时观测XC3S400实际运行过程中内部信号波形图,仿真测试结果与预期完全一致。
地址 100191 北京市海淀区学院路37号