JPH05101141A - 高位合成装置 - Google Patents

高位合成装置

Info

Publication number
JPH05101141A
JPH05101141A JP4071694A JP7169492A JPH05101141A JP H05101141 A JPH05101141 A JP H05101141A JP 4071694 A JP4071694 A JP 4071694A JP 7169492 A JP7169492 A JP 7169492A JP H05101141 A JPH05101141 A JP H05101141A
Authority
JP
Japan
Prior art keywords
register
subroutine
state
variable
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.)
Pending
Application number
JP4071694A
Other languages
English (en)
Inventor
Hiroshi Imai
浩史 今井
Seiichi Nishio
誠一 西尾
Tokuji Masuda
篤司 増田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP4071694A priority Critical patent/JPH05101141A/ja
Publication of JPH05101141A publication Critical patent/JPH05101141A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 (修正有) 【目的】 合成後の論理回路における演算器及びレジス
タの入力端子の余分な制御回路を省く。 【構成】 動作機能記述入力部1より入力された動作機
能記述によって表わされる動作をステート分割するステ
ート分割部2と、各ステートで必要とされるレジスタを
求める変数解析部3と、求められたレジスタを記憶する
レジスタ・リスト記憶部4と、レジスタのマージ規則を
持つマージ規則ライブラリ6と、レジスタのマージを実
行するマージ実行部5と、マージ結果を基に論理回路を
合成する合成部7を備える。別に、ビヘイビア記述を書
直さず、メモリ構成を変更することにより、又はサブル
ーチン演算実行時間の重複を調べて、サブルーチンコー
ルに必要なハードウェアブロックを割当てることによ
り、合成を行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、動作機能記述あるいは
ビヘイビア記述によって動作が表わされた論理回路を合
成する高位合成装置に関する。
【0002】
【従来の技術】近年、LSIの大規模化が進み、それに
伴ってLSI設計の期間短縮のため、論理回路を自動的
に合成する論理合成システムが用いられてきている。論
理合成システムを用いて論理回路を設計する際には、機
能記述言語により設計対象の動作を記述する必要があ
る。
【0003】従来、機能記述言語はレジスタ転送レベル
の言語であった。レジスタ転送レベルの言語では、設計
対象のレジスタ、演算器などのハードウェア構成及び各
動作周期(以下、クロック・サイクルという)毎のレジ
スタ間のデータの流れと処理を記述する。この言語を用
いて論理回路を設計するには、レジスタ、演算器等のハ
ードウェアに関する専門知識が必要とされる。
【0004】このため、最近ではハードウェアの専門知
識を必要としない設計対象の動作のみを記述する動作機
能記述(ビヘイビア記述ともいう)から論理回路を合成
する高位合成システムによる高位合成装置の開発が行わ
れてきている。動作機能記述ではハードウェアの構成を
意識せずに設計対象の動作仕様をプログラムと同様にア
ルゴリズミックに記述できる。
【0005】アルゴリズミックに記述された動作を論理
回路で実行可能にするためには、前記のように記述され
た動作を各クロック・サイクル毎に実行される動作に分
割する処理、すなわちステート分割の処理が必要とな
る。1ステートにおける動作は1クロック・サイクルで
実行され、異なるステート間における演算データの受け
渡しにはレジスタが用いられる。
【0006】この高位合成システムでは、動作機能記述
で表わされた設計対象の動作のステート分割の処理を行
い、ステート間で演算データの受け渡しがある場合、そ
の演算データに対応した動作機能記述中の演算対象とな
る変数をレジスタに割付ける。
【0007】従来の高位合成装置では、変数をレジスタ
に割付ける手法として、動作機能記述中の変数が複数の
ステートに渡っているかを示す変数のライフ・タイムを
調べ、ライフ・タイムが重ならない変数同士をエッジで
結び、クリーク分割アルゴリズムを適用する事によりレ
ジスタ割付けを行うグラフ理論を用いた手法がある。あ
るいは、変数をライフ・タイムの昇順にソートし、ソー
トされた順にライフ・タイムが重ならない変数を次々と
同一のレジスタに割付けていくレフト・エッジ・アルゴ
リズムを用いた手法がある。
【0008】前者の手法としては、例えば、C.J. Tseng
and D.P. Siewiorek,"Automated Synthesis of Data P
aths in Digital Systems,"IEEE Transactions on Comp
uter-Aided Design, vol. CAD-5, pp. 379-395,July 19
86.に挙げられる手法があり、後者の手法としては、例
えば、F.J. Kurdahi and A.C. Parker,"REAL: A Progra
m for Register Allocation,"in Proceeding of the 24
th ACM/IEEE Design Automation Conference,pp. 210-2
15, ACM/IEEE,June 1987.に挙げられる手法がある。
【0009】これらのような手法を用いて変数が割付け
られたレジスタを基にして、高位合成システムは論理回
路を合成する。その技法としては、例えば、P.G. Pauli
n, J.P. Knight, and E.F. Girczyc,"HAL: A Multi-Par
adigm Approach to Automatic Data Path Synthesis,"i
n Proceeding of the 23rd ACM/IEEE design Automatio
n Conference,pp. 263-270, ACM/IEEE, July 1986.に挙
げられる技法がある。
【0010】しかしながら、前述した手法では、各変数
の属する演算を考慮せずにその変数をレジスタに割付け
るため、演算器及びレジスタの入力端子に余分なマルチ
プレクサが必要になる等、冗長な論理回路が合成され
る。
【0011】例えば、図19のようなステート分割後の
データフローから論理回路を合成する場合を考える。図
19は、動作機能記述によって表わされた動作をステー
ト分割した後のデータの流れを表しており、この例では
ステート1〜3に分割されている。このデータフローか
らレフト・エッジ・アルゴリズムを用いてレジスタ割付
けを行うと図20のようになる。
【0012】この図から、合成される論理回路には4つ
のレジスタが必要であり、例えばステート1のレジスタ
X1とステート3のレジスタZ1が共用されていること
が分かる。このレジスタ割付けを基にして合成された論
理回路のブロック図を図21に示す。図21の論理回路
では、レジスタ11や演算機12の入力にマルチプレク
サ13が多数必要とされており、複雑な回路構成となっ
ている。
【0013】一方、従来の高位合成装置においては、ビ
ヘイビア記述中の各配列変数に対し、1対1に対応した
メモリを割当てて合成していた。例えば、図8のビヘイ
ビア記述中の各配列変数aa[128],bb[12
8]に対し、共にデータサイズ128のメモリaaとメ
モリbbを割当てていた。
【0014】これらの配列変数aa,bbに対し、1つ
のメモリを割当てるためには、aabb[256]など
と記述しなければならない。このように、並列動作は意
識しないレベルのビヘイビア記述で予め最適なメモリ構
成を考慮して、配列変数を用いた記述を行うことは非常
に困難である。
【0015】このため、種々のメモリ構成に応じた配列
変数を記述するには、その都度設計者がビヘイビア記述
中の配列変数に関する部分を書き直して、高位合成を実
行し、試行錯誤的に最良のものを選択しなければならな
い。
【0016】しかしながら、従来の方法では、ビヘイビ
ア記述を書き換えるための手間が大きいこと、ビヘイビ
ア記述自体を書き換えるためにビヘイビア記述中に誤り
が生じ易く、このためにビヘイビア記述のシミュレーシ
ョンによる検証を再度行う必要が生じる恐れがある。
【0017】また一方、ビヘイビア記述中には、複数の
サブルーチンコールやサブルーチンが含まれており、こ
れらにハードウェアブロックを割り当てる方法として、
同じサブルーチンコールに対してそれぞれ別のハードウ
ェアブロックを割り当てる方法がある。
【0018】しかしながら、この方法では、論理回路の
設計を行うと回路規模が大きくなってしまう。これは、
階層的に書かれた記述を平坦な構造にしてしまう為に生
じるもので、全ての同じサブルーチンコールでもそれぞ
れ別の物として取り扱っているからである。
【0019】例えば、実際は時間的に全く重複のない時
刻に演算している2つの同じサブルーチンに対しても、
それぞれ2つの同じハードウェアブロックを与えてい
る。このような性質を持つ複数のサブルーチンコールに
対しては、一つのハードウェアブロックだけを対応させ
るのが理想的である。
【0020】このため、同じサブルーチンコールに対し
て一つのハードウェアブロックを対応させるという方法
が考えられる。しかしながら、この方法では、演算時間
が重複した場合、並列動作が余り行えない回路構成とな
り、回路規模は小さくてすむのだが処理時間を満足させ
ることができない。
【0021】そこで、これらのサブルーチンコールとハ
ードウェアの対応を設計者が行うという方法が考えられ
る。すなわち、演算時間が重複しない同じサブルーチン
コールに対しては一つのハードウェアブロックを割り当
て、重複する同じサブルーチンコールに対してはそれぞ
れ別のハードウェアブロックを割り当てることを設計者
が行うものである。
【0022】しかしながら、サブルーチンを実行するハ
ードウェアブロックの演算時間は必ずしも一定でなく、
与えられたデータにより様々に変化することから調査を
行うだけでも大変な作業である。さらに、それらを制御
する回路部分の変更も必要となるので設計者の抱える負
担が膨大なものになってしまう。
【0023】
【発明が解決しようとする課題】このように、従来の高
位合成装置においては、レジスタに割付ける各変数の属
する演算を考慮していないために、演算器及びレジスタ
の入力端子に余分なマルチプレクサなどの制御回路が必
要になり、冗長な論理回路が合成されるという問題があ
った。
【0024】また、ビヘイビア記述中の配列変数に対し
て種々のメモリを割当てるには、ビヘイビア記述を書き
換えなければならず、手間や誤りが生ずるという問題が
あった。
【0025】さらに、従来の高位合成装置では、複数の
同じサブルーチンコールに対してそれぞれ別のハードウ
ェアブロックを割り当てる方法や、同じサブルーチンコ
ールに対しては1つのハードウェアブロックを割り当て
る方法、または設計者の介入により上記2つの方法を組
み合わせてハードウェアブロックを割り当てる方法があ
った。
【0026】しかしながら、これらの方法では、回路規
模が膨大な物になったり、処理時間を満足させることが
できなかったり、設計者の負担が大きくなるという問題
があった。
【0027】本発明は上記のような従来技術の欠点を除
去するもので、第1の発明の目的とするところは、合成
後に余分な制御回路が不要となり、構成が簡単な論理回
路を合成することができる高位合成装置を提供すること
にある。
【0028】また、第2の発明の目的とするところは、
記述を書き直さなくても、メモリ構成を変更した種々の
高位合成を容易に誤りなく行うことができ、高品質の高
位合成結果を得ることを可能とした高位合成装置を提供
することにある。
【0029】さらに、第3の発明の目的とするところ
は、サブルーチンが実行する演算時間の重複状態を調
べ、各サブルーチンコールに必要となるハードウェアブ
ロックを割り当てることにより、並列動作が可能で、小
規模な論理回路を合成することができる高位合成装置を
提供することにある。
【0030】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明の高位合成装置は、動作機能記述によっ
て表わされた論理回路の動作を、動作周期毎にステート
分割するステート分割手段と、このステート分割手段に
よってステート分割された前記動作機能記述中の演算対
象となる変数を解析し、各ステート毎に前記変数に対応
するレジスタを求める変数解析手段と、この変数解析手
段によって求められた各ステート毎のレジスタを、異な
るステート間で共用するようにレジスタ割付けを行うマ
ージ実行手段とから構成されている。
【0031】また、第2の発明の高位合成装置は、ビヘ
イビア記述中の配列変数に対するメモリの割当て方を示
すコマンドを入力するコマンド入力手段と、入力された
コマンドの割当て方を解析するメモリ割当てコマンド解
析手段と、解析された割当て方に応じて配列変数に対す
るメモリを割り当てるメモリ割当てコマンド処理手段
と、ビヘイビア記述からRTL(レジスタ転送レベル)
情報を生成するRTL情報生成手段とから構成されてい
る。
【0032】さらに、第3の発明の高位合成装置は、ビ
ヘイビア記述を構文解析し、記述中の複数のサブルーチ
ンコールの実行順序関係を求める構文解析手段と、求め
られた実行順序関係から、前記複数のサブルーチンコー
ルによるツリー状の階層構造を作成する呼び出しツリー
作成手段と、前記実行順序関係と階層構造に基づいて各
サブルーチンコールに対応するサブルーチンの演算時間
を計算する演算時間解析手段と、計算された各サブルー
チンの演算時間の重複状態を解析するライフタイム解析
手段と、解析された演算時間の重複状態から、サブルー
チンを実行するハードウェアブロックの必要な個数を導
き出し、各サブルーチンコールに対してハードウェアブ
ロックの割り当てを行うハードウェアブロック割り当て
手段とから構成されている。
【0033】
【作用】上記のような構成により、第1の発明は、ステ
ート分割手段によってステート分割された動作機能記述
を基にし、変数解析手段において各ステート毎に必要な
レジスタを求める。各変数の属する演算を考慮したマー
ジ規則を参照し、マージ実行手段においてレジスタの共
用化を実行する。そして、共用化されたレジスタを基に
し、論理回路を合成している。
【0034】また、第2の発明は、ビヘイビア記述中の
配列変数に対する合成回路のメモリ構成の割当て方を示
すコマンドを入力すると、メモリ割当てコマンド解析手
段がこれを解析する。メモリ割当てコマンド処理手段が
入力されたコマンドに応じて、配列変数に対するメモリ
を割り当て、RTL情報を生成して論理回路を合成して
いる。
【0035】さらに、第3の発明は、入力されたビヘイ
ビア記述からデータと制御の流れを解析しサブルーチン
の呼び出しツリーを作成する。また、各サブルーチンに
対してサブルーチン全体の演算時間を解析する。これは
前述の呼び出しツリーを利用してボトムアップ方式に行
われる。
【0036】得られたサブルーチンの演算時間解析結果
とその他の演算の演算時間解析結果よりサブルーチンの
ライフタイム(サブルーチンの実行開始時間と終了時
間)を解析する。この段階でライフタイムの重複状態を
判断し、どのサブルーチンを同じハードウェアブロック
とするかを決定する。
【0037】ビヘイビア記述中に条件ループなどが含ま
れている場合などはライフタイム解析の結果が不定の場
合が生じるが、この場合はライフタイムを変数として取
扱い、同じハードウェアブロックを利用する場合は、条
件ループによる処理が終了するまでサブルーチンの実行
を待つようにハードウェアを自動的に設計する。
【0038】
【実施例】以下、本発明の実施例を図面を参照して説明
する。
【0039】第1の発明 図1に、第1の発明の高位合成装置の一実施例の構成図
を示す。
【0040】動作機能記述入力部1は、動作機能記述を
ステート分割部2に入力する。
【0041】ステート分割部2は、動作機能記述入力部
1より入力された記述によって表わされる動作を、各ク
ロック・サイクル毎に実行される動作にステート分割す
る。変数解析部3は、ステート分割部2においてステー
ト分割された動作機能記述に基づき、ステート間で受け
渡しの必要な演算対象となる変数を解析し、各ステート
で必要とされるレジスタを求める。
【0042】レジスタ・リスト記憶部4は、変数解析部
3で求めたレジスタを記憶する。
【0043】マージ実行部5は、変数解析部3で求めた
レジスタに対し、マージ規則ライブラリ6に登録されて
いるマージ規則に基づいてマージを行う。
【0044】合成部7は、マージされたレジスタ割付け
の結果を用いて論理回路を合成する。
【0045】次に、図1で示した変数解析部3におけ
る、ステート分割後の各ステートで必要とされるレジス
タの求め方を説明する。
【0046】図2は、この変数解析部3による処理手順
を示すフローチャートである。
【0047】まず、最初のステート中の変数の解析を実
行する(ステップ101)。その結果、次のステートに
受け渡される変数を、変数名とステートの番号と変数の
属する演算の組としてレジスタ・リスト記憶部4に登録
する(ステップ102)。この操作を各ステートに渡り
繰り返す(ステップ102〜104)。
【0048】この処理を、図19で示したステート分割
後のデータフローを用いて説明する。
【0049】例えば、加算演算が行われるステート1に
おいて変数を解析することにより、変数x1,x4,y
1に対応するエッジがステート1とステート2の境界を
越えている。従って、これらの変数は次のステート2に
受け渡される必要があることがわかる。同様な解析を各
ステートに渡って実行する。
【0050】この結果得られた、各ステート毎に必要と
されるレジスタを図3に示す。同図は、例えば、ステー
ト1には変数x1,x2,x3,x4に対応するレジス
タ(図中、太線)が必要であることを示している。
【0051】次に、図1で示したマージ実行部5におけ
る、レジスタのマージ方法を説明する。マージのフロー
チャートを図4に示す。
【0052】マージの際には、マージ規則ライブラリ6
に登録さされたマージ規則を参照してマージが実行され
る。マージ規則を、規則適用の優先順に下記に示す。
【0053】マージ規則1.同種の演算の入力変数に対
応したレジスタをマージする。
【0054】マージ規則2.同種の演算の出力変数に対
応したレジスタをマージする。
【0055】マージ規則3.異種の演算の入力変数に対
応したレジスタをマージする。
【0056】マージ規則4.異種の演算の出力変数に対
応したレジスタをマージする。
【0057】マージ規則5.同種の演算の入力変数及び
出力変数に対応したレジスタをマージする。
【0058】マージ規則6.同一変数に対応したレジス
タをマージする。
【0059】以下、図19で示したデータフローのマー
ジ方法を、図4及びマージ規則を用いて説明する。
【0060】まず、マージ規則1を適用する事により、
1つの加算器で実行したい演算の入力変数x2に対応し
たレジスタx2はステート1に、x1はステート2に属
しているので、これら2つのレジスタx1,x2はマー
ジ可能である(ステップ201〜203)。この結果、
レジスタx1とx2がマージされる(ステップ20
4)。
【0061】同様にステート1に属するレジスタx3と
ステート2に属するレジスタy1がマージ規則1により
マージ可能であるため、マージされる(ステップ201
〜204)。
【0062】次に、マージ規則2を適用する前に、ステ
ート2に同一の変数y1が現われているので、レジスタ
x3とy1とのマージ操作に関与しない、乗算への入力
変数y1をレジスタ・リスト記憶部4から削除する。そ
して、出力変数y1とz1とに対応したレジスタをマー
ジする(ステップ205,206)。
【0063】さらに、マージ規則5,6を適用すること
により、図5に示すレジスタ割付けの結果が得られる。
図5から分かるように、ステート1で用いられるレジス
タx2とステート2で用いられるレジスタx1とが共用
化されている。他のレジスタも同様に共用化されてい
る。
【0064】このマージ結果を基にして論理回路を合成
部7で合成すると、図6のようになる。図21の従来の
論理回路と比べると、ファンアウト数が1、ファンイン
数が1、マルチプレクサ13の数が1減少している。
【0065】第2の発明 図7に、第2の発明による高位合成装置の構成を示す。
以下では、簡単のため、メモリはすべて単一ポート(異
なる番地のデータを同時には読み書きできない)とす
る。
【0066】入出力装置21から、ビヘイビア記述、メ
モリ割当てコマンドが入力されると、ビヘイビア記述解
析部22はビヘイビア記述を解析し、データフロー表現
に変換して設計情報記憶部28に格納する。
【0067】図8にビヘイビア記述の記述の一例を示
し、図9に図8のビヘイビア記述に対応したデータフロ
ー表現の例を示す。これらの図においては、データサイ
ズ128の配列変数をaa,bbとし、aaのi番目に
3を、bbのi番目に5を入力することを表わしてい
る。
【0068】次に、メモリ割当てコマンド解析部23
は、メモリ割当てコマンドを解析し、メモリ割当てコマ
ンド処理部24を起動する。メモリ割当てコマンド処理
部24は、メモリ割当てコマンド解析結果に従って設計
情報記憶部28に格納されたデータフロー表現を修正す
る。
【0069】図10に、メモリ割当てコマンド処理部2
4の処理フローを示す。
【0070】図8に示したビヘイビア記述に対し、例え
ば図11(a)に示すようなメモリ割当てコマンドが設
計者によって入力されると、メモリ割当てコマンド解析
部23は、コマンドの種類としてacat,変更前名1
としてaa,変更前名2としてbb,変更後名としてa
abb,変更後サイズとして256を解析し、メモリ割
当てコマンド処理部24を起動する。
【0071】メモリ割当てコマンド処理部24は、図1
0に示した処理フローに従い処理を進める。まず、変更
前名1 aa,変更前名2 bb,変更後名 aab
b,変更後サイズ 256を得る(ステップ301)。
コマンドの種類はacatであるから(ステップ30
2)、データフロー表現中のaaをaabbに置き換え
(ステップ303)、bbをアドレスに256/2=1
28を加算してaabbに置き換える(ステップ30
4)。この結果、図11(b)に示すデータフロー表現
に修正される。すなわち、前半にはaaのデータが、後
半にはbbのデータが設定される。
【0072】また、図12(a)に示すようなメモリ割
当てコマンドが入力された場合は、メモリ割当てコマン
ド解析部23は、コマンドの種類としてamerge,
変更前名1としてaa,変更前名2としてbb、変更後
名としてaabb,変更後サイズとして256を解析
し、メモリ割当てコマンド処理部24を起動する。
【0073】メモリ割当てコマンド処理部24は、変更
前名1 aa,変更前名2 bb,変更後名 aab
b,変更後サイズ 256を得てる(ステップ30
1)。コマンドの種類はamergeであるから(ステ
ップ302)、データフロー表現中のaaのアドレスを
1ビット左シフトした後、aabbに置き換える(ステ
ップ305)。さらに、bbのアドレスを1ビット左シ
フトした後に1を加算し、aabbに置き換える(ステ
ップ306)。これにより、図12(b)に示すデータ
フロー表現に修正される。この処理により、aa,bb
のデータが1つずつ交互に設定される。
【0074】なお、この第2の発明は、これら2つのコ
マンドに限らず、他のどのようなコマンドについても処
理可能なものである。
【0075】このように、メモリが割当てられた後、ス
ケジューリング処理部25は、設計情報記憶部28に格
納されたデータフロー表現を各状態(クロックサイク
ル)毎の動作に、「同一メモリの異なる番地のデータを
同時には読み書きできない。」という制約下で分割す
る。
【0076】アロケーション処理部26は、設計情報記
憶部28に格納されたデータフロー表現において、状態
をわたって保持する必要のある変数に対してなるべく少
ない数となるようにレジスタを割当て、演算オペレータ
に対してなるべく簡単なデータ転送路となるように演算
器を割当てる。
【0077】さらに、RTL情報生成部27が、この結
果をレジスタ転送レベルの言語に変換して、設計情報記
憶部28に格納するとともに、入出力装置21に出力す
る。以上のようにして、メモリ割当てコマンドに従って
配列変数に対するメモリ割当てが実現される。
【0078】なお、今回の実施例では、2つの配列変数
に対して1つのメモリを割当てる場合を示したが、この
発明はこれに限定されるものではない。例えば、データ
サイズの大きな1つの配列変数として定義されていたも
のを、複数の小さなデータサイズのメモリに分割して割
当てることもできる。
【0079】また、複数の配列変数がある場合、1部の
配列についてのみこの第2の発明を適応し、残りの配列
に関しては従来方法による種々のメモリ割当ての組み合
わせを繰り返し実行し、最良の結果となったものを自動
的に選択するようにしても良い。
【0080】第3の発明 図13は、第3の発明の高位合成装置の一実施例の構成
を示すブロック図である。
【0081】入力されたビヘイビア記述31は、構文解
析部32で解析された後にサブルーチンコールの実行順
序関係を表わす、接続データ33に変換される。この接
続データ33から呼び出しツリー作成部34がサブルー
チンの呼び出しツリーの作成を行う。
【0082】演算時間解析部35ではこの呼び出しツリ
ーを参考にボトムアップ式にサブルーチンの演算時間の
解析を行う。この際にサブルーチンの演算時間が不定の
場合が生じるがその場合は変数を割り当てて実行を続け
る。
【0083】次に、算出した演算時間を参照してサブル
ーチンライフタイム解析部36がサブルーチン毎のライ
フタイムの解析を行う。このライフタイムの解析結果を
基にハードウェアブロック割り当て部37が必要なハー
ドウェアブロックの個数、及びそれらハードウェアブロ
ックに割り当てられたサブルーチンコールの対応表、す
なわちハードウェア構成38を作成する。
【0084】図14は、入力となるビヘイビア記述の一
例である。このビヘイビア記述31を入力した構文解析
部32は接続データ33の作成を行う。作成された接続
データ33の例を図15に示した。
【0085】mainという関数の接続データ33を表した
ものが図15(a)である。この図ではmainという関数
の中で sub1, sub3というサブルーチンがそれぞれ呼
ばれていて、かつ両者の実行順序に制限が無いことを表
している。
【0086】一方、 sub1というサブルーチンの接続デ
ータ33を表したものが図15(b)である。これは s
ub1というサブルーチンの中で sub2, sub3というサ
ブルーチンがそれぞれ呼ばれていて、かつ両者の実行順
序は sub2の実行が最初に終了しなければいけないこと
を表している。
【0087】この接続データ33は呼び出しツリー作成
部34に入力され、呼び出しツリーの作成が行われる。
この例が図16である。呼び出しツリーには実行の順序
関係は表されておらず、サブルーチンの階層構造のみが
表されている。本例ではmainという関数の中で sub1,
sub3のサブルーチンが呼ばれ sub1のサブルーチンの
中で sub2, sub3のサブルーチンが呼ばれていること
を表している。
【0088】これらの呼び出しツリーと接続データ33
を入力として演算時間解析部35が動作し、各サブルー
チンの演算時間が計算される。この計算は呼び出しツリ
ーをボトムアップ式にたどり実行される。例によると、
まず sub2の演算時間が計算される。 sub2ではサブル
ーチンの呼び出しを行っていないので接続データ33よ
り演算時間が計算できる。
【0089】同様にして sub3の演算時間が計算され
る。ここで sub1の中で使われているサブルーチンの演
算時間が解ったことになるので、 sub1の演算時間が計
算できるようになる。
【0090】このようにして計算した結果を用いてサブ
ルーチンライフタイ解析部36がそれぞれのライフタイ
ムの解析を行う。行った結果が図17である。参考のた
めに上部に呼び出しツリーを書き入れてある。例えばこ
こで sub1のライフタイムはt2からt8ということに
なる。
【0091】最後にこの結果からハードウェアブロック
割り当て部37がそれぞれのサブルーチンに対して必要
なハードウェアブロックの個数を導き出して割り当て
る。本例では2つの sub3のサブルーチンコールが使わ
れているが両者のライフタイムの重複が無いことが解
る。そこでこの2つのサブルーチンコールは同じハード
ウェアブロックで実行可能と言う結論を出して図18の
様なハードウェア構成を取るように論理回路を構成す
る。
【0092】仮に、図17において、2つの sub3の演
算時間が重複していれば、 sub3に対するハードウェア
ブロックを2つ割り当てることになる。
【0093】なお、本例ではサブルーチンのライフタイ
ムは決定できかつ重複の無い場合であったが、記述によ
っては演算時間の解析が不可能な物もある。例えば条件
ループなどが例として挙げられる。これは条件が満たさ
れるまで何回ループするかを調べることが静的には困難
なためである。
【0094】このような場合には、ライフタイムとして
変数を割り当てておく。ハードウェアブロック割り当て
部37ではこの変数時間を考慮して重複の起こりにくい
サブルーチンを対象としてハードウェアブロックを割り
当てていく。しかし、完全に重複しないという保証がな
いため、条件ループによる処理が終了したか否かをチェ
ックするコントロール回路を新たに付加してこれを回避
する。
【0095】つまり、後から実行されるサブルーチンに
割り当てられるハードウェアブロックに、前で実行され
ている条件ループによる処理が終わるまで待機させるコ
ントロール回路を付加する。これによって、同時に同じ
ハードウェアブロックの使用を回避する様に回路を構成
することができる。
【0096】
【発明の効果】以上説明したように、第1の発明の高位
合成装置によれば、ステート分割された動作機能記述に
おいて各ステートで必要とされるレジスタを求め、変数
の属する演算を考慮したマージ規則に基づいてレジスタ
のマージを行い、論理回路を合成している。これによ
り、演算器及びレジスタの入力端子に余分なマルチプレ
クサがなくなり、構成が簡単な論理回路を得ることがで
きる。
【0097】また、第2の発明の高位合成装置によれ
ば、ビヘイビア記述を書き換えることなく、メモリ構成
を変更した種々の高位合成を容易に行うことができ、こ
の中から最も良いものを選択することにより、高品質の
高位合成結果を得ることができる。
【0098】さらに、第3の発明の高位合成装置によれ
ば、サブルーチンの演算時間の重複を解析し、ハードウ
ェアブロックを割り当てているので、並列動作が可能
で、規模が小さい論理回路を合成でき、かつ設計者の負
担を軽減することができる。
【図面の簡単な説明】
【図1】第1の発明による高位合成装置の一実施例の構
成図である。
【図2】図1で示した変数解析部による処理手順を示す
フローチャートである。
【図3】変数解析部によって求められたレジスタとステ
ートとの関係を示す図である。
【図4】図1で示したマージ実行部によるマージの処理
手順を示すフローチャートである。
【図5】マージ実行部によって最終的に得られたレジス
タ割付けの結果を示す図である。
【図6】第1の発明によって合成された論理回路のブロ
ック図である。
【図7】第2の発明による高位合成装置の一実施例の構
成を示すブロック図である。
【図8】第2の発明の実施例で用いたビヘイビア記述の
一例を示す記述図である。
【図9】図8で示したビヘイビア記述に対応したデータ
フロー表現である。
【図10】図7で示したメモリ割当てコマンド処理部の
処理を示すフローチャートである。
【図11】第2の発明の実施例で用いたメモリ割当てコ
マンドとメモリ割当て処理結果を示す図である。
【図12】図11と異なるメモリ割当てコマンドとメモ
リ割当て処理結果を示す図である。
【図13】第3の発明による高位合成装置の一実施例の
構成を示すブロック図である。
【図14】第3の発明の実施例で用いたビヘイビア記述
の一例である。
【図15】図14のビヘイビア記述から作成された接続
データである。
【図16】図14のビヘイビア記述から作成された呼び
出しツリーである。
【図17】図15の接続データと図16の呼び出しツリ
ーから解析されたサブルーチンライフタイムである。
【図18】図17のサブルーチンライフタイムから割り
当てられたハードウェア構成図である。
【図19】第1の発明で用いた、ステート分割後のデー
タフローの一例を示すデータフロー図である。
【図20】第1の発明に対する、従来のレジスタ割付け
方法による割付け結果を示す図である。
【図21】第1の発明に対する、従来の高位合成装置に
よって合成された論理回路のブロック図である。
【符号の説明】
1 動作機能記述入力部 2 ステート分割部 3 変数解析部 4 レジスタ・リスト記憶部 5 マージ実行部 6 マージ規則ライブリ 7 合成部 21 入出力装置 22 ビヘイビア記述解析部 23 メモリ割当てコマンド解析部 24 メモリ割当てコマンド処理部 25 スケジューリング処理部 26 アロケーション処理部 27 RTL情報生成部 28 設計情報記憶部 31 ビヘイビア記述 32 構文解析部 33 接続データ 34 呼び出しツリー作成部 35 演算時間解析部 36 サブルーチンライフタイム解析部 37 ハードウェアブロック割り当て部 38 ハードウェア構成

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 動作機能記述によって表わされた論理回
    路の動作を、動作周期毎にステート分割するステート分
    割手段と、 このステート分割手段によってステート分割された前記
    動作機能記述中の演算対象となる変数を解析し、各ステ
    ート毎に前記変数に対応するレジスタを求める変数解析
    手段と、 この変数解析手段によって求められた各ステート毎のレ
    ジスタを、異なるステート間で共用するようにレジスタ
    割付けを行うマージ実行手段とを有することを特徴とす
    る高位合成装置。
  2. 【請求項2】 ビヘイビア記述中の配列変数に対するメ
    モリの割当て方を示すコマンドを入力するコマンド入力
    手段と、 入力されたコマンドの割当て方を解析するメモリ割当て
    コマンド解析手段と、 解析された割当て方に応じて配列変数に対するメモリを
    割り当てるメモリ割当てコマンド処理手段と、 ビヘイビア記述からレジスタ転送レベル情報を生成する
    レジスタ転送レベル情報生成手段とを有することを特徴
    とする高位合成装置。
  3. 【請求項3】 ビヘイビア記述を構文解析し、記述中の
    複数のサブルーチンコールの実行順序関係を求める構文
    解析手段と、 求められた実行順序関係から、前記複数のサブルーチン
    コールによるツリー状の階層構造を作成する呼び出しツ
    リー作成手段と、 前記実行順序関係と階層構造に基づいて各サブルーチン
    コールに対応するサブルーチンの演算時間を計算する演
    算時間解析手段と、 計算された各サブルーチンの演算時間の重複状態を解析
    するライフタイム解析手段と、 解析された演算時間の重複状態から、サブルーチンを実
    行するハードウェアブロックの必要な個数を導き出し、
    各サブルーチンコールに対してハードウェアブロックの
    割り当てを行うハードウェアブロック割り当て手段とを
    有することを特徴とする高位合成装置。
