(57)【要約】【課題】不揮発性メモリの起動時診断を、外部装置や診断対象外となる不揮発性メモリを必要とせずに実現可能な半導体装置を提供する。【解決手段】不揮発性メモリＮＶＭは、連続して読み出されるアドレスによって構成されるアドレス空間ＡＳ１と、その一つ後に読み出され、単数または複数のアドレスで構成される予約アドレスＲＡＤＲとを含む。予約アドレスＲＡＤＲには、予め算出される固定値化データＳＤが格納される。固定値化データＳＤは、所定の初期値を用いて、アドレス空間ＡＳ１に格納される全データと固定値化データＳＤとを所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を予め定めた固定値（例えば０値）に収束させるデータである。【選択図】図４
2018055744.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリを診断するＢＩＳＴ（Built In Self Test）回路とを有し、一つの半導体チップで構成される半導体装置であって、
前記ＢＩＳＴ回路は、
アドレスを順に生成し、当該生成したアドレスを含んだ読み出し命令を前記不揮発性メモリへ順に発行する読み出し回路と、
前記読み出し回路からの読み出し命令に応じて前記不揮発性メモリから順に読み出されるデータを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値を出力する圧縮器と、
を有し、
前記不揮発性メモリは、前記読み出し回路によるアドレスの生成順序を基準として、連続して読み出されるアドレスによって構成される第１のアドレス空間と、前記第１のアドレス空間の一つ後に読み出され、単数または複数のアドレスで構成される第１の予約アドレスとを含み、
前記第１の予約アドレスには、予め算出される第１の固定値化データが格納され、
前記第１の固定値化データは、所定の初期値を用いて、前記第１のアドレス空間に格納される全データと前記第１の固定値化データとを前記所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を予め定めた第１の固定値に収束させるデータである、
半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、前記第１の固定値と前記シグネチャ値とが一致しているか否かを判定する判定回路を有する、
半導体装置。
【請求項３】
請求項１記載の半導体装置において、
前記不揮発性メモリは、さらに、前記第１の予約アドレスの一つ後に読み出される第２のアドレス空間を含み、
前記第１のアドレス空間に含まれるアドレスの一つである期待値アドレスには、前記第１の固定値を初期値として、前記第２のアドレス空間に格納される全データを前記所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値が格納され、
前記第１の固定値化データは、前記期待値アドレスのデータを反映して算出される、
半導体装置。
【請求項４】
請求項３記載の半導体装置において、
前記期待値アドレスは、前記第１のアドレス空間の中で最後に読み出されるアドレスである、
半導体装置。
【請求項５】
請求項３記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、前記期待値アドレスに格納されるデータと前記シグネチャ値とが一致しているか否かを判定する判定回路を有する、
半導体装置。
【請求項６】
請求項５記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、
前記期待値アドレスを含んだ読み出し命令を前記不揮発性メモリへ発行する期待値アドレス読み出し回路と、
前記期待値アドレス読み出し回路の読み出し命令に応じて前記期待値アドレスから読み出されるデータを保持する期待値レジスタと、
を有し、
前記期待値アドレスは、ユーザの要求に応じて可変設定可能であり、
前記判定回路は、前記期待値レジスタに保持されるデータと前記シグネチャ値とが一致しているか否かを判定する、
半導体装置。
【請求項７】
請求項１記載の半導体装置において、
前記不揮発性メモリは、前記第１のアドレス空間および前記第１の予約アドレスの組合せを複数組含み、
後の組の前記第１のアドレス空間は、前の組の前記第１の予約アドレスの一つ後に読み出され、
前記後の組の前記第１の予約アドレスに格納される前記第１の固定値化データは、前記前の組を対象に定めた前記第１の固定値を前記所定の初期値とすることで算出される、
半導体装置。
【請求項８】
請求項７記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、前記複数組の中の最後の組を対象に定めた前記第１の固定値と前記シグネチャ値とが一致しているか否かを判定する判定回路を有する、
半導体装置。
【請求項９】
請求項７記載の半導体装置において、
前記不揮発性メモリは、さらに、前記複数組の中の最後の組の前記第１の予約アドレスの一つ後に読み出される期待値アドレスと、前記期待値アドレスの一つ後に読み出される第２の予約アドレスと、前記第２の予約アドレスの一つ後に読み出される第２のアドレス空間とを含み、
前記期待値アドレスには、第２の固定値を初期値として、前記第２のアドレス空間に格納される全データを前記所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値が格納され、
前記第２の予約アドレスには、予め算出される第２の固定値化データが格納され、
前記第２の固定値化データは、前記最後の組を対象に定めた前記第１の固定値を初期値として、前記期待値アドレスに格納されるデータと前記第２の固定値化データとを前記所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を前記第２の固定値に収束させるデータである、
半導体装置。
【請求項１０】
請求項９記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、前記期待値アドレスに格納されるデータと前記シグネチャ値とが一致しているか否かを判定する判定回路を有する、
半導体装置。
【請求項１１】
不揮発性メモリと、前記不揮発性メモリを診断するＢＩＳＴ（Built In Self Test）回路とを有し、一つの半導体チップで構成される半導体装置であって、
前記不揮発性メモリのアドレスの一つとなる期待値アドレスには、予め算出される期待値データが格納され、
前記ＢＩＳＴ回路は、
アドレスを順に生成し、当該生成したアドレスを含んだ読み出し命令を前記不揮発性メモリへ順に発行する読み出し回路と、
前記読み出し回路からの読み出し命令に応じて前記不揮発性メモリから順に読み出されるデータを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値を出力する圧縮器と、
前記期待値アドレスに一致するアドレスを含んだ前記読み出し命令を検出する検出回路と、
前記検出回路によって検出された前記読み出し命令に応じて前記不揮発性メモリから読み出されるデータが前記圧縮器による処理対象から除外されるように制御するデータマスク回路と、
を有し、
前記期待値データは、所定の初期値を用いて、前記不揮発性メモリにおける前記期待値アドレスを除く各アドレスに格納される全データを前記所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値である、
半導体装置。
【請求項１２】
請求項１１記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、前記期待値アドレスに格納されるデータと前記シグネチャ値とが一致しているか否かを判定する判定回路を有する、
半導体装置。
【請求項１３】
請求項１２記載の半導体装置において、
前記ＢＩＳＴ回路は、さらに、
前記期待値アドレスを含んだ読み出し命令を前記不揮発性メモリへ発行する期待値アドレス読み出し回路と、
前記期待値アドレス読み出し回路の読み出し命令に応じて前記期待値アドレスから読み出されるデータを保持する期待値レジスタと、
を有し、
前記期待値アドレスは、ユーザの要求に応じて可変設定可能であり、
前記判定回路は、前記期待値レジスタに保持されるデータと前記シグネチャ値とが一致しているか否かを判定する、
半導体装置。
【請求項１４】
不揮発性メモリと、前記不揮発性メモリを診断するＢＩＳＴ（Built In Self Test）回路とを有する半導体装置の診断方法であって、
前記ＢＩＳＴ回路は、
アドレスを順に生成し、当該生成したアドレスを含んだ読み出し命令を前記不揮発性メモリへ順に発行する読み出し回路と、
前記読み出し回路からの読み出し命令に応じて前記不揮発性メモリから順に読み出されるデータを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値を出力する圧縮器と、
を有し、
前記不揮発性メモリは、前記読み出し回路によるアドレスの生成順序を基準として、連続して読み出されるアドレスによって構成される第１のアドレス空間と、前記第１のアドレス空間の一つ後に読み出され、単数または複数のアドレスで構成される予約アドレスとを含み、
前記診断方法は、
前記第１のアドレス空間に格納したい第１のユーザデータを用いて固定値化データを算出する第１のステップと、
前記第１のユーザデータを前記第１のアドレス空間に格納し、前記固定値化データを前記予約アドレスに格納する第２のステップと、
前記ＢＩＳＴ回路を起動し、前記シグネチャ値を取得する第３のステップと、
を有し、
前記固定値化データは、所定の初期値を用いて、前記第１のユーザデータと前記固定値化データとを前記所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を予め定めた固定値に収束させるデータである、
半導体装置の診断方法。
【請求項１５】
請求項１４記載の半導体装置の診断方法において、
さらに、前記固定値と前記第３のステップで取得した前記シグネチャ値とが一致しているか否かを判定する第４のステップを有する、
半導体装置の診断方法。
【請求項１６】
請求項１４記載の半導体装置の診断方法において、
前記不揮発性メモリは、さらに、前記予約アドレスの一つ後に読み出される第２のアドレス空間を含み、
前記診断方法は、さらに、
前記第１のステップよりも前に実行され、前記固定値を初期値として、前記第２のアドレス空間に格納したい第２のユーザデータを前記所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値を期待値データとして算出する第５のステップと、
前記第２のユーザデータを前記第２のアドレス空間に格納し、前記期待値データを、前記第１のアドレス空間に含まれるアドレスの一つである期待値アドレスに格納する第６のステップと、
を有し、
前記第１のステップでは、前記期待値データを前記第１のユーザデータに包含させた状態で前記固定値化データが算出される、
半導体装置の診断方法。
【請求項１７】
請求項１６記載の半導体装置の診断方法において、
さらに、前記期待値アドレスに格納されるデータと前記第３のステップで取得した前記シグネチャ値とが一致しているか否かを判定する第７のステップを有する、
半導体装置の診断方法。
【請求項１８】
請求項１６記載の半導体装置の診断方法において、
前記期待値アドレスは、前記第１のアドレス空間の中で最後に読み出されるアドレスである、
半導体装置の診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置および半導体装置の診断方法に関し、例えば、不揮発性メモリの自己診断機能を備える半導体装置及び半導体装置の診断方法に関する。
【背景技術】
【０００２】
例えば、特許文献１には、ＲＯＭ（Read Only Memory）を高速にテストするためのテスト回路を備えたシステムＬＳＩが示される。当該テスト回路は、アドレス生成回路で生成したテストアドレスをＲＯＭに入力し、入力したアドレスに対応してＲＯＭから出力されたデータをＭＩＳＲ（Multiple Input Signature Register）で圧縮する。ＭＩＳＲで圧縮されたデータは、ＬＳＩの外部に出力され、外部のテスタで期待値と比較される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１５９１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、Ｆｌａｓｈメモリを代表とする不揮発性メモリの大容量化に伴い、機能安全としてのＦｌａｓｈメモリの診断をＢＩＳＴ（Built In Self Test）で行うことのニーズが高まっている。Ｆｌａｓｈメモリの診断方式として、例えば、Ｆｌａｓｈメモリと同一の半導体チップに搭載されるＣＰＵ（Central Processing Unit）を利用する方式が挙げられる。ただし、この方式では、不揮発性メモリの大容量化に伴い診断の実行時間が増大する。診断実行時間を短縮するため、専用のＢＩＳＴ回路を搭載する技術が開示されている。
【０００５】
専用のＢＩＳＴ回路を用いる方式として、例えば、特許文献１のように、アドレス生成回路でアドレスを順次生成し、読み出されたデータをＭＩＳＲで圧縮する方式が知られている。しかし、特許文献１の方式では、期待値を格納したり診断結果と期待値を比較するために、ＬＳＩの外部にテスタ等の外部装置が必要になる。換言すると、例えば、不揮発性メモリを含んだシステムにおいて、当該システムの起動時診断の中で不揮発性メモリの診断を行いたいような場合、当該システム内に何らかの外部装置を設ける必要があり、システム設計の観点において大きなオーバーヘッドが生じ得る。
【０００６】
そこで、診断対象の不揮発性メモリに期待値を格納する方式が考えられる。しかし、この場合、期待値自体を確定させることが困難となる。何故なら、期待値を診断対象の不揮発性メモリに格納することによって、新たな期待値が生じるという因果性のジレンマに陥ってしまうからである。このため、ＬＳＩ内に期待値を持たせようとすると、例えば、診断対象とは別に不揮発性メモリを設け、そこに期待値を格納するといった方式が必要とされる。ただし、別の不揮発性メモリを設けることはオーバーヘッドの増加に繋がり、また、当該別の不揮発性メモリは、診断対象外となってしまう。
【０００７】
後述する実施の形態は、このようなことを鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態による半導体装置は、不揮発性メモリと、それを診断するＢＩＳＴ回路とを有し、一つの半導体チップで構成される。ＢＩＳＴ回路は、アドレスを順に生成し、それを含んだ読み出し命令を不揮発性メモリへ順に発行する読み出し回路と、当該読み出し命令に応じて順に読み出されるデータを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値を出力する圧縮器とを有する。不揮発性メモリは、連続して読み出されるアドレスによって構成される第１のアドレス空間と、その一つ後に読み出され、単数または複数のアドレスで構成される第１の予約アドレスとを含む。第１の予約アドレスには、予め算出される第１の固定値化データが格納される。第１の固定値化データは、所定の初期値を用いて、第１のアドレス空間に格納される全データと第１の固定値化データとを所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を予め定めた第１の固定値に収束させるデータである。
【発明の効果】
【０００９】
前記一実施の形態によれば、不揮発性メモリの起動時診断を、外部装置や診断対象外となる不揮発性メモリを必要とせずに、実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１による半導体装置の構成例を示す概略図である。
【図２】図１における圧縮器の構成例を示す回路図である。
【図３】図１の半導体装置における自己診断の実行手順の一例を示すフロー図である。
【図４】図１における不揮発性メモリのデータ構造の一例を示す図である。
【図５】図１の半導体装置を搭載したシステムの運用方法の一例を示すフロー図である。
【図６】（ａ）は、図５において、不揮発性メモリの書き込みを行う際の処理内容の一例を示すフロー図であり、（ｂ）は、（ａ）の補足図である。
【図７】（ａ）および（ｂ）は、図６（ｂ）における診断用データ計算プログラムの一例を説明する図であり、（ａ）は、計算対象となる不揮発性メモリおよびＭＩＳＲの構成例を示す回路図であり、（ｂ）は、（ａ）に対する固定値化データの具体例を示す図である。
【図８】図７（ａ）の構成を計算対象とした場合の、診断用データ計算プログラムの処理内容の一例を示すフロー図である。
【図９】（ａ）および（ｂ）は、図６（ｂ）における診断用データ計算プログラムの他の一例を説明する図であり、（ａ）は、計算対象となる不揮発性メモリおよびＭＩＳＲの構成例を示す回路図であり、（ｂ）は、（ａ）に対する固定値化データの具体例を示す図である。
【図１０】図９（ａ）の構成を計算対象とした場合の、診断用データ計算プログラムの処理内容の一例を示すフロー図である。
【図１１】本発明の実施の形態２による半導体装置の構成例を示す概略図である。
【図１２】図１１における不揮発性メモリのデータ構造の一例を示す図である。
【図１３】図１２の不揮発性メモリにおける期待値データおよび固定値化データの計算方法の一例を示す説明図である。
【図１４】図１１の半導体装置において、ＢＩＳＴ回路の動作に伴うシグネチャ値の変化の様子を表す説明図である。
【図１５】図１１の半導体装置における自己診断の実行手順の一例を示すフロー図である。
【図１６】本発明の実施の形態３による半導体装置において、不揮発性メモリのデータ構造の一例を示す図である。
【図１７】本発明の実施の形態３による半導体装置において、不揮発性メモリの他のデータ構造の一例を示す図である。
【図１８】図１７の比較例となる不揮発性メモリのデータ構造の一例を示す図である。
【図１９】本発明の実施の形態４による半導体装置の構成例を示す概略図である。
【図２０】本発明の比較例として検討した半導体装置の構成例を示す概略図である。
【発明を実施するための形態】
【００１１】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１２】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１３】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１４】
（実施の形態１）
《半導体装置（実施の形態１）の概略構成》
図１は、本発明の実施の形態１による半導体装置の構成例を示す概略図である。図１に示す半導体装置ＤＥＶは、一つの半導体チップで構成され、特に限定はされないが、マイクロコントローラチップ等である。当該半導体装置ＤＥＶは、ＣＰＵ等を代表とするユーザ回路ＵＬＧと、Ｆｌａｓｈメモリ等を代表とする不揮発性メモリＮＶＭと、不揮発性メモリＮＶＭを診断するＢＩＳＴ回路ＢＳＴＣと、セレクタＳＥＬ１と、システム制御回路ＳＹＳＣＴＬとを備える。
【００１５】
セレクタＳＥＬ１は、ユーザ回路ＵＬＧまたはＢＩＳＴ回路ＢＳＴＣからのアドレスＡＤＲを選択して不揮発性メモリＮＶＭへ出力する。このアドレスＡＤＲの入力に応じて不揮発性メモリＮＶＭから読み出されたデータＤＴは、ユーザ回路ＵＬＧおよびＢＩＳＴ回路ＢＳＴＣへ出力される。システム制御回路ＳＹＳＣＴＬは、ＢＩＳＴ回路ＢＳＴＣを含めた半導体装置ＤＥＶ全体のブート時の各シーケンスを制御するブートコントローラ等である。不揮発性メモリＮＶＭには、例えば、ＣＰＵで実行されるプログラム等が格納され、ユーザ回路ＵＬＧは、当該プログラムを読み出して実行する。
【００１６】
ＢＩＳＴ回路ＢＳＴＣは、読み出し回路ＲＤＣＴＬと、圧縮器ＴＲＣと、期待値生成回路ＥＸＰＧと、判定回路ＪＤＧとを備える。読み出し回路ＲＤＣＴＬは、アドレスカウンタＡＣＮＴを用いてアドレスを順に生成し、当該生成したアドレスと各種コマンド信号とを含んだ読み出し命令ＲＣＭＤを不揮発性メモリＮＶＭへ順に発行する。アドレスの生成順序は、代表的にインクリメント等であるが、必ずしもこれに限定されず、何らかの規則的な順序であればよい。
【００１７】
圧縮器ＴＲＣは、代表的にはＭＩＳＲであり、読み出し命令ＲＣＭＤに応じて不揮発性メモリＮＶＭから順に読み出されるデータＤＴを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値ＳＧを出力する。期待値生成回路ＥＸＰＧは、期待値ＥＸＰを生成する。判定回路ＪＤＧは、例えばコンパレータであり、期待値ＥＸＰとシグネチャ値ＳＧが一致しているか否かを判定し、判定結果ＲＳＬＴを出力する。
【００１８】
図２は、図１における圧縮器ＴＲＣの構成例を示す回路図である。図２に示す圧縮器ＴＲＣは、ＭＩＳＲであり、複数ビット（ここでは８ビット）で構成される帰還型のシフトレジスタＲＥＧ０〜ＲＥＧ７と、各レジスタ間に挿入されるＥＸＯＲ回路ＸＯＲ０〜ＸＯＲ７とを備える。不揮発性メモリＮＶＭから読み出されるデータＤＴの各ビット（ここでは８ビット）ｂ[０]〜ｂ[７]は、それぞれ、ＥＸＯＲ回路ＸＯＲ０〜ＸＯＲ７を介してシフトレジスタＲＥＧ０〜ＲＥＧ７へ入力される。
【００１９】
また、この例では、レジスタＲＥＧ０の出力は、ＥＸＯＲ回路ＸＯＲ３〜ＸＯＲ５，ＸＯＲ７を介してレジスタＲＥＧ３〜ＲＥＧ５，ＲＥＧ７に帰還される。ＭＩＳＲは、このような構成によって、時系列に読み出されるデータＤＴを時間方向で８ビットに圧縮する。なお、ＭＩＳＲは、図２の構成に限らず、様々な種類のものが存在する。ただし、ＭＩＳＲは、基本構成として、帰還型のシフトレジスタとＥＸＯＲ回路の組み合わせで構成され、その組み合わせ方法や、シフトレジスタのビット数や、帰還の方法等によって圧縮アルゴリズム（圧縮の計算式）が変わる。ＭＩＳＲによる圧縮値（ＭＩＳＲ値）は、この圧縮アルゴリズムと、シフトレジスタの初期値と、入力されるデータによって定まる。
【００２０】
なお、ＭＩＳＲによる圧縮値（ＭＩＳＲ値）は、一般的に、シグネチャ値とも呼ばれる。ただし、明細書では、詳細は後述するが、例えば、図２のＭＩＳＲの構成に基づきシミュレーション等によって算出したＭＩＳＲ値と、半導体装置ＤＥＶ内の実際の圧縮器ＴＲＣによって得られるＭＩＳＲ値とを明確に区別するため、後者のＭＩＳＲ値のみをシグネチャ値ＳＧと呼ぶ。また、以降の説明では、圧縮器ＴＲＣは、ＭＩＳＲであるものとして説明する。
【００２１】
《自己診断の実行手順》
図３は、図１の半導体装置における自己診断の実行手順の一例を示すフロー図である。まず、システム制御回路ＳＹＳＣＴＬは、ＢＩＳＴ回路ＢＳＴＣへＢＩＳＴ起動信号ＳＵＰを出力する（ステップＳ４１）。これに応じて、ＢＩＳＴ回路ＢＳＴＣは、選択信号ＳＳ１に‘１’をセットし、選択回路ＳＥＬ１にＢＩＳＴ回路ＢＳＴＣからのアドレスを選択させる（ステップＳ４２）。次に、読み出し回路ＲＤＣＴＬは、アドレスを順に生成し、当該アドレスを含んだ読み出し命令ＲＣＭＤを不揮発性メモリＮＶＭへ順に発行する（ステップＳ４３）。
【００２２】
圧縮器ＴＲＣは、読み出し命令ＲＣＭＤに応じて不揮発性メモリＮＶＭから順に読み出されるデータＤＴを時間方向で圧縮し、圧縮結果となるシグネチャ値ＳＧを出力する（ステップＳ４４）。最終アドレスの読み出し命令ＲＣＭＤに伴うデータＤＴの圧縮が終わった後、判定回路ＪＤＧは、最終的なシグネチャ値ＳＧと期待値ＥＸＰとが一致しているか否かを判定し、判定結果ＲＳＬＴをシステム制御回路ＳＹＳＣＴＬへ出力する（ステップＳ４５）。また、ＢＩＳＴ回路ＢＳＴＣは、最終的なシグネチャ値ＳＧを用いた判定結果ＲＳＬＴを出力する際に、併せて終了信号ＥＤを出力する。システム制御回路ＳＹＳＣＴＬは、終了信号ＥＤをトリガとして判定結果ＲＳＬＴを取り込み、不揮発性メモリＮＶＭの読み出し動作に関するエラーの有無を判別する。
【００２３】
《半導体装置（比較例）の概略構成および問題点》
図２０は、本発明の比較例として検討した半導体装置の構成例を示す概略図である。図２０に示す半導体装置ＤＥＶ’は、図１と同様の構成に加えて、期待値データが格納される不揮発性メモリＮＶＭ’２を備える。期待値レジスタＲＥＧｅは、不揮発性メモリＮＶＭ’２に格納される期待値データを保持する。期待値データは、不揮発性メモリＮＶＭ’１に格納される全データを圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムで圧縮した場合の圧縮値であり、図２に示したようなＭＩＳＲの構成に基づき、予めシミュレーション等によって算出される値である。
【００２４】
ここで、仮に、当該期待値データを不揮発性メモリＮＶＭ’１に格納すると、当該期待値データも圧縮対象となるため、新たな期待値データが生じる。この新たに生じた期待値データを不揮発性メモリＮＶＭ’１に格納すると、更に新たな期待値データが生じる。このような因果性のジレンマが生じるため、期待値データを不揮発性メモリＮＶＭ’１に格納することは困難となる。
【００２５】
そこで、期待値データは、図２０のように別の不揮発メモリＮＶＭ’２に格納されるか、あるいは、半導体装置ＤＥＶ’外部の外部装置に格納される。しかし、この場合、別の不揮発メモリＮＶＭ’２や外部装置を設けることによる、オーバーヘッドの増大が懸念される。さらに、不揮発メモリＮＶＭ’２でも同様に因果性のジレンマが生じるため、不揮発メモリＮＶＭ’２は、診断対象外のメモリである必要がある。
【００２６】
《不揮発性メモリ（実施の形態１）のデータ構造》
図４は、図１における不揮発性メモリのデータ構造の一例を示す図である。図４に示す不揮発性メモリＮＶＭは、アドレス空間ＡＳ１と、予約アドレスＲＡＤＲとを含む。アドレス空間ＡＳ１は、読み出し回路ＲＤＣＴＬによるアドレスの生成順序（代表的にはインクリメント）を基準として、連続して読み出されるアドレスによって構成され、ユーザデータＵＤが格納される。ユーザデータＵＤは、例えば、頻繁に変更されことがないＲＯＭ向けのデータであり、代表的には、プログラムや、固定の各種パラメータ値等が挙げられる。
【００２７】
予約アドレスＲＡＤＲは、アドレス空間ＡＳ１の一つ後に読み出され、単数または複数のアドレスで構成される。予約アドレスＲＡＤＲには、予め算出される固定値化データＳＤが格納される。固定値化データＳＤは、所定の初期値を用いて、アドレス空間ＡＳ１に格納される全データと固定値化データＳＤとを、圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムおよび読み出し回路ＲＤＣＴＬで用いるアドレスの生成順序に従って圧縮した場合に、当該圧縮値を予め定めた固定値に収束させるデータである。所定の初期値は、圧縮器ＴＲＣで実際に用いられる初期値であり、代表的には０値である。また、固定値は、任意に定めることが可能であり、代表的には０値である。
【００２８】
このようなデータ構造を持つ不揮発性メモリＮＶＭを対象に図３のフローを実行すると、不揮発性メモリＮＶＭにエラーが無い限り、最終的なシグネチャ値ＳＧは、固定値化データＳＤによる収束値となる固定値（例えば０値）となる。したがって、期待値生成回路ＥＸＰＧは、この既定の固定値を生成し、判定回路ＪＤＧは、当該固定値を期待値ＥＸＰとしてシグネチャ値ＳＧと一致しているか否かを判定することで不揮発性メモリＮＶＭを診断することができる。その結果、図２０の場合と異なり、不揮発性メモリＮＶＭの起動時診断を、外部装置や診断対象外となる不揮発性メモリＮＶＭ’２を必要とせずに、実現することが可能になる。
【００２９】
なお、判定回路ＪＤＧおよび期待値生成回路ＥＸＰＧは、場合によっては、ユーザ回路ＵＬＧ内に実装することも可能である。この場合、ユーザ回路ＵＬＧがＢＩＳＴ回路ＢＳＴＣの動作によって得られるシグネチャ値ＳＧを取得し、それと規定の固定値が一致しているか否かを判定する。具体的には、例えば、ＢＩＳＴ回路ＢＳＴＣは、電源投入後に起動時診断を実行し、その診断結果となるシグネチャ値ＳＧを保持する。そして、このＢＩＳＴ回路ＢＳＴＣの動作の後に、ユーザ回路ＵＬＧ内の例えばＣＰＵが起動され、ＣＰＵは、起動後のソフトウェア処理の中で、シグネチャ値ＳＧを取得し、判定を行う。ただし、ＣＰＵの起動に際しては、通常、不揮発性メモリＮＶＭ（言い換えればプログラム等）が正常であることが前提となるため、この観点で、判定回路ＪＤＧ等をＢＩＳＴ回路ＢＳＴＣに搭載することが望ましい。
【００３０】
《自己診断の運用方法》
図５は、図１の半導体装置を搭載したシステムの運用方法の一例を示すフロー図である。まず、ユーザは、システムを運用する過程で、例えば、プログラムのアップデート等、不揮発性メモリＮＶＭの書き換えを行いたい場合がある。不揮発性メモリＮＶＭの書き換えが必要な場合（ステップＳ１）、不揮発性メモリＮＶＭの書き込み処理が行われた後（ステップＳ２）、半導体装置ＤＥＶが起動される（ステップＳ３）。一方、不揮発性メモリＮＶＭの書き換えが不要な場合（ステップＳ１）、そのままの状態で、半導体装置ＤＥＶが起動される（ステップＳ３）。
【００３１】
半導体装置ＤＥＶが起動されると、図３に示したようなフローで、自己診断が実行される（ステップＳ４）。当該自己診断結果にエラーが無い場合（ステップＳ５）、例えば、システム制御回路ＳＹＳＣＴＬによって続けてユーザ回路ＵＬＧが起動され、半導体装置ＤＥＶは通常動作に移行する（ステップＳ６）。一方、自己診断結果にエラーが有る場合（ステップＳ５）、システムによって定められる所定のエラー処理が行われる（ステップＳ８）。通常動作の半導体装置ＤＥＶは、シャットダウンされるまで、通常動作を継続する（ステップＳ７）。
【００３２】
《不揮発性メモリの書き込み手順》
図６（ａ）は、図５において、不揮発性メモリの書き込み（ステップＳ２）を行う際の処理内容の一例を示すフロー図であり、図６（ｂ）は、図６（ａ）の補足図である。図１に示したような半導体装置ＤＥＶは、図６（ｂ）に示されるように、通常、所定のシステムを構成する配線基板ＢＤ上に搭載した状態で使用される。例えば、半導体装置ＤＥＶが自動車用のマイクロコントローラ等である場合、配線基板ＢＤは、ＥＣＵ（Electronic Control Unit）基板等に該当する。
【００３３】
半導体装置ＤＥＶ内の不揮発性メモリＮＶＭへのデータ書き込み（または書き換え）は、例えば、配線基板ＢＤに設けられる外部通信端子（代表的にはＪＴＡＧ（Joint Test Action Group）端子等）に情報処理装置ＩＭを接続することで行われる。情報処理装置ＩＭは、ツールとして、診断用データ計算プログラムＰＧＭ１を含む所定のデータ書き込み用プログラムを搭載しており、ＣＰＵ等が当該データ書き込み用プログラムを実行することで、不揮発性メモリＮＶＭへの書き込みを行うことができる。
【００３４】
図６（ａ）において、システムのユーザは、例えば、プログラムの修正等を行いたいような場合、情報処理装置ＩＭ上で、修正データとなる書き込みデータＡを作成する（ステップＳ２１）。この例では、書き込みデータＡは、ユーザデータ（例えば、プログラム）の全てではなく、一部であるものとする。続いて、情報処理装置ＩＭは、ツールに基づき次のような処理を行う。
【００３５】
まず、情報処理装置ＩＭは、不揮発性メモリＮＶＭの自己診断を実行し、不揮発性メモリＮＶＭに格納される既存のユーザデータに破損がないことを確認する（ステップＳ２２）。次に、情報処理装置ＩＭは、不揮発性メモリＮＶＭから、ＭＩＳＲ値の計算対象範囲に格納されるデータＢ（すなわち既存のユーザデータ）をダウンロードする（ステップＳ２３）。当該計算対象範囲は、例えば、図４の場合、アドレス空間ＡＳ１に格納される全てのユーザデータＵＤとなる。
【００３６】
情報処理装置ＩＭは、ダウンロードしたデータＢの一部をデータＡに置き換えることで最終的なユーザデータＵＤを確定させ、診断用データ計算プログラムＰＧＭ１を実行することで、当該ユーザデータＵＤを用いて各種診断用データを算出する（ステップＳ２４）。図４の場合、情報処理装置ＩＭは、アドレス空間ＡＳ１のユーザデータＵＤを用いて、各種診断用データとなる固定値化データＳＤを算出する。その後、情報処理装置ＩＭは、データＡおよび各種診断用データを不揮発性メモリＮＶＭへ書き込む（ステップＳ２５）。具体的には、情報処理装置ＩＭは、データＡをアドレス空間ＡＳ１へ書き込み、固定値化データＳＤを予約アドレスＲＡＤＲへ書き込む。
【００３７】
なお、ステップＳ２１で作成されるデータがユーザデータＵＤ全てである場合、ステップＳ２２，Ｓ２３の処理を省略できる。また、ステップＳ２５ではデータＡおよび固定値化データＳＤを書き込むこととしたが、例えば、不揮発性メモリＮＶＭがＦｌａｓｈメモリの場合、実際には、消去単位の制約からデータＡおよび固定値化データＳＤのみを書き換えられない場合がある。この場合、データＡおよび固定値化データＳＤを含む消去単位のデータが作成され、この消去単位でデータが書き込まれる。
【００３８】
図７（ａ）および図７（ｂ）は、図６（ｂ）における診断用データ計算プログラムの一例を説明する図であり、図７（ａ）は、計算対象となる不揮発性メモリおよびＭＩＳＲの構成例を示す回路図であり、図７（ｂ）は、図７（ａ）に対する固定値化データの具体例を示す図である。図８は、図７（ａ）の構成を計算対象とした場合の、診断用データ計算プログラムの処理内容の一例を示すフロー図である。図８の処理内容は、図６（ａ）におけるステップＳ２４の処理の詳細を表すものである。
【００３９】
ここでは、図１の不揮発性メモリＮＶＭおよび圧縮器ＴＲＣが、図７（ａ）のような構成である場合を想定する。図７（ａ）には、“８ビット×４”の不揮発性メモリＮＶＭから読み出されるデータＤＴをＭＩＳＲで圧縮する場合の構成が示される。ＭＩＳＲは、図２で述べたように、複数（ここでは８ビット分）のレジスタＲＥＧで構成されるシフトレジスタと、ＥＸＯＲ回路ＸＯＲとの組み合わせで構成される。図７（ａ）の例では、ビットｂ［０］，ｂ［２］〜ｂ［４］の各レジスタＲＥＧの値がビットｂ［７］に帰還されている。この帰還元のレジスタはタップＴＰと呼ばれ、タップＴＰを設ける位置に応じて圧縮アルゴリズム（圧縮の計算式）は変わることになる。
【００４０】
図７（ｂ）には、不揮発性メモリＮＶＭに格納されるデータＤＴと、当該データＤＴをアドレスＡＤＲの下位側から順にＭＩＳＲへ読み出したときのＭＩＳＲ値の変化の様子が示される。なお、ＭＩＳＲの初期値は、“００００００００”とする。初期値の入ったＭＩＳＲに、アドレスＡＤＲ＝０のデータ“００１０１１１０”を入力すると、ＭＩＳＲ値として、“００１０１１１０”が得られる。このような処理を、アドレスＡＤＲを１ずつインクリメントしながら順に繰り返し、アドレスＡＤＲ＝２のデータを入力した結果のＭＩＳＲ値は、“００００１１００”となる。
【００４１】
アドレスＡＤＲ＝３のデータは、固定値化データＳＤである。固定値化データＳＤは、アドレスＡＤＲ＝２までのデータで算出したＭＩＳＲ値と、予め定めた任意の固定値（この例では０値とする）とから求めることができる。この例の場合、アドレスＡＤＲ＝２までのＭＩＳＲ値が、“００００１１００”であり、固定値が“００００００００”である。固定値化データＳＤは、アドレスＡＤＲ＝２までのＭＩＳＲ値を右に１ビットシフトし、最左のビット（ここではｂ［７］）にＥＸＯＲツリーの出力値を入れる操作をすることで算出され、“０００００１１０”となる。ＥＸＯＲツリーとは、タップＴＰの値のＥＸＯＲ演算結果である。
【００４２】
図８において、診断用データ計算プログラムＰＧＭ１は、まず、アドレスＡＤＲを０とし（ステップＳ２４１）、当該アドレスのデータＤＴ（図７（ｂ）の“００１０１１１０”）と前ＭＩＳＲ値（図７（ｂ）の“００００００００”）とから次ＭＩＳＲ値（図７（ｂ）の“００１０１１１０”）を算出する（ステップＳ２４２）。次に、診断用データ計算プログラムＰＧＭ１は、アドレスＡＤＲを１ずつインクリメントしながら最終アドレスの一つ前までＭＩＳＲ値の算出を同様にして行い、最終アドレス（図７（ｂ）では４）に達した時点でステップＳ２４５の処理へ移行する（ステップＳ２４３，Ｓ２４４）。
【００４３】
ステップＳ２４５において、診断用データ計算プログラムＰＧＭ１は、前ＭＩＳＲ値（図７（ｂ）の“００００１１００”）を右に１ビットシフトし、最左ビットに前ＭＩＳＲ値のＥＸＯＲツリーの出力値を代入することで固定値化データＳＤを算出する。なお、図８において、情報処理装置ＩＭは、ＣＰＵを用いて診断用データ計算プログラムＰＧＭ１を実行することでＭＩＳＲ値計算部ＣＡＬ１ａおよび固定値化データ計算部ＣＡＬ２ａとして機能する。ＭＩＳＲ値計算部ＣＡＬ１ａは、ステップＳ２４１〜Ｓ２４４の処理を実行し、固定値化データ計算部ＣＡＬ２ａは、ステップＳ２４５の処理を実行する。
【００４４】
図９（ａ）および図９（ｂ）は、図６（ｂ）における診断用データ計算プログラムの他の一例を説明する図であり、図９（ａ）は、計算対象となる不揮発性メモリおよびＭＩＳＲの構成例を示す回路図であり、図９（ｂ）は、図９（ａ）に対する固定値化データの具体例を示す図である。図１０は、図９（ａ）の構成を計算対象とした場合の、診断用データ計算プログラムの処理内容の一例を示すフロー図である。図１０の処理内容は、図６（ａ）におけるステップＳ２４の処理の詳細を表すものである。
【００４５】
ここでは、図１の不揮発性メモリＮＶＭおよび圧縮器ＴＲＣが、図９（ａ）のような構成である場合を想定する。図９（ａ）には、“４ビット×１２”の不揮発性メモリＮＶＭから読み出されるデータＤＴをＭＩＳＲで圧縮する場合の構成が示される。ＭＩＳＲは、８ビットのレジスタＲＥＧで構成されるシフトレジスタと、ＥＸＯＲ回路ＸＯＲとの組み合わせで構成される。タップＴＰの位置は、図７（ａ）の場合と同様である。不揮発性メモリＮＶＭから読み出される４ビットのデータＤＴは、図７（ａ）の場合と異なり、８ビットのレジスタＲＥＧの中の左側の４ビットにＥＸＯＲ回路ＸＯＲを介して入力される。
【００４６】
図９（ｂ）には、不揮発性メモリＮＶＭに格納されるデータＤＴと、当該データＤＴをアドレスＡＤＲの下位側から順にＭＩＳＲへ読み出したときのＭＩＳＲ値の変化の様子が示される。なお、ＭＩＳＲの初期値は、“００００００００”とする。８ビット中の４ビットのレジスタＲＥＧにアドレスＡＤＲ＝０のデータ“１１１０”を入力すると、ＭＩＳＲ値として、“１１１０００００”が得られる。このような処理を、アドレスＡＤＲを１ずつインクリメントしながら順に繰り返し、アドレスＡＤＲ＝３のデータを入力した結果のＭＩＳＲ値は、“１１０００１００”となる。
【００４７】
アドレスＡＤＲ＝４〜Ｂのデータは、固定値化データＳＤである。このように、固定値化データＳＤは、複数のアドレスＡＤＲで構成される場合もある。複数のアドレスＡＤＲを用いるのは、診断対象の不揮発性メモリＮＶＭのビット数よりもＭＩＳＲのビット数が大きいためであり、ＭＩＳＲ値を固定化するためには、最大でＭＩＳＲのビット数分のアドレスＡＤＲが必要となるためである。固定値化データＳＤは、アドレスＡＤＲ＝３までのデータで算出したＭＩＳＲ値と、予め定めた任意の固定値（この例では０値とする）とから求めることができる。
【００４８】
この例では、簡略化のため、固定値化データＳＤは、最左ビットのみ有効値で、あとは全て０とする。最左ビットの値には、直前のＭＩＳＲ値におけるＥＸＯＲツリーの出力値が入力される。例えばアドレスＡＤＲ＝４の場合、直前のアドレスＡＤＲ＝３のデータに伴うＭＩＳＲ値“１１０００１００”を対象に、ＥＸＯＲツリーの出力値（ビットｂ［０］，ｂ［２］〜ｂ［４］のＥＸＯＲ演算結果）を算出し、その結果値である１を最左ビットの値とする。そして、残りのビットを全て‘０’とすることで、固定値化データＳＤの中のアドレスＡＤＲ＝４の値は、“１０００”となる。このような処理をＭＩＳＲのビット分繰り返すことで、８個のアドレスＡＤＲ（４〜Ｂ）で構成される固定値化データＳＤを算出することができる。
【００４９】
図１０において、診断用データ計算プログラムＰＧＭ１は、図８の場合と同様に、まず、アドレスＡＤＲを０とし（ステップＳ２４１）、当該アドレスのデータＤＴと前ＭＩＳＲ値とから次ＭＩＳＲ値を算出する（ステップＳ２４２）。次に、診断用データ計算プログラムＰＧＭ１は、アドレスＡＤＲを１ずつインクリメントしながらＭＩＳＲ値の算出を同様にして行う。ただし、ここでは、図８の場合と異なり、ＭＩＳＲ値の算出は、“最終アドレス−ＭＩＳＲビット数”の一つ前（図９（ｂ）の場合には３）まで行われる。そして、“最終アドレス‐ＭＩＳＲビット数”（図９（ｂ）では４）に達した時点でステップＳ２４５ａの処理へ移行する（ステップＳ２４３，Ｓ２４４ａ）。
【００５０】
ステップＳ２４５ａにおいて、診断用データ計算プログラムＰＧＭ１は、前ＭＩＳＲ値（図９（ｂ）の“１１０００１００”）のＥＸＯＲツリーの出力値を最左ビット（ここではビットｂ［３］）に代入し、残りのビットのデータを全て‘０’とした値を現アドレスＡＤＲ（＝４）のデータに定める。続いて、診断用データ計算プログラムＰＧＭ１は、定めたデータでＭＩＳＲ値を算出する（ステップＳ２４６ａ）。診断用データ計算プログラムＰＧＭ１は、アドレスＡＤＲを１ずつインクリメントしながら最終アドレス（図９（ｂ）の場合にはＢ）まで、ステップＳ２４５ａ，Ｓ２４６ａの処理を繰り返し実行する（ステップＳ２４７ａ，Ｓ２４８ａ）。これによって、全ての固定値化データＳＤが算出される。
【００５１】
なお、図１０において、情報処理装置ＩＭは、ＣＰＵを用いて診断用データ計算プログラムＰＧＭ１を実行することでＭＩＳＲ値計算部ＣＡＬ１ｂおよび固定値化データ計算部ＣＡＬ２ｂとして機能する。ＭＩＳＲ値計算部ＣＡＬ１ｂは、ステップＳ２４１〜Ｓ２４４ａの処理を実行し、固定値化データ計算部ＣＡＬ２ｂは、ステップＳ２４５ａ〜Ｓ２４８ａの処理を実行する。
【００５２】
《実施の形態１の主要な効果》
以上、実施の形態１の方式では、固定値化データＳＤを用いることで、実質的に、期待値（すなわち固定値化データＳＤによる固定値）を診断対象の不揮発性メモリに格納することが可能になり、期待値を格納したアドレス（予約アドレスＲＡＤＲ）に対する診断も可能になる。また、期待値が固定になるため、初期動作における期待値の読み出しや、期待値を格納するレジスタ等が不要である。その結果、図２０の場合と異なり、不揮発性メモリの起動時診断を、外部装置や診断対象外となる不揮発性メモリを必要とせずに実現することができる。これに伴い、自己診断に伴うオーバーヘッドを抑制することが可能になる。
【００５３】
（実施の形態２）
前述した実施の形態１の方式では、期待値を格納するため、最終アドレス部分に予約アドレスＲＡＤＲを確保する必要がある。このとき、例えば、最終アドレス部分をユーザデータＵＤ等で使用したいような場合に対応することが困難となり得る。このような場合に、実施の形態２の方式を用いることが有益となる。
【００５４】
《半導体装置（実施の形態２）の概略構成》
図１１は、本発明の実施の形態２による半導体装置の構成例を示す概略図である。図１１に示す半導体装置ＤＥＶは、図１の構成例と比較して、不揮発性メモリＮＶＭ２のデータ構造と、ＢＩＳＴ回路ＢＳＴＣ２の構成とが異なっている。ＢＩＳＴ回路ＢＳＴＣ２と図１のＢＩＳＴ回路ＢＳＴＣとの相違点は、読み出し回路ＲＤＣＴＬ２の構成が異なる点と、セレクタＳＥＬ２を備える点と、期待値生成回路ＥＸＰＧの代わりに期待値レジスタＲＥＧｅを備える点である。
【００５５】
読み出し回路ＲＤＣＴＬ２は、図１の場合と同様のアドレスカウンタＡＣＮＴに加えて、期待値アドレスＥＡＤＲを生成する期待値アドレス生成回路ＥＡＤＲＧを備える。これにより、読み出し回路ＲＤＣＴＬ２は、期待値アドレスＥＡＤＲを含んだ読み出し命令ＲＣＭＤを不揮発性メモリＮＶＭ２へ発行する期待値アドレス読み出し回路としても機能する。セレクタＳＥＬ２は、アドレスカウンタＡＣＮＴからのアドレスＡＤＲまたは期待値アドレス生成回路ＥＡＤＲＧからの期待値アドレスＥＡＤＲの一方を選択し、セレクタＳＥＬ１を介して不揮発性メモリＮＶＭ２へ出力する。期待値レジスタＲＥＧｅは、読み出し回路（期待値アドレス読み出し回路）ＲＤＣＴＬ２の読み出し命令ＲＣＭＤに応じて期待値アドレスＥＡＤＲから読み出されるデータを保持する。
【００５６】
《不揮発性メモリ（実施の形態２）のデータ構造》
図１２は、図１１における不揮発性メモリのデータ構造の一例を示す図である。図１２に示す不揮発性メモリＮＶＭ２は、アドレス空間ＡＳ１，ＡＳ２と、予約アドレスＲＡＤＲとを含む。図４の場合と同様に、アドレス空間ＡＳ１は、読み出し回路ＲＤＣＴＬ２によるアドレスの生成順序を基準として、連続して読み出されるアドレスによって構成され、ユーザデータ［１］ＵＤ１が格納される。また、予約アドレスＲＡＤＲは、アドレス空間ＡＳ１の一つ後に読み出され、単数または複数のアドレスで構成される。予約アドレスＲＡＤＲには、アドレス空間ＡＳ１を対象に定めた固定値化データＳＤが格納される。
【００５７】
一方、アドレス空間ＡＳ２は、予約アドレスＲＡＤＲの一つ後に読み出され、ユーザデータ［２］ＵＤ２が格納される。ここで、アドレス空間ＡＳ１には、図４の場合と異なり、期待値アドレスＥＡＤＲが含まれる。期待値アドレスＥＡＤＲには、固定値化データＳＤによる固定値（例えば０値）を初期値として、アドレス空間ＡＳ２に格納される全データを圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値が、期待値データＥＸＰＤとして格納される。また、これに伴い、固定値化データＳＤは、期待値データＥＸＰＤを反映して算出される。
【００５８】
ここで、期待値アドレスＥＡＤＲは、アドレス空間ＡＳ１に含まれるアドレスの中から任意に定めることが可能である。ただし、図１２に示されるように、期待値アドレスＥＡＤＲをアドレス空間ＡＳ１の中で最後に読み出されるアドレスに定めることで、ユーザデータ［１］ＵＤ１に連続したアドレス空間を割り当てることができ、実使用上の利便性を高めることができる。なお、特に限定はされないが、ユーザデータ［１］ＵＤ１と、ユーザデータ［２］ＵＤ２には、それぞれ異なるプログラム等が格納される。
【００５９】
《各種診断用データの計算方法》
図１３は、図１２の不揮発性メモリにおける期待値データおよび固定値化データの計算方法の一例を示す説明図である。当該期待値データＥＸＰＤおよび固定値化データＳＤの計算処理は、図６（ｂ）に示した情報処理装置ＩＭが診断用データ計算プログラムＰＧＭ１を実行することで行われる。情報処理装置ＩＭは、まず、固定値化データＳＤによる固定値（すなわち予め定められる固定値）を初期値として、アドレス空間ＡＳ２に格納したいユーザデータ［２］ＵＤ２を圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムに従って圧縮した場合の圧縮値（ＭＩＳＲ値）を、期待値データＥＸＰＤとして算出する。そして、情報処理装置ＩＭは、当該期待値データＥＸＰＤを予め定めた期待値アドレスＥＡＤＲのデータに定める（ステップＳ３０１）。
【００６０】
続いて、情報処理装置ＩＭは、アドレス空間ＡＳ１に格納したいデータ（すなわち、期待値データＥＸＰＤを包含したユーザデータ［１］ＵＤ１）を用いて実施の形態１の場合と同様にしてＭＩＳＲ値を算出する（ステップＳ３０２）。さらに、情報処理装置ＩＭは、当該ＭＩＳＲ値を用いて実施の形態１の場合と同様にして固定値化データＳＤを算出し、当該固定値化データＳＤを予約アドレスＲＡＤＲのデータに定める（ステップＳ３０３）。その後、情報処理装置ＩＭは、このようにして算出した期待値データＥＸＰＤおよび固定値化データＳＤと、ユーザデータ［１］ＵＤ１，［２］ＵＤ２とを、不揮発性メモリＮＶＭ２の対応するアドレスに書き込む。
【００６１】
《自己診断の実行に伴うシグネチャ値の変化の様子》
図１４は、図１１の半導体装置において、ＢＩＳＴ回路の動作に伴うシグネチャ値の変化の様子を表す説明図である。圧縮器ＴＲＣのシフトレジスタの初期値を全て‘０’としてアドレスＡＤＲを１ずつインクリメントさせていくと、シグネチャ値ＳＧは、ユーザデータ［１］ＵＤ１により変化する。さらに、シグネチャ値ＳＧは、期待値データＥＸＰＤ（ここでは“５Ａ”であるものとする）により変化する。その後、シグネチャ値ＳＧは、固定値（ここでは０値）化データＳＤによって、一旦、固定値（０値）に戻される。
【００６２】
続いて、シグネチャ値ＳＧは、固定値を初期値としてユーザデータ［２］ＵＤ２により変化する。その結果、シグネチャ値ＳＧは、ユーザデータ［２］ＵＤ２のＭＩＳＲ値となり、期待値データＥＸＰＤ（“５Ａ”）と一致する。仮に、ユーザデータ［１］ＵＤ１が破損していた場合、固定値化データＳＤによる収束値は予め定めた固定値とは異なり、その結果として、ユーザデータ［２］ＵＤ２のＭＩＳＲ値も期待値データＥＸＰＤとは異なる。また、ユーザデータ［２］ＵＤ２が破損していた場合も、そのＭＩＳＲ値は期待値データＥＸＰＤとは異なる。
【００６３】
《自己診断の実行手順（実施の形態２）》
図１５は、図１１の半導体装置における自己診断の実行手順の一例を示すフロー図である。図１５に示すフロー図は、図３に示したフロー図と比較して、ステップＳ４２とステップＳ４３の間に、ステップＳ４０１〜Ｓ４０３が挿入されたものとなっている。ステップＳ４０１において、読み出し回路（期待値読み出し回路）ＲＤＣＴＬ２は、予め定めた期待値アドレスＥＡＤＲを含んだ読み出し命令ＲＣＭＤを発行する。ここでは、セレクタＳＥＬ２は、デフォルトで‘０’側を選択するものとして、当該読み出し命令ＲＣＭＤは、セレクタＳＥＬ２，ＳＥＬ１を順に介して不揮発性メモリＮＶＭ２へ入力される。
【００６４】
ステップＳ４０２において、期待値レジスタＲＥＧｅは、期待値アドレスＥＡＤＲから読み出されるデータ（期待値データＥＸＰＤ）を保持する。ステップＳ４０３において、ＢＩＳＴ回路ＢＳＴＣ２（例えば読み出し回路ＲＤＣＴＬ２）は、選択信号ＳＳ２を‘１’にセットすることで、アドレスカウンタＡＣＮＴからのアドレスがセレクタＳＥＬ２から出力されるように設定する。以降、図３の場合と同様に、ステップＳ４３〜Ｓ４５の処理が行われる。ステップＳ４５において、判定回路ＪＤＧは、期待値レジスタＲＥＧｅに保持されるデータ（すなわち期待値データＥＸＰＤ）とシグネチャ値ＳＧが一致しているか否かを判定する。
【００６５】
なお、期待値アドレス生成回路ＥＡＤＲＧによって生成される期待値アドレスＥＡＤＲは、ユーザの要求に応じて可変設定可能である。特に限定はされないが、期待値アドレスＥＡＤＲの値自体は、例えば、不揮発性メモリＮＶＭ２の中で予め定められる特定アドレスに格納される。ユーザは、必要に応じて、この特定アドレスに格納される期待値アドレスＥＡＤＲの値を変更すればよく、期待値アドレス読み出し回路は、起動時にこの特定アドレスを読み出し、期待値アドレスＥＡＤＲを取得すればよい。また、この特定アドレスは、自己診断の対象とすることができる。この場合、特定アドレスに格納される期待値アドレスＥＡＤＲの値は、図６（ｂ）の診断用データ計算プログラムＰＧＭ１によってユーザデータと同様に取り扱われ、ＭＩＳＲ値の計算対象となる。
【００６６】
《実施の形態２の主要な効果》
以上、実施の形態２の方式では、期待値データＥＸＰＤに固定値化データＳＤを組み合わせることで、期待値（実質的に、期待値データＥＸＰＤおよび固定値化データＳＤに該当）を診断対象の不揮発性メモリに格納することが可能になり、期待値を格納したアドレスに対する診断も可能になる。その結果、実施の形態１の場合と同様に、不揮発性メモリの起動時診断を、外部装置や診断対象外となる不揮発性メモリを必要とせずに実現することができる。これに伴い、自己診断に伴うオーバーヘッドを抑制することが可能になる。さらに、実施の形態１の場合と異なり、期待値を格納するアドレスに制約を持たない。すなわち、常に最終アドレス部分に予約アドレスＲＡＤＲを確保する必要がなく、期待値アドレスＥＡＤＲおよび予約アドレスＲＡＤＲを任意に定めることが可能である。
【００６７】
（実施の形態３）
《不揮発性メモリ（実施の形態３）のデータ構造》
図１６は、本発明の実施の形態３による半導体装置において、不揮発性メモリのデータ構造の一例を示す図である。当該不揮発性メモリを備える半導体装置は、図１の構成に図１６の不揮発性メモリＮＶＭ３を適用したような構成となる。図１６の不揮発性メモリＮＶＭ３は、図４に示したアドレス空間ＡＳ１および予約アドレスＲＡＤＲの組み合わせを複数組（この例では３組）含んでいる。
【００６８】
１組目、２組目、３組目のアドレス空間ＡＳ１ａ，ＡＳ１ｂ，ＡＳ１ｃには、それぞれ、ユーザデータ［１］ＵＤ１，［２］ＵＤ２，［３］ＵＤ３が格納される。１組目、２組目、３組目の予約アドレスＲＡＤＲａ，ＲＡＤＲｂ，ＲＡＤＲｃには、それぞれ、固定値化データ［１］ＳＤ１，［２］ＳＤ２，［３］ＳＤ３が格納される。後の組（例えば２組目）のアドレス空間（ＡＳ１ｂ）は、前の組（１組目）の予約アドレス（ＲＡＤＲａ）の一つ後に読み出される。また、後の組（例えば２組目）の予約アドレス（ＲＡＤＲｂ）に格納される固定値化データ（ＳＤ２）は、前の組（１組目）を対象に定めた固定値（すなわち、固定値化データ［１］ＳＤ１による固定値）を初期値とすることで算出される。
【００６９】
このような不揮発性メモリＮＶＭ３を図１のＢＩＳＴ回路ＢＳＴＣで診断した場合、正常時における圧縮器ＴＲＣの最終的なシグネチャ値ＳＧは、最後の組を対象に定めた固定値（すなわち固定値化データ［３］ＳＤ３による固定値）となる。したがって、判定回路ＪＤＧは、この最後の組の固定値と、シグネチャ値ＳＧが一致しているか否かを判定する。なお、仮に、ユーザデータ［１］ＵＤ１が破損しているような場合には、固定値化データ［１］ＳＤ１による固定値が予め定めた固定値とは異なり、その結果として、固定値化データ［２］ＳＤ２，［３］ＳＤ３による固定値も予め定めた固定値とは異なることになる。
【００７０】
このような不揮発性メモリＮＶＭ３を用いると、各種診断用データ（ここでは固定値化データ）の計算に際して、前述した各組（図１６のエリアＥ１〜Ｅ３）を独立して取り扱うことが可能になる。言い換えれば、ある組のユーザデータを変更する際に、他の組のユーザデータは不要である。例えば、ユーザデータ［２］ＵＤ２を変更するような場合、この変更後のユーザデータ［２］ＵＤ２と、前の組を対象に定めた固定値（すなわち規定の固定値）があれば、固定値化データ［２］ＳＤ２を算出することができ、他の組のデータは無関係である。
【００７１】
図１７は、本発明の実施の形態３による半導体装置において、不揮発性メモリの他のデータ構造の一例を示す図である。当該不揮発性メモリを備える半導体装置は、図１１の構成に図１７の不揮発性メモリＮＶＭ４を適用したような構成となる。図１７の不揮発性メモリＮＶＭ４は、図１６に示した不揮発性メモリＮＶＭ３のデータ構造を基準として、さらに、期待値アドレスＥＡＤＲ、予約アドレスＲＡＤＲ２およびアドレス空間ＡＳ２が加わった構造となっている。
【００７２】
期待値アドレスＥＡＤＲは、図１６の最後の組（３組目）の予約アドレス（ＲＡＤＲ１ｃ）の一つ後に読み出され、期待値データＥＸＰＤが格納される。予約アドレスＲＡＤＲ２は、期待値アドレスＥＡＤＲの一つ後に読み出され、固定値化データ［４］ＳＤ４が格納される。アドレス空間ＡＳ２は、予約アドレスＲＡＤＲ２の一つ後に読み出され、ユーザデータ［４］ＵＤ４が格納される。
【００７３】
期待値データＥＸＰＤは、固定値化データ［４］ＳＤ４による固定値（固定値Ａとする）を初期値として、アドレス空間ＡＳ２に格納される全データを圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムに従って圧縮した場合のＭＩＳＲ値で定められる。固定値化データ［４］ＳＤ４は、図１６の最後の組（３組目）を対象に定めた固定値（すなわち固定値化データ［３］ＳＤ３による固定値）を初期値として、期待値データＥＸＰＤおよび固定値化データ［４］ＳＤ４を所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を前述した固定値Ａに収束させるデータである。
【００７４】
このような不揮発性メモリＮＶＭ４を図１１のＢＩＳＴ回路ＢＳＴＣ２で診断した場合、正常時の圧縮器ＴＲＣの最終的なシグネチャ値ＳＧは、期待値データＥＸＰＤと一致する。したがって、判定回路ＪＤＧは、期待値アドレスＥＡＤＲに格納されるデータ（すなわち期待値レジスタＲＥＧｅで保持されるデータ）とシグネチャ値ＳＧが一致しているか否かを判定する。
【００７５】
このような不揮発性メモリＮＶＭ４を用いることでも、図１６の場合と同様に、各種診断用データ（ここでは固定値化データおよび期待値データ）の計算に際して、各組を独立して取り扱うことが可能になる。各組とは、図１６と同様の３組（図１７のエリアＥ１〜Ｅ３）に加えて、期待値アドレスＥＡＤＲ、予約アドレスＲＡＤＲ２およびアドレス空間ＡＳ２で構成される１組（図１７のエリアＥ４）である。
【００７６】
例えば、ユーザデータ［４］ＵＤ４を変更する場合、この変更後のユーザデータ［４］ＵＤ４と固定値化データ［４］ＳＤ４の固定値（すなわち規定の固定値）とによって期待値データＥＸＰＤを算出でき、この期待値データＥＸＰＤと前の組（図１７のＥ３）を対象に定めた固定値とによって固定値化データ［４］ＳＤ４を算出することができる。すなわち、固定値化データ［３］ＳＤ３による固定値の情報は必要であるが、ユーザデータ［３］ＵＤ３や固定値化データ［３］ＳＤ３自体は不要である。
【００７７】
図１８は、図１７の比較例となる不揮発性メモリのデータ構造の一例を示す図である。図１８に示す不揮発性メモリＮＶＭ５は、図４のデータ構造と、図１２のデータ構造とを単純に組み合わせたようなデータ構造を備える。すなわち、図１８の例では、図１２の場合と同様に、アドレス空間ＡＳ１ｃの最終アドレスが期待値アドレスＥＡＤＲに定められる。なお、期待値アドレスＥＡＤＲは、原理上、アドレス空間ＡＳ１ａ，ＡＳ１ｂ，ＡＳ１ｃに含まれるアドレスのいずれか一つであってもよい。
【００７８】
ただし、図１８のようなデータ構造では、図１７の場合と異なり、各組を独立して取り扱うことが困難となる場合がある。例えば、ユーザデータ［４］ＵＤ４を変更する場合、期待値データＥＸＰＤの再計算と共に、この再計算結果とユーザデータ［３］ＵＤ３とを用いて固定値化データ［３］ＳＤ３を再計算する必要がある。
【００７９】
《実施の形態３の主要な効果》
以上、実施の形態３の方式を用いることで、実施の形態１または２の場合と同様の効果が得られることに加えて、複数のユーザデータを独立に管理することが可能になる。その結果、例えば、一部のユーザデータが機密性等の理由から非公開の状態であっても、起動時診断のためのデータ更新を問題無く行うことができる。すなわち、例えば、図１８において、ユーザデータ［３］ＵＤ３が非公開の場合、ユーザデータ［４］ＵＤ４のデータ更新を行えないような事態が生じ得るが、図１７では、このような事態は生じない。
【００８０】
（実施の形態４）
《半導体装置（実施の形態４）の概略構成》
図１９は、本発明の実施の形態４による半導体装置の構成例を示す概略図である。図１９に示す半導体装置ＤＥＶは、図１１の構成例と比較して、不揮発性メモリＮＶＭ６のデータ構造と、ＢＩＳＴ回路ＢＳＴＣ３の構成とが異なっている。ＢＩＳＴ回路ＢＳＴＣ３は、図１１のＢＩＳＴ回路ＢＳＴＣ２に対して、さらに、検出回路ＤＥＴおよびデータマスク回路ＤＭＳＫＣを備える。
【００８１】
不揮発性メモリＮＶＭ６のアドレスの一つは、任意に定められる期待値アドレスＥＡＤＲであり、期待値アドレスＥＡＤＲには、予め算出される期待値データＥＸＰＤが格納される。期待値アドレスＥＡＤＲを除く空間には、ユーザデータＵＤが格納される。期待値データＥＸＰＤは、所定の初期値（圧縮器ＴＲＣの初期値）を用いて、期待値アドレスＥＡＤＲを除く各アドレスに格納される全データを圧縮器ＴＲＣで用いる所定の圧縮アルゴリズムに従って圧縮した場合のＭＩＳＲ値に定められる。
【００８２】
期待値アドレス生成回路ＥＡＤＲＧは、期待値アドレスＥＡＤＲを常時出力する。検出回路ＤＥＴは、例えば、コンパレータであり、アドレスカウンタＡＣＮＴを用いて発行される、期待値アドレスＥＡＤＲに一致するアドレスを含んだ読み出し命令ＲＣＭＤを検出する。データマスク回路ＤＭＳＫＣは、検出回路ＤＥＴによって検出された読み出し命令ＲＣＭＤに応じて読み出されるデータＤＴが圧縮器ＴＲＣによる処理対象から除外されるように制御する。
【００８３】
特に限定はされないが、具体例として、検出回路ＤＥＴは、対象の読み出し命令ＲＣＭＤを検出した際に、当該読み出しサイクルの間でマスク信号ＭＳＫをアサートする。データマスク回路ＤＭＳＫＣは、例えば、イネーブル付きのラッチ回路等で構成され、マスク信号ＭＳＫのアサート期間では、ラッチをディスエーブルとし、前読み出しサイクルのデータＤＴをそのまま保持する。
【００８４】
このような構成を用いると、期待値データＥＸＰＤを圧縮対象から除外できるため、図２０で述べたような因果性のジレンマは生じず、期待値データＥＸＰＤを不揮発性メモリＮＶＭ６に格納することが可能になる。判定回路ＪＤＧは、図１１の場合と同様にして、期待値アドレスＥＡＤＲから読み出され、期待値レジスタＲＥＧｅに保持されるデータと、シグネチャ値ＳＧが一致しているか否かを判定する。
【００８５】
《実施の形態４の主要な効果》
以上、実施の形態４の方式でも、期待値を診断対象の不揮発性メモリに格納することが可能になる。その結果、実施の形態１および２の場合と同様に、不揮発性メモリの起動時診断を、外部装置や診断対象外となる不揮発性メモリを必要とせずに実現することができ、自己診断に伴うオーバーヘッドを抑制することが可能になる。また、期待値を格納するアドレスに制約を持たない。
【００８６】
ただし、実施の形態１および２の方式と異なり、期待値を格納したアドレスに対する直接的な診断は困難となる。ただし、例えば、期待値アドレスＥＡＤＲのデータが破損すると、期待値自体が異常となり、通常は、判定回路ＪＤＧの判定結果が不一致となることから、間接的な診断は実施できる。また、実施の形態４の方式は、実施の形態１および２の方式と比較すると、検出回路ＤＥＴやデータマスク回路ＤＭＳＫＣに伴いオーバーヘッドが増加し、また、マスク信号ＭＳＫに応じてデータＤＴをマスクする際のタイミング設計が複雑化する恐れがある。このような観点では、実施の形態１や２の方式を用いることが望ましい。
【００８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８８】
《付記》
本実施の形態による情報処理装置は、不揮発性メモリと、不揮発性メモリを診断するＢＩＳＴ回路とを有する半導体装置を対象として、不揮発性メモリにデータを書き込む装置である。ＢＩＳＴ回路は、読み出し回路と、圧縮器とを有する。読み出し回路は、アドレスを順に生成し、当該生成したアドレスを含んだ読み出し命令を不揮発性メモリへ順に発行する。圧縮器は、読み出し回路からの読み出し命令に応じて不揮発性メモリから順に読み出されるデータを所定の圧縮アルゴリズムに従って圧縮し、当該圧縮結果となるシグネチャ値を出力する。不揮発性メモリは、読み出し回路によるアドレスの生成順序を基準として、連続して読み出されるアドレスによって構成される第１のアドレス空間と、第１のアドレス空間の一つ後に読み出され、単数または複数のアドレスで構成される予約アドレスとを含む。情報処理装置は、第１のアドレス空間に格納したい第１のユーザデータを用いて固定値化データを算出する第１の処理と、第１のユーザデータを第１のアドレス空間に格納し、固定値化データを予約アドレスに格納する第２の処理を実行する。固定値化データは、所定の初期値を用いて、第１のユーザデータと固定値化データとを所定の圧縮アルゴリズムに従って圧縮した場合に、当該圧縮値を予め定めた固定値に収束させるデータである。
【符号の説明】
【００８９】
ＡＤＲ  アドレス
ＡＳ  アドレス空間
ＢＳＴＣ  ＢＩＳＴ回路
ＤＥＴ  検出回路
ＤＭＳＫＣ  データマスク回路
ＤＴ  データ
ＥＡＤＲ  期待値アドレス
ＥＸＰ  期待値
ＥＸＰＤ  期待値データ
ＩＭ  情報処理装置
ＪＤＧ  判定回路
ＮＶＭ  不揮発性メモリ
ＰＧＭ１  診断用データ計算プログラム
ＲＡＤＲ  予約アドレス
ＲＣＭＤ  読み出し命令
ＲＤＣＴＬ  読み出し回路
ＳＤ  固定値化データ
ＳＧ  シグネチャ値
ＴＲＣ  圧縮器
ＵＤ  ユーザデータ
ＵＬＧ  ユーザ回路
【図１】
2018055744.tif 000003
【図２】
2018055744.tif 000004
【図３】
2018055744.tif 000005
【図４】
2018055744.tif 000006
【図５】
2018055744.tif 000007
【図６】
2018055744.tif 000008
【図７】
2018055744.tif 000009
【図８】
2018055744.tif 000010
【図９】
2018055744.tif 000011
【図１０】
2018055744.tif 000012
【図１１】
2018055744.tif 000013
【図１２】
2018055744.tif 000014
【図１３】
2018055744.tif 000015
【図１４】
2018055744.tif 000016
【図１５】
2018055744.tif 000017
【図１６】
2018055744.tif 000018
【図１７】
2018055744.tif 000019
【図１８】
2018055744.tif 000020
【図１９】
2018055744.tif 000021
【図２０】
2018055744.tif 000022