(57)【要約】【課題】通信データの暗号化によるセキュリティ機能が実装された半導体装置を対象として、テストコストを削減できるとともに、セキュリティ性、テスタビリティ、及び信頼性をいずれも向上することが可能な半導体装置を得る。【解決手段】半導体記憶装置１は、複数の処理部を有するメモリコントローラ１２を備え、複数の処理部には、メモリコントローラ１２が送受信する信号に対して暗号化及び復号化を実行する暗号・復号処理部２１が含まれ、暗号・復号処理部２１は、テスター装置２から所定のテストコマンドを受信することにより、暗号・復号処理部２１の信頼性テストを実行するセルフテスト処理部３４を含む。【選択図】図４
2016091134.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理部を有するコントローラを備え、
前記複数の処理部には、前記コントローラが送受信する信号に対して暗号化及び復号化を実行する暗号・復号処理部が含まれ、
前記暗号・復号処理部は、外部装置から所定のテストコマンドを受信することにより、前記暗号・復号処理部の信頼性テストを実行するセルフテスト処理部を含む、半導体装置。
【請求項２】
前記暗号・復号処理部は、
第１データを生成する第１のデータ生成回路と、
前記第１のデータ生成回路が生成した第１データに基づいて、暗号化及び復号化に使用する第２データを生成する第２のデータ生成回路と、
をさらに含み、
前記セルフテスト処理部は、前記第２のデータ生成回路が生成した第２データに基づいて、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストを実行する、請求項１に記載の半導体装置。
【請求項３】
前記セルフテスト処理部は、
テストコマンドから期待値を抽出する抽出部と、
前記抽出部が抽出した期待値を格納する格納部と、
前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより、演算値を出力する演算部と、
前記格納部に格納されている期待値と、前記演算部が出力した演算値とを比較する比較部と、
を含み、
前記セルフテスト処理部は、前記比較部による比較結果を外部装置に送信する、請求項２に記載の半導体装置。
【請求項４】
前記セルフテスト処理部は、前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行する演算部を含み、
前記セルフテスト処理部は、前記演算部が出力した演算値を外部装置に送信する、請求項２に記載の半導体装置。
【請求項５】
前記セルフテスト処理部は、前記第２のデータ生成回路が生成した第２データを前記第１のデータ生成回路に入力し、前記第１のデータ生成回路及び前記第２のデータ生成回路に次の第１データ及び次の第２データをそれぞれ生成させることにより、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストを複数回実行する、請求項２〜４のいずれか一つに記載の半導体装置。
【請求項６】
前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定される、請求項５に記載の半導体装置。
【請求項７】
前記暗号・復号処理部は、
第１データを生成する第１のデータ生成回路と、
前記第１のデータ生成回路が生成した第１データに基づいて、暗号化及び復号化に使用する第２データを生成する第２のデータ生成回路と、
をさらに含み、
前記セルフテスト処理部は、
前記第１のデータ生成回路が生成した第１データに基づいて、前記第１のデータ生成回路の信頼性テストを実行し、
前記第２のデータ生成回路が生成した第２データに基づいて、前記第２のデータ生成回路の信頼性テストを実行する、請求項１に記載の半導体装置。
【請求項８】
前記セルフテスト処理部は、
テストコマンドから第１の期待値及び第２の期待値を抽出する抽出部と、
前記抽出部が抽出した第１の期待値を格納する第１の格納部と、
前記抽出部が抽出した第２の期待値を格納する第２の格納部と、
前記第１のデータ生成回路が生成した第１データに対して所定の演算を実行することにより、第１の演算値を出力する第１の演算部と、
前記第１の格納部に格納されている第１の期待値と、前記第１の演算部が出力した第１の演算値とを比較する第１の比較部と、
前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより、第２の演算値を出力する第２の演算部と、
前記第２の格納部に格納されている第２の期待値と、前記第２の演算部が出力した第２の演算値とを比較する第２の比較部と、
を含み、
前記セルフテスト処理部は、前記第１の比較部による比較結果及び前記第２の比較部による比較結果を外部装置に送信する、請求項７に記載の半導体装置。
【請求項９】
前記セルフテスト処理部は、
前記第１のデータ生成回路が生成した第１データに対して所定の演算を実行する第１の演算部と、
前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行する第２の演算部と、
を含み、
前記セルフテスト処理部は、前記第１の演算部が出力した第１の演算値及び前記第２の演算部が出力した第２の演算値を外部装置に送信する、請求項７に記載の半導体装置。
【請求項１０】
前記セルフテスト処理部は、
前記第１のデータ生成回路が生成した第１データを前記第１のデータ生成回路に入力し、前記第１のデータ生成回路に次の第１データを生成させることにより、前記第１のデータ生成回路の信頼性テストを複数回実行し、
前記第２のデータ生成回路が生成した第２データを前記第２のデータ生成回路に入力し、前記第２のデータ生成回路に次の第２データを生成させることにより、前記第２のデータ生成回路の信頼性テストを複数回実行する、請求項７〜９のいずれか一つに記載の半導体装置。
【請求項１１】
前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定される、請求項１０に記載の半導体装置。
【請求項１２】
暗号・復号処理部を含む複数の処理部を有する半導体装置の信頼性テスト方法であって、
（Ａ）前記暗号・復号処理部の信頼性テストを、セルフテストによって実行するステップと、
（Ｂ）前記複数の処理部のうち前記暗号・復号処理部以外の処理部の信頼性テストを、スキャンテストによって実行するステップと、
を備える、半導体装置の信頼性テスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置等の半導体装置、及び半導体装置の信頼性テスト方法に関する。
【背景技術】
【０００２】
ＬＳＩのテスト容易化設計手法（ＤＦＴ：Design For Testability）の一つとして、スキャンテストが知られている。
【０００３】
スキャンテストでは、テスト対象の回路内にスキャン回路が実装されており、テストを実行するテストモード時には、スキャン回路のフリップフロップをシリアルに接続することによってスキャンパスが形成される。そして、スキャンイン端子からテスト信号を入力し、スキャンパスを介してスキャンアウト端子から出力されたテスト信号を検出することによって、回路の動作が観測される。これにより、回路の縮退故障等を自動的に調べることができる。
【０００４】
なお、下記非特許文献１には、ＤＥＳ（Data Encryption Standard）を用いた暗号ＬＳＩを対象としたスキャンテスト技術の一例が開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】伊藤侑麿他、「スキャンパス攻撃を考慮した暗号ＬＳＩのテスタビリティ評価」、電子情報通信学会技術研究報告、電子情報通信学会、平成２０年２月８日、１０７（４８２）巻号、ｐ．５７−６２
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリカード等の半導体記憶装置では、メモリアレイに格納されたコンテンツデータを保護すべく、半導体記憶装置とホスト装置との間での通信データを暗号化するための暗号モジュールが実装されるのが一般的である。暗号モジュールでは、暗号アルゴリズムの非線形性の特性によってデータが攪拌される。従って、暗号モジュールが実装された半導体記憶装置を対象として、間欠故障（データに依存する電流変動ノイズ等）をスキャンテストによって検査する場合には、暗号モジュール内でのデータ攪拌を考慮した所望のテストパターンを作成することが困難であり、その結果、テストパターンの増大を招いてテストコストが上昇する。
【０００７】
また、セキュリティ機能を司るロジック部である暗号モジュールにスキャン回路を実装したのでは、第三者によってテストモードが悪用され、いわゆるスキャンパス攻撃によって、共通鍵等の秘密情報がスキャンパスを通して抜き取られる可能性がある。
【０００８】
そのため、スキャンパス攻撃を回避すべく、暗号モジュールをテスト対象から除外してスキャンテストを実施するという運用がなされる場合もあるが、この場合には暗号モジュールの信頼性テストが行われないため、全体として半導体記憶装置のテスタビリティが不足して信頼性が低下する。
【０００９】
本発明はかかる事情に鑑みて成されたものであり、通信データの暗号化によるセキュリティ機能が実装された半導体装置を対象として、テストコストを削減できるとともに、セキュリティ性、テスタビリティ、及び信頼性をいずれも向上することが可能な、半導体装置及びその信頼性テスト方法を得ることを目的とするものである。
【課題を解決するための手段】
【００１０】
本発明の第１の態様に係る半導体装置は、複数の処理部を有するコントローラを備え、前記複数の処理部には、前記コントローラが送受信する信号に対して暗号化及び復号化を実行する暗号・復号処理部が含まれ、前記暗号・復号処理部は、外部装置から所定のテストコマンドを受信することにより、前記暗号・復号処理部の信頼性テストを実行するセルフテスト処理部を含むことを特徴とするものである。
【００１１】
第１の態様に係る半導体装置によれば、暗号・復号処理部はセルフテスト処理部を含み、セルフテスト処理部は、外部装置から所定のテストコマンドを受信することにより、暗号・復号処理部の信頼性テストを実行する。つまり、半導体装置全体のうちセキュリティ機能を司る暗号・復号処理部に関しては、スキャン回路は実装されず、ＢＩＳＴ（Built-In Self Test）によるセルフテスト処理部が実装される。従って、間欠故障の検査等においても所望のテストパターンを容易に作成できるため、テストコストを削減することが可能となる。また、暗号・復号処理部にはスキャン回路が実装されておらず、第三者によるスキャンパス攻撃を回避できるため、セキュリティ性を向上することが可能となる。さらに、暗号・復号処理部をテスト対象から除外するのではなく、暗号・復号処理部に関してもセルフテスト処理部によって有意な信頼性テストが行われるため、全体として半導体装置のテスタビリティ及び信頼性を向上することが可能となる。
【００１２】
本発明の第２の態様に係る半導体装置は、第１の態様に係る半導体装置において特に、前記暗号・復号処理部は、第１データを生成する第１のデータ生成回路と、前記第１のデータ生成回路が生成した第１データに基づいて、暗号化及び復号化に使用する第２データを生成する第２のデータ生成回路と、をさらに含み、前記セルフテスト処理部は、前記第２のデータ生成回路が生成した第２データに基づいて、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストを実行することを特徴とするものである。
【００１３】
第２の態様に係る半導体装置によれば、セルフテスト処理部は、第２のデータ生成回路が生成した第２データに基づいて、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストを実行する。このように、第１のデータ生成回路及び第２のデータ生成回路を統合してテストすることにより、両者を個別にテストする場合と比較すると、回路規模の削減による低コスト化を図ることが可能となる。
【００１４】
本発明の第３の態様に係る半導体装置は、第２の態様に係る半導体装置において特に、前記セルフテスト処理部は、テストコマンドから期待値を抽出する抽出部と、前記抽出部が抽出した期待値を格納する格納部と、前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより、演算値を出力する演算部と、前記格納部に格納されている期待値と、前記演算部が出力した演算値とを比較する比較部と、を含み、前記セルフテスト処理部は、前記比較部による比較結果を外部装置に送信することを特徴とするものである。
【００１５】
第３の態様に係る半導体装置によれば、抽出部はテストコマンドから期待値を抽出し、格納部は抽出部が抽出した期待値を格納し、演算部は第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより演算値を出力する。そして、比較部は格納部に格納されている期待値と演算部が出力した演算値とを比較し、比較部による比較結果が外部装置に送信される。半導体装置内の比較部によって期待値と演算値とを比較することにより、第１のデータ生成回路又は第２のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、半導体装置から外部装置に演算値を送信する必要がないため、両装置間の通信データ量を削減することが可能となる。
【００１６】
本発明の第４の態様に係る半導体装置は、第２の態様に係る半導体装置において特に、前記テスト処理部は、前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行する演算部を含み、前記セルフテスト処理部は、前記演算部が出力した演算値を外部装置に送信することを特徴とするものである。
【００１７】
第４の態様に係る半導体装置によれば、演算部は第２のデータ生成回路が生成した第２データに対して所定の演算を実行し、演算部が出力した演算値が外部装置に送信される。外部装置によって期待値と受信した演算値とを比較することにより、第１のデータ生成回路又は第２のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、半導体装置内に格納部及び比較部を実装する必要がないため、半導体装置の構成を簡略化することが可能となる。
【００１８】
本発明の第５の態様に係る半導体装置は、第２〜第４のいずれか一つの態様に係る半導体装置において特に、前記セルフテスト処理部は、前記第２のデータ生成回路が生成した第２データを前記第１のデータ生成回路に入力し、前記第１のデータ生成回路及び前記第２のデータ生成回路に次の第１データ及び次の第２データをそれぞれ生成させることにより、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストを複数回実行することを特徴とするものである。
【００１９】
第５の態様に係る半導体装置によれば、セルフテスト処理部は、第２のデータ生成回路が生成した第２データを第１のデータ生成回路に入力し、第１のデータ生成回路及び第２のデータ生成回路に次の第１データ及び次の第２データをそれぞれ生成させることにより、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストを複数回実行する。このように、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストを複数回実行することにより、テスト精度を向上することが可能となる。また、第２のデータ生成回路が生成した第２データを第１のデータ生成回路に入力することによってテストパターンが更新されるため、暗号・復号処理部自身によって複数のテストパターンを容易に作成することが可能となる。
【００２０】
本発明の第６の態様に係る半導体装置は、第５の態様に係る半導体装置において特に、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定されることを特徴とするものである。
【００２１】
第６の態様に係る半導体装置によれば、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定される。このように、信頼性テストの実行回数を外部装置が指定することにより、要求されるテスト精度に応じて最適なテスト回数を容易に設定することが可能となる。
【００２２】
本発明の第７の態様に係る半導体装置は、第１の態様に係る半導体装置において特に、前記暗号・復号処理部は、第１データを生成する第１のデータ生成回路と、前記第１のデータ生成回路が生成した第１データに基づいて、暗号化及び復号化に使用する第２データを生成する第２のデータ生成回路と、をさらに含み、前記セルフテスト処理部は、前記第１のデータ生成回路が生成した第１データに基づいて、前記第１のデータ生成回路の信頼性テストを実行し、前記第２のデータ生成回路が生成した第２データに基づいて、前記第２のデータ生成回路の信頼性テストを実行することを特徴とするものである。
【００２３】
第７の態様に係る半導体装置によれば、セルフテスト処理部は、第１のデータ生成回路が生成した第１データに基づいて第１のデータ生成回路の信頼性テストを実行し、第２のデータ生成回路が生成した第２データに基づいて第２のデータ生成回路の信頼性テストを実行する。このように、第１のデータ生成回路及び第２のデータ生成回路を個別にテストすることにより、第１のデータ生成回路及び第２のデータ生成回路のどちらに故障が生じているかを正確に特定することが可能となる。
【００２４】
本発明の第８の態様に係る半導体装置は、第７の態様に係る半導体装置において特に、前記セルフテスト処理部は、テストコマンドから第１の期待値及び第２の期待値を抽出する抽出部と、前記抽出部が抽出した第１の期待値を格納する第１の格納部と、前記抽出部が抽出した第２の期待値を格納する第２の格納部と、前記第１のデータ生成回路が生成した第１データに対して所定の演算を実行することにより、第１の演算値を出力する第１の演算部と、前記第１の格納部に格納されている第１の期待値と、前記第１の演算部が出力した第１の演算値とを比較する第１の比較部と、前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより、第２の演算値を出力する第２の演算部と、前記第２の格納部に格納されている第２の期待値と、前記第２の演算部が出力した第２の演算値とを比較する第２の比較部と、を含み、前記セルフテスト処理部は、前記第１の比較部による比較結果及び前記第２の比較部による比較結果を外部装置に送信することを特徴とするものである。
【００２５】
第８の態様に係る半導体装置によれば、抽出部はテストコマンドから第１の期待値及び第２の期待値を抽出し、第１の格納部は抽出部が抽出した第１の期待値を格納し、第２の格納部は抽出部が抽出した第２の期待値を格納する。また、第１の演算部は第１のデータ生成回路が生成した第１データに対して所定の演算を実行することにより第１の演算値を出力し、第２の演算部は第２のデータ生成回路が生成した第２データに対して所定の演算を実行することにより第２の演算値を出力する。そして、第１の比較部は第１の格納部に格納されている第１の期待値と第１の演算部が出力した第１の演算値とを比較し、第２の比較部は第２の格納部に格納されている第２の期待値と第２の演算部が出力した第２の演算値とを比較し、第１の比較部による比較結果及び第２の比較部による比較結果が外部装置に送信される。半導体装置内の第１の比較部によって第１の期待値と第１の演算値とを比較することにより、第１のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、半導体装置内の第２の比較部によって第２の期待値と第２の演算値とを比較することにより、第２のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、半導体装置から外部装置に第１の演算値及び第２の演算値を送信する必要がないため、両装置間の通信データ量を削減することが可能となる。
【００２６】
本発明の第９の態様に係る半導体装置は、第７の態様に係る半導体装置において特に、前記セルフテスト処理部は、前記第１のデータ生成回路が生成した第１データに対して所定の演算を実行する第１の演算部と、前記第２のデータ生成回路が生成した第２データに対して所定の演算を実行する第２の演算部と、を含み、前記セルフテスト処理部は、前記第１の演算部が出力した第１の演算値及び前記第２の演算部が出力した第２の演算値を外部装置に送信することを特徴とするものである。
【００２７】
第９の態様に係る半導体装置によれば、第１の演算部は第１のデータ生成回路が生成した第１データに対して所定の演算を実行し、第２の演算部は第２のデータ生成回路が生成した第２データに対して所定の演算を実行し、第１の演算部が出力した第１の演算値及び第２の演算部が出力した第２の演算値が外部装置に送信される。外部装置によって期待値と受信した第１の演算値とを比較することにより、第１のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、外部装置によって期待値と受信した第２の演算値とを比較することにより、第２のデータ生成回路に故障が生じているか否かを適切に検査することが可能となる。また、半導体装置内に格納部及び比較部を実装する必要がないため、半導体装置の構成を簡略化することが可能となる。
【００２８】
本発明の第１０の態様に係る半導体装置は、第７〜第９のいずれか一つの態様に係る半導体装置において特に、前記セルフテスト処理部は、前記第１のデータ生成回路が生成した第１データを前記第１のデータ生成回路に入力し、前記第１のデータ生成回路に次の第１データを生成させることにより、前記第１のデータ生成回路の信頼性テストを複数回実行し、前記第２のデータ生成回路が生成した第２データを前記第２のデータ生成回路に入力し、前記第２のデータ生成回路に次の第２データを生成させることにより、前記第２のデータ生成回路の信頼性テストを複数回実行することを特徴とするものである。
【００２９】
第１０の態様に係る半導体装置によれば、セルフテスト処理部は、第１のデータ生成回路が生成した第１データを第１のデータ生成回路に入力し、第１のデータ生成回路に次の第１データを生成させることにより、第１のデータ生成回路の信頼性テストを複数回実行する。また、セルフテスト処理部は、第２のデータ生成回路が生成した第２データを第２のデータ生成回路に入力し、第２のデータ生成回路に次の第２データを生成させることにより、第２のデータ生成回路の信頼性テストを複数回実行する。このように、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストを複数回実行することにより、テスト精度を向上することが可能となる。また、第１のデータ生成回路が生成した第１データを第１のデータ生成回路に入力することによってテストパターンが更新され、第２のデータ生成回路が生成した第２データを第２のデータ生成回路に入力することによってテストパターンが更新されるため、暗号・復号処理部自身によって複数のテストパターンを容易に作成することが可能となる。
【００３０】
本発明の第１１の態様に係る半導体装置は、第１０の態様に係る半導体装置において特に、前記第１のデータ生成回路及び前記第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定されることを特徴とするものである。
【００３１】
第１１の態様に係る半導体装置によれば、第１のデータ生成回路及び第２のデータ生成回路の信頼性テストの実行回数は、テストコマンドによって指定される。このように、信頼性テストの実行回数を外部装置が指定することにより、要求されるテスト精度に応じて最適なテスト回数を容易に設定することが可能となる。
【００３２】
本発明の第１２の態様に係る半導体装置の信頼性テスト方法は、暗号・復号処理部を含む複数の処理部を有する半導体装置の信頼性テスト方法であって、（Ａ）前記暗号・復号処理部の信頼性テストを、セルフテストによって実行するステップと、（Ｂ）前記複数の処理部のうち前記暗号・復号処理部以外の処理部の信頼性テストを、スキャンテストによって実行するステップと、を備えることを特徴とするものである。
【００３３】
第１２の態様に係る半導体装置の信頼性テスト方法によれば、ステップ（Ａ）では、暗号・復号処理部の信頼性テストがセルフテストによって実行される。つまり、半導体装置全体のうちセキュリティ機能を司る暗号・復号処理部に関しては、スキャン回路は実装されず、ＢＩＳＴ（Built-In Self Test）によるセルフテストが実行される。従って、間欠故障の検査等においても所望のテストパターンを容易に作成できるため、テストコストを削減することが可能となる。また、暗号・復号処理部にはスキャン回路が実装されておらず、第三者によるスキャンパス攻撃を回避できるため、セキュリティ性を向上することが可能となる。さらに、暗号・復号処理部をテスト対象から除外するのではなく、暗号・復号処理部に関してもステップ（Ａ）によって有意な信頼性テストが行われるため、全体として半導体装置のテスタビリティ及び信頼性を向上することが可能となる。
【発明の効果】
【００３４】
本発明によれば、通信データの暗号化によるセキュリティ機能が実装された半導体装置を対象として、テストコストを削減できるとともに、セキュリティ性、テスタビリティ、及び信頼性をいずれも向上することが可能となる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の形態に係る半導体記憶装置を対象として信頼性テストを実施している状況を示す図である。
【図２】半導体記憶装置の構成を示す図である。
【図３】メモリコントローラの構成を示す図である。
【図４】本発明の実施の形態１に係る暗号・復号処理部の構成を示す図である。
【図５】テスター装置から半導体記憶装置に送信されるテストコマンドを示す図である。
【図６】本発明の実施の形態２に係る暗号・復号処理部の構成を示す図である。
【図７】テスター装置から半導体記憶装置に送信されるテストコマンドを示す図である。
【図８】本発明の実施の形態３に係る暗号・復号処理部の構成を示す図である。
【図９】テスター装置から半導体記憶装置に送信されるテストコマンドを示す図である。
【図１０】本発明の実施の形態４に係る暗号・復号処理部の構成を示す図である。
【発明を実施するための形態】
【００３６】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００３７】
図１は、本発明の実施の形態に係る半導体記憶装置１を対象として信頼性テストを実施している状況を示す図である。テスター装置２に半導体記憶装置１が接続されることにより、信頼性テストが実行される。半導体記憶装置１は、例えば、ホスト装置に着脱自在に接続可能なメモリカードである。あるいは、メモリカードに代えて、光ディスクや磁気ディスク等の任意の記憶装置を用いることもできる。なお、テスター装置２に代えて、簡易検査器、又はテスト機能を有するホスト装置等の任意の外部装置を用いて、半導体記憶装置１の信頼性テストを実行することもできる。
【００３８】
図２は、半導体記憶装置１の構成を示す図である。半導体記憶装置１は、コンテンツデータが格納されるメモリアレイ１１と、メモリアレイ１１に接続されたメモリコントローラ１２とを備えて構成されている。メモリアレイ１１は、ＮＡＮＤ型フラッシュメモリ等を用いて構成されている。
【００３９】
図３は、メモリコントローラ１２の構成を示す図である。メモリコントローラ１２は複数の処理部を備えて構成されており、当該複数の処理部には、暗号・復号処理部２１、アドレス管理部２２、誤り訂正処理部２３、バッファ２４、ホストインタフェース２５、メモリインタフェース２６、及び制御部２７が含まれる。
【００４０】
暗号・復号処理部２１は、メモリアレイ１１に格納されたコンテンツデータを保護すべく、半導体記憶装置１とホスト装置との間での通信データを暗号化する。本実施の形態の例において、暗号・復号処理部２１の暗号アルゴリズムとしては、共通鍵に基づいて生成されたストリームデータ（鍵ストリーム）を用いて暗号化を行うストリーム暗号が使用される。
【００４１】
アドレス管理部２２は、論理アドレスと物理アドレスとの変換処理や、不良ブロックの管理処理等を行う。誤り訂正処理部２３は、コンテンツデータにおけるビット誤りの有無の判定処理や、ビット誤りが生じている場合にその訂正処理等を行う。バッファ２４は、メモリコントローラ１２が処理するコンテンツデータ等を一時的に保持する。ホストインタフェース２５は、メモリコントローラ１２とホスト装置とのデータ通信を制御する。メモリインタフェース２６は、メモリコントローラ１２とメモリアレイ１１とのデータ通信を制御する。制御部２７は、ＣＰＵ又はハードウェアシーケンサによって構成され、メモリコントローラ１２の各処理部の動作を制御する。
【００４２】
メモリコントローラ１２が備える複数の処理部のうち暗号・復号処理部２１以外の処理部、つまり、アドレス管理部２２、誤り訂正処理部２３、バッファ２４、ホストインタフェース２５、メモリインタフェース２６、及び制御部２７に関しては、スキャンテストのためのスキャン回路（図示しない）がそれぞれ実装されている。従って、これら暗号・復号処理部２１以外の処理部の信頼性テストは、スキャンテストによって実行される。
【００４３】
一方、暗号・復号処理部２１にはスキャンテストのためのスキャン回路は実装されておらず、暗号・復号処理部２１の信頼性テストは、後述するセルフテストによって実行される。
【００４４】
＜実施の形態１＞
図４は、本発明の実施の形態１に係る暗号・復号処理部２１の構成を示す図である。図４の接続関係で示すように、暗号・復号処理部２１は、秘密情報である共通鍵に基づいて鍵データ（第１データ）を生成する鍵データ生成回路３１（第１のデータ生成回路）と、共通鍵及び鍵データに基づいてストリームデータ（第２データ）を生成するストリームデータ生成回路３２（第２のデータ生成回路）と、ストリームデータを用いた排他的論理和演算によって暗号化及び復号化を行う演算回路３３と、ＢＩＳＴ（Built-In Self Test）によるセルフテスト処理部３４とを備えて構成されている。セルフテスト処理部３４は、テスター装置２から所定のテストコマンドを受信することにより、暗号・復号処理部２１の信頼性テストを実行する。図４の接続関係で示すように、セルフテスト処理部３４は、抽出部４１、格納部４２、比較部４３、演算部４４、及びセレクタ４５，４６を有している。
【００４５】
図５は、テスター装置２から半導体記憶装置１に送信されるテストコマンドを示す図である。テストコマンドには、それがテストコマンドであることを示す所定のコマンドＩＤと、テストを繰り返す回数を指定するためのテスト実行回数と、各テストにおけるテスト結果の期待値とが記述されている。
【００４６】
以下、暗号・復号処理部２１の信頼性テストを実行するための処理内容について説明する。
【００４７】
まずテスター装置２は、要求されるテスト精度に応じてテストの実行回数を決定する。なお、テストの実行回数を指定する回数情報は、半導体記憶装置１内の任意の記憶部（メモリアレイ１１、又はメモリコントローラ１２内のＲＡＭ、ＲＯＭ、又はレジスタ等）に、予め格納されていても良い。この場合、テスター装置２は、半導体記憶装置１から回数情報を受信することにより、テストの実行回数を決定する。
【００４８】
次にテスター装置２は、各テストの期待値を生成する。テスター装置２には、暗号・復号処理部２１と同様のテストアルゴリズム及び共通鍵が実装されている。テスター装置２は、当該テストアルゴリズムを上記で決定した実行回数分だけ繰り返すことにより、各テストにおける期待値としての演算値（ＣＲＣ値又はハッシュ値）を生成する。
【００４９】
次にテスター装置２は、所定のコマンドＩＤと、上記で求めたテストの実行回数及び各テストの期待値とを含めることによってテストコマンド（図５）を生成し、当該テストコマンドを半導体記憶装置１に送信する。
【００５０】
次に半導体記憶装置１はテストコマンドを受信し、当該テストコマンドを暗号・復号処理部２１に入力する。テストコマンドは暗号化されていないため、受信したテストコマンドは演算回路３３をスルーして抽出部４１に入力される。また、暗号・復号処理部２１は、テストコマンドが入力されたことによってテストモードに移行し、セレクタ４６の入力端子を、通常モードのメモリアレイ１１側からテストモードの比較部４３側に切り替える。
【００５１】
次に抽出部４１は、テストコマンドからテスト実行回数と期待値とを抽出し、テスト実行回数をデータＤ５として演算部４４に入力するとともに、期待値をデータＤ６としてレジスタ等の格納部４２に格納する。なお、この時点では、セレクタ４５の入力端子は共通鍵Ｄ１側に設定されている。
【００５２】
次に鍵データ生成回路３１は、セレクタ４５から入力された共通鍵Ｄ１に基づいて、１回目のテストに関する鍵データＤ３を生成する。
【００５３】
次にストリームデータ生成回路３２は、鍵データ生成回路３１から入力された鍵データＤ３に基づいて、１回目のテストに関するストリームデータＤ４を生成する。
【００５４】
次に演算部４４は、ストリームデータ生成回路３２から入力されたストリームデータＤ４に対して所定の演算を実行することにより、１回目のテストに関する演算値（ＣＲＣ値又はハッシュ値）を算出する。
【００５５】
次に比較部４３は、演算部４４から入力された演算値（データＤ７）と、格納部４２から入力された期待値（データＤ６）とを比較することにより、１回目のテストに関して演算値と期待値とが一致するか否かを判定し、その比較結果を示すデータＤ８を生成する。
【００５６】
次にセレクタ４５は、２回目のテストを実行するために入力端子を共通鍵Ｄ１側からストリームデータ生成回路３２側に切り替える。これにより鍵データ生成回路３１には、１回目のテストに関するストリームデータＤ４が入力され、鍵データ生成回路３１は、１回目のテストに関するストリームデータＤ４をテストパターンとして用いて、２回目のテストに関する鍵データＤ３を生成する。なお、３回目以降のテストにおいても、セレクタ４５の入力端子はストリームデータ生成回路３２側に設定されている。
【００５７】
以降は上記と同様の処理がテスト実行回数分だけ繰り返されることにより、各回のテストに関する比較結果を示すデータＤ８が比較部４３から出力される。
【００５８】
次に暗号・復号処理部２１は、指定されたテスト実行回数分のデータＤ８を、テストコマンドに対する戻り値として、テスター装置２に送信する。
【００５９】
このように本実施の形態１に係る半導体記憶装置（半導体装置）１によれば、暗号・復号処理部２１はセルフテスト処理部３４を含み、セルフテスト処理部３４は、テスター装置２から所定のテストコマンドを受信することにより、暗号・復号処理部２１の信頼性テストを実行する。つまり、半導体記憶装置１全体のうちセキュリティ機能を司る暗号・復号処理部２１に関しては、スキャン回路は実装されず、ＢＩＳＴによるセルフテスト処理部３４が実装される。従って、間欠故障の検査等においても所望のテストパターンを容易に作成できるため、テストコストを削減することが可能となる。また、暗号・復号処理部２１にはスキャン回路が実装されておらず、第三者によるスキャンパス攻撃を回避できるため、セキュリティ性を向上することが可能となる。さらに、暗号・復号処理部２１をテスト対象から除外するのではなく、暗号・復号処理部２１に関してもセルフテスト処理部３４によって有意な信頼性テストが行われるため、全体として半導体記憶装置１のテスタビリティ及び信頼性を向上することが可能となる。
【００６０】
また、本実施の形態１に係る半導体記憶装置１によれば、セルフテスト処理部３４は、ストリームデータ生成回路３２が生成したストリームデータＤ４に基づいて、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストを実行する。このように、鍵データ生成回路３１及びストリームデータ生成回路３２を統合してテストすることにより、両者を個別にテストする場合と比較すると、回路規模の削減による低コスト化を図ることが可能となる。
【００６１】
また、本実施の形態１に係る半導体記憶装置１によれば、抽出部４１はテストコマンドから期待値を抽出し、格納部４２は抽出部４１が抽出した期待値を格納し、演算部４４はストリームデータ生成回路３２が生成したストリームデータＤ４に対して所定の演算を実行することにより演算値を出力する。そして、比較部４３は格納部４２に格納されている期待値と演算部４４が出力した演算値とを比較し、比較部４３による比較結果がテスター装置２に送信される。半導体記憶装置１内の比較部４３によって期待値と演算値とを比較することにより、鍵データ生成回路３１又はストリームデータ生成回路３２に故障が生じているか否かを適切に検査することが可能となる。また、半導体記憶装置１からテスター装置２に演算値を送信する必要がないため、両装置間の通信データ量を削減することが可能となる。
【００６２】
また、本実施の形態１に係る半導体記憶装置１によれば、セルフテスト処理部３４は、ストリームデータ生成回路３２が生成したストリームデータＤ４を鍵データ生成回路３１に入力し、鍵データ生成回路３１及びストリームデータ生成回路３２に次の鍵データＤ３及び次のストリームデータＤ４をそれぞれ生成させることにより、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストを複数回実行する。このように、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストを複数回実行することにより、テスト精度を向上することが可能となる。また、ストリームデータ生成回路３２が生成したストリームデータＤ４を鍵データ生成回路３１に入力することによってテストパターンが更新されるため、暗号・復号処理部２１自身によって複数のテストパターンを容易に作成することが可能となる。
【００６３】
また、本実施の形態１に係る半導体記憶装置１によれば、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストの実行回数は、テストコマンドによって指定される。このように、信頼性テストの実行回数をテスター装置２が指定することにより、要求されるテスト精度に応じて最適なテスト回数を容易に設定することが可能となる。
【００６４】
＜実施の形態２＞
図６は、本発明の実施の形態２に係る暗号・復号処理部２１の構成を示す図である。図４に示した回路構成から格納部４２及び比較部４３の実装が省略されている。
【００６５】
図７は、テスター装置２から半導体記憶装置１に送信されるテストコマンドを示す図である。図５に示したデータ構成から期待値の記述が省略されている。
【００６６】
以下、暗号・復号処理部２１の信頼性テストを実行するための処理内容について、上記実施の形態１との相違点を中心に説明する。
【００６７】
まずテスター装置２は、要求されるテスト精度に応じてテストの実行回数を決定する。
【００６８】
次にテスター装置２は、各テストの期待値を生成する。
【００６９】
次にテスター装置２は、所定のコマンドＩＤと上記で求めたテストの実行回数とを含めることによってテストコマンド（図７）を生成し、当該テストコマンドを半導体記憶装置１に送信する。なお、テスター装置２は、上記で求めた各テストの期待値に関しては、半導体記憶装置１に送信することなく自身で保持する。
【００７０】
次に半導体記憶装置１はテストコマンドを受信し、当該テストコマンドを暗号・復号処理部２１に入力する。暗号・復号処理部２１は、テストコマンドが入力されたことによってテストモードに移行し、セレクタ４６の入力端子を、通常モードのメモリアレイ１１側からテストモードの演算部４４側に切り替える。
【００７１】
次に抽出部４１は、テストコマンドからテスト実行回数を抽出し、テスト実行回数をデータＤ５として演算部４４に入力する。なお、この時点では、セレクタ４５の入力端子は共通鍵Ｄ１側に設定されている。
【００７２】
次に鍵データ生成回路３１は、セレクタ４５から入力された共通鍵Ｄ１に基づいて、１回目のテストに関する鍵データＤ３を生成する。
【００７３】
次にストリームデータ生成回路３２は、鍵データ生成回路３１から入力された鍵データＤ３に基づいて、１回目のテストに関するストリームデータＤ４を生成する。
【００７４】
次に演算部４４は、ストリームデータ生成回路３２から入力されたストリームデータＤ４に対して所定の演算を実行することにより、１回目のテストに関する演算値を算出する。
【００７５】
次にセレクタ４５は、２回目のテストを実行するために入力端子を共通鍵Ｄ１側からストリームデータ生成回路３２側に切り替える。これにより鍵データ生成回路３１には、１回目のテストに関するストリームデータＤ４が入力され、鍵データ生成回路３１は、１回目のテストに関するストリームデータＤ４をテストパターンとして用いて、２回目のテストに関する鍵データＤ３を生成する。なお、３回目以降のテストにおいても、セレクタ４５の入力端子はストリームデータ生成回路３２側に設定されている。
【００７６】
以降は上記と同様の処理がテスト実行回数分だけ繰り返されることにより、各回のテストに関する演算値を示すデータＤ７が演算部４４から出力される。
【００７７】
次に暗号・復号処理部２１は、指定されたテスト実行回数分のデータＤ７を、テストコマンドに対する戻り値として、テスター装置２に送信する。
【００７８】
次にテスター装置２は、半導体記憶装置１から受信した演算値（データＤ７）と、自身が保持している期待値とを各回のテスト毎に比較することにより、演算値と期待値とが一致するか否かを判定する。
【００７９】
このように本実施の形態２に係る半導体記憶装置１によれば、演算部４４はストリームデータ生成回路３２が生成したストリームデータＤ４に対して所定の演算を実行し、演算部４４が出力した演算値（データＤ７）がテスター装置２に送信される。テスター装置２によって期待値と演算値とを比較することにより、鍵データ生成回路３１又はストリームデータ生成回路３２に故障が生じているか否かを適切に検査することが可能となる。また、半導体記憶装置１内に格納部４２及び比較部４３を実装する必要がないため、半導体記憶装置１の構成を簡略化することが可能となる。
【００８０】
＜実施の形態３＞
図８は、本発明の実施の形態３に係る暗号・復号処理部２１の構成を示す図である。図８の接続関係で示すように、セルフテスト処理部３４は、抽出部５１、格納部５２，５５、比較部５３，５６、演算部５４，５７、及びセレクタ５８〜６０を有している。
【００８１】
図９は、テスター装置２から半導体記憶装置１に送信されるテストコマンドを示す図である。テストコマンドには、それがテストコマンドであることを示す所定のコマンドＩＤと、テストを繰り返す回数を指定するためのテスト実行回数と、各テストにおけるテスト結果の期待値（鍵データ生成回路用及びストリームデータ生成回路用）とが記述されている。なお、本実施の形態の例では、鍵データ生成回路とストリームデータ生成回路とでテスト実行回数を共通に設定する場合について説明するが、両者で異なるテスト実行回数を設定することもできる。
【００８２】
以下、暗号・復号処理部２１の信頼性テストを実行するための処理内容について説明する。
【００８３】
まずテスター装置２は、要求されるテスト精度に応じてテストの実行回数を決定する。なお、テストの実行回数を指定する回数情報は、半導体記憶装置１内の任意の記憶部（メモリアレイ１１、又はメモリコントローラ１２内のＲＡＭ、ＲＯＭ、又はレジスタ等）に、予め格納されていても良い。この場合、テスター装置２は、半導体記憶装置１から回数情報を受信することにより、テストの実行回数を決定する。
【００８４】
次にテスター装置２は、鍵データ生成回路３１用の各テストの期待値と、ストリームデータ生成回路３２用の各テストの期待値とを個別に生成する。テスター装置２には、暗号・復号処理部２１と同様のテストアルゴリズム及び共通鍵が実装されている。テスター装置２は、当該テストアルゴリズムを上記で決定した実行回数分だけ繰り返すことにより、各テストにおける期待値としての演算値（ＣＲＣ値又はハッシュ値）を生成する。
【００８５】
次にテスター装置２は、所定のコマンドＩＤと、上記で求めたテストの実行回数及び各テストの期待値（鍵データ生成回路３１用及びストリームデータ生成回路３２用）とを含めることによってテストコマンド（図９）を生成し、当該テストコマンドを半導体記憶装置１に送信する。
【００８６】
次に半導体記憶装置１はテストコマンドを受信し、当該テストコマンドを暗号・復号処理部２１に入力する。テストコマンドは暗号化されていないため、受信したテストコマンドは演算回路３３をスルーして抽出部４１に入力される。また、暗号・復号処理部２１は、テストコマンドが入力されたことによってテストモードに移行し、セレクタ６０の入力端子を、通常モードのメモリアレイ１１側からテストモードの比較部５３，５６側に切り替える。
【００８７】
次に抽出部５１は、テストコマンドからテスト実行回数と期待値とを抽出し、テスト実行回数をデータＤ５として演算部５４，５７に入力する。また、抽出部５１は、鍵データ生成回路３１用の期待値をデータＤ６Ａとして格納部５２に格納するとともに、ストリームデータ生成回路３２用の期待値をデータＤ６Ｂとして格納部５５に格納する。なお、この時点では、セレクタ５８，５９の入力端子は共通鍵Ｄ１，Ｄ２側に設定されている。
【００８８】
次に鍵データ生成回路３１は、セレクタ５８から入力された共通鍵Ｄ１に基づいて、１回目のテストに関する鍵データＤ３を生成する。
【００８９】
次にストリームデータ生成回路３２は、鍵データ生成回路３１から入力された鍵データＤ３に基づいて、１回目のテストに関するストリームデータＤ４を生成する。
【００９０】
次に演算部５４は、鍵データ生成回路３１から入力された鍵データＤ３に対して所定の演算を実行することにより、鍵データ生成回路３１用の１回目のテストに関する演算値を算出する。また、演算部５７は、ストリームデータ生成回路３２から入力されたストリームデータＤ４に対して所定の演算を実行することにより、ストリームデータ生成回路３２用の１回目のテストに関する演算値を算出する。
【００９１】
次に比較部５３は、演算部５４から入力された演算値（データＤ７Ａ）と、格納部５２から入力された期待値（データＤ６Ａ）とを比較することにより、鍵データ生成回路３１用の１回目のテストに関して演算値と期待値とが一致するか否かを判定し、その比較結果を示すデータＤ８Ａを生成する。また、比較部５６は、演算部５７から入力された演算値（データＤ７Ｂ）と、格納部５５から入力された期待値（データＤ６Ｂ）とを比較することにより、ストリームデータ生成回路３２用の１回目のテストに関して演算値と期待値とが一致するか否かを判定し、その比較結果を示すデータＤ８Ｂを生成する。
【００９２】
次にセレクタ５８は、鍵データ生成回路３１用の２回目のテストを実行するために、入力端子を共通鍵Ｄ１側から鍵データ生成回路３１側に切り替える。これにより鍵データ生成回路３１には、１回目のテストに関する鍵データＤ３が入力され、鍵データ生成回路３１は、１回目のテストに関する鍵データＤ３をテストパターンとして用いて、２回目のテストに関する鍵データＤ３を生成する。なお、３回目以降のテストにおいても、セレクタ５８の入力端子は鍵データ生成回路３１側に設定されている。
【００９３】
また、セレクタ５９は、ストリームデータ生成回路３２の２回目のテストを実行するために、入力端子を共通鍵Ｄ２側からストリームデータ生成回路３２側に切り替える。これによりストリームデータ生成回路３２には、１回目のテストに関するストリームデータＤ４が入力され、ストリームデータ生成回路３２は、１回目のテストに関するストリームデータＤ４をテストパターンとして用いて、２回目のテストに関するストリームデータＤ４を生成する。なお、３回目以降のテストにおいても、セレクタ５９の入力端子はストリームデータ生成回路３２側に設定されている。
【００９４】
以降は上記と同様の処理がテスト実行回数分だけ繰り返されることにより、各回のテストに関する比較結果を示すデータＤ８Ａ，Ｄ８Ｂが比較部５３，５６から出力される。
【００９５】
次に暗号・復号処理部２１は、指定されたテスト実行回数分のデータＤ８Ａ，Ｄ８Ｂを、テストコマンドに対する戻り値として、テスター装置２に送信する。
【００９６】
このように本実施の形態３に係る半導体記憶装置１によれば、セルフテスト処理部３４は、鍵データ生成回路３１が生成した鍵データＤ３に基づいて鍵データ生成回路３１の信頼性テストを実行し、ストリームデータ生成回路３２が生成したストリームデータＤ４に基づいてストリームデータ生成回路３２の信頼性テストを実行する。このように、鍵データ生成回路３１及びストリームデータ生成回路３２を個別にテストすることにより、鍵データ生成回路３１及びストリームデータ生成回路３２のどちらに故障が生じているかを正確に特定することが可能となる。
【００９７】
また、本実施の形態３に係る半導体記憶装置１によれば、抽出部５１は、鍵データ生成回路３１用の第１の期待値と、ストリームデータ生成回路３２用の第２の期待値とをテストコマンドから抽出する。また、格納部５２（第１の格納部）は、抽出部５１が抽出した第１の期待値を格納し、格納部５５（第２の格納部）は、抽出部５１が抽出した第２の期待値を格納する。また、演算部５４（第１の演算部）は、鍵データ生成回路３１が生成した鍵データＤ３に対して所定の演算を実行することにより、第１の演算値を出力し、演算部５７（第２の演算部）は、ストリームデータ生成回路３２が生成したストリームデータＤ４に対して所定の演算を実行することにより、第２の演算値を出力する。そして、比較部５３（第１の比較部）は、格納部５２に格納されている第１の期待値と演算部５４が出力した第１の演算値とを比較し、比較部５６（第２の比較部）は、格納部５５に格納されている第２の期待値と演算部５７が出力した第２の演算値とを比較し、比較部５３，５６による比較結果がテスター装置２に送信される。半導体記憶装置１内の比較部５３によって第１の期待値と第１の演算値とを比較することにより、鍵データ生成回路３１に故障が生じているか否かを適切に検査することが可能となる。また、半導体記憶装置１内の比較部５６によって第２の期待値と第２の演算値とを比較することにより、ストリームデータ生成回路３２に故障が生じているか否かを適切に検査することが可能となる。また、半導体記憶装置１からテスター装置２に第１の演算値及び第２の演算値を送信する必要がないため、両装置間の通信データ量を削減することが可能となる。
【００９８】
また、本実施の形態３に係る半導体記憶装置１によれば、セルフテスト処理部３４は、鍵データ生成回路３１が生成した鍵データＤ３を鍵データ生成回路３１に入力し、鍵データ生成回路３１に次の鍵データＤ３を生成させることにより、鍵データ生成回路３１の信頼性テストを複数回実行する。また、セルフテスト処理部３４は、ストリームデータ生成回路３２が生成したストリームデータＤ４をストリームデータ生成回路３２に入力し、ストリームデータ生成回路３２に次のストリームデータＤ４を生成させることにより、ストリームデータ生成回路３２の信頼性テストを複数回実行する。このように、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストを複数回実行することにより、テスト精度を向上することが可能となる。また、鍵データ生成回路３１が生成した鍵データＤ３を鍵データ生成回路３１に入力することによってテストパターンが更新され、ストリームデータ生成回路３２が生成したストリームデータＤ４をストリームデータ生成回路３２に入力することによってテストパターンが更新されるため、暗号・復号処理部２１自身によって複数のテストパターンを容易に作成することが可能となる。
【００９９】
また、本実施の形態３に係る半導体記憶装置１によれば、鍵データ生成回路３１及びストリームデータ生成回路３２の信頼性テストの実行回数は、テストコマンドによって指定される。このように、信頼性テストの実行回数をテスター装置２が指定することにより、要求されるテスト精度に応じて最適なテスト回数を容易に設定することが可能となる。
【０１００】
＜実施の形態４＞
図１０は、本発明の実施の形態４に係る暗号・復号処理部２１の構成を示す図である。図８に示した回路構成から格納部５２，５５及び比較部５３，５６の実装が省略されている。なお、本実施の形態４におけるテストコマンドのデータ構成は、図７と同様である。
【０１０１】
以下、暗号・復号処理部２１の信頼性テストを実行するための処理内容について、上記実施の形態３との相違点を中心に説明する。
【０１０２】
まずテスター装置２は、要求されるテスト精度に応じてテストの実行回数を決定する。
【０１０３】
次にテスター装置２は、鍵データ生成回路３１用の各テストの期待値と、ストリームデータ生成回路３２用の各テストの期待値とを個別に生成する。
【０１０４】
次にテスター装置２は、所定のコマンドＩＤと上記で求めたテストの実行回数とを含めることによってテストコマンド（図７）を生成し、当該テストコマンドを半導体記憶装置１に送信する。なお、テスター装置２は、上記で求めた各テストの期待値に関しては、半導体記憶装置１に送信することなく自身で保持する。
【０１０５】
次に半導体記憶装置１はテストコマンドを受信し、当該テストコマンドを暗号・復号処理部２１に入力する。暗号・復号処理部２１は、テストコマンドが入力されたことによってテストモードに移行し、セレクタ６０の入力端子を、通常モードのメモリアレイ１１側からテストモードの演算部５４，５７側に切り替える。
【０１０６】
次に抽出部５１は、テストコマンドからテスト実行回数を抽出し、テスト実行回数をデータＤ５として演算部５４，５７に入力する。なお、この時点では、セレクタ５８，５９の入力端子は共通鍵Ｄ１，Ｄ２側に設定されている。
【０１０７】
次に鍵データ生成回路３１は、セレクタ５８から入力された共通鍵Ｄ１に基づいて、１回目のテストに関する鍵データＤ３を生成する。
【０１０８】
次にストリームデータ生成回路３２は、鍵データ生成回路３１から入力された鍵データＤ３に基づいて、１回目のテストに関するストリームデータＤ４を生成する。
【０１０９】
次に演算部５４は、鍵データ生成回路３１から入力された鍵データＤ３に対して所定の演算を実行することにより、鍵データ生成回路３１用の１回目のテストに関する演算値を算出する。また、演算部５７は、ストリームデータ生成回路３２から入力されたストリームデータＤ４に対して所定の演算を実行することにより、ストリームデータ生成回路３２用の１回目のテストに関する演算値を算出する。
【０１１０】
次にセレクタ５８は、鍵データ生成回路３１用の２回目のテストを実行するために、入力端子を共通鍵Ｄ１側から鍵データ生成回路３１側に切り替える。これにより鍵データ生成回路３１には、１回目のテストに関する鍵データＤ３が入力され、鍵データ生成回路３１は、１回目のテストに関する鍵データＤ３をテストパターンとして用いて、２回目のテストに関する鍵データＤ３を生成する。なお、３回目以降のテストにおいても、セレクタ５８の入力端子は鍵データ生成回路３１側に設定されている。
【０１１１】
また、セレクタ５９は、ストリームデータ生成回路３２の２回目のテストを実行するために、入力端子を共通鍵Ｄ２側からストリームデータ生成回路３２側に切り替える。これによりストリームデータ生成回路３２には、１回目のテストに関するストリームデータＤ４が入力され、ストリームデータ生成回路３２は、１回目のテストに関するストリームデータＤ４をテストパターンとして用いて、２回目のテストに関するストリームデータＤ４を生成する。なお、３回目以降のテストにおいても、セレクタ５９の入力端子はストリームデータ生成回路３２側に設定されている。
【０１１２】
以降は上記と同様の処理がテスト実行回数分だけ繰り返されることにより、各回のテストに関する演算値を示すデータＤ７Ａ，Ｄ７Ｂが演算部５４，５７から出力される。
【０１１３】
次に暗号・復号処理部２１は、指定されたテスト実行回数分のデータＤ７を、テストコマンドに対する戻り値として、テスター装置２に送信する。
【０１１４】
次にテスター装置２は、半導体記憶装置１から受信した演算値（データＤ７Ａ，Ｄ７Ｂ）と、自身が保持している期待値とを各回のテスト毎に比較することにより、演算値と期待値とが一致するか否かを判定する。
【０１１５】
このように本実施の形態４に係る半導体記憶装置１によれば、演算部５４（第１の演算部）は、鍵データ生成回路３１が生成した鍵データＤ３に対して所定の演算を実行し、演算部５７（第２の演算部）は、ストリームデータ生成回路３２が生成したストリームデータＤ４に対して所定の演算を実行する。そして、演算部５４が出力した第１の演算値（データＤ７Ａ）と、演算部５７が出力した第２の演算値（データＤ７Ｂ）とがテスター装置２に送信される。テスター装置２によって期待値と第１の演算値とを比較することにより、鍵データ生成回路３１に故障が生じているか否かを適切に検査することが可能となる。また、テスター装置２によって期待値と第２の演算値とを比較することにより、ストリームデータ生成回路３２に故障が生じているか否かを適切に検査することが可能となる。また、半導体記憶装置１内に格納部５２，５５及び比較部５３，５６を実装する必要がないため、半導体記憶装置１の構成を簡略化することが可能となる。
【符号の説明】
【０１１６】
１  半導体記憶装置
２  テスター装置
１１  メモリアレイ
１２  メモリコントローラ
２１  暗号・復号処理部
３１  鍵データ生成回路
３２  ストリームデータ生成回路
３３  演算回路
３４  セルフテスト処理部
４１，５１  抽出部
４２，５２，５５  格納部
４３，５３，５６  比較部
４４，５４，５７  演算部
【図１】
2016091134.tif 000003
【図２】
2016091134.tif 000004
【図３】
2016091134.tif 000005
【図４】
2016091134.tif 000006
【図５】
2016091134.tif 000007
【図６】
2016091134.tif 000008
【図７】
2016091134.tif 000009
【図８】
2016091134.tif 000010
【図９】
2016091134.tif 000011
【図１０】
2016091134.tif 000012