(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと、該不揮発性メモリに対するデータの受け渡しを行うインターフェイスと、を有する半導体装置であって、前記インターフェイスは、
予め設定された複数のセキュリティーコードと、前記不揮発性メモリの特定エリアに書き込まれたロックコードと、前記半導体装置の試験を行う試験モード及び前記半導体装置を使用する通常モードのいずれかのモードとに従って、前記不揮発性メモリに書き込まれたデータのセキュリティーレベルを制御するセキュリティー論理部を有することを特徴とする半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記セキュリティーコードは、第１セキュリティーコードおよび第２セキュリティーコードを含み、
前記セキュリティー論理部は、
前記半導体装置の試験を行う試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに一致すればセキュリティーをオンして不一致ならばオフし、
前記半導体装置を使用する通常モードにおいて、前記第２セキュリティーコードが前記ロックコードに一致すればセキュリティーをオフして不一致ならばオンすることを特徴とする半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記セキュリティーコードは、さらに、第３セキュリティーコードを含み、
前記セキュリティー論理部は、前記試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに不一致で、前記第３セキュリティーコードが前記ロックコードに一致すれば、セキュリティーを、一部機能を除いてオンし、不一致ならばオフすることを特徴とする半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記セキュリティー論理部は、前記試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに不一致で、前記第３セキュリティーコードが前記ロックコードに一致したとき、予め定められた機能のみを実行可能にすることを特徴とする半導体装置。
【請求項５】
請求項４に記載の半導体装置において、
前記予め定められた機能は、前記半導体装置の不良解析において、初期解析用のコマンドにより実行される機能であることを特徴とする半導体装置。
【請求項６】
請求項１〜５のいずれか１項に記載の半導体装置において、
前記特定エリアは、前記不揮発性メモリのアドレス空間の中で最後に消去される領域であることを特徴とする半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記不揮発性メモリは、複数のバンクを有し、
前記特定エリアは、前記複数のバンクの中で最後に消去されるバンクに含まれることを特徴とする半導体装置。
【請求項８】
請求項１〜７のいずれか１項に記載の半導体装置において、
前記セキュリティーコードは、前記半導体装置の製造時におけるマスク焼き込み、または、電源クランプによって、前記インターフェイスに予め設定されることを特徴とする半導体装置。
【請求項９】
請求項１〜８のいずれか１項に記載の半導体装置において、
起動後のセキュリティーは、デフォルトでオン状態になっていることを特徴とする半導体装置。
【請求項１０】
請求項１〜９のいずれか１項に記載の半導体装置において、さらに、
ＣＰＵを有し、
前記不揮発性メモリに書き込まれたデータは、前記ＣＰＵを制御して所定の機能を実現するプログラムコードであることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願で言及する実施例は、半導体装置に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載した半導体装置が様々な分野で利用されている。具体的に、例えば、フラッシュメモリ等の不揮発性メモリを搭載したマイコン（マイクロコントローラ）は、各種の家電機器や情報機器、或いは、自動車の制御装置等に利用されている。
【０００３】
マイコンの不揮発性メモリには、例えば、システム製造者によりマイコンを制御するプログラム等の情報が書き込まれており、悪意のある第三者の不正なアクセスに対して、その不揮発性メモリに書き込まれた情報を保護するセキュリティー技術が開発されている。
【０００４】
一方、マイコンに予期しない不具合が生じた場合、例えば、マイコン製造者がそのマイコンに搭載された不揮発性メモリに書き込まれた情報を調べて不具合の原因を解析することも行われている。
【０００５】
ところで、従来、セキュリティー技術が適用された不揮発性メモリを搭載したマイコン（半導体装置）としては、様々なものが提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−３０１８５５号公報
【特許文献２】特開２００４−２２７５０９号公報
【特許文献３】特開２００３−２６３３６８号公報
【特許文献４】特開平０７−２７１７５１号公報
【特許文献５】特開平０９−１９８３１６号公報
【特許文献６】特開２００４−２８８２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように、従来、セキュリティー技術が適用された不揮発性メモリを搭載したマイコンが提案されているが、これは、例えば、一旦セキュリティーがオンに設定されると、不揮発性メモリ全体の消去（全消去：Chip Erase）しか行うことかできなくなる。
【０００８】
また、例えば、市場において、最終ユーザがマイコンを用いた製品の使用中に何らかの不具合（不良）が発生し、そのマイコンがシステム製造者に戻され、さらに、マイコン製造者に返品され、マイコン製造者が不良解析を行うことがある。
【０００９】
このとき、例えば、不揮発性メモリに格納されたプログラムを実行したときに不具合が生じるが、不揮発性メモリの全消去を行った後では確認することができない不良に関しては、マイコン製造者における不良解析が困難になる。
【００１０】
すなわち、従来のセキュリティー機能を有する不揮発性メモリを搭載したマイコンにおいて、一旦セキュリティーがオンに設定されると、不揮発性メモリの全消去しか行えないため、マイコン製造者は、不具合が起こったその状態を確認することができない。
【００１１】
なお、セキュリティー機能を持たない不揮発性メモリを搭載したマイコンに関しては、マイコン製造者で不良解析を行うことはできるが、そのようなマイコンは、悪意のある第三者の不正アクセスに対処することができず、システム製造者から敬遠されてしまう。
【課題を解決するための手段】
【００１２】
一実施形態によれば、不揮発性メモリと、該不揮発性メモリに対するデータの受け渡しを行うインターフェイスと、を有する半導体装置が提供される。
【００１３】
前記インターフェイスは、予め設定された複数のセキュリティーコードおよび前記不揮発性メモリの特定エリアに書き込まれたロックコードに従って、前記不揮発性メモリに書き込まれたデータのセキュリティーレベルを制御するセキュリティー論理部を有する。
【発明の効果】
【００１４】
開示の半導体装置は、各モードにおけるセキュリティーレベルを適切に制御することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】半導体装置の一例を示すブロック図である。
【図２】セキュリティーのオン／オフとアクセスの定義を説明するための図である。
【図３】出荷前の試験モードと、ユーザ（User）使用向けの通常モードそれぞれのセキュリティーコード名称とその格納場所を説明するための図である。
【図４】本実施形態の半導体装置における通常モードおよび試験モードとセキュリティーとの関係を説明するための図である。
【図５】本実施形態の半導体装置を概略的に示すブロック図である。
【図６】図５に示す半導体装置における不揮発性メモリを複数持つ場合のデータ格納領域の全消去（Chip Erase）の順序を説明するための図である。
【図７】図５に示す半導体装置におけるパワーオンリセット時の状態遷移を説明するための図である。
【図８】図５に示す半導体装置におけるパワーオンリセット後の動作を説明するためのフローチャートである。
【図９】図５における破線領域ＭＰ部分の第１実施例を示すブロック図（その１）である。
【図１０】図５における破線領域ＭＰ部分の第１実施例を示すブロック図（その２）である。
【図１１】図９および図１０に示す半導体装置に対してモード切り替えのために外部から入力する一例として、シリアルキー入力を説明するための図である。
【図１２】図９および図１０に示す半導体装置セキュリティー論理部の動作を説明するためのフローチャートである。
【図１３】図５に示す半導体装置におけるセキュリティー論理部の第２実施例を示すブロック図（その１）である。
【図１４】図５に示す半導体装置におけるセキュリティー論理部の第２実施例を示すブロック図（その２）である。
【図１５】図１３および図１４に示す半導体装置セキュリティー論理部の動作を説明するためのフローチャートである。
【図１６】図１３および図１４に示す半導体装置のセキュリティー論理部の第２実施例により追加される機能の一例を説明するための図である。
【図１７】本実施例の半導体装置に適用されるセキュリティーコードの例を説明するための図である。
【図１８】本実施例の半導体装置に適用されるシステム製造者が書き込むロックコードの例とその効果を説明するための図である。
【図１９】本実施例の半導体装置における通常モードと試験モード別に各ロックコードの場合のコマンド受付可否を説明するための図である。
【図２０】本実施例の半導体装置におけるロックコード格納領域のデータによる通常モードおよび試験モードのセキュリティー状態を説明するための図である。
【図２１】本実施例の半導体装置におけるセキュリティーコードおよびロックコードを時系列的に説明するための図（その１）である。
【図２２】本実施例の半導体装置におけるセキュリティーコードおよびロックコードを時系列的に説明するための図（その２）である。
【発明を実施するための形態】
【００１６】
まず、半導体装置の実施例を詳述する前に、半導体装置およびその問題点を図１および図２を参照して説明する。
【００１７】
図１は、半導体装置の一例を示すブロック図であり、不揮発性メモリへのアクセスの種類とセキュリティーの意味を説明するためのものである。また、図２は、セキュリティーのオン／オフとアクセスの定義を説明するための図である。
【００１８】
図１において、参照符号１は半導体装置（マイクロコントローラ）、１１は不揮発性メモリ、１２はインターフェイス（Ｉ／Ｆ：InterFace）、１３はＣＰＵ（Central Processing Unit）、そして、１４はオンチップデバッガ（ＯＣＤ：On Chip Debugger）を示す。
【００１９】
マイクロコントローラ（マイコン）１は、不揮発性メモリ１１、インターフェイス１２、ＣＰＵ１３およびＯＣＤ１４を有する。
【００２０】
不揮発性メモリ１１は、例えば、フラッシュメモリやＥＥＰＲＯＭ等の不揮発性の半導体記憶装置であり、システム製造者によりマイコン１（ＣＰＵ１３）を制御するプログラム等の情報が書き込まれる。
【００２１】
ここで、ＯＣＤ１４は、マイコン１に内蔵されたエミュレーションコントロールやブレークおよびトレース機能などを利用するデバッグ装置であり、デバッグ時にターゲット資源を１００％活用することができる。
【００２２】
なお、不揮発性メモリ１１に対するアクセスの種類としては、例えば、オンチップデバッグ（ＯＣＤ）モードＡＭ１、外部バス（外バス）モードＡＭ２、ライタモードＡＭ３およびＣＰＵモードＡＭ４がある。
【００２３】
ＯＣＤモードＡＭ１は、ＯＣＤ１４がＣＰＵ１３を乗っ取って自由にアクセスが可能なモードであり、また、外部バスモードＡＭ２は、マイコン１と外部回路を結ぶ外部バスを使うモードである。ここで、例えば、外部バスにメモリを置くと、そのメモリに対して不揮発性メモリ１１のデータを取り出すことが可能になる。
【００２４】
ライタモードＡＭ３は、例えば、専用のパラレルライタによりＣＰＵ１３を介さずに、不揮発性メモリ１１に直接データ書き込みを行うモードである。また、ＣＰＵモードＡＭ４は、内部回路を結ぶ内部バスを使用して不揮発性メモリ１１をアクセスするもので、不揮発性メモリ１１へのアクセス制限はない。なお、パラレルライタは、例えば、オフボードでのみ使用可能になっている。
【００２５】
図２に示されるように、例えば、システム製造者がＣＰＵ１３を制御するプログラム等の情報を不揮発性メモリ１１に書き込んだ後、セキュリティーをオンに設定すると、ＣＰＵモードＡＭ４以外のアクセス（外部からのアクセス）は、通常、全消去（Chip Erase）だけになる。
【００２６】
すなわち、不揮発性メモリ１１に対する外部からのアクセスは、セキュリティーがオフのときは、消去，読み出しおよび書き込みの全ての命令を受け付ける（消去／読み出し／書き込みの全てが可能）が、セキュリティーがオンのときは、全消去のみ受け付ける。
【００２７】
なお、ＣＰＵ１３から不揮発性メモリ１１に対するアクセスは、セキュリティーのオン／オフに関わらず、消去／読み出し／書き込みの全てが可能である。
【００２８】
そのため、例えば、市場においてマイコンを用いた製品に不良が発生した場合、そのマイコンがマイコン製造者に返却されても、セキュリティーがオンになっていると、実際の不良状態を再現して十分な解析を行うことが困難になる。
【００２９】
或いは、例えば、セキュリティーがオフになっているマイコンを用いた製品を市場に出した場合には、不揮発性メモリに格納された情報が第三者によって自由に消去／読み出し／書き込みが可能になるため、システム製造者から敬遠され、現実的ではない。
【００３０】
以下、半導体装置の各実施例を、添付図面を参照して詳述する。図３は、出荷前の試験モードと、ユーザ（User）使用向けの通常モードそれぞれのセキュリティーコード名称とその格納場所を説明するための図である。また、図４は、本実施形態の半導体装置における通常モードおよび試験モードとセキュリティーとの関係を説明するための図である。
【００３１】
図３に示されるように、セキュリティーコードとして、例えば、出荷前の試験モードのための試験セキュリティーコード、並びに、システム製造者および最終ユーザの通常モードのためのユーザセキュリティーコードを半導体装置（マイコン）１に持たせるようにする。
【００３２】
ここで、セキュリティーコード（試験セキュリティーコードおよびユーザセキュリティーコード）は、インターフェイス１２に対して、予め固定の期待値として用意する。
【００３３】
すなわち、試験セキュリティーコードおよびユーザセキュリティーコードは、例えば、インターフェイス１２に対して製造段階でマスクにより焼き込むか、或いは、ヒューズの溶断等の電源クランプ処理により物理的に設定する。
【００３４】
これら試験セキュリティーコードおよびユーザセキュリティーコードは、例えば、不揮発性メモリの所定領域（ロックコード格納領域ＬＣＡ）に格納されたロックコードと比較され、セキュリティーの制御が行われる。そして、試験モードと通常モードを切り替えるモード切り替えの論理が構築される。
【００３５】
なお、セキュリティーコードおよびロックコードを何ビットにするかは、例えば、マイコンに依存する。また、ユーザセキュリティーコードを利用するのは、例えば、不揮発性メモリ１１に対して作成（開発）したプログラムを書き込むマイコンのシステム製造者である。
【００３６】
すなわち、図４に示されるように、試験モードにおいては、セキュリティーコードとロックコードが一致したときにセキュリティーがオンし、また、セキュリティーコードとロックコードが不一致のときはセキュリティーがオフする。
【００３７】
一方、通常モードにおいては、セキュリティーコードとロックコードが一致したときにセキュリティーがオフし、また、セキュリティーコードとロックコードが不一致のときはセキュリティーがオンする。
【００３８】
ここで、試験モードにおいて、セキュリティーコードとロックコードが不一致のとき、セキュリティーがオフするので、これを利用して不揮発性メモリに対して読み出し／書き込み/消去の不良解析（初期解析）を行うことはできる。
【００３９】
なお、ロックコードは、システム製造者により不揮発性メモリ１１に書き込まれるが、後に詳述するように、不揮発性メモリ１１のアドレス空間の中で最後に消去されるアドレスのメモリ領域を書き込みロックコードの格納領域とするのが好ましい。
【００４０】
このように、本実施形態の半導体装置によれば、通常モードから試験モードに切り替えることによって、半導体装置に搭載される不揮発性メモリに格納されたデータに関して、従来方式よりセキュリティーレベルを落とすことなく、不良発生の際の解析を可能にするかしないかを容易に選択することができる。
【００４１】
すなわち、各モード（通常モードおよび試験モード）におけるセキュリティーレベルを適切に制御することができる。
【００４２】
図５は、本実施形態の半導体装置を概略的に示すブロック図であり、また、図６は、図５に示す半導体装置における不揮発性メモリを複数持つ場合のデータ格納領域の全消去（Chip Erase）の順序を説明するための図である。
【００４３】
なお、図５において、破線で囲った領域ＭＰは、後述する図９および図１０に示す第１実施例のブロック図、並びに、図１３および図１４に示す第２実施例のブロック図で描いた領域に対応している。
【００４４】
図５に示されるように、半導体装置（マイコン）１は、不揮発性メモリ１１、インターフェイス（Ｉ／Ｆ）１２、ＣＰＵ１３、入出力部（Ｉ／Ｏ）１５およびポートマルチプレクサ１６を有する。
【００４５】
インターフェイス１２は、データマスク部２１およびセキュリティー制御部２２を有するセキュリティー論理部２０、並びに、マルチプレクサ２３を有し、データマスク部２１は、コマンドマスク論理部２１１および読み出しデータマスク論理部２１２を有する。
【００４６】
不揮発性メモリ１１は、組み込み式不揮発性メモリ（ｅＮＶＭ：embedded Non-Volatile Memory：組み込みフラッシュメモリ）とされ、その一部には、システム製造者等のユーザがセキュリティーを制御するためのロックコード格納領域ＬＣＡが設けられている。
【００４７】
ここで、ロックコード格納領域ＬＣＡは、ｅＮＶＭ１１のアドレス空間の中で最後に消去されるアドレス領域に設定するのが好ましい。これは、ロックコードが消去されたときには、不揮発性メモリ１１の他のアドレスにデータが残っていないことを保証するためである。
【００４８】
具体的に、例えば、図６に示されるように、不揮発性メモリ１１が複数フラッシュマクロ（例えば、４つのフラッシュマクロMacro０〜３）を有する場合、まず、Macro３のプリプログラム((1)Pre-PGM))および消去((2)Erase Pulse))を行う。
【００４９】
さらに、Macro２の(3)Pre-PGMおよび(4)Erase Pulse、並びに、Macro１の(5)Pre-PGMおよび(6)Erase Pulseを行い、最後に、Macro０の(7)Pre-PGMおよび(8)Erase Pulseを行うが、ＬＣＡは、最後に消去されるMacro０の最後の領域に設けられる。
【００５０】
すなわち、ＬＣＡを持たないマクロ（Macro３〜１）から消去を行い、ＬＣＡを有するマクロ（Macro０）が最後に消去されるようにする。そして、Pre-PGMの完了を検出できるステータスフラグを監視して、ＬＣＡを持たないマクロ（Macro３〜１）がPre-PGMが終わっていることを確認してから、ＬＣＡを有するマクロ（Macro０）の消去を開始する。
【００５１】
これにより、例えば、セキュリティーオン時で１つ目のMacro３に全消去（Chip Erase）コマンドが入った後、異常があってPre-PGMが終わる前に止まってしまった場合でも、セキュリティーの確保が可能になる。
【００５２】
すなわち、例えば、Macro３〜１のPre-PGMが完了したことを確認していないと、ＬＣＡを有する最後のMacro０が消去されてセキュリティーが解除されることがないため、Macro３〜１（Macro３〜０）のセキュリティーが確保されることになる。
【００５３】
ここで、マルチプレクサ２３は、モード信号ｍｏｄｅに従って、外部からのデータ（不揮発性メモリ若しくはｅＮＶＭテストパラレルライタからのデータ）、或いは、ＣＰＵ１３からのデータを選択してデータマスク部２１（コマンドマスク論理部２１１）に供給する。
【００５４】
また、ポートマルチプレクサ１６は、モード信号ｍｏｄｅに従って、データマスク部２１（読み出しデータマスク論理部２１２）からのデータ、或いは、ＣＰＵ１３からのデータを選択して外部に出力する。
【００５５】
なお、セキュリティーコード（試験セキュリティーコードおよびユーザセキュリティーコード）は、例えば、インターフェイス１２に対して製造段階でマスクにより焼き込むか、或いは、ヒューズの溶断等の電源クランプ処理により物理的に設定される。また、セキュリティーコードを何ビットにするかは、例えば、マイコンに依存するのは前述した通りである。
【００５６】
図７は、図５に示す半導体装置におけるパワーオンリセット時の状態遷移を説明するための図であり、また、図８は、図５に示す半導体装置におけるパワーオンリセット後の動作を説明するためのフローチャートである。
【００５７】
図７に示されるように、パワーオフ状態Ｓ１からパワーオンすると、状態Ｓ２において、パワーオンリセット（Power On Reset）の初期化処理が行われて、セキュリティーオン，ロックコードの読み出しおよび判定が行われる。
【００５８】
そして、状態Ｓ２における判定結果に従って、状態Ｓ３のセキュリティーオン、または、状態Ｓ４のセキュリティーオフに遷移する。
【００５９】
図８に示されるように、ステップＳＴ１１において、パワーオンリセットすると、状態ＳＴ１２のセキュリティーオンに遷移し、さらに、ステップＳＴ１３に進んで、不揮発性メモリ１１のロックコード格納領域ＬＣＡに格納されたデータを読み出す。
【００６０】
さらに、ステップＳＴ１４に進んで、ＬＣＡから読み出したデータ（ロックコード）と固定の期待値（インターフェイス１２に用意したセキュリティーコード）との比較を行う。
【００６１】
そして、状態ＳＴ１５に遷移する。試験モードの場合はステップＳＴ１４で、ロックコードと試験セキュリティーコードが一致すれば、セキュリティーをオンし、逆に、ロックコードと試験セキュリティーコードが一致しなければ、セキュリティーをオフとなる。
【００６２】
通常モードの場合はステップＳＴ１４で、ロックコードとユーザセキュリティーコードが一致すれば、セキュリティーをオフし、逆に、ロックコードとユーザセキュリティーコードが一致しなければ、セキュリティーをオンとなる。
【００６３】
図９および図１０は、図５における破線領域ＭＰ部分の第１実施例を示すブロック図であり、また、図１１は、図９および図１０に示す半導体装置に対してモード切り替えのために外部から入力する一例として、シリアルキー入力を説明するための図である。
【００６４】
また、図９および図１０において、不揮発性メモリ（ｅＮＶＭ）１１，コマンドマスク論理部２１１および読み出しデータマスク論理部２１２以外は、セキュリティー制御部２２に相当する。
【００６５】
図９および図１０に示されるように、図５におけるセキュリティー制御部２２は、複数の比較部１３１〜１３７、オアゲート１４１，１４２、ナンドゲート１４３、アンドゲート１４４、セレクタ１４５，１４６、フリップフロップ１４７および有限状態機械１５０を有する。
【００６６】
有限状態機械（Finite State Machine）１５０は、リセット状態から不揮発性メモリ１１のアクセス可能を待ってＬＣＡに格納されたロックコードを読み出し、セキュリティー判断を行って、不揮発性メモリ１１に対するアクセス許可を行う。
【００６７】
各比較部１３１〜１３７は、比較結果が一致すると『１』を出力するようになっている。ここで、比較部１３２は、不揮発性メモリ１１からのロックコードとセキュリティーコードＡ（第１セキュリティーコード：試験セキュリティーコード）の比較を行う。なお、セキュリティーコードＡは、例えば、後述する図１７の０ｘ１２３４ｈに対応する。
【００６８】
また、比較部１３３および１３４は、不揮発性メモリ１１からのロックコードとセキュリティーコードＣ１およびＣ２（第２セキュリティーコード：ユーザセキュリティーコード）の比較を行う。なお、セキュリティーコードＣ１およびＣ２は、例えば、図１７の０ｘＦＦＦＦｈおよび０ｘＡＡ５５ｈに対応する。
【００６９】
ナンドゲート１４３は、比較部１３１および１３２の出力を受け取り、オアゲート１４１は、比較部１３３および１３４の出力を受け取り、また、アンドゲート１４４は、比較部１３１およびオアゲート１４１の出力を受け取り、ゲート１４３および１４４の出力は、セレクタ１４５に供給されている。
【００７０】
セレクタ１４５は、例えば、図１１に示すような複数のフリップフロップＦＦ１〜ＦＦ４によるシリアルキーＱ１〜Ｑ４（モード信号ｍｏｄｅ）に従って、試験モードまたは通常モードが選択される。
【００７１】
まず、フリップフロップＦＦ１〜ＦＦ４に対して、データ入力（Data In）からシリアルデータを与えてクロック（Clock）により４ビットのシリアルキーＱ１〜Ｑ４を書き込む。
【００７２】
そして、フリップフロップＦＦ１〜ＦＦ４に格納されたシリアルキーＱ１〜Ｑ４を読み出してモード信号ｍｏｄｅとして与え、試験／通常モードの選択を行う。なお、シリアルキーＱ１〜Ｑ４は４ビットに限定されるものではなく、様々なものを適用することができるのはいうまでもない。
【００７３】
セレクタ（マルチプレクサ）１４６は、セレクタ１４５の出力により制御され、セレクタ１４６の出力は、フリップフロップ１４７を介してセキュリティフラグＳＦとして、コマンドマスク論理部２１１および読み出しデータマスク論理部２１２に供給される。
【００７４】
コマンドマスク論理部２１１は、オアゲート１４２の出力およびセキュリティフラグＳＦを受け取るアンドゲート１１２、並びに、アンドゲート１１２の出力により制御されるセレクタ１１１を有する。
【００７５】
オアゲート１４２は、比較部１３５および１３６の出力を受け取るが、比較部１３５および１３６は、それぞれコマンド入力端子を介して供給される信号ＤＩＮ［７：０］と信号０ｘＡ０および０ｘ３０を比較する。また、セレクタ１１１は、信号ＤＩＮ［７：０］および信号０ｘＦ０を受け取って、アンドゲート１１２の出力により選択された信号を不揮発性メモリ１１に供給する。
【００７６】
ここで、比較部１３５および１３６に供給する信号０ｘＡ０および０ｘ３０、並びに、セレクタ１１１に供給する信号０ｘＦ０は、ＪＥＤＥＣ標準型のコマンド方式を想定したものになっているが、これに限定されるものではない。
【００７７】
読み出しデータマスク論理部２１２は、比較部１３７の出力を反転入力で受け取ると共にセキュリティフラグＳＦを受け取るアンドゲート１２２、並びに、アンドゲート１２２の出力により制御されるセレクタ１２１を有する。なお、比較部１３７は、モード信号ｍｏｄｅ（例えば、シリアルキー）とＣＰＵモード（ＡＭ４）を比較する。
【００７８】
そして、本第１実施例の半導体装置において、セキュリティフラグＳＦが『０』のときは、許可コマンドが全て（all）になり、不揮発性メモリ１１に対する消去／読み出し／書き込みの全てのアクセスが可能になる。
【００７９】
一方、ＳＦが『１』のときは、許可コマンドが全消去（Chip Erase）のみになり、不揮発性メモリ１１の全消去だけが可能になり、他の読み出し／書き込み等のアクセスは禁止される。
【００８０】
なお、シリアルキー（モード信号ｍｏｄｅ）は、例えば、マイコン製造者により管理され、半導体装置（マイコン）を試験モードにしたいときに、マイコン製造者が外部から入力する。
【００８１】
図１２は、図９および図１０に示す半導体装置セキュリティー論理部の動作を説明するためのフローチャートである。まず、リセット状態において、例えば、後述するステップＳＴ１０４において試験モードに設定した場合には、シリアルキーＱ１〜Ｑ４を入力しておく。
【００８２】
リセット（パワーオンリセット）すると、ステップＳＴ１０１において、不揮発性メモリ１１の起動を待ち、ステップＳＴ１０２において、不揮発性メモリ１１が起動したと判定すると、ステップＳＴ１０３に進んでＬＣＡからロックコードを読み出す。
【００８３】
次に、ステップＳＴ１０４に進んで、動作モードが試験モードか否かを判別する。ステップＳＴ１０４において、試験モードであると判別すると、ステップＳＴ１０５に進んで、セキュリティーコードＡ（試験セキュリティーコード）を読み出す。
【００８４】
さらに、ステップＳＴ１０６に進んで、セキュリティーコードＡがロックコードに一致するか否かを判別する。ステップＳＴ１０６において、セキュリティーコードＡがロックコードに一致すると判別すると、ステップＳＴ１０７に進み、セキュリティーをオン状態にする。
【００８５】
このとき、不揮発性メモリ１１に対しては、チップの全消去のみが受け付け可能で、外部から不揮発性メモリ１１に格納されたデータの読み出し等は行うことはできない。
【００８６】
すなわち、試験モードにおいて、例えば、インターフェイス１２に設定された試験セキュリティーコードと同じコードが、不揮発性メモリ１１のロックコード格納領域ＬＣＡに書き込まれていると、セキュリティーがオンして全消去以外は行うことができない。
【００８７】
一方、ステップＳＴ１０６において、セキュリティーコードＡがロックコードに一致しないと判別すると、ステップＳＴ１１０に進み、セキュリティーをオフ状態にする。このとき、外部から不揮発性メモリ１１に対して、読み出し，書き込みおよび消去等の全てのコマンドが受け付け可能になる。
【００８８】
また、ステップＳＴ１０４において、試験モードではないと判別すると、すなわち、通常モードであると判別すると、ステップＳＴ１０８に進んで、セキュリティーコードＣ（ユーザセキュリティーコード）を読み出す。
【００８９】
さらに、ステップＳＴ１０９に進んで、セキュリティーコードＣがロックコードに一致するか否かを判別する。ステップＳＴ１０９において、セキュリティーコードＣがロックコードに一致すると判別すると、ステップＳＴ１１０に進み、セキュリティーをオフ状態にする。
【００９０】
一方、ステップＳＴ１０９において、セキュリティーコードＣがロックコードに一致しないと判別すると、ステップＳＴ１０７に進み、セキュリティーをオン状態にする。
【００９１】
そして、ステップＳＴ１０７またはＳＴ１１０によるセキュリティーの設定が行われると、ＣＰＵ１３、或いは、半導体装置の外部から不揮発性メモリ１１に対するアクセスの許可（制限）が行われる。ここで、ステップＳＴ１０７またはＳＴ１１０によるセキュリティーの設定が行われるまで、ＣＰＵ／外部からのアクセスは一切受け付けないようになっている。
【００９２】
このように、本第１実施例の半導体装置（不揮発性メモリを有するマイコン）によれば、マイコン製造者の出荷前試験では、消去／読み出し／書き込みが行えるように、試験前や試験中にセキュリティーがオン状態にならないようにすることができる。
【００９３】
また、例えばシステム製造者が、不揮発性メモリにプログラムコードの書き込みをするとき、ＬＣＡにセキュリティーコードＡ（試験セキュリティーコード）と同じ値を書き込まないでおけば、セキュリティーがオン状態にならないようにすることができる。
【００９４】
さらに、システム製造者が不揮発性メモリにプログラムコードを書き終わった後、セキュリティーをオンに設定したら、つまりＬＣＡにセキュリティーコードＡ（試験セキュリティーコード）と同じコードを書き込むと、プログラムコードを外部からのアクセスでは読み取られないようにしておくことができる。
【００９５】
そして、一旦セキュリティーをオンにしたら、外部から悪意のある操作がなされた場合でも、全消去（Chip Erase）以外ではセキュリティーが外れることがないようにすることができる。さらに、一旦セキュリティーをオンにした後、市場でプログラムコードの修正が必要になったときには、システム製造者は、書き換え（全消去の後の書き換え）ができるようにし、その修正後、またセキュリティーをオンにすることもできる。
【００９６】
図１３および図１４は、図５に示す半導体装置におけるセキュリティー論理部の第２実施例を示すブロック図であり、前述した図５における破線領域ＭＰに対応する。
【００９７】
図１３および図１４と、前述した図９および図１０との比較から明らかなように、本第２実施例の半導体装置では、不揮発性メモリ１１からのロックコードとセキュリティーコードＢの比較を行う比較部１３８が設けられている。
【００９８】
なお、セキュリティーコードＢ（第３セキュリティーコード：初期解析セキュリティーコード）は、例えば、後述する図１７の０ｘ５６７８ｈに対応する。
【００９９】
さらに、本第２実施例の半導体装置では、比較部１３９および１４０、ノアゲート１５１、アンドゲート１５２および１５３、セレクタ１５４、並びに、フリップフロップ１５５も設けられている。
【０１００】
比較部１３９は、不揮発性メモリ１１のテストモード入力に供給される信号である試験モードと初期解析に使いたい動作モードの比較を行って、その出力を読み出しデータマスク論理部２１２に供給する。
【０１０１】
比較部１４０は、シリアルキー（モード信号ｍｏｄｅ）が試験モードに一致するかを比較するためのもので、その出力は、比較部１３１および１３８の出力と共に、３入力アンドゲート１５３に供給される。
【０１０２】
セレクタ１５４は、アンドゲート１５３の出力により制御され、その出力は、フリップフロップ１５５を介して解析可能化信号ＡＥＳとしてコマンドマスク論理部２１１および読み出しデータマスク論理部２１２に供給される。
【０１０３】
読み出しデータマスク論理部２１２は、セレクタ１２１およびアンドゲート１２２に加えて、アンドゲート１２３およびオアゲート１２４を有する。アンドゲート１２３は、解析可能化信号ＡＥＳおよび比較部１３９の出力を受け取り、また、オアゲート１２４は、アンドゲート１２３の出力および比較部１３７の出力を受け取る。なお、オアゲート１２４の出力は、アンドゲート１２２の反転入力に供給される。
【０１０４】
そして、本第２実施例の半導体装置において、セキュリティフラグＳＦが『０』で解析可能化信号ＡＥＳが『０』のときは、全コマンドが許可となる。すなわち、不揮発性メモリ１１に対する消去／読み出し／書き込みの全てのアクセスが可能（セキュリティーレベル０）になる。
【０１０５】
また、ＳＦが『１』でＡＥＳが『０』のときは、許可コマンドが全消去（Chip Erase）のみになり、不揮発性メモリ１１の全消去だけが可能（セキュリティーレベル２）になり、他の読み出し／書き込み等のアクセスは禁止される。
【０１０６】
さらに、ＳＦが『１』でＡＥＳが『１』のときは、許可コマンドが全消去、並びに、初期解析に使いたいコマンド（初期解析用コマンド）のみになり、不揮発性メモリ１１の全消去および初期解析用コマンドだけが可能（セキュリティーレベル１）になる。
【０１０７】
このように、本第２実施例の半導体装置によれば、セキュリティーコードＡおよびＣに加えて、セキュリティーコードＢにより、試験モードにおいて、初期解析用コマンドの受け付けを可能にすることができる。
【０１０８】
なお、セキュリティーコードＢは、１つの初期解析用コマンドに対応した１つに限定されるものではなく、例えば、複数のセキュリティーコードＢによってさらに多くのセキュリティーレベルを設定することも可能である。
【０１０９】
図１５は、図１３および図１４に示す半導体装置セキュリティー論理部の動作を説明するためのフローチャートである。また、図１６は、図１３および図１４に示す半導体装置のセキュリティー論理部の第２実施例により追加される機能の一例を説明するための図である。
【０１１０】
図１５と前述した図１２との比較から明らかなように、図１３および図１４に示す第２実施例の半導体装置において、ステップＳＴ１０１〜ＳＴ１１０の処理は、実質的に第１実施例のものと同様である。
【０１１１】
ここで、ステップＳＴ１０７におけるセキュリティーのオン状態は、上述したセキュリティーレベル２に対応し、また、ステップＳＴ１１０におけるセキュリティーのオフ状態は、前述したセキュリティーレベル０に対応する。
【０１１２】
前述した図１２では、ステップＳＴ１０６において、セキュリティーコードＡがロックコードに一致しないと判別すると、ステップＳＴ１１０に進んで、セキュリティーをオフ状態にしたが、図１５では、ステップＳＴ１１１に進む。
【０１１３】
すなわち、ステップＳＴ１０６において、セキュリティーコードＡがロックコードに一致しないと判別すると、ステップＳＴ１１１に進んで、セキュリティーコードＢ（初期解析セキュリティーコード）を読み出してステップＳＴ１１２に進む。
【０１１４】
ステップＳＴ１１２において、セキュリティーコードＢがロックコードに一致すると判別すると、ステップＳＴ１１３に進み、セキュリティーをオン状態（セキュリティーレベル１）にする。
【０１１５】
ここで、セキュリティーレベル１は、ステップＳＴ１０７における許可コマンドが全消去だけのセキュリティーレベル２（セキュリティーがオン状態）とは異なり、初期解析用コマンドも許可コマンドに含まれることになる。
【０１１６】
すなわち、試験モードにおいて、例えば、インターフェイス１２に設定されたセキュリティーコードＢ（初期解析セキュリティーコード）と同じコードが、不揮発性メモリ１１のロックコード格納領域ＬＣＡに書き込まれていると、全消去以外に、例えば、不良解析も行うことが可能になる。
【０１１７】
なお、ステップＳＴ１１２において、セキュリティーコードＢがロックコードに一致しないと判別すると、ステップＳＴ１１０に進んで、セキュリティーをオフ状態（セキュリティーレベル０）にする。
【０１１８】
ここで、セキュリティーコードＢがロックコードに一致して受け付け可能とされる初期解析用コマンドとしては、例えば、図１６に示されるような追加機能を可能にする。
【０１１９】
すなわち、図１６の例は、例えば、システム製造者が不揮発性メモリ１１に書き込んだデータ自体を読み出すことはできないが、セクター単位（セクター０，セクター１，…）のメモリセルにおける閾値電圧Ｖｔの分布を取得する機能を示している。
【０１２０】
具体的に、図１６では、セクター３において、そのセクター３に書き込まれたデータに応じた閾値電圧とビット数との関係を示しており、例えば、データ『１』および『０』の閾値電圧になっているメモリセルの分布により不良解析を行う。
【０１２１】
すなわち、例えば、市場で不揮発性メモリを搭載したマイコンが不良になって、マイコン製造者に返品されたときに、不揮発性メモリ１１のロックコード格納領域ＬＣＡにセキュリティーコードＢ（初期解析セキュリティーコード）と同じコードが書き込まれていれば、不揮発性メモリの全消去を行う前に、シリアルキー入力で試験モードにし、セクター単位の閾値電圧の分布による不良解析が可能になる。
【０１２２】
なお、セキュリティーコードＢがロックコードに一致して受け付け可能とされる初期解析用コマンドは、上記のセクター単位の閾値電圧の分布以外に、様々なものを設計時に選ぶことができ、その数も１つに限定されるものではない。
【０１２３】
このように、本第２実施例の半導体装置によれば、前述した第１実施例の半導体装置の効果に加えて、もし、市場で不揮発性メモリの不良が発生した際は、システム製造者がマイコン製造者に所定の初期解析用コマンドに基づく不良解析を行わせるよう選択することができる。
【０１２４】
すなわち、マイコン製造者は、システム製造者が設定（許容）した初期解析セキュリティーコードに応じた不良解析を行うことが可能になる。なお、ここで言う不良解析とは、例えば、消去／読み出し／書き込みにより、メモリ内の異常なビットを特定し、或いは、異常電流を見つけることを意味する。
【０１２５】
図１７は、本実施例の半導体装置に適用されるセキュリティーコードの例を説明するための図であり、また、図１８は、本実施例の半導体装置に適用されるシステム製造者が書き込むロックコードの例とその効果を説明するための図である。
【０１２６】
さらに、図１９は、本実施例の半導体装置における通常モードと試験モード別に各ロックコードの場合のコマンド受付可否を説明するための図である。そして、図２０は、本実施例の半導体装置におけるロックコード格納領域のデータによる通常モードおよび試験モードのセキュリティー状態を説明するための図であり、図１９のコード例を使って通常モードおよび試験モードとロックコード格納領域のデータとの関係を説明するものである。
【０１２７】
まず、図１７に示されるように、半導体装置が１６ビットマイコンの場合、セキュリティーコードＡ（第１セキュリティーコード：試験セキュリティーコード）は、例えば、０ｘ１２３４ｈに設定される。
【０１２８】
また、セキュリティーコードＣ（Ｃ１，Ｃ２：第２セキュリティーコード：ユーザセキュリティーコード）は、例えば、０ｘＦＦＦＦｈ，０ｘＡＡ５５ｈに設定される。
【０１２９】
さらに、セキュリティーコードＢ（第３セキュリティーコード：初期解析セキュリティーコード）は、例えば、０ｘ５６７８ｈに設定される。なお、セキュリティーコードＢも、試験モードにおけるセキュリティーを制御するという意味では、試験セキュリティーコードに含まれる。
【０１３０】
これらセキュリティーコードＡ，Ｂ，Ｃは、前述したように、例えば、インターフェイス１２に対して製造段階でマスクにより焼き込むか、或いは、ヒューズの溶断等の電源クランプ処理により物理的に設定される。
【０１３１】
ここで、セキュリティーコードＣに関して、例えば、不揮発性メモリ１１の全消去（Chip Erase）を行うと、メモリセルアレイは全てデータ『１』になるので、ロックコード格納領域ＬＣＡも０ｘＦＦＦＦｈになる。すなわち、不揮発性メモリ１１の全消去後に、セキュリティーがオンにならないように、全消去のデータに対応するコード０ｘＦＦＦＦｈをユーザセキュリティーコード（第２セキュリティーコード）に設定するのが好ましい。
【０１３２】
また、セキュリティーコードＣに関して、例えば、マイコンをパッケージングした後の出荷前試験（ＦＴ試験：最終試験）では通常モードの扱いになる。そのため、例えば、ＦＴ試験でＬＣＡが０ｘＡＡ５５になるようなパターンを使用する場合、それに対応してコード０ｘＡＡ５５をユーザセキュリティーコードに設定するのが好ましい。
【０１３３】
これにより、ＦＴ試験中にセキュリティーがオンにならず、例えば、試験の途中に使用したパターンの状態で再測にまわった場合でも、全消去を行ってセキュリティーを解除する手間が不要になる。
【０１３４】
セキュリティーコードＡおよびＢに関して、例えば、０ｘＦＦＦＦｈは、試験中に行われる不揮発性メモリ１１の全消去によってセキュリティーがオンしてしまうことになるため、使用することはできない。
【０１３５】
また、セキュリティーコードＡおよびＢは、例えば、プロセスアウト後のメモリセルデータから遠い値にしておく。例えば、不揮発性メモリがフラッシュメモリの場合、プロセスアウト後ではメモリセルのデータはどちらかというと全て『１』に近い状態になっているため、ロックコード格納領域ＬＣＡも０ｘＦＦＦＦｈに近い値になっている。
【０１３６】
すなわち、フラッシュメモリのロックコード格納領域ＬＣＡに０ｘＦＦＦＦｈに近い値（例えば、０ｘＦＦＦＥｈなど）を設定すると、試験を行う際、起動後にロックコードと試験セキュリティーコードが一致してセキュリティーがオンになる確率が高くなる。そこで、セキュリティーコードＡおよびＢは、例えば、０ｘＦＦＦＦｈから遠い値に設定するのが好ましい。
【０１３７】
図１８は、ユーザ（例えば、システム製造者）に通知するコード、すなわち、ユーザがロックコード格納領域ＬＣＡに設定するロックコードの例ａ〜ｃとセキュリティー・初期解析効果の例を示している。
【０１３８】
すなわち、図１８〜図２０に示されるように、例えば、システム製造者（ユーザ）は、図１７のセキュリティーコードＡ〜Ｃの通知を受け、ロックコード格納領域ＬＣＡにロックコードａ〜ｃを書き込む。
【０１３９】
具体的に、セキュリティーコードＡ〜Ｃが図１７の具体例の場合、まず、ＬＣＡに対してロックコードａ（ｘ１２３４ｈ）を書き込むと、セキュリティーコードＡに一致するため、通常モードおよび試験モードのいずれのモードにおいても、全消去（Chip Erase）コマンドのみしか受け付けない。
【０１４０】
すなわち、ロックコードａは、１番強固なセキュリティーレベル（レベル２）で、通常モードだけでなく試験モードにおいても、セキュリティーを解除することができず、マイコン製造者に不良返品された際でも、全消去しか行うことができない。
【０１４１】
次に、ＬＣＡに対してロックコードｂ（ｘ５６７８ｈ）を書き込むと、セキュリティーコードＢに一致するため、通常モードでは全消去コマンドのみしか受け付けないが、試験モードでは、全消去コマンドおよび初期解析コマンドを受け付ける。
【０１４２】
すなわち、ロックコードｂは、マイコン製造者にマイコンが不良返品された際、試験モードにすることで、全消去を行わなくても、例えば、図１６を参照して説明したセクター単位の閾値電圧の分布による不良解析を行うことが可能になる。
【０１４３】
さらに、ＬＣＡに対してロックコードｃ（０ｘＦＦＦＦｈ，０ｘＡＡ５５ｈ、或いは、ｘ１２３４ｈおよびｘ５６７８ｈ以外のコード）を書き込むと、通常モードでは全消去コマンドのみしか受け付けないが、試験モードでは、書き込み／読み出し／消去の全コマンドを受け付ける。
【０１４４】
すなわち、ロックコードｃは、１番低いセキュリティーレベル（レベル０）で、マイコン製造者にマイコンが不良返品された際、試験モードにすることで、全消去を行わなくても、初期解析を完全に行うことが可能になる。
【０１４５】
なお、通常モードから試験モードへの切り替えは、前述したように、例えば、マイコン製造者がマイコンに対してシリアルキーを与えること等で、パワーオンリセット時に試験モードにすることができる。
【０１４６】
図２１および図２２は、本実施例の半導体装置におけるセキュリティーコードおよびロックコードを時系列的に説明するための図であり、上述した説明を、マイコン製造者，システム製造者および最終ユーザに分けて時系列的に示したものである。
【０１４７】
すなわち、図２１および図２２は、マイコン製造者が製造したマイコンに搭載された不揮発性メモリに対して、システム製造者がプログラムコードを書き込み、そのマイコンを搭載した製品が市場に提供される様子を示している。
【０１４８】
さらに、その製品が最終ユーザに渡り、そこで、システム製造者がプログラムコードの修正（アップデート）を行い、或いは、その製品に不具合が生じて、製品に搭載されたマイコンがシステム製造者を介してマイコン製造者に返品される場合を示している。
【０１４９】
まず、マイコン製造者は、工程Ｐ１の設計時〜工程Ｐ５の出荷までを行って、製品（不揮発性メモリ搭載マイコン）がシステム製造者に渡される。システム製造者は、工程Ｐ８で不揮発性メモリに対してプログラムコードを書き込み、工程Ｐ７でセキュリティーをかける。
【０１５０】
ここで、システム製造者は、工程Ｐ７において、前に図１７〜図１９を参照して説明したように、設定するセキュリティーレベルに対応したロックコードを不揮発性メモリのロックコード格納領域ＬＣＡに書き込む。
【０１５１】
さらに、システム製造者によりプログラムコードが書き込まれた不揮発性メモリを搭載したマイコンは、最終製品（例えば、マイコンを使用した家電製品や自動車等）として市場において最終ユーザに提供される。
【０１５２】
ここで、工程Ｐ８のように、最終ユーザは、システム製造者がＬＣＡにロックコードａ〜ｃのいずれを書き込んでいても、通常モードであるためセキュリティーがかかっており、外部からプログラムコードを読み出し、或いは、書き換える（書き込む）ことはできない。
【０１５３】
また、工程Ｐ９のように、例えば、システム製造者がプログラムコードの修正（アップデート）をする場合には、全消去を行った後に新たなプログラムコードを書き込み、その後、ＬＣＡにロックコードを書き込むことでセキュリティーをかけることができる。
【０１５４】
工程Ｐ１０は、例えば、市場でマイコンを搭載した最終製品が不良になって、その不良とされたマイコンがシステム製造者に返品された場合を示す。また、工程Ｐ１１は、その不良とされたマイコンがシステム製造者からマイコン製造者に返品された場合を示す。
【０１５５】
このとき、システム製造者は、工程Ｐ１０のように、通常モードなので、セキュリティーはオンのままなので、まずはフラシュメモリを全消去するしかなく、不良発生状態の確認はできない。
【０１５６】
これに対して、マイコン製造者は、工程Ｐ１１のように、例えば、外部からシリアルキーを入力して試験モードにすることにより、システム製造者が設定したセキュリティーレベルに対応した試験を行うことができるようになっている。
【０１５７】
すなわち、図１８〜図２０を参照して説明したように、セキュリティーコードＡ〜Ｃが図１７の具体例の場合、まず、ＬＣＡに対してｘ１２３４ｈが書き込まれていると、そのロックコードはセキュリティーコードＡに一致するため、試験モードにおいても、全消去しかできず、不良発生状態の確認はできない。
【０１５８】
また、ＬＣＡに対してｘ５６７８ｈが書き込まれていると、そのロックコードはセキュリティーコードＢに一致するため、試験モードでは、全消去コマンド以外に初期解析コマンドを受け付けることができる。すなわち、試験モードにおいて、全消去を行わなくても、例えば、セクター単位の閾値電圧の分布による不良解析を行うことが可能になる。
【０１５９】
さらに、ＬＣＡに対して０ｘＦＦＦｈ，０ｘＡＡ５５ｈ、或いは、ｘ１２３４ｈおよびｘ５６７８ｈ以外のコードが書き込まれていると、試験モードでは、セキュリティーが解除される。すなわち、試験モードにおいて、書き込み／読み出し／消去の全コマンドを受け付けることになる。
【０１６０】
なお、この場合、試験モードにおいて、システム製造者が不揮発性メモに書き込んだプログラムコードは、マイコン製造者により自由にアクセス可能になる。すなわち、システム製造者は、不揮発性メモに書き込んだプログラムコードがマイコン製造者により自由にアクセされることを許容した上で、マイコン製造者にマイコンを返品することになる。
【０１６１】
以上において、不揮発性メモリは、フラッシュメモリに限定されるものではなく、ＥＥＰＲＯＭ等の他の不揮発性メモリであってもよく、また、半導体装置も不揮発性メモリを搭載したマイコンに限定されるものではない。
【０１６２】
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
（付記１）
不揮発性メモリと、該不揮発性メモリに対するデータの受け渡しを行うインターフェイスと、を有する半導体装置であって、前記インターフェイスは、
予め設定された複数のセキュリティーコードおよび前記不揮発性メモリの特定エリアに書き込まれたロックコードに従って、前記不揮発性メモリに書き込まれたデータのセキュリティーレベルを制御するセキュリティー論理部を有することを特徴とする半導体装置。
【０１６３】
（付記２）
付記１に記載の半導体装置において、
前記セキュリティーコードは、第１セキュリティーコードおよび第２セキュリティーコードを含み、
前記セキュリティー論理部は、
前記半導体装置の試験を行う試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに一致すればセキュリティーをオンして不一致ならばオフし、
前記半導体装置を使用する通常モードにおいて、前記第２セキュリティーコードが前記ロックコードに一致すればセキュリティーをオフして不一致ならばオンすることを特徴とする半導体装置。
【０１６４】
（付記３）
付記２に記載の半導体装置において、
前記セキュリティーコードは、さらに、第３セキュリティーコードを含み、
前記セキュリティー論理部は、前記試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに不一致で、前記第３セキュリティーコードが前記ロックコードに一致すれば、セキュリティーを、一部機能を除いてオンし、不一致ならばオフすることを特徴とする半導体装置。
【０１６５】
（付記４）
付記３に記載の半導体装置において、
前記セキュリティー論理部は、前記試験モードにおいて、前記第１セキュリティーコードが前記ロックコードに不一致で、前記第３セキュリティーコードが前記ロックコードに一致したとき、予め定められた機能のみを実行可能にすることを特徴とする半導体装置。
【０１６６】
（付記５）
付記４に記載の半導体装置において、
前記予め定められた機能は、前記半導体装置の不良解析において、初期解析用のコマンドにより実行される機能であることを特徴とする半導体装置。
【０１６７】
（付記６）
付記３〜５のいずれか１項に記載の半導体装置において、
前記第２セキュリティーコードは、前記不揮発性メモリを全消去したときのデータに対応するコードを含むことを特徴とする半導体装置。
【０１６８】
（付記７）
付記６に記載の半導体装置において、
前記第１セキュリティーコードおよび前記第３セキュリティーコードは、前記不揮発性メモリを全消去したときのデータに対応するコードとは異なるコードになっていることを特徴とする半導体装置。
【０１６９】
（付記８）
付記３〜５のいずれか１項に記載の半導体装置において、
前記第２セキュリティーコードは、前記半導体装置の出荷前試験で使用する試験パターンに対応するコードを含むことを特徴とする半導体装置。
【０１７０】
（付記９）
付記８に記載の半導体装置において、
前記第１セキュリティーコードおよび前記第３セキュリティーコードは、前記半導体装置の出荷前試験で使用する試験パターンに対応するコードとは異なるコードになっていることを特徴とする半導体装置。
【０１７１】
（付記１０）
付記１〜９のいずれか１項に記載の半導体装置において、
前記通常モードから前記試験モードへのモード切り換えは、予め定められたコードを外部から入力することにより実行されることを特徴とする半導体装置。
【０１７２】
（付記１１）
付記１〜１０のいずれか１項に記載の半導体装置において、
前記特定エリアは、前記不揮発性メモリのアドレス空間の中で最後に消去される領域であることを特徴とする半導体装置。
【０１７３】
（付記１２）
付記１１に記載の半導体装置において、
前記不揮発性メモリは、複数のバンクを有し、
前記特定エリアは、前記複数のバンクの中で最後に消去されるバンクに含まれることを特徴とする半導体装置。
【０１７４】
（付記１３）
付記１〜１２のいずれか１項に記載の半導体装置において、
前記セキュリティーコードは、前記半導体装置の製造時におけるマスク焼き込み、または、電源クランプによって、前記インターフェイスに予め設定されることを特徴とする半導体装置。
【０１７５】
（付記１４）
付記１〜１３のいずれか１項に記載の半導体装置において、
起動後のセキュリティーは、デフォルトでオン状態になっていることを特徴とする半導体装置。
【０１７６】
（付記１５）
付記１〜１４のいずれか１項に記載の半導体装置において、さらに、
ＣＰＵを有し、
前記不揮発性メモリに書き込まれたデータは、前記ＣＰＵを制御して所定の機能を実現するプログラムコードであることを特徴とする半導体装置。
【符号の説明】
【０１７７】
１    半導体装置（マイクロコントローラ：マイコン）
１１    不揮発性メモリ（ｅＮＶＭ）
１２    インターフェイス（Ｉ／Ｆ）
１３    ＣＰＵ（Central Processing Unit）
１４    オンチップデバッガ（ＯＣＤ：On Chip Debugger）
１５    入出力部（Ｉ／Ｏ）
１６    ポートマルチプレクサ
２０    セキュリティー論理部
２１    データマスク部
２２    セキュリティー制御部
２３    マルチプレクサ
２１１    コマンドマスク論理部
２１２    読み出しデータマスク論理部
【図１】
0005730034.tif 000002
【図２】
0005730034.tif 000003
【図３】
0005730034.tif 000004
【図４】
0005730034.tif 000005
【図５】
0005730034.tif 000006
【図６】
0005730034.tif 000007
【図７】
0005730034.tif 000008
【図８】
0005730034.tif 000009
【図９】
0005730034.tif 000010
【図１０】
0005730034.tif 000011
【図１１】
0005730034.tif 000012
【図１２】
0005730034.tif 000013
【図１３】
0005730034.tif 000014
【図１４】
0005730034.tif 000015
【図１５】
0005730034.tif 000016
【図１６】
0005730034.tif 000017
【図１７】
0005730034.tif 000018
【図１８】
0005730034.tif 000019
【図１９】
0005730034.tif 000020
【図２０】
0005730034.tif 000021
【図２１】
0005730034.tif 000022
【図２２】
0005730034.tif 000023