以下に添付図面を参照して、実施形態にかかる半導体集積回路を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
第1の実施形態にかかる半導体集積回路100について説明する前に、基本の形態にかかる半導体集積回路1について図7を用いて説明する。図7は、半導体集積回路1が適用されたシステムSYSの構成を示す図である。
システムSYSは、例えば図7に示すように、システムボードSBとして実装される。システムボードSB上には、複数のチップCHIP1〜CHIP6が搭載される。チップCHIP1,CHIP2,CHIP4は、LSIチップであり、ロジック回路及びメモリが混載されている。チップCHIP3は、コントローラチップであり、システム論理が実装されシステムSYSを統括的に制御するコントローラCTRが搭載されている。チップCHIP5は、ロジックチップであり、ロジック回路が搭載されている。チップCHIP6は、メモリチップであり、メモリ(揮発性メモリ)が搭載されている。
半導体集積回路1は、例えば、車載システムなどの高信頼性を要求されるシステムSYSに適用される。システムSYSからの高信頼性の要求に応えるために、半導体集積回路1では、メモリ(揮発性メモリ)が搭載されるとともに、自己テスト(BIST:Built In Self Test)回路が組み込まれている。すなわち、半導体集積回路1の出荷前に自己テスト回路を用いてメモリの検査を行うことでメモリの良否判定を行う。これにより、テスト装置からテストパターンを供給してメモリの検査を行う場合に比べて効率的にメモリの検査を行うことができる。良否判定の結果に応じて得られた不良メモリセル(不良ビット)の情報は、コントローラチップCHIP3又は他のチップCHIP1,CHIP2,CHIP4〜CHIP6における不揮発性記憶回路におけるフューズ領域に不良管理情報(フェイルビットマップ情報)として格納される。これにより、コントローラCTRは、半導体集積回路1の出荷後におけるシステムSYSの動作中に、メモリセルにアクセスするためのコマンドに応じて、不良管理情報を参照する。そして、コントローラCTRは、不良管理情報に応じて、メモリにおける不良メモリセル(不良ビット)を避けながらメモリセルにアクセスするように制御する。
例えば、半導体集積回路機能1−1は、チップCHIP1における複数の回路ブロックBLK1〜BLK4のうち回路ブロックBLK1内に実装される。半導体集積回路機能1−1は、回路ブロックBLK1内のCPU2、複数のメモリカラー4−1〜4−6、及び自己テスト(BIST)回路3を含む。各メモリカラー4は、メモリを含む。
あるいは、例えば、半導体集積回路機能1−2は、チップCHIP1における回路ブロックBLK2内及び回路ブロックBLK2,BLK3間に実装される。半導体集積回路機能1−2は、回路ブロックBLK2内のCPU2及び複数のメモリカラー4−1〜4−3と、回路ブロックBLK2,BLK3間に配置された自己テスト(BIST)回路3とを含む。各メモリカラー4は、メモリを含む。
あるいは、例えば、半導体集積回路機能1−3は、複数のチップCHIP2,CHIP5,CHIP6に跨って実装される。半導体集積回路機能1−3は、チップCHIP5内のCPU2、チップCHIP6内の複数のメモリカラー4−1〜4−6、チップCHIP2内の自己テスト(BIST)回路3を含む。各メモリカラー4は、メモリを含む。
ここで、メモリは経年劣化することがあるので、半導体集積回路1の出荷後であってもメモリの良否判定を行うことが望まれる。半導体集積回路1では、半導体集積回路1の出荷後であってもメモリの良否判定を行うために、例えば図8に示すように構成されている。図8は、半導体集積回路1の構成を示す図である。
半導体集積回路1は、CPU2、自己テスト(BIST)回路3及び複数のメモリカラー4を有する。なお、半導体集積回路1は複数のメモリカラー4を有するが(図7参照)、図8では、自己テスト(BIST)回路3と1つのメモリカラー4とについて例示的に示している。
CPU2は、コントローラCTRから所定のコマンド・データを受け、所定のコマンド・データに応じた制御信号・データを生成してメモリカラー4へ供給する。
各メモリカラー4は、メモリ5、セレクタ7a〜7d、及び良否判定回路6を有する。メモリ5は、複数のメモリセルを有し、複数のメモリセルのうちアドレス信号で選択されたメモリセルにアクセスしてデータを記憶することができる。メモリ5は、セレクタ7aを介してアドレス信号がアドレス端子ADに入力され、セレクタ7d[0:n−1]を介してデータD[0:n−1]がデータ入力DIN[0:n−1]に入力され、セレクタ7bを介してラッチイネーブル信号がラッチイネーブル端子LEに入力され、セレクタ7cを介してチップイネーブル信号がチップイネーブル端子CEに入力され、クロック信号がクロック端子CKに入力される。メモリ5は、データD[0:n−1]がデータ出力DOUT[0:n−1]から出力される。すなわち、各メモリカラー4は、n個(nは2以上の整数)のメモリセルの検査を並行して行うことができるように構成されている。
なお、データ入力DIN、セレクタ7d、及びデータ出力DOUTは、それぞれ、入出力されるデータD[0:n−1]のデータ幅がnビットであることに対応してn個設けられている。
コントローラCTRは、図9に示すように、システム論理に従い、システムSYSの起動(Power−up)時における所定の期間にテストモード信号φTESTをアクティブレベルにし、システムSYSの動作(System Operation)中にテストモード信号φTESTをノンアクティブレベルに維持する。図9は、システムSYS及び半導体集積回路1の動作を示すシーケンス図である。
これに応じて、図8に示す各セレクタ7a〜7dは、コントローラCTRから供給されるテストモード信号φTESTがアクティブレベルのときに自己テスト回路3側の入力を選択する。テストモード信号φTESTがノンアクティブレベルのときにCPU2側の入力を選択する。すなわち、各セレクタ7a〜7dは、システムSYSの起動(Power−up)時における所定の期間に自己テスト回路3側の入力を選択してメモリ5側へ出力し、メモリ5のテスト動作(Memory BIST)が行われるようにする。各セレクタ7a〜7dは、システムSYSの動作(System Operation)中にCPU2側の入力を選択してメモリ5側へ出力し、システムSYSからの制御に従ったメモリ5へのアクセス動作が行われるようにする。
図8に示す良否判定回路6は、メモリ5のテスト動作に必要な各論理要素を含む。良否判定回路6は、良否判定の結果として、不良でない(Pass)又は不良である(Fail)を示す良否判定情報(不良フラグ)を出力する。出力された良否判定情報は、コントローラCTR等により不良管理情報(フェイルビットマップ情報)に反映され不揮発性記憶回路におけるフューズ領域に格納される。
自己テスト(BIST)回路3は、BIST制御回路31、データ生成回路32、アドレス生成回路33、制御入力生成回路34、及び期待値レジスタ(Expectation Register)35を有する。BIST制御回路31は、ステートマシンであり、自己テスト回路3の全体的な制御を行う。データ生成回路32は、メモリ5のデータ入力DINへ与えられるテストデータパターンDt[0:n−1]を生成する。アドレス生成回路33は、テストデータパターンDt[0:n−1]が与えられるメモリ5におけるメモリセルのアドレスを生成する。制御入力生成回路34は、テスト動作におけるメモリ5の読み書きを制御する制御信号を生成する。期待値レジスタ35は、データ生成回路32がメモリ5へテストデータパターンDt[0:n−1]を供給する際に、テストデータパターンDt[0:n−1]をデータ生成回路32から受けて保持する。期待値レジスタ35は、保持されたテストデータパターンDt[0:n−1]を期待値De[0:n−1]として良否判定回路6へ供給する。すなわち、期待値レジスタ35は、データ生成回路32からメモリ5へ供給されたテストデータパターンDt[0:n−1]と同じデータパターンを、テスト動作における正解のデータパターンを示す期待値De[0:n−1]として良否判定回路6へ供給する。
次に、良否判定回路6の内部構成について図10及び図11を用いて説明する。図10は、半導体集積回路1における良否判定回路6の内部構成を示す図である。図11は、キャプチャレジスタ62、フラグ生成回路64、及びフラグレジスタ65の構成を示す図である。
各メモリカラー4(図8参照)における良否判定回路6は、比較部61、キャプチャレジスタ62、累積部63、フラグ生成回路64、及びフラグレジスタ65を有する。
テストモード信号φTESTがアクティブレベルである期間に、自己テスト回路3は、チップイネーブル信号及びラッチイネーブル信号をそれぞれアクティブレベルにする。自己テスト回路3は、メモリ5におけるアドレス信号で選択されたn個のメモリセルにテストデータパターンDt[0:n−1]をデータ入力DIN[0:n−1]経由で書き込む。
比較部61は、メモリ5におけるアドレス信号で選択されたnビットのメモリ出力から読み出されたデータDr[0:n−1]をデータ出力DOUT[0:n−1]経由で受ける。比較部61は、期待値De[0:n−1]を期待値レジスタ35から受ける。比較部61は、読み出されたデータDr[0:n−1]と期待値De[0:n−1]とを比較し、比較結果CR[0:n−1]をキャプチャレジスタ62へ出力する。
比較部61は、図10に示すように、n個の排他的論理和演算子EXOR1[0:n−1]を有する。各排他的論理和演算子EXOR1は、読み出されたデータDrと期待値Deとが一致する場合に、不良なしを示すビット値「0」を比較結果CRとして出力する。各排他的論理和演算子EXOR1は、読み出されたデータDrと期待値Deとが一致しない場合に、不良ありを示すビット値「1」を比較結果CRとして出力する。
キャプチャレジスタ62は、キャプチャタイミング信号φCPに応じて、比較部61による比較結果CR[0:n−1]を保持する。制御入力生成回路34は、キャプチャレジスタ62により比較結果CR[0:n−1]を保持すべきタイミングでキャプチャタイミング信号φCPをアクティブレベルにしてキャプチャレジスタ62へ供給する。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に、比較部61による比較結果CR[0:n−1]を保持する。例えば、キャプチャレジスタ62は、図11に示すように、n個のレジスタRG[0:n−1]を有し、比較結果CR[0:n−1]における対応するビットを保持する。
図10に示す累積部63は、キャプチャレジスタ62に不良検出情報(不良ありを示すビット値「1」)が累積されるようにする。すなわち、テストモード信号φTESTがアクティブレベルである期間に、自己テスト回路3は、アドレス信号を初期アドレスにした状態で、「n個のメモリセルへのテストデータパターンDtの書き込み→読み出し→期待値との比較」の一連のサイクルのテスト動作を行う。そして、自己テスト回路3は、アドレス信号を最終アドレスまでカウントアップ又はカウントダウンしながら、「n個のメモリセルへのテストデータパターンDtの書き込み→読み出し→期待値との比較」のサイクルのテスト動作を繰り返し行う。このとき、nビットのそれぞれについて1回でも不良ありを示すビット値「1」が立った場合に、それ以降のサイクルのテスト動作においてもそのビットが引き続きビット値「1」を維持するようにする。
累積部63は、n個の論理和演算子OR1[0:n−1]及びnビット幅のフィードバックラインFL1[0:n−1]を有する。フィードバックラインFL1[0:n−1]は、レジスタRG[0:n−1]の出力を論理和演算子OR1[0:n−1]の入力へフィードバックする。論理和演算子OR1[0:n−1]は、フィードバックされたレジスタRG[0:n−1]の出力と排他的論理和演算子EXOR1[0:n−1]の出力との論理和を演算し、演算結果をレジスタRG[0:n−1]に入力する。これにより、累積部63は、n個のレジスタRG[0:n−1]のそれぞれにおいて不良ありを示すビット値「1」が累積されるようにする。
フラグ生成回路64は、初期アドレス〜最終アドレスまでのテスト動作が終了したら、キャプチャレジスタ62に保持された比較結果CR[0:n−1]から、良否判定の結果として不良でない(Pass)又は不良である(Fail)を示す良否判定情報(不良フラグ)を生成する。不良フラグは、1ビットのフラグであり、ビット値「0」であれば不良でない(Pass)を示し、ビット値「1」であれば不良である(Fail)を示す。
フラグ生成回路64は、図11に示すように、論理和演算子OR2,OR3、セレクタSL1、及びフィードバックラインFL2,FL3を有する。論理和演算子OR2は、n個のレジスタRG[0:n−1]の出力の論理和を演算し、演算結果を論理和演算子OR3へ出力する。フィードバックラインFL3は、フラグレジスタ65の出力を論理和演算子OR3の入力へフィードバックする。論理和演算子OR3は、論理和演算子OR2の出力とフィードバックされたフラグレジスタ65の出力との論理和を演算し、演算結果をセレクタSL1へ出力する。
フィードバックラインFL2は、フラグレジスタ65の出力をセレクタSL1の入力へフィードバックする。セレクタSL1は、テスト動作の終了を示す完了信号φCOMPに応じて、論理和演算子OR3の出力とフィードバックされたフラグレジスタ65の出力とを選択する。すなわち、セレクタSL1は、完了信号φCOMPがノンアクティブレベルである(テスト動作が完了していない)とき、フラグレジスタ65の出力を選択してフラグレジスタ65へ供給する。これにより、フラグレジスタ65に前回の良否判定情報(不良である(Fail)を示す不良フラグの値「1」)が累積されるようにする。セレクタSL1は、完了信号φCOMPがアクティブレベルである(テスト動作が完了している)とき、論理和演算子OR3の出力を選択してフラグレジスタ65へ供給する。これにより、フラグレジスタ65が今回のテスト動作の結果に応じた良否判定情報(不良フラグ)を保持するようになる。
このように、自己テスト回路3によるメモリ5の良否判定では、メモリ5における各メモリセルにテストデータパターンDtが書き込まれるので、システムSYSの起動(Power−up)時に行うことができるが、システムSYSの動作(System Operation)中に行うことが困難である。システムSYSの動作(System Operation)中では、メモリ5における各メモリセルに既にデータが書き込まれている可能性があり、テスト動作を行って各メモリセルにテストデータパターンDtを書き込んでしまうと既に書き込まれていたデータが書き換えられて失われてしまう可能性がある。
しかし、システムSYSの起動(Power−up)後におけるシステムSYSの動作(System Operation)の時間が長い場合、その間にメモリ5は経年劣化することがあるので、システムSYSの動作(System Operation)中であってもメモリ5の良否判定を行うことが望まれる。
そこで、第1の実施形態では、半導体集積回路100において、システムSYSの動作中におけるメモリ5にアクセスがない期間に、各メモリセルに既に書き込まれたデータに応じた関連データを用いてテスト動作を行い、その後に関連データに応じた元のデータを元のメモリセルに書き戻す。これにより、システムSYSの動作中に短時間で一部アドレスのテストを行い、データが書き換わらない状態で終了するようにし、システム動作中の自己テスト(ISST:In System Self Test)を可能にする。以下では、基本の形態と異なる部分を中心に説明する。
具体的には、半導体集積回路100は、自己テスト回路3及び複数のメモリカラー4(図8参照)に代えて、自己テスト(BIST)回路103及び複数のメモリカラー104を有する。なお、半導体集積回路100は複数のメモリカラー104を有するが、図1では、自己テスト(BIST)回路103と1つのメモリカラー104とについて例示的に示している。
各メモリカラー104は、良否判定回路6(図10参照)に代えて、良否判定回路106を有する。良否判定回路106は、比較部61(図10参照)に代えて制御部170を有するとともに、書き込み部166をさらに有する。制御部170は、切り替え部(第2の切り替え部)174、切り替え部(第1の切り替え部)173、生成部172、及び比較部171を有する。
書き込み部166は、システムSYSの動作中におけるテスト動作を行うべき期間において、キャプチャレジスタ62に保持されたデータに応じた関連データを、メモリ5におけるアドレス信号で選択されたメモリセルに書き込む。例えば、書き込み部166は、キャプチャレジスタ62に保持されたデータを論理反転させた反転データを制御部170から受け、反転データを選択されたメモリセルに書き込む。
例えば、書き込み部166は、n個のセレクタSL2[0:n−1]を有する。n個のセレクタSL2[0:n−1]のそれぞれは、自己テスト信号φISSTに応じて、データ生成回路32の出力と生成部172の出力とのいずれかを選択する。
コントローラCTR(図8参照)は、図2に示すように、システム論理に従い、システムSYSの起動(Power−up)時における所定の期間にテストモード信号φTESTをアクティブレベルにする。
また、コントローラCTRは、システム論理に応じて、複数のメモリカラー104のそれぞれについてメモリ5にアクセスがない期間がいつであるのかを把握している。メモリ5にアクセスがない期間は、例えば、システムSYSの動作中における他のメモリ5にアクセスしている期間でもよいし、メモリ5がスリープモードに遷移する直前の期間でもよいし、メモリ5がスリープモードから復帰した直後の期間でもよいし、メモリ5が含まれる回路ブロックの電源が遮断される直前の期間でもよいし、メモリ5が含まれる回路ブロックの電源が遮断された直後の期間でもよい。
コントローラCTRは、図2に示すように、システムSYSの動作(System Operation)中におけるテスト動作を行うべきメモリ5にアクセスがない期間にテストモード信号φTESTをアクティブレベルにする。図2は、システムSYS及び半導体集積回路100の動作を示すシーケンス図である。
自己テスト回路103における制御入力生成回路134は、テストモード信号φTESTをコントローラCTRからBIST制御回路31経由で受ける。制御入力生成回路134は、テストモード信号φTESTに応じて自己テスト信号φISSTを生成して書き込み部166及び切り替え部174へ供給する。すなわち、制御入力生成回路134は、システムSYSの起動(Power−up)時であれば自己テスト信号φISSTをノンアクティブレベルに維持し、システムSYSの動作中であればテストモード信号φTESTに追従して自己テスト信号φISSTをアクティブレベル及びノンアクティブレベルの間で遷移させる(図2参照)。
それに応じて、各セレクタSL2[0:n−1]は、システムSYSの起動(Power−up)時におけるテストモード信号φTESTがアクティブレベルになった際に、自己テスト信号φISSTがノンアクティブレベルであることに応じてデータ生成回路32の出力を選択してセレクタ7d経由でメモリ5へ出力する。これにより、各セレクタSL2[0:n−1]は、テストデータパターンDt[0:n−1]を選択メモリセルに書き込む。各セレクタSL2[0:n−1]は、システムSYSの動作(System Operation)中における自己テスト信号φISSTがアクティブレベルになった際に、生成部172の出力を選択してセレクタ7d経由でメモリ5へ出力する。これにより、各セレクタSL2[0:n−1]は、キャプチャレジスタ62に保持されたデータを生成部172で論理反転させた反転データを選択メモリセルに書き込む。
制御部170は、キャプチャレジスタ62に保持されたデータに応じた関連データを生成して書き込み部166へ供給する。例えば、制御部170は、キャプチャレジスタ62に保持されたデータを論理反転させ、反転データを生成して書き込み部166へ供給する。また、制御部170は、選択されたメモリセルから関連データ(反転データ)を読み出す。制御部170は、キャプチャレジスタ62に保持されたデータに応じた関連データ(反転データ)と読み出された関連データ(反転データ)とを比較する。制御部170は、比較結果を選択メモリセルについての自己テスト結果として上書きで保持するようにキャプチャレジスタ62を制御する。制御部170は、読み出された関連データ(反転データ)に応じた元のデータを選択されたメモリセルに書き戻すように、書き込み部166を制御する。
具体的には、切り替え部174は、自己テスト信号φISSTに応じて、第1のモードと第2のモードとの間でキャプチャレジスタ62の動作を切り替える。第1のモードは、比較部171から受けた比較結果をキャプチャレジスタ62が累積させて保持する動作モードである。第2のモードは、比較部171から受けた比較結果をキャプチャレジスタ62が累積させずに保持する動作モードである。切り替え部174は、自己テスト信号φISSTがノンアクティブレベルである際に第1のモードに切り替え、自己テスト信号φISSTがアクティブレベルである際に第2のモードに切り替える。
例えば、切り替え部174は、論理否定演算子INV1及び論理積演算子AND2を有する。論理否定演算子INV1は、自己テスト信号φISSTを論理反転させ、信号φISST ̄を生成して論理積演算子AND2へ供給する。論理積演算子AND2は、信号φISST ̄とキャプチャレジスタ62の出力との論理積を演算し、演算結果を論理和演算子OR1へ供給する。これにより、自己テスト信号φISSTがノンアクティブレベルである際にフィードバックラインFL1がアクティブになり、キャプチャレジスタ62の出力が論理和演算子OR1の入力側へフィードバックされるので、第1のモードに切り替えることができる。また、自己テスト信号φISSTがアクティブレベルである際にフィードバックラインFL1がノンアクティブになり、キャプチャレジスタ62の出力が論理和演算子OR1の入力側へフィードバックされなくなるので、第2のモードに切り替えることができる。
制御入力生成回路134は、システムSYSの起動時に、選択メモリセルにテストデータパターンDt[0:n−1]を供給するとともに、切り替え部174が第1のモードに切り替えるようにノンアクティブレベルの自己テスト信号φISSTを切り替え部174に供給する。これにより、良否判定回路106において基本の形態と同様のテスト動作が行われる。
制御入力生成回路134は、システムSYSの動作中に、選択メモリセルにテストデータを供給せずに、切り替え部174が第2のモードに切り替えるようにアクティブレベルの自己テスト信号φISSTを切り替え部174に供給する。これにより、良否判定回路106においてシステム動作中の自己テスト(ISST)を行うことができる。
切り替え部174は、セレクト信号φSELECTに応じて、第1の状態と第2の状態とを切り替える。第1の状態は、キャプチャレジスタ62に保持されたデータが生成部172へ供給される状態である。第2の状態は、選択メモリセルから読み出された反転データが生成部172へ供給される状態である。切り替え部174は、セレクト信号φSELECTが第1のレベルである際に第1の状態に切り替え、セレクト信号φSELECTが第2のレベルである際に第2の状態に切り替える。
例えば、切り替え部173は、セレクタSL3を有する。セレクタSL3は、セレクト信号φSELECTに応じて、メモリ5のデータ出力DOUT[0:n−1]とキャプチャレジスタ62の出力と固定ビット値「0」とのいずれかを選択する。セレクタSL3は、セレクト信号φSELECTが第1のレベルである際にキャプチャレジスタ62の出力を選択して生成部172へ供給するので、第1の状態に切り替えることができる。セレクタSL3は、セレクト信号φSELECTが第2のレベルである際にメモリ5のデータ出力DOUT[0:n−1]を選択して生成部172へ供給するので、第2の状態に切り替えることができる。セレクタSL3は、セレクト信号φSELECTが第3のレベルである際に固定ビット値「0」を選択して生成部172へ供給する。
制御入力生成回路134は、自己テスト信号φISSTがアクティブレベルである期間において、比較部171の比較結果のキャプチャレジスタ62への出力が完了するまで、切り替え部173が第1の状態に切り替えるように、第1のレベルのセレクト信号φSELECTを切り替え部173へ供給する。これにより、キャプチャレジスタ62に保持されたデータが生成部172へ供給されるようにすることができる。
制御入力生成回路134は、自己テスト信号φISSTがアクティブレベルである期間において、比較部171の比較結果のキャプチャレジスタ62への出力が完了した後に、切り替え部173が第2の状態に切り替えるように、第2のレベルのセレクト信号φSELECTを切り替え部173へ供給する。これにより、選択メモリセルから読み出された反転データが生成部172へ供給されるようにすることができる。
生成部172は、アクティブレベルの反転制御信号φINCに応じて、切り替え部173の出力を論理反転させる。例えば、切り替え部173が第1の状態に切り替えている際に、生成部172は、キャプチャレジスタ62に保持されたデータを論理反転させ、反転データを生成して書き込み部166へ供給する。これに応じて、書き込み部166は、反転データを選択メモリセルに書き込む。切り替え部173が第2の状態に切り替えている際に、生成部172は、選択メモリセルから読み出された反転データを論理反転させて元のデータを復元し、復元された元のデータを書き込み部166へ供給する。これに応じて、書き込み部166は、元のデータを選択メモリセルに書き戻す。
例えば、生成部172は、n個の排他的論理和演算子EXOR2[0:n−1]を有する。各排他的論理和演算子EXOR2は、アクティブレベルの反転制御信号φINC(=ビット値「1」)とセレクタSL3の出力との排他的論理和を演算し、セレクタSL3の出力がビット値「1」である場合にビット値「0」を出力し、セレクタSL3の出力がビット値「0」である場合にビット値「1」を出力する。これにより、各排他的論理和演算子EXOR2は、セレクタSL3の出力を論理反転させることができる。
比較部171は、選択メモリセルから読み出された反転データと生成部172で生成された反転データとを比較する。比較部171は、比較結果を、選択メモリセルについての自己テスト結果としてキャプチャレジスタ62へ出力する。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に、比較結果を保持する。
例えば、比較部171は、n個の排他的論理和演算子EXOR1[0:n−1]に加えて、n個の論理積演算子AND1[0:n−1]を有する。各論理積演算子AND1は、期待値レジスタ135の出力と排他的論理和演算子EXOR2の出力との論理積を演算し、演算結果を排他的論理和演算子EXOR1へ供給する。
期待値レジスタ135は、システムSYSの起動時に、テストデータパターンDt[0:n−1]と同一の期待値De[0:n−1]を出力するとともに、制御入力生成回路134が第3のレベルのセレクト信号φSELECTをセレクタSL3へ供給する。これにより、排他的論理和演算子EXOR2の出力が固定ビット値「1」になるので、同一の期待値De[0:n−1]が排他的論理和演算子EXOR1へ供給されるので、良否判定回路106において基本の形態と同様のテスト動作が行われる。
期待値レジスタ135は、システムSYSの動作中に、各ビットが固定ビット値「0」である期待値De[0:n−1]を出力する。これにより、選択メモリセルから読み出されたデータをそのままキャプチャレジスタ62に保持させることができる。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に、選択メモリセルから読み出されたデータを保持する。その後に、期待値レジスタ135は、各ビットが固定ビット値「1」である期待値De[0:n−1]を出力する。これにより、キャプチャレジスタ62に保持されたデータを生成部172で論理反転させた反転データが排他的論理和演算子EXOR1へ供給されるので、排他的論理和演算子EXOR1は、選択メモリセルから読み出された反転データと生成部172で生成された反転データとが一致する場合に、不良なしを示すビット値「0」を比較結果CRとして出力する。各排他的論理和演算子EXOR1は、選択メモリセルから読み出された反転データと生成部172で生成された反転データとが一致しない場合に、不良ありを示すビット値「1」を比較結果CRとして出力する。すなわち、良否判定回路106においてシステム動作中の自己テスト(ISST)を行うことができる。
次に、半導体集積回路100の動作について図3を用いて説明する。図3は、半導体集積回路100の動作を示すフローチャートである。
自己テスト(BIST)回路103は、自己テスト信号φISSTをアクティブレベルにして切り替え部174へ供給し、キャプチャレジスタ62の動作モードを第2のモードに設定する(S1)。
自己テスト回路103は、アドレス生成回路33内のBIST用アドレスカウンタを1つ進めて、システム動作中の自己テスト(ISST)を行うべきアドレスAD1を指定する。比較部171はアドレスAD1で選択されたメモリセルからデータD1を読み出すとともに、自己テスト回路103は期待値De[0:n−1]の全ビット値を「0」とする。これにより、比較部171はメモリセルから読み出されたデータD1をそのままキャプチャレジスタ62に格納する(S2)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間にデータD1を保持する。
自己テスト(BIST)回路103は、セレクト信号φSELECTを第1のレベルにして切り替え部173へ供給し、切り替え部173を第1の状態に切り替えさせる。自己テスト(BIST)回路103は、反転制御信号φINCをアクティブレベルにする。これに応じて、生成部172は、キャプチャレジスタ62に保持されたデータD1を論理反転させ、反転データD1 ̄を生成して書き込み部166へ供給する(S3)。これに応じて、書き込み部166は、反転データD1 ̄を選択メモリセルに書き込む(S4)。
比較部171はアドレスAD1で選択されたメモリセルから反転データD1 ̄を読み出す(S5)とともに、自己テスト回路103は期待値De[0:n−1]の全ビット値を「1」とする。これにより、比較部171は、生成部172で生成された反転データD1 ̄と選択メモリセルから読み出された反転データD1 ̄とが一致するか否か判断する(S6)。比較部171は、生成部172で生成された反転データD1 ̄と選択メモリセルから読み出された反転データD1 ̄とが一致する場合(S6でYes)、不良なしを示すビット値「0」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S7)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。比較部171は、生成部172で生成された反転データD1 ̄と選択メモリセルから読み出された反転データD1 ̄とが一致しない場合(S6でNo)、不良ありを示すビット値「1」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S8)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。
自己テスト(BIST)回路103は、セレクト信号φSELECTを第2のレベルにして切り替え部173へ供給し、切り替え部173を第2の状態に切り替えさせる。生成部172は、選択メモリセルから読み出された反転データD1 ̄を論理反転させ、元のデータD1を復元して書き込み部166へ供給する(S9)。これに応じて、書き込み部166は、元のデータD1を選択メモリセルに書き戻す(S10)。
自己テスト回路103は、システム動作中の自己テスト(ISST)を他のアドレスについて行う余裕があるか否かを判断する(S11)。例えば、自己テスト回路103は、テストモード信号φTESTがアクティブレベルからノンアクティブレベルになるタイミングをコントローラCTRから予め通知されていれば、そのタイミングまでの残り時間がS2〜S10の一連のサイクルのテスト動作に要する時間以上である場合に、他のアドレスについても行う余裕があると判断することができる。自己テスト回路103は、他のアドレスについて行う余裕がある場合(S11でYes)、処理をS2へ戻し、他のアドレスについて行う余裕がない場合(S11でNo)、処理を終了する。
以上のように、第1の実施形態では、半導体集積回路100において、キャプチャレジスタ62が、選択メモリセルから読み出されたデータを保持する。書き込み部166は、キャプチャレジスタ62に保持されたデータに応じた関連データを選択メモリセルに書き込む。例えば、書き込み部166は、キャプチャレジスタ62に保持されたデータが論理反転された反転データを選択メモリセルに書き込む。制御部170は、選択メモリセルから関連データ(反転データ)を読み出し、キャプチャレジスタ62に保持されたデータに応じた関連データ(反転データ)と選択メモリセルから読み出された関連データ(反転データ)とを比較する。制御部170は、比較結果を選択メモリセルについての自己テスト結果として上書きで保持するようにキャプチャレジスタ62を制御する。そして、制御部170は、選択メモリセルから読み出された関連データ(反転データ)に応じた元のデータを復元して選択メモリセルに書き戻すように書き込み部166を制御する。これにより、システムSYSの動作中に短時間で一部アドレスのテストを行うことができ、データが書き換わらない状態で終了するようにできる。この結果、メモリ5に既に書き込まれていたデータを失うことなく、システム動作中の自己テスト(ISST:In System Self Test)を行うことができる。
なお、第1の実施形態では、自己テスト回路103がアドレス生成回路33内のBIST用アドレスカウンタを1つ進めてシステム動作中の自己テスト(ISST)を行うべきアドレスAD1を指定する場合について例示しているが、システム動作中の自己テスト(ISST)を行うべきアドレスAD1は他の方法で指定してもよい。例えば、アドレス生成回路33内に疑似乱数発生器を設け、疑似乱数発生器で発生された乱数に応じてアドレスAD1を指定してもよい。
また、システムSYSがシャットダウンを行う際は、現在のテストアドレスを不揮発性記憶回路に保存し、次回のシステムSYS起動後はそのアドレス値を不揮発性記憶回路から読み出して初期値としてテストを継続してもよい。
(第2の実施形態)
次に、第2の実施形態にかかる半導体集積回路200について説明する。以下では、第1の実施形態と異なる部分を中心に説明する。
第2の実施形態では、半導体集積回路200の良否判定回路206において、図4に示すように、キャプチャレジスタ62の他に保存レジスタ275を設け、それぞれに保持されたデータを用いてメモリ5における複数アドレスへの書き込みを並行して行えるようにする。
具体的には、半導体集積回路200は、自己テスト回路103及び複数のメモリカラー104(図1参照)に代えて、自己テスト(BIST)回路203及び複数のメモリカラー204を有する。なお、半導体集積回路200は複数のメモリカラー204を有するが、図4では、自己テスト(BIST)回路203と1つのメモリカラー204とについて例示的に示している。
自己テスト回路203のアドレス生成回路233は、複数のアドレス信号AD11,AD12を並行して発生させることができる。例えば、アドレス生成回路233は、BIST用アドレスカウンタのカウント値とそのカウント値をインクリメントした値とをそれぞれアドレス信号AD11,AD12とすることができる。あるいは、例えば、アドレス生成回路233は、複数のBIST用アドレスカウンタを有し、複数のBIST用アドレスカウンタを用いて複数のアドレス信号AD11,AD12を並行して発生させることができる。このとき、アドレス生成回路233は、複数のBIST用アドレスカウンタで互いに連続したカウント値を複数のアドレス信号AD11,AD12として発生させることができる。
各メモリカラー204は、良否判定回路106(図1参照)に代えて、良否判定回路206を有する。良否判定回路206は、制御部170(図1参照)に代えて、制御部270を有する。制御部270は、切り替え部173(図1参照)に代えて切り替え部273を有し、保存レジスタ275をさらに有する。切り替え部273は、第1の状態と第2の状態とを切り替える。第3の状態は、キャプチャレジスタ62に保持された第1のデータ又は保存レジスタ275に保持された第2のデータが書き込み部166へ供給される状態である。第2の状態は、選択された第2のメモリセルから読み出された第1のデータ又は選択された第1のメモリセルから読み出された第2のデータが書き込み部166へ供給される状態である。
例えば、切り替え部273は、n個のセレクタSL3[0:n−1]に加えて、n個のセレクタSL4[0:n−1]を有する。セレクタSL4は、セレクト信号φSELECT2に応じて、保存レジスタ275の出力とキャプチャレジスタ62の出力とを選択してセレクタSL3へ出力する。セレクタSL4は、セレクト信号φSELECT2が第4のレベルであるときに保存レジスタ275の出力を選択してセレクタSL3へ出力し、セレクト信号φSELECT2が第5のレベルであるときにキャプチャレジスタ62の出力を選択してセレクタSL3へ出力する。
保存レジスタ275は、保存タイミング信号φSTに応じて、選択メモリセルから読み出されたデータを保持する。制御入力生成回路34は、保存レジスタ275によりデータを保持すべきタイミングで保存タイミング信号φSTをアクティブレベルにして保存レジスタ275へ供給する。保存レジスタ275は、保存タイミング信号φSTがアクティブレベルである期間に、選択メモリセルから読み出されたデータを保持する。保存レジスタ275は、キャプチャレジスタ62と同様の構造を有しており、例えばn個のレジスタRG[0:n−1]を有する(図11参照)。
また、半導体集積回路200の動作が図5に示すように、次の点で第1の実施形態と異なる。図5は、半導体集積回路200の動作を示すフローチャートである。
自己テスト回路203は、アドレス生成回路233内のBIST用アドレスカウンタを1つ進めて、システム動作中の自己テスト(ISST)を行うべきアドレスAD11を指定する。比較部171はアドレスAD11で選択された第1のメモリセルから第1のデータD11を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「0」とする。これにより、比較部171は第1のメモリセルから読み出された第1のデータD11をそのままキャプチャレジスタ62に格納する(S21)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に第1のデータD11を保持する。このとき、保存タイミング信号φSTはノンアクティブレベルになっており、第1のデータD11は保存レジスタ275には格納されない。
自己テスト回路203は、例えばアドレスAD11をインクリメントして、システム動作中の自己テスト(ISST)を行うべきアドレスAD12(=「アドレスAD11」+1)を指定する。比較部171はアドレスAD12で選択された第2のメモリセルから第2のデータD12を読み出す。これにより、比較部171は第2のメモリセルから読み出された第2のデータD12を保存レジスタ275に格納する(S22)。保存レジスタ275は、保存タイミング信号φSTがアクティブレベルである期間に第2のデータD12を保持する。このとき、キャプチャタイミング信号φCPはノンアクティブレベルになっており、第2のデータD12はキャプチャレジスタ62には格納されない。
自己テスト回路203は、セレクト信号φSELECTを第1のレベルにして切り替え部273へ供給し、切り替え部273を第1の状態に切り替えさせる。自己テスト回路203は、セレクト信号φSELECT2を第5のレベルにして切り替え部273へ供給し、キャプチャレジスタ62に保持された第1のデータD11が生成部172へ供給されるようにする。また、自己テスト回路203は、反転制御信号φINCをノンアクティブレベル(=ビット値「0」)にし生成部172が第1のデータD11を論理反転せずに書き込み部166へ供給するようにする。これにより、第1のデータD11がアドレスAD12で選択された第2のメモリセルに書き込まれる(S23)。なお、第2のメモリセルに書き込まれる第1のデータD11は、第2のメモリセルに書き込まれていた第2のデータD12に対して、例えば隣のアドレスの第1のメモリセルに書き込まれていたデータである点で関連するデータ(関連データ)である。
比較部171はアドレスAD12で選択された第2のメモリセルから第1のデータD11を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「1」とする。これにより、比較部171は、生成部172から転送された第1のデータD11と選択された第2のメモリセルから読み出された第1のデータD11とが一致するか否か判断する(S24)。比較部171は、生成部172から転送された第1のデータD11と選択された第2のメモリセルから読み出された第1のデータD11とが一致する場合(S24でYes)、不良なしを示すビット値「0」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S25)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。比較部171は、生成部172から転送された第1のデータD11と選択された第2のメモリセルから読み出された第1のデータD11とが一致しない場合(S24でNo)、不良ありを示すビット値「1」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S26)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。そして、完了信号φCOMPをアクティブレベルにする(図11参照)。これにより、フラグ生成回路64は、比較結果CRに応じた不良フラグを生成してフラグレジスタ65に格納する。
自己テスト回路203は、セレクト信号φSELECT2を第4のレベルにして切り替え部273へ供給し、保存レジスタ275に保持された第2のデータD12が生成部172へ供給されるようにする。また、自己テスト回路203は、反転制御信号φINCをノンアクティブレベル(=ビット値「0」)にし生成部172が第2のデータD12を論理反転せずに書き込み部166へ供給するようにする。これにより、第2のデータD12がアドレスAD11で選択された第1のメモリセルに書き込まれる(S27)。なお、第1のメモリセルに書き込まれる第2のデータD12は、第1のメモリセルに書き込まれていた第1のデータD11に対して、例えば隣のアドレスの第2のメモリセルに書き込まれていたデータである点で関連するデータ(関連データ)である。
比較部171はアドレスAD11で選択された第1のメモリセルから第2のデータD12を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「1」とする。これにより、比較部171は、生成部172から転送された第2のデータD12と選択された第1のメモリセルから読み出された第2のデータD12とが一致するか否か判断する(S28)。比較部171は、生成部172から転送された第2のデータD12と選択された第1のメモリセルから読み出された第2のデータD12とが一致する場合(S28でYes)、不良なしを示すビット値「0」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S29)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。比較部171は、生成部172から転送された第2のデータD12と選択された第1のメモリセルから読み出された第2のデータD12とが一致しない場合(S28でNo)、不良ありを示すビット値「1」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S30)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。そして、完了信号φCOMPをアクティブレベルにする(図11参照)。これにより、フラグ生成回路64は、比較結果CRに応じた不良フラグを生成してフラグレジスタ65に格納する。
比較部171は、アドレスAD11で選択された第1のメモリセルから第2のデータD12を読み出す。自己テスト(BIST)回路203は、保存タイミング信号φSTをアクティブレベルにする。これにより、比較部171は第1のメモリセルから読み出された第2のデータD12を保存レジスタ275に格納する(S31)。このとき、キャプチャタイミング信号φCPはノンアクティブレベルになっており、第2のデータD11はキャプチャレジスタ62には格納されない。
自己テスト(BIST)回路203は、セレクト信号φSELECTを第2のレベルにして切り替え部273へ供給し、切り替え部273を第2の状態に切り替えさせる。比較部171は、アドレスAD12で選択された第2のメモリセルから第1のデータD11を読み出す(S32)。
生成部172は、第2のメモリセルから読み出された第1のデータD11を書き込み部166へ供給する。これに応じて、書き込み部166は、第1のデータD11を、アドレスAD11で選択された第1のメモリセルに書き戻す(S33)。
自己テスト回路203は、セレクト信号φSELECTを第1のレベルにして切り替え部273へ供給し、切り替え部273を第1の状態に切り替えさせる。自己テスト回路203は、セレクト信号φSELECT2を第4のレベルにして切り替え部273へ供給し、保存レジスタ275に保持された第2のデータD12が生成部172へ供給されるようにする。生成部172は、第2のデータD12を書き込み部166へ供給する。これに応じて、書き込み部166は、第2のデータD12を、アドレスAD12で選択された第2のメモリセルに書き戻す(S34)。
以上のように、第2の実施形態では、キャプチャレジスタ62の他に保存レジスタ275を設け、それぞれに保持されたデータを用いてメモリ5における複数アドレスへの書き込みを並行して行う。これにより、連続する複数アドレスについて並行してテスト動作を行うことができ、隣接するメモリセル間の干渉についてテストすることができる。
なお、メモリセルへの書き込み時にデータを反転させることができるようにしてもよい。具体的には、図6に示すように、次のような動作が行われてもよい。図6は、第2の実施形態の変形例にかかる半導体集積回路の動作を示すフローチャートである。
自己テスト回路203は、アドレス生成回路233内のBIST用アドレスカウンタを1つ進めて、システム動作中の自己テスト(ISST)を行うべきアドレスAD11を指定する。比較部171はアドレスAD11で選択された第1のメモリセルから第1のデータD11を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「0」とする。これにより、比較部171は第1のメモリセルから読み出された第1のデータD11をそのままキャプチャレジスタ62に格納する(S21)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に第1のデータD11を保持する。このとき、保存タイミング信号φSTはノンアクティブレベルになっており、第1のデータD11は保存レジスタ275には格納されない。
自己テスト回路203は、例えばアドレスAD11をインクリメントして、システム動作中の自己テスト(ISST)を行うべきアドレスAD12(=「アドレスAD11」+1)を指定する。比較部171はアドレスAD12で選択された第2のメモリセルから第2のデータD12を読み出す。これにより、比較部171は第2のメモリセルから読み出された第2のデータD12を保存レジスタ275に格納する(S22)。保存レジスタ275は、保存タイミング信号φSTがアクティブレベルである期間に第2のデータD12を保持する。このとき、キャプチャタイミング信号φCPはノンアクティブレベルになっており、第2のデータD12はキャプチャレジスタ62には格納されない。
自己テスト回路203は、セレクト信号φSELECTを第1のレベルにして切り替え部273へ供給し、切り替え部273を第1の状態に切り替えさせる。自己テスト回路203は、セレクト信号φSELECT2を第5のレベルにして切り替え部273へ供給し、キャプチャレジスタ62に保持された第1のデータD11が生成部172へ供給されるようにする。また、自己テスト回路203は、反転制御信号φINCをアクティブレベルにする。これに応じて、生成部172は、キャプチャレジスタ62に保持された第1のデータD11を論理反転させ、第1の反転データD11 ̄を生成して書き込み部166へ供給する(S41)。これに応じて、書き込み部166は、第1の反転データD11 ̄を、アドレスAD12で選択された第2のメモリセルに書き込む(S42)。なお、第2のメモリセルに書き込まれる第1の反転データD11 ̄は、第2のメモリセルに書き込まれていた第2のデータD12に対して、例えば隣のアドレスの第1のメモリセルに書き込まれていたデータを論理反転させたデータである点で関連するデータ(関連データ)である。
比較部171はアドレスAD12で選択された第2のメモリセルから第1の反転データD11 ̄を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「1」とする。これにより、比較部171は、生成部172で生成された第1の反転データD11 ̄と選択された第2のメモリセルから読み出された第1の反転データD11 ̄とが一致するか否か判断する(S43)。比較部171は、生成部172で生成された第1の反転データD11 ̄と選択された第2のメモリセルから読み出された第1の反転データD11 ̄とが一致する場合(S43でYes)、不良なしを示すビット値「0」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S44)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。比較部171は、生成部172で生成された第1の反転データD11 ̄と選択された第2のメモリセルから読み出された第1の反転データD11 ̄とが一致しない場合(S43でNo)、不良ありを示すビット値「1」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S45)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。そして、完了信号φCOMPをアクティブレベルにする(図11参照)。これにより、フラグ生成回路64は、比較結果CRに応じた不良フラグを生成してフラグレジスタ65に格納する。
自己テスト回路203は、セレクト信号φSELECT2を第4のレベルにして切り替え部273へ供給し、保存レジスタ275に保持された第2のデータD12が生成部172へ供給されるようにする。また、自己テスト回路203は、反転制御信号φINCをアクティブレベルにする。これに応じて、生成部172は、保存レジスタ275に保持された第2のデータD12を論理反転させ、第2の反転データD12 ̄を生成して書き込み部166へ供給する(S46)。これに応じて、書き込み部166は、第2の反転データD12 ̄を、アドレスAD11で選択された第1のメモリセルに書き込む(S47)。なお、第1のメモリセルに書き込まれる第2の反転データD12 ̄は、第1のメモリセルに書き込まれていた第1のデータD11に対して、例えば隣のアドレスの第2のメモリセルに書き込まれていたデータを論理反転させたデータである点で関連するデータ(関連データ)である。
比較部171はアドレスAD11で選択された第1のメモリセルから第2の反転データD12 ̄を読み出すとともに、自己テスト回路203は期待値De[0:n−1]の全ビット値を「1」とする。これにより、比較部171は、生成部172で生成された第2の反転データD12 ̄と選択された第1のメモリセルから読み出された第2の反転データD12 ̄とが一致するか否か判断する(S48)。比較部171は、生成部172で生成された第2の反転データD12 ̄と選択された第1のメモリセルから読み出された第2の反転データD12 ̄とが一致する場合(S48でYes)、不良なしを示すビット値「0」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S49)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。比較部171は、生成部172で生成された第2の反転データD12 ̄と選択された第1のメモリセルから読み出された第2の反転データD12 ̄とが一致しない場合(S48でNo)、不良ありを示すビット値「1」を比較結果CRとしてキャプチャレジスタ62に出力して格納する(S50)。キャプチャレジスタ62は、キャプチャタイミング信号φCPがアクティブレベルである期間に比較結果CRを保持する。そして、完了信号φCOMPをアクティブレベルにする(図11参照)。これにより、フラグ生成回路64は、比較結果CRに応じた不良フラグを生成してフラグレジスタ65に格納する。
比較部171は、アドレスAD11で選択された第1のメモリセルから第2の反転データD12 ̄を読み出す。自己テスト(BIST)回路203は、保存タイミング信号φSTをアクティブレベルにする。これにより、比較部171は第1のメモリセルから読み出された第2の反転データD12 ̄を保存レジスタ275に格納する(S51)。このとき、キャプチャタイミング信号φCPはノンアクティブレベルになっており、第2の反転データD12 ̄はキャプチャレジスタ62には格納されない。
自己テスト(BIST)回路203は、セレクト信号φSELECTを第2のレベルにして切り替え部273へ供給し、切り替え部273を第2の状態に切り替えさせる。比較部171は、アドレスAD12で選択された第2のメモリセルから第1の反転データD11 ̄を読み出す(S52)。
生成部172は、第2のメモリセルから読み出された第1の反転データD11 ̄を論理反転させ、元の第1のデータD11を復元して書き込み部166へ供給する(S53)。これに応じて、書き込み部166は、第1のデータD11を、アドレスAD11で選択された第1のメモリセルに書き戻す(S54)。
自己テスト回路203は、セレクト信号φSELECTを第1のレベルにして切り替え部273へ供給し、切り替え部273を第1の状態に切り替えさせる。自己テスト回路203は、セレクト信号φSELECT2を第4のレベルにして切り替え部273へ供給し、保存レジスタ275に保持された第2の反転データD12 ̄が生成部172へ供給されるようにする。生成部172は、第2の反転データD12 ̄を論理反転させ、元の第2のデータD12を復元して書き込み部166へ供給する(S55)。これに応じて、書き込み部166は、第2のデータD12を、アドレスAD12で選択された第2のメモリセルに書き戻す(S56)。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。