一种具有EDAC容错的存储器故障注入设计及验证方法转让专利

申请号 : CN201810549625.1

文献号 : CN108766501B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔媛媛张海金娄冕王会敏马子轩刘虎兵

申请人 : 西安微电子技术研究所

摘要 :

本发明公开了一种具有EDAC容错的存储器故障注入设计及验证方法,分工作模式分别对数据/指令域和校验域的读写访问进行不同的控制,在测试模式下,对数据/指令域进行读操作时,仅使数据/指令域的读操作的控制信号有效,实现数据/指令域的测试读访问;对校验域进行读操作时,仅使校验域的读操作的控制信号有效,实现校验域的测试读访问,对数据/指令域进行故障注入时,仅使数据/指令域的写操作的控制信号有效,对校验域进行故障注入时,仅使校验域的写操作的控制信号有效,实现数据/指令域以及校验域的任意故障注入。本发明实现了数据/指令域和校验域独立的读写访问,确保存储器进行容错设计之后的可测试性。

权利要求 :

1.一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,分工作模式分别对数据/指令域和校验域的读写访问进行不同的控制,在测试模式下,对数据/指令域进行读操作时,仅使数据/指令域的读操作的控制信号有效,实现数据/指令域的测试读访问;

对校验域进行读操作时,仅使校验域的读操作的控制信号有效,实现校验域的测试读访问,对数据/指令域进行故障注入时,仅使数据/指令域的写操作的控制信号有效,对数据/指令域进行写操作具体为:在测试模式下,先配置为对数据/指令进行测试的模式,使数据/指令域的写操作的控制信号有效,屏蔽校验域的写操作的控制信号,将要写的数据先写入测试写数据寄存器test_wdata中,之后发写某地址的访问操作,test_wdata寄存器中的数据将写入对应地址的数据/指令域中,而对应校验域中的校验元维持原值不变,对test_wdata寄存器进行读操作,确认写入数据的一致性,实现数据/指令域的任意注错,对校验域进行写操作具体为:在测试模式下,先配置为校验域测试模式,使校验域的写操作的控制信号,屏蔽数据/指令域的写操作的控制信号,将要写的校验元先写入测试写校验元寄存器test_wedac中,之后发写某地址的访问操作,test_wedac寄存器中的数据将写入对应地址的校验域中,对应数据/指令域中的值维持不变,对test_wedac寄存器进行读操作,确认写入校验元的一致性,实现校验域的任意注错,对校验域进行故障注入时,仅使校验域的写操作的控制信号有效,实现数据/指令域以及校验域的任意故障注入,选择数据/指令域对具有EDAC容错的存储器进行故障注入具体为:当对数据/指令域进行注错时,需要配置为数据/指令域测试模式,当已知目前数据/指令域中对应地址的值,将要改错的数据写入test_wdata寄存器中,发起对相应地址的写操作,如果数据/指令域中对应地址的值是未知的,发起一次对相同地址的读操作,读出的数据记录在test_rdata寄存器中,之后取出test_rdata寄存器中的值,并将其改错,写入test_wdata寄存器中,发起写操作将错误注入到对应的地址中。

2.根据权利要求1所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,根据工作模式,数据/指令域和校验域的读写访问具体如下:

正常工作模式下,数据/指令域和校验域读写访问的控制信号、控制时序一致,数据/指令域和校验域一一对应;测试模式下,数据/指令域和校验域需要有独立的读写访问控制。

3.根据权利要求1或2所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,正常工作模式下,控制信号同时控制数据/指令域和校验域的读写;在测试模式下,如果是测试数据/指令域,则读写控制信号对数据/指令域的访问是有效的,对校验域的读写访问控制器将被置为无效;如果是测试校验域,则读写控制信号对校验域的访问是有效的,对数据/指令域的读写访问控制器将被置为无效。

4.根据权利要求1所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,对数据/指令域进行读操作具体为:

在测试模式下,先配置为对数据/指令进行测试的模式,使数据/指令域的读操作的控制信号有效,屏蔽校验域的读操作的控制信号,发读某地址的读访问操作,对应地址的数据/指令返回到测试读数据寄存器test_rdata中,再对该test_rdata寄存器进行读操作,实现数据/指令域的测试读访问。

5.根据权利要求1所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,对校验域进行读操作具体为:

