(57)【要約】【課題】条件判定と、非競合のデータフロー部と、マルチプレクサの関連性に着目し、一層の低消費電力化を得る回路を設計する。【解決手段】高位記述を解析したデータフローグラフからデータ処理の経過を示すスケジューリングを生成し、スケジューリングからマルチプレクサ部を抽出し、排他的な条件で非競合な複数の非競合データフロー部を抽出し、条件判定部から出力される条件信号の値の確定タイミングを計算し、確定タイミングと前記複数のデータフロー部内の各回路部の演算処理タイミングとの時間差を計算し、確定タイミングから演算処理タイミングがずれている回路部に対して前記条件信号の値に応じクロックのオンオフを行なうクロックゲーティング回路を付加した設計を行なう。【選択図】      図２
2008282360.tif 000002
【特許請求の範囲】
【請求項１】
高位記述受理部で受理した回路図設計用の高位記述をデータフローグラフ生成部で解析してデータフローグラフを生成し、
前記データフローグラフをスケジューリング実施部により処理してデータ処理経過を示す情報であるスケジューリングを生成し、
マルチプレクサ抽出部にて、前記スケジューリングに設定されているマルチプレクサ部を抽出し、
非競合データフロー部抽出部にて、排他的な条件で非競合であり前記マルチプレクサ部に処理結果を与える複数の非競合データフロー部を前記スケジューリングから抽出し、
条件信号確定タイミング計算部にて、条件判定部から出力される条件信号の値が確定する確定タイミングを計算し、
時間差計算部にて、前記確定タイミングと前記複数のデータフロー部内の各回路部の演算処理タイミングとの時間差を計算し、
クロックゲーティング回路生成部にて、前記条件信号の値の確定タイミングから前記演算処理タイミングがずれている回路部がある場合、当該回路部に対して前記条件信号の値に応じてクロックのオンオフを行なうクロックゲーティング回路を付加する設計を行なう
ことを特徴とする低消費電力回路用高位合成方法。
【請求項２】
さらに、リソース共有化計算部にて、前記複数のデータフロー部内の各回路部から処理タイミングが違う複数のブロックを抽出し、このブロックを共有化ブロックとして前記マルチプレクサ部の次に配置する設計を行なうことを特徴とする請求項１記載の低消費電力回路用高位合成方法。
【請求項３】
前記リソース共有化計算部に対して、共有化ブロックの生成割合を制御するための制御信号を入力することを特徴とする請求項２記載の低消費電力回路用高位合成方法。
【請求項４】
前記共有化ブロックの生成割合は、利用者の操作信号で設定されることを特徴とする請求項３記載の低消費電力回路用高位合成方法。
【請求項５】
前記共有化ブロックの生成割合は、前記非競合データフロー部内の演算部の数に応じて調整されることを特徴とする請求項３記載の低消費電力回路用高位合成方法。
【請求項６】
回路図設計用の高位記述を受理する高位記述受理部と、
受理された前記高位記述を解析してデータフローグラフを生成するデータフローグラフ生成部と、
前記データフローグラフからデータ処理経過を示す情報であるスケジューリングを生成するスケジューリング実施部と、
前記スケジューリングに設定されているマルチプレクサ部を抽出するマルチプレクサ抽出部と、
排他的な条件で非競合であり前記マルチプレクサ部に処理結果を与える複数の非競合データフロー部を前記スケジューリングから抽出する非競合データフロー部抽出部と、
条件判定部と、
前記条件判定部から出力される条件信号の値が確定する確定タイミングを計算する条件信号確定タイミング計算部と、
前記確定タイミングと前記複数のデータフロー部内の各回路部の演処理タイミングとの時間差を計算する時間差計算部と、
前記条件信号の値の確定タイミングから前記演算処理タイミングがずれている回路部がある場合、当該回路部に対して前記条件信号の値に応じてクロックのオンオフを行なうクロックゲーティング回路を付加する設計を行なうクロックゲーティング回路生成部と、
を有することを特徴とする低消費電力回路用高位合成装置。
【請求項７】
さらに、前記複数のデータフロー部内の各回路部から処理タイミングが違う複数のブロックを抽出し、このブロックを共有化ブロックとして前記マルチプレクサ部の次に配置する設計を行なうリソース共有化計算部を有することを特徴とする請求項１記載の低消費電力回路用高位合成装置。
【請求項８】
前記リソース共有化計算部に対して、共有化ブロックの生成割合を制御するための制御信号を入力する制御部を有することを特徴とする請求項７記載の低消費電力回路用高位合成装置。
【請求項９】
前記共有化ブロックの生成割合は、利用者の操作信号で設定されるか又は前記非競合データフロー部内の演算部の数に応じて調整されることを特徴とする請求項８記載の低消費電力回路用高位合成装置。
【請求項１０】
データ処理装置に対して高位合成のデータ処理を行わせるプログラムにおいて、
回路図設計用の高位記述データを解析して得られたデータフローグラフから、データ処理の経過を示す情報であるスケジューリングを生成し、
前記スケジューリングに設定されているマルチプレクサ部を抽出し、
排他的な条件で非競合であり、前記マルチプレクサ部に処理結果を与える複数の非競合データフロー部を抽出し、
条件判定部から出力され、前記マルチプレクサ部に与える条件信号の値が確定する確定タイミングを計算し、
前記確定タイミングと前記複数のデータフロー部内の各回路部の演算処理タイミングとの時間差を計算し、
前記条件信号の値確定タイミングの方よりも演算処理タイミングがずれている回路部がある場合、前記データフロー部の当該ずれている回路部に対して前記条件信号の値に応じてクロックの開又は閉を行なうクロックゲーティング回路を付加する処理を行う
ことを特徴とする低消費電力回路用高位合成のためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、低消費電力回路を設計するのに有効な低消費電力回路用高位合成装置及び高位合成方法及びそのプログラムに関する。
【背景技術】
【０００２】
従来、集積回路（ＬＳＩ）を設計するための技術として、高位合成技術が開発されている（例えば特許文献１、２）。高位合成技術は、Ｃ言語で記述されたソフトウエア処理を、既存のレジスタートランスファーレベル（ＲＴＬ）で記述された回路情報に変換する技術である。ＲＴＬとは、回路をフリップフロップと組み合わせて論理回路で表現したレベルである。この高位合成技術は、回路設計情報を高位言語で記述することで、記述ステップの低減が得られ、設計者の作業負担の軽減、作成時間の短縮が得られる。
【０００３】
ところで、設計されるＬＳＩは低消費電力化が得られることが望ましい。従来の高位合成装置及び方法においても、ＬＳＩの低消費電力化を得るための設計方法が提案されている。特許文献１の技術では、設計した複数のブロックのうち、待ち時間状態にあるブロック全体に対しては供給されるクロックを停止できるように設計している。特許文献２では、設計した複数ブロックのうち、ブロック間を接続する配線（ハードウエア資源接続と称している）に着目している。例えばＣ言語のプログラムにより、２つの乗算器が必要な割り当てが行なわれた場合、２つの乗算器の使用タイミングをずらしてスケジューリングする。そして、このような場合、１つの乗算器を２回使用する構成で回路を設計している。これにより、ハードウエア資源の低減、低消費電力化を得るというものである。
【特許文献１】特開２００６−１５５５３３公報
【特許文献１】特開２００４−２８８２０６公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法で設計されたＬＳＩよりもさらに低消費電力化を得るものが要望されている。
【０００５】
この発明は、条件判定と、非競合のデータフロー部と、マルチプレクサの関連性に着目し、細かい単位での回路の低消費電力化を得られ、全体として一層の低消費電力化を得る回路を設計することができる低消費電力回路用高位合成装置及び高位合成方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するためにこの発明の一面では、高位合成を行なう際、マルチプレクサ部を抽出し、排他的な条件で競合することがなく、前記マルチプレクサ部に処理結果を与える複数のデータフロー部を抽出し、前記マルチプレクサ部に条件信号を与える条件判定部の前記条件信号の確定タイミングと前記複数のデータフロー部内の各回路部の演算終了タイミングとの時間差を計算し、条件信号の確定タイミングと演算処理タイミングが異なる回路部がある場合、当該回路部に対してクロックゲーティング回路を生成するものである。
【発明の効果】
【０００７】
上記の手段によると、クロッククロックゲーティング回路を有効に活用することができる。そして、動作不要な回路のレジスタ駆動を細かい単位で停止させて従来よりも消費電力が少ない回路を生成することができる。
【発明を実施するための最良の形態】
【０００８】
以下図面を参照して、この発明の実施の形態を説明する。まず図１に本発明が着目しているところを示して説明する。高位合成システムを用いてLSIの回路を生成するときの入力には、C/C++やSystemCなどの言語によるアルゴリズム表現が用いられる。
【０００９】
しかしながら、処理対象のアルゴリズムが複雑な場合、高位合成が処理しきれないような場合がある。例えば、出力された条件によって、次に行なう処理が異なるようなケースで、かつその処理そのものがループの中に存在していたりする場合である。
【００１０】
この場合、高位合成が処理しきれないため、複雑な処理を条件分岐の外に出し、両方の条件の演算を実行させ、最後に不要な結果を捨てる、という処理を行なわせる場合もよくある。しかしながら、このような回路構成は不要な計算を行なわせるという意味で良い回路とは言えない。
【００１１】
図１は上記のことを図示したものである。符号１０１で示す処理ルーチンは、元々実行させたかった処理である。この表現を見ると、条件が成立した場合は処理１を、成立しなかった場合は処理２を行なわせたいということがわかる。しかしながら、このままでは高位合成で処理しにくいため、符号１０２の処理ルーチンで示すように書き換えるケースがある。つまり、条件判定部１０の条件が成立するかどうかに関わらずデータフロー部１１、１２の処理１、処理２とも実行させ、最後に条件に応じて、いずれかの結果をマルチプレクサ１３において採用する。
【００１２】
ソフトウエアと異なり、ハードウエアであるため、符号１０３のスケジュールに示すように、処理１と処理２は並列に動作するから回路のレイテンシーが遅くなることはない。尚、破線は、サイクル境界を示し、データフロー部１１、１２には通常は境界にレジスタが設けられる。
【００１３】
上記の処理方法によると、２つの処理の片方しか使わないのに、両方が動作するのは消費電力の面からは無駄である。一般に、このような記述を採用する場合、処理１・処理２は多大な計算を要する演算であることが多いため、符号１０３のスケジュールにおける点線部分のように、処理の途中には何サイクル分にもわたってクロックサイクル境界が存在するのが普通である。
【００１４】
なお、説明をわかりやすくするため、前述の例は設計者によって簡単な例を作成した例を持ち出したが、条件分岐の投機実行や、回路記述全体にわたる大域的な処理のまとめ込みを行なった場合にも、同様の回路が生成される場合がある。
【００１５】
このような回路が構成される場合、条件によって不要な方の回路（特にレジスタ）の動作を止めることによって、電力の消費を抑えようというのが本発明の要点である。そのためには、条件の値に応じて、不要な方の回路の動作を止めることができるクロックゲーティング回路が生成できればよい。
【００１６】
図２は、それを実現するための新たな高位合成システムの構成例を示している。
【００１７】
符号２０１で囲むブロックが、高位合成装置の全体である。この高位合成装置は、高位記述（一般にC/C++やSystemCで表現されている）言語２１１を受理し、高位合成結果２１３を生成する。ここでは最終的なＲＴＬ記述を得ることができる。
【００１８】
内部を詳細に説明する。高位記述受理部２０２は、高位記述を受理し、内部形式の情報に変換する部分である。この部分については、特に従来技術と異なるところはない。データフローグラフ生成部２０３は、記述情報を解析して、データフローグラフを生成する部分である。この部分についても、特に従来技術と異なるところはない。演算数や段数、ループの展開を設計し、処理するデータの流れを設計する。
【００１９】
上記のデータフローグラフに基づき、スケジューリング実施部２０４が、回路素子のスケジューリングを行なう。この部分についてもほとんど従来技術通りであるが、消費電力低減処理を行いやすくするため、排他的な条件のそれぞれの領域にある演算器やレジスタの共有化は、ここでは行なわない。
【００２０】
次にマルチプレクサ抽出部２０５は、回路素子としてマルチプレクサが存在する部分を抽出する。条件分岐に基づく処理が存在する部分は、このような回路素子の有無によって条件分岐を判別する。特に高位合成処理の内部では、条件分岐を行なう素子として表現されているのはマルチプレクサ部であり、この抽出ができれば十分である。
【００２１】
非競合データフロー抽出部２０６は、競合しないデータフローの部位を切り分ける部分である。非競合データフロー部とは、図１の符号１０３で示したような、処理１、処理２のことである。お互いに交わらないデータフローの区画を示している。
【００２２】
次の条件信号確定タイミング計算部２０７は、条件信号の値が確定するタイミング（サイクル）を計算する部分である。このタイミングは、実際にはスケジューリング実施部２０４でスケジューリングを行なった時点で確定している。その情報を後の計算のために取り出しておく部分である。
【００２３】
次の時間差計算部２０８は、演算の終了するタイミングと条件信号の値が確定するタイミングとの時間差（サイクルレベルでの差）を計算する部分である。これも再び図１の符号１０３のスケジュールにて説明するが、処理１あるいは処理２が終わるタイミングが演算終了タイミングである。あるいは、「条件」と書かれている計算が終了するのが条件信号値確定タイミングである。この時間差を計算する。
【００２４】
次にクロックゲーティング回路生成部２０９は、クロックゲーティング回路を生成する部分である。次の高位合成主処理部２１０は、高位合成処理を続行する部分である。
【００２５】
次に図３を用いて、高位合成装置が設計する回路構成イメージ（符号３０２の回路図）を、従来の高位合成装置が設計する回路構成イメージ（符号３０１の回路図）と比較しながら説明する。
【００２６】
符号３０１が従来の高位合成処理で生成される回路図である。１０が条件判定部、１１、１２がデータフロー部、１３がマルチプレクサである。この回路設計では、処理１、処理２が独立同時進行する。また条件判定も独立して行なわれ条件信号が確定する。３つの処理が全て確定したところで、マルチプレクサが処理１、処理２のいずれかを条件信号に応じて出力する。
【００２７】
このような回路の場合、符号３０２で示すような回路設計を行なうことができる。即ち、選択条件が確定した後は、その後に動作する処理１、処理２のいずれかの回路内のレジスタの動作を停止してもよい。そのため、条件信号の値を保持しているレジスタの出力を、処理１および処理２の回路内部のレジスタに対して設けられたクロックゲーティング回路の制御信号として用いることができる。
【００２８】
即ち、処理１、処理２を行うデータフロー部１１，１２には、クロックサイクル境界にレジスタが設けられるので、例えば条件信号が確定した後に駆動されるレジスタであって、非選択側のデータフロー部のレジスタに対しては、クロックを入力しないように設計することができる。これにより、条件信号が１サイクルでも早く確定したら、その後に駆動されるレジスタへのクロック入力を停止できる。このために消費電力を大きく低減できる。
【００２９】
さらに図４を用いて、上記した高位合成装置のデータ処理の流れを説明する。
【００３０】
ステップＳ−４０１：
C/C++またはSystemCなどで記述された高位の回路記述を受理し、読み込む。
【００３１】
ステップＳ−４０２：
読み込んだ高位記述を内部形式に変換して高位合成ツール内に蓄える。
【００３２】
ステップＳ−４０３：
高位記述からデータフローグラフを生成し、スケジューリングを行なう。この時点ではリソース共有化は行なわない。また、この時点で演算の終了するタイミング、条件信号の値が確定するタイミングは決定している。
【００３３】
ステップＳ−４０４：
データフローグラフをサーチし、マルチプレクサ部を抽出する。
【００３４】
ステップＳ−４０５：
抽出した各マルチプレクサに対する非競合データフロー部を抽出する。
【００３５】
ステップＳ−４０６：
抽出した各マルチプレクサに対する条件判定部を抽出する。
【００３６】
ステップＳ−４０７：
ステップＳ−４０５およびＳ−４０６で抽出した非競合データフロー部と、条件判定部について、それぞれの値が確定するタイミング（サイクル）をステップＳ−４０３のスケジューリング結果から得て、その差を計算する。
【００３７】
ステップＳ−４０８：
非競合データフロー部よりも条件判定部の値確定タイミングの方が１サイクル以上早いかどうかを判定する。
【００３８】
ステップＳ−４０９：
非競合データフロー部よりも条件判定部の条件信号値の確定タイミングの方が１サイクル以上早ければ、当該非競合データフロー部内のレジスタに対してクロックゲーティング回路を接続する。
【００３９】
ステップＳ−４１０：
残りの高位合成処理を行なう。これは従来技術通りである。
【００４０】
上記したように、値の計算が不要であるとわかった時点で、部分回路の動作を停止することができるようなクロックゲーティング回路生成を行なう部分を備えることで、高位合成を用いて回路を生成するとき、従来よりも消費電力が少ない回路を生成できる。
【００４１】
条件確定サイクルが早いほど効果が高いので、高位合成ツールは、条件確定サイクルをなるべく早い段階に割り付ける、というスケジューリングアルゴリズムを具備してもよい。このようなアルゴリズムを積極的に採用することで、より消費電力を低減することが可能となる。
【００４２】
リソースシェアリングが行なわれると演算部の独立性が無くなり、上記した処理を適用できなくなる場合がある。しかしながら、リソースシェアリングは回路面積を低減する効果がある。そのため、消費電力低減を優先するのか、回路面積低減を優先するのか（トレードオフ）を利用者が選択できるようにしてもよい。
【００４３】
上記トレードオフ選択は、回路全体にわたって適用されてもよいし、利用者が指定した一部に対してのみ適用できるような高位合成システムを構築してもよい。
【００４４】
クロックゲーティングの効果が高いのは、分岐している部分の演算処理が多い場合である。そのため、上記トレードオフ選択の条件を、演算処理部の処理サイクル数が一定数以上のとき、あるいは演算処理部のレジスタ数が一定数以上のときに消費電力を優先する、という判定ロジックを高位合成ツールが備えてもよい。
【００４５】
上記した実施の形態は、非競合データフロー部よりも条件判定部の条件信号値の確定タイミングの方が１サイクル以上早ければ、当該非競合データフロー部内のレジスタに対してクロックゲーティング回路を接続するという方法である。
【００４６】
しかし本発明は、上記の実施の形態に限定されるものではない。以下、本発明の他の実施の形態について説明する。
【００４７】
図５は、この発明の他の実施形態による高位合成装置である。図２の高位合成装置と異なる部分は、時間差計算部２０８と、クロックゲーティング回路生成部２０９との間に、リソース共有化部２０８Ａを設けた点である。
【００４８】
このリソース共有化部２０８Ａは、処理タイミングがずれており、同じ処理内容（例えば足し算、比較、引き算、掛け算、割り算など）の回路部分は、共通して使用されるように設計する。これにより、回路面積の低減を得るというものである。
【００４９】
次に図６を用いて、高位合成装置が設計する回路構成イメージ（符号３０２の回路図）を、従来の高位合成装置が設計する回路構成イメージ（符号３０１の回路図）と比較しながら説明する。
【００５０】
符号３０１が従来の高位合成処理で生成される回路図である。１０が条件判定部、１１、１２がデータフロー部、１３がマルチプレクサである。この回路設計では、処理１、処理２が独立同時進行する。また条件判定も独立して行なわれ条件信号が確定する。３つの処理が全て確定したところで、マルチプレクサが処理１、処理２のいずれかを条件信号に応じて出力する。
【００５１】
このような回路の場合、符号３０２で示すような回路設計を行なうことができる。即ち、
条件の出力を蓄えたレジスタの出力を、処理１および処理２の回路内部のレジスタに対して設定するクロックゲーティング回路の入力として用いることができる。ただし、条件確定後の演算部分は、リソース共有を行なうことが可能であるため、条件確定後のタイミングで動作する演算部分は、共有化データフロー部１４として構築し、全体回路面積を小さくすることが可能である。即ち、非競合データフロー部よりも条件信号部の値確定タイミングの方が１サイクル以上早ければ、条件信号確定タイミング以降の演算部（データフロー部）のリソース共有化を実施している。
【００５２】
また、リソース共有化したために、データフロー部１１、１２は、縮小されているが、サイクル境界のレジスタに対して、クロックゲーティング回路が設けられる。この実施形態の場合は、処理１、処理２の規模が小さく（処理時間が短い）、共有化された処理の規模が大きい(処理時間が長い）場合に有効である。この実施形態では、条件信号が得られるまでは、処理１、処理２のクロックを停止する。そして、条件信号が確定したときに、その値に応じて、必要とする処理１または処理２が実行される。そしてその結果がマルチプレクサ１３により選択されて、共有化データフロー部１４に取り込まれる処理となるような場合有効である。
【００５３】
次に、図７を用いて、上記した高位合成装置のデータ処理の流れを説明する。
【００５４】
ステップＳ−４０１：
C/C++またはSystemCなどで記述された高位の回路記述を受理し、読み込む。
【００５５】
ステップＳ−４０２：
読み込んだ高位記述を内部形式に変換して高位合成ツール内に蓄える。
【００５６】
ステップＳ−４０３：
高位記述からデータフローグラフを生成し、スケジューリングを行なう。この時点ではリソース共有化は行なわない。また、この時点で演算の終了するタイミング、条件信号の値が確定するタイミングは決定している。
【００５７】
ステップＳ−４０４：
データフローグラフをサーチし、マルチプレクサ部を抽出する。
【００５８】
ステップＳ−４０５：
抽出した各マルチプレクサに対する非競合データフロー部を抽出する。
【００５９】
ステップＳ−４０６：
抽出した各マルチプレクサに対する条件信号部を抽出する。
【００６０】
ステップＳ−４０７：
ステップＳ−４０５およびＳ−４０６で抽出した非競合データフロー部と、条件信号部について、それぞれの値が確定するタイミング（サイクル）をステップＳ−４０３のスケジューリング結果から得て、その差を計算する。
【００６１】
ステップＳ−４０８：
非競合データフロー部よりも条件信号部の値確定タイミングの方が１サイクル以上早いかどうかを判定する。
【００６２】
ステップＳ−４１１：
非競合データフロー部よりも条件信号部の値確定タイミングの方が１サイクル以上早ければ、条件信号確定タイミング以降の演算部（データフロー部）のリソース共有化を実施する。
【００６３】
ステップＳ−４１２：
データフロー部内で、条件確定タイミングよりも前のサイクルに割り付けられているレジスタに対してクロックゲーティング回路を接続する。
【００６４】
ステップＳ−４１０：
残りの高位合成処理を行なう。これは従来技術通りである。
【００６５】
上記のように値の計算が不要であるとわかった時点で、部分回路の動作を停止することができるようなクロックゲーティング回路生成を行なう部分を備えることで、高位合成を用いて回路を生成するとき、従来よりも消費電力が少ない回路を生成できる。
【００６６】
条件信号の値が確定したタイミング以降の演算処理回路は、可能な限りリソース共有化をはかるため、回路面積も可能な限り小さく抑えることが可能となる。
【００６７】
リソースシェアリングが行なわれると演算部の独立性が無くなり、上記の処理を適用できなくなる場合がある。しかしながら、リソースシェアリングは回路面積を低減する効果がある。そのため、消費電力低減を優先するのか、回路面積低減を優先するのか（トレードオフ）を利用者が選択できるようにしてもよい。
【００６８】
上記トレードオフ選択は、回路全体にわたって適用されてもよいし、利用者が指定した一部に対してのみ適用できるような高位合成システムを構築してもよい。
【００６９】
クロックゲーティングの効果が高いのは、分岐している部分の演算処理が多い場合である。そのため、上記トレードオフ選択の条件を、演算処理部の処理サイクル数が一定数以上のとき、あるいは演算処理部のレジスタ数が一定数以上のときに消費電力を優先する、という判定ロジックを高位合成ツールが備えてもよい。
【００７０】
図３及び図６の例では、データフロー部１１、１２の処理終了タイミングが同じあったが、必ずしも同じであるとは限らない。例えば図８に示すように、データフロー部１２の処理２が長くステップＴ５−Ｔ７を必要とする場合がある。このような場合にもステップＴ３以後の処理で、処理結果が不必要な回路部に対しては、クロックゲートが係るように設計される。さらに、図６で説明したように共有化データフロー部１４も構築される。このように実施することにより、低消費電力化及びＬＳＩ回路面積を小型化可能となる。
【００７１】
上記のようにこの発明は、共有化データフロー部１４の規模に応じて、以下の２種類の動作を選択できるように設計することができる。
【００７２】
即ち、条件信号に応じて選択されるデータを得るための処理１、処理２の規模が小さく（処理時間が短い）、共有化された処理の規模が大きい(処理時間が長い）場合である。この場合は、条件信号が得られるまでは、処理１、処理２のクロックを停止する。そして、条件信号が確定したときに、その値に応じて、処理１または処理２が実行される。そしてその結果がマルチプレクサ１３により選択されて、共有化データフロー部１４に取り込まれる処理となる。
【００７３】
逆に共有化された処理の規模の割合が小さい場合には、条件信号の値が確定した後は、その後に動作する処理１、処理２のいずれかのデータフロー部内のレジスタの動作を停止させるのである。
【００７４】
図９にはデータフロー部１２内のクロックゲーティング回路１２Ａの例を代表して示している。データフロー部１２内には、回路ブロック１２１、１２２、・・・・があり、例えば回路ブロック１２１と１２２の間には、タイミングを設定するためのレジスタＲＥＧ１が設けられている。レジスタＲＥＧ１には、データ転送を行なうために、クロックが入力される。このデータフロー部１２にでは、レジスタＲＥＧ１に入力するクロックラインにクロックゲーティング回路１２Ａが設けられる。クロックゲーティング回路１２Ａは例えばアンド回路であり、条件信号の値により、クロックが導通、非導通制御される。このクロックの導通を停止させることにより、レジスタＲＥＧ１の動作を停止させ、消費電力を軽減することができる。このようなクロックゲーティング回路とレジスタの関係を持つ部分は、ＬＳＩ回路内には多数存在するので、本発明の設計手法は低消費電力化に大きく貢献できる。
【００７５】
この発明は基本的には、マルチプレクサ部と条件判定部の関係に着目している。そしてマルチプレクサ部に与える条件信号の値が確定する確定タイミングがあることに着目している。また複数のデータフロー部として排他的で非競合のデータフロー部が存在することに着目している。そしてデータフロー部において条件信号の値確定タイミングの方よりも演算処理タイミングがずれている回路部がある場合、データフロー部の当該ずれている回路部に対して前記条件信号の値に応じてクロックの開又は閉を行なうクロックゲーティング回路を付加することを基本としている。このようなクロックゲーティング回路を付加して、制御できるようにしたので、回路動作として低消費電力化が得られ、また設計上では共有化データフロー部を構築することで、回路規模の小型化も得られるという利点を備える。
【００７６】
さらに、消費電力低減化アルゴリズムと、リソースシェアリングと、どちらを優先するかを利用者が選択できる手段を設けてもよい。また、演算処理が多い場所に対して消費電力低減アルゴリズムを適用し、そうでない箇所はリソースシェアリングを優先するような高位合成処理を行なうようにしてもよい。さらには、条件信号の確定タイミング以降の演算処理部は、可能な限りリソースシェアリングを行なうことで、消費電力を削減しつつ、回路面積があまり増大しないようにすることも可能である。また、条件確定サイクルをより早い段階に割り付けるスケジューリングアルゴリズムとして、クロックゲーティング回路をより多く割り当て、消費電力低減効果を高めることも可能となる。
【００７７】
図１０は、リソース共有化計算部２０８Ａにおいて設計される共有化ブロックの割合と、クロックゲーティング回路生成部２０９の生成数などをコントロールできるようにした例である。そのために、共有化ブロック割合制御部２１５を設けている。つまり、回路面積をできるだけ削減したいときは、共有化ブロックの割合を大きくしたほうが好ましい。しかし、極端に共有化ブロックの割合を大きくすると、例えば図６で説明したように、条件信号が確定するまで、処理１、２を停止させるような動作を実現する必要がある。しかしこれでは、思うような低消費電力化が達成できない場合も考えられる。これに対して、共有化ブロックの個数を制限することで、回路面積の縮小と消費電力低減とのバランスを取りながら例えば例えば図８で説明したような回路設計を行なうことが可能となる。このために共有化ブロック割合を調整できる制御部２１５を設けている。
【００７８】
ここで、制御部２１５に対しては、例えば利用者による操作信号を入力し、共有化ブロック割合を調整するようにしてもよい。リソース共有化計算部２０８Ａは、共有化ブロックがＮ個あった場合、制御信号に応じて、（Ｎ−Ｘ）を共有化ブロックとして設計する。残りのデータフロー部は、クロックゲーティング回路が付加される。
【００７９】
共有化ブロック割合を調整する手段としては、利用者の操作入力による方法の他に、演算部の数に応じて自動的に調整する方法であってもよい。即ち、図１０に示すように、非競合データフロー部抽出部２０６からの情報を用いて、演算部が幾つあるかを演算部計数部２１６にて計数する。計数した値は、操作信号として共有化ブロック割合制御部２１５に与えられる。演算部の数が閾値を越える場合には、数の増加とともに、共有化ブロックの割合を少なくする制御を行なう。これにより、演算処理が多い箇所においては、低消費電力低減が得られ、そうでない箇所においてはリソースシェアリングが得られ回路面積の低減が得られる。つまり共有化できる回路のうち、共有化をどの程度の割合にするかは、回路面積の低減の効果と、低消費電力の効果とのトレードオフであることから、割合を調整できるようにし最適な設計を得られるようにしている。
【００８０】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００８１】
【図１】高位合成システムにおいてこの発明が着目している回路設計状況を示す説明図である。
【図２】この発明の一実施形態による高位合成装置の処理ブロックを示す図である。
【図３】この発明の一実施形態により設計された回路の説明図である。
【図４】この発明の一実施形態による高位合成装置のデータ処理フローを示す図である。
【図５】この発明の他の実施形態による高位合成装置の処理ブロックを示す図である。
【図６】この発明の他の実施形態により設計された回路の説明図である。
【図７】この発明の他の実施形態による高位合成装置のデータ処理フローを示す図である。
【図８】この発明のさらに他の実施形態により設計された回路の説明図である。
【図９】この発明の装置で利用されるクロックゲーティング回路の例を示す図である。
【図１０】この発明のさらにまた他の実施形態による高位合成装置の処理ブロックを示す図である。
【符号の説明】
【００８２】
２０１・・・高位合成装置、２０２・・・高位記述受理部、２０３・・・データフローグラフ生成部、２０４・・・スケジューリング実施部、２０５・・・マルチプレクサ抽出部、２０６・・・非競合データフロー部抽出部、２０７・・・条件信号確定タイミング計算部、２０８・・・時間差計算部、２０８Ａ・・・リソース共有化計算部、２０９・・・クロックゲーティング回路生成部、２１０・・・高位合成主処理部。
【図１】
2008282360.tif 000003
【図２】
2008282360.tif 000004
【図３】
2008282360.tif 000005
【図４】
2008282360.tif 000006
【図５】
2008282360.tif 000007
【図６】
2008282360.tif 000008
【図７】
2008282360.tif 000009
【図８】
2008282360.tif 000010
【図９】
2008282360.tif 000011
【図１０】
2008282360.tif 000012