(57)【要約】【課題】保持された論理が誤反転しても、正しい論理を速やかに出力できる、ラッチ回路及び半導体集積回路を提供することを目的とする。【解決手段】１又は０の論理を保持するノードと、前記ノードの論理の反転を検出する検出回路と、前記反転が検出されたとき、前記ノードの論理を出力する出力経路を、前記反転が検出される前の元の論理を出力する別経路に切り替える切り替え回路とを備える、ラッチ回路。例えば、前記切り替え回路は、前記反転が検出された後の論理から前記元の論理への復帰が検出されたとき、前記出力経路を、前記別経路から前記反転が検出される前の元の経路に切り替える。【選択図】図１
2015115825.tif 000002
【特許請求の範囲】
【請求項１】
１又は０の論理を保持するノードと、
前記ノードの論理の反転を検出する検出回路と、
前記反転が検出されたとき、前記ノードの論理を出力する出力経路を、前記反転が検出される前の元の論理を出力する別経路に切り替える切り替え回路とを備える、ラッチ回路。
【請求項２】
前記切り替え回路は、前記反転が検出された後の論理から前記元の論理への復帰が検出されたとき、前記出力経路を、前記別経路から前記反転が検出される前の元の経路に切り替える、請求項１に記載のラッチ回路。
【請求項３】
前記元の経路は、前記ノードと同論理を出力する経路であり、前記別経路は、前記ノードと逆論理を出力する経路である、請求項２に記載のラッチ回路。
【請求項４】
前記反転の検出は、前記ノードに論理が保持される保持期間に許可され、前記ノードに論理が書き込まれる書き込み期間に禁止される、請求項１から３のいずれか一項に記載のラッチ回路。
【請求項５】
請求項１から４のいずれか一項に記載のラッチ回路を複数備えるとともに、
前記ラッチ回路それぞれに保持された論理のいずれかを所定の指令信号に従って出力する出力回路を備える、半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ラッチ回路及び半導体集積回路に関する。
【背景技術】
【０００２】
中性子線又はＬＳＩ（Large  Scale  Integration）材料からのα線などのノイズによって、ラッチ回路に保持されたデータの論理が一時的に反転する場合がある。このような一過性のデータ反転現象（「ソフトエラー」とも呼ばれる）の対策として、保持されたデータの反転した論理を元の論理に書き戻す技術が知られている（例えば、特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許５５７０３１３号公報
【特許文献２】特開平５−２４３９１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の従来技術では、反転前の元の論理が書き戻されるまでの期間、間違ったデータがラッチ回路から出力され続けるという問題がある。
【０００５】
そこで、保持された論理が誤反転しても、正しい論理を速やかに出力できる、ラッチ回路及び半導体集積回路の提供を目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、
１又は０の論理を保持するノードと、
前記ノードの論理の反転を検出する検出回路と、
前記反転が検出されたとき、前記ノードの論理を出力する出力経路を、前記反転が検出される前の元の論理を出力する別経路に切り替える切り替え回路とを備える、ラッチ回路が提供される。
【発明の効果】
【０００７】
一態様によれば、保持された論理が誤反転しても、正しい論理を速やかに出力できる。
【図面の簡単な説明】
【０００８】
【図１】ラッチ回路の一例を示す構成図
【図２】ラッチ回路の動作の一例を示すフローチャート
【図３】ラッチ回路の一例を示す構成図
【図４】ノードＮＤ１の論理が誤反転した場合のラッチ回路の動作の一例を示す表
【図５】ラッチ回路の一例を示す構成図
【図６】ラッチ回路の一例を示す構成図
【図７】ラッチ回路の一例を示す構成図
【図８】ラッチ回路の一例を示す構成図
【図９】ラッチ回路の一例を示す構成図
【図１０】半導体集積回路の一例を示す構成図
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態を図面に従って説明する。なお、以下の説明において、トランジスタ又はトランスファーゲートが「開く」とは、トランジスタ又はトランスファーゲートが「オン」することを意味する。また、トランジスタ又はトランスファーゲートが「閉じる」とは、トランジスタ又はトランスファーゲートが「オフ」することを意味する。また、図面において、ゲートに○印が描かれているトランジスタは、Ｐチャネル型ＭＯＳトランジスタを表し、ゲートに○印が描かれていないトランジスタは、Ｎチャネル型ＭＯＳトランジスタを表す。ＭＯＳは、「Metal  Oxide  Semiconductor」の略である。
【００１０】
＜ラッチ回路１００の構成＞
図１は、ラッチ回路１００の構成の一例を示す図である。ラッチ回路１００は、入力されるクロックＣＫに同期してデータＤの論理（１又は０）をラッチして、ラッチした論理をノードＮＤ５０，ＮＤ５１に保持する回路である。ラッチ回路１００は、ノードＮＤ５０，ＮＤ５１と、エラー検出回路１０と、選択回路２０とを備えている。
【００１１】
ノードＮＤ５０，ＮＤ５１は、データＤの１又は０の論理を保持するデータ保持ノードである。ノードＮＤ５０は、インバータＩ３の入力部が接続され、インバータＩ３の出力部はノードＮＤ５１に接続され、ノードＮＤ５１は、インバータＩ２の入力部が接続され、インバータＩ２の出力部がノードＮＤ５０に接続される。
【００１２】
クロックＣＫのレベルが０（ローレベル）から１（ハイレベル）に変化すると、トランスファーゲートＴＲ５０が開く。トランスファーゲートＴＲ５０が開くことにより、データＤの論理が、インバータＩ２２を介して、ノードＮＤ５０，ＮＤ５１に書き込まれる。そして、クロックＣＫのレベルが１から０に変化すると、トランスファーゲートＴＲ５０が閉じる。トランスファーゲートＴＲ５０が閉じることにより、インバータＩ２２を介して書き込まれたデータＤの論理が、ノードＮＤ５０，ＮＤ５１に保持される。
【００１３】
トランスファーゲートＴＲ５０は、クロックＣＫがインバータＩ６を介して入力されるゲートを有するＰチャネル型ＭＯＳトランジスタと、クロックＣＫが入力されるゲートを有するＮチャネル型ＭＯＳトランジスタとを有するスイッチの一例である。
【００１４】
トランスファーゲートＴＲ５０が開いている場合、データＤの論理が１であれば、ノードＮＤ５０に書き込まれる論理は０であり、ノードＮＤ５１に書き込まれる論理は、ノードＮＤ５０に書き込まれた論理がインバータＩ３によって反転した１である。同様に、トランスファーゲートＴＲ５０が開いている場合、データＤの論理が０であれば、ノードＮＤ５０に書き込まれる論理は１であり、ノードＮＤ５１に書き込まれる論理は、ノードＮＤ５０に書き込まれた論理がインバータＩ３によって反転した０である。トランスファーゲートＴＲ５０がクロックＣＫによって閉じることにより、１又は０の論理データがノードＮＤ５０，ＮＤ５１に保持される。
【００１５】
エラー検出回路１０は、ノードＮＤ５０及びノードＮＤ５１に保持されているデータの論理状態を監視し、ノードＮＤ５０又はノードＮＤ５１の論理の反転を検出する回路の一例である。ノードＮＤ５０とノードＮＤ５１の論理は、正常状態では互いに異なる値である。つまり、正常状態とは、ノードＮＤ５０の論理が０であり且つノードＮＤ５１の論理が１である状態、又は、ノードＮＤ５０の論理が１であり且つノードＮＤ５１の論理が０である状態である。
【００１６】
しかしながら、ノードＮＤ５０とノードＮＤ５１のうちの一方の論理がα線などのノイズにより誤反転すると、ノードＮＤ５０とノードＮＤ５１の論理は、瞬間的に同値になる。つまり、エラー検出回路１０は、ノードＮＤ５０とノードＮＤ５１の論理が同値になることが検出された場合、ノードＮＤ５０とノードＮＤ５１のうちの一方の論理が誤反転したと判定できる。
【００１７】
選択回路２０は、誤反転がエラー検出回路１０により検出されたとき、ノードＮＤ５０，ＮＤ５１の論理を出力ノードＭから出力する出力経路を、誤反転がエラー検出回路１０により検出される前の元の論理を出力する別経路に切り替える切り替え回路の一例である。
【００１８】
以下の説明において、便宜上、ノードＮＤ５０，ＮＤ５１の論理を出力ノードＭから出力する出力経路を「出力経路Ｙ」とし、ノードＮＤ５１からインバータＩ１４を介して出力ノードＭに至る出力経路を「経路Ｙ０」とし、ノードＮＤ５１からインバータＩ１４を介さずに出力ノードＭに至る出力経路を「経路Ｙ１」とする。
【００１９】
例えば、選択回路２０は、ノードＮＤ５０に０が保持され且つノードＮＤ５１に１が保持されている正常状態で使用する出力経路Ｙに経路Ｙ１を選択し、出力ノードＭから出力される論理の期待値が、ノードＮＤ５１の論理と同じ１であるとする。
【００２０】
選択回路２０は、ノードＮＤ５１の誤反転によりノードＮＤ５０とノードＮＤ５１の論理が同値（すなわち、いずれも０）であることが検出されたとき、出力経路Ｙを、経路Ｙ１から経路Ｙ１とは別の経路Ｙ０に切り替える。経路Ｙ０は、ノードＮＤ５１の誤反転した論理０をインバータＩ１４によって反転させることにより、ノードＮＤ５１の誤反転が検出される前の元の論理１を出力ノードＭから出力できる。したがって、ノードＮＤ５１の論理が誤反転しても、出力経路Ｙを経路Ｙ１から経路Ｙ０に切り替えることにより、出力ノードＭの期待値に一致する正しい論理１を出力ノードＭから速やかに出力できる。
【００２１】
選択回路２０は、ノードＮＤ５１において誤反転が検出された後の論理０から元の論理１への復帰がエラー検出回路１０により検出されたとき、出力経路Ｙを、経路Ｙ０から、誤反転が検出される前の元の経路Ｙ１に切り替える。元の経路Ｙ１に切り替えることにより、ノードＮＤ５１の論理が誤反転時の値０から正常状態で保持されるべき値１に復帰しているので、出力ノードＭの期待値に一致する正しい論理１を出力ノードＭから速やかに出力できる。
【００２２】
同様に、選択回路２０は、ノードＮＤ５０の誤反転によりノードＮＤ５０とノードＮＤ５１の論理が同値（すなわち、いずれも１）であることが検出されたとき、出力経路Ｙを、経路Ｙ１から経路Ｙ１とは別の経路Ｙ０に切り替える。ノードＮＤ５０の論理が誤反転により０から１に変化することに伴い、インバータＩ３によって、ノードＮＤ５１の論理も１から０に誤反転する。経路Ｙ０は、ノードＮＤ５１の誤反転した論理０をインバータＩ１４によって反転させることにより、ノードＮＤ５１の誤反転が検出される前の元の論理１を出力ノードＭから出力できる。したがって、ノードＮＤ５０の論理が誤反転しても、出力経路Ｙを経路Ｙ１から経路Ｙ０に切り替えることにより、出力ノードＭの期待値に一致する正しい論理１を出力ノードＭから速やかに出力できる。
【００２３】
選択回路２０は、ノードＮＤ５０において誤反転が検出された後の論理１から元の論理０への復帰がエラー検出回路１０により検出されたとき、出力経路Ｙを、経路Ｙ０から、誤反転が検出される前の元の経路Ｙ１に切り替える。ノードＮＤ５０の論理が誤反転時の１から元の論理０に戻ることに伴い、インバータＩ３によって、ノードＮＤ５１の論理も０から１に戻る。したがって、元の経路Ｙ１に切り替えることにより、ノードＮＤ５１の論理が誤反転時の値０から正常状態で保持されるべき値１に復帰しているので、出力ノードＭの期待値に一致する正しい論理１を出力ノードＭから速やかに出力できる。
【００２４】
また、例えば、選択回路２０は、ノードＮＤ５０に１が保持され且つノードＮＤ５１に０が保持されている正常状態で使用する出力経路Ｙに経路Ｙ１を選択し、出力ノードＭから出力される論理の期待値が、ノードＮＤ５１の論理と同じ０であるとする。
【００２５】
選択回路２０は、ノードＮＤ５１の誤反転によりノードＮＤ５０とノードＮＤ５１の論理が同値（すなわち、いずれも１）であることが検出されたとき、出力経路Ｙを、経路Ｙ１から経路Ｙ１とは別の経路Ｙ０に切り替える。経路Ｙ０は、ノードＮＤ５１の誤反転した論理１をインバータＩ１４によって反転させることにより、ノードＮＤ５１の誤反転が検出される前の元の論理０を出力ノードＭから出力できる。したがって、ノードＮＤ５１の論理が誤反転しても、出力経路Ｙを経路Ｙ１から経路Ｙ０に切り替えることにより、出力ノードＭの期待値に一致する正しい論理０を出力ノードＭから速やかに出力できる。
【００２６】
選択回路２０は、ノードＮＤ５１において誤反転が検出された後の論理１から元の論理０への復帰がエラー検出回路１０により検出されたとき、出力経路Ｙを、経路Ｙ０から、誤反転が検出される前の元の経路Ｙ１に切り替える。元の経路Ｙ１に切り替えることにより、ノードＮＤ５１の論理が誤反転時の値１から正常状態で保持されるべき値０に復帰しているので、出力ノードＭの期待値に一致する正しい論理０を出力ノードＭから速やかに出力できる。
【００２７】
同様に、選択回路２０は、ノードＮＤ５０の誤反転によりノードＮＤ５０とノードＮＤ５１の論理が同値（すなわち、いずれも０）であることが検出されたとき、出力経路Ｙを、経路Ｙ１から経路Ｙ１とは別の経路Ｙ０に切り替える。ノードＮＤ５０の論理が誤反転により１から０に変化することに伴い、インバータＩ３によって、ノードＮＤ５１の論理も０から１に誤反転する。経路Ｙ０は、ノードＮＤ５１の誤反転した論理１をインバータＩ１４によって反転させることにより、ノードＮＤ５１の誤反転が検出される前の元の論理０を出力ノードＭから出力できる。したがって、ノードＮＤ５０の論理が誤反転しても、出力経路Ｙを経路Ｙ１から経路Ｙ０に切り替えることにより、出力ノードＭの期待値に一致する正しい論理０を出力ノードＭから速やかに出力できる。
【００２８】
選択回路２０は、ノードＮＤ５０において誤反転が検出された後の論理０から元の論理１への復帰がエラー検出回路１０により検出されたとき、出力経路Ｙを、経路Ｙ０から、誤反転が検出される前の元の経路Ｙ１に切り替える。ノードＮＤ５０の論理が誤反転時の０から元の論理１に戻ることに伴い、インバータＩ３によって、ノードＮＤ５１の論理も１から０に戻る。したがって、元の経路Ｙ１に切り替えることにより、ノードＮＤ５１の論理が誤反転時の値１から正常状態で保持されるべき値０に復帰しているので、出力ノードＭの期待値に一致する正しい論理０を出力ノードＭから速やかに出力できる。
【００２９】
なお、選択回路２０は、正常状態で使用する出力経路Ｙに経路Ｙ０を選択し、ノードＮＤ５０とノードＮＤ５１の論理が同値であることが検出されたとき、出力経路Ｙを経路Ｙ０から経路Ｙ０とは別の経路Ｙ１に切り替えてもよい。このように切り替えることによって、ノードＮＤ５０又はノードＮＤ５１の論理が誤反転しても、出力ノードＭの期待値（例えば、ノードＮＤ５１の正常状態での論理と逆論理）に一致する正しい論理を出力ノードＭから速やかに出力できる。
【００３０】
ノードＮＤ５０とノードＮＤ５１とが瞬間的に同値になる場合は、ノードＮＤ５０とノードＮＤ５１のいずれか一方の論理が誤反転するソフトエラーが発生するおそれのあるデータ保持期間に限られず、データ書き込み期間にも発生する。データ書き込み期間とは、図１の場合、データＤの論理がノードＮＤ５０及びノードＮＤ５１に書き込まれるラッチ期間であり、データ保持期間とは、書き込まれた論理がノードＮＤ５０，ＮＤ５１に保持される期間である。
【００３１】
そこで、エラー検出回路１０による反転（誤反転又は誤反転からの復帰反転）の検出は、データ保持期間に許可され、データ書き込み期間に禁止される。これによって、エラー検出回路１０がデータ書き込み期間における論理反転をノイズによる誤反転と誤検出することを防止でき、選択回路２０がデータ書き込み期間に出力経路Ｙを現在の経路から別の経路に誤って切り替えることを防止できる。
【００３２】
エラー検出回路１０による反転（誤反転又は誤反転からの復帰反転）の検出は、例えば、データ保持期間とデータ書き込み期間とを定めるクロックＣＫに従って許否されるとよい。これにより、ノードＮＤ５０，ＮＤ５１に論理を書き込む又は保持するためにラッチ回路１００に入力されるクロックＣＫと、エラー検出回路１０の反転検出動作の許否を決めるための信号とを兼用できる。
【００３３】
したがって、例えば、エラー検出回路１０にクロックＣＫを入力することによって、エラー検出回路１０はデータ保持期間とデータ書き込み期間とを区別できる。図示の場合、エラー検出回路１０による反転の検出は、クロックＣＫのレベルが０の場合であるデータ保持期間に許可され、クロックＣＫのレベルが１の場合であるデータ書き込み期間に禁止される。
【００３４】
なお、複数のノードに保持された論理がソフトエラーにより同時に反転するエラー（マルチビットエラー）は、同方向のデータ遷移に対してのみ発生するメカニズムを有するため、ノードＮＤ５０とノードＮＤ５１が同時に反転することは考慮していない。
【００３５】
また、マルチビットエラーの対策のため、データ保持ノードと同じ論理を保持する複製ノードを設けてそれらの多数決を出力するラッチ回路も考えられる。しかしながら、本実施形態のラッチ回路の場合、そのような複製ノード（ノードＮＤ５０，ＮＤ５１の論理を複製した論理を保持するノード）が存在しない。そのため、マルチビットエラーでもシングルビットエラーでも、データの論理の自己修復が可能となる。また、本実施形態のラッチ回路の場合、ソフトエラーが検出されると、正しく出力されるべき論理が選択されて出力されるだけであるため、多くの遅延時間を使って正しい論理をデータ保持ノードに書き戻す必要がない。
【００３６】
＜ラッチ回路１００の動作＞
図２は、ラッチ回路１００の動作の一例を示すフローチャートである。
【００３７】
ステップＳ１０において、エラー検出回路１０は、入力されるクロックＣＫのレベルに基づいて、クロックＣＫは閉じられているか否か（すなわち、現在のタイミングがデータ保持期間内であるのかデータ書き込み期間内であるのか）を判定する。エラー検出回路１０は、クロックＣＫが開いている（現在のタイミングがデータ書き込み期間内である）ことが検出された場合、ステップＳ２０の処理を実行する。
【００３８】
ステップＳ２０において、エラー検出回路１０は、出力経路Ｙを通常経路（データ保持ノードが正常状態で使用されるときの経路）に設定することを選択回路２０に指令する。一方、エラー検出回路１０は、クロックＣＫが閉じている（現在のタイミングがデータ保持期間内である）ことが検出された場合、ステップＳ３０の処理を実行する。
【００３９】
ステップＳ３０において、エラー検出回路１０は、ノードＮＤ５０とノードＮＤ５１の両方の論理が同値であるか否かを判定する。エラー検出回路１０は、ノードＮＤ５０とノードＮＤ５１の論理が互いに異なる値であることが検出された場合、上記のステップＳ２０の処理を実行する。一方、エラー検出回路１０は、ノードＮＤ５０とノードＮＤ５１の論理が同値であることが検出された場合、ステップＳ４０の処理を実行する。
【００４０】
ステップＳ４０において、エラー検出回路１０は、出力経路Ｙを通常経路とは異なる別経路（データ保持ノードが誤反転状態で使用されるときの経路）に設定することを選択回路２０に指令する。
【００４１】
ステップＳ５０において、選択回路２０は、出力経路Ｙを、ステップＳ２０又はステップＳ４０で指令された選択経路に切り替えて、データ保持ノードに保持された論理を出力ノードＭから出力する。
【００４２】
＜ラッチ回路１０１について＞
図３は、図１のラッチ回路１００の構成をより具体的に示したラッチ回路１０１の構成の一例を示す図である。ラッチ回路１０１は、ノードＮＤ０，ＮＤ１（データ保持ノード）と、エラー検出回路１１，１２と、ＮＡＮＤゲート（否定論理積回路）２１を備えた選択回路２２とを有している。
【００４３】
エラー検出回路１１は、ノードＮＤ０とノードＮＤ１が共に０であることを検出する同値検出部（トランジスタＰ１，Ｐ３）と、同値検出部（トランジスタＰ１，Ｐ３）の検出動作を許可又は禁止する検出動作制御部（トランジスタＰ２）とを有している。同様に、エラー検出回路１２は、ノードＮＤ０とノードＮＤ１が共に１であることを検出する同値検出部（トランジスタＮ１，Ｎ３）と、同値検出部（トランジスタＮ１，Ｎ３）の検出動作を許可又は禁止する検出動作制御部（トランジスタＮ２）とを有している。
【００４４】
ＮＡＮＤゲート２１は、エラー検出回路１１とエラー検出回路１２のいずれか一方によりノードＮＤ０とノードＮＤ１の論理が同値であることが検出された場合、ノードＮＤ０，ＮＤ１と出力ノードＭとを結ぶ出力経路の切り替えを選択回路２２に対して指令する。
【００４５】
まず、通常のラッチとしての動作を、データＤの論理１を書き込む場合を例に挙げて説明する。
【００４６】
データＤの論理が１のときにクロックＣＫのレベルが０から１に変化すると、トランスファーゲートＴＲ０が開くことにより、ノードＮＤ０に０が書き込まれ、インバータＩ３を介してノードＮＤ１に１が書き込まれる。クロックＣＫのレベルが１であれば、クロックＣＫがインバータＩ６を介して入力されるゲートを有するトランジスタＰ０と、クロックＣＫが入力されるゲートを有するトランジスタＮ０とが開く。このため、ノードＮＤ９の論理は１（電位ＶＤＤ）となり、ノードＮＤ４の論理は０（電位ＶＳＳ）となり、ノードＮＤ５の論理はインバータＩ１８によって１となる。これにより、トランジスタＮ７とトランジスタＮ８は共に開くため、ノードＮＤ６の論理が０（電位ＶＳＳ）になる。このため、トランスファーゲートＴＲ１が開き、トランスファーゲートＴＲ２はインバータＩ１５により閉じる。
【００４７】
トランスファーゲートＴＲ１は、インバータＩ１４によるノードＮＤ１の逆の論理値を通過させ、その逆の論理値は、トランスファーゲートＴＲ１の通過後、インバータＩ１７により反転される。これにより、ノードＮＤ１に書き込まれた論理と同論理の値１が、出力ノードＭから出力される。
【００４８】
そして、クロックＣＫのレベルが１から０に変化すると、トランスファーゲートＴＲ０が閉じることにより、ノードＮＤ０に０が保持され、ノードＮＤ１に１が保持される。クロックＣＫのレベルが０に変化すると、トランジスタＰ０とトランジスタＮ０が共に閉じるので、ノードＮＤ９の論理は１のまま保持され、ノードＮＤ５の論理も１のまま保持される。これにより、トランジスタＮ７とトランジスタＮ８は共に開いたままのため、トランスファーゲートＴＲ１も開いたままであり、トランスファーゲートＴＲ２も閉じたままである。これにより、ノードＮＤ１に書き込まれた論理と同論理の値１が、出力ノードＭから出力され続ける。
【００４９】
次に、ソフトエラーが発生することにより、ノードＮＤ１の論理データが反転した場合を例に挙げて、ラッチ回路１０１の動作の一例を説明する。
【００５０】
まず、前述と同様に、データＤの論理が１であり、ノードＮＤ０に０が書き込まれて保持され、ノードＮＤ１に１が書き込まれて保持されている状態を考える。この状態での出力ノードＭの期待値は１であるが、ソフトエラーによってノードＮＤ１の論理が反転すると、出力ノードＭの論理が０となる。
【００５１】
クロックＣＫのレベルが０になりトランスファーゲートＴＲ０が閉じている期間において、ノードＮＤ１の論理値がソフトエラーにより１から０に反転したとする。これにより、ノードＮＤ１とノードＮＤ０の論理が共に０となるため、トランジスタＰ１とトランジスタＰ３が同時に開く。また、クロックＣＫのレベルが０であるとき、トランジスタＰ２も開くため、ノードＮＤ２，ＮＤ３，ＮＤ４の論理が１（ＶＤＤ電位）となり、ノードＮＤ５の論理はインバータＩ１８によって０となる。これにより、トランジスタＰ８が開くため、ノードＮＤ６が１（ＶＤＤ電位）になる。このため、トランスファーゲートＴＲ１は閉じ、トランスファーゲートＴＲ２はインバータＩ１５により開く。
【００５２】
トランスファーゲートＴＲ２が開くことにより、ノードＮＤ１に書き込まれた論理がインバータＩ１７により反転され、ノードＮＤ１に書き込まれた論理と逆論理の値が出力ノードＭから出力される。ここで、ノードＮＤ１の論理はソフトエラーによって１から０に誤反転しているため、論理１が出力ノードＭから出力される。このように、出力ノードＭから出力される論理は、ソフトエラーが発生したにも関わらず、出力ノードＭの期待値１と一致する。
【００５３】
次に、ソフトエラーが発生することにより、ノードＮＤ０の論理データが反転した場合を例に挙げて、ラッチ回路１０１の動作の一例を説明する。
【００５４】
まず、前述と同様に、データＤの論理が１であり、ノードＮＤ０に０が書き込まれて保持され、ノードＮＤ１に１が書き込まれて保持されている状態を考える。この状態での出力ノードＭの期待値は１であるが、ソフトエラーによってノードＮＤ０の論理が反転すると、出力ノードＭの論理が０となる。
【００５５】
クロックＣＫのレベルが０になりトランスファーゲートＴＲ０が閉じている期間において、ノードＮＤ０の論理値がソフトエラーにより０から１に反転したとする。これにより、ノードＮＤ１とノードＮＤ０の論理が共に１となるため、トランジスタＮ１とトランジスタＮ３が同時に開く。また、クロックＣＫのレベルが０であるとき、トランジスタＮ２もインバータＩ６により開くため、ノードＮＤ７，ＮＤ８，ＮＤ９の論理が０（ＶＳＳ電位）となる。これにより、トランジスタＰ７が開くため、ノードＮＤ６が１（ＶＤＤ電位）になる。このため、トランスファーゲートＴＲ１は閉じ、トランスファーゲートＴＲ２はインバータＩ１５により開く。
【００５６】
トランスファーゲートＴＲ２が開くことにより、ノードＮＤ１に書き込まれた論理がインバータＩ１７により反転され、ノードＮＤ１に書き込まれた論理と逆論理の値が出力ノードＭから出力される。ここで、ノードＮＤ０の論理がソフトエラーによって０から１に誤反転することに伴って、ノードＮＤ１の論理が１から０に誤反転しているため、論理１が出力ノードＭから出力される。このように、出力ノードＭから出力される論理は、ソフトエラーが発生したにも関わらず、出力ノードＭの期待値１と一致する。
【００５７】
ノードＮＤ１の論理値がソフトエラーにより０から１に反転する場合、ノードＮＤ０の論理値がソフトエラーにより１から０に反転する場合も、上記同様に考えることができるため、その説明については省略する。なお、図４は、ノードＮＤ１が反転した場合について、ソフトエラー未発生時と発生時の回路動作の内容をまとめた表を示す。
【００５８】
＜ラッチ回路１０２について＞
ラッチ回路は、ＬＳＩ設計において数多く使用される回路である。このため、ラッチ回路は、複数のビットデータをラッチして保持可能な多ビットラッチ回路で使用されることが便利な場合が多い。一実施形態に係るラッチ回路は、多ビットラッチ回路に使用されることによって、論理が誤反転しても正しい論理を速やかに出力できるという効果を発揮できる。
【００５９】
図５は、多ビットラッチ回路として使用されるラッチ回路１０２の構成の一例を示す図である。ラッチ回路１０２は、図３の構成と同一のラッチ回路１０１ａ，１０１ｂ，１０１ｃ，１０１ｄを並列に複数有し、クロックＣＫをラッチ回路間で共通化した回路である。ラッチ回路１０１ａ，１０１ｂ，１０１ｃ，１０１ｄは、それぞれ、互いに独立に入力されるデータＤ１，Ｄ２，Ｄ３，Ｄ４を共通のクロックＣＫに従ってラッチして保持し、出力ノードＭ１，Ｍ２，Ｍ３，Ｍ４から保持データの論理を互いに独立に出力する。
【００６０】
トランジスタの微細化が進み、マルチビットエラーの発生を考慮しなければならない状況下においては、従来のラッチ回路を多ビット化することは難しい。なぜなら、多ビットラッチでは各ビット間の物理的距離が必然的に近くなるため、各ビットがマルチビットエラー発生の対象となり、同時にデータ反転してしまう可能性が高いからである。
【００６１】
しかし、一実施形態では、各ビットが他ビットに依存することなく、出力ノードから出力される論理を正しい値に修正することができるため、マルチビットエラーが発生する状況下においても、多ビットラッチ回路を容易に実現することができる。
【００６２】
＜ラッチ回路１０３について＞
一実施形態では、データ保持ノードの値が１から０へ反転する場合と０から１へ反転する場合のどちらでも、出力ノードから出力される論理を修復することが可能である。しかし、論理の反転方向に顕著な差がある場合(例えば、０から１に反転する確率が、１から０に反転する確率に比べて著しく低い場合)は、１から０へのデータ反転のみを考慮した構成でも、マルチビットエラーを含むソフトエラー対策に有効である。図６は、１から０へのデータ反転のみを考慮した構成を有するラッチ回路１０３の一例を示す。この場合、使用トランジスタの数を削減できる。
【００６３】
ソフトエラーが発生することにより、ノードＮＤ１の論理データが反転した場合を例に挙げて、ラッチ回路１０３の動作の一例を説明する。
【００６４】
データＤの論理が１であり、ノードＮＤ０に０が書き込まれて保持され、ノードＮＤ１に１が書き込まれて保持されている状態を考える。この状態での出力ノードＭの期待値は１であるが、ソフトエラーによってノードＮＤ１の論理が反転すると、出力ノードＭの論理が０となる。
【００６５】
クロックＣＫのレベルが０になりトランスファーゲートＴＲ０が閉じている期間において、ノードＮＤ１の論理値がソフトエラーにより１から０に反転したとする。これにより、ノードＮＤ１とノードＮＤ０の論理が共に０となるため、トランジスタＰ１とトランジスタＰ３が同時に開く。また、クロックＣＫのレベルが０であるとき、トランジスタＰ２も開くため、ノードＮＤ２，ＮＤ３，ＮＤ４の論理が１（ＶＤＤ電位）となる。これにより、トランスファーゲートＴＲ１１は閉じ、トランスファーゲートＴＲ１２はインバータＩ１８により開く。
【００６６】
トランスファーゲートＴＲ１２が開くことにより、ノードＮＤ１に書き込まれた論理がインバータＩ１７により反転され、ノードＮＤ１に書き込まれた論理と逆論理の値が出力ノードＭから出力される。ここで、ノードＮＤ１の論理はソフトエラーによって１から０に誤反転しているため、論理１が出力ノードＭから出力される。このように、出力ノードＭから出力される論理は、ソフトエラーが発生したにも関わらず、出力ノードＭの期待値１と一致する。
【００６７】
ノードＮＤ１の論理値がソフトエラーにより０から１に反転する場合、ノードＮＤ０の論理値がソフトエラーにより１から０又は０から１に反転する場合も、上記同様に考えることができるため、その説明については省略する。
【００６８】
＜ラッチ回路１０４について＞
図７は、多ビットラッチ回路として使用されるラッチ回路１０４の構成の一例を示す図である。ラッチ回路１０４は、図６の構成と同一のラッチ回路１０３ａ，１０３ｂ，１０３ｃ，１０３ｄを並列に複数有し、クロックＣＫをラッチ回路間で共通化した回路である。図７の構成及び効果については、上述の多ビットラッチ回路と同様である。
【００６９】
＜ラッチ回路１０５について＞
図８は、０から１へのデータ反転のみを考慮した構成を有するラッチ回路１０５の一例を示す。この場合も、使用トランジスタの数を削減できる。
【００７０】
ソフトエラーが発生することにより、ノードＮＤ１の論理データが反転した場合を例に挙げて、ラッチ回路１０５の動作の一例を説明する。
【００７１】
データＤの論理が０であり、ノードＮＤ０に１が書き込まれて保持され、ノードＮＤ１に０が書き込まれて保持されている状態を考える。この状態での出力ノードＭの期待値は０であるが、ソフトエラーによってノードＮＤ１の論理が反転すると、出力ノードＭの論理が１となる。
【００７２】
クロックＣＫのレベルが０になりトランスファーゲートＴＲ０が閉じている期間において、ノードＮＤ１の論理値がソフトエラーにより０から１に反転したとする。これにより、ノードＮＤ１とノードＮＤ０の論理が共に１となるため、トランジスタＮ１とトランジスタＮ３が同時に開く。また、クロックＣＫのレベルが０であるとき、トランジスタＮ２も開くため、ノードＮＤ７，ＮＤ８，ＮＤ９の論理が０（ＶＳＳ電位）となる。これにより、トランスファーゲートＴＲ２１はインバータＩ１９により閉じ、トランスファーゲートＴＲ２２は開く。
【００７３】
トランスファーゲートＴＲ２２が開くことにより、ノードＮＤ１に書き込まれた論理がインバータＩ１７により反転され、ノードＮＤ１に書き込まれた論理と逆論理の値が出力ノードＭから出力される。ここで、ノードＮＤ１の論理はソフトエラーによって０から１に誤反転しているため、論理０が出力ノードＭから出力される。このように、出力ノードＭから出力される論理は、ソフトエラーが発生したにも関わらず、出力ノードＭの期待値０と一致する。
【００７４】
ノードＮＤ１の論理値がソフトエラーにより１から０に反転する場合、ノードＮＤ０の論理値がソフトエラーにより１から０又は０から１に反転する場合も、上記同様に考えることができるため、その説明については省略する。
【００７５】
＜ラッチ回路１０６について＞
図９は、多ビットラッチ回路として使用されるラッチ回路１０６の構成の一例を示す図である。ラッチ回路１０６は、図８の構成と同一のラッチ回路１０５ａ，１０５ｂ，１０５ｃ，１０５ｄを並列に複数有し、クロックＣＫをラッチ回路間で共通化した回路である。図９の構成及び効果については、上述の多ビットラッチ回路と同様である。
【００７６】
＜レジスタファイル２００について＞
図１０は、複数のラッチ回路を備えるレジスタファイル２００の構成の一例を示す図である。レジスタファイル２００は、４つのラッチ回路１０１ａ，１０１ｂ，１０１ｃ，１０１ｄと、出力回路３０とを備えた半導体集積回路の一例である。なお、説明の簡単化のため、極小規模なレジスタファイルを例に挙げている。
【００７７】
ラッチ回路１０１ａ，１０１ｂ，１０１ｃ，１０１ｄは、それぞれ、各実施形態のラッチ回路のいずれであってもよい（例えば、ラッチ回路１０１，１０３，１０５）。出力回路３０は、ラッチ回路１０１ａ，１０１ｂ，１０１ｃ，１０１ｄそれぞれのデータ保持ノードに保持された論理のいずれかを、所定の指令信号に従って出力ノードＸから出力する。図示の場合、所定の指令信号は、２ビットのアドレスデータＡＤＲＳ００−１１である。
【００７８】
複数のラッチ回路を用いて作成されるレジスタファイルなどの半導体記憶装置は、一実施形態のラッチ回路の適用によって、より高い信頼性を有する。図１０は、４つのラッチ回路を並列に有する、１ビット４エントリのレジスタファイルの構成例を示す。各エントリのラッチ回路に１ビットのデータが格納され、その格納データを、２ビットのアドレスデータＡＤＲＳ００−１１の値によって、出力ノードＸから取り出すことができる。
【００７９】
上述したように、半導体の微細化によりマルチビットエラーの発生確率が高まっている。このため、レジスタファイルを構成するために使用される複数のラッチが、マルチビットエラーが発生するおそれのある対象となる。しかしながら、一実施形態のラッチ回路ならば、他ビットに依存することなく、出力回路３０に供給される出力データの修復が各ラッチ回路で可能である。そのため、マルチビットエラーが発生する状況下であっても、レジスタファイルの信頼性を上げることが可能である。
【００８０】
以上、ラッチ回路及び半導体集積回路を実施形態により説明したが、本発明は上記実施形態に限定されるものではない。他の実施形態の一部又は全部との組み合わせや置換などの種々の変形及び改良が、本発明の範囲内で可能である。
【００８１】
例えば、ラッチ回路又はラッチ回路に含まれる回路（エラー検出回路や選択回路など）の構成は単なる一例であり、他の構成によって当該回路が実現されてよい。また、ラッチ回路に使用されるトランジスタは、ＭＯＳトランジスタに限らず、バイポーラトランジスタなどの他のスイッチング素子が使用されてよい。
【００８２】
また、一実施形態のラッチ回路は、レジスタファイルなどの半導体記憶装置に使用される場合に限られず、他の半導体集積回路に使用されてもよい。
【００８３】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
１又は０の論理を保持するノードと、
前記ノードの論理の反転を検出する検出回路と、
前記反転が検出されたとき、前記ノードの論理を出力する出力経路を、前記反転が検出される前の元の論理を出力する別経路に切り替える切り替え回路とを備える、ラッチ回路。
（付記２）
前記切り替え回路は、前記反転が検出された後の論理から前記元の論理への復帰が検出されたとき、前記出力経路を、前記別経路から前記反転が検出される前の元の経路に切り替える、付記１に記載のラッチ回路。
（付記３）
前記元の経路は、前記ノードと同論理を出力する経路であり、前記別経路は、前記ノードと逆論理を出力する経路である、付記２に記載のラッチ回路。
（付記４）
前記反転の検出は、前記ノードに論理が保持される保持期間に許可され、前記ノードに論理が書き込まれる書き込み期間に禁止される、付記１から３のいずれか一項に記載のラッチ回路。
（付記５）
前記反転の検出は、前記保持期間と前記書き込み期間とを定めるクロックに従って許否される、付記４に記載のラッチ回路。
（付記６）
付記１から５のいずれか一項に記載のラッチ回路を複数備えるとともに、
前記ラッチ回路それぞれに保持された論理のいずれかを所定の指令信号に従って出力する出力回路を備える、半導体集積回路。
【符号の説明】
【００８４】
１０  エラー検出回路
２０，２２  選択回路
２１  ＮＡＮＤゲート
３０  出力回路
１００，１０１，１０２，１０３，１０４，１０５，１０６  ラッチ回路
２００  レジスタファイル
【図１】
2015115825.tif 000003
【図２】
2015115825.tif 000004
【図３】
2015115825.tif 000005
【図４】
2015115825.tif 000006
【図５】
2015115825.tif 000007
【図６】
2015115825.tif 000008
【図７】
2015115825.tif 000009
【図８】
2015115825.tif 000010
【図９】
2015115825.tif 000011
【図１０】
2015115825.tif 000012