在测试模式下,先配置为校验域测试模式,使校验域的读操作的控制信号有效,屏蔽数据/指令域的读操作的控制信号,发读某地址的读访问操作,对应地址的校验元会返回到测试读校验元寄存器test_redac中,再对该test_redac寄存器进行读操作,实现校验域的测试读访问。

6.根据权利要求1所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,选择校验域对具有EDAC容错的存储器进行故障注入具体为:

当对校验域进行注错时,操作的寄存器是test_wedac和test_redac,不需要为校验域分配额外的地址空间,对校验域的地址访问与数据/指令域的访问地址相同即可,只是在不同的测试模式下,访问的存储区域不同。

7.根据权利要求1所述的一种具有EDAC容错的存储器故障注入设计及验证方法,其特征在于,所述设计及验证方法中,对测试控制寄存器的写访问设计相应的密码寄存器,先向对应的密码寄存器中写入相应的密码,密码正确,才对测试控制寄存器进行一次操作。

说明书 :

一种具有EDAC容错的存储器故障注入设计及验证方法

技术领域

[0001] 本发明属于集成电路设计技术领域,具体涉及一种具有EDAC容错的存储器故障注入设计及验证方法。

背景技术

[0002] 空间环境中的SEU(Single-Event-Upset)效应极易影响数字集成电路部件,特别是存储器件,导致程序执行错误,从而引起系统失效。存储器可以位于SoC(System on Chip)片上,或是位于SoC外部作为其外部存储空间,但存储器控制器一般都位于SoC内。针对空间环境的实际应用,为了提高SoC主存系统的抗辐射能力,片上存储器以及片外存储器需要采用容错加固设计,由于主存系统是不可复现的,通常采用EDAC编码,使得绝大数错误可以通过纠正达到正确复现的目的。采用EDAC编码技术,就需要在原有存储器的基础上,增加冗余的校验元存储器作为校验域。在正常功能模式下,对存储器进行写操作时,无需发送校验元,写数据先经过EDAC编码器生成相应的校验元,再将写数据和校验元分别同时写入数据/指令域和校验域中;对存储器进行读操作时,读数据和对应的校验元会同时分别从数据/指令域和校验域中读出,进入EDAC译码器中进行错误检测,如果读数据无错,只将读数据返回给处理器,处理器无需关心对应的校验元的情况。于是,在正常功能模式下,校验元对处理器是透明的。
[0003] 但是,存储器的容错设计需要通过验证来确保设计的可靠性。目前采用的方法主要是分析模型法、现场错误数据分析法和故障注入法等,其中,故障注入是对容错设计可靠性验证的有效方法,主要包括软件注错、物理注错和模拟注错等。为了实现对容错型存储器可任意注错和实时观测的目的,在进行容错设计时,就需要对注错结构进行专门设计,满足后续验证容错结构正确性,进行故障注入与验证的需求。
[0004] 关于怎样进行故障注入以及验证的专利和文献资料很多,例如“一种用于单粒子翻转的故障模拟系统及分析方法”提出了一种大规模集成电路SRAM型FPGA中的单粒子翻转的故障模拟系统和分析方法,其采用软硬件结合的方式,通过上位机和控制板交互完成故障注入和故障检测,实现了SRAM型FPGA容错能力的验证。但是,基于容错结构怎样进行注错设计的资料并不多,有关于TMR结构进行注错设计的文献,例如“TMR故障注入与验证方法研究与实现”(计算机测量与控制)。特别是怎样实现容错型存储器的注错设计与验证,经检索相关专利和文献,尚未发现有解决该问题的方法。

发明内容

