(57)【要約】【課題】種々の機能を実現することができるリコンフィギュラブル回路、設計方法及び設計装置を提供することを課題とする。【解決手段】処理を行う複数のプロセッサエレメントを含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力ステップと、前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを修正した設計データを生成する第１の生成ステップ（８０１，８１１〜８１３）とを有することを特徴とする設計方法が提供される。【選択図】図８
2010152713.tif 000002
【特許請求の範囲】
【請求項１】
処理を行う複数のプロセッサエレメントを含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力ステップと、
前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを修正した設計データを生成する第１の生成ステップと
を有することを特徴とする設計方法。
【請求項２】
前記第１の生成ステップは、前記リコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを他のプロセッサエレメントに差し替えた設計データを生成することを特徴とする請求項１記載の設計方法。
【請求項３】
さらに、前記リコンフィギュラブル回路内の複数のプロセッサエレメントの単位をクラスタとし、前記リコンフィギュラブル回路内の前記クラスタの単位で修正した設計データを生成する第２の生成ステップを有することを特徴とする請求項１又は２記載の設計方法。
【請求項４】
前記第２の生成ステップは、前記リコンフィギュラブル回路内の少なくとも１つのクラスタを他のクラスタに差し替えた設計データを生成することを特徴とする請求項３記載の設計方法。
【請求項５】
さらに、前記リコンフィギュラブル回路内の複数のクラスタの単位をクラスタグループとし、前記リコンフィギュラブル回路内の前記クラスタグループの単位で修正した設計データを生成する第３の生成ステップを有することを特徴とする請求項３又は４記載の設計方法。
【請求項６】
前記第３の生成ステップは、前記リコンフィギュラブル回路内の少なくとも１つのクラスタグループを他のクラスタグループに差し替えた設計データを生成することを特徴とする請求項５記載の設計方法。
【請求項７】
さらに、前記リコンフィギュラブル回路のインタフェース回路を修正した設計データを生成する第４の生成ステップを有することを特徴とする請求項１〜６のいずれか１項に記載の設計方法。
【請求項８】
処理を行う複数のプロセッサエレメントを含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力部と、
前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを修正した設計データを生成する第１の生成部と
を有することを特徴とする設計装置。
【請求項９】
処理を行う複数のプロセッサエレメントの単位をクラスタとし、前記クラスタを複数有することを特徴とするリコンフィギュラブル回路。
【請求項１０】
前記複数のクラスタの単位をクラスタグループとし、前記クラスタグループを複数有することを特徴とする請求項９記載のリコンフィギュラブル回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィギュラブル回路、設計方法及び設計装置に関する。
【背景技術】
【０００２】
リコンフィギュラブル回路は、機能の変更が可能な複数のプロセッサエレメントを有する。複数のプロセッサエレメントは、マトリックス状に配置され、複数のプロセッサエレメントの間には選択的に接続可能なネットワークが設けられている。
【０００３】
また、特開２００６−１６３８１５号公報には、算術および論理演算を行う演算器を含む複数のプロセッサエレメントと、前記複数のプロセッサエレメント間を接続するバスと、前記バスの接続を変更するスイッチ部と、ソフトウェアに応じて前記スイッチ部を制御する制御回路とを有する信号処理プロセッサが開示されている。
【０００４】
【特許文献１】特開２００６−１６３８１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
リコンフィギュラブル回路は、複数のプロセッサエレメントの固定のハードウェア構成を有し、その構成内において機能の変更が可能である。しかし、機能の多様化が要求される現在では、リコンフィギュラブル回路内のプロセッサエレメントの数が足りない、又は必要なプロセッサエレメントが搭載されていない等の問題が生じる。
【０００６】
本発明の目的は、種々の機能を実現することができるリコンフィギュラブル回路、設計方法及び設計装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の設計方法は、処理を行う複数のプロセッサエレメントを含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力ステップと、前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを修正した設計データを生成する第１の生成ステップとを有することを特徴とする。
【０００８】
また、本発明のリコンフィギュラブル回路は、処理を行う複数のプロセッサエレメントの単位をクラスタとし、前記クラスタを複数有することを特徴とする。
【発明の効果】
【０００９】
リコンフィギュラブル回路の構成の自由度が向上し、種々の機能を実現することができる。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施形態によるデフォルト構成のリコンフィギュラブル回路モジュールの構成例を示す図である。リコンフィギュラブル回路モジュール１０１は、例えば、４個の第１のプロセッサエレメント（ＰＥ）１０２ａ、４個の第２のプロセッサエレメント１０２ｂ、及び４個の第３のプロセッサエレメント１０２ｃを有する。以下、プロセッサエレメント１０２ａ，１０２ｂ，１０２ｃの個々又は総称を、プロセッサエレメント１０２という。プロセッサエレメント１０２は、算術演算処理又は論理演算処理等を行う。例えば、第１のプロセッサエレメント１０２ａは加減算処理を行い、第２のプロセッサエレメント１０２ｂは乗算処理を行い、第３のプロセッサエレメント１０２ｃはカウントを行うカウンタである。リコンフィギュラブル回路モジュール１０１は、種々の機能を実現するために、予め冗長性をもたせた複数のプロセッサエレメント１０２ａ〜１０２ｃを有する。
【００１１】
図１のリコンフィギュラブル回路モジュール１０１内の複数のプロセッサエレメント１０２の構成は固定されている。ここで、リコンフィギュラブル回路モジュール１０１は、例えば第１のプロセッサエレメント１０２ａを１４個使用する演算を行うことができない。
【００１２】
図２は、本実施形態による４個のリコンフィギュラブル回路モジュールの構成例を示す図である。リコンフィギュラブル回路は、例えば１４個の第１のプロセッサエレメント１０２ａを使用するために、第１〜第４のリコンフィギュラブル回路モジュール１０１ａ，１０１ｂ，１０１ｃ，１０１ｄを有する。４個のリコンフィギュラブル回路モジュール１０１ａ〜１０１は、それぞれ図１のリコンフィギュラブル回路モジュール１０１と同じ構成を有する。
【００１３】
この場合、各リコンフィギュラブル回路モジュール１０１ａ〜１０１ｄの構成は固定されているため、プロセッサエレメント１０２の使用効率が悪くなり、回路規模が不必要に増大してしまう。
【００１４】
図３は、本実施形態によるカスタマイズ可能なリコンフィギュラブル回路の構成例を示す図である。リコンフィギュラブル回路は、モジュール３０１ａ及び３０１ｂを有する。第１のリコンフィギュラブル回路モジュール３０１ａは、８個の第１のプロセッサエレメント１０２ａ、１個の第２のプロセッサエレメント１０２ｂ、１個の第３のプロセッサエレメント１０２ｃ、第４のプロセッサエレメント１０２ｄ、及び１個の空き領域３０２を有する。第２のリコンフィギュラブル回路モジュール３０１ｂは、８個の第１のプロセッサエレメント１０２ａ、１個の第２のプロセッサエレメント１０２ｂ、１個の第３のプロセッサエレメント１０２ｃ、及び２個の空き領域３０２を有する。
【００１５】
リコンフィギュラブル回路モジュール３０１ａ及び３０１ｂは、それぞれ図１のデフォルト構成のリコンフィギュラブル回路モジュール１０１を基にカスタマイズしたものである。すなわち、図１のリコンフィギュラブル回路モジュール１０１内の特定のプロセッサエレメント１０２を差し替え等することにより、図３のリコンフィギュラブル回路モジュール３０１ａ及び３０１ｂを生成する。リコンフィギュラブル回路モジュール３０１ａ及び３０１ｂは、相互に異なる構成を有する。
【００１６】
図３のリコンフィギュラブル回路は、１６個の第１のプロセッサエレメント１０２ａを有するので、１４個の第１のプロセッサエレメント１０２ａを使用する演算を行うことができる。また、図３のリコンフィギュラブル回路は、図２のリコンフィギュラブル回路に比べ、不要なプロセッサエレメント１０２ｂ及び１０２ｃの数が少ないので、プロセッサエレメント１０２の使用効率が向上し、回路規模を小さくすることができる。
【００１７】
次に、図４〜図７を参照しながら、上記のリコンフィギュラブル回路を実現するための階層構造のリコンフィギュラブル回路の構成例を説明する。
【００１８】
図４は、クラスタ４０１の構成例を示す図である。クラスタ４０１は、プロセッサエレメント群４０２を有する。プロセッサエレメント群４０２は、複数のプロセッサエレメント１０２を有する。ネットワーク４０３は、データネットワーク及び制御信号ネットワークを有し、複数のプロセッサエレメント１０２の入出力間に接続され、複数のプロセッサエレメント１０２の入出力間を選択的に接続する。ＣＰＵ４０４は、コンフィグレーションメモリ４０５からコンフィグレーションデータを読み出し、各プロセッサエレメント１０２にｎビットのコンフィグレーションデータを出力する。各プロセッサエレメント１０２は、コンフィグレーションデータに応じた機能が設定され、例えばコンフィグレーションデータに応じて加算器又は減算器等として機能する。複数のプロセッサエレメント１０２の単位がクラスタ４０１である。
【００１９】
図５は、クラスタグループ５０１の構成例を示す図である。クラスタグループ５０１は、図４の複数のクラスタ４０１を有する。複数のクラスタ４０１の単位がクラスタグループ５０１である。
【００２０】
図６は、リコンフィギュラブル回路モジュール６０１の構成例を示す図である。リコンフィギュラブル回路モジュール６０１は、図５の複数のクラスタグループ５０１及び入出力ポート６０２を有する。各クラスタグループ５０１は、複数の入出力ポート６０３を有する。１個の入出力ポート６０３は、ｎビットの信号である。入出力ポート６０２は、外部に対するインタフェースポートであり、複数のクラスタグループ５０１の入出力ポート６０３に接続される。入出力ポート６０２は、図４のネットワーク４０４のデータを入出力し、ＣＰＵ４０４からのコンフィグレーションデータを入力することができる。
【００２１】
図７は、リコンフィギュラブル回路モジュール６０１、ユーザロジック回路７０１及びユーザインタフェース回路７０２の構成例を示す図である。ユーザロジック回路７０１は、ユーザインタフェース回路７０２を介してリコンフィギュラブル回路モジュール６０１に接続される。ユーザインタフェース回路７０２は、例えばバッファ回路であり、ユーザロジック回路７０１及びリコンフィギュラブル回路モジュール６０１間に接続される。ユーザロジック回路７０１は、例えばＣＰＵである。
【００２２】
図８は、リコンフィギュラブル回路のカスタマイズの分類を示す図である。まず、プロセッサエレメント層分類（ステップ）８０１は、分類（ステップ）８１１〜８１３を有する。分類８１１は、デフォルト構成のリコンフィギュラブル回路内のプロセッサエレメント１０２を他の既存のプロセッサエレメント１０２に差し替える。既存のプロセッサエレメント１０２は、既に存在する設計済みのプロセッサエレメントである。分類８１２は、プロセッサエレメントのファンクションブロックフィッティングであり、図９を参照しながら説明する。
【００２３】
図９は、プロセッサエレメントのファンクションブロックフィッティングの分類８１２を説明するための図である。プロセッサエレメント１０２は、コンフィグレーションコントロールブロック９１１、ファンクションブロック９１２及びコントロールブロック９１３を有する。コンフィグレーションコントロールブロック９１１は、コンフィグレーションデータ９０１をデコードし、ファンクションブロック９１２及びコントロールブロック９１３に出力する。ファンクションブロック９１２及びコントロールブロック９１３は、コンフィグレーションデータに応じて機能が設定される。ファンクションブロック９１２は、ロジック回路９２０を有し、ネットワーク４０３（図４）から入力データ９０２を入力し、出力データをコントロールブロック９１３に出力する。コントロールブロック９１３は、フリップフロップ９１４を有し、ネットワーク４０３から入力制御信号９０３を入力し、出力データ９０４をネットワーク４０３に出力する。フリップフロップ９１４は、ファンクションブロック９１２の出力データを入力し、出力データ９０４を出力する。ファンクションブロック９１２は、フリップフロップを含まないロジック回路９２０を有する。また、プロセッサエレメント１０２は、出力個別信号９０５をネットワーク４０３へ出力する。
【００２４】
カスタマイズとして、ファンクションブロック９１２内のデフォルトのロジック回路９２０を、第１のロジック回路９２１、第２のロジック回路９２２又は第３のロジック回路９２３に差し替えることができる。
【００２５】
図８の分類８１３は、ユーザオリジナルのプロセッサエレメントを作成し、デフォルト構成のリコンフィギュラブル回路内のプロセッサエレメントをユーザオリジナルのプロセッサエレメントに差し替える。
【００２６】
次に、クラスタ層分類（ステップ）８０２は、分類（ステップ）８２１〜８２５を有する。分類８２１は、デフォルト構成のクラスタを、既存の他のクラスタに差し替える。
【００２７】
分類８２２は、複数のプロセッサエレメントを組み合わせてクラスタを作成し、デフォルト構成のクラスタを、作成したクラスタに差し替える。
【００２８】
分類８２３は、不要なプロセッサエレメントのコンフィグを削除した空き領域３０２（図３）に接続されるコンフィグレーションデータ線を削除する。
【００２９】
分類８２４は、不要なプロセッサエレメントのネットワークを削除した空き領域３０２（図３）に接続されるネットワーク４０３（図４）を削除する。
【００３０】
分類８２５は、ユーザオリジナルのクラスタを作成し、デフォルト構成のリコンフィギュラブル回路内のクラスタをユーザオリジナルのクラスタに差し替える。
【００３１】
次に、クラスタグループ層分類（ステップ）８０３は、分類（ステップ）８３１〜８３３を有する。分類８３１は、デフォルト構成のクラスタグループを、既存の他のクラスタグループに差し替える。
【００３２】
分類８３２は、複数のクラスタを組み合わせてクラスタグループを作成し、デフォルト構成のクラスタグループを、作成したクラスタグループに差し替える。
【００３３】
分類８３３は、クラスタグループの入出力ポート６０３（図６）の数を設定する。
【００３４】
次に、ユーザインタフェース分類（ステップ）８０４は、分類（ステップ）８４１を有する。分類８４１は、ユーザインタフェース７０２（図７）を選択して設定する。
【００３５】
図１０は、上記のリコンフィギュラブル回路の設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。このコンピュータは、ＣＡＤ（computer-aided design）により、リコンフィギュラブル回路の設計データを生成することができる。
【００３６】
バス１００１には、中央処理装置（ＣＰＵ）１００２、ＲＯＭ１００３、ＲＡＭ１００４、ネットワークインタフェース１００５、入力装置１００６、出力装置１００７及び外部記憶装置１００８が接続されている。
【００３７】
ＣＰＵ１００２は、データの処理及び演算を行うと共に、バス１００１を介して接続された上記の構成ユニットを制御するものである。ＲＯＭ１００３には、予めブートプログラムが記憶されており、このブートプログラムをＣＰＵ１００２が実行することにより、コンピュータが起動する。外部記憶装置１００８にコンピュータプログラムが記憶されており、そのコンピュータプログラムがＲＡＭ１００４にコピーされ、ＣＰＵ１００２により実行される。このコンピュータは、コンピュータプログラムを実行することにより、後述する図１１〜図１４の設計処理等を行うことができる。
【００３８】
外部記憶装置１００８は、例えばハードディスク記憶装置等であり、電源を切っても記憶内容が消えない。外部記憶装置１００８は、コンピュータプログラム、設計データ等を記録媒体に記録したり、記録媒体からコンピュータプログラム等を読み出すことができる。
【００３９】
ネットワークインタフェース１００５は、ネットワークに対してコンピュータプログラム及び設計データ等を入出力することができる。入力装置１００６は、例えばキーボード及びポインティングデバイス（マウス）等であり、各種指定又は入力等を行うことができる。出力装置１００７は、ディスプレイ及びプリンタ等であり、表示又は印刷することができる。
【００４０】
本実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００４１】
図１１は、図１０の設計装置の設計方法の処理例を示すフローチャートである。ステップ１１０１では、ユーザが設計装置を用いて、設計対象のリコンフィギュラブル回路の機能を実現するためのソースプログラム（例えばＣ言語）を生成し、ＣＰＵ１００２はそのソースプログラムを外部記憶装置１００８に記憶する。次に、ステップ１１０２では、ＣＰＵ１００２は、外部記憶装置１００８内のソースプログラムをコンパイルする。そのコンパイルにより、デフォルト構成のリコンフィギュラブル回路により実現できるか否かの結果が出力される。実現可能の結果が出力された場合には、ＣＰＵ１００２は、デフォルト構成のリコンフィギュラブル回路の設計データを生成し、外部記憶装置１００８に記録する。実現不可能の結果が出力された場合には、ステップ１１０４へ進む。なお、ステップ１１０３の詳細は、後に図１２を参照しながら説明する。
【００４２】
ステップ１１０４では、ＣＰＵ１００２は、コンパイル結果の構成レポート１１０５を出力し、外部記憶装置１００８に記録する。構成レポート１１０５は、ソースプログラムの機能を実現するために必要なプロセッサエレメントの種類、及び各プロセッサエレメントの数の情報を含む。その後、ステップ１１０６において、カスタマイズ処理を行う。
【００４３】
ステップ１１０６は、ステップ１１０７〜１１１０を有する。まず、ステップ１１０７では、ＣＰＵ１００２は、プロセッサエレメント層のカスタマイズ処理を行い、カスタマイズ処理をした場合にはカスタマイズ処理したプロセッサエレメントの構成を示す定義ファイル１１１１を出力し、外部記憶装置１００８に記録する。ステップ１１０７は、図８の分類８１１〜８１３に対応する処理である。
【００４４】
次に、ステップ１１０８では、ＣＰＵ１００２は、クラスタ層のカスタマイズ処理を行い、カスタマイズ処理をした場合にはカスタマイズ処理したクラスタの構成を示す定義ファイル１１１２を出力し、外部記憶装置１００８に記録する。ステップ１１０８は、図８の分類８２１〜８２５に対応する処理である。
【００４５】
次に、ステップ１１０９では、ＣＰＵ１００２は、クラスタグループ層のカスタマイズ処理を行い、カスタマイズ処理をした場合にはカスタマイズ処理したクラスタグループの構成を示す定義ファイル１１１３を出力し、外部記憶装置１００８に記録する。ステップ１１０９は、図８の分類８３１〜８３３に対応する処理である。
【００４６】
次に、ステップ１１１０では、ＣＰＵ１００２は、ユーザインタフェースのカスタマイズ処理を行う。ステップ１１１０は、図８の分類８４１に対応する処理である。
【００４７】
上記のカスタマイズ処理が終了すると、ステップ１１０２へ戻り、ＣＰＵ１００２は、カスタマイズされたリコンフィギュラブル回路を用いて、ソースプログラムの機能を実現可能であるか否かを検証するために、ソースプログラムをコンパイルする。そのコンパイルにより、カスタマイズされたリコンフィギュラブル回路により実現できるか否かの結果が出力される。実現可能の結果が出力された場合には、ＣＰＵ１００２は、カスタマイズされたリコンフィギュラブル回路の設計データを生成し、外部記憶装置１００８に記録する。実現不可能の結果が出力された場合には、ステップ１１０４へ進み、再びカスタマイズ処理を行う。
【００４８】
図１２は、図１１のステップ１１０２のコンパイル処理の詳細を示すフローチャートである。ソースプログラム１２０１及び１２０３は、ユーザＣＰＵ７０１（図７）の処理を記述したプログラム、ソースプログラム１２０２はリコンフィギュラブル回路（図７のモジュール６０１及びユーザインタフェース７０２を含む）の処理を記述したプログラムである。ソースプログラム１２０１〜１２０３は、例えばＣ言語のプログラムである。
【００４９】
ステップ１２０４では、ＣＰＵ１００２は、リコンフィギュラブル回路のソースプログラム（関数）１２０２をロジカルコンパイルし、データ処理フローを可視化する。そのロジカルコンパイルの際に、ステップ１２０５では、ＣＰＵ１００２は、データ処理フローについて、規模及び面積の概算等の性能評価を行う。その後、ステップ１２０９では、ＣＰＵ１００２は、構成レポートを出力する。ステップ１２０９は、図１１のステップ１１０４に対応する。
【００５０】
次に、ステップ１２０６では、リコンフィギュラブル回路のソースプログラム１２０２について、ロジカルコンパイル後、フィジカルコンパイルを行い、各処理（関数）をプロセッサエレメントへマッピングする。そのフィジカルコンパイルの際に、ステップ１２０７では、ＣＰＵ１００２は、データ処理フロー及びプロセッサエレメント構成等を決め、プロセッサエレメントへのマッピングを行う。その後、ステップ１２０８では、ＣＰＵ１００２は、構成レポートを出力する。ステップ１２０８は、図１１のステップ１１０４に対応する。
【００５１】
次に、ステップ１２１０では、ＣＰＵ１００２は、フィジカルコンパイル後、コンフィギュレーションデータ１２１１を生成し、外部記憶装置１００８に記録する。
【００５２】
図１３は、図１１のステップ１１０６のカスタマイズ処理の詳細を示すフローチャートであり、図８に対応する。ステップ１３０１のプロセッサエレメント層カスタマイズ処理は図１１のステップ１１０７に対応し、ステップ１３１１のクラスタ層カスタマイズ処理は図１１のステップ１１０８に対応し、ステップ１３２１のクラスタグループ層カスタマイズ処理は図１１のステップ１１０９に対応し、ステップ１３３１のユーザインタフェースカスタマイズ処理は図１１のステップ１１１０に対応する。
【００５３】
まず、ステップ１３０１において、ＣＰＵ１００２は、プロセッサエレメント層カスタマイズ処理を行う。ステップ１３０１では、ステップ１３０２〜１３０７のループ処理を行う。ステップ１３０２は、ループ処理の始端であり、ＣＰＵ１００２は、コンパイル結果の構成レポート１１０５を基に必要なプロセッサエレメントを抽出し、各プロセッサエレメントのカスタマイズ処理を開始する。
【００５４】
ステップ１３０３では、ＣＰＵ１００２は、既存のプロセッサエレメントから演算の選択を行う。具体的には、基本的な演算機能を持つ、加算、減算、乗算、シフト、セレクタ、レジスタ、メモリ等のプロセッサエレメントから必要なプロセッサエレメントを選択し、デフォルト構成のプロセッサエレメントと差し替える。
【００５５】
次に、ステップ１３０４では、ＣＰＵ１００２は、演算機能のフィッティングを行う。具体的には、既存のプロセッサエレメントに必要な演算機能が無い場合、プロセッサエレメントのファンクションブロック９１２（図９）に対し演算子を定義し、ライブラリ化された演算関数や演算記号を決め、プロセッサエレメントの外部インタフェースを保ちながら、プロセッサエレメントの演算機能を実現し、デフォルト構成のプロセッサエレメントと差し替える。
【００５６】
次に、ステップ１３０５では、ＣＰＵ１００２は、個別プロセッサエレメントの作成を行う。具体的には、既存のプロセッサエレメントや演算機能フィッティングに当てはまらないプロセッサエレメントの場合は、新規の設計を行った後、既存のプロセッサエレメントとして組み込み、デフォルト構成のプロセッサエレメントと差し替える。
【００５７】
ステップ１３０６では、上記の３ステップ１３０３〜１３０５を必要なプロセッサエレメントについてループ処理を行い、終了すると、必要なプロセッサエレメント構成の定義ファイル１３０７を生成する。
【００５８】
次に、ステップ１３１１において、ＣＰＵ１００２は、クラスタ層カスタマイズ処理を行う。ステップ１３１１では、ステップ１３１２〜１３１７のループ処理を行う。ステップ１３１２は、ループ処理の始端であり、ＣＰＵ１００２は、コンパイル結果の構成レポート１１０５及び必要に応じてデータフローに応じて、必要なクラスタを抽出し、各クラスタのカスタマイズ処理を開始する。
【００５９】
ステップ１３１３では、ＣＰＵ１００２は、既存のクラスタからプロセッサエレメント構成を選択する。具体的には、必要なプロセッサエレメント数のまとまりをクラスタに割り当て、必要なクラスタ数と種別を振り分け、既存のプロセッサエレメント構成のクラスタを選び、デフォルト構成のクラスタと差し替える。
【００６０】
次に、ステップ１３１４では、ＣＰＵ１００２は、プロセッサエレメント構成を定義する。具体的には、既存のクラスタの種別に当てはまらない場合、クラスタ内に配置するプロセッサエレメントの種類と数を決め、プロセッサエレメント構成を定義し、デフォルト構成のクラスタと差し替える。
【００６１】
次に、ステップ１３１５では、ＣＰＵ１００２は、各プロセッサエレメントの必要なコンフィグレーションを定義する。具体的には、選択したプロセッサエレメントに対して必要なコンフィグレーションの最適化を行う。個別にプロセッサエレメントで使用する命令を確認し、不要な命令を抽出し、不要な命令のコンフィグレーションデータ線を削除する。
【００６２】
次に、ステップ１３１６では、ＣＰＵ１００２は、プロセッサエレメント間接続ネットワークを定義する。具体的には、プロセッサエレメント構成決定後、必要なプロセッサエレメント間接続を確認し、不要なプロセッサエレメント間ネットワーク４０３（図４）と必要なプロセッサエレメント間ネットワーク４０３を判定する。また、異なったネットワーク接続性が必要な場合は冗長度を加味する。ＣＰＵ１００２は、不要なプロセッサエレメント間ネットワーク４０３を削除する。
【００６３】
ステップ１３１７では、上記の４ステップ１３１３〜１３１６を必要なクラスタについてループ処理を行い、終了すると、必要なクラスタ構成の定義ファイル１３１８を生成する。
【００６４】
次に、ステップ１３２１において、ＣＰＵ１００２は、クラスタグループ層カスタマイズ処理を行う。ステップ１３２１では、ステップ１３２２〜１３２６のループ処理を行う。ステップ１３２２は、ループ処理の始端であり、ＣＰＵ１００２は、コンパイル結果の構成レポート１１０５を基に必要なクラスタグループを抽出し、各クラスタグループのカスタマイズ処理を開始する。
【００６５】
ステップ１３２３では、ＣＰＵ１００２は、既存のクラスタ構成から選択する。具体的には、必要なクラスタ構成と数を確認後、既存のクラスタグループと同一構成であるものを選択し、デフォルト構成のクラスタグループと差し替える。
【００６６】
次に、ステップ１３２４では、ＣＰＵ１００２は、クラスタ構成を定義する。具体的には、既存のクラスタグループに当てはまらない場合、クラスタの振り分けを行い、クラスタのまとまり（クラスタ群を構成）とグループ数を定義し、既存のクラスタグループと差し替える。
【００６７】
次に、ステップ１３２５では、ＣＰＵ１００２は、外部入出力ポートを定義する。具体的には、クラスタグループ間の接続とユーザインタフェースを介さない直接データを入力するような場合、必要データの入出力ポート数を算出後、入出力ポート数を定義する。
【００６８】
ステップ１３２６では、上記の３ステップ１３２３〜１３２５を必要なクラスタグループについてループ処理を行い、終了すると、必要なクラスタグループ構成の定義ファイル１３２７を生成する。
【００６９】
次に、ステップ１３３１において、ＣＰＵ１００２は、ユーザインタフェースカスタマイズ処理を行う。ステップ１３３１では、ステップ１３３２及び１３３３の処理を行う。具体的には、組み込み対象のシステムにインタフェースするためにカスタマイズする。カスタマイズするモジュールをインタフェースモジュールのみにすることにより接続性を柔軟に対応可能とすることができる。
【００７０】
ステップ１３３２では、ＣＰＵ１００２は、既存のインタフェースモジュールから選択する。具体的には、外部モジュールとの接続インタフェースを確認し、汎用インタフェースモジュールを割り当て、構築し、リコンフィギュラブル回路モジュールをユーザ回路に組み込む。
【００７１】
次に、ステップ１３３３では、ＣＰＵ１００２は、ユーザインタフェースを定義する。具体的には、個別ユーザインタフェースが必要な場合、ユーザインタフェースを仕様化し、インタフェースモジュールを設計する。設計後、ユーザインタフェースモジュールとして割り当て、構築し、リコンフィギュラブル回路モジュールをユーザ回路に組み込む。
【００７２】
上記の方法よりカスタマイズしたインタフェースモジュール（回路）７０２をリコンフィギュラブル回路モジュール６０１とユーザ回路モジュール７０１の間に配置し、双方のインタフェースを行う。
【００７３】
図１４は、本実施形態による設計装置の設計方法の処理例を示すフローチャートである。ステップ１４０１では、ＣＰＵ１００２は、システム設計のプログラムツール１４０２、アルゴリズム実装のプログラムツール１４０３、並びに既存ＲＴＬ（レジスタ転送レベル）設計データ及び新規機能追加のプログラムツール１４０４の要求を実現するため、図１１のステップ１１０２に対応し、ソースプログラムのコンパイルを行う。その後、ステップ１４０５及び１４０６へ進む。
【００７４】
ステップ１４０６では、ＣＰＵ１００２は、上記のコンパイル後、リコンフィギュレーション回路の設計処理を行う。ステップ１４０６は、ステップ１４０７〜１４０９，１４１５を有する。
【００７５】
ステップ１４０７では、ＣＰＵ１００２は、プリミティブモデルのプログラムツールにより、既存ＩＰ及び既存プロセッサエレメント等のプリミティブモデルの設計処理を行う。ステップ１４０８では、ＣＰＵ１００２は、ユーザファンクション記述のプログラムツールにより、ユーザファンクションブロック記述（フリップフロップを含まないロジック回路）を設計する。ステップ１４０９では、ＣＰＵ１００２は、ユーザプロセッサエレメント及びクラスタ設計のプログラムツールにより、標準プロセッサエレメント及びインタフェース等のユーザプロセッサエレメント及びクラスタを設計する。
【００７６】
ステップ１４１５は、図１１のステップ１１０６のカスタマイズ処理に対応し、クラスタのカスタマイズ処理及びプロセッサエレメントのカスタマイズ処理を含む。クラスタのカスタマイズ処理は、機能クラスタのカスタマイズ処理、及びクラスタグループ層の各クラスタの組み替え処理を含む。プロセッサエレメントのカスタマイズ処理は、新規プロセッサエレメントのカスタマイズ処理、及びクラスタ層の各プロセッサエレメントの組み替え処理を含む。上記の新規プロセッサエレメントのカスタマイズ処理は、プロセッサエレメント内の一部のロジック回路の差し替え処理、及びプロセッサエレメントの設計、モジュールの差し替え処理を含む。
【００７７】
ステップ１４１５の処理により、テンプレートライブラリ１４１６及びＲＴＬ設計データライブラリ１４１７が生成され、外部記憶装置１００８に記録され、データベース化される。
【００７８】
ステップ１４０５では、ＣＰＵ１００２は、検証シナリオの生成処理を行う。具体的には、ＣＰＵ１００２は、ソースプログラム（Ｃ言語）内の関数（例えばｘ＝ａ＋ｂ＋ｃ）を検証するために、ａ＝１，ｂ＝２，ｃ＝３のときにはｘ＝６になるというシナリオを生成する。
【００７９】
ステップ１４１０では、ＣＰＵ１００２は、ステップ１４０５からＣ言語の検証シナリオを入力し、ステップ１４０６からシステムＣ（Ｃ＋＋）の設計データを入力する。ＣＰＵ１００２は、設計データを基にモデリングを行い、検証シナリオを用いてモデル検証を行う。そして、ＣＰＵ１００２は、モデル検証結果１４１１を出力する。
【００８０】
次に、ステップ１４１２では、ＣＰＵ１００２は、上記のモデルを基にカスタマイズＲＴＬ設計データを生成する。
【００８１】
次に、ステップ１４１３では、ＣＰＵ１００２は、ＲＴＬ設計データ及び検証シナリオを基にシミュレーション及び検証を行う。
【００８２】
次に、ステップ１４１４では、ＣＰＵ１００２は、検証シナリオ、モデル検証結果１４１１、並びにステップ１４１３のシミュレーション及び検証の結果を基にモデル及びＲＴＬ設計データの検証結果が一致しているか否かの検証を行う。一致していれば、リコンフィギュラブル回路の設計データの生成が完了する。
【００８３】
以上のように、本実施形態によれば、論理回路設計手法（デザインメソトロジ）において、プログラミングなど抽象化された言語からＬＳＩを設計したものが、コンフィグレーションデータを変えるだけでＬＳＩ機能を変更することができる。通常、ＣＰＵ等で演算される実行プログラムを最適化された論理回路に配置（プロセッサエレメントにマッピング）可能となり、性能を向上することができる。また、プログラムされたアプリケーションを論理演算回路に配置することが可能であり、論理回路手法としての設計工数の効率化に寄与する。カスタマイズされた事前設計評価により論理回路に対してコンフィグレーションデータの書き替えで実現できる論理回路に対して必ず要求満たすことができる。
【００８４】
本実施形態の設計方法は、処理を行う複数のプロセッサエレメント１０２を含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力ステップと、前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメント１０２を修正した設計データを生成する第１の生成ステップ８０１とを有する。
【００８５】
第１の生成ステップ８０１は、前記リコンフィギュラブル回路内の少なくとも１つのプロセッサエレメント１０２を他のプロセッサエレメント１０２に差し替えた設計データを生成するステップ８１１を有する。
【００８６】
第２の生成ステップ８０２は、前記リコンフィギュラブル回路内の複数のプロセッサエレメント１０２の単位をクラスタ４０１とし、前記リコンフィギュラブル回路内の前記クラスタ４０１の単位で修正した設計データを生成する。
【００８７】
第２の生成ステップ８０２は、前記リコンフィギュラブル回路内の少なくとも１つのクラスタ４０１を他のクラスタ４０１に差し替えた設計データを生成するステップ８２１を有する。
【００８８】
第３の生成ステップ８０３は、前記リコンフィギュラブル回路内の複数のクラスタ４０１の単位をクラスタグループ５０１とし、前記リコンフィギュラブル回路内の前記クラスタグループ５０１の単位で修正した設計データを生成する。
【００８９】
第３の生成ステップ８０３は、前記リコンフィギュラブル回路内の少なくとも１つのクラスタグループ５０１を他のクラスタグループ５０１に差し替えた設計データを生成するステップ８３１を有する。
【００９０】
第４の生成ステップ８０４は、前記リコンフィギュラブル回路のインタフェース回路７０２を修正した設計データを生成する。
【００９１】
本実施形態の設計装置は、処理を行う複数のプロセッサエレメント１０２を含むリコンフィギュラブル回路のデフォルト構成の設計データを入力する入力部と、前記デフォルト構成のリコンフィギュラブル回路内の少なくとも１つのプロセッサエレメントを修正した設計データを生成する第１の生成部とを有する。
【００９２】
本実施形態のリコンフィギュラブル回路は、処理を行う複数のプロセッサエレメント１０２の単位をクラスタ４０１とし、前記クラスタ４０１を複数有する。さらに、リコンフィギュラブル回路は、複数のクラスタ４０１の単位をクラスタグループ５０１とし、前記クラスタグループ５０１を複数有する。
【００９３】
本実施形態によれば、リコンフィギュラブル回路の構成の自由度が向上し、種々の機能を実現することができる。
【００９４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施形態によるデフォルト構成のリコンフィギュラブル回路モジュールの構成例を示す図である。
【図２】本実施形態による４個のリコンフィギュラブル回路モジュールの構成例を示す図である。
【図３】本実施形態によるカスタマイズ可能なリコンフィギュラブル回路の構成例を示す図である。
【図４】クラスタの構成例を示す図である。
【図５】クラスタグループの構成例を示す図である。
【図６】リコンフィギュラブル回路モジュールの構成例を示す図である。
【図７】リコンフィギュラブル回路モジュール、ユーザロジック回路及びユーザインタフェース回路の構成例を示す図である。
【図８】リコンフィギュラブル回路のカスタマイズの分類を示す図である。
【図９】プロセッサエレメントのファンクションブロックフィッティングの分類を説明するための図である。
【図１０】リコンフィギュラブル回路の設計装置を構成するコンピュータのハードウェア構成例を示すブロック図である。
【図１１】図１０の設計装置の設計方法の処理例を示すフローチャートである。
【図１２】図１１のコンパイル処理の詳細を示すフローチャートである。
【図１３】図１１のカスタマイズ処理の詳細を示すフローチャートである。
【図１４】本実施形態による設計装置の設計方法の処理例を示すフローチャートである。
【符号の説明】
【００９６】
１０２  プロセッサエレメント
４０１  クラスタ
５０１  クラスタグループ
１００１  バス
１００２  ＣＰＵ
１００３  ＲＯＭ
１００４  ＲＡＭ
１００５  ネットワークインタフェース
１００６  入力装置
１００７  出力装置
１００８  外部記憶装置
【図１】
2010152713.tif 000003
【図２】
2010152713.tif 000004
【図３】
2010152713.tif 000005
【図４】
2010152713.tif 000006
【図５】
2010152713.tif 000007
【図６】
2010152713.tif 000008
【図７】
2010152713.tif 000009
【図８】
2010152713.tif 000010
【図９】
2010152713.tif 000011
【図１０】
2010152713.tif 000012
【図１１】
2010152713.tif 000013
【図１２】
2010152713.tif 000014
【図１３】
2010152713.tif 000015
【図１４】
2010152713.tif 000016