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