(57)【要約】  本発明は、高信頼性の同期型の半導体集積回路を提供する。データ線に遅延回路を接続し、クロック線の論理レベルが変化する時に遅延回路の入力と出力のそれぞれの論理レベルを記憶する第１、第２の記憶回路１０１、１０２と、第１、第２の記憶回路１０１、１０２の結果が一致しているか否かを判断する判定回路１０４を備え、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、それが演算回路の異常や故障となることを、異常や故障となる前に予測可能としている。
2008023577.tif 000002
【特許請求の範囲】
【請求項１】
データ線に入力が接続され、所定の遅延時間遅延させて出力する遅延回路と、
前記遅延回路の入力と出力にデータ入力端子がそれぞれ接続された第１及び第２の記憶回路と、
前記第１及び第２の記憶回路の出力が一致するか比較判定する判定回路と、
を備え、
前記第１及び第２の記憶回路は、それぞれのクロック入力端子がクロック線に共通に接続され、前記クロック線の第１の論理レベルから第２の論理レベルへの遷移時点での前記データ入力端子の論理レベルを記憶して出力する、ことを特徴とする故障予測回路。
【請求項２】
クロック線に入力が接続され、所定の遅延時間遅延させて出力する遅延回路と、
データ線にデータ入力端子が共通に接続され、前記遅延回路の入力と出力にクロック入力端子がそれぞれ接続された第１及び第２の記憶回路と、
前記第１及び第２の記憶回路の出力が一致するか比較判定する判定回路と、
を備え、
前記第１及び第２の記憶回路は、それぞれの前記クロック入力端子の第１の論理レベルから第２の論理レベルへの遷移時点での前記データ入力端子の論理レベルを記憶して出力する、ことを特徴とする故障予測回路。
【請求項３】
データ線にデータ入力端子が共通に接続され、クロック線にクロック入力端子が共通に接続され、それぞれが、前記クロック入力端子の第１の論理レベルから第２の論理レベルへの遷移時点での前記データ入力端子の論理レベルを記憶してそれぞれ出力する第１及び第２の記憶回路と、
前記第１及び第２の記憶回路の出力が一致するか比較判定する判定回路と、
を備え、
前記第１の記憶回路がデータ線の論理レベルを決める論理スレッショルドと、前記第２の記憶回路がデータ線の論理レベルを決める論理スレッショルドとが互いに異なる値に設定されている、ことを特徴とする故障予測回路。
【請求項４】
前記判定回路による比較結果を記憶する回路であって、前記第１の記憶回路の出力と前記第２の記憶回路の出力が同一でない場合、前記判定回路の判定結果を保持する回路を備えている、ことを特徴とする請求項１乃至３のいずれか一記載の故障予測回路。
【請求項５】
前記判定回路の出力は、前記第１の記憶回路と前記第２の記憶回路の出力の比較結果を出力するエラー出力線に接続されている、ことを特徴とする請求項１乃至４のいずれか一に記載の故障予測回路。
【請求項６】
前記第１及び第２の記憶回路のクロック入力端子は、前記遅延回路の入力に入力が接続された第１のクロック分配回路の一の出力と、前記遅延回路の出力に入力が接続された第２のクロック分配回路の一の出力とに、それぞれ接続されている、ことを特徴とする請求項２記載の故障予測回路。
【請求項７】
入力されるデータ信号を、入力されるクロック信号に応答してサンプル出力する第１及び第２の記憶回路を備え、
前記第１の記憶回路と前記第２の記憶回路とはデータのサンプリングに関して、
データ信号の入力タイミングと、
クロック信号の入力タイミングと、
データ信号の入力論理スレッショルドと、
のうち少なくとも一つが互いに異なるように設定され、
前記第１及び第２の記憶回路の出力の一致／不一致を判定する判定回路を備え、
前記第１及び第２の記憶回路のうち予め定めた一方の記憶回路の出力が、レジスタの出力データとされる、ことを特徴とするパイプラインレジスタ回路。
【請求項８】
請求項７記載のパイプラインレジスタ回路は、１クロックサイクルの間に、前記パイプラインレジスタ回路を前後に有する演算回路での演算が終了し、前段の演算回路の演算結果が前記パイプラインレジスタ回路から次段の演算回路に入力されるという動作が、クロックサイクル毎に繰り返されるパイプラインレジスタ回路を構成し、
前記パイプラインレジスタ回路が、前段の演算回路の演算結果が正しいか否かを判定する目的のために、前段の演算回路から演算結果のデータ信号を得るタイミングは、
前記パイプラインレジスタ回路が、次段の演算回路にデータ信号を出力するタイミングの前にあり、前段の演算回路の故障を予測することを可能としてなる、ことを特徴とするパイプラインレジスタ回路。
【請求項９】
請求項１乃至６のいずれか一に記載の故障予測回路を備え、
前記故障予測回路の前記データ線を入力とし、前記故障予測回路の前記第１の記憶回路の出力を、パイプラインレジスタ回路の出力とする、ことを特徴とするパイプラインレジスタ回路。
【請求項１０】
クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を備え、
前記パイプラインレジスタ回路は、請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路よりなり、
同等の論理演算又は算術演算を行う第１及び第２の演算回路を備え、
前記第１及び第２の演算回路の入力は、前記パイプラインレジスタ回路の出力に接続され、
前記第１及び第２の演算回路の出力の一方を選択して、次段のパイプラインレジスタ回路の入力に接続するセレクタ回路を備え、
前記判定回路の結果を切替制御信号として、前記セレクタ回路の切り替えが行われる、ことを特徴とする半導体集積回路。
【請求項１１】
クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を備え、
前記パイプラインレジスタ回路は、請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路よりなり、
同等の論理演算又は算術演算を行う第１及び第２の演算回路と、
前記パイプラインレジスタ回路の出力と、前記第１の演算回路と前記第２の演算回路の入力の接続を切り替えるスイッチ回路と、
前記第１及び第２の演算回路の出力の一方を選択して、次段のパイプラインレジスタ回路の入力に接続するセレクタ回路と、
を備え、
前記判定回路の判定結果を切替制御信号として、前記スイッチ回路及び前記セレクタ回路の切り替えが行われる、ことを特徴とする半導体集積回路。
【請求項１２】
前記スイッチ回路と前記セレクタ回路との切り替えを制御する切替制御信号をそれぞれ生成する回路を備え、前記セレクタ回路が切り替わるタイミングは、前記スイッチ回路が切り替わるタイミングより後であり、１クロック周期以上遅れるよう制御する、ことを特徴とする請求項１１記載の半導体集積回路。
【請求項１３】
クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を備え、
前記パイプラインレジスタ回路は、請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路よりなり、
前記判定回路で不一致を検出され、故障が予測されると、前記パイプラインレジスタ間をシリアルに接続するスキャンパスを通して、前記不一致の情報をチップ内の所定の箇所に集め、前記チップ内のどこの故障予測回路で故障が予測されたかに関する情報を記憶する回路を有する、ことを特徴とする半導体集積回路。
【請求項１４】
請求項１３記載の半導体集積回路において、スキャンクロックの数を数えることで、前記パイプラインレジスタ回路上のどこの故障予測回路で故障予測されたかを、同定可能となる、ことを特徴とする半導体集積回路。
【請求項１５】
請求項１３又は１４記載の半導体集積回路において、
チップ内のどこの故障予測回路で故障予測されたかを、前記チップ内、又はチップ外に設けられた不揮発メモリに記憶する、ことを特徴とする半導体集積回路。
【請求項１６】
請求項１、２、４、５、６のいずれか一に記載の故障予測回路を備え、前記遅延回路の遅延値が、チップ製造後に調整される、ことを特徴とする半導体集積回路。
【請求項１７】
請求項３記載の故障予測回路を備え、前記第１、第２の記憶回路の論理スレショルドがチップ製造後に調整される、ことを特徴とする半導体集積回路。
【請求項１８】
請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路を複数段備え、
前記複数段のパイプラインレジスタ回路のそれぞれが、前記判定回路の比較結果が、前記第１の記憶回路と前記第２の記憶回路の記憶結果が不一致を示す場合、この情報を、後段に伝達する論理回路を備えている、ことを特徴とする半導体集積回路。
【請求項１９】
請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路を複数段備え、
前記複数段のパイプラインレジスタ回路の各々に対応して、
前記判定回路の出力と、前段の出力との一方を選択するセレクタと、
前記セレクタの出力を保持し後段に出力する保持回路と、
を備えている、ことを特徴とする半導体集積回路。
【請求項２０】
請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路を複数段備え、
同等の論理演算又は算術演算を行う第１及び第２の演算回路を備え、
前記第１及び第２の演算回路の入力は、スイッチ回路を介して、前記パイプラインレジスタ回路の出力に接続され、
前記第１又は第２の演算回路の出力の一方を選択して、次段のパイプラインレジスタ回路の入力に接続するセレクタ回路を備え、
前記判定回路の判定結果を切替制御信号として、前記スイッチ回路及び前記セレクタ回路の切り替えが行われる、ことを特徴とする半導体集積回路。
【請求項２１】
演算回路から出力されるデータ信号を入力し、入力されるクロック信号に応答してサンプル出力するレジスタとして第１及び第２の記憶回路を用意し、
前記第１及び第２の記憶回路のデータのサンプリングに関して、
データ信号の入力タイミングと、
クロック信号の入力タイミングと、
データ信号の入力論理スレッショルドと、
のうち少なくとも一つが互いに異なるように設定する工程と、
クロック線の論理レベルが、第１の論理レベルから第２の論理レベルに変化する時に、
前記第１の記憶回路と前記第２の記憶回路の出力を比較する工程と、
前記第１の記憶回路と前記第２の記憶回路の出力の比較結果に基づき、前記演算回路の故障の種類又は故障箇所を予測する工程と、
を含む、ことを特徴とする故障予測方法。
【請求項２２】
前記第１及び第２の演算回路が、それぞれ、機能ブロックに分割されたものであり、
前記第１及び第２の演算回路の複数の出力に対して、故障の有無を判定する故障判定回路を備え、
前記故障判定回路における判定結果に応じて、前記パイプラインレジスタ回路の出力先の、前記第１及び第２の演算回路の対応する入力への切替えと、前記第１及び第２の演算回路の出力の、次段の対応する前記パイプラインレジスタ回路の入力への選択を行う、ことを特徴とする請求項１０−１２、２０のいずれか一に記載の半導体集積回路。
【請求項２３】
クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を備え、前記パイプラインレジスタ回路は、請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路よりなり、
同等の論理演算又は算術演算を行う第１及び第２の演算回路を備え、
前記第１及び第２の演算回路が、それぞれ、機能ブロックに分割されたものであり、
前記パイプラインレジスタ回路と、前記パイプラインレジスタ回路の出力と前記第１の演算回路と前記第２の演算回路の入力の接続を切り替えるスイッチ回路と、前記第１又は第２の演算回路の出力の一方を選択して次段のパイプラインレジスタ回路の入力に接続するセレクタ回路と、を、前記第１及び第２の演算回路の複数の入力と出力に対応して備え、
複数の前記パイプラインレジスタ回路に対して、複数の前記パイプラインレジスタ回路の前記判定回路からの判定結果を入力し、故障の有無を判定する故障判定回路を備え、
前記故障判定回路における判定結果に応じて、前記スイッチ回路は、対応する前記パイプラインレジスタのデータの出力先と前記第１及び第２の演算回路の対応する入力との接続の切替えを行い、前記セレクタ回路は、前記第１及び第２の演算回路の出力の一方を選択して、次段の対応する前記パイプラインレジスタ回路への入力とする、ことを特徴とする半導体集積回路。
【請求項２４】
一の前記パイプラインレジスタ回路の前記判定回路における判定結果が故障を示すとき、前記判定結果は、一の前記パイプラインレジスタ回路の入力に作用する他の前記パイプラインレジスタ回路の出力と前記第１及び第２の演算回路の入力との接続の切替えを行うスイッチ回路に伝達され、前記スイッチ回路は、一の前記パイプラインレジスタ回路における故障の判定結果に応じて、他の前記パイプラインレジスタ回路の出力と前記第１及び第２の演算回路の入力との接続の切替えを行う、ことを特徴とする請求項１０−１２、２０、２２のいずれか一に記載の半導体集積回路。
【請求項２５】
同等の論理演算又は算術演算を行う第１及び第２の演算回路を有する２重化論理回路を複数備え、
前記２重化論理回路の前記第１及び第２の演算回路の出力の一方を選択して出力するセレクタ回路と、
前記セレクタ回路の出力を受けるパイプラインレジスタ回路と、
前記パイプラインレジスタ回路の出力と、前記パイプラインレジスタ回路の出力を受ける、前記２重化論理回路の前記第１及び第２の演算回路の入力との接続を切替えるスイッチ回路と、
を含む故障予測レジスタ回路を複数備え、
前記パイプラインレジスタ回路は、請求項７乃至９のいずれか一に記載のパイプラインレジスタ回路よりなり、
一の前記故障予測レジスタ回路の前記パイプラインレジスタ回路における前記判定回路の判定結果は、
一つも故障予測レジスタ回路を介さずに、１又は複数の前記２重化論理回路を通して、一の前記故障予測レジスタ回路に接続されるスイッチ回路に対して、
切替を行う信号として、直接、供給される、又は、
前記判定結果とともに、他の前記故障予測レジスタ回路の前記パイプラインレジスタ回路における前記判定回路の判定結果を入力し、入力される複数の前記判定結果のうちの１つでも故障を示すときに、切替を行う信号を出力する論理回路を介して、供給される、ことを特徴とする半導体集積回路。
【請求項２６】
前記演算回路を機能ブロックに分割し、複数の前記機能ブロックの出力に対して故障の有無を判定する故障判定回路を備え、
前記故障判定回路の判定結果に応じて、前記パイプラインレジスタ回路の出力先の前記機能ブロックへの入力の切替えと、前記機能ブロックからの出力の次段の前記パイプラインレジスタへの入力の切替えを行い、
一の前記パイプラインレジスタ回路における判定結果が故障を示すとき、一の前記パイプラインレジスタ回路への入力に作用する他の前記パイプラインレジスタ回路の出力先の、演算回路又は機能ブロックの切替えが行われ、
前記故障判定回路の結果に応じて、前記機能ブロックへの出力と前記機能ブロックからの入力を切替える第１の領域と、
前記判定回路の結果に応じて、前記第１及び第２の演算回路への出力を切替える第２の領域と、を含む、ことを特徴とする請求項１０−１２、２０、２２のいずれか一に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の記載］
本発明は、日本国特許出願：特願２００６−２２７９４２号（平成１８年８月２４日出願）及び特願２００７−０１２８７６号（平成１９年１月２３日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、特に高い信頼性を提供する半導体集積回路に関し、特に、故障予測回路と方法及び該故障予測回路を備えたパイプラインレジスタ回路と半導体集積回路に関する。
【背景技術】
【０００２】
従来の半導体集積回路は、クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のフリップフロップ回路を用いた同期回路で構成され、パイプラインレジスタ回路の間には、論理演算又は算術演算を行う演算回路がある。【０００３】
特許文献１（Blaauwらの米国Patent Application Publication ＵＳ２００５／０２４６６１３Ａ１）のFig. 1、2、3では、演算回路の出力を通常のフリップフロップ回路と共に、クロックの半周期の期間内に演算回路の出力をラッチ回路で受け、両者の値が異なっているかどうかで演算回路の遅延時間がクロックサイクル時間を越えているかどうかを判断する構成が開示されている。【０００４】
また、特許文献１のFig.4A、4Bに示されているように、演算回路の遅延時間がクロックサイクル時間を越えた場合、半導体集積回路を一時停止し、ラッチ回路で受けた演算結果を用いて、処理を再開させる構成が開示されている。また、特許文献１のFig.22、25では、演算回路の出力を通常のフリップフロップ回路と共に、クロックの半周期の期間内に演算回路の出力が変化しないか否かを検知する遷移検知ラッチ回路で受け、両者の値が異なっているかどうかで演算回路の遅延時間がクロックサイクル時間を越えているか否かを判断する構成が開示されている。特許文献１のFig. 23、24A、24B、24Cには、演算回路の遅延時間がクロックサイクル時間を越えた場合、その演算結果を捨て、可能であれば、同じ演算回路を用いて、処理を再開させる構成が開示されている。【０００５】
また、非特許文献１（Dasその他、"A Self-Tuning DVS Processor Using Delay-ErrorDetection and Correction"、IEEE Journal of Solid-State Circuits, Vol. 41, No. 4,April 2006 の p 792-804）には、そのFig.2に、演算回路の出力を通常のフリップフロップ回路と共に、クロックの半周期の期間内に演算回路の出力をラッチ回路で受け、両者の値が異なっているかどうかで演算回路の遅延時間がクロックサイクル時間を越えているかどうかを判断する構成が開示されている。【０００６】
また、演算回路の遅延時間がクロックサイクル時間を越えた場合、半導体集積回路を一時停止し、ラッチ回路で受けた演算結果を用いて、処理を再開させる構成が開示されている。【０００７】
【特許文献１】米国特許第２００５／０２４６６１３Ａ１号明細書
【非特許文献１】Dasその他、"A Self-Tuning DVS Processor Using Delay-Error Detection and Correction"、IEEE Journal of Solid-State Circuits, Vol. 41, No.4, April 2006 の p 792-804
【発明の開示】
【発明が解決しようとする課題】
【０００８】
以上の特許文献１及び非特許文献１の開示事項は、本書に引用をもって繰り込み記載されているものとする。以下に本発明による関連技術の分析を与える。
一般的に、従来の半導体集積回路では、演算回路を構成するトランジスタ又は配線の性能が経年変化により劣化することで、演算回路の遅延時間が増加し、その遅延時間がクロックサイクル時間を超えた場合、間違った演算結果を出力することになる。【０００９】
また、演算回路での演算が間違っているかどうかを知ることが困難であった。【００１０】
特許文献１、非特許文献１の構成の場合、以下の問題がある。【００１１】
第１の問題は、演算回路での演算結果が間違っていることが分かった時点では、既に間違った結果はフリップフロップ回路から出力されている、ということである。【００１２】
すなわち、演算回路の出力を通常のフリップフロップ回路と共に、フリップフロップ回路がデータを取得してその結果を出力するタイミングからクロックの半周期の期間に渡って演算回路の出力を観察するラッチ回路で受け、両者の値を比較することで、演算回路の遅延時間がクロックサイクル時間を越えるかどうか（つまり、間違った演算を行うかどうか）を判断しているため、演算結果が間違っていることが分かった時点では、既に間違った結果が、フリップフロップ回路から出力されてしまっている。つまり、間違った演算が起こる前に、事前にそのことを予測することができなかった。【００１３】
第２の問題は、演算回路の最小遅延時間を大きくしないと、誤動作を起こしてしまうということである。【００１４】
演算回路の出力を通常のフリップフロップ回路と共に、クロックの半周期の期間に渡って出力結果を観察するラッチ回路で受けているため、例えば、非特許文献１（Dasらの論文）のFig.2(a)のRAZOR FF は、ホールド時間が長くなり、演算回路の最小遅延時間を大きくしないと、誤動作を起こす。このことは、演算回路の規模を増大させ、チップ面積の増大や消費電力の増加を招く。【００１５】
第３の問題は、同じ演算を行う演算回路は１つしかないため、異常や故障を検知したのち、半導体集積回路を一時停止し、ラッチ回路で受けた演算結果を再度使用して、処理を再開させる必要がある、ということである。あるいは、異常や故障を検知したのち、その演算結果を捨て、可能であれば、同じ演算回路を用いて、処理を再開させる必要があるということである。【００１６】
このため、経年変化などで演算回路が劣化した場合などでは、半導体集積回路は動作不能になるか、あるいは例えば電源電圧を上げるとか、クロック周波数を低くするなどして、性能を低下させて動作させる必要が生じることになる。つまり、元の性能で動作を継続させることはできなかった。【００１７】
したがって、本発明の目的は、特に高い信頼性を実現可能とする故障予測回路、パイプラインレジスタ回路、及び半導体集積回路と故障予測方法を提供することにある。【００１８】
また、本発明の他の目的は、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、それが演算回路の異常や故障となることを、異常や故障となる前に予測する故障予測回路、パイプラインレジスタ回路、及び半導体集積回路と故障予測方法を提供することにある。【００１９】
また、本発明のさらに他の目的は、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、チップ内のどの位置に異常や故障が生じる可能性が高まっているかを事前に知ることを可能とする、故障予測回路、パイプラインレジスタ回路、及び半導体集積回路と故障予測方法を提供することにある。【００２０】
また、本発明のさらに他の目的は、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、常に、速度や電力の両面で性能低下を回避可能とする故障予測回路、パイプラインレジスタ回路、及び半導体集積回路と故障予測方法を提供することにある。
【課題を解決するための手段】
【００２１】
本発明の１つのアスペクト（側面）に係る故障検出回路は、データ線に遅延回路を接続し、クロック線の論理レベルが変化する時に遅延回路の入力と出力のそれぞれの論理レベルを記憶する第１、第２記憶回路と、前記第１、第２の記憶回路の結果が同一であるかどうかを判断する判定回路を備えている。【００２２】
本発明に係る故障検出回路においては、クロック線に遅延回路を接続し、クロック線の論理レベルが変化する時にデータ線の論理レベルを記憶する第１の記憶回路と、前記遅延回路の出力の論理レベルが変化する時にデータ線の論理レベルを記憶する第２の記憶回路と、前記第１と第２の記憶回路の結果が同一であるかどうかを判断する判定回路を備えた構成としてもよい。【００２３】
本発明に係る故障検出回路においては、クロック線の論理レベルが変化する時にデータ線の論理レベルを記憶する第１の記憶回路及び第２の記憶回路と、前記第１と第２の記憶回路の結果が同一であるかどうかを判断する判定回路を備え、第１の記憶回路がデータ線の論理レベルを決める論理スレッショルドと第２の記憶回路がデータ線の論理レベルを決める論理スレッショルドとが互いに異なる値に設定されている。【００２４】
本発明に係る故障検出回路においては、故障が予測された場合、そのことを記憶する回路を備え、第１、第２の記憶回路の結果が同一であるかどうかを判断し、同一でない場合その結果を保持する回路を備えた構成としてもよい。【００２５】
本発明の他のアスペクトに係るパイプラインレジスタ回路は、演算回路から出力されるデータ信号を入力するレジスタ回路であって、入力されるデータ信号を、入力されるクロック信号に応答してサンプル出力する第１及び第２の記憶回路を備え、前記第１の記憶回路と前記第２の記憶回路はデータサンプリングに関して、
データ信号の入力タイミングと、
クロック信号の入力タイミングと、
データ信号の入力論理スレッショルドと、
のうち少なくとも一つが互いに異なるように設定され、
前記第１及び第２の記憶回路からの出力の一致／不一致を判定する手段を備え、
前記第１及び第２の記憶回路のうち予め定めた一方の記憶回路の出力がレジスタの出力データとされる。
本発明において、１クロックサイクルの間に、前記パイプラインレジスタ回路を前後に有する前記演算回路が演算を終了し、演算結果が前記パイプラインレジスタ回路から次段の演算回路に入力されるという動作が、クロックサイクル毎に繰り返され、前記パイプラインレジスタ回路が、前段の演算回路の演算結果が正しいかどうかを判定する目的のために、前段の演算回路から演算結果のデータ信号を得るタイミングが、前記パイプラインレジスタ回路が、次段の演算回路にデータ信号を出力するタイミングの前にあり、前段の演算回路の故障を、事前に予測することを可能としている。【００２６】
本発明に係るパイプラインレジスタ回路は、前記した本発明の故障予測回路を備え、前記故障予測回路の前記データ線を入力とし、前記故障予測回路の前記第１の記憶回路の出力を、パイプラインレジスタ回路の出力とする。【００２７】
本発明に係るパイプラインレジスタ回路においては、クロック線の論理レベルが第１の論理レベルから第２の論理レベルに変化する時に、データ入力線の論理レベルをサンプルして保持し、前記論理レベルをデータ出力線に出力するものであって、前記データ入力線の論理レベルを保持する、複数の記憶回路を備え、前記複数の記憶回路が、前記データ入力線の論理レベルを保持するタイミングを互いに時間的に離間させる遅延手段を有し、時間的に最後に保持した記憶回路の出力を、データ出力線から出力し、前記複数の記憶回路で保持した論理レベルを比較する判定回路を備えている。【００２８】
本発明に係る半導体集積回路においては、クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を用いた同期回路において、同じ論理演算又は算術演算を行う２つの演算回路を備え、それぞれの演算回路の入力信号はパイプラインレジスタ回路の出力信号と繋がり、それぞれの演算回路の出力信号のどちらがパイプラインレジスタ回路の入力信号と繋がるかを決めるセレクタ回路を備え、パイプラインレジスタ回路内に前記の故障予測回路を有し、判定回路の結果により、前記セレクタ回路が切り替わる構成としてもよい。【００２９】
本発明に係る半導体集積回路においては、クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を用いた同期回路において、同じ論理演算又は算術演算を行う２つの演算回路を備え、それぞれの演算回路の入力信号のどちらがパイプラインレジスタ回路の出力信号と繋がるかを決めるスイッチ回路と、それぞれの演算回路の出力信号のどちらがパイプラインレジスタ回路の入力信号と繋がるかを決めるセレクタ回路を備え、パイプラインレジスタ回路内に前記故障予測回路を有し、判定回路の結果により、前記スイッチ回路及びセレクタ回路が切り替わる構成としてもよい。【００３０】
本発明に係る半導体集積回路においては、前記スイッチ回路と前記セレクタ回路との切り替えを制御する切替制御信号をそれぞれ生成する回路を備え、前記セレクタ回路が切り替わるタイミングは、前記スイッチ回路が切り替わるタイミングより後であり、１クロック周期以上遅れるよう制御する、ようにしてもよい。【００３１】
本発明に係る半導体集積回路においては、クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を用いた同期回路において、パイプラインレジスタ回路内に前記故障予測回路を有し、故障予測回路の判定回路が故障を予測すると、パイプラインレジスタ間をシリアルに接続するスキャンパスを通して、その情報をチップ内の特定の箇所に集め、そこでチップ内のどこの故障予測回路で故障予測されたかを記憶する回路を備えた構成としてもよい。【００３２】
本発明に係る半導体集積回路においては、前記半導体集積回路において、スキャンクロックの数を数えることでパイプラインレジスタ回路上のどこの故障予測回路で故障予測されたかを知る構成としてもよい。【００３３】
本発明に係る半導体集積回路においては、チップ内のどこの故障予測回路で故障予測されたかをチップ内又は外の不揮発メモリに記憶する構成としてもよい。【００３４】
本発明に係る半導体集積回路においては、遅延回路の遅延値や論理スレッショルドの値をチップ製造後に調整できるようにしてもよい。【００３５】
本発明に係る故障予測方法は、演算回路から出力されるデータ信号を入力し、入力されるクロック信号に応答してサンプル出力する第１及び第２の記憶回路に関して、
データ信号の入力タイミングと、
クロック信号の入力タイミングと、
データ信号の入力論理スレッショルドと、
のうち少なくとも一つが互いに異なるように設定され、
クロック線の論理レベルが、第１の論理レベルから第２の論理レベルに変化する時に、
前記第１の記憶回路と前記第２の記憶回路の出力を比較する工程と、
前記第１の記憶回路と前記第２の記憶回路の出力の比較結果に基づき、前記演算回路の故障の種類又は故障箇所を予測する工程と、
を含む。【００３６】
本発明に係る半導体集積回路においては、前記第１及び第２の演算回路が、それぞれ、機能ブロックに分割されたものであり、前記第１及び第２の演算回路の複数の出力（機能ブロックの出力）に対して、故障の有無を判定する故障判定回路を備えている。そして、前記故障判定回路における判定結果に応じて、前記パイプラインレジスタの出力先を、前記第１及び第２の演算回路の対応する入力（対応する機能ブロックへの入力）に切替え、前記第１及び第２の演算回路の出力の一方を選択し、次段の対応する前記パイプラインレジスタ回路の入力に供給する構成とされる。【００３７】
本発明に係る半導体集積回路においては、クロック線の論理レベルの変化によって入力線の論理レベルを出力線に出力する複数のパイプラインレジスタ回路を備え、前記パイプラインレジスタ回路は、前記した本発明のパイプラインレジスタ回路よりなり、同等の論理演算又は算術演算を行う第１及び第２の演算回路を備え、前記第１及び第２の演算回路が、それぞれ、機能ブロックに分割されたものであり、前記パイプラインレジスタ回路と、前記パイプラインレジスタ回路の出力と前記第１の演算回路と前記第２の演算回路の入力の接続を切り替えるスイッチ回路と、前記第１又は第２の演算回路の出力の一方を選択して次段のパイプラインレジスタ回路の入力に接続するセレクタ回路と、を、前記第１又は第２の演算回路の複数のデータ線に対応して備えている。複数の前記パイプラインレジスタ回路に対して、複数の前記パイプラインレジスタ回路の前記判定回路からの判定結果を入力し、故障の有無を判定する故障判定回路を備え、前記故障判定回路における判定結果に応じて、前記スイッチ回路は、前記パイプラインレジスタの出力先と前記第１及び第２の演算回路の対応する入力（機能ブロックの入力）との接続の切替えを行い、前記セレクタ回路は、前記第１及び第２の演算回路の出力の一方を選択し、次段の対応する前記パイプラインレジスタ回路の入力に供給する構成としてもよい。【００３８】
本発明に係る半導体集積回路においては、一の前記パイプラインレジスタ回路の前記判定回路における判定結果が故障を示すとき、前記判定結果は、一の前記パイプラインレジスタ回路の入力に作用する他の前記パイプラインレジスタ回路の出力と前記第１及び第２の演算回路の入力との接続の切替えを行うスイッチ回路に伝達され、前記スイッチ回路は、一の前記パイプラインレジスタ回路における故障の判定結果に応じて、他の前記パイプラインレジスタ回路の出力と前記第１及び第２の演算回路の入力との接続の切替えを行う構成としてもよい。【００３９】
本発明に係る半導体集積回路においては、同等の論理演算又は算術演算を行う第１及び第２の演算回路を有する２重化論理回路を複数備え、前記２重化論理回路の前記第１及び第２の演算回路の出力の一方を選択して出力するセレクタ回路と、前記セレクタ回路の出力を受けるパイプラインレジスタ回路と、前記パイプラインレジスタ回路の出力と、前記パイプラインレジスタ回路の出力を受ける、前記２重化論理回路の前記第１及び第２の演算回路の入力との接続を切替えるスイッチ回路と、を含む故障予測レジスタ回路を複数備えている。前記パイプラインレジスタ回路は、前記した本発明のパイプラインレジスタ回路よりなる。一の前記故障予測レジスタ回路の前記パイプラインレジスタ回路における前記判定回路の判定結果は、
一つも故障予測レジスタ回路を介さずに、１又は複数の前記２重化論理回路を通して、一の前記故障予測レジスタ回路に接続されるスイッチ回路に対して、切替を行う信号として、直接、供給される、又は、
前記判定結果とともに、他の前記故障予測レジスタ回路の前記パイプラインレジスタ回路における前記判定回路の判定結果を入力し、入力される複数の前記判定結果のうちの１つでも故障を示すときに、切替を行う信号を出力する論理回路を介して、供給される。【００４０】
本発明においては、前記演算回路を機能ブロックに分割し、複数の前記機能ブロックの出力に対して故障の有無を判定する故障判定回路を備え、前記故障判定回路の判定結果に応じて、前記パイプラインレジスタの出力先の前記機能ブロックへの入力の切替えと、前記機能ブロックからの出力の次段の前記パイプラインレジスタへの入力の切替えを行い、
一の前記パイプラインレジスタ回路における判定結果が故障を示すとき、一の前記パイプラインレジスタ回路への入力に作用する他の前記パイプラインレジスタ回路の出力先の、演算回路又は機能ブロックの切替えが行われ、前記判定回路の結果に応じて、前記機能ブロックへの出力と前記機能ブロックからの入力を切替える第１の領域と、前記判定回路の結果に応じて、前記第１及び第２の演算回路への出力を切替える第２の領域を含む構成としてもよい。
【発明の効果】
【００４１】
本発明によれば、故障には至らずとも将来の故障となり得る要因を事前に察知することにより、半導体集積回路の動作を継続させつつ、演算回路等の故障を事前に検出することを可能としている。【００４２】
本発明によれば、演算回路の規模の増大、チップ面積の増大、消費電力の増加を回避して、演算回路等の故障を事前に検出することができる。【００４３】
本発明によれば、チップ内のどの位置に異常や故障が生じる可能性が高まっているかを事前に知ることができる。【００４４】
本発明によれば、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、常に速度や電力の両面で性能低下が起きないようにすることができる。【００４５】
以上により、本発明によれば、高信頼性の半導体集積回路を提供することができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の一実施例の構成を示す図である。
【図２】フリップフロップ回路を示す図である。
【図３】フリップフロップ回路の動作タイミングを示す図である。
【図４】同期回路の動作タイミングを示す図である。
【図５】本発明の第１の実施例の構成を示す図である。
【図６】本発明の第１の実施例の動作タイミングを示す図である。
【図７】本発明の第２の実施例の構成を示す図である。
【図８】本発明の第３の実施例の構成を示す図である。
【図９】本発明の第３の実施例の動作タイミングを示す図である。
【図１０】本発明の第４の実施例の構成を示す図である。
【図１１】本発明の第４の実施例の動作タイミングを示す図である。
【図１２】本発明の第５及び第６の実施例の構成を示す図である。
【図１３】本発明の第７の実施例の構成を示す図である。
【図１４】本発明の第８の実施例の構成を示す図である。
【図１５】本発明の第９の実施例の構成を示す図である。
【図１６】本発明の第１０の実施例の構成を示す図である。
【図１７】本発明の第１１の実施例の構成を示す図である。
【図１８】本発明の第１２の実施例の構成を示す図である。
【図１９】本発明の第１２の実施例の構成を示す図である。
【符号の説明】
【００４７】
１０１、１０２  記憶回路
１０３  遅延回路
１０４  判定回路
１１０  パイプラインレジスタ回路
１１１、１１４  演算回路
１１２  フリップフロップ回路
１１３  セレクタ回路
１１５  スイッチ回路
１１６  ＯＲ回路
１１７、１１８  切り替え状態記憶回路
１１８−１、１１８−２  切替え状態記憶回路の入出力線
１１９  スイッチ切り替え線（故障予測線）
１１９−１  故障予測出力線
１１９−２  スイッチ切り替え線
１２０  セレクタ切り替え線
１２１  故障判定回路
１２２−１３２、１４２  故障予測レジスタ回路
１３３−１３９  ２重化論理回路
１４０  一つの故障が予測された際に切り替わる範囲
１４１  論理回路（ＯＲ回路）
２０１  データ入力線
２０２  データ出力線
２０３、２０６  クロック線
２０４、２０４−１、２０５、２０８  エラー出力線
２０７  セレクタ切り替え線
２０９、２１１  データ入力線
２１０、２１２  データ出力線
２２０  クロック分配回路
【発明を実施するための最良の形態】
【００４８】
本発明の概要について説明する。本発明の故障予測回路は、演算回路から出力されるデータ信号を入力し、入力されるクロック信号に応答してサンプル出力する第１及び第２の記憶回路を備え、第１及び第２の記憶回路において、データ信号の入力タイミング、クロック信号の入力タイミングと、データ信号の入力論理スレッショルドのうち少なくとも一つが互いに異なるように設定され、前記第１及び第２の記憶回路からの出力の一致／不一致を判定する構成とされる。【００４９】
・半導体集積回路を構成するトランジスタや配線が経年変化や応力などにより劣化した場合、あるいは、
・配線と配線の間にごみなどがあり、本来接続されてはいけない配線が高抵抗な状態で接続されている場合、あるいは、
・配線間隔が異常に近づき、本来接続されてはいけない配線が高い容量で接続されている場合、あるいは、
・配線と配線を接続するビアなどの接続に異常があり、接続部分が高抵抗になる場合、
など、
演算回路を構成するデバイスや配線に異常や故障がある場合、該演算回路の遅延時間は、演算回路が正常な状態のときの遅延時間よりも長くなるという特徴がある。【００５０】
一般に、このような劣化が直ちに半導体集積回路の動作不能や誤動作、誤信号発信等の故障に至るというわけではなく、時間とともに、劣化が徐々に進行する。【００５１】
前記したように、従来技術においては、
・半導体集積回路の故障が生じて初めて故障の検出が可能となる、
・故障が起きた場合には動作を停止する必要がある、
といった問題があった。【００５２】
本発明においては、故障には至らずとも、将来の故障となり得る要因を、事前に察知することにより、半導体集積回路の動作を継続させつつ、その故障を、事前に検出することを可能としている。【００５３】
すなわち、本発明においては、演算回路の遅延時間が長くなり、クロックサイクル時間を越える前に、遅延時間が長くなっていることを検知できれば、演算回路に異常や故障が生じ得ることを事前に検知できる。【００５４】
演算回路に異常や故障が生じ得ることを、事前に検知することができれば、
・半導体集積回路の使用を継続させたままで、半導体集積回路を使っているユーザに警告を発したり、
・当該演算回路を使わないように回路を再構成したりする、
ことができ、
その結果、故障の影響を最小限にすることが可能である。【００５５】
これは、一般的な半導体集積回路は、クロック信号に同期して動作するため、演算回路が劣化等の不具合で遅延時間が延びても、演算回路の遅延時間がクロックサイクル時間を越えない場合は、故障とならない性質を利用したものである。【００５６】
本発明の半導体集積回路におけるパイプラインレジスタ回路は、クロック線の論理レベルが変化する時に、データ入力線の論理レベルを記憶するフリップフロップ回路、ラッチ回路などの第１、第２の記憶回路（１０１、１０２）を備え、第１、第２の記憶回路の入力データのタイミングや、入力クロックのタイミングや、入力の論理スレッショルドを変える。第１、第２の記憶回路の出力を比較して論理回路の遅延時間がクロックサイクル時間に近づいているかどうかを判断する判定回路（１０４）を備えている。【００５７】
かかる構成により、演算回路の遅延時間がクロックサイクル時間に近づいていることを検知し、演算回路に異常や故障が生じていることを事前に検知できる。【００５８】
また、パイプラインレジスタ回路のホールド時間を通常のフリップフロップ回路と比較して大きくしないため、演算回路の規模の増大や、チップ面積の増大や消費電力の増加が生じない。【００５９】
従来技術においては、実行中の動作状態を測定する方法は存在するものの、あくまでも故障が生じて初めて探知するものにすぎず、故障を事前に予測することは不可能であった。なんとなれば、従来技術の場合、
・パイプラインレジスタ回路が、次段の演算回路に出力するデータを、パイプラインレジスタ回路の前段の演算回路から得るタイミングをａとし、
・パイプラインレジスタ回路が、次段の演算回路にデータを出力するタイミングをｂとし、
・パイプラインレジスタ回路が、前段の演算回路の演算結果が正しいかどうかを判定する目的のために、パイプラインレジスタ回路の前段の演算回路から演算結果を得るタイミングをｃとしたとき、
ａの後にｂがあり、ｂの後にｃが起こるためである。あるいは、ａとｂとｃが同時に起こるためである。【００６０】
つまり、ｃがｂの前に無いため、従来技術では、故障を事前に予測することは不可能であった。【００６１】
これに対して、本発明においては、ｃはｂの前にあるため、故障を事前に予測することが可能である。【００６２】
また、本発明の半導体集積回路では、データ入力線の論理レベルを記憶するフリップフロップ回路等の、第１、第２の記憶回路のいずれの出力信号を、パイプラインレジスタ回路の出力とするかを予め決めている。【００６３】
ところで、第１、第２の記憶回路の結果を比較してからどちらの出力信号を出力するかを決めた場合、演算結果が出力されるタイミングが比較結果により異なることになり、通常のディジタル回路であれば、このパイプラインレジスタ回路につながる演算回路のタイミングに影響を与えてしまう。最悪、このパイプラインレジスタ回路につながる演算回路のタイミングが、比較結果次第で大きく異なり、その結果、半導体集積回路全体の動作が、比較結果によって異なったものとなってしまうことにもなる。【００６４】
これに対して、本発明の半導体集積回路においては、第１、第２の記憶回路いずれの出力信号を、パイプラインレジスタ回路の出力とするかを予め決めている。このため、比較結果によらず、このパイプラインレジスタ回路につながる演算回路のタイミングに影響を与えない。【００６５】
また、本発明の半導体集積回路におけるパイプラインレジスタ回路では、故障予測回路の判定回路が故障を予測すると、その場所を記憶する手段を有する。【００６６】
例えば、パイプラインレジスタ間をシリアルに接続するスキャンパスを通して、その情報をチップ内の特定の箇所に集め、チップ内の特定の箇所で、チップ内のどこの故障予測回路で故障予測されたかを記憶する。かかる構成により、故障が起きた場所が明確になり、例えばユーザから返品されてきたチップをメーカ側で故障解析することを容易にする。場所を記憶する手段は、不揮発メモリなどを利用することもできる。【００６７】
また、本発明の半導体集積回路では、２つ以上の同一機能を備えている演算回路を各パイプライン段に持ち、故障予測回路の判定回路が故障を予測すると、別の予備の演算回路が動作するように回路を再構成することができる。【００６８】
また、本発明の半導体集積回路では、同一機能を持つ演算回路を分割することにより、故障が予測されて予備の演算回路が動作した際に、その予備の演算回路に故障が発生する確率を低くすることができる。【００６９】
このために、半導体集積回路を構成するトランジスタや配線が経年変化等によって劣化した場合でも、その影響を最小限にできる。このため、例えば、常に速度や電力の両面で性能低下が起きないようにすることができる。以下実施例に即して説明する。
【実施例】
【００７０】
図１は、本発明の一実施例の構成を示す図である。図１を参照すると、複数のパイプラインレジスタ回路１１０と、複数の演算回路１１１により構成された同期回路では、クロック線２０３から入力されたクロック信号に同期して複数の演算回路１１１が所定の演算をパイプライン実行する。【００７１】
なお、「パイプライン実行」とは、１クロック周期の間に、パイプラインレジスタ回路１１０で挟まれた各演算回路が演算を終了し、演算結果が、次段に繋がる演算回路に入力されるということを、クロック周期毎に繰り返すことで、全体としてある所定の動作を行うことをいう。【００７２】
パイプラインレジスタ回路１１０には、例えば図２に示すフリップフロップ回路を用いる。フリップフロップ回路１１２は、データ入力線２０１にデータ入力端子Ｄが接続され、データ出力端子Ｑがデータ出力線２０２に接続され、クロック線２０３にクロック入力端子が接続されている。クロック線２０３の論理レベルがロー（ＬＯＷ）レベルからハイ（ＨＩＧＨ）レベルに変化したときのデータ入力線２０１の論理レベルを記憶し（サンプルし）、その値（サンプル値）を、データ出力線２０２に出力する。図２において、データ入力線が複数ビットの場合、クロック線２０３を共通とするフリップフロップ１１２が複数個設けられる。【００７３】
なお、フリップフロップ回路やラッチでは、クロック線２０３の論理レベルがローレベルからハイレベルに変化したときの時間的前後で、データが正しくラッチされることを保証するため、データ入力線２０１の論理レベルが変わってはいけない期間が存在する。この時間を、図３に示すように、セットアップ時間Ｔｓｕとホールド時間Ｔｈｏｌｄという。フリップフロップ回路がクロックの立ち上がりエッジでデータをサンプルする場合、セットアップ時間は、クロック線２０３の論理レベルがローレベルからハイレベルへ変化したとき（有効エッジ）より前に、データ入力線２０１の論理レベルが確定しなければならない時間である。ホールド時間は、クロック線２０３の論理レベルがローレベルからハイレベルに変化したとき（有効エッジ）より後に、データ入力線２０１の論理レベルを保持しなければならない時間である。【００７４】
また、クロック線２０３の論理レベルがローレベルからハイレベルに変化したときからフリップフロップ回路のデータ出力端子Ｑよりデータ出力線２０２に、データ入力線２０１の論理レベル（サンプル値）が出力されるまでのディレイ時間を、Ｔｃｌｋ−ｔｏ−Ｑという。【００７５】
図１の同期回路の中の演算回路１１１の遅延時間に求められる最大値Ｔｍａｘは、図４を参照すると、クロックの１周期Ｔｃｌｋ＿ｃｙｃから、Ｔｃｌｋ−ｔｏ−ＱとＴｓｕを引いた値である。また、遅延時間に求められる最小値Ｔｍｉｎは、ＴｈｏｌｄからＴｃｌｋ−ｔｏ−Ｑを引いた値である。この引いた値が負の値である場合は、演算回路１１１の遅延時間に求められる最小値は特に無くなり、ゼロでも良くなる。通常のフリップフロップ回路では、この値はゼロと思ってよい。この場合、このフリップフロップ回路を用いると、例えば、演算回路をなくして、単にパイプラインレジスタ回路を従属接続しただけでも同期回路は正常動作する。【００７６】
同期回路内の演算回路１１１の遅延時間は、上記の最大値Ｔｍａｘと最小値Ｔｍｉｎの間になるように設計する必要がある。【００７７】
遅延時間に求められる最大値Ｔｍａｘが大きいほど、より複雑な演算を演算回路１１１で行うことができる。一方、遅延時間に求められる最小値Ｔｍｉｎが小さいほど、演算回路１１１に無駄な遅延を持たせる必要がなくなり、遅延回路の面積及び消費電力を小さくできるという利点がある。つまり、Ｔｃｌｋ−ｔｏ−Ｑ、Ｔｓｅｔｕｐ、及びＴｈｏｌｄは、その小さいほど性能の良いフリップフロップ回路である。【００７８】
＜第１の実施例＞
図５は、本発明のパイプラインレジスタ回路の第１の実施例の構成を示す図である。図５に示すように、データ入力線２０１に遅延回路１０３を接続し、クロック線２０３の論理レベルが変化する時に遅延回路１０３の入力と出力のそれぞれの論理レベルを記憶する第１の記憶回路１０１と第２の記憶回路１０２と、第１、第２の記憶回路１０１、１０２の結果が同一であるかどうかを判断する判定回路１０４を備えている。【００７９】
第１、第２の記憶回路１０１、１０２は、例えば、クロック線の論理レベルがローレベルからハイレベルに変化する時にデータ線の論理レベルを読み込み、その読み込まれた論理レベルを出力線に出力する通常のフリップフロップ回路１１２で構成してもよい。【００８０】
遅延回路１０３の遅延時間だけ離れた時間で同じデータ線の論理レベルを読み込み、その値が同一か否かを判定回路１０４で判断する。【００８１】
遅延回路１０３は、例えば、通常のインバータ回路で構成でき、判定回路１０４は、例えば、通常のＥＸＯＲ回路(排他的論理和)等の一致検出回路で構成できる。【００８２】
図６は、図５の構成の動作例を示すタイミング図である。フリップフロップ回路のセットアップ時間、ホールド時間、ディレイ時間をそれぞれ、
Ｔｓｕ、Ｔｈｏｌｄ、Ｔｃｌｋ−ｔｏ−Ｑとしたとき、
セットアップ時間は、Ｔｓｕと遅延回路１０３の遅延時間Ｔｖｅの和、
ホールド時間は、Ｔｈｏｌｄ、
ディレイ時間は、Ｔｃｌｋ−ｔｏ−Ｑ
で与えられる。【００８３】
演算回路の遅延時間の最大値が十分短い場合、第１の記憶回路１０１と第２の記憶回路１０２の出力は同一の値となる。【００８４】
しかし、演算回路を構成するトランジスタや配線の経年変化により、演算回路の遅延時間が増加し、その遅延時間が、
Ｔｃｌｋ＿ｃｙｃ  −  Ｔｃｌｋ−ｔｏ−Ｑ  −  Ｔｓｕ  −  Ｔｖｅ
と、
Ｔｃｌｋ＿ｃｙｃ − Ｔｃｌｋ−ｔｏ−Ｑ  −  Ｔｓｕ
の間になったとき、第１の記憶回路１０１と第２の記憶回路１０２には異なる値が保持される。なぜなら、第１の記憶回路１０１は、演算回路の演算結果を保持できるが、第２の記憶回路１０２は、演算途中の値を保持してしまい、演算回路の最終演算結果を保持できないためである。【００８５】
第１の記憶回路１０１と第２の記憶回路１０２に異なる値が保持されたとき、判定回路１０４はエラーであることをエラー出力線２０４から出力する。一方、データ出力線２０２には、正しい演算結果が保持された第１の記憶回路１０１の値が出力される。【００８６】
このようにして、本発明のパイプラインレジスタ回路では、半導体集積回路を構成するトランジスタや配線が経年変化や応力などにより劣化した場合、あるいは、配線間にごみ等があり、本来接続されてはいけない配線が高抵抗な状態で接続されている場合、あるいは、配線間隔が異常に近づき、本来接続されてはいけない配線が高い容量で接続されている場合など、演算回路の中に異常や故障があり、その演算回路の遅延時間が増加した場合、エラーが起こる前に（つまり、クロックサイクル時間を越える前に）、そのことを検知することができる。【００８７】
いま、データ入力線２０１に入力されたデータは、演算回路の遅延時間が故障などにより増加していることを考えると、時間的に後のデータが正しく、前のデータが誤っていることになる。【００８８】
記憶回路１０１は記憶回路１０２より後で、データ入力線２０１からデータを参照するため、記憶回路１０１と記憶回路１０２に保持されたデータが異なる場合、記憶回路１０１のデータが正しい値であり、記憶回路１０２のデータが誤ったデータとなる。【００８９】
データ出力線２０２は正しいデータが保持された記憶回路１０１につながっているため、間違ったデータでパイプラインレジスタ回路の次段につながる演算回路が演算を開始してしまうことがない。【００９０】
また、本実施例でのホールド時間は、記憶回路１０１を構成する通常のフリップフロップ回路と同一の値Ｔｈｏｌｄであり、前述の通り、演算回路の遅延時間に要求される最小値はゼロにすることができる。なお、判定回路１０４による比較結果を記憶する保持回路（不図示）を備え、記憶回路１０１の出力と記憶回路１０２の出力が同一でない場合、判定回路１０４の判定結果を保持回路で保持するようにしてもよい。【００９１】
＜第２の実施例＞
図７は、本発明のパイプラインレジスタ回路の第２の実施例の構成を示す図である。本実施例は、図５の前記第１の実施例と相違して、データ出力線２０２を第２の記憶回路１０２の出力から得ている。このため、第２の実施例では、データ出力線２０２には、間違った演算結果が保持された第２の記憶回路１０２の値が出力される。【００９２】
本実施例において、動作タイミングは、前記第１の実施例と同様に、図６で示される。
フリップフロップ回路のセットアップ時間、ホールド時間、ディレイ時間をそれぞれ、
Ｔｓｕ、Ｔｈｏｌｄ、Ｔｃｌｋ−ｔｏ−Ｑとしたとき、本発明の第２の実施例では、
セットアップ時間は、Ｔｓｕと遅延回路１０３の遅延時間Ｔｖｅの和、
ホールド時間は、Ｔｈｏｌｄ、
ディレイ時間は、Ｔｃｌｋ−ｔｏ−Ｑ
で与えられる。【００９３】
本実施例のパイプラインレジスタ回路では、演算回路１１１を構成するトランジスタや配線の経年変化により、演算回路の遅延時間が増加した場合、エラーが起こる前にそのことを検知することができる。【００９４】
また、本実施例において、ホールド時間は、記憶回路１０１を構成する通常のフリップフロップ回路と同一の値Ｔｈｏｌｄであり、前述の通り、演算回路の遅延時間に要求される最小値はゼロにすることができる。なお、本実施例においても、判定回路１０４による比較結果を記憶する保持回路（不図示）を備え、記憶回路１０１の出力と記憶回路１０２の出力が同一でない場合、判定回路１０４の判定結果を保持回路で保持するようにしてもよい。【００９５】
＜第３の実施例＞
図８は、本発明のパイプラインレジスタ回路の第３の実施例の構成を示す図である。図８に示すように、クロック線２０３に遅延回路１０３を接続し、クロック線２０３あるいは遅延回路１０３の出力線の論理レベルが変化する時にデータ入力線２０１の論理レベルを記憶する２つの第１の記憶回路１０１と第２の記憶回路１０２と、第１、第２の記憶回路の結果が同一であるか否かを判断する判定回路１０４を備えている。【００９６】
記憶回路１０１と１０２は、例えば、クロック線の論理レベルがローレベルからハイレベルに変化する時にデータ線の論理レベルを読み込み、その読み込まれた論理レベルを出力線に出力する通常のフリップフロップ回路１１２でもよい。【００９７】
遅延回路１０３の遅延時間だけ離れた時間で同じデータ線の論理レベルを読み込み、その値が同一か否かを判定回路１０４で判定する。【００９８】
遅延回路１０３は、例えば、通常のインバータ回路で構成でき、判定回路１０４は、例えば、通常のＥＸＯＲ回路で構成できる。【００９９】
図９は、本発明の第３の実施例の動作タイミングを示す図である。フリップフロップ回路のセットアップ時間、ホールド時間、ディレイ時間をそれぞれ、
Ｔｓｕ、Ｔｈｏｌｄ、Ｔｃｌｋ−ｔｏ−Ｑとしたとき、本発明の第３の実施例では、
セットアップ時間は、Ｔｓｕ、
ホールド時間は、Ｔｈｏｌｄと遅延回路１０３の遅延時間Ｔｖｅの和、
ディレイ時間は、Ｔｃｌｋ−ｔｏ−Ｑと遅延回路１０３の遅延時間Ｔｖｅの和
で与えられる。【０１００】
演算回路の遅延時間の最大値が十分短い場合、第１の記憶回路１０１と第２の記憶回路１０２の出力は同一の値となる。しかし、演算回路を構成するトランジスタや配線の経年変化により、演算回路の遅延時間が増加し、その遅延時間が、
Ｔｃｌｋ＿ｃｙｃ−Ｔｃｌｋ−ｔｏ−Ｑ−Ｔｓｕ−Ｔｖｅ
と
Ｔｃｌｋ＿ｃｙｃ−Ｔｃｌｋ−ｔｏ−Ｑ−Ｔｓｕ
の間になったとき、第１の記憶回路１０１と第２の記憶回路１０２には異なる値が保持される。なぜなら、第１の記憶回路１０１は演算回路の演算結果を保持できるが、第２の記憶回路１０２は演算途中の値を保持してしまい、演算回路の最終演算結果を保持できないためである。【０１０１】
第１の記憶回路１０１と第２の記憶回路１０２に異なる値が保持されたとき、判定回路１０４はエラーであることをエラー出力線２０４から出力する。一方、データ出力線２０２には、正しい演算結果が保持された第１の記憶回路１０１の値が出力される。【０１０２】
このようにして、本実施例のパイプラインレジスタ回路では、半導体集積回路を構成するトランジスタや配線が経年変化や応力などにより劣化した場合、あるいは、配線間にごみなどがあり、本来接続されてはいけない配線が高抵抗な状態で接続されている場合、あるいは、配線間隔が異常に近づき、本来接続されてはいけない配線が高い容量で接続されている場合など、演算回路の中に異常や故障があり、その演算回路の遅延時間が増加した場合、エラーが起こる前に（つまり、クロックサイクル時間を越える前に）そのことを検知することができる。【０１０３】
いま、データ入力線２０１に入力されたデータは、演算回路の遅延時間が故障などにより増加していることを考えると、時間的に後のデータが正しく、前のデータが誤っていることになる。【０１０４】
記憶回路１０１は記憶回路１０２より後でデータ入力線２０１からデータを参照するため、記憶回路１０１と記憶回路１０２に保持されたデータが異なる場合、記憶回路１０１のデータが正しい値であり、記憶回路１０２のデータが誤ったデータとなる。データ出力線２０２は正しいデータが保持された記憶回路１０１につながっているため、間違ったデータでパイプラインレジスタ回路の次段につながる演算回路が演算を開始してしまうことがない。【０１０５】
また、本実施例におけるホールド時間は、記憶回路１０１を構成する通常のフリップフロップ回路のホールド時間Ｔｈｏｌｄに対して遅延回路１０３の遅延時間Ｔｖｅだけ増加しているが、ディレイ時間も遅延回路１０３の遅延時間Ｔｖｅだけ増加するため、演算回路の遅延時間に要求される最小値に変化はなく、ゼロにすることができる。なお、本実施例においても、判定回路１０４による比較結果を記憶する保持回路（不図示）を備え、記憶回路１０１の出力と記憶回路１０２の出力が同一でない場合、判定回路１０４の判定結果を保持回路で保持するようにしてもよい。【０１０６】
＜第４の実施例＞
図１０は、本発明のパイプラインレジスタ回路の第４の実施例の構成を示す図である。図１０を参照すると、本実施例では、前記第３の実施例と相違して、データ出力線２０２を第２の記憶回路１０２の出力から得ている。したがって、本実施例では、データ出力線２０２には、間違った演算結果が保持された第２の記憶回路１０２の値が出力される。【０１０７】
図１１は、本発明の第４の実施例の動作を示すタイミング図である。フリップフロップ回路のセットアップ時間、ホールド時間、ディレイ時間をそれぞれ、
Ｔｓｕ、Ｔｈｏｌｄ、Ｔｃｌｋ−ｔｏ−Ｑ
としたとき、本発明の第４の実施例では、
セットアップ時間は、Ｔｓｕ、
ホールド時間は、Ｔｈｏｌｄと遅延回路１０３の遅延時間Ｔｖｅの和、
ディレイ時間は、Ｔｃｌｋ−ｔｏ−Ｑ
で与えられる。【０１０８】
このようにして、本発明のパイプラインレジスタ回路では、演算回路を構成するトランジスタや配線の経年変化により、演算回路の遅延時間が増加した場合、エラーが起こる前にそのことを検知することができる。【０１０９】
また、本実施例において、ホールド時間は記憶回路１０１を構成する通常のフリップフロップ回路のホールド時間Ｔｈｏｌｄに対して遅延回路１０３の遅延時間Ｔｖｅだけ増加する。【０１１０】
クロック信号の発振周期をＴｃｙｃとしたとき、前記第３の実施例において、遅延回路１０３の遅延時間を、Ｔｃｙｃ−Ｔｖｅとすることにより、第４の実施例において、遅延回路１０３の遅延時間をＴｖｅにすることと同一の効果が得られる。【０１１１】
また、同様に、本発明の第４の実施例において、遅延回路１０３の遅延時間をＴｃｙｃ−Ｔｖｅとすることにより、前記第３の実施例において、遅延回路１０３の遅延時間をＴｖｅにすることと同一の効果が得られる。なお、第４の実施例においても、判定回路１０４による比較結果を記憶する保持回路（不図示）を備え、記憶回路１０１の出力と記憶回路１０２の出力が同一でない場合、判定回路１０４の判定結果を保持回路で保持するようにしてもよい。【０１１２】
前記第１乃至第４の実施例において、遅延回路１０３の遅延時間を半導体製造後でも変えることができるようにすることで、例えば、特に信頼性が要求されるような用途では、遅延回路１０３の遅延時間を増加させて、異常や故障が起こる前に、そのことを検知可能とすることができる。【０１１３】
また、半導体製造後に遅延時間を調整することで、半導体製造上のばらつきや温度、電源電圧などに依存して変化しないようにすることもできる。【０１１４】
＜第５の実施例＞
図１２は、本発明のパイプラインレジスタ回路の第５の実施例の構成を示す図である。図１２に示すように、本実施例は、クロック線２０３の論理レベルが変化する時にデータ入力線２０１の論理レベルを記憶する２つの第１の記憶回路１０１と第２の記憶回路１０２と、第１、第２の記憶回路の結果が同一であるか否かを判断する判定回路１０４を備えている。【０１１５】
ここで、第１と第２の記憶回路１０１と１０２は、例えば、クロック線の論理レベルがローレベルからハイレベルに変化する時にデータ線の論理レベルを読み込み、その読み込まれた論理レベルを出力線に出力する通常のフリップフロップ回路１１２でもよいが、第１の記憶回路１０１に使うフリップフロップ回路と第２の記憶回路１０２に使うフリップフロップ回路の入力信号（データ入力又はクロック入力）の入力論理スレッショルドを、一方は高く、一方は低くする。【０１１６】
本発明の第５の実施例においては、フリップフロップ回路のクロック入力の論理スレッショルドを変える。この場合、第１と第２の記憶回路１０１と１０２で同一のクロック入力を与えるが、少し異なったタイミングでデータを記憶する。【０１１７】
＜第６の実施例＞
また、本発明の第６の実施例では、フリップフロップ回路のデータ入力の論理スレッショルドを変える。この場合、第１と第２の記憶回路１０１と１０２で同一のデータ入力を与えるが、クロック線の論理レベルがローレベルからハイレベルに変化する時に、データ入力の信号電位がまだ遷移している最中の場合、第１と第２の記憶回路で異なる論理値を出力する。なお、第５及び第６の実施例のいずれの場合も、第１と第２の記憶回路の出力の論理値が同一か否かを判定回路１０４で判断する。判定回路１０４は、例えば、通常のＥＸＯＲ回路で構成できる。【０１１８】
前記第５及び第６の実施例のいずれの場合も、演算回路の遅延時間の最大値が十分短い場合、データ入力線から入力される信号の電位レベルは十分安定しているため、第１の記憶回路１０１と第２の記憶回路１０２の出力は同一の値となる。しかし、演算回路の遅延時間の最大値が長くなり、クロック線の論理レベルがローレベルからハイレベルに変化する時にデータ入力線から入力される信号の電位レベルが十分安定していない場合、第１の記憶回路１０１と第２の記憶回路１０２には異なる値が保持される。【０１１９】
第１の記憶回路１０１と第２の記憶回路１０２に異なる値が保持されたとき、判定回路１０４はエラーであることをエラー出力線２０４から出力する。【０１２０】
このようにして、本発明のパイプラインレジスタ回路では、演算回路を構成するトランジスタや配線の経年変化により、演算回路の遅延時間が増加した場合、エラーが起こる前にそのことを検知することができる。なお、第５、第６実施例においても、判定回路１０４による比較結果を記憶する保持回路（不図示）を備え、記憶回路１０１の出力と記憶回路１０２の出力が同一でない場合、判定回路１０４の判定結果を保持回路で保持するようにしてもよい。【０１２１】
なお、前記第１の実施例と前記第３の実施例を同時に適用し、記憶回路１０２のデータ入力線に遅延回路を接続し、かつ、記憶回路１０１のクロック入力線に遅延回路を接続することも可能であり、この場合でも、前記第１及び第３の実施例と同一の効果が得られる。【０１２２】
また、前記第２の実施例と前記第４の実施例を同時に適用し、記憶回路１０１のデータ入力線に遅延回路を接続し、かつ、記憶回路１０２のクロック入力線に遅延回路を接続することも可能であり、この場合でも、前記第２及び第４の実施例と同一の効果が得られる。【０１２３】
＜第７の実施例＞
図１３は、本発明の第７の実施例の半導体集積回路の構成を示す図である。本実施例では、前記第１乃至第６の実施例のいずれかのパイプラインレジスタ回路１１０を用い、その間に演算回路１１１を挿入した同期回路を構成している。【０１２４】
また、本実施例において、前記第１乃至第６の実施例のいずれかのパイプラインレジスタ回路のエラー出力線２０４は、ＯＲ回路１１６を用いて接続されている。【０１２５】
本実施例において、演算回路を構成するトランジスタ又は配線の性能が経年変化により劣化し、図１３のどこかの演算回路１１１の遅延時間が増加し、誤動作を起こすような状態になった場合、パイプラインレジスタ回路１１０がこれを検知し、エラー出力線２０５から出力する。この出力は、チップ内の不揮発メモリに保存したり、あるいは、チップ外部に通報したり、あるいは、チップ内部の他のロジック回路に通知したり、あるいは、チップ内部のＭＰＵに、例えば割り込みなどの形で通知することができる。【０１２６】
また、本実施例において、演算回路１１１を構成するトランジスタ又は配線の性能が経年変化により劣化し、図１３のいずれかの演算回路１１１の遅延時間が増加し、誤動作を起こすような状態になった場合、半導体集積回路全体の動作を停止するなどの手段で、全パイプラインレジスタあるいは誤動作を起こすような状態になったパイプラインレジスタに関連するパイプラインレジスタが保持しているデータ値を保存し、誤動作を起こすような状態になった原因や箇所を特定するために、該データ値を使用するようにしてもよい。【０１２７】
＜第８の実施例＞
図１４は、本発明の第８の実施例の半導体集積回路の構成を示す図である。本実施例においては、前記第１から第６の実施例のいずれかのパイプラインレジスタ回路１１０を用い、パイプラインレジスタ回路１１０の間に演算回路１１１を挿入した同期回路を構成している。また、前記第１から第６の実施例のパイプラインレジスタ回路のエラー出力線２０４は、フリップフロップ回路１１２とセレクタ回路１１３を用いて接続されている。【０１２８】
本実施例において、演算回路１１１を構成するトランジスタ又は配線の性能が経年変化により劣化し、図１４のどこかの演算回路１１１の遅延時間が増加し、誤動作を起こすような状態になった場合、前記第１から第６の実施例のパイプラインレジスタ回路１１０がこれを検知し、各エラー出力線２０４に出力する。このとき、エラー出力線２０４の信号をフリップフロップ回路１１２が保持できるように、セレクタ切り替え線２０７を用いてセレクタ回路１１３を切り替え、この後、セレクタ切り替え線２０７を用いて、セレクタ回路１１３を逆側に切り替え、フリップフロップ回路１１２が、カスケード接続されるように回路を構成する。この後、クロック線２０６からクロック信号を供給することで、最終段のフリップフロップ１１２の出力２０８からクロック周期毎に各パイプラインレジスタ回路のエラー出力線の状態を順番に得ることができる。【０１２９】
このとき、エラー出力の結果が出力２０８に現れるまでのクロック周期を数えることで、どのパイプラインレジスタ回路で演算回路の遅延時間が大きくなったかを知ることができる。【０１３０】
なお、本発明では、パイプラインレジスタ回路とは別にセレクタ回路とフリップフロップ回路を用いて、各パイプラインレジスタ回路のエラー出力線の状態を順番に出力するための回路（スキャンパス回路）を構成したが、パイプラインレジスタ回路を構成するフリップフロップ回路を用いて、スキャンパス回路を実現することもできる。【０１３１】
この情報は、
・チップ内の不揮発メモリに保存したり、あるいは、
・チップ外部に通報したり、あるいは、
・チップ内部の他のロジック回路に通知したり、あるいは、
・チップ内部のＭＰＵに通知する、
ことができる。【０１３２】
＜第９の実施例＞
図１５は、本発明の第９の実施例の半導体集積回路の構成を示す図である。本実施例では、前記第１乃至第６の実施例のいずれかのパイプラインレジスタ回路１１０を用い、パイプラインレジスタ回路１１０の間に、スイッチ回路１１５、２つの演算回路１１１及び演算回路１１４と、セレクタ回路１１３を挿入し、同期回路を構成している。切り替え状態記憶回路１１７は、クロック線２０３とエラー出力線２０４を入力し、スイッチ回路１１５の切替を制御する。切り替え状態記憶回路１１８は、クロック線２０３とエラー出力線２０４を入力し、セレクタ回路１１３の選択を制御する。【０１３３】
演算回路１１１と演算回路１１４は同一機能の演算を行う回路であり、それぞれの入力はスイッチ回路１１５を介して、パイプラインレジスタ回路１１０の出力に繋がっている。また、それぞれの出力は、セレクタ回路１１３を通してパイプラインレジスタ回路１１０の入力に繋がっている。【０１３４】
切り替え状態記憶回路１１７の出力がハイレベルのとき、スイッチ回路１１５は、パイプラインレジスタ回路１１０の出力２０２と演算回路１１４の入力２０９を接続し、２１１をローレベルに落とす。また、セレクタ回路１１３は、切り替え状態記憶回路１１８の出力に基づき、演算回路１１４の出力２１０を選択して出力２０１に接続する。【０１３５】
一方、切り替え状態記憶回路１１７の出力がローレベルのとき、スイッチ回路１１５は、パイプラインレジスタ回路１１０の出力２０２と演算回路１１１の入力２１１を接続し、２０９をローレベルに落とす。また、セレクタ回路１１３は、切り替え状態記憶回路１１８の出力に基づき、演算回路１１１の出力２１２を選択して出力２０１を接続する。【０１３６】
切り替え状態記憶回路１１７の出力レベルは、パイプラインレジスタ回路１１０からのエラー出力線２０４（判定回路の出力）が、演算回路の遅延時間がクロックサイクル時間近くまで大きくなったことを検知してアクティブになったときに変化する。また、その出力レベルは、半導体集積回路に電源を切断したときにも、チップ内又は外で、その値を保持しておき、半導体集積回路に電源を投入したときに、戻るようにする。【０１３７】
演算回路１１１、１１４を構成するトランジスタ又は配線の性能が経年変化により劣化し、図１５のどこかの演算回路（１１１又は１１４）の遅延時間が増加し、誤動作を起こすような状態になった場合、前記第１乃至第６の実施例のパイプラインレジスタ回路１１０がそれを検知し、各エラー出力線２０４に出力する。【０１３８】
このとき、スイッチ回路１１５とセレクタ回路１１３が切り替わり、誤動作を起こすようになった演算回路とは異なる演算回路で動作を継続又は再開できる。【０１３９】
スイッチ回路１１５とセレクタ回路１１３が切り替わるときに、正しい動作を継続するためには、セレクタ回路１１３が切り替わるタイミングは、スイッチ回路１１５が切り替わるタイミングより後であり、１クロック以上遅れる必要がある。つまり、スイッチ回路１１５が切り替わってから１クロック以上経過後にセレクタ回路１１３が切り替わる必要がある。そこで、スイッチ回路１１５の切替えとセレクタ回路１１３の切替えタイミングをずらして行うために、切り替え状態記憶回路１１７と１１８の２つの回路が設けられている。切り替え状態記憶回路１１７は、例えばフリップフロップ回路（図２の１１２参照）で実現することができる。また、切り替え状態記憶回路１１８は、例えばフリップフロップ回路（図２の１１２参照）を２段以上従属接続することで実現できる。【０１４０】
スイッチ回路１１５を削除し、データ出力線２０２を２０９と２１１に接続するようにしてもよい。この場合、使用していない方の演算回路も動作することになり、消費電力が増加する。【０１４１】
パイプラインレジスタ回路１１０が故障を予測すると、エラー出力線２０４がアクティブになり、まず、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブになり、ついで切り替え状態記憶回路１１８の出力（セレクタ切り替え線）１２０がアクティブになる。切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブになってから、切り替え状態記憶回路１１８の出力（セレクタ切り替え線）１２０がアクティブになるまで、１クロックサイクル以上の遅延を持たせても良い。【０１４２】
スイッチ回路１１５は、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブでない場合、パイプラインレジスタ回路１１０のデータ出力線２０２のデータを、データ入力線２１１に出力し、同時に、データ入力線２０９をローレベルまたはハイレベルに固定する。【０１４３】
スイッチ回路１１５は、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブの場合、
パイプラインレジスタ回路１１０のデータ出力線２０２のデータを２０９に出力し、同時に、データ入力線２１１をローレベルまたはハイレベルに固定する。
もしくは、パイプラインレジスタ回路１１０のデータ出力線２０２のデータをデータ入力線２１１に出力し、データ出力線２０２のデータをさらに、データ入力線２０９にも出力する。
スイッチ回路１１５は、上記いずれ場合も、データ入力線２０９にはデータを出力することになる。【０１４４】
一方、セレクタ回路１１３は、セレクタ切り替え線１２０がアクティブでない場合（インアクティブの場合）、データ出力線２１２のデータを、データ入力線２０１に出力し、出力１２０がアクティブの場合、データ出力線２１０のデータをデータ入力線２０１に出力する。ここで、演算回路１１４は、演算回路１１１の一部に故障が予測された場合に使用される演算回路である。【０１４５】
なお、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブになってから切り替え状態記憶回路１１８の出力（セレクタ切り替え線）１２０がアクティブになるまで１クロック以上の遅延を持たせると良い理由は、スイッチ回路１１５が動作して、演算回路１１４にデータが供給され、セレクタ回路１１３までデータが供給されるのに１クロック期間かかる場合があるからである。その場合、１クロックより前にセレクタ回路１１３が切り替わってしまうと、演算回路１１４に正しいデータが供給されていない状態での演算の出力値をパイプラインレジスタ回路に入力することになり、誤動作となる。その場合、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブの場合にデータ入力線２０９と２１１の両方にデータを出力するスイッチ回路１１５を用い、さらに、切り替え状態記憶回路１１７の出力（スイッチ切り替え線）１１９がアクティブになってから、セレクタ切り替え線１２０がアクティブになるまでに１クロック以上の遅延を持たせることで、誤動作を防ぐことが可能となる。【０１４６】
本発明の第３の実施例（図８）と第４の実施例（図１０）、及び、これらを用いた第７、第８、第９の実施例において、第１の記憶回路１０１と第２の記憶回路１０２に供給するクロック信号には遅延差があるが、これは、個々のパイプラインレジスタ回路内に有する遅延回路１０３により生成される。【０１４７】
しかしながら、図１６に示すように、複数のパイプラインレジスタ回路において、遅延回路１０３を共通にするようにしてもよい。【０１４８】
＜第１０の実施例＞
図１６は、本発明の第１０の実施例の構成を示す図である。図１６において、共通の遅延回路１０３に入力されるクロック信号と、遅延回路１０３から出力されるクロック信号を、２つのクロック分配回路（クロックツリー）２２０により、複数の第１の記憶回路１０１と、複数の第２の記憶回路１０２とにそれぞれ供給している。【０１４９】
また、この場合、チップ内での遅延回路１０３の数を少なくできる。このため、遅延回路１０３をより高精度にするために複雑な回路構成にしてもチップ面積の増大を抑えることができる。【０１５０】
さらに、遅延回路１０３の数が少ないため、その遅延時間をチップ内部回路あるいは外部から制御することが容易となる。【０１５１】
この遅延時間を長くすると、より将来の故障を予測できるが、パイプラインレジスタ間の演算回路の最大遅延時間を短くすることになる。一方、この遅延時間を短くすると、より直近に発生する可能性が高い故障を予測することになるが、パイプラインレジスタ間の演算回路の最大遅延時間を長くできる。例えば、チップの選別テストのときに、この遅延時間を大きくして、より故障が起こる可能性が大きいチップを不良品として廃棄するようなことが可能である。この場合、良品率が非常に高い、高精度な選別テストが可能となる。【０１５２】
さらに、通常のＬＳＩ動作時には、データ出力線２０２につながった記憶回路１０１又は記憶回路１０２に接続されたクロック分配回路だけ動作させ、データ出力線２０２につながっていない記憶回路１０１又は記憶回路１０２に接続されたクロック分配回路の動作を停止し、判定回路１０４の動作も停止することが容易にできるようになる。【０１５３】
通常のＬＳＩ動作時は故障判定をせず、ＬＳＩ動作時にたまに、データ出力線２０２につながっていない記憶回路１０１又は記憶回路１０２に接続されたクロック分配回路を動作させ、判定回路１０４の動作も再開して、故障の予測ができる。一般に経年変化による故障はゆっくり起こる。つまり、毎クロックサイクルの頻度で故障の予測をする必要は無く、たまに故障を予測することで、高い精度で故障の予測が可能である。【０１５４】
故障の予測をする頻度は、
・チップ外部からチップに必要とされる信頼度に応じて指定する方法や、
・チップ内部で例えば１万クロックサイクルに１回とか、１マイクロ秒に１回とかという形で指定する方法や、
・チップの電源投入時にする方法
などがある。この頻度を適宜適応的に変えることも可能である。【０１５５】
さらに、チップの選別テストのときに、故障の予測を動作させ、動作マージンが小さいチップあるいは故障が起こる可能性が大きいチップを不良品として廃棄するようなことが可能である。この場合、良品率が非常に高い、高精度な選別テストが可能となる。【０１５６】
なお、通常、クロック分配回路は、１つ（又は少数）の端子と多数の端子を、少数から多数にクロック信号が分配されるように、接続される。【０１５７】
複数の第１の記憶回路１０１と複数の第２の記憶回路１０２にクロック信号を分配する２つのクロック分配回路２２０においても、通常ツリー状にクロック信号を分配する。【０１５８】
この２つのクロック分配回路２２０のツリーの根元（少数端子側）の部分を共通にして、その分岐の部分に、遅延回路１０３をおくことも可能である。この場合、２つの独立のクロック分配回路を用いるよりも、共通部分ができることで、クロック分配回路２２０の全体規模を小さくでき、その結果、チップ面積を削減できる。分岐の部分として、例えば、ゲーテッドクロックでの、ゲーテッドセルの挿入部分が考えられる。なお、後述するよに、図１６の本実施例の構成と、図１３、あるいは、図１４、あるいは図１５の構成とを組み合わせてもよいことは勿論である。【０１５９】
本発明の第１乃至第１０の実施例を用いることで、例えば、半導体集積回路のユーザが半導体集積回路を使っているときに、演算回路の誤動作を事前又は事後に検知した場合、
その情報を保存しておき、半導体集積回路のメーカがその情報を入手し、その半導体集積回路を修理したり、あるいは、半導体集積回路の次世代版の開発に役立てることができる。【０１６０】
本発明の第７及び第８及び第９の実施例をそれぞれ４通りの組み合わせで、同時に実現することもできる。つまり、
第７と第８の実施例、
第７と第９の実施例、
第８と第９の実施例、
第７と第８と第９の実施例
の組み合わせである。【０１６１】
なお、本発明の第１乃至第９の実施例では、演算回路の遅延時間の増加をトランジスタや配線の経年変化であると説明したが、半導体集積回路の温度や電源電圧や信号線間のクロストークなど、演算回路の遅延時間に影響を与えるものであればよく、特に限定するものではない。【０１６２】
本実施例の作用効果を説明する。【０１６３】
本実施例によれば、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、それが演算回路の異常や故障となることを、異常や故障となる前に予測できる。【０１６４】
本実施例によれば、パイプラインレジスタ回路のホールド時間を通常のフリップフロップ回路と比較して大きくしないため、演算回路の規模の増大や、チップ面積の増大や消費電力の増加が生じない。【０１６５】
本実施例によれば、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、チップ内のどの位置に異常や故障が生じる可能性が高まっているかを事前に知ることができる。また、判定回路１０４からのエラー出力を保持することで、経年変化等の永久故障の事前予測と故障回避が可能である。【０１６６】
本実施例によれば、半導体集積回路を構成するトランジスタや配線が経年変化などにより劣化した場合でも、常に速度や電力の両面で性能低下が起きないようにすることができる。【０１６７】
なお、上記各実施例では、レジスタ回路（フリップフロップ）はデータ入力端子Dの値をクロック入力端子のローレベルからハイレベルへの遷移でサンプル出力する例に即して説明したが、本発明はかかる構成に制限されるものでないことは勿論である。【０１６８】
＜第１１の実施例＞
図１７は、本発明の第１１の実施例の半導体集積回路の構成を示す図である。本実施例では、論理回路（演算回路）を、それぞれ、例えば８ビット加算器などの機能ブロックに分割する。機能ブロックに分割された論理回路（演算回路）の入力と出力に接続される、第１乃至第６の実施例のいずれかのパイプラインレジスタ回路１１０も、機能ブロックに対応して配設され、複数のスイッチ回路１１５、セレクタ回路１１３、切替え状態記憶回路１１７、１１８を備えている。【０１６９】
特に制限されないが、図１７に示す例では、演算回路１１１、１１４は、それぞれ、３つのユニット（例えば並列に入出力を行う３つの演算ユニット等の機能ブロック）に分割されているものとする。３つに分割されたユニット（機能ブロック）の３入力・３出力に対応して、３つのパイプラインレジスタ回路１１０をそれぞれ備え、セレクタ回路１１３、スイッチ回路１１５も同様にそれぞれ３つ備えている。演算回路１１１、１１４の１番目の入力に対応するスイッチ回路１１５は、入力されるスイッチ切替線１１９の信号値に基づき、その出力とデータ入力線２１１又は２０９との接続を切替え、演算回路１１１、１１４の１番目の入力に接続する。演算回路１１１、１１４の１番目の出力に対応するセレクタ回路１１３は、入力されるセレクタ切替線１２０の信号値に基づき、演算回路１１１、演算回路１１４の１番目のデータ出力線２１２、２１０のうち一方を選択してデータ入力線２０１に出力し後段のパイプラインレジスタ回路１１０に供給する。同様に、演算回路１１１、１１４の２、３番目の入力に対応する各スイッチ回路１１５は、入力されるスイッチ切替線１１９の信号値に基づき、その出力とデータ入力線２１１又は２０９との接続を切替え、演算回路１１１、１１４の２、３番目の入力に接続する。演算回路１１１、１１４の２、３番目の出力に対応する各セレクタ回路１１３は、入力されるセレクタ切替線１２０の信号値に基づき、演算回路１１１、演算回路１１４の２、３番目のデータ出力線２１２、２１０のうち一方を選択してデータ入力線２０１に出力し後段のパイプラインレジスタ回路１１０に供給する。演算回路１１１、１１４の機能ブロックへの分割数を２、あるいは４つ以上とした場合も、分割数３の場合と同様にして構成される。なお、図１７に示す例において、演算回路１１１、１１４を、それぞれ、３入力・３出力構成の１つの機能ブロック（演算ユニット）として扱ってもよいことは勿論である。【０１７０】
故障判定回路１２１は、演算回路を機能にしたがって分割した複数（図１７では３つ）の機能ブロックに対応して分割された複数（図１７では３つ）のパイプラインレジスタ回路１１０からのエラー出力線２０４を受け、いずれか１つ以上が故障信号を出力しているか否かを判定する。すなわち、故障判定回路１２１は、演算回路１１１を構成する３つの機能ブロックのうちどの機能ブロックに故障が発生しているかを判定あるいは予測する。故障判定回路１２１は、通常のＯＲ回路で実現できる。すなわち、故障判定回路１２１は、複数のパイプラインレジスタ回路１１０からのエラー出力線２０４（図１５参照）をＯＲ演算することでエラー判定が行われる。【０１７１】
故障判定回路１２１が、演算回路１１１の機能ブロックの一部に故障があると判定すると、エラー出力線２０４−１がアクティブになる。故障判定回路１２１からのエラー出力線２０４−１は切り替え状態記憶回路１１７、１１８に入力される。故障判定回路１２１からのアクティブのエラー出力線２０４−１を受ける切り替え状態記憶回路１１７は、スイッチ切り替え線１１９をアクティブとし、また、切り替え状態記憶回路１１８の出力であるセレクタ切り替え線１２０もアクティブとなる。【０１７２】
機能ブロックの分割に対応して配設される複数のスイッチ回路１１５は、切り替え状態記憶回路１１７の出力であるスイッチ切り替え線１１９がアクティブでない場合には、パイプラインレジスタ回路１１０のデータ出力線２０２のデータをデータ入力線２１１に出力し、一方、データ入力線２０９（非選択のデータ入力線）をローレベルまたはハイレベルに固定する。【０１７３】
機能ブロックの分割に対応して配設された複数のスイッチ回路１１５の各々は、切り替え状態記憶回路１１７の出力であるスイッチ切り替え線１１９がアクティブの場合には、パイプラインレジスタ回路１１０の出力に接続されたデータ出力線２０２のデータを、データ入力線２１１に出力するとともに、データ出力線２０２のデータをデータ入力線２０９にも出力する。すなわち、スイッチ回路１１５は、パイプラインレジスタ回路１１０の出力データを、演算回路１１１、１１４の両方の機能ブロックに供給する。【０１７４】
一方、機能ブロックの分割に対応して配設された複数のセレクタ回路１１３は、セレクタ切り替え線１２０がアクティブでない場合、データ出力線２１２のデータ（演算回路１１１の機能ブロックの出力データ）を選択してデータ入力線２０１に出力し、セレクタ切り替え線１２０がアクティブの場合、データ出力線２１０のデータ（演算回路１１４の機能ブロックの出力データ）を選択してデータ入力線２０１に出力する。【０１７５】
図１７において、演算回路１１４の機能ブロックは、演算回路１１１の機能ブロックの一部に故障が予測された場合に使用される予備の機能ブロックであるものとする。【０１７６】
本実施例では、演算回路を機能ごとのブロック（機能ブロック）に分割し、機能ブロックを一括で切り替えることにより、切替え状態記憶回路１１７と１１８は、複数のパイプラインレジスタ回路１１０の全てに対応して複数セット設ける代わりに、一セット具備すればよい。この結果、総面積（回路面積）の縮減が可能となる。なお、上記実施例では、機能ブロックの例として８ビット加算器を例に挙げたが、算術演算であれ、論理演算であれ、一つのブロックとしてまとめることのできるものであればよく、特に限定するものではない。また、演算回路１１１、１１４間において、複数の機能ブロックを一括して切り替える代わりに、変形例として、一機能ブロック単位に、個別に切り替えを行うようにしてもよい。【０１７７】
＜第１２の実施例＞
図１９は、本発明の第１２の実施例の半導体集積回路の構成を示す図である。ただし、図を簡単化するため、図１８に示すように、前記第１乃至第６の実施例のいずれかのパイプラインレジスタ回路１１０、スイッチ回路１１５、セレクタ回路１１３、切替え状態記憶回路１１７、及び、切替え状態記憶回路１１８をひとまとめにして、図１８（Ｂ）に示すようなシンボル（参照符号１２３で指示される回路シンボル）で表し、このシンボルを、「故障予測レジスタ回路」というものとする。図１９において、１２４−１３２、１４２は、図１８（Ｂ）のシンボルで示す故障予測レジスタ回路である。また、図１９において、２重化論理回路１３３−１３９は、図１５に示した演算回路１１１、１１４よりなる２重化回路、又は、図１７に示した機能ブロックに分割された演算回路１１１、１１４よりなる２重化回路等に対応する。２重化論理回路１３３−１３９の各々は、２重化されていさえすればよく、２重化論理回路１３３−１３９の機能（回路構成）は互いに異なっていてもよいことは勿論である。【０１７８】
はじめに、本実施例における故障予測レジスタ回路について説明しておく。図１８（Ｂ）のシンボルで示す故障予測レジスタ回路は、図１８（Ａ）の構成とされる。図１８（Ａ）において、故障予測レジスタ１２２は、パイプラインレジスタ回路１１０、スイッチ回路１１５、セレクタ回路１１３、切替え状態記憶回路１１７及び１１８を備えている。１１９−１は、故障予測出力線（切替え状態記憶回路１１７の入出力線に対応）であり、前段の故障予測レジスタ回路のスイッチ回路１１５に１１９−２として供給される。１２０はセレクタ切替線、２０１、２０９、２１１はデータ入力線、２０２、２１０、２１２はデータ出力線、２０３は、クロック線、２０４はエラー出力線である。【０１７９】
故障予測レジスタ回路１２３は、前段からの第１の論理回路（演算回路）の出力であるデータ出力線２１２、第２の論理回路（演算回路）の出力であるデータ出力線２１０を入力とし、第１の論理回路での故障を予測する。ここで、故障が予測されていない場合は、第１の論理回路の出力２１２を使用し、その論理回路に故障が予測された場合には、前段第２の論理回路の出力２１０を使用するように、セレクタ回路１１３を切替え、かつ、切り替え状態記憶回路１１７からの信号（スイッチ切り替え線）１１９−１をアクティブにとする。信号１１９−１は、前段の故障予測レジスタ回路（不図示）のスイッチ回路１１５に信号１１９−２として入力される。【０１８０】
また、次の段の論理回路への出力となるデータ入力線２０９及び２１１に関しては、後段の故障予測レジスタ回路からの故障予測を入力とするスイッチ回路１１５を備えている。スイッチ回路１１５は、入力されるスイッチ切り替え線１１９−２がアクティブでない場合、内部データ（図１８（Ａ）におけるパイプラインレジスタ出力２０２を、後段の第１の論理回路（演算回路）の入力となるデータ入力線２１１に出力し、同時に、後段の第２の論理回路（演算回路）の入力となるデータ入力線２０９をローレベルまたはハイレベルに固定する。スイッチ回路１１５は、入力されるスイッチ切り替え線１１９−２がアクティブの場合、内部データをデータ入力線２１１に出力し、さらに、データ入力線２０９にも出力する。【０１８１】
図１９において、例えば故障予測レジスタ回路１３２が、第１の演算回路（論理回路）の故障を予測した場合、故障予測レジスタ回路１３２から出力される故障予測出力１１９−１がアクティブとなる。故障予測出力線１１９は、故障予測レジスタを通さずに、２重化論理回路のみを通じて、故障予測レジスタ回路１３２の入力に接続される故障予測レジスタ回路１２８、１３０、１３１の各スイッチ回路１１５（図１８（Ａ）参照）に接続されており、２重化論理回路１３６、１３８、１３９では、第１の演算回路（論理回路）ではなく、予備の第２の演算回路の動作に切り替わる。すなわち、故障予測レジスタ回路１３２が、故障を予測した場合、第１の演算回路（論理回路）に故障の可能性のある２重化論理回路は、１３６、１３８、１３９であり、これらの回路へデータを出力している故障予測レジスタ回路１２８、１３０、１３１の出力を切替えることで、第１の演算回路（論理回路）に故障の可能性のある２重化論理回路１３６、１３８、１３９において、第１の演算回路１１１（図１５、図１７、但し、図１７では機能ブロック）から、予備である第２の演算回路１１４（図１５、図１７、但し、図１７では機能ブロック）の動作へと切り替える。【０１８２】
さらに、故障を予測した故障予測レジスタ回路１３２は、その入力を、第１の論理回路（演算回路）からの入力ではなく、予備の第２の論理回路（演算回路）からの入力を使用するようにセレクタ回路１１３（図１８（Ａ）参照）を切替える。こうすることで、図１９において、故障予測レジスタ回路１３２が故障を予測した場合に、論理回路の切替えが行われる範囲は、符号１４０の枠で囲んだ範囲に限定することができる。【０１８３】
また、例えば、故障予測レジスタ回路１４２が故障を予測した場合、故障予測レジスタ回路を通さずに、２重化論理回路のみを通じて、故障予測レジスタ回路１４２の入力に接続される故障予測レジスタ回路１２８のスイッチ回路１１５（図１８（Ａ）参照）が切り替わる必要がある。このとき、故障予測レジスタ回路１２８の出力に関して、故障予測レジスタ回路１４２もしくは１３２のどちらか一方でも故障を予測した場合に、出力を切替える必要があるため、故障予測レジスタ回路１２９及び１３２の故障予測出力の少なくとも一方がアクティブになっているか否かを判定する回路が必要となる。これは、ＯＲ回路１４１で実現可能である。【０１８４】
本実施例では、このようにして、１つの故障予測に対して、切り替えの必要な範囲を狭くすることにより、予備の演算回路にも故障が発生する確率を低くすることができる。【０１８５】
なお、図１９において、例えば２重化論理回路１３６と２重化論理回路１３７の間の故障予測レジスタ回路１４２を削除してもよい。この場合、２重化論理回路１３６の第１、第２の論理回路（演算回路）の出力は、次段の２重化論理回路１３７の第１、第２の論理回路（演算回路）の入力にそれぞれ接続される。そして、故障予測レジスタ回路を通さずに２重化論理回路のみを通じて故障予測レジスタ回路１２９の入力に接続される故障予測レジスタ回路１２５と１４２のスイッチ回路１１５（図１８（Ａ）参照）に直接又はＯＲ回路１４１を介して接続される故障予測レジスタ回路１２９からの故障予測出力は、該故障予測レジスタ回路１４２の削除に伴い、２重化論理回路１３６、１３７のみを通じて故障予測レジスタ回路１２９の入力に接続されることになる故障予測レジスタ回路１２８のスイッチ回路１１５（図１８（Ａ）参照）にＯＲ回路１４１を介して接続される。【０１８６】
適用回路の特性に応じて、本発明の第１１の実施例及び第１２の実施例を組み合わせて実施することもできる。例えば加算器等の、ビット単位で処理を行う算術演算回路には、第１１の実施例で示した機能ブロックによる分割が適する場合が多く、制御回路等のランダム論理回路には、第１１の実施例で示したような、細かい単位での分割が適する場合が多い。【０１８７】
本実施例において、予備回路を備え切替えが可能な冗長構成は、演算回路（論理回路）のみであり、図１８に示した故障予測レジスタは、その予備回路を持っていない。そのため、故障予備レジスタはなるべく欠陥が起こらないように、
・配線を太くする、
・配線間隔を広くする、
・コンタクトホール・スルーホールを複数取る、
のような対処をするのも効果的である。なお、図１６の構成と、図１７あるいは図１９の構成とを組み合わせてもよいことは勿論である。【０１８８】
以上、本発明を上記実施例に即して説明したが、本発明は上記実施例の構成にのみ制限されるものでなく、本発明の範囲内で当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【図１】
2008023577.tif 000003
【図２】
2008023577.tif 000004
【図３】
2008023577.tif 000005
【図４】
2008023577.tif 000006
【図５】
2008023577.tif 000007
【図６】
2008023577.tif 000008
【図７】
2008023577.tif 000009
【図８】
2008023577.tif 000010
【図９】
2008023577.tif 000011
【図１０】
2008023577.tif 000012
【図１１】
2008023577.tif 000013
【図１２】
2008023577.tif 000014
【図１３】
2008023577.tif 000015
【図１４】
2008023577.tif 000016
【図１５】
2008023577.tif 000017
【図１６】
2008023577.tif 000018
【図１７】
2008023577.tif 000019
【図１８】
2008023577.tif 000020
【図１９】
2008023577.tif 000021
【国際調査報告】
2008023577.tif 000022
2008023577.tif 000023
2008023577.tif 000024