[0005] 本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种具有EDAC容错的存储器故障注入设计及验证方法,在测试模式下,数据/指令域和校验域可实现独立的读写操作,并且读写的数据/指令和校验元均是通过对相应寄存器的读写完成的,在可任意注错的同时,实现了数据/指令和校验元的可实时观测的目的,确保存储器进行容错设计之后的可测试性。
[0006] 本发明采用以下技术方案:
[0007] 一种具有EDAC容错的存储器故障注入设计及验证方法,分工作模式分别对数据/指令域和校验域的读写访问进行不同的控制,在测试模式下,对数据/指令域进行读操作时,仅使数据/指令域的读操作的控制信号有效,实现数据/指令域的测试读访问;对校验域进行读操作时,仅使校验域的读操作的控制信号有效,实现校验域的测试读访问,对数据/指令域进行故障注入时,仅使数据/指令域的写操作的控制信号有效,对校验域进行故障注入时,仅使校验域的写操作的控制信号有效,实现数据/指令域以及校验域的任意故障注入。
[0008] 具体的,根据工作模式,数据/指令域和校验域的读写访问具体如下:
[0009] 正常工作模式下,数据/指令域和校验域读写访问的控制信号、控制时序一致,数据/指令域和校验域一一对应;测试模式下,数据/指令域和校验域需要有独立的读写访问控制。
[0010] 进一步的,正常工作模式下,控制信号同时控制数据/指令域和校验域的读写;在测试模式下,如果是测试数据/指令域,则读写控制信号对数据/指令域的访问是有效的,对校验域的读写访问控制器将被置为无效;如果是测试校验域,则读写控制信号对校验域的访问是有效的,对数据/指令域的读写访问控制器将被置为无效。
[0011] 具体的,对数据/指令域进行读操作具体为:
[0012] 在测试模式下,先配置为对数据/指令进行测试的模式,使数据/指令域的读操作的控制信号有效,屏蔽校验域的读操作的控制信号,发读某地址的读访问操作,对应地址的数据/指令返回到测试读数据寄存器test_rdata中,再对该test_rdata寄存器进行读操作,实现数据/指令域的测试读访问。
[0013] 具体的,对校验域进行读操作具体为:
[0014] 在测试模式下,先配置为校验域测试模式,使校验域的读操作的控制信号有效,屏蔽数据/指令域的读操作的控制信号,发读某地址的读访问操作,对应地址的校验元会返回到测试读校验元寄存器test_redac中,再对该test_redac寄存器进行读操作,实现校验域的测试读访问。
[0015] 具体的,对数据/指令域进行写操作具体为:
[0016] 在测试模式下,先配置为对数据/指令进行测试的模式,使数据/指令域的写操作的控制信号有效,屏蔽校验域的写操作的控制信号,将要写的数据先写入测试写数据寄存器test_wdata中,之后发写某地址的访问操作,test_wdata寄存器中的数据将写入对应地址的数据/指令域中,而对应校验域中的校验元维持原值不变,对test_wdata寄存器进行读操作,确认写入数据的一致性,实现数据/指令域的任意注错。
[0017] 具体的,对校验域进行写操作具体为:
[0018] 在测试模式下,先配置为校验域测试模式,使校验域的写操作的控制信号,屏蔽数据/指令域的写操作的控制信号,将要写的校验元先写入测试写校验元寄存器test_wedac中,之后发写某地址的访问操作,test_wedac寄存器中的数据将写入对应地址的校验域中,对应数据/指令域中的值维持不变,对test_wedac寄存器进行读操作,确认写入校验元的一致性,实现校验域的任意注错。
[0019] 具体的,选择数据/指令域对具有EDAC容错的存储器进行故障注入具体为:
[0020] 当对数据/指令域进行注错时,需要配置为数据/指令域测试模式,当已知目前数据/指令域中对应地址的值,将要改错的数据写入test_wdata寄存器中,发起对相应地址的写操作,如果数据/指令域中对应地址的值是未知的,发起一次对相同地址的读操作,读出的数据记录在test_rdata寄存器中,之后取出test_rdata寄存器中的值,并将其改错,写入test_wdata寄存器中,发起写操作将错误注入到对应的地址中。
[0021] 进一步的,选择校验域对具有EDAC容错的存储器进行故障注入具体为:
[0022] 当对校验域进行注错时,操作的寄存器是test_wedac和test_redac,不需要为校验域分配额外的地址空间,对校验域的地址访问与数据/指令域的访问地址相同即可,只是在不同的测试模式下,访问的存储区域不同。
[0023] 具体的,所述设计及验证方法中,对测试控制寄存器的写访问设计相应的密码寄存器,先向对应的密码寄存器中写入相应的密码,密码正确,才对测试控制寄存器进行一次操作。
[0024] 与现有技术相比,本发明至少具有以下有益效果:
[0025] 本发明一种具有EDAC容错的存储器故障注入设计及验证方法,分工作模式分别对数据/指令域和校验域的读写访问进行不同的控制,在测试模式下,对数据/指令域进行读操作时,仅使数据/指令域的读操作的控制信号有效,实现数据/指令域的测试读访问;对校验域进行读操作时,仅使校验域的读操作的控制信号有效,实现校验域的测试读访问,对数据/指令域进行故障注入时,仅使数据/指令域的写操作的控制信号有效,对校验域进行故障注入时,仅使校验域的写操作的控制信号有效,实现数据/指令域以及校验域的任意故障注入。实现了数据/指令域和校验域独立的读写访问,读写的数据/指令和校验元均是通过对相应寄存器的读写完成的,在可任意注错的同时,实现了数据/指令和校验元的可实时观测的目的,确保存储器进行容错设计之后的可测试性,所取得的效果如下:
[0026] 通过设置用户可编程的模式配置寄存器以及进行相应的结构设计,保证了在正常工作模式下,数据/指令域和校验域的读写访问控制是同时的,确保数据/指令和校验元的一致性,而在测试模式下,数据/指令域和校验域的读写访问控制又是独立的,根据当前配置的是测试数据/指令域,还是测试校验域,读写访问控制信号只对当前配置的存储域有效,可实现向数据/指令域和校验域的分别注错。
[0027] 通过设计测试写数据寄存器test_wdata和测试校验元寄存器test_wedac,实现了在测试模式下,测试人员通过对寄存器操作就可分别对数据/指令域、校验域随意进行注错,故障注入方式简单明了。
[0028] 通过设计测试读数据寄存器test_rdata和测试读校验元寄存器test_redac,实现了在测试模式下,测试人员通过对相应寄存器的读访问,可实时观测数据/指令域、校验域的注错情况。
[0029] 采用密码寄存器,当向密码寄存器中写入正确的密码时,才能开启测试控制寄存器的写使能,提高了测试设计结构的可靠性。
[0030] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

