(57)【要約】  動的部分再構成機能を有するプログラマブルデバイスにおいて、論理回路を３重化して多数決を行い、誤りを検出すると故障した論理回路を部分再構成し、順序回路の複写用論理セルと配線のリソース消費を抑えて、その全ての順序回路を正しいデータに更新して３重化を復旧させる。  そのために、各論理回路において一部のＦＦの入力データを他の論理回路に複写用として出力するとともに、他の論理回路からの複写用データと自身の入力データを選択するように構成し、多数決処理で誤りを検出すると故障と判定した論理回路情報をＣＲＡＭに再ロードして修理し、その複写可能に構成されたＦＦを論理回路独自に設定されるサイクル数をかけて複写を行い、複写が完了すると３重化を復旧する手段を提供する。
2015068207.tif 000002
【特許請求の範囲】
【請求項１】
電源が投入されると外部の記憶媒体に保持された論理回路情報を内部のコンフィギュレーションメモリにロードして論理回路を構成して動作を開始し、かつ動作中に論理回路情報の一部を外部の記憶媒体から再ロードする動的部分再構成機能を有するプログラマブルデバイスにおいて、
３重化した論理回路と、
前記３重化した論理回路の出力を多数決して出力するとともに、出力が不一致となった論理回路を特定するエラー信号を出力する多数決回路と、
前記３重化した論理回路のそれぞれにおいて、一部の順序回路の入力データを他の２つのいずれかの論理回路に複写データとして出力するとともに、他の論理回路からの複写データと自身の論理回路で生成したデータを選択して前記順序回路に入力するように構成された複写回路と、
前記エラー信号を入力して、前記部分再構成機能によりエラーを発生した前記論理回路の前記コンフィギュレーションメモリ上の論理回路情報を上書きする部分再構成を実行するエラー制御回路と、
エラーを発生した前記論理回路の部分再構成後に、エラーを発生した前記論理回路に正常に動作している論理回路から順序回路を、前記複写回路を接続しない順序回路の多段階数に応じた複数の複写サイクルを掛けて複写する制御を実行する順序回路複写制御回路を有することを特徴とするプログラマブルデバイス。
【請求項２】
前記複写回路が、前記３重化した論理回路のそれぞれにおいて、一部の順序回路への入力データ、または出力データを選択して他の２つのいずれかの論理回路に複写データとして出力するとともに、他の論理回路からの複写データと自身の論理回路で生成したデータを選択して前記順序回路に入力するように構成されていることを特徴とする請求項１に記載のプログラマブルデバイス。
【請求項３】
前記３重化した論理回路のそれぞれにおいて、前記複写回路を接続しない順序回路の多段階数に応じた複写サイクル数が許容値を超えないようにするために、多段に連続した前記複写回路を接続しない順序回路の列の途中の順序回路に、前記複写回路を接続して、全ての順序回路の複写に要する複写サイクル数を抑えたことを特徴とする請求項１に記載のプログラマブルデバイス。
【請求項４】
請求項１に記載のプログラマブルデバイスにおいて、
前記順序回路複写制御回路は、順序回路を複写するサイクル数を事前に設定する記憶部を有し、該記憶部から複写サイクル数を読み出して、全ての順序回路を複写する制御を行なうことを特徴とするプログラマブルデバイス。
【請求項５】
請求項１に記載のプログラマブルデバイスにおいて、
前記エラー制御回路は更に、前記順序回路複写制御回路が複写を完了した後、前記多数決回路のエラー出力を監視し、エラーが無くならなければ修理が完了していないとみなして外部に異常発生信号を出力することを特徴とするプログラマブルデバイス。
【請求項６】
請求項１に記載のプログラマブルデバイスにおいて、
前記３重化した論理回路のそれぞれに含まれる複写を行う順序回路はフィードバックループを形成する順序回路だけに限定することを特徴とするプログラマブルデバイス。
【請求項７】
請求項１に記載のプログラマブルデバイスにおいて、
前記エラー制御回路と前記順序回路複写制御回路をそれぞれ２重化して、それぞれ２重化した両回路の出力信号を比較して不一致となった場合に故障を検出し、これらの回路で故障が検出されたらこれらの回路を停止させ、両回路の部分再構成を行って動作を再開させることを特徴とするプログラマブルデバイス。
【請求項８】
請求項１に記載のプログラマブルデバイスにおいて、
前記エラー制御回路は、エラーを発生したモジュールの識別子、エラーの発生回数、エラーの発生タイミングを記憶する記憶部を有し、外部から読み出し可能とすることを特徴とするプログラマブルデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製造後にユーザによって内部論理回路を定義・変更できるプログラマブルデバイスに適用して有効な技術に関する。
【背景技術】
【０００２】
家電製品、ＡＶ機器、携帯電話、自動車、産業機械等の機器には、専用ＬＳＩ（ＡＳＩＣ）が数多く使用されているが、機器の高性能化・高機能化・小型化・低消費電力化・低コスト化に欠かせない重要な部品である。近年半導体プロセスの微細化により開発費が高騰し、ＡＳＩＣの開発が困難になってきている。内部論理回路が固定のＡＳＩＣに対し、ユーザによって内部論理回路を定義・変更できるプログラマブルデバイスであるＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）はＡＳＩＣと比べると製品価格は高いが開発費が安価であるため、特に少量多品種の開発が主体となる産業機器においてはＦＰＧＡの活用が期待されている。ＦＰＧＡの論理回路情報は外部のフラッシュＲＯＭに保持されており、ＦＰＧＡに電源が投入されると論理回路情報が内部のＣＲＡＭ（コンフィギュレーションＲＡＭ）にロードされ、ＦＰＧＡは論理回路が決定し動作を開始する。しかしながら、宇宙線の影響によりＣＲＡＭにソフトエラーが発生して論理回路情報が書き変わり、論理回路が誤った機能に変更（故障）して誤動作するという課題があった。【０００３】
論理回路が故障しても出力を誤らなくする方法として３重化がある。３重化した論理回路の出力を多数決処理して、結果が２対１になったときには２つが一致する方の結果を選択する。一致しない結果を出力した論理回路は故障しているとみなし動作を停止させる。このような３重化は非修理系３重化と呼ばれる。論理回路を非修理系３重化の設計とすることはＦＰＧＡのソフトエラー対策にある程度有効であるが、１つの論理回路が故障してしまうと、もはや多数決処理は行えず、２つの論理回路のうちどちらかが故障すると、出力の誤りを防ぐことはできない。【０００４】
最新のＦＰＧＡには動的部分再構成機能を有するものがあり、論理回路情報の一部を動作中に外部のフラッシュＲＯＭからＣＲＡＭに再ロードすることができる。この機能を利用すれば、３重化した論理回路の出力が２対１に分かれた場合に、一致しない出力を出した論理回路が故障しているとみなして、ＣＲＡＭにあるその論理回路情報を再ロードして、故障した論理回路を修理することができる。論理回路が修理されても、順序回路であるＦＦ（フリップフロップ）が保持するデータは正常な論理回路と一致するとは限らない。そこで、修理した論理回路のＦＦに正常な論理回路の同じ位置のＦＦからデータを複写して一致させる方法が考えられる。【０００５】
特開２０１１−２１６０２０号公報(特許文献１)には、動的部分再構成機能を有するＦＰＧＡにおいて、論理回路を３重化して多数決処理を行い、誤りを検出するとＦＰＧＡの未使用部分に代わりの論理回路を構成し、その新たに構成した論理回路の全てのＦＦに正常な論理回路の全てのＦＦから１サイクルでデータを複写する方法が開示されている。このように故障した論理回路を修理できる３重化は修理系３重化と呼ばれる。修理系３重化は論理回路が故障しても修理して元の３重化を復旧できるため、非修理系３重化より高い信頼性を得ることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２１６０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示される上記方法は、修理対象の論理回路の全てのＦＦを複写対象としている。実施例ではイネーブル無しＦＦの複写が記載されており、ＦＦの入力データを３重化している他の論理回路に複写データとして出力し、出力先のＦＦの入力部で自身の論理回路の入力データと選択するようにして、通常は自身の入力データを選択し、複写時には他の論理回路からの複写データを選択するようにしている。また、ＦＦにはイネーブル付きのタイプがあり、特許文献１には開示されていないが、イネーブルが０の場合は現在保持している信号を複写し、イネーブルが１の場合には入力データを複写する必要がある。全てのＦＦを複写対象にすると、複写データを生成する論理回路およびＦＦ間の配線がＦＦの個数分必要になり、ＦＰＧＡの論理セルと配線のリソースを消費して実装効率を悪化させ、最大ディレイと消費電力が増加するという問題があった。【０００８】
本発明の目的は、ＦＰＧＡの論理セルと配線のリソースの消費を抑えて、ＦＰＧＡの修理系３重化を実現する技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明では、電源が投入されると外部の記憶媒体に保持された論理回路情報を内部のコンフィギュレーションメモリにロードして論理回路を構成して動作を開始し、かつ動作中に論理回路情報の一部を外部の記憶媒体から再ロードする動的部分再構成機能を有するプログラマブルデバイスを、３重化した論理回路と、前記３重化した論理回路の出力を多数決して出力するとともに、出力が不一致となった論理回路を特定するエラー信号を出力する多数決回路と、前記３重化した論理回路のそれぞれにおいて、一部の順序回路の入力データを他の２つのいずれかの論理回路に複写データとして出力するとともに、他の論理回路からの複写データと自身の論理回路で生成したデータを選択して前記順序回路に入力するように構成された複写回路と、前記エラー信号を入力して、前記部分再構成機能によりエラーを発生した前記論理回路の前記コンフィギュレーションメモリ上の論理回路情報を上書きする部分再構成を実行するエラー制御回路と、エラーを発生した前記論理回路の部分再構成後に、エラーを発生した前記論理回路に正常に動作している論理回路から順序回路を、前記複写回路を接続しない順序回路の多段階数に応じた複数の複写サイクルを掛けて複写する制御を実行する順序回路複写制御回路を備えて構成した。【００１０】
また、上記課題を解決するために本発明では、前記プログラマブルデバイスにおいて、前記複写回路が、前記３重化した論理回路のそれぞれにおいて、一部の順序回路への入力データ、または出力データを選択して他の２つのいずれかの論理回路に複写データとして出力するとともに、他の論理回路からの複写データと自身の論理回路で生成したデータを選択して前記順序回路に入力するように構成されていることを特徴とする。【００１１】
また、上記課題を解決するために本発明では、前記プログラマブルデバイスの前記３重化した論理回路のそれぞれにおいて、前記複写回路を接続しない順序回路の多段階数に応じた複写サイクル数が許容値を超えないようにするために、多段に連続した前記複写回路を接続しない順序回路の列の途中の順序回路に、前記複写回路を接続して、全ての順序回路の複写に要する複写サイクル数を抑えたことを特徴とする。
【発明の効果】
【００１２】
本発明のプログラマブルデバイスでは、３重化した論理回路のそれぞれにおいて、順序回路の一部に複写回路を接続して、前記複写回路を接続しない順序回路の多段階数に応じた複数の複写サイクルを掛けて全ての順序回路を複写する順序回路更新手段を備えることにより、従来方式と比べて少ない論理セルと配線リソースで実現できるため、ＦＰＧＡの実装効率が改善し、最大ディレイと消費電力の増加を軽減できる。
【図面の簡単な説明】
【００１３】
【図１】本発明を適用した第１の実施例で、動的部分再構成機能を有するＦＰＧＡにおいて、論理回路を３重化して多数決処理を行い、故障した論理回路のＣＲＡＭの再ロードによる修理と、修理した論理回路の一部のＦＦに他の論理回路からデータを複写可能に構成した修理系３重化論理回路のブロック図である。
【図２】実施例１における多数決回路の等価論理図である。
【図３】実施例１における多数決回路の真理値表である。
【図４】実施例１におけるエラー制御回路の処理フローチャートである。
【図５】実施例１における３重化論理回路ＭＡのエラー処理のフローチャートである。
【図６】実施例１における論理回路ＭＡ１のエラー処理のタイミングチャートである。
【図７】順序回路のＦＦの型の分類図である。
【図８】実施例１における３重化論理回路ＭＡとＦＦ複写制御回路（ＦＦＣＯＰＹ）のブロック図である。
【図９】実施例１における３重化論理回路ＭＡ０からＭＡ１へのＦＦ複写回路の構成図である。
【図１０】実施例１における３重化論理回路ＭＡ０からＭＡ１へのＦＦ複写のタイミングチャートである。
【図１１】複写失敗のタイミングチャートの例である。
【図１２】複写成功のタイミングチャートの例である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら、実施の形態について詳細に説明する。
【実施例１】
【００１５】
図１は本発明を適用した第１の実施例を示し、動的部分再構成機能を有するＦＰＧＡにおいて、論理回路を３重化して多数決処理を行い、故障した論理回路のＣＲＡＭへの再ロードによる修理と、修理した論理回路の一部のＦＦに他の論理回路からデータを複写可能に構成した修理系３重化論理回路のブロック図である。【００１６】
ＦＰＧＡ１は論理回路情報が外部のフラッシュＲＯＭ（ＦＲ）２に保持されており、ＦＰＧＡ１に電源が投入されると論理回路情報がＣＲＡＭ４にロードされ、ＦＰＧＡ１は論理回路が決定し動作を開始する。
ＦＰＧＡ１の内部はユーザ論理回路３、ＣＲＡＭ４、ＣＲＡＭアクセスインタフェース回路（ＣＲＡＭ＿ＡＣＣ＿ＩＦ）５から構成される。ユーザ論理回路３には３種類の論理回路ＭＡ，ＭＢ，ＭＣがあり、それぞれ３重化されている。ＭＡはＭＡ０（１０），ＭＡ１（１１），ＭＡ２（１２）に３重化され、入力信号ＩＮＡをそれぞれ処理して、出力１３，１４，１５が多数決回路Ｖ１６（ＶはＶｏｔｅｒの略）で多数決処理されて出力信号ＯＵＴＡとなり、エラー発生時のエラー信号１８がエラー制御回路ＥＲＲＭＮＧ４０に入力される。論理回路ＭＢはＭＢ０（２０），ＭＢ１（２１），ＭＢ２（２２）に３重化され、入力信号ＩＮＢをそれぞれ処理して、出力２３，２４，２５が多数決回路Ｖ２６で処理されて出力信号２７となり、エラー信号２８がＥＲＲＭＮＧ４０に入力される。論理回路ＭＣはＭＣ０（３０），ＭＣ１（３１），ＭＣ２（３２）に３重化され、信号２７をそれぞれ処理して、出力３３，３４，３５が多数決回路Ｖ３６で処理されて出力信号ＯＵＴＣとなり、エラー信号３８がＥＲＲＭＮＧ４０に入力される。【００１７】
ＥＲＲＭＮＧ４０はエラー信号１８，２８，３８にエラーがあることを検出すると、部分再構成制御回路ＰＴＲＣＦＧ５０に故障した論理回路の部分再構成を要求する（４１）。ＣＲＡＭ４は３重化された論理回路ＭＡ０，ＭＡ１，ＭＡ２，ＭＢ０，ＭＢ１，ＭＢ２，ＭＣ０，ＭＣ１，ＭＣ２および、多数決回路Ｖ、エラー制御回路ＥＲＲＭＮＧ、部分再構成制御回路ＰＴＲＣＦＧ、ＦＦ複写制御回路ＦＦＣＯＰＹの論理回路情報を記憶する領域が分かれている。【００１８】
ＰＴＲＣＦＧ５０はＣＲＡＭ＿ＡＣＣ＿ＩＦ５に故障した論理回路の情報が記憶されているＦＲ２のアドレス領域とＣＲＡＭ４のアドレス領域を指定し、ＦＲ２からＣＲＡＭ４への再ロードを要求する（５１）。ＣＲＡＭ＿ＡＣＣ＿ＩＦ５は要求５１に従い、ＦＲ２にアドレスを出力して（６）、論理回路情報を読み出し（７）、ＣＲＡＭ４にアドレスと論理回路情報を出力して上書きを行う（８）。再ロードが終了すると、ＣＲＡＭ＿ＡＣＣ＿ＩＦ５は終了信号９をＰＴＲＣＦＧ５０に出力し、ＰＴＲＣＦＧ５０は終了信号５２をＥＲＲＭＮＧ４０に出力する。ＥＲＲＭＮＧ４０はＦＦ複写制御回路ＦＦＣＯＰＹ６０に修理した論理回路のＦＦ複写を要求する（４２）。ＦＦＣＯＰＹ６０は要求４２に従い、故障した論理回路のＦＦ複写を実行する。６１はＭＡの複写制御信号、６２はＭＢの複写制御信号、６３はＭＣの複写制御信号である。複写が終了すると、ＦＦＣＯＰＹ６０は終了信号６４を出力し、ＥＲＲＭＮＧ４０はエラーを検出した論理回路の修理が完了したことを認識する。修理した論理回路が正常に動作しているならば、多数決回路のエラー出力は無くなるはずである。もし同じ論理回路からエラーが出力されるならＣＲＡＭのソフトエラーではなく、論理回路のハード故障が疑われる。ＥＲＲＭＮＧ４０は修理後にエラーが無くなるかを確認し、無くならない場合は外部にエラー信号ＥＲＲを出力し、システムに異常を通知する。ＥＲＲＭＮＧ４０はエラー発生の情報を記録するレジスタあるいはメモリを有することもできる。記憶する情報としては、エラーを発生したモジュールの識別子、エラーの発生回数、エラーの発生タイミングなどが考えられる。【００１９】
図２は実施例１における多数決回路Ｖの等価論理図である。ｖｉｎ０，ｖｉｎ１，ｖｉｎ２にはそれぞれ３重化された論理回路の出力信号を入力する。出力信号がＮビットある場合には、Ｎ個の回路をビットごとに接続する。ｖｏｕｔは多数決出力信号、ｅｒｒ［１：０］はエラー信号である。【００２０】
図３は実施例１における多数決回路Ｖの真理値表である。入力信号ｖｉｎ０，ｖｉｎ１，ｖｉｎ２はそれぞれ０または１の値をとり、組み合わせは８通りである。多数決出力信号ｖｏｕｔは３入力の多い方の値を出力する。エラー信号ｅｒｒ［１：０］は３つの入力信号が全て一致する場合には００（エラー無し）、２対１に分かれる場合には一致しない入力信号の識別番号（ｖｉｎ０の場合０１、ｖｉｎ１の場合１０、ｖｉｎ２の場合１１）を出力する。【００２１】
図４は実施例１におけるエラー制御回路ＥＲＲＭＮＧ４０の処理フローチャートである。処理Ｐ１において多数決回路（Ｖ）１６，２６，３６のエラー信号をチェックする。分岐処理Ｓ１において、エラーが無い場合には終了となる。エラーがある場合は分岐処理Ｓ２へ移り、ＭＡがエラーの場合はＭＡのエラー処理（Ｐ２）を実行する。ＭＡがエラーでない場合には分岐処理Ｓ３へ移り、ＭＢがエラーの場合はＭＢのエラー処理（Ｐ３）を実行する。ＭＢがエラーでない場合にはＭＣのエラー処理（Ｐ４）を実行する。ＭＡ，ＭＢ，ＭＣの複数がエラーの場合は、ＭＡ＞ＭＢ＞ＭＣの優先順位でエラー処理が実行される。【００２２】
図５は実施例１における３重化論理回路ＭＡのエラー処理のフローチャートである。処理Ｐ２０において多数決回路（Ｖ）１６のエラー信号１８をチェックする。分岐処理Ｓ２０においてＭＡ０がエラーの場合は処理Ｐ２１でＭＡ０を部分再構成し、処理Ｐ２２でＭＡ０のＦＦをＭＡ２より複写する。ＭＡ０がエラーでない場合には分岐処理Ｓ２１へ移り、ＭＡ１がエラーの場合は処理Ｐ２３でＭＡ１を部分再構成し、処理Ｐ２４でＭＡ１のＦＦをＭＡ０より複写する。ＭＡ１がエラーでない場合には処理Ｐ２５でＭＡ２を部分再構成し、処理Ｐ２６でＭＡ２のＦＦをＭＡ１より複写する。【００２３】
図６は実施例１におけるＭＡ１のエラー処理のタイミングチャート例である。クロックｃｌｋが１のサイクルでは、ＭＡ０，ＭＡ１，ＭＡ２の論理回路情報（ＣＲＡＭ）は正常であるとする。ユーザ論理回路（ＭＡ０，ＭＡ１，ＭＡ２）は正常に動作し、多数決回路（Ｖ）の入力は一致するため、ｖｏｕｔは正常でｅｒｒはエラー無しとなる。
クロックｃｌｋが４のサイクルで、ＣＲＡＭ上のＭＡ１の論理回路情報にソフトエラーが発生して故障(情報のエラー)すると、ＭＡ１の論理回路が故障(機能のエラー)して誤動作となる。
クロックｃｌｋが７のサイクルで誤動作の影響が出力に現れると、多数決回路の入力はＭＡ０とＭＡ２が一致し、ＭＡ１が他と不一致となるため、ｖｏｕｔにはＭＡ０およびＭＡ２の出力を正常な値とみなして出力し、ｅｒｒにはＭＡ１がエラーであることを出力する。
ＥＲＲＭＮＧ４０はＰＴＲＣＦＧ５０にＭＡ１の再構成を要求する（ｃｌｋ＝１０）。
ＰＴＲＣＦＧ５０はＣＲＡＭ＿ＡＣＣ＿ＩＦ５に要求を出し、ＭＡ１の論理回路情報を外部のフラッシュＲＯＭ２からＣＲＡＭ４にロードさせる。論理回路情報のロードに要する時間(再構成時間)は、ＭＡ１の回路規模に依存するが、本実施例では１２００ｃｌｋ要するとする。
ロードが完了すると（ｃｌｋ＝１２１５）、ＥＲＲＭＮＧ４０はＦＦＣＯＰＹ６０にＦＦ複写を要求し、ＦＦＣＯＰＹ６０は修理された論理回路ＭＡ１のＦＦ複写を実行する（ｃｌｋ＝１２２０）。状態故障(ゲートや配線(回路)は正しく直ったが、ＦＦの値は間違っている状態)していたＭＡ１が正常になったため、多数決回路の入力は一致するようになりｅｒｒはエラー無しとなる。【００２４】
クロックｃｌｋが１３０２のサイクルで、ＣＲＡＭ上のＭＡ２の論理回路情報にソフトエラーが発生して故障すると、ＭＡ２の論理回路が故障して誤動作となる。ｃｌｋが１３０５のサイクルで誤動作の影響が出力に現れると、多数決回路の入力はＭＡ０とＭＡ１が一致し、ＭＡ２が他と不一致となるため、ｖｏｕｔにはＭＡ０およびＭＡ１の出力を正常な値とみなして出力し、ｅｒｒにはＭＡ２がエラーであることを出力する。ＭＡ１の場合と同様に、部分再構成とＦＦ複写によってＭＡ２の修理が実行される。以上のように修理系３重化は故障した論理回路を修理して３重化を復旧させることによって、２つの論理回路が同時に故障することを防いでいる。【００２５】
本発明の特徴であるＦＦの部分複写の説明をする前に、図７を用いて順序回路であるＦＦの型について説明する。
（１）フリーランカウンタはリセット入力（ｒｓｔ）付きのＮビットのＦＦで、ｒｓｔで全ビット０に初期化され、ｒｓｔが解除されるとクロックｃｌｋが入力されるごとに１ずつカウントアップする。フリーランカウンタは、出力データｑをインクリメンタで１加算し、ＦＦの入力データｄとする。出力データｑが入力データｄを決定するフィードバックループを形成しており、ＦＦを更新するためにはＦＦ複写が必須である。
（２）ステートマシンは現在のステートであるＦＦの出力データｑと入力ｉにより組合わせ回路Ｃにおいて次のステートｄが決まる。ステートマシンでは、ＦＦの出力データｑが入力データｄを決定するフィードバックループを形成しており、ＦＦを更新するためにはＦＦ複写が必須である。
（３）イネーブル無しレジスタはフィードバックループを形成しないデータの一時記憶回路である。ＦＦの入力データｄが１クロックサイクル遅れで出力データｑとなる。この型はＦＦの出力データｑが入力データｄに影響を与えず、ｄが正常になれば次のサイクルでｑが正常となるためＦＦ複写の必要性は低い。ただし、この型のＦＦが多段に接続されている場合には、初段のＦＦの入力が正常になってから最終段のＦＦの出力が正常になるまでにＦＦの段数分のサイクルが必要であることを考慮しなくてはならない。
（４）イネーブル付きレジスタはイネーブルｅｎが１の場合の入力データｄが１クロック遅れで出力データｑとなる。この型はＦＦの出力データｑが入力データｄに影響を与えないが、ｄが正常になってもイネーブルｅｎが１にならないとｑが更新されない。ＦＦ複写の必要性はｅｎの頻度に依存し、ｅｎが１になる頻度が高ければＦＦ複写の必要性は低いが、頻度が低ければその必要性は高い。【００２６】
本発明では、（１）フリーランカウンタと（２）ステートマシンはＦＦ複写を必須とし、（３）と（４）のレジスタは、許容できるサイクル時間内に正常な入力ｄが書き込まれる可能性が低い個所だけ複写を行うようにする。論理回路の一部のＦＦを複写して正常にし、その他のＦＦはサイクルの経過によって入力が正常になり、それが書き込まれて正常化するまで待つ。【００２７】
図８は実施例１における３重化論理回路ＭＡとＦＦ複写制御回路（ＦＦＣＯＰＹ）のブロック図である。論理回路ＭＡ０（１０），ＭＡ１（１１），ＭＡ２（１２）において、Ｆはイネーブル無しレジスタ、ＦＥはイネーブル付きレジスタである。Ｃは組み合わせ回路である。この実施例では１段目と４段目のＦＦを複写し、２段目と３段目のＦＦは複写しない。７０はＭＡ０からＭＡ１への複写データ、７１はＭＡ１からＭＡ２への複写データ、７２はＭＡ２からＭＡ０への複写データである。ＦＦＣＯＰＹ６０はエラー制御回路ＥＲＲＭＮＧ４０からのＦＦ複写要求４２に従い、故障した論理回路のＦＦ複写を実行する。６１０はＭＡ０のＦＦ複写制御、６１１はＭＡ１のＦＦ複写制御、６１２はＭＡ２のＦＦ複写制御である。図１におけるＭＡの複写制御信号６１は、６１０，６１１，６１２の３本を束ねたものである。ＦＦＣＯＰＹ６０には複写サイクル設定情報記憶部ＣＰＣＹＣ６５があり、この記憶情報(サイクル)に従って複写を実行する。ＣＰＣＹＣ６５記憶情報は定数でも変数（レジスタ設定）でも良い。ＦＦＣＯＰＹ６０はＦＦ複写を実行するとＥＲＲＭＮＧ４０に終了信号６４を出力する。【００２８】
図９は実施例１における３重化論理回路ＭＡ０からＭＡ１へのＦＦ複写回路の構成図である。ＭＡ０（１０）において、組み合わせ回路１００の出力ｄ１０１とｅｎ１０２は複写回路を付加する前のイネーブル付きＦＦ（ＦＥ）１０７の入力データとイネーブルである。ｍａ２＿ｆｆ＿ｏｕｔ７２は図示していないＭＡ２からの複写データである。ｃｏｐｙ＿ｆｆ＿ｍａ０（６１０）はＭＡ０のＦＦ複写制御信号である。マルチプレクサＭＵＸ１０３はＦＥ１０７の入力データｄ＿ｍｕｘ１０４を生成し、ｃｏｐｙ＿ｆｆ＿ｍａ０（６１０）が０の場合はｄ１０１を選択し、１の場合はｍａ２＿ｆｆ＿ｏｕｔ７２を選択する。論理和回路１０５はＦＥ１０７のイネーブル１０６を生成する（ｅｎ１０２とｃｏｐｙ＿ｆｆ＿ｍａ０（６１０）の論理和）。マルチプレクサＭＵＸ１０９はＭＡ０からＭＡ１への複写データｍａ０＿ｆｆ＿ｏｕｔ７０を生成し、ｅｎ１０２が０の場合はＦＥ１０７の出力データｑ１０８を選択し、１の場合はｄ１０１を選択する。ＭＡ１の内部構成はＭＡ０と同じである。【００２９】
ＭＡ０からＭＡ１へのＦＦ複写を実行すると、ｃｏｐｙ＿ｆｆ＿ｍａ０＝０，ｃｏｐｙ＿ｆｆ＿ｍａ１＝１となる。ＭＡ０においては、ＦＥ１０７の入力データｄ＿ｍｕｘ１０４＝ｄ１０１，イネーブル１０６＝ｅｎ１０２となり、通常通りの動作となる。またｍａ０＿ｆｆ＿ｏｕｔ７０はｅｎ１０２が０の場合はＦＥ出力データｑ１０８となり、１の場合はｄ１０１となるので、次のサイクルでＦＥ１０７が保持するデータになる。ＭＡ１においては、ＦＥ１１７の入力データｄ＿ｍｕｘ１１４＝ｍａ０＿ｆｆ＿ｏｕｔ７０，イネーブル１１６＝（ｅｎ１１２｜ｃｏｐｙ＿ｆｆ＿ｍａ１）＝１となり、次のサイクルでＭＡ０のＦＥ１０７が保持するデータと一致する。【００３０】
図１０は実施例１における３重化論理回路ＭＡ０からＭＡ１へのＦＦ複写のタイミングチャートである。ＦＦは４ビットのイネーブル付きレジスタであるとする。ＦＦの入力データｄ、ＦＦの出力データｑ、ＦＦ複写データｍａ０＿ｆｆ＿ｏｕｔは４ビットの２進数として表記している。ｃｌｋが１のサイクルではＦＦの入力データｄ、イネーブルｅｎ、出力データｑがＭＡ０とＭＡ１で一致していない。ｃｌｋが２のサイクルでＭＡ０からＭＡ１へのＦＦ複写制御信号ｃｏｐｙ＿ｆｆ＿ｍａ１がアサートされる。ＭＡ０においてｅｎが１であるためＦＦ複写データｍａ０＿ｆｆ＿ｏｕｔは入力データｄ＝０１０１となり、ＭＡ０とＭＡ１のＦＦにデータ０１０１が書き込まれ、ｃｌｋが３のサイクルでＦＦの出力データｑがＭＡ０とＭＡ１で一致する。【００３１】
図１１と図１２を用いて複数サイクル複写の必要性について説明する。図１１は１サイクル複写による複写失敗のタイミングチャートである。論理回路は図８と同じ４段のＦＦが接続された構成とし、複写先のＦＦの信号を示している。ｃｌｋが１のサイクルで４つのＦＦは入力および出力が誤っているとする。１段目のイネーブル付きＦＦは図に示す６サイクルにはイネーブルｅｎ１がアサートされない。２段目と３段目はイネーブル無しのＦＦである。４段目のイネーブル付きＦＦはｃｌｋが１と４のサイクルでイネーブルｅｎ４がアサートされる。ｃｌｋが２のサイクルでＦＦ複写制御信号ｆｆ＿ｃｏｐｙがアサートされると、１段目と４段目のイネーブル付きＦＦに複写が行われ、ｃｌｋが３のサイクルで１段目のＦＦの出力データｑ１と４段目のＦＦの出力データｑ４が正しくなる。このサイクルでは２段目と３段目のイネーブル無しＦＦの出力データｑ２，ｑ３は誤っている。ｃｌｋが４のサイクルでｑ２が正しくなり、ｃｌｋが５のサイクルでｑ３が正しくなる。ところが、ｃｌｋが４のサイクルで４段目のイネーブル付きＦＦのイネーブルｅｎ４がアサートされてしまい、３段目のＦＦの誤った出力データｑ３で生成されたｄ４を書き込んでしまい、ｃｌｋが５のサイクルでｑ４は誤ったデータになってしまう。これを複写失敗と呼ぶ。このようにＦＦが多段に接続された構成で、前(入力側の接続)に複写を行わないＦＦが存在すると、自身は複写を実行して出力が正しくなったＦＦでも、その後の入力データが正しくなるまでにサイクルが必要となることが判る。【００３２】
図１２は複数サイクル複写による複写成功のタイミングチャートである。４段目のイネーブル付きＦＦの前にはＦＦ複写を行わないＦＦが２段あるので、正しいデータの到着が２サイクル遅れる。そこでＦＦ複写を２サイクル追加した３サイクルで行う。このようにすることで、一部のＦＦだけを複写して、全体のＦＦを正常にすることが可能になる。
【実施例２】
【００３３】
図８の論理回路ＭＡ０（１０），ＭＡ１（１１），ＭＡ２（１２）はイネーブル付きＦＦ（ＦＥ）だけを複写し、イネーブル無しＦＦ（Ｆ）を複写しなかったが、論理回路によってはイネーブル無しＦＦの複写が有効な場合がある。イネーブル無しＦＦが多段に接続される論理回路の場合、途中のＦＦを複写するように構成することで、全体のＦＦを正常にするまでの複写サイクルを短くできる。例えば、１００段のＦＦが接続されている場合、全く複写を行わなければ正しいデータが１００段目のＦＦから出力されるまでに１００サイクルを必要とするが、５０段目のＦＦを複写すれば５１サイクルに半減する。このように、イネーブル無しＦＦを複写するようにした実施例も考えられる。
【実施例３】
【００３４】
図１において、ＥＲＲＭＮＧ４０，ＰＴＲＣＦＧ５０，ＦＦＣＯＰＹ６０を２重化し、それぞれの出力信号を比較して故障を検出する構成とする実施例も考えられる。ＥＲＲＭＮＧ４０，ＰＴＲＣＦＧ５０，ＦＦＣＯＰＹ６０もＦＰＧＡのユーザ論理回路で作られているため、ＣＲＡＭのソフトエラーによって論理回路が故障する可能性がある。【００３５】
２重化した一方の論理回路を主の論理回路として、もう一方を補助の論理回路として、両方の論理回路の出力を比較して、一致する場合は、主の論理回路の出力を使用する。エラーが発生したら、両論理回路ともに部分再構成して、初期化することで再開させることができる。ＥＲＲＭＮＧ４０，ＰＴＲＣＦＧ５０，ＦＦＣＯＰＹ６０のいずれも回路規模は大きくないので、部分再構成に要する時間も大きくないため、これらの回路で故障が検出されたらこれらの機能を停止させ、部分再構成を行って動作を再開させる。
【符号の説明】
【００３６】
１  ＦＰＧＡ
２  フラッシュＲＯＭ
３  ＦＰＧＡ内部のユーザ論理回路
４  ＦＰＧＡ内部のコンフィギュレーションＲＡＭ
５  ＦＰＧＡ内部のＣＲＡＭアクセスインタフェース回路
１０，１１，１２  ３重化論理回路ＭＡ
２０，２１，２２  ３重化論理回路ＭＢ
３０，３１，３２  ３重化論理回路ＭＣ１６，２６，３６  多数決回路
４０  エラー制御回路
５０  部分再構成制御回路
６０  ＦＦ複写制御回路
６５  複写サイクル設定情報記憶部
【図１】
2015068207.tif 000003
【図２】
2015068207.tif 000004
【図３】
2015068207.tif 000005
【図４】
2015068207.tif 000006
【図５】
2015068207.tif 000007
【図６】
2015068207.tif 000008
【図７】
2015068207.tif 000009
【図８】
2015068207.tif 000010
【図９】
2015068207.tif 000011
【図１０】
2015068207.tif 000012
【図１１】
2015068207.tif 000013
【図１２】
2015068207.tif 000014
【国際調査報告】
2015068207.tif 000015
2015068207.tif 000016
2015068207.tif 000017
2015068207.tif 000018