動作合成方法,装置およびプログラム
【課題】 動作合成において,動作記述をパイプライン処理する際にオペレーションを各ステージに偏りなく配置したRTLを生成することを目的とする。
【解決手段】 動作合成装置1は,動作記述を解析してオペレーションを演算単位に分割し,分割オペレーションの実行順序と各々の処理時間を算出するオペレーション分割部16と,動作記述からパスを選択し,パス内の分割オペレーションの総処理時間をパイプライン処理のステージ数で割ってステージ内処理時間を求め,選択したパスでの分割オペレーションの実行順序にもとづいて分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときに,そのステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当部17と,該ステージの配置をもとに動作記述をRTL記述に変換する出力部18を備える。
【解決手段】 動作合成装置1は,動作記述を解析してオペレーションを演算単位に分割し,分割オペレーションの実行順序と各々の処理時間を算出するオペレーション分割部16と,動作記述からパスを選択し,パス内の分割オペレーションの総処理時間をパイプライン処理のステージ数で割ってステージ内処理時間を求め,選択したパスでの分割オペレーションの実行順序にもとづいて分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときに,そのステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当部17と,該ステージの配置をもとに動作記述をRTL記述に変換する出力部18を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,集積回路の論理設計における動作合成技術に関する。
【背景技術】
【0002】
パイプライン回路のシステム設計に関する,トランザクション・レベル(TL)の動作記述をレジスタ・トランスファー・レベル(RTL)記述に変換する動作合成において,動作記述をパイプライン処理する場合に,制約で与えられたステージ数の各ステージ内でオペレーション(演算)の実行が確実に完了されるように割り当てるだけでなく,ステージ間でオペレーションが偏りなく配置されることが求められている。
【0003】
従来技術として,動作記述のオペレーションを演算単位に分割して,実行順序および処理に要する時間に従って,パイプライン処理の先頭ステージから順に割り当てていく処理手法が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−350849号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来技術では,動作記述のオペレーションを,1サイクル内に演算単位の処理時間が収まる分のオペレーションに要する時間実行順序に従って,1サイクル内に,処理に必要な時間が収まるオペレーションを全て1つのステージ内に割り当てていく。すなわち,演算単位に分割されたオペレーションが,処理時間にもとづいてパイプライン処理の最初のステージから順に割り当てられていくため,パイプライン処理の前寄りの(パイプライン処理の入口に近い)ステージには,総処理時間が1サイクルに近くなるような数のオペレーションが配置され,一方で,後寄りの(パイプライン処理の出口に近い)ステージには,オペレーションが1つも配置されないというような偏りが生じる。
【0006】
パイプライン処理のステージ間で割り当てられるオペレーション数に偏りが生じると,パイプライン処理全体としては処理時間が十分であるにもかかわらず,前寄りのステージでの処理完了のタイミングがクリティカルになってしまうという問題が生じていた。
【0007】
また,1ステージ内に割り当てられたオペレーション数が多くなることは,回路のレイアウト設計でステージを区切るレジスタ間に配置されるオペレーション(演算)に対応する論理回路数が多くなるため,レジスタ間の配線長が長くなる状態が生じやすく,上記のタイミングがクリティカルになるというおそれがあった。具体的には,RTL記述上では,ステージ内に配置された演算の総処理時間が1サイクル内に収まるが,実際の回路配置では,配線長の影響によるタイミング遅延が生じ,1サイクル内で処理が完了しない状態が生じるおそれがあった。
【0008】
本発明の目的は,その一態様として,動作記述をパイプライン処理する場合に,制約として与えられたステージ数の各ステージに,演算単位に分割されたオペレーションを,偏りなく自動的に各ステージに配置できる動作合成を,コンピュータが実行する処理方法を提供することである。
【0009】
さらに,本発明の目的は,別の一態様として,上記動作合成を実行する動作合成装置,および,上記動作合成をコンピュータに実行させるための動作合成プログラムを提供することである。
【課題を解決するための手段】
【0010】
本願において開示される動作合成方法は,コンピュータが,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する処理方法であって,前記コンピュータが,1)処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと,2)前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当ステップとを,実行するものである。
【発明の効果】
【0011】
上記開示した動作合成方法によれば,動作記述をパイプライン処理する場合に,パイプライン処理の各ステージにオペレーションを偏りなく配置したRTL記述を提供することができる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態における動作合成装置の構成例を示す図である。
【図2】開示する動作合成装置の一実施形態における処理フローを示す図である。
【図3】一実施形態における動作記述の例を示す図である。
【図4】一実施形態における動作記述の例を示す図である。
【図5】一実施形態における分割オペレーションの例を模式的に示す図である。
【図6】開示する動作合成装置によるRTL例を示す図である。
【図7】開示する動作合成装置によるRTL例を模式的に示す図である。
【図8】従来技術によるRTL例を示す図である。
【図9】従来技術によるRTL例を模式的に示す図である。
【図10】一実施形態における第1のステージ割当処理の処理フロー例を示す図である。
【図11】一実施形態における第2のステージ割当処理の処理フロー例を示す図である。
【図12】一実施形態における第3のステージ割当処理の処理フロー例を示す図である。
【図13】一実施形態におけるRTL生成処理のより詳細な処理フロー例を示す図である。
【発明を実施するための形態】
【0013】
以下,本発明の一態様として開示する動作合成装置について説明する。
【0014】
図1は,本発明の一実施形態における動作合成装置の構成例を示す図である。
【0015】
動作合成装置1は,トランザクション・レベル(TL)の動作記述を,レジスタ・トランスファー・レベル(RTL)記述へ変換する動作合成を実行する装置である。
【0016】
動作合成装置1は,入力部11,制約条件記憶部13,演算ライブラリ情報記憶部14,動作記述記憶部15,オペレーション分割部16,ステージ割当部17,および出力部18を備える。
【0017】
入力部11は,パイプライン処理の制約条件を受け付けて制約条件記憶部13に格納する。
【0018】
制約条件は,パイプライン処理の制約として定められたステージ数(段数),および1サイクルのクロック周波数が設定された情報である。
【0019】
入力部11は,動作記述を受け付けて動作記述記憶部15に格納する。
【0020】
動作記述は,例えばsystemCのトランザクションレベルの記述言語による,パイプライン回路の動作記述である。
【0021】
入力部11は,演算ライブラリ情報を受け付けて演算ライブラリ情報記憶部14に格納する。演算ライブラリ情報は,動作記述に記述されたオペレーションの演算種別ごとに,演算処理に必要とされる処理時間の定義情報である。
【0022】
オペレーション分割部16は,動作記述記憶部15に格納されている動作記述を解析して,動作記述のオペレーションを演算単位に分割する。分割された演算単位のオペレーションを,分割オペレーションと呼ぶ。オペレーション分割部16は,動作記述の分割オペレーションの実行順序を解析して,演算ライブラリ情報記憶部14に記憶されている演算ライブラリ情報にもとづいて,動作記述から抽出した分割オペレーションの処理時間を算出する。
【0023】
ステージ割当部17は,分割オペレーションの実行順序をもとに,1つの入力から出力までのオペレーションであるパスを解析する。そして,ステージ割当部17は,各パスについて,パスに含まれる分割オペレーションの総処理時間を,制約条件で定義されたステージ数で割って,1ステージ内に配置されるオペレーションの処理時間の平均を示すステージ内処理時間を計算する。ステージ割当部17は,パス内の分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときにそのステージに割り当てている分割オペレーションを,そのステージに配置する。
【0024】
さらに,ステージ割当部17は,分割オペレーションの処理時間に所定のマージン時間を加算し,加算した処理時間を用いて分割オペレーションの配置を決定する。マージン時間は,制約条件に含まれるものとする。
【0025】
また,ステージ割当部17は,各分割オペレーションの処理時間が,所定の時間範囲内であるかを判定して,分割オペレーションの処理時間が所定の時間範囲内である場合に,パス内の分割オペレーションの総数とステージ数とをもとに,1ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し,そのパスでの分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの合計数がステージ内配置数を超えたときにそのステージに割り当てている分割オペレーションを,そのステージに配置する。
【0026】
出力部18は,ステージ割当部17で処理された,各ステージへの分割オペレーションの配置をもとに,パスの分割オペレーションを,動作記述からレジスタ・トランスファー・レベル(RTL)2に変換する。
【0027】
以下,動作合成装置1の処理の流れを説明する。
【0028】
図2は,開示する動作合成装置1の一実施形態における処理フローを示す図である。
【0029】
ステップS1: 情報入力処理
動作合成装置1の入力部11は,制約条件,演算ライブラリ情報,動作記述の入力を受け付けて,それぞれ,制約条件記憶部13,演算ライブラリ情報記憶部14,動作記述記憶部15に格納する。
【0030】
図3および図4は,動作記述の例を示す図である。
【0031】
図3は,システム設計用言語SystemCで記述された動作記述のヘッダファイル例であって,システムの動作を定義するモジュールとコンストラクタが記述される。図4は,同じ動作記述のソースファイル例であって,プロセスのアーキテクチャが記述される。
【0032】
ステップS2: オペレーション分割処理
オペレーション分割部16は,動作記述記憶部15に格納された動作記述を解析して,動作記述に記述されたオペレーションを演算単位に分割する。
【0033】
図3および図4に示す動作記述の例において,オペレーションのパスでは,データ入力する演算op1からデータ出力する演算op7までの7つの演算で構成されることが分かる。オペレーション分割部16によって,データの入力から出力までの1つのオペレーションのパスのオペレーションが7つの演算単位に分割され,分割オペレーションとして特定される。さらに,オペレーション分割部16は,動作記述をもとに,分割オペレーションの実行順序を特定する。
【0034】
図5は,分割オペレーションの例を模式的に示す図である。
【0035】
図5に示すように,図3および図4に示す動作記述の例では,あるパスで,分割オペレーション(演算)op1〜op7が特定され,また,分割オペレーション(演算)が,op1,op2,op3,op4,op5,op6,op7の順に実行されることが特定される。
【0036】
さらに,オペレーション分割部16は,演算ライブラリ情報記憶部14の演算ライブラリ情報をもとに,各分割オペレーションの処理時間を計算する。例えば,分割オペレーションop1の処理時間が,10ピコ秒と計算される。
【0037】
ステップS3: ステージ割当処理
ステージ割当部17は,制約条件記憶部13の制約条件から,パイプライン処理のステージ数および1サイクルのクロック周波数を取得する。そして,ステージ割当部17は,選択したパスの分割オペレーション(例えば,op1〜op7)の総処理時間をステージ数で除算して,1ステージあたりの分割オペレーションの処理時間であるステージ内処理時間を求める。
【0038】
さらに,ステージ割当部17は,パイプライン処理のステージを入り口から1つずつ選択し,動作記述から解析した分割オペレーションの実行順序にもとづいて,分割オペレーションを,選択したステージに順に割り当て,割り当てた分割オペレーションの処理時間の合計を求める。ステージ割当部17は,割り当てている分割オペレーションの処理時間の合計がステージ内処理時間を超えた時点で,選択したステージに割り当てている分割オペレーションに対し,選択したステージを配置ステージとして決定する。
【0039】
ステージ割当部17は,動作記述の全ての分割オペレーションについて配置ステージを決定する。
【0040】
ステップS4: RTL生成処理
出力部18は,動作記述をRTL記述に変換する。その際に,出力部18は,分割オペレーションの配置ステージにもとづいて,分割オペレーションの実行順序において配置ステージが異なる分割オペレーション間に,レジスタ記述を挿入する。出力部18は,変換したRTL記述のデータ(RTL)2を出力する。
【0041】
図6〜図9は,開示する動作合成装置1および従来技術によるRTLを比較するための図である。
【0042】
図6は,動作合成装置1によるRTL例を示す図であり,図7は,図6に示すRTLを模式的に示す図である。図8は,従来技術によるRTL例を示す図であり,図9は,図8に示すRTLを模式的に示す図である。
【0043】
図6に示すように,動作合成装置1によれば,パスの分割オペレーションop1〜op7について,分割オペレーションop1,op2の配置ステージ=1,分割オペレーションop3,op4の配置ステージ=2,分割オペレーションop5,op6の配置ステージ=3,分割オペレーションop7の配置ステージ=4と決定される。そして,同じ配置ステージに決定された分割オペレーション群の最後尾の分割オペレーションの後にレジスタ(FF)が挿入される。すなわち,図7に示すように,分割オペレーションop2,op4,op6,op7の後にレジスタ記述が挿入される。
【0044】
一方,図8に示すように,従来技術によれば,パスの分割オペレーションop1〜op7について,処理時間の合計が1サイクルに収まる分の分割オペレーションがそのステージに配置される。その結果,図9(A)に示すように,分割オペレーションop3,op5,op6,op7の後にレジスタ(FF)が挿入されたり,図9(B)に示すように,ステージ4に分割オペレーションが配置されず,分割オペレーションop3,op6,op7の後にレジスタ(FF)が挿入されたりする。
【0045】
したがって,従来技術によれば,パイプライン処理の前寄りのステージに配置される分割オペレーション数が多く,後寄りのステージに配置される分割オペレーション数が少なくなるという,配置の偏りが生じている。これに対し,開示する動作合成装置1によれば,各ステージに1または2の分割オペレーションが配置され,配置の偏りが少ないことがわかる。
【0046】
以下に,ステージ割当処理(ステップS3)の具体例を説明する。
【0047】
ステージ割当部17は,図10〜図12の処理フロー例として示すステージ割当処理の具体例のいずれかを実行することができる。
【0048】
図10は,第1のステージ割当処理の処理フロー例を示す図である。
【0049】
第1のステージ割当処理では,分割オペレーションの処理時間を用いて配置ステージを決定する。
【0050】
ステージ割当部17は,処理前に,オペレーション分割部16から,各分割オペレーションの分割オペレーション番号(op_num)および処理時間(delay:op_d[op_num])を取得している。
【0051】
ステージ割当部17は,動作記述のオペレーションのパスを1つ選択し(ステップS11),選択したパスが含む分割オペレーションの処理時間(delay)の総計を,制約条件に定義されているステージ数で除算してステージ内処理時間nを求め,さらに,選択したパスの分割オペレーション総数(op_total)を求める(ステップS12)。
【0052】
次に,ステージ割当部17は,初期化として,現在のステージ数(curr_st)=1,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS13)。さらに,ステージ割当部17は,現在のステージ(curr_st)が配置ステージ(op_st[op_num])であるとして分割オペレーションの処理時間(delay)の合計m=0とする(ステップS14)。
【0053】
次に,ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号を持つ分割オペレーションを選択する(ステップS15)。そして,ステージ割当部17は,現在のステージ数(curr_st)を配置ステージ(op_st[op_num])とし,処理時間(delay)の合計mに,選択した分割オペレーションの処理時間(op_d[op_num])を加算する(ステップS16)。
【0054】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)が,分割オペレーション総数(op_total)より小さい場合に(ステップS17のY),ステップS18の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS17のN),ステップS112の処理へ進む。
【0055】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS18),処理時間(delay)の合計mが,ステージ内処理時間nを超過したら(ステップS19のY),ステップS110の処理へ進み,超過していなければ(ステップS19のN),ステップS15の処理へ戻る。
【0056】
ステージ割当部17は,現在のステージ数(curr_st)がステージ数より小さければ(ステップS110のY),現在のステージ数(curr_st)に1を加算して(ステップS111),ステップS14の処理へ戻り,現在のステージ数(curr_st)がステージより小さくなければ(ステップS110のN),ステップS112の処理へ進む。
【0057】
そして,ステージ割当部17は,全ての分割オペレーションについて処理が完了していなければ(ステップS112のN),ステップS11の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS112のY),処理を終了する。
【0058】
以上の処理によって,各分割オペレーションの配置ステージ(op_st[op_num])が決定される。パスに含まれる分割オペレーションの総処理時間にもとづくステージの平均処理時間(ステージ内処理時間)を基準にして,1ステージ内に配置する分割オペレーションを決定するため,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0059】
図11は,第2のステージ割当処理の処理フロー例を示す図である。
【0060】
第2のステージ割当処理では,分割オペレーションの処理時間に所定のマージン時間を加算した時間を用いて配置ステージを決定する。
【0061】
図11に示す処理フロー例では,ステージ割当部17は,処理前に,処理時間(delay:op_d[op_num])に加算するマージン時間(op_m[op_num])を取得している。
【0062】
図11に示す処理フローは,図10に示す処理フローと同様であり,図11の処理フローのステップS21〜S212の処理は,ステップS26を除き,図10に示す処理フローのステップS11〜S112の各ステップの処理に対応している。したがって,説明を簡略にするため,ステップS26についてのみ説明する。
【0063】
ステップS26の処理では,ステージ割当部17は,現在のステージ数(curr_st)を配置ステージ(op_st[op_num])とし,処理時間(delay)の合計mに,処理時間(op_d[op_num])とマージン時間(op_m[op_num])とを加算する。
【0064】
以上の処理により,任意のマージン時間を考慮した処理時間にもとづいて,各分割オペレーションの配置ステージが決定される。よって,タイミングの余裕を任意の時間幅で確保しつつ,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0065】
図12は,第3のステージ割当処理の処理フロー例を示す図である。
【0066】
第3のステージ割当処理では,パス内の分割オペレーションの処理時間が同一であるとみなせる場合に,パス内の分割オペレーション数を用いてステージへの配置を決定する。
【0067】
ステージ割当部17は,オペレーション分割部16から,各分割オペレーションの分割オペレーション番号(op_num)のみを取得している。各分割オペレーションの処理時間(delay:op_d[op_num])は不要である。
【0068】
ステージ割当部17は,動作記述のオペレーションのパスを1つ選択し(ステップS31),選択したパスが含む分割オペレーションの総数を,制約条件に定義されたステージ数で除算してステージ内配置数n′を求め,さらに,選択したパスの分割オペレーション総数(op_total)を求める(ステップS32)。
【0069】
次に,ステージ割当部17は,現在のステージ数(curr_st)=1,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS33)。さらに,ステージ割当部17は,初期化として,現在のステージ数(curr_st)が分割オペレーションの配置ステージ(op_st[op_num])であるとして分割オペレーションの合計数m′=0とする(ステップS34)。
【0070】
次に,ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号(op_num)を持つ分割オペレーションを選択し(ステップS35),現在のステージ数(curr_st)を配置ステージ(op_st[op_num])として,合計数m′に1を加算する(ステップS36)。
【0071】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さい場合に(ステップS37のY),ステップS38の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS37のN),ステップS312の処理へ進む。
【0072】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS38),分割オペレーションの合計数m′がステージ内配置数n′を超過したら(ステップS39のY),ステップS310の処理へ進み,分割オペレーションの合計数m′がステージ内配置数n′を超過していなければ(ステップS39のN),ステップS34の処理へ戻す。
【0073】
ステージ割当部17は,現在のステージ数(curr_st)がステージ数より小さければ(ステップS310のY),現在のステージ数(curr_st)に1を加算して(ステップS311),ステップS34の処理へ戻り,現在のステージ数(curr_st)がステージ数より小さくなければ(ステップS310のN),ステップS312の処理へ進む。
【0074】
ステージ割当部17は,全ての分割オペレーションについて処理が完了していなければ(ステップS312のN),ステップS31の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS312のY),処理を終了する。
【0075】
以上の処理により,分割オペレーションの処理時間にばらつきがなく同一とみなせる場合に,パスに含まれる分割オペレーション総数にもとづいて,各分割オペレーションの配置ステージが決定される。よって,分割オペレーションの処理時間を用いることなく,より少ない情報で,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0076】
図13は,RTL生成処理(図2:ステップS4)のより詳細な処理フロー例を示す図である。
【0077】
出力部18は,動作記述のオペレーションのパスを1つ選択し(ステップS41),選択したパスの分割オペレーション総数(op_total)を求め,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS42)。
【0078】
次に,出力部18は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号(op_num)を持つ分割オペレーションを選択し(ステップS43),選択した分割オペレーションを動作記述からRTL記述に変換する(ステップS44)。
【0079】
そして,出力部18は,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さい場合に(ステップS45のY),ステップS46の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS45のN),ステップS47の処理へ進む。
【0080】
ステップS46の処理で,出力部18は,変換したRTL記述にFFを挿入し,ステップS410の処理へ進む。
【0081】
ステップS47の処理で,出力部18は,配置ステージ(op_st[op_num])が,その値に1を加算した値と等しくなければ(ステップS47のN),変換したRTL記述にFFを挿入し(ステップS48),配置ステージ(op_st[op_num])が,その値に1を加算した値と等しければ(ステップS47のY),現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS49),ステップS43の処理へ戻る。
【0082】
出力部18は,全ての分割オペレーションについて処理が完了していなければ(ステップS410のN),ステップS41の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS410のY),処理を終了する。
【0083】
以上説明した動作合成装置1は,CPUおよびメモリ等を有するハードウェアと,ソフトウェアプログラムとを備えるコンピュータ・システム,または専用ハードウェアによって実現することができる。すなわち,動作合成装置1は,演算装置(CPU),一時記憶装置(DRAM,フラッシュメモリ等)および永続性記憶装置(HDD,フラッシュメモリ等)を有し,外部とデータの入出力をするコンピュータによって実施できる。
【0084】
また,動作合成装置1は,このコンピュータが実行可能なプログラムによっても実施することができる。この場合に,動作合成装置1が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムを上記コンピュータが実行することによって,上記説明した動作合成装置1の処理機能がコンピュータ上で実現される。なお,上記コンピュータは,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。さらに,上記プログラムは,コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【0085】
以上,一実施形態として説明したように,開示する動作合成装置によれば,動作合成結果を解析し制約を与える手間を解消し,タイミングに偏りの少ないRTL記述を自動的に生成することが可能となる。
【符号の説明】
【0086】
1 動作合成装置
11 入力部
13 制約条件記憶部
14 演算ライブラリ情報記憶部
15 動作記述記憶部
16 オペレーション分割部
17 ステージ割当部
18 出力部
2 レジスタ・トランスファー・レベル記述(RTL)
【技術分野】
【0001】
本発明は,集積回路の論理設計における動作合成技術に関する。
【背景技術】
【0002】
パイプライン回路のシステム設計に関する,トランザクション・レベル(TL)の動作記述をレジスタ・トランスファー・レベル(RTL)記述に変換する動作合成において,動作記述をパイプライン処理する場合に,制約で与えられたステージ数の各ステージ内でオペレーション(演算)の実行が確実に完了されるように割り当てるだけでなく,ステージ間でオペレーションが偏りなく配置されることが求められている。
【0003】
従来技術として,動作記述のオペレーションを演算単位に分割して,実行順序および処理に要する時間に従って,パイプライン処理の先頭ステージから順に割り当てていく処理手法が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−350849号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来技術では,動作記述のオペレーションを,1サイクル内に演算単位の処理時間が収まる分のオペレーションに要する時間実行順序に従って,1サイクル内に,処理に必要な時間が収まるオペレーションを全て1つのステージ内に割り当てていく。すなわち,演算単位に分割されたオペレーションが,処理時間にもとづいてパイプライン処理の最初のステージから順に割り当てられていくため,パイプライン処理の前寄りの(パイプライン処理の入口に近い)ステージには,総処理時間が1サイクルに近くなるような数のオペレーションが配置され,一方で,後寄りの(パイプライン処理の出口に近い)ステージには,オペレーションが1つも配置されないというような偏りが生じる。
【0006】
パイプライン処理のステージ間で割り当てられるオペレーション数に偏りが生じると,パイプライン処理全体としては処理時間が十分であるにもかかわらず,前寄りのステージでの処理完了のタイミングがクリティカルになってしまうという問題が生じていた。
【0007】
また,1ステージ内に割り当てられたオペレーション数が多くなることは,回路のレイアウト設計でステージを区切るレジスタ間に配置されるオペレーション(演算)に対応する論理回路数が多くなるため,レジスタ間の配線長が長くなる状態が生じやすく,上記のタイミングがクリティカルになるというおそれがあった。具体的には,RTL記述上では,ステージ内に配置された演算の総処理時間が1サイクル内に収まるが,実際の回路配置では,配線長の影響によるタイミング遅延が生じ,1サイクル内で処理が完了しない状態が生じるおそれがあった。
【0008】
本発明の目的は,その一態様として,動作記述をパイプライン処理する場合に,制約として与えられたステージ数の各ステージに,演算単位に分割されたオペレーションを,偏りなく自動的に各ステージに配置できる動作合成を,コンピュータが実行する処理方法を提供することである。
【0009】
さらに,本発明の目的は,別の一態様として,上記動作合成を実行する動作合成装置,および,上記動作合成をコンピュータに実行させるための動作合成プログラムを提供することである。
【課題を解決するための手段】
【0010】
本願において開示される動作合成方法は,コンピュータが,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する処理方法であって,前記コンピュータが,1)処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと,2)前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当ステップとを,実行するものである。
【発明の効果】
【0011】
上記開示した動作合成方法によれば,動作記述をパイプライン処理する場合に,パイプライン処理の各ステージにオペレーションを偏りなく配置したRTL記述を提供することができる。
【図面の簡単な説明】
【0012】
【図1】本発明の一実施形態における動作合成装置の構成例を示す図である。
【図2】開示する動作合成装置の一実施形態における処理フローを示す図である。
【図3】一実施形態における動作記述の例を示す図である。
【図4】一実施形態における動作記述の例を示す図である。
【図5】一実施形態における分割オペレーションの例を模式的に示す図である。
【図6】開示する動作合成装置によるRTL例を示す図である。
【図7】開示する動作合成装置によるRTL例を模式的に示す図である。
【図8】従来技術によるRTL例を示す図である。
【図9】従来技術によるRTL例を模式的に示す図である。
【図10】一実施形態における第1のステージ割当処理の処理フロー例を示す図である。
【図11】一実施形態における第2のステージ割当処理の処理フロー例を示す図である。
【図12】一実施形態における第3のステージ割当処理の処理フロー例を示す図である。
【図13】一実施形態におけるRTL生成処理のより詳細な処理フロー例を示す図である。
【発明を実施するための形態】
【0013】
以下,本発明の一態様として開示する動作合成装置について説明する。
【0014】
図1は,本発明の一実施形態における動作合成装置の構成例を示す図である。
【0015】
動作合成装置1は,トランザクション・レベル(TL)の動作記述を,レジスタ・トランスファー・レベル(RTL)記述へ変換する動作合成を実行する装置である。
【0016】
動作合成装置1は,入力部11,制約条件記憶部13,演算ライブラリ情報記憶部14,動作記述記憶部15,オペレーション分割部16,ステージ割当部17,および出力部18を備える。
【0017】
入力部11は,パイプライン処理の制約条件を受け付けて制約条件記憶部13に格納する。
【0018】
制約条件は,パイプライン処理の制約として定められたステージ数(段数),および1サイクルのクロック周波数が設定された情報である。
【0019】
入力部11は,動作記述を受け付けて動作記述記憶部15に格納する。
【0020】
動作記述は,例えばsystemCのトランザクションレベルの記述言語による,パイプライン回路の動作記述である。
【0021】
入力部11は,演算ライブラリ情報を受け付けて演算ライブラリ情報記憶部14に格納する。演算ライブラリ情報は,動作記述に記述されたオペレーションの演算種別ごとに,演算処理に必要とされる処理時間の定義情報である。
【0022】
オペレーション分割部16は,動作記述記憶部15に格納されている動作記述を解析して,動作記述のオペレーションを演算単位に分割する。分割された演算単位のオペレーションを,分割オペレーションと呼ぶ。オペレーション分割部16は,動作記述の分割オペレーションの実行順序を解析して,演算ライブラリ情報記憶部14に記憶されている演算ライブラリ情報にもとづいて,動作記述から抽出した分割オペレーションの処理時間を算出する。
【0023】
ステージ割当部17は,分割オペレーションの実行順序をもとに,1つの入力から出力までのオペレーションであるパスを解析する。そして,ステージ割当部17は,各パスについて,パスに含まれる分割オペレーションの総処理時間を,制約条件で定義されたステージ数で割って,1ステージ内に配置されるオペレーションの処理時間の平均を示すステージ内処理時間を計算する。ステージ割当部17は,パス内の分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの処理時間の合計がステージ内処理時間を超えたときにそのステージに割り当てている分割オペレーションを,そのステージに配置する。
【0024】
さらに,ステージ割当部17は,分割オペレーションの処理時間に所定のマージン時間を加算し,加算した処理時間を用いて分割オペレーションの配置を決定する。マージン時間は,制約条件に含まれるものとする。
【0025】
また,ステージ割当部17は,各分割オペレーションの処理時間が,所定の時間範囲内であるかを判定して,分割オペレーションの処理時間が所定の時間範囲内である場合に,パス内の分割オペレーションの総数とステージ数とをもとに,1ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し,そのパスでの分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,割り当てた分割オペレーションの合計数がステージ内配置数を超えたときにそのステージに割り当てている分割オペレーションを,そのステージに配置する。
【0026】
出力部18は,ステージ割当部17で処理された,各ステージへの分割オペレーションの配置をもとに,パスの分割オペレーションを,動作記述からレジスタ・トランスファー・レベル(RTL)2に変換する。
【0027】
以下,動作合成装置1の処理の流れを説明する。
【0028】
図2は,開示する動作合成装置1の一実施形態における処理フローを示す図である。
【0029】
ステップS1: 情報入力処理
動作合成装置1の入力部11は,制約条件,演算ライブラリ情報,動作記述の入力を受け付けて,それぞれ,制約条件記憶部13,演算ライブラリ情報記憶部14,動作記述記憶部15に格納する。
【0030】
図3および図4は,動作記述の例を示す図である。
【0031】
図3は,システム設計用言語SystemCで記述された動作記述のヘッダファイル例であって,システムの動作を定義するモジュールとコンストラクタが記述される。図4は,同じ動作記述のソースファイル例であって,プロセスのアーキテクチャが記述される。
【0032】
ステップS2: オペレーション分割処理
オペレーション分割部16は,動作記述記憶部15に格納された動作記述を解析して,動作記述に記述されたオペレーションを演算単位に分割する。
【0033】
図3および図4に示す動作記述の例において,オペレーションのパスでは,データ入力する演算op1からデータ出力する演算op7までの7つの演算で構成されることが分かる。オペレーション分割部16によって,データの入力から出力までの1つのオペレーションのパスのオペレーションが7つの演算単位に分割され,分割オペレーションとして特定される。さらに,オペレーション分割部16は,動作記述をもとに,分割オペレーションの実行順序を特定する。
【0034】
図5は,分割オペレーションの例を模式的に示す図である。
【0035】
図5に示すように,図3および図4に示す動作記述の例では,あるパスで,分割オペレーション(演算)op1〜op7が特定され,また,分割オペレーション(演算)が,op1,op2,op3,op4,op5,op6,op7の順に実行されることが特定される。
【0036】
さらに,オペレーション分割部16は,演算ライブラリ情報記憶部14の演算ライブラリ情報をもとに,各分割オペレーションの処理時間を計算する。例えば,分割オペレーションop1の処理時間が,10ピコ秒と計算される。
【0037】
ステップS3: ステージ割当処理
ステージ割当部17は,制約条件記憶部13の制約条件から,パイプライン処理のステージ数および1サイクルのクロック周波数を取得する。そして,ステージ割当部17は,選択したパスの分割オペレーション(例えば,op1〜op7)の総処理時間をステージ数で除算して,1ステージあたりの分割オペレーションの処理時間であるステージ内処理時間を求める。
【0038】
さらに,ステージ割当部17は,パイプライン処理のステージを入り口から1つずつ選択し,動作記述から解析した分割オペレーションの実行順序にもとづいて,分割オペレーションを,選択したステージに順に割り当て,割り当てた分割オペレーションの処理時間の合計を求める。ステージ割当部17は,割り当てている分割オペレーションの処理時間の合計がステージ内処理時間を超えた時点で,選択したステージに割り当てている分割オペレーションに対し,選択したステージを配置ステージとして決定する。
【0039】
ステージ割当部17は,動作記述の全ての分割オペレーションについて配置ステージを決定する。
【0040】
ステップS4: RTL生成処理
出力部18は,動作記述をRTL記述に変換する。その際に,出力部18は,分割オペレーションの配置ステージにもとづいて,分割オペレーションの実行順序において配置ステージが異なる分割オペレーション間に,レジスタ記述を挿入する。出力部18は,変換したRTL記述のデータ(RTL)2を出力する。
【0041】
図6〜図9は,開示する動作合成装置1および従来技術によるRTLを比較するための図である。
【0042】
図6は,動作合成装置1によるRTL例を示す図であり,図7は,図6に示すRTLを模式的に示す図である。図8は,従来技術によるRTL例を示す図であり,図9は,図8に示すRTLを模式的に示す図である。
【0043】
図6に示すように,動作合成装置1によれば,パスの分割オペレーションop1〜op7について,分割オペレーションop1,op2の配置ステージ=1,分割オペレーションop3,op4の配置ステージ=2,分割オペレーションop5,op6の配置ステージ=3,分割オペレーションop7の配置ステージ=4と決定される。そして,同じ配置ステージに決定された分割オペレーション群の最後尾の分割オペレーションの後にレジスタ(FF)が挿入される。すなわち,図7に示すように,分割オペレーションop2,op4,op6,op7の後にレジスタ記述が挿入される。
【0044】
一方,図8に示すように,従来技術によれば,パスの分割オペレーションop1〜op7について,処理時間の合計が1サイクルに収まる分の分割オペレーションがそのステージに配置される。その結果,図9(A)に示すように,分割オペレーションop3,op5,op6,op7の後にレジスタ(FF)が挿入されたり,図9(B)に示すように,ステージ4に分割オペレーションが配置されず,分割オペレーションop3,op6,op7の後にレジスタ(FF)が挿入されたりする。
【0045】
したがって,従来技術によれば,パイプライン処理の前寄りのステージに配置される分割オペレーション数が多く,後寄りのステージに配置される分割オペレーション数が少なくなるという,配置の偏りが生じている。これに対し,開示する動作合成装置1によれば,各ステージに1または2の分割オペレーションが配置され,配置の偏りが少ないことがわかる。
【0046】
以下に,ステージ割当処理(ステップS3)の具体例を説明する。
【0047】
ステージ割当部17は,図10〜図12の処理フロー例として示すステージ割当処理の具体例のいずれかを実行することができる。
【0048】
図10は,第1のステージ割当処理の処理フロー例を示す図である。
【0049】
第1のステージ割当処理では,分割オペレーションの処理時間を用いて配置ステージを決定する。
【0050】
ステージ割当部17は,処理前に,オペレーション分割部16から,各分割オペレーションの分割オペレーション番号(op_num)および処理時間(delay:op_d[op_num])を取得している。
【0051】
ステージ割当部17は,動作記述のオペレーションのパスを1つ選択し(ステップS11),選択したパスが含む分割オペレーションの処理時間(delay)の総計を,制約条件に定義されているステージ数で除算してステージ内処理時間nを求め,さらに,選択したパスの分割オペレーション総数(op_total)を求める(ステップS12)。
【0052】
次に,ステージ割当部17は,初期化として,現在のステージ数(curr_st)=1,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS13)。さらに,ステージ割当部17は,現在のステージ(curr_st)が配置ステージ(op_st[op_num])であるとして分割オペレーションの処理時間(delay)の合計m=0とする(ステップS14)。
【0053】
次に,ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号を持つ分割オペレーションを選択する(ステップS15)。そして,ステージ割当部17は,現在のステージ数(curr_st)を配置ステージ(op_st[op_num])とし,処理時間(delay)の合計mに,選択した分割オペレーションの処理時間(op_d[op_num])を加算する(ステップS16)。
【0054】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)が,分割オペレーション総数(op_total)より小さい場合に(ステップS17のY),ステップS18の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS17のN),ステップS112の処理へ進む。
【0055】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS18),処理時間(delay)の合計mが,ステージ内処理時間nを超過したら(ステップS19のY),ステップS110の処理へ進み,超過していなければ(ステップS19のN),ステップS15の処理へ戻る。
【0056】
ステージ割当部17は,現在のステージ数(curr_st)がステージ数より小さければ(ステップS110のY),現在のステージ数(curr_st)に1を加算して(ステップS111),ステップS14の処理へ戻り,現在のステージ数(curr_st)がステージより小さくなければ(ステップS110のN),ステップS112の処理へ進む。
【0057】
そして,ステージ割当部17は,全ての分割オペレーションについて処理が完了していなければ(ステップS112のN),ステップS11の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS112のY),処理を終了する。
【0058】
以上の処理によって,各分割オペレーションの配置ステージ(op_st[op_num])が決定される。パスに含まれる分割オペレーションの総処理時間にもとづくステージの平均処理時間(ステージ内処理時間)を基準にして,1ステージ内に配置する分割オペレーションを決定するため,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0059】
図11は,第2のステージ割当処理の処理フロー例を示す図である。
【0060】
第2のステージ割当処理では,分割オペレーションの処理時間に所定のマージン時間を加算した時間を用いて配置ステージを決定する。
【0061】
図11に示す処理フロー例では,ステージ割当部17は,処理前に,処理時間(delay:op_d[op_num])に加算するマージン時間(op_m[op_num])を取得している。
【0062】
図11に示す処理フローは,図10に示す処理フローと同様であり,図11の処理フローのステップS21〜S212の処理は,ステップS26を除き,図10に示す処理フローのステップS11〜S112の各ステップの処理に対応している。したがって,説明を簡略にするため,ステップS26についてのみ説明する。
【0063】
ステップS26の処理では,ステージ割当部17は,現在のステージ数(curr_st)を配置ステージ(op_st[op_num])とし,処理時間(delay)の合計mに,処理時間(op_d[op_num])とマージン時間(op_m[op_num])とを加算する。
【0064】
以上の処理により,任意のマージン時間を考慮した処理時間にもとづいて,各分割オペレーションの配置ステージが決定される。よって,タイミングの余裕を任意の時間幅で確保しつつ,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0065】
図12は,第3のステージ割当処理の処理フロー例を示す図である。
【0066】
第3のステージ割当処理では,パス内の分割オペレーションの処理時間が同一であるとみなせる場合に,パス内の分割オペレーション数を用いてステージへの配置を決定する。
【0067】
ステージ割当部17は,オペレーション分割部16から,各分割オペレーションの分割オペレーション番号(op_num)のみを取得している。各分割オペレーションの処理時間(delay:op_d[op_num])は不要である。
【0068】
ステージ割当部17は,動作記述のオペレーションのパスを1つ選択し(ステップS31),選択したパスが含む分割オペレーションの総数を,制約条件に定義されたステージ数で除算してステージ内配置数n′を求め,さらに,選択したパスの分割オペレーション総数(op_total)を求める(ステップS32)。
【0069】
次に,ステージ割当部17は,現在のステージ数(curr_st)=1,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS33)。さらに,ステージ割当部17は,初期化として,現在のステージ数(curr_st)が分割オペレーションの配置ステージ(op_st[op_num])であるとして分割オペレーションの合計数m′=0とする(ステップS34)。
【0070】
次に,ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号(op_num)を持つ分割オペレーションを選択し(ステップS35),現在のステージ数(curr_st)を配置ステージ(op_st[op_num])として,合計数m′に1を加算する(ステップS36)。
【0071】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さい場合に(ステップS37のY),ステップS38の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS37のN),ステップS312の処理へ進む。
【0072】
ステージ割当部17は,現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS38),分割オペレーションの合計数m′がステージ内配置数n′を超過したら(ステップS39のY),ステップS310の処理へ進み,分割オペレーションの合計数m′がステージ内配置数n′を超過していなければ(ステップS39のN),ステップS34の処理へ戻す。
【0073】
ステージ割当部17は,現在のステージ数(curr_st)がステージ数より小さければ(ステップS310のY),現在のステージ数(curr_st)に1を加算して(ステップS311),ステップS34の処理へ戻り,現在のステージ数(curr_st)がステージ数より小さくなければ(ステップS310のN),ステップS312の処理へ進む。
【0074】
ステージ割当部17は,全ての分割オペレーションについて処理が完了していなければ(ステップS312のN),ステップS31の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS312のY),処理を終了する。
【0075】
以上の処理により,分割オペレーションの処理時間にばらつきがなく同一とみなせる場合に,パスに含まれる分割オペレーション総数にもとづいて,各分割オペレーションの配置ステージが決定される。よって,分割オペレーションの処理時間を用いることなく,より少ない情報で,各ステージに偏りなく分割オペレーションを配置することが可能となる。
【0076】
図13は,RTL生成処理(図2:ステップS4)のより詳細な処理フロー例を示す図である。
【0077】
出力部18は,動作記述のオペレーションのパスを1つ選択し(ステップS41),選択したパスの分割オペレーション総数(op_total)を求め,現在の分割オペレーション番号(curr_op_num)=1と設定する(ステップS42)。
【0078】
次に,出力部18は,現在の分割オペレーション番号(curr_op_num)である分割オペレーション番号(op_num)を持つ分割オペレーションを選択し(ステップS43),選択した分割オペレーションを動作記述からRTL記述に変換する(ステップS44)。
【0079】
そして,出力部18は,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さい場合に(ステップS45のY),ステップS46の処理へ進み,現在の分割オペレーション番号(curr_op_num)が分割オペレーション総数(op_total)より小さくない場合に(ステップS45のN),ステップS47の処理へ進む。
【0080】
ステップS46の処理で,出力部18は,変換したRTL記述にFFを挿入し,ステップS410の処理へ進む。
【0081】
ステップS47の処理で,出力部18は,配置ステージ(op_st[op_num])が,その値に1を加算した値と等しくなければ(ステップS47のN),変換したRTL記述にFFを挿入し(ステップS48),配置ステージ(op_st[op_num])が,その値に1を加算した値と等しければ(ステップS47のY),現在の分割オペレーション番号(curr_op_num)に1を加算して(ステップS49),ステップS43の処理へ戻る。
【0082】
出力部18は,全ての分割オペレーションについて処理が完了していなければ(ステップS410のN),ステップS41の処理へ戻り,全ての分割オペレーションについて処理が完了していれば(ステップS410のY),処理を終了する。
【0083】
以上説明した動作合成装置1は,CPUおよびメモリ等を有するハードウェアと,ソフトウェアプログラムとを備えるコンピュータ・システム,または専用ハードウェアによって実現することができる。すなわち,動作合成装置1は,演算装置(CPU),一時記憶装置(DRAM,フラッシュメモリ等)および永続性記憶装置(HDD,フラッシュメモリ等)を有し,外部とデータの入出力をするコンピュータによって実施できる。
【0084】
また,動作合成装置1は,このコンピュータが実行可能なプログラムによっても実施することができる。この場合に,動作合成装置1が有すべき機能の処理内容を記述したプログラムが提供される。提供されたプログラムを上記コンピュータが実行することによって,上記説明した動作合成装置1の処理機能がコンピュータ上で実現される。なお,上記コンピュータは,可搬型記録媒体から直接プログラムを読み取り,そのプログラムに従った処理を実行することもできる。さらに,上記プログラムは,コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【0085】
以上,一実施形態として説明したように,開示する動作合成装置によれば,動作合成結果を解析し制約を与える手間を解消し,タイミングに偏りの少ないRTL記述を自動的に生成することが可能となる。
【符号の説明】
【0086】
1 動作合成装置
11 入力部
13 制約条件記憶部
14 演算ライブラリ情報記憶部
15 動作記述記憶部
16 オペレーション分割部
17 ステージ割当部
18 出力部
2 レジスタ・トランスファー・レベル記述(RTL)
【特許請求の範囲】
【請求項1】
コンピュータが,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する動作合成方法であって,
前記コンピュータが,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと,
前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当ステップとを,実行する
ことを特徴とする動作合成方法。
【請求項2】
前記コンピュータは,
前記ステージ割当ステップにおいて,前記分割オペレーションの処理時間の代わりに,該処理時間に所定のマージン時間を加算した時間を用いて分割オペレーションを配置する
ことを特徴とする請求項1に記載の動作合成方法。
【請求項3】
前記コンピュータは,
前記ステージ割当ステップにおいて,前記オペレーション分割ステップで算出された前記分割オペレーションの処理時間が所定の時間範囲内である場合に,前記選択した1パスごとに,前記分割オペレーションの総処理時間の代わりに総数と前記ステージ数とをもとに,1ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの合計数が前記ステージ内配置数を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置する
ことを特徴とする請求項1に記載の動作合成方法。
【請求項4】
前記コンピュータは,
前記動作記述をレジスタ・トランスファー・レベル記述へ変更し,前記分割オペレーションのステージへの配置をもとに,異なるステージに配置される分割オペレーション間にレジスタの記述を挿入するRTL生成処理ステップを,実行する
ことを特徴とする請求項1ないし請求項3のいずれか一項に記載の動作合成方法。
【請求項5】
プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成装置であって,
動作記述に含まれるオペレーションの各演算単位の処理時間を定義する演算ライブラリ情報を記憶する演算ライブラリ情報記憶部と,
前記動作記述のパイプライン処理の制約であって,パイプライン処理のステージ数を含む情報を記憶する制約情報記憶部と,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,前記ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割部と,
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記制約が含むステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当部とを,備える
ことを特徴とする動作合成装置。
【請求項6】
コンピュータに,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行させるための動作合成プログラムであって,
前記コンピュータに,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出する処理と,
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置する処理とを,実行させる
ことを特徴とする動作合成プログラム。
【請求項1】
コンピュータが,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行する動作合成方法であって,
前記コンピュータが,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割ステップと,
前記分割オペレーションの処理順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当ステップとを,実行する
ことを特徴とする動作合成方法。
【請求項2】
前記コンピュータは,
前記ステージ割当ステップにおいて,前記分割オペレーションの処理時間の代わりに,該処理時間に所定のマージン時間を加算した時間を用いて分割オペレーションを配置する
ことを特徴とする請求項1に記載の動作合成方法。
【請求項3】
前記コンピュータは,
前記ステージ割当ステップにおいて,前記オペレーション分割ステップで算出された前記分割オペレーションの処理時間が所定の時間範囲内である場合に,前記選択した1パスごとに,前記分割オペレーションの総処理時間の代わりに総数と前記ステージ数とをもとに,1ステージ内に配置可能なオペレーションの総数を示すステージ内配置数を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて,分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの合計数が前記ステージ内配置数を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置する
ことを特徴とする請求項1に記載の動作合成方法。
【請求項4】
前記コンピュータは,
前記動作記述をレジスタ・トランスファー・レベル記述へ変更し,前記分割オペレーションのステージへの配置をもとに,異なるステージに配置される分割オペレーション間にレジスタの記述を挿入するRTL生成処理ステップを,実行する
ことを特徴とする請求項1ないし請求項3のいずれか一項に記載の動作合成方法。
【請求項5】
プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成装置であって,
動作記述に含まれるオペレーションの各演算単位の処理時間を定義する演算ライブラリ情報を記憶する演算ライブラリ情報記憶部と,
前記動作記述のパイプライン処理の制約であって,パイプライン処理のステージ数を含む情報を記憶する制約情報記憶部と,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,前記ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出するオペレーション分割部と,
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記制約が含むステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置するステージ割当部とを,備える
ことを特徴とする動作合成装置。
【請求項6】
コンピュータに,プログラムの動作記述をレジスタ・トランスファー・レベル記述に変換する動作合成を実行させるための動作合成プログラムであって,
前記コンピュータに,
処理対象となる動作記述を解析して,該動作記述のオペレーションを演算単位に分割し,前記分割した分割オペレーションの実行順序を特定し,各演算単位の処理時間を定義する演算ライブラリ情報を参照して,該分割オペレーション各々の処理時間を算出する処理と,
前記分割オペレーションの実行順序をもとに前記動作記述のオペレーションのパスを特定し,該パスから選択した1パスごとに,前記分割オペレーションの総処理時間と前記パイプライン処理の制約として与えられたステージ数とをもとに,1ステージ内に配置可能なオペレーションの総処理時間を示すステージ内処理時間を計算し,前記選択したパスでの分割オペレーションの実行順序にもとづいて前記分割オペレーションを順にステージに割り当て,前記割り当てた分割オペレーションの処理時間の合計が前記ステージ内処理時間を超えたときに該ステージに割り当てている分割オペレーションを,該ステージに配置する処理とを,実行させる
ことを特徴とする動作合成プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2012−198633(P2012−198633A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2011−61036(P2011−61036)
【出願日】平成23年3月18日(2011.3.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願日】平成23年3月18日(2011.3.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】
[ Back to top ]