JP4071694A 1991-08-13 1992-03-27 高位合成装置 Pending JPH05101141A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4071694A JPH05101141A (ja) 1991-08-13 1992-03-27 高位合成装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP20282991 1991-08-13
JP3-202829 1991-08-13
JP4071694A JPH05101141A (ja) 1991-08-13 1992-03-27 高位合成装置

Publications (1)

Publication Number Publication Date
JPH05101141A true JPH05101141A (ja) 1993-04-23

Family

ID=26412808

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4071694A Pending JPH05101141A (ja) 1991-08-13 1992-03-27 高位合成装置

Country Status (1)

Country Link
JP (1) JPH05101141A (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6505340B2 (en) 2000-01-28 2003-01-07 Sharp Kabushiki Kaisha Circuit synthesis method
US6532584B1 (en) 2000-01-28 2003-03-11 Sharp Kabushiki Kaisha Circuit synthesis method
US6704914B2 (en) 2001-07-16 2004-03-09 Sharp Kabushiki Kaisha High level synthesis method, thread generated using the same, and method for generating circuit including such threads
US7181714B2 (en) 2003-12-24 2007-02-20 Kabushiki Kaisha Toshiba Scheduler, method and program for scheduling, and apparatus for high-level synthesis
US7194724B2 (en) 2003-12-05 2007-03-20 Matsushita Electric Industrial Co., Ltd. High level synthesis method and high level synthesis apparatus
JP2009093682A (ja) * 2002-03-08 2009-04-30 Mentor Graphics Corp 動作合成ツールにおける配列変換
JP2009239344A (ja) * 2008-03-25 2009-10-15 Nec Corp 記述処理装置、記述処理方法およびプログラム
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
JP2010238054A (ja) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム
US7831938B2 (en) 2000-12-21 2010-11-09 Mentor Graphics Corporation Interactive interface resource allocation in a behavioral synthesis tool
US7992112B2 (en) 2006-11-07 2011-08-02 Sharp Kabushiki Kaisha Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532584B1 (en) 2000-01-28 2003-03-11 Sharp Kabushiki Kaisha Circuit synthesis method
US6505340B2 (en) 2000-01-28 2003-01-07 Sharp Kabushiki Kaisha Circuit synthesis method
US7831938B2 (en) 2000-12-21 2010-11-09 Mentor Graphics Corporation Interactive interface resource allocation in a behavioral synthesis tool
US6704914B2 (en) 2001-07-16 2004-03-09 Sharp Kabushiki Kaisha High level synthesis method, thread generated using the same, and method for generating circuit including such threads
JP2009093682A (ja) * 2002-03-08 2009-04-30 Mentor Graphics Corp 動作合成ツールにおける配列変換
JP2010118081A (ja) * 2002-03-08 2010-05-27 Mentor Graphics Corp 動作合成ツールにおける配列変換
US7194724B2 (en) 2003-12-05 2007-03-20 Matsushita Electric Industrial Co., Ltd. High level synthesis method and high level synthesis apparatus
US7181714B2 (en) 2003-12-24 2007-02-20 Kabushiki Kaisha Toshiba Scheduler, method and program for scheduling, and apparatus for high-level synthesis
US8726204B2 (en) 2006-02-09 2014-05-13 Mentor Graphics Corporation Managing and controlling the use of hardware resources on integrated circuits
US7735050B2 (en) 2006-02-09 2010-06-08 Henry Yu Managing and controlling the use of hardware resources on integrated circuits
US9747398B2 (en) 2006-02-09 2017-08-29 Mentor Graphics Corporation Managing and controlling the use of hardware resources on integrated circuits
US7992112B2 (en) 2006-11-07 2011-08-02 Sharp Kabushiki Kaisha Hardware verification programming description generation apparatus, high-level synthesis apparatus, hardware verification programming description generation method, hardware verification program generation method, control program and computer-readable recording medium
JP2009239344A (ja) * 2008-03-25 2009-10-15 Nec Corp 記述処理装置、記述処理方法およびプログラム
JP2010238054A (ja) * 2009-03-31 2010-10-21 Mitsubishi Electric Corp 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム

Similar Documents

Publication Publication Date Title
US12430108B2 (en) Multistage compiler architecture
US7143388B1 (en) Method of transforming software language constructs to functional hardware equivalents
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
Herrera et al. Systematic embedded software generation from SystemC
IL106139A (en) Using a state-of-the-art automaton to validate systems subject to delay constraints
WO2008033344A2 (en) Hardware definition language generation for frame-based processing
JPH0760324B2 (ja) シーケンシャル回路及びその生成方法、及びコントローラ及び有限状態マシン
US5912819A (en) Method for designing an architectural system
JPH11513512A (ja) ディジタル信号プロセッサの製造方法
JP2011096107A (ja) 並列化方法、システム、及びプログラム
JP2001109788A (ja) シミュレーションモデル、その生成方法、シミュレーション方法及びその記録媒体
JP5479942B2 (ja) 並列化方法、システム、及びプログラム
US7318213B2 (en) Apparatus, method and program for behavioral synthesis including loop processing
JP2005063136A (ja) 半導体集積回路の設計装置、設計方法、及び設計プログラム
US10241764B2 (en) Automatically transform pass-by-value semantics into pass-by-reference implementation
JP2024062940A (ja) 高位合成に対する等価性検証を行う装置、プログラム、および方法
JP2002269162A (ja) 動作合成方法
Barbacci Instruction set processor specifications for simulation, evaluation, and synthesis
JP4293562B2 (ja) ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
US20120226890A1 (en) Accelerator and data processing method
Herbordt et al. A system for evaluating performance and cost of SIMD array designs
JPH06231203A (ja) シミュレーションモデルのためのコンパイルメカニズム
JP7385536B2 (ja) ソフトウェア開発支援装置及びソフトウェア開発支援方法
JP5626724B2 (ja) アクセラレータ及びデータ処理方法
CN113867943B (zh) 一种基于嵌入式系统的雷达软件内存分配方法