(57)【要約】  論理回路とＲＡＭを高速動作させつつ，論理回路がＲＡＭに誤って書き込みを行った場合にはこれを速やかに訂正して多重化したＲＡＭの内容を一致させることが可能な集積回路等を提供する。この課題を解決するために，論理回路および論理回路がデータの書き込みと読み出しを行うＲＡＭを有する集積回路において，多重化した論理回路と，前記多重化した論理回路にそれぞれ接続される複数のＲＡＭと，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して誤ったデータ書き込みを検出し，ＲＡＭのエラーを訂正するＲＡＭアクセス訂正手段を有することを特長とする。
2015193984.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも３重に多重化された論理回路と，
前記多重化された論理回路それぞれに設けられ，前記論理回路がデータの書き込み及び読み出しを行うＲＡＭと，
前記論理回路から前記ＲＡＭへのアクセス信号を比較して，誤ったアクセス信号を検出すると，誤ったアクセス信号を受信した前記ＲＡＭに対して，他の前記ＲＡＭに書き込まれたライトデータを用いてエラー訂正を行うＲＡＭアクセス訂正手段と，
を有する集積回路。
【請求項２】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化された論理回路から前記ＲＡＭへのアクセス信号を比較して不一致を検出した場合に，一致する数が最も多い値を正常な信号とみなし，それ以外の値を異常な信号とみなし，前記正常とみなしたアクセス信号と前記異常とみなしたアクセス信号とから前記ＲＡＭのエラー種別を特定し，そのエラーを訂正することを特長とする集積回路。
【請求項３】
請求項２に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，誤ったデータ書き込みのエラー種別を保持するエラー検出レジスタを有し，
前記エラー検出レジスタは，エラー無し，書き込み不実行，不正書き込み，アドレス誤りの少なくとも４つの種別を表すことを特長とする集積回路。
【請求項４】
請求項１に記載の集積回路において，
前記論理回路は，所定のクロックに従って前記ＲＡＭへのアクセスを行うものであって，
前記ＲＡＭアクセス訂正手段は，あるクロックでアクセス信号を検出すると，次のクロックで，当該ＲＡＭのエラー訂正処理を行うことを特徴とする集積回路。
【請求項５】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，誤ったデータ書き込みを検出した場合に，一致する数が最も多いアクセス信号のアドレス値を保持する正常アドレスレジスタと，一致する数が最も多いアクセス信号のライトデータ値を設定する正常ライトデータレジスタを有することを特長とする集積回路。
【請求項６】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，誤ったデータ書き込みを検出した場合に，一致する数が最も多いアクセス信号以外のアクセス信号のアドレス値を設定する異常アドレスレジスタと，前記多重化した論理回路に接続されるＲＡＭの前記異常アドレスレジスタに設定されたアドレスからデータを読み出して，その一致する数が最も多いデータを正常データとして設定する正常リードデータレジスタ有することを特長とする集積回路。
【請求項７】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して不一致を検出した場合に，正常とみなしたアクセス信号のコマンドがライトで，異常とみなしたアクセス信号のコマンドがライトで無い場合に，正常とみなしたアクセス信号のアドレスとライトデータを使って，異常とみなしたアクセスが実行されたＲＡＭへのライトアクセスを行うことによりエラーを訂正することを特長とする集積回路。
【請求項８】
ライトデータ誤り
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して不一致を検出した場合に，正常とみなしたアクセス信号と異常とみなしたアクセス信号のコマンドがライトで一致し，アドレスが一致し，ライトデータが不一致の場合に，正常とみなしたＲＡＭアクセス信号のアドレスとライトデータを使って，異常とみなしたＲＡＭアクセスが実行されたＲＡＭへのライトアクセスを行うことによりエラーを訂正することを特長とする集積回路。
【請求項９】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して不一致を検出した場合に，正常とみなしたアクセス信号のコマンドがライトなく，異常とみなしたアクセス信号のコマンドがライトの場合に，異常とみなしたアクセス信号のアドレスを使って，前記多重化した論理回路に接続されるＲＡＭからデータを読み出して，その一致する数が最も多いデータを正常データとして，異常とみなしたＲＡＭアクセスが実行されたＲＡＭへのライトアクセスを行うことによりエラーを訂正することを特長とする集積回路。
【請求項１０】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して不一致を検出した場合に，正常とみなしたアクセス信号と異常とみなしたアクセス信号のコマンドがライトで一致し，アドレスが不一致の場合に，正常とみなしたＲＡＭアクセス信号のアドレスとライトデータを使って，異常とみなしたＲＡＭアクセスが実行されたＲＡＭへのライトアクセスを行い，異常とみなしたアクセス信号のアドレスを使って，前記多重化した論理回路に接続されるＲＡＭからデータを読み出して，その一致する数が最も多いデータを正常データとして，異常とみなしたＲＡＭアクセスが実行されたＲＡＭへのライトアクセスを行うことによりエラーを訂正することを特長とする集積回路。
【請求項１１】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段は，前記多重化した論理回路から前記ＲＡＭへのアクセス信号を一時記憶する３段以上のバッファを有し，異常とみなしたＲＡＭアクセスが実行されたＲＡＭのエラーを訂正中にアクセス信号を一時記憶しておき，異常とみなしたＲＡＭアクセスが実行されたＲＡＭのエラーの訂正が終了した後に比較を行うことを特長とする集積回路。
【請求項１２】
請求項１に記載の集積回路において，
前記ＲＡＭアクセス訂正手段が誤ったデータ書き込みを検出した場合に，そのエラー訂正が終了するまでエラーを発生した論理回路のＲＡＭアクセスが無効化することを特長とする集積回路。
【請求項１３】
電源が投入されると外部の記憶媒体に保持された論理回路情報を内部のコンフィギュレーションＲＡＭにロードして論理回路を構成して動作するプログラマブルデバイスにおいて，
動作中に論理回路の一部を外部の記憶媒体から再ロードする動的部分再構築部と，
少なくとも３重に多重化した論理回路と，
前記多重化した論理回路にそれぞれ接続される複数のＲＡＭと，
前記多重化した論理回路から前記ＲＡＭへのアクセス信号を比較して誤ったアクセス信号を検出し，前記ＲＡＭのエラーを訂正するＲＡＭアクセス訂正手段を有し，
前記ＲＡＭアクセス訂正手段が誤ったデータ書き込みを検出した場合に，そのエラー訂正が終了するまでエラーを発生した論理回路のＲＡＭアクセスを無効化し，前記動的部分再構成部を用いてエラー発生した論理回路の部分再構成を行い，部分再構成が完了した後，前記多重化した論理回路から前記ＲＡＭへのアクセスが無く，誤ったデータ書き込みが検出されていない条件でＲＡＭアクセスの無効化を解除することを特長とするプログラマブルデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，集積回路およびプログラマブルデバイスに関する。
【背景技術】
【０００２】
家電製品，ＡＶ機器，携帯電話，自動車，産業機械等の機器には，専用ＬＳＩ（ＡＳＩＣ）が数多く使用されているが，機器の高性能化・高機能化・小型化・低消費電力化・低コスト化に欠かせない重要な部品である。近年半導体プロセスの微細化により，放射線による一過性の故障（ソフトエラー）が発生しやすいという信頼性問題が生じている。定期的なリフレッシュ（記憶保持動作）が不要な揮発性メモリであるＳＲＡＭ（Ｓｔａｔｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）は単体のメモリチップの他，データ記憶用メモリとしてマイクロプロセッサ，マイクロコントローラ，ＡＩＳＣなど様々なＬＳＩに内蔵されているが，組み合わせ回路やフリップフロップなどの素子に比べてソフトエラー耐性が低いと言われてきた。【０００３】
ＳＲＡＭのソフトエラー対策としてはＥＣＣ（Ｅｒｒｏｒ Ｃｏｌｌｅｃｔｉｎｇ Ｃｏｄｅ）と呼ばれるエラー検出訂正技術が一般的に利用されている。ＳＲＡＭに冗長コード部を付加し，データ書き込み時に冗長コードを生成してデータとともに記憶しておき，読み出し時にデータと冗長コードを使ってエラー検出と訂正を行う。ＳＥＣＤＥＤ（Ｓｉｎｇｌｅ Ｅｒｒｏｒ Ｃｏｌｌｅｃｔｉｏｎ，Ｄｏｕｂｌｅ Ｅｒｒｏｒ Ｄｅｔｅｃｔｉｏｎ）と呼ばれる方式では，１ビットエラー訂正と２ビットエラー検出が可能である。【０００４】
半導体プロセスの微細化がさらに進むと，ソフトエラーはフリップフロップなどの順序回路でも問題になると言われている。論理回路に含まれるフリップフロップにソフトエラーが発生し，論理回路が誤動作してＳＲＡＭのアクセスを誤ることが考えられるが，この場合にはＥＣＣで誤りを検出し，訂正することはできない。【０００５】
さらに，内部論理回路が固定のＡＳＩＣに対し，ユーザによって内部論理回路を定義・変更できるプログラマブルデバイスであるＦＰＧＡ（Ｆｉｅｌｄ Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）では，論理回路情報を内部のＣＲＡＭ（コンフィギュレーションＲＡＭ）に持つため，ＣＲＡＭにソフトエラーが発生して論理回路情報が書き変わり，論理回路が誤った機能に変更（故障）して誤動作するという問題があった。【０００６】
ここで，論理回路が故障しても出力を誤らなくする方法として３重化がある。３重化した論理回路の出力を多数決処理して，結果が２対１になったときには２つが一致する多数側の結果を選択する。論理回路のＲＡＭアクセス信号を多数決処理することにより，アクセス誤りをマスクし，正常なアクセスを行うことが可能になる。【０００７】
非特許文献１では，ＦＰＧＡの内蔵メモリであるＢＲＡＭ（Ｂｌｏｃｋ ＲＡＭ）のエラー訂正方法として，“ＴＭＲ Ｂｌｏｃｋ ＲＡＭ ｗｉｔｈ Ｒｅｆｒｅｓｈ”という方法を提案している。この方法は，ＢＲＡＭの２つのアクセスポートのうち一つを論理回路のアクセスに使い，他の一つをエラー訂正に使う。３重化した論理回路にそれぞれＢＲＡＭを接続し，エラー訂正用のポートにＢＲＡＭリフレッシュ回路を接続する。ＢＲＡＭリフレッシュ回路は論理回路のアクセスとは無関係に３つのＢＲＡＭの同一アドレスからデータを同時に読み出し，多数決処理を行ってデータを書き戻す。ＢＲＡＭのアクセスは周期的にアドレスを更新しながら実行される。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】Carl Carmichael，“Triple Module Redundancy Design Techniques for Virtex FPGAs”，XAPP197 (v1.0.1) July 6, 2006
【発明の概要】
【発明が解決しようとする課題】
【０００９】
３重化した論理回路のＲＡＭアクセス信号を多数決処理する方法は，論理回路から多数決回路を経てＲＡＭまでの配線が長くなることによりアクセス時間が増大するため，高速動作させたい場合には不向きである。ここで，上記非特許文献１のＢＲＡＭリフレッシュ方式は３重化した論理回路のＲＡＭアクセス信号を多数決処理せずにそのままＢＲＡＭに接続できるので高速動作が可能である。また，この方法はＢＲＡＭにソフトエラーが発生した場合の訂正にも利用できるが，論理回路がＢＲＡＭに誤って書き込みを行った場合の訂正にも利用できる。【００１０】
しかしながら，ＢＲＡＭリフレッシュ回路の誤り訂正は論理回路のアクセスとは無関係に実行されるため，エラーが訂正されるまでに時間を要する。例えば，４ＫバイトのＢＲＡＭを８バイトのデータサイズでリフレッシュする場合，１回のリフレッシュ動作にリードアクセスとライトアクセスの２サイクルがかかると仮定すると，４Ｋバイト／８バイト＝５１２回のリフレッシュが必要となり，最小でも１０２４サイクルがかかる。論理回路の動作周波数が１００ＭＨｚの場合には１０．２４マイクロ秒がかかる。以上のように従来の方法は，論理回路とＲＡＭを高速動作させつつ，論理回路がＲＡＭに誤って書き込みを行った場合にはこれを短時間で訂正することが困難であった。
【課題を解決するための手段】
【００１１】
上記課題を解決するため，本発明によれば，少なくとも３重に多重化された論理回路と，前記多重化された論理回路それぞれに設けられ，前記論理回路がデータの書き込み及び読み出しを行うＲＡＭと，前記論理回路から前記ＲＡＭへのアクセス信号を比較して，誤ったアクセス信号を検出すると，誤ったアクセス信号を受信した前記ＲＡＭに対して，他の前記ＲＡＭに書き込まれたライトデータを用いてエラー訂正を行うＲＡＭアクセス訂正手段と，を有する。
【発明の効果】
【００１２】
論理回路とＲＡＭを高速動作させつつ，論理回路がＲＡＭに誤って書き込みを行った場合にはこれを速やかに訂正して多重化したＲＡＭの内容を一致させることが可能になる。
【図面の簡単な説明】
【００１３】
【図１】本発明を適用した第１の実施例で，３重化した論理回路のＲＡＭアクセス訂正回路を有する集積回路のブロック図である。
【図２】実施例１における多数決回路の等価論理図である。
【図３】実施例１における多数決回路の真理値表である。
【図４】実施例１におけるＲＡＭアクセス訂正回路ＲＡＭＥＤＣのブロック図である。
【図５】実施例１における３重化した論理回路のアクセス信号が２対１に分かれた場合のＲＡＭＥＤＣのエラー分類表である。
【図６】ＲＡＭＥＤＣの処理フローチャートである。
【図７】図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．１のエラー訂正処理タイミングチャートである。
【図８】図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．２のエラー訂正処理タイミングチャートである。
【図９】図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．３のエラー訂正処理タイミングチャートである。
【図１０】図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．４のエラー訂正処理タイミングチャートである。
【図１１】実施例２におけるＲＡＭアクセス訂正回路ＲＡＭＥＤＣのブロック図である。
【図１２】本発明を適用した第３の実施例のブロック図である。
【図１３】本発明を適用した第４の実施例で，３重化した論理回路のＲＡＭアクセス訂正手段を有するＦＰＧＡのブロック図である。
【図１４】実施例４におけるＲＡＭアクセスエラー訂正処理タイミングチャートである。
【発明を実施するための形態】
【００１４】
以下，図面を参照しながら，実施の形態について詳細に説明する。
【実施例１】
【００１５】
図１は本発明を適用した第１の実施例で，３重化した論理回路のＲＡＭアクセス訂正回路を有する集積回路のブロック図である。【００１６】
図１で示す集積回路は，ウェハーと呼ばれる薄い半導体基板の上に電子回路が作り込まれたＬＳＩ，特に製造後にユーザによって内部論理回路を定義・変更できるプログラマブルデバイスを採用する。【００１７】
集積回路（１）は３重化されたモジュールＭ０（２），Ｍ１（３），Ｍ２（４）と，多数決回路Ｖ（５），ＲＡＭアクセス訂正回路ＲＡＭＥＤＣ（６），エラー制御回路ＥＲＲＭＮＧ（７）を含んでいる。集積回路（１）の入力信号ＩＮはＭ０（２），Ｍ１（３），Ｍ２（４）に入力され，Ｍ０（２）の出力信号８，Ｍ１（３）の出力信号９，Ｍ２（４）の出力信号１０は多数決回路Ｖ（５）において多数決処理が行われ，結果が集積回路（１）の出力信号ＯＵＴとして出力される。信号１１は多数決回路Ｖ（５）のエラー検出信号であり，３入力の全てが一致しなかった場合に出力される。エラー検出信号１１はエラー制御回路ＥＲＲＭＮＧ（７）に入力され，集積回路の外部にエラー信号ＥＲＲを通知する。【００１８】
モジュールＭ０（２）は論理回路ＬＣ（２０）とＲＡＭ（２１）を含んでおり，信号２２はＬＣ（２０）のＲＡＭアクセス信号で，コマンド，アドレス，ライトデータを含んでいる。信号２３はＬＣ（２０）のＲＡＭアクセス信号（２２）がリードアクセスの場合にＲＡＭ（２１）から読み出されるリードデータである。ＬＣ（２０）はＭ０（２）の外部へ出力信号８を出力する。【００１９】
モジュールＭ１（３）は論理回路ＬＣ（３０）とＲＡＭ（３１）を含んでおり，信号３２はＬＣ（３０）のＲＡＭアクセス信号で，コマンド，アドレス，ライトデータを含んでいる。信号３３はＬＣ（３０）のＲＡＭアクセス信号（３２）がリードアクセスの場合にＲＡＭ（３１）から読み出されるリードデータである。ＬＣ（３０）はＭ１（３）の外部へ出力信号９を出力する。【００２０】
モジュールＭ２（４）は論理回路ＬＣ（４０）とＲＡＭ（４１）を含んでおり，信号４２はＬＣ（４０）のＲＡＭアクセス信号で，コマンド，アドレス，ライトデータを含んでいる。信号４３はＬＣ（４０）のＲＡＭアクセス信号（４２）がリードアクセスの場合にＲＡＭ（４１）から読み出されるリードデータである。ＬＣ（４０）はＭ２（４）の外部へ出力信号１０を出力する。【００２１】
ＲＡＭアクセス訂正回路ＲＡＭＥＤＣ（６）は３重化した論理回路ＬＣ（２０，３０，４０）のＲＡＭアクセス信号２２，３２，４２を監視し，誤ったデータ書き込みなどエラーを検出すると直ちに訂正を行う。ＲＡＭＥＤＣ（６）から３重化したＲＡＭ（２１，３２，４２）へのＲＡＭアクセス信号２４，３４，４４はコマンド，アドレス，ライトデータを含んでいる。３重化したＲＡＭ（２１，３１，４１）からＲＡＭＥＤＣ（６）への信号２５，３５，４５はＲＡＭアクセス信号２４，３４，４４がリードアクセスの場合に読み出されるリードデータである。信号１２はＲＡＭＥＤＣ（６）のエラー検出信号であり，ＲＡＭアクセス信号２２，３２，４２が全て一致しなかった場合に出力される。エラー検出信号１２はエラー制御回路ＥＲＲＭＮＧ（７）に入力され，集積回路の外部にエラー信号ＥＲＲを通知する。【００２２】
図２は実施例１における多数決回路の等価論理図である。ｖｉｎ０，ｖｉｎ１，ｖｉｎ２にはそれぞれ３重化された論理回路の出力信号を入力する。出力信号がＮビットある場合には，Ｎ個の回路をビットごとに接続する。ｖｏｕｔは多数決出力信号，ｅｒｒ［１：０］はエラー信号である。【００２３】
図３は実施例１における多数決回路の真理値表である。入力信号ｖｉｎ０，ｖｉｎ１，ｖｉｎ２はそれぞれ０または１の値をとり，組み合わせは８通りである。多数決出力信号ｖｏｕｔは３入力の多い方の値を出力する。エラー信号ｅｒｒ［１：０］は３つの入力信号が全て一致する場合には００（エラー無し），２対１に分かれる場合には一致しない入力信号の識別番号（ｖｉｎ０の場合０１，ｖｉｎ１の場合１０，ｖｉｎ２の場合１１）を出力する。【００２４】
図４は実施例１におけるＲＡＭアクセス訂正回路ＲＡＭＥＤＣ（６）のブロック図である。６種類のレジスタ（６０〜６５），ＬＣ−ＲＡＭアクセス監視部（６６），ＲＡＭＥＤＣ−ＲＡＭアクセス制御部（６７）を含む。【００２５】
ＥＤレジスタ（６０）はエラー検出結果を保持する。‘０’はエラー無し，‘１’は書き込み不実行（正しいアドレスへのライトデータ誤りを含む），‘２’は不正書き込み，‘３’はアドレス誤り，‘４’はＲＡＭアクセス信号が全て不一致を意味する。ＥＭＩレジスタ（６１）はＲＡＭアクセス信号が２対１に分かれた場合の少数側を出力したＬＣの識別番号で，Ｍ０（２）のＬＣ（２０）は‘０’，Ｍ１（３）のＬＣ（３０）は‘１’，Ｍ２（４）のＬＣ（４０）は‘２’である。ＣＡレジスタ（６２）はＲＡＭアクセス信号が２対１に分かれた場合の多数側のアドレスを保持する。ＣＷＤレジスタ（６３）はＲＡＭアクセス信号が２対１に分かれた場合の多数側のライトデータを保持する。ＷＡレジスタ（６４）はＲＡＭアクセス信号が２対１に分かれた場合の少数側のアドレスを保持する。ＣＲＤレジスタ（６５）はＲＡＭアクセス信号が２対１に分かれた場合の少数側が不正書き込みあるいはアドレス誤りを発生した場合に，３重化したＲＡＭからＷＡレジスタ（６４）が示すアドレスのデータを読み出して多数決処理を行い，多数側のデータを保持する。【００２６】
ＬＣ−ＲＡＭアクセス監視部（６６）は３重化した論理回路ＬＣ（２０，３０，４０）のＲＡＭアクセス信号２２，３２，４２を監視してエラー検出を行い，レジスタＥＤ（６０），ＥＭＩ（６１），ＣＡ（６２），ＣＷＤ（６３），ＷＡ（６４）の設定を行う。ＲＡＭＥＤＣ−ＲＡＭアクセス制御部（６７）はＥＤレジスタ（６０）にＲＡＭアクセス信号が２対１に分かれた場合の‘１’，‘２’，‘３’が設定された場合に，ＲＡＭ（２１，３１，４１）をアクセスしてＬＣが誤書き込みしたデータを訂正する。【００２７】
図５は実施例１における３重化した論理回路のアクセス信号が２対１に分かれた場合のＲＡＭＥＤＣのエラー分類表である。コマンド，アドレス，ライトデータの多数の欄はＲＡＭアクセス信号の多数側を意味し，少数の欄はＲＡＭアクセス信号の少数側を意味する。【００２８】
Ｎｏ．１は多数側のコマンドがＷ（ライト），少数側のコマンドがＮ（アクセス無し）またはＲ（リード）の場合である。多数側のＲＡＭへはアドレスＡｍにライトデータＷＤｍが書き込まれているが，少数側のＲＡＭへは書き込みが行われていない。このケースでは，ＲＡＭＥＤＣのＥＤレジスタに１（書き込み不実行）を設定し，ＣＡレジスタにＡｍを設定し，ＣＷＤレジスタにＷＤｍを設定する。【００２９】
Ｎｏ．２は多数側と少数側のコマンドがＷで一致し，アドレスが一致し，ライトデータが一致しない場合である。多数側のＲＡＭへはアドレスＡｍにライトデータＷＤｍが書き込まれているが，少数側のＲＡＭへはアドレスＡｎ＝ＡｍにライトデータＷＤｎ≠ＷＤｍが書き込まれている。このケースでは，ＲＡＭＥＤＣのＥＤレジスタに１（正しいアドレスへのライトデータ誤り）を設定し，ＣＡレジスタにＡｍを設定し，ＣＷＤレジスタにＷＤｍを設定する。【００３０】
Ｎｏ．３は多数側のコマンドがＮまたはＲ，少数側のコマンドがＷの場合である。多数側のＲＡＭへは書き込みが行われていないが，少数側のＲＡＭへはアドレスＡｎにライトデータＷＤｎが書き込まれている。このケースでは，ＲＡＭＥＤＣのＥＤレジスタに２（不正書き込み）を設定し，ＷＡレジスタにＡｎを設定し，ＣＲＤレジスタに３重化したＲＡＭのアドレスＡｎから読み出したリードデータを多数決処理した多数側のデータＲＤｍを設定する。【００３１】
Ｎｏ．４は多数側と少数側のコマンドがＷで一致し，アドレスが一致しない場合である。多数側のＲＡＭへはアドレスＡｍにライトデータＷＤｍが書き込まれているが，少数側のＲＡＭへはアドレスＡｎにライトデータＷＤｎが書き込まれている。このケースでは，ＲＡＭＥＤＣのＥＤレジスタに３（アドレス誤り）を設定し，ＣＡレジスタにＡｍを設定し，ＣＷＤレジスタにＷＤｍを設定し，ＷＡレジスタにＡｎを設定し，ＣＲＤレジスタに３重化したＲＡＭのアドレスＡｎから読み出したリードデータを多数決処理した多数側のデータＲＤｍを設定する。【００３２】
Ｎｏ．５は上記Ｎｏ．１〜４以外の条件で，例えば多数側と少数側のコマンドがＲで一致し，アドレスが不一致となる場合である。このケースはＲＡＭへの誤った書き込みは行われないため，ＲＡＭのエラー訂正は必要ない。そのため，ＥＤレジスタに０（エラー無し）を設定する。【００３３】
図６はＲＡＭＥＤＣの処理フローチャートである。Ｐ１（処理１）において，モジュールＭ０〜２におけるＬＣのＲＡＭアクセス信号２２，３２，４２を比較する。３つが一致する場合，Ｐ１１においてＥＤレジスタを０（エラー無し）に設定して終了となる。【００３４】
Ｐ１において２つが一致する場合，Ｐ２において図５に示したエラー分類表にもとづいて処理が分かれる。Ｎｏ．１またはＮｏ．２の場合，Ｐ３のレジスタ設定を行う。ＥＤレジスタに１（書き込み不実行，正しいアドレスへのライトデータ誤り）を設定し，ＥＭＩレジスタに少数側のＲＡＭアクセス信号を出力したＬＣの識別番号ｎを設定し，ＣＡレジスタに多数側のＲＡＭアクセス信号のアドレスＡｍを設定し，ＣＷＤレジスタに多数側のＲＡＭアクセス信号のライトデータＷＤｍを設定する。【００３５】
Ｐ２においてエラー分類がＮｏ．３の場合，Ｐ５のレジスタ設定を行う。ＥＤレジスタに２（不正書き込み）を設定し，ＥＭＩレジスタに少数側のＲＡＭアクセス信号を出力したＬＣの識別番号ｎを設定し，ＷＡレジスタに少数側のＲＡＭアクセス信号のアドレスＡnを設定する。【００３６】
Ｐ２においてエラー分類がＮｏ．４の場合，Ｐ４のレジスタ設定を行う。ＥＤレジスタに３（アドレス誤り）を設定し，ＥＭＩレジスタに少数側のＲＡＭアクセス信号を出力したＬＣの識別番号ｎを設定し，ＣＡレジスタに多数側のＲＡＭアクセス信号のアドレスＡｍを設定し，ＣＷＤレジスタに多数側のＲＡＭアクセス信号のライトデータＷＤｍを設定し，ＷＡレジスタに少数側のＲＡＭアクセス信号のアドレスＡnを設定する。【００３７】
Ｐ３とＰ４の処理はＰ６の処理に進み，ＲＡＭアクセス信号が少数側であったモジュールＭｎのＲＡＭをライトアクセスする。この時のアドレスはＣＡレジスタの値，ライトデータはＣＷＤレジスタの値となる。Ｐ５とＰ６の処理はＰ７の処理に進み，エラー分類がＮｏ．１またはＮｏ．２の場合，Ｐ１１においてＥＤレジスタを０（エラー無し）に設定して終了となる。Ｐ７においてエラー分類がＮｏ．３またはＮｏ．４の場合，Ｐ８の処理に進み，モジュールＭ０〜２のＲＡＭをリードアクセスする。この時のアドレスはＷＡレジスタの値となる。Ｐ８の処理はＰ９の処理に進み，リードデータＲＤ０〜２を検査する。３つが一致する場合，Ｐ１１においてＥＤレジスタを０（エラー無し）に設定して終了となる。【００３８】
Ｐ９において少数側のＲＡＭアクセス信号を出力したモジュールのＲＡＭから読み出したリードデータＲＤｎ以外が一致する場合，Ｐ１０の処理に進みＣＲＤレジスタに多数側の読み出しデータＲＤｍを設定する。Ｐ１０の処理はＰ１２の処理に進み，ＭｎのＲＡＭをライトアクセスする。この時のアドレスはＷＡレジスタの値，ライトデータはＣＲＤレジスタの値となる。Ｐ１２の処理はＰ１１の処理に進み，ＥＤレジスタを０（エラー無し）に設定して終了となる。Ｐ９においてリードデータＲＤ０〜２が３つとも一致するかＲＤｎ以外が一致するかのいずれでもない場合はＰ１３の処理に進み，ＥＤレジスタを４に設定して異常終了となる。【００３９】
図７は図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．１のエラー訂正処理タイミングチャートである。モジュールＭ０〜２におけるＬＣのＲＡＭアクセス信号とＲＡＭのアドレスとデータ，およびＲＡＭＥＤＣのＲＡＭアクセス信号とレジスタを示す。クロック信号ｃｌｋが１のサイクルで，モジュールＭ０におけるＬＣのＲＡＭアクセス信号はＮまたはＲでＲＡＭへの書き込みは行われず（書き込み不実行），モジュールＭ１とＭ２におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ１にデータＤ１が書き込まれる。ＲＡＭＥＤＣにおいて，ＥＤレジスタに１（書き込み不実行，正しいアドレスへのライトデータ誤り），ＥＭＩレジスタに０，ＣＡレジスタにＡ１，ＣＷＤレジスタにＤ１が設定される。ｃｌｋが２のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＡ１にデータＤ１を書き込んで書き込み不実行によるエラーを訂正する。ｃｌｋが３のサイクルでＲＡＭＥＤＣはＥＤレジスタに０（エラー無し）を設定する。【００４０】
図８は図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．２のエラー訂正処理タイミングチャートである。ｃｌｋが１のサイクルで，モジュールＭ０におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ２にデータＤ５が書き込まれ（ライトデータ誤り），モジュールＭ１とＭ２におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ２にデータＤ２が書き込まれる。ＲＡＭＥＤＣにおいて，ＥＤレジスタに１（書き込み不実行，正しいアドレスへのライトデータ誤り），ＥＭＩレジスタに０，ＣＡレジスタにＡ２，ＣＷＤレジスタにＤ２が設定される。ｃｌｋが２のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＡ２にデータＤ２を書き込んでライトデータ誤りによるエラーを訂正する。ｃｌｋが３のサイクルでＲＡＭＥＤＣはＥＤレジスタに０（エラー無し）を設定する。【００４１】
図９は図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．３のエラー訂正処理タイミングチャートである。ｃｌｋが１のサイクルで，モジュールＭ０におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ３にデータＤ６が書き込まれ（不正書き込み），モジュールＭ１とＭ２におけるＬＣのＲＡＭアクセス信号はＮまたはＲでＲＡＭへの書き込みは行われない。ＲＡＭＥＤＣにおいて，ＥＤレジスタに２（不正書き込み），ＥＭＩレジスタに０，ＷＡレジスタにＡ３が設定される。ｃｌｋが２のサイクルで，ＲＡＭＥＤＣはＭ０〜２のＲＡＭをリードアクセスし，アドレスＡ３から読み出したデータを検査し，Ｍ１とＭ２のＲＡＭから読み出したＤ３をＣＲＤレジスタに設定する。ｃｌｋが４のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＤ３にデータＤ３を書き込んで不正書き込みによるエラーを訂正する。ｃｌｋが５のサイクルでＲＡＭＥＤＣはＥＤレジスタに０（エラー無し）を設定する。【００４２】
図１０は図５に示したＲＡＭＥＤＣのエラー分類表におけるＮｏ．４のエラー訂正処理タイミングチャートである。ｃｌｋが１のサイクルで，モジュールＭ０におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ７にデータＤ４が書き込まれ（アドレス誤り），モジュールＭ１とＭ２におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ４にデータＤ４が書き込まれる。ＲＡＭＥＤＣにおいて，ＥＤレジスタに３（アドレス誤り），ＥＭＩレジスタに０，ＣＡレジスタにＡ４，ＣＷＤレジスタにＤ４，ＷＡレジスタにＡ７が設定される。ｃｌｋが２のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＡ４にデータＤ４を書き込む。ｃｌｋが３のサイクルで，ＲＡＭＥＤＣはＭ０〜２のＲＡＭをリードアクセスし，アドレスＡ７から読み出したデータを検査し，Ｍ１とＭ２のＲＡＭから読み出したＤ７をＣＲＤレジスタに設定する。ｃｌｋが５のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＤ７にデータＤ７を書き込んでアドレス誤りによるエラーを訂正する。ｃｌｋが６のサイクルでＲＡＭＥＤＣはＥＤレジスタに０（エラー無し）を設定する。
【実施例２】
【００４３】
図１１は実施例２におけるＲＡＭアクセス訂正回路ＲＡＭＥＤＣのブロック図である。図４と比較すると，ＬＣ−ＲＡＭアクセス監視部（６６）にＲＡＭアクセス信号２２，３２，４２に対するバッファ（６６０，６６１，６６２）が追加される。これらはそれぞれ最大３回分のＲＡＭアクセス信号を保持することができる。図７と図８に示したエラーの場合は，次のサイクルでＲＡＭＥＤＣによる訂正書き込みが完了するため，ｃｌｋが２，３，...と連続してＲＡＭへのライトアクセスが行われても，１サイクル遅れでエラーを訂正することができる。ところが，図９に示したエラーの場合は，次のサイクルから３サイクルかけてエラーを訂正するため，ｃｌｋが２と３のサイクルでライトアクセスが行われるとレジスタに設定することができない。そこで図１１におけるＬＣ−ＲＡＭアクセス監視部（６６）のバッファ（６６０，６６１，６６２）にアクセス信号を一旦保持しておき，ＲＡＭＥＤＣのＲＡＭ訂正が終了したら保持した順番にレジスタに転送する。この手段により，エラーが発生したモジュールのＲＡＭを漏れなく訂正することができる。同様に図１０に示したエラーの場合は，次のサイクルから４サイクルかけてエラーを訂正するため，ｃｌｋが２〜４のサイクルでライトアクセスが行われた場合でも，ＬＣ−ＲＡＭアクセス監視部（６６）のバッファ（６６０，６６１，６６２）にアクセス信号を一旦保持しておくことができる。以上のように，エラーが発生したモジュールにおいてＬＣが不正書き込みまたはアドレス誤りを生じると，ＲＡＭの訂正に３サイクルまたは４サイクルを必要としてしまう。図１１におけるバッファ（６６０，６６１，６６２）を最小の段数３とするためには，エラーを検出したモジュールにおけるＬＣのＲＡＭアクセス信号を無効化すると良い。
【実施例３】
【００４４】
図１２は本発明を適用した第３の実施例のブロック図である。図１と比較すると，ＲＡＭ（２１，２２，２３）のポートが１つになり，セレクタ（２６，３６，４６）が追加されている。また，ＲＡＭＥＤＣ（６）からＭ０〜２におけるＬＣ（２０，３０，４０）へのウエイト信号６８が追加されている。セレクタ（２６，３６，４６）はＲＡＭＥＤＣ（６）によるＲＡＭアクセスがある場合にはＲＡＭＥＤＣ（６）のＲＡＭアクセス信号２４，３４，４４を選択し，無い場合はＬＣのＲＡＭアクセス信号２２，３２，４２を選択する。ＲＡＭＥＤＣ（６）によるＲＡＭアクセスがある場合はＬＣ（２０，３０，４０）のＲＡＭアクセスを実行できないため，ウエイト信号６８を出力してＬＣ（２０，３０，４０）のＲＡＭアクセスの実行開始を遅らせる。本実施例は第１および第２の実施例と比べると，ＲＡＭアクセスエラーが発生するとＬＣのＲＡＭアクセスにウエイトが入るようになり性能が低下するが，ＲＡＭのポートが１つで済むという経済的メリットがある。
【実施例４】
【００４５】
図１３は本発明を適用した第４の実施例で，３重化した論理回路のＲＡＭアクセス訂正手段を有するＦＰＧＡのブロック図である。【００４６】
本実施例のＦＰＧＡでは，動的部分再構成機能を有する。動的部分再構成機能とは，論理回路情報の一部を動作中に外部のフラッシュＲＯＭからＣＲＡＭに再ロードすることができる機能でさる。この機能を利用すれば，３重化した論理回路の出力が２対１に分かれた場合に，一致しない出力を出した論理回路が故障しているとみなして，ＣＲＡＭにあるその論理回路情報を再ロードし，故障した論理回路を修理することができる。【００４７】
本実施例を図１と比較すると，図１の集積回路（１）がＦＰＧＡ（１）に置き換わり，ユーザ論理回路（１７）というユーザが定義した回路が構成される領域に部分再構成制御回路ＰＴＲＣＦＧ（５０）が追加されている。また，ＦＰＧＡ（１）のユーザ論理回路（１７）の外部にＣＲＡＭアクセスインタフェース回路ＣＲＡＭ＿ＡＣＣ＿ＩＦ（５４）とＣＲＡＭ（５５）が追加され，ＦＰＧＡ（１）の外部にフラッシュＲＯＭ（ＦＲ）（５９）とそのインタフェース信号６０，６１が追加されている。ＦＰＧＡ（１）は論理回路情報がＦＲ（５９）に保持されており，ＦＰＧＡ（１）に電源が投入されると論理回路情報がＣＲＡＭ（５５）にロードされ，ＦＰＧＡ（１）は論理回路が決定し動作を開始する。【００４８】
図１の第１の実施例と異なるのは，ＲＡＭアクセス訂正回路ＲＡＭＥＤＣ（６）がエラー制御回路ＥＲＲＭＮＧ（７）に出力するエラー検出信号１２に，ＲＡＭアクセス信号が２対１に分かれた場合のエラーとエラーを発生したモジュールの識別番号を含む点である。その場合，エラー制御回路ＥＲＲＭＮＧ（７）は部分再構成制御回路ＰＴＲＣＦＧ（５０）にエラーを発生したモジュールの部分再構成を要求する（５１）。ＣＲＡＭ（５５）は３重化されたモジュールＭ０，Ｍ１，Ｍ２，および，多数決回路Ｖ，エラー制御回路ＥＲＲＭＮＧ，部分再構成制御回路ＰＴＲＣＦＧの論理回路情報を記憶する領域が分かれている。【００４９】
ＰＴＲＣＦＧ（５０）はＣＲＡＭ＿ＡＣＣ＿ＩＦ（５４）に故障した論理回路の情報が記憶されているＦＲ（５９）のアドレス領域とＣＲＡＭ（５５）のアドレス領域を指定し，ＦＲ（５９）からＣＲＡＭ（５５）への再ロードを要求する（５６）。ＣＲＡＭ＿ＡＣＣ＿ＩＦ（５４）は要求５６に従い，ＦＲ（５９）にアドレスを出力して（６０），論理回路情報を読み出し（６１），ＣＲＡＭ（５５）にアドレスと論理回路情報を出力して上書きを行う（５８）。再ロードが終了すると，ＣＲＡＭ＿ＡＣＣ＿ＩＦ（５４）は終了信号５７をＰＴＲＣＦＧ（５０）に出力し，ＰＴＲＣＦＧ（５０）は終了信号５２をＥＲＲＭＮＧ（７）に出力する。ＥＲＲＭＮＧ（７）はＲＡＭＥＤＣ（６）に終了信号５３を出力し，エラーを検出したモジュールの修理が完了したことを通知する。ＲＡＭＥＤＣ（６）は正常なモジュールでＲＡＭへのライトアクセスが実行されると，１サイクル遅れでエラーが発生したモジュールのＲＡＭを訂正しているため，ＲＡＭアクセス信号がＮ（アクセス無し）になった次のサイクルでエラーが発生したモジュールのＲＡＭアクセス信号を有効にしてＭ０〜２の３重化動作を復旧させる。【００５０】
図１４は実施例４におけるＲＡＭアクセスエラー訂正処理タイミングチャートである。ｃｌｋが１のサイクルで，モジュールＭ０におけるＬＣのＲＡＭアクセス信号はＮまたはＲでＲＡＭへの書き込みは行われず（書き込み不実行），モジュールＭ１とＭ２におけるＬＣのＲＡＭアクセス信号はＷでＲＡＭのアドレスＡ１にデータＤ１が書き込まれる。ＲＡＭＥＤＣにおいて，ＥＤレジスタに１（書き込み不実行，正しいアドレスへのライトデータ誤り），ＥＭＩレジスタに０，ＣＡレジスタにＡ１，ＣＷＤレジスタにＤ１が設定される。ｃｌｋが２のサイクルで，ＲＡＭＥＤＣはＭ０のＲＡＭをライトアクセスし，アドレスＡ１にデータＤ１を書き込んで書き込み不実行によるエラーを訂正する。ｃｌｋが３のサイクルでＲＡＭＥＤＣはＥＤレジスタに０（エラー無し）を設定する。以降Ｍ０におけるＬＣのＲＡＭアクセスは無効となる。ＲＡＭＥＤＣがＥＲＲＭＮＧにＲＡＭアクセス信号の２対１のエラーがＭ０で発生したことを通知すると，ＣＲＡＭのＭ０領域の部分再構成が実行される。この間，正常なモジュールにおいてＲＡＭへのライトアクセスが実行されると１サイクル遅れでＭ０のＲＡＭに訂正書き込みが行われる。ＣＲＡＭのＭ０領域の部分再構成が終了した後，ＲＡＭＥＤＣのＥＤレジスタが０（エラー無し）で，Ｍ１とＭ２のＲＡＭアクセス信号がＮ（アクセス無し）になったタイミング（ｃｌｋが１０，０００のサイクル）でＭ０におけるＬＣのＲＡＭアクセス無効化を解除する。次のｃｌｋが１０，００１のサイクルではモジュールＭ０〜２のＲＡＭの内容が一致した状態になっており，Ｍ０〜２が３重化動作を開始することができる。【００５１】
なお，本発明は上記した実施例に限定されるものではなく，様々な変形例が含まれる。例えば，上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり，必ずしも説明した全ての構成を備えるものに限定されるものではない。また，ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり，また，ある実施例の構成に他の実施例の構成を加えることも可能である。また，各実施例の構成の一部について，他の構成の追加・削除・置換をすることが可能である。【００５２】
また，制御線や情報線は説明上必要と考えられるものを示しており，製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００５３】
１            集積回路，ＦＰＧＡ
２，３，４    ３重化モジュール
５            多数決回路
６            ＲＡＭアクセス訂正回路
７            エラー制御回路
８            Ｍ０におけるＬＣの出力信号
９            Ｍ１におけるＬＣの出力信号
１０          Ｍ２におけるＬＣの出力信号
１１          多数決回路（５）のエラー検出信号
１２          ＲＡＭアクセス訂正回路のエラー検出信号
１７          ＦＰＧＡ内部のユーザ論理回路
５０          部分再構成制御回路
５４          ＣＲＡＭアクセスインタフェース回路
５５          ＣＲＡＭ
５９          フラッシュＲＯＭ
【図１】
2015193984.tif 000003
【図２】
2015193984.tif 000004
【図３】
2015193984.tif 000005
【図４】
2015193984.tif 000006
【図５】
2015193984.tif 000007
【図６】
2015193984.tif 000008
【図７】
2015193984.tif 000009
【図８】
2015193984.tif 000010
【図９】
2015193984.tif 000011
【図１０】
2015193984.tif 000012
【図１１】
2015193984.tif 000013
【図１２】
2015193984.tif 000014
【図１３】
2015193984.tif 000015
【図１４】
2015193984.tif 000016
【国際調査報告】
2015193984.tif 000017
2015193984.tif 000018
2015193984.tif 000019
2015193984.tif 000020