(57)【要約】【課題】  動作合成において，動作記述をパイプライン処理する際にオペレーションを各ステージに偏りなく配置したＲＴＬを生成することを目的とする。【解決手段】  動作合成装置１は，動作記述を解析してオペレーションを演算単位に分割し，分割オペレーションの実行順序と各々の処理時間を算出するオペレーション分割部１６と，動作記述からパスを選択し，パス内の分割オペレーションの総処理時間をパイプライン処理のステージ数で割ってステージ内処理時間を求め，選択したパスでの分割オペレーションの実行順序にもとづいて分割オペレーションを順にステージに割り当て，割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときに，そのステージに割り当てている分割オペレーションを，該ステージに配置するステージ割当部１７と，該ステージの配置をもとに動作記述をＲＴＬ記述に変換する出力部１８を備える。【選択図】  図１
2012198633.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが，プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する動作合成方法であって，
前記コンピュータが，
処理対象となる動作記述を解析して，該動作記述のオペレーションを演算単位に分割し，前記分割した分割オペレーションの実行順序を特定し，各演算単位の処理時間を定義する演算ライブラリ情報を参照して，該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと，
前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し，該パスから選択した１パスごとに，前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに，１ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し，前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て，前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを，該ステージに配置するステージ割当ステップとを，実行する
ことを特徴とする動作合成方法。
【請求項２】
前記コンピュータは，
前記ステージ割当ステップにおいて，前記分割オペレーションの処理時間の代わりに，該処理時間に所定のマージン時間を加算した時間を用いて分割オペレーションを配置する
ことを特徴とする請求項１に記載の動作合成方法。
【請求項３】
前記コンピュータは，
前記ステージ割当ステップにおいて，前記オペレーション分割ステップで算出された前記分割オペレーションの処理時間が所定の時間範囲内である場合に，前記選択した１パスごとに，前記分割オペレーションの総処理時間の代わりに総数と前記ステージ数とをもとに，１ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し，前記選択したパスでの分割オペレーションの実行順序にもとづいて，分割オペレーションを順にステージに割り当て，前記割り当てた分割オペレーションの合計数が前記ステージ内配置数を超えたときに該ステージに割り当てている分割オペレーションを，該ステージに配置する
ことを特徴とする請求項１に記載の動作合成方法。
【請求項４】
前記コンピュータは，
前記動作記述をレジスタ・トランスファー・レベル記述へ変更し，前記分割オペレーションのステージへの配置をもとに，異なるステージに配置される分割オペレーション間にレジスタの記述を挿入するＲＴＬ生成処理ステップを，実行する
ことを特徴とする請求項１ないし請求項３のいずれか一項に記載の動作合成方法。
【請求項５】
プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成装置であって，
動作記述に含まれるオペレーションの各演算単位の処理時間を定義する演算ライブラリ情報を記憶する演算ライブラリ情報記憶部と，
前記動作記述のパイプライン処理の制約であって，パイプライン処理のステージ数を含む情報を記憶する制約情報記憶部と，
処理対象となる動作記述を解析して，該動作記述のオペレーションを演算単位に分割し，前記分割した分割オペレーションの実行順序を特定し，前記ライブラリ情報を参照して，該分割オペレーション各々の処理時間を算出するオペレーション分割部と，
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し，該パスから選択した１パスごとに，前記分割オペレーションの総処理時間と前記制約が含むステージ数とをもとに，１ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し，前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て，前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを，該ステージに配置するステージ割当部とを，備える
ことを特徴とする動作合成装置。
【請求項６】
コンピュータに，プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行させるための動作合成プログラムであって，
前記コンピュータに，
処理対象となる動作記述を解析して，該動作記述のオペレーションを演算単位に分割し，前記分割した分割オペレーションの実行順序を特定し，各演算単位の処理時間を定義する演算ライブラリ情報を参照して，該分割オペレーション各々の処理時間を算出する処理と，
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し，該パスから選択した１パスごとに，前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに，１ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し，前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て，前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを，該ステージに配置する処理とを，実行させる
ことを特徴とする動作合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，集積回路の論理設計における動作合成技術に関する。
【背景技術】
【０００２】
パイプライン回路のシステム設計に関する，トランザクション・レベル（ＴＬ）の動作記述をレジスタ・トランスファー・レベル（ＲＴＬ）記述に変換する動作合成において，動作記述をパイプライン処理する場合に，制約で与えられたステージ数の各ステージ内でオペレーション（演算）の実行が確実に完了されるように割り当てるだけでなく，ステージ間でオペレーションが偏りなく配置されることが求められている。
【０００３】
従来技術として，動作記述のオペレーションを演算単位に分割して，実行順序および処理に要する時間に従って，パイプライン処理の先頭ステージから順に割り当てていく処理手法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３５０８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術では，動作記述のオペレーションを，１サイクル内に演算単位の処理時間が収まる分のオペレーションに要する時間実行順序に従って，１サイクル内に，処理に必要な時間が収まるオペレーションを全て１つのステージ内に割り当てていく。すなわち，演算単位に分割されたオペレーションが，処理時間にもとづいてパイプライン処理の最初のステージから順に割り当てられていくため，パイプライン処理の前寄りの（パイプライン処理の入口に近い）ステージには，総処理時間が１サイクルに近くなるような数のオペレーションが配置され，一方で，後寄りの（パイプライン処理の出口に近い）ステージには，オペレーションが１つも配置されないというような偏りが生じる。
【０００６】
パイプライン処理のステージ間で割り当てられるオペレーション数に偏りが生じると，パイプライン処理全体としては処理時間が十分であるにもかかわらず，前寄りのステージでの処理完了のタイミングがクリティカルになってしまうという問題が生じていた。
【０００７】
また，１ステージ内に割り当てられたオペレーション数が多くなることは，回路のレイアウト設計でステージを区切るレジスタ間に配置されるオペレーション（演算）に対応する論理回路数が多くなるため，レジスタ間の配線長が長くなる状態が生じやすく，上記のタイミングがクリティカルになるというおそれがあった。具体的には，ＲＴＬ記述上では，ステージ内に配置された演算の総処理時間が１サイクル内に収まるが，実際の回路配置では，配線長の影響によるタイミング遅延が生じ，１サイクル内で処理が完了しない状態が生じるおそれがあった。
【０００８】
本発明の目的は，その一態様として，動作記述をパイプライン処理する場合に，制約として与えられたステージ数の各ステージに，演算単位に分割されたオペレーションを，偏りなく自動的に各ステージに配置できる動作合成を，コンピュータが実行する処理方法を提供することである。
【０００９】
さらに，本発明の目的は，別の一態様として，上記動作合成を実行する動作合成装置，および，上記動作合成をコンピュータに実行させるための動作合成プログラムを提供することである。
【課題を解決するための手段】
【００１０】
本願において開示される動作合成方法は，コンピュータが，プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する処理方法であって，前記コンピュータが，１）処理対象となる動作記述を解析して，該動作記述のオペレーションを演算単位に分割し，前記分割した分割オペレーションの実行順序を特定し，各演算単位の処理時間を定義する演算ライブラリ情報を参照して，該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと，２）前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し，該パスから選択した１パスごとに，前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに，１ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し，前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て，前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを，該ステージに配置するステージ割当ステップとを，実行するものである。
【発明の効果】
【００１１】
上記開示した動作合成方法によれば，動作記述をパイプライン処理する場合に，パイプライン処理の各ステージにオペレーションを偏りなく配置したＲＴＬ記述を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態における動作合成装置の構成例を示す図である。
【図２】開示する動作合成装置の一実施形態における処理フローを示す図である。
【図３】一実施形態における動作記述の例を示す図である。
【図４】一実施形態における動作記述の例を示す図である。
【図５】一実施形態における分割オペレーションの例を模式的に示す図である。
【図６】開示する動作合成装置によるＲＴＬ例を示す図である。
【図７】開示する動作合成装置によるＲＴＬ例を模式的に示す図である。
【図８】従来技術によるＲＴＬ例を示す図である。
【図９】従来技術によるＲＴＬ例を模式的に示す図である。
【図１０】一実施形態における第１のステージ割当処理の処理フロー例を示す図である。
【図１１】一実施形態における第２のステージ割当処理の処理フロー例を示す図である。
【図１２】一実施形態における第３のステージ割当処理の処理フロー例を示す図である。
【図１３】一実施形態におけるＲＴＬ生成処理のより詳細な処理フロー例を示す図である。
【発明を実施するための形態】
【００１３】
以下，本発明の一態様として開示する動作合成装置について説明する。
【００１４】
図１は，本発明の一実施形態における動作合成装置の構成例を示す図である。
【００１５】
動作合成装置１は，トランザクション・レベル（ＴＬ）の動作記述を，レジスタ・トランスファー・レベル（ＲＴＬ）記述へ変換する動作合成を実行する装置である。
【００１６】
動作合成装置１は，入力部１１，制約条件記憶部１３，演算ライブラリ情報記憶部１４，動作記述記憶部１５，オペレーション分割部１６，ステージ割当部１７，および出力部１８を備える。
【００１７】
入力部１１は，パイプライン処理の制約条件を受け付けて制約条件記憶部１３に格納する。
【００１８】
制約条件は，パイプライン処理の制約として定められたステージ数（段数），および１サイクルのクロック周波数が設定された情報である。
【００１９】
入力部１１は，動作記述を受け付けて動作記述記憶部１５に格納する。
【００２０】
動作記述は，例えばｓｙｓｔｅｍＣのトランザクションレベルの記述言語による，パイプライン回路の動作記述である。
【００２１】
入力部１１は，演算ライブラリ情報を受け付けて演算ライブラリ情報記憶部１４に格納する。演算ライブラリ情報は，動作記述に記述されたオペレーションの演算種別ごとに，演算処理に必要とされる処理時間の定義情報である。
【００２２】
オペレーション分割部１６は，動作記述記憶部１５に格納されている動作記述を解析して，動作記述のオペレーションを演算単位に分割する。分割された演算単位のオペレーションを，分割オペレーションと呼ぶ。オペレーション分割部１６は，動作記述の分割オペレーションの実行順序を解析して，演算ライブラリ情報記憶部１４に記憶されている演算ライブラリ情報にもとづいて，動作記述から抽出した分割オペレーションの処理時間を算出する。
【００２３】
ステージ割当部１７は，分割オペレーションの実行順序をもとに，１つの入力から出力までのオペレーションであるパスを解析する。そして，ステージ割当部１７は，各パスについて，パスに含まれる分割オペレーションの総処理時間を，制約条件で定義されたステージ数で割って，１ステージ内に配置されるオペレーションの処理時間の平均を示すステージ内処理時間を計算する。ステージ割当部１７は，パス内の分割オペレーションの実行順序にもとづいて，分割オペレーションを順にステージに割り当て，割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときにそのステージに割り当てている分割オペレーションを，そのステージに配置する。
【００２４】
さらに，ステージ割当部１７は，分割オペレーションの処理時間に所定のマージン時間を加算し，加算した処理時間を用いて分割オペレーションの配置を決定する。マージン時間は，制約条件に含まれるものとする。
【００２５】
また，ステージ割当部１７は，各分割オペレーションの処理時間が，所定の時間範囲内であるかを判定して，分割オペレーションの処理時間が所定の時間範囲内である場合に，パス内の分割オペレーションの総数とステージ数とをもとに，１ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し，そのパスでの分割オペレーションの実行順序にもとづいて，分割オペレーションを順にステージに割り当て，割り当てた分割オペレーションの合計数がステージ内配置数を超えたときにそのステージに割り当てている分割オペレーションを，そのステージに配置する。
【００２６】
出力部１８は，ステージ割当部１７で処理された，各ステージへの分割オペレーションの配置をもとに，パスの分割オペレーションを，動作記述からレジスタ・トランスファー・レベル（ＲＴＬ）２に変換する。
【００２７】
以下，動作合成装置１の処理の流れを説明する。
【００２８】
図２は，開示する動作合成装置１の一実施形態における処理フローを示す図である。
【００２９】
ステップＳ１：  情報入力処理
動作合成装置１の入力部１１は，制約条件，演算ライブラリ情報，動作記述の入力を受け付けて，それぞれ，制約条件記憶部１３，演算ライブラリ情報記憶部１４，動作記述記憶部１５に格納する。
【００３０】
図３および図４は，動作記述の例を示す図である。
【００３１】
図３は，システム設計用言語ＳｙｓｔｅｍＣで記述された動作記述のヘッダファイル例であって，システムの動作を定義するモジュールとコンストラクタが記述される。図４は，同じ動作記述のソースファイル例であって，プロセスのアーキテクチャが記述される。
【００３２】
ステップＳ２：  オペレーション分割処理
オペレーション分割部１６は，動作記述記憶部１５に格納された動作記述を解析して，動作記述に記述されたオペレーションを演算単位に分割する。
【００３３】
図３および図４に示す動作記述の例において，オペレーションのパスでは，データ入力する演算ｏｐ１からデータ出力する演算ｏｐ７までの７つの演算で構成されることが分かる。オペレーション分割部１６によって，データの入力から出力までの１つのオペレーションのパスのオペレーションが７つの演算単位に分割され，分割オペレーションとして特定される。さらに，オペレーション分割部１６は，動作記述をもとに，分割オペレーションの実行順序を特定する。
【００３４】
図５は，分割オペレーションの例を模式的に示す図である。
【００３５】
図５に示すように，図３および図４に示す動作記述の例では，あるパスで，分割オペレーション（演算）ｏｐ１〜ｏｐ７が特定され，また，分割オペレーション（演算）が，ｏｐ１，ｏｐ２，ｏｐ３，ｏｐ４，ｏｐ５，ｏｐ６，ｏｐ７の順に実行されることが特定される。
【００３６】
さらに，オペレーション分割部１６は，演算ライブラリ情報記憶部１４の演算ライブラリ情報をもとに，各分割オペレーションの処理時間を計算する。例えば，分割オペレーションｏｐ１の処理時間が，１０ピコ秒と計算される。
【００３７】
ステップＳ３：  ステージ割当処理
ステージ割当部１７は，制約条件記憶部１３の制約条件から，パイプライン処理のステージ数および１サイクルのクロック周波数を取得する。そして，ステージ割当部１７は，選択したパスの分割オペレーション（例えば，ｏｐ１〜ｏｐ７）の総処理時間をステージ数で除算して，１ステージあたりの分割オペレーションの処理時間であるステージ内処理時間を求める。
【００３８】
さらに，ステージ割当部１７は，パイプライン処理のステージを入り口から１つずつ選択し，動作記述から解析した分割オペレーションの実行順序にもとづいて，分割オペレーションを，選択したステージに順に割り当て，割り当てた分割オペレーションの処理時間の合計を求める。ステージ割当部１７は，割り当てている分割オペレーションの処理時間の合計がステージ内処理時間を超えた時点で，選択したステージに割り当てている分割オペレーションに対し，選択したステージを配置ステージとして決定する。
【００３９】
ステージ割当部１７は，動作記述の全ての分割オペレーションについて配置ステージを決定する。
【００４０】
ステップＳ４：  ＲＴＬ生成処理
出力部１８は，動作記述をＲＴＬ記述に変換する。その際に，出力部１８は，分割オペレーションの配置ステージにもとづいて，分割オペレーションの実行順序において配置ステージが異なる分割オペレーション間に，レジスタ記述を挿入する。出力部１８は，変換したＲＴＬ記述のデータ（ＲＴＬ）２を出力する。
【００４１】
図６〜図９は，開示する動作合成装置１および従来技術によるＲＴＬを比較するための図である。
【００４２】
図６は，動作合成装置１によるＲＴＬ例を示す図であり，図７は，図６に示すＲＴＬを模式的に示す図である。図８は，従来技術によるＲＴＬ例を示す図であり，図９は，図８に示すＲＴＬを模式的に示す図である。
【００４３】
図６に示すように，動作合成装置１によれば，パスの分割オペレーションｏｐ１〜ｏｐ７について，分割オペレーションｏｐ１，ｏｐ２の配置ステージ＝１，分割オペレーションｏｐ３，ｏｐ４の配置ステージ＝２，分割オペレーションｏｐ５，ｏｐ６の配置ステージ＝３，分割オペレーションｏｐ７の配置ステージ＝４と決定される。そして，同じ配置ステージに決定された分割オペレーション群の最後尾の分割オペレーションの後にレジスタ（ＦＦ）が挿入される。すなわち，図７に示すように，分割オペレーションｏｐ２，ｏｐ４，ｏｐ６，ｏｐ７の後にレジスタ記述が挿入される。
【００４４】
一方，図８に示すように，従来技術によれば，パスの分割オペレーションｏｐ１〜ｏｐ７について，処理時間の合計が１サイクルに収まる分の分割オペレーションがそのステージに配置される。その結果，図９（Ａ）に示すように，分割オペレーションｏｐ３，ｏｐ５，ｏｐ６，ｏｐ７の後にレジスタ（ＦＦ）が挿入されたり，図９（Ｂ）に示すように，ステージ４に分割オペレーションが配置されず，分割オペレーションｏｐ３，ｏｐ６，ｏｐ７の後にレジスタ（ＦＦ）が挿入されたりする。
【００４５】
したがって，従来技術によれば，パイプライン処理の前寄りのステージに配置される分割オペレーション数が多く，後寄りのステージに配置される分割オペレーション数が少なくなるという，配置の偏りが生じている。これに対し，開示する動作合成装置１によれば，各ステージに１または２の分割オペレーションが配置され，配置の偏りが少ないことがわかる。
【００４６】
以下に，ステージ割当処理（ステップＳ３）の具体例を説明する。
【００４７】
ステージ割当部１７は，図１０〜図１２の処理フロー例として示すステージ割当処理の具体例のいずれかを実行することができる。
【００４８】
図１０は，第１のステージ割当処理の処理フロー例を示す図である。
【００４９】
第１のステージ割当処理では，分割オペレーションの処理時間を用いて配置ステージを決定する。
【００５０】
ステージ割当部１７は，処理前に，オペレーション分割部１６から，各分割オペレーションの分割オペレーション番号（ｏｐ＿ｎｕｍ）および処理時間（ｄｅｌａｙ：ｏｐ＿ｄ［ｏｐ＿ｎｕｍ］）を取得している。
【００５１】
ステージ割当部１７は，動作記述のオペレーションのパスを１つ選択し（ステップＳ１１），選択したパスが含む分割オペレーションの処理時間（ｄｅｌａｙ）の総計を，制約条件に定義されているステージ数で除算してステージ内処理時間ｎを求め，さらに，選択したパスの分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）を求める（ステップＳ１２）。
【００５２】
次に，ステージ割当部１７は，初期化として，現在のステージ数（ｃｕｒｒ＿ｓｔ）＝１，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）＝１と設定する（ステップＳ１３）。さらに，ステージ割当部１７は，現在のステージ（ｃｕｒｒ＿ｓｔ）が配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）であるとして分割オペレーションの処理時間（ｄｅｌａｙ）の合計ｍ＝０とする（ステップＳ１４）。
【００５３】
次に，ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）である分割オペレーション番号を持つ分割オペレーションを選択する（ステップＳ１５）。そして，ステージ割当部１７は，現在のステージ数（ｃｕｒｒ＿ｓｔ）を配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）とし，処理時間（ｄｅｌａｙ）の合計ｍに，選択した分割オペレーションの処理時間（ｏｐ＿ｄ［ｏｐ＿ｎｕｍ］）を加算する（ステップＳ１６）。
【００５４】
ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が，分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さい場合に（ステップＳ１７のＹ），ステップＳ１８の処理へ進み，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さくない場合に（ステップＳ１７のＮ），ステップＳ１１２の処理へ進む。
【００５５】
ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）に１を加算して（ステップＳ１８），処理時間（ｄｅｌａｙ）の合計ｍが，ステージ内処理時間ｎを超過したら（ステップＳ１９のＹ），ステップＳ１１０の処理へ進み，超過していなければ（ステップＳ１９のＮ），ステップＳ１５の処理へ戻る。
【００５６】
ステージ割当部１７は，現在のステージ数（ｃｕｒｒ＿ｓｔ）がステージ数より小さければ（ステップＳ１１０のＹ），現在のステージ数（ｃｕｒｒ＿ｓｔ）に１を加算して（ステップＳ１１１），ステップＳ１４の処理へ戻り，現在のステージ数（ｃｕｒｒ＿ｓｔ）がステージより小さくなければ（ステップＳ１１０のＮ），ステップＳ１１２の処理へ進む。
【００５７】
そして，ステージ割当部１７は，全ての分割オペレーションについて処理が完了していなければ（ステップＳ１１２のＮ），ステップＳ１１の処理へ戻り，全ての分割オペレーションについて処理が完了していれば（ステップＳ１１２のＹ），処理を終了する。
【００５８】
以上の処理によって，各分割オペレーションの配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）が決定される。パスに含まれる分割オペレーションの総処理時間にもとづくステージの平均処理時間（ステージ内処理時間）を基準にして，１ステージ内に配置する分割オペレーションを決定するため，各ステージに偏りなく分割オペレーションを配置することが可能となる。
【００５９】
図１１は，第２のステージ割当処理の処理フロー例を示す図である。
【００６０】
第２のステージ割当処理では，分割オペレーションの処理時間に所定のマージン時間を加算した時間を用いて配置ステージを決定する。
【００６１】
図１１に示す処理フロー例では，ステージ割当部１７は，処理前に，処理時間（ｄｅｌａｙ：ｏｐ＿ｄ［ｏｐ＿ｎｕｍ］）に加算するマージン時間（ｏｐ＿ｍ［ｏｐ＿ｎｕｍ］）を取得している。
【００６２】
図１１に示す処理フローは，図１０に示す処理フローと同様であり，図１１の処理フローのステップＳ２１〜Ｓ２１２の処理は，ステップＳ２６を除き，図１０に示す処理フローのステップＳ１１〜Ｓ１１２の各ステップの処理に対応している。したがって，説明を簡略にするため，ステップＳ２６についてのみ説明する。
【００６３】
ステップＳ２６の処理では，ステージ割当部１７は，現在のステージ数（ｃｕｒｒ＿ｓｔ）を配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）とし，処理時間（ｄｅｌａｙ）の合計ｍに，処理時間（ｏｐ＿ｄ［ｏｐ＿ｎｕｍ］）とマージン時間（ｏｐ＿ｍ［ｏｐ＿ｎｕｍ］）とを加算する。
【００６４】
以上の処理により，任意のマージン時間を考慮した処理時間にもとづいて，各分割オペレーションの配置ステージが決定される。よって，タイミングの余裕を任意の時間幅で確保しつつ，各ステージに偏りなく分割オペレーションを配置することが可能となる。
【００６５】
図１２は，第３のステージ割当処理の処理フロー例を示す図である。
【００６６】
第３のステージ割当処理では，パス内の分割オペレーションの処理時間が同一であるとみなせる場合に，パス内の分割オペレーション数を用いてステージへの配置を決定する。
【００６７】
ステージ割当部１７は，オペレーション分割部１６から，各分割オペレーションの分割オペレーション番号（ｏｐ＿ｎｕｍ）のみを取得している。各分割オペレーションの処理時間（ｄｅｌａｙ：ｏｐ＿ｄ［ｏｐ＿ｎｕｍ］）は不要である。
【００６８】
ステージ割当部１７は，動作記述のオペレーションのパスを１つ選択し（ステップＳ３１），選択したパスが含む分割オペレーションの総数を，制約条件に定義されたステージ数で除算してステージ内配置数ｎ′を求め，さらに，選択したパスの分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）を求める（ステップＳ３２）。
【００６９】
次に，ステージ割当部１７は，現在のステージ数（ｃｕｒｒ＿ｓｔ）＝１，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）＝１と設定する（ステップＳ３３）。さらに，ステージ割当部１７は，初期化として，現在のステージ数（ｃｕｒｒ＿ｓｔ）が分割オペレーションの配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）であるとして分割オペレーションの合計数ｍ′＝０とする（ステップＳ３４）。
【００７０】
次に，ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）である分割オペレーション番号（ｏｐ＿ｎｕｍ）を持つ分割オペレーションを選択し（ステップＳ３５），現在のステージ数（ｃｕｒｒ＿ｓｔ）を配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）として，合計数ｍ′に１を加算する（ステップＳ３６）。
【００７１】
ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さい場合に（ステップＳ３７のＹ），ステップＳ３８の処理へ進み，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さくない場合に（ステップＳ３７のＮ），ステップＳ３１２の処理へ進む。
【００７２】
ステージ割当部１７は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）に１を加算して（ステップＳ３８），分割オペレーションの合計数ｍ′がステージ内配置数ｎ′を超過したら（ステップＳ３９のＹ），ステップＳ３１０の処理へ進み，分割オペレーションの合計数ｍ′がステージ内配置数ｎ′を超過していなければ（ステップＳ３９のＮ），ステップＳ３４の処理へ戻す。
【００７３】
ステージ割当部１７は，現在のステージ数（ｃｕｒｒ＿ｓｔ）がステージ数より小さければ（ステップＳ３１０のＹ），現在のステージ数（ｃｕｒｒ＿ｓｔ）に１を加算して（ステップＳ３１１），ステップＳ３４の処理へ戻り，現在のステージ数（ｃｕｒｒ＿ｓｔ）がステージ数より小さくなければ（ステップＳ３１０のＮ），ステップＳ３１２の処理へ進む。
【００７４】
ステージ割当部１７は，全ての分割オペレーションについて処理が完了していなければ（ステップＳ３１２のＮ），ステップＳ３１の処理へ戻り，全ての分割オペレーションについて処理が完了していれば（ステップＳ３１２のＹ），処理を終了する。
【００７５】
以上の処理により，分割オペレーションの処理時間にばらつきがなく同一とみなせる場合に，パスに含まれる分割オペレーション総数にもとづいて，各分割オペレーションの配置ステージが決定される。よって，分割オペレーションの処理時間を用いることなく，より少ない情報で，各ステージに偏りなく分割オペレーションを配置することが可能となる。
【００７６】
図１３は，ＲＴＬ生成処理（図２：ステップＳ４）のより詳細な処理フロー例を示す図である。
【００７７】
出力部１８は，動作記述のオペレーションのパスを１つ選択し（ステップＳ４１），選択したパスの分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）を求め，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）＝１と設定する（ステップＳ４２）。
【００７８】
次に，出力部１８は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）である分割オペレーション番号（ｏｐ＿ｎｕｍ）を持つ分割オペレーションを選択し（ステップＳ４３），選択した分割オペレーションを動作記述からＲＴＬ記述に変換する（ステップＳ４４）。
【００７９】
そして，出力部１８は，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さい場合に（ステップＳ４５のＹ），ステップＳ４６の処理へ進み，現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）が分割オペレーション総数（ｏｐ＿ｔｏｔａｌ）より小さくない場合に（ステップＳ４５のＮ），ステップＳ４７の処理へ進む。
【００８０】
ステップＳ４６の処理で，出力部１８は，変換したＲＴＬ記述にＦＦを挿入し，ステップＳ４１０の処理へ進む。
【００８１】
ステップＳ４７の処理で，出力部１８は，配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）が，その値に１を加算した値と等しくなければ（ステップＳ４７のＮ），変換したＲＴＬ記述にＦＦを挿入し（ステップＳ４８），配置ステージ（ｏｐ＿ｓｔ［ｏｐ＿ｎｕｍ］）が，その値に１を加算した値と等しければ（ステップＳ４７のＹ），現在の分割オペレーション番号（ｃｕｒｒ＿ｏｐ＿ｎｕｍ）に１を加算して（ステップＳ４９），ステップＳ４３の処理へ戻る。
【００８２】
出力部１８は，全ての分割オペレーションについて処理が完了していなければ（ステップＳ４１０のＮ），ステップＳ４１の処理へ戻り，全ての分割オペレーションについて処理が完了していれば（ステップＳ４１０のＹ），処理を終了する。
【００８３】
以上説明した動作合成装置１は，ＣＰＵおよびメモリ等を有するハードウェアと，ソフトウェアプログラムとを備えるコンピュータ・システム，または専用ハードウェアによって実現することができる。すなわち，動作合成装置１は，演算装置（ＣＰＵ），一時記憶装置（ＤＲＡＭ，フラッシュメモリ等）および永続性記憶装置（ＨＤＤ，フラッシュメモリ等）を有し，外部とデータの入出力をするコンピュータによって実施できる。
【００８４】
また，動作合成装置１は，このコンピュータが実行可能なプログラムによっても実施することができる。この場合に，動作合成装置１が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムを上記コンピュータが実行することによって，上記説明した動作合成装置１の処理機能がコンピュータ上で実現される。なお，上記コンピュータは，可搬型記録媒体から直接プログラムを読み取り，そのプログラムに従った処理を実行することもできる。さらに，上記プログラムは，コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【００８５】
以上，一実施形態として説明したように，開示する動作合成装置によれば，動作合成結果を解析し制約を与える手間を解消し，タイミングに偏りの少ないＲＴＬ記述を自動的に生成することが可能となる。
【符号の説明】
【００８６】
１  動作合成装置
１１  入力部
１３  制約条件記憶部
１４  演算ライブラリ情報記憶部
１５  動作記述記憶部
１６  オペレーション分割部
１７  ステージ割当部
１８  出力部
２  レジスタ・トランスファー・レベル記述（ＲＴＬ）
【図１】
2012198633.tif 000003
【図２】
2012198633.tif 000004
【図３】
2012198633.tif 000005
【図４】
2012198633.tif 000006
【図５】
2012198633.tif 000007
【図６】
2012198633.tif 000008
【図７】
2012198633.tif 000009
【図８】
2012198633.tif 000010
【図９】
2012198633.tif 000011
【図１０】
2012198633.tif 000012
【図１１】
2012198633.tif 000013
【図１２】
2012198633.tif 000014
【図１３】
2012198633.tif 000015