JPH0844773A - 自動高位合成方法 - Google Patents

自動高位合成方法

Info

Publication number
JPH0844773A
JPH0844773A JP6174368A JP17436894A JPH0844773A JP H0844773 A JPH0844773 A JP H0844773A JP 6174368 A JP6174368 A JP 6174368A JP 17436894 A JP17436894 A JP 17436894A JP H0844773 A JPH0844773 A JP H0844773A
Authority
JP
Japan
Prior art keywords
loop
synthesis method
pipeline
graph
arithmetic 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
JP6174368A
Other languages
English (en)
Inventor
Motoki Higashida
基樹 東田
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP6174368A priority Critical patent/JPH0844773A/ja
Publication of JPH0844773A publication Critical patent/JPH0844773A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 パイプライン構造を有する高性能なLSIの
アーキテクチャを自動合成する高位合成方法を得ること
を目的とする。 【構成】 ループ記述のうち、そのループでの演算によ
って次のループに影響を与える出力変数を特定し(工程
S12,S13)、特定された出力変数に関わる演算を
特定する(工程S14,S15)。そして、ループ間の
データ依存関係によって、2つのグループに分類した後
(工程S16,S17)、新たに、コントロールフロー
グラフとデータ依存グラフとを再度生成する。 【効果】 新たに生成されたコントロールフローグラフ
とデータ依存グラフを用いることによって、パイプライ
ン構造を持ったアーキテクチャの合成が可能になる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、LSIのアーキテク
チャ設計に用いられる高位合成方法に関し、特にループ
を含んだ記述から、パイプライン構造をもった高性能な
LSIのアーキテクチャを自動合成する高位合成方法に
関するものである。
【0002】
【従来の技術】図16は、従来の高位合成方法の手順を
示すフローチャートである。数1に示す1つのFORル
ープを含んだ入力記述を例にして、図16に沿って従来
の高位合成方法を説明する。
【0003】
【数1】
【0004】はじめに、工程S31において、準備され
た動作レベルのハードウェア記述言語による入力記述を
アセンブラコードのようなプリミティブな演算の系列へ
と変換する。続いて、工程S32において、その系列か
ら、コントロールフローグラフとデータ依存グラフを生
成する。ソフトウェアでは、通常、先に記述されたステ
ートメントから逐次実行される。しかし、ハードウェア
による実行では、これらのステートメントを可能なら
ば、並列に実行することをコンピュータが考慮する。コ
ントロールフローグラフとデータ依存グラフは、この並
列実行の可能性を表現している。
【0005】図17は、工程S32において生成され
た、数1の記述に対応するコントロールフローグラフと
データ依存グラフである。図17において、1は数1の
ループ記述に対応するループ変数の初期化(i=0)を
行うブロック、2は数1のループ記述に対応する脱出条
件の比較(i<N)を行うブロック、3は数1のループ
の内部動作及びカウンタのインクリメント(i=i+
1)を行うブロックである。このように数1のループ記
述は、3つのブロック1〜3に分割できる。
【0006】数1に示したFORループに対応した処理
を実行するためには、ブロック1を始めに実行し、続い
てブロック2、ブロック3を交互に実行する必要があ
る。この実行順を破線のコントロールフローグラフが表
現している。一方、各ブロックの内部動作については、
変数の依存関係が各演算の実行順序に制約を与える。こ
の制約を表したものが、データ依存グラフである。例え
ば、output(Adr,Res)という演算がノードE6で行な
われる為には、2つの変数Adr,Resの値が必要である。
この時、変数Adrを求めるための演算(Adr=i+base)
を行う加算演算のノードE3と、変数Resを求めるため
の演算(Res=Date*Coef)を行う乗算演算のノードE5
から、実線の枝がひかれる。枝の存在は、それらの演算
にデータ依存関係があることを意味し、それらを並列
(同時)に動作させることはできない。
【0007】一方、ノードE2,E3の加算演算(i=i
+1,Adr=i+base)は、互いに依存関係がないので、
並列に実行可能である。高位合成方法では、はじめに、
入力記述をこのようなコントロールフローグラフとデー
タ依存グラフへ表現し直し、以降の高位合成の処理は、
これらのグラフを基にして進める。以後、コントロール
フローグラフとデータ依存グラフをCDGと呼ぶ。
【0008】続いて、工程S35において、CDGに基
づいてリソースバインディング、スケジューリング、リ
ソース接続、制御論理の生成が行なわれる。リソースバ
インディングでは、データ依存グラフ上の各ノード(演
算)を実行する演算器(リソース)を決定する。スケジ
ューリングでは、CDGにより規制された演算の実行順
の範囲内で、必要な制御ステップ数やレジスタ数や接続
の複雑度等を考慮して、演算器を動作させるべき制御ス
テップを決定する。リソース接続では、必要に応じて、
セレクタやレジスタを挿入しながら、リソース間の接続
を行なう。制御論理の生成では、スケジューリング結果
を状態遷移として表現するとともに、適当な状態(制御
ステップ)で、演算器やレジスタ、セレクタに制御信号
を出力するような制御論理を生成する。
【0009】
【表1】
【0010】表1に、リソースバインディングの一例を
示す。ここでは、各ノードに、1つの異なった演算器を
割り付けた。例えば、ノードE1にはデータの大小を比
較する演算を行う演算器LSSを割り付けた。
【0011】
【表2】
【0012】また、表1のリソースバインディングに対
する、スケジューリングの一例を表2に示す。このスケ
ジューリングでは、各演算器の遅延時間は1クロック周
期以内であると仮定している。図18は、このようなリ
ソースバインディングとスケジューリングに対してリソ
ース接続を行なった結果得られたデータパス構造を示す
ブロック図である。
【0013】
【表3】
【0014】また、表3が、制御論理生成の結果であ
る。図18は、LSIのデータパス構造を、表3はLS
Iを制御するための状態遷移を表現している。図18、
及び表3により、数1の入力記述を実現するLSIのア
ーキテクチャが完成している。以上の処理で、LSIの
アーキテクチャの合成ができる。
【0015】最後に、工程S36において、合成された
アーキテクチャを論理合成ツールに直接入力可能なレジ
スタ・トランスファ・レベル(RTL)のハードウェア
記述言語による記述として出力して、高位合成が終了す
る。
【0016】
【発明が解決しようとする課題】以上のように、従来の
高位合成方法で合成された図18及び表3のアーキテク
チャでは、数1の入力記述のループがN回まわるにも関
わらず、1回のループを5ステップで実行し、全動作が
(5×N+1)ステップで終了する。従来の高位合成方
法では、これ以上、高性能なアーキテクチャ(5×Nス
テップ以下のステップ数で処理できるアーキテクチャ)
を合成することはできないという問題点があった。
【0017】しかし、数1の動作記述を実現する、より
高性能なアーキテクチャは存在する。図19に、動作終
了までの、図18のデータパス構造の各演算器の動作状
況を示す。図19において、92で示した列はステップ
を表しており、93で示した行は演算器の名称を表して
いる。これを見ると分かるように、各演算器は、5ステ
ップに1度しか動作せず、残りのステップでは動作して
いないことが分かる。例えば、演算器LSSは、ステッ
プ0でi=0の処理をし、ステップ5でi=1の処理を
し、ステップ10でi=2の処理をするなど、5ステッ
プ毎に処理が行っている。この空きをなくして異なった
ループの動作をオーバラップさせて、パイプライン状に
実行させることにより、全動作をN+4ステップで実行
できるアーキテクチャが存在する。このようなアーキテ
クチャをパイプラインアーキテクチャと呼ぶ。
【0018】従来の高位合成方法では、ループ動作は、
図17のようなCDGに変換される。このCDGは、ル
ープの内部動作の終了を待ってから、次のループの実行
に入る必要があることを示している。
【0019】しかし、図17のようなCDGに基づいた
従来の高位合成方法では、ひとつのループの内部動作の
終了を待たずに、次のループの内部動作を実行するよう
なパイプラインアーキテクチャを合成することはできな
い。
【0020】但し、従来から行われている他の高位合成
方法によれば、入力記述からループをなくすことによ
り、パイプラインアーキテクチャを合成することができ
る。そして、このような高位合成方法が、“Proceeding
s of IEEE ISCAS 87”(pp. 382-385 )においてループ
ワインディング法として提案されている。この高位合成
方法は、ループ回数Nが固定(定数)の場合に適用可能
である。その手法は、ループの内部動作及びカウンタの
インクリメントの動作をN回コピーし(ループの展
開)、数2のようなループのない記述に変換し、この記
述に対して、従来の高位合成を行なう手法である。
【0021】
【数2】
【0022】数2の記述に対応するCDGは、図20に
示したCDGである。数2の記述は、条件判断のない演
算のみの記述であり、コントロールフローグラフは不要
となる。図20のデータ依存グラフに基づけば、従来の
高位合成方法によっても、パイプライン状の実行を行な
うスケジューリングが可能となる。しかし、コピーを行
うことでループを展開しなければならないため、ループ
回数が定数である場合以外適用できない。
【0023】このように、従来の高位合成方法では、任
意の回数繰り返すループを含んだ入力記述から高性能な
パイプラインアーキテクチャを合成することができな
い。そのため、非パイプラインアーキテクチャを合成す
るか、人手でパイプラインアーキテクチャを用いたRT
L記述を作成しなければならない。しかし、前者では高
性能化が達成できず、後者では設計期間の長期化、設計
者の負担の増大などの問題が生ずる。
【0024】この発明は上記のような問題を解決するた
めになされたもので、任意の回数繰り返すループを含ん
だ入力記述から、高性能なパイプライン型のデータパス
構成を有するアーキテクチャ及びその制御論理を自動合
成することを目的とする。
【0025】
【課題を解決するための手段】第1の発明に係る自動高
位合成方法は、ループ記述に対応したコントロールフロ
ーグラフ及びデータ依存グラフを準備する工程と、計算
機を用いて、自動的に、前記ループ記述に対応したコン
トロールフローグラフ及び前記データ依存グラフを、前
のループの動作完了を待たずに、次のループの動作が実
行可能な形態を示す新たなコントロールフローグラフ及
びデータ依存グラフへと変形する変形工程とを備えて構
成される。
【0026】第2の発明に係る自動高位合成方法は、第
1の発明の自動高位合成方法において、前記変形工程
は、前記ループ記述の内部動作を表す前記データ依存グ
ラフの入力変数を要素とする第1の集合と、前記データ
依存グラフの出力変数を要素とする第2の集合とを生成
する工程と、前記第1の集合と前記第2の集合との積集
合を生成する工程と、前記積集合に属する出力変数を出
力するノードから、前記データ依存グラフを入力側へト
レースして、前記出力変数を出力するために必要な演算
を行う第1のノードとそれ以外の演算を行う第2のノー
ドとに分離抽出する工程と、前記新たなデータ依存グラ
フとして、前記第1のノードからなる第1のデータ依存
グラフと前記第2のノードからなる第2のデータ依存グ
ラフとを生成するとともに、前記新たなコントロールフ
ローグラフとして、前記第1及び第2のデータ依存グラ
フの実行手順を規定するコントロールフローグラフを生
成する工程とを含むことを特徴とする。
【0027】第3の発明に係る自動高位合成方法は、第
1または第2の発明の自動高位合成方法において、前記
計算機に準備した演算器のデータの中から、前記新たな
データ依存グラフ中の全ての前記ノードにそれぞれ一対
一に対応する演算器のデータを関連づけるバインディン
グ工程と、前記計算機において、演算器が空き次第、次
のループのデータを投入することにより、ループ動作を
パイプライン状に実行するための前記演算器の制御論理
及びデータパス構造を自動生成する生成工程とを備えて
構成される。
【0028】第4の発明に係る自動高位合成方法は、第
3の発明の自動高位合成方法において、前記生成工程
は、前記ループの脱出条件を判定するノードを第1のス
テップに割り付ける第1のスケジューリング工程と、前
記第1のノードに対応する前記演算器について、前記第
1のデータ依存グラフの制約に基づいて、第2のステッ
プ以降に順に割り付け、制御ステップの決定を行う第2
のスケジューリング工程と、前記第2のノードに対応す
る前記演算器について、前記第2のデータ依存グラフの
制約に基づいて、制御ステップの決定を行う第3のスケ
ジューリング工程と、接続すべき前記演算器の出力と入
力の前記制御ステップが異なっているときには、その差
異段数と等しい数のパイプラインレジスタを挿入した後
に、差異段数がないときにはそのまま通常のリソース接
続を行うリソース接続工程とを備えて構成される。
【0029】第5の発明に係る自動高位合成方法は、第
3または第4の発明の自動高位合成方法において、前記
演算器の遅延値が1クロック周期以上の場合に、前記演
算器をラッチで分離されたパイプライン演算器としてモ
デル化する工程を備えて構成される。
【0030】第6の発明に係る自動高位合成方法は、第
3乃至第5の発明の自動高位合成方法において、前記生
成工程は、遅延値が1クロック周期以上の前記演算器に
対応して一つの前記ループの処理を完了するために必要
な工程数であるパイプラインピッチを増やす工程を含む
ことを特徴とする。
【0031】第7の発明に係る自動高位合成方法は、第
3乃至第6の発明の自動高位合成方法のいずれかにおい
て、前記生成工程は、一つの前記ループの処理を完了す
るために必要な工程数であるパイプラインピッチを増や
すとともに複数の前記ノードにおいて一部の演算器を共
有させる工程を含むことを特徴とする。
【0032】第8の発明に係る自動高位合成方法は、第
3乃至第7の発明の自動高位合成方法のいずれかにおい
て、前記新たなコントロールフローグラフ及びデータ依
存グラフによって表される回路の一部のパイプラインレ
ジスタの占有面積と前記パイプラインレジスタによって
与えられる値を出力する所定の演算を行う回路の占有面
積とを比較する比較工程と、前記比較工程によって、前
記所定の演算を行う回路を用いる方が回路面積を小さく
できると判断された場合に、前記パイプラインレジスタ
を前記所定の演算を行う回路に置換する置換工程とを備
えて構成される。
【0033】第9の発明に係る自動高位合成方法は、第
1乃至第8の発明の自動高位合成方法のいずれかにおい
て、前記ループ記述に対応したコントロールフローグラ
フ及びデータ依存グラフを準備する工程は、前記コント
ロールフローグラフ及びデータ依存グラフで表すべき回
路を表現した動作レベルのハードウェア記述言語による
記述を入力する工程を含み、前記変形工程で変形された
前記新たなコントロールフローグラフ及びデータ依存グ
ラフを表現した、論理合成ツールが直接処理可能なレジ
スタトランスファレベルのハードウェア記述言語による
記述を出力する工程を備えて構成される。
【0034】第10の発明に係る自動高位合成方法は、
第9の発明の自動高位合成方法において、複数の演算に
よって構成される一つの関数を表す新たな演算器を追加
登録する工程と、前記新たな演算器を他の前記演算器と
同様に処理するために、前記動作レベルのハードウェア
記述言語で特殊なコメントを挿入する工程とを備えて構
成される。
【0035】第11の発明に係る自動高位合成方法は、
第9の発明の自動高位合成方法において、前記ループ記
述で表現されたループのうち複数回分のループを、1回
分のループとして表現するループ記述に自動展開する工
程を備えて構成される。
【0036】
【作用】第1の発明の自動高位合成方法におけるループ
記述を特定する工程によって、ループ記述に対応するコ
ントロールフローグラフ及びデータ依存グラフを準備す
る。そして、変形工程において、ループ記述に対応する
コントロールフローグラフ及びデータ依存グラフを新た
なコントロールフローグラフ及びデータ依存グラフへと
変形する。変形工程で得られた新たなコントロールフロ
ーグラフ及びデータ依存グラフは、前のループの動作完
了を待たずに、次のループの動作が実行可能な形態を示
す。
【0037】第2の発明の自動高位合成方法における入
出力変数をそれぞれ構成要素とする第1及び第2の集合
を生成する工程と、それらの積集合を生成する工程とに
よって、前のループの演算結果を次のループの演算結果
に反映するための変数を特定することができる。そし
て、積集合に属する出力変数を出力するノードから、デ
ータ依存グラフを入力側へトレースして、出力変数を出
力するために必要な演算を行う第1のノードとそれ以外
の演算を行う第2のノードとに分離抽出する工程と、新
たなデータ依存グラフとして、第1のノードからなる第
1のデータ依存グラフと第2のノードからなる第2のデ
ータ依存グラフとを生成するとともに、新たなコントロ
ールフローグラフとして、第1及び第2のデータ依存グ
ラフの実行手順を規定するコントロールフローグラフを
生成する工程とによって、パイプライン状に演算を実行
可能な第2のデータ依存グラフを生成することができ
る。
【0038】第3の発明の自動高位合成方法におけるバ
インディング工程によって新たなデータ依存グラフ中の
全てのノードにそれぞれ一対一に対応する演算器のデー
タを関連づけることができる。そうすることによって、
生成工程において、計算機において、演算器が空き次
第、次のループのデータを投入することにより、ループ
動作をパイプライン状に実行するための演算器の制御論
理及びデータパス構造を容易に自動生成することができ
る。
【0039】第4の発明の自動高位合成方法における第
1ないし第3のスケジューリング工程によって、演算器
が空き次第、次のループのデータを投入することによ
り、ループ動作をパイプライン状に実行するための演算
器のスケジューリングができ、リソース接続工程によっ
て、接続すべき演算器の出力と入力の制御ステップが異
なっているときに、その差異段数と等しい数のパイプラ
インレジスタを挿入するとともにリソース接続を行うこ
とでパイプライン状に実行したときにデータが消失しな
いようにパイプラインレジスタを挿入することができ
る。
【0040】第5の発明の自動高位合成方法におけるモ
デル化する工程で、演算器の遅延値が1クロック周期以
上の場合に、演算器をラッチで分離されたパイプライン
演算器としてモデル化され、そのモデル化された演算器
のラッチで分離された部分を一つの演算器と同様に扱う
ことによって、容易に、ループ動作をパイプライン状に
実行するための演算器の制御論理及びデータパス構造を
容易に自動生成することができる。
【0041】第6の発明の自動高位合成方法における生
成工程は、一つのループの処理を完了するために必要な
工程数であるパイプラインピッチを増やすことによっ
て、遅延値が1クロック周期以上の演算器に対して増や
したパイプラインピッチを割り当てることができ、遅延
値が1クロック周期以上の演算器を用いて、リソースが
空き次第、次のループのデータを投入することにより、
ループ動作をパイプライン状に実行するための演算器の
制御論理及びデータパス構造を容易に自動生成すること
ができる。
【0042】第7の発明の自動高位合成方法における複
数のノードにおいて一部の演算器を共有させる工程は、
一つのループの処理を完了するために必要な工程数であ
るパイプラインピッチを増やすことで、リソースが空き
次第、次のループのデータを投入することにより、ルー
プ動作をパイプライン状に実行するための演算器の制御
論理及びデータパス構造を容易に自動生成することがで
きる。
【0043】第8の発明の自動高位合成方法における比
較工程によれば、新たなコントロールフローグラフ及び
データ依存グラフによって表される回路の一部のパイプ
ラインレジスタの占有面積とパイプラインレジスタによ
って与えられる値を出力する所定の演算を行う回路の占
有面積とを比較して、占有面積の小さい方がどちらかを
判断することができる。そして、置換工程において、比
較工程により所定の演算を行う回路を用いる方が回路面
積を小さくできると判断された場合に、パイプラインレ
ジスタを所定の演算を行う回路に置換することで、占有
面積をより小さくすることができる。
【0044】第9の発明の自動高位合成方法におけるコ
ントロールフローグラフ及びデータ依存グラフで表すべ
き回路を表現した動作レベルのハードウェア記述言語に
よる記述を入力する工程で、動作レベルのハードウェア
記述言語で記述したものを入力すると、レジスタトラン
スファレベルのハードウェア記述言語による記述を出力
する工程で、前記変形工程で変形された前記新たなコン
トロールフローグラフ及びデータ依存グラフを表現し
た、論理合成ツールが直接処理可能なレジスタトランス
ファレベルのハードウェア記述言語による記述を出力す
ることができ、そのため、入力が容易になる。
【0045】第10の発明の自動高位合成方法における
新たな演算器を追加登録する工程と特殊なコメントを挿
入する工程とにより、複数の演算で構成される一つの関
数を表す新たな演算器を追加登録し、動作レベルのハー
ドウェア記述言語で特殊なコメントを挿入することがで
き、登録された新たな演算器を他の演算器と同様に処理
することが可能になる。
【0046】第11の発明の自動高位合成方法におけ
る、複数回数分のループを、1回のループに自動展開
し、ループの展開が終了した後に、パイプラインアーキ
テクチャを可能にする変形工程を行うことで、ループの
回数を削減したパイプラインアーキテクチャの構成がで
きる。
【0047】
【実施例】
実施例1.以下、この発明の第1実施例を図について説
明する。数1の入力記述を解析すると、次のループのデ
ータ依存グラフの演算に影響を与えるのは、カウンタの
インクリメント(i=i+1)だけであり、他の演算につい
てはループ内部で完結していることがわかる。図1は、
複数のループに渡って行われる処理の概念を示す図であ
る。図1において、10aから10yは変数iの値の決
定と変数iの値の範囲の判断とを行う操作、11aから
11xは決定された変数iを用いて行う内部操作のうち
の非依存部である。パイプライン型のデータパス構成を
形成するためには、図1のように非依存部11a〜11
xの動作をオーバーラップさせパイプライン状に実行さ
せることが必要となる。その様子を図2に示す。図2は
パイプライン状に実行させたときの各演算とその演算が
行われるステップの関係を示す図である。図2におい
て、12はステップ回数を表示する列、13はノードの
符号を示した行である。また、図において、14〜16
は変数iの値が0〜2の時の処理が行われることを示す
記号、17〜19は変数iの値がN−3〜N−1の時の
処理が行われることを示す記号である。例えば、ノード
E1及びノードE2は操作10a〜10yに属し、ノー
ドE3〜E6は操作11a〜11xに属するものとする
と、パイプライン状に処理を実行するノードE3〜E6
は、ノードE1またはノードE2の出力を用いた処理が
できる。
【0048】図3及び図4に、ループ記述に対応したC
DGから、パイプライン状の実行が可能なCDGへ変換
する処理のフローチャートを示す。コンピュータにおい
て、図17のCDGを入力して、パイプライン状の実行
が可能なCDGへの変換手順をフローチャートに沿って
説明する。
【0049】まず、工程S11において、図17に示し
た従来の高位合成方法でループ記述から変換されたCD
Gを入力する。次に、工程S12において、ループの内
部動作を表すデータ依存グラフ(図17のブロック3)
に外から入ってくる変数の集合Iと外へ出ていく変数の
集合Oを生成する。図17の例では、集合I={1,i,
base,Coef}、集合O={i} となる。
【0050】続いて、工程S13において、集合Iと集
合Oの交差集合(積集合)Cを求める。図17の例で
は、交差集合C={i} となる。次に、工程S14にお
いて、ブロック3に対して、交差集合Cに含まれる出力
変数iから、入力に向かって枝をトレースする。
【0051】工程S15において、先の工程S14でト
レースされたノード(演算)の集合Uを求める。図17
の例では、集合Uは加算ノードE2となる。工程S16
において、集合Uの要素を、次のループに影響を与える
演算として抽出する。工程S17において、集合Uに含
まれない演算を、ループ間に依存関係のない演算として
抽出する。
【0052】工程S18において、次のループに影響を
与える演算の集合と、依存関係のない演算の集合につい
て新たなブロックをつくり、それぞれのブロックへ、条
件比較ブロック2からコントロール枝を引く。さらに、
依存関係のあるブロックについては、ループのためのコ
ントロール・フローの枝を、そのブロックから条件比較
ブロックへ引き、コントロールフローグラフを生成す
る。そして、それぞれのブロック内で、再度データ依存
グラフを構成しなおす。工程S19において、変形する
ことにより得られたCDGを出力する。以上のような処
理により、図17のCDGを、図5のようなパイプライ
ン状の実行が可能なCDGへ変形できる。
【0053】以上のようにして第1の実施例の高位合成
方法は、ループ記述に対応するCDGを、図5のような
パイプライン状の実行が可能な形態のCDGへと変換す
ることができる。図5において、4はカウンタのインク
リメント(i=i+1)を行うブロック、5は数1のル
ープ依存関係の無い内部動作を行うブロックである。
【0054】図5のCDGは、図17のCDGを、ルー
プ間にまたがって依存関係のある演算のノードE2を含
むブロック4と依存関係のない演算のノードE3〜E6
のみからなるブロック5に分けたものである。図5に示
したCDGは、非依存部の演算については、前のループ
の演算終了を持つことなく次のループの演算実行が可能
であることを意味している。
【0055】次に、図5に示したCDGを用いて、パイ
プラインアーキテクチャの合成についての説明を続け
る。
【0056】図6及び図7は、パイプラインアーキテク
チャ合成のための処理を行なうフローチャートである。
図5のCDGを入力例として、このフローチャートを具
体的に説明する。
【0057】まず、工程S21において、図5に示した
ような変形されたCDGをコンピュータが入力する。次
に、工程S22において、その演算を実行可能な演算器
をCDGの個々の演算に対して1つ割り付ける。この
時、割り付けられる各演算器の最大遅延時間は、1クロ
ック周期以内である必要がある。また、同種の演算器を
割り付ける場合、1つの演算器を共有せず、新たな演算
器を用意し、それを割り付ける。この演算器の割り付け
処理は、リソースバインディングと呼ばれている。
【0058】
【表4】
【0059】表4に示すような演算器が利用できるもの
とし、それらの演算器のデータがコンピュータに準備さ
れているものする。クロック周期を50nSecとした時の、
図5のCDGに対するリソースバインディングの一例は
表1で示される。表4を分析すると、演算器ADD2,
MLP2,OUT2の演算器は、遅延が1クロック周期
(50nSec)より長いので使用できない。また、2つの加
算に対しては、異なった演算器ADD1-1,ADD1-2を
割り付ける。
【0060】工程S23〜工程S25において、これら
の演算器が、どの制御ステップにて、どの演算を実行す
るかを決定する。この制御ステップを決定する処理は、
スケジューリングと呼ばれている。
【0061】工程S23において、ループの脱出条件を
判定する演算は、第0ステップにて実行させるように割
り付ける。ループにまたがって依存関係のある全ての演
算は、第1ステップにて実行させる。もし、第1ステッ
プにて実行できなければ、高位合成不能である。つま
り、第1のステップに依存関係の無いノードが割り付け
られると処理ができなくなるからである。
【0062】最後に、次のループへ影響しない演算に対
して、制御ステップを決定する。この問題は、必要なレ
ジスタ数を評価関数としたスケジューリング問題とな
る。スケジューリング問題の解法については、従来の高
位合成と同様の手法を用いる。Daniel Gajski,Nikil Du
tt,Allen Wu,Steve Lin著、“High-Level Synthesi
s”、(1992)、KLUWERACADEMIC PUBLISHERSに様々
な解法が紹介されている。演算をできるだけ早いステッ
プで動作させるスケジューリング法である、ASAP法
と呼ばれる解法を用いて、図5のCDGと表1のリソー
スバインディングに対して、スケジューリングした結果
は表2に示したものと同様である。
【0063】工程S26において、使用された演算器を
直接、または、レジスタやセレクタを介して接続し、デ
ータパス構造を生成する。この処理はリソース接続と呼
ばれている。リソース接続は、次のようなルールに従っ
て行なわれる。データ依存グラフにおいて、データの授
受を行う関係にある2つのノードに対応する演算器の制
御ステップが前後の関係にあるなら、言い換えると、そ
れらの演算器の入力と出力とを同じ制御ステップで行う
ことができるなら、演算器同士を直接接続する。もし、
動作すべき制御ステップが離れていれば、制御ステップ
の差分の段数のレジスタ(パイプラインレジスタと呼
ぶ)を介して接続する。
【0064】また、次のループに影響を与えるオペレー
ションには、ループ内動作に対応する演算器の出力端子
にレジスタを挿入し、次の動作の入力へ接続する。但
し、同一の演算器やレジスタの入力端子に、複数の演算
器やレジスタを接続する必要がある場合には、セレクタ
を生成し、セレクタを介して接続する。図8に、表2の
スケジューリング結果に対して、リソース接続を行なっ
た例を示す。図8において、r1〜r11はレジスタ、
20は第2の入力端子に接続されたレジスタr2に記憶
されている値0と第1の入力端子に入力される値とを切
り替えて出力するセレクタ、21はセレタク20が出力
した値を保持しているレジスタr4の値とレジスタr1
が保持しているループの繰り返し回数の値とを比較して
結果に応じて信号S1を出力する比較器、22はセレク
タ20等の各演算器を制御するための制御論理回路ブロ
ック、23はレジスタr3に記憶されている値1とレジ
スタr4に記憶されている値とを加算してその結果をセ
レクタ20の第1の入力端子に与える加算器、24はレ
ジスタr4に記憶されている値とレジスタr5に記憶さ
れている値とを加算してその結果をレジスタr6に出力
する加算器、25はレジスタr6の値に応じてデータを
入力してレジスタr7に出力する入力装置、26はレジ
スタr7に記憶されているデータとレジスタr8に記憶
されている係数とを掛け合わせてその結果をレジスタr
11に出力する乗算器、27はレジスタr10とレジス
タr11との値に応じた出力を行う出力装置である。な
お、レジスタr6からレジスタr9へ、またレジスタr
9からレジスタr10へステップ毎に順に記憶されてい
るデータが送られる。以上で、パイプライン動作部のデ
ータパス構造が合成できた。
【0065】続いて、工程S27において、制御論理回
路ブロック22が出力するための制御論理を生成する。
制御論理は、LSIの動作を制御するための、状態遷移
として表現され、適切な状態での演算器やレジスタやセ
レクタへの動作信号の発生や、条件に応じた次状態を規
定している。制御論理の生成法を説明する。スケジュー
リングで求められた制御ステップの個数を(N+1)個
とする。この時、(2×N+1)個の状態を用意する。
(2×N+1)個の状態は、(1) 初期値設定、(2) 初期
判断、(3) パイプラインの導入部、(4) フル・パイプラ
イン動作部、(5) パイプライン導出部のブロックに分割
できる。
【0066】ステート0は、初期値設定ブロックであ
る。ここでは、カウンタに対応するレジスタに初期値を
設定する。設定に必要なセレクタとレジスタへの制御信
号を発生する。次状態は、ステート1とする。
【0067】ステート1は、初期判断ブロックである。
これは、ループを一度も実行しないケースを想定してい
る。この状態においては、ループの脱出条件判定を行な
う演算器が動作する。この演算器に対する制御信号が必
要ならその制御信号を発生する。図8の例では、不要で
あるため、制御信号は生成しない。次状態は、ループの
条件判定の演算器の出力が真(1) ならステート2とし、
偽(0) なら、終状態(END)とする。
【0068】ステート2からステートNまでは、パイプ
ライン導入部である。ステート2からステートNの中の
任意のステートiでは、スケジューリング結果のステッ
プ0〜i−1までの制御ステップに関わる演算器、レジ
スタ、セレクタに対して、必要な制御信号を生成する。
次状態はループの条件判定の演算器の出力が真(1) なら
ステートi+1とし、偽(0) なら、ステートN+2とす
る。
【0069】ステートN+1は、フル・パイプライン動
作部である。この状態では、全ての演算器を動作させ
る。次状態は、ループの条件判定の演算器の出力が真
(1) ならステートN+1(同じ状態)とし、偽(0) な
ら、ステートN+2とする。
【0070】ステートN+2からステート2Nまでは、
パイプライン導出部である。ステートN+2からステー
ト2Nまでの任意のステートiでは、スケジューリング
結果のステップi−N〜Nまでの制御ステップに関わる
演算器、レジスタ、セレクタに対して、必要な制御信号
を生成する。次状態はステート2N以外の状態では、ス
テートi+1とし、ステート2Nの状態では、終状態
(END)とする。
【0071】
【表5】
【0072】
【表6】
【0073】表5,表6に、上記の高位合成にて得られ
る制御論理を示す。図8に示した構成と、表5及び表6
に示した制御理論によって、数1の入力記述を実現する
パイプラインアーキテクチャが得られている。
【0074】最後に、工程S28において、得られたア
ーキテクチャを出力する。以上の処理により、パイプラ
インアーキテクチャを合成することができる。また、リ
ソースコストの増加を抑えて処理の高速化を実現するこ
とができる。
【0075】実施例2.次に、この発明の第2実施例に
よる高位合成方法について説明する。上記の高位合成方
法では、各演算器の最大遅延時間が、1クロック周期以
内である必要がある。しかし、このような制限がある
と、使用可能な演算器が限定されてしまい、与えられる
条件によっては、このような制限のためにアーキテクチ
ャの合成が不可能な場合が出てくる。
【0076】まず、このような問題点を解消するための
概念について説明する。図9に示すように、出力の入力
に対して遅延時間Delayの組合せ回路のみからなる演算
器30があり、遅延時間Delay>1クロック周期Clock-P
eriodとする。この演算器を用いた場合、一度データを
入力すると、出力結果が得られるまでの、(int(Delay
/Clock-Period)+1)クロック周期の間、この演算器
を使用することができない。但し、int(x)は、実数
xを越えない最大の整数を与える関数であり、(Delay
/Clock-Period)が整数の時は例外的に(Delay/Clock
-Period)クロック周期の間使用できない。パイプライ
ンアーキテクチャでは、データをクロック毎に演算器に
投入し、処理できることが必要である。したがって、こ
のような演算器は、パイプラインアーキテクチャでは使
用できない。このような演算器を使用可能とする手法
に、パイプラインラッチの挿入法がある。まず、各段の
実行が1クロック周期内に終るように演算器をN段のブ
ロックに分割する。分割されたブロック間の接続にラッ
チを挿入する。パイプラインラッチの挿入の例を、図1
0に示す。図10において、組合せ回路31〜36で組
合せ回路30と同等の機能を有している。そして、組合
せ回路31,33の出力はそれぞれラッチ32,34に
保持される。このようにラッチが挿入された演算器に
は、データをクロック毎に投入することができる。但
し、演算器の計算結果が得られるのは、Nクロック周期
後である。遅延時間が1クロック周期以上の演算器に対
しては、このようにして、パイプラインラッチを挿入し
た演算器へ設計者が変換し、あるいは自動変換し、その
後上記と同様の高位合成方法を用いて、パイプラインア
ーキテクチャの合成を行なう。
【0077】実施例3.しかし、上記のような回路を分
割する方法は、組合せ回路のみからなる演算器の場合に
適用可能である。ところが、例えば、メモリや外部ポー
トとのインターフェース回路等では、演算器は組合せ回
路のみで構成されず、上記の方法では、パイプラインア
ーキテクチャを合成することはできない。
【0078】1クロック周期以上の遅延を持つ演算器が
組合せ回路以外の回路で構成されている場合も、パイプ
ラインアーキテクチャを合成可能とするこの発明の第3
実施例による高位合成方法について説明する。
【0079】表4の利用可能な演算器のテーブルにおい
て、OUT1という種類の演算器がなかったとする。ク
ロック周期を50nSecとすれば、出力に対応する演算器
で、遅延が1クロック周期以内のものは存在しない。し
たがって、2クロック周期必要な演算器OUT2を用い
て、パイプラインアーキテクチャを合成することを考え
る。
【0080】
【表7】
【0081】OUT2の動作には2クロック必要である
ため、表2のスケジューリングが、表7のように変化す
る。図6及び図7のフローチャートに示した手順を含む
高位合成方法では、各演算器は一つの制御ステップでの
み動作する必要がある。そのため、表7のようなスケジ
ューリング結果に対しては、正しい制御論理を生成する
ことができない。
【0082】そこで、制御論理の生成方式を以下のよう
に変更する。スケジューリングで求められた制御ステッ
プの個数を(N+1)個とする。また、遅延時間が最長
の演算器に必要なクロック周期をm周期とする。さら
に、L=ra(N/m)とする。ただし、ra(a)は、実
数aの少数点以下を切り上げた整数を意味する。
【0083】この時、(2mL−m+2)の状態を用意
する。これらの状態は、(1) 初期値設定、(2) 初期判
断、(3) パイプラインの導入部、(4) フル・パイプライ
ン動作部、(5) パイプライン導出部のブロックに分割で
きる。
【0084】初期値設定と初期判断のブロックについて
は、図7の工程S27と同様に、ステート0は、初期値
設定ブロックである。ここでは、カウンタに対応するレ
ジスタに初期値を設定する。設定に必要なセレクタとレ
ジスタへの制御信号を発生する。次状態は、ステート1
とする。
【0085】ステート1は、初期判断ブロックである。
これは、ループを一度も実行しないケースを想定してい
る。この状態においては、ループの脱出条件判定を行な
う演算器が動作する。これらの演算器に対する制御信号
が必要ならその制御信号を発生する。図8の例では、不
要であるため、制御信号は生成しない。次状態は、ルー
プの条件判定の演算器の出力が真(1) ならステート2と
し、偽(0) なら、終状態(END)とする。
【0086】ステート2からステートmL−m+1まで
は、パイプライン導入部である。ステート2からステー
トmL−m+1の中の任意のステートi+1(i=1,
2,…,mL−m)に対する制御論理は以下のように定
まる。t=i mod mとする。このとき、スケジュー
リング結果のステップt,t+m,t+2m,…,iの
制御ステップに関わる演算器、レジスタ、セレクタに対
して、必要な制御信号を生成する。次状態については、
tが0の時とそれ以外の時で異なる。tが0の時はルー
プの条件判定の演算器の出力が真(1) ならステートi+
1とし、偽(0)なら、ステートmL+2とする。tが0
以外の時は、ループの条件判定の演算器の出力とは無関
係にステートi+1とする。
【0087】ステートmL−m+2からステートmL+
1は、フル・パイプライン動作部である。ステートmL
−m+2+i(i=0,1,…,m−1)では、s mo
dm≡iとなるようなステップsの制御ステップに関わ
る演算器、レジスタ、セレクタに対して、必要な制御信
号を生成する。次状態については、iがm−1の時は、
ループの条件判定の演算器の出力が真(1)ならステート
mL−m+2とし、偽(0)なら、ステートmL+2とす
る。iがm−1以外の時は、常にステートmL−m+2
+i+1とする。
【0088】ステートmL+2からステート2mL−m
+1、までは、パイプライン導出部である。ステートm
L+i+1(i=1,2,…,mL−m)に対する制御
論理は以下のように定まる。t=i mod mとする。
このときスケジューリング結果のステップi,i+m,
i+2m,…,mL−m+2+tの制御ステップに関わ
る演算器、レジスタ、セレクタに対して、必要な制御信
号を生成する。次状態は、ステート2mL−m+1以外
の状態では、ステートmL+i+2とし、ステート2m
L−m+1の状態では、終状態(END)とする。
【0089】
【表8】
【0090】
【表9】
【0091】表8、表9に表7のスケジューリングに対
して、上記の手順を適用したとき得られる制御論理を示
す。この例では、N=5,m=2,L=3となる。従っ
て、ステップ2〜5がパイプライン導入、ステップ6〜
7がフル・パイプライン部、ステップ8〜11がパイプ
ライン導出部となる。
【0092】上記の方法では、フル・パイプライン部に
おいて、m個の状態でもってループを構成している。こ
のループを構成する状態数をパイプラインピッチと呼
ぶ。図6、図7を用いて説明した方法では、パイプライ
ンピッチが1であったため、フル・パイプラインの状態
では、スループットとしては、1クロックあたり1ルー
プの動作が処理されていた。一方、この方法によれば、
mクロックあたり1ループの動作が処理されている。従
って、スループットが低下したパイプラインアーキテク
チャが合成されることとなる。
【0093】実施例4.次に、この発明の第4実施例に
よる高位合成方法について説明する。第1実施例による
高位合成方法では、グラフ中の各演算器に一対一に対応
する演算器を用意する必要がある。これが不可能な場合
には適用できない。そこで、一部の演算器を共有して
も、パイプラインピッチを増やすことにより、第1実施
例の高位合成方法を適用可能とする方式に関するもので
ある。
【0094】ここでは、2つの加算(E2,E3)に対
して1つの加算器が割り付けることを考える。そのた
め、図5のCDGに対して、表10のようなリソースバ
インディングを行ったとする。
【0095】
【表10】
【0096】表11に、このようなリソースバインディ
ングに対するスケジューリングの例を示す。
【0097】
【表11】
【0098】1つの演算器を、複数の演算にて共有する
ために、制御ステップをずらして動作するようにスケジ
ューリングをする。第1実施例の高位合成方法では、各
演算器は一つの制御ステップでのみ動作する必要があ
る。このようなスケジューリング結果に対しては、正し
い制御論理を生成することができない。
【0099】このような場合においても、スケジューリ
ング方式を変更し、さらにこの発明の第3実施例による
高位合成方法の制御論理の生成方式を用いることによ
り、パイプラインアーキテクチャが合成可能となる。
【0100】スケジューリング方式の変更点は、スケジ
ューリングに次のような制限を設けることである。一つ
の演算器に割り付けられた演算の最大数をmとする。ま
た、ある演算器が動作する制御ステップをS1,S2,
…,Sk(k≦m)とする。このとき、Si mod m
と、Sj mod mとは等しくないという制限を設けて、
スケジューリングを行なう。ただし、i,j=1,2,
…,kとして、iとjは等しくないものとする。
【0101】そして、共有する加算器に入力されるデー
タの切り替えを行うセレクタを新たに設ける。このセレ
クタは、制御論理によって、ステップ1とステップ2で
その切り替えを行う。
【0102】
【表12】
【0103】
【表13】
【0104】表12及び表13並びに図11に、表10
のリソースバインディングと表11のスケジューリング
に対して、リソース接続と制御論理の生成を行ない、パ
イプラインアーキテクチャ合成した結果を示す。図11
において、セレクタ28が新たにつけ加えられたセレク
タであり、それによって、加算器23を共有化してい
る。
【0105】実施例5.次に、この発明の第5実施例の
高位合成方法について説明する。第1実施例の高位合成
方法では、演算器間に制御ステップの差異分の段数のパ
イプラインレジスタが生成される。しかし、差異が大き
い場合、パイプラインレジスタを用いてデータを保持す
るより、必要な時点で再計算した方が良い場合がある。
このような場合に、データパス構造の構成に変更を加え
る工程を追加する。
【0106】図8のデータパス構造には、Adr,Adr
(1),Adr(2)と続くパイプラインレジスタが存在
する。この例では、3サイクル前のi+baseの演算結果
の値を保持するために、パイプラインレジスタが作られ
ている。しかし、iは1サイクルに1インクリメントさ
れているので、3サイクル前のi+baseの値は、現在の
加算器の出力から、3を減じることによって求めること
もできる。もし、2段のパイプラインレジスタ(1段目
のパイプラインレジスタは、消去できない。)を設ける
よりも、1つの演算器を導入して値を再計算した方がL
SIの面積(コスト)が小さくなる場合、パイプライン
レジスタを設けずに減算器を新設する。コンピュータに
よってコスト計算を行いながら高位合成を行うことは、
従来から実施されている。
【0107】図12に、図8のデータパス構造のパイプ
ラインレジスタを再計算モジュールで置換した例を示
す。図12において、29が減算器である。減算器29
によって、レジスタr6に記憶されている値からレジス
タr13に記憶されている値を引くことによって、出力
装置27に対して、レジスタr6が、3ステップ前に保
持していた値を与えることができる。
【0108】なお、ここでは、ステップ毎に1ずつ増加
する値を保持する場合について示したが、ステップ毎に
値が減少する場合であってもよく、また、他の規則によ
って値が変わる場合であっても同様の効果を奏する。
【0109】次に、この発明の高位合成方法の全体の流
れについて説明する。高位合成方法は、ハードウェア記
述言語を用いた、動作レベルの記述を入力し、論理合成
ツールが直接読み込み可能なレジスタトランスファレベ
ルのハードウェア記述言語による記述を出力する。図1
3は、この発明の高位合成方法の手順を示すフローチャ
ートである。
【0110】工程S31において、動作レベルのハード
ウェア記述言語で表現された動作記述を入力し、オペレ
ーション系列へと変換する。工程S32において、オペ
レーション系列からCDGを生成する。工程S33にお
いて、第1実施例と同様に、パイプライン状の実行が必
要な記述部に対して、パイプライン状の実行が可能な形
態へと、CDGを変形する。
【0111】工程S34において、変形されたCDGに
基づき、第1実施例ないし第5実施例の工程を適用し
て、パイプラインアーキテクチャを合成する。工程S3
5において、パイプライン状の実行が不要な記述部に対
して、従来方式にて、アーキテクチャを合成する。この
時、工程S34で得られたアーキテクチャ中の演算器を
共有してもよい。最後に、工程S36において、合成さ
れたアーキテクチャを、論理合成ツールが直接読み込む
ことのできる。レジスタ・トランスファ・レベルのハー
ドウェア記述言語による記述として出力する。
【0112】実施例6.次に、この発明の第6実施例に
よる高位合成方法について説明する。ループ記述を、コ
ントロールフローグラフと、データ依存グラフに変換す
る時、通常は、一つの演算子に対して、データ依存グラ
フ上の1つのノードが生成される。しかし、複雑な演算
を実行するゲート回路をユーザが設計し、それに対応す
る演算子をユーザが追加したい場合がありうる。第6実
施例の高位合成方法は、これを容易に可能とする手法に
関わるものである。
【0113】ループ動作を含むハードウェアの動作を記
述するのに適当な言語として、VHDL,Verilog −H
DL等のハードウェア記述言語が考えられる。これらの
言語には、複数の入力データを与え、1つの出力を返す
関数(function)文がある。
【0114】通常は、この関数文の内部動作まで解析
し、演算子レベルにまで分解してCDGを生成する。図
14は、Verilog −HDL記述からデータ依存グラフへ
の通常の変換を示す図である。Verilog −HDL記述4
0は、データ依存グラフ50に変換される際、一塊の関
数50aも演算子のレベルで展開して作成されている。
【0115】しかし、変換ツールへの特殊な指示子をコ
メント文として挿入するようにすることで、この関数を
新しいユーザ定義演算子とみなすようにする。
【0116】これにより、容易に新しいユーザ定義演算
子を増やすことができる。図15に、Verilog-HDLで
のユーザ定義演算子の例を示す。まず、func60と
いうユーザ定義演算子をコンピュータにあらかじめ登録
しておく。そして、Verilog−HDL記述45を作成す
る際に、”/*UserDefinedFunctio
n*/”という、ユーザ定義演算子の使用を宣言する文
を挿入する。そうすることで、データ依存グラフ作成の
際も、funcという関数を一つのノードに割り付ける
ことができる。funcという関数に対応する回路は、
予めコンピュータに登録されているため、設計者が意図
した結果が得られ、性能の良いLSIの設計が可能にな
る。
【0117】実施例7.次に、この発明の第7実施例に
よる高位合成方法について説明する。第7実施例の高位
合成方法は、入力記述を自動修正し、ループ回数を削減
することで、処理速度とリソース数のトレードオフを達
成する手法に関するものである。
【0118】合成されたパイプラインアーキテクチャ
は、ループ部の動作にN+α(Nはループ回数、αは定
数)サイクル必要とする。従って処理の高速化を図るた
めには、ループ回数を削減すればよい。
【0119】ループ回数を削減する単純な方法は、数回
分のループを1回分に展開することである。例えば、第
1実施例の高位合成方法において、2回分のループの記
述を1回分に展開する工程をさらに追加することで、ル
ープは、N/2+β(Nはループ回数、βは定数)サイ
クルとなり、処理速度は、約2倍となる。数3に展開前
の記述を、数4に展開後の記述を示す。
【0120】
【数3】
【0121】
【数4】
【0122】なお、上記各実施例は、それぞれ組み合わ
せて用いることもでき、その場合にも、それぞれの固有
の効果を失うことはない。
【0123】
【発明の効果】以上のように、請求項1記載の発明の自
動高位合成方法によれば、前のループの動作完了を待た
ずに、次のループの動作が実行可能な形態を示す新たな
コントロールフローグラフ及びデータ依存グラフへと変
形する変形工程を備えているので、新たなコントロール
フローグラフ及びデータ依存グラフを用いて、並列度の
高いパイプラインアーキテクチャを自動的に合成できる
という効果がある。
【0124】請求項2記載の発明の自動高位合成方法に
よれば、前のループの動作完了を待たずに、次のループ
の動作が実行可能な形態を示す新たなコントロールフロ
ーグラフ及びデータ依存グラフへと変形する変形工程を
容易に実現することができるという効果がある。
【0125】請求項3記載の発明の自動高位合成方法に
よれば、前のループの動作完了を待たずに、次のループ
の動作が実行可能な形態を示す新たなコントロールフロ
ーグラフ及びデータ依存グラフを用いて、演算器が空き
次第、次のループのデータを投入することにより、ルー
プ動作をパイプライン状に実行するための演算器の制御
理論及びデータパス構造を容易に得ることができるとい
う効果がある。
【0126】請求項4記載の発明の自動高位合成方法に
よれば、計算機において、演算器が空き次第、次のルー
プのデータを投入することにより、ループ動作をパイプ
ライン状に実行するための前記演算器の制御論理及びデ
ータパス構造を自動生成する生成工程を容易に実現でき
るという効果がある。
【0127】請求項5記載の発明の自動高位合成方法に
よれば、演算器をラッチで分離されたパイプライン演算
器としてモデル化することによって、1クロック周期以
上の遅延を有する演算器をパイプラインアーキテクチャ
において使用できるようにすることができるという効果
がある。
【0128】請求項6記載の発明の自動高位合成方法に
よれば、パイプラインピッチを増やすことによって、1
クロック周期以上の遅延を有する演算器をパイプライン
アーキテクチャにおいて使用できるようにすることがで
きるという効果がある。
【0129】請求項7記載の発明の自動高位合成方法に
よれば、一部の演算器を共有にすることによって、LS
Iの規模を縮小することがきてるという効果がある。
【0130】請求項8記載の発明の自動高位合成方法に
よれば、パイプラインレジスタに換えて所定の演算を行
う回路を用いて、LSIのサイズを縮小できるという効
果がある。
【0131】請求項9記載の発明の自動高位合成方法に
よれば、入力を動作レベルのハードウェア記述言語で行
って、レジスタトランスファレベルのハードウェア記述
言語で記述されたパイプラインアーキテクチャを得るこ
とができるという効果がある。
【0132】請求項10記載の発明の自動高位合成方法
によれば、ユーザが新たに演算器を登録することがで
き、より性能の良いパイプラインアーキテクチャを構成
することができるという効果がある。
【0133】請求項11記載の発明の自動高位合成方法
によれば、展開したループを用いてパイプラインアーキ
テクチャを生成することができ、ループの回数を減らし
て処理速度の速いLSIを得ることができるという効果
がある。
【図面の簡単な説明】
【図1】 ループの実行状態を示す概念図である。
【図2】 ループの非依存部の動作をパイプライン状に
実行する各ノードの動作を示す概念図である。
【図3】 コントロールフローグラフとデータ依存グラ
フの変形を行なう手順を示すフローチャートである。
【図4】 コントロールフローグラフとデータ依存グラ
フの変形を行なう手順を示すフローチャートである。
【図5】 パイプライン状の実行が可能な形態のコント
ロールフローグラフとデータ依存グラフである。
【図6】 パイプラインアーキテクチャを合成する手続
のフローチャートである。
【図7】 パイプラインアーキテクチャを合成する手続
のフローチャートである。
【図8】 パイプラインアーキテクチャ合成用のリソー
ス接続結果を示すブロック図である。
【図9】 1クロック周期以上の遅延時間をもつ演算器
を示す概念図である。
【図10】 1クロック周期以上の遅延時間をもつパイ
プライン演算器を示す概念図である。
【図11】 演算器を共有化した場合のパイプラインア
ーキテクチャを示すブロック図である。
【図12】 パイプラインレジスタの再計算モジュール
での置換を示すブロック図である。
【図13】 パイプラインアーキテクチャを合成する高
位合成方法全体の流れを示すフローチャートである。
【図14】 関数を構成する演算子の記述の変換を説明
するための図である。
【図15】 ユーザ定義演算子の記述の変換を説明する
ための図である。
【図16】 従来の高位合成方法の手順を示すフローチ
ャートである。
【図17】 数1のループ記述に対応したコントロール
フローグラフとデータ依存グラフである。
【図18】 従来の高位合成方法により合成されるデー
タパス構造を示すブロック図である。
【図19】 従来の高位合成方法により合成されたアー
キテクチャにおける演算器の動作状況を示す図である。
【図20】 従来の高位合成方法により合成されたコン
トロールグラフとデータ依存グラフである。
【符号の説明】
1〜5 ブロック、r1〜r12 レジスタ、20,2
8 セレクタ、21比較器、22 制御論理回路、2
3,24 加算器、25 入力装置、26 乗算器、2
7 出力装置。

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 ループ記述に対応したコントロールフロ
    ーグラフ及びデータ依存グラフを準備する工程と、 計算機を用いて、自動的に、前記ループ記述に対応した
    コントロールフローグラフ及び前記データ依存グラフ
    を、前のループの動作完了を待たずに、次のループの動
    作が実行可能な形態を示す新たなコントロールフローグ
    ラフ及びデータ依存グラフへと変形する変形工程とを備
    える、自動高位合成方法。
  2. 【請求項2】 前記変形工程は、 前記ループ記述の内部動作を表す前記データ依存グラフ
    の入力変数を要素とする第1の集合と、前記データ依存
    グラフの出力変数を要素とする第2の集合とを生成する
    工程と、 前記第1の集合と前記第2の集合との積集合を生成する
    工程と、 前記積集合に属する出力変数を出力するノードから、前
    記データ依存グラフを入力側へトレースして、前記出力
    変数を出力するために必要な演算を行う第1のノードと
    それ以外の演算を行う第2のノードとに分離抽出する工
    程と、 前記新たなデータ依存グラフとして、前記第1のノード
    からなる第1のデータ依存グラフと前記第2のノードか
    らなる第2のデータ依存グラフとを生成するとともに、
    前記新たなコントロールフローグラフとして、前記第1
    及び第2のデータ依存グラフの実行手順を規定するコン
    トロールフローグラフを生成する工程とを含む、請求項
    1記載の自動高位合成方法。
  3. 【請求項3】 前記計算機に準備した演算器のデータの
    中から、前記新たなデータ依存グラフ中の全ての前記ノ
    ードにそれぞれ一対一に対応する演算器のデータを関連
    づけるバインディング工程と、 前記計算機において、前記演算器が空き次第、次のルー
    プのデータを投入することにより、ループ動作をパイプ
    ライン状に実行するための前記演算器の制御論理及びデ
    ータパス構造を自動生成する生成工程とをさらに備え
    る、請求項1または請求項2記載の自動高位合成方法。
  4. 【請求項4】 前記生成工程は、 前記ループの脱出条件を判定するノードを第1のステッ
    プに割り付ける第1のスケジューリング工程と、 前記第1のノードに対応する前記演算器について、前記
    第1のデータ依存グラフの制約に基づいて、第2のステ
    ップ以降に順に割り付け、制御ステップの決定を行う第
    2のスケジューリング工程と、 前記第2のノードに対応する前記演算器について、前記
    第2のデータ依存グラフの制約に基づいて、制御ステッ
    プの決定を行う第3のスケジューリング工程と、 接続すべき前記演算器の出力と入力の前記制御ステップ
    が異なっているときには、その差異段数と等しい数のパ
    イプラインレジスタを挿入した後に、差異段数がないと
    きにはそのまま通常のリソース接続を行うリソース接続
    工程とを備える、請求項3記載の自動高位合成方法。
  5. 【請求項5】 前記演算器の遅延値が1クロック周期以
    上の場合に、前記演算器をラッチで分離されたパイプラ
    イン演算器としてモデル化する工程をさらに備える、請
    求項3または請求項4記載の自動高位合成方法。
  6. 【請求項6】 前記生成工程は、遅延値が1クロック周
    期以上の前記演算器に対応して一つの前記ループの処理
    を完了するために必要な工程数であるパイプラインピッ
    チを増やす工程を含むことを特徴とする、請求項3ない
    し請求項5のいずれかに記載の自動高位合成方法。
  7. 【請求項7】 前記生成工程は、一つの前記ループの処
    理を完了するために必要な工程数であるパイプラインピ
    ッチを増やすとともに複数の前記ノードにおいて一部の
    演算器を共有させる工程を含むことを特徴とする、請求
    項3ないし請求項6のいずれかに記載の自動高位合成方
    法。
  8. 【請求項8】 前記新たなコントロールフローグラフ及
    びデータ依存グラフによって表される回路の一部のパイ
    プラインレジスタの占有面積と前記パイプラインレジス
    タによって与えられる値を出力する所定の演算を行う回
    路の占有面積とを比較する比較工程と、 前記比較工程によって、前記所定の演算を行う回路を用
    いる方が回路面積を小さくできると判断された場合に、
    前記パイプラインレジスタを前記所定の演算を行う回路
    に置換する置換工程とをさらに備える、請求項3ないし
    請求項7のいずれかに記載の自動高位合成方法。
  9. 【請求項9】 前記ループ記述に対応したコントロール
    フローグラフ及びデータ依存グラフを準備する工程は、
    前記コントロールフローグラフ及びデータ依存グラフで
    表すべき回路を表現した動作レベルのハードウェア記述
    言語による記述を入力する工程を含み、 前記変形工程で変形された前記新たなコントロールフロ
    ーグラフ及びデータ依存グラフを表現した、論理合成ツ
    ールが直接処理可能なレジスタトランスファレベルのハ
    ードウェア記述言語による記述を出力する工程をさらに
    備える、請求項1ないし請求項8のいずれかに記載の自
    動高位合成方法。
  10. 【請求項10】 複数の演算によって構成される一つ
    の関数を表す新たな演算器を追加登録する工程と、 前記新たな演算器を他の前記演算器と同様に処理するた
    めに、前記動作レベルのハードウェア記述言語で特殊な
    コメントを挿入する工程と、をさらに備える、請求項9
    記載の自動高位合成方法。
  11. 【請求項11】 前記ループ記述で表現されたループの
    うち複数回分のループを、1回分のループとして表現す
    るループ記述に自動展開する工程をさらに備える、請求
    項9記載の自動高位合成方法。