[0031] 图1为本发明具有EDAC容错的存储器的读写访问控制结构示意图。

具体实施方式

[0032] 本发明提供了一种具有EDAC容错的存储器故障注入设计及验证方法,用于独立实现对容错型存储器的数据/指令域和校验域的故障注入与验证。
[0033] 本发明一种具有EDAC容错的存储器故障注入设计及验证方法,包括以下步骤:
[0034] S1、对于数据/指令域和校验域的读写访问,分工作模式,分别进行不同的控制;
[0035] 在正常工作模式下,数据/指令域和校验域读写访问的控制信号、控制时序是一致的,不需要为校验域设置独立的访问控制信号,也不需要为校验域分配额外的访问地址,数据/指令域和校验域是一一对应的,使用与数据/指令域相同的地址即可。
[0036] 在测试模式下,数据/指令域和校验域需要有独立的读写访问控制。
[0037] 实际上,数据/指令域和校验域读写访问的控制信号还可以是一套,在正常工作模式下,这些控制信号同时控制数据/指令域和校验域的读写;在测试模式下,如果是测试数据/指令域,则读写控制信号对数据/指令域的访问是有效的,对校验域的读写访问控制器将被置为无效;如果是测试校验域,则读写控制信号对校验域的访问是有效的,对数据/指令域的读写访问控制器将被置为无效。
[0038] S2、在测试模式下,对数据/指令域进行读操作时,先配置为对数据/指令进行测试的模式,目的是使数据/指令域的读操作的控制信号有效,而屏蔽校验域的读操作的控制信号,之后发读某地址的读访问操作,对应地址的数据/指令会返回到测试读数据寄存器test_rdata中,再对该test_rdata寄存器进行读操作,实现数据/指令域的测试读访问;
[0039] 对校验域进行读操作时,先配置为校验域测试模式,目的是使校验域的读操作的控制信号有效,而屏蔽数据/指令域的读操作的控制信号,发读某地址的读访问操作,对应地址的校验元会返回到测试读校验元寄存器test_redac中,再对该test_redac寄存器进行读操作,实现校验域的测试读访问;
[0040] S3、在测试模式下,对数据/指令域进行写操作时,先配置为对数据/指令进行测试的模式,目的是使数据/指令域的写操作的控制信号有效,而屏蔽校验域的写操作的控制信号,之后将要写的数据先写入测试写数据寄存器test_wdata中,发写某地址的访问操作,test_wdata寄存器中的数据将写入对应地址的数据/指令域中,而对应校验域中的校验元维持原值不变,可以对test_wdata寄存器进行读操作,确认写入数据的一致性,对数据/指令域的测试写操作实现了数据/指令域的任意注错;
[0041] 对校验域进行写操作时,先配置为校验域测试模式,目的是使校验域的写操作的控制信号有效,而屏蔽数据/指令域的写操作的控制信号,将要写的校验元先写入测试写校验元寄存器test_wedac中,之后发写某地址的访问操作,test_wedac寄存器中的数据将写入对应地址的校验域中,而对应数据/指令域中的值维持不变,可以对test_wedac寄存器进行读操作,确认写入校验元的一致性,对校验域的测试写操作实现了校验域的任意注错;
[0042] S4、对具有EDAC容错的存储器进行故障注入时,可以选择是对数据/指令域和/或校验域注错;
[0043] 当对数据/指令域进行注错时,需要配置为数据/指令域测试模式,如果已知目前数据/指令域中对应地址的值,将要改错的数据写入test_wdata寄存器中,发起对相应地址的写操作即可,如果数据/指令域中对应地址的值是未知的,可以先发起一次对相同地址的读操作,读出的数据会记录在test_rdata寄存器中,之后取出test_rdata寄存器中的值,并将其改错,写入test_wdata寄存器中,发起写操作将错误注入到对应的地址中。
[0044] 当对校验域进行注错时,流程是一致的,只不过操作的寄存器是test_wedac和test_redac。需要说明的是,不需要为校验域分配额外的地址空间,对校验域的地址访问与数据/指令域的访问地址相同即可,只是在不同的测试模式下,访问的存储区域不同;
[0045] S5、基于可靠性的考虑,为了防止人为误操作以及空间辐射环境引起的系统故障,对测试控制寄存器的写访问专门设计相应的密码寄存器,即必须先向对应的密码寄存器中写入相应的密码,密码正确,才能对测试控制寄存器进行一次操作,提高了测试设计结构的可靠性。
[0046] 本发明基于这样的故障注入的设计结构,使得数据/指令域和校验域具有独立的访问路径,实现了数据/指令域和校验域可分别任意注错,达到了数据/指令域和校验域均具有可测试性的目的。同时,数据/指令域和校验域中的数据可分别通过读test_rdata和test_redac寄存器查看数据/指令域和校验域的注错情况,实现了可实时观测的目的。
[0047] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048] 请参阅图1,为具有EDAC容错的存储器的读写访问控制结构。在正常功能模式下,当系统向存储器发出一个写操作时,写数据sys_data先经过Edac编码生成对应的校验元wedac,系统发出的写使能信号Wen将数据/指令域的写使能Wen_data和校验域的写使能Wen_edac信号同时置为有效,将sys_data和wedac同时分别写入数据/指令域和校验域;当系统向存储器发出一个读操作时,系统发出的读使能信号Oen将数据/指令域的读使能Oen_data和校验域的读使能Oen_edac信号同时置为有效,分别从数据/指令域和校验域同时读出数据rdata和校验元redac,并进行Edac译码,译码结果以及纠正后的数据将返回给系统。
[0049] 在测试模式下,如果配置为测试数据/指令域,在进行测试写操作时,写入的数据来自测试写数据寄存器test_wdata,因为只测试数据/指令域,校验域维持不变,无需进行Edac编码,并且只有数据/指令域的写使能信号有效,校验域的写使能被屏蔽;在进行测试读操作时,系统读使能信号Oen将数据/指令域的读使能信号Oen_data置为有效,校验域的读使能信号将被屏蔽,读出的数据将写入测试读数据寄存器test_rdata中。
[0050] 在测试模式下,如果配置为测试校验域,在进行写操作时,写入的数据来自测试写校验元寄存器test_wedac,Edac编码模块不使能,并且只有校验域的写使能信号Wen_edac有效,数据/指令域的写使能被屏蔽;在进行测试读操作时,系统读使能信号Oen将校验域的读使能信号Oen_edac置为有效,数据/指令域的读使能信号将被屏蔽,读出的数据将写入测试读校验元寄存器test_redac中。
[0051] 本发明已经应用于一款兼容SPARC V8结构容错处理器的SoC中,该SoC主存系统的存储器控制器使用了本发明中的故障注入设计结构与验证方法。当存储器在测试模式下时,数据/指令域和校验域可实现独立的读写操作,并且读写的数据/指令和校验元均是通过对相应寄存器的读写完成的,在可任意注错的同时,实现了数据/指令和校验元的可实时观测的目的,确保存储器进行容错设计之后的可测试性。
[0052] 以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。