LSIの配置配線の決定方法および決定プログラム
【課題】 LSIの処理エレメントの入出力の制限を考慮して、適切に、データフロー上の処理エレメントを、LSI上の処理エレメントに割り当てる。
【解決手段】 データフロー上の処理エレメントの属性、および、処理エレメント間を接続する信号線の情報を含むデータフローファイル100を記憶装置12から読み出して、データフローファイル100中の信号線の情報を参照して、信号線ごとに、信号線に出力するデータフロー上の処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントとを特定して、信号線ごとに、特定された処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップ101を、記憶装置12中に生成する。
【解決手段】 データフロー上の処理エレメントの属性、および、処理エレメント間を接続する信号線の情報を含むデータフローファイル100を記憶装置12から読み出して、データフローファイル100中の信号線の情報を参照して、信号線ごとに、信号線に出力するデータフロー上の処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントとを特定して、信号線ごとに、特定された処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップ101を、記憶装置12中に生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リコンフィグラブルLSIにおける配置配線の決定方法および配置配線の決定プログラムに関する。
【背景技術】
【0002】
近年、LSIを構成する回路の一部をソフトウェアにより再構成できるハードウェアが提供されている。このようなLSIはリコンフィグラブル(再構成可能)LSIと称されている。リコンフィグラブルLSIの設計者は、たとえば、C++に類似するハードウェア記述言語を用いて、LSIを構成する、それぞれが属性や機能が定義された演算ユニットと、演算ユニット間の接続とを規定したデータフローダイヤグラムを作成し、作成したデータを、ハードディスクなどの記憶装置に記憶する。本明細書において、データフローダイヤグラムのデータを記憶したファイルを、データフローファイルと称する。データフローファイルにおいては、特定の属性や機能を有する演算ユニットおよび演算ユニット間の接続が規定されているのみであり、したがって、データフローファイルにおける演算ユニット(データフロー上の演算ユニット)と、実際のLSI上の演算ユニットとの間の対応付けや、データフローファイルにおける演算ユニット間の接続(データフロー上の接続)と、実際のLSI上のバスとの間の対応付けは完了していない。したがって、データフロー上の演算ユニットと実際のLSI上の演算ユニットとの対応付け、および、データフロー上の接続と、実際のLSI上のバスとの対応付けを行う配置配線の決定が必要である。
【0003】
たとえば、特許文献1には、最適配置したい信号(演算ユニット値の接続)に優先順位を付け、対象回路のネットリストに基づき、優先信号順に配置配線を決定する方法が提案されている。
【特許文献1】特開平8−87537号公報
【特許文献2】国際公開WO03/007155号公報
【非特許文献1】榊原泰徳、佐藤友美著、「DAPDNAのデバイスアーキテクチャ」、デザインウェーブマガジン(Design Wave Magazine)2004年8月号、「特集 動的再構成可能デバイス その素性と実力 第2章」、CQ出版社、2004年8月、第30頁〜第38頁
【発明の開示】
【発明が解決しようとする課題】
【0004】
さらに、近年、LSIを構成する回路の一部をソフトウェアによりリアルタイムに再構成できるダイナミック・リコンフィグラブルLSIが提供されている。たとえば、特許文献1には、再構成する基本単位を、ALUなどのある程度の規模の演算機能を備えた演算ユニットである処理エレメント(PE)として、それぞれが特定の属性や機能を有する複数種類のPEをマトリクス状に配置し、再構成に要する時間を短縮することができるようなダイナミック・リコンフィギュラブルLSIが開示されている。また、非特許文献1に開示されたダイナミック・リコンフィギュラブルLSIにおいては、LSIが複数のセグメントに分割され、各セグメントに決められた属性および機能を有する所定数のPEが配置されている。したがって、非特許文献1に開示されたダイナミック・リコンフィギュラブルLSIについては、セグメントごとに、データフロー上のPEと、実際のセグメント上のPEとの対応付けおよびデータフロー上のPE間の接続と、当該セグメント上のバスとの対応付けを行い、この対応付けを示す情報を、配置配線情報として、ハードディスクなどの記憶装置に記憶する。
【0005】
各セグメント上のPEの数には限りがあり(たとえば、64個)かつ、セグメント上のバスの数にも限りがある(たとえば、X入出力のために64本)。さらに、各PEに入力として接続可能なバスおよびPEから出力として接続可能なバスも限られている。したがって、限られたLSI上のPEやバスのリソースに、データフロー上のPEや接続を適切に割り当てる配置配線の決定が求められる。
【0006】
本発明は、リコンフィグラブルLSIの処理エレメントの入出力の制限を考慮して、適切に、データフロー上の処理エレメントを、LSI上の処理エレメントに割り当て、かつ、データフロー上の処理エレメント間の接続を、LSI上のバスに割り当てることができる配置配線の決定方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の目的は、2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援する方法であって、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を備えたことを特徴とする方法により達成される。
【0008】
好ましい実施態様においては、前記バスリソースリクエストマップを生成するステップが、前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を含む。
【0009】
より好ましい実施態様においては、前記バスリソースリクエストマップを作成するステップが、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを含む。
【0010】
好ましい実施態様において、前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造である。
【0011】
別の好ましい実施態様においては、さらに、前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを備えている。
【0012】
また、本発明の目的は、上述したようなバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定する方法であって、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を備えたことを特徴とする方法によっても達成される。
【0013】
好ましい実施態様においては、前記バスリソースを更新するステップが、前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含む。
【0014】
また、好ましい実施態様においては、前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップを備え、前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力する。
【0015】
別の好ましい実施態様においては、前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含む。
【0016】
また、本発明の目的は、2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援するために、コンピュータにより読み出し可能なプログラムであって、
前記コンピュータに、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を実行させることを特徴とするプログラムにより達成される。
【0017】
好ましい実施態様においては、前記バスリソースリクエストマップを生成するステップにおいて、前記コンピュータに、
前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を実行させる。
【0018】
より好ましい実施態様においては、前記バスリソースリクエストマップを作成するステップにおいて、前記コンピュータに、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを実行させる。
【0019】
好ましい実施態様において、前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造である。
【0020】
別の好ましい実施態様においては、さらに、前記コンピュータに、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを実行させる。
【0021】
また、本発明の目的は、上述したバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定するために、コンピュータにより読み出し可能なプログラムであって、前記コンピュータに、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を実行させることを特徴とするプログラムによっても達成される。
【0022】
好ましい実施態様においては、前記バスリソースを更新するステップにおいて、前記コンピュータに、
前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させる。
【0023】
また、好ましい実施態様においては、前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップと、
前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力するステップと、を実行させる。
【0024】
別の好ましい実施態様においては、前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させる。
【発明の効果】
【0025】
本発明によれば、リコンフィグラブルLSIの処理エレメントの入出力の制限を考慮して、適切に、データフロー上の処理エレメントを、LSI上の処理エレメントに割り当て、かつ、データフロー上の処理エレメント間の接続を、LSI上のバスに割り当てることができる配置配線の決定方法およびプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【0026】
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本実施の形態にかかる配置配線決定システム10の概略を示すブロックダイヤグラムである。本実施の形態においては、記憶装置12には、後述するように、特許文献1および非特許文献2に記載された、動的再構成可能なLSI(以下、単に「LSI」と称する)において、配置配線をするための基礎となるデータフローファイル100が設けられている。非特許文献1に記載されるように、本実施の形態において、配置配線が決定されるLSIは、6つのセグメントに分割され、かつ、それぞれのセグメントには、決められた属性および機能を有する、決められた数の処理エレメント(PE)が配置されている。
【0027】
また、配置配線決定システム10は、データフローファイル100中の、セグメントごとのコンフィギュレーションデータを参照して、記憶装置12中にバスリソースリクエストマップ101を作成するマップ作成部14と、所定のルールに基づいてバスリソースリクエストマップ101を更新するマップ更新部16とを備えている。さらに、本実施の形態にかかる配置配線決定システム10は、コンフィギュレーションデータに含まれるデータフロー上の処理エレメント(PE)を、パーティション内に配置されたLSI上の処理エレメントのうち、所定の位置にあるものに割り当てると仮定して、さらに他の所定のルールに基づいて、コンフィギュレーションデータに含まれるデータフロー上のPEの、セグメント中の具体的な位置を決定し、かつ、データフロー上のPE間の信号線を、LSI上の実際のバスに割り当て、データフロー上のPEのLSI上の位置およびデータフロー上の信号線に割り当てられたバスの位置を含む配置情報/接続情報ファイル102を記憶装置12中に生成し、かつ、バスリソースリクエストマップ101を更新する配置処理部18を備えている。なお、本実施の形態において、処理エレメントとはLSIの演算単位である。
【0028】
バスリソースリクエストマップ101、および、配置処理部18による処理により得られる、コンフィギュレーションデータにおける演算回路の、セグメント中の具体的なPEの位置の情報(配置情報)およびPE間の接続情報を含む配置情報/接続情報ファイル102は、記憶装置12に記憶される。さらに、記憶装置12には、マップ作成部14によりバスリソースリクエストマップが作成される際に参照されるソースPE・デスティネーションPEファイル103が記憶される。このソースPE・デスティネーションPEファイル103については後述する。
【0029】
本実施の形態にかかるLSIは、複数のセグメントに分割されている。図2は、本実施の形態にかかるLSIの6つのセグメントの例を示す図である。図2に示すように、それぞれのセグメントには、64個(セグメント1、セグメント3〜5)、或いは、60個(セグメント0、セグメント2)のPEが設けられている。各セグメントには、あらかじめ決められた機能を果たすPEが決められた位置に配置される。なお、本実施の形態のセグメントにおいて、横方向に、図2における左から第0列、第1列、・・・、と称し、縦方向に図2における上から第0行、第1行、・・・と称する。図2において、「LDB」、「RAM」、「DLE」などが、それぞれ、定められた属性および機能を有するPEである。
【0030】
たとえば、セグメント0の第0行には、第1行には、LSIの外部からのデータを受け入れる4つのロードバッファ(LDB)が配置される。ロードバッファは、そのサイズから、それぞれ、横方向に2列分のサイズを持つ。セグメント0の第1行には、第0列から、「RAM」、4つの「C16L」、2つの「C16E」および「DLH」という8つのPEが配置されている。たとえば、「RAM」は、16KバイトのLSIの内部メモリ、「C16L」や「C16E」は、アドレス生成用のPE、「DLH」は、図2における水平方向に位置する他のセグメントに出力可能な遅延要素である。詳細な説明は省略するが、各セグメントには、それぞれがあらかじめ定められた機能を有するPEが決められた場所に配置されている。そのほか、「EX*(*:C,S,R,M)」は、それぞれ、算術演算、論理演算、比較などの機能を有する演算ユニットである。
【0031】
PEの間を接続するためには、4種類のデータバスが存在する。本実施の形態においては、PEは、図3に示すように、X入力およびY入力の2つのデータ入力(dixおよびdiy)、CX入力およびCY入力の2つのキャリー入力(cixおよびciy)、X出力およびY出力の2つのデータ出力(doxおよびdoy)、並びに、CX出力およびCY出力の2つのキャリー出力(coxおよびcoy)が可能である。あるPEのX出力、Y出力は、それぞれ、1以上の他のPEのX入力、Y入力に接続され得る。同様に、PEのCX出力、CY出力は、それぞれ、1以上の他のPEのCX入力、CY入力に接続され得る。X出力とX入力とを接続するバスを、Xデータバス、Y出力とY入力とを接続するバスをYデータバス、CX出力とCX入力とを接続するバスをXキャリーバス、CY出力とCY出力とを接続するバスを、Yキャリーバスと称する。
【0032】
図4は、XデータバスおよびYデータバスを模式的に示す図、図5は、XキャリーバスおよびYキャリーバスを模式的に示す図である。図4に示すように、本実施の形態においては、第0列、第1列、・・・のPE群の両側に、その列のXデータバスおよびYデータバスが設けられている。たとえば、左端の第0列のPE群(符号401、402、・・・参照)の(図4における)左側には、8つのラインからなる第0列のXデータバス(符号411参照)が配置され、PE群の(図4における)右側には、8つのラインからなる第0列のYデータバスが配置されている(符号412参照)。他の列(第n列)のPE群についても、その両側に、それぞれ8ラインからなる第n列のXデータバスおよびYデータバスが配置される。図5に示すように、キャリーバスも同様に、第n列のPE群(たとえば符号501、502、・・・参照)について、(図5における)左側には8つのラインからなる第n列のXキャリーバスが配置され(たとえば符号511参照)、(図5における)右側には8つのラインからなる第n列のYキャリーバスが配置される(たとえば符号512参照)。
【0033】
図6は、LSI上の実際のPEにおけるバスの入出力の制限を説明する図である。本実施の形態においては、PE603は、データバスとの接続のために、PEコンフィギュレーション部600およびマルチプレクサコンフィギュレーション部610を有する。
【0034】
図6に示すように、Xデータバスの各ラインは、セレクタ601を介して、PE603のX入力(dix)に接続される。また、Yデータバスの各ラインは、セレクタ602を介して、PE603のY入力(diy)に接続される。PE603のX入力(dix)は、同じ列のXデータバスの何れかのラインに限られ、また、PE603のY入力(yix)も、同じ列のYデータバスの何れかのラインに限られる。その一方、図6には明瞭に示されていないが、本実施の形態においては、PE603のX出力(dix)およびY出力(diy)は、それぞれ、マルチプレクサ611、612を介して、Xデータバス、Yデータバスの、PEが位置する行、或いは、予め定められた隣接する行に位置する他のPEに接続可能なラインに接続され得る。つまり、第n列のPEは、各列のデータバスの第nラインと、第(n−1)ライン或いは第(n+1)ラインに接続可能である。ここで、バスの番号を示すライン番号は、行番号と等価である。
【0035】
図6における符号613、614は、それぞれ、他のPEからのX出力およびY出力を示している。
【0036】
本実施の形態においては、PEの出力については以下のように定められている。
【0037】
第0行のPE:第0ライン、第1ライン
第1行のPE:第0ライン、第1ライン
第2行のPE:第2ライン、第3ライン
第3行のPE:第2ライン、第3ライン
第4行のPE:第4ライン、第5ライン
第5行のPE:第4ライン、第5ライン
第6行のPE:第6ライン、第7ライン
第7行のPE:第6ライン、第7ライン
図示はしないが、キャリーバスについても、同様にPEの入出力の制限がある。
【0038】
PEの入出力という観点からは、上述したような接続の制限がある。その一方、データバスの各ラインについても、PEの入出力の制限から、当該ラインに出力することができるPE或いは当該ラインから入力することができるPEを決めることができる。
【0039】
以下、セグメント1を例にして、第n列第mラインのバスに接続可能なPEを説明する。第n列第mラインのバスには、当該バスにデータを出力するPE(これを、「ソースPE」と称する。)と、当該バスからのデータを入力するPE(これを、「デスティネーションPE」と称する。)とが存在し得る。前述したように、第m行のPEは、mが偶数であれば、第mラインおよび第(m+1)ラインに出力することができ、mが奇数であれば、第(m−1)ラインおよび第mラインに出力することができる。
【0040】
したがって、第mラインにおけるソースPEは、
第mラインおよび第(m+1)ラインに位置するPE(m:偶数)
第(m−1)ラインおよび第mラインに位置するPE(m:奇数)
となる。
【0041】
その一方、第n列のPEは、第n列のバスにのみ接続することができる。そこで、第n列のそれぞれのラインにおけるデスティネーションPEは、第n列のPEとなる。
【0042】
たとえば、第6列第2ラインのバスを考える。図7(a)において、デスティネーションPEとなり得るPE群を符号701で示し、ソースPEとなり得るPE群を符号702で示す。つまり、基本的には、第6列第2ラインのバスについて、ソースPEとなり得るPEは、第2列および第3列のPEであり、また、デスティネーションPEとなり得るPEは、第6列のPEである。なお、ソースPE中、第7列第3行のDLH(水平方向への外部出力のための遅延素子)が除外されているのは、本実施の形態において、PEが、DLHおよびDLXからのデータを入力する場合には、同じ行のDLH或いはDLXからに限られるという制約があるからである。
【0043】
また、第0列第0ラインのバスを考える。図7(b)において、デスティネーションPEとなり得るPE群を符号711で示し、ソースPEとなり得るPE群を符号712で示す。基本的には、第0列第0ラインのバスについて、ソースPEとなり得るPEは、第0行および第1行のPEであり、また、デスティネーションPEとなり得るPEは、第0列のPEである。ただし、第0列第0行のDLVは、垂直方向に外部からのデータ入力のための遅延要素であるため、そもそもデスティネーションPEとなることができないので除外される。
【0044】
本実施の形態においては、あらかじめ、各セグメントについて、第n列第mライン(n:0〜7、m:0〜7)のそれぞれにおけるソースPEとデスティネーションPEのリストであるソースPE・デスティネーションPEファイルを記憶装置12に記憶しておく。ソースPE・デスティネーションPEファイル103においては、図8に示すように、第n列第mラインにおいて候補となり得るPEの名称が格納されている。
【0045】
以下、本実施の形態にかかる配置配線決定システム10において実行される処理について説明する。図9は、本実施の形態にかかる配置配線決定システムにおける配置配線処理の概略を示すフローチャートである。図9に示すように、配置配線決定システム10のマップ作成部14は、あるセグメントに割り当てるべきパーティションのコンフィギュレーションデータを、記憶装置12から読み出す。コンフィギュレーションデータは、パーティションを構成する、データフロー上のPEの各々の属性および機能、並びに、それぞれのPE間の接続を示す特定する情報を含む。図10は、あるコンフィギュレーションデータに基づくデータフローを示す図である。図10に示すように、このコンフィギュレーションデータに基づくと、データフローにおいて、ソースPEであるDLVのX出力とデスティネーションPEであるRAMのX入力との間は接続され、その信号線はX1と名付けられている。また、ソースPEである同じDLVのY出力とデスティネーションPEであるEXRのY入力との間が接続され、その信号線はY1と名付けられている。このように、コンフィグレーションデータにおいては、PEを特定する情報(たとえば、PEに付されたIDなど)と、PE間を接続する信号線名(Xn、Yn(n=1、2、・・・)が含まれる。なお、図10の例では、PE間のX出力/X入力およびY出力/Y入力について示したが、コンフィギュレーションデータには、キャリーX(CX)出力/CX入力、キャリーY(CY)出力/CY入力の信号線についての情報も含まれる。
【0046】
マップ作成部14は、記憶装置12に記憶されたソースPE・デスティネーションPEファイル103を参照して、信号線Xn、Ynごとに、信号線が割り当てられる可能性のある、バスのラインにビット「1」をセットするようなバスリソースリクエストマップを作成する(ステップ902)。また、マップ作成部14は、キャリーの信号線CXn、CYnについても同様にバスリソースリクエストマップを作成する。作成されたバスリソースリクエストマップ101は、記憶装置12中に記憶される。
【0047】
図11(a)、(b)は、それぞれ、図10のデータフローの例において、信号線Xn、Ynについてのバスリソースリクエストマップを示す図である。図11(a)、(b)に示すように、図10に示すデータフローにかかるバスリソースリクエストマップは、信号線X1〜X5および信号線Y1〜Y5のそれぞれが、第0列〜第7列のバスのラインを使用可能であれば、当該ラインに相当するビットに「1」がセットされる。たとえば、図11(a)を参照すると、信号線X1は、第0列の第0ラインおよび第1ラインを使用可能であることがわかる。また、他の列(第1列〜第7列)までは使用不能であることがわかる。同様に、信号線X2は、第1列〜第6列の第0ラインおよび第1ラインを使用可能であることがわかる。
【0048】
以下、マップ作成部14によるマップ作成についてより詳細に説明する。マップ作成部14は、初期的なバスリソースリクエストマップを作成して、全てのビットに「0」をセットする(ステップ1200)。コンフィギュレーションデータ中の、ある信号線(たとえば、X1を考える。)のデータフロー上のソースPE(DLV)およびデスティネーションPE(RAM)を特定する(ステップ1201)、次いで、マップ作成部14は、パラメータを初期化した後に(ステップ1202)、ソースPE・デスティネーションPEファイル103を参照して、ステップ1201で特定されたデータフロー上のソースPEおよびデスティネーションPEが、第n列第m行のソースPEおよびデスティネーションPEのリストに存在するか否かを判断する(ステップ1203、1204)。リスト中にソースPEおよびデスティネーションPEの双方が存在する場合には(ステップ1204でイエス(Yes))、バスリソースリクエストマップ中、第n列第mラインのビットに「1」をセットする(ステップ1205)。マップ作成部14は、第0列第0行から第7列第7行の全てについて、ステップ1203、1204の判断を行う(ステップ1205〜ステップ1209参照)。マップ作成部14は、ステップ1201〜ステップ1210の処理を、全ての信号線(X、Y、CXおよびCY)について実行する(ステップ1210、1211参照)。
【0049】
たとえば、信号線X1について、データフロー上のソースPEはDLVであり、デスティネーションPEはRAMである。ソースPE・デスティネーションPEファイル103を参照すると、第0列第0行には、ソースPEとしてDLVがリストされ、かつ、デスティネーションPEとしてRAMがリストされている。したがって、バスリソースリクエストマップファイル中、第0列第0ラインに対応するビットが「1」にセットされる。また、第0列第1行にも、ソースPEとしてDLVがリストされ、かつ、デスティネーションPEとしてRAMがリストされている。したがって、バスリソースリクエストマップファイル中、第0列第1ラインに対応するビットが「1」にセットされる。
【0050】
バスリソースリクエストマップ101が出来上がると、マップ更新部16は、以下に詳細に説明する複数のルールを用いて、バスリソースリクエストマップファイル101を更新し、また、その更新にともなって、信号線のバスへの割り当てを決定していく。まず、マップ更新部16は、バスリソースリクエストマップ101を参照して、第1のルールを適用する(ステップ903)。第1のルールとは、バスリソースリクエストマップ中、ある信号線について、第0列〜第7列の全てのラインに関するビットが「0」である場合に、その信号線が配置不可能であることである。たとえば、図13の例において、信号線X3について、全ての列のラインに関するビットが「0」となっている(符号1301参照)。これは、信号線X3を、実際のLSI中の何れかの列のラインに割り当てることが不可能であることを示している。
【0051】
したがって、マップ更新部16は、それぞれの信号線について、全ての列のラインに対応するビットが「0」であるか否かを判断し、何れかの信号線について、全てのビットが「0」であれば、ステップ904でイエス(Yes)と判断され、処理は終了する。処理の終了に際して、データフロー上のPEのLSI上のPEへの割り当て、および、データフロー上の信号線のLSI上のバスへの割り当てが不可能であることを示す情報を出力する。この情報は、たとえば、配置配線決定システム10の表示装置(図示せず)の画面上に表示される。このように、配置配線が不可能であると判断された場合には、パーティションのコンフィグレーションのデータ自体の変更が必要となる。
【0052】
ステップ904でノー(No)と判断された場合には、マップ更新部16は、第2のルールを適用して、必要に応じて、バスリソースリクエストマップを更新する(ステップ905)。第2のルールとは、バスリソースリクエストマップ中、ある信号線について、列0〜7のラインに対応するビットが1つだけ「1」であるときには、その信号線は、ビットが「1」となったラインに割り当てるというものである。図14に示すように、マップ更新部16は、バスリソースリクエストマップ中、ある信号線についてのビットを参照して(ステップ1401)、「1」がセットされているビットが1つだけの場合には(ステップ1402でイエス(Yes))、そのビットの値を更新不可能であることを示す情報を、当該ビットに付加する(ステップ1403)。この情報として、たとえば、各ビットに対応付けられた更新不可能を表すフラグ(更新不可能フラグ)を利用することができ、記憶装置中に設けられたフラグ領域において、該当するフラグを「1」にセットすればよい。
【0053】
次いで、マップ更新部16は、バスリソースリクエストマップを参照して、そのビットと、同一列で同一ラインのビットでその値が「1」であるものを探す(ステップ1404)。値が「1」であるビットが見出され(ステップ1405でイエス(Yes))、かつ、そのビットについて、更新不可能フラグがセットされていない場合には(ステップ1406でノー(No))、マップ更新部16は、そのビットの値を「0」にする(ステップ1407)。
【0054】
なお、ステップ1404でイエス(Yes)と判断され、かつ、そのビットについて更新不可能フラグがセットされている場合(ステップ1406でイエス(Yes))には、1つのバスを複数の信号線が使用せざるを得ないという、現実に配線不可能な状態となるため、処理を終了して、パーティションのコンフィギュレーションデータ自体の作成に戻る。また、マップ更新部16は更新後のバスリソースリクエストマップについて、第1のルールを適用して、それぞれの信号線について、全ての列のラインに対応するビットが「0」であるか否かを判断し(ステップ1408)、何れかの信号線について、全てのビットが「0」であれば(ステップ1409でイエス(Yes))、同様に現実に配線不可能な状態となるため、処理を終了して、パーティションのコンフィギュレーションデータ自体の作成に戻る。この場合にも、配線が不可能であることを、たとえば、表示装置の画面上に表示する。以下、配線が不可能であると判断された場合には、同様の処理が実行されるが、説明は省略する。マップ更新部16は、ステップ1401〜ステップ1409の処理を、全ての信号線について実行する(ステップ1410、1411参照)。
【0055】
図15(a)に示す例において、信号線Y4については、バスリソースリクエストマップにおいて、第3列第4ラインのビットのみが「1」となっている(符号1501参照)。したがって、信号線Y4の第3列第4ラインには更新不可能フラグがセットされる。また、図15(b)に示すように、他の信号線について、バスリソースリクエストマップ中、同一列同一ラインで「1」となっているビットがあれば、このビットの値が「0」となる(符号1502参照)。
【0056】
なお、バスリソースリクエストマップにおいて、たとえば、第n列第mラインに沿ってビットの値を参照した場合に、1つの信号線についてのみ、値が「1」であったとする。この場合には、この信号線には、第n列第mラインのバスを割り当てても良いことを意味している。
【0057】
次に、マップ更新部16は、第3のルールを適用して、バスリソースリクエストマップを更新する(ステップ906)。第3のルールにおいては、パーティションのコンフィグレーションデータに示されるそれぞれのPEについて、その入力の信号線に着目して、バスリソースリクエストマップ中、各信号線の何れかについて、第n列のビットの値が全て「0」である場合には、その列にPEを配置できないと判断される。
【0058】
より詳細には、図16に示すように、マップ更新部16は、あるPEに着目して、そのPEのX入力、Y入力、CX入力およびCY入力となる信号線について、バスリソースリクエストマップの部分を取得する(ステップ1601)。次いで、処理用のパラメータの初期化(ステップ1602)の後、マップ更新部は、取得したバスリソースリクエストマップの部分中、信号線の何れかについて、第n列のビットがすべて「0」であるか否かを判断する(ステップ1603)。何れかの信号線について第n列のビットの全てが「0」である場合には(ステップ1604でイエス(Yes))、他の信号線についても、第n列のビットを全て「0」にする(ステップ1605)。ここでも、更新不可能フラグが「1」であるようなビットが存在すれば(ステップ1607でイエス(Yes))、配線が不可能な状態であるため、パーティションのコンフィギュレーションデータ自体の再度作成が必要となる。ステップ1604〜ステップ1606については、第0列から第7列の全てについて実行される(ステップ1607、1608参照)。
【0059】
その後、マップ更新部16は、再度第1のルールを適用して(ステップ1609)、全てのビットが「0」であるような信号線が存在するかどうかを判断する(ステップ1610)。ステップ1609でイエス(Yes)と判断された場合にも、配線が不可能な状態であるため、パーティションのコンフィギュレーションデータ自体の再度作成が必要となる。マップ更新部16は、ステップ1601〜1610の処理を、すべてのPEについて実行する(ステップ1611、1612参照)。
【0060】
たとえば、図17(a)に示す例において、あるPEのX入力、Y入力、CX入力およびCY入力として、それぞれ、信号線X3、Y2、CX6、および、CY5が与えられ、かつ、バスリソースリクエストマップの各信号線に関する部分が、図17(b)に示すようなものであったとする。この例では、キャリー入力CX6の第2列、および、X入力X3の第4列のビットが全て「0」である。したがって、図17(c)に示すように、バスリソースリクエストマップの部分において、第2列のビットおよび第4列のビットが「0」にされる。
【0061】
次いで、配置配線処理部18は、記憶装置12に記憶されたパーティションのコンフィグレーションデータから、データフロー上のPEの情報を取得し、また、取得したPEの属性および機能を参照して、データフロー上のPEを、実際のLSIのセグメント上の候補位置に配置する(つまり、データフロー上のPEを、当該候補位置のLSI上のPEに配置する)と仮定して、当該位置を示す情報(列番号および行番号)を記憶装置12に一時的に記憶する(ステップ908)。たとえば、コンフィグレーションデータ中のデータフロー上のPEがEXMであれば、当該EXMは、第1列ないし第5列の、第2行または第6行、或いは、第6列の第1行、第2行、第5行或いは第6行の何れかを候補位置とすることができる。本実施の形態においては、候補位置は、列番号の小さい順でかつ行番号が小さい順に決められる。ついで、マップ更新部16は、第4のルールを適用して、必要に応じて、バスリソースリクエストマップを更新する(ステップ908)。
【0062】
図18および図19は、第4のルールの適用処理をより詳細に示すフローチャートである。図18に示すように、マップ更新部16は、PEの候補位置の列番号および行番号に基づいて、入力側の信号線が割り当てられるバスの列番号、および、出力側の信号線が割り当てられるバスのライン番号を特定する(ステップ1801)。
【0063】
たとえば、図20(a)に示すように、処理対象となったデータフロー上のPEが、EXMであり、かつ、そのLSI上の候補位置が、第1列第1行であると考える。この場合には、入力側の信号線が割り当てられるバスの列番号は「1(第1列)」であり、また、出力側の信号線が割り当てられるバスのライン番号は、「0または1(第0ラインおよび第1ライン)」となる。つまり、バスリソースリクエストマップにおいて、PEに入力する信号線であるX2は、第1列の何れかのラインに限定される。また、PEから出力する信号線であるX3は、ソースPE・ディスティネーションPEから判断することにより、各列の第0ライン或いは第1ラインに限定される。図7、図8等を参照して説明したように、PEについては、それぞれ、入力として接続可能なバスが位置する列が決定され、かつ、出力として接続可能なバスが位置するラインが決定される。したがって、第4のルールを適用する際にも、PEの候補位置によって、入力する信号線の列と出力する信号線のラインが限定される。
【0064】
そこで、マップ更新部16は、バスリソースリクエストマップにおいて、PEに入力する信号線に割り当て可能な列のビットを参照して、バスを割り当て可能なライン(つまり、ビットの値が「1」であるライン)を特定する(ステップ1802)。たとえば、上述したようにEXMを第1列第1行に配置した場合の、入力する信号線であるX2についで、バスリソースリクエストマップ中、第1列の8つのラインの値は「01000000」である。したがって、X2については、第1ラインに対応するビットのみが「1」であるため、X2の信号線は、第1列第1ラインのバスに割り当てられる。
【0065】
その一方、ある信号線について、バスリソースリクエストマップ中、PEの配置された列について複数のビットの値が「1」である場合(たとえば、8つのラインの値が「11000000」である場合)には、第0ライン或いは第1ラインの何れかが選択される。複数のビットの値が「1」である場合には、マップ更新部16は、選択したビット以外のビットを「0」とするように、バスリソースリクエストマップを更新する。
【0066】
次いで、マップ更新部16は、バスリソースリクエストマップを参照して、PEに割り当て可能なバスの列番号に基づいて、入力する信号線が割り当てられる列以外の列のビットを「0」に変更するとともに(ステップ1803)、出力する信号線が割り当てられるライン以外のラインのビットを「0」に変更する(ステップ1804)。
【0067】
図20(a)の例について、バスリソースリクエストマップを参照すると、PEに入力する信号線X2については、図20(b)に示すように、第1列を除く、第0列、第2列〜第7列のビット(符号2001およびアンダーライン参照)が「0」にされる。また、PEから出力する信号線X3については、それぞれの列において、第0ラインおよび第1ラインを除く、第2ライン〜第7ラインのビット(符号2002およびアンダーライン参照)が「0」にされる。図20(a)は、ステップ1803、1804において、必要な列およびラインのビットを「0」に変更した状態を示す図である。図20(a)において、アンダーラインを引いたビットについて、値が「1」から「0」に変更される。
【0068】
第4のルール適用処理において、値を「1」から「0」に変更すべきビットについて、更新不可能フラグが「1」である場合(ステップ1805でイエス(Yes))には、配置配線処理部18は、PEの配置された列において、信号線として他のラインのバスを割り当て可能であるか否かを判断する。バスリソースリクエストマップの信号線を割り当てるべき列のビットにおいて、もともと複数のビットに「1」が存在していた場合には(ステップ1806でイエス(Yes))、バスリソースリクエストマップにおいて、値を「1」に残しておくビットを変更して、ステップ1803に戻る。たとえば、もともと、バスリソースリクエストマップ中、入力側の信号線を割り当てるべき列において、8つのラインの値が「11000000」であり、第0ラインを選択して、第1ラインのビットの値を「0」に変更した上で、処理を進め、ステップ1805においてノー(No)と判断された場合には、第1ラインを「1」として、8つのラインの値を「01000000」と変更した上で、再度、同様の処理を施す。
【0069】
また、入力側の信号線を割り当てる列において、他のビットについても処理を実行したが、他のビットのすべてについて更新不可能フラグが存在していた場合には、ステップ1806でイエス(Yes)と判断される。この場合には、PEの候補位置を変更可能であれば(ステップ1807でイエス(Yes))、配置配線処理部18は、PEの候補位置を変更して(ステップ1808)、再度、新たな候補位置に関して、信号線が割り当て可能なバス番号およびライン番号を特定して、それに基づいて、バスリソースリクエストマップを更新する。
【0070】
また、ステップ1805でノー(No)と判断された場合には、図19に示すように、マップ更新部16は、第1のルールを適用して(ステップ1901)、全てのビットが「0」であるような信号線があるか否かを判断する(ステップ1902)。ステップ1902でイエス(Yes)と判断された場合には、ステップ1806と同様に、バスリソースリクエストマップ中、入力側の信号線を割り当てる列において、もともと「1」であるような他のビットが存在するか否かを判断する(ステップ1806)。ステップ1806でイエス(Yes)と判断された場合には、マップ更新部16は、バスリソースリクエストマップを変更した上で、ステップ1803に戻る。
【0071】
ステップ1806でノー(No)と判断された場合には、ステップ1807と同様に、PEの候補位置を変更可能であれば(ステップ1904でイエス(Yes))であれば、配置配線処理部18は、PEの候補位置を変更して(ステップ1808)、再度、新たな候補位置に関して、信号線が割り当て可能なバス番号およびライン番号を特定して、それに基づいて、バスリソースリクエストマップを更新する。たとえば、図21(b)に示すように、バスリソースリクエストマップの更新に伴って、信号線X4については、全ての列のバスのビットが「0」となってしまう(符号2111参照)。このような場合には、PEを次の候補位置に移動させて、再度同様の処理を実行する。
【0072】
ステップ1807においてノー(No)と判断されたとき、或いは、ステップ1904でノー(No)と判断されたときには、パーティションのコンフィグレーションデータを再度作成する必要があると判断される。
【0073】
第1のルールの適用の結果、バスリソースリクエストマップにおいて、全てのビットが「0」となるような信号線が存在しなければ(ステップ1902でノー(No))、配置配線処理部18は、PEの候補位置、および、バスリソースリクエストマップ中、PEの入力側の信号線についてビットが「1」となっている位置(列およびライン)を、記憶装置12中の配線情報/接続情報ファイル102に追加する(ステップ1905)。また、マップ更新部16は、バスリソースリクエストマップ中、上記PEの入力側の信号線について「1」となっているビットに更新不可能フラグを付加する(ステップ1906)。
【0074】
さらに、マップ更新部16は、バスリソースリクエストマップにおいて、他の信号線についても、1つのビットのみが「1」となっているものがあれば、そのビットに更新不可能フラグを付加する(ステップ1907)。データフローファイル中に、まだ位置が決められていないPEが存在すれば(ステップ1908)、ステップ909に戻る。このような処理を繰り返すことにより、PEの位置(列および行)およびバスの位置(列およびライン)を決定することができる。
【0075】
本実施の形態においては、PEを候補位置に配置し、少なくともその入力側のバスを選択し、候補位置および入力側のバスの位置を記憶しておく。その後、バスリソースリクエストマップにおいて、PEの位置からは使用される可能性の無いバスについて、ビットを「0」とした上で、配線不可能となる他の信号線が存在しなければ、PEの候補位置および入力側のバスの位置を確定させて、これらの情報を配置情報/接続情報ファイルに追加する。このように、PEごとに候補位置の決定や入力側のバスの選択、バスリソースリクエストマップの更新、配置不可能な他の信号線の有無の判断、位置の確定を繰り返すことにより、順次、PEのLSI上の位置および信号線に対応するLSI上のバスの位置が、配置情報/接続情報ファイル102に追加されていく。
【0076】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【0077】
たとえば、前記実施の形態においては、LSI上のPEは、その列の何れかのPEをソースPEとすることができ(つまり、同じ列のPEからの出力を入力とするようなせつぞくが可能であり)、また、同じライン或いは隣接する1つのラインのPEをデスティネーションPEとすることができる(つまり、同じラインあるいは隣接する1つのラインのPEに出力できるようなバスの接続が可能である)。しかしながら、このような構成に限定されることはなく、本発明は、LSIにおけるPE間に他の接続の制限があった場合にも適用が可能である。
【図面の簡単な説明】
【0078】
【図1】。図1は、本実施の形態にかかる配置配線決定システム10の概略を示すブロックダイヤグラムである。
【図2】図2は、本実施の形態にかかるLSIの6つのセグメントの例を示す図である。
【図3】図3は、本実施の形態にかかるPEの入出力を説明する図である。
【図4】図4は、本実施の形態にかかるXデータバスおよびYデータバスを模式的に示す図である。
【図5】図5は、本実施の形態にかかるXキャリーバスおよびYキャリーバスを模式的に示す図である。
【図6】図6は、本実施の形態にかかるPEにおけるバスの入出力の制限を説明する図である。
【図7】図7(a)、(c)は、それぞれ、第6列第2ライン、および、第0列第0ラインの信号線について、ソースPEおよびデスティネーションPEとなり得るPEを説明する図である。
【図8】図8は、本実施の形態にかかるソースPE・デスティネーションPEファイルのデータ構成の例を説明する図である。
【図9】図9は、本実施の形態にかかる配置配線決定システムにおける配置配線処理の概略を示すフローチャートである。
【図10】図10は、あるコンフィギュレーションデータを、データフローとして描いた図である。
【図11】図11(a)、(b)は、それぞれ、図10のデータフローの例において、信号線Xn、Ynについてのバスリソースリクエストマップを示す図である。
【図12】図12は、本実施の形態にかかるバスリソースリクエストマップの作成処理の例を示すフローチャートである。
【図13】図13は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図14】図14は、本実施の形態にかかる第2のルール適用処理の例を示すフローチャートである。
【図15】図15(a)、(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図16】図16は、本実施の形態にかかる第3のルール適用処理の例を示すフローチャートである。
【図17】図17(a)は、データフローにおけるあるPEの入力を説明する図、図17(b)、(c)は、バスリソースリクエストマップの該当部分を示す図である。
【図18】図18は、本実施の形態にかかる第4のルール適用処理の例を示すフローチャートである。
【図19】図18は、本実施の形態にかかる第4のルール適用処理の例を示すフローチャートである。
【図20】図20(a)は、本実施の形態にかかるあるPEのX入出力およびY入出力を示す図、図20(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図21】図21(a)、(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【符号の説明】
【0079】
10 配置配線決定システム
12 記憶装置
14 マップ作成部
16 マップ更新部
18 配置配線処理部
100 データフローファイル
101 バスリソースリクエストマップ
102 配置情報/接続情報ファイル
103 ソースPE・デスティネーションPEファイル
【技術分野】
【0001】
本発明は、リコンフィグラブルLSIにおける配置配線の決定方法および配置配線の決定プログラムに関する。
【背景技術】
【0002】
近年、LSIを構成する回路の一部をソフトウェアにより再構成できるハードウェアが提供されている。このようなLSIはリコンフィグラブル(再構成可能)LSIと称されている。リコンフィグラブルLSIの設計者は、たとえば、C++に類似するハードウェア記述言語を用いて、LSIを構成する、それぞれが属性や機能が定義された演算ユニットと、演算ユニット間の接続とを規定したデータフローダイヤグラムを作成し、作成したデータを、ハードディスクなどの記憶装置に記憶する。本明細書において、データフローダイヤグラムのデータを記憶したファイルを、データフローファイルと称する。データフローファイルにおいては、特定の属性や機能を有する演算ユニットおよび演算ユニット間の接続が規定されているのみであり、したがって、データフローファイルにおける演算ユニット(データフロー上の演算ユニット)と、実際のLSI上の演算ユニットとの間の対応付けや、データフローファイルにおける演算ユニット間の接続(データフロー上の接続)と、実際のLSI上のバスとの間の対応付けは完了していない。したがって、データフロー上の演算ユニットと実際のLSI上の演算ユニットとの対応付け、および、データフロー上の接続と、実際のLSI上のバスとの対応付けを行う配置配線の決定が必要である。
【0003】
たとえば、特許文献1には、最適配置したい信号(演算ユニット値の接続)に優先順位を付け、対象回路のネットリストに基づき、優先信号順に配置配線を決定する方法が提案されている。
【特許文献1】特開平8−87537号公報
【特許文献2】国際公開WO03/007155号公報
【非特許文献1】榊原泰徳、佐藤友美著、「DAPDNAのデバイスアーキテクチャ」、デザインウェーブマガジン(Design Wave Magazine)2004年8月号、「特集 動的再構成可能デバイス その素性と実力 第2章」、CQ出版社、2004年8月、第30頁〜第38頁
【発明の開示】
【発明が解決しようとする課題】
【0004】
さらに、近年、LSIを構成する回路の一部をソフトウェアによりリアルタイムに再構成できるダイナミック・リコンフィグラブルLSIが提供されている。たとえば、特許文献1には、再構成する基本単位を、ALUなどのある程度の規模の演算機能を備えた演算ユニットである処理エレメント(PE)として、それぞれが特定の属性や機能を有する複数種類のPEをマトリクス状に配置し、再構成に要する時間を短縮することができるようなダイナミック・リコンフィギュラブルLSIが開示されている。また、非特許文献1に開示されたダイナミック・リコンフィギュラブルLSIにおいては、LSIが複数のセグメントに分割され、各セグメントに決められた属性および機能を有する所定数のPEが配置されている。したがって、非特許文献1に開示されたダイナミック・リコンフィギュラブルLSIについては、セグメントごとに、データフロー上のPEと、実際のセグメント上のPEとの対応付けおよびデータフロー上のPE間の接続と、当該セグメント上のバスとの対応付けを行い、この対応付けを示す情報を、配置配線情報として、ハードディスクなどの記憶装置に記憶する。
【0005】
各セグメント上のPEの数には限りがあり(たとえば、64個)かつ、セグメント上のバスの数にも限りがある(たとえば、X入出力のために64本)。さらに、各PEに入力として接続可能なバスおよびPEから出力として接続可能なバスも限られている。したがって、限られたLSI上のPEやバスのリソースに、データフロー上のPEや接続を適切に割り当てる配置配線の決定が求められる。
【0006】
本発明は、リコンフィグラブルLSIの処理エレメントの入出力の制限を考慮して、適切に、データフロー上の処理エレメントを、LSI上の処理エレメントに割り当て、かつ、データフロー上の処理エレメント間の接続を、LSI上のバスに割り当てることができる配置配線の決定方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の目的は、2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援する方法であって、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を備えたことを特徴とする方法により達成される。
【0008】
好ましい実施態様においては、前記バスリソースリクエストマップを生成するステップが、前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を含む。
【0009】
より好ましい実施態様においては、前記バスリソースリクエストマップを作成するステップが、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを含む。
【0010】
好ましい実施態様において、前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造である。
【0011】
別の好ましい実施態様においては、さらに、前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを備えている。
【0012】
また、本発明の目的は、上述したようなバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定する方法であって、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を備えたことを特徴とする方法によっても達成される。
【0013】
好ましい実施態様においては、前記バスリソースを更新するステップが、前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含む。
【0014】
また、好ましい実施態様においては、前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップを備え、前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力する。
【0015】
別の好ましい実施態様においては、前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含む。
【0016】
また、本発明の目的は、2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援するために、コンピュータにより読み出し可能なプログラムであって、
前記コンピュータに、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を実行させることを特徴とするプログラムにより達成される。
【0017】
好ましい実施態様においては、前記バスリソースリクエストマップを生成するステップにおいて、前記コンピュータに、
前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を実行させる。
【0018】
より好ましい実施態様においては、前記バスリソースリクエストマップを作成するステップにおいて、前記コンピュータに、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを実行させる。
【0019】
好ましい実施態様において、前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造である。
【0020】
別の好ましい実施態様においては、さらに、前記コンピュータに、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを実行させる。
【0021】
また、本発明の目的は、上述したバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定するために、コンピュータにより読み出し可能なプログラムであって、前記コンピュータに、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を実行させることを特徴とするプログラムによっても達成される。
【0022】
好ましい実施態様においては、前記バスリソースを更新するステップにおいて、前記コンピュータに、
前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させる。
【0023】
また、好ましい実施態様においては、前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップと、
前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力するステップと、を実行させる。
【0024】
別の好ましい実施態様においては、前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させる。
【発明の効果】
【0025】
本発明によれば、リコンフィグラブルLSIの処理エレメントの入出力の制限を考慮して、適切に、データフロー上の処理エレメントを、LSI上の処理エレメントに割り当て、かつ、データフロー上の処理エレメント間の接続を、LSI上のバスに割り当てることができる配置配線の決定方法およびプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【0026】
以下、添付図面を参照して、本発明の実施の形態について説明する。図1は、本実施の形態にかかる配置配線決定システム10の概略を示すブロックダイヤグラムである。本実施の形態においては、記憶装置12には、後述するように、特許文献1および非特許文献2に記載された、動的再構成可能なLSI(以下、単に「LSI」と称する)において、配置配線をするための基礎となるデータフローファイル100が設けられている。非特許文献1に記載されるように、本実施の形態において、配置配線が決定されるLSIは、6つのセグメントに分割され、かつ、それぞれのセグメントには、決められた属性および機能を有する、決められた数の処理エレメント(PE)が配置されている。
【0027】
また、配置配線決定システム10は、データフローファイル100中の、セグメントごとのコンフィギュレーションデータを参照して、記憶装置12中にバスリソースリクエストマップ101を作成するマップ作成部14と、所定のルールに基づいてバスリソースリクエストマップ101を更新するマップ更新部16とを備えている。さらに、本実施の形態にかかる配置配線決定システム10は、コンフィギュレーションデータに含まれるデータフロー上の処理エレメント(PE)を、パーティション内に配置されたLSI上の処理エレメントのうち、所定の位置にあるものに割り当てると仮定して、さらに他の所定のルールに基づいて、コンフィギュレーションデータに含まれるデータフロー上のPEの、セグメント中の具体的な位置を決定し、かつ、データフロー上のPE間の信号線を、LSI上の実際のバスに割り当て、データフロー上のPEのLSI上の位置およびデータフロー上の信号線に割り当てられたバスの位置を含む配置情報/接続情報ファイル102を記憶装置12中に生成し、かつ、バスリソースリクエストマップ101を更新する配置処理部18を備えている。なお、本実施の形態において、処理エレメントとはLSIの演算単位である。
【0028】
バスリソースリクエストマップ101、および、配置処理部18による処理により得られる、コンフィギュレーションデータにおける演算回路の、セグメント中の具体的なPEの位置の情報(配置情報)およびPE間の接続情報を含む配置情報/接続情報ファイル102は、記憶装置12に記憶される。さらに、記憶装置12には、マップ作成部14によりバスリソースリクエストマップが作成される際に参照されるソースPE・デスティネーションPEファイル103が記憶される。このソースPE・デスティネーションPEファイル103については後述する。
【0029】
本実施の形態にかかるLSIは、複数のセグメントに分割されている。図2は、本実施の形態にかかるLSIの6つのセグメントの例を示す図である。図2に示すように、それぞれのセグメントには、64個(セグメント1、セグメント3〜5)、或いは、60個(セグメント0、セグメント2)のPEが設けられている。各セグメントには、あらかじめ決められた機能を果たすPEが決められた位置に配置される。なお、本実施の形態のセグメントにおいて、横方向に、図2における左から第0列、第1列、・・・、と称し、縦方向に図2における上から第0行、第1行、・・・と称する。図2において、「LDB」、「RAM」、「DLE」などが、それぞれ、定められた属性および機能を有するPEである。
【0030】
たとえば、セグメント0の第0行には、第1行には、LSIの外部からのデータを受け入れる4つのロードバッファ(LDB)が配置される。ロードバッファは、そのサイズから、それぞれ、横方向に2列分のサイズを持つ。セグメント0の第1行には、第0列から、「RAM」、4つの「C16L」、2つの「C16E」および「DLH」という8つのPEが配置されている。たとえば、「RAM」は、16KバイトのLSIの内部メモリ、「C16L」や「C16E」は、アドレス生成用のPE、「DLH」は、図2における水平方向に位置する他のセグメントに出力可能な遅延要素である。詳細な説明は省略するが、各セグメントには、それぞれがあらかじめ定められた機能を有するPEが決められた場所に配置されている。そのほか、「EX*(*:C,S,R,M)」は、それぞれ、算術演算、論理演算、比較などの機能を有する演算ユニットである。
【0031】
PEの間を接続するためには、4種類のデータバスが存在する。本実施の形態においては、PEは、図3に示すように、X入力およびY入力の2つのデータ入力(dixおよびdiy)、CX入力およびCY入力の2つのキャリー入力(cixおよびciy)、X出力およびY出力の2つのデータ出力(doxおよびdoy)、並びに、CX出力およびCY出力の2つのキャリー出力(coxおよびcoy)が可能である。あるPEのX出力、Y出力は、それぞれ、1以上の他のPEのX入力、Y入力に接続され得る。同様に、PEのCX出力、CY出力は、それぞれ、1以上の他のPEのCX入力、CY入力に接続され得る。X出力とX入力とを接続するバスを、Xデータバス、Y出力とY入力とを接続するバスをYデータバス、CX出力とCX入力とを接続するバスをXキャリーバス、CY出力とCY出力とを接続するバスを、Yキャリーバスと称する。
【0032】
図4は、XデータバスおよびYデータバスを模式的に示す図、図5は、XキャリーバスおよびYキャリーバスを模式的に示す図である。図4に示すように、本実施の形態においては、第0列、第1列、・・・のPE群の両側に、その列のXデータバスおよびYデータバスが設けられている。たとえば、左端の第0列のPE群(符号401、402、・・・参照)の(図4における)左側には、8つのラインからなる第0列のXデータバス(符号411参照)が配置され、PE群の(図4における)右側には、8つのラインからなる第0列のYデータバスが配置されている(符号412参照)。他の列(第n列)のPE群についても、その両側に、それぞれ8ラインからなる第n列のXデータバスおよびYデータバスが配置される。図5に示すように、キャリーバスも同様に、第n列のPE群(たとえば符号501、502、・・・参照)について、(図5における)左側には8つのラインからなる第n列のXキャリーバスが配置され(たとえば符号511参照)、(図5における)右側には8つのラインからなる第n列のYキャリーバスが配置される(たとえば符号512参照)。
【0033】
図6は、LSI上の実際のPEにおけるバスの入出力の制限を説明する図である。本実施の形態においては、PE603は、データバスとの接続のために、PEコンフィギュレーション部600およびマルチプレクサコンフィギュレーション部610を有する。
【0034】
図6に示すように、Xデータバスの各ラインは、セレクタ601を介して、PE603のX入力(dix)に接続される。また、Yデータバスの各ラインは、セレクタ602を介して、PE603のY入力(diy)に接続される。PE603のX入力(dix)は、同じ列のXデータバスの何れかのラインに限られ、また、PE603のY入力(yix)も、同じ列のYデータバスの何れかのラインに限られる。その一方、図6には明瞭に示されていないが、本実施の形態においては、PE603のX出力(dix)およびY出力(diy)は、それぞれ、マルチプレクサ611、612を介して、Xデータバス、Yデータバスの、PEが位置する行、或いは、予め定められた隣接する行に位置する他のPEに接続可能なラインに接続され得る。つまり、第n列のPEは、各列のデータバスの第nラインと、第(n−1)ライン或いは第(n+1)ラインに接続可能である。ここで、バスの番号を示すライン番号は、行番号と等価である。
【0035】
図6における符号613、614は、それぞれ、他のPEからのX出力およびY出力を示している。
【0036】
本実施の形態においては、PEの出力については以下のように定められている。
【0037】
第0行のPE:第0ライン、第1ライン
第1行のPE:第0ライン、第1ライン
第2行のPE:第2ライン、第3ライン
第3行のPE:第2ライン、第3ライン
第4行のPE:第4ライン、第5ライン
第5行のPE:第4ライン、第5ライン
第6行のPE:第6ライン、第7ライン
第7行のPE:第6ライン、第7ライン
図示はしないが、キャリーバスについても、同様にPEの入出力の制限がある。
【0038】
PEの入出力という観点からは、上述したような接続の制限がある。その一方、データバスの各ラインについても、PEの入出力の制限から、当該ラインに出力することができるPE或いは当該ラインから入力することができるPEを決めることができる。
【0039】
以下、セグメント1を例にして、第n列第mラインのバスに接続可能なPEを説明する。第n列第mラインのバスには、当該バスにデータを出力するPE(これを、「ソースPE」と称する。)と、当該バスからのデータを入力するPE(これを、「デスティネーションPE」と称する。)とが存在し得る。前述したように、第m行のPEは、mが偶数であれば、第mラインおよび第(m+1)ラインに出力することができ、mが奇数であれば、第(m−1)ラインおよび第mラインに出力することができる。
【0040】
したがって、第mラインにおけるソースPEは、
第mラインおよび第(m+1)ラインに位置するPE(m:偶数)
第(m−1)ラインおよび第mラインに位置するPE(m:奇数)
となる。
【0041】
その一方、第n列のPEは、第n列のバスにのみ接続することができる。そこで、第n列のそれぞれのラインにおけるデスティネーションPEは、第n列のPEとなる。
【0042】
たとえば、第6列第2ラインのバスを考える。図7(a)において、デスティネーションPEとなり得るPE群を符号701で示し、ソースPEとなり得るPE群を符号702で示す。つまり、基本的には、第6列第2ラインのバスについて、ソースPEとなり得るPEは、第2列および第3列のPEであり、また、デスティネーションPEとなり得るPEは、第6列のPEである。なお、ソースPE中、第7列第3行のDLH(水平方向への外部出力のための遅延素子)が除外されているのは、本実施の形態において、PEが、DLHおよびDLXからのデータを入力する場合には、同じ行のDLH或いはDLXからに限られるという制約があるからである。
【0043】
また、第0列第0ラインのバスを考える。図7(b)において、デスティネーションPEとなり得るPE群を符号711で示し、ソースPEとなり得るPE群を符号712で示す。基本的には、第0列第0ラインのバスについて、ソースPEとなり得るPEは、第0行および第1行のPEであり、また、デスティネーションPEとなり得るPEは、第0列のPEである。ただし、第0列第0行のDLVは、垂直方向に外部からのデータ入力のための遅延要素であるため、そもそもデスティネーションPEとなることができないので除外される。
【0044】
本実施の形態においては、あらかじめ、各セグメントについて、第n列第mライン(n:0〜7、m:0〜7)のそれぞれにおけるソースPEとデスティネーションPEのリストであるソースPE・デスティネーションPEファイルを記憶装置12に記憶しておく。ソースPE・デスティネーションPEファイル103においては、図8に示すように、第n列第mラインにおいて候補となり得るPEの名称が格納されている。
【0045】
以下、本実施の形態にかかる配置配線決定システム10において実行される処理について説明する。図9は、本実施の形態にかかる配置配線決定システムにおける配置配線処理の概略を示すフローチャートである。図9に示すように、配置配線決定システム10のマップ作成部14は、あるセグメントに割り当てるべきパーティションのコンフィギュレーションデータを、記憶装置12から読み出す。コンフィギュレーションデータは、パーティションを構成する、データフロー上のPEの各々の属性および機能、並びに、それぞれのPE間の接続を示す特定する情報を含む。図10は、あるコンフィギュレーションデータに基づくデータフローを示す図である。図10に示すように、このコンフィギュレーションデータに基づくと、データフローにおいて、ソースPEであるDLVのX出力とデスティネーションPEであるRAMのX入力との間は接続され、その信号線はX1と名付けられている。また、ソースPEである同じDLVのY出力とデスティネーションPEであるEXRのY入力との間が接続され、その信号線はY1と名付けられている。このように、コンフィグレーションデータにおいては、PEを特定する情報(たとえば、PEに付されたIDなど)と、PE間を接続する信号線名(Xn、Yn(n=1、2、・・・)が含まれる。なお、図10の例では、PE間のX出力/X入力およびY出力/Y入力について示したが、コンフィギュレーションデータには、キャリーX(CX)出力/CX入力、キャリーY(CY)出力/CY入力の信号線についての情報も含まれる。
【0046】
マップ作成部14は、記憶装置12に記憶されたソースPE・デスティネーションPEファイル103を参照して、信号線Xn、Ynごとに、信号線が割り当てられる可能性のある、バスのラインにビット「1」をセットするようなバスリソースリクエストマップを作成する(ステップ902)。また、マップ作成部14は、キャリーの信号線CXn、CYnについても同様にバスリソースリクエストマップを作成する。作成されたバスリソースリクエストマップ101は、記憶装置12中に記憶される。
【0047】
図11(a)、(b)は、それぞれ、図10のデータフローの例において、信号線Xn、Ynについてのバスリソースリクエストマップを示す図である。図11(a)、(b)に示すように、図10に示すデータフローにかかるバスリソースリクエストマップは、信号線X1〜X5および信号線Y1〜Y5のそれぞれが、第0列〜第7列のバスのラインを使用可能であれば、当該ラインに相当するビットに「1」がセットされる。たとえば、図11(a)を参照すると、信号線X1は、第0列の第0ラインおよび第1ラインを使用可能であることがわかる。また、他の列(第1列〜第7列)までは使用不能であることがわかる。同様に、信号線X2は、第1列〜第6列の第0ラインおよび第1ラインを使用可能であることがわかる。
【0048】
以下、マップ作成部14によるマップ作成についてより詳細に説明する。マップ作成部14は、初期的なバスリソースリクエストマップを作成して、全てのビットに「0」をセットする(ステップ1200)。コンフィギュレーションデータ中の、ある信号線(たとえば、X1を考える。)のデータフロー上のソースPE(DLV)およびデスティネーションPE(RAM)を特定する(ステップ1201)、次いで、マップ作成部14は、パラメータを初期化した後に(ステップ1202)、ソースPE・デスティネーションPEファイル103を参照して、ステップ1201で特定されたデータフロー上のソースPEおよびデスティネーションPEが、第n列第m行のソースPEおよびデスティネーションPEのリストに存在するか否かを判断する(ステップ1203、1204)。リスト中にソースPEおよびデスティネーションPEの双方が存在する場合には(ステップ1204でイエス(Yes))、バスリソースリクエストマップ中、第n列第mラインのビットに「1」をセットする(ステップ1205)。マップ作成部14は、第0列第0行から第7列第7行の全てについて、ステップ1203、1204の判断を行う(ステップ1205〜ステップ1209参照)。マップ作成部14は、ステップ1201〜ステップ1210の処理を、全ての信号線(X、Y、CXおよびCY)について実行する(ステップ1210、1211参照)。
【0049】
たとえば、信号線X1について、データフロー上のソースPEはDLVであり、デスティネーションPEはRAMである。ソースPE・デスティネーションPEファイル103を参照すると、第0列第0行には、ソースPEとしてDLVがリストされ、かつ、デスティネーションPEとしてRAMがリストされている。したがって、バスリソースリクエストマップファイル中、第0列第0ラインに対応するビットが「1」にセットされる。また、第0列第1行にも、ソースPEとしてDLVがリストされ、かつ、デスティネーションPEとしてRAMがリストされている。したがって、バスリソースリクエストマップファイル中、第0列第1ラインに対応するビットが「1」にセットされる。
【0050】
バスリソースリクエストマップ101が出来上がると、マップ更新部16は、以下に詳細に説明する複数のルールを用いて、バスリソースリクエストマップファイル101を更新し、また、その更新にともなって、信号線のバスへの割り当てを決定していく。まず、マップ更新部16は、バスリソースリクエストマップ101を参照して、第1のルールを適用する(ステップ903)。第1のルールとは、バスリソースリクエストマップ中、ある信号線について、第0列〜第7列の全てのラインに関するビットが「0」である場合に、その信号線が配置不可能であることである。たとえば、図13の例において、信号線X3について、全ての列のラインに関するビットが「0」となっている(符号1301参照)。これは、信号線X3を、実際のLSI中の何れかの列のラインに割り当てることが不可能であることを示している。
【0051】
したがって、マップ更新部16は、それぞれの信号線について、全ての列のラインに対応するビットが「0」であるか否かを判断し、何れかの信号線について、全てのビットが「0」であれば、ステップ904でイエス(Yes)と判断され、処理は終了する。処理の終了に際して、データフロー上のPEのLSI上のPEへの割り当て、および、データフロー上の信号線のLSI上のバスへの割り当てが不可能であることを示す情報を出力する。この情報は、たとえば、配置配線決定システム10の表示装置(図示せず)の画面上に表示される。このように、配置配線が不可能であると判断された場合には、パーティションのコンフィグレーションのデータ自体の変更が必要となる。
【0052】
ステップ904でノー(No)と判断された場合には、マップ更新部16は、第2のルールを適用して、必要に応じて、バスリソースリクエストマップを更新する(ステップ905)。第2のルールとは、バスリソースリクエストマップ中、ある信号線について、列0〜7のラインに対応するビットが1つだけ「1」であるときには、その信号線は、ビットが「1」となったラインに割り当てるというものである。図14に示すように、マップ更新部16は、バスリソースリクエストマップ中、ある信号線についてのビットを参照して(ステップ1401)、「1」がセットされているビットが1つだけの場合には(ステップ1402でイエス(Yes))、そのビットの値を更新不可能であることを示す情報を、当該ビットに付加する(ステップ1403)。この情報として、たとえば、各ビットに対応付けられた更新不可能を表すフラグ(更新不可能フラグ)を利用することができ、記憶装置中に設けられたフラグ領域において、該当するフラグを「1」にセットすればよい。
【0053】
次いで、マップ更新部16は、バスリソースリクエストマップを参照して、そのビットと、同一列で同一ラインのビットでその値が「1」であるものを探す(ステップ1404)。値が「1」であるビットが見出され(ステップ1405でイエス(Yes))、かつ、そのビットについて、更新不可能フラグがセットされていない場合には(ステップ1406でノー(No))、マップ更新部16は、そのビットの値を「0」にする(ステップ1407)。
【0054】
なお、ステップ1404でイエス(Yes)と判断され、かつ、そのビットについて更新不可能フラグがセットされている場合(ステップ1406でイエス(Yes))には、1つのバスを複数の信号線が使用せざるを得ないという、現実に配線不可能な状態となるため、処理を終了して、パーティションのコンフィギュレーションデータ自体の作成に戻る。また、マップ更新部16は更新後のバスリソースリクエストマップについて、第1のルールを適用して、それぞれの信号線について、全ての列のラインに対応するビットが「0」であるか否かを判断し(ステップ1408)、何れかの信号線について、全てのビットが「0」であれば(ステップ1409でイエス(Yes))、同様に現実に配線不可能な状態となるため、処理を終了して、パーティションのコンフィギュレーションデータ自体の作成に戻る。この場合にも、配線が不可能であることを、たとえば、表示装置の画面上に表示する。以下、配線が不可能であると判断された場合には、同様の処理が実行されるが、説明は省略する。マップ更新部16は、ステップ1401〜ステップ1409の処理を、全ての信号線について実行する(ステップ1410、1411参照)。
【0055】
図15(a)に示す例において、信号線Y4については、バスリソースリクエストマップにおいて、第3列第4ラインのビットのみが「1」となっている(符号1501参照)。したがって、信号線Y4の第3列第4ラインには更新不可能フラグがセットされる。また、図15(b)に示すように、他の信号線について、バスリソースリクエストマップ中、同一列同一ラインで「1」となっているビットがあれば、このビットの値が「0」となる(符号1502参照)。
【0056】
なお、バスリソースリクエストマップにおいて、たとえば、第n列第mラインに沿ってビットの値を参照した場合に、1つの信号線についてのみ、値が「1」であったとする。この場合には、この信号線には、第n列第mラインのバスを割り当てても良いことを意味している。
【0057】
次に、マップ更新部16は、第3のルールを適用して、バスリソースリクエストマップを更新する(ステップ906)。第3のルールにおいては、パーティションのコンフィグレーションデータに示されるそれぞれのPEについて、その入力の信号線に着目して、バスリソースリクエストマップ中、各信号線の何れかについて、第n列のビットの値が全て「0」である場合には、その列にPEを配置できないと判断される。
【0058】
より詳細には、図16に示すように、マップ更新部16は、あるPEに着目して、そのPEのX入力、Y入力、CX入力およびCY入力となる信号線について、バスリソースリクエストマップの部分を取得する(ステップ1601)。次いで、処理用のパラメータの初期化(ステップ1602)の後、マップ更新部は、取得したバスリソースリクエストマップの部分中、信号線の何れかについて、第n列のビットがすべて「0」であるか否かを判断する(ステップ1603)。何れかの信号線について第n列のビットの全てが「0」である場合には(ステップ1604でイエス(Yes))、他の信号線についても、第n列のビットを全て「0」にする(ステップ1605)。ここでも、更新不可能フラグが「1」であるようなビットが存在すれば(ステップ1607でイエス(Yes))、配線が不可能な状態であるため、パーティションのコンフィギュレーションデータ自体の再度作成が必要となる。ステップ1604〜ステップ1606については、第0列から第7列の全てについて実行される(ステップ1607、1608参照)。
【0059】
その後、マップ更新部16は、再度第1のルールを適用して(ステップ1609)、全てのビットが「0」であるような信号線が存在するかどうかを判断する(ステップ1610)。ステップ1609でイエス(Yes)と判断された場合にも、配線が不可能な状態であるため、パーティションのコンフィギュレーションデータ自体の再度作成が必要となる。マップ更新部16は、ステップ1601〜1610の処理を、すべてのPEについて実行する(ステップ1611、1612参照)。
【0060】
たとえば、図17(a)に示す例において、あるPEのX入力、Y入力、CX入力およびCY入力として、それぞれ、信号線X3、Y2、CX6、および、CY5が与えられ、かつ、バスリソースリクエストマップの各信号線に関する部分が、図17(b)に示すようなものであったとする。この例では、キャリー入力CX6の第2列、および、X入力X3の第4列のビットが全て「0」である。したがって、図17(c)に示すように、バスリソースリクエストマップの部分において、第2列のビットおよび第4列のビットが「0」にされる。
【0061】
次いで、配置配線処理部18は、記憶装置12に記憶されたパーティションのコンフィグレーションデータから、データフロー上のPEの情報を取得し、また、取得したPEの属性および機能を参照して、データフロー上のPEを、実際のLSIのセグメント上の候補位置に配置する(つまり、データフロー上のPEを、当該候補位置のLSI上のPEに配置する)と仮定して、当該位置を示す情報(列番号および行番号)を記憶装置12に一時的に記憶する(ステップ908)。たとえば、コンフィグレーションデータ中のデータフロー上のPEがEXMであれば、当該EXMは、第1列ないし第5列の、第2行または第6行、或いは、第6列の第1行、第2行、第5行或いは第6行の何れかを候補位置とすることができる。本実施の形態においては、候補位置は、列番号の小さい順でかつ行番号が小さい順に決められる。ついで、マップ更新部16は、第4のルールを適用して、必要に応じて、バスリソースリクエストマップを更新する(ステップ908)。
【0062】
図18および図19は、第4のルールの適用処理をより詳細に示すフローチャートである。図18に示すように、マップ更新部16は、PEの候補位置の列番号および行番号に基づいて、入力側の信号線が割り当てられるバスの列番号、および、出力側の信号線が割り当てられるバスのライン番号を特定する(ステップ1801)。
【0063】
たとえば、図20(a)に示すように、処理対象となったデータフロー上のPEが、EXMであり、かつ、そのLSI上の候補位置が、第1列第1行であると考える。この場合には、入力側の信号線が割り当てられるバスの列番号は「1(第1列)」であり、また、出力側の信号線が割り当てられるバスのライン番号は、「0または1(第0ラインおよび第1ライン)」となる。つまり、バスリソースリクエストマップにおいて、PEに入力する信号線であるX2は、第1列の何れかのラインに限定される。また、PEから出力する信号線であるX3は、ソースPE・ディスティネーションPEから判断することにより、各列の第0ライン或いは第1ラインに限定される。図7、図8等を参照して説明したように、PEについては、それぞれ、入力として接続可能なバスが位置する列が決定され、かつ、出力として接続可能なバスが位置するラインが決定される。したがって、第4のルールを適用する際にも、PEの候補位置によって、入力する信号線の列と出力する信号線のラインが限定される。
【0064】
そこで、マップ更新部16は、バスリソースリクエストマップにおいて、PEに入力する信号線に割り当て可能な列のビットを参照して、バスを割り当て可能なライン(つまり、ビットの値が「1」であるライン)を特定する(ステップ1802)。たとえば、上述したようにEXMを第1列第1行に配置した場合の、入力する信号線であるX2についで、バスリソースリクエストマップ中、第1列の8つのラインの値は「01000000」である。したがって、X2については、第1ラインに対応するビットのみが「1」であるため、X2の信号線は、第1列第1ラインのバスに割り当てられる。
【0065】
その一方、ある信号線について、バスリソースリクエストマップ中、PEの配置された列について複数のビットの値が「1」である場合(たとえば、8つのラインの値が「11000000」である場合)には、第0ライン或いは第1ラインの何れかが選択される。複数のビットの値が「1」である場合には、マップ更新部16は、選択したビット以外のビットを「0」とするように、バスリソースリクエストマップを更新する。
【0066】
次いで、マップ更新部16は、バスリソースリクエストマップを参照して、PEに割り当て可能なバスの列番号に基づいて、入力する信号線が割り当てられる列以外の列のビットを「0」に変更するとともに(ステップ1803)、出力する信号線が割り当てられるライン以外のラインのビットを「0」に変更する(ステップ1804)。
【0067】
図20(a)の例について、バスリソースリクエストマップを参照すると、PEに入力する信号線X2については、図20(b)に示すように、第1列を除く、第0列、第2列〜第7列のビット(符号2001およびアンダーライン参照)が「0」にされる。また、PEから出力する信号線X3については、それぞれの列において、第0ラインおよび第1ラインを除く、第2ライン〜第7ラインのビット(符号2002およびアンダーライン参照)が「0」にされる。図20(a)は、ステップ1803、1804において、必要な列およびラインのビットを「0」に変更した状態を示す図である。図20(a)において、アンダーラインを引いたビットについて、値が「1」から「0」に変更される。
【0068】
第4のルール適用処理において、値を「1」から「0」に変更すべきビットについて、更新不可能フラグが「1」である場合(ステップ1805でイエス(Yes))には、配置配線処理部18は、PEの配置された列において、信号線として他のラインのバスを割り当て可能であるか否かを判断する。バスリソースリクエストマップの信号線を割り当てるべき列のビットにおいて、もともと複数のビットに「1」が存在していた場合には(ステップ1806でイエス(Yes))、バスリソースリクエストマップにおいて、値を「1」に残しておくビットを変更して、ステップ1803に戻る。たとえば、もともと、バスリソースリクエストマップ中、入力側の信号線を割り当てるべき列において、8つのラインの値が「11000000」であり、第0ラインを選択して、第1ラインのビットの値を「0」に変更した上で、処理を進め、ステップ1805においてノー(No)と判断された場合には、第1ラインを「1」として、8つのラインの値を「01000000」と変更した上で、再度、同様の処理を施す。
【0069】
また、入力側の信号線を割り当てる列において、他のビットについても処理を実行したが、他のビットのすべてについて更新不可能フラグが存在していた場合には、ステップ1806でイエス(Yes)と判断される。この場合には、PEの候補位置を変更可能であれば(ステップ1807でイエス(Yes))、配置配線処理部18は、PEの候補位置を変更して(ステップ1808)、再度、新たな候補位置に関して、信号線が割り当て可能なバス番号およびライン番号を特定して、それに基づいて、バスリソースリクエストマップを更新する。
【0070】
また、ステップ1805でノー(No)と判断された場合には、図19に示すように、マップ更新部16は、第1のルールを適用して(ステップ1901)、全てのビットが「0」であるような信号線があるか否かを判断する(ステップ1902)。ステップ1902でイエス(Yes)と判断された場合には、ステップ1806と同様に、バスリソースリクエストマップ中、入力側の信号線を割り当てる列において、もともと「1」であるような他のビットが存在するか否かを判断する(ステップ1806)。ステップ1806でイエス(Yes)と判断された場合には、マップ更新部16は、バスリソースリクエストマップを変更した上で、ステップ1803に戻る。
【0071】
ステップ1806でノー(No)と判断された場合には、ステップ1807と同様に、PEの候補位置を変更可能であれば(ステップ1904でイエス(Yes))であれば、配置配線処理部18は、PEの候補位置を変更して(ステップ1808)、再度、新たな候補位置に関して、信号線が割り当て可能なバス番号およびライン番号を特定して、それに基づいて、バスリソースリクエストマップを更新する。たとえば、図21(b)に示すように、バスリソースリクエストマップの更新に伴って、信号線X4については、全ての列のバスのビットが「0」となってしまう(符号2111参照)。このような場合には、PEを次の候補位置に移動させて、再度同様の処理を実行する。
【0072】
ステップ1807においてノー(No)と判断されたとき、或いは、ステップ1904でノー(No)と判断されたときには、パーティションのコンフィグレーションデータを再度作成する必要があると判断される。
【0073】
第1のルールの適用の結果、バスリソースリクエストマップにおいて、全てのビットが「0」となるような信号線が存在しなければ(ステップ1902でノー(No))、配置配線処理部18は、PEの候補位置、および、バスリソースリクエストマップ中、PEの入力側の信号線についてビットが「1」となっている位置(列およびライン)を、記憶装置12中の配線情報/接続情報ファイル102に追加する(ステップ1905)。また、マップ更新部16は、バスリソースリクエストマップ中、上記PEの入力側の信号線について「1」となっているビットに更新不可能フラグを付加する(ステップ1906)。
【0074】
さらに、マップ更新部16は、バスリソースリクエストマップにおいて、他の信号線についても、1つのビットのみが「1」となっているものがあれば、そのビットに更新不可能フラグを付加する(ステップ1907)。データフローファイル中に、まだ位置が決められていないPEが存在すれば(ステップ1908)、ステップ909に戻る。このような処理を繰り返すことにより、PEの位置(列および行)およびバスの位置(列およびライン)を決定することができる。
【0075】
本実施の形態においては、PEを候補位置に配置し、少なくともその入力側のバスを選択し、候補位置および入力側のバスの位置を記憶しておく。その後、バスリソースリクエストマップにおいて、PEの位置からは使用される可能性の無いバスについて、ビットを「0」とした上で、配線不可能となる他の信号線が存在しなければ、PEの候補位置および入力側のバスの位置を確定させて、これらの情報を配置情報/接続情報ファイルに追加する。このように、PEごとに候補位置の決定や入力側のバスの選択、バスリソースリクエストマップの更新、配置不可能な他の信号線の有無の判断、位置の確定を繰り返すことにより、順次、PEのLSI上の位置および信号線に対応するLSI上のバスの位置が、配置情報/接続情報ファイル102に追加されていく。
【0076】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【0077】
たとえば、前記実施の形態においては、LSI上のPEは、その列の何れかのPEをソースPEとすることができ(つまり、同じ列のPEからの出力を入力とするようなせつぞくが可能であり)、また、同じライン或いは隣接する1つのラインのPEをデスティネーションPEとすることができる(つまり、同じラインあるいは隣接する1つのラインのPEに出力できるようなバスの接続が可能である)。しかしながら、このような構成に限定されることはなく、本発明は、LSIにおけるPE間に他の接続の制限があった場合にも適用が可能である。
【図面の簡単な説明】
【0078】
【図1】。図1は、本実施の形態にかかる配置配線決定システム10の概略を示すブロックダイヤグラムである。
【図2】図2は、本実施の形態にかかるLSIの6つのセグメントの例を示す図である。
【図3】図3は、本実施の形態にかかるPEの入出力を説明する図である。
【図4】図4は、本実施の形態にかかるXデータバスおよびYデータバスを模式的に示す図である。
【図5】図5は、本実施の形態にかかるXキャリーバスおよびYキャリーバスを模式的に示す図である。
【図6】図6は、本実施の形態にかかるPEにおけるバスの入出力の制限を説明する図である。
【図7】図7(a)、(c)は、それぞれ、第6列第2ライン、および、第0列第0ラインの信号線について、ソースPEおよびデスティネーションPEとなり得るPEを説明する図である。
【図8】図8は、本実施の形態にかかるソースPE・デスティネーションPEファイルのデータ構成の例を説明する図である。
【図9】図9は、本実施の形態にかかる配置配線決定システムにおける配置配線処理の概略を示すフローチャートである。
【図10】図10は、あるコンフィギュレーションデータを、データフローとして描いた図である。
【図11】図11(a)、(b)は、それぞれ、図10のデータフローの例において、信号線Xn、Ynについてのバスリソースリクエストマップを示す図である。
【図12】図12は、本実施の形態にかかるバスリソースリクエストマップの作成処理の例を示すフローチャートである。
【図13】図13は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図14】図14は、本実施の形態にかかる第2のルール適用処理の例を示すフローチャートである。
【図15】図15(a)、(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図16】図16は、本実施の形態にかかる第3のルール適用処理の例を示すフローチャートである。
【図17】図17(a)は、データフローにおけるあるPEの入力を説明する図、図17(b)、(c)は、バスリソースリクエストマップの該当部分を示す図である。
【図18】図18は、本実施の形態にかかる第4のルール適用処理の例を示すフローチャートである。
【図19】図18は、本実施の形態にかかる第4のルール適用処理の例を示すフローチャートである。
【図20】図20(a)は、本実施の形態にかかるあるPEのX入出力およびY入出力を示す図、図20(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【図21】図21(a)、(b)は、本実施の形態にかかるバスリソースリクエストマップの例を示す図である。
【符号の説明】
【0079】
10 配置配線決定システム
12 記憶装置
14 マップ作成部
16 マップ更新部
18 配置配線処理部
100 データフローファイル
101 バスリソースリクエストマップ
102 配置情報/接続情報ファイル
103 ソースPE・デスティネーションPEファイル
【特許請求の範囲】
【請求項1】
2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援する方法であって、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を備えたことを特徴とする方法。
【請求項2】
前記バスリソースリクエストマップを生成するステップが、前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記バスリソースリクエストマップを作成するステップが、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造であることを特徴とする請求項1ないし3の何れか一項に記載の方法。
【請求項5】
さらに、前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを備えたことを特徴とする請求項1ないし4の何れか一項に記載の方法。
【請求項6】
請求項1ないし4の何れか一項に記載のバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定する方法であって、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を備えたことを特徴とする方法。
【請求項7】
前記バスリソースを更新するステップが、前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップを備え、前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力することを特徴とする請求項6または7に記載の方法。
【請求項9】
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含むことを特徴とする請求項6ないし8の何れか一項に記載の方法。
【請求項10】
2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援するために、コンピュータにより読み出し可能なプログラムであって、
前記コンピュータに、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を実行させることを特徴とするプログラム。
【請求項11】
前記バスリソースリクエストマップを生成するステップにおいて、前記コンピュータに、
前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を実行させることを特徴とする請求項10に記載のプログラム。
【請求項12】
前記バスリソースリクエストマップを作成するステップにおいて、前記コンピュータに、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを実行させることを特徴とする請求項11に記載のプログラム。
【請求項13】
前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造であることを特徴とする請求項10ないし12の何れか一項に記載のプログラム。
【請求項14】
さらに、前記コンピュータに、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを実行させることを特徴とする請求項10ないし13の何れか一項に記載の方法。
【請求項15】
請求項10ないし13の何れか一項に記載のバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定するために、コンピュータにより読み出し可能なプログラムであって、前記コンピュータに、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を実行させることを特徴とするプログラム。
【請求項16】
前記バスリソースを更新するステップにおいて、前記コンピュータに、
前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させることを特徴とする請求項15に記載のプログラム。
【請求項17】
前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップと、
前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力するステップと、を実行させることを特徴とする請求項14または15に記載のプログラム。
【請求項18】
前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させることを特徴とする請求項14ないし17の何れか一項に記載のプログラム。
【請求項1】
2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援する方法であって、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を備えたことを特徴とする方法。
【請求項2】
前記バスリソースリクエストマップを生成するステップが、前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を含むことを特徴とする請求項1に記載の方法。
【請求項3】
前記バスリソースリクエストマップを作成するステップが、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造であることを特徴とする請求項1ないし3の何れか一項に記載の方法。
【請求項5】
さらに、前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを備えたことを特徴とする請求項1ないし4の何れか一項に記載の方法。
【請求項6】
請求項1ないし4の何れか一項に記載のバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定する方法であって、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を備えたことを特徴とする方法。
【請求項7】
前記バスリソースを更新するステップが、前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップを備え、前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力することを特徴とする請求項6または7に記載の方法。
【請求項9】
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを含むことを特徴とする請求項6ないし8の何れか一項に記載の方法。
【請求項10】
2次元アレイ構造の処理エレメント間の接続を変更することで、そのコンフィギュレーションを変更可能な再構成可能LSIであって、当該LSI上のそれぞれの処理エレメントの入力と接続可能なバス、および、当該処理エレメントの出力と接続可能なバスが定められているLSIにおいて、当該処理エレメントの配置および処理エレメント間の配線の決定を支援するために、コンピュータにより読み出し可能なプログラムであって、
前記コンピュータに、
記憶装置に記憶された、データフロー上の処理エレメントの属性、および、特定の属性を有する複数の処理エレメント間を接続する信号線の情報を含む、データフローファイルを読み出すステップと、
前記データフローファイル中の信号線の情報を参照して、信号線ごとに、当該信号線に出力するデータフロー上の処理エレメントであるソース処理エレメントと、当該信号線を入力するデータフロー上の処理エレメントであるデスティネーション処理エレメントを特定するステップと、
前記信号線ごとに、特定されたソース処理エレメントおよびデスティネーション処理エレメントに対応する、LSI上の処理エレメントのそれぞれに接続可能なバスについて、当該信号線についてのバスとして使用可能であることを示す情報を含むバスリソースリクエストマップを、前記記憶装置中に生成するステップと、を実行させることを特徴とするプログラム。
【請求項11】
前記バスリソースリクエストマップを生成するステップにおいて、前記コンピュータに、
前記信号線ごとに、
前記LSI上の処理エレメントが配置される位置に、前記ソース処理エレメントと同一の属性を有するLSI上の処理エレメントの出力と接続可能であるかを判断するステップと、
前記LSI上の処理エレメントが配置される位置に、前記デスティネーションエレメントと同一の属性を有するLSI上の処理エレメントの入力と接続可能であるかを判断するステップと、を実行させることを特徴とする請求項10に記載のプログラム。
【請求項12】
前記バスリソースリクエストマップを作成するステップにおいて、前記コンピュータに、
前記記憶装置に記憶された、前記LSI上の処理エレメントが配置される位置のそれぞれについて、その出力と接続可能な他の位置の処理エレメントの属性、および、その入力と接続可能な他の位置の処理エレメントの属性を含むソース処理エレメント・デスティネーション処理エレメントファイルを参照するステップを実行させることを特徴とする請求項11に記載のプログラム。
【請求項13】
前記LSIは、複数の処理エレメントがマトリクス状に配置された構造であり、前記LSI上の処理エレメントを接続するバスは、ある列および行に位置する処理エレメントの入力が、特定の1以上の列或いは行の何れかに一方に位置する処理エレメントと接続可能であり、かつ、ある列および行に位置する処理エレメントの出力が、特定の1以上の列或いは行の何れか他方に位置する処理エレメントと接続可能であるような構造であることを特徴とする請求項10ないし12の何れか一項に記載のプログラム。
【請求項14】
さらに、前記コンピュータに、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントに、前記LSI上の処理エレメントを割り当てるとともに、前記データフロー上の信号線に、前記LSI上のバスを割り当てて、前記データフロー上の処理エレメントに割り当てられた前記LSI上の処理エレメントの位置、および、前記データフロー上の信号線に割り当てられたバスの位置を、前記記憶装置に記憶するステップを実行させることを特徴とする請求項10ないし13の何れか一項に記載の方法。
【請求項15】
請求項10ないし13の何れか一項に記載のバスリソースリクエストマップを使用して、処理エレメントの配置および処理エレメント間の配線を決定するために、コンピュータにより読み出し可能なプログラムであって、前記コンピュータに、
前記データフロー上の処理エレメントを、前記LSI上の処理エレメントの候補位置に配置し、当該候補位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとソース処理エレメントとを接続する第1の信号線について、前記LSI上の処理エレメントの入力と接続可能な1以上の第1のバスを特定し、特定された第1のバスのなかから所定の1つを選択して、当該バスの位置の情報を記憶装置に記憶するステップと、
前記バスリソースリクエストマップを参照して、前記データフロー上の処理エレメントとデスティネーション処理エレメントを接続する第2の信号線について、前記候補位置において、前記LSI上の処理エレメントの出力と接続可能な1以上の第2のバスを特定するステップと、
前記バスリソースリクエストマップにおいて、前記第1の信号線について、前記第1のバスから選択された1つのバスを除き、接続可能であることを示す情報を削除するとともに、前記第2の信号線について、前記第2のバスを除き、接続可能であることを示す情報を削除するように、前記バスリソースリクエストマップを更新するステップと、を実行させることを特徴とするプログラム。
【請求項16】
前記バスリソースを更新するステップにおいて、前記コンピュータに、
前記第1の信号線について、前記選択されたバスにおいて、接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させることを特徴とする請求項15に記載のプログラム。
【請求項17】
前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、全てのバスにおいて接続可能であることを示す情報が存在しないことを判断するステップと、
前記情報が存在しないと判断した場合に、データフロー上の処理エレメントおよび信号線を、LSI上の処理エレメントおよびバスに割り当て不可能であることを示す情報を出力するステップと、を実行させることを特徴とする請求項14または15に記載のプログラム。
【請求項18】
前記コンピュータに、
前記バスリソースリクエストマップにおいて、何れかの信号線について、1つのバスにおいてのみ接続可能であることを示す情報が存在する場合に、当該バスの接続可能であることを示す情報の削除を禁止する更新不可能フラグを付加するステップを実行させることを特徴とする請求項14ないし17の何れか一項に記載のプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2007−140732(P2007−140732A)
【公開日】平成19年6月7日(2007.6.7)
【国際特許分類】
【出願番号】特願2005−331298(P2005−331298)
【出願日】平成17年11月16日(2005.11.16)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
【公開日】平成19年6月7日(2007.6.7)
【国際特許分類】
【出願日】平成17年11月16日(2005.11.16)
【出願人】(500238789)アイピーフレックス株式会社 (15)
【Fターム(参考)】
[ Back to top ]