JP6174368A 1994-07-26 1994-07-26 自動高位合成方法 Pending JPH0844773A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6174368A JPH0844773A (ja) 1994-07-26 1994-07-26 自動高位合成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6174368A JPH0844773A (ja) 1994-07-26 1994-07-26 自動高位合成方法

Publications (1)

Publication Number Publication Date
JPH0844773A true JPH0844773A (ja) 1996-02-16

Family

ID=15977401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6174368A Pending JPH0844773A (ja) 1994-07-26 1994-07-26 自動高位合成方法

Country Status (1)

Country Link
JP (1) JPH0844773A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2358496A (en) * 2000-01-20 2001-07-25 Advanced Risc Mach Ltd Simulation of data processing apparatus including pipelined circuit elements
US6853968B2 (en) 2000-01-20 2005-02-08 Arm Limited Simulation of data processing apparatus
JP2008071089A (ja) * 2006-09-13 2008-03-27 Nec Corp 動作合成システム、動作合成方法、プログラム
US7360180B2 (en) 2005-09-22 2008-04-15 Hitachi, Ltd. Computer program product, method, and system for hardware model conversion
US7467361B2 (en) 2006-03-31 2008-12-16 Kabushiki Kaisha Toshiba Pipeline high-level synthesis system and method
KR101340459B1 (ko) * 2011-10-25 2013-12-11 아주대학교산학협력단 다중 루프 탈출을 지원하는 하드웨어 가속장치
US8990741B2 (en) 2012-05-10 2015-03-24 Mitsubishi Electric Corporation Circuit design support device, circuit design support method and program
JP2020129297A (ja) * 2019-02-08 2020-08-27 富士通株式会社 情報処理装置、情報処理方法、及びプログラム

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2358496A (en) * 2000-01-20 2001-07-25 Advanced Risc Mach Ltd Simulation of data processing apparatus including pipelined circuit elements
GB2363222A (en) * 2000-01-20 2001-12-12 Advanced Risc Mach Ltd Simulation of data processing apparatus including pipelined circuit elements
GB2363222B (en) * 2000-01-20 2004-11-10 Advanced Risc Mach Ltd Simulation of data processing apparatus
US6853968B2 (en) 2000-01-20 2005-02-08 Arm Limited Simulation of data processing apparatus
US7360180B2 (en) 2005-09-22 2008-04-15 Hitachi, Ltd. Computer program product, method, and system for hardware model conversion
US7467361B2 (en) 2006-03-31 2008-12-16 Kabushiki Kaisha Toshiba Pipeline high-level synthesis system and method
JP2008071089A (ja) * 2006-09-13 2008-03-27 Nec Corp 動作合成システム、動作合成方法、プログラム
US8117603B2 (en) 2006-09-13 2012-02-14 Nec Corporation Operation synthesis system
KR101340459B1 (ko) * 2011-10-25 2013-12-11 아주대학교산학협력단 다중 루프 탈출을 지원하는 하드웨어 가속장치
US8990741B2 (en) 2012-05-10 2015-03-24 Mitsubishi Electric Corporation Circuit design support device, circuit design support method and program
JP2020129297A (ja) * 2019-02-08 2020-08-27 富士通株式会社 情報処理装置、情報処理方法、及びプログラム

Similar Documents

Publication Publication Date Title
US10089426B2 (en) Logic circuit generation device and method
JP3026979B2 (ja) シリコン コンパイラ方法および装置
Bilsen et al. Cycle-static dataflow
US6021266A (en) Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method
Jerraya Behavioral synthesis and component reuse with VHDL
Sun et al. FPGA pipeline synthesis design exploration using module selection and resource sharing
JP2002123563A (ja) コンパイル方法および合成装置ならびに記録媒体
JPH07219919A (ja) 数値演算処理装置
JP2006502501A (ja) 回路設計中におけるループスケジュール決定の際のクロックサイクルタイムの使用方法
JPH08320893A (ja) 論理合成装置、論理合成方法及び半導体集積回路
JPH0844773A (ja) 自動高位合成方法
JP2013539143A (ja) 論理時刻ベクトルに基づくタスクの実行をスケジュールするためのシステム
Lanneer et al. Architectural synthesis for medium and high throughput signal processing with the new CATHEDRAL environment
Shang et al. Asynchronous system synthesis based on direct mapping using VHDL and Petri nets
JP2002269162A (ja) 動作合成方法
Tan et al. The design of an asynchronous VHDL synthesizer
Sun et al. Designing high-quality hardware on a development effort budget: A study of the current state of high-level synthesis
JP2006155533A (ja) 回路情報生成装置および回路情報生成方法
US20120226890A1 (en) Accelerator and data processing method
US20240053970A1 (en) Processor and compiler
Philippe et al. Synthesis: From Digital Signal Processing Specifications to Layout
WO2008026273A1 (fr) Contrôleur dma
Shah et al. Flexible Runtime Reconfigurable Computing Overlay Architecture and Optimization for Dataflow Applications
Anatoliy DEVELOPMENT OF METHODS FOR DESIGN OF PIPELINED DATAPATHS FOR FPGA
Jerraya et al. Models for Behavioral Synthesis