(57)【要約】【課題】回路規模の増大を抑え、かつ消費電力低減効果が大きい論理回路を設計できる高位合成装置を提供する。【解決手段】データフロー解析及びスケジューリングを行い、動作記述からデータフローグラフを生成するスケジューリング部１１１と、前記データフローグラフからレジスタに割り当てられるポイントを抽出し、このポイントを示すレジスタ情報１０３を出力し、所定のシミュレーションによる前記ポイントの変数データ代入回数又は保持データ遷移回数の少なくともいずれか一方の情報が含まれる動的解析データ１０４が与えられるスケジューリング結果入出力部１１２と、前記動的解析データを参照して、前記動作記述に対して回路素子を割り付けるアロケーション部１１３と、前記アロケーション部による回路素子の割り付けに基づいて前記論理回路を生成するＲＴＬ記述生成部と、を備える。【選択図】図１
2009157440.tif 000002
【特許請求の範囲】
【請求項１】
動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成装置であって、
データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成するスケジューリング部と、
前記データフローグラフからレジスタに割り当てられるポイントを抽出し、このポイントを示すレジスタ情報を出力し、所定のシミュレーションにより前記ポイントに変数データが代入される回数又は前記ポイントにおいて保持する値が変化する回数の少なくともいずれか一方の情報が含まれる動的解析データが与えられるスケジューリング結果入出力部と、
前記動的解析データを参照して、前記動作記述に対して回路素子を割り付けるアロケーション部と、
前記アロケーション部による回路素子の割り付けに基づいて前記論理回路を生成するＲＴＬ記述生成部と、
を備えることを特徴とする高位合成装置。
【請求項２】
前記アロケーション部は前記動的解析データを用いて、変数データが代入される回数又は保持する値が変化する回数の少なくともいずれか一方に基づいて前記ポイントをグループ化し、各グループに対してレジスタを割り付けることを特徴とする請求項１に記載の高位合成装置。
【請求項３】
動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成システムであって、
データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成するスケジューリング部と、
前記データフローグラフからレジスタに割り当てられるポイントを抽出し、このポイントを示すレジスタ情報を出力するスケジューリング結果入出力部と、
所定のシミュレーションデータ、前記動作記述及び前記レジスタ情報が与えられ、前記動作記述に対して前記シミュレーションデータを用いてシミュレーションを実行し、前記レジスタ情報により示される前記ポイントにおける変数データの代入回数又は保持される値の遷移回数の少なくともいずれか一方の情報を含む動的解析データを生成し、出力するシミュレータと、
前記動的解析データを参照し、前記動作記述に対して回路素子を割り付けるアロケーション部と、
前記アロケーション部による回路素子の割り付けに基づいて前記論理回路を生成するＲＴＬ記述生成部と、
を備えることを特徴とする高位合成システム。
【請求項４】
動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成方法であって、
データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成し、
前記データフローグラフからレジスタに割り当てられるポイントを抽出し、
前記動作記述に対して所定のシミュレーションデータを用いてシミュレーションを実行し、
シミュレーション結果から前記ポイントにおいて変数データが代入される回数又は前記ポイントにおいて保持する値が変化する回数の少なくともいずれか一方の情報を含む動的解析データを生成し、
前記動的解析データを参照して、前記動作記述に対して回路素子を割り付け、
前記回路素子の割り付けに基づいて前記論理回路を生成することを特徴とする高位合成方法。
【請求項５】
前記動的解析データを参照して、変数データが代入される回数又は保持する値が変化する回数の少なくともいずれか一方に基づいて前記ポイントをグループ化し、各グループに対してレジスタを割り付けることを特徴とする請求項４に記載の高位合成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位合成装置、高位合成システム、及び高位合成方法に関するものである。
【背景技術】
【０００２】
半導体集積回路の微細化に伴い、１チップ上に実装可能なシステムＬＳＩの規模が増大している。このような大規模なシステムを短期間に効率的に設計するための手法として、Ｃ言語等の高級言語によってシステム（論理回路）の動作のみを記述した動作記述を作成し、この動作記述からクロックサイクル、レジスタ、演算器等のハードウェア情報を含んだＲＴＬ（Register Transfer Level）記述に合成する高位合成が知られている（例えば特許文献１参照）。
【０００３】
高位合成では面積や遅延時間等の静的に解析が容易な指標を元に論理回路の設計が行われているが、動的な特性である消費電力に関しては考慮されていない。論理回路の消費電力を低減する技術として、ゲーテッドクロック回路を用いてクロック供給を停止することが知られている。しかし、すべての論理回路にゲーテッドクロック回路を適用すると、回路規模が増大する。また、動作していない時間の短い論理回路に対しては、クロック供給を停止できる回数が少なく、消費電力の低減効果が小さい。
【０００４】
このように従来の高位合成では、回路規模の増大を抑え、かつ消費電力低減効果が大きい論理回路の設計が出来ないという問題を有していた。
【特許文献１】特開２００２−３６６５９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は回路規模の増大を抑え、かつ消費電力低減効果が大きい論理回路を設計できる高位合成装置、高位合成システム、及び高位合成方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様による高位合成装置は、動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成装置であって、データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成するスケジューリング部と、前記データフローグラフからレジスタに割り当てられるポイントを抽出し、このポイントを示すレジスタ情報を出力し、所定のシミュレーションにより前記ポイントに変数データが代入される回数又は前記ポイントにおいて保持する値が変化する回数の少なくともいずれか一方の情報が含まれる動的解析データが与えられるスケジューリング結果入出力部と、前記動的解析データを参照して、前記動作記述に対して回路素子を割り付けるアロケーション部と、前記アロケーション部による回路素子の割り付けに基づいて前記論理回路を生成するＲＴＬ記述生成部と、を備えるものである。
【０００７】
本発明の一態様による高位合成システムは、動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成システムであって、データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成するスケジューリング部と、前記データフローグラフからレジスタに割り当てられるポイントを抽出し、このポイントを示すレジスタ情報を出力するスケジューリング結果入出力部と、所定のシミュレーションデータ、前記動作記述及び前記レジスタ情報が与えられ、前記動作記述に対して前記シミュレーションデータを用いてシミュレーションを実行し、前記レジスタ情報により示される前記ポイントにおける変数データの代入回数又は保持される値の遷移回数の少なくともいずれか一方の情報を含む動的解析データを生成し、出力するシミュレータと、前記動的解析データを参照し、前記動作記述に対して回路素子を割り付けるアロケーション部と、前記アロケーション部による回路素子の割り付けに基づいて前記論理回路を生成するＲＴＬ記述生成部と、を備えるものである。
【０００８】
本発明の一態様による高位合成方法は、動作記述からレジスタ・トランスファ・レベル（ＲＴＬ）の論理回路を自動生成する高位合成方法であって、データフロー解析及びスケジューリングを行い、前記動作記述から演算の動作サイクルを示すデータフローグラフを生成し、前記データフローグラフからレジスタに割り当てられるポイントを抽出し、前記動作記述に対して所定のシミュレーションデータを用いてシミュレーションを実行し、シミュレーション結果から前記ポイントにおいて変数データが代入される回数又は前記ポイントにおいて保持する値が変化する回数の少なくともいずれか一方の情報を含む動的解析データを生成し、前記動的解析データを参照して、前記動作記述に対して回路素子を割り付け、前記回路素子の割り付けに基づいて前記論理回路を生成するものである。
【発明の効果】
【０００９】
本発明によれば、回路規模の増大を抑え、かつ消費電力低減効果が大きい論理回路を設計できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面に基づいて説明する。
【００１１】
図１に本発明の実施形態に係る高位合成システムの概略構成を示す。高位合成システムは、高位合成装置１１０及びシミュレータ１２０を備える。
【００１２】
高位合成装置１１０はスケジューリング部１１１、スケジューリング結果入出力部１１２、アロケーション部１１３、及びＲＴＬ記述生成部１１４を有する。
【００１３】
高位合成装置１１０に動作記述１０１が与えられる。動作記述１０１は、回路の入力から出力までの処理内容が定義されており、例えばＣ言語により記述されている。動作記述の（一部の）一例を図２に示す。
【００１４】
スケジューリング部１１１はデータフロー解析を行い、動作記述１０１中の演算をどの動作サイクル（タイムステップ）で実行するかを決定する。異なるタイムステップ間のデータは記憶素子（例えばレジスタ、ラッチ、メモリ等）に格納されることになる。
【００１５】
スケジューリング結果入出力部１１２は、この記憶素子に割り当てるポイント（演算器の出力）の情報をレジスタ情報１０３として出力する。
【００１６】
図２に示す動作記述をデータフロー解析し、スケジューリングを行うことで生成されるデータフローグラフを図３に示す。図３から、減算演算子３０１及び加算演算子３０２がステップ１に、乗算演算子３０３及び加算演算子３０４がステップ２に、除算演算子３０５がステップ３に割り当てられることが分かる。
【００１７】
また、ステップを跨ぐ演算子の出力にあたるポイントＰ０〜Ｐ４が記憶素子に割り当てられることになり、レジスタ情報１０３にはこれらのポイントが示される。
【００１８】
シミュレータ１２０は、動作記述１０１、シミュレーション用入力データ１０２、及びレジスタ情報１０３が与えられる。シミュレーション用入力データは、この高位合成システムで設計する論理回路で実際に処理されるデータ（サンプルデータ）である。例えば、画像処理用の回路を設計する場合、シミュレーション用入力データ１０２には画像データが用いられる。
【００１９】
シミュレータ１２０は、動作記述１０１及びレジスタ情報１０３から、記憶素子に割り当てられるポイント（レジスタ情報１０３により示された箇所）を特定する。そして、シミュレータ１２０はシミュレーション用入力データ１０２を用いてシミュレーションを行い、レジスタ情報１０３で示されたポイントのデータを保存する。
【００２０】
例えば、図２に示す動作記述及び図３に示すレジスタ情報から、図４に示すような内部状態を作成し、シミュレーションを行うことで実際に変化するポイントｐ０〜ｐ４の値を保存する。
【００２１】
シミュレータ１２０は保存したデータの解析を行う。例えば、各ポイントに変数が代入される回数や、各ポイントの値が書き替わる回数を検出する。シミュレータ１２０は解析結果を動的解析データ１０４として出力する。
【００２２】
図４に示す内部状態に対するシミュレーション用入力データと各ポイントの値の一例を図５に示す。図５は１０回分のシミュレーション用入力データを用意して、シミュレーションを実施した結果である。図５では回数の項目が実施回数を示し、それぞれｉｎ０〜ｉｎ５の縦の項目が入力データを示し、ｐ０〜ｐ４の項目がレジスタ情報で示されたポイントの各々での値を示す。
【００２３】
図５に示すシミュレーション結果を解析して得られる動的解析データの一例を図６に示す。代入回数は各ポイントに変数が代入される回数を示す。遷移回数は、各ポイントの値が、１回前にシミュレーションを実施した時の値と異なる回数を示す。図６からポイントｐ０とｐ３で遷移回数が少ないことが分かる。
【００２４】
高位合成装置１１０のスケジューリング結果入出力部１１２に動的解析データ１０４が入力される。
【００２５】
アロケーション部１１３は、動作記述１０１、データフローグラフ及び動的解析データ１０４を用いてアロケーション処理を行う。アロケーション処理とは、動作記述に対して回路素子（演算器等）を割り付けて論理回路を合成する処理である。
【００２６】
アロケーション部１１３は動的解析データ１０４を参照して、レジスタ情報１０３に示されるポイントにレジスタ（記憶素子）を割り当てる。例えば、変数が代入される回数や値が書き替わる回数が少ないポイントをグループ化して、同じレジスタに割り当てる。
【００２７】
例えば、図６に示す動的解析データから、図７に示すように、ポイントｐ０とｐ３を１つのレジスタＲ０００１に割り当て、残りのポイントｐ１、ｐ２、及びｐ４を別のレジスタＲ０００２に割り当てるように決定する。
【００２８】
ＲＴＬ記述生成部１１４は、アロケーション処理後のデータを用いてＲＴＬ（Register Transfer Level：レジスタ転送レベル）の回路記述１０５を生成して出力する。
【００２９】
このようにして設計された論理回路において、変数が代入される回数や値が書き替わる回数が少ないポイントに対して割り当てられたレジスタにのみクロック供給停止回路を適用する。言い換えれば、変数が代入される回数や値が書き替わる回数が少ないポイントに対してゲーテッドクロックレジスタを割り当てる。
【００３０】
例えば図２〜図７に示した例では、図８に示すようにレジスタＲ０００１にのみクロック供給停止回路８０１を適用して、ゲーティングされたクロック信号を与える。
【００３１】
このように、変数が代入される回数や値が書き替わる回数が少ないポイントをグループ化して、同じレジスタに割り当て、そのレジスタにのみクロック供給停止回路を適用することで、効率良く低消費電力となる論理回路を設計できる。また、すべてのレジスタにクロック供給停止回路を適用することに比べて、クロック供給停止回路の数を減らすことができるので、回路規模の増大を抑えることができる。
【００３２】
本実施形態による高位合成方法を図９に示すフローチャート及び図２〜図７に示すものとは異なる例を用いて説明する。
（ステップＳ９０１）動作記述を用いたデータフロー解析が行われ、スケジューリング処理される。動作記述の一例を図１０に示し、スケジューリングを行った結果得られるデータフローグラフを図１１に示す。
（ステップＳ９０２）レジスタに割り当てられるポイントを示すレジスタ情報が出力される。図１１に示す例では、ポイントｐ０〜ｐ５を示すものとなる。
（ステップＳ９０３）動作記述及びレジスタ情報を用いて内部状態を作成し、シミュレーション時にデータ（演算結果）を保存する箇所を特定する。図１０に示す動作記述及び図１１に示すレジスタ情報から図１２に示すような内部状態が作成される。
（ステップＳ９０４）シミュレーション用入力データを用いてシミュレーションを実施し、各ポイントの値を保存する。シミュレーション用入力データの一例と、このシミュレーション用入力データを用いてシミュレーションを行った時の図１２に示す内部状態におけるポイントｐ０〜ｐ５各々の値を図１３に示す。
（ステップＳ９０５）保存したデータの解析を行い、動的解析データを生成、出力する。動的解析データには例えば各ポイントの変数代入回数や遷移回数が含まれる。
例えば図１３に示すシミュレーション結果から図１４に示すような動的解析データが生成される。ポイントｐ０、ｐ２の代入回数が少ないことが分かる。
（ステップＳ９０６）アロケーション処理が行われる。レジスタの割り当て時には動的解析データが参照される。
【００３３】
例えば図１４に示す動的解析データを参照して、図１５に示すようにポイントｐ０、ｐ２、ｐ３が１つのレジスタＲ０００１に割り当てられ、ポイントｐ１、ｐ４、ｐ５が１つのレジスタＲ０００２に割り当てられる。
【００３４】
ここで代入回数の少ないポイントｐ０、ｐ２に加えてポイントｐ３がレジスタＲ０００１に割り当てられている。これは図１１から分かるように、ポイントｐ３とｐ４が同時刻にデータを保持するため、ポイントｐ３とｐ４のいずれか一方をレジスタＲ０００１に割り当てる必要があるからである。
【００３５】
図１６に示すように、レジスタＲ０００１にはポイントｐ０、ｐ２のみ割り当て、ポイントｐ３を新たにレジスタＲ０００３に割り当てるようにしてもよい。この場合、レジスタＲ０００１における消費電力の低減効果は大きくなるが、レジスタ数が増加するため、回路規模の増大に伴う消費電力の増加を考慮する必要がある。
【００３６】
このように、本実施形態では、設計後の論理回路で実際に処理されるデータを用いてシミュレーションを行い、シミュレーション結果から変数データの代入回数や保持する値の遷移回数が少ないポイントをグルーピングしてレジスタを割り当てる。そして、このようなゲーテッドクロックを与えることによる消費電力低減効果が大きいレジスタにのみクロック供給停止回路を適用するため、回路規模の増大を抑制しつつ、消費電力が低減される論理回路を設計できる。
【００３７】
上記実施形態では、高位合成装置１１０の動作中にシミュレーションを行っているかのようにみえるが、高位合成に用いる動作記述１０１とパラメータが一致すればレジスタ情報１０３は同じ結果となるので、このレジスタ情報１０３と複数のシミュレーション用入力データ１０２から、複数の動的解析データ１０４を得て、異なる複数の回路記述１０５を得ることが可能である。
【００３８】
上記実施形態ではシミュレーション結果から変数代入回数や遷移回数を検出していたが、レジスタは物理的には１ビット毎に生成されるので、各ビット毎に１となっている確率を求めて、動的解析データに含めても良い。
【００３９】
上述した実施の形態は一例であって限定的なものではないと考えられるべきである。本発明の技術的範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施形態に係る高位合成システムの概略構成図である。
【図２】動作記述の一例を示す図である。
【図３】データフローグラフの一例を示す図である。
【図４】動作記述及びレジスタ情報から作成される内部状態の一例を示す図である。
【図５】シミュレーション用入力データとシミュレーション結果の一例を示す図である。
【図６】動的解析データの一例を示す図である。
【図７】アロケーション処理におけるレジスタ割り当ての一例を示す図である。
【図８】クロック供給停止回路を適用した回路の一例を示す図である。
【図９】同実施形態による高位合成方法を説明するフローチャートである。
【図１０】動作記述の一例を示す図である。
【図１１】データフローグラフの一例を示す図である。
【図１２】動作記述及びレジスタ情報から作成される内部状態の一例を示す図である。
【図１３】シミュレーション用入力データとシミュレーション結果の一例を示す図である。
【図１４】動的解析データの一例を示す図である。
【図１５】アロケーション処理におけるレジスタ割り当ての一例を示す図である。
【図１６】アロケーション処理におけるレジスタ割り当ての別の例を示す図である。
【符号の説明】
【００４１】
１０１  動作記述
１０２  シミュレーション用入力データ
１０３  レジスタ情報
１０４  動的解析データ
１０５  回路記述
１１０  高位合成装置
１１１  スケジューリング部
１１２  スケジューリング結果入出力部
１１３  アロケーション部
１１４  ＲＴＬ記述生成部
１２０  シミュレータ
【図１】
2009157440.tif 000003
【図２】
2009157440.tif 000004
【図３】
2009157440.tif 000005
【図４】
2009157440.tif 000006
【図５】
2009157440.tif 000007
【図６】
2009157440.tif 000008
【図７】
2009157440.tif 000009
【図８】
2009157440.tif 000010
【図９】
2009157440.tif 000011
【図１０】
2009157440.tif 000012
【図１１】
2009157440.tif 000013
【図１２】
2009157440.tif 000014
【図１３】
2009157440.tif 000015
【図１４】
2009157440.tif 000016
【図１５】
2009157440.tif 000017
【図１６】
2009157440.tif 000018