(57)【要約】【課題】ＢＩＳＴ回路によって、ＥＣＣ回路によるエラー訂正可否を判定することが可能な半導体装置を提供する。【解決手段】アドレス生成回路ＡＤＲＧは、メモリＭＥＭにおけるテスト対象のアドレスＡＤＲを生成し、テストデータ生成回路ＴＤＧは、当該アドレスＡＤＲへのライトデータＷＤと、当該アドレスＡＤＲからのリードデータＲＤに対する期待値データＥＸＤとを生成する。判定回路ＪＤＧは、アドレスＡＤＲ毎に、リードデータＲＤと期待値データＥＸＤとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する。【選択図】図１
2018156712.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリを診断するＢＩＳＴ（Built In Self Test）回路とを有する半導体装置であって、
前記ＢＩＳＴ回路は、
前記メモリにおけるテスト対象のアドレスを生成するアドレス生成回路と、
前記アドレスへのライトデータと、前記アドレスからのリードデータに対する期待値データとを生成するテストデータ生成回路と、
前記アドレス毎に、前記リードデータと前記期待値データとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ（Error Correcting Code）回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する判定回路と、
を有する、
半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記判定回路は、前記アドレス毎に、前記ビット毎の比較結果が全て一致することでパスと判定する第１のケースか、前記エラー訂正可能と判定する第２のケースか、前記エラー訂正不可能と判定する第３のケースかを区別し、前記テスト対象のアドレス内で前記第３のケースが発生した場合には、最終テスト結果としてエラー訂正不可能を表す第１の信号を出力し、前記テスト対象のアドレス内で前記第３のケースが発生せず、かつ前記第２のケースが発生した場合には、前記最終テスト結果としてエラー訂正可能を表す第２の信号を出力する、
半導体装置。
【請求項３】
請求項２記載の半導体装置において、
前記判定回路は、前記テスト対象のアドレス内で前記第２のケースが発生した回数をカウントする第１のカウンタ回路を有する、
半導体装置。
【請求項４】
請求項２記載の半導体装置において、さらに、
ユーザに応じた機能を備えるユーザ回路と、
前記半導体装置の起動時制御を行うシステム制御回路と、
を有し、
前記システム制御回路は、前記半導体装置の電源投入後に前記ＢＩＳＴ回路にテストを行わせたのち、前記判定回路から前記第１の信号を受信した場合には、前記ユーザ回路を起動せず、前記第２の信号を受信した場合には前記ユーザ回路を起動する、
半導体装置。
【請求項５】
請求項１記載の半導体装置において、さらに、
前記メモリのライト動作時にＥＣＣコードを付加したライトデータを生成するＥＣＣコード生成回路と、
前記メモリのリード動作時に前記ＥＣＣコードに基づきエラー訂正を実行するＥＣＣ実行回路と、
前記ＥＣＣコード生成回路からの前記ライトデータか、前記ＢＩＳＴ回路からの前記ライトデータのいずれか一方を選択して前記メモリへ出力する選択回路と、
を有する、
半導体装置。
【請求項６】
請求項１記載の半導体装置において、
前記判定回路は、
前記アドレス毎に、ｎビットの前記リードデータとｎビットの前記期待値データとの一致・不一致をそれぞれ比較し、当該ビット毎の一致／不一致に応じて各ビットが第１の論理レベル／第２の論理レベルとなるｎビットの比較結果信号を出力するビット比較回路と、
前記ｎビットの比較結果信号をそれぞれラッチするｎビットのラッチ回路と、
テストが終了した段階で、前記ｎビットのラッチ回路の中から前記第２の論理レベルをラッチしているビット数をカウントする第２のカウンタ回路と、
前記第２のカウンタ回路のカウント値と、予め定めた閾値とを比較することで、前記不一致となるビット数がＥＣＣ回路によるエラー訂正可能なビット数の範囲内か否かを判定するカウント値比較回路と、
を有する、
半導体装置。
【請求項７】
請求項１記載の半導体装置において、
前記判定回路は、
２入力の論理レベルの一致／不一致に応じて第１の論理レベル／第２の論理レベルを出力する複数の第１の論理ゲートと、
２入力の論理レベルが共に前記第２の論理レベルの場合に所定の論理レベルを出力する複数の第２の論理ゲートと、
前記複数の第２の論理ゲートの中の少なくとも一つが前記所定の論理レベルを出力したか否かを判定する第３の論理ゲートと、
を備え、
前記複数の第１の論理ゲートは、前記アドレス毎のｎビットの前記リードデータとｎビットの前記期待値データとを１段目の入力として、最終段の出力が１個となるように順にトーナメントツリー状に結合され、
前記複数の第２の論理ゲートは、前記トーナメントツリー状の２段目から前記最終段に設けられる前記第１の論理ゲートにそれぞれ対応する形で、前記２段目から前記最終段に設けられる前記第１の論理ゲートと同じ入力となるように設けられる、
半導体装置。
【請求項８】
請求項７記載の半導体装置において、
前記判定回路は、さらに、前記テスト対象のアドレス内で前記複数の第１の論理ゲートの前記最終段の出力が前記第２の論理レベルとなった回数をカウントする第１のカウンタ回路を有する、
半導体装置。
【請求項９】
請求項１記載の半導体装置において、
前記判定回路は、
前記アドレス毎に、ｎビットの前記リードデータとｎビットの前記期待値データとの一致・不一致をそれぞれ比較し、当該ビット毎の一致／不一致に応じて各ビットが第１の論理レベル／第２の論理レベルとなるｎビットの比較結果信号を出力するビット比較回路と、
前記ｎビットの比較結果信号の中の少なくとも１ビットが前記第２の論理レベルであるか否かを判定する第４の論理ゲートと、
前記ｎビットの比較結果信号の中の１ビットのみが前記第２の論理レベルであるか否かを判定し、１ビットのみが前記第２の論理レベルである場合に所定の論理レベルを出力する１ビットエラーデコード回路と、
を有する、
半導体装置。
【請求項１０】
請求項９記載の半導体装置において、
前記判定回路は、さらに、前記テスト対象のアドレス内で前記１ビットエラーデコード回路が前記所定の論理レベルを出力した回数をカウントする第１のカウンタ回路を有する、
半導体装置。
【請求項１１】
論理アドレスに対する論理データの一部のビットを保持する第１のメモリと、
前記論理アドレスに対する前記論理データの他の一部のビットを保持する第２のメモリと、
前記第１のメモリを診断する第１のＢＩＳＴ（Built In Self Test）回路と、
前記第２のメモリを診断する第２のＢＩＳＴ回路と、
総合判定回路と、
を有する半導体装置であって、
前記第１のＢＩＳＴ回路および前記第２のＢＩＳＴ回路のそれぞれは、
対応するメモリにおけるテスト対象のアドレスを生成するアドレス生成回路と、
前記アドレスへのライトデータと、前記アドレスからのリードデータに対する期待値データとを生成するテストデータ生成回路と、
前記アドレス毎に、前記リードデータと前記期待値データとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ（Error Correcting Code）回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する判定回路と、
を有し、
前記総合判定回路は、前記第１のＢＩＳＴ回路内の前記判定回路と前記第２のＢＩＳＴ回路内の前記判定回路が、同一の前記論理アドレスにおいて共に前記エラー訂正可能と判定した場合に、最終テスト結果としてエラー訂正不可能と判定する、
半導体装置。
【請求項１２】
請求項１１記載の半導体装置において、さらに、
前記論理アドレスに対するライト動作時にＥＣＣコードを付加したライトデータを生成するＥＣＣコード生成回路と、
前記論理アドレスに対するリード動作時に前記ＥＣＣコードに基づきエラー訂正を実行するＥＣＣ実行回路と、
前記ＥＣＣコード生成回路からの前記ライトデータか、前記第１のＢＩＳＴ回路からの前記ライトデータのいずれか一方を選択して前記第１のメモリへ出力する第１の選択回路と、
前記ＥＣＣコード生成回路からの前記ライトデータか、前記第２のＢＩＳＴ回路からの前記ライトデータのいずれか一方を選択して前記第２のメモリへ出力する第２の選択回路と、
を有する、
半導体装置。
【請求項１３】
メモリを有する半導体装置の診断方法であって、
前記メモリにおけるテスト対象のアドレスを生成する第１のステップと、
前記アドレスへのライトデータと、前記アドレスからのリードデータに対する期待値データとを生成する第２のステップと、
前記アドレス毎に、前記リードデータと前記期待値データとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ（Error Correcting Code）回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する第３のステップと、
を有する、
半導体装置の診断方法。
【請求項１４】
請求項１３記載の半導体装置の診断方法において、
前記第３のステップは、
前記アドレス毎に、前記ビット毎の比較結果が全て一致することでパスと判定する第１のケースか、前記エラー訂正可能と判定する第２のケースか、前記エラー訂正不可能と判定する第３のケースかを区別する第３Ａのステップと、
前記テスト対象のアドレス内で前記第３のケースが発生した場合には、最終テスト結果としてエラー訂正不可能を表す第１の信号を出力し、前記テスト対象のアドレス内で前記第３のケースが発生せず、かつ前記第２のケースが発生した場合には、前記最終テスト結果としてエラー訂正可能を表す第２の信号を出力する第３Ｂのステップと、
を有する、
半導体装置の診断方法。
【請求項１５】
請求項１４記載の半導体装置の診断方法において、
前記第１のステップ、前記第２のステップおよび前記第３のステップは、前記半導体装置が有するＢＩＳＴ（Built In Self Test）回路によって実行される、
半導体装置の診断方法。
【請求項１６】
請求項１５記載の半導体装置の診断方法において、
前記半導体装置は、さらに、ユーザに応じた機能を備えるユーザ回路を有し、
前記診断方法は、
前記半導体装置の電源投入後に前記ＢＩＳＴ回路にテストを行わせる第４のステップと、
前記第４のステップののち、前記ＢＩＳＴ回路から前記第１の信号を受信した場合には、前記ユーザ回路を起動せず、前記第２の信号を受信した場合には前記ユーザ回路を起動する第５のステップと、
を有する、
半導体装置の診断方法。
【請求項１７】
請求項１４記載の半導体装置の診断方法において、
前記第３のステップは、さらに、前記テスト対象のアドレス内で前記第２のケースが発生した回数をカウントする第３Ｃのステップを有する、
半導体装置の診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置および半導体装置の診断方法に関し、例えば、メモリの自己診断機能を備える半導体装置及び半導体装置の診断方法に関する。
【背景技術】
【０００２】
例えば、特許文献１には、メモリアレイを診断するＢＩＳＴ（Built In Self Test）回路が示される。当該ＢＩＳＴ回路は、メモリアレイに入力されるアドレスおよびデータを定めるアドレスカウンタおよびデータパタン発生回路と、これらを制御するステートマシンと、メモリアレイからのリードデータを期待値と比較し、その比較結果を１ビットに圧縮するデータ圧縮回路と、その出力を蓄えるフェイルアドレスレジスタとを備える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第５１７３９０６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、自動車等の分野では、機能安全規格であるＩＳＯ２６２６２に対応するため、半導体装置の内蔵メモリに対してＥＣＣ（Error Correcting Code）回路、及び、ＢＩＳＴ回路を搭載することが必須となっている。ＥＣＣ回路は、各メモリセルに、特定の条件を満たすエラーが生じた場合、当該エラーを訂正することで、システムの動作を停止させることなく継続させるための回路である。一方、ＢＩＳＴ回路は、半導体装置の起動時にメモリセルにエラーが無いかを診断する回路である。ＢＩＳＴ回路は、エラーを検出した場合、システムに対して障害通知を発行し、動作の停止を促す。
【０００５】
ここで、半導体装置の内蔵メモリにＥＣＣ回路で訂正可能なエラーが含まれていた場合を想定する。この場合、ＥＣＣ回路によってエラーを訂正できるため、システムとしての障害は、本来、生じないはずである。しかし、例えば、特許文献１に示されるようなＢＩＳＴ回路を搭載する場合、システムの起動時等で、ＢＩＳＴ回路によって半導体装置（具体的には内蔵メモリ）のエラーが検出され、結果として、システムに対して障害通知が発行される。なぜなら、特許文献１に示されるようなＢＩＳＴ回路は、ＥＣＣ回路によるエラー訂正の可否を判別することは困難であり、エラーを検出した場合、その訂正可否に関わらずシステムに対して障害通知を行うためである。
【０００６】
後述する実施の形態は、このようなことに鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態による半導体装置は、メモリと、メモリを診断するＢＩＳＴ回路とを有する。ＢＩＳＴ回路は、アドレス生成回路と、テストデータ生成回路と、判定回路と有する。アドレス生成回路は、メモリにおけるテスト対象のアドレスを生成し、テストデータ生成回路は、当該アドレスへのライトデータと、当該アドレスからのリードデータに対する期待値データとを生成する。判定回路は、アドレス毎に、リードデータと期待値データとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する。
【発明の効果】
【０００８】
前記一実施の形態によれば、ＢＩＳＴ回路によって、ＥＣＣ回路によるエラー訂正可否を判定することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１による半導体装置の主要部の構成例を示す概略図である。
【図２】図１の半導体装置の実際の構成例を示す概略図である。
【図３】（ａ）は、図１における判定回路の構成例を示す回路図であり、（ｂ）は、（ａ）におけるラッチ回路の構成例を示す回路図である。
【図４】（ａ）、（ｂ）および（ｃ）は、図３（ａ）の判定回路を用いたテスト時の動作例を示す模式図である。
【図５】図１におけるシステム制御回路の主要部の処理内容の一例を示すフロー図である。
【図６】本発明の実施の形態２による半導体装置において、図１の判定回路の構成例を示す回路図である。
【図７】（ａ）は、図６の判定回路における主要な信号の機能を表す補足図であり、（ｂ）および（ｃ）は、図６の判定回路を用いたテスト時の動作例を示す模式図である。
【図８】図６の判定回路を拡張した構成例を示す回路図である。
【図９】本発明の実施の形態３による半導体装置において、図１の判定回路の構成例を示す回路図である。
【図１０】図９の判定回路を用いたテスト時の動作例を示す模式図である。
【図１１】本発明の実施の形態４による半導体装置の主要部の構成例を示す概略図である。
【図１２】図１１の半導体装置におけるテスト時の動作例を示す模式図である。
【図１３】本発明の比較例１となる半導体装置の主要部の構成例を示す概略図である。
【発明を実施するための形態】
【００１０】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１１】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１３】
（実施の形態１）
《半導体装置の概略構成》
図１は、本発明の実施の形態１による半導体装置の主要部の構成例を示す概略図である。図１に示す半導体装置ＤＥＶは、一つの半導体チップで構成され、特に限定はされないが、マイクロコントローラチップ等である。当該半導体装置ＤＥＶは、ユーザ回路ＵＬＧ１，ＵＬＧ２と、メモリＭＥＭと、ＢＩＳＴ回路ＢＳＴＣと、選択回路ＭＵＸとを備える。メモリＭＥＭは、必ずしも限定されないが、例えば、ＳＲＡＭ（Static Random Access Memory）等である。
【００１４】
ユーザ回路ＵＬＧ１，ＵＬＧ２は、例えばＣＰＵ（Central Processing Unit）等を含み、ユーザに応じた所望の機能を実現する回路である。図１の例では、記載の便宜上、メモリＭＥＭの入力側で処理を行うユーザ回路ＵＬＧ１と、メモリＭＥＭの出力側で処理を行うユーザＵＬＧ２とを分けている。ただし、ユーザ回路ＵＬＧ１，ＵＬＧ２は、物理的には同一の回路であってよい。明細書では、ユーザ回路ＵＬＧ１，ＵＬＧ２を総称してユーザ回路ＵＬＧと呼ぶ。ユーザ回路ＵＬＧ（この例ではＵＬＧ２）は、半導体装置ＤＥＶの起動時制御を行うシステム制御回路ＳＹＳＣＴを備える。
【００１５】
ＢＩＳＴ回路ＢＳＴＣは、アドレス生成回路ＡＤＲＧと、コマンド生成回路ＣＭＤＧと、テストデータ生成回路ＴＤＧと、判定回路ＪＤＧとを備える。アドレス生成回路ＡＤＲＧは、メモリＭＥＭにおけるテスト対象のアドレスＡＤＲを順に生成する。コマンド生成回路ＣＭＤＧは、ライトコマンド、リードコマンドといったコマンドＣＭＤを生成する。テストデータ生成回路ＴＤＧは、アドレスＡＤＲへのライトデータＷＤと、アドレスＡＤＲからのリードデータＲＤに対する期待値データＥＸＤとを生成する。具体的には、テストデータ生成回路ＴＤＧは、コマンド生成回路ＣＭＤＧがライトコマンドを発行する際にはライトデータＷＤを生成し、コマンド生成回路ＣＭＤＧがリードコマンドを発行する際には期待値データＥＸＤを生成する。
【００１６】
選択回路ＭＵＸは、ユーザ回路ＵＬＧからのアドレス、コマンドおよびライトデータか、ＢＩＳＴ回路ＢＳＴＣからのアドレスＡＤＲ、コマンドＣＭＤおよびライトデータＷＤのいずれか一方を選択してメモリＭＥＭへ出力する。ＢＩＳＴ回路ＢＳＴＣは、テストを実行する際に、選択信号ＳＳ１を制御することで、選択回路ＭＵＸにＢＩＳＴ回路ＢＳＴＣからの各信号を選択させる。
【００１７】
判定回路ＪＤＧは、良否判定回路ＰＦＪＧと、エラー訂正可否判定回路ＥＣＪＧとを備える。良否判定回路ＰＦＪＧは、アドレスＡＤＲ毎に、メモリＭＥＭからのリードデータＲＤと、テストデータ生成回路ＴＤＧからの期待値データＥＸＤとの一致・不一致をビット毎に比較する。良否判定回路ＰＦＪＧは、アドレス生成回路ＡＤＲＧによって生成されるテスト対象のアドレスＡＤＲ内で、不一致となるビット（すなわちエラー）が生じなかった場合には、エラー無し（パス）を表す‘０’レベルの良否判定信号ＰＦＳを出力する。一方、良否判定回路ＰＦＪＧは、テスト対象のアドレスＡＤＲ内で、不一致となるビットが生じた場合には、エラー有り（フェイル）を表す‘１’レベルの良否判定信号ＰＦＳを出力する。
【００１８】
エラー訂正可否判定回路ＥＣＪＧは、アドレスＡＤＲ毎に、リードデータＲＤと期待値データＥＸＤとの一致・不一致をビット毎に比較し、不一致となるビット数がＥＣＣ回路によるエラー訂正可能なビット数の範囲内の場合にエラー訂正可能と判定し、範囲外の場合にエラー訂正不可能と判定する。エラー訂正可否判定回路ＥＣＪＧは、テスト対象のアドレスＡＤＲ内で、エラー訂正不可能と判定したケースが発生した場合には、エラー訂正不可能を表す‘０’レベルの訂正可否判定信号ＥＣＳを出力する。一方、エラー訂正可否判定回路ＥＣＪＧは、テスト対象のアドレスＡＤＲ内で、エラー訂正不可能と判定したケースが発生せず、かつエラー訂正可能と判定したケースが発生した場合には、エラー訂正可能を表す‘１’レベルの訂正可否判定信号ＥＣＳを出力する。
【００１９】
このように、判定回路ＪＤＧは、アドレス毎のテスト結果を３通りのケースに区別する。１つ目のケースは、ビット毎の比較結果が全て一致することでパスと判定するケース（明細書ではパスケースと呼ぶ）であり、２つ目のケースは、エラー訂正可能と判定するケース（明細書では訂正可能ケースと呼ぶ）であり、３つ目のケースは、エラー訂正不可能と判定するケース（明細書では訂正不可能ケースと呼ぶ）である。そして、判定回路ＪＤＧは、テスト対象のアドレスＡＤＲ内における当該３通りのケースの発生状況に応じて、最終テスト結果として、当該３通りのケースにそれぞれ対応する３通りの信号のいずれかをシステム制御回路ＳＹＳＣＴへ出力する。
【００２０】
具体的には、判定回路ＪＤＧは、テスト対象のアドレスＡＤＲ内で訂正不可能ケースが発生した場合には、最終テスト結果として、訂正不可能ケースに対応する信号を出力する。当該信号は、‘１’レベル（フェイル）の良否判定信号ＰＦＳと、‘０’レベル（エラー訂正不可能）の訂正可否判定信号ＥＣＳとの組み合わせである。システム制御回路ＳＹＳＣＴは、当該信号を受信した場合、訂正不可能なエラーが生じているため、メモリ障害有りかつシステム障害有りと認識する。
【００２１】
また、判定回路ＪＤＧは、テスト対象のアドレスＡＤＲ内で訂正不可能ケースが発生せず、かつ訂正可能ケースが発生した場合には、最終テスト結果として、訂正可能ケースに対応する信号を出力する。当該信号は、‘１’レベル（フェイル）の良否判定信号ＰＦＳと、‘１’レベル（エラー訂正可能）の訂正可否判定信号ＥＣＳとの組み合わせである。システム制御回路ＳＹＳＣＴは、当該信号を受信した場合、訂正可能なエラーが生じているため、メモリ障害有りかつシステム障害無しと認識する。
【００２２】
一方、判定回路ＪＤＧは、テスト対象のアドレスＡＤＲ内でパスケースのみが発生した場合には、最終テスト結果として、パスケースに対応する信号を出力する。当該信号は、‘０’レベル（パス）の良否判定信号ＰＦＳであり、訂正可否判定信号ＥＣＳはドントケアレベルでよい。システム制御回路ＳＹＳＣＴは、当該信号を受信した場合、メモリ障害無しかつシステム障害無しと認識する。
【００２３】
図２は、図１の半導体装置の実際の構成例を示す概略図である。図２に示す半導体装置ＤＥＶは、図１の構成例と比較して、ＥＣＣコード生成回路ＥＣＧと、ＥＣＣ実行回路ＥＣＥとが追加された構成となっている。ＥＣＣコード生成回路ＥＣＧは、ユーザ回路ＵＬＧと選択回路ＭＵＸの間に設けられ、ユーザ回路ＵＬＧによるメモリＭＥＭのライト動作時にＥＣＣコードを付加したライトデータを生成する。ＥＣＣ実行回路ＥＣＥは、メモリＭＥＭとユーザ回路ＵＬＧの間に設けられ、ユーザ回路ＵＬＧによるメモリＭＥＭのリード動作時にＥＣＣコードに基づきエラー訂正を実行する。
【００２４】
ユーザ回路ＵＬＧがメモリＭＥＭにライト動作を行う場合、メモリＭＥＭには、ライトデータに加えて、ＥＣＣコード生成回路ＥＣＧで生成されたＥＣＣコードが格納される。また、ユーザ回路ＵＬＧがメモリＭＥＭにリード動作を行う場合、メモリＭＥＭからは、リードデータＲＤに加えて、ＥＣＣコードが読み出される。ＢＩＳＴ回路ＢＳＴＣは、このようなＥＣＣ回路の内側で、ＥＣＣ回路を介さずに、また、ライトデータＷＤが格納される領域とＥＣＣコードが格納される領域とを特に区別することなく、メモリＭＥＭをテストする。
【００２５】
《判定回路の詳細》
図３（ａ）は、図１における判定回路の構成例を示す回路図であり、図３（ｂ）は、図３（ａ）におけるラッチ回路の構成例を示す回路図である。図４（ａ）、図４（ｂ）および図４（ｃ）は、図３（ａ）の判定回路を用いたテスト時の動作例を示す模式図である。図３（ａ）において、メモリＭＥＭからのリードデータＲＤおよびテストデータ生成回路ＴＤＧからの期待値データＥＸＤは、共に、ｎビット（この例では、説明の簡素化のため４ビット）となっている。
【００２６】
図３（ａ）に示す判定回路ＪＤＧ１は、ビット比較回路ＣＭＰＢと、ｎビット（４ビット）のラッチ回路ＬＴ［０］〜ＬＴ［３］と、カウンタ回路ＣＵＮＴ１と、カウント値比較回路ＣＭＰ１とを備える。ビット比較回路ＣＭＰＢは、アドレス生成回路ＡＤＲＧによるアドレス（リードアドレス）ＡＤＲ毎に、４ビットのリードデータＲＤ［０］〜ＲＤ［３］と４ビットの期待値データＥＸＤ［０］〜ＥＸＤ［３］との一致・不一致をそれぞれ比較する。ビット比較回路ＣＭＰＢは、当該ビット毎の一致／不一致に応じて各ビットが‘０’レベル／‘１’レベルとなる４ビットの比較結果信号Ｒ［０］〜Ｒ［３］を出力する。
【００２７】
この例では、ビット比較回路ＣＭＰＢは、リードデータＲＤ［０］〜ＲＤ［３］と期待値データＥＸＤ［０］〜ＥＸＤ［３］とをビット毎に比較する４個の排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］で構成される。ただし、論理ゲートの種類は、例えば負論理を用いる等、適宜変更することが可能である。この論理ゲートの種類の変更は、後述する各種構成例においても同様に行うことができる。
【００２８】
ラッチ回路ＬＴ［０］〜ＬＴ［３］は、比較結果信号Ｒ［０］〜Ｒ［３］をそれぞれラッチする。明細書では、ラッチ回路ＬＴ［０］〜ＬＴ［３］を総称してラッチ回路ＬＴと呼び、比較結果信号Ｒ［０］〜Ｒ［３］を総称して比較結果信号Ｒと呼ぶ。ラッチ回路ＬＴは、図３（ｂ）に示されるように、オアゲートＯＲと、選択回路ＳＥＬと、フリップフロップ回路ＦＦとを備える。オアゲートＯＲは、比較結果信号Ｒとフリップフロップ回路ＦＦの保持信号とのオア演算を行う。選択回路ＳＥＬは、オアゲートＯＲからの出力信号かスキャンイン信号ＳＩのいずれか一方を選択信号ＳＳ２に基づき選択し、フリップフロップ回路ＦＦへ出力する。
【００２９】
このように、ラッチ回路ＬＴ［０］〜ＬＴ［３］は、スキャン機能付きのラッチ回路となっており、順に、スキャン接続される。ラッチ回路ＬＴ内のフリップフロップ回路ＦＦの保持信号は、スキャンアウト信号ＳＯとなり、スキャン接続先となる他のラッチ回路ＬＴのスキャンイン信号ＳＩとなる。例えば、ラッチ回路ＬＴ［０］のスキャンアウト信号ＳＯは、ラッチ回路ＬＴ［１］のスキャンイン信号ＳＩとなる。
【００３０】
カウンタ回路ＣＵＮＴ１は、テストが終了した段階で、スキャン機能を用いて、４ビットのラッチ回路ＬＴ［０］〜ＬＴ［３］の中から‘１’レベル（不一致レベル）をラッチしているビット数をカウントする。カウント値比較回路ＣＭＰ１は、カウンタ回路ＣＵＮＴ１のカウント値と、予め定めた閾値Ｃｔｈ１とを比較することで、不一致となるビット数がＥＣＣ回路によるエラー訂正可能なビット数の範囲内か否かを判定する。加えて、カウント値比較回路ＣＭＰ１は、パスかフェイルの判定も行う。カウント値比較回路ＣＭＰ１は、これらの判定結果に基づいて、良否判定信号ＰＦＳおよび訂正可否判定信号ＥＣＳを出力する。
【００３１】
このように、図３（ａ）の判定回路ＪＤＧ１は、比較結果信号Ｒ［０］〜Ｒ［３］に‘１’レベル（不一致レベル）が生じた場合、当該‘１’レベルを、対応するラッチ回路ＬＴでラッチする。ラッチ回路ＬＴでは、比較結果信号ＲがオアゲートＯＲを介してフリップフロップ回路ＦＦに入力されるため、フリップフロップ回路ＦＦは、一度‘１’レベルを保持すると、リセットや再設定が生じるまでは、‘１’レベルを保持し続ける。
【００３２】
テスト対象のアドレスＡＤＲに対するテストが終了すると、ＢＩＳＴ回路ＢＳＴＣは、選択信号ＳＳ２をスキャン経路側に切り換え、スキャン経路を用いて各ラッチ回路ＬＴ［０］〜ＬＴ［３］内のフリップフロップ回路ＦＦの値を順にシフトさせながらカウンタ回路ＣＵＮＴ１へ出力する。カウンタ回路ＣＵＮＴ１は、入力される値が‘１’レベルであればカウントアップを行う。これにより、カウント値比較回路ＣＭＰ１は、すべてのラッチ回路ＬＴ［０］〜ＬＴ［３］内のフリップフロップ回路ＦＦの値がカウンタ回路ＣＵＮＴ１に入力された後、そのカウント値によって最終テスト結果を定めることができる。
【００３３】
例えば、閾値（すなわち訂正可能なビット数）Ｃｔｈ１を“１”とした場合、最終テスト結果は、カウンタ回路ＣＵＮＴ１のカウント値が“０”の場合にはパスケースとなり、“１”の場合にはフェイルかつ訂正可能ケースとなり、“２”以上の場合にはフェイルかつ訂正不可能ケースとなる。これに応じて、カウント値比較回路ＣＭＰ１は、カウント値が“０”の場合には‘０’レベルの良否判定信号ＰＦＳを出力し、“１”の場合には‘１’レベルの良否判定信号ＰＦＳと‘１’レベルの訂正可否判定信号ＥＣＳとを出力し、“２”以上の場合には‘１’レベルの良否判定信号ＰＦＳと‘０’レベルの訂正可否判定信号ＥＣＳとを出力する。
【００３４】
テストの具体例として、図４（ａ）では、アドレスＡＤＲ＃Ａ１に対するリードサイクルで比較結果信号Ｒ［２］が‘１’レベル（不一致レベル）となっている。この場合、テスト対象のアドレスＡＤＲに対するテスト（アドレススキャン）が終了した段階で、ラッチ回路ＬＴ［２］内のフリップフロップ回路ＦＦに‘１’レベルが保持される。その結果、カウンタ回路ＣＵＮＴ１のカウント値は“１”となり、最終テスト結果は、フェイルかつ訂正可能ケースとなる。図４（ｂ）では、アドレスＡＤＲ＃Ａ１および＃Ａ５に対するリードサイクルで共に比較結果信号Ｒ［２］が‘１’レベル（不一致レベル）となっている。この場合も、最終テスト結果は、フェイルかつ訂正可能ケースとなる。
【００３５】
一方、図４（ｃ）では、アドレスＡＤＲ＃Ａ１に対するリードサイクルで比較結果信号Ｒ［２］，Ｒ［３］が共に‘１’レベル（不一致レベル）となっている。この場合、テスト対象のアドレスＡＤＲに対するテストが終了した段階で、ラッチ回路ＬＴ［２］，ＬＴ［３］内のフリップフロップ回路ＦＦに‘１’レベルが保持される。その結果、カウンタ回路ＣＵＮＴ１のカウント値は“２”となり、最終テスト結果は、フェイルかつ訂正不可能ケースとなる。
【００３６】
《システム制御回路の動作》
図５は、図１におけるシステム制御回路の主要部の処理内容の一例を示すフロー図である。システム制御回路ＳＹＳＣＴは、半導体装置ＤＥＶの電源投入を検知したのち（ステップＳ１０１）、ＢＩＳＴ回路ＢＳＴＣにメモリのテスト（起動時診断）を実行させる（ステップＳ１０２）。メモリのテストが終了すると、システム制御回路ＳＹＳＣＴは、ＢＩＳＴ回路ＢＳＴＣから最終テスト結果を受信する（ステップＳ１０３）。
【００３７】
ここで、ステップＳ１０４において、最終テスト結果がパスの場合（すなわち、‘０’レベルの良否判定信号ＰＦＳを受信した場合）、システム制御回路ＳＹＳＣＴは、ユーザ回路ＵＬＧを含むシステムを起動する（ステップＳ１０５）。一方、ステップＳ１０４において、最終テスト結果がフェイルの場合（すなわち、‘１’レベルの良否判定信号ＰＦＳを受信した場合）、システム制御回路ＳＹＳＣＴは、エラー訂正可否を判定する（ステップＳ１０６）。
【００３８】
ステップＳ１０６において、エラー訂正可能な場合（すなわち、‘１’レベルの訂正可否判定信号ＥＣＳを受信した場合）、システム制御回路ＳＹＳＣＴは、ユーザ回路ＵＬＧを含むシステムを起動する（ステップＳ１０７）。ただし、当該エラーによってＥＣＣ回路のエラー訂正能力が費やされ、新たなエラー（例えばソフトエラー）に対して弱体化する可能性があるため、システム制御回路ＳＹＳＣＴは、例えば、装置外部へ警告レベル１を発行することが望ましい。警告レベル１が発行された場合、必要に応じて、例えば、半導体装置ＤＥＶの再起動等を行ってもよく、それでも改善しない場合は、システムメンテナンス等を行ってもよい。
【００３９】
ステップＳ１０６において、エラー訂正不可能な場合（すなわち、‘０’レベルの訂正可否判定信号ＥＣＳを受信した場合）、システム制御回路ＳＹＳＣＴは、ユーザ回路ＵＬＧを含むシステムを起動しない（ステップＳ１０８）。この場合、システム制御回路ＳＹＳＣＴは、例えば、装置外部へ警告レベル２を発行することで、システムエラー処理を促す。システムエラー処理としては、例えば、半導体装置ＤＥＶの再起動や、システムメンテナンス等が挙げられる。
【００４０】
《半導体装置（比較例）の概略構成》
図１３は、本発明の比較例１となる半導体装置の主要部の構成例を示す概略図である。図１３に示す比較例１の半導体装置ＤＥＶ’は、図１および図２に示した半導体装置ＤＥＶと比較して、ＢＩＳＴ回路ＢＳＴＣ’内にエラー訂正可否判定回路ＥＣＪＧが設けられない構成となっている。システム制御回路ＳＹＳＣＴ’は、良否判定信号ＰＦＳのみに基づいて、メモリＭＥＭのエラーの有無を判定し、ひいてはシステム障害の有無を判定する。
【００４１】
特に、メモリＭＥＭがＳＲＡＭの場合、α線による１ビットエラー（ソフトエラーと呼ばれる）がランダムに生じることが知られている。このため、ＳＲＡＭでは、その対策として、通常、図１３および図２に示されるようなＥＣＣ回路（ＥＣＧ，ＥＣＥ）が搭載される。ソフトエラーは、ＢＩＳＴ実行時にも生じ得る。ソフトエラーのような１ビットエラーは、本来、ＥＣＣ実行回路ＥＣＥによって訂正可能であるため、システム（半導体装置ＤＥＶ）の外部から見ると、システム障害に該当しない。しかし、図１３のシステム制御回路ＳＹＳＣＴ’は、ＢＩＳＴ回路ＢＳＴＣ’から‘１’レベル（フェイル）の良否判定信号ＰＦＳを受信すると、エラー訂正可否に関わらず、システム障害有りと判定する必要がある。
【００４２】
そこで、比較例２として、ＢＩＳＴ回路ＢＳＴＣ’にてエラーが検出された場合、ユーザ回路ＵＬＧのソフトウエア処理による診断でＥＣＣ回路によるエラー訂正可否を判定する方式が考えられる。具体的には、システム制御回路ＳＹＳＣＴ’は、例えば、図５のステップＳ１０４においてフェイルを受信した場合、ユーザ回路ＵＬＧを起動したのち、ユーザ回路ＵＬＧに再度テストを行わせる。ユーザ回路ＵＬＧは、ＥＣＣ回路（ＥＣＧ，ＥＣＥ）の外側からメモリＭＥＭを正常に読み書きできたか否かによってＥＣＣ回路（ＥＣＧ，ＥＣＥ）を含めてメモリＭＥＭを診断する。しかし、このようなソフトウエア処理による診断は、実行時間が長くなるため、半導体装置ＤＥＶ’の起動時間の増大を招く恐れがある。
【００４３】
また、比較例３として、ＥＣＣ回路（ＥＣＧ，ＥＣＥ）の外側から入出力を行うようにＢＩＳＴ回路を設ける方式が考えられる。ただし、ＢＩＳＴ回路は、例えば、製造時の量産テストで利用される場合がある。この場合、量産テストの性質上、ＢＩＳＴ回路は、図１等のように、ＥＣＣ回路の内側に設けられることが望ましい。また、ユーザ回路ＵＬＧおよびＥＣＣ回路からメモリＭＥＭを見た場合の論理アドレスおよび論理データと、メモリＭＥＭを単体で見た場合の物理アドレスおよび物理データとが一致しない場合がある。論理アドレスおよび論理データを用いてテストを行うと、メモリの物理構造等を反映した最適なテストが行えない場合がある。
【００４４】
《実施の形態１の主要な効果》
そこで、実施の形態１の半導体装置を用いると、代表的には、ＢＩＳＴ回路によって、ＥＣＣ回路によるエラー訂正可否を判定することが可能になる。これにより、比較例１の方式と異なり、ＥＣＣ回路で訂正可能なエラーが生じた場合には、システム障害を生じさせずに済む。また、比較例２の方式と比較して、ソフトウエア処理による診断が不要となるため、半導体装置ＤＥＶの起動時間の短縮が図れる。さらに、比較例３の方式と異なり、ＢＩＳＴ回路を量産テストでも利用することができ、また、物理アドレスおよび物理データを用いてテストを行えるため、メモリの物理構造等を反映した最適なテストを行うことができる。
【００４５】
（実施の形態２）
《判定回路（変形例［１］）の詳細》
図６は、本発明の実施の形態２による半導体装置において、図１の判定回路の構成例を示す回路図である。図７（ａ）は、図６の判定回路における主要な信号の機能を表す補足図であり、図７（ｂ）および図７（ｃ）は、図６の判定回路を用いたテスト時の動作例を示す模式図である。図６において、リードデータＲＤおよび期待値データＥＸＤは、共に、ｎビット（ｎは２以上の整数）であり、ここでは、説明の簡素化のためｎ＝４となっている。
【００４６】
図６に示す判定回路ＪＤＧ２は、複数の排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］，ＸＯＲ０１，ＸＯＲ２３，ＸＯＲ０３と、複数のアンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３と、オアゲートＯＲ１０とを備える。また、加えて、判定回路ＪＤＧ２は、ラッチ回路ＬＴａ，ＬＴｂと、アンドゲートＡＤ１０と、オアゲートＯＲ１１とを備える。排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］，ＸＯＲ０１，ＸＯＲ２３，ＸＯＲ０３のそれぞれは、２入力の論理レベルの一致／不一致に応じて‘０’レベル／‘１’レベルを出力する。複数のアンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３のそれぞれは、２入力の論理レベルが共に‘１’レベルの場合に‘１’レベルを出力する。オアゲートＯＲ１０は、複数のアンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３の中の少なくとも一つが‘１’レベルを出力したか否かを判定する。
【００４７】
ここで、複数の排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］，ＸＯＲ０１，ＸＯＲ２３，ＸＯＲ０３は、アドレスＡＤＲ毎のｎビットのリードデータＲＤとｎビットの期待値データＥＸＤとを１段目の入力として、最終段の出力が１個となるように順にトーナメントツリー状に結合される。この例では、排他的論理和ゲートは、トーナメントツリー状の１段目に４個（ＸＯＲ［０］〜ＸＯＲ［３］）設けられ、２段目に２個（ＸＯＲ０１，ＸＯＲ２３）設けられ、３段目に１個（ＸＯＲ０３）設けられる。
【００４８】
複数のアンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３は、トーナメントツリー状の２段目から最終段に設けられる排他的論理和ゲートにそれぞれ対応する形で、２段目から最終段に設けられる排他的論理和ゲートと同じ入力となるように設けられる。この例では、２段目に設けられる２個の排他的論理和ゲートＸＯＲ０１，ＸＯＲ２３と同じ入力となるように、２個のアンドゲートＡＤ０１，ＡＤ２３が設けられ、３段目に設けられる１個の排他的論理和ゲートＸＯＲ０３と同じ入力となるように、１個のアンドゲートＡＤ０３が設けられる。
【００４９】
１段目の排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］は、図３（ａ）の場合と同様に、ビット比較回路ＣＭＰＢを構成し、アドレスＡＤＲ毎に、リードデータＲＤと期待値データＥＸＤとが入力される。また、排他的論理和ゲートＸＯＲ０１およびアンドゲートＡＤ０１は、要素回路ＣＥ０１を構成し、排他的論理和ゲートＸＯＲ２３およびアンドゲートＡＤ２３は、要素回路ＣＥ２３を構成し、排他的論理和ゲートＸＯＲ０３およびアンドゲートＡＤ０３は、要素回路ＣＥ０３を構成する。
【００５０】
トーナメントツリー状に結合された排他的論理和ゲートにおける最終段（ＸＯＲ０３）からの信号Ｓａは、ラッチ回路ＬＴａの入力信号となる。また、オアゲートＯＲ１０からの信号Ｓｂは、ラッチ回路ＬＴｂの入力信号となる。ラッチ回路ＬＴａ，ＬＴｂのそれぞれは、例えば、図３（ｂ）に示したような構成を備える。ただし、ラッチ回路ＬＴａ，ＬＴｂのそれぞれは、必ずしもスキャン機能を備える必要はなく、選択回路ＳＥＬを削除したような構成であってもよい。
【００５１】
アンドゲートＡＤ１０は、ラッチ回路ＬＴａおよびラッチ回路ＬＴｂの出力信号がそれぞれ‘１’レベルおよび‘０’レベルの場合に、‘１’レベル（訂正可能）の訂正可否判定信号ＥＣＳを出力する。オアゲートＯＲ１１は、ラッチ回路ＬＴａおよびラッチ回路ＬＴｂの出力信号が共に‘０’レベルの場合に、‘０’レベル（パス）の良否判定信号ＰＦＳを出力する。
【００５２】
このような構成において、最終段の排他的論理和ゲートＸＯＲ０３からの信号Ｓａは、１段目の排他的論理和ゲートＸＯＲ［０］〜ＸＯＲ［３］からの比較結果信号Ｒ［０］〜Ｒ［３］における‘１’レベル（すなわち不一致ビット）の数が偶数個（０も含む）であれば‘０’レベルに、奇数個であれば‘１’レベルとなる。いずれかのアドレスＡＤＲで、一度でも奇数個のエラー（すなわち不一致ビット）が発生すると、ラッチ回路ＬＴａによって‘１’レベルが保持される。ただし、このような排他的論理和ゲートのツリーでは、エラーの数が１ビットであるか、３ビット以上の奇数個であるかを区別できず、また、２ビット以上の偶数個のエラーを検出することができない。
【００５３】
一方、オアゲートＯＲ１０からの信号Ｓｂは、各アンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３の中の少なくとも１つが‘１’レベルを出力した場合に‘１’レベルとなる。いずれかのアドレスＡＤＲで、オアゲートＯＲ１０からの‘１’レベルが一度でも出力されると、ラッチ回路ＬＴｂによって‘１’レベルが保持される。ここで、各アンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３が‘１’レベルを出力するのは、いずれかのアドレスＡＤＲで２ビット以上のエラーが生じた場合である。
【００５４】
例えば、比較結果信号（Ｒ［０］，Ｒ［１］）＝（１，１）の場合、アンドゲートＡＤ０１が‘１’レベルを出力し、比較結果信号（Ｒ［２］，Ｒ［３］）＝（１，１）の場合、アンドゲートＡＤ２３が‘１’レベルを出力する。また、比較結果信号Ｒ［０］，Ｒ［１］の中のいずれか１ビットが‘１’レベルであり、かつ、比較結果信号Ｒ［２］，Ｒ［３］の中のいずれか１ビットが‘１’レベルの場合、アンドゲートＡＤ０３が‘１’レベルを出力する。３ビットや４ビットのエラーが生じた場合にも、各アンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３の中の少なくとも１個が‘１’レベルを出力する。
【００５５】
このようなラッチ回路ＬＴａ，ＬＴｂの出力を組み合わせることで、最終テスト結果を生成することが可能である。具体的には、ラッチ回路ＬＴａの出力が‘１’レベルかつラッチ回路ＬＴｂの出力が‘０’レベルの場合（すなわち奇数個のエラーが生じた場合で、当該エラーは２ビット以上でない場合）は、１ビットのエラーが発生したことになり、訂正可能ケースと判定することができる。また、ラッチ回路ＬＴａの出力を問わず、ラッチ回路ＬＴｂの出力が‘１’レベルの場合（すなわち２ビット以上のエラーが生じた場合）は、訂正不可能ケースと判定することができる。さらに、ラッチ回路ＬＴａ，ＬＴｂの出力が共に‘０’レベルの場合（すなわちパスか、または偶数個のエラーが生じた場合で、当該エラーは２ビット以上でない場合）は、エラーが発生していないことを意味するため、パスケースと判定することができる。
【００５６】
図７（ａ）には、信号Ｓａ，Ｓｂの機能が示される。信号（Ｓａ，Ｓｂ）＝（０，０）の場合はパスケースとなり、信号（Ｓａ，Ｓｂ）＝（１，０）の場合はフェイルかつ訂正可能ケースとなり、信号（Ｓａ，Ｓｂ）＝（ｘ，１）（ｘはドントケア）の場合はフェイルかつ訂正不可能ケースとなる。テストの具体例として、図７（ｂ）では、アドレスＡＤＲ＃Ａ１に対するリードサイクルで比較結果信号Ｒ［２］が‘１’レベル（不一致レベル）となっており、アドレスＡＤＲ＃Ａ４に対するリードサイクルで比較結果信号Ｒ［３］が‘１’レベルとなっている。この場合、アドレスＡＤＲ＃Ａ１および＃Ａ４では、信号（Ｓａ，Ｓｂ）＝（１，０）となり、ラッチ回路ＬＴａの出力は‘１’レベルとなり、ラッチ回路ＬＴｂの出力は‘０’レベルとなる。その結果、良否判定信号ＰＦＳおよび訂正可否判定信号ＥＣＳは、共に‘１’レベルとなり、これは、フェイルかつ訂正可能ケースを意味する。
【００５７】
図７（ｃ）では、アドレスＡＤＲ＃Ａ１に対するリードサイクルで比較結果信号Ｒ［１］，Ｒ［２］が‘１’レベルとなっており、アドレスＡＤＲ＃Ａ４に対するリードサイクルで比較結果信号Ｒ［２］，Ｒ［３］が‘１’レベルとなっている。アドレスＡＤＲ＃Ａ１では、信号Ｓｂは、アンドゲートＡＤ０３が‘１’レベルを出力するため‘１’レベルとなり、信号Ｓａは、エラー数が偶数個であるため‘０’レベルとなる。アドレスＡＤＲ＃Ａ４では、信号Ｓｂは、アンドゲートＡＤ２３が‘１’レベルを出力するため‘１’レベルとなり、信号Ｓａは、エラー数が偶数個であるため‘０’レベルとなる。
【００５８】
さらに、図７（ｃ）では、アドレスＡＤＲ＃Ａ６に対するリードサイクルで比較結果信号Ｒ［１］，Ｒ［２］，Ｒ［３］が‘１’レベルとなっている。アドレスＡＤＲ＃Ａ６では、信号Ｓｂは、アンドゲートＡＤ０１が‘１’レベルを出力するため‘１’レベルとなり、信号Ｓａは、エラー数が奇数個であるため‘１’レベルとなる。このようにエラー数が３ビット以上の場合には、それに包含される２ビットエラーをアンドゲートＡＤ０１，ＡＤ２３，ＡＤ０３のいずれかが検出することになるため、信号Ｓｂは‘１’レベルとなる。このようなテストにより、ラッチ回路ＬＴａ，ＬＴｂは、共に‘１’レベルとなる。その結果、良否判定信号ＰＦＳは‘１’レベルとなり、訂正可否判定信号ＥＣＳは‘０’レベルとなり、これは、フェイルかつ訂正不可能ケースを意味する。
【００５９】
図８は、図６の判定回路を拡張した構成例を示す回路図である。図８に示す判定回路ＪＤＧ２ａは、図６の判定回路ＪＤＧ２と異なり、リードデータＲＤおよび期待値データＥＸＤが８ビット（ｎ＝８）となっている。この場合も、図６の場合と同様に、排他的論理和ゲートをトーナメントツリー状に結合し、２段目から最終段に結合される各排他的論理和ゲートと同じ入力となるように、アンドゲートを設け、当該アンドゲートの出力をオアゲートＯＲ２０に入力すればよい。その結果、図８では、図６と比べて、排他的論理和ゲートおよびアンドゲートで構成される４個の要素回路ＣＥ４５，ＣＥ６７，ＣＥ４７，ＣＥ０７が追加されることになる。
【００６０】
なお、ここでは、ｎが２Ｎの場合を例としたが、ｎは、２Ｎに限らず、２以上の整数であればよい。この場合、一般的なトーナメントツリーにおけるシードの場合と同様に、２段目から最終段のいずれかに、このシード用の排他的論理和ゲートを適宜挿入し、併せてアンドゲートを設ければよい。例えば、図８において、ｎ＝９の場合、要素回路ＣＥ６７と要素回路ＣＥ４７の間に要素回路を挿入し、当該要素回路の２入力を、要素回路ＣＥ６７の排他的論理和ゲートの出力信号と、追加された比較結果信号（すなわちＲ［８］（図示せず））にすればよい。また、これに限らず、要素回路ＣＥ４７と要素回路ＣＥ０７の間に要素回路を挿入することも、要素回路ＣＥ０７の後段に要素回路を挿入することも可能である。
【００６１】
《実施の形態２の主要な効果》
以上、実施の形態２の半導体装置を用いることで、実施の形態１の場合と同様の効果が得られる。さらに、実施の形態１の方式では正しく判定できないエラーを、正しく判定することが可能になる。すなわち、図３（ａ）の判定回路ＪＤＧ１を用いた場合、例えば、図７（ｂ）に示したように、１ビットエラーが、異なるビットで複数生じるような状況で、カウンタ回路ＣＵＮＴ１のカウント値が“２”となるため、訂正不可能ケースと判定されてしまう。この場合、フェイルセーフの観点では問題は無いが、訂正可能と判定できる範囲が狭まってしまう。図６の判定回路ＪＤＧ２を用いると、図３（ａ）の構成例と比較して、回路構成は複雑化するものの、訂正可能ケースを正しく判定することができる。
【００６２】
（実施の形態３）
《判定回路（変形例［２］）の詳細》
図９は、本発明の実施の形態３による半導体装置において、図１の判定回路の構成例を示す回路図である。図１０は、図９の判定回路を用いたテスト時の動作例を示す模式図である。図９において、リードデータＲＤおよび期待値データＥＸＤは、共に、ｎビット（ここでは、説明の簡素化のため４ビット）である。
【００６３】
図９に示す判定回路ＪＤＧ３は、ビット比較回路ＣＭＰＢと、オアゲートＯＲ３０と、１ビットエラーデコード回路ＤＥＣ１と、アンドゲートＡＤ３０と、ラッチ回路ＬＴａ，ＬＴｂと、アンドゲートＡＤ１０およびオアゲートＯＲ１１とを備える。ビット比較回路ＣＭＰＢは、図３（ａ）の場合と同様であり、ビット毎の一致／不一致に応じて各ビットが‘０’レベル／‘１’レベルとなる４ビットの比較結果信号Ｒ［０］〜Ｒ［３］を出力する。ラッチ回路ＬＴａ，ＬＴｂ、アンドゲートＡＤ１０およびオアゲートＯＲ１１は、図６の場合と同様である。
【００６４】
オアゲートＯＲ３０は、４ビットの比較結果信号Ｒ［０］〜Ｒ［３］の中の少なくとも１ビットが‘１’レベルであるか否かを判定する。１ビットエラーデコード回路ＤＥＣ１は、ここでは、アンド・オアの複合ゲートで構成され、４ビットの比較結果信号Ｒ［０］〜Ｒ［３］の中の１ビットのみが‘１’レベルであるか否かを判定し、１ビットのみが‘１’レベルである場合に‘１’レベルの信号Ｓａを出力する。具体的には、１ビットエラーデコード回路ＤＥＣ１は、４個のアンドゲートで、４ビット中のそれぞれ異なる１ビットのみが‘１’レベルとなるケースを検出し、その検出結果をオアゲートで束ねて出力する。その結果、１ビットエラーデコード回路ＤＥＣ１は、１ビットエラーを検出した際に、‘１’レベルの信号Ｓａを出力する。
【００６５】
アンドゲートＡＤ３０は、オアゲートＯＲ３０の出力が‘１’レベルであり、１ビットエラーデコード回路ＤＥＣ１の出力が‘０’レベルである場合（すなわちエラーが生じた場合で、そのエラーは、１ビットエラーで無い場合）に‘１’レベルの信号Ｓｂを出力する。この‘１’レベルの信号Ｓｂは、図６の場合と同様に、２ビット以上のエラーが生じたことを意味する。
【００６６】
なお、図９の信号Ｓａは、図６の信号Ｓａとは若干機能が異なる。すなわち、図６の信号Ｓａは奇数個のエラーが生じた場合に‘１’レベルとなるが、図９の信号Ｓａは、奇数個のエラーの内、１ビットエラーが生じた場合のみで‘１’レベルとなる。ただし、信号Ｓｂによって１ビットエラーか２ビット以上のエラーかを区別できるため、実質的に、図６の信号Ｓａの‘１’レベルは、図９の場合と同様に、１ビットエラーとして取り扱うことができる。このような信号Ｓａ，Ｓｂにより、図９の判定回路ＪＤＧ３は、図６の判定回路ＪＤＧ２と同様の判定動作を行う。
【００６７】
ここで、図９の判定回路ＪＤＧ３は、さらに、カウンタ回路ＣＵＮＴ２と、カウント値比較回路ＣＭＰ２と、ラッチ回路ＬＴｃとを備える。カウンタ回路ＣＵＮＴ２は、テスト対象のアドレスＡＤＲ内で訂正可能ケースが発生した回数をカウントする。具体的には、カウンタ回路ＣＵＮＴ２は、１ビットエラーデコード回路ＤＥＣ１が‘１’レベルを出力した回数をカウントする。カウント値比較回路ＣＭＰ２は、カウンタ回路ＣＵＮＴ２のカウント値が予め定めた閾値Ｃｔｈ２を超えた場合に、‘１’レベルを出力する。ラッチ回路ＬＴｃは、図３（ｂ）と同様の構成を備え、当該‘１’レベルをラッチし、‘１’レベルのアラーム信号ＡＲＭとして出力する。
【００６８】
ここで、前述した実施の形態２の方式では、例えば、ＩＯエラーの状況（すなわち、特定の１ビットがスタティックエラーとなる状況）でも、その他にエラーが発生しなければ、訂正可能ケースと判定される。この判定は、正しいが、実際には、当該ＩＯエラーの訂正によってＥＣＣ回路に処理負荷がかかるため、実質的に、ＥＣＣ回路によるエラー訂正能力が著しく低下するか、もしくは無効となる。その結果、起動後の通常動作中にソフトエラー等が生じた場合にエラー訂正を行えなくなる。
【００６９】
そこで、例えば、図１０に示されるように、１ビットエラーとなるＩＯエラーが生じた場合には、訂正可能ケースを意味する‘１’レベルの訂正可否判定信号ＥＣＳと共に、‘１’レベルのアラーム信号ＡＲＭを出力する。図９の構成例では、このようなＩＯエラーを含めて、１ビットエラーが生じた回数が閾値Ｃｔｈ２を超えた場合に‘１’レベルのアラーム信号ＡＲＭが出力される。閾値Ｃｔｈ２に関しては、例えば、半導体装置ＤＥＶの不揮発性メモリ等に閾値Ｃｔｈ２を格納することで、外部から任意に設定できるように構成してもよい。
【００７０】
なお、図９の判定回路ＪＤＧ３からカウンタ回路ＣＵＮＴ２等を省いて図６の判定回路ＪＤＧ２の代わりに適用することも可能であり、図６の判定回路ＪＤＧ２に対して、図９の判定回路ＪＤＧ３と同様のカウンタ回路ＣＵＮＴ２等を追加することで、図９の判定回路ＪＤＧ３の代わりに適用することも可能である。後者の場合、図６と図９を等価にするためには、カウンタ回路ＣＵＮＴ２は、図６において、信号（Ｓａ，Ｓｂ）＝（１，０）が生じた回数（すなわち１ビットエラーが生じた回数）をカウントすればよいが、実質的には、信号Ｓａが‘１’レベルとなった回数をカウントすればよい。すなわち、信号Ｓａが‘１’レベルとなった回数をカウントしながら、最終テスト結果が、訂正可能ケースであった場合、当該カウント値は、１ビットエラーが生じた回数を意味することになる。
【００７１】
《実施の形態３の主要な効果》
以上、実施の形態３の半導体装置を用いることで、実施の形態２の場合と同様の効果が得られる。さらに、ＥＣＣ回路によるエラー訂正能力が著しく低下している、もしくは無効となっている状況を検知し、アラーム信号ＡＲＭによってシステム制御回路ＳＹＳＣＴ等に通知することが可能になる。システム制御回路ＳＹＳＣＴは、当該アラーム信号ＡＲＭを受信した場合、例えば、図５のステップＳ１０８の場合と同様に取り扱えばよい。なお、図９において、例えば、ＥＣＣ回路でエラー訂正可能なビット数が２ビットの場合には、１ビットエラーデコード回路ＤＥＣ１の場合と同様の２ビットエラーデコード回路を追加すればよい。
【００７２】
（実施の形態４）
《半導体装置（応用例）の概略構成》
図１１は、本発明の実施の形態４による半導体装置の主要部の構成例を示す概略図である。図１２は、図１１の半導体装置におけるテスト時の動作例を示す模式図である。図１１に示す半導体装置ＤＥＶは、複数のメモリＭＥＭ１，ＭＥＭ２と、複数のＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２と、複数の選択回路ＭＵＸ１，ＭＵＸ２と、ＥＣＣ回路（ＥＣＧ，ＥＣＥ）と、ユーザ回路ＵＬＧとに加えて、総合判定回路ＴＪＧを備える。
【００７３】
ユーザ回路ＵＬＧは、ＥＣＣ回路（ＥＣＧ，ＥＣＥ）を介して、論理アドレスと、各論理アドレスに対するｎビットの論理データ（ライトデータ）とを用いて、複数のメモリＭＥＭ１，ＭＥＭ２にアクセスする。メモリＭＥＭ１は、論理アドレスに対するｎビットの論理データの一部のビット（ｉビット分）を保持する。メモリＭＥＭ２は、論理アドレスに対するｎビットの論理データの他の一部のビット（ｊビット分）を保持する。
【００７４】
ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２は、図１および図３の場合と同様に、それぞれ、選択回路ＭＵＸ１，ＭＵＸ２を介して、メモリＭＥＭ１，ＭＥＭ２をテストする。選択回路ＭＵＸ１には、ＢＩＳＴ回路ＢＳＴＣ１からのｉビットのライトデータＷＤ１と、ビット分割回路ＢＢからのｉビットのライトデータとが入力される。選択回路ＭＵＸ２には、ＢＩＳＴ回路ＢＳＴＣ２からのｊビットのライトデータＷＤ２と、ビット分割回路ＢＢからのｊビットのライトデータとが入力される。ビット分割回路ＢＢは、ＥＣＣコード生成回路ＥＣＧからのｎビットのライトデータをｉビットとｊビットに分割する。また、メモリＭＥＭ１からのｉビットのリードデータＲＤ１と、メモリＭＥＭ２からのｊビットのリードデータＲＤ２は、ビット統合回路ＢＤによってｎビットのリードデータＲＤに統合され、ＥＣＣ実行回路ＥＣＥへ出力される。
【００７５】
このように、複数のメモリＭＥＭ１，ＭＥＭ２を組み合わせてシステムのメモリ空間を構成する場合、複数のメモリＭＥＭ１，ＭＥＭ２に対して個別にＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２が設けられる一方で、ＥＣＣ回路は、複数のメモリＭＥＭ１，ＭＥＭ２を一つとみなして動作することがある。この場合、ＢＩＳＴ回路ＢＳＴＣ１が、メモリＭＥＭ１において所定の論理アドレスに対応する物理アドレスで１ビットエラーを検出し、ＢＩＳＴ回路ＢＳＴＣ２も、メモリＭＥＭ２において同じ所定の論理アドレスに対応する物理アドレスで１ビットエラーを検出した場合に問題が生じる。すなわち、この場合、ＥＣＣ回路から見ると２ビットエラーとなるため、訂正不可能ケースとなる。
【００７６】
そこで、総合判定回路ＴＪＧは、ＢＩＳＴ回路ＢＳＴＣ１内の判定回路（例えば図６のＪＤＧ２）とＢＩＳＴ回路ＢＳＴＣ２内の判定回路（例えばＪＤＧ２）が、同一の論理アドレスにおいて共に訂正可能ケースと判定した場合に、最終テスト結果を訂正不可能ケースと判定する。具体例として、例えば、２個の同一構成のメモリＭＥＭ１，ＭＥＭ２を用いて、単純に、データ幅を２倍に拡張するような場合を想定する。この場合、図１２に示されるように、ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２は、同時に起動されてテストを実行し、総合判定回路ＴＪＧには、ＢＩＳＴ回路ＢＳＴＣ１からの信号Ｓａ１，Ｓｂ１とＢＩＳＴ回路ＢＳＴＣ２の信号Ｓａ２，Ｓｂ２とが入力される。
【００７７】
信号Ｓａ１，Ｓｂ１および信号Ｓａ２，Ｓｂ２は、例えば、図６の信号Ｓａ，Ｓｂに該当する信号である。総合判定回路ＴＪＧは、アドレスＡＤＲ＃２で、信号（Ｓａ１，Ｓｂ１，Ｓａ２，Ｓｂ２）＝（１，０，１，０）の場合（すなわち個々に訂正可能ケースと判定された場合）には訂正不可能ケースと判定し、総合的な最終テスト結果として、訂正不可能ケースを表す信号（Ｓａ，Ｓｂ）＝（ｘ，１）を生成する。当該信号Ｓａ，Ｓｂは、図６等の場合と同様にして、訂正可否判定信号ＥＣＳおよび良否判定信号ＰＦＳに変換される。総合判定回路ＴＪＧは、信号（Ｓａ１，Ｓｂ１，Ｓａ２，Ｓｂ２）のその他の組み合わせに関しても、各組み合わせ内容に応じた信号Ｓａ，Ｓｂを生成する。
【００７８】
ここでは、単純なケースを想定したが、実際には、ユーザ回路ＵＬＧから見た論理アドレスと、ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２から見た物理アドレスとが適宜スクランブルされるケースや、ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２を同時に起動できないケース等も生じ得る。このような場合には、例えば、各ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２は、１ビットエラーを検出した物理アドレスを保持し、総合判定回路ＴＪＧは、予め定まっている論理アドレスと物理アドレスとの対応関係に基づき、保持された物理アドレスが同一の論理アドレスか否かを判定してもよい。また、エラー訂正可能なビット数が２ビットの場合には、各ＢＩＳＴ回路ＢＳＴＣ１，ＢＳＴＣ２は、さらに、１ビットエラーか２ビットエラーかの情報を保持してもよい。総合判定回路ＴＪＧは、このビット数の情報を含めて訂正可能ケースか否かの判定を行えばよい。
【００７９】
《実施の形態４の主要な効果》
以上、実施の形態４の半導体装置を用いることで、実施の形態１〜３の場合と同様の効果が得られる。さらに、複数のメモリ毎にＢＩＳＴ回路が設けられ、かつ複数のメモリに共通でＥＣＣ回路が設けられるようなシステムに対しても、ＥＣＣ回路によるエラー訂正可否を正しく判定することが可能になる。
【００８０】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００８１】
ＡＤ  アンドゲート
ＡＤＲ  アドレス
ＡＤＲＧ  アドレス生成回路
ＢＳＴＣ  ＢＩＳＴ回路
ＣＭＤ  コマンド
ＣＭＤＧ  コマンド生成回路
ＣＭＰ  カウント値比較回路
ＣＭＰＢ  ビット比較回路
ＣＵＮＴ  カウンタ回路
Ｃｔｈ  閾値
ＥＣＥ  ＥＣＣ実行回路
ＥＣＧ  ＥＣＣコード生成回路
ＥＣＳ  訂正可否判定信号
ＥＸＤ  期待値データ
ＪＤＧ  判定回路
ＬＴ  ラッチ回路
ＭＥＭ  メモリ
ＭＵＸ  選択回路
ＯＲ  オアゲート
ＰＦＳ  良否判定信号
Ｒ  比較結果信号
ＲＤ  リードデータ
ＳＹＳＣＴ  システム制御回路
ＴＤＧ  テストデータ生成回路
ＴＪＧ  総合判定回路
ＵＬＧ  ユーザ回路
ＷＤ  ライトデータ
ＸＯＲ  排他的論理和ゲート
【図１】
2018156712.tif 000003
【図２】
2018156712.tif 000004
【図３】
2018156712.tif 000005
【図４】
2018156712.tif 000006
【図５】
2018156712.tif 000007
【図６】
2018156712.tif 000008
【図７】
2018156712.tif 000009
【図８】
2018156712.tif 000010
【図９】
2018156712.tif 000011
【図１０】
2018156712.tif 000012
【図１１】
2018156712.tif 000013
【図１２】
2018156712.tif 000014
【図１３】
2018156712.tif 000015