(57)【要約】   【課題】  集積回路や回路要素に関する専門知識がない場合であっても、集積回路を設計することができる。  【解決手段】  コンパイラ１６は、集積回路を構成するエレメントの視覚的シンボルとＤＤＤＬとを関連付けて格納したハードウェアライブラリ１０から選択して配置された、視覚的シンボルと、シンボル間に設定された接続とに基づいて、エレメントを、集積回路上にあらかじめ配置された、対応する特定の機能を有する実際のエレメントに割り当てるステップと、エレメントのレイテンシーにしたがって、割り当てられたエレメント間に、集積回路上に配置された遅延機能を有するＤＥＬエレメントを介在させるステップと、割り当てられ、或いは、介在されたエレメントを記述したＤＤＤＬを、集積回路の回路要素の配置情報として記憶部１８に記憶する。【選択図】  図１
2005092276.tif 000002
【特許請求の範囲】
【請求項１】
集積回路を構成する回路要素の視覚的シンボルとＤＤＤＬとを関連付けて格納した定義ファイルから選択して配置された、視覚的シンボルと、当該視覚的シンボル間に設定された接続とに基づいて、当該回路要素を、集積回路上にあらかじめ配置された、対応する特定の機能を有する実際の回路要素に割り当てるステップと、
前記回路要素のレイテンシーにしたがって、割り当てられた回路要素間に、前記集積回路上に配置された遅延機能を有する回路要素を介在させるステップと、
前記割り当てられ、或いは、介在された回路要素を記述したＤＤＤＬを、前記集積回路の回路要素の配置情報としてメモリに記憶するステップとを備えたことを特徴とする回路要素の配置方法。
【請求項２】
前記集積回路において、一定の回路要素群を含むセグメント間では、当該回路要素の接続に遅延機能を有する、実際の回路要素を介在させるステップを備えたことを特徴とする請求項１に記載の方法。
【請求項３】
前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の少なくとも最大レイテンシーにしたがって、少なくとも１以上の、実際の回路要素を割り当てるステップを備えたことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の入力ポート数および出力ポート数を参照して、単一の、実際の回路要素に割り当てるステップを備えたことを特徴とする請求項１ないし３の何れか一項に記載の方法。
【請求項５】
ユーザにより選択された特定の回路要素間では、レイテンシーにかかわらず、遅延機能を有する、実際の回路要素を介在させないことを特徴とする請求項１ないし４の何れか一項に記載の方法。
【請求項６】
さらに、前記回路要素間に、前記回路要素の入力ポートを指定するための、実際のマルチプレクサを介在させるステップを備えたことを特徴とする請求項１ないし５の何れか一項に記載の方法。
【請求項７】
集積回路を構成する回路要素の視覚的シンボルとＤＤＤＬとを関連付けて格納した定義ファイルから選択して配置された、視覚的シンボルと、当該視覚的シンボル間に設定された接続とに基づいて、当該回路要素を、集積回路上にあらかじめ配置された、対応する特定の機能を有する実際の回路要素に割り当てるステップと、
前記回路要素のレイテンシーにしたがって、割り当てられた回路要素間に、前記集積回路上に配置された遅延機能を有する回路要素を介在させるステップと、
前記割り当てられ、或いは、介在された回路要素を記述したＤＤＤＬを、前記集積回路の回路要素の配置情報としてメモリに記憶するステップとを、コンピュータに実行させることを特徴とする回路要素の配置プログラム。
【請求項８】
前記集積回路において、一定の回路要素群を含むセグメント間では、当該回路要素の接続に遅延機能を有する、実際の回路要素を介在させるステップを、前記コンピュータに実行させることを特徴とする請求項７に記載のプログラム。
【請求項９】
前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の少なくとも最大レイテンシーにしたがって、少なくとも１以上の、実際の回路要素を割り当てるステップを、前記コンピュータに実行させることを特徴とする請求項７または８に記載のプログラム。
【請求項１０】
前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の入力ポート数および出力ポート数を参照して、単一の、実際の回路要素に割り当てるステップを、前記コンピュータに実行させることを特徴とする請求項７ないし９の何れか一項に記載のプログラム。
【請求項１１】
ユーザにより選択された特定の回路要素間では、レイテンシーにかかわらず、遅延機能を有する、実際の回路要素を介在させないように、前記コンピュータを動作させることを特徴とする請求項７ないし１０の何れか一項に記載のプログラム。
【請求項１２】
さらに、前記回路要素間に、前記回路要素の入力ポートを指定するための、実際のマルチプレクサを介在させるステップを、前記コンピュータに実行させることを特徴とする請求項７ないし１１の何れか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理を実現する集積回路の設計に関し、より詳細には、当該集積回路の回路要素の配置および回路要素間の接続に関する。
【背景技術】
【０００２】
ＬＳＩやＡＳＩＣなどの集積回路を設計するため、いくつかの言語が用いられている。Ｃ言語などの抽象度の高い高級言語と称されるものは、手続的レベルの言語であり、１命令ごとにいかに処理全体が順番に実行されていくかを示すのに適している。このレベルの記述は、一般的にハードウェア依存性がなく、適当なコンピュータで受け入れられるアプリケーションプログラムであり、ＬＳＩの仕様、または、ＬＳＩにおいて実行する処理全体を一般的に記述するために用いられる。
【０００３】
また、Ｖｅｒｉｌｏｇ−ＨＤＬあるいはＶＨＤＬなどのハードウェア記述言語（ＨＤＬ）は、ＲＴLと称されることもありレジスタ−トランジスタレベルで、特定のハードウェアにより特定の命令が実行されているデータパスやパスを駆動するシーケンスを記述するために用いられる。
【０００４】
アルゴリズムは、問題を解くために明確に規定され、順序付けられた有限個の規則からなる集合として定義されており、従来、並列処理は、アルゴリズムにより記述された処理全体（アプリケーション）を順番に進める上で、独立して実行可能な部分（処理）を並列に実行し、処理時間を短縮する目的で用いられる。予め並列処理に適したハードウェアリソースを備えたシステムでアプリケーションを実行する場合は、コンパイラなどにより並列処理ができる部分は並列化され、実行速度を向上することがトライされる。
【０００５】
また、特定のアプリケーションの実行を目的としたハードウェアを設計する場合は、独立して実行できる部分を並列に処理するように回路を設計して処理時間の短縮を目指す。特許文献１に記載された技術は、並列処理および同期通信等により実行時間が定数でない処理を記述可能なＨＤＬにより回路を設計する方法である。同期通信では、２つのファンクションを並行に実行する際に、それらに含まれるプロセスを送信側が準備できるまで受信側が待ち、通信が完了した後にプロセスが進行する。したがって、これらのファンクションは並列に記述されても独立して実行されず、実行時間が可変の処理となる。一方、同期通信を行わない処理は並列処理として独立して行われる。これらは、ソース言語で与えられた処理全体の内、ソース上では並列に実行するように記載された処理を、ハードウェア設計において並列に、あるいは同期通信を用いて実行して実行サイクル数を短縮することを目的とした技術である。
【特許文献１】特開平１０−１１６３０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
近年、ＬＳＩを構成する回路の一部をソフトウェアにより再構成できるハードウェアが提供されている。さらに、国際公開ＷＯ０３／００７１５５号には、再構成する基本単位を、ゲートレベルからＡＬＵなどのある程度の規模の演算機能を備えた演算ユニットにして、複数種類の演算ユニットをマトリクス状に配置し、再構成に要する時間を短縮することが開示されている。複数の演算ユニットがマトリクス状に配置されたシステムは、それぞれの演算ユニットが並列に処理を実行できるので、膨大な数の並列処理に適したハードウェアリソースを備えたシステムと捉えることが可能である。
【０００７】
しかしながら、この種の並列処理に適した集積回路を設計するのは容易ではない。Ｃ言語などのソフトウェア設計に適した高級言語は、アルゴリズムを、それに含まれる規則を時間的な順番に処理することを前提としている。したがって、プログラムカウンタを進めて命令がシーケンシャルに実行されるように構成されており、シーケンシャルではない並列という概念を導入することは難しい。命令を並列的に記述することが許容されたとしても、それは、時間的な順番に齟齬をきたさない範囲で、独立して実行できる処理を空間的に並列に広げて実行できる程度であり、並列処理に適したハードウェアリソースを積極的に使用することはできない。さらに、高級言語であれば、ハードウェアに依存しない命令が記述されるために、並列に記述した命令がハードウェアで実際に開始されたり、終了したりするタイミングは不明である。したがって、処理できる範囲を空間的に広げても、設計者はハードウェア上で実際にどのように並列処理が実行されるのかは定義できないし、把握することもできない。
【０００８】
ＨＤＬは独立して動作する回路構成を記述するので、本来、並列処理を記述するものである。また、ハードウェアが明確になるので、処理が実行されるタイミングを調べ、或いは、調整できる。しかしながら、ＨＤＬは、集積回路やその回路要素の十分な知識が必要であり、かつ、ＨＤＬで記述された事項をみて、回路構成を把握することが実質的に不可能であるという問題もある。上記知識には、ハードウェアの設計規則なども含まれる。
【０００９】
本発明は、集積回路や回路要素に関する専門知識がない場合であっても、集積回路、特に、国際公開ＷＯ０３／００７１５５号に開示された集積回路を設計することができる、回路要素の配置方法および配置プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の目的は、集積回路を構成する回路要素の視覚的シンボルとＤＤＤＬとを関連付けて格納した定義ファイルから選択して配置された、視覚的シンボルと、当該視覚的シンボル間に設定された接続とに基づいて、当該回路要素を、集積回路上にあらかじめ配置された、対応する特定の機能を有する実際の回路要素に割り当てるステップと、前記回路要素のレイテンシーにしたがって、割り当てられた回路要素間に、前記集積回路上に配置された遅延機能を有する回路要素を介在させるステップと、前記割り当てられ、或いは、介在された回路要素を記述したＤＤＤＬを、前記集積回路の回路要素の配置情報としてメモリに記憶するステップとを備えたことを特徴とする回路要素の配置方法により達成される。
【００１１】
好ましい実施態様においては、前記集積回路において、一定の回路要素群を含むセグメント間では、当該回路要素の接続に遅延機能を有する、実際の回路要素を介在させるステップを備えている。
【００１２】
また、好ましい実施態様においては、前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の少なくとも最大レイテンシーにしたがって、少なくとも１以上の、実際の回路要素を割り当てるステップを備えている。
さらに、好ましい実施態様においては、前記遅延機能を有する、実際の回路要素を介在させる際に、当該遅延機能を有する、実際の回路要素の入力ポート数および出力ポート数を参照して、単一の、実際の回路要素に割り当てるステップを備えている。
【００１３】
別の好ましい実施態様においては、ユーザにより選択された特定の回路要素間では、レイテンシーにかかわらず、遅延機能を有する、実際の回路要素を介在させないように構成される。
【００１４】
さらに、前記回路要素間に、前記回路要素の入力ポートを指定するための、実際のマルチプレクサを介在させるステップを備えていても良い。
【００１５】
また、本発明の目的は、集積回路を構成する回路要素の視覚的シンボルとＤＤＤＬとを関連付けて格納した定義ファイルから選択して配置された、視覚的シンボルと、当該視覚的シンボル間に設定された接続とに基づいて、当該回路要素を、集積回路上にあらかじめ配置された、対応する特定の機能を有する実際の回路要素に割り当てるステップと、前記回路要素のレイテンシーにしたがって、割り当てられた回路要素間に、前記集積回路上に配置された遅延機能を有する回路要素を介在させるステップと、前記割り当てられ、或いは、介在された回路要素を記述したＤＤＤＬを、前記集積回路の回路要素の配置情報としてメモリに記憶するステップとを、コンピュータに実行させることを特徴とする回路要素の配置プログラムによっても達成される。
【発明の効果】
【００１６】
本発明によれば、集積回路や回路要素に関する専門知識がない場合であっても、集積回路を設計することができる、回路要素の配置方法および配置プログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本発明の実施の形態にかかる集積回路の回路要素の配置システムの概略を示すブロックダイヤグラムである。図１に示すように、ＤＤＤＬ（Device Dependent Description Language）により記述された種々の回路要素（エレメント）が記憶されたハードウェアライブラリ１０と、ユーザの入力装置の操作にしたがって、ハードウェアライブラリ１０から読み出された回路要素を、視覚的なシンボル（本実施の形態では、マッピング構成と称する）として表示する表示制御部１２と、ユーザにより配置されたマッピング構成に基づいて、ＤＤＤＬにより記述されたハードウェア構成１４を生成するためのコンパイラ１６と、コンパイラ１６により生成された、実際の集積回路に対応するＤＤＤＬで記述されたデータを記憶する記憶部１８とを有している。
【００１８】
表示制御部１２およびコンパイラ１６は、コンピュータにより実現され、必要なプログラムが起動することにより、当該コンピュータが、上記表示制御部およびコンパイラとして機能する。上記プログラムは、ＣＤ−ＲＯＭなどの記憶媒体から読み出され、或いは、ネットワークを介してダウンロードされ、コンピュータの記憶装置に記憶される。
本実施の形態にかかる回路要素の配置システムによる処理に先立って、本実施の形態を利用するのに好適な並列処理システムについて説明する。この並列処理システムは、エレメントがそれぞれ同時に別個の処理を実現する集積回路に相当する。
【００１９】
図２は、ハードウェアライブラリ１０の回路要素を利用した並列処理システムの一例を示す図である。この並列処理システムは、本出願人の国際出願公開公報ＷＯ０３／００７１５５に開示されている再構成可能なプロセッサ（ＲＰ、Reconfigurable Processor）である。このＲＰ２０は、プログラムなどによって与えられる命令セットに基づきエラー処理を含めた汎用的な処理を行う汎用な構成の基本プロセッサ２１と、マトリクス状に配置された演算あるいは論理エレメントにより特定のデータ処理に適合したデータフローあるいは擬似データフローがバリアブルに形成されるＡＡＰ（Adoptive Application Processor）部あるいはＡＡＰユニット（以後、「ＡＡＰ」と称する）５０と、このＡＡＰ５０からの割り込み処理を制御する割り込み制御部２２と、ＡＡＰ５０に作動用のクロック信号を供給するクロック発生部２８と、このＲＰ２０で提供可能な演算回路のフレキシビリティーをさらに向上するためのＦＰＧＡ部２７と、外部に対するデータの入出力を制御するバス制御部２９とを備えている。基本プロセッサ２１とＡＡＰ５０は、これらの間でデータを交換可能なデータバス２４ａと、基本プロセッサ２１からＡＡＰ５０の構成および動作を制御するための命令バス２４ｂとにより接続されている。また、ＡＡＰ５０から割り込み制御部２２に信号線２５を介して割り込み信号が供給され、ＡＡＰ５０における処理が終了し、また、処理中にエラーが発生したときはＡＡＰ５０の状態を基本プロセッサ２１にフィードバックできるようになっている。
【００２０】
ＡＡＰ５０とＦＰＧＡ２７との間もデータバス２６により接続されており、ＡＡＰ５０からＦＰＧＡ２７にデータを供給して処理を行い、その結果をＡＡＰ５０に返せるようになっている。さらに、ＡＡＰ５０は、ロードバス２３ａおよびストアバス２３ｂによってバス制御ユニット２９と接続されており、ＲＰ２０の外部のデータバスとの間でデータを交換できるようになっている。
【００２１】
図３にＡＡＰユニット５０の概要を示してある。ＡＡＰユニット５０は、複数の算術および／または論理演算を行う論理ブロック、論理ユニットあるいは論理要素（以降ではエレメント）がマトリクス状に配置されたマトリクス部５１と、そのマトリクス部５１に対してデータを供給する入力バッファ５２と、マトリクス部５１から出力されるデータを格納する出力バッファ５３を備えている。これら入力バッファ５２および出力バッファ５３は、それぞれ４つの小容量の入力メモリにより構成されており、アクセス調停ユニット５４を介して入出力バス２３ａおよび２３ｂに接続される。
【００２２】
マトリクス部５１が、データパスあるいはデータフローを再構成可能な並列処理システムの中心となる集積回路区画であり、複数種類の演算ユニットであるエレメント５５が縦方向に、たとえば、４つのラインを構成するようにアレイ状あるいはマトリクス状に配置されている。このマトリクス部５１は、これらのエレメント５５の間に配置された、横方向に延びた行配線群５７と、縦方向に延びた列配線群５８とを備えている。列配線群５８は、列方向に並んだ演算ユニット５５の左右に分かれて配置された配線群５８ｘおよび５８ｙが一対になっている。行配線群５７および列配線群５８との交点にはスイッチングユニット５９が配置されており、行配線群５７の任意のチャンネルを、列配線群５８の任意のチャンネルに切り替えて接続できるようになっている。各々のスイッチングユニット５９は、設定を記憶するコンフィグレイションＲＡＭを備えており、プロセッサ部２１から供給されるデータによりコンフィグレイションＲＡＭの内容を書き換えることにより、行配線群５７と列配線群５８の接続を動的に任意に制御できる。このため、このマトリクス部５１においては、複数のエレメント５５の全部あるいは一部が配線群５７および５８により接続されて形成されるデータフローの構成を任意に動的に変更することができる。
【００２３】
ＲＰ２０においては、エレメント５５が並列に動作する要素であり、各種類のエレメント５５の機能、遅延、入出力データの条件などの情報がハードウェアライブラリ３に格納されている。エレメント５５は、クロック発生部２８から供給されるクロック信号に同期して稼動するので、ハードウェアライブラリ３には各種類のエレメント毎に、入力データを処理して出力するために消費されるサイクル数が遅延情報として格納されている。さらに、各種類のエレメント５５の配置と、配線群５７および５８、スイッチングユニット５９の情報もハードウェアライブラリ３に格納されており、コンパイラ２からは、ＤＩＤＬ１に定義されたアルゴリズムを実現するための、エレメント５５の接続情報（データフロー構成）がハードウェア構成情報（ＤＤＤＬ）４として出力される。このため、ＤＤＤＬ４に従ってエレメント５５が配線群５７および５８で接続されるようにマトリクス部５１を制御することにより、ＤＩＤＬ１に定義されたアルゴリズムをマトリクス部５１にエレメント５５により空間的に割り付けることが可能となる。
【００２４】
各エレメント５５は、１組の列配線群５８ｘおよび５８ｙのそれぞれから入力データを選択するための１組のセレクタ５４と、選択された入力データに特定の算術および／または論理演算処理を施し、出力データとして行配線群５７に出力する内部データパス部５６を備えている。そして、本例のマトリクス部５１には、各行毎に異なる処理を行うための内部データパス部５６を備えた種類の異なるエレメント５５が並んで配置されている。例えば、第１行目に配列されたエレメント５５は、入力バッファ５２からのデータを受信する処理に適したデータパス部（ＬＤ）５６ｉを備えている。第２行目に配置されたエレメント５５ａは、入力バッファ５２に外部デバイスからデータを書き込むためのエレメントであり、ブロックロードするためのアドレスを発生するのに適した内部データパスを具備するデータパス部（ＢＬＡ）５６ａを備えている。マトリクス５１を構成する全てのエレメント５５は、内部データパスの構成あるいは初期値などがある程度変更できるようになっており、その設定は各々のエレメント５５のコンフィグレイションＲＡＭに基本プロセッサ２１から制御信号２４ｂにより指示される。
【００２５】
第３行目に配置されたエレメント５５ｂは、入力ＲＡＭの各々より所望のデータをマトリクス部５１へロードする入力読み出しアドレスを発生するデータパス部（ＬＤＡ）５６ｂを備えている。第４行目および第５行目に配列されたエレメント５５ｃは、算術演算および論理演算に適したデータパス部（ＳＭＡ）５６ｃを備えている。このデータパス部５６ｃは、たとえば、シフト回路、マスク回路、論理演算ユニットＡＬＵおよびＡＬＵで処理する演算をセットするコンフィグレイションＲＡＭを備えている。したがって、プロセッサ２１が書き込んだ命令により、マトリクス部５１へ入力されたデータを加算あるいは減算したり、比較したり、論理和あるいは論理積を取ったりすることができ、その結果がエレメント５５の出力信号として出力される。
【００２６】
その下の行に配列されたエレメント５５ｄは、データが伝送されるタイミングを遅延する処理に適したデータパス部（ＤＥＬ）５６ｄを備えている。その下の行に配列されたエレメント５５ｅは、乗算器などを含む乗算処理に適したデータパス部（ＭＵＬ）５６ｅを備えている。さらに異なるエレメント５５ｆとしては、マトリクス部５１の外部に用意されたＦＰＧＡ２７とのインターフェイス用のデータパス部５６ｆを備えたエレメントも用意されており、データをいったんＦＰＧＡ２７に供給して処理した後、再びマトリクス部５１に戻して処理を継続することができる。
【００２７】
これらの再構成可能な集積回路区画５１のさらに下方には、ストア用のアドレスを発生するのに適したデータパス部５６ｇおよび５６ｈをそれぞれ備えたエレメント５５ｇおよび５５ｈが配置されている。これらは、出力バッファ５３を介して外部デバイスにデータを出力するための制御を行う。そして、最下段には、ストア用にデータを出力するのに適したデータパス部（ＳＴ）５６ｓを備えたエレメント５５が配列されている。したがって、マトリクス部５１を用いて、エレメント５５の接続を動的に変更することにより、様々なデータフローをフレキシブルに構成でき、様々な処理を行うことができる。
【００２８】
さらに、本実施の形態においては、ＡＰＰ５０においては、それぞれが一群のエレメントを含む複数のセグメントを備えた構造となっている。図１５〜図１７は、本実施の形態にかかるＲＰ中のＡＡＰ５０の部分を示す。図１５〜図１７は、それぞれ、ＡＡＰ５０のうち、セグメント番号「０」、「１」および「２」を有するセグメント１５０１〜１７０１を示す。また、乗算処理に適したエレメントについて、「ＭＵＬ」と表示する代わりに「ＳＭＡＭ」と表示している。以下、乗算処理に適したエレメントについては、「ＳＭＡＭエレメント」と称する。図１５〜図１７に示すように、セグメント間には、データが伝送されるタイミングを遅延させるのに適したエレメント（以下、「ＤＥＬエレメント」と称する）が配置され、セグメントを越えたエレメントの接続には、ＤＥＬエレメントを介在させるようになっている。セグメント間の接続にＤＥＬエレメントを介するほか、ＡＰＰ５０に実際に回路要素を配置するには一定の設計規則が設けられている。したがって、コンパイラ１６は、回路要素の配置および接続において、設計規則にしたがって後述する種々の処理を実行する。
【００２９】
ユーザは、ＤＤＤＬにて記述されたエレメントを視覚的に表したマッピング構成を、入力装置を操作して、ハードウェアライブラリ１０から読み出して、表示装置の画面中のレイアウト領域に配置する。ハードウェアライブラリ１０には、上述したＡＡＰ５０を構成するエレメント（図３における、符号５６ａ〜５６ｉ、５６ｓに相当する）の視覚的シンボル（マッピング構成）が記憶されている。
【００３０】
図１８は、本実施の形態にかかるエレメントを記述するＤＤＤＬの構造を示す図である。図１８（ａ）に示すように、ＤＤＤＬにおいては、回路要素の種別などを一意的に特定するＰＨＩＤ、プロセッサＩＤ、後述する配置位置とともに回路要素の実際のＡＰＰ上の位置を特定するＵＱＩＤ、当該ＵＱＩＤを有する回路要素の配置位置、回路要素の接続情報、および、デバイスパラメータからなる。
【００３１】
図１８（ｂ）は、接続情報の一例を示す図である。図１８（ｂ）の例では、「ＵＱＩＤ＝１００」を有し、配置位置が特定されていない（つまり、（セグメント番号，カラム番号，ロウ番号）＝（−１，−１，−１）の）ＳＭＡエレメント（算術演算および論理演算に適したエレメント）について、その入力ポート＃０に入力を要さないが、第２の入力ポート入力ポート＃１には、「ＵＱＩＤ＝１０２」のエレメントの出力ポート＃０からの入力を得ることが示されている。このように、ＤＤＤＬにおいては、エレメントの各入力ポートに接続される、ＵＱＩＤを有するエレメントの出力ポートを規定しておくことで、エレメント間の接続を定義することができる。ハードウェアライブラリ１０には、上述した構造のＤＤＤＬにより各エレメントが記述されているが、回路の配置位置や接続情報の値は不定となっている。
【００３２】
ユーザによる、定義ファイル中のエレメントの選択およびレイアウト領域の配置においては、少なくともエレメントの種別およびエレメント間の接続を定義すればよい。すなわち、所望のエレメントを、レイアウト領域に配置し、かつ、一方のエレメントの出力ポートと他方のエレメントの入力ポートとを接続すればよい。無論、フィードバックの場合、単一のエレメントの出力ポートが入力ポートと接続される場合もある。エレメント間の接続、つまり、一方のエレメントの出力ポートと他方のエレメントの入力ポートがユーザの入力により接続されることにより、コンパイラ１６は、ＤＤＤＬにおける接続情報に、必要な値を与える。
【００３３】
図４（ａ）は、もっとも単純なマッピング構成の接続を示す図である。この例では、入力バッファ５２からのデータを受信する処理に適したエレメント（以下、「ＬＤエレメント」とも称する）４０１の出力ポートと、ストア用にデータを出力するのに適したエレメント（以下、「ＳＴエレメント」とも称する。）４０２の入力ポートとが接続されている。図４（ｂ）は、他のマッピング構成の接続を示す図である。この例では、ＬＤエレメント、ＳＴエレメントのほか、算術演算および論理演算に適したエレメント（以下、「ＳＭＡエレメント」とも称する。）、乗算処理に適したエレメント（以下、「ＳＭＡＭエレメント」とも称する。）、および、データが伝送されるタイミングを遅延させる処理に適したＤＥＬエレメントが使用されている。たとえば、第１のパス４１０においては、ＬＤエレメント４１１の出力ポートが、ＤＥＬエレメント４１１の入力ポートと接続され、ＤＥＬエレメント４１２の出力ポートがＳＭＡＭエレメント４１３の入力ポートと接続され、ＳＭＡＭエレメント４１３の出力ポートが、別のＤＥＬエレメント４１４の入力ポートと接続され、かつ、ＤＥＬエレメント４１４の出力ポートが、ＳＴエレメント４１５の一方の入力ポートと接続されている。その一方、第２のパス４２０においては、ＬＤエレメント４２１の出力ポートが、ＳＭＡエレメント４２２の入力ポートと接続され、ＳＭＡエレメント４２２の出力ポートが、ＳＭＡＭエレメント４２３の入力ポートと接続され、ＳＭＡＭエレメント４２３の出力ポートが、他のＳＭＡエレメント４２４の入力ポートと接続され、ＳＭＡエレメント４２４の出力ポートが、ＳＴエレメント４１５の他方の入力ポートと接続されている。
【００３４】
また、ハードウェアライブラリにおいては、各エレメントのレイテンシーも含まれる。したがって、ユーザは、自己が配置したエレメントのレイテンシーを参照して、ＤＥＬエレメントのレイテンシーを設定しても良い。図４（ｂ）の例において、ＳＭＡエレメントのレイテンシーが「３」であることをユーザは知ることができるため、パス４１０とパス４２０との同期を考慮して、ＤＥＬエレメント４１２、４１４のレイテンシーをそれぞれ「３」に設定することができる。
【００３５】
回路仕様に基づくデータフローにしたがった、エレメントの配置およびそれらの間の接続が終了すると、ユーザは、入力装置を操作して、コンパイラ１６を起動させる。コンパイラ１６は、以下に示すような処理を実行して、各エレメントが実際にＡＡＰ５０中に配置される配置位置、ＡＡＰ５０中にその配置位置が決定されたエレメント間の接続のルーティング、および、必要なＤＥＬ要素の挿入などが実現される。図５は、コンパイラ１６において実行される処理の概略を示すフローチャートである。
【００３６】
図５に示すように、コンパイラ１６は、レイアウト領域に配置されたエレメントに基づいて、各エレメントのＡＡＰ５０中の配置位置を決定する（ステップ５００）。本実施の形態において、図１５〜図１７に示すように、ＡＡＰ５０は、構造的に、実際のＬＤエレメントがデータフロー或いは擬似的データフローにおける最上流側に配置され、実際のＳＴエレメントが最下流側に配置されている。また、各セグメントにおける演算に適したエレメント（たとえば、ＳＭＡエレメントやＳＭＡＭエレメント）の数が規定されている。したがって、本実施の形態にかかるコンパイラ１６は、まず、レイアウト領域に配置されたＬＤエレメントおよびＳＴエレメントの実際の配置位置を決定し、その後、ＳＭＡエレメントおよびＳＭＡＭエレメントの実際の配置位置を決定する（ステップ５０１、５０２）。その後、レイアウト領域に配置された、ユーザ自身が配置したＤＥＬエレメントなど他のエレメントの実際の配置位置が決定される（ステップ５０３）。
【００３７】
本実施の形態において、ＡＰＰ５０上のエレメントは、（セグメント番号，カラム番号，ロウ番号）により、その位置が特定される。したがって、配置位置の決定は、ユーザがレイアウト領域に配置したエレメントについて、実際のＡＡＰ５０上での位置、つまり、（セグメント番号，カラム番号，ロウ番号）が割り当てられることにより実現できる。
【００３８】
なお、図１５に示す例においては、ＡＰＰ５０のセグメント１５０１には、１６個のＳＭＡエレメントが含まれる。したがって、ユーザがレイアウト領域に配置したマップ構成が、それ以上のＳＭＡエレメントや、このセグメントに存在しないＳＭＡＭエレメントを要する場合には、他のセグメントのＳＭＡエレメントやＳＭＡＭエレメントが使用される可能性がある。同様に、図１６や図１７に示した他のセグメントについても同様の場合が生じ得る。
【００３９】
ユーザがレイアウト領域に配置した各エレメントの、実際のＡＰＰ５０上への配置が終了すると、コンパイラ１６は、各エレメントのレイテンシーを参照して、必要に応じてＤＥＬエレメントを付加する（ステップ５０４、５０５）。
ステップ５００による、各エレメントのＡＰＰ５０中の位置が決定すると、ユーザが設定したエレメント間の接続に基づいて、実際に配置されたＡＰＰ中のエレメント間の接続を決定するルーティング処理が実行される（ステップ５１０）。ここでは、後述するように、マルチプレクサ（ＭＵＸ）の追加、および、スイッチング処理も実行される。
【００４０】
以下、実際の例を参照して、ステップ５００およびステップ５１０の処理をより詳細に説明する。図６は、ＤＥＬエレメントの挿入の一例を説明するための図である。たとえば、ＬＤエレメント６０１とＳＴエレメント６０２とを接続している場合を考える（図６（ａ））。ここで、ＬＤエレメント６０１、および、ＳＴエレメント６０２の、実際に配置されるべきＡＰＰ５０中のセグメントが相互に異なる場合には、設計規則にしたがって、ＤＥＬエレメントが挿入される。たとえば、ＬＤエレメントが、セグメント番号「０」に配置され、ＳＴエレメントがセグメント番号「２」に配置される場合には、セグメント番号「０」とセグメント番号「１」との間に介在するＤＥＬエレメント６１１と、セグメント番号「１」とセグメント番号「２」との間に介在するＤＥＬエレメント６１２とが、コンパイラ１６により生成され、ＬＤエレメント６０１とＤＥＬエレメント６１１とが接続され、ＤＥＬエレメント６１１とＤＥＬエレメント６１２とが接続され、かつ、ＤＥＬエレメント６１２とＳＴエレメント６０２とが接続される。また、この場合には、ＤＥＬエレメント６１１、６１２のそれぞれのレイテンシーは、「１」に設定される。なお、セグメント間に介在するＤＥＬエレメントを、「インターセグメントＤＥＬエレメント」とも称する。
【００４１】
図７は、他のＤＥＬエレメントの挿入の例を説明する図である。ここで、ユーザ入力されたマップ構成（図７（ａ））は、図４（ｂ）に示すものと同様である。ユーザ入力されたマップ構成においては、一方のパス７１０に、それぞれ、レイテンシー「３」のＤＥＬエレメント７１２、７１４が配置されている。
【００４２】
たとえば、ＬＤエレメント７１１および７２１は、それぞれ、セグメント番号「０」に配置され、ＳＴエレメント７１５は、セグメント番号「２」に配置される。また、エレメント数の制約により、ＳＭＡＭエレメント７１３、７２３が、それぞれ、セグメント番号「１」に、ＳＭＡエレメント７２２、７２４は、それぞれ、セグメント番号「０」、「１」に、配置されるよう、コンパイラ１６に決定されたと考える。
【００４３】
このような場合には、第１のパス７１０において、ユーザ入力により設定されたＤＥＬエレメント７１２は、セグメント番号「０」からセグメント番号「１」へのレイテンシー「３」のインターセグメントＤＥＬエレメントとして、また、ＤＥＬエレメント７１４は、セグメント番号「１」からセグメント番号「２」へのインターセグメントＤＥＬエレメントとして、実際のＡＰＰ５０上への配置位置が決定される。この例では、実際にインターセグメントＤＥＬエレメント７３２の配置位置は（０，０，７）、インターセグメントＤＥＬエレメント７３４の配置位置は（１，０，７）と決定される。
【００４４】
その一方、第２のパス７２０においても、セグメント間にはインターセグメントＤＥＬエレメントを配置する必要がある。この例では、セグメント番号「０」のＳＭＡエレメント７２２と、セグメント番号「１」のＳＭＡＭエレメント７２３との間に、インターセグメントＤＥＬエレメント７４５が配置され、かつ、セグメント番号「１」のＳＭＡエレメント７２４と、セグメント番号「２」のＳＴエレメント７１５との間にも、インターセグメントＤＥＬエレメント７４６が配置される。また、インターセグメントＤＥＬエレメント７４５、７４６のそれぞれの配置位置は、（０，１，７）および（１，１，７）と決定される。
【００４５】
このように一方のパス（第２のパス）７２０におけるＤＥＬエレメントの挿入により、他方のパス（第1のパス）７１０におけるレイテンシーを調整する必要が生じる場合がある。このような場合に、コンパイラ１６は、再度、ＤＥＬエレメントのレイテンシーを調整する。この例では、インターセグメントＤＥＬエレメント７３４のレイテンシーを、「３」から「５」に変化させている。
【００４６】
なお、図７の例では、ユーザ入力された、レイテンシーのみが定義されたＤＥＬエレメントから、（セグメント番号、コラム番号、ロウ番号）からなるＡＰＰ５０中の配置位置が決定されるとともに、他のパス等のレイテンシーを考慮して、レイテンシーも調整される。つまり、本実施の形態において、コンパイラ１６は、不完全なＤＥＬエレメントを、配置位置およびレイテンシーが決定された最終的なＤＥＬエレメントに変換させる機能を有する。
【００４７】
また、コンパイラ１６は、ＤＥＬエレメントについて、最大レイテンシーおよび／または最少レイテンシーを、予め決定しておき、ユーザ入力されたＤＥＬエレメントを、分割或いは統合した形態の、ＤＥＬエレメントの配置位置などを決定することもできる。たとえば、図８（ａ）に示すように、ＳＭＡエレメント８０１とＳＭＡエレメント８０３との間に、レイテンシー「Ｎ（Ｎはユーザが設定した整数）」のＤＥＬエレメント８０２が、ユーザ入力により配置されたと考える。この例では、コンパイラ１６は、ユーザ入力されたＤＥＬエレメントのレイテンシーと、実際にその機能を割り当て可能なＡＰＰ５０中のＤＥＬエレメントのレイテンシーとを比較して、ユーザ入力されたＤＥＬエレメントの機能を実現するために、３つのＤＥＬエレメント８１２−１〜８１２−３の配置位置を決定している（図８（ｂ））。それぞれのＤＥＬエレメントのレイテンシーは、「Ａ」、「Ｂ」および「Ｃ」であり、レイテンシーの総和が、基本的には、ユーザ設定にかかる「Ｎ」と一致する。
【００４８】
たとえば、ＡＰＰ上に実際に配置されているＤＥＬエレメントが、４つの入力ポートおよび４つの出力ポートを有する４入力４出力のエレメントである場合を考える。たとえば、図９（ａ）に示すように、ＳＭＡエレメントの間にＤＥＬエレメントが介在するようなマップ構造が、ユーザ入力により作成されていた場合に、ＡＰＰ上の単一のＤＥＬエレメントに、ユーザ入力されたＤＥＬエレメントとしてそれぞれ機能させるべく、図９（ｂ）に示すような構成を採用しても良い。
【００４９】
さらに、本実施の形態においては、クリティカルパスを保護するために、ユーザ入力によるエレメント間の接続において、ＤＥＬエレメントの挿入を禁止するように、ユーザが設定することもできる。たとえば、図１０に示す例において、接続線（パス）１００１〜１００５について、ＤＥＬエレメントの挿入の禁止が設定されていると考える。このような場合には、コンパイラ１６は、これらの間にＤＥＬエレメントが挿入されないように、関係するエレメント（図１０の例では、ＳＭＡエレメント１０１１〜１０１４およびＤＥＬエレメント１０１５）を、ＡＰＰ中の単一のセグメントに配置する。
【００５０】
さらに、ユーザ入力において、ユーザが、エレメントを配置するカラム位置を指定することも可能である。たとえば、図１１の例において、ＬＤＢ（ロードバッファ：Load Buffer）エレメント、ＬＤエレメント、および、ＬＤＢエレメントにカウンタ値を与えるカウンタとして機能するエレメント（Ｃ１６ＬエレメントおよびＣ３２Ｌエレメント）は、外部メモリとの適切にアクセスするために、ＡＰＰにおいて、同一のカラム番号に配置されているという設計規則があると考える。この場合には、ユーザが、上記エレメントのうちのいずれかに、特定のカラム番号を与えていると、コンパイラ１６は、他のエレメントにも同一のカラム番号を与える。
【００５１】
また、図１２に示すように、カウンタエレメントＣ１６Ｌ或いはＣ３２Ｌについて、カラム番号を指定するように、これらエレメントに直接、ＩＤを付与することができる場合を考える。この場合にも、たとえば、「ＥＩＤ＿Ｃ１６Ｌ＝０」つまり、カウンタエレメントＣ１６Ｌのカラム番号を「０」とユーザが設定していれば、コンパイラ１６により、他のエレメントのカラム番号も「０」に設定される。
【００５２】
次に、ルーティング処理（ステップ５１０）における、マルチプレクサの追加およびスイッチング処理について説明する。マルチプレクサは、エレメント間を接続する際に、データ入力側の入力ポートを特定する機能を有する。このマルチプレクサは、配置位置（セグメント番号，カラム番号，ロウ番号）のほか、少なくとも、入力ポートを特定する番号を含む。コンパイラ１６は、ユーザ入力にかかるエレメント間の接続に基づいて、ＡＰＰ５０上に実際に配置されるべきマルチプレクサの配置位置を特定し、かつ、その入力ポートを特定する（図１３参照）。
【００５３】
さらに、ルーティング処理（ステップ５１０）においては、有限のエレメントを有効に利用するために、以下のようなスイッチング処理を実行することもできる。たとえば、ＳＭＡエレメントの間では、特定の場合に、演算結果に影響を与えないように、ポートをスイッチングさせることも可能である。図１４（ａ）において、ユーザ入力されたＳＭＡエレメントの間では、一方のＳＭＡエレメント１４０１のデータ出力ポート「ｄｏ」と、他方のＳＭＡエレメント１４０２の一方のデータ入力ポート「ｄｉｘ」とが接続されている。しかしながら、コンパイラ１６により、実際のＡＰＰ５０上では、一方のＳＭＡエレメント１４０１のデータ出力ポート「ｄｏ」と、他方のＳＭＡエレメント１４０２の他方のデータ入力ポート「ｄｉｙ」とが接続されても良い（図１４（ｂ）参照）。
【００５４】
さらに、本実施の形態では、ルーティング処理において、複数入力ポートおよび複数出力ポートを有するＤＥＬエレメントにおいて、入力ポートと出力ポートとをスイッチングさせることもできる。図１４（ｃ）に示す例においては、ユーザ入力により、ＤＥＬエレメントは、通常とおり、第１の入力ポート「ｄｉｘ」で入力したデータを遅延させて、第１の出力ポート「ｄｏｘ」から出力させるように設定されているが、コンパイラ１６により、実際のＡＰＰ５０上のＤＥＬエレメントにおいて、第１の入力ポート「ｄｉｘ」で入力したデータを遅延させて、第２の出力ポート「ｄｏｙ」から出力させるようにしても良い（図１４（ｄ）参照）。なお、この場合でもユーザ入力による論理には変更はなく演算結果に影響は与えないことは言うまでも無い。
【００５５】
このように、本実施の形態によれば、ＤＤＤＬで記述されたエレメントを視覚的に表示したマッピング構成を、ユーザが入力装置を操作して、レイアウト領域に配置し、かつ、エレメントの間を接続しておけば、コンパイラにより、設計規則にしたがって、実際のＡＰＰ上への各エレメントの配置、および、エレメント間の接続を実現することができる。したがって、ユーザは、所望の回路設計仕様に基づくデータフローにしたがって、エレメントを視覚的に表したマッピング構成を配置していけばよい。
【００５６】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【図面の簡単な説明】
【００５７】
【図１】図１は、本発明の実施の形態にかかる集積回路の回路要素の配置システムの概略を示すブロックダイヤグラムである。
【図２】図２は、ハードウェアライブラリの回路要素を利用した並列処理システムの一例を示す図である。
【図３】図３は、ＡＡＰユニットの概略を示す図である。
【図４】図４は、マッピング構成の例を示す図である。
【図５】図５は、コンパイラにおいて実行される処理の概略を示すフローチャートである。
【図６】図６は、ＤＥＬエレメントの挿入の一例を説明するための図である。
【図７】図７は、他のＤＥＬエレメントの挿入の例を説明する図である。
【図８】図８は、他のＤＥＬエレメントの挿入の例を説明する図である。
【図９】図９は、他のＤＥＬエレメントの挿入の例を説明する図である。
【図１０】図１０は、接続の保護を説明するための図である。
【図１１】図１１は、カラム番号の決定の例を説明する図である。
【図１２】図１２は、カラム番号の決定の他の例を説明する図である。
【図１３】図１３は、マルチプレクサの挿入の例を説明する図である。
【図１４】図１４は、スイッチングの例を説明する図である。
【図１５】図１５は、本実施の形態にかかるＲＰ中のＡＡＰの部分を示す図である。
【図１６】図１６は、本実施の形態にかかるＲＰ中のＡＡＰの部分を示す図である。
【図１７】図１７は、本実施の形態にかかるＲＰ中のＡＡＰの部分を示す図である。
【図１８】図１８は、本実施の形態にかかるエレメントを記述するＤＤＤＬの構造を示す図である。
【符号の説明】
【００５８】
１０    ハードウェアライブラリ
１２    表示制御部
１４    ハードウェア構成
１６    コンパイラ
１８    記憶部  
【図１】
2005092276.tif 000003
【図２】
2005092276.tif 000004
【図３】
2005092276.tif 000005
【図４】
2005092276.tif 000006
【図５】
2005092276.tif 000007
【図６】
2005092276.tif 000008
【図７】
2005092276.tif 000009
【図８】
2005092276.tif 000010
【図９】
2005092276.tif 000011
【図１０】
2005092276.tif 000012
【図１１】
2005092276.tif 000013
【図１２】
2005092276.tif 000014
【図１３】
2005092276.tif 000015
【図１４】
2005092276.tif 000016
【図１５】
2005092276.tif 000017
【図１６】
2005092276.tif 000018
【図１７】
2005092276.tif 000019
【図１８】
2005092276.tif 000020