(57)【要約】【課題】従来の半導体装置は、記憶領域に対するアクセス要因を解析することができない問題があった。【解決手段】本発明の半導体装置は、少なくともユーザープログラムを格納する第１の不揮発性メモリ１１と、ユーザープログラムを実行する演算部１０と、第１の不揮発性メモリ１１の書き換え履歴情報を格納する第２の不揮発性メモリ１６と、第２の不揮発性メモリ１６の書き換え履歴情報を書き込む検知処理シーケンス回路１８と、を有し、演算部１０は、第１の不揮発性メモリ１１に対する書き込み指示が外部からの指示に基づき発生したか前記ユーザープログラムの実行結果に起因して発生したかを示すアクセス要因情報を生成し、検知処理シーケンス回路１８は、アクセス要因情報毎に第２の不揮発性メモリ１６の異なるアドレスに書き換え履歴情報を書き込む。【選択図】図１
2013125296.tif 000002
【特許請求の範囲】
【請求項１】
少なくともユーザープログラムを格納する第１の不揮発性メモリと、
前記ユーザープログラムを実行する演算部と、
前記第１の不揮発性メモリの書き換え履歴情報を格納する第２の不揮発性メモリと、
前記第２の不揮発性メモリの書き換え履歴情報を書き込む検知処理シーケンス回路と、を有し、
前記演算部は、前記第１の不揮発性メモリに対する書き込み指示が外部からの指示に基づき発生したか前記ユーザープログラムの実行結果に起因して発生したかを示すアクセス要因情報を生成し、
前記検知処理シーケンス回路は、前記アクセス要因情報毎に前記第２の不揮発性メモリの異なるアドレスに前記書き換え履歴情報を書き込む半導体装置。
【請求項２】
前記第２の不揮発性メモリに格納されている前記書き換え履歴情報を保持する検知履歴レジスタを有し、
前記検知処理シーケンス回路は、前記半導体装置のリセット動作に基づき前記第２の不揮発性メモリに格納された前記書き換え履歴情報を読み出して、前記検知履歴レジスタに格納する請求項１に記載の半導体装置。
【請求項３】
前記検知履歴レジスタに格納された前記書き換え履歴情報を参照し、前記書き換え履歴情報が予め定められた異常判定条件を満たした場合には前記半導体装置をリセット状態で維持する異常判定制御回路を有する請求項２に記載の半導体装置。
【請求項４】
前記検知処理シーケンス回路は、
前記第１の不揮発性メモリへの書き込み指示が記憶領域を一括して消去するチップ消去書き込み指示であるか、前記記憶領域の所定のブロックを消去するブロック消去書き込み指示であるか、を示す消去履歴情報を前記アクセス要因情報とともに前記書き換え履歴情報に書き込む請求項１乃至３のいずれか１項に記載の半導体装置。
【請求項５】
前記第２の不揮発性メモリに書き込まれた情報を消去する消去制御回路と、
前記演算部から前記半導体装置がテストモードであることの通知を受信した場合に前記消去制御回路を活性化するテストモード制御回路と、を有する請求項１乃至４のいずれか１項に記載の半導体装置。
【請求項６】
前記演算部からの指示に基づき前記第１の不揮発性メモリの書き込み動作を制御するプログラム制御回路を有し、
前記第１の不揮発性メモリは、前記プログラム制御回路からの指示に基づき書き込みモードを設定すると共に前記演算部から書き込みデータを受信する請求項１乃至５のいずれか１項に記載の半導体装置。
【請求項７】
前記アクセス要因情報には、前記書き込みモードの種類を示す情報が含まれる請求項６に記載の半導体装置。
【請求項８】
前記第１の不揮発性メモリに対する書き込み動作が開始されるタイミングに応じて前記アクセス要因情報に基づく動作を前記検知処理シーケンス回路に指示する検知モードレジスタを有し、
前記第２の不揮発性メモリは、一のアドレスに複数ビットで構成される前記書き換え履歴情報を格納し、
前記検知処理シーケンス回路は、
前記アクセス要因情報に対応したアドレスに格納された前記書き換え履歴情報を読み出す読み出し処理と、
読み出した前記書き換え履歴情報に対して１ビットシフト演算を施すビット演算処理と、
前記読み出し処理においてアクセスした前記第２の不揮発性メモリのアドレスに前記ビット演算処理後の前記書き換え履歴情報を書き戻す書き込み処理と、を行う請求項１乃至７のいずれか１項に記載の半導体装置。
【請求項９】
少なくともユーザープログラムを格納する第１の不揮発性メモリと、
前記ユーザープログラムを実行する演算部と、
前記第１の不揮発性メモリの書き換え履歴情報を格納する第２の不揮発性メモリと、
を有する半導体装置のメモリ書き換え検知方法であって、
前記演算部が前記第１の不揮発性メモリに対して実行する書き込み動作が前記半導体装置の外部から与えられた指示に基づき行われる場合、アクセスモードが第１のモードであることを示すアクセス要因情報を前記演算部から出力し、
前記演算部が前記第１の不揮発性メモリに対して実行する書き込み動作が前記ユーザープログラムの実行結果に基づき行われる場合、前記アクセスモードが第２のモードであることを示す前記アクセス要因情報を前記演算部から出力し、
前記アクセス要因情報に基づき、前記第１のモードの発生回数と、前記第２のモードの発生回数と、を前記第２の不揮発性メモリの異なるアドレス領域にそれぞれ前記書き換え履歴情報として記録する半導体装置のメモリ書き換え検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを内蔵する半導体装置における不揮発性メモリの書き換え検知技術に関する。
【背景技術】
【０００２】
ＭＣＵ（Micro Processing Unit）等の半導体装置では、半導体装置の機能を実現するプログラムを格納するために不揮発性メモリを有する。近年では、この不揮発生メモリとしてＥＥＰＲＯＭ等の書き換え不能なメモリに変えてフラッシュメモリ等の書き換え可能なメモリが利用されている。
【０００３】
このフラッシュメモリは、書き換えが可能であることから、書き換えのログを収集して記録状態を管理することが行われる。特許文献１、２に書き換えログを収集する技術が開示されている。
【０００４】
フラッシュメモリ等の不揮発性メモリでは、メモリセルに記録されているデータを一度消去した後にデータの書き込みを行う。特許文献１では、不揮発性メモリの消去回数をカウントして、メモリセルの書き換え回数を記録する。フラッシュメモリでは、１つのメモリセルの書き換え可能回数に上限が設定されているため、このように消去回数を記録することで、メモリセルに書き込まれるデータの信頼性を向上させることができる。
【０００５】
また、特許文献２に記載の半導体メモリは、メモリ動作を実行するために供給されるコマンドを記録する複数の記録領域を有するコマンド記録部と、コマンド記録部を制御し、供給されたコマンドのうち最新に供給された複数のコマンドを記録領域に記録するコマンド記録制御回路と、試験モード時にコマンド記録部を制御し、コマンド記録部に記録されたコマンドを読み出すコマンド読み出し制御回路と、を備える。特許文献２に記載の半導体メモリでは、上記構成を備えることで、メモリ動作において供給されるコマンドのログを収集する。そして、半導体メモリの利用者は、半導体メモリを利用するプログラムが意図しない書き換えを行った場合には、試験モードを利用して当該ログを取得することで、プログラムのデバック性を高めることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−２７５０８８号公報
【特許文献２】特開２００２−２８８９９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＭＣＵ等の半導体装置に内蔵される不揮発性メモリは、外部からの指示に基づき書き込み動作が行われると共に、ＭＣＵの機能により内部的に書き換え動作を含むアクセスがなされる。そのため、一度、不揮発性メモリに記録された情報（プログラム及びデータを含む）が事後的に書き換えられることがある。このとき、本来書き換えが禁止されているプログラム又はデータが不正に書き換えられた場合、ＭＣＵの動作に不具合が生じる問題がある。このような、不正な書き換えが発生した場合には、不正な書き換えを行った書き換え要因に基づく不具合を解析する必要がある。
【０００８】
しかし、特許文献１に記載の技術では、単にメモリセルの消去回数を記録しているのみであり、特許文献１に記載の消去回数記録を参照しただけでは如何なる要因で不具合が生じたかを解析できない問題がある。
【０００９】
また、特許文献２に記載の技術では、半導体メモリ供給されるコマンドの発行元の装置について、ログを参照しても識別することができない。半導体装置２では、半導体メモリを利用するプログラムのデバッグを目的としており、コマンドの発行元の装置は特定されているため、特許文献２に記載の技術におけるログにコマンドの発行元の装置については記録する必要がないためである。つまり、特許文献２に記載の技術においても、不揮発性メモリに対する事後的な不正な書き換え動作については当該書き換え要因を特定できない問題がある。
【００１０】
このように、特許文献１、２は、不揮発性メモリに関する書き換え履歴情報（例えば、ログ）を記録する技術に関するものではあるが、他者による不正書き込みがなされたかどうかは分からないという問題がある。
【課題を解決するための手段】
【００１１】
本発明にかかる半導体装置の一態様は、少なくともユーザープログラムを格納する第１の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第１の不揮発性メモリの書き換え履歴情報を格納する第２の不揮発性メモリと、前記第２の不揮発性メモリの書き換え履歴情報を書き込む検知処理シーケンス回路と、を有し、前記演算部は、前記第１の不揮発性メモリに対する書き込み指示が外部からの指示に基づき発生したか前記ユーザープログラムの実行結果に起因して発生したかを示すアクセス要因情報を生成し、前記検知処理シーケンス回路は、前記アクセス要因情報毎に前記第２の不揮発性メモリの異なるアドレスに前記書き換え履歴情報を書き込む。
【００１２】
本発明にかかる半導体装置のメモリ書き換え検知方法の一態様は、少なくともユーザープログラムを格納する第１の不揮発性メモリと、前記ユーザープログラムを実行する演算部と、前記第１の不揮発性メモリの書き換え履歴情報を格納する第２の不揮発性メモリと、を有する半導体装置のメモリ書き換え検知方法であって、前記演算部が前記第１の不揮発性メモリに対して実行する書き込み動作が前記半導体装置の外部から与えられた指示に基づき行われる場合、アクセスモードが第１のモードであることを示すアクセス要因情報を前記演算部から出力し、前記演算部が前記第１の不揮発性メモリに対して実行する書き込み動作が前記ユーザープログラムの実行結果に基づき行われる場合、前記アクセスモードが第２のモードであることを示す前記アクセス要因情報を前記演算部から出力し、前記アクセス要因情報に基づき、前記第１のモードの発生回数と、前記第２のモードの発生回数と、を前記第２の不揮発性メモリの異なるアドレス領域にそれぞれ書き換え履歴情報として記録する。
【００１３】
本発明にかかる技術によれば、第１の不揮発性メモリに対するアクセス要因の種類毎に履歴情報が記録される。そのため、当該履歴情報を参照することで、事後的に不正な書き換えがあったことを認識することができる。その結果、第１の不揮発性メモリに格納されたユーザープログラムに対するセキュリティを向上させることができる。
【発明の効果】
【００１４】
本発明にかかる技術によれば、事後的な不正な書き換え動作の有無を認識することができ、結果、格納されたプログラムに対するセキュリティを向上することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１にかかる半導体装置のブロック図である。
【図２】実施の形態１にかかる半導体装置の第２の不揮発性メモリの初期状態を示す概略図である。
【図３】実施の形態１にかかる半導体装置においてシリアル書き込み動作を行った後の第２の不揮発性メモリの状態を示す概略図である。
【図４】実施の形態１にかかる半導体装置においてセルフ書き込み動作を１回行った後の第２の不揮発性メモリの状態を示す概略図である。
【図５】実施の形態１にかかる半導体装置においてセルフ書き込み動作を２回行った後の第２の不揮発性メモリの状態を示す概略図である。
【図６】実施の形態２にかかる半導体装置のブロック図である。
【発明を実施するための形態】
【００１６】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。まず、図１に実施の形態１にかかる半導体装置１のブロック図を示す。図１に示すように、半導体装置１は、演算部１０、第１の不揮発性メモリ１１、プログラムモードデコーダ１２、アクセスモードデコーダ１３、プログラム制御回路１４、ファームウェア格納領域１５、第２の不揮発性メモリ１６、検知モードレジスタ１７、検知処理シーケンス回路１８、検知履歴レジスタ２２、テストモード制御回路２３、消去制御回路２４、リセットシーケンス回路２５を有する。
【００１７】
なお、図１では、第１の不揮発性メモリ１１、ファームウェア格納領域１５及び第２の不揮発性メモリ１６を説明のために別の回路ブロックとして示したが、これらは１つの領域として形成され、かつ、異なるアクセス権限が設定される形態であっても良い。例えば、第１の不揮発性メモリ１１、ファームウェア格納領域１５及び第２の不揮発性メモリ１６を一つの不揮発性メモリとして形成しても良い。
【００１８】
また、図１では、第１の不揮発性メモリ１１に対して情報を書き込む外部装置としてフラッシュプログラマを示した。フラッシュプログラマは、フラッシュライタと称されるものであり、予め準備したユーザープログラム等の情報を第１の不揮発性メモリ１１に対して書き込む装置である。図１に示す例では、半導体装置１がシリアル入力端子ＴＭを有し、フラッシュプログラマは、シリアル入力端子ＴＭを介して書き込みデータをシリアル通信により半導体装置１に入力する。なお、フラッシュプログラマは、パラレル通信により書き込みデータを転送しても良い。
【００１９】
まず、半導体装置１では、第１の不揮発性メモリ１１にユーザープログラムが格納される。このユーザープログラムは、フラッシュライタから書き込まれるものである。また、ユーザープログラムは、半導体装置１の利用者がフラッシュライタを用いて書き込んでも良く、半導体装置１の製造者が出荷工程の工程中で書き込んでも良い。また、半導体装置１では、ファームウェア格納領域１５に第１の不揮発性メモリ１１を制御するプログラムを含むファームウェアが格納される。このファームウェアは、半導体装置１の製造者が出荷前に書き込むものである。第２の不揮発性メモリ１６には、第１の不揮発性メモリ１１に格納された情報の書き換え履歴情報が格納される。以下の説明では、第１の不揮発性メモリ１１に対する書き換え動作と第２の不揮発性メモリ１６に対する書き換え履歴情報の記録動作についてより詳細に説明する。
【００２０】
演算部１０は、通常動作においては、第１の不揮発性メモリ１１に格納されているユーザープログラムを読み出して当該ユーザープログラムを実行する。また、演算部１０は、ファームウェア格納領域１５からファームウェアを読み出して、当該ファームウェアを実行することで第１の不揮発性メモリ１１に対する書き込み動作を行う。ここで、演算部１０は、第１の不揮発性メモリ１１にアクセスを行う場合、当該アクセス動作が生じた要因を示すアクセス要因情報を生成する。
【００２１】
このアクセス要因情報は、例えばアクセスモード信号として出力される。演算部１０は、当該ファームウェアの実行がフラッシュプログラマからの指示に基づき行われる場合、アクセスモード信号を第１のモード（例えば、シリアル書き込みモード）とする。また、演算部１０は、当該ファームウェアの実行がユーザープログラムの実行結果に基づき行われる場合、アクセスモード信号を第２のモード（例えば、セルフ書き込みモード）とする。
【００２２】
また、演算部１０は、第１の不揮発性メモリ１１に対して書き込み指示を行う。この書き込み指示には、チップ消去書き込み指示、ブロック消去書き込み指示、書き込み指示、ベリファイ指示が含まれる。演算部１０は、この書き込み指示を示す信号としてプログラムモード信号を出力する。なお、書き込み指示の情報は、アクセス要因情報の一つに含まれるものである。
【００２３】
第１の不揮発性メモリ１１は、半導体装置１で利用されるユーザープログラムが格納される記憶領域である。また、第１の不揮発性メモリ１１には、ユーザープログラムの他、ＯＳ（Operating System）、ユーザープログラムが利用するデータ等が格納されていても良い。第１の不揮発性メモリ１１は、演算部１０からの指示に基づき格納している情報を出力する。また、第１の不揮発性メモリ１１は、書き込み動作を行う場合、プログラム制御回路１４からの指示に基づき書き込みモードを切り換える。この書き込みモードには、チップ消去書き込みモード、ブロック消去書き込みモード、書き込みモード、ベリファイモードが含まれる。チップ消去書き込みモードでは、第１の不揮発性メモリ１１は、全てのメモリセルの情報を消去して初期状態とする。ブロック消去書き込みモードでは、第１の不揮発性メモリ１１は、指定されたブロックのメモリセルの情報を消去して初期状態とする。書き込みモードでは、第１の不揮発性メモリ１１は、指定されたブロックのメモリセルに対して指定された情報を書き込む。ベリファイモードでは、第１の不揮発性メモリ１１は、書き込み対象の情報と、書き込み済みの情報と、を比較して書き込み結果の正当性を判断する。
【００２４】
プログラムモードデコーダ１２は、演算部１０が出力するプログラムモード信号をデコードしてプログラムモード指示値ＰＭを出力する。このプログラムモード指示値ＰＭは、プログラムモード信号がいずれの書き込みモードであるかを示す値である。例えば、プログラムモード指示値ＰＭは、プログラムモード信号が示す書き込みモードが生じたことを記録する第２の不揮発性メモリ１６のアドレス値である。
【００２５】
アクセスモードデコーダ１３は、演算部１０が出力するアクセスモード信号をデコードしてアクセスモード指示値ＡＭを出力する。このアクセスモード指示値ＰＭは、アクセスモード信号がいずれのアクセスモードであるかを示す値である。例えば、アクセスモード指示値ＡＭは、アクセスモード信号が示すアクセス要因が生じたことを記録する第２の不揮発性メモリ１６のアドレス値である。
【００２６】
プログラム制御回路１４は、演算部１０からの指示に基づき第１の不揮発性メモリ１１の書き込み動作を制御する。より具体的には、プログラム制御回路１４は、演算部１０が出力したプログラムモード信号をプログラムモードデコーダ１２がデコードしたプログラムモード指示値ＰＭを受信する。そして、プログラム制御回路１４は、プログラムモード指示値ＰＭが示す書き込みモードで第１の不揮発性メモリ１１が動作するように第１の不揮発性メモリ１１を制御する。
【００２７】
ファームウェア格納領域１５には、第１の不揮発性メモリ１１を制御するために用いられるプログラムを含むファームウェアが格納される。
【００２８】
第２の不揮発性メモリ１６は、第１の不揮発性メモリの書き換え履歴情報を格納する。第２の不揮発性メモリ１６において、書き換え履歴情報は、アクセス要因情報毎に前記第２の不揮発性メモリの異なるアドレスに記録される。第２の不揮発性メモリ１６は、半導体装置１の内部回路によりアクセス可能な記憶領域として設定される。つまり、第２の不揮発性メモリ１６は、半導体装置１の外部端子を介してアクセスすることはできない。
【００２９】
検知モードレジスタ１７は、アクセス要因情報を格納し、検知処理シーケンス回路１８に当該アクセス要因情報に基づく動作指示を与える。このアクセス要因情報には、アクセスモード指示値ＡＭ及びプログラムモード指示値ＰＭが含まれる。また、検知モードレジスタ１７は、プログラム制御回路１４が第１の不揮発性メモリ１１に対する書き込みモード指示を更新するタイミングで格納するアクセス要因情報を更新する。
【００３０】
検知処理シーケンス回路１８は、検知モードレジスタ１７の指示又はリセットシーケンス回路２５の指示に基づき第２の不揮発性メモリ１６に対する読み出し処理及び書き込み処理を行う。検知処理シーケンス回路１８は、読み出し制御回路１９、ビット演算回路２０、書き込み制御回路２１を有する。
【００３１】
読み出し制御回路１９は、第２の不揮発性メモリ１６に格納された書き換え履歴情報を読み出す。ビット演算回路２０は、読み出し制御回路１９が読み出した書き換え履歴情報に対してビット演算処理（例えば、左シフト演算）を施して、ビット演算処理により更新した書き換え履歴情報を出力する。書き込み制御回路２１は、ビット演算回路２０が出力した書き換え履歴情報を、読み出し制御回路１９が書き換え履歴情報を読み出したアドレスに書き戻す。
【００３２】
つまり、検知処理シーケンス回路１８は、上記構成により、検知モードレジスタ１７の指示に基づき動作する場合、検知モードレジスタ１７に格納されたアクセス要因情報に対応したアドレスに格納された書き換え履歴情報を読み出す読み出し処理と、読み出した書き換え履歴情報に対して１ビットシフト演算を施すビット演算処理と、読み出し処理においてアクセスした第２の不揮発性メモリ１６のアドレスにビット演算処理後の書き換え履歴情報を書き戻す書き込み処理と、を行う。
【００３３】
また、検知処理シーケンス回路１８は、半導体装置１のリセット動作に基づき第２の不揮発性メモリ１６に格納された書き換え履歴情報を読み出して、検知履歴レジスタに格納する。そして、検知履歴レジスタ２２は、第２の不揮発性メモリ１６に格納されている書き換え履歴情報を保持する。検知履歴レジスタ２２は、演算部１０からのアクセスに基づき格納している書き換え履歴情報を演算部１０に出力する。演算部１０は、検知履歴レジスタ２２から読み出した書き換え履歴情報に基づき不正な書き換えの有無を判断することができる。また、演算部１０は、検知履歴レジスタ２２から読み出した書き換え履歴情報を外部に出力しても良い。
【００３４】
テストモード制御回路２３は、演算部１０から半導体装置１がテストモードであることの通知を受信した場合に消去制御回路２４を活性化する。消去制御回路２４は、活性化状態において、第２の不揮発性メモリ１６に書き込まれた情報を消去する。つまり、第２の不揮発性メモリ１６は、半導体装置１の出荷工程において全ての情報が消去された初期状態とされる。また、テストモードは、出荷工程でのみ有効になる動作モードである。そのため、消去制御回路２４は、テストモード以外では第２の不揮発性メモリ１６に対する消去動作を行わない。つまり、第２の不揮発性メモリ１６は、ユーザーの操作により格納する書き換え履歴情報が消去されることはない。
【００３５】
リセットシーケンス回路２５は、半導体装置１の起動時、又は、半導体装置１の動作に起因するリセット処理時に、検知処理シーケンス回路１８をリセット状態とする。検知処理シーケンス回路１８は、リセットシーケンス回路２５からリセット指示を受けた場合、第２の不揮発性メモリ１６から書き換え履歴情報を読み出して、読み出した書き換え履歴情報を検知履歴レジスタ２２に格納する。
【００３６】
続いて、実施の形態１の半導体装置１の動作について説明する。実施の形態１にかかる半導体装置１は、第２の不揮発性メモリ１６に格納する書き換え履歴情報と書き換え履歴情報の格納方法に特徴の１つを有する。そこで、以下の説明では、実施の形態１にかかる半導体装置１における第１の不揮発性メモリ１１への情報の書き込み動作と第２の不揮発性メモリ１６に書き換え履歴情報を格納する手順について詳細に説明する。
【００３７】
まず、第２の不揮発性メモリ１６の初期化手順について説明する。実施の形態１にかかる半導体装置１では、出荷工程中のテスト工程において半導体装置１をテストモードとする。半導体装置１がテストモードとされると、演算部１０はテストモード制御回路２３に半導体装置１がテストモードであることを通知する。そして、テストモード制御回路２３は、当該通知に応じて消去制御回路２４を活性化する。消去制御回路２４は、第２の不揮発性メモリ１６に対してチップ消去書き込み動作を行う。これにより、第２の不揮発性メモリ１６は、記録されている情報が全て１（例えば、データ１）となる初期状態となる。ここで、第２の不揮発性メモリ１６の初期状態を示す概略図を図２に示す。図２に示すように、第２の不揮発性メモリ１６は、１つのアドレスに８ビットの値が格納される。初期状態では、全てのアドレスの値がＦＦｈとなる。
【００３８】
ここで、第２の不揮発性メモリ１６の構成について詳細に説明する。図２に示す例では、第２の不揮発性メモリ１６がＮ〜Ｎ−４の５つのアドレスを有する。そして、アドレスＮ〜Ｎ−４は、それぞれアクセス要因情報に対応する。図２に示す例では、アドレスＮにチップ消去履歴が格納され、アドレスＮ−１にブロック消去履歴が格納され、アドレスＮ−２にセルフ書き込み履歴が格納され、アドレスＮ−３にシリアル書き込み履歴が格納され、アドレスＮ−４に異常アクセス履歴が格納される。
【００３９】
チップ消去履歴は、チップ消去書き込みを指示するプログラムモード信号が発生した回数の履歴である。ブロック消去履歴は、ブロック消去書き込みを指示するプログラムモード信号が発生した回数の履歴である。セルフ書き込み履歴は、セルフ書き込みモードを示すアクセスモード信号が発生した回数の履歴である。なお、演算部１０がユーザープログラムの実行結果に基づき第１の不揮発性メモリ１１へのアクセスを行う場合にアクセスモード信号がセルフ書き込みモードを示す。シリアル書き込み履歴は、シリアル書き込みモードを示すアクセスモード信号が発生した回数の履歴である。なお、外部に設けられるフラッシュプログラマからの指示に基づき第１の不揮発性メモリ１１へのアクセスが行われる場合にアクセスモード信号がシリアル書き込みモードを示す。異常アクセス履歴は、アクセスモード信号が示すアクセスモードとプログラムモード信号が示す書き込みモードとの組合せが明らかに不正な組合せであるアクセスが発生した回数の履歴である。例えば、アクセスモード信号が何等のモードを指定することなく、プログラムモード信号が書き込みを指示する場合が異常アクセスに該当する。
【００４０】
続いて、実施の形態１にかかる半導体装置１においてシリアル書き込み動作を行った場合の半導体装置１の動作について説明する。実施の形態１にかかる半導体装置１においてシリアル書き込み動作を行った後の第２の不揮発性メモリの状態を示す概略図を図３に示す。このシリアル書き込み動作は、半導体装置１が外部に設けられたフラッシュプログラマから書き込み指示及び書き込み対象データを受信したことに応じて行われる。シリアル書き込み動作では、演算部１０はシリアル書き込みモードを示すアクセスモード信号を出力する。また、演算部１０は、フラッシュプログラマから書き込み指示を受信したことに応じて、ファームウェアを呼び出して当該ファームウェアを実行することで第１の不揮発性メモリ１１への情報の書き込みを行う。また、フラッシュプログラマからは、書き込み対象データとして書き込みデータのイメージ情報及びベリファイ用のデータが半導体装置１にシリアル転送される。そして、半導体装置１は、ファームウェアを実行して、まず、第１の不揮発性メモリ１１に対してチップ消去書き込みを実行する。続いて、半導体装置１は、フラッシュプログラマから受信した書き込みデータを第１の不揮発性メモリ１１に書き込む。そして、半導体装置１は、書き込んだデータのベリファイを実行する。
【００４１】
つまり、半導体装置１では、シリアル書き込み動作を行う場合、シリアル書き込みモードを指定するアクセスモード信号を生成し、プログラムモード信号をチップ消去書き込みモード、書き込みモード、ベリファイモードと順に遷移させる。このような動作が行われた場合、検知処理シーケンス回路１８は、チップ消去履歴を示すアドレスＮの書き換え書き込み履歴情報と、シリアル書き込み履歴を示すアドレスＮ−３の書き換え履歴情報と、を読み出す。その後、読み出した２つの書き込み履歴情報に対して左シフト演算を施して書き換え履歴情報を更新する。この更新により、チップ消去履歴とシリアル書き込み履歴は最下位ビットが０となる。つまり、チップ消去履歴及びシリアル書き込み履歴の書き換え履歴情報はＦＦｈからＦＥｈに更新される。そして、図３に示すように、検知処理シーケンス回路１８は、第２の不揮発性メモリ１６にチップ消去書き込み動作とシリアル書き込みモードが１回発生したことを示す書き換え履歴情報を格納する。このシリアル書き込み動作により、第１の不揮発性メモリ１１には、ユーザープログラムが格納される。
【００４２】
続いて、半導体装置１が第１の不揮発性メモリ１１に格納されているユーザープログラムに基づき第１の不揮発性メモリ１１へのアクセスを行うセルフ書き込み動作について説明する。実施の形態１にかかる半導体装置１においてセルフ書き込み動作を１回行った後の第２の不揮発性メモリの状態を示す概略図を図４に示す。セルフ書き込み動作では、演算部１０はセルフ書き込みモードを示すアクセスモード信号を出力する。また、演算部１０は、ユーザープログラムによりファームウェアを呼び出して当該ファームウェアを実行することで第１の不揮発性メモリ１１への情報の書き込みを行う。そして、半導体装置１は、ファームウェアを実行して、まず、第１の不揮発性メモリ１１に対してブロック消去書き込みを実行する。続いて、半導体装置１は、書き込み対象のデータを第１の不揮発性メモリ１１に書き込む。そして、半導体装置１は、書き込んだデータのベリファイを実行する。
【００４３】
つまり、半導体装置１では、セルフ書き込み動作を行う場合、セルフ書き込みモードを指定するアクセスモード信号を生成し、プログラムモード信号をブロック消去書き込みモード、書き込みモード、ベリファイモードと順に遷移させる。このような動作が行われた場合、検知処理シーケンス回路１８は、ブロック消去履歴を示すアドレスＮ−１の書き換え書き込み履歴情報と、セルフ書き込み履歴を示すアドレスＮ−２の書き換え履歴情報と、を読み出す。その後、読み出した２つの書き込み履歴情報に対して左シフト演算を施して書き換え履歴情報を更新する。この更新により、ブロック消去履歴とセルフ書き込み履歴は最下位ビットが０となる。つまり、ブロック消去履歴とセルフ書き込み履歴の書き換え履歴情報は、ＦＦｈからＦＥｈに更新される。そして、図４に示すように、検知処理シーケンス回路１８は、第２の不揮発性メモリ１６にブロック消去書き込み動作とセルフ書き込みモードが１回発生したことを示す書き換え履歴情報を格納する。このシリアル書き込み動作により、第１の不揮発性メモリ１１に格納されているデータが更新される。
【００４４】
さらに、セルフ書き込み動作を２回行った後の書き換え履歴情報について説明する。図５に実施の形態１にかかる半導体装置１においてセルフ書き込み動作を２回行った後の第２の不揮発性メモリの状態を示す概略図を示す。２回目のセルフ書き込み動作は、１回目のセルフ書き込み動作と同じであるため、動作の詳細の説明については省略する。図５に示すように、セルフ書き込み動作を２回行った場合、ブロック消去履歴とセルフ書き込み履歴は下位側の２ビットが０となる。つまり、ブロック消去履歴とセルフ書き込み履歴の書き換え履歴情報は、ＦＥｈからＦＣｈに更新される。
【００４５】
このように、半導体装置１では、書き換え履歴情報は、対応するアクセス要因が発生する毎に下位ビット側から値が１からゼロへと変化する情報である。そして、半導体装置１では、この書き換え履歴情報をリセット処理の一処理として検知履歴レジスタ２２に読み出す。検知履歴レジスタ２２に格納された書き換え履歴情報は、演算部１０を介して参照可能である。そのため、半導体装置１の利用者は、検知履歴レジスタ２２に格納された書き換え履歴情報を参照することで、第１の不揮発性メモリ１１に対してどのようなアクセス要因のアクセスが発生したかを知ることができる。
【００４６】
上記説明より、実施の形態１にかかる半導体装置１は、少なくともユーザープログラムを格納する第１の不揮発性メモリ１１と、ユーザープログラムを実行する演算部１０と、第１の不揮発性メモリ１１の書き換え履歴情報を格納する第２の不揮発性メモリ１６と、を有する。そして、半導体装置１は、演算部１０が第１の不揮発性メモリ１１に対して実行する書き込み動作が半導体装置１の外部から与えられた指示に基づき行われる場合、アクセスモードが第１のモード（例えば、シリアル書き込みモード）であることを示すアクセス要因情報を演算部１０が出力し、演算部１０が第１の不揮発性メモリ１１に対して実行する書き込み動作がユーザープログラムの実行結果に基づき行われる場合、アクセスモードが第２のモード（例えば、セルフ書き込みモード）であることを示すアクセス要因情報を演算部１０から出力する。そして、半導体装置１は、アクセス要因情報に基づき第２の不揮発性メモリ１６に、シリアル書き込みモードの発生回数と、セルフ書き込みモードの発生回数と、を第２の不揮発性メモリ１６の異なるアドレス領域にそれぞれ書き換え履歴情報として記録する。
【００４７】
これにより、半導体装置１では、第１の不揮発性メモリ１１に対する書き込み動作が、どのようなアクセス要因に起因して何回行われたかを示す書き換え履歴情報が第２の不揮発性メモリ１６に記録される。このように、第１の不揮発性メモリ１１に対する書き込み動作を行ったアクセス要因の発生回数を参照することで、半導体装置１の利用者は、本来は発生しないアクセス要因により第１の不揮発性メモリ１１の情報が書き換えられたことを事後的に知ることができる。また、不正な書き換えを行ったアクセス要因が特定できることから、半導体装置１を用いることで、不具合の解析性を高めることができる。例えば、不具合がシリアル書き込みモードに起因することがわかれば、不正なハッキングが生じたことを知ることができ、ユーザープログラムの動作に問題ないことがわかる。また、不具合がセルフ書き込みモードに起因することがわかれば、ユーザープログラムの不具合又は半導体装置１の暴走が生じたことを知ることができる。このような解析を通じて、半導体装置１は、第１の不揮発性メモリ１１に格納されたユーザープログラムに対するセキュリティを向上させることができる。
【００４８】
また、実施の形態１にかかる半導体装置１では、書き換え履歴情報にアクセスに利用されたアクセスモードの情報と書き込みモードの情報とを含むアクセス要因の発生回数を記録し、具体的なアクセスアドレス等の詳細な情報は記録しない。また、実施の形態１にかかる半導体装置１では、第１の不揮発性メモリ１１に対するアクセスのうち読み出し動作、ベリファイ動作等の情報の改変に寄与しない動作に関する情報については書き換え履歴情報としては記録しない。このように、書き換え履歴情報として記録する情報の量を削減することで、解析が必要な情報を削減することができる。また、解析が必要な情報を削減することで、不具合を生じさせた原因となるアクセス要因の解析性を向上させると共に解析時間を短縮することができる。また、記録する情報の量を削減することで、第２の不揮発性メモリ１６の記憶容量を削減することができる。
【００４９】
さらに、実施の形態１にかかる半導体装置１では、第２の不揮発性メモリ１６への書き込みを演算部１０が直接行うことができない。これにより、半導体装置１では、第２の不揮発性メモリ１６に格納される書き換え履歴情報が不正に書き換えられることを防止することができる。なお、半導体装置１のテスト工程においては、第２の不揮発性メモリ１６の故障を確認するために演算部１０からデータの書き込みが行われる。しかし、この書き込み動作は、テストモードでおいてのみ許可されるものであって、外部から特殊な操作（例えば、テストモードの設定）を行うことなく、演算部１０が第２の不揮発性メモリ１６に直接アクセスすることはできない。図１においては、特に図示していないが、半導体装置１は、テストモード以外では演算部１０が第２の不揮発性メモリ１６に直接アクセスすることを防止する構成を有する。
【００５０】
実施の形態２
実施の形態２にかかる半導体装置２のブロック図を図６に示す。図６に示すように、半導体装置２は、実施の形態１にかかる半導体装置１に異常判定制御回路３０を追加したものである。また、半導体装置２では、異常判定制御回路３０の追加に伴い、リセットシーケンス回路２５をリセットシーケンス回路３１に変更している。リセットシーケンス回路３１は、リセットシーケンス回路２５に異常判定制御回路３０からの指示に基づきリセット状態を維持する機能を追加したものである。さらに、半導体装置２では、リセットシーケンス回路３１が出力するリセット信号生成指示に基づきシステム初期化信号ＲＳＴを出力するリセット信号生成回路３２を追加した。
【００５１】
異常判定制御回路３０は、検知履歴レジスタ２２に読み出された書き換え履歴情報を参照し、書き換え履歴情報が予め設定された異常判定条件を満たす場合に、リセットシーケンス回路３１にリセット状態を維持することを指示する。例えば、半導体装置１が第１の不揮発性メモリ１１のセルフ書き込みが禁止される設定で利用されている場合は、セルフ書き込み履歴の値がＦＦｈ以外となった場合に半導体装置１の動作を停止することが異常判定条件として設定される。
【００５２】
また、リセットシーケンス回路３１は、半導体装置２の起動時、又は、半導体装置２の動作に起因するリセット処理時に、リセット信号生成回路３２にリセット信号生成指示を与える。リセット信号生成回路３２は、リセット信号生成指示に基づきシステム初期化信号ＲＳＴを生成する。このシステム初期化信号ＲＳＴは、システム全体をリセットする信号であり、例えば、演算部１０内のレジスタ、検知履歴レジスタ２２、検知モードレジスタ１７等のレジスタの値を初期値とするものである。
【００５３】
上記説明より、実施の形態２にかかる半導体装置２は、異常判定制御回路３０を設けることで、検知履歴レジスタ２２に読み出された書き換え履歴情報に基づいて動作を停止することができる。これにより、半導体装置２では、想定していない不正な書き換えが第１の不揮発性メモリ１１に対して行われた場合には、システムを安全に停止することができる。より具体的には、リセットシーケンス回路３１が出力するリセット信号生成指示に基づきリセット信号生成回路３２がシステム初期化信号ＲＳＴをリセット状態に維持することでシステムは安全に停止することができる。また、このように不正な書き換えに対してシステムを安全に停止することで、半導体装置２は、実施の形態１にかかる半導体装置１よりも高い信頼性を確保することができる。
【００５４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上記実施の形態では、演算部１０が出力するアクセスモード信号とプログラムモード信号をデコードして、アクセスモード指示値ＡＭとプログラムモード指示値ＰＭを生成する構成とした。しかし、演算部１０を、直接アクセスモード指示値ＡＭとプログラムモード指示値ＰＭとを直接アクセスモード信号とプログラムモード信号として出力する構成とすることも可能である。
【符号の説明】
【００５５】
１、２  半導体装置
１０  演算部
１１  第１の不揮発性メモリ
１２  プログラムモードデコーダ
１３  アクセスモードデコーダ
１４  プログラム制御回路
１５  ファームウェア格納領域
１６  第２の不揮発性メモリ
１７  検知モードレジスタ
１８  検知処理シーケンス回路
１９  読み出し制御回路
２０  ビット演算回路
２１  書き込み制御回路
２２  検知履歴レジスタ
２３  テストモード制御回路
２４  消去制御回路
２５、３１  リセットシーケンス回路
３０  異常判定制御回路
３２  リセット信号生成回路
【図１】
2013125296.tif 000003
【図２】
2013125296.tif 000004
【図３】
2013125296.tif 000005
【図４】
2013125296.tif 000006
【図５】
2013125296.tif 000007
【図６】
2013125296.tif 000008