(57)【要約】【課題】演算器・メモリ・ポートを内蔵し、それらを切替えるモジュールをスケジューリングする動作合成を実行する。【解決手段】  回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、ノードの状態を検出する検出手段と、検出したノードの状態及びノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含む。【選択図】  図１
2010224864.tif 000002
【特許請求の範囲】
【請求項１】
回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、
前記ノードの状態を検出する検出手段と、
前記検出したノードの状態及び前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、
前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含むことを特徴とする動作合成装置。
【請求項２】
前記ノードの状態は前記ノードが使用するポートの数を含むことを特徴とする請求項１に記載の動作合成装置。
【請求項３】
前記モジュールは同期演算と非同期演算とを切替える切替手段を含むことを特徴とする請求項２に記載の動作合成装置。
【請求項４】
前記モジュールは複数の演算器を含み、前記切替手段は前記複数の演算器を切替える  ことを特徴とする請求項３に記載の動作合成装置。
【請求項５】
前記ノードの状態は演算器の数、メモリの数、及びポートの数を含み、
前記スケジューリング手段は前記ノードが使用する演算器の数、メモリの数、或はポートの数に応じて前記モジュールが共有する演算器の数、メモリの数、或はポートの数を変更することを特徴とする請求項１に記載の動作合成装置。
【請求項６】
前記モジュールは前記演算器と前記メモリを切替える切替手段を含むことを特徴とする請求項５に記載の動作合成装置。
【請求項７】
前記モジュールは前記演算器と前記ポートを切替える切替手段を含むことを特徴とする請求項５に記載の動作合成装置。
【請求項８】
記憶手段をさらに備え、
前記スケジューリング手段は前記演算器の数、メモリの数、或はポートの数を前記記憶手段に保存することを特徴とする請求項５に記載の動作合成装置。
【請求項９】
前記モジュールは、前記演算器と前記メモリと前記ポートを切替える切替手段を含むことを特徴とする請求項８に記載の動作合成装置。
【請求項１０】
回路装置の動作記述からノードを含む機能記述を生成する動作合成方法において、
前記ノードの状態を検出する検出ステップと、
前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップを含むことを特徴とする動作合成方法。
【請求項１１】
前記ノードの状態は前記ノードが使用するポートの数を含むことを特徴とする請求項１０に記載の動作合成方法。
【請求項１２】
前記モジュールは同期演算と非同期演算とを切替える切替手段を含むことを特徴とする請求項１１に記載の動作合成方法。
【請求項１３】
前記モジュールは複数の演算器を含み、前記切替手段は、前記複数の演算器を切替える  ことを特徴とする請求項１２に記載の動作合成方法。
【請求項１４】
前記ノードの状態は前記ノードが使用する、演算器の数、メモリの数、及びポートの数を含み、
前記ノードが使用する演算器の数、メモリの数、或はポートの数に応じて前記モジュールが共有する演算器の数、メモリの数、或はポートの数を変更する変更ステップをさらに含むことを特徴とする請求項１０に記載の動作合成方法。
【請求項１５】
前記モジュールは前記演算器と前記メモリを切替える切替手段を含むことを特徴とする請求項１４に記載の動作合成方法。
【請求項１６】
前記モジュールは前記演算器と前記ポートを切替える切替手段を含むことを特徴とする請求項１４に記載の動作合成方法。
【請求項１７】
前記演算器の数、メモリの数、或はポートの数を保存する保存ステップとをさらに含むことを特徴とする請求項１４に記載の動作合成方法。
【請求項１８】
前記モジュールは前記演算器と前記メモリと前記ポートを切替える切替手段を含むことを特徴とする請求項１７に記載の動作合成方法。
【請求項１９】
回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、
前記ノードの状態を検出する検出ステップと、
前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させることを特徴とする動作合成プログラム。
【請求項２０】
回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、
前記ノードの状態を検出する検出ステップと、
前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させるためのプログラムを格納した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路装置の動作の記述から、具体的な機能の記述を生成する動作合成装置、動作合成方法、及びこれらのプログラムに関する。
【背景技術】
【０００２】
近年半導体回路の回路規模が増大しており、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の１つとして、動作レベルの回路記述からＲＴＬ（Ｒｅｇｉｓｔｅｒ Ｔｒａｎｓｆｅｒ Ｌｅｖｅｌ）等の抽象度の低い回路記述を合成するための動作合成装置が提案されている。このような動作合成装置を用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述からハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
【０００３】
動作合成装置の一例が特許文献１に記載されている。特許文献１の動作合成装置はリソースアクセス調停手段を有する。そのリソースアクセス調停手段は動作記述中のループ処理内に同一リソースへのアクセスが複数含まれる場合、制約条件に基づいて調停処理する。これにより、ループ処理がパイプライン化されてもリソースアクセスに競合が生じない。
【０００４】
また、特許文献２記載の動作合成手段は対応表生成手段を有する。その対応表生成手段は動作記述を読み込んでＲＴＬと対応表とを生成する。対応表は動作記述における各ブロックがＲＴＬ記述内でのステートマシンにおけるどの状態に対応するかを示す情報である。
【０００５】
特許文献１或は特許文献２に記載の動作合成装置は加算や減算などの単機能の演算だけでなく、複数の演算を合わせ持った複合演算器を使用した回路を合成することができる。
【０００６】
一方、実現する回路が一つに限定されないＦＰＧＡ（Ｆｉｅｌｄ Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙ）などのプログラマブル回路が知られている。このプログラマブル回路は非同期演算と同期演算を切替えることのできる演算器や演算器とメモリで入出力ポートを共有し時分割で使用するモジュールを含む。これらのモジュールは高機能化・小面積化などの目的で用いられている。しかし、プログラマブル回路では配線スイッチの接続情報を記憶するメモリの占める面積が大きいという問題がある。このため、プログラマブル回路では機能を共有し、ポートを少なくしている。これにより、プログラマブル回路は配線スイッチ情報を格納するメモリの面積を削減している。また、プログラマブル回路のモジュールは高速動作が不要な場合に非同期演算を用いる。プログラマブル回路は高速動作が必要なときに同期演算を用いる。これにより、遅延を小さくできるという利点がある。このような特殊なモジュールはメモリの効率的な利用と遅延が小さいという効果がある。このようなモジュールの利用により高速で小型化された回路の記述が期待される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−０２５９７３
【特許文献２】特開２００８−２０４１１１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１や特許文献２に記載の動作合成装置はこのような非同期演算と同期演算を切替えることのできる演算器を利用できない。また、特許文献１や特許文献２に記載の動作合成装置は演算器とメモリで入出力ポートを共有し時分割で使用するようなモジュールを利用できない。このような動作合成装置ではアクセスの処理を調停し、或は対応表を用いて処理動作を管理する。しかし、モジュールでの演算の切替やポートの管理などの機能を具備しない。従って、上記の特殊なモジュールを用いた動作合成処理を実行することはできない。
【０００９】
本発明の目的は上述した課題を解決する動作合成装置、動作合成方法、及びこれらのプログラムを提供することである。
【課題を解決するための手段】
【００１０】
本発明の第１の動作合成装置は回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、ノードの状態を検出する検出手段と、検出したノードの状態及びノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含む。
【００１１】
本発明の第２の動作合成方法は回路装置の動作記述からノードを含む機能記述を生成する動作合成方法において、ノードの状態を検出する検出ステップと、検出したノードの状態とノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップを含む。
【００１２】
本発明の第３のプログラムは回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、ノードの状態を検出する検出ステップと、検出したノードの状態とノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させることを特徴とする。
【発明の効果】
【００１３】
本発明は回路装置の動作の記述から具体的な機能の記述を生成する動作合成装置に関する。本発明によれば、演算器・メモリ・ポートを内蔵しそれらを切替えるモジュールをスケジューリングし合成することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態による動作合成装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態による動作合成装置における動作を示すフローチャートである。
【図３】本発明の第２乃至第４の実施形態による動作合成装置の構成を示すブロック図である。
【図４】本発明の第２の実施形態による動作合成装置における動作を示すフローチャートである。
【図５】第２の実施形態におけるモジュールの構成を示すブロック図である。
【図６】第２の実施形態における別のモジュールの構成を示すブロック図である。
【図７】第２の実施形態におけるスケジューリングを説明するための図である。
【図８】第２の実施形態におけるスケジューリングを説明するための図である。
【図９】第２の実施形態におけるスケジューリングを説明するための図である。
【図１０】本発明の第３の実施形態による動作合成装置における動作を示すフローチャートである。
【図１１】第３の実施形態におけるモジュールの構成を示すブロック図である。
【図１２】第３の実施形態におけるスケジューリングを説明するための図である。
【図１３】第３の実施形態における別のモジュールの構成を示すブロック図である。
【図１４】第３の実施形態におけるスケジューリングを説明するための図である。
【図１５】本発明の第４の実施形態による動作合成装置における動作を示すフローチャートである。
【図１６】第４の実施形態におけるモジュールの構成を示すブロック図である。
【図１７】第４の実施形態におけるスケジューリングを説明するための図である。
【図１８】第４の実施形態における別のモジュールの構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００１６】
本発明の第１の実施形態による動作合成装置について図面を参照して詳細に説明する。図１は本発明の実施形態による動作合成装置の構成を示すブロック図である。
【００１７】
図１を参照すると、本発明の第１の実施形態による動作合成装置１１０はスケジューリング手段１２２と、バインディング手段１２３と、検出手段１２５を含む。
【００１８】
スケジューリング手段１２２は入力された動作レベルの回路記述（動作記述）に基づいて抽象的に記述された回路記述から具体的な回路の動作の手続（機能記述）を決定する。入力された動作レベルの回路記述は解析され樹形図様のデータ構造により表現される。樹形図の枝分かれの部分ではデータの論理演算或はデータの保持が実行される。この部分はノードと呼ばれ演算器或はメモリが割当てられる。スケジューリング手段１２２は演算の順番、演算の時期、処理を行う部品の選定、部品のつながり方などを決定する。バインディング手段１２３は演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する。
【００１９】
検出手段１２５は回路装置の機能記述におけるノードの状態を検出し、検出した状態をスケジューリング手段１２２に通知する。スケジューリング手段１２２はこのノードの状態とこのノードに割当てられるモジュールに基づいてスケジューリングを行う。
【００２０】
バインディング手段１２３によるバインディング処理の結果に基づいてＲＴＬ記述が出力される。ＲＴＬ記述はレジスタや演算器などの結線関係を示しブロック図に相当するレベルでの記述である。
【００２１】
次に、図２のフローチャートを参照して第１の実施形態による動作合成装置の動作について説明する。
【００２２】
まず、利用者により用意された動作レベルの回路記述を入力する（ステップＳ２０１）。
【００２３】
検出手段１２５はスケジューリング手段１２２がスケジューリングを行うノードの状態を検出する（ステップＳ２０８）。そして、検出した状態をスケジューリング手段１２２に通知する。スケジューリング手段はその通知に従って、ノードに割当てられるモジュールに応じたスケジューリングを行う（ステップＳ２１０）。
【００２４】
スケジューリング処理の結果がバインディング手段１２３に送られバインディング処理が行われる（ステップＳ２１２）。すなわち、ノードにおける処理を実際にどの演算器或はメモリに割当てるかなどを決定する。
【００２５】
バインディング手段１２３の処理結果をもとにＲＴＬ記述が生成されて出力される（ステップＳ２１４）。
【００２６】
本実施形態の動作合成装置１１０ではノードの状態を検出し、スケジューリング手段１２２がこの状態に応じてスケジューリングを制約したスケジューリング処理を実行する（ステップＳ２１０）。これにより、非同期演算と同期演算を切替えて使用できるモジュールをノードに割当てたスケジューリングが可能になる。
［第２の実施形態］
本発明の第２の実施形態による動作合成装置について図面を参照して詳細に説明する。図３は本発明の実施形態による動作合成装置の構成を示すブロック図である。
【００２７】
図３を参照すると、本発明の第２の実施形態による動作合成装置３１０はプログラム制御により動作するデータ処理手段３０２と、入力手段３０１と、記憶手段３０３と、出力手段３０４を含む。
【００２８】
データ処理手段３０２は中央処理装置（プロセッサ、コンピュータ）により実現される。データ処理手段３０２は前処理手段３２１と、スケジューリング手段３２２と、バインディング手段３２３と、後処理手段３２４と、検出手段３２５を含む。また、記憶手段３０３はシステム内部表現記憶手段３３１を有する。
【００２９】
前処理手段３２１は入力手段３０１により与えられた動作レベルの回路記述を解析して動作合成用の内部表現に変換する機能を有する。
【００３０】
ここで、内部表現とは動作レベルの回路記述を解析しその解析結果を動作合成装置の内部で一時的に保持する際に使用する表現を含む。
【００３１】
動作レベルの回路記述が解析されその解析結果が樹形図様のグラフに表現される。樹形図の枝分かれの部分ではデータの論理演算或はデータの保持が実行される。この部分はノードと呼ばれ演算器或はメモリが割当てられる。本実施形態に用いられる内部表現としては例えば抽象構文木（ａｂｓｔｒａｃｔ ｓｙｎｔａｘ ｔｒｅｅ; ＡＳＴ）やコントロールデータフローグラフ（ｃｏｎｔｒｏｌ ｄａｔａ ｆｌｏｗ ｇｒａｐｈ; ＣＤＦＧ）と呼ばれるデータ構造が挙げられる。回路記述を解析した結果はこれらの樹形図やデータフローグラフにより表現される。
【００３２】
スケジューリング手段３２２は回路の動作の手続を具体的に決定する。すなわち、演算の順番、演算の時期、処理を行う部品の選定、部品のつながり方などを決定する。
【００３３】
バインディング手段３２３は論理演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する機能を有する。
【００３４】
検出手段３２５はノードの状態を検出し、検出した状態をスケジューリング手段３２２に通知する。ノードの状態は例えばノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段３２２はこのノードの状態とこのノードに割当てられるモジュールに基づいてスケジューリングを行う。本実施形態では検出手段３２５はスケジューリング手段３２２の外に配置されているが、スケジューリング手段３２２の内部に配置されてもよい。
【００３５】
本実施形態ではスケジューリング手段３２２の処理後にバインディング手段３２３の処理が行われる構成になっているが、スケジューリング手段３２２とバインディング手段３２３を並列に配置して平行して処理を行ってもよい。
【００３６】
後処理手段３２４は論理演算処理を演算器に割当てる。後処理の結果に基づいてＲＴＬ記述が生成されて出力される。
【００３７】
なお、前処理手段３２１、スケジューリング手段３２２、バインディング手段３２３、後処理手段３２４の処理手段のそれぞれは必要に応じて記憶手段３０３のシステム内部表現記憶手段３３１に対して書き出しおよび読み込みを行いシステムの内部表現を更新する。
【００３８】
次に、図４のフローチャートを参照して第２の実施形態による動作合成装置の動作について詳細に説明する。
【００３９】
まず、利用者により用意された動作レベルの回路記述を入力手段３０１から入力する（ステップＳ４０１）。
【００４０】
入力手段３０１から与えられた動作レベルの回路記述はデータ処理手段３０２の前処理手段３２１に供給される。前処理手段３２１は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する（ステップＳ４０２）。
【００４１】
変換された内部表現はデータ処理手段３０２のスケジューリング手段３２２に送られる。スケジューリング手段３２２はノードのスケジューリング（処理サイクルの決定）を実行する。
【００４２】
スケジューリングされていないノードが残っているかどうかが判定される（ステップＳ４０５）。
【００４３】
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段３２３に送られバインディング処理が行われる。バインディング手段３２３はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する（ステップＳ４１２）。
【００４４】
スケジューリングしていないノードが残っている場合、スケジューリング手段３２２はスケジューリングしていないノードの一つを選択する（ステップＳ４０６）。
【００４５】
検出手段３２５は選択したノードの状態を検出し、検出したノードの状態をスケジューリング手段３２２に通知する。本実施例においてノードの状態はノードが使用するポートの数及び演算器の数を含む。スケジューリング手段３２２はそのノードが対象としている演算ノードすなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられる演算ノードであるか否かを判定する（ステップＳ４０７）。選択したノードが対象とする演算ノードでない場合、選択したノードは従来型の演算ノードであり、関連技術に記載の方法でスケジューリング処理される（ステップＳ４１０）。
【００４６】
選択したノードが対象とする演算ノードである場合スケジューリング手段３２２は、スケジューリング処理しようとするサイクルにおける演算器の数がスケジューリングによって演算ノードに課される所定の制約を満たすかどうかを判定する（ステップＳ４０８）。
【００４７】
演算器数が所定の制約を満たさない場合、スケジューリング手段３２２は次の状態以降において対象とする演算ノードをスケジューリングする（ステップＳ４１１）。演算器数が所定の制約を満たす場合、スケジューリング手段３２２は選択した演算ノードの入出力ポート数がスケジューリングしようとするサイクルにおいて演算ノードに課される所定の制約を満たすかどうかを判定する（ステップＳ４０９）。
【００４８】
選択した演算ノードの入出力ポート数が所定の制約を満たさない場合、スケジューリング手段３２２は次の状態以降において選択した演算ノードをスケジューリングする（ステップＳ４１１）。選択した演算ノードの入出力ポート数が所定の制約を満たす場合、スケジューリング手段３２２は選択した演算ノードに割当てられるモジュールに応じてスケジューリングを行う（ステップＳ４１０）。
【００４９】
ステップＳ４０５に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
【００５０】
ここではバインディング処理がスケジューリング処理の後に行われるが、両方の処理を平行して処理することは可能である。
【００５１】
後処理手段３２４はバインディング手段３２３の処理結果をもとに後処理を行う（ステップＳ４１３）。後処理の結果を基にＲＴＬ記述が生成され、出力手段３０４から出力される（ステップＳ４１４）。
【００５２】
本実施形態の動作合成装置３１０ではスケジューリング手段３２２がスケジューリングにおいて演算ノードに課されるポート数の制約を満たすようにスケジューリング処理を実行する（ステップＳ４０９）。これにより、非同期演算と同期演算を切替えるモジュールのスケジューリングが可能になる。
【００５３】
図５は第２の実施形態の動作合成装置３１０が処理するモジュール５０５の構成を例示するブロック図である。モジュール５０５は演算器５５４、フリップフロップ５５３、フリップフロップ５５３の出力と演算器５５４の出力とを切替えるセレクタ（切替手段）５５１、演算器５５４への入力信号線５５５、セレクタ５５１の出力線５５６、セレクタ５５１へ選択の指示を送る選択線５５２を含む。セレクタ選択線５５２によりモジュール５０５は非同期と同期とを切替える。
【００５４】
図６は第２の実施形態の動作合成装置３１０が処理する他のモジュール６０５の構成を例示するブロック図である。モジュール６０５は第１演算器６５７ａ、第２演算器６５７ｂ、第１演算器６５７ａの出力と第２演算器６５７ｂの出力とを切替えるセレクタ（切替手段）６５１、演算器への入力信号線６５５、セレクタ６５１の出力線６５６、セレクタ６５１へ選択の指示を送る選択線６５２を含む。セレクタ選択線６５２によりモジュール６０５は第１演算器６５７ａと第２演算器６５７ｂとを切替える。
【００５５】
これらのモジュールでは演算器にフリップフロップを組合せて切替え、或は２つの演算器を組合せて切替えることにより非同期演算と同期演算を切替える。
【００５６】
以下動作合成装置３１０の動作を具体的に説明する。図７乃至図９は第２の実施形態の動作合成装置３１０でのスケジューリングの例を示す。
【００５７】
図７は図８以降のスケジューリングの状態を示す図面における演算器の入力ポートと出力ポートの定義を示す。すなわち、演算器７５４は入力ポート７７１及び７７２を備えこれらの組を入力ポートペアと称する。さらに演算器７５４は出力ポート７７３を備える。
【００５８】
図８はスケジューリング処理しようとする１つのサイクルにおいて状態ｎ−１乃至状態ｎ＋１のそれぞれにおける演算器のスケジューリングの状態（同期或は非同期）を示す。図８において前後の状態の間をまたがった演算器すなわち状態の境界線上にある演算器を同期演算器、それ以外の位置にある演算器を非同期演算器と称する。
【００５９】
図９は図８における同期／非同期の組み合わせによる分類を示す。図８（ａ）乃至図８（ｈ）のそれぞれについてスケジューリング時の状態ｎ及び状態ｎ＋１における入力ポートペア数、出力ポート数及び必要モジュール数を示す。すなわち、状態ｎ及び状態ｎ＋１のそれぞれにおいて図７に示す入力ポートペアの数、出力ポートの数を示す。また、図９はこれらの入力ポートペアの数と出力ポートの数に基づいて決定した必要とされるモジュールの数を示す。
【００６０】
図８（ａ）では非同期演算器が状態ｎ及び状態ｎ＋１にスケジューリングされており、図５に示すモジュール５０５一つで実現できる。
【００６１】
図８（ｂ）では同期演算器が状態ｎ−１と状態ｎとの境界上及び状態ｎと状態ｎ＋１との境界上にスケジューリングされており、図５に示すモジュール５０５一つで実現できる。
【００６２】
図８（ｃ）は図９の（ｃ）に示すように状態ｎで入力ポートペア数が２となる。このため、図５に示すモジュール５０５一つでは実現できない。従って、図５に示すモジュールが二つ以上必要となる。このような構成に対しては演算ノードのポート数に制約を課すことにより（ステップＳ４０９）図８（ｃ）に示す同期演算器を図８（ａ）のように状態ｎ＋１の非同期演算器としてスケジューリングすればよい。このとき、図８（ｃ）で示される構成は図５に示すモジュール５０５一つで実現できる。或はまた、演算ノードのポート数に制約を課すことにより（ステップＳ４０９）図８（ｃ）に示す同期演算器を図８（ｄ）に示す同期演算器のようにスケジューリングすればよい。このとき、図８（ｃ）で示される構成は図５に示すモジュール５０５一つで実現できる。
【００６３】
図８（ｅ）は図９の（ｅ）に示すように状態ｎで出力ポート数が２となる。このため、図５に示すモジュール５０５一つでは実現できない。従って、図５に示すモジュールが二つ以上必要となる。このような構成に対しては演算ノードのポート数に制約を課すことにより（ステップＳ４０９）図８（ｅ）に示す非同期演算器を図８（ｂ）に示す同期演算器のようにスケジューリングすればよい。このとき、図８（ｅ）で示される構成は図５に示すモジュール５０５一つで実現できる。或はまた、演算ノードのポート数に制約を課すことにより（ステップＳ４０９）図８（ｅ）に示す非同期演算器を図８（ｆ）に示すように状態ｎ＋１の非同期演算器としてスケジューリングすればよい。このとき、図８（ｅ）で示される構成は図５に示すモジュール５０５一つで実現できる。
【００６４】
図８（ｇ）は状態ｎ−１で入力すると状態ｎ＋１で結果が出力されるような同期演算器を含むスケジューリングの一例を示す。図６に示したモジュール６０５において第１演算器を図８（ｇ）に示される同期演算器にし、第２演算器を非同期演算器にすればよい。このようなモジュールであれば一つのモジュールにより図８（ｈ）で示されるスケジューリングが可能である。
【００６５】
以上のように本実施形態の動作合成装置は演算ノードのポート数に制約を課しながらスケジューリング処理を実行する。これにより非同期演算と同期演算とが切替え可能なモジュールを用いたスケジューリングが可能になる。
［第３の実施形態］
図１０のフローチャートを参照して第３の実施形態による動作合成装置３１０の動作について詳細に説明する。
【００６６】
本実施形態による動作合成装置の構成は第２の実施形態での動作合成装置の構成と同一であるので説明を省略する。
【００６７】
まず、利用者により用意された動作レベルの回路記述を入力手段３０１から入力する（ステップＳ１００１）。
【００６８】
入力手段３０１から与えられた動作レベルの回路記述はデータ処理手段３０２の前処理手段３２１に供給される。前処理手段３２１は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する（ステップＳ１００２）。
【００６９】
変換された内部表現はデータ処理手段３０２のスケジューリング手段３２２に送られる。スケジューリング手段３２２はノードのスケジューリング（処理サイクルの決定）を実行する。
【００７０】
スケジューリングされていないノードが残っているかどうかが判定される（ステップＳ１００５）。
【００７１】
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段３２３に送られバインディング処理が行われる。バインディング手段３２３はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する（ステップＳ１０１２）。
【００７２】
スケジューリングしていないノードが残っている場合、スケジューリング手段３２２はスケジューリングしていないノードの一つを選択する（ステップＳ１００６）。
【００７３】
検出手段３２５は選択したノードの状態を検出し、検出したノードの状態をスケジューリング手段３２２に通知する。本実施例においてノードの状態はノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段３２２はそのノードが対象としているノード、すなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられるノードであるか否かを判定する。本実施形態の場合、スケジューリング手段３２２は以下に説明する演算メモリモジュール或は演算ポートモジュールに割当て可能なノードであるかを判定する（ステップＳ１０１５）。選択したノードが対象とするノードでない場合、選択したノードは従来型の演算ノードであり関連技術に記載の方法でスケジューリング処理される（ステップＳ１０１０）。
【００７４】
選択したノードが対象とするノードである場合、スケジューリング手段３２２は選択したノードの状態がスケジューリングしようとするサイクルにおいてこのノードに課される所定の制約を満たすかどうかを判定する（ステップＳ１００８）。
【００７５】
選択したノードの状態が所定の制約が満たさない場合、スケジューリング手段３２２は次の状態以降において対象とするノードをスケジューリングする（ステップＳ１０１１）。
【００７６】
選択したノードの状態が所定の制約を満たす場合であって選択したノードが演算器に関するノードである場合、スケジューリング手段３２２はモジュールにおける演算器に対応するメモリの使用数（演算メモリモジュールの場合）、或は演算器に対応するポートの使用数（演算ポートモジュールの場合）を連動して増加させる。選択したノードの状態が所定の制約を満たす場合であって選択したノードがメモリ或はポートに関するノードである場合、スケジューリング手段３２２はモジュールにおけるメモリ或はポートに対応する演算器の使用数を連動して増加させる（ステップＳ１０１７）。スケジューリング手段３２２は選択したノードに割当てられるモジュールに応じてスケジューリングを実行する（ステップＳ１０１０）。
【００７７】
ステップＳ１００５に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
【００７８】
ここでは、バインディング処理がスケジューリング処理の後に行われるが両方の処理を平行して処理することは可能である。
【００７９】
後処理手段３２４はバインディング手段３２３の処理結果をもとに後処理を行う（ステップＳ１０１３）。ＲＴＬ記述が後処理の結果を基に生成され、出力手段３０４から出力される（ステップＳ１０１４）。
【００８０】
本実施形態の動作合成装置３１０ではスケジューリング手段３２２が演算器の使用数とメモリの使用数、或は演算器の使用数とポートの使用数が連動するようにスケジューリング処理を実行する（ステップＳ１０１７）。これにより、演算器とメモリとを切替えて使用できるモジュール、或は演算器とポートとを切替えて使用できるモジュールのスケジューリングが可能になる。
【００８１】
図１１は第３の実施形態の動作合成装置３１０が処理するモジュール１１０５の構成を例示するブロック図である。モジュール１１０５は演算器１１５４、メモリ１１５８、演算器１１５４の出力とメモリ１１５８の出力とを切替えるセレクタ（切替手段）１１５１、演算器１１５４とメモリ１１５８への入力信号線１１５５、セレクタ１１５１の出力線１１５６、セレクタ１１５１へ選択の指示を送る選択線１１５２を含む。セレクタ選択線１１５２によりモジュール１１０５は演算器１１５４とメモリ１１５８とを切替える。
【００８２】
以下、動作合成装置３１０の動作を具体的に説明する。
【００８３】
図１２は第３の実施形態の動作合成装置３１０でスケジューリングしようとする１つのサイクルのスケジューリング例を示す。図１１に示すモジュール１１０５が二つ以上あれば図１２（ａ）に示すように演算器とメモリを同一の状態ｎにスケジューリングすることができる。図１１に示すモジュール１１０５の数が一つに制約された場合、状態ｎに演算器がスケジューリングされるとステップＳ１０１７において状態ｎでのメモリ使用数が演算器の数に連動して増えて１になる。このとき、状態ｎでの使用可能なメモリ数は１から０に減少する。すなわち、図１１に示すモジュール１１０５に含まれるメモリ１１５８は状態ｎでは使用できない。従って、状態ｎにメモリをスケジューリングすることができなくなる。この結果、図１２（ｂ）のようにメモリは演算器と別の状態ｎ＋１にスケジューリングされる。
【００８４】
図１３は第３の実施形態の動作合成装置３１０が処理する他のモジュール１３０５の構成を例示するブロック図である。モジュール１３０５は演算器１３５４、セレクタ１３６１、演算器１３５４の出力と入力ポートからの信号１３６０とを切替えるセレクタ（切替手段）１３５１、演算器１３５４とセレクタ１３６１への入力信号線１３５５、セレクタ１３５１の出力線１３５６、セレクタ１３６１及びセレクタ１３５１へ選択の指示を送る選択線１３５２、出力ポートへの信号線１３５９を含む。セレクタ選択線１３５２によりモジュール１３０５は演算器１３５４と入出力ポートとを切替える。
【００８５】
図１４は第３の実施形態の動作合成装置３１０でスケジューリングしようとする１つのサイクルのスケジューリング例を示す。図１３に示すモジュール１３０５が二つ以上あれば図１４（ａ）に示すように演算器と入力ポートを同一の状態ｎにスケジューリングすることができる。図１３に示すモジュール１３０５の数が一つに制約された場合、状態ｎに演算器がスケジューリングされるとステップＳ１０１７において状態ｎでの入力ポート使用数が演算器の数に連動して増えて１になる。このとき、状態ｎでの使用可能な入力ポート数は１から０に減少する。すなわち、図１３に示すモジュール１３０５に含まれる入力ポートは状態ｎでは使用できない。従って、状態ｎに入力ポートをスケジューリングすることができなくなる。この結果、図１４（ｂ）のように入力ポートは演算器と別の状態ｎ＋１にスケジューリングされる。
【００８６】
以上のように、本実施形態の動作合成装置は選択したノードにおける演算器の数に対応するようにポートの数或はメモリの数を制約しながらスケジューリング処理を実行する。これによって演算器とメモリとを切替えて使用可能なモジュール、或は演算器とポートとを切替えて使用可能なモジュールを用いたスケジューリングが可能になる。
［第４の実施形態］
図１５のフローチャートを参照して第４の実施形態による動作合成装置３１０の動作について詳細に説明する。
【００８７】
本実施形態による動作合成装置の構成は第２の実施形態での動作合成装置の構成と同一であるので説明を省略する。
【００８８】
まず、利用者により用意された動作レベルの回路記述を入力手段３０１から入力する（ステップＳ１５０１）。
【００８９】
入力手段３０１から与えられた動作レベルの回路記述はデータ処理手段３０２の前処理手段３２１に供給される。前処理手段３２１は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する（ステップＳ１５０２）。
【００９０】
変換された内部表現はデータ処理手段３０２のスケジューリング手段３２２に送られる。スケジューリング手段３２２はノードのスケジューリング（処理サイクルの決定）を実行する。
【００９１】
スケジューリングされていないノードが残っているかどうかが判定される（ステップＳ１５０５）。
【００９２】
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段３２３に送られバインディング処理が行われる。バインディング手段３２３はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する（ステップＳ１５１２）。
【００９３】
スケジューリングしていないノードが残っている場合、スケジューリング手段３２２はスケジューリングしていないノードの一つを選択する（ステップＳ１５０６）。
【００９４】
検出手段３２５は選択したノードの状態を検出し検出したノードの状態をスケジューリング手段３２２に通知する。本実施例においてノードの状態は例えば、ノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段３２２はそのノードが対象としているノード、すなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられるノードであるか否かを判定する。本実施形態の場合、スケジューリング手段３２２は以下に説明するメモリポートモジュール或は演算メモリポートモジュールであるかを判定する（ステップＳ１５１８）。選択したノードが対象とするノードでない場合、選択したノードは従来型の演算ノードでありスケジューリング手段３２２は選択したノードを関連技術に記載の方法でスケジューリング処理する（ステップＳ１５１０）。
【００９５】
選択したノードが対象とするノードである場合、スケジューリング手段３２２は選択したノードの状態がスケジューリングしようとするサイクルにおいてこのノードに課される所定の制約を満たすかどうかを判定する（ステップＳ１５０８）。
【００９６】
選択したノードの状態が所定の制約が満たさない場合、スケジューリング手段３２２は次の状態以降において対象とするノードをスケジューリングする（ステップＳ１５１１）。
【００９７】
選択したノードの状態が所定の制約を満たす場合であって選択したノードがメモリに関するノードである場合、スケジューリング手段３２２はモジュールにおけるメモリに対応する演算器及びポートの使用数を連動して増加させる。スケジューリング手段３２２は選択したノードがポートに関するノードである場合、モジュールにおけるポートに対応する演算器及びメモリの使用数を連動して増加させる。そして、スケジューリング手段３２２は同一状態にスケジューリングしたこれら使用数の情報を記憶手段３０３に保存する（ステップＳ１５１９）。スケジューリング手段３２２は選択したノードに割当てられるモジュールに応じて記憶手段３０３に保存された演算器、メモリ及びポートの使用数の情報を参照してスケジューリングを実行する（ステップＳ１５１０）。
【００９８】
ステップＳ１５０５に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
【００９９】
ここでは、バインディング処理がスケジューリング処理の後に行われるが両方の処理を平行して処理することは可能である。
【０１００】
後処理手段３２４はバインディング手段３２３の処理結果をもとに後処理を行う（ステップＳ１５１３）。その後、後処理の結果を基に生成されたＲＴＬ記述が出力手段３０４から出力される（ステップＳ１５１４）。
【０１０１】
本実施形態の動作合成装置３１０ではスケジューリング手段３２２がポートの使用数とメモリに使用数が連動するようにスケジューリング処理を実行する。このスケジューリング処理では３つ続いた状態に亘るスケジューリングが必要である。ポートの使用数とメモリの使用数の情報を記憶手段３０３に保存しスケジューリング処理において記憶手段３０３に保存されたポートの使用数とメモリの使用数の情報を参照する（ステップＳ１５１９）。これらの処理によりメモリとポートとを切替えられるモジュール、或は演算器とメモリとポートとを切替えられるモジュールのスケジューリングが可能になる。
【０１０２】
図１６は第４の実施形態の動作合成装置３１０が処理するモジュール１６０５の構成を例示するブロック図である。モジュール１６０５は、メモリ１６５８、セレクタ１６６１、メモリ１６５８の出力と入力ポートからの信号１６６０とを切替えるセレクタ（切替手段）１６５１、メモリ１６５８とセレクタ１６６１への入力信号線１６５５、セレクタ１６５１の出力線１６５６、セレクタ１６５１へ選択の指示を送る選択線１６５２、出力ポートへの信号１６５９を含む。セレクタ選択線１６５２によりメモリ１６５８と入出力ポートとを切替える。
【０１０３】
以下、動作合成装置３１０の動作を具体的に説明する。
【０１０４】
図１７は第４の実施形態の動作合成装置３１０でスケジューリングしようとする１つのサイクルのスケジューリング例を示す。図１７（ａ）では図１６に示すモジュール１６０５が二つあれば実現できる。すなわち、入力ポートｉ_ｘとメモリａｒｙ１とを格納したモジュールと入力ポートｉ_ｙとメモリａｒｙ２とを格納したモジュールが必要である。
【０１０５】
一方、図１７（ｂ）では入力ポートｉ_ｘとメモリａｒｙ１とを一つのモジュールに格納し入力ポートｉ_ｙとメモリａｒｙ２とをもう一つのモジュールに格納してもスケジューリングできない。また、入力ポートｉ_ｘとメモリａｒｙ２とを一つのモジュールに格納し入力ポートｉ_ｙとメモリａｒｙ１とをもう一つのモジュールに格納してもスケジューリングできない。従って、三つ以上のモジュールが必要である。このようなモジュール数の決定はステップＳ１５１９で記憶手段３０３に保存された演算器やポートやメモリの使用数の情報をステップＳ１５１６で参照することにより実現できる。
【０１０６】
図１８は第４の実施形態の動作合成装置３１０が処理する他のモジュール１８０５の構成を例示するブロック図である。モジュール１８０５は演算器１８５４、メモリ１８５８、セレクタ１８６１、演算器１８５４の出力とメモリ１８５８の出力と入力ポートからの信号１８６０とを切替えるセレクタ（切替手段）１８５１、演算器１８５４とメモリ１８５８とセレクタ１８６１への入力信号線１８５５、セレクタ１８５１の出力線１８５６、セレクタ１８５１へ選択の指示を送る選択線１８５２、出力ポートへの信号線１８５９を含む。セレクタ選択線１８５２により演算器１８５４とメモリ１８５８と入出力ポートとを切替える。本発明の動作合成装置３１０を用いたスケジューリングは図１６に示すモジュール１６０５と同様である。
【０１０７】
本実施形態の動作合成装置３１０では検出手段３２５が各状態にスケジューリングしたポートやメモリの情報を記憶手段３０３に保存する。スケジューリング手段３２２はその情報をスケジューリングにおける制約条件として参照する。これにより、メモリとポートとを切替えて使用できるモジュール、或は演算器とメモリとポートとを切替えて使用できるモジュールのスケジューリングが可能になる。
【０１０８】
以上、本発明の好適な実施形態について説明したが本発明はこれに限定されるものではなく要旨を逸脱しない範囲内で種々の変形実施が可能である。上述した本実施形態における制御動作はハードウェア、またはソフトウェア、あるいは両者を複合した構成を用いて実行することも可能である。
【０１０９】
なおソフトウェアを用いて処理を実行する場合処理シーケンスを記録したプログラムを専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させることが可能である。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【０１１０】
なお、上述の処理動作を実行させるためのプログラムをフレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、磁気ディスク、半導体メモリなどのコンピュータ読取可能な記録媒体に格納して配布し当該プログラムをコンピュータにインストールすることにより上述の処理動作を実行する装置を構成しても良い。
【符号の説明】
【０１１１】
１１０、３１０    動作合成装置  
１２２、３２２    スケジューリング手段
１２３、３２３    バインディング手段
１２５、３２５    検出手段
３０１    入力手段
３０２    データ処理手段
３０３    記憶手段
３０４    出力手段
３２１    前処理手段
３２４    後処理手段
３３１    システム内部表現記憶手段
５０５、６０５、１１０５、１３０５、１６０５、１８０５    モジュール
５５１、６５１、１１５１、１３５１、１６５１、１８５１    セレクタ
１３６１、１６６１、１８６１    セレクタ
５５２、６５２、１１５２、１３５２、１６５２、１８５２    セレクタの選択線
５５３    フリップフロップ
５５４、７５４、１１５４、１３５４、１８５４    演算器
５５５、６５５、１１５５、１３５５、１６５５，１８５５    入力信号線
５５６、６５６、１１５６、１３５６、１６５６、１８５６    モジュールの出力線
６５７ａ    第１演算器
６５７ｂ    第２演算器
１１５８、１６５８、１８５８    メモリ
１３５９、１６５９、１８５９    出力ポートへの信号線
１３６０、１６６０、１８６０    入力ポートからの信号線
７７１、７７２    入力ポート
７７３    出力ポート
【図１】
2010224864.tif 000003
【図２】
2010224864.tif 000004
【図３】
2010224864.tif 000005
【図４】
2010224864.tif 000006
【図５】
2010224864.tif 000007
【図６】
2010224864.tif 000008
【図７】
2010224864.tif 000009
【図８】
2010224864.tif 000010
【図９】
2010224864.tif 000011
【図１０】
2010224864.tif 000012
【図１１】
2010224864.tif 000013
【図１２】
2010224864.tif 000014
【図１３】
2010224864.tif 000015
【図１４】
2010224864.tif 000016
【図１５】
2010224864.tif 000017
【図１６】
2010224864.tif 000018
【図１７】
2010224864.tif 000019
【図１８】
2010224864.tif 000020