(57)【要約】【課題】迅速に回路機能を変更可能な半導体集積回路装置を得ること。【解決手段】複数の分散メモリ３、複数のエレメント１および複数のスイッチボックス２が分散配置されて回路機能を再構成することが可能なＦＰＧＡ部３０を有する半導体集積回路装置において、分散メモリ３は、ＦＰＧＡ部３０の設定を行なうコンフィギュレーションデータを格納し、ＦＰＧＡ部３０は、分散メモリ３が格納するコンフィギュレーションデータに基づいて、ＦＰＧＡ部３０内の回路機能を再構成する。【選択図】        図１
2006303730.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリおよび複数の論理回路が分散配置されて回路機能を再構成することが可能なプログラマブル論理回路を有する半導体集積回路装置において、
前記メモリは、前記プログラマブル論理回路の設定を行なうコンフィギュレーションデータを格納し、
前記プログラマブル論理回路は、前記メモリが格納するコンフィギュレーションデータに基づいて、前記プログラマブル論理回路内の回路機能を再構成することを特徴とする半導体集積回路装置。
【請求項２】
前記プログラマブル論理回路は、
回路機能を再構成可能なエレメントを含み、
前記メモリは、前記エレメント内の回路設定に関するコンフィギュレーションデータを格納することを特徴とする請求項１に記載の半導体集積回路装置。
【請求項３】
前記プログラマブル論理回路は、
前記エレメント間の配線を変更可能なスイッチボックスを含み、
前記メモリは、前記エレメント間の配線設定に関するコンフィギュレーションデータを格納することを特徴とする請求項１または２に記載の半導体集積回路装置。
【請求項４】
前記プログラマブル論理回路は、所定のバスを介して接続される外部装置からの指示情報に基づいて所定のコンフィギュレーションデータを選択して送信するコンフィギュレーション制御回路と接続し、
前記メモリは、前記コンフィギュレーション制御回路から送信されるコンフィギュレーションデータを受信して格納することを特徴とする請求項１〜３のいずれか１つに記載の半導体集積回路装置。
【請求項５】
前記メモリは、論理的に分割された複数のバンク毎に所定のコンフィギュレーションデータを格納し、前記コンフィギュレーション制御回路から送信される指示情報に基づいて、前記プログラマブル論理回路の設定を行なうコンフィギュレーションデータを格納するバンクとの接続を切替えることを特徴とする請求項４に記載の半導体集積回路装置。
【請求項６】
前記プログラマブル論理回路は、前記プログラマブル論理回路をコンフィギュレーションするコンフィギュレーションデータを送信するパスおよび前記メモリに格納させるコンフィギュレーションデータを送信するパスを介して、前記コンフィギュレーション制御回路と接続することを特徴とする請求項１〜５のいずれか１つに記載の半導体集積回路装置。
【請求項７】
複数のメモリおよび複数の論理回路が分散配置されて回路機能を再構成することが可能なプログラマブル論理回路を有する半導体集積回路装置の設計装置において、
前記プログラマブル論理回路のアーキテクチャを選択するアーキテクチャ選択部と、
異なる機能を有する回路に関する複数の回路情報を入力し、前記各回路情報で一致又は類似する情報を抽出する回路情報抽出部と、
前記回路情報抽出部が抽出した情報に基づいて前記回路情報を併合するとともに、併合した回路情報に所定の機能ブロックを付加してプログラマブル論理回路を生成する回路生成部と、
を備え、
前記回路生成部は、前記メモリに格納されるコンフィギュレーションデータに基づいて、前記プログラマブル論理回路内の回路機能を再構成できるよう前記プログラマブル論理回路の配線に関する情報を生成することを特徴とする半導体集積回路装置の設計装置。
【請求項８】
前記メモリに格納させるコンフィギュレーションデータを生成するコンフィギュレーションデータ生成部をさらに備えることを特徴とする請求項７に記載の半導体集積回路装置の設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザがプログラム可能な論理回路を備える半導体集積回路装置および半導体集積回路装置の設計装置に関するものである。
【背景技術】
【０００２】
近年、ユーザがプログラム可能な論理回路（以下、ＦＰＧＡ（Field Programmable Gate Array）という）が、汎用性の高いハードウエアとして情報処理システムや通信システム等の数多くの電子機器で用いられるようになっている。ＦＰＧＡは、年々、機能が高度化、高性能化、大規模化しており、プログラムを書き換えることによって、ハードウエアの構成を柔軟かつ容易に変更することができる。ＦＰＧＡは、このような利点を生かして、例えば回路構成が頻繁に変わる部品や少量多品種の製品に採用されている。
【０００３】
しかしながら、ＦＰＧＡにおいてそのハードウエアの機能を切替えるためには、コンフィギュレーションデータを数秒かけてダウンロードし、一旦、リセットしなければならない。これにより、連続的に使用することが要求される情報処理システムや通信システム等では、ＦＰＧＡのコンフィギュレーションデータの切替えによってシステムが停止する場合がある。このため、ＦＰＧＡのコンフィギュレーションデータの切替えによるシステムの停止を防止する技術が開発されている。
【０００４】
特許文献１に記載のコンピュータシステムは、メインＣＰＵ（Central Processing Unit）のホストバスとＩ／Ｏバスについてのバスブリッジとして機能するＦＰＧＡのコンフィグレーション終了後に、外部からＦＰＧＡの更新コンフィグレーションデータを取り込んでいる。そして、更新制御回路によってメインＣＰＵのＩ／Ｏバスへのアクセスを抑制し、Ｉ／Ｏバスへのアクセスが抑制されている間に外部から取り込んだ更新コンフィグレーションデータでＦＰＧＡをコンフィグレーションしてＦＰＧＡの機能を更新している。
【０００５】
【特許文献１】特開２００１−２９０７５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記従来の技術によれば、コンピュータシステム全体を停止させることなく、ＦＰＧＡのハードウエアの機能更新等を行うことはできるが、ＦＰＧＡのコンフィギュレーションに長い時間を要する。このため、ＦＰＧＡのコンフィギュレーションの間、メインＣＰＵに接続する全てのＩ／Ｏへのアクセスは禁止されることとなり完全な連続可用性を実現できないという問題があった。
【０００７】
本発明は、上記に鑑みてなされたものであって、迅速に回路機能を変更可能な半導体集積回路装置および半導体集積回路装置の設計装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、複数のメモリおよび複数の論理回路が分散配置されて回路機能を再構成することが可能なプログラマブル論理回路を有する半導体集積回路装置において、前記メモリは、前記プログラマブル論理回路の設定を行なうコンフィギュレーションデータを格納し、前記プログラマブル論理回路は、前記メモリが格納するコンフィギュレーションデータに基づいて、前記プログラマブル論理回路内の回路機能を再構成することを特徴とする。
【発明の効果】
【０００９】
この発明によれば、メモリが格納するコンフィギュレーションデータに基づいてプログラマブル論理回路内の回路機能を再構成するので、迅速に回路機能を変更することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明にかかる半導体集積回路装置を備えたバスブリッジ回路の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態
図１は、本発明の実施の形態にかかるバスブリッジ回路の構成を示す図である。バスブリッジ回路１００は、回路機能の入れ替えが可能な連続可用性を兼ね備えたシステムに適用される半導体集積回路装置であり、回路構成の変更に柔軟性のあるＦＰＧＡ（プログラマブル論理回路）を備えて構成されている。なお、ここではバスブリッジ回路１００内が再構成可能な半導体集積回路装置を備える場合について説明するが、バスブリッジ回路１００以外の回路が再構成可能な半導体集積回路装置を備える構成としてもよい。
【００１２】
バスブリッジ回路１００は、バスＡ６１、アドレスバスＢ６２、データバスＢ６３と接続されており、バスＡ６１上のデータとアドレスバスＢ６２、データバスＢ６３上のデータ転送を行う。すなわち、バスブリッジ回路１００は、複数のバス間のデータ転送を行う際に、回路構成を変更して種々のＩ／Ｏを制御する。
【００１３】
マイクロプロセッサ５０側のバスＡ６１からバスブリッジ回路１００に対して転送されるデータ（情報）は、各周辺回路のバスプロトコル仕様に関する情報、リクエストの種類（リード動作、ライト動作、シングル転送、バースト転送等）、転送するデータのサイズ、周辺回路内部のレジスタやメモリのアドレスとデータ等である。
【００１４】
バスブリッジ回路１００は、バスＡ６１（バスＡ側）を介してマイクロプロセッサ５０、ＤＭＡ（Direct Memory Access channel unit）制御回路４０、外部メモリ４１と接続する。また、バスブリッジ回路１００は、アドレスバスＢ６２、データバスＢ６３（バスＢ側）を介して周辺回路Ａ４２，Ｂ４３，Ｃ４４と接続する。なお、ここではバスＢ側の周辺回路（周辺回路Ａ４２，Ｂ４３，Ｃ４４）のバスプロトコルがそれぞれ異なっている場合について説明する。
【００１５】
バスブリッジ回路１００は、バスブリッジ構成情報設定部１１、バスＡ側リクエスト処理部１２、バスＢ側プロトコル判定処理部１３、バスプロトコル情報設定部１４、バスＢ側アドレス設定部１５、バスＢ側データ設定部１６、バスＡ側アドレス設定部１７、バスＡ側データ設定部１８、ステータスレジスタ１９、ライト用ＦＩＦＯ（Fast In Fast Out）２０、リード用ＦＩＦＯ２１、バスＡ側調停回路２２、バスＢ側調停回路２３、コンフィギュレーション管理制御回路２４、コンフィギュレーション用メモリ２５、制御部２７、ＦＰＧＡ部（半導体集積回路装置）３０からなる。
【００１６】
本実施の形態におけるバスブリッジ回路１００は、ＦＰＧＡ部３０内に分散配置されたメモリ（以下、分散メモリ３という）を、回路機能を変更するためのコンフィギュレーション用のメモリとして使用し、回路構成に要する時間を短縮する。
【００１７】
バスブリッジ構成情報設定部１１は、バスブリッジ回路１００に接続する周辺回路（周辺回路Ａ４２，Ｂ４３，Ｃ４４）の数（３つ）、夫々の周辺回路に使用されているバスプロトコルを識別するための情報、マイクロプロセッサ５０側のバスＡ６１に接続する構成要素に関する情報を保持（記憶）する。バスブリッジ構成情報設定部１１は、バスＡ６１、バスＢ側プロトコル判定処理部１３と接続されている。
【００１８】
バスＡ側リクエスト処理部１２は、バスＡ６１に接続するマイクロプロセッサ５０やＤＭＡ制御回路４０から送信されるリクエストを識別し、識別した情報をコンフィギュレーション管理制御回路２４、バスＡ側調停回路２２、バスＢ側調停回路２３等に送信する。
【００１９】
バスＢ側プロトコル判定処理部１３は、周辺回路Ａ４２，Ｂ４３，Ｃ４４と接続する。バスＢ側プロトコル判定処理部１３は、所定の周辺回路（例えば周辺回路Ａ４２）からバスブリッジ回路１００に対してアクセスがあった場合に、アドレスバスＢ６２、データバスＢ６３に接続する周辺回路のバスリクエストを解析し、何れの周辺回路からのアクセスであるかを判別する。バスＢ側プロトコル判定処理部１３は、バスブリッジ構成情報設定部１１内の情報に基づいて、周辺回路の何れのバスプロトコル仕様を選択すべきかを判断する。
【００２０】
バスプロトコル情報設定部１４は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、アドレス、データ以外のバスプロトコルに関する情報を設定する。バスＢ側アドレス設定部１５は、バスＡ側からバスＢ側にアクセスする際の、バスＢ側（周辺回路Ａ４２，Ｂ４３，Ｃ４４）のアドレスを設定する。バスＢ側アドレス設定部１５は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、バスＢ側のアドレスを設定する。バスＢ側データ設定部１６は、バスＡ側からバスＢ側にアクセスする際に、バスＢ側の周辺回路に転送するデータを設定する。バスＢ側データ設定部１６は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、バスＢ側に転送するデータを設定する。
【００２１】
バスＡ側アドレス設定部１７は、バスＢ側からバスＡ側にアクセスする際の、バスＡ側（マイクロプロセッサ５０、ＤＭＡ制御回路４０、外部メモリ４１）のアドレスを設定する。バスＡ側データ設定部１８は、バスＢ側からバスＡ側にアクセスする際に、バスＡ側に転送するデータを設定する。
【００２２】
ステータスレジスタ１９は、バスブリッジ回路１００が周辺回路のデータのリード完了か否かに関する情報を記憶する。ステータスレジスタ１９は、バスブリッジ回路１００が周辺回路のデータをリード完了すると「リード完了」に設定される。
【００２３】
ライト用ＦＩＦＯ２０およびリード用ＦＩＦＯ２１は、バスＡ６１に接続されている。バスＡ６１側からは、データライトの際のアクセスをライト用ＦＩＦＯ２０に行い、データリードの際のアクセスをリード用ＦＩＦＯ２１に行う。すなわち、ライト用ＦＩＦＯ２０はマイクロプロセッサ５０側のデータを受信し、リード用ＦＩＦＯ２１はマイクロプロセッサ５０側へデータを送信する。
【００２４】
ライト用ＦＩＦＯ２０は、バスプロトコル情報設定部１４、バスＢ側アドレス設定部１５、バスＢ側データ設定部１６と接続されている。また、リード用ＦＩＦＯ２１は、バスＡ側アドレス設定部１７、バスＡ側データ設定部１８と接続されている。
【００２５】
バスＡ側調停回路２２は、マイクロプロセッサ５０、ＤＭＡ制御回路４０と接続し、バスＢ側調停回路２２は、周辺回路Ａ４２，Ｂ４３，Ｃ４４と接続する。バスＡ側調停回路２２はバスＡ側と通信する際の調停を行い、バスＢ側調停回路２３はバスＢ側と通信する際の調停を行う。バスＡ側調停回路２２、バスＢ側調停回路２３は、コンフィギュレーション管理制御回路２４からの指示に基づいて、通信の調停を行う。
【００２６】
コンフィギュレーション管理制御回路２４は、バスＡ側調停回路２２、バスＢ側調停回路２３、コンフィギュレーション用メモリ２５、バスＢ側プロトコル判定処理部１３、バスプロトコル情報設定部１４と接続する。
【００２７】
コンフィギュレーション管理制御回路２４は、後述する２系統のコンフィギュレーションパスを有し、ＦＰＧＡ部３０（高速に再構成可能な回路）のコンフィギュレーションを行う。コンフィギュレーション管理制御回路２４は、一般的なＦＰＧＡが備えるコンフィギュレーション手段（第１のコンフィギュレーション）によるコンフィギュレーションパス（後述する第１のコンフィギュレーションパス６）と分散メモリ３に対するコンフィギュレーションパス（後述する第２のコンフィギュレーションパス５）を経由したコンフィギュレーション（第２のコンフィギュレーション）の制御を行う。なお、ここでは説明の便宜上、一般的なＦＰＧＡが備える第１のコンフィギュレーション手段のコンフィギュレーションデータを第１のコンフィギュレーションデータとし、分散メモリ３に対するコンフィギュレーションデータを第２のコンフィギュレーションデータとして説明する。
【００２８】
コンフィギュレーション管理制御回路２４は、コンフィギュレーションデータの管理を行う。コンフィギュレーション管理制御回路２４は、バスＢ側プロトコル判定処理部１３の判定結果に基づいて、コンフィギュレーションメモリインデックス情報設定部２６を検索し、コンフィギュレーション用メモリ２５に含まれるコンフィギュレーションデータを、必要に応じてＦＰＧＡ部３０に転送し、ＦＰＧＡ部３０のコンフィギュレーションを行う。
【００２９】
コンフィギュレーション管理制御回路２４は、コンフィギュレーション中は、コンフィギュレーションが実施中であることを示す信号７２を、バスＡ側調停回路２２及びバスＢ側調停回路２３に出し、周辺回路やマイクロプロセッサ５０からバスブリッジ回路１００へのアクセスを禁止させる。本実施の形態におけるコンフィギュレーションは、ＦＰＧＡ部３０内の分散メモリ３にコンフィギュレーションデータを予め設定しておき、後述するバンクＸ１〜Ｘ３を高速に切替えることによって、コンフィギュレーションの待機時間を例えば１サイクル程度に短縮する。
【００３０】
コンフィギュレーション用メモリ２５は、コンフィギュレーションデータを記憶する。コンフィギュレーション用メモリ２５は、コンフィギュレーションメモリインデックス情報設定部２６を備えている。コンフィギュレーションメモリインデックス情報設定部２６は、複数種類のコンフィギュレーションデータを効率的に管理するためのインデックス情報を設定し記憶する。
【００３１】
ＦＰＧＡ部３０は、バスプロトコル生成部３１、アドレス変換部３２を備えている。バスプロトコル生成部３１は、バスＢ側プロトコル判定処理部１３の判定結果に基づいて、ＦＰＧＡをベースとした高速に再構成可能な回路を用いて、バスＢ側に接続する周辺回路（周辺回路Ａ４２、周辺回路Ｂ４３、周辺回路Ｃ４４）のバスプロトコル（リード動作、ライト動作、シングル転送、バースト転送等のバスプロトコル）を生成する。アドレス変換部３２は、バスＢ側から、バスＡ側にアクセスする際に、アドレスをバスＡ側のアドレス空間に変換する。
【００３２】
バスプロトコル生成部３１はバスＢ側アドレス設定部１５、バスＢ側データ設定部１６、コンフィギュレーション用メモリ２５、アドレスバスＢ６２、データバスＢ６３、アドレス変換部３２と接続されている。アドレス変換部３２は、スＡ側アドレス設定部１７、バスＡ側データ設定部１８と接続している。
【００３３】
制御部２７は、バスブリッジ構成情報設定部１１、バスＡ側リクエスト処理部１２、バスＢ側プロトコル判定処理部１３、バスプロトコル情報設定部１４、バスＢ側アドレス設定部１５、バスＢ側データ設定部１６、バスＡ側アドレス設定部１７、バスＡ側データ設定部１８、ステータスレジスタ１９、ライト用ＦＩＦＯ２０、リード用ＦＩＦＯ２１、バスＡ側調停回路２２、バスＢ側調停回路２３、コンフィギュレーション管理制御回路２４、コンフィギュレーション用メモリ２５、ＦＰＧＡ部３０を制御する。制御部２７は、バスブリッジ回路１００内の各構成要素と接続（図示せず）されている。また、ステータスレジスタ１９は、ＦＰＧＡ部３０と接続（図示せず）されている。
【００３４】
ＦＰＧＡ部３０は、ＦＰＧＡの基本要素であるルックアップテーブルやフリップフロップで構成される再構成可能な回路部（後述するエレメント１）とエレメント１間を接続するスイッチボックス２で構成されている。本実施の形態では、分散メモリ３を複数の論理的なバンクに分割し、バンク切替え信号によってバンクを切替えて、分散メモリ３からエレメント１に出力される回路構成情報を切り替える。
【００３５】
なお、ここではバスブリッジ回路１００がコンフィギュレーション管理制御回路２４、コンフィギュレーション用メモリ２５を備える構成としたが、コンフィギュレーション管理制御回路２４、コンフィギュレーション用メモリ２５は、バスブリッジ回路１００と異なる別の外部装置が備える構成としてもよい。
【００３６】
次に、実施の形態にかかるバスブリッジ回路１００の動作について説明する。バスブリッジ回路１００は、マイクロプロセッサ５０や周辺回路Ａ４２，Ｂ４３，Ｃ４４が発生するリード動作、ライト動作などのバスのトランザクション単位で、バスブリッジ回路１００内のＦＰＧＡ部３０内の情報を更新する。
【００３７】
まず、マイクロプロセッサ５０がバスマスターとなって周辺回路Ａ４２，Ｂ４３，Ｃ４４にライト動作を行なう場合について説明する。周辺回路Ａ４２，Ｂ４３，Ｃ４４は、何れも同様の動作を行なうので、ここではマイクロプロセッサ５０から周辺回路へのライト動作の一例として、マイクロプロセッサ５０から周辺回路Ａ４２に対してライト動作を行う場合について説明する。
【００３８】
マイクロプロセッサ５０から周辺回路Ａ４２に対してライト動作の開始を示すリクエスト（情報）を出力する。このリクエストは、バスブリッジ回路１００のバスＡ側リクエスト処理部１２に入力される。
【００３９】
バスＡ側リクエスト処理部１２は、マイクロプロセッサ５０からのリクエストの種類を識別する。ここでのバスＡ側リクエスト処理部１２は、リクエストの種類がバスＡ６１側からのライト動作であると判断する。
【００４０】
リクエストの種類がバスＡ６１側からのライト動作であるので、バスＡ側調停回路２２は、バスＡ６１側に接続される回路及びバスブリッジ回路１００内のＦＰＧＡ部３０がコンフィギュレーション中か否かの状態をチェックする。バスＡ側調停回路２２は、ＦＰＧＡ部３０がコンフィギュレーション中でなくバスブリッジ回路１００がデータを受信可能な状態にあれば、マイクロプロセッサ５０にバス調停信号７１によってバスブリッジ回路１００に対するライト動作の許可を与える。
【００４１】
マイクロプロセッサ５０からバスブリッジ回路１００に転送する情報（以下、転送情報という）としては、周辺回路Ａ４２のバスプロトコル仕様に関する情報、リクエストの種類（ここではライト動作）、転送するデータのサイズ、周辺回路Ａ４２の内部でアクセスするレジスタやメモリのアドレス、周辺回路Ａ４２に転送するデータがある。これらの転送情報に基づいて、バスブリッジ回路１００が、バスＢ４６側に接続する周辺回路のいずれかを選択し（ここでは周辺回路Ａ４２を選択）、ライト動作を行う。
【００４２】
まず、マイクロプロセッサ５０がバスブリッジ回路１００のライト用ＦＩＦＯ２０に対して、転送情報を送信する。バスプロトコル情報設定部１４は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、アドレス、データ以外のバスプロトコルに関する情報を設定する。
【００４３】
バスＢ側アドレス設定部１５は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、周辺回路Ａ４２のアドレスを設定する。バスＢ側データ設定部１６は、ライト用ＦＩＦＯ２０に入力された情報に基づいて、周辺回路Ａ４２に転送するデータを設定する。
【００４４】
コンフィギュレーション管理制御回路２４は、バスプロトコル情報設定部１４に設定された情報を読み取る。これにより、コンフィギュレーション管理制御回路２４は、ＦＰＧＡ部３０内の分散メモリ３の複数の論理的なバンク（後述するバンクＸ１〜Ｘ３）に、現在、どのような回路構成情報が設定してあるかチェックする。
【００４５】
分散メモリ３内にバスプロトコル情報設定部１４から読み取った情報と同じ情報があれば、バンク切替え信号７（後述するバンク切替え制御回路８４からの信号）によって分散メモリ３内のバンクの切替えを行う。
【００４６】
一方、分散メモリ３内にバスプロトコル情報設定部１４から読み取った情報が存在しない場合、バスプロトコルに対応したコンフィギュレーションメモリインデックス情報設定部２６を用いて、必要なバスプロトコルのコンフィギュレーションデータがコンフィギュレーション用メモリ２５に保持されているかをチェックする。必要なバスプロトコルのコンフィギュレーションデータがコンフィギュレーション用メモリ２５内に格納されている場合、コンフィギュレーション管理制御回路２４がコンフィギュレーション用メモリ２５内のコンフィギュレーションデータをＦＰＧＡ部３０にダウンロードしてコンフィギュレーションを行う。
【００４７】
コンフィギュレーション管理制御回路２４によるＦＰＧＡ部３０のコンフィギュレーション中は、バスＡ側調停回路２２及びバスＢ側調停回路２３に対して、コンフィギュレーション実施中を示す信号７２を送信し、バスブリッジ回路１００に対する外部からのアクセスを禁止させる。
【００４８】
コンフィギュレーションが完了すると、ＦＰＧＡ部３０のバスプロトコル生成部３１は、バスＢ側アドレス設定部１５に設定されたアドレスをアドレスバスＢ６２に出力する。また、バスプロトコル生成部３１は、バスＢ側データ設定部１６に設定されたデータ、周辺回路Ａ４２にアクセスするための制御信号をデータバスＢ６３に出力する。
【００４９】
ここでのバスプロトコル生成部３１は、分散メモリ３のバンクに設定された情報（所定のバスプロトコル）に従ってアドレス、データ、制御信号をバスＢ側へ順次送出し、マイクロプロセッサ５０から周辺回路Ａ４２に対するライト動作を行う。
【００５０】
このように、ＦＰＧＡ３０の分散メモリ３内に必要な回路構成情報が分散メモリ３のバンクＸ１〜Ｘ３に存在する場合には、バンク切替え信号７によって分散メモリ３内のバンクを迅速に切替えることができるので、マイクロプロセッサ５０から周辺回路Ａ４２に対するライト動作の開始までを短時間で行なうことが可能となる。
【００５１】
また、ＦＰＧＡ３０の分散メモリ３内に必要な回路構成情報が分散メモリ３のバンクＸ１〜Ｘ３に存在しない場合であっても、コンフィギュレーション管理制御回路２４がコンフィギュレーション用メモリ２５内のコンフィギュレーションデータをＦＰＧＡ部３０にダウンロードしてコンフィギュレーションを行うことが可能となる。
【００５２】
次に、マイクロプロセッサ５０がバスマスターとなって周辺回路Ａ４２に対するリードを行う動作について説明する。なお、マイクロプロセッサ５０が周辺回路Ａ４２に対してライトを行なう動作と同様の動作に対しては、その説明を省略する。ライト用ＦＩＦＯ２０がマイクロプロセッサ５０から転送情報を受信すると、コンフィギュレーション管理制御回路２４は、ＦＰＧＡ部３０のコンフィギュレーションを行なう。
【００５３】
ＦＰＧＡ３０のコンフィギュレーションが完了すると、ＦＰＧＡ部３０のバスプロトコル生成部３１は、バスＢ側アドレス設定部１５に設定されたアドレスをアドレスバスＢ６２に出力する。また、バスプロトコル生成部３１は、周辺回路Ａ４２にアクセスするための制御信号をデータバスＢ６３に出力する。
【００５４】
ここでのバスプロトコル生成部３１は、分散メモリ３のバンクに設定された情報（所定のバスプロトコル）に従ってアドレス、制御信号をバスＢ側へ順次送出し、周辺回路Ａ４２に対するリード動作を行う。
【００５５】
バスブリッジ回路１００は、周辺回路Ａ４２の指定のアドレスからデータを読み出すと、読み出したデータをバスプロトコル生成部３１がバスＡ側データ設定部１８に設定する。また、アドレス変換部３２は、バスＡ側アドレス設定部１７にマイクロプロセッサ５０のアドレスを設定する。バスプロトコル生成部３１が周辺回路Ａ４２からデータの読み出しを完了すると、ステータスレジスタ１９は「リード完了」に設定される。
【００５６】
マイクロプロセッサ５０は、所定の周期でステータスレジスタ１９の状態をチェックしている。バスプロトコル生成部３１が周辺回路Ａ４２からのデータの読み出しが完了していると、マイクロプロセッサ５０は、リード用ＦＩＦＯ２１を介して周辺回路Ａ４２からのデータを読み出す。
【００５７】
なお、ここではステータスレジスタ１９にリード完了を設定しておき、マイクロプロセッサ５０がステータスレジスタ１９にポーリングして「リード完了」を認識することとしたが、バスブリッジ回路１００側からリード完了を示す割込みをマイクロプロセッサ５０に行なうこととしてもよい。
【００５８】
以下、バスブリッジ回路１００内のＦＰＧＡ部３０の構成（エレメントの構成、エレメント間の配線、バンクの構成）および動作（バンクの切替え処理、コンフィギュレーションの処理手順）について詳細に説明する。
【００５９】
（エレメントの構成）
まず、ＦＰＧＡ部３０の構成について説明する。図２は、ＦＰＧＡ部の構成を示すブロック図である。ＦＰＧＡ部３０は、図示しないルックアップテーブル、フリップフロップ、排他的論理和、セレクタ等で構成されており、ルックアップテーブルによって論理関数を実現している。
【００６０】
ＦＰＧＡ部３０は、分散メモリ３と接続する再構成可能な回路部（エレメント１）、分散メモリ３を有しエレメント１間を接続するスイッチボックス２を複数備えて構成される。ここでは、エレメント１、スイッチボックス２が２次元に多数配置されている場合を示している。なお、エレメント１、スイッチボックス２の配置は、この配置に限られず他の配置であってもよい。すなわち、エレメント１、スイッチボックス２を３次元的な配置、ツリー状の配置等によってＦＰＧＡ部３０を構成してもよい。
【００６１】
ＦＰＧＡ部３０内の各分散メモリ３は、複数のバンクＸ１〜Ｘ３を備えている。すなわち、各分散メモリ３は、複数の論理的なバンクＸ１〜Ｘ３に分割されている。ＦＰＧＡ部３０内の各分散メモリ３は、第２のコンフィギュレーションパス５やバンク切替え信号７によって接続されている。また、ＦＰＧＡ部３０内の各エレメント１やスイッチボックス２は、図示しない第１のコンフィギュレーションパス（後述する第１のコンフィギュレーションパス６）によって接続されている。
【００６２】
ＦＰＧＡ部３０においては、各エレメント１内の回路構成やエレメント１及びスイッチボックス２の接続を変更することによって、所望の回路を実現する。この各エレメント１内の回路構成やエレメント１及びスイッチボックス２の接続を変更するためのコンフィギュレーションデータは、ＦＰＧＡ部３０の外部から第２のコンフィギュレーションパス５を介して各分散メモリ３に入力され、各エレメント１内の回路構成やＦＰＧＡ部３０内の接続が設定変更される。
【００６３】
各バンクＸ１〜Ｘ３には、エレメント１の構成を変更するための情報が格納されている。バンクＸ１〜Ｘ３によるエレメント１の設定は、バンク切替え信号７の指示情報によって瞬時に変更される。これにより、エレメント１が分散メモリ３から読み出す構成情報（バンクＸ１〜Ｘ３内の情報）が切り替わり、エレメント１内の回路構成が変更される。
【００６４】
ここで、エレメント１の構成を説明する。図３は、エレメントの構成を示す図である。エレメント１は、入力信号選択部５１、フィードバックパス選択部５２、フィードスルーパス選択部５３、出力信号選択部５４、出力信号ラッチ制御部５５、エレメントコア５８を含んで構成されている。入力信号選択部５１、フィードバックパス選択部５２、フィードスルーパス選択部５３、出力信号選択部５４、出力信号ラッチ制御部５５、エレメントコア５８は、第２のコンフィギュレーションパス５を介して入力される指示情報に基づいて、種々の設定を行なう。
【００６５】
入力信号選択部５１は、フィードバックパス選択部５２を介してエレメントコア５８に接続されている。また、エレメントコア５８は、フィードスルーパス選択部５３を介して出力信号選択部５４と接続されている。出力信号ラッチ制御部５５は、出力信号選択部５４およびフィードバックパス選択部５２と接続されている。
【００６６】
エレメントコア５８は、四則演算などの演算回路、信号処理等のフィルタリングを行うフィルタ回路、暗号回路等アプリケーションに特化した回路、バス調停等の所定の回路の制御に特化した制御回路（ステートマシンなど）等や、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＦＩＦＯ等のデータ記憶回路を備えている。
【００６７】
入力信号選択部５１は、エレメント１の入力端子からエレメントコア５８の入力端子に接続する信号の接続を変更する。出力信号選択部５４は、エレメントコア５８が出力する信号の接続先（エレメント１の出力端子の接続先）を変更する。
【００６８】
入力信号選択部５１及び出力信号選択部５４の設定によってスイッチボックス２との接続先をエレメント１内で変更することが可能となる。これにより、スイッチボックス２の接続を変えることなく、エレメント１内でスイッチボックス２とエレメントコア５８との接続を変更することが可能となる。
【００６９】
フィードバックパス選択部５２は、セレクタ５６によってエレメントコア５８の出力信号を必要に応じてエレメントコア５８の入力に戻す。フィードバックパス選択部５２によって、スイッチボックス２を経由することなくエレメントコア５８の出力信号をエレメントコア５８の入力に戻すことが可能となる。
【００７０】
フィードスルーパス選択部５３は、エレメント１に入力された信号をエレメントコア５８にバイパスする。フィードスルーパス選択部５３は、エレメント１を経由したスルーパスを形成することによって、エレメント１で接続先を変更する。フィードスルーパス選択部５３によって、スイッチボックス２を使用しないでエレメント１の接続を変更することが可能となり、配線変更の自由度を向上させている。
【００７１】
出力信号ラッチ制御部５５は、エレメント１の出力段に配置されており、複数のフリップフロップ５７を備えている。出力信号ラッチ制御部５５は、エレメントコア５８の出力信号を、一旦フリップフロップ５７でラッチするかラッチしないかを選択制御する。例えば、出力信号ラッチ制御部５５がフリップフロップ５７を選択すると、エレメントコア５８からの出力信号がフリップフロップ５７に入力される。これにより、エレメントコア５８に演算回路が含まれている場合等であって、エレメント１が複数個直列に接続している場合に、これらの直列接続されたエレメント１にパイプライン動作をさせることが可能となる。
【００７２】
また、出力信号ラッチ制御部５５がフリップフロップ５７を選択しない場合、エレメントコア５８からの出力信号はフリップフロップ５７を介さずに外部に出力される。これにより、エレメントコア５８に制御回路等の回路が含まれている場合には、制御回路の出力信号をフリップフロップ５７でラッチせずに別のエレメント１に接続することが可能となる。
【００７３】
エレメント１の入出力の端子数や分散メモリ３からの第２のコンフィギュレーションパス５の信号数は、エレメントコア５８の構成に基づいて決定されるが、本実施の形態においては複数のアプリケーションに対応することができるよう予め冗長に用意しておく。
【００７４】
これらのエレメント１は、ＦＰＧＡ部３０の基本構成要素であるルックアップテーブルやフリップフロップ等から形成されるものであり、一般的なＦＰＧＡ部３０が備えているコンフィギュレーション手法によって必要に応じた構成の変更が可能となる。これにより、ＬＳＩ（Large Scale Integration circuit）等のように製造後に変更が不可能な半導体集積回路に実装された回路と比較して回路変更に対する柔軟性が非常に高くなる。
【００７５】
（エレメント間の配線）
次に、エレメント間の配線の構成について説明する。図４は、ＦＰＧＡ部のエレメント間の配線の一例を説明するための図である。エレメント１間の配線を変更可能なスイッチボックス２によってエレメント１間が接続されている。スイッチボックス２に接続された分散メモリ３内の構成情報によってエレメント１間の配線が変更される。
【００７６】
このスイッチボックス２は、ＦＰＧＡ部３０内のルックアップテーブルやフリップフロップ等の基本なセルで構成されており、ＦＰＧＡ部３０が従来から備えている一般的なコンフィギュレーション手法によって任意にスイッチボックス２内の構成を変更可能である。
【００７７】
ここでは、エレメント１間の配線の一例を説明するため、接続対象となるエレメント１を接続先エレメントＴ０として説明する。また、ここでは接続先エレメント１と接続するエレメント１を隣接エレメントＥ１〜Ｅ７として説明する。すなわち、ここでの接続先エレメントＴ０は、隣接エレメントＥ１〜Ｅ７と接続している。
【００７８】
接続先エレメントＴ０の周辺に隣接するエレメントＥ０〜Ｅ７の出力信号は、接続先エレメントＴ０と接続するスイッチボックス２内のセレクタ３５を介して、接続先エレメントＴ０の入力端子Ｐ０に入力される。隣接エレメントＥ１〜Ｅ７は、接続先エレメントＴ０からの出力信号を、図３に示した入力信号選択部５１によってエレメントコア５８等の何れの入力端子に接続するかを選択する。
【００７９】
また、接続先エレメントＴ０の接続先を変更するセレクタ３５は分散メモリ３に接続されており、この分散メモリ３の構成情報を変更することによって接続先エレメントＴ０の接続先を変更することが可能な構成となっている。
【００８０】
本実施の形態においては、複数のアプリケーションを実装するための拡張性を考慮して、隣接エレメントＥ１〜Ｅ７からの出力信号を上述のように冗長に接続する。このように接続先エレメントＴ０と隣接エレメントＥ１〜Ｅ７を冗長に接続して配線することによって、後で別のアプリケーションをＦＰＧＡ部３０に実装する際に、分散メモリ３の構成情報を変更するだけで所望の機能を実現できる可能性が高くなる。
【００８１】
なお、図４に示すように、アプリケーションによっては、遠方（接続先エレメントＴ０に対して隣接エレメントＥ１〜Ｅ７よりも遠方）のエレメント１（以下、遠方エレメントＥ８という）を接続先エレメントＴ０に接続してもよい。このようなパス（遠方エレメントＥ８と接続先エレメントＴ０間のパス）も、一般的なＦＰＧＡ部３０に元々用意されているコンフィギュレーション手法によって接続の設定を変更可能である。
【００８２】
また、ここでは接続先エレメントＴ０が冗長な配線によって隣接エレメントＥ１〜Ｅ７と接続されている場合について説明したが、所定の規則をもって隣接エレメント以外の部分にも予め冗長な配線を行うこととしてもよい。
【００８３】
（バンクの構成）
図５は、バンクの構成を示す図である。同図に示すように、ＦＰＧＡ部３０内の各分散メモリ３は、論理的に複数のバンクＸ１〜Ｘ３に分割されている。分散メモリ３内の各バンクＸ１〜Ｘ３には、エレメント１内のエレメントコア５８、入力信号選択部５１、出力信号選択部５４、フィードスルーパス選択部５３、フィードバックパス選択部５２、出力信号ラッチ制御部５５の構成情報が格納されている。
【００８４】
分散メモリ３内の各バンクＸ１〜Ｘ３に格納されている構成情報を、第２のコンフィギュレーションパス５を介してエレメント１に送信することによって、エレメント１はエレメント１内の構成（各構成要素の接続、設定等）を切替える。
【００８５】
また、スイッチボックス２と接続するバンクＸ１〜Ｘ３もエレメント１と接続するバンクＸ１〜Ｘ３と同様の機能を有している。スイッチボックス２と接続する各バンクＸ１〜Ｘ３には、エレメント１間の接続を行うスイッチボックス２の構成を変更するための情報が格納されている。
【００８６】
（コンフィギュレーション制御とバンクの切替え処理）
図６は、バンクの切替え処理を説明するための図である。同図に示すように、マイクロプロセッサ５０が第１のコンフィギュレーション用フラッシュメモリ８０、第２のコンフィギュレーション用フラッシュメモリ８１、第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３、バンク切替え制御回路８４と接続している。そして、ＦＰＧＡ部３０が第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３、バンク切替え制御回路８４と接続している。
【００８７】
なお、ここでの第１のコンフィギュレーション用フラッシュメモリ８０、第２のコンフィギュレーション用フラッシュメモリ８１が図１に示すコンフィギュレーション用メモリ２５に対応する。また、第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３が図１に示すコンフィギュレーション用管理制御回路に対応する。
【００８８】
なお、ここではＦＰＧＡ部３０がバンク切替え制御回路８４と接続する構成としているが、このバンク切替え制御回路８４は図１のバスブリッジ回路１００において図示していない。また、ここでは説明の便宜上マイクロプロセッサ５０が第１のコンフィギュレーション用フラッシュメモリ８０等と直接接続している場合を示しているが、マイクロプロセッサ５０と第１のコンフィギュレーション用フラッシュメモリ８０等は、バスブリッジ回路１００内の所定の構成要素を介して接続されている。
【００８９】
本実施の形態におけるコンフィギュレーション回路は、２系統のコンフィギュレーションパス（第１のコンフィギュレーションパス６、第２のコンフィギュレーションパス５）を有している。
【００９０】
第１のコンフィギュレーションパス６は、一般的なＦＰＧＡに従来から存在するコンフィギュレーション用のパスである。第２のコンフィギュレーションパス５は、ＦＰＧＡ部３０内に実装したエレメント１の構成情報やエレメント１間のスイッチボックス２の接続情報を切替えるためのコンフィギュレーション用のパスである。第２のコンフィギュレーションパス５は、ＦＰＧＡ部３０内の分散メモリ３に対する第２のコンフィギュレーションデータをダウンロードする。
【００９１】
第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３は、マイクロプロセッサ５０からの転送情報に基づいて、ＦＰＧＡ部３０に第１のコンフィギュレーション、第２のコンフィギュレーションを行なう。ここでの第１のコンフィギュレーション用制御回路８２は、第１のコンフィギュレーション用フラッシュメモリ８０内の第１のコンフィギュレーションデータを読み出して、ＦＰＧＡ部３０のコンフィギュレーションを行なう。
【００９２】
第２のコンフィギュレーション用フラッシュメモリ８１は、ＦＰＧＡ部３０内の再構成可能な回路に対する第２のコンフィギュレーションデータを保持している。第２のコンフィギュレーション用制御回路８３は、第２のコンフィギュレーション用フラッシュメモリ８１内の第２のコンフィギュレーションデータを読み出して、ＦＰＧＡ部３０に第２のコンフィギュレーションを行なう。また、第２のコンフィギュレーション用制御回路８３は、分散メモリ３を論理的に複数のバンクＸ１〜Ｘ３に分けた際、再構成のために使用していない未使用のバンクに対してコンフィギュレーションデータをダウンロードする機能を有している。
【００９３】
このように、第１のコンフィギュレーション用制御回路８２は第１のコンフィギュレーションパス６を介してＦＰＧＡ部３０のコンフィギュレーションを行い、第２のコンフィギュレーション用制御回路８３は第２のコンフィギュレーションパス５を介してＦＰＧＡ部３０のコンフィギュレーションを行う。
【００９４】
これら２系統のコンフィギュレーションパスの両方を用いたコンフィギュレーションのシーケンスは、ハードウエアによって制御してもよいし、これら２系統のコンフィギュレーションパスの制御回路を個別にマイクロプロセッサ５０のソフトウエアにより制御してもよい。
【００９５】
バンク切替え制御回路８４は、ＦＰＧＡ部３０の分散メモリ３のバンクＸ１〜Ｘ３の切替えを行なう。すなわち、バンク切替え制御回路８４からのバンク切替えの指示（指示情報）によってバンクＸ１〜Ｘ３が切替えられ、ＦＰＧＡ部３０内に実装した回路構成が変更される。このように、バンクＸ１〜Ｘ３を切替える処理によってＦＰＧＡ部３０内のエレメント１の構成を瞬時に変更できるよう構成されている。
【００９６】
また、バンク切替え制御回路８４は、ＦＰＧＡ部３０内の分散メモリ３のバンク切替えを行なうとともに、第２のコンフィギュレーション用制御回路８３に対して、ＦＰＧＡ部３０内で使用していないバンクに関する情報を通知する。この情報に基づいて、第２のコンフィギュレーション用制御回路８３は、ＦＰＧＡ部３０内で使用していない論理的なバンクに対してコンフィギュレーションデータのダウンロードを行う。
【００９７】
なお、ここではバンクＸ１〜Ｘ３を切替える処理によってＦＰＧＡ部３０内のエレメント１の構成を変更する場合について説明したが、スイッチボックス２もエレメント１と同様にバンクＸ１〜Ｘ３を切替える処理によって構成が変更される。
【００９８】
（コンフィギュレーションの処理手順）
次に、コンフィギュレーションの処理手順を説明する。図７は、ＦＰＧＡ部に対するコンフィギュレーションの処理手順を示すフローチャートである。ＦＰＧＡ部３０が所定のアプリケーション処理するための第１のコンフィギュレーションデータを後述する情報作成装置２００等によって生成する（ステップＳ１）。
【００９９】
第１のコンフィギュレーションパス６を用いて、第１のコンフィギュレーションデータ内の回路構成情報を、ＦＰＧＡ部３０にダウンロードする（ステップＳ２）。これにより、ＦＰＧＡ部３０内に所定の回路構成を実装させる。
【０１００】
ＦＰＧＡ部３０が所定のアプリケーション処理するための、分散メモリ３を利用した再構成可能な回路に対する第２のコンフィギュレーションデータを情報作成装置２００等によって生成する（ステップＳ３）。
【０１０１】
第２のコンフィギュレーション用制御回路８３は、再構成可能な回路部（エレメント１）やエレメント１間のスイッチボックス２をコンフィギュレーションするためのＦＰＧＡ部３０内の分散メモリ３に、第２のコンフィギュレーションパス５を介して第２のコンフィギュレーションデータをダウンロードする（ステップＳ４）。
【０１０２】
ＦＰＧＡ部３０において新規にアプリケーションを追加する必要が生じた場合、制御部２７がコンフィギュレーション管理制御回路２４に新たなアプリケーションの追加要求を行なう（ステップＳ５）。
【０１０３】
ステップＳ１の処理で生成した第１のコンフィギュレーションデータに基づく回路構成、ステップＳ３の処理で生成した第２のコンフィギュレーションデータに基づく分散メモリ３を利用した回路構成に対して、新たなアプリケーションの実装を行なえるか否かをコンフィギュレーション管理制御回路２４が判断する（ステップＳ６）。
【０１０４】
コンフィギュレーション管理制御回路２４が、新たなアプリケーションの実装を行なえると判断した場合は（ステップＳ６、可能）、情報作成装置２００等は、ＦＰＧＡ部３０が所定のアプリケーション処理するための、分散メモリ３を利用した再構成可能な回路に対する第２のコンフィギュレーションデータを生成する（ステップＳ３）。
【０１０５】
また、第２のコンフィギュレーション用制御回路８３は、再構成可能な回路部（エレメント１）やエレメント１間のスイッチボックス２をコンフィギュレーションするためのＦＰＧＡ部３０内の分散メモリ３に、第２のコンフィギュレーションパス５を経由してコンフィギュレーションデータをダウンロードする（ステップＳ４）。
【０１０６】
一方、コンフィギュレーション管理制御回路２４が、新たなアプリケーションの実装を行なえないと判断した場合（ステップＳ６、不可能）、情報作成装置２００等は、ＦＰＧＡ部３０が新たなアプリケーション処理するための第１のコンフィギュレーションデータを生成する（ステップＳ１）。そして、ＦＰＧＡ部３０の構成情報を全て消去し、新たに生成した回路構成情報（第１のコンフィギュレーションデータ）によってＦＰＧＡ部３０をコンフィギュレーションする。なお、ここでのコンフィギュレーション管理制御回路２４は、マイクロプロセッサ５０のソフトウエアに基づいてリアルタイムに処理を行う。
【０１０７】
（再構成可能な回路の作成装置）
つぎに、ＦＰＧＡ部３０を含む回路（バスブリッジ回路１００）の生成処理について説明する。ＦＰＧＡ部３０の回路は、情報作成装置（半導体集積回路装置の設計装置）によって生成する。図８は、情報作成装置の構成を示すブロック図である。
【０１０８】
情報作成装置２００は、パーソナルコンピュータ等の装置で構成され、記憶部２１０、アーキテクチャ選択部２１２、回路情報抽出部２１４、回路生成部２１８、コンフィギュレーションデータ生成部２１６、制御部２２０からなる。
【０１０９】
記憶部２１０は、再構成可能な回路の基本的なアーキテクチャが記述されたアーキテクチャライブラリ、種々の回路ブロックのテンプレートからなる回路テンプレート（後述する回路テンプレートライブラリ９０）、異なる機能を有する複数の回路情報等を記憶する。
【０１１０】
アーキテクチャ選択部２１２は、ＦＰＧＡ部３０の回路設計データに対応するアーキテクチャを記憶部２１０から選択する。回路情報抽出部２１４は、複数の回路情報から各回路の特徴部分を抽出する。
【０１１１】
回路生成部２１８は、エレメントコア５８、エレメント１、スイッチボックス２の各構成データを生成するとともに、エレメント１とスイッチボックス２の配線情報を生成する。回路生成部２１８は、分散メモリ３の各構成データを生成するとともに、回路構成の切替えに関する回路構成切替え信号を生成する。
【０１１２】
コンフィギュレーションデータ生成部２１６は、分散メモリ３に設定するコンフィギュレーションデータ等を生成する。制御部２２０は、記憶部２１０、アーキテクチャ選択部２１２、回路情報抽出部２１４、回路生成部２１８、コンフィギュレーションデータ生成部２１６を制御する。
【０１１３】
（再構成可能な回路の生成手順）
次に、情報作成装置２００によるＦＰＧＡ部３０内の再構成可能な回路の生成手順を説明する。図９は、再構成可能な回路の生成手順を示すフローチャートである。アーキテクチャ選択部２１２は、ＦＰＧＡ部３０に実装する再構成可能な回路の基本的なアーキテクチャが記述されたアーキテクチャライブラリを記憶部２１０から読み込み、何れのアーキテクチャを使用するか選択する（ステップＳ１０）。ここでのアーキテクチャライブラリには、エレメント１の配置や接続方式（２次元メッシュ、３次元メッシュ、ツリー構造等)に関する情報が含まれている。
【０１１４】
アーキテクチャ選択部２１２が選択したアーキテクチャは、回路生成部２１８に入力される。次に、回路生成部２１８は、回路テンプレートライブラリ９０を記憶部２１０から読み込む（ステップＳ１１）。
【０１１５】
ここで回路テンプレートライブラリ９０の構成を説明する。図１０は、回路テンプレートライブラリの構成の一例を示す図である。回路テンプレートライブラリ９０は、抽象度の低い汎用性のある低抽象度ライブラリ９１と抽象度の高い回路でパラメータ化した高抽象度ライブラリ９２を含んで構成されている。
【０１１６】
低抽象度ライブラリ９１は、パラメータ化された四則演算回路、ビットシフト等の回路、ＲＡＭ、組合せ回路、フリップフロップ、スイッチ等の回路ブロックのテンプレートを有している。また、高抽象度ライブラリ９２は、フィルタ回路、暗号回路等の回路ブロックのテンプレートを有している。
【０１１７】
次に、回路情報抽出部２１４は、異なる機能を有する複数の回路情報を記憶部２１０から読み込み込む（ステップＳ１２）。回路情報抽出部２１４は、記憶部２１０から読み込んだ複数の回路情報の特徴部分を抽出する（ステップＳ１３）。
【０１１８】
回路情報抽出部２１４は、例えば、回路において共通の部分、回路の特徴が類似しているもの（例えば、算術演算回路で処理ビット幅が異なっているものや機能自体は全く同じであるが処理サイクル数（レイテンシ）が異なるもの）、回路の論理的なモジュールで入力及び出力のポート数が一致しているもの、回路テンプレートライブラリ９０に一致しているもの、回路テンプレートライブラリ９０に類似しているもの等の抽出を行う。
【０１１９】
次に、回路生成部２１８は、エレメントコア５８を生成する（ステップＳ１４）。ここでの回路生成部２１８は、回路テンプレートライブラリ９０内から所定の回路を抽出してエレメントコア５８を生成する。これにより、エレメントコア５８には複数の種類の回路を混在して使用する。
【０１２０】
回路生成部２１８は、回路情報抽出部２１４が抽出した回路の特徴に基づいて、回路情報の併合を行う。併合に際しては、回路テンプレートライブラリ９０内の情報に基づいて、回路テンプレートライブラリ９０のビット幅やレイテンシなどのパラメータの変更によって対応可能な場合には、回路テンプレートライブラリ９０へのマッピングを行う。一方、マッピングできない回路の場合には、専用の回路を新たに生成する。
【０１２１】
回路生成部２１８は、生成したエレメントコア５８の構成データに、図３で説明した入力信号選択部５１、フィードバックパス選択部５２、フィードスルーパス選択部５３、出力信号選択部５４、出力信号ラッチ制御部５５等の周辺回路の構成データを付加し、図３で説明した再構成可能な回路部（エレメント１）の構成データを生成する（ステップＳ１５）。
【０１２２】
次に、回路生成部２１８は、再構成可能な回路部（エレメント１）間の配線を切替えるスイッチボックス２の構成データを生成する（ステップＳ１６）。ここでのスイッチボックス２は、ＦＰＧＡ部３０のルックアップテーブルやフリップフロップ等の基本的なセルで構成する。これにより、一般的なＦＰＧＡが有するコンフィギュレーション機能によって任意にスイッチボックス２内の構成を変更可能なスイッチボックス２を生成することが可能となる。
【０１２３】
回路生成部２１８は、生成したエレメント１、生成したスイッチボックス２の回路規模を算出し、実装対象のＦＰＧＡ部３０の使用可能な資源と拡張性に基づいて、複数の回路を実現するために必要なエレメント１、スイッチボックス２とは異なる別の冗長配線用のエレメント１及びスイッチボックス２の構成データを生成する。これらの冗長配線用のエレメント１及びスイッチボックス２が拡張性を考慮したエレメント１、スイッチボックス２となる（ステップＳ１７）。
【０１２４】
回路生成部２１８は、ステップＳ１５〜Ｓ１７の処理で生成した、エレメント１とスイッチボックス２との間の配線を行う（ステップＳ１８）。ここでの配線は、複数の回路情報を実現するために必要な配線とともに、その後の拡張性を考慮した冗長な配線によって行う（ステップＳ１９）。例えば、図４で説明した隣接エレメントＥ０〜Ｅ７から接続先エレメントＴ０への配線を行う。また、遠方エレメントＥ８から接続先エレメントＴ０への配線を行ってもよい。
【０１２５】
回路生成部２１８は、生成した再構成可能な回路部（エレメント１）の機能を切替えるためのバンク切替え信号７および生成した再構成可能な回路部間（エレメント１間）の配線を切替えるスイッチボックス２を制御する信号の情報に基づいて分散メモリ３のビット幅を決定する。また、回路生成部２１８は、ＦＰＧＡ部３０に実装可能な分散メモリ３の容量に基づいて、分散メモリ３の論理的なバンク数の決定を行う。
【０１２６】
回路生成部２１８は、決定した分散メモリ３のビット幅、分散メモリ３の論理的なバンク数に基づいて、夫々のエレメント１及びスイッチボックス２の構成情報切替え信号を分散メモリ３のデータ出力端子に接続するよう回路を生成する（ステップＳ２０）。
【０１２７】
コンフィギュレーションデータ生成部２１６は、生成した分散メモリ３と第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３を接続するよう回路を生成する。エレメント１とスイッチボックス２との接続は、第１のコンフィギュレーションパス６、第２のコンフィギュレーションパス５によって接続する。
【０１２８】
次に、コンフィギュレーションデータ生成部２１６は、第１のコンフィギュレーション用制御回路８２、第２のコンフィギュレーション用制御回路８３を生成して、分散メモリ３に接続するよう回路データを生成する（ステップＳ２１）。
【０１２９】
次に、コンフィギュレーションデータ生成部２１６は、ＦＰＧＡ部３０の第１のコンフィギュレーションデータを生成する（ステップＳ２２）。コンフィギュレーションデータ生成部２１６は、分散メモリ３に設定する複数のアプリケーション用の第２のコンフィギュレーションデータを生成する（ステップＳ２３）。
【０１３０】
これにより、再構成可能な半導体集積回路の回路設計データを生成することが可能となる。情報作成装置２００によるこれらの処理は、ソフトウエアプログラムによってアプリケーション実行時にリアルタイムに行う。
【０１３１】
このように、実施の形態によれば、ＦＰＧＡ３０の分散メモリ３内に必要な回路構成情報が分散メモリ３のバンクＸ１〜Ｘ３に存在する場合には、バンク切替え信号７によって分散メモリ３内のバンクを迅速に切替えることができるので、ＦＰＧＡ部３０のコンフィギュレーションを迅速に行なうことが可能となる。これにより、ＦＰＧＡ部３０の回路機能を迅速に変更することが可能となり、マイクロプロセッサ５０から周辺回路Ａ４２に対するライト動作等の処理を迅速に行なうことが可能となる。
【０１３２】
また、再構成可能な回路部（エレメント１）やスイッチボックス２の構成は、ＦＰＧＡ部３０のルックアップテーブルやフリップフロップ等の基本セルで構成されているため、一般的なＦＰＧＡ部３０が備えるコンフィギュレーション機能を用いてＦＰＧＡ部３０内の回路構成を任意に変更することが可能となる。
【０１３３】
また、情報作成装置２００は、異なる機能を有する回路情報で特徴的な部分（一致又は類似する情報）を抽出して回路設計データを生成するので、複数の異なる機能を有するアプリケーションを実現するための回路を簡易な構成で生成することが可能となる。したがって、回路機能を迅速に変更することが可能なＦＰＧＡ部３０のの回路設計データを容易に生成することが可能となる。
【産業上の利用可能性】
【０１３４】
以上のように、本発明にかかる半導体集積回路装置および半導体集積回路装置の設計装置は、回路機能を再構成することが可能なプログラマブル論理回路に適している。
【図面の簡単な説明】
【０１３５】
【図１】本発明の実施の形態にかかるバスブリッジ回路の構成を示す図である。
【図２】ＦＰＧＡ部の構成を示すブロック図である。
【図３】エレメントの構成を示す図である。
【図４】ＦＰＧＡ部のエレメント間の配線の一例を説明するための図である。
【図５】バンクの構成を示す図である。
【図６】バンクの切替え処理を説明するための図である。
【図７】ＦＰＧＡ部に対するコンフィギュレーションの処理手順を示すフローチャートである。
【図８】情報作成装置の構成を示すブロック図である。
【図９】再構成可能な回路の生成手順を示すフローチャートである。
【図１０】回路テンプレートライブラリの構成の一例を示す図である。
【符号の説明】
【０１３６】
１  エレメント
２  スイッチボックス
３  分散メモリ
５  第２のコンフィギュレーションパス
６  第１のコンフィギュレーションパス
７  バンク切替え信号
１１  バスブリッジ構成情報設定部
１２  バスＡ側リクエスト処理部
１３  バスＢ側プロトコル判定処理部
１４  バスプロトコル情報設定部
１５  バスＢ側アドレス設定部
１６  バスＢ側データ設定部
１７  バスＡ側アドレス設定部
１８  バスＡ側データ設定部
１９  ステータスレジスタ
２０  ライト用ＦＩＦＯ
２１  リード用ＦＩＦＯ
２２  バスＡ側調停回路
２３  バスＢ側調停回路
２４  コンフィギュレーション管理制御回路
２５  コンフィギュレーション用メモリ
２６  コンフィギュレーションメモリインデックス情報設定部
２７  制御部
３０  ＦＰＧＡ部
３１  バスプロトコル生成部
３２  アドレス変換部
４０  ＤＭＡ制御回路
４１  外部メモリ
４２  周辺回路Ａ
４３  周辺回路Ｂ
４４  周辺回路Ｃ
５０  マイクロプロセッサ
５１  入力信号選択部
５２  フィードバックパス選択部
５３  フィードスルーパス選択部
５４  出力信号選択部
５５  出力信号ラッチ制御部
５６  セレクタ
５７  フリップフロップ
５８  エレメントコア
６１  バスＡ
６２  アドレスバスＢ
６３  データバスＢ
８０  第１のコンフィギュレーション用フラッシュメモリ
８１  第２のコンフィギュレーション用フラッシュメモリ
８２  第１のコンフィギュレーション用制御回路
８３  第２のコンフィギュレーション用制御回路
８４  バンク切替え制御回路
９０  回路テンプレートライブラリ
９１  低抽象度ライブラリ
９２  高抽象度ライブラリ
１００  バスブリッジ回路
２００  情報作成装置
２１０  記憶部
２１２  アーキテクチャ選択部
２１４  回路情報抽出部
２１６  コンフィギュレーションデータ生成部
２１８  回路生成部
２２０  制御部
【図１】
2006303730.tif 000003
【図２】
2006303730.tif 000004
【図３】
2006303730.tif 000005
【図４】
2006303730.tif 000006
【図５】
2006303730.tif 000007
【図６】
2006303730.tif 000008
【図７】
2006303730.tif 000009
【図８】
2006303730.tif 000010
【図９】
2006303730.tif 000011
【図１０】
2006303730.tif 000012