(57)【要約】【課題】  物理サイズをあまり増加させることなく３重冗長ラッチのソフトエラー耐性を向上させること。【解決手段】  好ましい実施形態において、本発明はテスト機能が組み込まれた高信頼性３重冗長ラッチに関する回路および方法を提供する。３つの設定可能メモリ素子は、各設定可能メモリ素子に同じ論理値が設定される。設定可能メモリ素子が設定された後、第１、第２および第３の設定可能メモリ素子からの入力を有する３つの投票構造が、各設定可能メモリ素子に保持されている論理値を判定する。第２の設定可能メモリ素子にデータを読み込ませたり、第２の設定可能メモリ素子からデータを読み出したりすることもできる。データはバッファを通して第３の設定可能メモリ素子に伝送される。第３の設定可能メモリ素子を使用して、３重冗長ラッチからデータを読み出すことができる。ラッチ内の伝送遅延は、３重冗長ラッチの伝送遅延のみである。【選択図】図２
2006073180.tif 000002
【特許請求の範囲】
【請求項１】
ソフトエラーを低減する３重冗長ラッチであって、
ａ）第１の設定可能メモリ素子（ＳＭＥ１）と、
ｂ）第２の設定可能メモリ素子（ＳＭＥ２）と、
ｃ）第３の設定可能メモリ素子（ＳＭＥ３）と、
ｄ）第１の投票構造（ＶＳ１）と、
ｅ）第２の投票構造（ＶＳ２）と、
ｆ）第３の投票構造（ＶＳ３）と、
ｇ）第１のバッファ（ＢＵＦ１）とを備え、
ｈ）前記設定可能メモリ素子のそれぞれに同じ論理値が設定され、
ｉ）前記第１の投票構造（ＶＳ１）への入力（ＮＯＵＴ２およびＮＯＵＴ３）が、前記第２の設定可能メモリ素子（ＳＭＥ２）および前記第３の設定可能メモリ素子（ＳＭＥ３）によって供給され、
ｊ）前記第２の投票構造（ＶＳ２）への入力（ＤＯＵＴおよびＳＯＵＴ）が、前記第１の設定可能メモリ素子（ＳＭＥ１）および前記第３の設定可能メモリ素子（ＳＭＥ３）によって供給され、
ｋ）前記第３の投票構造（ＶＳ３）への入力（ＤＯＵＴおよびＯＵＴ２）が、前記第２の設定可能メモリ素子（ＳＭＥ２）および前記第１の設定可能メモリ素子（ＳＭＥ１）によって供給され、
ｌ）前記第１の設定可能メモリ素子（ＳＭＥ１）、前記第２の設定可能メモリ素子（ＳＭＥ２）および前記第３の設定可能メモリ素子（ＳＭＥ３）が設定された後、前記第１の設定可能メモリ素子（ＳＭＥ１）に保持される論理値が、前記第１の投票構造（ＶＳ１）の出力（ＶＳ１ＯＵＴ）によって決定され、
ｍ）前記第１の設定可能メモリ素子（ＳＭＥ１）、前記第２の設定可能メモリ素子（ＳＭＥ２）および前記第３の設定可能メモリ素子（ＳＭＥ３）が設定された後、前記第２の設定可能メモリ素子（ＳＭＥ２）に保持される論理値が、前記第２の投票構造（ＶＳ２）の出力（ＶＳ２ＯＵＴ）によって決定され、
ｎ）前記第１の設定可能メモリ素子（ＳＭＥ１）、前記第２の設定可能メモリ素子（ＳＭＥ２）および前記第３の設定可能メモリ素子（ＳＭＥ３）が設定された後、前記第３の設定可能メモリ素子（ＳＭＥ３）に保持される論理値が、前記第３の投票構造（ＶＳ３）の出力（ＶＳ３ＯＵＴ）によって決定され、
ｏ）前記第２の設定可能メモリ素子（ＳＭＥ２）にスキャンデータを読み込ませることができ、
ｐ）前記第２の設定可能メモリ素子（ＳＭＥ２）から前記バッファ（ＢＵＦ１）にデータを読み出すことができ、
ｑ）前記バッファ（ＢＵＦ１）から前記第３の設定可能メモリ素子（ＳＭＥ３）にデータを読み込ませることができ、
ｒ）前記第３の設定可能メモリ素子（ＳＭＥ３）からデータを読み出すことができ、
ｓ）前記第１の設定可能メモリ素子（ＳＭＥ１）内の伝送遅延が該３重冗長ラッチの唯一の伝送遅延である、３重冗長ラッチ。
【請求項２】
前記スキャンデータは、システムクロックを停止させた状態で読み込ませることができる、請求項１に記載の３重冗長ラッチ。
【請求項３】
前記スキャンデータは、システムクロックを動作させた状態で読み込ませることができる、請求項１に記載の３重冗長ラッチ。
【請求項４】
前記第１の設定可能メモリ素子（ＳＭＥ１）は、
ａ）第１の転送ゲート（ＴＧ１）と、
ｂ）第２の転送ゲート（ＴＧ２）と、
ｃ）ラッチ（Ｌ１）と
を含む、請求項１に記載の３重冗長ラッチ。
【請求項５】
前記第２の設定可能メモリ素子（ＳＭＥ２）は、
ａ）第１の転送ゲート（ＴＧ３）と、
ｂ）第２の転送ゲート（ＴＧ４）と、
ｃ）第３の転送ゲート（ＴＧ５）と、
ｄ）第４の転送ゲート（ＴＧ６）と、
ｅ）第５の転送ゲート（ＴＧ７）と、
ｆ）ラッチ（Ｌ２）と
を含む、請求項１に記載の３重冗長ラッチ。
【請求項６】
前記第３の設定可能メモリ素子（ＳＭＥ３）は、
ａ）第１の転送ゲート（ＴＧ８）と、
ｂ）第２の転送ゲート（ＴＧ９）と、
ｃ）第３の転送ゲート（ＴＧ１０）と、
ｄ）ラッチ（Ｌ３）と
を含む、請求項１に記載の３重冗長ラッチ。
【請求項７】
前記第１の投票構造（ＶＳ１）は、
ａ）第１の入力（ＮＯＵＴ２）と、
ｂ）第２の入力（ＮＯＵＴ３）と、
ｃ）出力（ＶＳ１ＯＵＴ）と
を含み、
ｄ）前記第１の入力（ＮＯＵＴ２）は前記第２の設定可能メモリ素子（ＳＭＥ２）の出力（ＮＯＵＴ２）に接続され、
ｅ）前記第２の入力（ＮＯＵＴ３）は前記第３の設定可能メモリ素子（ＳＭＥ３）の出力（ＮＯＵＴ３）に接続され、
ｆ）前記第２の設定可能メモリ素子（ＳＭＥ２）と前記第３の設定可能メモリ素子（ＳＭＥ３）が該３重冗長ラッチに最初に記憶された論理値を有する場合、前記第１の投票構造（ＶＳ１）の前記出力（ＶＳ１ＯＵＴ）は、該３重冗長ラッチに最初に記憶された論理値を前記第１の設定可能メモリ素子（ＳＭＥ１）に強制的に設定する、請求項１に記載の３重冗長ラッチ。
【請求項８】
前記第２の投票構造（ＶＳ２）は、
ａ）第１の入力（ＤＯＵＴ）と、
ｂ）第２の入力（ＳＯＵＴ）と、
ｃ）出力（ＶＳ２ＯＵＴ）と
を含み、
ｄ）前記第１の入力（ＤＯＵＴ）は前記第１の設定可能メモリ素子（ＳＭＥ１）の出力（ＤＯＵＴ）に接続され、
ｅ）前記第２の入力（ＳＯＵＴ）は前記第３の設定可能メモリ素子（ＳＭＥ３）の出力（ＳＯＵＴ）に接続され、
ｆ）前記第１の設定可能メモリ素子（ＳＭＥ１）と前記第３の設定可能メモリ素子（ＳＭＥ３）が該３重冗長ラッチに最初に記憶された論理値を有する場合、前記第２の投票構造（ＶＳ２）の前記出力（ＶＳ２ＯＵＴ）は、該３重冗長ラッチに最初に記憶された論理値を前記第２の設定可能メモリ素子（ＳＭＥ２）に強制的に設定する、請求項１に記載の３重冗長ラッチ。
【請求項９】
前記第３の投票構造（ＶＳ２）は、
ａ）第１の入力（ＤＯＵＴ）と、
ｂ）第２の入力（ＯＵＴ２）と、
ｃ）出力（ＶＳ３ＯＵＴ）と
を含み、
ｄ）前記第１の入力（ＯＵＴ２）は前記第２の設定可能メモリ素子（ＳＭＥ２）の出力（ＯＵＴ２）に接続され、
ｅ）前記第２の入力（ＤＯＵＴ）は前記第１の設定可能メモリ素子（ＳＭＥ１）の出力（ＤＯＵＴ）に接続され、
ｆ）前記第２の設定可能メモリ素子（ＳＭＥ２）と前記第１の設定可能メモリ素子（ＳＭＥ１）が該３重冗長ラッチに最初に記憶された論理値を有する場合、前記第３の投票構造（ＶＳ３）の前記出力（ＶＳ３ＯＵＴ）は、前記３重冗長ラッチに最初に記憶された論理値を前記第３の設定可能メモリ素子（ＳＭＥ３）に強制的に設定する、請求項１に記載の３重冗長ラッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してラッチ設計に関する。詳しくは、本発明はラッチのソフトエラー耐性を向上させることに関する。
【背景技術】
【０００２】
高エネルギーの中性子は、主としてシリコン原子核との衝突により物質中でエネルギーを失い、一連の二次反応を引き起こす。電子−正孔対がｐ−ｎ接合を通過する際には、そのような反応により、電子−正孔対の高密度の軌跡が堆積される。堆積した電荷の一部は再結合し、一部は接合接点に収集される。粒子がラッチの脆弱な部分に衝突すると、蓄積された電荷が、ラッチに記憶された値を「反転」させるのに必要とされる最小電荷よりも大きくなり、ソフトエラーが発生することがある。
【０００３】
ソフトエラーを発生させる最小電荷は、ラッチの臨界電荷と呼ばれる。ソフトエラーの発生率（ＳＥＲ）は一般に、故障率（ＦＩＴ）で表現される。
【０００４】
ソフトエラーの一般的原因は、集積回路のパッケージ材料に含まれる微量の放射性同位元素から放出されるα粒子である。フリップチップパッケージング技術で使用される「バンプ」材料も、α粒子の発生源になり得ることが判明している。
【０００５】
ソフトエラーの他の原因には、高エネルギーの宇宙線や太陽粒子がある。高エネルギーの宇宙線や太陽粒子は、高層大気と反応して高エネルギーの陽子および中性子を生成し、それらが地球に降り注ぐ。中性子はほとんどの人工構造物を貫通するので、特に厄介である（中性子は５フィートのコンクリートを容易に通過する）。この影響は緯度や高度によって変わる。ロンドンでは、その影響が赤道上に比べて２倍にまで悪化する。海抜１マイルのコロラド州デンバーでは、海抜ゼロのサンフランシスコに比べて、３倍にまで悪化する。民間航空機では、その影響が海抜ゼロの場合に比べて１００〜８００倍にまで悪化することがある。
【０００６】
放射線により発生するソフトエラーは、マイクロプロセッサや他の複雑なＩＣ（集積回路）の故障率を増大させる主な原因の１つになりつつある。この種の故障を減らすために、いくつかの手法が提案されている。ＥＣＣ（誤り訂正符号）やパリティのデータパスへの追加は、この問題にアーキテクチャレベルで対処しようとするものである。しかしながら、ＥＣＣやパリティのデータパスへの追加は、複雑でコストがかかる可能性がある。
【０００７】
回路レベルでは、ｐ／ｎ接合によって生成されるキャパシタンスに対する酸化物によって生成されるキャパシタンスの比を増大させることにより、ＳＥＲを減らすことができる。ラッチのキャパシタンスは、特に、ｐ／ｎ接合によって生成されるキャパシタンスと酸化物によって生成されるキャパシタンスとを含む。電子／正孔対は、高エネルギーの中性子がｐ／ｎ接合を通過するときに発生するので、ラッチのｐ／ｎ接合の面積を小さくすればＳＥＲは一般に減少する。高エネルギーの中性子が酸化物を通過しても、あまり多くの電子／正孔対は生成されない。従って、ＳＲＡＭセル内のｐ／ｎ接合キャパシタンスに対する酸化物キャパシタンスの比を大きくすると、ＳＥＲは一般に減少する。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
当該技術分野では、ラッチのＳＥＲの低減が必要とされている。
【課題を解決するための手段】
【０００９】
本発明の一実施形態は、３重冗長ラッチの物理サイズを僅かに増加させるだけで、３重冗長ラッチ内の遅延時間を短縮するとともに、３重冗長ラッチのＳＥＲを低減する。さらに、２つの冗長ラッチを使用して、データを３重冗長ラッチに読み込ませたり、３重冗長ラッチからデータを読み出したりすることができる。
【００１０】
好ましい実施形態において、本発明はテスト機能が組み込まれた高信頼性３重冗長ラッチに関する回路および方法を提供する。３つの設定可能メモリ素子は、各設定可能メモリ素子に同じ論理値が設定される。設定可能メモリ素子が設定された後、第１、第２および第３の設定可能メモリ素子からの入力を有する３つの投票構造により、各設定可能メモリ素子に保持される論理値が決定される。第２の設定可能メモリ素子にデータを読み込ませたり、第２の設定可能メモリ素子からデータを読み出したりすることもできる。データはバッファを通して第３の設定可能メモリ素子に伝送される。第３の設定可能メモリ素子を使用して、３重冗長ラッチからデータを読み出すことができる。ラッチ内の伝送遅延は、３重冗長ラッチの伝送遅延のみである。
【００１１】
本発明の他の態様および利点は、本発明の原理を例として示す添付の図面とともに、以下に記載された詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【００１２】
図１は３重冗長ラッチの概略図である。３重冗長ラッチの入力１００は、転送ゲートＴＧ１、ＴＧ２およびＴＧ３の入力に接続される。制御信号１０２が転送ゲートＴＧ１、ＴＧ２およびＴＧ３に接続される。制御信号１０２は、転送ゲートＴＧ１、ＴＧ２およびＴＧ３の入力の信号が転送ゲートＴＧ１、ＴＧ２およびＴＧ３の出力１０４、１０６および１０８にそれぞれ転送されるタイミングを制御する。出力１０４、１０６および１０８に出力された信号は、ＬＡＴＣＨ１、ＬＡＴＣＨ２およびＬＡＴＣＨ３にそれぞれ記憶される。
【００１３】
制御信号１０２をオフに切り換えた後、ＬＡＴＣＨ１に記憶された信号がインバータＩＮＶ１の入力を駆動する。制御信号１０２をオフに切り替えた後、ＬＡＴＣＨ２に記憶された信号がインバータＩＮＶ２の入力を駆動する。制御信号１０２をオフに切り替えた後、ＬＡＴＣＨ３に記憶された信号がインバータＩＮＶ３の入力を駆動する。インバータＩＮＶ１の出力１１０は、ＡＮＤ１の入力およびＡＮＤ２の入力を駆動する。インバータＩＮＶ２の出力１１２は、ＡＮＤ１の入力およびＡＮＤ３の入力を駆動する。インバータＩＮＶ３の出力１１４は、ＡＮＤ２の入力およびＡＮＤ３の入力を駆動する。ＡＮＤ１の出力１１６はＯＲ１の入力を駆動する。ＡＮＤ２の出力１１８はＯＲ１の入力を駆動する。ＡＮＤ３の出力１２０はＯＲ１の入力を駆動する。３重冗長ラッチの出力はＯＲ１の出力１２２である。
【００１４】
３重冗長ラッチは、同じデータを３つの異なるラッチに記憶することによりソフトエラーを減少させる。例えば、制御信号１０２をオンにすると、転送ゲートＴＧ１、ＴＧ２およびＴＧ３の各入力から転送ゲートＴＧ１、ＴＧ２およびＴＧ３の各出力１０４、１０６および１０８へ高の論理値がそれぞれ駆動される。制御信号１０２をオフに切り替えた後、高の論理値がラッチＬＡＴＣＨ１、ＬＡＴＣＨ２およびＬＡＴＣＨ３に記憶される。ＬＡＴＣＨ１に記憶された高の論理値はインバータＩＮＶ１の入力を駆動し、インバータＩＮＶ１の出力１１０に低の論理値を生成する。ＬＡＴＣＨ２上に記憶された高の論理値はインバータＩＮＶ２の入力を駆動し、インバータＩＮＶ２の出力１１２に低の論理値を生成する。ＬＡＴＣＨ３上に記憶された高の論理値はインバータＩＮＶ３の入力を駆動し、インバータＩＮＶ３の出力１１４に低の論理値を生成する。
【００１５】
各インバータＩＮＶ１、ＩＮＶ２およびＩＮＶ３の出力１１０、１１２および１１４がそれぞれ低であるから、ＡＮＤ１、ＡＮＤ２およびＡＮＤ３への入力１１０、１１２および１１４は全て低の論理値になる。ＡＮＤ１、ＡＮＤ２およびＡＮＤ３への各入力１１０、１１２および１１４が全て低の論理値であるから、ＡＮＤ１、ＡＮＤ２およびＡＮＤ３の各出力１１６、１１８および１２０はいずれも低の論理値になる。ＡＮＤ１、ＡＮＤ２およびＡＮＤ３の各出力１１６、１１８および１２０が低の論理値であるから、ＯＲ１の入力は全て低の論理値になる。ＯＲ１への入力１１６、１１８および１２０が全て低の論理値であるから、出力１２２は低の論理値になる。
【００１６】
例えばＬＡＴＣＨ２にソフトエラーが発生し、そこに記憶された論理値が高の論理値から低の論理値に変化した場合、今度は、低の論理値がインバータＩＮＶ２の入力１０６に供給される。インバータＩＮＶ２の出力１１２は、高の論理値をＡＮＤ１およびＡＮＤ３の入力に供給する。この例では、ＡＮＤ１のもう一方の入力１１０およびＡＮＤ３のもう一方の入力１１４が低の論理値であるから、ＡＮＤ１およびＡＮＤ３の各出力１１６および１２０は低の論理値のまま変化せず、出力１２２は変化しない。この例は、１つのラッチに単一のソフトエラーが発生しても、３重冗長ラッチに最初に記憶された値が変化しない仕組みを示している。
【００１７】
他の例として、ＬＡＴＣＨ２のソフトエラーに加えて、さらにＬＡＴＣＨ３にもソフトエラーがあるものと仮定する。今度はインバータＩＮＶ３への入力１０８が低の論理値であるから、インバータＩＮＶ３の出力１１４は高の論理値になる。そして、ＡＮＤ２の入力１１４とＡＮＤ３の入力１１４に、高の論理値が供給される。低の論理値と高の論理値がＡＮＤ１の入力に供給されるので、ＡＮＤ１の出力１１６は、低の論理値のまま変化しない。また、低の論理値と高の論理値がＡＮＤ２の入力に供給されるので、ＡＮＤ２の出力１１８も、低の論理値のまま変化しない。しかしながら、ＡＮＤ３への２つの入力１１２および１１４はいずれも高の論理値であるから、出力１２０は高の論理値になる。ＯＲ１への入力１２０が高の論理値であるから、出力１２２は低の論理値から高の論理値へ変化する。この例は、３重冗長ラッチのうちの２つのラッチにソフトエラーが発生すると、３重冗長ラッチに最初に記憶された値が変化することを示している。
【００１８】
３重冗長ラッチは、ラッチに記憶された元の値が単一のソフトエラーにより変化することを防止することができる。しかしながら、これは回路の追加を代償とするものであるから、ラッチの物理的サイズは大きくなる。さらに、３重の冗長性は、ラッチの遅延経路に時間遅延を発生させることがある。そのため、３重冗長ラッチは一般に、単一のラッチよりも大きく、遅いものとなる。
【００１９】
図２は、改良型重冗長ラッチの一実施形態を示すブロック図である。この実施形態では、信号ＳＥＴを制御することにより、設定可能メモリ素子１（ＳＭＥ１）、設定可能メモリ素子２（ＳＭＥ２）、および設定可能メモリ素子３（ＳＭＥ３）に、同じ論理値のデータ入力ＤＩＮを設定する。信号ＳＥＴを制御することにより、設定可能メモリ素子１（ＳＭＥ１）、設定可能メモリ素子２（ＳＭＥ２）および設定可能メモリ素子３（ＳＭＥ３）に同じ論理値ＤＩＮを設定した後、その同じ論理値は、３つの設定可能メモリ素子ＳＭＥ１、ＳＭＥ２およびＳＭＥ３に保持される。設定可能メモリ素子１（ＳＭＥ１）、設定可能メモリ素子２（ＳＭＥ２）および設定可能メモリ素子３（ＳＭＥ３）に同じ論理値ＤＩＮが設定された後、投票構造１（ＶＳ１）は、ノードＮＯＵＴ２およびＮＯＵＴ３上の論理値に基づいて、投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴに出力される論理値を判定する。設定可能メモリ素子１（ＳＭＥ１）、設定可能メモリ素子２（ＳＭＥ２）および設定可能メモリ素子３（ＳＭＥ３）に同じ論理値ＤＩＮが設定された後、投票構造２（ＶＳ２）は、ノードＤＯＵＴおよびＳＯＵＴ上の論理値に基づいて、投票構造２（ＶＳ２）の出力ＶＳ２ＯＵＴに出力される論理値を判定する。設定可能メモリ素子１（ＳＭＥ１）、設定可能メモリ素子２（ＳＭＥ２）および設定可能メモリ素子３（ＳＭＥ３）に同じ論理値ＤＩＮが設定された後、投票構造３（ＶＳ３）は、ノードＤＯＵＴおよびＯＵＴ２上の論理値に基づいて、投票構造３（ＶＳ３）の出力ＶＳ３ＯＵＴに出力される論理値を判定する。
【００２０】
設定可能メモリ素子１（ＳＭＥ１）に記憶された論理値ＤＩＮがソフトエラー事象によって変更され、他の２つの設定可能メモリ素子ＳＭＥ２およびＳＭＥ３がソフトエラー事象の影響を受けなかった場合は、投票構造１（ＶＳ１）が、設定可能メモリ素子１（ＳＭＥ１）に記憶されていた元の論理値を復元する。
【００２１】
設定可能メモリ素子２（ＳＭＥ２）に記憶された論理値ＤＩＮがソフトエラー事象によって変化し、他の２つの設定可能メモリ素子ＳＭＥ１およびＳＭＥ３がソフトエラー事象の影響を受けなかった場合は、投票構造２（ＶＳ２）が、設定可能メモリ素子２（ＳＭＥ２）に記憶されていた元の論理値を復元する。
【００２２】
設定可能メモリ素子３（ＳＭＥ３）に記憶された論理値ＤＩＮがソフトエラー事象によって変化し、他の２つの設定可能メモリ素子ＳＭＥ１およびＳＭＥ２がソフトエラー事象の影響を受けなかった場合は、投票構造３（ＶＳ３）が、設定可能メモリ素子３（ＳＭＥ３）に記憶されていた元の論理値を復元する。
【００２３】
設定可能メモリ素子２（ＳＭＥ２）に記憶された論理値がソフトエラー事象によって変化した場合、投票構造ＶＳ１およびＶＳ３は、設定可能メモリ素子ＳＭＥ１およびＳＭＥ３に記憶されていた元の論理値をそのまま残して、それぞれの出力ＶＳ１ＯＵＴおよびＶＳ３ＯＵＴをトライステートにする。２つの設定可能メモリ素子、例えばＳＭＥ２およびＳＭＥ３が、ソフトエラー事象によってほぼ同時に変化した場合、３重冗長ラッチに最初に記憶されていた論理値は、破壊されることがある。３重冗長ラッチは、２以上のソフトエラー事象がほぼ同時に発生しない限り、ほとんど故障しないであろう。単一のソフトエラー事象が発生し、ある設定可能メモリ素子の論理値が変化した場合は、その設定可能メモリ素子に対応する投票構造が、正しい値をその設定可能メモリ素子上に復元する。
【００２４】
テストの目的で、３重冗長ラッチに記憶されている元の論理値を３重冗長ラッチから読み出すこともできる。設定可能メモリ２（ＳＭＥ２）に保持されている論理値ＤＩＮは、バッファ１（ＢＵＦ１）の入力ＯＵＴ２に供給される。そして、バッファ１（ＢＵＦ１）の出力ＢＯＵＴは転送ゲートＴＧ９の入力に供給される。システムクロックを停止させた状態で制御信号ＮＳＨＩＦＴをアクティブにすると、ＢＯＵＴに現れる論理値を出力ＳＯＵＴに伝送することができる。そして、ＳＯＵＴの論理値をテスタに読み込み、評価することができる。
【００２５】
また、スキャンデータＳＩＮを３重冗長ラッチに読み込ませることもできる。制御信号ＳＨＩＦＴをアクティブにし、制御信号ＳＥＴが非アクティブにし、システムクロックを停止させると、スキャンデータＳＩＮを設定可能メモリ素子２（ＳＭＥ２）に読み込ませることができる。次に、制御信号ＳＥＴを非アクティブにしたまま、制御信号ＳＨＩＦＴを非アクティブにし、制御信号ＮＳＨＩＦＴをアクティブにすると、そのスキャンデータを設定可能メモリ素子３（ＳＭＥ３）に読み込ませることができる。制御信号ＴＥＳＴ２が高で、制御信号ＮＴＥＳＴ２が低であれば、設定可能メモリ素子ＳＭＥ２およびＳＭＥ３に読み込まれた論理値を設定可能メモリ素子１（ＳＭＥ１）にも強制的に読み込ませることができる。投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴは設定可能メモリ素子ＳＭＥ２およびＳＭＥ３に読み込まれたのと同じ論理値を生成するので、設定可能メモリ素子ＳＭＥ２およびＳＭＥ３に読み込まれたのと同じ論理値を、設定可能メモリ素子１（ＳＭＥ１）にも強制的に読み込ませることができる。
【００２６】
オンザフライでサンプリング中に、システムクロックを動作させた状態でテストモードに切り替えることができる。設定可能メモリ素子ＳＭＥ２およびＳＭＥ３に記憶された初期の論理値は、設定可能メモリ素子１（ＳＭＥ１）に記憶された論理値と同じになるであろう。システムクロックが動作しているので、設定可能メモリ素子１（ＳＭＥ１）の論理値は変化する可能性がある。任意の後続のシステムクロックサイクルにおいて信号ＳＡＭＰＬＥをアクティブにすると、設定可能メモリ素子１（ＳＭＥ１）から設定可能メモリ素子ＳＭＥ２およびＳＭＥ３に最新の値をロードすることができる。最新の論理値を設定可能メモリ素子ＳＭＥ２およびＳＭＥ３にロードした後、この論理値は、制御信号ＳＨＩＦＴおよびＮＳＨＩＦＴを用いて読み出すことができる。
【００２７】
図２に示す３重冗長ラッチ内の伝送遅延は、設定可能メモリ素子１（ＳＭＥ１）の伝送遅延によってのみ決まる。本発明のこの実施形態は、３重冗長ラッチの遅延時間を大幅に改善する。例えば、図１に示す従来技術の３重冗長ラッチの遅延時間は、ラッチＬＡＴＣＨ１、ＬＡＴＣＨ２およびＬＡＴＣＨ３の中で最も遅いラッチ内の伝送遅延、インバータ（ＩＮＶ２）内の伝送遅延、ＡＮＤゲート（ＡＮＤ２）内の伝送遅延、およびＯＲゲート（ＯＲ１）内の伝送遅延を含む。
【００２８】
図３は、遅延を改善し、信頼性を高め、テスト機能を組み込んだ３重冗長ラッチを示すブロック図である。この例に示す３重冗長ラッチの入力は、転送ゲートＴＧ１およびＴＧ３の入力ＤＩＮに接続される。さらに、転送ゲートの代わりに、トライステート可能な入力インバータ、交差接続されたＮＡＮＤゲートおよび交差接続されたＮＯＲゲートを使用してもよい。制御信号ＳＥＴをオンにすると、転送ゲートＴＧ１およびＴＧ３の入力ＤＩＮの信号が、転送ゲート１（ＴＧ１）の出力ＤＯＵＴおよび転送ゲート３（ＴＧ３）の出力３００に転送される。転送ゲート１（ＴＧ１）の出力ＤＯＵＴに現れる論理値は、ラッチ１（Ｌ１）への入力でもある。転送ゲート３（ＴＧ３）の出力３００上に現れる論理値は、転送ゲート４（ＴＧ４）への入力でもある。転送ゲート４（ＴＧ４）を作動させると、入力３００の論理値が、ラッチ２（Ｌ２）の入力に供給される。転送ゲート８（ＴＧ８）および転送ゲート９（ＴＧ９）の出力ＳＯＵＴに現れる論理値は、ラッチ３（Ｌ３）の入力ＳＯＵＴにも接続される。
【００２９】
ラッチ２（Ｌ２）の出力ＮＯＵＴ２は、投票構造１（ＶＳ１）の入力および転送ゲート７（ＴＧ７）の出力に接続される。ラッチ３（Ｌ３）の出力ＮＯＵＴ３は、投票構造１（ＶＳ１）の入力および転送ゲート１０（ＴＧ１０）の出力に接続される。
【００３０】
ラッチ１（Ｌ１）の入力ＤＯＵＴは、投票構造２（ＶＳ２）の入力、投票構造３（ＶＳ３）の入力、転送ゲート２（ＴＧ２）の出力、および転送ゲート６（ＴＧ６）の入力に接続される。ラッチ２（Ｌ２）の入力ＯＵＴ２は、投票構造３（ＶＳ３）の入力、転送ゲート５（ＴＧ５）の出力、バッファ１（ＢＵＦ１）の入力、および転送ゲート６（ＴＧ６）の出力に接続される。ラッチ３（Ｌ３）の入力ＳＯＵＴは、投票構造２（ＶＳ２）の入力、転送ゲート８（ＴＧ８）の出力、および転送ゲート９（ＴＧ９）の出力に接続される。
【００３１】
この実施形態がどの程度の冗長性を備えているかの一例として、高の論理値が記憶されるものと仮定する。すなわち、この例において、記憶ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴのそれぞれに高の論理値が記憶されるものと仮定する。ラッチ２（Ｌ２）の出力ＮＯＵＴ２は、低の論理値を投票構造１（ＶＳ１）の入力に供給する。ラッチ３（Ｌ３）の出力ＮＯＵＴ３は、低の論理値を投票構造１（ＶＳ１）の入力に供給する。投票構造１（ＶＳ１）に対する入力が両方とも低の論理値であるから、その出力は高の論理値になる。制御信号ＴＥＳＴ２をアクティブにすると、ＶＳ１ＯＵＴの高の論理値がＤＯＵＴに転送される。
【００３２】
この例において、ラッチ１（Ｌ１）に記憶された高の論理値がソフトエラー事象により低の論理値に変化した場合、投票構造１（ＶＳ１）は、ラッチ１（Ｌ１）に記憶されていた元の高の論理値を復元し、３重冗長ラッチを変化前の元の状態に復元する。従って、３重冗長ラッチは、単一のソフトエラーが発生しても、そこに記憶されていた元の論理値を維持することができる。
【００３３】
この例において、ラッチ２（Ｌ２）に記憶された高の論理値がソフトエラー事象により低の論理値に変化した場合、投票構造１（ＶＳ１）はトライステートされ、ラッチ１（Ｌ１）に記憶されていた元の値は高の論理値のまま維持される。従って、３重冗長ラッチは、単一のソフトエラーが発生しても、そこに記憶されていた元の論理値を維持することができる。
【００３４】
この例において、ラッチ３（Ｌ３）に記憶された高の論理値がソフトエラー事象により低の論理値に変化した場合、投票構造１（ＶＳ１）はトライステートされ、ラッチ１（Ｌ１）に記憶されていた元の値は高の論理値のまま維持される。従って、３重冗長ラッチは、単一のソフトエラーが発生しても、そこに記憶されていた元の論理値を維持することができる。
【００３５】
しかしながら、この例において、ノードＯＵＴ２に記憶された値とノードＳＯＵＴに記憶された値がソフトエラー事象によりほぼ同時に変化した場合、３重冗長ラッチの論理値は、元の値から変化する場合がある。ノードＯＵＴ２に記憶された論理値とノードＯＵＴ３に記憶された論理値が、ソフトエラー事象によりほぼ同時に高の論理値から低の論理値に変化した場合、投票構造１（ＶＳ１）に対する入力ＮＯＵＴ２およびＳＯＵＴは、低の論理値から高の論理値に変化する。入力ＮＯＵＴ２およびＳＯＵＴが高の論理値になると、投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴは低の論理値になる。その結果、ＤＯＵＴに記憶されていた元の高の論理値は、低の論理値に変化する。この例では、３重冗長ラッチに記憶された値が、元の高の論理値から低の論理値に変化する。３重冗長ラッチは、２以上のソフトエラー事象がほぼ同時に発生しない限り、故障することはない。単一のソフトエラー事象が発生し、ある設定可能メモリ素子に記憶された論理値が変化した場合でも、その設定可能メモリ素子に対応する投票構造が、正しい値をその設定可能メモリ素子に復元する。
【００３６】
テストの目的で、３重冗長ラッチに記憶されている元の論理値を３重冗長ラッチから読み出すこともできる。ラッチ２（Ｌ２）に保持されている論理値は、バッファ１（ＢＵＦ１）の入力ＯＵＴ２に供給される。そして、バッファ１（ＢＵＦ１）の出力ＢＯＵＴは、転送ゲート９（ＴＧ９）の入力に供給される。制御信号ＮＳＨＩＦＴをアクティブにすると、ＢＯＵＴに現れる論理値を出力ＳＯＵＴに伝送し、ラッチ３（Ｌ３）に記憶することができる。そして、ＳＯＵＴの論理値をテスタに読み込み、評価することができる。
【００３７】
また、スキャンデータＳＩＮを３重冗長ラッチに読み込ませることもできる。制御信号ＳＨＩＦＴをアクティブにし、制御信号ＳＥＴを非アクティブにすると、スキャンデータＳＩＮを転送ゲート５（ＴＧ５）を通してラッチ２（Ｌ２）に転送することができる。次に、そのスキャンデータは、バッファ１（ＢＵＦ１）を通して伝送され、転送ゲート９（ＴＧ９）の入力に供給される。制御信号ＳＥＴを非アクティブにしたまま、制御信号ＳＨＩＦＴを非アクティブにし、制御信号ＮＳＨＩＦＴをアクティブにすると、そのスキャンデータをラッチ３（Ｌ３）に読み込ませることができる。そして、制御信号ＴＥＳＴ２をアクティブにすると、ラッチＬ２およびＬ３に読み込まれた論理値をラッチ１（Ｌ１）にも強制的に入力することができる。投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴはラッチＬ２およびＬ３に読み込まれたのと同じ論理値を生成するので、ラッチＬ２およびＬ３に読み込まれたのと同じ論理値をラッチ１（Ｌ１）にも強制的に入力することができる。
【００３８】
オンザフライでサンプリング中に、システムクロックを動作させた状態でテストモードに切り替えることができる。ラッチＬ２およびラッチＬ３に記憶された初期の論理値は、ラッチ１（Ｌ１）に記憶された論理値と同じになるであろう。システムクロックが動作しているので、ラッチ１（Ｌ１）の論理値は変化する可能性がある。任意の後続のシステムクロックサイクルにおいて信号ＳＡＭＰＬＥをアクティブにすると、ラッチ１（Ｌ１）からラッチＬ２およびＬ３に最新の値をロードすることができる。最新の論理値をラッチＬ２およびＬ３にロードした後、この論理値は、制御信号ＳＨＩＦＴおよびＮＳＨＩＦＴを用いて読み出すことができる。
【００３９】
図３に示す３重冗長ラッチは、ラッチのソフトエラー率を改善するだけでなく、論理遅延の数が少ないので、３重冗長ラッチ内の遅延時間も短縮する。
【００４０】
図４は、改良型３重冗長ラッチを示す概略図である。図４は、図３に含まれる基本ブロックと同じ基本ブロック、すなわち、転送ゲート１（ＴＧ１）、転送ゲート２（ＴＧ２）、転送ゲート３（ＴＧ３）、転送ゲート４（ＴＧ４）、転送ゲート５（ＴＧ５）、転送ゲート６（ＴＧ６）、転送ゲート７（ＴＧ７）、転送ゲート８（ＴＧ８）、転送ゲート９（ＴＧ９）、転送ゲート１０（ＴＧ１０）、ラッチ１（Ｌ１）、ラッチ２（Ｌ２）、ラッチ３（Ｌ３）、投票構造１（ＶＳ１）、投票構造２（ＶＳ２）、投票構造３（ＶＳ３）、およびバッファ１（ＢＵＦ１）を含む。
【００４１】
３重冗長ラッチの転送ゲート１（ＴＧ１）の一実施形態は、ＰＦＥＴ（ＭＰ２）とＮＦＥＴ（ＭＮ２）を含む。この実施形態では、ＰＦＥＴ（ＭＰ２）のドレインとＮＦＥＴ（ＭＮ２）のドレインが、転送ゲート１（ＴＧ１）の入力ＤＩＮに接続される。ＰＦＥＴ（ＭＰ２）のソースとＮＦＥＴ（ＭＮ２）のソースは、転送ゲート１（ＴＧ１）の出力ＤＯＵＴに接続される。ＰＦＥＴ（ＭＰ２）のゲートは、転送ゲート１（ＴＧ１）の制御入力ＮＳＥＴに接続される。ＮＦＥＴ（ＭＮ２）のゲートは、転送ゲート１（ＴＧ１）の制御入力ＳＥＴに接続される。
【００４２】
３重冗長ラッチの転送ゲート３（ＴＧ３）の一実施形態は、ＰＦＥＴ（ＭＰ１）とＮＦＥＴ（ＭＮ１）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１）のドレインとＮＦＥＴ（ＭＮ１）のドレインが、転送ゲート３（ＴＧ３）の入力ＤＩＮに接続される。ＰＦＥＴ（ＭＰ１）のソースとＮＦＥＴ（ＭＮ１）のソースは、転送ゲート３（ＴＧ３）のノード４００に接続される。ＰＦＥＴ（ＭＰ１）のゲートは、転送ゲート３（ＴＧ３）の制御入力ＴＥＳＴ１に接続される。ＮＦＥＴ（ＭＮ１）のゲートは、転送ゲート３（ＴＧ３）の制御入力ＮＴＥＳＴ１に接続される。
【００４３】
３重冗長ラッチの転送ゲート２（ＴＧ２）の一実施形態は、ＰＦＥＴ（ＭＰ１）とＮＦＥＴ（ＭＮ１２）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１２）のドレインとＮＦＥＴ（ＭＮ１２）のドレインが、転送ゲート２（ＴＧ２）のＶＳ１ＯＵＴに接続される。ＰＦＥＴ（ＭＰ１２）のソースとＮＦＥＴ（ＭＮ１２）のソースは、転送ゲート２（ＴＧ２）の出力ＤＯＵＴに接続される。ＰＦＥＴ（ＭＰ１２）のゲートは、転送ゲート２（ＴＧ２）の制御入力ＮＴＥＳＴ２に接続される。ＮＦＥＴ（ＭＮ１２）のゲートは、転送ゲート２（ＴＧ２）の制御入力ＴＥＳＴ２に接続される。
【００４４】
３重冗長ラッチの転送ゲート４（ＴＧ４）の一実施形態は、ＰＦＥＴ（ＭＰ３）とＮＦＥＴ（ＭＮ３）を含む。この実施形態では、ＰＦＥＴ（ＭＰ３）のドレインとＮＦＥＴ（ＭＮ３）のドレインが、転送ゲート４（ＴＧ４）の入力４００に接続される。ＰＦＥＴ（ＭＰ３）のソースとＮＦＥＴ（ＭＮ３）のソースは、転送ゲート４（ＴＧ４）の出力ＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ３）のゲートは、転送ゲート４（ＴＧ４）の制御入力ＮＳＥＴに接続される。ＮＦＥＴ（ＭＮ３）のゲートは、転送ゲート４（ＴＧ４）の制御入力ＳＥＴに接続される。
【００４５】
３重冗長ラッチの転送ゲート７（ＴＧ７）の一実施形態は、ＰＦＥＴ（ＭＰ１３）とＮＦＥＴ（ＭＮ１３）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１３）のドレインとＮＦＥＴ（ＭＮ１３）のドレインが、転送ゲート７（ＴＧ７）のＶＳ２ＯＵＴに接続される。ＰＦＥＴ（ＭＰ１３）のソースとＮＦＥＴ（ＭＮ１３）のソースは、転送ゲート７（ＴＧ７）の出力ＮＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ１３）のゲートは、転送ゲート７（ＴＧ７）の制御入力ＴＥＳＴ１に接続される。ＮＦＥＴ（ＭＮ１３）のゲートは、転送ゲート７（ＴＧ７）の制御入力ＮＴＥＳＴ１に接続される。
【００４６】
３重冗長ラッチの転送ゲート１０（ＴＧ１０）の一実施形態は、ＰＦＥＴ（ＭＰ１４）とＮＦＥＴ（ＭＮ１４）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１４）のドレインとＮＦＥＴ（ＭＮ１４）のドレインが、転送ゲート１０（ＴＧ１０）の入力ＶＳ３ＯＵＴに接続される。ＰＦＥＴ（ＭＰ１４）のソースとＮＦＥＴ（ＭＮ１４）のソースは、転送ゲート１０（ＴＧ１０）の出力ＮＯＵＴ３に接続される。ＰＦＥＴ（ＭＰ１４）のゲートは、転送ゲート１０（ＴＧ１０）の制御入力ＴＥＳＴ１に接続される。ＮＦＥＴ（ＭＮ１４）のゲートは、転送ゲート１０（ＴＧ１０）の制御入力ＮＴＥＳＴ１に接続される。
【００４７】
３重冗長ラッチの転送ゲート５（ＴＧ５）の一実施形態は、ＮＦＥＴ（ＭＮ２１）を含む。この実施形態では、ＮＦＥＴ（ＭＮ２１）のドレインが、転送ゲート５（ＴＧ５）の入力ＳＩＮに接続される。ＮＦＥＴ（ＭＮ２１）のソースは、転送ゲート５（ＴＧ５）の出力ＯＵＴ２に接続される。ＮＦＥＴ（ＭＮ２１）のゲートは、転送ゲート５（ＴＧ５）の制御入力ＳＨＩＦＴに接続される。
【００４８】
３重冗長ラッチの転送ゲート６（ＴＧ６）の一実施形態は、ＮＦＥＴ（ＭＮ２４）を含む。この実施形態では、ＮＦＥＴ（ＭＮ２４）のドレインが、転送ゲート６（ＴＧ６）の入力ＤＯＵＴに接続される。ＮＦＥＴ（ＭＮ２４）のソースは、転送ゲート６（ＴＧ６）の出力ＯＵＴ２に接続される。ＮＦＥＴ（ＭＮ２４）のゲートは、転送ゲート６（ＴＧ６）の制御入力ＳＡＭＰＬＥに接続される。
【００４９】
３重冗長ラッチの転送ゲート８（ＴＧ８）の一実施形態は、ＮＦＥＴ（ＭＮ２２）を含む。この実施形態では、ＮＦＥＴ（ＭＮ２２）のドレインが、転送ゲート８（ＴＧ８）の入力ＢＯＵＴに接続される。ＮＦＥＴ（ＭＮ２２）のソースは、転送ゲート８（ＴＧ８）の出力ＳＯＵＴに接続される。ＮＦＥＴ（ＭＮ２２）のゲートは、転送ゲート８（ＴＧ８）の制御入力ＳＡＭＰＬＥに接続される。
【００５０】
３重冗長ラッチの転送ゲート９（ＴＧ９）の一実施形態は、ＮＦＥＴ（ＭＮ２３）を含む。この実施形態では、ＮＦＥＴ（ＭＮ２３）のドレインが、転送ゲート９（ＴＧ９）の入力ＢＯＵＴに接続される。ＮＦＥＴ（ＭＮ２３）のソースは、転送ゲート９（ＴＧ９）の出力ＳＯＵＴに接続される。ＮＦＥＴ（ＭＮ２３）のゲートは、転送ゲート９（ＴＧ９）の制御入力ＮＳＨＩＦＴに接続される。
【００５１】
３重冗長ラッチのラッチ１（Ｌ１）の一実施形態は、ＰＦＥＴ（ＭＰ６）、ＮＦＥＴ（ＭＮ６）、ＰＦＥＴ（ＭＰ７）、およびＮＦＥＴ（ＭＮ７）を含む。この実施形態では、ＰＦＥＴ（ＭＰ６）のゲートとＮＦＥＴ（ＭＮ６）のゲートが、ＰＦＥＴ（ＭＰ７）のドレイン、ＮＦＥＴ（ＭＮ７）のドレイン、およびラッチ１（Ｌ１）の入力ＤＯＵＴに接続される。ＰＦＥＴ（ＭＰ６）のドレインとＮＦＥＴ（ＭＮ６）のドレインは、ＰＦＥＴ（ＭＰ７）のゲート、ＮＦＥＴ（ＭＮ７）のゲート、およびラッチ１（Ｌ１）の出力４０１に接続される。ＰＦＥＴ（ＭＰ６）のソースとＰＦＥＴ（ＭＰ７）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ６）のソースとＮＦＥＴ（ＭＮ７）のソースは、ＧＮＤに接続される。
【００５２】
３重冗長ラッチのラッチ２（Ｌ２）の一実施形態は、ＰＦＥＴ（ＭＰ８）、ＮＦＥＴ（ＭＮ８）、ＰＦＥＴ（ＭＰ９）、およびＮＦＥＴ（ＭＮ９）を含む。この実施形態では、ＰＦＥＴ（ＭＰ８）のゲートとＮＦＥＴ（ＭＮ８）のゲートが、ＰＦＥＴ（ＭＰ９）のドレイン、ＮＦＥＴ（ＭＮ９）のドレイン、およびラッチ２（Ｌ２）の入力ＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ８）のドレインとＮＦＥＴ（ＭＮ８）のドレインは、ＰＦＥＴ（ＭＰ９）のゲート、ＮＦＥＴ（ＭＮ９）のゲート、およびラッチ２（Ｌ２）の出力ＮＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ８）のソースとＰＦＥＴ（ＭＰ９）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ８）のソースとＮＦＥＴ（ＭＮ９）のソースは、ＧＮＤに接続される。
【００５３】
３重冗長ラッチのラッチ３（Ｌ３）の一実施形態は、ＰＦＥＴ（ＭＰ１０）、ＮＦＥＴ（ＭＮ１０）、ＰＦＥＴ（ＭＰ１１）、およびＮＦＥＴ（ＭＮ１１）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１０）のゲートとＮＦＥＴ（ＭＮ１０）のゲートが、ＰＦＥＴ（ＭＰ１１）のドレイン、ＮＦＥＴ（ＭＮ１１）のドレイン、およびラッチ３（Ｌ３）の入力ＳＯＵＴに接続される。ＰＦＥＴ（ＭＰ１０）のドレインとＮＦＥＴ（ＭＮ１０）のドレインは、ＰＦＥＴ（ＭＰ１１）のゲート、ＮＦＥＴ（ＭＮ１１）のゲート、およびラッチ３（Ｌ３）の出力ＮＯＵＴ３に接続される。ＰＦＥＴ（ＭＰ１０）のソースとＰＦＥＴ（ＭＰ１１）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ１０）のソースとＮＦＥＴ（ＭＮ１１）のソースは、ＧＮＤに接続される。
【００５４】
３重冗長ラッチの投票構造１（ＶＳ１）の一実施形態は、ＰＦＥＴ（ＭＰ１５）、ＰＦＥＴ（ＭＰ１６）、ＮＦＥＴ（ＭＮ１５）、およびＮＦＥＴ（ＭＮ１６）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１５）のゲートとＮＦＥＴ（ＭＮ１５）のゲートが、投票構造１（ＶＳ１）の第１の入力ＮＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ１６）のゲートとＮＦＥＴ（ＭＮ１６）のゲートは、投票構造１（ＶＳ１）の第２の入力ＮＯＵＴ３に接続される。ＰＦＥＴ（ＭＰ１５）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ１５）のソースは、ＧＮＤに接続される。ＰＦＥＴ（ＭＰ１５）のドレイン４０３は、ＰＦＥＴ（ＭＰ１６）のソース４０３に接続される。ＰＦＥＴ（ＭＰ１６）のドレインＶＳ１ＯＵＴは、ＮＦＥＴ（ＭＮ１６）のドレインおよびＶＳ１ＯＵＴに接続される。ＮＦＥＴ（ＭＮ１６）のソース４０４は、ＮＦＥＴ（ＭＮ１５）のドレイン４０４に接続される。
【００５５】
３重冗長ラッチの投票構造２（ＶＳ２）の一実施形態は、ＰＦＥＴ（ＭＰ１７）、ＰＦＥＴ（ＭＰ１８）、ＮＦＥＴ（ＭＮ１７）、およびＮＦＥＴ（ＭＮ１８）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１７）のゲートとＮＦＥＴ（ＭＮ１７）のゲートが、投票構造２（ＶＳ２）の第１の入力ＤＯＵＴに接続される。ＰＦＥＴ（ＭＰ１８）のゲートとＮＦＥＴ（ＭＮ１８）のゲートは、投票構造２（ＶＳ２）の第２の入力ＳＯＵＴに接続される。ＰＦＥＴ（ＭＰ１７）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ１７）のソースは、ＧＮＤに接続される。ＰＦＥＴ（ＭＰ１７）のドレイン４０５は、ＰＦＥＴ（ＭＰ１８）のソース４０５に接続される。ＰＦＥＴ（ＭＰ１８）のドレインＶＳ２ＯＵＴは、ＮＦＥＴ（ＭＮ１８）のドレインおよびＶＳ２ＯＵＴに接続される。ＮＦＥＴ（ＭＮ１８）のソース４０６は、ＮＦＥＴ（ＭＮ１７）のドレイン４０６に接続される。
【００５６】
３重冗長ラッチの投票構造３（ＶＳ３）の一実施形態は、ＰＦＥＴ（ＭＰ１９）、ＰＦＥＴ（ＭＰ２０）、ＮＦＥＴ（ＭＮ１９）、およびＮＦＥＴ（ＭＮ２０）を含む。この実施形態では、ＰＦＥＴ（ＭＰ１９）のゲートとＮＦＥＴ（ＭＮ１９）のゲートが、投票構造３（ＶＳ３）の第１の入力ＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ２０）のゲートとＮＦＥＴ（ＭＮ２０）のゲートは、投票構造３（ＶＳ３）の第２の入力ＤＯＵＴに接続される。ＰＦＥＴ（ＭＰ１９）のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ１９）のソースは、ＧＮＤに接続される。ＰＦＥＴ（ＭＰ１７）のドレイン４０７は、ＰＦＥＴ（ＭＰ１８）のソース４０７に接続される。ＰＦＥＴ（ＭＰ２０）のドレインＶＳ３ＯＵＴは、ＮＦＥＴ（ＭＮ２０）のドレインおよびＶＳ３ＯＵＴに接続される。ＮＦＥＴ（ＭＮ２０）のソース４０８は、ＮＦＥＴ（ＭＮ１９）のドレイン４０８に接続される。
【００５７】
３重冗長ラッチのバッファ１（ＢＵＦ１）の一実施形態は、ＰＦＥＴ（ＭＰ４）、ＮＦＥＴ（ＭＮ４）、ＰＦＥＴ（ＭＰ５）、およびＮＦＥＴ（ＭＮ５）を含む。この実施形態では、ＰＦＥＴ（ＭＰ４）のゲートとＮＦＥＴ（ＭＮ４）のゲートが、バッファ１（ＢＵＦ１）の入力ＯＵＴ２に接続される。ＰＦＥＴ（ＭＰ４）のドレインとＮＦＥＴ（ＭＮ４）のドレインは、ＰＦＥＴ（ＭＰ５）のゲートおよびＮＦＥＴ（ＭＮ５）のゲート４０２に接続される。ＰＦＥＴ（ＭＰ５）のドレインとＮＦＥＴ（ＭＮ５）のドレインは、バッファ１（ＢＵＦ１）の出力ＢＯＵＴに接続される。ＰＦＥＴ（ＭＰ４）のソースとＰＦＥＴ（ＭＰ５０のソースは、ＶＤＤに接続される。ＮＦＥＴ（ＭＮ４）のソースとＮＦＥＴ（ＭＮ５）のソースは、ＧＮＤに接続される。
【００５８】
図４は、改良型３重冗長ラッチの概略図である。入力信号が、転送ゲート１（ＴＧ１）および転送ゲート３（ＴＧ３）の入力ＤＩＮを駆動する。制御信号ＳＥＴを高の論理値にし、制御信号ＮＳＥＴを低の論理値にし、転送ゲート３（ＴＧ３）をアクティブにすると、転送ゲート１（ＴＧ１）および転送ゲート３（ＴＧ３）の入力ＤＩＮの信号が、転送ゲート１（ＴＧ１）の出力ＤＯＵＴおよび転送ゲート４（ＴＧ４）の出力ＯＵＴ２に転送される。
【００５９】
ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴに転送された信号は、ラッチ１（Ｌ１）の入力ＤＯＵＴ、ラッチ２（Ｌ２）の入力ＯＵＴ２、およびラッチ３（Ｌ３）の入力ＳＯＵＴにも供給される。ラッチＬ１、Ｌ２およびＬ３は同じ論理値を記憶する。ラッチＬ１、Ｌ２およびＬ３の各出力４０１、ＮＯＵＴ２およびＮＯＵＴ３は、そこに記憶された論理値の反対の意味の論理値を出力する。ラッチＬ２およびＬ３の各出力ＮＯＵＴ２およびＮＯＵＴ３が投票構造１（ＶＳ１）に入力されると、投票構造１（ＶＳ１）から出力ＶＳ１ＯＵＴが出力される。転送ゲート１（ＴＧ１）がオフで、転送ゲート２（ＴＧ２）がオンである場合、出力ＶＳ１ＯＵＴは、ラッチ１（Ｌ１）の入力ＤＯＵＴに供給される信号を強める。
【００６０】
入力ＯＵＴ２およびＤＯＵＴが投票構造３（ＶＳ３）に入力されると、投票構造３（ＶＳ３）から出力ＶＳ３ＯＵＴが出力される。転送ゲート８（ＴＧ８）および転送ゲート９（ＴＧ９）がオフで、転送ゲート１０（ＴＧ１０）がオンである場合、出力ＶＳ３ＯＵＴは、ラッチ３（Ｌ３）の出力ＳＯＵＴに現れる信号を強める。
【００６１】
入力ＳＯＵＴおよびＤＯＵＴが投票構造２（ＶＳ２）に入力されると、投票構造２（ＶＳ２）から出力ＶＳ２ＯＵＴが出力される。転送ゲート４（ＴＧ４）および転送ゲート５（ＴＧ５）がオフで、転送ゲート１０（ＴＧ１０）がオンである場合、出力ＶＳ２ＯＵＴは、ラッチ２（Ｌ２）の入力ＯＵＴ２に供給される信号を強める。
【００６２】
制御入力ＳＥＴが低の論理値に駆動され、制御入力ＮＳＥＴが高の論理値に駆動された後、ラッチ１（Ｌ１）、ラッチ２（Ｌ２）およびラッチ３（Ｌ３）は、ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴに現れた元の論理値をそれぞれ記憶する。ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴがいずれも変化していない場合は、同じ意味の信号が、３重冗長ラッチの出力ＤＯＵＴに出力される。
【００６３】
例えば、ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴに高の論理値を記憶した場合、高の論理値が、３重冗長ラッチの出力ＤＯＵＴに出力される。ラッチ２（Ｌ２）の出力ＮＯＵＴ２における低の論理値は、投票構造１（ＶＳ１）の第１の入力に供給される。ラッチ３（Ｌ３）の出力ＮＯＵＴ３における低の論理値は、投票構造１（ＶＳ１）の第２の入力に供給される。制御信号ＮＴＥＳＴ２が低で、制御信号ＴＥＳＴ２が高であるから、高の論理値が、第２の転送ゲート２（ＴＧ２）の入力ＶＳ１ＯＵＴからラッチ１（Ｌ１）の入力に転送される。これらの論理値を投票構造１（ＶＳ１）に供給すると、３重冗長ラッチの出力ＤＯＵＴは高の論理値に維持される。
【００６４】
高の論理値がノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴに記憶されるこの例の場合、ノードＤＯＵＴの論理値がソフトエラー事象により低の論理値に変化した場合でも、投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴが高のままであるから、ＤＯＵＴは高の論理値に戻されることになる。ＴＥＳＴ２が高の論理値であり、ＮＴＥＳＴ２が低の論理値であるから、ＶＳ１ＯＵＴにおける高の論理値は、ＤＯＵＴに転送される。
【００６５】
単一のソフトエラー事象によりラッチ３（Ｌ３）に記憶された論理値が変化した場合、投票構造１（ＶＳ１）はトライステートし、ＤＯＵＴ上の正しい値は変化しない。単一のソフトエラー事象によりラッチ２（Ｌ２）に記憶された論理値が変化した場合、投票構造１（ＶＳ１）はトライステートし、ＤＯＵＴ上の正しい値は変化しない。
【００６６】
しかしながら、ノードＯＵＴ２に記憶された値とノードＳＯＵＴに記憶された論理値が、単一のソフトエラー事象によりほぼ同時に変化した場合、３重冗長ラッチの論理値は、元の値から変化する場合がある。例えば、ノードＤＯＵＴ、ＯＵＴ２およびＳＯＵＴに高の論理値を記憶した場合、３重冗長ラッチの出力ＤＯＵＴには、高の論理値が出力される。ノードＯＵＴ２に記憶された論理値とノードＳＯＵＴに記憶された論理値が、単一のソフトエラー事象によりほぼ同時に高の論理値から低の論理値に変化した場合、投票構造１（ＶＳ１）に対する入力ＮＯＵＴ２およびＮＯＵＴ３は低の論理値から高の論理値に変化する。投票構造１（ＶＳ１）の入力ＮＯＵＴ２およびＮＯＵＴ３が高の論理値であるから、出力ＶＳ１ＯＵＴは低の論理値に引き下げられる。そして、転送ゲート２（ＴＧ２）がオンであるから、ラッチ１（Ｌ１）に記憶された高の論理値は低の論理値に反転される。そして、３重冗長ラッチの出力ＤＯＵＴは、高の論理値から低の論理値に変化する。３重冗長ラッチは、２以上のソフトエラー事象がほぼ同時に発生しない限り、故障することはない。単一のソフトエラー事象が発生し、ある設定可能メモリ素子に記憶された論理値が変化した場合でも、その設定可能メモリ素子に対応する投票構造が、正しい値をその設定可能メモリ素子に復元する。
【００６７】
テストの目的で、３重冗長ラッチに記憶されている元の論理値を３重冗長ラッチから読み出すこともできる。ラッチ２（Ｌ２）に保持されている論理値は、バッファ１（ＢＵＦ１）の入力ＯＵＴ２に供給される。そして、バッファ１（ＢＵＦ１）の出力ＢＯＵＴは、転送ゲート９（ＴＧ９）の入力に供給される。制御信号ＮＳＨＩＦＴを高に駆動し、制御信号ＳＨＩＦＴを低に駆動すると、ＢＯＵＴ上に現れる論理値を出力ＳＯＵＴに伝送し、ラッチ３（Ｌ３）に記憶することができる。そして、ＳＯＵＴの論理値をテスタに読み込み、評価することができる。
【００６８】
また、スキャンデータＳＩＮを３重冗長ラッチに読み込ませることもできる。制御信号ＳＨＩＦＴを高に駆動し、ＮＳＨＩＦＴが低に駆動し、制御信号ＳＥＴを低に駆動すると、スキャンデータＳＩＮを転送ゲート５（ＴＧ５）を通してラッチ２（Ｌ２）に転送することができる。次に、スキャンデータは、バッファ１（ＢＵＦ１）を通して伝送され、転送ゲート９（ＴＧ９）の入力に供給される。制御信号ＳＥＴを低にしたまま、制御信号ＳＨＩＦＴを低に駆動し、制御信号ＮＳＨＩＦＴを高に駆動すると、そのスキャンデータをラッチ３（Ｌ３）に読み込ませることができる。ラッチ２（Ｌ２）とラッチ３（Ｌ３）が同じ論理値を有するとき、投票構造１（ＶＳ１）の出力ＶＳ１ＯＵＴには同じ論理値が生成されるので、ラッチ２（Ｌ２）およびラッチ３（Ｌ３）に読み込まれる論理値は、ラッチ１（Ｌ１）にも強制的に入力される。
【００６９】
オンザフライでサンプリング中に、システムクロックを動作させた状態でテストモードに切り替えることができる。ラッチ２（Ｌ２）およびラッチ３（Ｌ３）に記憶された初期の論理値は、ラッチ１（Ｌ１）に記憶された論理値と同じ値になるであろう。システムクロックが動作しているので、ラッチ１（Ｌ１）の論理値は変化する可能性がある。任意の後続のシステムクロックサイクルにおいて信号ＳＡＭＰＬＥをアクティブにすると、ラッチ１（Ｌ１）からラッチ２（Ｌ２）およびラッチ３（Ｌ３）に最新の値をロードすることができる。最新の論理値をラッチ２（Ｌ２）およびラッチ３（Ｌ３）にロードした後、この論理値は、制御信号ＳＨＩＦＴおよびＮＳＨＩＦＴを用いて読み出すことができる。
【００７０】
図４に示す３重冗長ラッチは、ラッチのソフトエラー率を改善するだけでなく、論理遅延の数が少ないので、３重冗長ラッチ内の遅延時間も短縮する。
【００７１】
本発明に関する上記の説明は図示説明の目的で提供している。その説明は、発明の形態を網羅するものでもなければ、本発明を開示した実施形態に厳密に制限するためのものでもない。上記の教示に鑑みて他にも変更や変形は可能である。実施例は、本発明の原理とその実際の応用形態を最も分かりやすく説明し、当業者が意図する用途に合わせて本発明を様々な実施形態または変形形態で実施できるようなものを選択して記載している。特許請求の範囲は、従来技術によって制限される範囲を除き、本発明の代替実施形態も含むものとして解釈しなければならない。
【図面の簡単な説明】
【００７２】
【図１】従来技術による３重冗長ラッチを示す概略図である。
【図２】テスト機能が組み込まれた改良型３重冗長ラッチの一実施形態を示すブロック図である。
【図３】テスト機能が組み込まれた改良型３重冗長ラッチを示すブロック図である。
【図４】テスト機能が組み込まれた改良型３重冗長ラッチを示す概略図である。
【図１】
2006073180.tif 000003
【図２】
2006073180.tif 000004
【図３】
2006073180.tif 000005
【図４】
2006073180.tif 000006