JP2007172546A - 動作合成システム、動作合成方法およびプログラム - Google Patents

動作合成システム、動作合成方法およびプログラム Download PDF

Info

Publication number
JP2007172546A
JP2007172546A JP2005372976A JP2005372976A JP2007172546A JP 2007172546 A JP2007172546 A JP 2007172546A JP 2005372976 A JP2005372976 A JP 2005372976A JP 2005372976 A JP2005372976 A JP 2005372976A JP 2007172546 A JP2007172546 A JP 2007172546A
Authority
JP
Japan
Prior art keywords
pointer
behavioral synthesis
behavioral
terminal
converting
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
JP2005372976A
Other languages
English (en)
Other versions
JP4730536B2 (ja
Inventor
Shinichi Noda
真一 野田
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 JP2005372976A priority Critical patent/JP4730536B2/ja
Priority to US11/615,174 priority patent/US7565632B2/en
Publication of JP2007172546A publication Critical patent/JP2007172546A/ja
Application granted granted Critical
Publication of JP4730536B2 publication Critical patent/JP4730536B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Telephonic Communication Services (AREA)

Abstract

【課題】動作レベル記述で階層化されている関数がポインタによって接続されている場合でも、動作合成時に下位関数をインライン展開する必要を無くす。
【解決手段】ステップA1において用意された動作レベル記述を言語解析処理して(ステップA2)、動作合成用の内部表現に変換する(ステップA3)。これと並行して、ステップA1に記述されているポインタタイプ指定(具体的な回路実体への指定)に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を作成する(ステップA4)。ブロックA3およびブロックA4の内部表現に基づき、具体的な回路実体ごとの変換ルールに基づいて、ポインタ−端子変換処理を行い(ステップA5)、ポインタを必要な端子と条件部の組に変換し内部表現を生成する(ステップA6)。そして、一般的な動作合成処理で動作合成を行い(ステップA7)、RTLレベル記述を生成する(ステップA8)。
【選択図】図2

Description

本発明は、動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成システム、動作合成方法およびプログラムに関する。
近年、半導体回路の回路規模が増大しているため、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の1つとして、動作レベルの回路記述から、RTL(Register Transfer Level)等の抽象度の低い回路記述を合成するための動作合成システムの使用が提案されている。このような動作合成システムを用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述から、ハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
このような動作合成システムにおいて動作合成を行おうとする動作レベルの回路記述において、上位関数と下位関数というように階層化されている関数がポインタによって接続されている場合、上位関数の動作合成を行う場合には、このポインタの解消が必要になる。
動作レベルの回路記述においてポインタが使用されている場合の従来の動作合成システムの一例が、例えば、特許文献1、非特許文献1に記載されている。特許文献1の図1に示すように、この従来の動作合成システムは、言語解析手段(言語解析装置)と、関数インライン展開手段(関数インライン展開装置)と、ポインタ解析手段(ポインタ解析装置)と、ポインタ解消手段(ポインタ解消装置)と、動作合成手段(動作合成装置)から構成されている。
このような構成を有する従来の動作合成システムは下記のように動作する。すなわち、言語解析後、関数間をまたいで引数などで使用されているポインタを解消するために関数をインラインに展開する。その後、ポインタを解析、解消し、従来の動作合成処理(スケジューリング、バインディング、RTL記述生成処理など)を実行する。
この従来の動作合成システムでは、ポインタを静的に解決するために、上位関数の合成段階で下位関数の詳細が決まる必要があり、動作レベル記述において階層化されている関数がポインタによって接続されている場合、動作合成時に下位関数をインライン展開する必要があるという問題を有している。
そして、下位関数をインライン展開するためには、上位関数の動作合成時に下位関数の記述が必要であるため、従来の動作合成システムでは、ポインタを引数に持つ下位関数を後から実装したり、実装を入れ替えたりすることができなかった。そのため、上位関数の合成時に、下記関数の実装から完全に独立させる設計フローにすることできなかった。
また、下位関数の記述が上位関数の中にインライン展開されると、上位関数のデバッグ時にチェックしなければならない変数や動作が増加するため、動作合成後の回路のデバッグ効率が低下するという弊害も発生する。
さらに、従来の動作合成システムでは、下位関数の内部に書かれている記述を展開した状態で合成することになるため、ツールによる記述の解析や、スケジューリングなどにおける探索の対象範囲が広がって時間が掛かることになり、上位関数の動作合成速度が低下する可能性がある。
さらに、上位関数から同一の下位関数を複数箇所で呼び出している場合に、インライン展開すると呼び出しの回数だけ回路実体が作られてしまい、共有化が難しくなるため、動作合成により合成された回路の面積が大きくなる可能性がある。
特開2001−273347号公報 Luc Semeria, Giovanni De Micheli著、「SpC: Synthesis of Pointers in C. Application of Pointer Analysis to the Behavioral Synthesis from C」, proceedings of the International Conference on Computer-Aided Design ICCAD'98,pp.340-346,サンホセ,1998年11月
上述した従来の動作合成システムでは、ポインタを静的に解決するために、上位関数の合成段階で下位関数の詳細が決まる必要があり、動作レベル記述において階層化されている関数がポインタによって接続されている場合、動作合成時に下位関数をインライン展開する必要があるという問題点があった。
本発明の目的は、上位関数の動作合成時に下位関数へポインタを渡している場合であっても、下位関数をインラインに展開することなく動作合成をすることできる動作合成システム、動作合成方法およびプログラムを提供することにある。
上記目的を達成するために、本発明の動作合成システムは、動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成システムであって、
入力された動作レベルの回路記述を解析して動作合成用の内部表現に変換するとともに、前記動作レベルの回路記述中のポインタタイプ指定に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する言語解析手段と、
前記言語解析手段により生成された内部表現中のポインタ変数を、予め定められた変換ルールに基づいて、端子と条件部の組に変換するポインタ−端子変換手段と、
前記ポインタ−端子変換手段によりポインタ変数が除去された後の内部表現に対して動作合成処理を行い、抽象度の低い回路記述を生成して出力する動作合成手段とを有する。
本発明によれば、ポインタ−端子変換手段により、ポインタ変数を、入力端子/出力端子等の端子とif文等の条件部との組に変換するようにして上位関数中のポインタ変数を解消するようにしているので、ポインタ変数を引数にもつ関数が内部にある動作記述を動作合成処理する場合であっても、上位関数の動作合成処理の際に下位関数をインライン展開する必要がなくなる。
また、入力された動作レベルの回路記述中における、ポインタ変数の具体的な回路実体への指定であるポインタタイプ指定を解析し、動作合成用の内部表現に変換するポインタタイプ指定解析手段をさらに備えるようにしてもよい。
本発明では、ポインタタイプ指定解析手段を言語解析手段とは独立して設けることにより、ポインタタイプ指定が動作記述内のデータ型や付加情報とは別の方法で記述することが可能となり、ポインタタイプ指定の情報を動作記述とは分離して管理すること等が可能になる。
また、前記言語解析手段の解析結果を基にポインタ変数の具体的な回路実体への変換方法を決定するポインタタイプ解析手段をさらに備えるようにしてもよい。
本発明では、ポインタ変数の具体的な回路実体への変換方法を決定するポインタタイプ解析手段を設けることにより、利用者はポインタタイプの指定を行う必要がなくなり、ポインタ変数の具体的な回路実体を意識することなく動作合成が可能となる。
さらに、前記ポインタ−端子変換手段は、前記言語解析手段の解析結果から直ちにポインタ変数を端子と条件部の組に変換せず、前記動作合成手段における動作合成処理中に、ポインタ変数を端子と条件部の組に変換するようにしてもよい。
本発明によれば、一般的な動作合成処理の前にポインタ変数を解消するのではなく、一般的な動作合成処理中または動作合成後にポインタ変数を解消するようにしているので、動作合成処理自体の拡張が容易となる。
以上説明したように、本発明によれば、動作合成を行おうとする動作レベルの回路記述において、階層化されている関数がポインタによって接続されている場合であっても、上位関数の動作合成の際に下位関数をインラインに展開することなく動作合成をすることが可能になるという効果が得られる。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
(第1の実施形態)
図1は本発明の第1の実施形態の動作合成システムの構成を示すブロック図である。本実施形態の動作合成システムは、図1に示されるように、プログラム制御により動作するデータ処理装置(中央処理装置;プロセッサ;コンピュータ)2と、入力装置1と、記憶装置3と、出力装置4からから構成されている。
そして、データ処理装置2は、言語解析手段21と、ポインタ−端子変換手段22と、動作合成手段23とを含む。また、記憶装置3は、システム内部表現記憶部31を有する。
言語解析手段21は、入力装置1により与えられた動作レベルの回路記述を解析し、動作合成用の内部表現に変換する。ここで内部表現とは、動作レベルの回路記述を解析した後に、その解析結果を内部で保持する際に使用される表現を意味している。具体的には、内部表現とは、動作レベルの回路記述を解析した結果を抽象構文木(abstract syntax tree; AST)やコントロールデータフローグラフ(control data flow graph; CDFG)と呼ばれるデータ構造で保存する際の表現を示している。
また、言語解析手段21は、動作レベルの回路記述中のポインタタイプ指定に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する。
ポインタ−端子変換手段22は、言語解析手段21により生成された内部表現中のポインタ変数を、予め定められた変換ルールに基づいて、端子と条件部の組に変換する。
ここでの端子とは、ポインタ変数を具体的な回路実体に割り当てた場合の、外部入力端子/出力端子を示している。外部入力端子/出力端子は、上位関数と下位関数のインタフェースとなっている。1つのポインタから、変換ルールに基づいて、複数の(必要なだけの)入力端子/出力端子が、それぞれ、適切なビット幅で生成される。また、条件部とは、条件判定を行うif文のようなものを示している。
動作合成手段23は、ポインタ−端子変換手段22によりポインタ変数が除去された状態の内部表現に対して通常の動作合成処理を行い、抽象度の低い回路記述を生成して出力装置4に出力する。
通常の動作合成処理の一例としては、CDFGを生成後に以下のような処理を行うものがあげられるが、これらの処理は本発明の特徴部分ではないため詳細な説明は省略する。
(1)CDFGでの最適化(冗長な演算の削除や定数計算など)
(2)スケジューリング(各処理を行うサイクルを決める)
(3)バインディング(各処理の演算やメモリアクセスで、実際にどの演算器やメモリを使用するかを決める)
(4)データパス、コントローラ作成(データ部と制御部を分割して生成)
(5)RTLレベル記述生成
なお、言語解析手段21、ポインタ−端子変換手段22、動作合成手段23の各々の処理手段は、必要に応じてシステムの内部表現を、記憶装置3のシステム内部表現記憶部31に対して、書き出しおよび読み込みを行う。
次に、図2のシステムフロー図を参照して本実施形態の動作合成システムの全体の動作について詳細に説明する。
まず、利用者によりC言語などの抽象度の高い回路仕様が記述されている動作レベル記述が用意される(ステップA1)。この動作記述には、下位関数にポインタで引数を渡す記述が含まれているものとする。また、この動作記述中で各々の関数引数にあるポインタ変数をどのような具体的な回路実体(レジスタ、メモリ、外部入力端子など)に割り当てるかが、当該言語により規定されたデータ型、もしくは付加情報により定義されている。
次に、言語解析手段21は、ステップA1の動作レベル記述を言語解析処理し(ブロックA2)、動作合成用の内部表現に変換する(ステップA3)。それと並行して、言語解析手段21は、ステップA1に記述されているポインタタイプ指定(具体的な回路実体の指定)に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する(ステップA4)。
ステップA3およびステップA4の内部表現に基づき、関数の引数にあるポインタがどのような具体的な回路実体に割り当てられるかが決まるため、ポインタ−端子変換手段22は、具体的な回路実体ごとの変換ルールに基づいて、ポインタ−端子変換処理を行い(ステップA5)、ポインタを必要な端子と条件部の組に変換する(ステップA6)。
最後に、動作合成手段23は、一般的な動作合成処理を行い(ステップA7)、RTLレベル記述を生成する(ステップA8)。
本実施形態の動作合成システムでは、既存の一般的な動作合成処理の前処理として、ポインタタイプ指定に基づいてポインタを端子と条件部の組に変換するというように構成されているため、ポインタを引数にもつ関数が内部にある動作記述であっても、下位関数をインライン展開せずに、そのままブラックボックスとして合成することが可能となる。
つまり、ポインタを端子と条件部とに変換して、あたかもそのように動作記述が書かれていたように内部表現に反映することで、CDFG上での最適化処理以降の処理は、ポインタを引数として使用していない場合と同様に処理することができるため、既存の動作合成処理の大部分をそのまま使用することができる。
そして、上位関数の合成時に、下位関数の実装に依存しないように合成が可能になることにより、ポインタを引数に持つ下位関数を後から実装したり、実装を入れ替えたりすることが可能になる。
また、特定の機能を持った部分を下位関数として分離しているため、上位関数のデバッグ時にチェックしなければならない変数や動作を減らせるため、動作合成後の回路のデバグ効率を上げることができる。
また、下位関数の内部に書かれている記述を動作合成時に考慮する必要がないため、記述の解析やスケジューリングなどにおける探索の対象範囲が狭まることにより、動作合成速度の向上を図ることができる。
さらに、上位関数から同一の下位関数を複数箇所で呼び出している場合、下位関数を容易に共有化できるため、動作合成により合成された回路の面積を縮小できる。
(第2の実施形態)
次に、本発明の第2の実施形態の動作合成システムについて図面を用いて説明する。本発明の第2の実施の形態の動作合成システムは、図3に示されるように、プログラム制御により動作するデータ処理装置(中央処理装置;プロセッサ;コンピュータ)32と、入力装置1と、記憶装置3と、出力装置4からから構成されている。図3において、図1中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
そして、データ処理装置32は、言語解析手段21と、ポインタ−端子変換手段22と、動作合成手段23と、ポインタタイプ指定解析手段24とを含む。
本実施形態におけるデータ処理装置32は、図1に示した第1の実施形態の動作合成システムにおけるデータ処理装置2に対して、ポインタタイプ指定解析手段24が新たに追加された構成になっている。
ポインタタイプ指定解析手段24は、入力装置1より与えられたポインタの具体的な回路実体の指定(ポインタタイプ指定)を解析し、動作合成用の内部表現に変換する。本実施形態におけるポインタタイプ指定解析手段24も、他の処理手段と同様に、必要に応じてシステムの内部表現を、記憶装置3のシステム内部表現記憶部31に対して、書き出しおよび読み込みを行う。
次に、図4のシステムフロー図を参照して本実施形態の動作合成システムの全体の動作について詳細に説明する。
まず、利用者によりC言語などの抽象度の高い回路仕様が記述されている動作レベル記述が用意される(ステップB1)。この動作記述には、下位関数にポインタで引数を渡す記述が含まれているものとする。また、この動作記述中で各々の関数引数にあるポインタ変数をどのような具体的な回路実体(レジスタ、メモリ、外部入力端子など)に割り当てるかを定義したポインタタイプ指定を用意する(ステップB2)。ポインタタイプ指定は、ファイルで用意するほか、コマンドラインでの指定やGUIでの指定も可能とする。
次に、言語解析手段21は、ステップB1の動作レベル記述を言語解析処理し(ステップB3)、動作合成用の内部表現に変換する(ステップB4)。それと並行して、ポインタタイプ指定解析手段24により、ステップB2のポインタタイプ指定をポインタタイプ指定解析処理して(ステップB5)、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現に変換する(ステップB6)。ここで、ポインタの具体的な回路実体変換方法の指定は、ステップB1において用意された動作レベル記述にも部分的に記述可能とし、言語解析処理(ステップB3)を経て、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現に変換することができる(ステップB6)。ステップB5およびステップB6の内部表現に基づき、関数の引数にあるポインタがどのような具体的な回路実体に割り当てられるかが決まるため、ポインタ−端子変換手段22は、具体的な回路実体ごとの変換ルールに基づいて、ポインタ−端子変換処理を行い(ステップB7)、ポインタを必要な端子と条件部の組に変換する(ステップB8)。
最後に、動作合成手段23は、一般的な動作合成処理を行い(ステップB9)、RTLレベル記述を生成する(ステップB10)。
本実施形態の動作合成システムでは、上記で説明した第1の実施形態の動作合成システムで動作記述内にデータ型や付加情報として記述されていたポインタタイプ指定が別の方法で入力するように構成されているため、動作記述からポインタの具体的な回路実体への割り当て方法を分離することができる。これにより、ポインタの具体的な回路実体への割り当て方法の情報を動作記述と分離して管理することができたり、GUIによるサポートを得られる利点がある。
(第3の実施形態)
次に、本発明の第3の実施形態の動作合成システムについて図面を用いて説明する。
本発明の第3の実施形態の動作合成システムは、図5に示されるように、プログラム制御により動作するデータ処理装置(中央処理装置;プロセッサ;コンピュータ)52と、入力装置1と、記憶装置3と、出力装置4からから構成されている。
データ処理装置52は、言語解析手段21と、ポインタ−端子変換手段22と、動作合成手段23と、ポインタタイプ解析手段25とを含む。
本実施形態におけるデータ処理装置52は、図1に示した第1の実施形態の動作合成システムにおけるデータ処理装置2に対して、ポインタタイプ解析手段25が新たに追加された構成になっている。
ポインタタイプ解析手段25は、言語解析手段21の解析結果を基にポインタ変数の具体的な回路実体への変換方法を決定する。本実施形態におけるポインタタイプ解析手段25も、他の処理手段と同様に、必要に応じてシステムの内部表現を、記憶装置3のシステム内部表現記憶部31に対して、書き出しおよび読み込みを行う。
次に、図6のシステムフロー図を参照して本実施形態の動作合成システムの全体の動作について詳細に説明する。
まず、利用者によりC言語などの抽象度の高い回路仕様が記述されている動作レベル記述が用意される(ステップC1)。この動作記述は、下位の関数にポインタで引数を渡す記述が含まれるものとする。
次に、言語解析手段21は、ステップC1の動作レベル記述を言語解析処理し(ステップC2)、動作合成用の内部表現に変換する(ステップC3)。次に、ポインタタイプ解析手段25により、ポインタタイプ変換方法解析処理を行って(ステップC4)、動作レベル記述により記述されていたポインタから具体的な回路への変換ルールを配列の大きさやアクセス頻度などの動作レベル記述上の使用方法から決定し、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する(ステップC5)。
ステップC3およびステップC5の内部表現に基づき、関数の引数にあるポインタがどのような具体的な回路実体に割り当てられるかが決まるため、ポインタ−端子変換手段22は、具体的な回路実体ごとの変換ルールに基づいて、ポインタ−端子変換処理を行い(ステップC6)、ポインタを必要な端子と条件部の組に変換する(ステップC7)。
最後に、動作合成手段23は、一般的な動作合成処理を行い(ステップC8)、RTLレベル記述を生成する(ステップC9)。
本実施形態の動作合成システムによれば、上記で説明した第1の実施形態よび第2の実施形態の動作合成システムではでポインタタイプの指定を利用者が指定していたのに対し、動作レベル記述上の使用方法を解析して、ポインタタイプを決定することができるため、利用者がポイントタイプを指定することなく、あるいは、利用者がポインタの具体的な回路実体を意識せずに動作合成可能となる効果がある。
(第4の実施形態)
次に、本発明の第4の実施形態の動作合成システムについて詳細に説明する。
上記で説明した第1から第3の実施形態の動作合成システムでは、ポインタの具体的な回路実体を決定後、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成し、その情報を用いて、言語解析後の段階で、直ちにポインタを端子に変換しているが、本発明の第4の実施形態では、ポインタの端子と条件部への変換を一般的な動作合成の処理中、または処理後に行う。
本実施形態の動作合成システムによれば、上記で説明した第1から第3の実施形態の動作合成システムでは、必ず一般的な動作合成処理の前にポインタを解消していたのに対し、一般的な動作合成中または動作合成後にポインタを解消するように構成されているため、動作合成処理自体の拡張が容易なシステムにおいて、適切な処理タイミングでポインタを解消するようにできる効果が得られる。
また、図には示されていないが、上記第1から第4の実施形態の動作合成システムは、上記で説明した動作合成方法を実行するためのプログラムを記録した記録媒体を備えている。この記録媒体は磁気ディスク、半導体メモリまたはその他の記録媒体であってもよい。このプログラムは、記録媒体から動作合成システムに読み込まれ、動作合成システムの動作を制御する。具体的には、動作合成システム内のデータ処理装置2、32、52がこのプログラムの制御により動作合成システムのハードウェア資源に特定の処理を行うように指示することにより上記の処理が実現される。
さらに、上記第1から第4の実施形態では、システム内部表現記憶部31を有する記憶装置3が、データ処理装置2、32、52の外部に設けられている場合を用いて説明しているが、本発明はこのような場合に限定されるものではなく、データ処理装置2、32、52内に記憶装置を設け、この記憶装置により内部表現を格納するようにしてもよい。
次に、本発明の第1の実施形態の動作合成システムを用いた実施例について説明する。
(第1の実施例)
先ず、図7−1に本システムへの入力となる動作レベル記述を示す。図7−1ではANSI−C言語をベースとして、外部入力端子にinput、外部出力端子にoutputというキーワードが追加されている。また、bool型は1ビットの変数を意味するものとする。図7−1は関数main()が親関数(上位関数)、関数func()が子関数(下位関数)の関係があり、外部端子は親関数に入力されるが、関数func()へポインタで渡されている。
ポインタ-端子変換後のmain()及びfunc()をそれぞれ図7−2、図7−3に示す。図7−2、図7−3のような変換により、ポインタが端子とその端子の使用条件となる。図7−2では、func_i、func_o、func_start、func_endは、関数func()の入出力端子であり、c1の条件毎に、接続される外部端子が決定する。この動作レベル記述では、func()の動作開始時に親関数側でfunc_startが1に設定され、func()の動作終了時に子関数側でfunc_endが1に設定される。図7−3では、図7−1でポインタであった*iと*oが端子func_i、func_oに変換され、func()の動作の開始と終了を表すfunc_startおよびfunc_endが生成される。この変換により、一般的な動作合成ツールのフローによる動作合成が可能となる。
(第2の実施例)
図8−1では、register型およびmemory型の配列を関数func()に渡している。ここで、この動作レベル記述ではRとMの変換ルールをレジスタおよびメモリと指定し、それぞれのアクセスポート数を4および2と定めていることを意味するものとする。また、func()の引数*rはアクセスポート数3として合成することが指示されている。図1、図2に示した第1の実施形態の動作合成システムにより、main()及びfunc()はそれぞれ図8−2、図8−3のように変換される。図8−2では、レジスタおよびメモリのポートの端子構成はstruct Port型として定義され、MとRはそれぞれのポート数に応じて端子としての表現に変換される。また、関数func()から生成される端子はそれぞれmおよびrの構造体として表現され、それぞれの端子はMおよびRの端子に接続される。この変換はfunc()の仮引数だけで決定し、func()の実装は必ずしも必要としない。図8−3は、func()の変換方法を示しており、mとrはそれぞれ外部端子に変換され、配列への代入・参照はread_dataの参照、write_dataへの代入に変換される。
(第3の実施例)
図9−1に示すように、関数func()に渡されるポインタの具体的な回路実体の種類が複数ある場合には、main()側の合成時に図9−2のように、関数の呼び出し毎に接続する具体的な回路実体を選択するように変換される。func()側の合成時には、図9−3のように具体的な回路実体に関わらず、ポート数に合わせて、端子へ入出力するように変換される。
(第4の実施例)
図10−1に示すように、具体的な回路実体がmain()内の内部レジスタのときで、通常の動作合成フローでは配列として扱うときには、図10−2のようにwrite_enable信号によって配列への書き込みと読み込みへ変換することで実現される。一方、図10−3に示されるように、func()側では具体的な回路実体に関わらず端子への入出力に変換される。
また、図10−1中の「func(R, &a, &x);」という関数呼び出しから、図10−2中の「if(r.port[0].write_enable) [R[r.port[0].address] = r.port[0].write_data;] esle [r.port[0].read_data = R[r.port[0].address];]」が生成されていることにより、ポインタから入力端子/出力端子だけではなく「if文」が条件部として生成されていることがわかる。
本発明の第1の実施形態の動作合成システムの構成を示すブロック図である 本発明の第1の実施形態の動作合成システムの動作を示すシステムフロー図である。 本発明の第2の実施形態の動作合成システムの構成を示すブロック図である。 本発明の第2の実施形態の動作合成システムの動作を示すシステムフロー図である。 本発明の第3の実施形態の動作合成システムの構成を示すブロック図である。 本発明の第3の実施形態の動作合成システムの動作を示すシステムフロー図である。 本発明の第1の実施例の動作レベル記述を示す図である。 本発明の第1の実施例の動作レベル記述の親関数変換方法を示す図である。 本発明の第1の実施例の動作レベル記述の子関数変換方法を示す図である。 本発明の第2の実施例の動作レベル記述を示す図である。 本発明の第2の実施例の動作レベル記述の親関数変換方法を示す図である。 本発明の第2の実施例の動作レベル記述の子関数変換方法を示す図である。 本発明の第3の実施例の動作レベル記述を示す図である。 本発明の第3の実施例の動作レベル記述の親関数変換方法を示す図である。 本発明の第3の実施例の動作レベル記述の子関数変換方法を示す図である。 本発明の第4の実施例の動作レベル記述を示す図である。 本発明の第4の実施例の動作レベル記述の親関数変換方法を示す図である。 本発明の第4の実施例の動作レベル記述の子関数変換方法を示す図である。
符号の説明
1 入力装置
2 データ処理装置
3 記憶装置
4 出力装置
21 言語解析手段
22 ポインタ−端子変換手段
23 動作合成手段
24 ポインタタイプ指定解析手段
25 ポインタタイプ解析手段
31 システム内部表現記憶部
32 データ処理装置
52 データ処理装置
A1〜A8 ステップ
B1〜B10 ステップ
C1〜C9 ステップ

Claims (12)

  1. 動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成システムであって、
    入力された動作レベルの回路記述を解析して動作合成用の内部表現に変換するとともに、前記動作レベルの回路記述中のポインタタイプ指定に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する言語解析手段と、
    前記言語解析手段により生成された内部表現中のポインタ変数を、予め定められた変換ルールに基づいて、端子と条件部の組に変換するポインタ−端子変換手段と、
    前記ポインタ−端子変換手段によりポインタ変数が除去された後の内部表現に対して動作合成処理を行い、抽象度の低い回路記述を生成して出力する動作合成手段と、を有する動作合成システム。
  2. 入力された動作レベルの回路記述中における、ポインタ変数の具体的な回路実体への指定であるポインタタイプ指定を解析し、動作合成用の内部表現に変換するポインタタイプ指定解析手段をさらに有する請求項1記載の動作合成システム。
  3. 前記言語解析手段の解析結果を基にポインタ変数の具体的な回路実体への変換方法を決定するポインタタイプ解析手段をさらに有する請求項1記載の動作合成システム。
  4. 前記ポインタ−端子変換手段は、前記言語解析手段の解析結果から直ちにポインタ変数を端子と条件部の組に変換せず、前記動作合成手段における動作合成処理中に、ポインタ変数を端子と条件部の組に変換する請求項1から3のいずれか1項記載の動作合成システム。
  5. 動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成方法であって、
    入力された動作レベルの回路記述を解析して動作合成用の内部表現に変換するとともに、前記動作レベルの回路記述中のポインタタイプ指定に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成するステップと、
    前記内部表現中のポインタ変数を、予め定められた変換ルールに基づいて、端子と条件部の組に変換するステップと、
    ポインタ変数が除去された後の内部表現に対して動作合成処理を行い、抽象度の低い回路記述を生成して出力するステップを有する動作合成方法。
  6. 入力された動作レベルの回路記述中における、ポインタ変数の具体的な回路実体への指定であるポインタタイプ指定を解析し、動作合成用の内部表現に変換するステップをさらに有する請求項5記載の動作合成方法。
  7. 前記言語解析手段の解析結果を基にポインタ変数の具体的な回路実体への変換方法を決定するステップをさらに有する請求項5記載の動作合成方法。
  8. 前記ポインタ変数を端子と条件部の組に変換するステップでは、前記動作レベルの回路記述の解析結果から直ちにポインタ変数を端子と条件部の組に変換せず、動作合成処理中に、ポインタ変数を端子と条件部の組に変換する請求項5から7のいずれか1項記載の動作合成方法。
  9. 動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成方法をコンピュータに実行させるためのプログラムであって、
    入力された動作レベルの回路記述を解析して動作合成用の内部表現に変換するとともに、前記動作レベルの回路記述中のポインタタイプ指定に基づいて、ポインタ変数を具体的な回路実体に変換する際の対応関係を示す内部表現を生成する処理と、
    前記内部表現中のポインタ変数を、予め定められた変換ルールに基づいて、端子と条件部の組に変換する処理と、
    ポインタ変数が除去された後の内部表現に対して動作合成処理を行い、抽象度の低い回路記述を生成して出力する処理とをコンピュータに実行させるためのプログラム。
  10. 入力された動作レベルの回路記述中における、ポインタ変数の具体的な回路実体への指定であるポインタタイプ指定を解析し、動作合成用の内部表現に変換するステップをさらに有する請求項9記載のプログラム。
  11. 前記言語解析手段の解析結果を基にポインタ変数の具体的な回路実体への変換方法を決定するステップをさらに有する請求項9記載のプログラム。
  12. 前記ポインタ変数を端子と条件部の組に変換する処理では、前記動作レベルの回路記述の解析結果から直ちにポインタ変数を端子と条件部の組に変換せず、動作合成処理中に、ポインタ変数を端子と条件部の組に変換する請求項9から11のいずれか1項記載のプログラム。
JP2005372976A 2005-12-26 2005-12-26 動作合成システム、動作合成方法およびプログラム Expired - Fee Related JP4730536B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005372976A JP4730536B2 (ja) 2005-12-26 2005-12-26 動作合成システム、動作合成方法およびプログラム
US11/615,174 US7565632B2 (en) 2005-12-26 2006-12-22 Behavioral synthesizer system, operation synthesizing method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005372976A JP4730536B2 (ja) 2005-12-26 2005-12-26 動作合成システム、動作合成方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2007172546A true JP2007172546A (ja) 2007-07-05
JP4730536B2 JP4730536B2 (ja) 2011-07-20

Family

ID=38195369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005372976A Expired - Fee Related JP4730536B2 (ja) 2005-12-26 2005-12-26 動作合成システム、動作合成方法およびプログラム

Country Status (2)

Country Link
US (1) US7565632B2 (ja)
JP (1) JP4730536B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218217A (ja) * 2009-03-17 2010-09-30 Nec Corp 動作記述変換装置、動作記述変換方法、およびプログラム

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7825684B2 (en) * 2005-03-15 2010-11-02 Tabula, Inc. Variable width management for a memory of a configurable IC
US7930666B1 (en) * 2006-12-12 2011-04-19 Tabula, Inc. System and method of providing a memory hierarchy

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249955A (ja) * 2000-03-07 2001-09-14 Toshiba Corp 高位合成方法
JP2001273347A (ja) * 2000-03-24 2001-10-05 Nec Corp 半導体回路の合成システムとその合成方法、及び合成プログラムを記録した記録媒体
JP2003233632A (ja) * 2002-02-07 2003-08-22 Sanyo Electric Co Ltd ポインタ回路を備える集積回路装置および該集積回路装置の設計方法および設計支援装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2953431B2 (ja) 1997-05-26 1999-09-27 日本電気株式会社 高位合成装置及びその記録媒体
US6226776B1 (en) * 1997-09-16 2001-05-01 Synetry Corporation System for converting hardware designs in high-level programming language to hardware implementations
JPH11102381A (ja) 1997-09-29 1999-04-13 Matsushita Electric Ind Co Ltd アーキテクチャ動作合成装置、アーキテクチャ動作合成方法、プロセッサの設計方法およびプロセッサのアーキテクチャ動作記述方法
US6145120A (en) * 1998-03-24 2000-11-07 Lockheed Martin Corporation Declaration programming language extension for procedural programming languages
US7302670B2 (en) * 2000-12-21 2007-11-27 Bryan Darrell Bowyer Interactive interface resource allocation in a behavioral synthesis tool

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001249955A (ja) * 2000-03-07 2001-09-14 Toshiba Corp 高位合成方法
JP2001273347A (ja) * 2000-03-24 2001-10-05 Nec Corp 半導体回路の合成システムとその合成方法、及び合成プログラムを記録した記録媒体
JP2003233632A (ja) * 2002-02-07 2003-08-22 Sanyo Electric Co Ltd ポインタ回路を備える集積回路装置および該集積回路装置の設計方法および設計支援装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CSNG200600659007, 西口 健一, "ソフトウェア互換ハードウェアを合成する高位合成システムCCAPにおける変数と関数の扱い", 情報処理学会研究報告, 20051202, 第2005巻 第121号, 151−156頁, 社団法人情報処理学会 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218217A (ja) * 2009-03-17 2010-09-30 Nec Corp 動作記述変換装置、動作記述変換方法、およびプログラム

Also Published As

Publication number Publication date
US20070150844A1 (en) 2007-06-28
JP4730536B2 (ja) 2011-07-20
US7565632B2 (en) 2009-07-21

Similar Documents

Publication Publication Date Title
US8584062B2 (en) Tool suite for RTL-level reconfiguration and repartitioning
US10289093B1 (en) Runtime adaptive generator circuit
JP2007087215A (ja) ハードウェアモデルの変換処理に用いられるデータ構造、コンピュータプログラム、方法、及びシステム
JP2007034887A (ja) ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
JP6666554B2 (ja) 情報処理装置、変換プログラム、及び変換方法
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
CN113255258B (zh) 逻辑综合方法、装置、电子设备及存储介质
JP2006285333A (ja) 動作合成装置及び方法
JP4730536B2 (ja) 動作合成システム、動作合成方法およびプログラム
Potkonjak et al. Considering testability at behavioral level: use of transformations for partial scan cost minimization under timing and area constraints
JP5830955B2 (ja) 検証装置、検証方法及び検証プログラム
JP5115003B2 (ja) 論理設計支援システム及びプログラム
US6532584B1 (en) Circuit synthesis method
JP2008204341A (ja) インタフェース合成装置
JP2007323206A (ja) 動作合成装置、同方法、シミュレーション装置、同方法及び設計装置
JP4682245B2 (ja) Hdl処理方法、プログラム及びコンピュータ読み取り可能な記憶媒体
JP2007164596A (ja) 設計システムおよび設計方法
JP5467512B2 (ja) 動作合成装置、動作合成方法、及び、動作合成プログラム
JP5262678B2 (ja) 動作合成システム、動作合成方法、及び動作合成用プログラム
JP5233354B2 (ja) プロパティ検証システム、プロパティ検証方法、及びプログラム
JP2009140028A (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
Öberg et al. Grammar-based design of embedded systems
JPH11102381A (ja) アーキテクチャ動作合成装置、アーキテクチャ動作合成方法、プロセッサの設計方法およびプロセッサのアーキテクチャ動作記述方法
JP4199816B2 (ja) 論理合成方法
JP5458622B2 (ja) 動作合成装置、動作合成方法、及び、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101227

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: 20110323

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110405

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4730536

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees