(57)【要約】【課題】記憶されたデータのエラー判定を高い確実性で行う。【解決手段】エラー判定に用いるデータ（例えば、ＣＲＣにおける剰余値）をエラーの生じにくいメモリに記憶させる。具体的には、複数のトランジスタと、容量素子と、データ保持部と、を有するメモリ素子がマトリクス状に設けられた半導体装置を用いて、前記データ保持部は、前記複数のトランジスタの一のソース及びドレインの一方と、前記複数のトランジスタの他のゲートと、前記容量素子の一の電極によって構成されており、前記データ保持部にソース及びドレインの前記一方が接続された前記トランジスタではチャネルが形成される半導体層のバンドギャップが２．８ｅＶ以上もしくは３．２ｅＶ以上であり、前記データ保持部にエラー判定用のデータを記憶する。【選択図】図１
2013242956.tif 000002
【特許請求の範囲】
【請求項１】
複数のトランジスタと、容量素子と、データ保持部とを有するメモリ素子がマトリクス状に設けられた半導体装置であって、
前記データ保持部は、前記複数のトランジスタの一のソース及びドレインの一方と、前記複数のトランジスタの他の一のゲートと、前記容量素子の一の電極によって構成されており、
前記データ保持部に前記ソース及び前記ドレインの前記一方が接続された前記トランジスタはチャネルが形成される酸化物半導体を有し、
前記データ保持部にはエラー判定用のデータが記憶されていることを特徴とする半導体装置。
【請求項２】
請求項１において、
前記エラー判定は巡回冗長検査であり、
前記エラー判定用の前記データは前記巡回冗長検査に用いる剰余値であることを特徴とする半導体装置。
【請求項３】
請求項１または請求項２において、
前記データ保持部にソース及びドレインの前記一方が接続された前記トランジスタのチャネルが形成される前記半導体層の厚さは２０ｎｍ以下であることを特徴とする半導体装置。
【請求項４】
巡回冗長検査によりエラー判定を行うに際し、コンフィギュレーションメモリと剰余値が記憶されたメモリを用いる半導体装置の駆動方法であって、
予め算出された前記剰余値を用いて第ｉ行のエラー判定を行い、
前記第ｉ行にエラーがない場合には第ｉ＋１行の処理に移行し、
前記第ｉ行にエラーがある場合にはコンフィギュレーションメモリに記憶された第ｉ行に入力すべきデータの書き込みを行い、
前記エラー判定と前記データの書き込みを前記エラー判定によりエラーが検出されなくなるまで繰り返し、
前記巡回冗長検査に用いる前記剰余値は、前記コンフィギュレーションメモリよりもエラー率の低いメモリ素子に記憶されていることを特徴とする半導体装置の駆動方法。
【請求項５】
請求項４において、
前記剰余値を用いたエラー判定を一定回数行ってもエラーが生じる場合には前記剰余値を再度計算することを特徴とする半導体装置の駆動方法。
【請求項６】
請求項４または請求項５において、
前記剰余値を計算する除数は、ＲＯＭに記憶されていることを特徴とする半導体装置の駆動方法。
【請求項７】
請求項４乃至請求項６のいずれか一において、
エラー率の低い前記メモリ素子は、請求項１乃至請求項３のいずれか一に記載の前記半導体装置に設けられた前記メモリ素子であることを特徴とする半導体装置の駆動方法。
【請求項８】
請求項４乃至７記載の半導体装置の駆動方法を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関する。本明細書において、半導体装置とは、半導体素子自体または半導体素子を含むものをいい、このような半導体素子として、例えば薄膜トランジスタが挙げられる。従って、液晶表示装置及び記憶装置なども半導体装置に含まれる。
【背景技術】
【０００２】
半導体装置の一種としてプログラム可能な半導体装置が挙げられる。プログラム可能な半導体装置では、ユーザーによって内部の論理回路の設計変更が可能である。例えば、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ：プログラマブルロジックデバイス）と呼ばれるものがこれに相当する。
【０００３】
ＰＬＤの一例として、複数の論理回路を有し、メモリ部（コンフィギュレーションメモリと呼ばれる。）に格納されたデータ（コンフィギュレーションデータと呼ばれる。）により、論理回路間の接続状態や論理回路自体の機能を切替えることで、ユーザーによる回路の設計変更を可能としている半導体装置が挙げられる。ここで、コンフィギュレーションデータとしては、例えばＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ：ルックアップテーブル）に記憶されるデータが挙げられる。
【０００４】
一般に、コンフィギュレーションメモリにはＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が用いられているが、ＳＲＡＭでは、ソフトエラーによるデータの反転（アップセット）の確率が高いという問題がある。このようなエラーを判別するために、プログラム可能な半導体装置の各プログラム素子に接続された記憶素子のデータを定期的に読み出してエラーの判定を行う必要がある。このようなエラーの判定の一例として、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：巡回冗長検査）が挙げられる。ＣＲＣにより、アップセットの有無を判別することができる（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許８１３０５７４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
揮発性メモリ（例えばＳＲＡＭ）を有するプログラム可能な半導体装置（ユーザーによる回路の設計変更を可能としている半導体装置）では、コンフィギュレーション時のコンフィギュレーションデータのロードに際して、コンフィギュレーションデータに演算処理を行って剰余値を算出して、該剰余値を記憶する。そして、コンフィギュレーション中またはコンフィギュレーション完了後であって、且つユーザーモード実行中に、前記剰余値に基づいて半導体装置内に散在するコンフィギュレーションデータを読み出してＣＲＣを行う。
【０００７】
しかし、前記剰余値は、揮発性メモリ（例えばＳＲＡＭ）に保存されるため、ソフトエラーにより期待値（前記剰余値に基づくデータ）が変化してしまっているおそれがある。そのため、エラーであると判定されてしまった場合には、再度のコンフィギュレーションが必要である。
【０００８】
本発明の一態様は、ソフトエラーを生じずにＣＲＣを行うことができる半導体装置を提供することを課題とする。すなわち、本発明の一態様は、エラー判定の確実性の高い半導体装置を提供することを課題とする。
【０００９】
本発明の一態様は、ソフトエラーを生じずにＣＲＣを行う半導体装置の駆動方法を提供することを課題とする。すなわち、本発明の一態様は、エラー判定の確実性の高い半導体装置の駆動方法を提供することを課題とする。
【課題を解決するための手段】
【００１０】
本発明の一態様は、複数のトランジスタと、容量素子と、データ保持部と、を有するメモリ素子がマトリクス状に設けられた半導体装置であって、前記データ保持部は、前記複数のトランジスタの一のソース及びドレインの一方と、前記複数のトランジスタの他の一のゲートと、前記容量素子の一の電極によって構成されており、前記データ保持部にソース及びドレインの前記一方が接続された前記トランジスタではチャネルが形成される半導体層のバンドギャップが２．８ｅＶ以上もしくは３．２ｅＶ以上であり、前記データ保持部にはエラー判定用のデータが記憶されていることを特徴とする半導体装置である。
【００１１】
前記構成の半導体装置において、前記エラー判定は巡回冗長検査であり、前記エラー判定用の前記データは前記巡回冗長検査に用いる剰余値であることが好ましい。
【００１２】
前記構成の半導体装置において、前記データ保持部にソース及びドレインの前記一方が接続された前記トランジスタのチャネルが形成される前記半導体層の厚さは２０ｎｍ以下であることが好ましい。
【００１３】
本発明の一態様は、巡回冗長検査によりエラー判定を行うに際し、コンフィギュレーションメモリと剰余値が記憶されたメモリを用いる半導体装置の駆動方法であって、予め算出された前記剰余値を用いて第ｉ行のエラー判定を行い、前記第ｉ行にエラーがない場合には第ｉ＋１行の処理に移行し、前記第ｉ行にエラーがある場合にはコンフィギュレーションメモリに記憶された第ｉ行に入力すべきデータの書き込みを行い、前記エラー判定と前記データの書き込みを前記エラー判定によりエラーが検出されなくなるまで繰り返し、前記巡回冗長検査に用いる前記剰余値は、前記コンフィギュレーションメモリよりもエラー率の低いメモリ素子に記憶されていることを特徴とする半導体装置の駆動方法である。
【００１４】
前記構成の半導体装置の駆動方法において、前記剰余値を用いたエラー判定を一定回数行ってもエラーが生じる場合には前記剰余値を再度計算すればよい。
【００１５】
前記構成の半導体装置の駆動方法において、前記剰余値を計算する除数は、ＲＯＭに記憶されていることが好ましい。
【００１６】
前記構成の半導体装置の駆動方法において、エラー率の低い前記メモリ素子は、前記構成の半導体装置に設けられた前記メモリ素子であってもよい。
【発明の効果】
【００１７】
ソフトエラーを生じずにＣＲＣを行うことができる半導体装置を提供することができる。すなわち、エラー判定の確実性の高い半導体装置を提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一態様である半導体装置のメモリ素子を説明する図。
【図２】本発明の一態様である半導体装置のメモリ素子を説明する図。
【図３】本発明の一態様である半導体装置のメモリ素子を説明する図。
【図４】本発明の一態様である半導体装置のコンフィギュレーションメモリとＣＲＣ用メモリを表す図。
【図５】本発明の一態様である半導体装置の駆動方法を説明する第１図。
【図６】本発明の一態様である半導体装置の駆動方法を説明する第２図。
【発明を実施するための形態】
【００１９】
以下では、本発明の実施の形態について図面を用いて詳細に説明する。ただし、本発明は以下の説明に限定されず、本発明の趣旨及びその範囲から逸脱することなくその形態及び詳細を様々に変更し得ることは、当業者であれば容易に理解される。したがって、本発明は、以下に示す実施の形態の記載内容に限定して解釈されるものではない。
【００２０】
まず、本発明の一態様である半導体装置に適用可能なメモリ素子の構成とその動作を説明する。そして、本発明の一態様である半導体装置の駆動方法に適用可能なＣＲＣについて説明する。
【００２１】
（実施の形態１）
本発明の一態様である半導体装置に適用可能なメモリ素子の構成とその動作を説明する。
【００２２】
なお、本実施の形態におけるメモリ素子の説明では、一のメモリ素子に着目しているが、半導体装置では、これらのメモリ素子の複数がマトリクス状に配列して設けられている。
【００２３】
図１（Ａ）には、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例を示す。図１（Ａ）に示すメモリ素子１００は、第１のトランジスタ１０２と、第２のトランジスタ１０４と、容量素子１０６と、データ保持部１１８と、を有し、第１の端子１０８、第２の端子１１０、第３の端子１１２、第４の端子１１４及び第５の端子１１６に電気的に接続されている。
【００２４】
第１のトランジスタ１０２のソース及びドレインの一方は、第３の端子１１２に電気的に接続されている。第１のトランジスタ１０２のソース及びドレインの他方は、容量素子１０６の第１の電極と、第２のトランジスタ１０４のゲートに電気的に接続されている。第１のトランジスタ１０２のゲートは、第１の端子１０８に電気的に接続されている。
【００２５】
第２のトランジスタ１０４のソース及びドレインの一方は、第４の端子１１４に電気的に接続されている。第２のトランジスタ１０４のソース及びドレインの他方は、第５の端子１１６に電気的に接続されている。
【００２６】
容量素子１０６の第２の電極は、第２の端子１１０に電気的に接続されている。なお、容量素子１０６の容量は１ｆＦ（１フェムトファラッド）以上あることが好ましい。
【００２７】
データ保持部１１８は、第１のトランジスタ１０２のソース及びドレインの他方、容量素子１０６の第１の電極、及び第２のトランジスタ１０４のゲートが電気的に接続された部分に形成されている。
【００２８】
第１のトランジスタ１０２は、少なくともオフ電流が小さいものであればよい。第１のトランジスタ１０２のチャネル形成領域は薄膜の半導体層であることが好ましく、該半導体層の厚さは２０ｎｍ以下であることがさらに好ましい。このようにチャネル形成領域を薄膜の半導体層とすると、高エネルギー中性子の入射による核反応で生じる電荷の発生量をバルクの半導体の概ね１０分の１以下まで抑えることができる。また、チャネルが形成される半導体層をバンドギャップの大きい材料により形成すると、電荷の発生量を更に低減することができる。このようなバンドギャップの大きい材料としては、例えば酸化物半導体が挙げられる。
【００２９】
例えば、バンドギャップが３．２ｅＶの半導体（例えば、酸化物半導体）においては、前記核反応で生じたα粒子が通過する部分における単位長さあたりの電荷の発生量は、バンドギャップが１．１ｅＶの半導体（例えば、シリコン）の約１／３である。一般には、シリコン中の一の核反応では数百ｆＣ（数百フェムトクーロン）の電荷が発生するとされるが、バンドギャップが３．２ｅＶ、厚さ２０ｎｍの半導体を用いると、発生する電荷は１ｆＣ未満まで抑えられる。
【００３０】
従って、第１のトランジスタ１０２のチャネル形成領域となる半導体層をバンドギャップの大きい半導体材料により薄く形成すると、第１のトランジスタ１０２は、高エネルギー中性子の入射にともなう核反応に対して十分に安定なものとなり、データ保持部１１８の保持力は非常に高いものとなる。
【００３１】
なお、第１のトランジスタ１０２のチャネル形成領域となる半導体層は、好ましくはＰＮ接合を有しないことが好ましく、一の半導体層に複数のトランジスタ（チャネル）が形成されていないことが好ましい。ＰＮ接合を有し、且つ複数のトランジスタのチャネルが一の半導体層に設けられている場合（すなわち、一の半導体層に複数のトランジスタが設けられている場合）には、核反応が発生したときに、寄生バイポーラ効果により、同一の半導体層にあるすべてのトランジスタが影響を受けることがあるためである。
【００３２】
第２のトランジスタ１０４は、少なくともスイッチング機能を有していればよい。第２のトランジスタ１０４としては、例えば、シリコン基板にチャネルが形成されるトランジスタを用いればよい。また、第２のトランジスタ１０４はｐチャネル型トランジスタであってもよいし、ｎチャネル型トランジスタであってもよい。
【００３３】
第１の端子１０８及び第３の端子１１２には、少なくともデータ保持部１１８へのデータの書き込み時に信号が入力される。第３の端子１１２には、エラー判定用のデータが入力される。エラー判定の対象は、例えば図４に示すコンフィギュレーションメモリ４００を構成するメモリである。第２の端子１１０には、少なくともデータ保持部１１８からのデータの読み出し時に信号が入力される。第５の端子１１６からは、少なくともデータ保持部１１８からのデータの読み出し時に信号が出力される。ただし、第１の端子１０８、第２の端子１１０、第３の端子１１２、第４の端子１１４及び第５の端子１１６における信号の入出力のタイミングは、これらに限定されるものではない。
【００３４】
次に、図１（Ａ）に示すメモリ素子１００の動作について説明する。メモリ素子１００へのデータの書き込み時には、第１の端子１０８の電位を制御して第１のトランジスタ１０２をオンし、第３の端子１１２の電位を書き込むデータの電位となるよう制御する。ここで、図１（Ａ）に示すように、第１のトランジスタ１０２がｎチャネル型トランジスタである場合には第１の端子１０８の電位を高電位とするとオンし、第１のトランジスタ１０２がｐチャネル型トランジスタである場合には第１の端子１０８の電位を低電位とするとオンする。
【００３５】
上記のように電位を制御すると、データ保持部１１８の電位は、第３の端子１１２の電位に応じた電位となり、好ましくは、データ保持部１１８の電位と第３の端子１１２の電位が等しくなる。すなわち、データ保持部１１８にデータが書き込まれる。データ保持部１１８にデータが書き込まれた後に、第１の端子１０８の電位を制御して第１のトランジスタ１０２をオフすると、データ保持部１１８にデータが保持される。ここで、第１のトランジスタ１０２としては、少なくともオフ電流が小さいものを用いるため、データ保持部１１８の電位は十分な時間（１０ｍ秒以上）維持される。データ保持部１１８にデータを保持する期間が、より長時間である場合にはリフレッシュ動作を行えばよい。
【００３６】
メモリ素子１００からのデータの読み出し時には、第２の端子１１０の電位を読み出すための電位に設定し、第２のトランジスタ１０４のオン抵抗によってデータ保持部１１８のデータを判別する。
【００３７】
例えば、第２のトランジスタ１０４がｎチャネル型トランジスタである場合、データ保持部１１８が高電位であると、第２のトランジスタ１０４のオン抵抗は小さく、第４の端子から信号を入力すると第５の端子１１６に伝達される。しかし、データ保持部１１８が低電位であると、第２のトランジスタ１０４のオン抵抗が大きく、第４の端子１１４から信号を入力しても第５の端子１１６には伝達されない。
【００３８】
一方で、第２のトランジスタ１０４がｐチャネル型トランジスタである場合、データ保持部１１８が高電位であると、オン抵抗が大きく、第４の端子１１４から信号を入力しても第５の端子１１６には伝達されない。しかし、データ保持部１１８が低電位であると、第２のトランジスタ１０４のオン抵抗は小さく、第４の端子１１４から信号を入力すると第５の端子１１６に伝達される。
【００３９】
なお、第３の端子１１２の電位は、データ保持部１１８の電位の最高値以上、または、データ保持部１１８の電位の最低値以下とすることが好ましい。例えば、データ保持部１１８が高電位であるときを＋１Ｖとし、データ保持部１１８が低電位であるときを０Ｖとする。
【００４０】
図１（Ｂ）には、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例であって、図１（Ａ）とは異なる形態を示す。図１（Ｂ）に示すメモリ素子１５０は、第１のトランジスタ１５２と、第２のトランジスタ１５４と、第３のトランジスタ１５６と、容量素子１５８と、データ保持部１７２と、を有し、第１の端子１６０、第２の端子１６２、第３の端子１６４、第４の端子１６６、第５の端子１６８及び第６の端子１７０に電気的に接続されている。
【００４１】
第１のトランジスタ１５２は、図１（Ａ）の第１のトランジスタ１０２と同様の構成を有するトランジスタである。第２のトランジスタ１５４及び第３のトランジスタ１５６は、図１（Ａ）の第２のトランジスタ１０４と同様の構成を有するトランジスタである。データ保持部１７２は、第１のトランジスタ１５２のソース及びドレインの一方、容量素子１５８の第１の電極、及び第２のトランジスタ１５４のゲートが電気的に接続された部分に形成されている。
【００４２】
第１の端子１６０及び第３の端子１６４には、少なくともデータ保持部１７２へのデータの書き込み時に信号が入力される。第３の端子１６４には、エラー判定用のデータが入力される。エラー判定の対象は、例えば図４に示すコンフィギュレーションメモリ４００を構成するメモリである。第２の端子１６２には、少なくともデータ保持部１７２からのデータの読み出し時に信号が入力される。第６の端子１７０からは、少なくともデータ保持部１７２からのデータの読み出し時に信号が出力される。ただし、第１の端子１６０、第２の端子１６２、第３の端子１６４、第４の端子１６６、第５の端子１６８及び第６の端子１７０における信号の入出力のタイミングは、これらに限定されるものではない。
【００４３】
次に、図１（Ｂ）に示すメモリ素子１５０の動作について説明する。メモリ素子１５０へのデータの書き込みは、図１（Ａ）のメモリ素子１００へのデータの書き込みと同様に行うため、前記説明を援用し、ここでの説明は省略する。
【００４４】
メモリ素子１５０からのデータの読み出し時には、第２の端子１６２の電位を制御して第３のトランジスタ１５６をオンし、データ保持部１７２の電位によって第２のトランジスタ１５４のオン抵抗が変わるため、これによってデータ保持部１７２のデータを判別することができる。
【００４５】
なお、図１（Ｂ）のメモリ素子１５０では、第５の端子１６８の電位を制御することでデータ保持部１７２の電位の変動を大きくすることができる。
【００４６】
例えば、第２のトランジスタ１５４がｎチャネル型トランジスタであり、容量素子１５８の静電容量が第２のトランジスタ１５４がオンのときの静電容量（ゲート容量）と等しい場合について説明する。ここで、第３の端子１６４の電位を＋１Ｖ、第５の端子１６８の電位を０Ｖとしてデータ保持部１７２に高電位となるデータを書き込む。そして、データ保持部１７２のデータを維持する期間には第５の端子１６８を＋１Ｖとする。すると、データ保持部１７２の電位は＋１．５Ｖとなる。なお第４の端子１６６の電位は＋２．０Ｖとする。
【００４７】
第２のトランジスタ１５４がｐチャネル型トランジスタであり、容量素子１５８の静電容量が第２のトランジスタ１５４がオンのときの静電容量と等しい場合には、同様に、データ保持部１７２に高電位となるデータを書き込んだ場合にはデータ保持部１７２の電位は＋２Ｖとなる。
【００４８】
（実施の形態２）
図２には、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例であって、図１（Ａ）及び（Ｂ）とは異なる形態を示す。図２に示すメモリ素子２００は、第１のトランジスタ２０２と、第２のトランジスタ２０４と、第３のトランジスタ２０６と、第４のトランジスタ２０８と、容量素子２１０と、データ保持部２２６と、を有し、第１の端子２１２、第２の端子２１４、第３の端子２１６、第４の端子２１８、第５の端子２２０、第６の端子２２２及び第７の端子２２４に電気的に接続されている。
【００４９】
第１のトランジスタ２０２は、図１（Ａ）の第１のトランジスタ１０２と同様の構成を有するトランジスタである。第４のトランジスタ２０８は、図１（Ａ）の第１のトランジスタ１０２または第２のトランジスタ１０４と同様の構成を有するトランジスタである。第２のトランジスタ２０４及び第３のトランジスタ２０６は、図１（Ａ）の第２のトランジスタ１０４と同様の構成を有するトランジスタである。データ保持部２２６は、第１のトランジスタ２０２のソース及びドレインの一方、容量素子２１０の第１の電極、及び第２のトランジスタ２０４のゲートが電気的に接続された部分に形成されている。
【００５０】
第１の端子２１２、第３の端子２１６及び第４の端子２１８には、少なくともデータ保持部２２６へのデータの書き込み時に信号が入力される。第４の端子２１８には、エラー判定用のデータが入力される。エラー判定の対象は、例えば図４に示すコンフィギュレーションメモリ４００を構成するメモリである。第２の端子２１４には、少なくともデータ保持部２２６からのデータの読み出し時に信号が入力される。第７の端子２２４からは、少なくともデータ保持部２２６からのデータの読み出し時に信号が出力される。ただし、第１の端子２１２、第２の端子２１４、第３の端子２１６、第４の端子２１８、第５の端子２２０、第６の端子２２２及び第７の端子２２４における信号の入出力のタイミングは、これらに限定されるものではない。
【００５１】
図２に示すメモリ素子２００は、第４のトランジスタ２０８を有する。任意の行及び他の行へのデータの書き込み時に、第４のトランジスタ２０８と第１のトランジスタ２０２を同期させる、すなわち、第４のトランジスタ２０８と第１のトランジスタ２０２とを同じタイミングでオンオフさせる、ことで、他の行のデータの書き込み中におけるデータ保持部２２６の電位の低下を抑制することができる。例えば他の行のデータを書き込むときは第４のトランジスタ２０８及び第１のトランジスタ２０２はオフにする。
【００５２】
データの書き込みが終了したら、第１のトランジスタ２０２はオフのまま、第４のトランジスタ２０８をオンとし、また、第６の端子２２２の電位を適切な値とすることで、図１（Ｂ）のメモリ素子で得られたように、データ保持部２２６の電位を変更することができる。
【００５３】
なお、その他の点については、図２のメモリ素子２００は、図１（Ａ）のメモリ素子１００及び図１（Ｂ）のメモリ素子１５０と同様であるため、実施の形態１を援用し、ここでの説明は省略する。
【００５４】
（実施の形態３）
実施の形態１で説明したメモリ素子１００、メモリ素子１５０及び実施の形態２で説明したメモリ素子２００では、データを読み出す前に、少なくとも２つの端子間で電位を異なるものとしておくこと（プリチャージ動作）が必要である。例えば、図１（Ａ）のメモリ素子１００では、第４の端子１１４と第５の端子１１６の電位を互いに異なるものとすることが必要である。
【００５５】
次に、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例であって、プリチャージ動作が不要なものについて説明する（図３（Ａ）及び（Ｂ）を参照）。
【００５６】
図３（Ａ）には、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例であって、プリチャージ動作が不要なものを示す。図３（Ａ）に示すメモリ素子３００は、第１のトランジスタ３０２と、第２のトランジスタ３０４と、第３のトランジスタ３０６と、第４のトランジスタ３０８と、容量素子３１０と、データ保持部３２６と、を有し、第１の端子３１２、第２の端子３１４、第３の端子３１６、第４の端子３１８、第５の端子３２０、第６の端子３２２及び第７の端子３２４に電気的に接続されている。
【００５７】
第１のトランジスタ３０２は、図１（Ａ）の第１のトランジスタ１０２と同様の構成を有するトランジスタである。第２のトランジスタ３０４、第３のトランジスタ３０６及び第４のトランジスタ３０８は、図１（Ａ）の第２のトランジスタ１０４と同様の構成を有するトランジスタである。ただし、第２のトランジスタ３０４と第３のトランジスタ３０６は、後に説明するように、その極性を互いに逆にする。データ保持部３２６は、第１のトランジスタ３０２のソース及びドレインの一方、容量素子３１０の第１の電極、第２のトランジスタ３０４のゲート、及び第３のトランジスタ３０６のゲートが電気的に接続された部分に形成されている。
【００５８】
第１の端子３１２及び第３の端子３１６には、少なくともデータ保持部３２６へのデータの書き込み時に信号が入力される。第３の端子３１６には、エラー判定用のデータが入力される。エラー判定の対象は、例えば図４に示すコンフィギュレーションメモリ４００を構成するメモリである。第２の端子３１４には、少なくともデータ保持部３２６からのデータの読み出し時に信号が入力される。第７の端子３２４からは、少なくともデータ保持部３２６からのデータの読み出し時に信号が出力される。ただし、第１の端子３１２、第２の端子３１４、第３の端子３１６、第５の端子３２０及び第７の端子３２４における信号の入出力のタイミングは、これらに限定されるものではない。
【００５９】
なお、第４の端子３１８は高電位電源線Ｖｄｄに電気的に接続され、第６の端子３２２は低電位電源線Ｖｓｓに電気的に接続されている。ただし、第４の端子３１８が低電位電源線Ｖｓｓに電気的に接続され、第６の端子３２２が高電位電源線Ｖｄｄに電気的に接続されていてもよい。
【００６０】
図３（Ａ）に示すメモリ素子３００では、第２のトランジスタ３０４と第３のトランジスタ３０６がインバータを構成しており、該インバータの入力はデータ保持部３２６に電気的に接続され、該インバータの出力は第４のトランジスタ３０８のソース及びドレインの一方に電気的に接続されている。なお、第４のトランジスタ３０８のソース及びドレインの他方は、図１（Ａ）の第５の端子１１６に相当する第７の端子３２４に、電気的に接続されている。
【００６１】
図３（Ａ）に示すメモリ素子３００は、図１（Ｂ）に示すメモリ素子１５０に、第２のトランジスタ３０４と電源線に電気的に接続される端子３１８を追加した構成ともいえる。
【００６２】
図３（Ａ）に示すメモリ素子３００では、プリチャージを行うことなく第７の端子３２４から高電位電源線Ｖｄｄの電位または低電位電源線Ｖｓｓの電位を出力することができる。このため、読み出し速度が向上する。
【００６３】
または、図３（Ａ）に示す構成に代えて、図３（Ｂ）に示す構成を採用してもよい。図３（Ｂ）には、本発明の一態様である半導体装置に適用可能なメモリ素子の一構成例であって、プリチャージ動作が不要なものを示す。図３（Ｂ）に示すメモリ素子３５０は、第１のトランジスタ３５２と、第２のトランジスタ３５４と、第３のトランジスタ３５６と、第４のトランジスタ３５８と、第５のトランジスタ３６０と、容量素子３６２と、データ保持部３８０と、を有し、第１の端子３６４、第２の端子３６６、第３の端子３６８、第４の端子３７０、第５の端子３７２、第６の端子３７４、第７の端子３７６及び第８の端子３７８に電気的に接続されている。
【００６４】
第１のトランジスタ３５２及び第５のトランジスタ３６０は、図１（Ａ）の第１のトランジスタ１０２と同様の構成を有するトランジスタである。第２のトランジスタ３５４、第３のトランジスタ３５６及び第４のトランジスタ３５８は、図１（Ａ）の第２のトランジスタ１０４と同様の構成を有するトランジスタである。ただし、第２のトランジスタ３５４と第３のトランジスタ３５６は、図３（Ａ）と同様に、その極性を互いに逆にする。データ保持部３８０は、第１のトランジスタ３５２のソース及びドレインの一方、容量素子３６２の第１の電極、第２のトランジスタ３５４のゲート、及び第３のトランジスタ３５６のゲートが電気的に接続された部分に形成されている。
【００６５】
第１の端子３６４、第２の端子３６６及び第４の端子３７０には、少なくともデータ保持部３８０へのデータの書き込み時に信号が入力される。第４の端子３７０には、エラー判定用のデータが入力される。エラー判定の対象は、例えば図４に示すコンフィギュレーションメモリ４００を構成するメモリである。第３の端子３６８には、少なくともデータ保持部３８０からのデータの読み出し時に信号が入力される。第８の端子３７８からは、少なくともデータ保持部３８０からのデータの読み出し時に信号が出力される。ただし、第１の端子３６４、第２の端子３６６、第３の端子３６８、第４の端子３７０及び第８の端子３７８における信号の入出力のタイミングは、これらに限定されるものではない。
【００６６】
なお、第５の端子３７２は高電位電源線Ｖｄｄに電気的に接続され、第７の端子３７６は低電位電源線Ｖｓｓに電気的に接続されている。ただし、第５の端子３７２が低電位電源線Ｖｓｓに電気的に接続され、第７の端子３７６が高電位電源線Ｖｄｄに電気的に接続されていてもよい。
【００６７】
図３（Ｂ）に示すメモリ素子３５０は、図２に示すメモリ素子２００に、第２のトランジスタ３５４と電源線に電気的に接続される端子を追加した構成ともいえる。
【００６８】
以上、実施の形態１−３にて説明したように、本発明の一態様である半導体装置に適用可能なメモリ素子の構成例には様々なものがある。
【００６９】
図１（Ａ）、（Ｂ）に示す構成では、第２の端子１１０や第５の端子１６８によりデータ保持部１１８、データ保持部１７２の電位の変動を大きくすることができる。これは、図２の第６の端子２２２、図３（Ａ）の第５の端子３２０及び図３（Ｂ）の第６の端子３７４でも同様である。
【００７０】
図２に示す構成では、図１（Ａ）及び（Ｂ）に示す構成と比較すると、第４のトランジスタ２０８及び第３の端子２１６により他の行のデータの書き込み中におけるデータ保持部２２６の電位の低下を抑制することができる。これは、図３（Ｂ）でも同様である。
【００７１】
図３（Ａ）及び（Ｂ）に示す構成では、図１（Ａ）、（Ｂ）及び図２に示す構成では必要であったプリチャージが不要となる。
【００７２】
以上説明したように、本発明の一態様である半導体装置に適用可能なメモリ素子を構成することができる。ただし、本発明の一態様である半導体装置に適用可能なメモリ素子はこれらに限定されず、発明の趣旨から逸脱しない範囲で様々な変更が施されていてもよい。
【００７３】
なお、本発明の一態様において、上記説明したメモリ素子は、半導体装置の少なくとも一部に適用されていればよい。
【００７４】
（実施の形態４）
次に、本発明の一態様であるＣＲＣを行う半導体装置の駆動方法について説明する。図４（Ａ）には、本発明の一態様である半導体装置の駆動方法に用いるコンフィギュレーションメモリ４００とＣＲＣ用メモリ４０２を示している。図４（Ａ）によれば、コンフィギュレーションメモリのそれぞれの行には、対応するＣＲＣ用メモリを有する。ＣＲＣ用メモリ４０２は、行数×ＣＲＣのビット数の容量を要する。すなわち、図４（Ａ）に示す構成ではＣＲＣのビット数が８ビットであるため、ＣＲＣ用メモリには、２５６×８＝２０４８ビットの容量が必要である。なお、ＣＲＣのビット数は８ビットに限定されるものではないことを注記する。
【００７５】
コンフィギュレーションメモリ４００は、ＳＲＡＭのようなメモリ素子により構成されていてもよいし、図１乃至図３を参照して説明したメモリ素子を有していてもよい。
【００７６】
ＣＲＣ用メモリ４０２は、図１乃至図３を参照して説明したメモリ素子により構成されている。
【００７７】
なお、コンフィギュレーションメモリ４００とＣＲＣ用メモリ４０２は、物理的に離れて設けられていてもよいし、近接して設けられていてもよい。また、ＣＲＣ用メモリ４０２はコンフィギュレーションメモリ４００の上に積層して設けられていてもよい。
【００７８】
図４（Ｂ）には、コンフィギュレーションメモリ４００及びＣＲＣ用メモリ４０２とともにＣＲＣに用いる他の回路などを示している。コンフィギュレーションメモリ４００とＣＲＣ用メモリ４０２には、データ入出力回路４０４によってデータの書き込み及び読み出しが行われる。データ入出力回路４０４は、ＣＲＣ演算回路４０６及びブートメモリ４０８とのデータの送受信が可能である。
【００７９】
ブートメモリ４０８には、コンフィギュレーションメモリ４００に書き込むデータが保存されている。ブートメモリ４０８は不揮発メモリであることが好ましく、例えば、フラッシュメモリなどのビット単価の低廉なメモリ装置を用いるとよい。
【００８０】
なお、少なくとも、コンフィギュレーションメモリ４００、ＣＲＣ用メモリ４０２、データ入出力回路４０４及びＣＲＣ演算回路４０６は同じチップに設けられている。ブートメモリ４０８は、これらと同じチップに設けられていてもよいし、外部に設けられていてもよい。ブートメモリ４０８が外部に設けられている場合には、データ入出力回路４０４とのデータの送受信が可能な構成を有していればよい。
【００８１】
図４（Ｃ）には、ＣＲＣ演算回路４０６の概略図を示す。ＣＲＣ演算回路４０６は、入力レジスタ４１０、除数レジスタ４１２、演算回路４１４、桁数カウンタ４１６を有する。
【００８２】
除数レジスタ４１２には、ＣＲＣに必要な除数を記憶させる。例えば８ビットのＣＲＣを行うのであれば、９桁のデータが記憶される。ここでは、一番左のビットが最上位であり、”１”が入力されるとする。なお、除数レジスタ４１２には、図１乃至図３に示すメモリ素子を用いるとよい。
【００８３】
演算回路４１４は複数のＸＯＲ回路を有し、例えば８ビットのＣＲＣを行うのであれば、９個のＸＯＲ回路を有し、入力レジスタ４１０の上位９桁の数値と、それに対応する除数レジスタ４１２の数値でＸＯＲ演算をおこなう。なお、このように複数のＸＯＲ回路（それぞれ２入力である）を設ける場合には、４ビットのメモリ（ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）が好ましい）と複数のマルチプレクサを用いて構成すると回路面積を縮小できる。
【００８４】
なお、図示していないが、ＣＲＣ演算回路４０６には演算に用いるその他の回路を有する。
【００８５】
ＣＲＣの具体的な実行について図４（Ｂ）及び（Ｃ）を参照して以下に説明する。
【００８６】
まず、コンフィギュレーションメモリ４００及びＣＲＣ用メモリ４０２から、データ入出力回路４０４を介して、ＣＲＣを実行する行のデータが入力レジスタ４１０に入力される。
【００８７】
次に、入力レジスタ４１０の一番左のビットが”０”であれば左に１つデータを移動させ、桁数カウンタ４１６に”１”を入力する。一番右側のビットには”０”を入力する。この操作を一番左のビットが”１”となるまで繰り返し、左に１つデータを移動するたびに桁数カウンタ４１６に”１”を入力する。桁数カウンタ４１６では、データを移動させた回数（桁数）が記憶される。
【００８８】
例えば、入力レジスタ４１０に入力されたデータが、左から”００１００１１０．．．”であれば、入力されたデータ全体を左に２つ移動させる。この結果、入力レジスタ４１０のデータは左から”１００１１０．．．”となる。また、ここで移動させた桁数である”２”は桁数カウンタ４１６に記憶される。
【００８９】
そして、演算回路４１４で、入力レジスタ４１０の上位９桁の数値と除数レジスタ４１２の９桁の数値でＸＯＲ演算を行う。演算終了後、演算結果は、入力レジスタ４１０の上位９桁に入力される。入力レジスタ４１０の一番左のビットは”０”であるので、左に１つデータを移動させ、桁数カウンタ４１６に”１”を入力する。一番右側のビットには”０”を入力する。この操作を一番左のビットが”１”となるまで繰り返す。
【００９０】
その後、再び、演算回路４１４で演算をおこなう。この操作を桁数カウンタ４１６に記憶された数値が所定の値以上となるまで繰り返す。例えば、コンフィギュレーションデータが図４（Ａ）に示すように２５６ビットであれば、桁数カウンタ４１６に記憶された数値が２５６となるまで行う。
【００９１】
その後、入力レジスタ４１０のデータを判定する。入力レジスタ４１０のデータは入力レジスタ４１０に最初に入力された数値の剰余値であり、０であればエラーがないと判定され、０以外であればエラーがあると判定される。
【００９２】
なお、一般にメモリにおけるエラーの発生要因の一としては、データの書き込みの失敗が挙げられる。これは、ＳＲＡＭのようなメモリ素子であっても、または図１乃至図３に示すメモリ素子であっても同じ確率で発生する。メモリにおけるエラーの発生の他の要因としては、ソフトエラーが挙げられる。これは、ＳＲＡＭのようなメモリ素子と図１乃至図３に示すメモリ素子とで発生確率が異なる。実施の形態１で説明したように、ＳＲＡＭのようなメモリ素子と比較して図１乃至図３のメモリ素子ではソフトエラーは生じにくい。
【００９３】
したがって、エラーの発生段階で、エラーの発生要因も異なるという前提で対処することにより無駄な操作を減らすことができる。すなわち、書き込み直後のエラーは、書き込みの失敗であるとして、コンフィギュレーションメモリ４００とＣＲＣ用メモリ４０２のいずれか、またはいずれもがエラーを発生したとみなしてよい。
【００９４】
一方、書き込みが成功した後でエラーが発生した場合は、ソフトエラーが主たる要因であるとし、その場合には、ＣＲＣ用メモリ４０２でのエラーの発生確率よりもコンフィギュレーションメモリ４００でのエラーの発生確率がはるかに高いので、コンフィギュレーションメモリ４００のデータのみを書き換えればよいため、効率的である。
【００９５】
次に、本発明の一態様である半導体装置の駆動方法のＣＲＣを用いたエラーチェックの流れについて図５及び図６を参照して説明する。
【００９６】
はじめに、コンフィギュレーションについて図５を参照して説明する。ここでは、メモリの行数をｎとする。まず、処理を開始（開始５００）し、ｉ＝１からループを開始する（ループ開始５０２）。
【００９７】
そして、ブートメモリ４０８より、第ｉ行のデータを取り出し、剰余値計算を行う（第ｉ行の剰余値計算５０４）。第ｉ行の剰余値計算５０４の後に、コンフィギュレーションメモリ４００の第ｉ行に入力すべきデータを入力し、ＣＲＣ用メモリ４０２の第ｉ行に算出した剰余値のデータを入力する（第ｉ行のデータ書き込み５０６）。
【００９８】
次に、ＣＲＣによりエラーの判定を行う（第ｉ行のエラー判定５０８）。ＣＲＣは、コンフィギュレーションメモリ４００の第ｉ行の末尾のデータに、ＣＲＣ用メモリ４０２の第ｉ行のデータを付加した数値を予め設定した除数で除し、剰余値が０であるか否かにより行う。剰余値が０であればエラーはなく（Ｎに分岐）、剰余値が０以外であればエラーがある（Ｙに分岐）。エラーがない場合には次の行の処理に移行する。エラーがある場合には、コンフィギュレーションメモリ４００及びＣＲＣ用メモリ４０２のいずれかへの書き込みの失敗であるとして、第ｉ行の剰余値計算５０４と第ｉ行のデータの書き込み５０６、第ｉ行のエラー判定５０８を再度行い、エラーがなくなるまでこれを繰り返す。
【００９９】
上記の処理をｉ＝１からｎまで繰り返してループを終了する（ループ終了５１０）。ループ終了後、コンフィギュレーションは終了し、ユーザーモードへ移行する（処理の移行５１２）。
【０１００】
次に、ユーザーモードについて図６を参照して説明する。ここでは、図５と同様にメモリの行数をｎとする。まず、処理を開始（ユーザーモードの開始６００）し、ｉ＝１からループを開始する（ループ開始６０２）。
【０１０１】
なお、後に説明するように、ユーザーモードでは、エラー判定で一定の回数以上エラーありと判定された場合には剰余値計算を再度行う。ここで、エラー判定回数はｋとし、前記「一定の回数」に相当するエラー判定の上限回数をｍとする。ループ開始６０２直後にｋに１を入力する（「ｋ＝１」６０４）。
【０１０２】
次に、ＣＲＣによりエラーの判定を行う（第ｉ行のエラー判定６０６）。ＣＲＣは、図５と同様に行う。エラーがない場合（Ｎに分岐）には次の行の処理に移行する。エラーがある場合（Ｙに分岐）には、コンフィギュレーションメモリ４００の第ｉ行に入力すべきデータを入力（第ｉ行のデータ書き込み６０８）し、ｋに１を追加する（「ｋ＋１」６１０）。このとき、ＣＲＣ用メモリ４０２の第ｉ行のデータはそのまま保持する。
【０１０３】
そして、エラー判定回数が上限に達したか否かを判定する。すなわち、ｋ＝ｍであるか否かを判定する（「ｋ＝ｍの判定」６１２）。ｋ＝ｍでない場合（すなわち、エラー判定回数が上限回数に達していない場合）には、第ｉ行のエラー判定６０６に戻る。ｋ＝ｍである場合（すなわち、エラー判定回数が上限回数に達した場合）には、ブートメモリ４０８から、第ｉ行のデータを読み出し、剰余値計算を行う（第ｉ行の剰余値計算６１４）。剰余値計算の後、コンフィギュレーションメモリ４００の第ｉ行には入力すべきデータを、ＣＲＣ用メモリ４０２の第ｉ行には算出した剰余値を入力（第ｉ行のデータ書き込み６１６）し、ＣＲＣにより、再度エラーの判定を行う（第ｉ行のエラー判定６１８）。エラーがない場合（Ｎに分岐）には、次の行の処理に移行する。エラーがある場合（Ｙに分岐）には、第ｉ行の剰余値計算６１４に戻って、エラーが出なくなるまでこれらの操作を繰り返す。
【０１０４】
なお、第ｉ行の剰余値計算６１４から第ｉ行のエラー判定６１８のループにも上限値を設けてもよい。この場合、上限値に達した場合には、上記で想定していない要因もありえるので、半導体装置に設けられた一部または全部の回路の動作を停止してもよい。
【０１０５】
また、ある行のエラーチェックの開始から次の行のエラーチェックの開始までの期間を定めておいてもよい。この場合、例えば、ある行のエラーチェックの開始から終了までに要した時間がこの期間未満であれば、次の行のエラーチェックはある行のエラーチェックの開始からこの期間だけ経過するまで待ってから開始し、一方、ある行のエラーチェックの開始から終了までに要した時間がこの期間以上であれば、次の行のエラーチェックをただちに開始するとよい。
【０１０６】
上記の処理をｉ＝１からｎまで繰り返してループを終了する（ループ終了６２０）。ループ終了後、処理が終了する（終了６２２）。
【０１０７】
以上説明したように、本発明の一態様である半導体装置の駆動方法においてＣＲＣを行うことができる。従来のＣＲＣにおいてはユーザーモード時にも剰余値計算を行う必要があったが、本発明の一態様である駆動方法においては、ユーザーモード時にエラー判定が一定回数以上出た場合に限り剰余値計算を行うことが大きな特徴の一である。従って、全体の処理を簡略化することができる。
【０１０８】
なお、上記の処理において剰余値計算を行う除数のアップセットは絶対に避けなければならない。そのため、除数は、半導体装置内または外部に別途設けられたＲＯＭに別途記憶させておくことが好ましい。コンフィギュレーション時には、当該ＲＯＭなどから読み出して剰余値計算を行えばよい。コンフィギュレーション時に読み出したデータは、ＣＲＣ用メモリ４０２と同様に、図１乃至図３を参照して説明したメモリ素子に記憶させておくことが好ましい。
【０１０９】
以上の操作は、半導体装置内あるいは半導体装置外のいずれかに設けられた読み出し可能なメモリ中に格納されたコンピュータプログラムを用いて、当該半導体装置により、あるいはその他の半導体装置、コンピュータ、プロセッサ等で実行される。なお、このコンピュータプログラムは、通信回線を通して、送信あるいは受信されることもある。また、要請に応じて、送信されることもある。さらには、何らかの中継地点（サーバ等）で中継されることもある。
【符号の説明】
【０１１０】
１００    メモリ素子
１０２    第１のトランジスタ
１０４    第２のトランジスタ
１０６    容量素子
１０８    第１の端子
１１０    第２の端子
１１２    第３の端子
１１４    第４の端子
１１６    第５の端子
１１８    データ保持部
１５０    メモリ素子
１５２    第１のトランジスタ
１５４    第２のトランジスタ
１５６    第３のトランジスタ
１５８    容量素子
１６０    第１の端子
１６２    第２の端子
１６４    第３の端子
１６６    第４の端子
１６８    第５の端子
１７０    第６の端子
１７２    データ保持部
２００    メモリ素子
２０２    第１のトランジスタ
２０４    第２のトランジスタ
２０６    第３のトランジスタ
２０８    第４のトランジスタ
２１０    容量素子
２１２    第１の端子
２１４    第２の端子
２１６    第３の端子
２１８    第４の端子
２２０    第５の端子
２２２    第６の端子
２２４    第７の端子
２２６    データ保持部
３００    メモリ素子
３０２    第１のトランジスタ
３０４    第２のトランジスタ
３０６    第３のトランジスタ
３０８    第４のトランジスタ
３１０    容量素子
３１２    第１の端子
３１４    第２の端子
３１６    第３の端子
３１８    第４の端子
３２０    第５の端子
３２２    第６の端子
３２４    第７の端子
３２６    データ保持部
３５０    メモリ素子
３５２    第１のトランジスタ
３５４    第２のトランジスタ
３５６    第３のトランジスタ
３５８    第４のトランジスタ
３６０    第５のトランジスタ
３６２    容量素子
３６４    第１の端子
３６６    第２の端子
３６８    第３の端子
３７０    第４の端子
３７２    第５の端子
３７４    第６の端子
３７６    第７の端子
３７８    第８の端子
３８０    データ保持部
４００    コンフィギュレーションメモリ
４０２    ＣＲＣ用メモリ
４０４    データ入出力回路
４０６    ＣＲＣ演算回路
４０８    ブートメモリ
４１０    入力レジスタ
４１２    除数レジスタ
４１４    演算回路
４１６    桁数カウンタ
５００    開始
５０２    ループ開始
５０４    第ｉ行の剰余値計算
５０６    第ｉ行のデータ書き込み
５０８    第ｉ行のエラー判定
５１０    ループ終了
５１２    処理の移行
６００    ユーザーモードの開始
６０２    ループ開始
６０４    「ｋ＝１」
６０６    第ｉ行のエラー判定
６０８    第ｉ行のデータ書き込み
６１０    「ｋ＋１」
６１２    「ｋ＝ｍの判定」
６１４    第ｉ行の剰余値計算
６１６    第ｉ行のデータ書き込み
６１８    第ｉ行のエラー判定
６２０    ループ終了
６２２    終了
【図１】
2013242956.tif 000003
【図２】
2013242956.tif 000004
【図３】
2013242956.tif 000005
【図４】
2013242956.tif 000006
【図５】
2013242956.tif 000007
【図６】
2013242956.tif 000008