(57)【特許請求の範囲】
【請求項１】
コンテンツデータが格納されるメモリアレイと、
真性乱数を生成する乱数生成器と、
前記メモリアレイ及び前記乱数生成器に接続されたメモリコントローラと、
を備え、
前記メモリコントローラは、
外部装置から第１のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記メモリアレイのみを対象とする信頼性テストを実行し、
外部装置から第２のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記乱数生成器のみを対象とする信頼性テストを実行し、
前記メモリコントローラは、前記乱数生成器が生成する真性乱数に基づいて、ホスト装置との間で送受信する信号に対して暗号化及び復号化を行う暗号・復号処理部を有し、
前記メモリアレイの信頼性テストを実行する際には、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に代えて所定の固定乱数値を前記暗号・復号処理部に入力し、前記暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行う、記憶装置。
【請求項２】
前記メモリコントローラは、前記固定乱数値を格納するためのレジスタをさらに有し、
前記固定乱数値は、第１のテストコマンドに含まれており、
前記メモリコントローラは、外部装置から受信した第１のテストコマンドから前記固定乱数値を抽出し、当該固定乱数値を前記レジスタに格納する、請求項１に記載の記憶装置。
【請求項３】
前記メモリコントローラは、前記固定乱数値を格納するためのレジスタをさらに有し、
前記固定乱数値は、前記記憶装置内の所定の記憶部に格納されており、
前記メモリコントローラは、当該記憶部から前記固定乱数値を読み出し、当該固定乱数値を前記レジスタに格納する、請求項１に記載の記憶装置。
【請求項４】
前記メモリコントローラは、前記乱数生成器の信頼性テストを実行するセルフテスト処理部を有し、
前記セルフテスト処理部は、
所定の制御信号を前記乱数生成器に入力することにより前記乱数生成器に乱数値を生成させ、
前記乱数生成器が生成した乱数値を前記記憶装置内の所定の記憶部に格納し、
当該記憶部から読み出した乱数値に基づいて、前記乱数生成器が生成した乱数値の再現不可能性を検査する、請求項１〜３のいずれか一つに記載の記憶装置。
【請求項５】
前記乱数生成器に乱数値を生成させる回数を指定する回数情報は、第２のテストコマンドに含まれており、
前記セルフテスト処理部は、第２のテストコマンドから前記回数情報を抽出し、当該回数情報に基づいて前記乱数生成器に複数の乱数値を順に生成させる、請求項４に記載の記憶装置。
【請求項６】
前記乱数生成器に乱数値を生成させる回数を指定する回数情報は、前記記憶装置内の所定の記憶部に格納されており、
前記セルフテスト処理部は、当該記憶部から前記回数情報を読み出し、当該回数情報に基づいて前記乱数生成器に複数の乱数値を順に生成させる、請求項４に記載の記憶装置。
【請求項７】
前記セルフテスト処理部は、前記回数情報が入力されることによって乱数値の検査を開始し、検査が完了するとその検査結果を外部装置に送信する、請求項５又は６に記載の記憶装置。
【請求項８】
前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって同一の乱数値が連続して生成されたか否かを検査する、請求項４〜７のいずれか一つに記載の記憶装置。
【請求項９】
前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって生成された複数の乱数値の中に、同一の乱数値が含まれているか否かを検査する、請求項４〜８のいずれか一つに記載の記憶装置。
【請求項１０】
前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって生成された乱数値における「０」又は「１」の出現割合が所定の許容範囲内であるか否かを検査する、請求項４〜９のいずれか一つに記載の記憶装置。
【請求項１１】
コンテンツデータが格納されるメモリアレイと、真性乱数を生成する乱数生成器と、前記メモリアレイ及び前記乱数生成器に接続されたメモリコントローラと、を備える記憶装置の信頼性テスト方法であって、
（Ａ）外部装置から第１のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記メモリアレイのみを対象とする信頼性テストを実行するステップと、
（Ｂ）外部装置から第２のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記乱数生成器のみを対象とする信頼性テストを実行するステップと、
を備え、
前記メモリコントローラは、前記乱数生成器が生成する真性乱数に基づいて、ホスト装置との間で送受信する信号に対して暗号化及び復号化を行う暗号・復号処理部を有し、
前記メモリアレイの信頼性テストを実行する際には、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に代えて所定の固定乱数値を前記暗号・復号処理部に入力し、前記暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行う、記憶装置の信頼性テスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置等の記憶装置、及び記憶装置の信頼性テスト方法に関する。
【背景技術】
【０００２】
一般的な半導体記憶装置を対象とする信頼性テストでは、テスター装置を使用してメモリアレイの全ての領域に対して既知のテストパターンでデータの書き込み及び読み出しを行い、テスター装置がメモリアレイに書き込んだデータ（期待値）と、テスター装置がメモリアレイから読み出したデータとを照合することによって、メモリアレイの信頼性が検査される。
【０００３】
また、半導体記憶装置の出荷テストでは、テストコストを削減すべく、１台のテスター装置に複数台の半導体記憶装置を接続し、複数台の半導体記憶装置に対して共通のテストパターンでデータの書き込み及び読み出しを行うことにより、複数台の半導体記憶装置に対して同時に信頼性テストを行うことが一般的である。
【０００４】
セキュリティ性の向上のために擬似乱数生成器が実装された半導体記憶装置に関しては、擬似乱数は乱数値の予測が可能であり、共通のアルゴリズムを用いることで複数の半導体記憶装置で同一の擬似乱数を生成できるため、一般的な半導体記憶装置と同様に１台のテスター装置を用いて複数台の半導体記憶装置に対して同時に出荷テストを行うことが可能である。
【０００５】
なお、下記特許文献１，２には、乱数生成器によって生成された乱数に対して、「０」又は「１」の出現頻度が許容範囲内であるか否かを評価する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特表２００５−５１７９９８号公報
【特許文献２】国際公開第ＷＯ２００５／１２４５３７号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、セキュリティ性の向上のために真性乱数生成器が実装された半導体記憶装置に関しては、真性乱数は乱数値の予測が不可能であるため、複数の半導体記憶装置で同一の真性乱数を生成できない。従って、真性乱数の乱数値に依存して各半導体記憶装置の期待値が異なるため、１台のテスター装置を用いて複数台の半導体記憶装置に対して同時に出荷テストを行うことができず、その結果、出荷テストの生産性が低下する。
【０００８】
本発明はかかる事情に鑑みて成されたものであり、真性乱数生成器が実装された記憶装置に関しても、複数台の記憶装置に対する同時の信頼性テストを実現することにより、出荷テストの生産性を向上することが可能な記憶装置、及びその信頼性テスト方法を得ることを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明の第１の態様に係る記憶装置は、コンテンツデータが格納されるメモリアレイと、真性乱数を生成する乱数生成器と、前記メモリアレイ及び前記乱数生成器に接続されたメモリコントローラと、を備え、前記メモリコントローラは、外部装置から第１のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記メモリアレイのみを対象とする信頼性テストを実行し、外部装置から第２のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記乱数生成器のみを対象とする信頼性テストを実行し、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に基づいて、ホスト装置との間で送受信する信号に対して暗号化及び復号化を行う暗号・復号処理部を有し、前記メモリアレイの信頼性テストを実行する際には、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に代えて所定の固定乱数値を前記暗号・復号処理部に入力し、前記暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行うことを特徴とするものである。
【００１０】
第１の態様に係る記憶装置によれば、メモリコントローラは、外部装置から第１のテストコマンドを受信することにより、メモリアレイ及び乱数生成器のうちメモリアレイのみを対象とする信頼性テストを実行し、外部装置から第２のテストコマンドを受信することにより、メモリアレイ及び乱数生成器のうち乱数生成器のみを対象とする信頼性テストを実行する。このように、真性乱数の乱数値に依存しないメモリアレイの信頼性テストと、真性乱数の乱数値に依存する乱数生成器の信頼性テストとを分離して実行することにより、１台の外部装置を用いて複数台の記憶装置に対する信頼性テストを同時に行うことが可能となる。その結果、真性乱数生成器が実装された記憶装置に関しても、複数台の記憶装置に対する同時の信頼性テストを実現できるため、出荷テストの生産性を向上することが可能となる。
【００１２】
また、第１の態様に係る記憶装置によれば、メモリアレイの信頼性テストを実行する際には、メモリコントローラは、乱数生成器が生成する真性乱数に代えて所定の固定乱数値を暗号・復号処理部に入力し、暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行う。このように、真性乱数に代えて所定の固定乱数値を用いることにより、メモリアレイの信頼性テストを実行する際に、暗号・復号処理部による暗号化及び復号化の処理は、乱数生成器が生成する真性乱数に依存しない。その結果、複数台の記憶装置に対して共通の固定乱数値を設定することによって共通の期待値を使用できるため、複数台の記憶装置に対するメモリアレイの信頼性テストを同時に実行することが可能となる。
【００１３】
本発明の第２の態様に係る記憶装置は、第１の態様に係る記憶装置において特に、前記メモリコントローラは、前記固定乱数値を格納するためのレジスタをさらに有し、前記固定乱数値は、第１のテストコマンドに含まれており、前記メモリコントローラは、外部装置から受信した第１のテストコマンドから前記固定乱数値を抽出し、当該固定乱数値を前記レジスタに格納することを特徴とするものである。
【００１４】
第２の態様に係る記憶装置によれば、メモリコントローラは、外部装置から受信した第１のテストコマンドから固定乱数値を抽出し、当該固定乱数値をレジスタに格納する。レジスタに格納された固定乱数値を使用することにより、暗号・復号処理部は、乱数生成器が生成する真性乱数に依存しない暗号化及び復号化の処理を実行することが可能となる。また、第１のテストコマンドに固定乱数値を含めることにより、外部装置によって固定乱数値を容易に変更することが可能となる。
【００１５】
本発明の第３の態様に係る記憶装置は、第１の態様に係る記憶装置において特に、前記メモリコントローラは、前記固定乱数値を格納するためのレジスタをさらに有し、前記固定乱数値は、前記記憶装置内の所定の記憶部に格納されており、前記メモリコントローラは、当該記憶部から前記固定乱数値を読み出し、当該固定乱数値を前記レジスタに格納することを特徴とするものである。
【００１６】
第３の態様に係る記憶装置によれば、記憶装置内の所定の記憶部に固定乱数値が格納されており、メモリコントローラは、記憶部から読み出した固定乱数値をレジスタに格納する。レジスタに格納された固定乱数値を使用することにより、暗号・復号処理部は、乱数生成器が生成する真性乱数に依存しない暗号化及び復号化の処理を実行することが可能となる。
【００１７】
本発明の第４の態様に係る記憶装置は、第１〜第３のいずれか一つの態様に係る記憶装置において特に、前記メモリコントローラは、前記乱数生成器の信頼性テストを実行するセルフテスト処理部を有し、前記セルフテスト処理部は、所定の制御信号を前記乱数生成器に入力することにより前記乱数生成器に乱数値を生成させ、前記乱数生成器が生成した乱数値を前記記憶装置内の所定の記憶部に格納し、当該記憶部から読み出した乱数値に基づいて、前記乱数生成器が生成した乱数値の再現不可能性を検査することを特徴とするものである。
【００１８】
第４の態様に係る記憶装置によれば、セルフテスト処理部は、所定の制御信号を乱数生成器に入力することにより乱数生成器に乱数値を生成させ、乱数生成器が生成した乱数値を記憶装置内の所定の記憶部に格納し、当該記憶部から読み出した乱数値に基づいて、乱数生成器が生成した乱数値の再現不可能性を検査する。このように、真性乱数の乱数値に依存する乱数生成器の信頼性テストに関しては、各記憶装置のセルフテスト処理部によって記憶装置毎にセルフテストを行うことにより、複数台の記憶装置に対する乱数生成器の信頼性テストを同時に実行することが可能となる。また、乱数生成器の信頼性テストを、乱数値の再現不可能性の検査に限定することにより、テストの容易化及びテストコストの削減を図ることが可能となる。乱数生成器とは別の処理ブロックで乱数の一様性が担保されている装置に対して本発明を適用することが、特に有効である。
【００１９】
本発明の第５の態様に係る記憶装置は、第４の態様に係る記憶装置において特に、前記乱数生成器に乱数値を生成させる回数を指定する回数情報は、第２のテストコマンドに含まれており、前記セルフテスト処理部は、第２のテストコマンドから前記回数情報を抽出し、当該回数情報に基づいて前記乱数生成器に複数の乱数値を順に生成させることを特徴とするものである。
【００２０】
第５の態様に係る記憶装置によれば、セルフテスト処理部は、第２のテストコマンドから回数情報を抽出し、当該回数情報に基づいて乱数生成器に複数の乱数値を順に生成させる。これにより、乱数生成器が順に生成した複数の乱数値を記憶部に格納することができ、セルフテスト処理部が記憶部から複数の乱数値を読み出すことによって、乱数値の再現不可能性を検査することが可能となる。また、第２のテストコマンドに回数情報を含めることにより、外部装置によって回数情報を容易に変更することが可能となる。
【００２１】
本発明の第６の態様に係る記憶装置は、第４の態様に係る記憶装置において特に、前記乱数生成器に乱数値を生成させる回数を指定する回数情報は、前記記憶装置内の所定の記憶部に格納されており、前記セルフテスト処理部は、当該記憶部から前記回数情報を読み出し、当該回数情報に基づいて前記乱数生成器に複数の乱数値を順に生成させることを特徴とするものである。
【００２２】
第６の態様に係る記憶装置によれば、記憶装置内の所定の記憶部に回数情報が格納されており、セルフテスト処理部は、記憶部から読み出した回数情報に基づいて、乱数生成器に複数の乱数値を順に生成させる。これにより、乱数生成器が順に生成した複数の乱数値を記憶部に格納することができ、セルフテスト処理部が記憶部から複数の乱数値を読み出すことによって、乱数値の再現不可能性を検査することが可能となる。
【００２３】
本発明の第７の態様に係る記憶装置は、第５又は第６の態様に係る記憶装置において特に、前記セルフテスト処理部は、前記回数情報が入力されることによって乱数値の検査を開始し、検査が完了するとその検査結果を外部装置に送信することを特徴とするものである。
【００２４】
第７の態様に係る記憶装置によれば、セルフテスト処理部は、回数情報が入力されることによって乱数値の検査を開始し、検査が完了するとその検査結果を外部装置に送信する。従って、乱数生成器の信頼性テストに関しては、外部装置によるテストパターンの作成処理や期待値との照合処理は不要となるため、外部装置の処理負荷を軽減することが可能となる。
【００２５】
本発明の第８の態様に係る記憶装置は、第４〜第７のいずれか一つの態様に係る記憶装置において特に、前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって同一の乱数値が連続して生成されたか否かを検査することを特徴とするものである。
【００２６】
第８の態様に係る記憶装置によれば、セルフテスト処理部は、乱数値の再現不可能性の検査として、乱数生成器によって同一の乱数値が連続して生成されたか否かを検査する。これにより、乱数の張り付きの有無を簡易にチェックすることが可能となる。
【００２７】
本発明の第９の態様に係る記憶装置は、第４〜第８のいずれか一つの態様に係る記憶装置において特に、前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって生成された複数の乱数値の中に、同一の乱数値が含まれているか否かを検査することを特徴とするものである。
【００２８】
第９の態様に係る記憶装置によれば、セルフテスト処理部は、乱数値の再現不可能性の検査として、乱数生成器によって生成された複数の乱数値の中に、同一の乱数値が含まれているか否かを検査する。これにより、乱数の周期性の有無を簡易にチェックすることが可能となる。
【００２９】
本発明の第１０の態様に係る記憶装置は、第４〜第９のいずれか一つの態様に係る記憶装置において特に、前記セルフテスト処理部は、乱数値の再現不可能性の検査として、前記乱数生成器によって生成された乱数値における「０」又は「１」の出現割合が所定の許容範囲内であるか否かを検査することを特徴とするものである。
【００３０】
第１０の態様に係る記憶装置によれば、セルフテスト処理部は、乱数値の再現不可能性の検査として、乱数生成器によって生成された乱数値における「０」又は「１」の出現割合が所定の許容範囲内であるか否かを検査する。これにより、乱数の各ビットの「０」又は「１」の偏りの有無を簡易にチェックすることが可能となる。
【００３１】
本発明の第１１の態様に係る記憶装置の信頼性テスト方法は、コンテンツデータが格納されるメモリアレイと、真性乱数を生成する乱数生成器と、前記メモリアレイ及び前記乱数生成器に接続されたメモリコントローラと、を備える記憶装置の信頼性テスト方法であって、（Ａ）外部装置から第１のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記メモリアレイのみを対象とする信頼性テストを実行するステップと、（Ｂ）外部装置から第２のテストコマンドを受信することにより、前記メモリアレイ及び前記乱数生成器のうち前記乱数生成器のみを対象とする信頼性テストを実行するステップと、を備え、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に基づいて、ホスト装置との間で送受信する信号に対して暗号化及び復号化を行う暗号・復号処理部を有し、前記メモリアレイの信頼性テストを実行する際には、前記メモリコントローラは、前記乱数生成器が生成する真性乱数に代えて所定の固定乱数値を前記暗号・復号処理部に入力し、前記暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行うことを特徴とするものである。
【００３２】
第１１の態様に係る記憶装置の信頼性テスト方法によれば、ステップ（Ａ）では、外部装置から第１のテストコマンドを受信することにより、メモリアレイ及び乱数生成器のうちメモリアレイのみを対象とする信頼性テストが実行され、ステップ（Ｂ）では、外部装置から第２のテストコマンドを受信することにより、メモリアレイ及び乱数生成器のうち乱数生成器のみを対象とする信頼性テストが実行される。このように、真性乱数の乱数値に依存しないメモリアレイの信頼性テストと、真性乱数の乱数値に依存する乱数生成器の信頼性テストとを分離して実行することにより、１台の外部装置を用いて複数台の記憶装置に対する信頼性テストを同時に行うことが可能となる。その結果、真性乱数生成器が実装された記憶装置に関しても、複数台の記憶装置に対する同時の信頼性テストを実現できるため、出荷テストの生産性を向上することが可能となる。
また、第１１の態様に係る記憶装置の信頼性テスト方法によれば、メモリアレイの信頼性テストを実行する際には、メモリコントローラは、乱数生成器が生成する真性乱数に代えて所定の固定乱数値を暗号・復号処理部に入力し、暗号・復号処理部は、当該固定乱数値に基づいて、外部装置との間で送受信する信号に対して暗号化及び復号化を行う。このように、真性乱数に代えて所定の固定乱数値を用いることにより、メモリアレイの信頼性テストを実行する際に、暗号・復号処理部による暗号化及び復号化の処理は、乱数生成器が生成する真性乱数に依存しない。その結果、複数台の記憶装置に対して共通の固定乱数値を設定することによって共通の期待値を使用できるため、複数台の記憶装置に対するメモリアレイの信頼性テストを同時に実行することが可能となる。
【発明の効果】
【００３３】
本発明によれば、真性乱数生成器が実装された記憶装置に関しても、複数台の記憶装置に対する同時の信頼性テストを実現できるため、出荷テストの生産性を向上することが可能となる。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施の形態に係る半導体記憶装置を対象として出荷テストを実施している状況を示す図である。
【図２】半導体記憶装置の構成を示す図である。
【図３】メモリアレイのメモリ領域を示す図である。
【図４】半導体記憶装置に対する信頼性テストの処理の流れを示すフローチャートである。
【図５】メモリテストにおいてメモリコントローラが実行する処理の流れを示すフローチャートである。
【図６】乱数テストにおいてメモリコントローラが実行する処理の流れを示すフローチャートである。
【図７】乱数テストにおいてメモリコントローラが実行する処理の流れを示すフローチャートである。
【図８】乱数テストにおいてメモリコントローラが実行する処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００３５】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００３６】
図１は、本発明の実施の形態に係る半導体記憶装置１を対象として出荷テストを実施している状況を示す図である。１台のテスター装置２に複数台の半導体記憶装置１が接続されることにより、複数台の半導体記憶装置１に対して同時に信頼性テストが実行される。半導体記憶装置１は、例えば、ホスト装置に着脱自在に接続可能なメモリカードである。あるいは、メモリカードに代えて、光ディスクや磁気ディスク等の任意の記憶装置を用いることもできる。なお、テスター装置２に代えて、簡易検査器、又はテスト機能を有するホスト装置等の任意の外部装置を用いて、半導体記憶装置１の信頼性テストを実行することもできる。
【００３７】
図２は、半導体記憶装置１の構成を示す図である。半導体記憶装置１は、メモリコントローラ１１と、不確定回路を用いて真性乱数を生成する乱数生成器１２と、ＮＡＮＤ型フラッシュメモリ等を用いたメモリアレイ１３とを備えて構成されている。
【００３８】
図２の接続関係で示すように、メモリコントローラ１１は、暗号・復号処理部２１、セルフテスト処理部２２、レジスタ２３、及びセレクタ２４〜２６を備えて構成されている。
【００３９】
図３は、メモリアレイ１３のメモリ領域を示す図である。メモリアレイ１３は、コンテンツデータを格納するためのコンテンツデータ格納領域Ｒ１と、テストデータを格納するためのテストデータ格納領域Ｒ２とを有している。
【００４０】
図４は、半導体記憶装置１に対する信頼性テストの処理の流れを示すフローチャートである。まず、ステップＳＰ１１においてテスター装置２は、メモリアレイ１３の信頼性テスト（以下「メモリテスト」と称す）を実行する。メモリテストが完了すると、次にステップＳＰ１２においてテスター装置２は、乱数生成器１２の信頼性テスト（以下「乱数テスト」と称す）を実行する。このように、半導体記憶装置１に対しては、メモリテストと乱数テストとが時系列的に分離して実行される。なお、メモリテスト及び乱数テストの実行順序は、図４に示した例と逆であっても良い。
【００４１】
＜メモリアレイの信頼性テスト＞
図５は、メモリテストにおいてメモリコントローラ１１が実行する処理の流れを示すフローチャートである。出荷テストにおいてメモリテストを実行する場合、まずテスター装置２は、メモリテストにおいて暗号・復号処理部２１に使用させるための所定の固定乱数値を生成した後、テストパターン及びその期待値を生成する。次にテスター装置２は、メモリテストの実行を指示する専用のテストコマンド（以下「メモリテストコマンド」と称す）内に上記固定乱数値を格納した後、当該メモリテストコマンドを既知のテストモード用暗号アルゴリズムを用いて暗号化する。そして、暗号化メモリテストコマンドを、データＤ１として半導体記憶装置１に送信する。なお、メモリテストコマンドの暗号化は省略しても良い。
【００４２】
図５を参照して、まずステップＳＰ２１においてメモリコントローラ１１は、テスター装置２から送信された暗号化メモリテストコマンドを受信する。そして、受信した暗号化メモリテストコマンドを、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて復号化する。暗号・復号処理部２１は、復号化されたメモリテストコマンドをデータＤ２として出力する。
【００４３】
次にステップＳＰ２２においてメモリコントローラ１１は、テスター装置２からメモリテストコマンドを受信したことをコマンドＩＤによって認識することにより、セレクタ２４〜２６の入力端子を図２の「０」側に切り替える。
【００４４】
次にステップＳＰ２３においてメモリコントローラ１１は、ステップＳＰ２１で暗号・復号処理部２１から出力されたメモリテストコマンドから、上記固定乱数値を抽出する。
【００４５】
次にステップＳＰ２４においてメモリコントローラ１１は、ステップＳＰ２３で抽出した上記固定乱数値を、データＤ３としてレジスタ２３に入力する。これにより、レジスタ２３に上記固定乱数値が格納される。
【００４６】
次にステップＳＰ２５においてメモリコントローラ１１は、レジスタ２３に格納されている上記固定乱数値を、セレクタ２４を介して暗号・復号処理部２１に入力する。これにより、メモリコントローラ１１は、上記固定乱数値によって暗号・復号処理部２１を初期化する。
【００４７】
次にステップＳＰ２６においてメモリコントローラ１１は、暗号・復号処理部２１の初期化が完了した旨を、メモリテストコマンドに対する戻り値としてテスター装置２に通知する。
【００４８】
次にステップＳＰ２７においてメモリコントローラ１１は、テスター装置２が生成したテストパターンを用いて、メモリアレイ１３の信頼性テストを実行する。例えば、テスター装置２は、上記固定乱数値を用いて暗号化した暗号化テストパターンを、半導体記憶装置１に送信する。メモリコントローラ１１は、テスター装置２から受信した暗号化テストパターンを、暗号・復号処理部２１によって上記固定乱数値を用いて復号化する。次にメモリコントローラ１１は、復号化されたテストパターンに含まれるアドレスを、データＤ４としてセレクタ２６を介してメモリアレイ１３に入力する。次にメモリコントローラ１１は、メモリアレイ１３から読み出されたデータＤ５を、セレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、データＤ５を暗号・復号処理部２１によって上記固定乱数値を用いて暗号化することにより、暗号化データをテスター装置２に送信する。
【００４９】
テスター装置２は、半導体記憶装置１から受信した暗号化データを、上記固定乱数値を用いて復号化する。そして、当該復号化したデータの値と、上記で生成したテストパターンの期待値とを照合することにより、メモリアレイ１３の信頼性を評価する。
【００５０】
なお、以上の説明では、固定乱数値をメモリテストコマンド内に含めてテスター装置２から半導体記憶装置１に送信する例について述べたが、この例には限定されない。例えば、固定乱数値は、半導体記憶装置１内の任意の記憶部（メモリアレイ１３、ＲＡＭ、ＲＯＭ、又はレジスタ等）に、予め格納されていても良い。この場合、メモリコントローラ１１は、テスター装置２からメモリテストコマンドを受信することにより、当該記憶部から固定乱数値を読み出して、当該固定乱数値をレジスタ２３に格納する。
【００５１】
＜乱数生成器の信頼性テスト（第１の例：乱数の張り付きの評価）＞
図６は、乱数テストにおいてメモリコントローラ１１が実行する処理の流れを示すフローチャートである。出荷テストにおいて乱数テストを実行する場合、まずテスター装置２は、乱数生成器１２からの乱数値の取得回数を指定するための回数情報を生成する。次にテスター装置２は、乱数テストの実行を指示する専用のテストコマンド（以下「乱数テストコマンド」と称す）内に上記回数情報を格納した後、当該乱数テストコマンドを既知のテストモード用暗号アルゴリズムを用いて暗号化する。そして、暗号化乱数テストコマンドを、データＤ１として半導体記憶装置１に送信する。なお、乱数テストコマンドの暗号化は省略しても良い。
【００５２】
図６を参照して、まずステップＳＰ３１においてメモリコントローラ１１は、テスター装置２から送信された暗号化乱数テストコマンドを受信する。そして、受信した暗号化乱数テストコマンドを、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて復号化する。暗号・復号処理部２１は、復号化された乱数テストコマンドをデータＤ２として出力する。
【００５３】
次にステップＳＰ３２においてメモリコントローラ１１は、テスター装置２から乱数テストコマンドを受信したことをコマンドＩＤによって認識することにより、セレクタ２４〜２６の入力端子を図２の「１」側に切り替える。
【００５４】
次にステップＳＰ３３においてメモリコントローラ１１は、ステップＳＰ３１で暗号・復号処理部２１から出力された乱数テストコマンドから、上記回数情報を抽出する。
【００５５】
次にステップＳＰ３４においてメモリコントローラ１１は、ステップＳＰ３３で抽出した上記回数情報を、データＤ６としてセルフテスト処理部２２に入力する。これにより、乱数生成器１２からの乱数値の取得回数がセルフテスト処理部２２に指定される。
【００５６】
次にステップＳＰ３５においてメモリコントローラ１１は、乱数値の生成を乱数生成器１２に指示するための制御信号Ｄ７を、セルフテスト処理部２２から乱数生成器１２に入力する。乱数生成器１２は、制御信号Ｄ７が入力されたことにより乱数値Ｄ８を生成する。次にメモリコントローラ１１は、乱数生成器１２から出力された乱数値Ｄ８をセルフテスト処理部２２に入力する。
【００５７】
次にステップＳＰ３６においてメモリコントローラ１１は、乱数値Ｄ８を格納するためのテストデータ格納領域Ｒ２内のアドレスＤ９を、セルフテスト処理部２２からセレクタ２６を介してメモリアレイ１３に入力する。また、メモリコントローラ１１は、ステップＳＰ３５で取得した乱数値Ｄ８を、セルフテスト処理部２２からメモリアレイ１３に入力する。これにより、ステップＳＰ３５で取得した乱数値Ｄ８が、テストデータ格納領域Ｒ２内の指定アドレスに格納される。
【００５８】
次にステップＳＰ３７においてメモリコントローラ１１は、一つ前に生成されてメモリアレイ１３に格納した乱数値Ｄ８を、メモリアレイ１３からセルフテスト処理部２２に読み出す。次にメモリコントローラ１１は、ステップＳＰ３５で取得した最新の乱数値Ｄ８（以下「新乱数値」と称す）と、メモリアレイ１３から読み出した一つ前の乱数値Ｄ８（以下「旧乱数値」と称す）とを、セルフテスト処理部２２によって比較する。
【００５９】
ステップＳＰ３７における判定の結果、新乱数値Ｄ８と旧乱数値Ｄ８とが同一である場合には、次にステップＳＰ３９においてメモリコントローラ１１は、乱数生成器１２によって同一の乱数値が連続して生成されたことを示す検査結果（つまり、乱数の張り付きが生じていることを示す検査結果）を、データＤ１０としてセルフテスト処理部２２からセレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、当該検査結果を、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて暗号化した後、テスター装置２に送信する。テスター装置２は、半導体記憶装置１から受信した暗号化された検査結果を、上記テストモード用暗号アルゴリズムを用いて復号化することにより、乱数生成器１２の信頼性（この場合は乱数の張り付きが生じたこと）を評価する。
【００６０】
ステップＳＰ３７における判定の結果、新乱数値Ｄ８と旧乱数値Ｄ８とが同一でない場合には、次にステップＳＰ３９においてメモリコントローラ１１は、上記回数情報で指定された回数分の乱数値Ｄ８を取得したか否かを、セルフテスト処理部２２によって判定する。
【００６１】
指定回数分の乱数値Ｄ８の取得が完了していない場合には、メモリコントローラ１１は、ステップＳＰ３５以降の処理を繰り返し実行する。
【００６２】
一方、指定回数分の乱数値Ｄ８の取得が完了した場合には、次にステップＳＰ３９においてメモリコントローラ１１は、乱数の張り付きが生じていないことを示す検査結果を、データＤ１０としてセルフテスト処理部２２からセレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、当該検査結果を、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて暗号化した後、テスター装置２に送信する。テスター装置２は、半導体記憶装置１から受信した暗号化された検査結果を、上記テストモード用暗号アルゴリズムを用いて復号化することにより、乱数生成器１２の信頼性（この場合は乱数の張り付きが生じていないこと）を評価する。
【００６３】
なお、以上の説明では、回数情報を乱数テストコマンド内に含めてテスター装置２から半導体記憶装置１に送信する例について述べたが、この例には限定されない。例えば、回数情報は、半導体記憶装置１内の任意の記憶部（メモリアレイ１３、ＲＡＭ、ＲＯＭ、又はレジスタ等）に、予め格納されていても良い。この場合、メモリコントローラ１１は、テスター装置２から乱数テストコマンドを受信することにより、当該記憶部から回数情報を読み出してセルフテスト処理部２２に入力する。後述する第２及び第３の例についても同様である。
【００６４】
また、以上の説明では、旧乱数値Ｄ８をメモリアレイ１３のテストデータ格納領域Ｒ２内に格納する例について述べたが、この例には限定されない。メモリコントローラ１１の内部レジスタに旧乱数値Ｄ８を格納しても良い。
【００６５】
＜乱数生成器の信頼性テスト（第２の例：乱数の周期性の評価）＞
図７は、乱数テストにおいてメモリコントローラ１１が実行する処理の流れを示すフローチャートである。出荷テストにおいて乱数テストを実行する場合、まずテスター装置２は、乱数生成器１２からの乱数値の取得回数を指定するための回数情報を生成する。次にテスター装置２は、乱数テストコマンド内に上記回数情報を格納した後、当該乱数テストコマンドを既知のテストモード用暗号アルゴリズムを用いて暗号化する。そして、暗号化乱数テストコマンドを、データＤ１として半導体記憶装置１に送信する。なお、乱数テストコマンドの暗号化は省略しても良い。
【００６６】
図７を参照して、まずステップＳＰ５１においてメモリコントローラ１１は、テスター装置２から送信された暗号化乱数テストコマンドを受信する。そして、受信した暗号化乱数テストコマンドを、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて復号化する。暗号・復号処理部２１は、復号化された乱数テストコマンドをデータＤ２として出力する。
【００６７】
次にステップＳＰ５２においてメモリコントローラ１１は、テスター装置２から乱数テストコマンドを受信したことをコマンドＩＤによって認識することにより、セレクタ２４〜２６の入力端子を図２の「１」側に切り替える。
【００６８】
次にステップＳＰ５３においてメモリコントローラ１１は、ステップＳＰ５１で暗号・復号処理部２１から出力された乱数テストコマンドから、上記回数情報を抽出する。
【００６９】
次にステップＳＰ５４においてメモリコントローラ１１は、ステップＳＰ５３で抽出した上記回数情報を、データＤ６としてセルフテスト処理部２２に入力する。これにより、乱数生成器１２からの乱数値の取得回数がセルフテスト処理部２２に指定される。
【００７０】
次にステップＳＰ５５においてメモリコントローラ１１は、乱数値の生成を乱数生成器１２に指示するための制御信号Ｄ７を、セルフテスト処理部２２から乱数生成器１２に入力する。乱数生成器１２は、制御信号Ｄ７が入力されたことにより乱数値Ｄ８を生成する。次にメモリコントローラ１１は、乱数生成器１２から出力された乱数値Ｄ８をセルフテスト処理部２２に入力する。
【００７１】
次にステップＳＰ５６においてメモリコントローラ１１は、乱数値Ｄ８を格納するためのテストデータ格納領域Ｒ２内のアドレスＤ９を、セルフテスト処理部２２からセレクタ２６を介してメモリアレイ１３に入力する。また、メモリコントローラ１１は、ステップＳＰ５５で取得した乱数値Ｄ８を、セルフテスト処理部２２からメモリアレイ１３に入力する。これにより、ステップＳＰ５５で取得した乱数値Ｄ８が、テストデータ格納領域Ｒ２内の指定アドレスに格納される。
【００７２】
次にステップＳＰ５７においてメモリコントローラ１１は、その時点でメモリアレイ１３に格納されている全ての乱数値Ｄ８を、メモリアレイ１３からセルフテスト処理部２２に読み出す。次にメモリコントローラ１１は、ステップＳＰ５５で取得した最新の乱数値Ｄ８（以下「新乱数値」と称す）と、メモリアレイ１３から読み出した既存の乱数値Ｄ８（以下「既存乱数値」と称す）とを、セルフテスト処理部２２によって比較する。
【００７３】
ステップＳＰ５７における判定の結果、新乱数値Ｄ８が既存乱数値Ｄ８のいずれかと同一である場合には、次にステップＳＰ５９においてメモリコントローラ１１は、乱数生成器１２によって同一の乱数値が重複して生成されたことを示す検査結果（つまり、乱数の周期性が生じていることを示す検査結果）を、データＤ１０としてセルフテスト処理部２２からセレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、当該検査結果を、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて暗号化した後、テスター装置２に送信する。テスター装置２は、半導体記憶装置１から受信した暗号化された検査結果を、上記テストモード用暗号アルゴリズムを用いて復号化することにより、乱数生成器１２の信頼性（この場合は乱数の周期性が生じたこと）を評価する。
【００７４】
ステップＳＰ５７における判定の結果、新乱数値Ｄ８が全ての既存乱数値Ｄ８と同一でない場合には、次にステップＳＰ５８においてメモリコントローラ１１は、上記回数情報で指定された回数分の乱数値Ｄ８を取得したか否かを、セルフテスト処理部２２によって判定する。
【００７５】
指定回数分の乱数値Ｄ８の取得が完了していない場合には、メモリコントローラ１１は、ステップＳＰ５５以降の処理を繰り返し実行する。
【００７６】
一方、指定回数分の乱数値Ｄ８の取得が完了した場合には、次にステップＳＰ５９においてメモリコントローラ１１は、乱数の周期性が生じていないことを示す検査結果を、データＤ１０としてセルフテスト処理部２２からセレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、当該検査結果を、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて暗号化した後、テスター装置２に送信する。テスター装置２は、半導体記憶装置１から受信した暗号化された検査結果を、上記テストモード用暗号アルゴリズムを用いて復号化することにより、乱数生成器１２の信頼性（この場合は乱数の周期性が生じていないこと）を評価する。
【００７７】
＜乱数生成器の信頼性テスト（第３の例：乱数の偏りの評価）＞
図８は、乱数テストにおいてメモリコントローラ１１が実行する処理の流れを示すフローチャートである。出荷テストにおいて乱数テストを実行する場合、まずテスター装置２は、乱数生成器１２からの乱数値の取得回数を指定するための回数情報を生成する。次にテスター装置２は、乱数テストコマンド内に上記回数情報を格納した後、当該乱数テストコマンドを既知のテストモード用暗号アルゴリズムを用いて暗号化する。そして、暗号化乱数テストコマンドを、データＤ１として半導体記憶装置１に送信する。なお、乱数テストコマンドの暗号化は省略しても良い。
【００７８】
図８を参照して、まずステップＳＰ７１においてメモリコントローラ１１は、テスター装置２から送信された暗号化乱数テストコマンドを受信する。そして、受信した暗号化乱数テストコマンドを、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて復号化する。暗号・復号処理部２１は、復号化された乱数テストコマンドをデータＤ２として出力する。
【００７９】
次にステップＳＰ７２においてメモリコントローラ１１は、テスター装置２から乱数テストコマンドを受信したことをコマンドＩＤによって認識することにより、セレクタ２４〜２６の入力端子を図２の「１」側に切り替える。
【００８０】
次にステップＳＰ７３においてメモリコントローラ１１は、ステップＳＰ７１で暗号・復号処理部２１から出力された乱数テストコマンドから、上記回数情報を抽出する。
【００８１】
次にステップＳＰ７４においてメモリコントローラ１１は、ステップＳＰ７３で抽出した上記回数情報を、データＤ６としてセルフテスト処理部２２に入力する。これにより、乱数生成器１２からの乱数値の取得回数がセルフテスト処理部２２に指定される。
【００８２】
次にステップＳＰ７５においてメモリコントローラ１１は、乱数値の生成を乱数生成器１２に指示するための制御信号Ｄ７を、セルフテスト処理部２２から乱数生成器１２に入力する。乱数生成器１２は、制御信号Ｄ７が入力されたことにより乱数値Ｄ８を生成する。次にメモリコントローラ１１は、乱数生成器１２から出力された乱数値Ｄ８をセルフテスト処理部２２に入力する。
【００８３】
次にステップＳＰ７６においてメモリコントローラ１１は、乱数値Ｄ８を格納するためのテストデータ格納領域Ｒ２内のアドレスＤ９を、セルフテスト処理部２２からセレクタ２６を介してメモリアレイ１３に入力する。また、メモリコントローラ１１は、ステップＳＰ７５で取得した乱数値Ｄ８を、セルフテスト処理部２２からメモリアレイ１３に入力する。これにより、ステップＳＰ７５で取得した乱数値Ｄ８が、テストデータ格納領域Ｒ２内の指定アドレスに格納される。
【００８４】
次にステップＳＰ７７においてメモリコントローラ１１は、上記回数情報で指定された回数分の乱数値Ｄ８を取得したか否かを、セルフテスト処理部２２によって判定する。
【００８５】
指定回数分の乱数値Ｄ８の取得が完了していない場合には、メモリコントローラ１１は、ステップＳＰ７５以降の処理を繰り返し実行する。
【００８６】
一方、指定回数分の乱数値Ｄ８の取得が完了した場合には、次にステップＳＰ７８においてメモリコントローラ１１は、メモリアレイ１３に格納されている全ての乱数値Ｄ８を、メモリアレイ１３からセルフテスト処理部２２に読み出す。次にメモリコントローラ１１は、乱数値Ｄ８の各ビットに「０」又は「１」の偏りが生じているか否かを、セルフテスト処理部２２によって検査する。セルフテスト処理部２２は、例えば、各乱数値Ｄ８のビット長が１２８ビットであり、上記指定回数が６４回である場合において、合計１２８×６４ビットのうち、「０」又は「１」の個数が、「５０×６４」個以上かつ「７０×６４」個以内の許容範囲内であれば偏りは生じていないと判定し、上記許容範囲外であれば偏りが生じていると判定する。
【００８７】
次にステップＳＰ７９においてメモリコントローラ１１は、乱数の偏りが生じているか否かを示す検査結果を、データＤ１０としてセルフテスト処理部２２からセレクタ２５を介して暗号・復号処理部２１に入力する。次にメモリコントローラ１１は、当該検査結果を、暗号・復号処理部２１によって上記テストモード用暗号アルゴリズムを用いて暗号化した後、テスター装置２に送信する。テスター装置２は、半導体記憶装置１から受信した暗号化された検査結果を、上記テストモード用暗号アルゴリズムを用いて復号化することにより、乱数生成器１２の信頼性（この場合は乱数の偏りが生じているか否か）を評価する。
【００８８】
なお、以上の説明では、指定回数分の乱数値Ｄ８をメモリアレイ１３のテストデータ格納領域Ｒ２内に格納する例について述べたが、この例には限定されない。メモリコントローラ１１の内部レジスタに乱数値Ｄ８を格納した状態で「０」又は「１」のビット数をカウントし、新たな乱数値Ｄ８が生成される毎にカウント値を累積することにより、メモリアレイ１３への乱数値Ｄ８の格納を省略しても良い。
【００８９】
また、乱数生成器１２の信頼性テストに関する上記第１〜第３の例は、任意に組み合わせて適用することが可能である。
【００９０】
＜まとめ＞
本実施の形態に係る半導体記憶装置１によれば、メモリコントローラ１１は、テスター装置２からメモリテストコマンドを受信することにより、メモリアレイ１３及び乱数生成器１２のうちメモリアレイ１３のみを対象とする信頼性テスト（メモリテスト）を実行し、テスター装置２から乱数テストコマンドを受信することにより、メモリアレイ１３及び乱数生成器１２のうち乱数生成器１２のみを対象とする信頼性テスト（乱数テスト）を実行する。このように、真性乱数の乱数値に依存しないメモリアレイ１３の信頼性テストと、真性乱数の乱数値に依存する乱数生成器１２の信頼性テストとを分離して実行することにより、１台のテスター装置２を用いて複数台の半導体記憶装置１に対する信頼性テストを同時に行うことが可能となる。その結果、真性乱数を生成する乱数生成器１２が実装された半導体記憶装置１に関しても、複数台の半導体記憶装置１に対する同時の信頼性テストを実現できるため、出荷テストの生産性を向上することが可能となる。
【００９１】
また、本実施の形態に係る半導体記憶装置１によれば、メモリアレイ１３の信頼性テストを実行する際には、メモリコントローラ１１は、乱数生成器１２が生成する真性乱数に代えて所定の固定乱数値を暗号・復号処理部２１に入力し、暗号・復号処理部２１は、当該固定乱数値に基づいて、テスター装置２との間で送受信する信号（コマンド及びデータ）に対して暗号化及び復号化を行う。このように、真性乱数に代えて所定の固定乱数値を用いることにより、メモリアレイ１３の信頼性テストを実行する際に、暗号・復号処理部２１による暗号化及び復号化の処理は、乱数生成器１２が生成する真性乱数に依存しない。その結果、複数台の半導体記憶装置１に対して共通の固定乱数値を設定することによって共通の期待値を使用できるため、複数台の半導体記憶装置１に対するメモリアレイ１３の信頼性テストを同時に実行することが可能となる。
【００９２】
また、本実施の形態に係る半導体記憶装置１によれば、メモリコントローラ１１は、テスター装置２から受信したメモリテストコマンド（第１テストコマンド）から固定乱数値を抽出し、当該固定乱数値をレジスタ２３に格納する。レジスタ２３に格納された固定乱数値を使用することにより、暗号・復号処理部２１は、乱数生成器１２が生成する真性乱数に依存しない暗号化及び復号化の処理を実行することが可能となる。また、メモリテストコマンドに固定乱数値を含めることにより、テスター装置２によって固定乱数値を容易に変更することが可能となる。
【００９３】
また、本実施の形態に係る半導体記憶装置１によれば、半導体記憶装置１内の所定の記憶部に固定乱数値が格納されており、メモリコントローラ１１は、当該記憶部から読み出した固定乱数値をレジスタ２３に格納する。レジスタ２３に格納された固定乱数値を使用することにより、暗号・復号処理部２１は、乱数生成器１２が生成する真性乱数に依存しない暗号化及び復号化の処理を実行することが可能となる。
【００９４】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、所定の制御信号Ｄ７を乱数生成器１２に入力することにより乱数生成器１２に乱数値Ｄ８を生成させ、乱数生成器１２が生成した乱数値Ｄ８を半導体記憶装置１内の所定の記憶部（メモリアレイ１３、ＲＡＭ、ＲＯＭ、又はレジスタ等）に格納し、当該記憶部から読み出した乱数値Ｄ８に基づいて、乱数生成器１２が生成した乱数値Ｄ８の再現不可能性を検査する。このように、真性乱数の乱数値に依存する乱数生成器１２の信頼性テストに関しては、各半導体記憶装置１のセルフテスト処理部２２によって半導体記憶装置１毎にセルフテストを行うことにより、複数台の半導体記憶装置１に対する乱数生成器の信頼性テストを同時に実行することが可能となる。また、乱数生成器１２の信頼性テストを、乱数値の再現不可能性の検査に限定することにより、テストの容易化及びテストコストの削減を図ることが可能となる。
【００９５】
一般的な乱数テストでは、生成した乱数が再現不可能性及び一様性の双方を満たしているか否かを検査する必要があり、出荷テスト時にこのような複雑な乱数テストを行ったのではテストコストが増大する。本実施の形態に係る半導体記憶装置１では、乱数生成器１２の信頼性テストを、乱数値の再現不可能性の検査に限定することにより、テストの容易化及びテストコストの削減を図ることが可能となる。一方、乱数生成器１２の信頼性テストでは一様性の検査は行われないため、乱数生成器とは別の処理ブロックで乱数の一様性が担保されている装置に対して本発明を適用することが、特に有効である。本実施の形態に係る半導体記憶装置１では、暗号・復号処理部２１における暗号アルゴリズムによって乱数の一様性を担保することにより、乱数生成器１２の信頼性テストでは乱数の再現不可能性の検査に限定することができる。
【００９６】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、乱数テストコマンド（第２テストコマンド）から回数情報を抽出し、当該回数情報に基づいて乱数生成器１２に複数の乱数値Ｄ８を順に生成させる。これにより、乱数生成器１２が順に生成した複数の乱数値Ｄ８を記憶部に格納することができ、セルフテスト処理部２２が当該記憶部から複数の乱数値Ｄ８を読み出すことによって、乱数値の再現不可能性を検査することが可能となる。また、乱数テストコマンドに回数情報を含めることにより、テスター装置２によって回数情報を容易に変更することが可能となる。
【００９７】
また、本実施の形態に係る半導体記憶装置１によれば、半導体記憶装置１内の所定の記憶部（メモリアレイ１３、ＲＡＭ、ＲＯＭ、又はレジスタ等）に回数情報が格納されており、セルフテスト処理部２２は、当該記憶部から読み出した回数情報に基づいて、乱数生成器１２に複数の乱数値Ｄ８を順に生成させる。これにより、乱数生成器１２が順に生成した複数の乱数値Ｄ８を当該記憶部に格納することができ、セルフテスト処理部２２が当該記憶部から複数の乱数値Ｄ８を読み出すことによって、乱数値の再現不可能性を検査することが可能となる。
【００９８】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、回数情報が入力されることによって乱数値Ｄ８の検査を開始し、検査が完了するとその検査結果（データＤ１０）をテスター装置２に送信する。従って、乱数生成器１２の信頼性テストに関しては、テスター装置２によるテストパターンの作成処理や期待値との照合処理は不要となるため、テスター装置２の処理負荷を軽減することが可能となる。
【００９９】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、乱数値の再現不可能性の検査として、乱数生成器１２によって同一の乱数値が連続して生成されたか否かを検査する。これにより、乱数の張り付きの有無を簡易にチェックすることが可能となる。
【０１００】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、乱数値の再現不可能性の検査として、乱数生成器１２によって生成された複数の乱数値の中に、同一の乱数値が含まれているか否かを検査する。これにより、乱数の周期性の有無を簡易にチェックすることが可能となる。
【０１０１】
また、本実施の形態に係る半導体記憶装置１によれば、セルフテスト処理部２２は、乱数値の再現不可能性の検査として、乱数生成器１２によって生成された乱数値における「０」又は「１」の出現割合が所定の許容範囲内であるか否かを検査する。これにより、乱数の各ビットの「０」又は「１」の偏りの有無を簡易にチェックすることが可能となる。
【符号の説明】
【０１０２】
１  半導体記憶装置
２  テスター装置
１１  メモリコントローラ
１２  乱数生成器
１３  メモリアレイ
２１  暗号・復号処理部
２２  セルフテスト処理部
２３  レジスタ
２４〜２６  セレクタ
【図１】
0006453610.tif 000002
【図２】
0006453610.tif 000003
【図３】
0006453610.tif 000004
【図４】
0006453610.tif 000005
【図５】
0006453610.tif 000006
【図６】
0006453610.tif 000007
【図７】
0006453610.tif 000008
【図８】
0006453610.tif 000009