JP2010224864A - 動作合成装置、動作合成方法、及び、プログラム - Google Patents

動作合成装置、動作合成方法、及び、プログラム Download PDF

Info

Publication number
JP2010224864A
JP2010224864A JP2009071366A JP2009071366A JP2010224864A JP 2010224864 A JP2010224864 A JP 2010224864A JP 2009071366 A JP2009071366 A JP 2009071366A JP 2009071366 A JP2009071366 A JP 2009071366A JP 2010224864 A JP2010224864 A JP 2010224864A
Authority
JP
Japan
Prior art keywords
node
behavioral synthesis
scheduling
state
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009071366A
Other languages
English (en)
Other versions
JP5458622B2 (ja
Inventor
Noritsugu Nakamura
典嗣 中村
Toru Awashima
亨 粟島
Takao Toi
崇雄 戸井
Yoshinosuke Kato
吉之介 加藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009071366A priority Critical patent/JP5458622B2/ja
Publication of JP2010224864A publication Critical patent/JP2010224864A/ja
Application granted granted Critical
Publication of JP5458622B2 publication Critical patent/JP5458622B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】演算器・メモリ・ポートを内蔵し、それらを切替えるモジュールをスケジューリングする動作合成を実行する。
【解決手段】 回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、ノードの状態を検出する検出手段と、検出したノードの状態及びノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含む。
【選択図】 図1

Description

本発明は、回路装置の動作の記述から、具体的な機能の記述を生成する動作合成装置、動作合成方法、及びこれらのプログラムに関する。
近年半導体回路の回路規模が増大しており、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の1つとして、動作レベルの回路記述からRTL(Register Transfer Level)等の抽象度の低い回路記述を合成するための動作合成装置が提案されている。このような動作合成装置を用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述からハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
動作合成装置の一例が特許文献1に記載されている。特許文献1の動作合成装置はリソースアクセス調停手段を有する。そのリソースアクセス調停手段は動作記述中のループ処理内に同一リソースへのアクセスが複数含まれる場合、制約条件に基づいて調停処理する。これにより、ループ処理がパイプライン化されてもリソースアクセスに競合が生じない。
また、特許文献2記載の動作合成手段は対応表生成手段を有する。その対応表生成手段は動作記述を読み込んでRTLと対応表とを生成する。対応表は動作記述における各ブロックがRTL記述内でのステートマシンにおけるどの状態に対応するかを示す情報である。
特許文献1或は特許文献2に記載の動作合成装置は加算や減算などの単機能の演算だけでなく、複数の演算を合わせ持った複合演算器を使用した回路を合成することができる。
一方、実現する回路が一つに限定されないFPGA(Field Programmable Gate Array)などのプログラマブル回路が知られている。このプログラマブル回路は非同期演算と同期演算を切替えることのできる演算器や演算器とメモリで入出力ポートを共有し時分割で使用するモジュールを含む。これらのモジュールは高機能化・小面積化などの目的で用いられている。しかし、プログラマブル回路では配線スイッチの接続情報を記憶するメモリの占める面積が大きいという問題がある。このため、プログラマブル回路では機能を共有し、ポートを少なくしている。これにより、プログラマブル回路は配線スイッチ情報を格納するメモリの面積を削減している。また、プログラマブル回路のモジュールは高速動作が不要な場合に非同期演算を用いる。プログラマブル回路は高速動作が必要なときに同期演算を用いる。これにより、遅延を小さくできるという利点がある。このような特殊なモジュールはメモリの効率的な利用と遅延が小さいという効果がある。このようなモジュールの利用により高速で小型化された回路の記述が期待される。
特開2009−025973 特開2008−204111
しかし、特許文献1や特許文献2に記載の動作合成装置はこのような非同期演算と同期演算を切替えることのできる演算器を利用できない。また、特許文献1や特許文献2に記載の動作合成装置は演算器とメモリで入出力ポートを共有し時分割で使用するようなモジュールを利用できない。このような動作合成装置ではアクセスの処理を調停し、或は対応表を用いて処理動作を管理する。しかし、モジュールでの演算の切替やポートの管理などの機能を具備しない。従って、上記の特殊なモジュールを用いた動作合成処理を実行することはできない。
本発明の目的は上述した課題を解決する動作合成装置、動作合成方法、及びこれらのプログラムを提供することである。
本発明の第1の動作合成装置は回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、ノードの状態を検出する検出手段と、検出したノードの状態及びノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含む。
本発明の第2の動作合成方法は回路装置の動作記述からノードを含む機能記述を生成する動作合成方法において、ノードの状態を検出する検出ステップと、検出したノードの状態とノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップを含む。
本発明の第3のプログラムは回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、ノードの状態を検出する検出ステップと、検出したノードの状態とノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させることを特徴とする。
本発明は回路装置の動作の記述から具体的な機能の記述を生成する動作合成装置に関する。本発明によれば、演算器・メモリ・ポートを内蔵しそれらを切替えるモジュールをスケジューリングし合成することができる。
本発明の第1の実施形態による動作合成装置の構成を示すブロック図である。 本発明の第1の実施形態による動作合成装置における動作を示すフローチャートである。 本発明の第2乃至第4の実施形態による動作合成装置の構成を示すブロック図である。 本発明の第2の実施形態による動作合成装置における動作を示すフローチャートである。 第2の実施形態におけるモジュールの構成を示すブロック図である。 第2の実施形態における別のモジュールの構成を示すブロック図である。 第2の実施形態におけるスケジューリングを説明するための図である。 第2の実施形態におけるスケジューリングを説明するための図である。 第2の実施形態におけるスケジューリングを説明するための図である。 本発明の第3の実施形態による動作合成装置における動作を示すフローチャートである。 第3の実施形態におけるモジュールの構成を示すブロック図である。 第3の実施形態におけるスケジューリングを説明するための図である。 第3の実施形態における別のモジュールの構成を示すブロック図である。 第3の実施形態におけるスケジューリングを説明するための図である。 本発明の第4の実施形態による動作合成装置における動作を示すフローチャートである。 第4の実施形態におけるモジュールの構成を示すブロック図である。 第4の実施形態におけるスケジューリングを説明するための図である。 第4の実施形態における別のモジュールの構成を示すブロック図である。
[第1の実施形態]
次に、発明を実施するための形態について図面を参照して詳細に説明する。
本発明の第1の実施形態による動作合成装置について図面を参照して詳細に説明する。図1は本発明の実施形態による動作合成装置の構成を示すブロック図である。
図1を参照すると、本発明の第1の実施形態による動作合成装置110はスケジューリング手段122と、バインディング手段123と、検出手段125を含む。
スケジューリング手段122は入力された動作レベルの回路記述(動作記述)に基づいて抽象的に記述された回路記述から具体的な回路の動作の手続(機能記述)を決定する。入力された動作レベルの回路記述は解析され樹形図様のデータ構造により表現される。樹形図の枝分かれの部分ではデータの論理演算或はデータの保持が実行される。この部分はノードと呼ばれ演算器或はメモリが割当てられる。スケジューリング手段122は演算の順番、演算の時期、処理を行う部品の選定、部品のつながり方などを決定する。バインディング手段123は演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する。
検出手段125は回路装置の機能記述におけるノードの状態を検出し、検出した状態をスケジューリング手段122に通知する。スケジューリング手段122はこのノードの状態とこのノードに割当てられるモジュールに基づいてスケジューリングを行う。
バインディング手段123によるバインディング処理の結果に基づいてRTL記述が出力される。RTL記述はレジスタや演算器などの結線関係を示しブロック図に相当するレベルでの記述である。
次に、図2のフローチャートを参照して第1の実施形態による動作合成装置の動作について説明する。
まず、利用者により用意された動作レベルの回路記述を入力する(ステップS201)。
検出手段125はスケジューリング手段122がスケジューリングを行うノードの状態を検出する(ステップS208)。そして、検出した状態をスケジューリング手段122に通知する。スケジューリング手段はその通知に従って、ノードに割当てられるモジュールに応じたスケジューリングを行う(ステップS210)。
スケジューリング処理の結果がバインディング手段123に送られバインディング処理が行われる(ステップS212)。すなわち、ノードにおける処理を実際にどの演算器或はメモリに割当てるかなどを決定する。
バインディング手段123の処理結果をもとにRTL記述が生成されて出力される(ステップS214)。
本実施形態の動作合成装置110ではノードの状態を検出し、スケジューリング手段122がこの状態に応じてスケジューリングを制約したスケジューリング処理を実行する(ステップS210)。これにより、非同期演算と同期演算を切替えて使用できるモジュールをノードに割当てたスケジューリングが可能になる。
[第2の実施形態]
本発明の第2の実施形態による動作合成装置について図面を参照して詳細に説明する。図3は本発明の実施形態による動作合成装置の構成を示すブロック図である。
図3を参照すると、本発明の第2の実施形態による動作合成装置310はプログラム制御により動作するデータ処理手段302と、入力手段301と、記憶手段303と、出力手段304を含む。
データ処理手段302は中央処理装置(プロセッサ、コンピュータ)により実現される。データ処理手段302は前処理手段321と、スケジューリング手段322と、バインディング手段323と、後処理手段324と、検出手段325を含む。また、記憶手段303はシステム内部表現記憶手段331を有する。
前処理手段321は入力手段301により与えられた動作レベルの回路記述を解析して動作合成用の内部表現に変換する機能を有する。
ここで、内部表現とは動作レベルの回路記述を解析しその解析結果を動作合成装置の内部で一時的に保持する際に使用する表現を含む。
動作レベルの回路記述が解析されその解析結果が樹形図様のグラフに表現される。樹形図の枝分かれの部分ではデータの論理演算或はデータの保持が実行される。この部分はノードと呼ばれ演算器或はメモリが割当てられる。本実施形態に用いられる内部表現としては例えば抽象構文木(abstract syntax tree; AST)やコントロールデータフローグラフ(control data flow graph; CDFG)と呼ばれるデータ構造が挙げられる。回路記述を解析した結果はこれらの樹形図やデータフローグラフにより表現される。
スケジューリング手段322は回路の動作の手続を具体的に決定する。すなわち、演算の順番、演算の時期、処理を行う部品の選定、部品のつながり方などを決定する。
バインディング手段323は論理演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する機能を有する。
検出手段325はノードの状態を検出し、検出した状態をスケジューリング手段322に通知する。ノードの状態は例えばノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段322はこのノードの状態とこのノードに割当てられるモジュールに基づいてスケジューリングを行う。本実施形態では検出手段325はスケジューリング手段322の外に配置されているが、スケジューリング手段322の内部に配置されてもよい。
本実施形態ではスケジューリング手段322の処理後にバインディング手段323の処理が行われる構成になっているが、スケジューリング手段322とバインディング手段323を並列に配置して平行して処理を行ってもよい。
後処理手段324は論理演算処理を演算器に割当てる。後処理の結果に基づいてRTL記述が生成されて出力される。
なお、前処理手段321、スケジューリング手段322、バインディング手段323、後処理手段324の処理手段のそれぞれは必要に応じて記憶手段303のシステム内部表現記憶手段331に対して書き出しおよび読み込みを行いシステムの内部表現を更新する。
次に、図4のフローチャートを参照して第2の実施形態による動作合成装置の動作について詳細に説明する。
まず、利用者により用意された動作レベルの回路記述を入力手段301から入力する(ステップS401)。
入力手段301から与えられた動作レベルの回路記述はデータ処理手段302の前処理手段321に供給される。前処理手段321は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する(ステップS402)。
変換された内部表現はデータ処理手段302のスケジューリング手段322に送られる。スケジューリング手段322はノードのスケジューリング(処理サイクルの決定)を実行する。
スケジューリングされていないノードが残っているかどうかが判定される(ステップS405)。
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段323に送られバインディング処理が行われる。バインディング手段323はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する(ステップS412)。
スケジューリングしていないノードが残っている場合、スケジューリング手段322はスケジューリングしていないノードの一つを選択する(ステップS406)。
検出手段325は選択したノードの状態を検出し、検出したノードの状態をスケジューリング手段322に通知する。本実施例においてノードの状態はノードが使用するポートの数及び演算器の数を含む。スケジューリング手段322はそのノードが対象としている演算ノードすなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられる演算ノードであるか否かを判定する(ステップS407)。選択したノードが対象とする演算ノードでない場合、選択したノードは従来型の演算ノードであり、関連技術に記載の方法でスケジューリング処理される(ステップS410)。
選択したノードが対象とする演算ノードである場合スケジューリング手段322は、スケジューリング処理しようとするサイクルにおける演算器の数がスケジューリングによって演算ノードに課される所定の制約を満たすかどうかを判定する(ステップS408)。
演算器数が所定の制約を満たさない場合、スケジューリング手段322は次の状態以降において対象とする演算ノードをスケジューリングする(ステップS411)。演算器数が所定の制約を満たす場合、スケジューリング手段322は選択した演算ノードの入出力ポート数がスケジューリングしようとするサイクルにおいて演算ノードに課される所定の制約を満たすかどうかを判定する(ステップS409)。
選択した演算ノードの入出力ポート数が所定の制約を満たさない場合、スケジューリング手段322は次の状態以降において選択した演算ノードをスケジューリングする(ステップS411)。選択した演算ノードの入出力ポート数が所定の制約を満たす場合、スケジューリング手段322は選択した演算ノードに割当てられるモジュールに応じてスケジューリングを行う(ステップS410)。
ステップS405に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
ここではバインディング処理がスケジューリング処理の後に行われるが、両方の処理を平行して処理することは可能である。
後処理手段324はバインディング手段323の処理結果をもとに後処理を行う(ステップS413)。後処理の結果を基にRTL記述が生成され、出力手段304から出力される(ステップS414)。
本実施形態の動作合成装置310ではスケジューリング手段322がスケジューリングにおいて演算ノードに課されるポート数の制約を満たすようにスケジューリング処理を実行する(ステップS409)。これにより、非同期演算と同期演算を切替えるモジュールのスケジューリングが可能になる。
図5は第2の実施形態の動作合成装置310が処理するモジュール505の構成を例示するブロック図である。モジュール505は演算器554、フリップフロップ553、フリップフロップ553の出力と演算器554の出力とを切替えるセレクタ(切替手段)551、演算器554への入力信号線555、セレクタ551の出力線556、セレクタ551へ選択の指示を送る選択線552を含む。セレクタ選択線552によりモジュール505は非同期と同期とを切替える。
図6は第2の実施形態の動作合成装置310が処理する他のモジュール605の構成を例示するブロック図である。モジュール605は第1演算器657a、第2演算器657b、第1演算器657aの出力と第2演算器657bの出力とを切替えるセレクタ(切替手段)651、演算器への入力信号線655、セレクタ651の出力線656、セレクタ651へ選択の指示を送る選択線652を含む。セレクタ選択線652によりモジュール605は第1演算器657aと第2演算器657bとを切替える。
これらのモジュールでは演算器にフリップフロップを組合せて切替え、或は2つの演算器を組合せて切替えることにより非同期演算と同期演算を切替える。
以下動作合成装置310の動作を具体的に説明する。図7乃至図9は第2の実施形態の動作合成装置310でのスケジューリングの例を示す。
図7は図8以降のスケジューリングの状態を示す図面における演算器の入力ポートと出力ポートの定義を示す。すなわち、演算器754は入力ポート771及び772を備えこれらの組を入力ポートペアと称する。さらに演算器754は出力ポート773を備える。
図8はスケジューリング処理しようとする1つのサイクルにおいて状態n−1乃至状態n+1のそれぞれにおける演算器のスケジューリングの状態(同期或は非同期)を示す。図8において前後の状態の間をまたがった演算器すなわち状態の境界線上にある演算器を同期演算器、それ以外の位置にある演算器を非同期演算器と称する。
図9は図8における同期/非同期の組み合わせによる分類を示す。図8(a)乃至図8(h)のそれぞれについてスケジューリング時の状態n及び状態n+1における入力ポートペア数、出力ポート数及び必要モジュール数を示す。すなわち、状態n及び状態n+1のそれぞれにおいて図7に示す入力ポートペアの数、出力ポートの数を示す。また、図9はこれらの入力ポートペアの数と出力ポートの数に基づいて決定した必要とされるモジュールの数を示す。
図8(a)では非同期演算器が状態n及び状態n+1にスケジューリングされており、図5に示すモジュール505一つで実現できる。
図8(b)では同期演算器が状態n−1と状態nとの境界上及び状態nと状態n+1との境界上にスケジューリングされており、図5に示すモジュール505一つで実現できる。
図8(c)は図9の(c)に示すように状態nで入力ポートペア数が2となる。このため、図5に示すモジュール505一つでは実現できない。従って、図5に示すモジュールが二つ以上必要となる。このような構成に対しては演算ノードのポート数に制約を課すことにより(ステップS409)図8(c)に示す同期演算器を図8(a)のように状態n+1の非同期演算器としてスケジューリングすればよい。このとき、図8(c)で示される構成は図5に示すモジュール505一つで実現できる。或はまた、演算ノードのポート数に制約を課すことにより(ステップS409)図8(c)に示す同期演算器を図8(d)に示す同期演算器のようにスケジューリングすればよい。このとき、図8(c)で示される構成は図5に示すモジュール505一つで実現できる。
図8(e)は図9の(e)に示すように状態nで出力ポート数が2となる。このため、図5に示すモジュール505一つでは実現できない。従って、図5に示すモジュールが二つ以上必要となる。このような構成に対しては演算ノードのポート数に制約を課すことにより(ステップS409)図8(e)に示す非同期演算器を図8(b)に示す同期演算器のようにスケジューリングすればよい。このとき、図8(e)で示される構成は図5に示すモジュール505一つで実現できる。或はまた、演算ノードのポート数に制約を課すことにより(ステップS409)図8(e)に示す非同期演算器を図8(f)に示すように状態n+1の非同期演算器としてスケジューリングすればよい。このとき、図8(e)で示される構成は図5に示すモジュール505一つで実現できる。
図8(g)は状態n−1で入力すると状態n+1で結果が出力されるような同期演算器を含むスケジューリングの一例を示す。図6に示したモジュール605において第1演算器を図8(g)に示される同期演算器にし、第2演算器を非同期演算器にすればよい。このようなモジュールであれば一つのモジュールにより図8(h)で示されるスケジューリングが可能である。
以上のように本実施形態の動作合成装置は演算ノードのポート数に制約を課しながらスケジューリング処理を実行する。これにより非同期演算と同期演算とが切替え可能なモジュールを用いたスケジューリングが可能になる。
[第3の実施形態]
図10のフローチャートを参照して第3の実施形態による動作合成装置310の動作について詳細に説明する。
本実施形態による動作合成装置の構成は第2の実施形態での動作合成装置の構成と同一であるので説明を省略する。
まず、利用者により用意された動作レベルの回路記述を入力手段301から入力する(ステップS1001)。
入力手段301から与えられた動作レベルの回路記述はデータ処理手段302の前処理手段321に供給される。前処理手段321は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する(ステップS1002)。
変換された内部表現はデータ処理手段302のスケジューリング手段322に送られる。スケジューリング手段322はノードのスケジューリング(処理サイクルの決定)を実行する。
スケジューリングされていないノードが残っているかどうかが判定される(ステップS1005)。
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段323に送られバインディング処理が行われる。バインディング手段323はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する(ステップS1012)。
スケジューリングしていないノードが残っている場合、スケジューリング手段322はスケジューリングしていないノードの一つを選択する(ステップS1006)。
検出手段325は選択したノードの状態を検出し、検出したノードの状態をスケジューリング手段322に通知する。本実施例においてノードの状態はノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段322はそのノードが対象としているノード、すなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられるノードであるか否かを判定する。本実施形態の場合、スケジューリング手段322は以下に説明する演算メモリモジュール或は演算ポートモジュールに割当て可能なノードであるかを判定する(ステップS1015)。選択したノードが対象とするノードでない場合、選択したノードは従来型の演算ノードであり関連技術に記載の方法でスケジューリング処理される(ステップS1010)。
選択したノードが対象とするノードである場合、スケジューリング手段322は選択したノードの状態がスケジューリングしようとするサイクルにおいてこのノードに課される所定の制約を満たすかどうかを判定する(ステップS1008)。
選択したノードの状態が所定の制約が満たさない場合、スケジューリング手段322は次の状態以降において対象とするノードをスケジューリングする(ステップS1011)。
選択したノードの状態が所定の制約を満たす場合であって選択したノードが演算器に関するノードである場合、スケジューリング手段322はモジュールにおける演算器に対応するメモリの使用数(演算メモリモジュールの場合)、或は演算器に対応するポートの使用数(演算ポートモジュールの場合)を連動して増加させる。選択したノードの状態が所定の制約を満たす場合であって選択したノードがメモリ或はポートに関するノードである場合、スケジューリング手段322はモジュールにおけるメモリ或はポートに対応する演算器の使用数を連動して増加させる(ステップS1017)。スケジューリング手段322は選択したノードに割当てられるモジュールに応じてスケジューリングを実行する(ステップS1010)。
ステップS1005に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
ここでは、バインディング処理がスケジューリング処理の後に行われるが両方の処理を平行して処理することは可能である。
後処理手段324はバインディング手段323の処理結果をもとに後処理を行う(ステップS1013)。RTL記述が後処理の結果を基に生成され、出力手段304から出力される(ステップS1014)。
本実施形態の動作合成装置310ではスケジューリング手段322が演算器の使用数とメモリの使用数、或は演算器の使用数とポートの使用数が連動するようにスケジューリング処理を実行する(ステップS1017)。これにより、演算器とメモリとを切替えて使用できるモジュール、或は演算器とポートとを切替えて使用できるモジュールのスケジューリングが可能になる。
図11は第3の実施形態の動作合成装置310が処理するモジュール1105の構成を例示するブロック図である。モジュール1105は演算器1154、メモリ1158、演算器1154の出力とメモリ1158の出力とを切替えるセレクタ(切替手段)1151、演算器1154とメモリ1158への入力信号線1155、セレクタ1151の出力線1156、セレクタ1151へ選択の指示を送る選択線1152を含む。セレクタ選択線1152によりモジュール1105は演算器1154とメモリ1158とを切替える。
以下、動作合成装置310の動作を具体的に説明する。
図12は第3の実施形態の動作合成装置310でスケジューリングしようとする1つのサイクルのスケジューリング例を示す。図11に示すモジュール1105が二つ以上あれば図12(a)に示すように演算器とメモリを同一の状態nにスケジューリングすることができる。図11に示すモジュール1105の数が一つに制約された場合、状態nに演算器がスケジューリングされるとステップS1017において状態nでのメモリ使用数が演算器の数に連動して増えて1になる。このとき、状態nでの使用可能なメモリ数は1から0に減少する。すなわち、図11に示すモジュール1105に含まれるメモリ1158は状態nでは使用できない。従って、状態nにメモリをスケジューリングすることができなくなる。この結果、図12(b)のようにメモリは演算器と別の状態n+1にスケジューリングされる。
図13は第3の実施形態の動作合成装置310が処理する他のモジュール1305の構成を例示するブロック図である。モジュール1305は演算器1354、セレクタ1361、演算器1354の出力と入力ポートからの信号1360とを切替えるセレクタ(切替手段)1351、演算器1354とセレクタ1361への入力信号線1355、セレクタ1351の出力線1356、セレクタ1361及びセレクタ1351へ選択の指示を送る選択線1352、出力ポートへの信号線1359を含む。セレクタ選択線1352によりモジュール1305は演算器1354と入出力ポートとを切替える。
図14は第3の実施形態の動作合成装置310でスケジューリングしようとする1つのサイクルのスケジューリング例を示す。図13に示すモジュール1305が二つ以上あれば図14(a)に示すように演算器と入力ポートを同一の状態nにスケジューリングすることができる。図13に示すモジュール1305の数が一つに制約された場合、状態nに演算器がスケジューリングされるとステップS1017において状態nでの入力ポート使用数が演算器の数に連動して増えて1になる。このとき、状態nでの使用可能な入力ポート数は1から0に減少する。すなわち、図13に示すモジュール1305に含まれる入力ポートは状態nでは使用できない。従って、状態nに入力ポートをスケジューリングすることができなくなる。この結果、図14(b)のように入力ポートは演算器と別の状態n+1にスケジューリングされる。
以上のように、本実施形態の動作合成装置は選択したノードにおける演算器の数に対応するようにポートの数或はメモリの数を制約しながらスケジューリング処理を実行する。これによって演算器とメモリとを切替えて使用可能なモジュール、或は演算器とポートとを切替えて使用可能なモジュールを用いたスケジューリングが可能になる。
[第4の実施形態]
図15のフローチャートを参照して第4の実施形態による動作合成装置310の動作について詳細に説明する。
本実施形態による動作合成装置の構成は第2の実施形態での動作合成装置の構成と同一であるので説明を省略する。
まず、利用者により用意された動作レベルの回路記述を入力手段301から入力する(ステップS1501)。
入力手段301から与えられた動作レベルの回路記述はデータ処理手段302の前処理手段321に供給される。前処理手段321は動作レベルの回路記述を解析し動作合成用の内部表現に変換する前処理を実行する(ステップS1502)。
変換された内部表現はデータ処理手段302のスケジューリング手段322に送られる。スケジューリング手段322はノードのスケジューリング(処理サイクルの決定)を実行する。
スケジューリングされていないノードが残っているかどうかが判定される(ステップS1505)。
スケジューリングされていないノードが残っていない場合、スケジューリング処理の結果がバインディング手段323に送られバインディング処理が行われる。バインディング手段323はスケジューリング処理の結果に基づき演算処理を実際にどの演算器に割当てるかデータ保持などのメモリ処理を実際にどのメモリに割当てるかなどを決定する(ステップS1512)。
スケジューリングしていないノードが残っている場合、スケジューリング手段322はスケジューリングしていないノードの一つを選択する(ステップS1506)。
検出手段325は選択したノードの状態を検出し検出したノードの状態をスケジューリング手段322に通知する。本実施例においてノードの状態は例えば、ノードが使用するポートの数、演算器の数、或はメモリの数を含む。スケジューリング手段322はそのノードが対象としているノード、すなわち演算器、メモリ、或はポートを内蔵しそれらを切替えるモジュールに割当てられるノードであるか否かを判定する。本実施形態の場合、スケジューリング手段322は以下に説明するメモリポートモジュール或は演算メモリポートモジュールであるかを判定する(ステップS1518)。選択したノードが対象とするノードでない場合、選択したノードは従来型の演算ノードでありスケジューリング手段322は選択したノードを関連技術に記載の方法でスケジューリング処理する(ステップS1510)。
選択したノードが対象とするノードである場合、スケジューリング手段322は選択したノードの状態がスケジューリングしようとするサイクルにおいてこのノードに課される所定の制約を満たすかどうかを判定する(ステップS1508)。
選択したノードの状態が所定の制約が満たさない場合、スケジューリング手段322は次の状態以降において対象とするノードをスケジューリングする(ステップS1511)。
選択したノードの状態が所定の制約を満たす場合であって選択したノードがメモリに関するノードである場合、スケジューリング手段322はモジュールにおけるメモリに対応する演算器及びポートの使用数を連動して増加させる。スケジューリング手段322は選択したノードがポートに関するノードである場合、モジュールにおけるポートに対応する演算器及びメモリの使用数を連動して増加させる。そして、スケジューリング手段322は同一状態にスケジューリングしたこれら使用数の情報を記憶手段303に保存する(ステップS1519)。スケジューリング手段322は選択したノードに割当てられるモジュールに応じて記憶手段303に保存された演算器、メモリ及びポートの使用数の情報を参照してスケジューリングを実行する(ステップS1510)。
ステップS1505に戻りノードを全てスケジューリングするまで上記の処理を繰り返す。
ここでは、バインディング処理がスケジューリング処理の後に行われるが両方の処理を平行して処理することは可能である。
後処理手段324はバインディング手段323の処理結果をもとに後処理を行う(ステップS1513)。その後、後処理の結果を基に生成されたRTL記述が出力手段304から出力される(ステップS1514)。
本実施形態の動作合成装置310ではスケジューリング手段322がポートの使用数とメモリに使用数が連動するようにスケジューリング処理を実行する。このスケジューリング処理では3つ続いた状態に亘るスケジューリングが必要である。ポートの使用数とメモリの使用数の情報を記憶手段303に保存しスケジューリング処理において記憶手段303に保存されたポートの使用数とメモリの使用数の情報を参照する(ステップS1519)。これらの処理によりメモリとポートとを切替えられるモジュール、或は演算器とメモリとポートとを切替えられるモジュールのスケジューリングが可能になる。
図16は第4の実施形態の動作合成装置310が処理するモジュール1605の構成を例示するブロック図である。モジュール1605は、メモリ1658、セレクタ1661、メモリ1658の出力と入力ポートからの信号1660とを切替えるセレクタ(切替手段)1651、メモリ1658とセレクタ1661への入力信号線1655、セレクタ1651の出力線1656、セレクタ1651へ選択の指示を送る選択線1652、出力ポートへの信号1659を含む。セレクタ選択線1652によりメモリ1658と入出力ポートとを切替える。
以下、動作合成装置310の動作を具体的に説明する。
図17は第4の実施形態の動作合成装置310でスケジューリングしようとする1つのサイクルのスケジューリング例を示す。図17(a)では図16に示すモジュール1605が二つあれば実現できる。すなわち、入力ポートi_xとメモリary1とを格納したモジュールと入力ポートi_yとメモリary2とを格納したモジュールが必要である。
一方、図17(b)では入力ポートi_xとメモリary1とを一つのモジュールに格納し入力ポートi_yとメモリary2とをもう一つのモジュールに格納してもスケジューリングできない。また、入力ポートi_xとメモリary2とを一つのモジュールに格納し入力ポートi_yとメモリary1とをもう一つのモジュールに格納してもスケジューリングできない。従って、三つ以上のモジュールが必要である。このようなモジュール数の決定はステップS1519で記憶手段303に保存された演算器やポートやメモリの使用数の情報をステップS1516で参照することにより実現できる。
図18は第4の実施形態の動作合成装置310が処理する他のモジュール1805の構成を例示するブロック図である。モジュール1805は演算器1854、メモリ1858、セレクタ1861、演算器1854の出力とメモリ1858の出力と入力ポートからの信号1860とを切替えるセレクタ(切替手段)1851、演算器1854とメモリ1858とセレクタ1861への入力信号線1855、セレクタ1851の出力線1856、セレクタ1851へ選択の指示を送る選択線1852、出力ポートへの信号線1859を含む。セレクタ選択線1852により演算器1854とメモリ1858と入出力ポートとを切替える。本発明の動作合成装置310を用いたスケジューリングは図16に示すモジュール1605と同様である。
本実施形態の動作合成装置310では検出手段325が各状態にスケジューリングしたポートやメモリの情報を記憶手段303に保存する。スケジューリング手段322はその情報をスケジューリングにおける制約条件として参照する。これにより、メモリとポートとを切替えて使用できるモジュール、或は演算器とメモリとポートとを切替えて使用できるモジュールのスケジューリングが可能になる。
以上、本発明の好適な実施形態について説明したが本発明はこれに限定されるものではなく要旨を逸脱しない範囲内で種々の変形実施が可能である。上述した本実施形態における制御動作はハードウェア、またはソフトウェア、あるいは両者を複合した構成を用いて実行することも可能である。
なおソフトウェアを用いて処理を実行する場合処理シーケンスを記録したプログラムを専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させることが可能である。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
なお、上述の処理動作を実行させるためのプログラムをフレキシブルディスク、CD−ROM(Compact Disk Read−Only Memory)、MO(Magneto−Optical disk)、DVD(Digital Versatile Disc)、磁気ディスク、半導体メモリなどのコンピュータ読取可能な記録媒体に格納して配布し当該プログラムをコンピュータにインストールすることにより上述の処理動作を実行する装置を構成しても良い。
110、310 動作合成装置
122、322 スケジューリング手段
123、323 バインディング手段
125、325 検出手段
301 入力手段
302 データ処理手段
303 記憶手段
304 出力手段
321 前処理手段
324 後処理手段
331 システム内部表現記憶手段
505、605、1105、1305、1605、1805 モジュール
551、651、1151、1351、1651、1851 セレクタ
1361、1661、1861 セレクタ
552、652、1152、1352、1652、1852 セレクタの選択線
553 フリップフロップ
554、754、1154、1354、1854 演算器
555、655、1155、1355、1655,1855 入力信号線
556、656、1156、1356、1656、1856 モジュールの出力線
657a 第1演算器
657b 第2演算器
1158、1658、1858 メモリ
1359、1659、1859 出力ポートへの信号線
1360、1660、1860 入力ポートからの信号線
771、772 入力ポート
773 出力ポート

Claims (20)

  1. 回路装置の動作記述からノードを含む機能記述を生成する動作合成装置において、
    前記ノードの状態を検出する検出手段と、
    前記検出したノードの状態及び前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリング手段と、
    前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディング手段を含むことを特徴とする動作合成装置。
  2. 前記ノードの状態は前記ノードが使用するポートの数を含むことを特徴とする請求項1に記載の動作合成装置。
  3. 前記モジュールは同期演算と非同期演算とを切替える切替手段を含むことを特徴とする請求項2に記載の動作合成装置。
  4. 前記モジュールは複数の演算器を含み、前記切替手段は前記複数の演算器を切替える ことを特徴とする請求項3に記載の動作合成装置。
  5. 前記ノードの状態は演算器の数、メモリの数、及びポートの数を含み、
    前記スケジューリング手段は前記ノードが使用する演算器の数、メモリの数、或はポートの数に応じて前記モジュールが共有する演算器の数、メモリの数、或はポートの数を変更することを特徴とする請求項1に記載の動作合成装置。
  6. 前記モジュールは前記演算器と前記メモリを切替える切替手段を含むことを特徴とする請求項5に記載の動作合成装置。
  7. 前記モジュールは前記演算器と前記ポートを切替える切替手段を含むことを特徴とする請求項5に記載の動作合成装置。
  8. 記憶手段をさらに備え、
    前記スケジューリング手段は前記演算器の数、メモリの数、或はポートの数を前記記憶手段に保存することを特徴とする請求項5に記載の動作合成装置。
  9. 前記モジュールは、前記演算器と前記メモリと前記ポートを切替える切替手段を含むことを特徴とする請求項8に記載の動作合成装置。
  10. 回路装置の動作記述からノードを含む機能記述を生成する動作合成方法において、
    前記ノードの状態を検出する検出ステップと、
    前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
    前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップを含むことを特徴とする動作合成方法。
  11. 前記ノードの状態は前記ノードが使用するポートの数を含むことを特徴とする請求項10に記載の動作合成方法。
  12. 前記モジュールは同期演算と非同期演算とを切替える切替手段を含むことを特徴とする請求項11に記載の動作合成方法。
  13. 前記モジュールは複数の演算器を含み、前記切替手段は、前記複数の演算器を切替える ことを特徴とする請求項12に記載の動作合成方法。
  14. 前記ノードの状態は前記ノードが使用する、演算器の数、メモリの数、及びポートの数を含み、
    前記ノードが使用する演算器の数、メモリの数、或はポートの数に応じて前記モジュールが共有する演算器の数、メモリの数、或はポートの数を変更する変更ステップをさらに含むことを特徴とする請求項10に記載の動作合成方法。
  15. 前記モジュールは前記演算器と前記メモリを切替える切替手段を含むことを特徴とする請求項14に記載の動作合成方法。
  16. 前記モジュールは前記演算器と前記ポートを切替える切替手段を含むことを特徴とする請求項14に記載の動作合成方法。
  17. 前記演算器の数、メモリの数、或はポートの数を保存する保存ステップとをさらに含むことを特徴とする請求項14に記載の動作合成方法。
  18. 前記モジュールは前記演算器と前記メモリと前記ポートを切替える切替手段を含むことを特徴とする請求項17に記載の動作合成方法。
  19. 回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、
    前記ノードの状態を検出する検出ステップと、
    前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
    前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させることを特徴とする動作合成プログラム。
  20. 回路装置の動作記述からノードを含む機能記述を生成する動作合成装置に、
    前記ノードの状態を検出する検出ステップと、
    前記検出したノードの状態と前記ノードに割当てられるモジュールに基づいてスケジューリング処理を行うスケジューリングステップと、
    前記スケジューリング処理の結果に基づいてバインディング処理を行うバインディングステップとを実行させるためのプログラムを格納した記憶媒体。
JP2009071366A 2009-03-24 2009-03-24 動作合成装置、動作合成方法、及び、プログラム Active JP5458622B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009071366A JP5458622B2 (ja) 2009-03-24 2009-03-24 動作合成装置、動作合成方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009071366A JP5458622B2 (ja) 2009-03-24 2009-03-24 動作合成装置、動作合成方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2010224864A true JP2010224864A (ja) 2010-10-07
JP5458622B2 JP5458622B2 (ja) 2014-04-02

Family

ID=43041985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009071366A Active JP5458622B2 (ja) 2009-03-24 2009-03-24 動作合成装置、動作合成方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP5458622B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001338004A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 高位合成システム、高位合成方法、及び高位合成方法実行プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2004185503A (ja) * 2002-12-05 2004-07-02 Toshiba Corp 論理回路設計方法、論理回路設計プログラムおよび論理回路設計装置
JP2004288206A (ja) * 2004-05-10 2004-10-14 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法
WO2006051760A1 (ja) * 2004-11-10 2006-05-18 Sharp Kabushiki Kaisha データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
JP2006172219A (ja) * 2004-12-16 2006-06-29 Toshiba Corp 半導体集積回路の自動設計装置、半導体集積回路の自動設計方法、及び半導体集積回路の自動設計プログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001338004A (ja) * 2000-05-29 2001-12-07 Toshiba Corp 高位合成システム、高位合成方法、及び高位合成方法実行プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2004185503A (ja) * 2002-12-05 2004-07-02 Toshiba Corp 論理回路設計方法、論理回路設計プログラムおよび論理回路設計装置
JP2004288206A (ja) * 2004-05-10 2004-10-14 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法
WO2006051760A1 (ja) * 2004-11-10 2006-05-18 Sharp Kabushiki Kaisha データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
JP2006172219A (ja) * 2004-12-16 2006-06-29 Toshiba Corp 半導体集積回路の自動設計装置、半導体集積回路の自動設計方法、及び半導体集積回路の自動設計プログラム

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSNG200000207008; 池田 充郎, 宮崎 敏明: 'メモリ割り付け制約を考慮したスケジューリング手法' 情報処理学会研究報告 第93巻/第6号, 19930121, 第65-72頁, 社団法人情報処理学会 *
CSNG200800164004; 佐川 由己, 貞方 毅, 松永 裕介: 'FPGA向け動作合成におけるメモリバインディングとスケジューリングアルゴリズムについて' 情報処理学会研究報告 第2008巻/第2号, 20080117, 第91-96号, 社団法人情報処理学会 *
JPN6013015993; 池田 充郎, 宮崎 敏明: 'メモリ割り付け制約を考慮したスケジューリング手法' 情報処理学会研究報告 第93巻/第6号, 19930121, 第65-72頁, 社団法人情報処理学会 *
JPN6013015994; 佐川 由己, 貞方 毅, 松永 裕介: 'FPGA向け動作合成におけるメモリバインディングとスケジューリングアルゴリズムについて' 情報処理学会研究報告 第2008巻/第2号, 20080117, 第91-96号, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
JP5458622B2 (ja) 2014-04-02

Similar Documents

Publication Publication Date Title
Kienhuis et al. An approach for quantitative analysis of application-specific dataflow architectures
Cardoso et al. Compilation techniques for reconfigurable architectures
Nguyen et al. Model-driven SoC design via executable UML to SystemC
Miranda et al. High-level address optimization and synthesis techniques for data-transfer-intensive applications
US10289093B1 (en) Runtime adaptive generator circuit
WO2007121452A2 (en) Branching and behavioral partitioning for a vliw processor
JP2002123563A (ja) コンパイル方法および合成装置ならびに記録媒体
Bakshi et al. Partitioning and pipelining for performance-constrained hardware/software systems
JP2007034887A (ja) ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
JP2008186252A (ja) テストベンチ生成機能を有する動作合成装置と方法及びプログラム
US20080040700A1 (en) Behavioral synthesizer, debugger, writing device and computer aided design system and method
US7409670B1 (en) Scheduling logic on a programmable device implemented using a high-level language
Potkonjak et al. Considering testability at behavioral level: use of transformations for partial scan cost minimization under timing and area constraints
US11449347B1 (en) Time-multiplexed implementation of hardware accelerated functions in a programmable integrated circuit
US7370311B1 (en) Generating components on a programmable device using a high-level language
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
Grudnitsky et al. COREFAB: Concurrent reconfigurable fabric utilization in heterogeneous multi-core systems
US6505340B2 (en) Circuit synthesis method
Wolf et al. UltraSynth: insights of a CGRA integration into a control engineering environment
JP5458622B2 (ja) 動作合成装置、動作合成方法、及び、プログラム
US7302667B1 (en) Methods and apparatus for generating programmable device layout information
US6532584B1 (en) Circuit synthesis method
JP4730536B2 (ja) 動作合成システム、動作合成方法およびプログラム
Wolf et al. Ultrasynth: integration of a CGRA into a control engineering environment
JP2008204341A (ja) インタフェース合成装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110706

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130409

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130610

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131230

R150 Certificate of patent or registration of utility model

Ref document number: 5458622

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150