(57)【特許請求の範囲】
【請求項１】
ループ処理を含む動作記述からＲＴＬ（Register Transfer Level）記述を合成する動作合成システムであって、
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理部と、
前記ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理と、前記ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理と、を行うスケジューリング・バインディング処理部と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理部と、
前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むＲＴＬ記述を生成するＲＴＬ記述生成処理部と、
を有する動作合成システム。
【請求項２】
前記ループ間依存関係情報は、前記依存ループ処理に含まれるコントロールステップが実行可能な状態となる実行条件を含む請求項１に記載の動作合成システム。
【請求項３】
前記制御回路は、予め決められた複数の状態を、決められた条件に従って、決められた順番で遷移するステートマシーンである請求項１又は２に記載の動作合成システム。
【請求項４】
前記第１の制御論理は、前記ループ処理のコントロールステップ毎に実行するか否かを制御する請求項１乃至３のいずれか１項に記載の動作合成システム。
【請求項５】
複数のステージを含み、ステージ毎にパイプライン処理が行われ、
前記制御回路作成処理部は、前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、前記ステージ毎の実行状態を制御する第３の制御論理を含む前記制御回路を生成する請求項１乃至４のいずれか１項に記載の動作合成システム。
【請求項６】
記憶装置と演算回路とを有する動作合成システムにおいて前記演算回路における処理によりループ処理を含む動作記述からＲＴＬ（Register Transfer Level）記述を合成する動作合成方法であって、
前記ループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成し、
前記ループ処理の演算を実行するコントロールステップを決定し、
前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理を行い、
前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理の処理結果と前記ループ間依存関係情報とに応じて生成し、
前記演算器と前記レジスタとを用いてデータパスを作成し、
前記データパスと前記制御回路とを含むＲＴＬ記述を合成する動作合成方法。
【請求項７】
演算回路において実行され、記憶装置に格納された動作記述からＲＴＬ（Register Transfer Level）記述を合成し、当該ＲＴＬ記述を前記記憶装置に格納する動作合成プログラムであって、
前記動作記述に含まれるループ処理の間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理と、
前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理と、
前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理と、
前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むＲＴＬ記述を生成するＲＴＬ記述生成処理と、
を行う動作合成プログラム。
【請求項８】
他のループ処理との依存関係を有さない第１のループ処理を実行する第１のループ処理回路と、
他のループ処理との依存関係を有する第２のループ処理を実行する第２のループ処理回路と、
前記第１、第２のループ処理回路のコントロールステップの実行状態を制御する第１の制御論理と、他のループ処理の処理結果に応じて前記第２のループ処理の実行状態を制御する第２の制御論理と、を含む制御回路と、
を有する半導体装置。
【請求項９】
前記第１、第２のループ処理回路は、パイプライン処理により前記第１、第２のループ処理を実行し、
前記制御回路は、前記第２のループ処理の実行状態を前記パイプライン処理のステージ毎に制御する第３の制御論理を含む請求項８に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は動作合成システム、動作合成方法、動作合成用プログラム及び半導体装置に関し、特に動作が直列に記述された動作記述に基づいて当該動作を並列して実行するＲＴＬ記述を生成する動作合成システム、動作合成方法、動作合成用プログラム及びこれを用いて設計された半導体装置に関する。
【背景技術】
【０００２】
近年、論理回路を含む半導体装置では、回路規模が増大しており、設計期間の長期化が問題となっている。そこで、論理回路の動作手順を記述した動作記述からＲＴＬ（Register Transfer Level）記述を合成する動作合成システムが用いられている。この動作合成システムを用いることで設計効率を高めることができる。
【０００３】
動作記述は、例えばＣ言語、Ｃ＋＋言語、Ｊａｖａ（登録商標）言語などのソフトウェアプログラミング言語や、ＳｙｓｔｅｍＣやＳｐｅｃＣといったソフトウェアプログラム言語に半導体回路設計のために拡張を施した言語で記述される。
【０００４】
このような、ソフトウェアプログラム言語で記述された動作記述から、高性能な半導体回路を合成するためには、動作記述中のループ処理を高速に実行することのできる半導体回路を合成することが望まれる。なぜなら、動作記述中のループ処理の処理速度が、全体の処理性能に大きな影響を与えるためである。
【０００５】
単一のループを高速に実行できる回路の動作合成技術の一例に、ループパイプライン技法（もしくは、ループフォールディング技法、パイプライン技法とも呼ばれる）が存在する。ループパイプライン技法は、ループの一回分の処理（以下、イタレーションと呼ぶ）が終了する以前に、次の一回分の処理（イタレーション）の実行を開始するという「パイプライン動作」を行うことにより、単一のループを高速に実行する回路を合成する技法である。特許文献１乃至８、非特許文献１乃至２などループパイプライン技法の実現方法が従来数々提案されている。
【０００６】
ループパイプライン技法の実現方法としては、種々のループ構造に対応可能であることが望ましく、特に、多重にネストしたループに適用可能であることが望ましい。特許文献９を参照すると、多重にネストしたループに対するループパイプライン技法の実現方法が示されている。
【０００７】
しかしながら、現状の動作合成技術は、ループパイプライン技法のように、単一のループを高速に実行できる回路の合成に主眼がおかれ、逐次的に記述された複数のループを並列に実行して高速に処理を実行するような回路の合成を自動的に行うことができない。
【０００８】
逐次的に記述された複数のループ処理を並列に実行できなければ、先行するループの完了を待ってからしか後続のループ処理の実行を開始することができないため、複数のループ処理が逐次的に記述された回路全体の処理を高速に行うことができない。
【０００９】
例えば、動作記述はプログラミング言語の記述に沿って記載される。このプログラミング言語の記載は、一般的に、並列的に処理可能な動作であっても上から下に向かって動作を記載していく形態をとる。そのため、動作記述がループ処理Ｌ１〜Ｌ４を含む場合、動作合成により生成される回路は、ループ処理Ｌ１〜Ｌ４を逐次処理する形態となる。このような回路では処理時間は、ループ処理Ｌ１〜Ｌ４の処理時間の総和となる。一方、ループ処理Ｌ１〜Ｌ４を並列して処理した場合、回路の処理時間は、ループ処理Ｌ１〜Ｌ４の処理時間のうちもっと長い処理時間となる。
【００１０】
そこで、非特許文献３に、直列に記述された複数のループを並列に実行する回路を合成することのできる動作合成技術が示されている。非特許文献３の図４．６を参照すると、直列に記述された複数のループを並列に実行する様子が例示されている（図Loop-level parallelismを参照のこと）。
【００１１】
さらに、非特許文献３の４．３．２節並びに図４．７及び図４．８を参照すると、動作合成技術で合成される論理回路の概要が例示されている。動作合成技術では、１つのループの実行を１つの処理要素（プロセッシングアレイ；Processing array；PA）で実現する。このＰＡは、Very Long Instruction Word (VLIW)プロセッサ型と呼ばれる定型のアーキテクチャで実現される。また、このＰＡは、有限状態機械で実現された制御回路を有しており、ループ内の処理の実行は該制御回路にて制御されている。複数のＰＡの実行は、タイミングコントローラ（Timing Controller）によって制御される。
【００１２】
また、特許文献１０に、ループを分割することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献１０の技術では、動作合成可能な記述で書かれたソースから、自動的に配列に関する記述のあるループ文を検出し、そのうち代入に関する記述のあるループ回数と、参照に関する記述のあるループ回数からグループ単位に回路構造を分割する。
【００１３】
また、特許文献１１並びに特許文献１２に、予めスレッド間同期通信が記述された動作記述から、スレッドが並列に実行されるような回路を合成する動作合成技術が示されている。
【００１４】
また、特許文献１３に、ループを併合（マージ）することにより、複数のループを並列に実行できる回路を合成する動作合成技術が示されている。特許文献１３の技術では、第１のループと第２のループと間に依存関係がある場合、２つのループをお互いに、部分的、又は完全に併合（マージ）し、１つのループとして合成する。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開平０８−４４７７３号公報
【特許文献２】特開２００３−３０２６１号公報
【特許文献３】特開２００７−２７２７９７号公報
【特許文献４】特開２００７−２８７０４４号公報
【特許文献５】特開２００４−３２６４６３号公報
【特許文献６】特開平０６−６０１４７号公報
【特許文献７】特開２００９−２５９７３号公報
【特許文献８】特開２００６−３５０８４９号公報
【特許文献９】特開２００９−２３８０８５号公報
【特許文献１０】特開２００２−２６９１６２号公報
【特許文献１１】特開２０００−５７１８０号公報
【特許文献１２】特開２００１−４３２５１号公報
【特許文献１３】特表２００８−５０１１８５号公報
【非特許文献】
【００１６】
【非特許文献１】John P. Elliott, 「Understanding Behavioral Synthesis」, Kluwer Academic Publishers, pp. 26-40
【非特許文献２】Cheng-Tsung Hwang et al., 「Scheduling for Functional Pipelining and Loop Winding」, 28th, ACM/IEEE Design Automation Conference, p764-769.
【非特許文献３】Philippe Coussy and Adam Morawiec編,「High-Level Synthesis, From Algorithm to Digital Circuit」, Springer, pp. 53-74
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、非特許文献３及び特許文献１０〜１３記載の技術では、依存関係を有するループ処理がある場合に合成できる回路に何らかの制限が課されてしまい、設計の効率が低下する問題がある。以下にそれぞれの技術についての問題点の具体的内容を示す。
【００１８】
非特許文献３では、合成される回路がＶＬＩＷプロセッサ型と呼ばれるアーキテクチャに固定されており、自由度が低い。また、非特許文献３は、複数のＰＡの実行の制御、すなわち、複数のループの実行の制御のために、タイミングコントローラという特別な制御回路が必要になるためである。つまり、非特許文献３に記載の技術では、扱うことができるループ処理の種類に制限があり、かつ、制御の複雑化（及び回路面積の増大）という問題がある。
【００１９】
特許文献１０では、二つのループの実行回数に特別な関係が成り立つときのみ適用可能である。例えば、ループの実行回数が予め分からないような記述に対しては適用することができない。つまり、特許文献１０に記載の技術では、合成できる回路に限りがあるという問題がある。
【００２０】
特許文献１１及び１２では、動作記述に予めスレッド間同期通信に関する記述されていなければならない。すなわち、特許文献１１及び１２では、スレッド間同期通信が記述されていない動作記述からはループが並列動作する回路を合成することができない。つまり、特許文献１１及び１２の技術の問題点は、合成できる回路が限られているということである。
【００２１】
特許文献１３で、ループの構造が複雑であり、ループを併合できない場合には適用できない。つまり、特許文献１３の技術の問題点は、合成できる回路が限られているということである。
【課題を解決するための手段】
【００２２】
本発明にかかる動作合成システムの一態様は、動作記述からＲＴＬ（Register Transfer Level）記述を合成する動作合成システムであって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理部と、前記ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理と、前記ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理と、を行うスケジューリング・バインディング処理部と、前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理部と、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むＲＴＬ記述を生成するＲＴＬ記述生成処理部と、を有する。
【００２３】
本発明にかかる動作合成方法の一態様は、動作記述からＲＴＬ（Register Transfer Level）記述を合成する動作合成方法であって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成し、前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定し、前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成し、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むＲＴＬ記述を生成する。
【００２４】
本発明にかかる動作合成プログラムの一態様は、演算回路において実行され、記憶装置に格納された動作記述からＲＴＬ（Register Transfer Level）記述を合成し、当該ＲＴＬ記述を前記記憶装置に格納する動作合成プログラムであって、前記動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成するループ間依存関係解析処理と、前記ループ処理の演算を実行するコントロールステップを決定し、前記ループ処理の演算を行う演算器とデータを格納するレジスタとを決定するスケジューリング・バインディング処理と、前記ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理と、前記ループ処理の前記実行条件に基づき当該ループ処理の実行状態を制御する第２の制御論理と、を含む制御回路を前記スケジューリング・バインディング処理部の処理結果と前記ループ間依存関係情報とに応じて生成する制御回路作成処理と、前記演算器と前記レジスタとを用いてデータパスを作成し、前記データパスと前記制御回路とを含むＲＴＬ記述を生成するＲＴＬ記述生成処理と、を行う。
【００２５】
本発明にかかる半導体装置の一態様は、他のループ処理との依存関係を有さない第１のループ処理を実行する第１のループ処理回路と、他のループ処理との依存関係を有する第２のループ処理を実行する第２のループ処理回路と、前記第１、第２のループ処理回路の前記コントロールステップの実行状態を制御する第１の制御論理と、他のループ処理の処理結果に応じて前記第２のループ処理の実行状態を制御する第２の制御論理と、を含む制御回路と、を有する。
【発明の効果】
【００２６】
本発明にかかる動作合成システム、動作合成方法、動作合成プログラム及び半導体装置によれば、逐次的に記述された複数のループの間にデータ依存関係がある場合でも並列化を行い、該ループを同時に実行できるような回路を合成できる。
【図面の簡単な説明】
【００２７】
【図１】実施の形態１にかかる動作合成システムのブロック図である。
【図２】実施の形態１にかかる動作合成システムにおける論理合成方法の手順を示すフローチャートである。
【図３】実施の形態１にかかる動作合成システムで扱う動作記述の一例を示す図である。
【図４】図３に示す動作記述におけるループ処理間の依存関係を示す図である。
【図５】実施の形態１にかかる動作合成システムのスケジューリング・バインディング処理部がループＬ１を処理した結果の一例を示す図である。
【図６】実施の形態１にかかる動作合成システムのスケジューリング・バインディング処理部がループＬ２を処理した結果の一例を示す図である。
【図７】実施の形態１にかかる動作合成システムのスケジューリング・バインディング処理部がループＬ３を処理した結果の一例を示す図である。
【図８】実施の形態１にかかる動作合成システムのスケジューリング・バインディング処理部がループＬ４を処理した結果の一例を示す図である。
【図９】実施の形態１にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図１０】実施の形態１にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図１１】実施の形態１にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図１２】実施の形態１にかかる動作合成システムの制御回路作成処理部が生成するループ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図１３】実施の形態１にかかる動作合成システムの制御回路作成処理部が生成するループの実行を制御する第２の制御論理と図１２の第１の制御論理とを含む制御論理の状態遷移図である。
【図１４】実施の形態１にかかる論理合成システムが図３に示した動作記述から合成したＲＴＬ記述に基づき生成された半導体装置の回路図の例である。
【図１５】実施の形態２にかかる論理合成システムのブロック図である。
【図１６】実施の形態２にかかる論理合成システムにおける論理合成方法の手順を示すフローチャートである。
【図１７】実施の形態２にかかる動作合成システムのスケジューリング・バインディング処理部がループＬ４を処理した結果の一例を示す図である。
【図１８】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図１９】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図２０】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図２１】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図２２】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージ内のステップの実行を制御する第１の制御論理の状態遷移図である。
【図２３】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するステージの実行を制御する第３の制御論理の状態遷移図である。
【図２４】実施の形態２にかかる動作合成システムの制御回路作成処理部が生成するループの実行を制御する第２の制御論理を含む第３の制御論理の状態遷移図である。
【発明を実施するための形態】
【００２８】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。以下では、本発明にかかる動作合成システムでは、処理において用いる情報を格納する記憶装置を用いるが、これらは必須の構成要素ではなく、システムの構成において適宜設けられるものである。図１に実施の形態１にかかる動作合成システム１のブロック図を示す。図１に示すように、動作合成システム１は、記憶装置１０と、処理装置２０と、を有する。
【００２９】
記憶装置１０は、データやプログラムを格納する。ここでは、記憶装置１０の例として、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）、或いはフラッシュメモリ等の半導体記憶装置を挙げることができる。なお、記憶装置１０は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）等の外部記憶装置（ストレージ）でも良い。或いは、記憶装置１０は、ＤＶＤ（Digital Versatile Disk）やメモリカード等の記憶媒体（メディア）でも良い。また、記憶装置１０は、コンピュータ本体に内蔵された記憶装置に限らず、周辺機器（外付けＨＤＤ等）や外部のサーバ（ストレージサーバ等）に設置された記憶装置、或いは、ＮＡＳ（Network Attached Storage）でも良い。但し、実際には、これらの例に限定されない。
【００３０】
そして、動作合成システム１では、記憶装置１０は、動作記述記憶部１１とループ間依存関係情報記憶部１２とＲＴＬ記述記憶部１３を有する。動作記述記憶部１１は、動作合成システムの入力となる動作記述を予め記憶している。ループ間依存関係情報記憶部１２は、動作記述に記載されたループの間の依存関係を示すループ間依存関係情報を記憶する。ＲＴＬ記述記憶部１３は、動作合成システムが最終的に出力するＲＴＬ（Register Transfer Level）記述を記憶する。
【００３１】
処理装置２０は、プログラム制御により動作する。ここでは、処理装置２０の例として、ＣＰＵ（Central Processing Unit）やマイクロプロセッサ（microprocessor）等の処理装置、又は同様の機能を有する半導体集積回路（Integrated Circuit：ＩＣ）等を想定している。なお、処理装置２０は、ＰＣ（パーソナルコンピュータ）、シンクライアント端末／サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータでも良い。但し、実際には、これらの例に限定されない。処理装置２０は、ループ間依存関係解析処理部２１と、スケジューリング・バインディング処理部２２と、制御回路作成処理部２３と、ＲＴＬ記述生成処理部２４とを有する。
【００３２】
ループ間依存関係解析処理部２１は、記憶装置１０の動作記述記憶部１１から動作記述を読み出し、該動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出する。そして、ループ間依存関係解析処理部２１は、抽出した依存関係を示すループ間依存関係情報を生成する。このループ間依存関係情報は、記憶装置１０のループ間依存関係情報記憶部１２にループ間依存関係情報として記憶される。
【００３３】
スケジューリング・バインディング処理部２２は、ループ処理中の演算を実行するコントロールステップを決定するスケジューリング処理を行う。また、スケジューリング・バインディング処理部２２は、ループ処理中の演算を行う演算器とデータを格納するレジスタとを決定するバインディング処理を行う。
【００３４】
制御回路作成処理部２３は、スケジューリング・バインディング処理部２２の処理結果とループ間依存関係情報とに応じて、第１の制御論理と第２の制御論理とを含む制御回路を生成する。第１の制御論理は、ループ処理内のコントロールステップの実行状態を制御するものである。第２の制御論理は、ループ処理の実行条件に基づき当該ループ処理の実行状態を制御するものである。
【００３５】
ＲＴＬ記述生成処理部２４は、スケジューリング・バインディング処理部２２にて決定された演算器とレジスタからデータパスを作成し、該データパスと制御回路作成処理部２３にて作成された制御回路とを備えたＲＴＬ記述を作成し、記憶装置のＲＴＬ記述記憶部１３に格納する。
【００３６】
続いて、実施の形態１にかかる動作合成システム１の動作について説明する。図２に動作合成システム１の処理手順を示すフローチャートを示す。図２に示すように、動作合成システム１では、まず、ループ間依存関係解析処理部２１によるループ間依存関係解析処理（ステップＳ１）が行われる。ループ間依存関係解析処理では、まず、動作記述記憶部１１から動作記述を読み出す。そして、動作記述に含まれるループ処理間の依存関係を解析して、他のループ処理と依存関係を有する依存ループ処理の実行条件を抽出してループ間依存関係情報を生成する。
【００３７】
このループ間依存関係情報に含まれる実行条件には、前記依存ループ処理に含まれるコントロールステップが実行可能な状態となる条件が含まれる。例えば、ループ間依存関係情報には、ループの間に依存関係がない場合には「依存関係なし」という情報が記録される。また、ループ間に依存関係がある場合であって、先行するループの実行を完了する前に後続のループの実行を開始できる場合には、「後続のループが実行できるタイミング」の情報が記録される。後続のループが実行できるタイミングは、ループ中で読み書きされる変数の大小関係で表現される。また、例えば、ループの制御変数（ループ変数）の大小関係をもって表現される。また、ループ中でアクセスされる配列変数の添え字に使用されている変数の大小関係をもって表現される。ループ間依存関係情報は、ループ間依存関係情報記憶部１２に記憶される。つまり、ループ間依存関係解析処理では、いずれのループ処理がいずれのタイミングで実行できるかを解析する。
【００３８】
ループ間依存関係解析処理部２１はループ間依存関係解析処理に、例えば、Dror E. Maydan et al., "Efficient and exact data dependence analysis", Proceedings of conference on Programming language design and implementation, pp. 1-14，1991に記載の既存の技術を使用しても良い。
【００３９】
次いで、スケジューリング・バインディング処理部２２によるスケジューリング・バインディング処理（ステップＳ２）が行われる。スケジューリング・バインディング処理では、記憶装置１０の動作記述記憶部１１から動作記述を読み出す。そして、スケジューリング・バインディング処理では、動作記述に含まれる各ループ処理について演算を実行するコントロールステップを決定し（この処理をスケジューリング処理と称す）、各ループ処理の演算を行う演算器とデータを格納するレジスタとを決定する（この処理をバインディング処理と称す）。より具体的には、スケジューリング・バインディング処理のスケジューリング処理では、動作記述からＣＤＦＧ（Control Data Flow Graph）を作成する。このＣＤＦＧには、ループ処理のコントロールステップが記述されている。
【００４０】
スケジューリング・バインディング処理部２２は、スケジューリング処理、バインディング処理に、例えば、John P. Elliott, "Understanding Behavioral Synthesis", Kluwer Academic Publishers, pp. 25-40．に記載の既存の技術を使用しても良い。
【００４１】
次いで、制御回路作成処理部２３による制御回路作成処理（ステップＳ３）が行われる。制御回路作成処理では、スケジューリング・バインディング処理の処理結果とループ間依存関係情報とに基づき制御回路を生成する。制御回路作成処理において生成される制御回路には、第１の制御回路と第２の制御回路とが含まれる。制御回路作成処理は第１の制御回路を生成するステップＳ３１と、第２の制御回路を生成するステップＳ３２とを含む。まず、ステップＳ３１では、ループ処理内の前記コントロールステップの実行状態を制御する第１の制御論理を作成する。ここで、第１の制御論理は、スケジューリング・バインディング処理の結果に応じて作成される。この第１の制御論理は、第１の制御回路として実装される。第１の制御回路は、例えば、予め決められた複数の状態を、決められた条件に従って、決められた順番で遷移する有限状態機械（ＦＳＭ：Finite State Machine）で構成される。また、第１の制御回路は、ループ処理のコンロールステップ毎に実行するか否かを制御する。
【００４２】
次いで、ステップＳ３２では、ループ処理の実行条件に基づきループ処理の実行状態を制御する第２の制御論理を作成する。ここで、ループ処理の実行条件は、ループ間依存関係情報に含まれるものである。この第２の制御論理は、第２の制御回路として実装される。第２の制御回路は、第１の制御回路に処理の開始条件を与えるか否かを制御する制御回路として実装される。また、第２の制御回路は、例えば、ステップＳ３１で作成された第１の制御回路の実行条件をループ処理の実行条件に応じて変更することにより構成しても良い。この場合、第２の制御回路は、有限状態機械を構成する配線及び回路として第１の制御回路に組み込まれる形態となる。第２の制御論理は、実装形態に関わらずループ処理の実行を開始するか、開始せずに待つかを制御するように構成される。
【００４３】
ループ処理の実行を制御する第２の制御論理は、例えば、ループ処理の先頭状態においてループの開始条件を検査するように構成される。また、ループ処理の全状態においてループの開始条件を検査するように構成されても良い。また、ループ処理のある特定の状態でのみループの開始条件を検査するように構成されても良い。なお、ループ処理に対して依存関係を有する先行ループが存在しない場合には、無条件でループの実行を開始するように構成される。
【００４４】
次いで、ＲＴＬ記述生成処理部２４によるＲＴＬ記述生成処理（ステップＳ４）が行われる。ＲＴＬ記述生成処理では、バインディング処理により決定された演算器とレジスタとを用いてデータパスを作成し、データパスと制御回路作成処理により生成された制御回路とを含むＲＴＬ記述を生成する。このＲＴＬ記述は、ＲＴＬ記述記憶部１３に格納される。
【００４５】
続いて、上記において説明した動作合成システム１の処理手順についてより具体的に説明する。まず、動作合成システム１で扱う動作記述の一例を図３に示す。図３に示す動作記述は、「ＳｙｓｔｅｍＣ言語」を用いて表記されているが、本発明の説明に関連ない部分は一部省略されている。
【００４６】
当該動作記述は、入力端子からカラー画像のＲ（Ｒｅｄ）、Ｇ（Ｇｒｅｅｎ）、Ｂ（Ｂｌｕｅ）成分をそれぞれ入力し、Ｙ（輝度信号）、Ｕ（色差信号（Ｃｂ））、Ｖ（色差信号（Ｃｒ））成分を計算して、それぞれ対応する配列に格納するような動作を行う。ＲＧＢ成分は１６個分のデータが入力端子より逐次的に与えられ、ＹＵＶ成分は配列の０番地から１５番地に入力順に格納されるものとする。
【００４７】
当該動作記述の１行目から１１行目まで（図３）に端子の情報が例示されている。当該動作記述には、ｓｃ＿ｕｉｎｔ＜８＞型の入力端子ｒ＿ｉｎ、ｇ＿ｉｎ及びｂ＿ｉｎがそれぞれ備えられている。また、ｓｃ＿ｕｉｎｔ＜８＞型、かつ、１６ワード分の容量を持つ配列ｒ＿ａｒｙ［］、ｕ＿ａｒｙ［］及びｖ＿ａｒｙ［］が備えられている。なお、ｓｃ＿ｕｉｎｔ＜８＞型とは、８ビット幅を持ち符号なしの整数型である。
【００４８】
また、当該動作記述の１２行目から３１行目まで（図３）に、動作の情報が例示されている。まず、１５行目のループ処理Ｌ１により、入力端子ｒ＿ｉｎより１６個のデータが読み込まれ、配列ｒ＿ａｒｙ［］に格納される。同様に、１９行目のループ処理Ｌ２、２３行目のループ処理Ｌ３により、入力端子ｇ＿ｉｎ、ｂ＿ｉｎから読み込まれた値が配列ｇ＿ａｒｙ［］、ｂ＿ａｒｙ［］にそれぞれ格納される。
【００４９】
次に、２７行目のループ処理Ｌ４により、配列ｒ＿ａｒｙ［］、ｇ＿ａｒｙ［］及びｂ＿ａｒｙ［］からそれぞれ値が読み出され（２８行目）、それらの値を引数として、関数ｙ＿ｇｅｎ（）、ｕ＿ｇｅｎ（）及びｖ＿ｇｅｎ（）が呼び出される。関数により計算された値は、配列ｙ＿ａｒｙ［］、ｕ＿ａｒｙ［］及びｖ＿ａｒｙ［］にそれぞれ格納される（２９行目から３１行目）。図３に示す動作記述では、これらの処理を配列の各要素に対して繰り返す。
【００５０】
なお、上述した関数ｙ＿ｇｅｎ（）、ｕ＿ｇｅｎ（）及びｖ＿ｇｅｎ（）はそれぞれ、カラー画像のＲＧＢ成分からＹＵＢ成分を計算する関数であることを想定しているが、本発明には直接関連しないため詳細は省略する。また、図３の動作記述は予め記憶装置１０の動作記述記憶部１１に格納されている。続いて、図３で示した動作記述について、図２のステップＳ１〜Ｓ４の処理を行った場合の具体例について説明する。
【００５１】
まず、ループ間依存関係解析処理部２１によるループ間依存関係解析処理（ステップＳ１）の具体例について説明する。ループ間依存関係解析処理では、動作記述記憶部１１から、動作記述を読み出す。次に、ループ間依存関係解析処理部２１は、動作記述に基づき、ループ間の依存関係を解析し、どのループをどのタイミングで実行できるかを決定する。この解析結果を図４に示す。
【００５２】
図３を参照すると、ループ処理Ｌ１、Ｌ２、Ｌ３はそれぞれ値を読み出す入力端子及び読み込んだ値を書き込む配列が、それぞれ重複していない。従、ループ処理Ｌ１、Ｌ２、Ｌ３はそれぞれ依存関係がない。そこで、図４に示すループ間依存関係情報には、先行するループ処理Ｌ１と、後続するループ処理Ｌ２、Ｌ３との間に、それぞれ依存関係がないこと、並びに、先行するループ処理Ｌ２と、後続するループＬ３との間に依存関係がないことが示されている。
【００５３】
一方、ループ処理Ｌ４は、配列ｒ＿ａｒｙ［］、ｇ＿ａｒｙ［］、ｂ＿ａｒｙ［］から値を読み込んでいる。これらの配列の値は、それぞれ、ループ処理Ｌ１、Ｌ２、Ｌ３によって書き込まれる。つまり、ループ処理Ｌ４は、ループ処理Ｌ１、Ｌ２、Ｌ３に対して依存関係を有する。そこで、図４に示すループ間依存関係情報には、先行するループ処理Ｌ１、Ｌ２、Ｌ３と、後続するループＬ４との間に依存関係があることが示されている。
【００５４】
また、配列ｒ＿ａｒｙ［］の添え字である変数ｉ及び変数ｌに注目をすると、ループ処理Ｌ１の変数ｉとループ処理Ｌ４の変数ｌとの間にｉ＞ｌという関係が成り立っていれば、ループ処理Ｌ１とループ処理Ｌ４との間に依存関係があっても、ループ処理Ｌ４を実行することができる。この依存関係は、ループ処理Ｌ１において、配列ｒ＿ａｒｙ［］の０番目の要素ｒ＿ａｒｙ［０］へのデータを書き込みが完了し、変数ｉの値が１になっていれば、ループ処理Ｌ４において、当該要素ｒ＿ａｒｙ［０］から値を読み出すことができることを意味する。同様に、ループ処理Ｌ２とループ処理Ｌ４との間にはｊ＞ｌという関係が、ループ処理Ｌ３とループ処理Ｌ４との間にはｋ＞ｌという関係が成り立っていればループ処理Ｌ４を実行することができる。そこで、図４に示す例では、先行するループ処理Ｌ１、Ｌ２、Ｌ３に対して、後続するループ処理Ｌ４の「後続のループが実行できるタイミング」が、それぞれ、ｉ＞ｌ、ｊ＞ｌ及びｋ＞ｌであることが示されている。
【００５５】
次いで、スケジューリング・バインディング処理部２２によるスケジューリング・バインディング処理（ステップＳ２）の具体例について説明する。スケジューリング・バインディング処理では、スケジューリング処理とバインディング処理とを行う。そこで、スケジューリング処理において図３に示す動作記述を処理した結果得られるコントロールステップの動作記述を図５〜図８に示す。なお、図５〜図８は、それぞれループ処理Ｌ１〜Ｌ４に対応するコントロールステップの動作記述である。
【００５６】
図５に示すように、ループ処理Ｌ１は、ステップＬ１＿Ｓ１、Ｌ１＿Ｓ２及びＬ１＿Ｓ３の処理により構成される。図５の１１行目、２１行目、及び３１行目はそれぞれステップの名前を表している。変数ＲＧ＿ｉは変数ｉに対応した記憶素子（レジスタ）を表している。ステップＬ１＿Ｓ１では、レジスタＲＧ＿ｉを０に初期化する動作が記述されている（１２行目）。ステップＬ１＿Ｓ２では、入力端子ｒ＿ｉｎから値を読み込み、配列ｒ＿ａｒｙ［］のレジスタＲＧ＿ｉに格納されている値で示される要素に書き込む（２２行目）。その後、レジスタＲＧ＿ｉの値を１つ大きい値に更新する（２３行目）。ステップＬ１＿Ｓ３は、ループ処理Ｌ１の全ての処理が終わったステップであり、何も行わない。
【００５７】
図６に示すように、ループ処理Ｌ２は、ステップＬ２＿Ｓ１、Ｌ２＿Ｓ２及びＬ２＿Ｓ３の処理により構成される。図６の１１行目、２１行目、及び３１行目はそれぞれステップの名前を表している。変数ＲＧ＿ｊは変数ｊに対応した記憶素子（レジスタ）を表している。ステップＬ２＿Ｓ１では、レジスタＲＧ＿ｊを０に初期化する動作が記述されている（１２行目）。ステップＬ２＿Ｓ２では、入力端子ｇ＿ｉｎから値を読み込み、配列ｇ＿ａｒｙ［］のレジスタＲＧ＿ｊに格納されている値で示される要素に書き込む（２２行目）。その後、レジスタＲＧ＿ｊの値を１つ大きい値に更新する（２３行目）。ステップＬ２＿Ｓ３は、ループ処理Ｌ２の全ての処理が終わったステップであり、何も行わない。
【００５８】
図７に示すように、ループ処理Ｌ３は、ステップＬ３＿Ｓ１、Ｌ３＿Ｓ２及びＬ３＿Ｓ３の処理により構成される。図７の１１行目、２１行目、及び３１行目はそれぞれステップの名前を表している。変数ＲＧ＿ｋは変数ｋに対応した記憶素子（レジスタ）を表している。ステップＬ３＿Ｓ１では、レジスタＲＧ＿ｋを０に初期化する動作が記述されている（１２行目）。ステップＬ３＿Ｓ２では、入力端子ｂ＿ｉｎから値を読み込み、配列ｂ＿ａｒｙ［］のレジスタＲＧ＿ｋに格納されている値で示される要素に書き込む（２２行目）。その後、レジスタＲＧ＿ｋの値を１つ大きい値に更新する（２３行目）。ステップＬ３＿Ｓ３は、ループ処理Ｌ３の全ての処理が終わったステップであり、何も行わない。
【００５９】
図８に示すように、ループ処理Ｌ４は、ステップＬ４＿Ｓ１〜Ｌ４＿Ｓ５の処理により構成される。ステップＬ４＿Ｓ１では、レジスタＲＧ＿ｌの値が０に初期化する動作が記述されている（１２行目）。ステップＬ４＿Ｓ２では、配列ｒ＿ａｒｙ［］、ｇ＿ａｒｙ［］及びｂ＿ａｒｙ［］のレジスタＲＧ＿ｌの値で示されている要素を読み出し、レジスタＲＧ＿ｒ、ＲＧ＿ｇ及びＲＧ＿ｂにそれぞれ格納する（２２行目から２４行目）。ステップＬ４＿Ｓ３では、レジスタＲＧ＿ｒ、ＲＧ＿ｇ、ＲＧ＿ｂの値を引数として関数ｙ＿ｇｅｎ（）、ｕ＿ｇｅｎ（）及びｖ＿ｇｅｎ（）をそれぞれ呼び出し、戻り値をレジスタＲＧ＿ｙ、ＲＧ＿ｕ及びＲＧ＿ｖにそれぞれ格納する（３２行目から３４行目）。ステップＬ４＿Ｓ４では、レジスタＲＧ＿ｙ、ＲＧ＿ｕ、ＲＧ＿ｖの値を、配列ｙ＿ａｒｙ［］、ｕ＿ａｒｙ［］及びｖ＿ａｒｙ［］の、レジスタＲＧ＿ｌに格納されている値で示されている要素に、それぞれ格納する（４２行目から４４行目）。さらに、ステップＬ４＿Ｓ４では、レジスタＲＧ＿ｌの値を１つ大きい値に更新している（４５行目）。ステップＬ４＿Ｓ５は、ループ処理Ｌ４の全ての処理が終わったステップであり、何も行わない。
【００６０】
次いで、制御回路作成処理部２３による制御回路作成処理（ステップＳ３）の具体例について説明する。制御回路作成処理では、上述したようにステップＳ３１とステップＳ３２の２つの処理ステップにより構成される。そこで、以下では、制御回路作成処理についてステップＳ３１とステップＳ３２とに分けて説明する。
【００６１】
まず、ステップＳ３１では、ループ処理内のコントロールステップの実行状態を制御する第１の制御論理を生成する。実施の形態１にかかる動作合成システム１では、第１の制御論理を有限状態機械として構成する。そこで、制御回路作成処理部が生成する第１の制御論理の状態遷移図を図９〜図１２に示す。なお、図９〜図１２に示す状態遷移図は、それぞれループ処理Ｌ１〜Ｌ４に対応するものである。
【００６２】
図９では、ループ処理Ｌ１に属するコンロールステップを制御する有限状態機械（ＦＳＭ）の状態遷移図が示されている。ループ処理Ｌ１の有限状態機械は、状態Ａ１１、Ａ１２、Ａ１３及び遷移Ｂ１１、Ｂ１２、Ｂ１３を有する。状態Ａ１１、Ａ１２において、ステップＬ１＿Ｓ１、Ｌ１＿Ｓ２がそれぞれ実行される。状態Ａ１３ではループ処理Ｌ１の全ての処理を実行し終わった後のステップであり何も行わない。
【００６３】
状態Ａ１１から状態Ａ１２への状態遷移を示す遷移Ｂ１１は、状態Ａ１１に続き無条件で実行される。また、状態Ａ１２において、レジスタＲＧ＿ｉの値が１６よりも小さいときには、状態Ａ１２から状態Ａ１２へと戻る遷移Ｂ１２が実行される。一方、レジスタＲＧ＿ｉの値が１６以上である場合、状態Ａ１２から状態Ｂ１３への状態遷移を示す遷移Ｂ１３が実行される。
【００６４】
図１０では、ループ処理Ｌ２に属するコンロールステップを制御する有限状態機械（ＦＳＭ）の状態遷移図が示されている。ループ処理Ｌ２の有限状態機械は、状態Ａ２１、Ａ２２、Ａ２３及び遷移Ｂ２１、Ｂ２２、Ｂ２３を有する。状態Ａ２１、Ａ２２において、ステップＬ２＿Ｓ１、Ｌ２＿Ｓ２がそれぞれ実行される。状態Ａ２３ではループ処理Ｌ２の全ての処理を実行し終わった後のステップであり何も行わない。
【００６５】
状態Ａ２１から状態Ａ２２への状態遷移を示す遷移Ｂ２１は、状態Ａ２１に続き無条件で実行される。また、状態Ａ２２において、レジスタＲＧ＿ｉの値が１６よりも小さいときには、状態Ａ２２から状態Ａ２２へと戻る遷移Ｂ２２が実行される。一方、レジスタＲＧ＿ｉの値が１６以上である場合、状態Ａ２２から状態Ｂ２３への状態遷移を示す遷移Ｂ２３が実行される。
【００６６】
図１１では、ループ処理Ｌ３に属するコンロールステップを制御する有限状態機械（ＦＳＭ）の状態遷移図が示されている。ループ処理Ｌ３の有限状態機械は、状態Ａ３１、Ａ３２、Ａ３３及び遷移Ｂ３１、Ｂ３２、Ｂ３３を有する。状態Ａ３１、Ａ３２において、ステップＬ３＿Ｓ１、Ｌ３＿Ｓ２がそれぞれ実行される。状態Ａ３３ではループ処理Ｌ３の全ての処理を実行し終わった後のステップであり何も行わない。
【００６７】
状態Ａ３１から状態Ａ３２への状態遷移を示す遷移Ｂ３１は、状態Ａ３１に続き無条件で実行される。また、状態Ａ３２において、レジスタＲＧ＿ｉの値が１６よりも小さいときには、状態Ａ３２から状態Ａ３２へと戻る遷移Ｂ３２が実行される。一方、レジスタＲＧ＿ｉの値が１６以上である場合、状態Ａ３２から状態Ｂ３３への状態遷移を示す遷移Ｂ３３が実行される。
【００６８】
図１２では、ループ処理Ｌ４に属するコンロールステップを制御する有限状態機械（ＦＳＭ）の状態遷移図が示されている。ループ処理Ｌ４の有限状態機械は、状態Ａ４１〜Ａ４５及び遷移Ｂ３１〜Ｂ３５を有する。状態Ａ４１〜Ａ４４において、ステップＬ４＿Ｓ１〜Ｌ４＿Ｓ４がそれぞれ実行される。状態Ａ４５ではループ処理Ｌ４の全ての処理を実行し終わった後のステップであり何も行わない。
【００６９】
状態Ａ４１から状態Ａ４２への状態遷移を示す遷移Ｂ４１は、状態Ａ４１に続き無条件で実行される。状態Ａ４２から状態Ａ４３への状態遷移を示す遷移Ｂ４２は、状態Ａ４２に続き無条件で実行される。状態Ａ４３から状態Ａ４４への状態遷移を示す遷移Ｂ４３は、状態Ａ４３に続き無条件で実行される。また、状態Ａ４４において、レジスタＲＧ＿ｉの値が１６よりも小さいときには、状態Ａ４４から状態Ａ４２へと戻る遷移Ｂ４４が実行される。一方、レジスタＲＧ＿ｉの値が１６以上である場合、状態Ａ４４から状態Ｂ４５への状態遷移を示す遷移Ｂ４５が実行される。
【００７０】
つまり、ステップＳ３１では、図９〜図１２で示した状態遷移をする第１の制御論理を作成し、当該第１の制御論理に基づく第１の制御回路を生成する。
【００７１】
次いで、ステップＳ３２では、ループ処理の実行条件に基づきループ処理の実行状態を制御する第２の制御論理を生成する。制御回路作成処理では、記憶装置１０のループ間依存関係情報記憶部１２に格納されているループ間の依存関係を読み出す。そして、ループ処理Ｌ４に対して依存関係があるループ処理Ｌ１〜Ｌ３それぞれについての実行状況とループ処理Ｌ４が実行可能となる条件をもとに第２の制御論理を構成する。実施の形態１にかかる動作合成システム１では、第１の制御論理を有限状態機械として構成するのに対し、第２の制御論理は第１の制御論理に状態遷移条件を与える制御回路として構成する。
【００７２】
図３に示した動作記述においては、図４に示すようにループ処理Ｌ１〜Ｌ３は、他のループ処理と依存関係を有しておらず、ループ処理Ｌ４は、ループ処理Ｌ１〜Ｌ３と依存関係を有する。そのため、図３に示した動作記述を処理する動作合成システム１では、ループ処理Ｌ１〜Ｌ３に対しては第２の制御論理は生成しない。一方、動作合成システム１は、ループ処理Ｌ４がループ処理Ｌ１〜Ｌ３に対して依存関係を有するため、ループ処理Ｌ４の実行状態を制御する論理として第２の制御論理が生成される。ここで、第２の制御論理は、図４に示すループ間依存関係情報に基づき生成される。ループ処理の実行条件は、図４のループ間依存関係情報に示すように、ループ処理Ｌ４に対して依存関係を有する先行ループ処理の実行状況によって決定される。
【００７３】
図８に示すように、ループ処理Ｌ４は、ステップＬ４＿Ｓ２においてループ処理Ｌ１〜Ｌ３の処理結果を必要とする。そのため、制御回路作成処理では、図４のループ処理Ｌ４の実行条件を満たした場合にループ処理Ｌ４に対応する第１の制御論理に対する開始信号Ｓ０をイネーブル状態ＥＮとする第２の制御論理を生成する。この第２の制御論理は、レジスタＲＧ＿ｉ、ＲＧ＿ｊ、ＲＧ＿ｋの値とレジスタＲＧ＿ｌの値とを比較し、レジスタＲＧ＿ｌが、レジスタＲＧ＿ｉ、ＲＧ＿ｊ、ＲＧ＿ｋの全てより小さいときに第１の制御論理に開始信号Ｓ０を与えるものとなる。つまり、本実施の形態おいて生成される第２の制御論理は、ループ処理Ｌ４を実行するか否かを制御するものとなる。なお、第２の制御回路は、第２の制御論理を実現したものである。
【００７４】
また、制御回路作成処理では、第２の制御論理が生成する開始信号Ｓ０に応じて状態遷移を行うようにループ処理Ｌ４を修正する。より具体的には、制御回路作成処理では、ループ処理Ｌ４に対応する第１の制御論理のうちステップＬ２＿Ｓ２を実行する状態Ａ４２を状態Ａ４６とする。また、制御回路作成処理では、開始信号Ｓ０がイネーブル状態ＥＮでない場合に状態Ａ４６から状態Ａ４６に遷移する遷移Ｂ４６を追加する。さらに、制御回路作成処理では、図１２の遷移Ｂ４２を、開始信号Ｓ０がイネーブル状態ＥＮである場合に状態Ａ４６から状態Ａ４３に遷移する遷移Ｂ４７に修正する。このように修正されたループ処理Ｌ４に対応した第１の制御論理の状態遷移図を図１３に示す。
【００７５】
なお、第２の制御論理は、第１の制御論理を修正することで生成することもできる。この場合、第２の制御論理は、ループ処理Ｌ４に対応する第１の制御論理を、ループ処理Ｌ４の実行条件を満たした場合にステップＬ４＿Ｓ２の処理が行われるように修正した、その修正部分として生成される。
【００７６】
次いで、ＲＴＬ記述生成処理部２４によるＲＴＬ記述生成処理（ステップＳ４）の具体例について説明する。ＲＴＬ記述生成処理では、スケジューリング・バインディング処理部２２にて決定された演算器とレジスタからデータパスを作成し、制御回路作成処理部２３にて作成された制御回路と当該データパスとに基づきＲＴＬ記述を作成する。そして、作成したＲＴＬ記述を、記憶装置１０のＲＴＬ記述記憶部１３に格納する。
【００７７】
上記処理を経て生成されたＲＴＬ記述に基づき生成される半導体装置のブロック図の具体例を図１４に示す。図１４に示すように、半導体装置は、第１の制御回路に相当する有限状態機械３４、４４、５４、６４及び第２の制御回路に相当する制御回路７１を有する。また、図１４に示す半導体装置の各素子は、以下の対応関係を有する。
【００７８】
入力端子ｒ＿ｉｎ、ｇ＿ｉｎ、ｂ＿ｉｎは、それぞれ図３の２行目のｒ＿ｉｎ、図３の３行目のｇ＿ｉｎ、図３の４行目のｂ＿ｉｎに対応する。レジスタ３２、４２、５２、６２は、それぞれ図５の１２行目のレジスタＲＧ＿ｉ、図６の１２行目のレジスタＲＧ＿ｊ、図７の１２行目のレジスタＲＧ＿ｋ、図８の１２行目のレジスタＲＧ＿ｌに対応する。レジスタ３６、４６、５６は、それぞれ図８の２２行目のレジスタＲＧ＿ｒ、図８の２３行目のレジスタＲＧ＿ｇ、図８の２４行目のレジスタＲＧ＿ｂに対応する。レジスタ３８、４８、５８は、それぞれ図８の３２行目のレジスタＲＧ＿ｙ、図８の３３行目のレジスタＲＧ＿ｕ、図８の３４行目のレジスタＲＧ＿ｖに対応する。加算器３３、４３、５３、６３は、それぞれ図５の２３行目の加算器、図６の２３行目の加算器、図７の２３行目の加算器、図８の４５行目の加算器に対応する。メモリ３５、４５、５５は、図５の２２行目の配列ｒ＿ａｒｙ、図６の２２行目の配列ｇ＿ａｒｙ、図７の２２行目の配列ｂ＿ａｒｙに対応する。メモリ３９、４９、５９は、それぞれ図８の４２行目の配列ｙ＿ａｒｙ、図８の４３行目の配列ｕ＿ａｒｙ、図８の４４行目の配列ｖ＿ａｒｙに対応する。サブモジュール３７、４７、５７は、それぞれ図８の３２行目の関数ｙ＿ｇｅｎ、図８の３３行目のｕ＿ｇｅｎ、図８の３４行目のｖ＿ｇｅｎに対応する。なお、マルチプレクサ３１、４１、５１、６１は、有限状態機械３４、４４、５４、６４が制御するものであり、レジスタＲＧ＿ｉ、ＲＧ＿ｊ、ＲＧ＿ｋ、ＲＧ＿ｌの値を初期化するために用いられる。
【００７９】
図１４に示す半導体装置では、有限状態機械３４は、加算器３３が出力する値を受け取り、マルチプレクサ３１、レジスタ３２、加算器３３、メモリ３５、入力端子ｒ＿ｉｎを制御することでループ処理Ｌ１の動作を制御する。有限状態機械３４は、最初のクロックに応じてループ処理Ｌ１が状態Ａ１１（ステップＬ１＿Ｓ１）から実行されるように制御する。有限状態機械３４は、状態Ａ１１で、レジスタ３２（ＲＧ＿ｉ）に値０を代入する制御を行う。さらに、有限状態機械３４は、状態Ａ１２（ステップＬ１＿Ｓ２）に対応する制御として、入力端子ｒ＿ｉｎから読み込んだ値を、メモリ３５の配列のうちレジスタ３２（ＲＧ＿ｉ）の値で示される配列に格納する。同時に、有限状態機械３４は、レジスタ３２（ＲＧ＿ｉ）の値を１つ大きな値に更新する。該更新値は、有限状態機械３４へと伝えられる。さらに、有限状態機械３４は、該更新値が１６よりも小さいときには再度状態Ａ１２を実行するように制御し、該更新値が１６以上のときは、状態Ａ１２を状態Ａ１３（ステップＬ１＿Ｓ３）に遷移させるように制御する。
【００８０】
有限状態機械４４は、加算器４３が出力する値を受け取り、マルチプレクサ４１、レジスタ４２、加算器４３、メモリ４５、入力端子ｇ＿ｉｎを制御することでループ処理Ｌ２の動作を制御する。有限状態機械４４は、最初のクロックに応じてループ処理Ｌ２が状態Ａ２１（ステップＬ２＿Ｓ１）から実行されるように制御する。有限状態機械４４は、状態Ａ２１で、レジスタ４２（ＲＧ＿ｊ）に値０を代入する制御を行う。さらに、有限状態機械４４は、状態Ａ２２（ステップＬ２＿Ｓ２）に対応する制御として、入力端子ｇ＿ｉｎから読み込んだ値を、メモリ４５の配列のうちレジスタ４２（ＲＧ＿ｊ）の値で示される配列に格納する。同時に、有限状態機械４４は、レジスタ４２（ＲＧ＿ｊ）の値を１つ大きな値に更新する。該更新値は、有限状態機械４４へと伝えられる。さらに、有限状態機械４４は、該更新値が１６よりも小さいときには再度状態Ａ２２を実行するように制御し、該更新値が１６以上のときは、状態Ａ２２を状態Ａ２３（ステップＬ２＿Ｓ３）に遷移させるように制御する。
【００８１】
有限状態機械５４は、加算器５３が出力する値を受け取り、マルチプレクサ５１、レジスタ５２、加算器５３、メモリ５５、入力端子ｂ＿ｉｎを制御することでループ処理Ｌ３の動作を制御する。有限状態機械５４は、最初のクロックに応じてループ処理Ｌ３が状態Ａ３１（ステップＬ３＿Ｓ１）から実行されるように制御する。有限状態機械５４は、状態Ａ３１で、レジスタ５２（ＲＧ＿ｋ）に値０を代入する制御を行う。さらに、有限状態機械５４は、状態Ａ３２（ステップＬ３＿Ｓ２）に対応する制御として、入力端子ｂ＿ｉｎから読み込んだ値を、メモリ５５の配列のうちレジスタ５２（ＲＧ＿ｋ）の値で示される配列に格納する。同時に、有限状態機械５４は、レジスタ５２（ＲＧ＿ｋ）の値を１つ大きな値に更新する。該更新値は、有限状態機械５４へと伝えられる。さらに、有限状態機械５４は、該更新値が１６よりも小さいときには再度状態Ａ３２を実行するように制御し、該更新値が１６以上のときは、状態Ａ３２を状態Ａ３３（ステップＬ３＿Ｓ３）に遷移させるように制御する。
【００８２】
有限状態機械６４は、加算器６３から値を受け取り、マルチプレクサ６１、加算器６３、レジスタ６２、３６、４６、５６、３８、４８、５８、メモリ３５、４５、５５、３９、４９、５９を制御し、ループ処理Ｌ４の動作を制御する。また、有限状態機械６４は、制御回路７１により制御される。
【００８３】
まず、有限状態機械６４は、制御回路７１が出力する開始信号Ｓ０の状態に関わらず、状態Ａ４１（ステップＬ４＿Ｓ１）に対応する制御として、レジスタ６２（ＲＧ＿ｌ）に値０を代入するように動作する。そして、有限状態機械６４は、状態Ａ４１から状態Ａ４２に状態が遷移する。この状態Ａ４２においては、有限状態機械６４は、制御回路７１が出力する開始信号Ｓ０がイネーブル状態となるまでは、状態Ａ４２を実行せず待ち状態を維持する。制御回路７１は、レジスタ３２、４２、５２の値を読み取り、レジスタ６２（ＲＧ＿ｌ）の値がレジスタ３２、４２、５２のいずれの値よりも小さいときに開始信号Ｓ０をイネーブル状態ＥＮとする。そして、有限状態機械６４は、開始信号Ｓ０がイネーブル状態ＥＮとなったことに応じて状態Ａ４２に対応するステップＬ４＿Ｓ２の動作を実現する制御を行う。この制御では、メモリ３５、４５、５５の配列のうちレジスタ６２（ＲＧ＿ｌ）の値で示される配列に格納されている要素がそれぞれレジスタ３６、４６、５６に格納される。
【００８４】
そして、レジスタ３６、４６、５６の値が更新されたことに応じて、状態Ａ４２から状態Ａ４３への状態遷移が行われ、さらに状態Ａ４３の処理が行われたことに応じて状態Ａ４４の処理が行われる。つまり、ステップＬ４＿Ｓ２の後、ステップＬ４＿Ｓ３及びステップＬ４＿Ｓ４の処理が続けて行われる。
【００８５】
ステップＬ４＿Ｓ３では、サブモジュール３７、４７、５７のいずれもがレジスタ３６、４６、５６の値（ＲＧ＿ｒ、ＲＧ＿ｇ、ＲＧ＿ｂ）を読み込む。そして、サブモジュール３７、４７、５７は、レジスタ３８、４８、４９（ＲＧ＿ｙ、ＲＧ＿ｕ、ＲＧ＿ｖ）のうち対応するレジスタに処理後に得られた値を格納する。
【００８６】
ステップＬ４＿Ｓ４では、レジスタ３８（ＲＧ＿ｙ）に格納された値がメモリ３９の配列のうちレジスタ６２（ＲＧ＿ｌ）で示される値の配列に格納される。また、レジスタ４８（ＲＧ＿ｕ）に格納された値がメモリ４９の配列のうちレジスタ６２（ＲＧ＿ｌ）で示される値の配列に格納される。また、レジスタ５８（ＲＧ＿ｖ）に格納された値がメモリ５９の配列のうちレジスタ６２（ＲＧ＿ｌ）で示される値の配列に格納される。さらに、ステップＬ４＿Ｓ４では、加算器６３がレジスタ６２の値を１つ大きな値に更新する。該更新値は、有限状態機械６４へと伝えられる。
【００８７】
さらに、有限状態機械６４は、状態Ａ４４で、該更新値が１６よりも小さいときには再度Ａ４２に状態を遷移させてステップＬ４＿Ｓ２を実行するように制御する。一方、該更新値が１６以上のときには、有限状態機械６４は、状態Ａ４４から状態Ａ４５に状態を遷移させ、ステップＬ４＿Ｓ５を実行するように制御する。
【００８８】
上記説明より、実施の形態１にかかる動作合成システム１は、ループ間依存関係解析処理により、動作記述中のループ処理間の依存関係を解析する。そして、動作合成システム１は、当該解析結果に基づきループ処理中のコントロールステップ毎の実行状態を制御する第１の制御論理と、ループ処理の実行状態を制御する第２の制御論理とを生成する。その後、動作合成システム１は、第１の制御論理と第２の制御論理とを含む制御回路と、動作記述による処理を行う演算器及びレジスタと、を含むＲＴＬ記述を生成する。これにより、動作合成システム１では、ループ処理を全て独立した回路として有し、かつ、ループ間の依存関係を考慮した動作が可能なＲＴＬ記述を生成することができる。つまり、動作合成システム１によれば、逐次的に記述された複数のループの間にデータ依存関係がある場合でもループ処理の並列化を行い、該ループ処理を同時に実行できるような回路を合成できる。
【００８９】
また、動作合成システム１では、上記のようなＲＴＬ記述をループ処理間の依存関係の複雑さに関わらず生成することができる。これは、ループ処理間の依存関係を考慮した制御を行う制御回路をループ処理にかかる回路とは別に設けるためである。
【００９０】
また、動作合成システム１により生成されるＲＴＬ記述に基づき形成される半導体装置は、他のループ処理との依存関係を有さない第１のループ処理を実行する第１のループ処理回路と、他のループ処理との依存関係を有する第２のループ処理を実行する第２のループ処理回路と、第１、第２のループ処理回路のコントロールステップの実行状態を制御する第１の制御論理と、他のループ処理の処理結果に応じて前記第２のループ処理の実行状態を制御する第２の制御論理と、を含む制御回路と、を有する。この半導体装置は、ループ処理の並列化がなされているため、１つの処理を短時間に処理できる。つまり、動作合成システム１によれば、処理性能の高い半導体装置を合成することが可能になる。
【００９１】
なお、上記実施の形態では、動作合成システム１がハードウェアにより実現された例について説明したが、上記ハードウェアの処理に対応する処理をソフトウェアにより実現すこともできる。この動作合成プログラムは、演算回路において実行され、記憶装置に格納された動作記述からＲＴＬ記述を合成し、ＲＴＬ記述を前記記憶装置に格納するものである。
【００９２】
実施の形態２
実施の形態２にかかる動作合成システム２は、他のループ処理と依存関係を有するループ処理を含む動作記述からパイプライン方式の処理を行うＲＴＬ記述を合成するものである。この動作合成システム２のブロック図を図１５に示す。図１５に示すように、動作合成システム２は、実施の形態１にかかる動作合成システム１の制御回路作成処理部２３を制御回路作成処理部２３ａに置き換えた処理装置２０ａを有する。なお、実施の形態２にかかる動作合成システム２の説明において、実施の形態１にかかる動作合成システム１と同じ構成要素については、実施の形態１と同じ符号を付して説明を省略する。
【００９３】
制御回路作成処理部２３ａは、スケジューリング・バインディング処理部２２にて決定されたコンロールステップと、ループ間依存関係情報記憶部１２に記録されたループ間依存関係情報と、に基づき前記ループ処理に含まれるコントロールステップをパイプライン処理のステージ毎にグループ化し、ステージ内のステップの実行を制御する第１の制御論理と、ステージ毎の実行状態を制御する第３の制御論理と、ループの実行を制御する第３の制御論理とを有する制御回路を作成する。
【００９４】
次いで、実施の形態２にかかる動作合成システム２の動作について説明する。そこで、動作合成システム２の動作手順を示すフローチャートを図１６に示す。図１６に示すように、動作合成システム２において、制御回路作成処理以外の処理（図１６のステップＳ１、Ｓ２、Ｓ４）は、図２に示したフローチャートと同じである。そこで、以下では、ステップＳ１、Ｓ２、Ｓ４の説明については省略し、動作合成システム２において特徴的な制御回路作成処理部２３ａの制御回路作成処理（ステップＳ５）について説明する。
【００９５】
ステップＳ５は、ステップＳ５１〜Ｓ５４の４つの処理ステップを有する。ステップＳ５１は、ステージ決定処理を行う。ステップＳ５１では、制御回路作成処理部２３ａがスケジューリングにて決定されたコントロールステップをパイプライン処理のステージに割り当てる。このステージには、１つのループ処理に属するコントロールステップのうち、単一又は連続して実行される複数のコントロールステップをグループ化したものが割り当てられる。１つのグループに含まれるステップの数は予め与えられたイニシエーションインターバルと同じか、それ以下とする。ループパイプライン技法が適用されたループ処理では、１つのイタレーションが最後まで終了する前に次のイタレーションを開始するように動作する。このとき、１つのイタレーションの開始から次のイタレーションの開始までの時間（クロック数）を、イニシエーションインターバルと呼ぶ。１つのステップに着目すると、１つ目のイタレーションのための実行をしてから、イニシエーションインターバルの時間（クロック数）が経過するまでは、実行されないという性質がある。連続して実行される複数のコントロールステップを、イニシエーションインターバルのクロック数毎にグループ化すると、１イタレーションは１イニシエーションインターバル毎に１つずつステージを移動する。このとき、異なるステージに属する演算は同じ演算器を共有しないようにバインディングの際に予め考慮することが望ましい。さらには、異なるステージ間でレジスタを共有しないようにバインディングの際に予め考慮することが望ましい。
【００９６】
次いで、ステップＳ５２では、制御回路作成処理部２３ａが、ステージ毎にそのステージに属するコントロールステップの実行を制御する第１の制御論理を作成する。当該第１の制御論理は、例えば、有限状態機械（ＦＳＭ）で構成される。当該第１の制御論理は、ステージ毎に作成され、該ステージに属するコントロールステップを順に実行するように構成される。
【００９７】
次いで、ステップＳ５３では、制御回路作成処理部２３ａが、ステージの実行を制御する第３の制御論理を作成する。該第３の制御論理は、ステージの開始条件を検査し、ステージに属する最初のコントロールステップの実行を開始するか、開始せずに待つかを制御するように構成される。ステージの開始の第１の条件は、直前のステージ又はループの実行状況（終了状況）によって決定される。また、ステージの開始の第２の条件は、直後のステージ又はループ処理の実行状況によって決定される。第１、第２の条件の両方の開始条件が満たされるときにステージの実行を開始するように第３の制御論理を構成する。
【００９８】
次いで、ステップＳ５４では、制御回路作成処理部２３ａが、ループ処理の実行を制御する第２の制御論理を作成する。第２の制御論理は、実施の形態１と同様に、他のループ処理の実行状況に応じて制御対象のループ処理に対応する第１、第２の制御論理に処理の開始を通知する開始信号Ｓ０を出力する制御回路として生成される。また、第２の制御論理は、ステップＳ５２及びＳ５３で作成された第１、第２の制御回路の実行条件を変更することにより構成することもできる。該第２の制御論理では、ループ処理の開始条件を検査し、ループ処理の実行を開始するか、開始せずに待つかを制御するように構成される。
【００９９】
ループ処理の開始条件は、該ループに対して依存関係を有する先行ループの実行状況によって決定される。すなわち、ループ間依存関係情報記憶部１２に格納されているループ間依存関係情報を読み出し、該ループ処理に対して依存関係があるループ処理それぞれについて、その実行状況と実行が可能となる条件（ループ処理の開始条件）をもとに制御論理を構成する。ループの実行を制御する第２の制御論理は、例えば、ループ処理の先頭状態においてループ処理の開始条件を検査するように構成される。また、例えば、ループ処理の全状態においてループ処理の開始条件を検査するように構成されても良い。また、例えば、ループ処理のある特定の状態においてループ処理の開始条件を検査するように構成されても良い。なお、ループ処理に対して依存関係を有する先行ループが存在しない場合には、無条件でループ処理の実行を開始するように構成される。
【０１００】
続いて、上記において説明した動作合成システム２の動作手順の具体例について説明する。この説明では、実施の形態２にかかる動作合成システムに対しても、実施の形態１と同じ動作記述（図３）が与えられ、ループ処理Ｌ４に対してイニシエーションインターバル１にてループパイプラインが適用されるものとする。
【０１０１】
実施の形態２では、ループ処理Ｌ４に対してループパイプラインが適用されるため、ステップＳ２のスケジューリング・バインディング処理にて決定されるコントロールステップが、実施の形態１とは異なる。そこで、実施の形態２のステップＳ２で決定されるコントロールステップの動作を示す記述の例を図１７に示す。図１７に示すように、実施の形態２におけるステップＬ４＿Ｓ２の動作は、図８に示した動作の記述におけるステップＬ４＿Ｓ２の動作に対して、レジスタＲＧ＿ｌ２が新たに加わり、このレジスタＲＧ＿ｌ２にレジスタＲＧ＿ｌの値を代入している点が異なる（２５行目）。さらに、図１７に示すように、実施の形態２のステップＬ４＿Ｓ３の動作は、図８に示した動作の記述におけるステップＬ４＿Ｓ３の動作に対して、レジスタＲＧ＿ｌ３が新たに加わり、レジスタＲＧ＿ｌ２の値を代入している点が異なる（３５行目）。図１７に示すように、実施の形態２のステップＬ４＿Ｓ４の動作は、図８に示した動作の記述におけるステップＬ４＿Ｓ４の動作に対して、書き込まれる配列ｙ＿ａｒｙ、ｕ＿ａｒｙ、ｖ＿ａｒｙの添え字がＲＧ＿ｌからＲＧ＿ｌ３に変更されている点が異なる。なお、ループ処理Ｌ１，Ｌ２，Ｌ３に対してスケジューリング・バインディング処理を適用した結果は、本発明の実施の形態１に対応する実施例と同様（図５〜図７）である。
【０１０２】
次いで、制御回路作成処理部２３ａは、スケジューリングにて決定されたステップをステージに割り当てる（ステップＳ５１）。ループ処理Ｌ４の処理はイニシエーションインターバル１にてループパイプライン技法を適用するため、各ステージに含まれるステップの数は１つである。そのため、制御回路作成処理部２３ａ、まず、ループ処理Ｌ４の各ステップを１つのステージとしてグループ化する。ステージＳＴ１ではステップＬ１＿Ｓ１1を、ステージＳＴ２ではステップＬ４＿Ｓ２を、ステージＳＴ３ではステップＬ４＿Ｓ３を、ステージＳＴ４でステップＬ４＿Ｓ４を、ステージＳＴ５ではステップＬ４＿Ｓ５を実行するようにグループ化する。
【０１０３】
次いで、制御回路作成処理部２３ａは、ステージ毎に、そのステージに属するステップの実行を制御する第１の制御論理を作成する（ステップＳ５２）。当該第１の制御論理は、例えば、有限状態機械（ＦＳＭ）で構成される。当該第１の制御論理は、ステージ毎に作成され、該ステージに属するステップを順に実行するように構成される。そこで、第１の制御論理の状態遷移図を図１８〜図２２に示す。図１８では、ステージＳＴ１についての第１の制御論理が有限状態機械として表現されている。ステージＳＴ１の有限状態機械には、１つの状態Ａ５１と２つの遷移Ｂ５１、Ｂ５２を有する。遷移Ｂ５１が実行されるときステップＬ４＿Ｓ１が実行され、遷移Ｂ５２が実行されるときは何もしない。遷移Ｂ５１、Ｂ５２の実行条件は、まだ指定されていない。同様に、図１９〜図２２には、ステップＬ４＿Ｓ２〜Ｌ４＿Ｓ５に対応する各ステージの第１の制御論理が有限状態機械の状態遷移図として表されている。各有限状態機械は、実行するステップが異なるのみで、その他はステージＳＴ１の有限状態機械と同様である。
【０１０４】
次いで、制御回路作成処理部２３ａは、ステージ毎に、そのステージの実行を制御する第３の制御論理を作成する（ステップＳ５３）。当該第３の制御論理は、ステージの実行条件を検査し、ステージの最初のステップの実行を開始するか、開始せずに待つかを制御するように構成される。そこで、第３の制御論理の状態遷移図を図２３に示す。図２３に示す状態遷移図には、各ステージ間の状態遷移条件が示されている。
【０１０５】
具体的には、ステージＳＴ１には直前のステージが存在しないので、ステージＳＴ１は無条件に実行を開始する。ステージＳＴ２は、直前のステージであるステージＳＴ１の終了が通知されたときに遷移Ａ６１を実行し（すなわち、ステップＬ４＿Ｓ２を実行する）、ステージＳＴ１の終了が通知されなければ遷移Ｂ６２を実行する（すなわち、何もしない）ように制御される。ステージＳＴ３は、直前のステージであるステージＳＴ２が終了かつレジスタＲＧ＿ｌが１６よりも小さいことが通知されたときに遷移Ｂ７１を実行し（すなわち、ステップＬ４＿Ｓ３を実行する）、ステージＳＴ２が終了かつレジスタＲＧ＿ｌが１６よりも小さいことが通知されなければ遷移Ｂ７２を実行する（すなわち、何もしない）ように制御される。ステージＳＴ４は、直前のステージであるステージＳＴ３の終了が通知されたときに遷移Ｂ８２を実行し（すなわち、ステップＬ４＿Ｓ４を実行する）、ステージＳＴ３の終了が通知されなければ遷移Ｂ８２を実行する（すなわち、何もしない）ように制御される。ステージＳＴ５は、ループ処理Ｌ４の実行を完了した後のステージであるため、直前のループ処理Ｌ４の処理の完了が通知されたのち、遷移Ｂ９２を実行し続けるように制御される。なお、ループ処理Ｌ４の処理の完了の通知とは、すなわち、ステージＳＴ２が終了し、かつ、レジスタＲＧ＿ｌの値が１６以上であることである。
【０１０６】
次いで、制御回路作成処理部２３ａは、ループ処理の実行を制御する第２の制御論理を作成する（ステップＳ５４）。ステップＳ５４では、第２の制御論理が生成する開始信号Ｓ０に応じて状態遷移を行うように図２２で示した第１の制御論理を修正する。より具体的には、ステップＳ５４では、ループ処理Ｌ４に対応する第１の制御論理のうちステージＳＴ２に含まれるステップＬ２＿Ｓ２の遷移条件を修正する。修正後のステップＬ４＿Ｓ２に対応する第１の制御論理では、遷移Ｂ６１ａ、Ｂ６２ａを有する。そして、開始信号Ｓ０がイネーブル状態のとときに遷移Ｂ６１ａが実行されることでステップＬ４＿Ｓ１が実行され、開始信号Ｓ０がディスイネーブル状態のとときに遷移Ｂ６２ａが実行されることで何もしない状態となる。このように修正された第１の制御論理を含むループ処理Ｌ４に対応した第３の制御論理の状態遷移図を図２４に示す。
【０１０７】
上記説明より、実施の形態２にかかる動作合成システム２では、制御回路作成処理において、パイプライン処理に対応して、パイプライン処理のステージ毎の実行状態を制御する第３の制御論理を作成する。また、制御回路作成処理では、第３の制御論理と共に、実施の形態１と同様に第１、第２の制御論理を作成する。なお、実施の形態２における第１の制御論理は、ステージ内のコントロールステップの実行状態を制御するものである。
【０１０８】
動作合成システム２により生成されるＲＴＬ記述は、第３の制御論理を含む制御回路を有する。つまり、動作合成システム２では、個々のループ処理をパイプライン実行させた上で、複数のループを並行して実行するような回路を合成することができる。
【０１０９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、制御回路では、第１の制御論理、第２の制御論理、第３の制御論理は、それぞれが独立した回路として構成されている必要なく、当該制御論理に基づく動作が実現できる形態で回路が形成されていれば良い。
【符号の説明】
【０１１０】
１、２    動作合成システム
１０    記憶装置
１１    動作記述記憶部
１２    ループ間依存関係情報記憶部
１３    ＲＴＬ記述記憶部
２０、２０ａ    処理装置
２１    ループ間依存関係解析部
２２    スケジューリング・バインディング処理部
２３、２３ａ    制御回路作成処理部
２４    ＲＴＬ記述生成処理部
３１、４１、５１、６１    マルチプレクサ
３２、４２、５２、６２    レジスタ
３３、４３、５３、６３    加算器
３４、４４、５４、６４    有限状態機械
３５、４５、５５    メモリ
３６、４６、５６    レジスタ
３７、４７、５７    サブモジュール
３８、４８、５８    レジスタ
３９、４９、５９    メモリ
７１    制御回路
【図１】
0005644432.tif 000002
【図２】
0005644432.tif 000003
【図３】
0005644432.tif 000004
【図４】
0005644432.tif 000005
【図５】
0005644432.tif 000006
【図６】
0005644432.tif 000007
【図７】
0005644432.tif 000008
【図８】
0005644432.tif 000009
【図９】
0005644432.tif 000010
【図１０】
0005644432.tif 000011
【図１１】
0005644432.tif 000012
【図１２】
0005644432.tif 000013
【図１３】
0005644432.tif 000014
【図１４】
0005644432.tif 000015
【図１５】
0005644432.tif 000016
【図１６】
0005644432.tif 000017
【図１７】
0005644432.tif 000018
【図１８】
0005644432.tif 000019
【図１９】
0005644432.tif 000020
【図２０】
0005644432.tif 000021
【図２１】
0005644432.tif 000022
【図２２】
0005644432.tif 000023
【図２３】
0005644432.tif 000024
【図２４】
0005644432.tif 000025