(57)【要約】【課題】  短時間でビット毎のテストが行える半導体故障検出装置を提供する。【解決手段】  半導体故障検出装置１３は、半導体メモリ１２の不良個所の有無をビット毎に検査する半導体故障検出装置で、半導体メモリ１２内のテストビットを含み、所定のビット数を有するメモリセルを指定するアドレスＡＤ２を生成するアドレス生成回路１６と、テストビットに書き込まれるテストデータを含み、アドレスＡＤ２で指定されるメモリセルに書き込まれる第１のデータＷＤ２を生成するデータ生成回路１７と、クロックの１サイクル目にアドレスＡＤ２で指定されたメモリセルに前記第１のデータの書き込みを指示し、該クロックの２サイクル目にアドレスＡＤ２で指定されたメモリセルから記憶されている第２のデータＲＤ２の読み出しを指示する制御信号生成回路１８と、第１のデータＷＤ２と第２のデータＲＤ２とを比較し、比較結果ＲＥＦを出力する比較回路１９とを具備する。【選択図】  図１
2017010273.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリの不良個所の有無をビット毎に検査する半導体故障検出装置であって、
前記半導体メモリ内のテストビットを含み、所定のビット数を有するメモリセルを指定するアドレスを生成するアドレス生成回路と、
前記テストビットに書き込まれるテストデータを含み、前記アドレスで指定されるメモリセルに書き込まれる第１のデータを生成するデータ生成回路と、
クロックの１サイクル目に前記アドレスで指定されたメモリセルに前記第１のデータの書き込みを指示し、前記クロックの２サイクル目に前記アドレスで指定されたメモリセルから前記第２のデータの読み出しを指示する制御信号生成回路と、
前記第１のデータと前記第２のデータとを比較し、比較結果を出力する比較回路と、
を具備することを特徴とする半導体故障検出装置。
【請求項２】
前記ビット毎の検査を実施するか否かを選択するための選択回路を備え、
前記選択回路は、前記ビット毎の検査を実施するときは、前記アドレス生成回路、前記データ生成回路、前記制御信号生成回路を前記半導体メモリに電気的に接続し、前記ビット毎の検査を実施しないときは、前記半導体メモリにデータを読み書きする情報処理装置を前記半導体メモリに電気的に接続することを特徴とする請求項１に記載の半導体故障検出装置。
【請求項３】
前記アドレス生成回路は、前記半導体メモリから、前記ビット毎の検査を開始するアドレスと、前記ビット毎の検査を行うメモリセルの総数とを受け取り、前記アドレスを更新する毎に前記ビット毎の検査を行うメモリセルの残数を出力することを特徴とする請求項１または２に記載の半導体故障検出装置。
【請求項４】
前記データ生成回路は、前記アドレスで指定されたメモリセルのなかで前記テストビットの位置が順次シフトするように前記第１のデータの生成を繰り返しながら、前記テストビットの位置を示すデータを出力し、前記テストビットの位置のシフトが一巡すると、終了フラグをセットすることを特徴とする請求項１または２に記載の半導体故障検出装置。
【請求項５】
前記第１のデータは、前記テストデータが第１の論理値を有し、前記テストデータを除くデータが第２の論理値を有するデータであることを特徴とする請求項１または２に記載の半導体故障検出装置。
【請求項６】
前記半導体メモリに不良ビットが検出されたことおよび前記ビット毎の検査がパスしたことを通知する通知回路を具備することを特徴とする請求項１または２に記載の半導体故障検出装置。
【請求項７】
少なくとも前記アドレス、前記テストビットの位置、前記比較結果を含むデータを出力する出力回路を具備することを特徴とする請求項１または２に記載の半導体故障検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体故障検出装置に関する。
【背景技術】
【０００２】
半導体メモリ、特にランダムアクセスメモリに対して高い信頼性が要求される半導体集積装置においては、電源投入時の初期診断で半導体メモリの不良個所の有無をビット毎に検査することが要求されている。
【０００３】
従来、この種の検査はＣＰＵによりソフトウェアで行われていた。即ち、ＣＰＵは半導体メモリのテストビットにデータを書き込み、テストビットに記憶されているデータを読み出し、書き込みデータと読み出しデータとを比較するという作業をビット毎に行っていた。
【０００４】
そのため、検査に多大な時間を要するという問題がある。また、検査中は、ＣＰＵがその他の処理を行うことができないため、半導体集積装置の起動時間が長くなる問題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２４５５５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
短時間でビット毎のテストが行える半導体故障検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施形態によれば、半導体故障検出装置は、半導体メモリの不良個所の有無をビット毎に検査する半導体故障検出装置であって、前記半導体メモリ内のテストビットを含み、所定のビット数を有するメモリセルを指定するアドレスを生成するアドレス生成回路と、前記テストビットに書き込まれるテストデータを含み、前記アドレスで指定されるメモリセルに書き込まれる第１のデータを生成するデータ生成回路と、クロックの１サイクル目に前記アドレスで指定されたメモリセルに前記第１のデータの書き込みを指示し、前記クロックの２サイクル目に前記アドレスで指定されたメモリセルから記憶されている第２のデータの読み出しを指示する制御信号生成回路と、前記第１のデータと前記第２のデータとを比較し、比較結果を出力する比較回路と、を具備する。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る半導体故障検出装置を含む半導体集積装置示すブロック図。
【図２】実施形態１に係る半導体故障検出装置を示すブロック図。
【図３】実施形態１に係る半導体故障検出装置の要部を示すブロック図。
【図４】実施形態１に係る半導体故障検出装置の動作を示すタイミングチャート。
【図５】実施形態１に係る半導体故障検出装置の動作を示すフローチャート。
【図６】実施形態１に係る比較例の半導体集積装置示すブロック図。
【図７】実施形態１に係る半導体故障検出装置の別の動作を示すフローチャート。
【図８】実施形態２に係る半導体故障検出装置を含む半導体集積装置示すブロック図。
【図９】実施形態３に係る半導体故障検出装置を示すブロック図。
【発明を実施するための形態】
【０００９】
以下、実施形態について図面を参照しながら説明する。
【００１０】
（実施形態１）
本実施形態に係る半導体故障検出装置について図１および図２を用いて説明する。図１は本実施形態の半導体故障検出装置を含む半導体集積装置を示すブロック図である。図２は本実施形態の半導体故障検出装置を示すブロック図である。図３は半導体故障検出装置のデータ生成回路を示す詳細ブロック図である。
【００１１】
始めに、半導体故障検出装置を含む半導体集積装置の概要を説明する。
【００１２】
図１乃至図３に示すように、半導体集積装置１０は、各種の情報処理を行うＣＰＵ（Central Processing Unit）１１（情報処理装置）と、情報処理に必要な各種のデータ、プログラム等を格納する半導体メモリ１２とを有するＳＯＣ（System On Chip）である。半導体集積装置１０は、更にＣＰＵ１１と半導体メモリ１２との間に設けられた半導体故障検出装置１３を有している。
【００１３】
半導体故障検出装置１３は、半導体集積装置１０の電源投入時などに半導体メモリ１２の不良個所の有無をビット毎に検査するために設けられている。半導体メモリ１２は、例えばＳＲＡＭ(Static Random Access Memory)である。
【００１４】
半導体集積装置１０は、半導体メモリ１２のビット毎の検査がパスすると、通常の処理を行い、半導体メモリ１２に不良ビットが検出されると、例えばセーフモードに移行し救済措置を行う。
【００１５】
半導体集積装置１０において、ＣＰＵ１１は、バス１４を介して半導体メモリ１２とデータおよびコマントなどの情報をやり取りするので、ＣＰＵ１１による半導体メモリ１２へのデータの書き込みおよび読み出しは、基本的にソフトウェアにより制御されている。具体的には、ＣＰＵ１１は、以下の様にして半導体メモリ１２にデータの書き込みおよび半導体メモリ１２からデータの読み出しを行う。
【００１６】
ＣＰＵ１１は、半導体メモリ１２を活性にするためのチップイネーブル信号ＣＥ１を半導体メモリ１２に送出する。ＣＰＵ１１は、半導体メモリ１２にデータを書き込む場合、書き込むメモリセルを指定するためのアドレスＡＤ１、指定したメモリセルに書き込むデータＷＤ１、書き込みコマンドＷＣ１などを送出する。
【００１７】
ＣＰＵ１１は、半導体メモリ１２からデータを読み出す場合、読み出すメモリセルを指定するためのアドレスＡＤ１、読み出しコマンドＲＣ１などを送出し、指定したメモリセルから読み出されたデータＲＤ１を受け取る。
【００１８】
デコーダ１５はチップイネーブル信号、アドレス、書き込み／読み出しコマンド、書き込みデータ等を受け取り、半導体メモリ１２の動作を制御する制御信号を生成するために設けられている。
【００１９】
一方、半導体集積装置１０において、半導体故障検出装置１３は、ＣＰＵ１１とは無関係に半導体メモリ１２とデータおよびコマンドなどを直接やり取りすることができる。半導体故障検出装置１３は、ハードウェアだけで半導体メモリ１２のビット毎の検査が行えるように構成されている。
【００２０】
半導体故障検出装置１３は、アドレス生成回路１６、データ生成回路１７、制御信号生成回路１８、比較回路１９、選択回路２０、およびテストイネーブル回路２１を有している。
【００２１】
アドレス生成回路１６は、半導体メモリ１２内のテストビットを含み、所定のビット数を有するメモリセルを指定するアドレスＡＤ２を生成する。メモリセルのビット数は、例えば３２ビット（１ワード）である。即ち、テストビットは１ワードのうちのいずれかのビットである。アドレス生成回路１６は、アドレスＡＤ２の生成に先立ってチップイネーブル信号ＣＥ２を生成する。
【００２２】
データ生成回路１７は、テストビットに書き込まれるテストデータを含み、アドレスで指定されたメモリセルに書き込まれる第１のデータＷＤ２を生成する。第１のデータＷＤ２は、ライトデータＷＤ２とも記す。
【００２３】
制御信号生成回路１８は、アドレスで指定されたメモリセルに第１のデータＷＤ２の書き込みを指示し、アドレスで指定されたメモリセルから記憶されている第２のデータＲＤ２の読み出しを指示する。具体的には、制御信号生成回路１８は、半導体メモリ１２にライトコマンドＷＣ２およびリードコマンドＲＣ２を送出する。第２のデータＲＤ２は、リードデータＲＤ２とも記す。
【００２４】
比較回路１９は、第１のデータＷＤ２と第２のデータＲＤ２とを比較し、比較結果を出力する。具体的には、比較回路１９は、第１のデータＷＤ２と第２のデータＲＤ２が一致しないときに、エラーフラグＥＲＦを論理値１にセットする。
【００２５】
選択回路２０は複数のセレクタ２０ａ乃至２０ｅを有し、ＣＰＵ１１が半導体メモリ１２にデータを書き込みおよびデータを読み出す通常動作を行うのか、半導体故障検出装置１３が半導体メモリ１２に対してビット毎の検査を実施するのかを選択するために設けられている。選択回路２０とは、セレクタ２０ａ乃至２０ｅの総称である。
【００２６】
セレクタ２０ａは、ＣＰＵ１１から送出されたチップイネーブル信号ＣＥ１またはアドレス生成回路１６から送出されたチップイネーブル信号ＣＥ２を選択し、選択されたチップイネーブル信号をデコーダ１５に送出する。
【００２７】
セレクタ２０ｂは、ＣＰＵ１１から送出されたアドレスＡＤ１またはアドレス生成回路１６から送出されたアドレスＡＤ２を選択し、選択されたアドレスをデコーダ１５に送出する。
【００２８】
セレクタ２０ｃは、ＣＰＵ１１から送出されたライトコマンドＷＣ１／リードコマンド／ＲＣ１または制御信号生成回路１８から送出されたライトコマンドＷＣ２／リードコマンドＲＣ２を選択し、選択されたライトコマンド／リードコマンドをデコーダ１５に送出する。
【００２９】
セレクタ２０ｄは、ＣＰＵ１１から送出されたライトデータＷＤ１またはデータ生成回路１７から送出されたライトデータＷＤ２を選択し、選択されたライトデータをデコーダ１５に送出する。
【００３０】
セレクタ２０ｅは、半導体メモリ１２から読み出されたリードデータＲＤ１、または半導体故障検出装置１３の検査結果を選択し、選択されたデータをＣＰＵ１１に送出する。半導体故障検出装置１３の検査結果とは、詳細は後述するが、アドレスＡＤ２、テストビットの位置、エラーフラグＥＲＦ、終了フラグＥＮＦ等を含むデータである。
【００３１】
選択回路２０により、チップイネーブル信号、アドレス、ライト／リードコマンドおよびライトデータが、ＣＰＵ１１が送出した信号または半導体故障検出装置１３が送出した信号に切り替わる。
【００３２】
選択回路２０がＣＰＵ１１から送出されたチップイネーブル信号ＣＥ１、アドレスＡＤ１、ライトコマンドＷＣ１／リードコマンドＲＣ１およびライトデータＷＤ１を選択すると、ＣＰＵ１１は半導体メモリ１２にデータを書き込み、半導体メモリ１２からデータを読み出す通常動作を行う。
【００３３】
選択回路２０が半導体故障検出装置１３から送出されたチップイネーブル信号ＣＥ２、アドレス信号ＡＤ２、ライトコマンドＷＣ２／リードコマンドＲＣ２およびライトデータＷＤ２を選択すると、半導体故障検出装置１３は半導体メモリ１２に対してビット毎検査を行う。
【００３４】
テストイネーフル回路２１は、半導体集積装置１０の起動時に半導体メモリ１２のテストコントロールレジスタから読み出されるテストスタート信号を検出すると、テストイネーブル信号ＴＥを論理値１にセットする。
【００３５】
テストイネーフル回路２１は、選択回路２０ａ乃至選択回路２０ｅのそれぞれにテストイネーブル信号ＴＥを送出する。これにより、選択回路２０が半導体故障検出装置１３から送出されたチップイネーブル信号ＣＥ２、アドレスＡＤ２、ライトコマンドＷＣ２およびライトデータＷＤ２を選択する。
【００３６】
一方、テストイネーブル回路２１は、テストストップ信号を検出するとテストイネーブル信号ＴＥを論理値０にリセットする。これにより、選択回路２０がＣＰＵ１１から送出されたチップイネーブル信号ＣＥ１、アドレスＡＤ１、ライトコマンドＷＣ１／リードコマンドＲＣ１およびライトデータＲＤ１を選択する。
【００３７】
半導体メモリ１２には、ビット毎の検査を行うための各種の情報が予め格納されている。半導体メモリ１２には、例えばテストコントロール情報を格納するレジスタ、テスト開始アドレスを格納するレジスタ、テストサイズ（ビット毎の検査を行うメモリセルの総数）を格納するレジスタなどが設けられている。
【００３８】
テストコントロール情報のレジスタには、例えばテストスタート、テスタパターン選択、テストパターン等の情報が格納されている。
【００３９】
次に、半導体故障検出装置１３の詳細について説明する。
【００４０】
半導体故障検出装置１３は、半導体集積装置１０のシステムクロックに同期して半導体メモリ１２のビット毎検査を行う。
【００４１】
図２および図３に示すように、アドレス生成回路１６は、レジスタ、カウンタ、ラッチ（図示せず）などを含んでいる。アドレス生成回路１６は、半導体メモリ１２からテスト開始アドレスとテストサイズを受け取り、レジスタに格納する。アドレス生成回路１６は、システムクロックに同期して半導体メモリ１２内のテストビットを含むメモリセルを指定するアドレスＡＤ２を生成し、セレクタ２０ｂに送出する。
【００４２】
アドレス生成回路１６は、テスト開始アドレスをアドレスＡＤ２の初期値に設定した後、システムクロックの２サイクル毎に、アドレスＡＤ２をインクリメントする。
【００４３】
同時に、アドレス生成回路１６は、テストレスト（ビット毎の検査を行うメモリセルの残数）を出力する。
【００４４】
アドレス生成回路１６は、テストサイズをテストレストの初期値に設定し、システムクロックの２サイクル毎に、テストレストをデクリメントする。
【００４５】
テストレストは、後述するように、ビット毎の検査でエラーが発生したときにエラービットを含むワードの位置（アドレスＡＤ２）を特定するために用いられる。
【００４６】
アドレス生成回路１６は、半導体メモリ１２を活性にするためのチップイネーブル信号ＣＥ２を生成し、セレクタ２０ａに送出する。
【００４７】
データ生成回路１７は、第１のデータＷＤ２として特定のパターンを有するデータおよび任意のパターンを有するデータを生成するために、シフトレジスタ１７ａ、反転回路１７ｂ、セレクタ１７ｃ、１７ｄ、１７ｅおよびデコーダ１７ｆなどを有している。
【００４８】
シフトレジスタ１７ａは、特定のパターンを有するデータＷＤ２ａを生成する。反転回路１７ｂは、データＷＤ２ａを反転させたデータＷＤ２ｂを生成する。セレクタ１７ｃは、パターン選択信号に応じて、データＷＤ２ａまたはデータＷＤ２ｂを選択する。
【００４９】
セレクタ１７ｄは、パターン選択信号に応じて、セレクタ１７ｃが選択したデータまたは任意のデータＷＤ２ｃを選択する。セレクタ１７ｄが選択したデータが、第１のデータＷＤ２である。
【００５０】
セレクタ１７ｅは、第１のデータＷＤ２が特定のパターンを有するデータＷＤ２ａ、ＷＤ２ｂのとき、終了フラグＥＮＦを検出するために設けられている。同様に、デコーダ１７ｆは、テストビットの位置を検出するために設けられている。
【００５１】
シフトレジスタ１７ａは、例えば３２ビットのシフトレジスタである。シフトレジスタ１７ａの最下位のビットにエンドフラグＥＮＦが割り当てられている。
【００５２】
シフトレジスタ１７ａの初期値は、例えば（１００・・・００）、即ち最上位ビットが論理値１であり、その他のビットは論理値０である。以後、論理値１、論理値０をそれぞれ単に１、０と記す。
【００５３】
シフトレジスタ１７ａは、テストイネーブル信号ＴＥを受けると、システムクロックの２サイクル毎に、各ビットの論理値を上位ビットから隣接する下位ビットに順次シフトする。シフトレジスタ１７ａの最下位ビット（エンドフラグＥＮＦ）は、シフトレジスタ１７ａの最上位ビットにシフトする。
【００５４】
具体的には、シフトレジスタ１７ａは、（１００・・・００）→（０１０・・・００）→・・・→（０００・・・１０）→（０００・・・０１）と順次シフトする。３２回シフト（一巡）すると、エンドフラグＥＮＦが１になり、１ワード分のテストデータの生成が終了したことが示される。
【００５５】
即ち、データＷＤ２ａにおいて、３２ビット（１ワード）のうちいずれかのビットであるテストビットのみが１であり、その他のビットはすべて０である。このようなテストデータはワンホットデータと呼ばれている。
【００５６】
従って、データＷＤ２ａを反転させたデータＷＤ２ｂは、３２ビット（１ワード）のうちいずれかのビットであるテストビットのみが０であり、その他のビットはすべて１である。このようなテストデータはワンクールデータと呼ばれている。
【００５７】
反転されるビット位置を順次変化させながら、１ビットの状態のみが他のビットの状態に対して反転されたワンホットデータを半導体メモリ１２のデータ入力へ順次与えることにより、メモリに接続される各１ビット分の配線の状態のみを他のビットの配線の状態と順次異ならしめることができる。
【００５８】
ワンホットデータを用いることにより、隣り合うビット（偶数と奇数のビット）の干渉による故障を検出することができる。ワンクールデータを用いても、同様の故障を検出することができる。
【００５９】
セレクタ１７ｅは、セレクタ１７ｃがデータＷＤ２ａまたはデータＷＤ２ｂのいずれを選択しても、データＷＤ２ａに等しいデータＷＤ２ｄを出力するように構成されている。
【００６０】
従って、セレクタ１７ｃから出力されたデータがワンホットデータ（ＷＤ２ａ）およびワンクールデータ（ＷＤ２ｂ）のいずれであっても、セレクタ１７ｅから出力されるデータＷＤ２ｄの最下位ビット（ＬＳＢ：Least Significant Bit）であるエンドフラグＥＮＦの初期値は０になる。１ワード分のデータＷＤ２ａの生成が終了すると、エンドフラグＥＮＦは１にセットされる。
【００６１】
デコーダ１７ｆは、テストビットの位置を検出するために３２ビットのデータＷＤ２ｄを５ビットのデータにデコードする。アドレスＡＤ２が３２ビットのとき、テストビットの位置は３２（２の５乗）通りなので、５ビットで表すことができる。デコーダ１７ｆは、例えばロジック回路で構成されるロジックデコーダである。
【００６２】
アドレスＡＤ２が３２ビットのとき、第１のデータＷＤ２はWD2[31:0]と表され、エンドフラグＥＮＦはWD2[0]と表され、エラービットの位置はBit Pos[4:0]と表される。
【００６３】
一方、セレクタ１７ｄが、パターン選択信号に応じて任意のデータＷＤ２ｃを選択する場合、ＣＰＵ１１は以下の動作を実行する。
【００６４】
（１）ＣＰＵ１１は任意テストパターンをテストコントロールレジスタの<Test Pattern>に設定する。任意テストパターンがデータＷＤ２ｃである。
【００６５】
（２）任意テストパターンを用いたビット毎検査において、エラーフラグＥＲＦが検出されると、ＣＰＵ１１に割り込みが発生する。エラーが発生すると、割り込み回路２２のテストストップ信号が１になり、テストイネーブル回路２１のテストイネーブル信号ＴＥが０になり、自動的にビット毎検査モードから通常動作モードに切り替わる。
【００６６】
（３）ＣＰＵ１１は、通常動作モードで、エラーが発生したアドレスのデータを読み込み、読み込んだデータと任意テストパターンとを比較することにより、エラービットの位置を確認することができる。
【００６７】
なお、レジスタ１７ａ、セレクタ１７ｃ、１７ｅおよびデコーダ１７ｆは、第１のデータＷＤ２が特定のパターンを有するデータＷＤ２ａ、ＷＤ２ｂでも、任意のパターンを有するデータＷＤ２ｃでも、常時動作している。
【００６８】
データ生成回路１７は、テストイネーブル信号ＴＥが１になると、第１のデータＷＤ２の生成を開始し、テストイネーブル信号ＴＥが０になると第１のデータＷＤ２の生成を停止するように構成されている。
【００６９】
制御信号生成回路１８は、Ｄ型フリップフロップを有している。Ｄ型フリップフロップは、Ｃ（Ｃｌｏｃｋ）端子の立ち上がりエッジで、Ｄ入力の値がＱ出力として保持される。
【００７０】
制御信号生成回路１８は、システムクロックの１サイクル目の立ち上がりエッジでライトコマンドＷＣ２を生成し、２サイクル目の立ち上がりエッジでリードコマンドＲＣ２を生成する。
【００７１】
比較回路１９は、コンパレータ１９ａとＤ型フリップフロップ１９ｂを有している。コンパレータ１９ａの第１の入力端子には、Ｄ型フリップフロップ１９ｂを介してデータ生成回路１７により生成された第１のデータＷＤ２が入力される。コンパレータ１９ａの第２の入力端子には、半導体メモリ１２中のアドレスＡＤ２で指定されたメモリセルから読み出された第２のデータＲＤ２が入力される。
【００７２】
Ｄ型フリップフロップ１９ｂは、第１のデータＷＤ２と第２のデータＲＤ２のタイミングを調整するために設けられている。Ｄ型フリップフロップ１９ｂは、システムクロックの立ち上がりエッジで第１のデータＷＤ２をラッチする。
【００７３】
比較回路１９は、第１のデータＷＤ２と第２のデータＲＤ２を比較し、第１のデータＷＤ２と第２のデータＲＤ２が不一致のとき、エラーフラグＥＲＦを１にセットする。
【００７４】
テストイネーブル回路２１は、ＡＮＤ回路を有している。ＡＮＤ回路の第１の入力端子にテストスタート信号が入力され、第２の入力端子にテストストップ信号を反転した信号が入力される。ＡＮＤ回路は、両者の論理積をテストイネーブル信号ＴＥとして出力する。テストスタート信号、テストストップ信号の初期値は０なので、テストイネーブル信号ＴＥは０になっている。
【００７５】
半導体集積装置１０の電源投入時に、ＣＰＵ１１がテストコントロールレジスタのテストスタートを１に設定すると、テストイネーブル信号ＴＥが１になる。これにより、選択回路２０が切り替わり、半導体集積装置１０は半導体故障検出装置１３によるビット毎の検査モードになる。
【００７６】
ビット毎の検査が終了すると、テストストップ信号が１になるので、テストイネーブル信号ＴＥが０になる。これにより、選択回路２０が切り替わり、半導体集積装置１０は通常の動作モードになる。
【００７７】
割り込み回路（通知回路）２２は、半導体メモリ１２に不良ビットが検出されたとき、およびビット毎の検査がパスしたときに、ＣＰＵ１１に割り込み信号を送出するために設けられている。
【００７８】
割り込みにより、ＣＰＵ１１は検査結果を入手する。ＣＰＵ１１は検査結果を分析することにより、不良ビットが検出されたのか、ビット毎の検査がパスしたのかを知ることができる。不良ビットが検出されたとき、不良ビットを含むメモリセルのアドレスおよび不良ビットの位置を知ることができる。
【００７９】
また、割り込み信号は、テストイネーブル信号ＴＥをリセットし、半導体集積装置１０を通常動作モードに戻すためのテストストップ信号として用いられる。
【００８０】
割り込み回路２２は、例えばＯＲ回路２２ａ、ＡＮＤ回路２２ｂ、多入力ＮＯＲ回路２２ｃを有している。多入力ＮＯＲ回路２２ｃには、テストレスト（残数）が入力される。多入力ＮＯＲ回路２２ｃは、テストレスト（残数）がゼロでないとき、即ちビット毎の検査が進行中は０を出力し、テストレスト（残数）がゼロ、即ちビット毎の検査がパスしたときに１を出力する。
【００８１】
ＡＮＤ回路２２ｂには、多入力ＮＯＲ回路２２ｃの出力と、エンドフラグＥＮＦが入力される。ＡＮＤ回路２２ｂは、テストレスト（残数）がゼロで且つ第１のデータＷＤ２の生成が終了したときに１を出力する。
【００８２】
ＯＲ回路２２ａは、エラーフラグＥＲＦが１またはＡＮＤ回路２２ｂの出力が１の時に、割り込み信号を発生する。
【００８３】
フリップフロップ２３、２４は、エンドフラグＥＮＦおよびビット位置情報を遅延させて、書き込みのタイミングに合わせるために設けられている。フリップフロップ２３、２４は、Ｄ型フリップフロップである。
【００８４】
セレクタ２０ｅは、テストイネーブル信号ＴＥが０のときはＣＰＵ１１が読み出したリードデータＲＤ１を選択し、テストイネーブル信号ＴＥが１のときはテストデータ（検査結果）ＴＤを選択する。テストデータＴＤは、テストレスト、ビット位置、エンドフラグＥＮＦ、エラーフラグＥＲＦなどをまとめたものである。セレクタ２０ｅは、テストデータＴＤを出力する出力回路でもある。
【００８５】
テストデータＴＤのビット数は、半導体メモリから読みだされるデータＲＤ１、ＲＤ２と同じにすることが望ましい。リードデータＲＤ１をRD1[N:0]と表したとき、テストデータＴＤは、TD[N:0]=Test Rest[X:0]+Bit Pos[Y:0]+ENF+ERF]と纏めて表される。
【００８６】
ここで、第１のデータＷＤ２がワンホットデータ（ＷＤ２ａ）およびＮ＝３１のとき、Ｙ＝４である。Ｘはテストサイズ（総数）に応じて定まるビット数である。
【００８７】
セレクタ２０ｅは、選択された情報（ＲＤ１またはＴＤ）を、バス１４を経由してＣＰＵ１１に送出する。
【００８８】
ビット毎の検査でエラービットを含むワードのアドレスはテスト開始アドレス＋テストサイズ（総数）−テストレスト（残数）であり、ＣＰＵ１１にて知ることができる。
【００８９】
次に、半導体故障検出装置１３の書き込み／読み出し動作について説明する。図４は第１のデータＷＤ２の書き込みおよび第２のデータＲＤ２の読み出し動作を示すタイミングチャートである。
【００９０】
図４に示すように、チップイネーブル信号ＣＥ２がＨｉｇｈのときに、書き込み／読み出し動作が行われる。
【００９１】
ライト／リード信号が１つ目のクロックの立ち上がりエッジでＨｉｇｈになると（ライトコマンドＷＣ２）、第１のデータＷＤ２がアドレスＡＤ２で指定されたメモリセルに書き込まれる。
【００９２】
ライト／リード信号が２つ目のクロックの立ち上がりエッジでＬｏｗになると（リードコマンドＲＣ２）、アドレスＡＤ２で指定されたメモリセルから記憶されている第２のデータＲＤ２が読み出される。読み出された第２のデータＲＤ２は、次の書き込みサイクルで出力される。
【００９３】
例えば、第１のデータＷＤ２が（１００・・・００）のとき、第２のデータＲＤ２の期待値は、第１のデータＷＤ２と同じ（１００・・・００）である。
【００９４】
即ち、ライトコマンドＷＣ２とリードコマンドＲＣ２（ライトとリードのイネープル信号）は交互に出力され、クロックの１サイクル目でデータが書き込まれ、２サイクル目でデータが読み出される。クロックの２サイクルの期間で１ビットを検査することができる。
【００９５】
次に、半導体故障検出装置１３の動作について説明する。図５はビット毎の検査手順を示すフローチャートである。
【００９６】
図５に示すように、始めに半導体メモリ１２のビット毎の検査を行うか否かが判定される（ステップＳ１０）。ビット毎の検査を行わない場合（ステップＳ１０のＮｏ）は、半導体集積装置１０は通常動作を行う（ステップＳ１１）。半導体故障検出装置１３は動作しない。
【００９７】
ビット毎の検査を行なう場合（ステップＳ１０のＹｅｓ）は、テスト準備が行われる。テスト準備では、テスト開始アドレス、テストサイズ（総数）、テストパターン等が設定される（ステップＳ１２）。
【００９８】
次に、テストイネーブル信号ＴＥが１になり、選択回路２０により上述した各種の信号が切り替わる（ステップＳ１３）。
【００９９】
次に、図４に示すタイミングチャートに従って、ビット毎の検査が行われる（ステップＳ１４）。１つのビットテストがパスすると（ステップＳ１４のＹｅｓ）、１ワードのビット毎検査が終了したか否かが判定される（ステップＳ１５）。
【０１００】
１ワードのビット毎検査が終了していなければ（ステップＳ１５のＮｏ）、ステップＳ１４に戻る。ステップＳ１４、Ｓ１５は、１ワードのビット毎の検査が終了するまで繰り返される。
【０１０１】
１ワードのビット毎検査が終了すると（ステップＳ１５のＹｅｓ）、エンドフラグＥＮＦがセットされる（ステップＳ１６）。
【０１０２】
次に、１ブロック（テストサイズ（総数）分）のビット毎検査が終了したか否かが判定される（ステップＳ１７）。１ブロックのビット毎検査が終了していなければ（ステップＳ１７のＮｏ）、ステップＳ１４に戻る。ステップＳ１４、Ｓ１５、Ｓ１６が、１ブロックのビット毎検査が終了するまで繰り返される。
【０１０３】
１ブロックのビット毎検査が終了すると（ステップＳ１７のＹｅｓ）、テストレスト（残数）が０になり、かつエンドフラグＥＮＦが１にセットされ（ステップＳ１８）、ＣＰＵ１１への割り込みが発生する（ステップＳ１９）
次に、割り込みにより、半導体メモリ１２内の１ブロックのビット毎検査がパスしたことがＣＰＵ１１に通知される。ＣＰＵ１１は、次の処理を開始することができる（ステップＳ２０）。
【０１０４】
一方、ビットテストがパスしない場合は（ステップＳ１４のＮｏ）、ビット毎検査が中断される（ステップＳ２１）。テストレスト（残数）により不良ビットを含むメモリセルのアドレス、不良ビットの位置が確定され、エラーフラグＥＲＦがセットされ（ステップＳ２２）、ステップＳ１９に行く。割り込みにより、半導体メモリ１２に不良ビットが生じたことがＣＰＵ１１に通知される。
【０１０５】
図６は比較例の半導体集積装置を示す図である。比較例とは、図２に示す半導体故障検出装置１３を有しない半導体集積装置のことである。
【０１０６】
図６に示すように、比較例の半導体集積装置３０では、ビット毎の検査を行う場合、ＣＰＵ１１がバス１４を経由してアドレス、ライトコマント、ライトデータを送出して、半導体メモリ１２に第１のデータを書き込み、アドレス、リードコマントを送出して、半導体メモリ１２から第２のデータを読み出し、第１のデータと第２のデータを比較する。
【０１０７】
そのため、１ビットの検査に、クロックの２サイクルより長い期間が必要である。ビット毎の検査に要する時間が長くなる。更に、検査中は、ＣＰＵ１１がその他の処理を行うことができないため、半導体集積装置３０の起動時間が長くなる。
【０１０８】
一方、本実施例の半導体集積装置１０では、半導体故障検出装置１３は、１ビットの検査をクロックの２サイクルで行うことができる。ビット毎の検査を短時間で行うことができる。更に、検査中は、ＣＰＵ１１はその他の処理を行うことができるので、半導体集積装置１０の起動時間が短くて済む。
【０１０９】
以上説明したように、本実施形態の半導体故障検出装置１３は、アドレス生成回路１６、データ生成回路１７、制御信号生成回路１８、比較回路１９、選択回路２０、およびテストイネーブル回路２１を有し、ハードウェアのみで半導体メモリ１２のビット毎の検査が行えるように構成されている。
【０１１０】
半導体故障検出装置１３は、クロックの１サイクル目でデータを書き込み、２サイクル目でデータを読み出し、次のテストビットへのデータ書き込みが行われる３サイクル目で書き込みデータと読み出しデータを比較する。
【０１１１】
その結果、クロックの２サイクルの期間で１ビットの検査を行うことができる。従って、短時間でビット毎の検査が行える半導体故障検出装置が得られる。
【０１１２】
ここでは、半導体故障検出装置１３のクロックが半導体集積装置１０のシステムクロックである場合について説明したが、特に限定されない。半導体故障検出装置１３のクロックは、半導体故障検出装置１３および半導体メモリ１２が応答できるクロックであればよいので、システムクロックより高速のクロックを用いることも可能である。更に、短時間でビット毎の検査が行える利点が得られる。
【０１１３】
ビット毎検査を１ワード（３２ビット）単位で行う場合について説明したが、ビット毎検査を行うワード単位は特に限定されない。ビット毎検査をハーフワード（１６ビット）単位または２ワード（６４ビット）単位で行っても構わない。
【０１１４】
１ブロックのビット検査を行う場合について説明したが、ブロックが複数あるときは、ブロック毎にステップＳ１４からステップＳ２０を繰り返せばよい。図７は複数のブロックに対してビット検査を行う場合を示すフローチャートである。
【０１１５】
図７に示すように、１ブロックのビット毎検査が終了すると、全てのブロックの検査が終了したか否かがチェックされ（ステップＳ２１）、終了していなければ（ステップＳ２１のＮｏ）ステップＳ１４に行き、全てのブロックの検査が終了するまでステップＳ１４からステップＳ２０が繰り返される。
【０１１６】
（実施形態２）
本実施形態に係る半導体故障検出装置について図８を用いて説明する。図８は本実施形態の半導体故障検出装置を含む半導体集積装置を示すブロック図である。
【０１１７】
本実施形態において、上記実施形態１と同一の構成部分には同一符号を付してその部分の説明は省略し、異なる部分について説明する。本実施形態が実施形態１と異なる点は、半導体集積装置が複数の半導体メモリを有し、半導体故障検出装置が各半導体メモリに対してビット毎の検査を行えるようにしたことにある。
【０１１８】
即ち、図８に示すように、本実施形態の半導体集積装置６０は、ＣＰＵ１１と、複数の半導体メモリ、ここでは３つの半導体メモリ６１ａ、６１ｂ、６１ｃを有している。半導体集積装置６０は、半導体メモリ以外の内部回路６２を有していてもよい。更に、半導体集積装置６０は、半導体故障検出装置６３と、セレクタ６４ａ、６４ｂ、６４ｃを有している。
【０１１９】
セレクタ６４ａは、半導体メモリ６１ａを、バス１４を介してＣＰＵ１１に接続するか、半導体故障検出装置６３に接続するかを選択するために設けられている。テストイネーブル信号ＴＥ１は、セレクタ６４ａの切換えを制御する信号である。
【０１２０】
セレクタ６４ａは、テストイネーブル信号ＴＥ１が０のときバス１４を介して半導体メモリ６１ａをＣＰＵ１１に接続する。ＣＰＵ１１はバス１４を介して半導体メモリ６１ａに対してデータの書き込みおよび読み出しを行うことができる。
【０１２１】
セレクタ６４ａは、テストイネーブル信号ＴＥ１が１のとき半導体メモリ６１ａを半導体故障検出装置６３に接続する。半導体故障検出装置６３は、半導体メモリ６１ａに対してビット毎の検査を行うことができる。
【０１２２】
半導体故障検出装置６３は、基本的には図２に示す半導体故障検出装置１３からセレクタ２０ａ乃至２０ｅを除いた半導体故障検出装置である。セレクタ６４ａがセレクタ２０ａ乃至２０ｅと同じ機能を果たしている。
【０１２３】
半導体故障検出装置６３は、半導体メモリ６１ａのビット毎の検査を開始するにあたって、半導体メモリ６１ａのレジスタに格納されているテストコントロール、テスト開始アドレス、テストサイズ（総数）などの各種の情報を受け取る。
【０１２４】
半導体故障検出装置６３は、セレクタ６４ａを介して半導体メモリ６１ａに、チップイネーブル信号ＣＥ２、アドレスＡＤ２、リードコマンドＲＣ２／ライトコマンドＲＣ２、第１のデータＷＤ２を送出し、セレクタ６４ａを介して半導体メモリ６１ａから第２のデータＲＤ２を受け取る。
【０１２５】
セレクタ６４ｂと半導体メモリ６１ｂ、およびセレクタ６４ｃと半導体メモリ６１ｃの関係も、それぞれセレクタ６４ａと半導体メモリ６１ａの関係と同様であり、その説明は省略する。
【０１２６】
ＣＰＵ１１は起動時に、例えばテストイネーブル信号ＴＥ１＝１、ＴＥ２＝ＴＥ３＝０にセットする。半導体故障検出装置６３は、半導体メモリ６１ａのビット毎の検査を実行する。
【０１２７】
ＣＰＵ１１は半導体メモリ６１ａのビット毎の検査がパスすると、テストイネーブル信号ＴＥ２＝１、ＴＥ１＝ＴＥ３＝０にセットする。半導体故障検出装置６３は、半導体メモリ６１ｂのビット毎の検査を実行する。同様に、ＣＰＵ１１は半導体メモリ６１ｂのビット毎の検査がパスすると、テストイネーブル信号ＴＥ３＝１、ＴＥ１＝ＴＥ２＝０にセットする。半導体故障検出装置６３は、半導体メモリ６１ｃのビット毎の検査を実行する。
【０１２８】
これにより、一つの半導体故障検出装置６３で、半導体集積装置６０に含まれる複数の半導体メモリ６１ａ、６１ｂ、６１ｃのビット毎の検査をシーケンシャルに実施することが可能である。ビット毎の検査を施す半導体メモリの数には、特に制限はない。半導体メモリの数と同じ数だけセレクタを設ければよい。
【０１２９】
ＣＰＵ１１は、ビット毎検査中の半導体メモリを除くすべての半導体メモリにアクセスできるので、その他の処理を迅速におこなうことが可能である。
【０１３０】
以上説明したように、本実施形態の半導体故障検出装置６３は、外付けされる複数のセレクタ６４ａ乃至６４ｃを介して、複数の半導体メモリ６１ａ乃至６１ｃのビット毎の検査をシーケンシャルに行うことができる。
【０１３１】
半導体集積装置６０は、半導体故障検出装置６３を一つ有していればよいので、半導体故障検出装置の数が削減される。
【０１３２】
（実施形態３）
本実施形態に係る半導体故障検出装置について図９を用いて説明する。図９は本実施形態の半導体故障検出装置を示すブロック図である。
【０１３３】
本実施形態において、上記実施形態１と同一の構成部分には同一符号を付してその部分の説明は省略し、異なる部分について説明する。本実施形態が実施形態１と異なる点は、半導体故障検出装置に半導体メモリが直接接続され、半導体故障検出装置がダイレクトにビット毎の検査を行なえるようにしたことにある。
【０１３４】
即ち、図９に示すように、本実施形態の半導体故障検出装置７０は、ビット毎の検査を実施するか否かを選択するためのセレクタを有さず、代わりにクロック発生回路７１を有している点を除いて、図１に示す半導体故障検出装置１３と同じ構成および機能を有している。
【０１３５】
半導体メモリ１２は、例えばコネクタ７２を介して半導体故障検出装置７０に着脱可能に接続される。半導体故障検出装置７０は、クロック発生回路７１からのクロックに同期して、半導体メモリ１２のビット毎の検査を行う。
【０１３６】
半導体メモリ１２のビット毎の検査がパスすると、半導体メモリ１２は半導体故障検出装置７０から取り外される。別の半導体メモリがコネクタ７２を介して半導体故障検出装置７０に接続されると、半導体故障検出装置７０はビット毎の検査を継続することができる。
【０１３７】
以上説明したように、本実施形態の半導体故障検出装置７０は、直接接続された半導体メモリ１２に対してビット毎の検査を行うように構成されている。半導体故障検出装置７０は、パッケージングされた単体の半導体メモリの出荷検査などに用いることができる。
【０１３８】
以上、いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１３９】
なお、以下の付記に記載されているような構成が考えられる。  
（付記１）  情報処理装置と、
前記情報処理装置によってデータが読み書きされる半導体メモリと、
前記情報処理装置と前記半導体メモリとの間に設けられ、前記半導体メモリの不良個所の有無をビット毎に検査する半導体故障検出装置とを具備し、
前記半導体故障検出装置は、
前記半導体メモリ内のテストビットを含み、所定のビット数を有するメモリセルを指定するアドレスを生成するアドレス生成回路と、
前記テストビットに書き込まれるテストデータを含み、前記アドレスで指定されたメモリセルに書き込まれる第１のデータを生成するデータ生成回路と、
クロックの１サイクル目に前記アドレスで指定されたメモリセルに前記第１のデータの書き込みを指示し、前記クロックの２サイクル目に前記アドレスで指定されたメモリセルから記憶されている第２のデータの読み出しを指示する制御信号生成回路と、
前記第１のデータと前記第２のデータとを比較し、比較結果を出力する比較回路と、
前記ビット毎の検査を実施するか否かを選択する選択回路と、
を備える半導体集積装置。
【０１４０】
（付記２）  前記選択回路は、前記ビット毎の検査を実施するときは、前記アドレス生成回路、前記データ生成回路、前記制御信号生成回路を前記半導体メモリに電気的に接続し、前記ビット毎の検査を実施しないときは、情報処理装置を前記半導体メモリに電気的に接続する付記１に記載の半導体集積装置。
【符号の説明】
【０１４１】
１０、３０、６０  半導体集積装置
１１  ＣＰＵ
１２、６１ａ〜６１ｃ  半導体メモリ
１３、６３、７０  半導体故障検出装置
１４  バス
１５、１７ｆ  デコーダ
１６  アドレス生成回路
１７  データ生成回路
１７ａ  シフトレジスタ
１７ｂ  反転回路
１７ｃ〜１７ｅ、２０ａ〜２０ｅ、６４ａ〜６４ｃ  セレクタ
１８  制御信号生成回路
１９  比較回路
１９ａ  コンパレータ
１９ｂ、２３、２４  フリップフロップ
２１  テストイネーブル回路
２２  割り込み回路
２２ａ  ＯＲ回路
２２ｂ  ＡＮＤ回路
２２ｃ  多入力ＮＯＲ回路
６２  内部回路
７１  クロック発生回路
７２  コネクタ
【図１】
2017010273.tif 000003
【図２】
2017010273.tif 000004
【図３】
2017010273.tif 000005
【図４】
2017010273.tif 000006
【図５】
2017010273.tif 000007
【図６】
2017010273.tif 000008
【図７】
2017010273.tif 000009
【図８】
2017010273.tif 000010
【図９】
2017010273.tif 000011