(57)【特許請求の範囲】
【請求項１】
論理回路の動作記述から論理回路を合成する論理回路設計支援システムであって、
前記論理回路の動作を記述した動作記述を入力し、複数の演算ノードとそれら複数の演算ノード間の接続関係を表現したコントロールデータフローグラフ（C/DFG）を生成する動作記述入力部と、
演算チェインの長さ、使用できる演算器の種類および個数からなる制約条件を読み込む制約条件入力部と、
前記制約条件入力部から入力された制約条件を満たす演算チェインを前記コントロールデータフローグラフから抽出する演算チェイン抽出部と、
前記動作記述から合成される論理回路の概略を与える基本回路構造を読み込み、その基本回路構造からすべての組み合わせの演算器チェインを抽出する基本回路構造入力部と、
前記抽出された演算チェインを種類別に分類しその出現頻度を計算し、前記演算チェインの出現頻度と前記基本回路構造の演算器チェインに基づいて各演算チェインの優先度を計算する優先度計算部と、
前記コントロールデータフローグラフ内の演算ノードの内で前記優先度計算部で計算された優先度の高い演算チェインに含まれる複数の演算ノードをグループ化するグループ化部と、
前記制約条件を満たしながら、前記グループ化部においてグループ化した前記コントロールデータフローグラフ内の演算ノードを同一のコントロールステップに割り付けるコントロールステップ割り付け部と、
前記コントロールステップ割り付け部によってコントロールステップの割り付けられた前記コントロールデータフローグラフ内の演算ノードに回路素子を割り当てて論理回路を合成して出力するアロケーション部と、を備えたことを特徴とする論理回路設計支援システム。
【請求項２】
前記優先度計算部において、前記演算チェイン抽出部によって抽出された前記演算チェインの夫々の出現頻度を解析し、その出現頻度が高い程、優先度が高くなるように優先度を計算することを特徴とした請求項１に記載の論理回路設計支援システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動作記述から論理回路を合成する論理回路設計方法に関し、特に動作記述から生成されたＣ／ＤＦＧ  （Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）  を入力とし、Ｃ／ＤＦＧ  中の各演算子を実行するコントロールステップを決定するスケジユーリング方法に関するものである。
【０００２】
【従来の技術】
ＬＳＩの集積度の向上により、大規模な集積回路をより短期間に設計できる論理回路設計支援システムが求められている。現在では、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述から論理回路のネツトリストを合成する論理合成システムが一般的であるが、次世代の論理回路設計支援システムとして、動作記述からＲＴＬ  記述を合成する高位合成（  動作合成などと呼ばれることもある）  システムが注目されている。
【０００３】
動作仕様からの論理設計では、まず動作仕様から演算列即ち制御とデータの流れを抽出し、Ｃ／ＤＦＧ  を生成し、次に、Ｃ／ＤＦＧ  の中の各演算の実行順序を決定するスケジューリングを行い、最後に、スケジューリング結果に基づいて演算に回路素子を割り付けて論理回路を合成するという手順を踏む  （Ｔｈｅ  Ｈｉｇｈ‐Ｌｅｖｅ１  Ｓｙｎｔｈｅｓｉｓ  ｏｆ  Ｄｉｇｉｔａｌ  Ｓｙｓｔｅｍｓ    ：ＭＩＣＨＡＥＬ  Ｃ．  ＭｃＦＡＲＬＡＮＤ，  ＡＬＩＣＥ  Ｃ．  ＰＡＲＫＥＲ，  ＲＡＵＬ  ＣＡＭＰＯＳＡＮＯ  ：  Ｐｒｏｃｅｅｄｉｎｇ  ｏｆ  ｔｈｅ  ＩＥＥＥ，  Ｖｏ１．７８，Ｎ０．２  ，１９９０）  。
【０００４】
スケジューリングでは、同時に使用できる演算器の個数制約のもとで演算列の実行が早く行われるように演算と回路素子の利用期間の対応関係を決定する作業を行う。
【０００５】
【発明が解決しようとする課題】
しかし、従来のスケジューリング方法では、使用できる演算器の個数制約だけでスケジューリングを行っており、回路素子の割り付けの段階において合成される回路の構造がより簡単になるようには考慮されていなかった。また、設計者から合成したい回路の基本的な回路構造の情報が与えられた際に、この情報に基づいて合成される回路の構造がより簡単になるようには考慮されていなかった。
【０００６】
例えば、高位合成システム０ＳＣＡＲ  （Ｂｕｉｌｔ  ‐ｉｎ  Ｃｈａｉｎｉｎｇ：  Ｉｎｔｒｏｄｕｃｉｎｇ  Ｃｏｍｐｌｅｘ  Ｃｏｍｐｏｎｅｎｔｓ  ｉｎｔｏ  Ａｒｃｈｉｔｅｃｔｕｒａ１  Ｓｙｎｔｈｅｓｉｓ，Ｐｒｏｃ．ｏｆ  Ａｓｉａ  ａｎｄ  Ｓｏｕｔｈ  Ｐａｃｉｆｉｃ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ  １９９７  ，  ＰＰ  ．５９９−６０５  ）では、セルライブラリに存在する複合コンポーネントで実行可能な演算チェインに対して、演算チェインに含まれる演算をできるだけ同一のコントロールステップに割り付けるようにスケジューリングを行つている。
【０００７】
しかし、このような方法では、セルライブラリにより決定される特定の演算チェインだけを優先の対象とするという問題点がある。さらに、タイミング制約、リソース制約などの他の制約との兼ね合いによって、必ずしも目的の演算チェインが同一のコントロールステップに割り付けられるとは限らないという問題点がある。
【０００８】
本発明の目的は、品質のよい論理回路を得ることができる論理回路設計方法を提案する事である。
【０００９】
本発明の他の目的は、スケジューリングにかかる処理時間を減少させることができる論理回路設計方法を提案する事である。
【００１０】
本発明の他の目的は、動作の高速化の可能な論理回路設計方法を提案する事である。
【００１１】
【課題を解決するための手段】
上記目的を達成するため本発明による論理回路設計支援システムは、前記論理回路の動作を記述した動作記述を入力し、複数の演算ノードとそれら複数の演算ノード間の接続関係を表現したコントロールデータフローグラフ（C/DFG）を生成する動作記述入力部と、演算チェインの長さ、使用できる演算器の種類および個数からなる制約条件を読み込む制約条件入力部と、前記制約条件入力部から入力された制約条件を満たす演算チェインを前記コントロールデータフローグラフから抽出する演算チェイン抽出部と、前記動作記述から合成される論理回路の概略を与える基本回路構造を読み込み、その基本回路構造からすべての組み合わせの演算器チェインを抽出する基本回路構造入力部と、前記抽出された演算チェインを種類別に分類しその出現頻度を計算し、前記演算チェインの出現頻度と前記基本回路構造の演算器チェインに基づいて各演算チェインの優先度を計算する優先度計算部と、前記コントロールデータフローグラフ内の演算ノードの内で前記優先度計算部で計算された優先度の高い演算チェインに含まれる複数の演算ノードをグループ化するグループ化部と、前記制約条件を満たしながら、前記グループ化部においてグループ化した前記コントロールデータフローグラフ内の演算ノードを同一のコントロールステップに割り付けるコントロールステップ割り付け部と、前記コントロールステップ割り付け部によってコントロールステップの割り付けられた前記コントロールデータフローグラフ内の演算ノードに回路素子を割り当てて論理回路を合成して出力するアロケーション部と、を備えたことを特徴とする。
【００１４】
更に、好適な実施例では、前記演算の各々に優先度を設定し、前記優先度計算処理において、この演算毎に設定された優先度を付加することを特徴とする。
【００１５】
即ち、本発明による論理回路設計方法では、セルライブラリの複合コンポーネントとは無関係に、Ｃ／ＤＦＧ  内の演算チェインの出現頻度など考慮して優先すべき演算チェインを自動的に決定し、決定した演算チェインを単位としてＣ／ＤＦＧ  内のノードをグループ化した後にスケジューリングが行われる。
【００１６】
又、演算チェインを自動的に決定することで、Ｃ／ＤＦＧ  の特性に適合するスケジューリングが行えるようになり、結果として品質のよい論理回路を得ることができる。また、Ｃ／ＤＦＧ  のノードをグループ化しておくことによって、同じグループ内の演算は必ず同一のコントロールステップに割り付けることができるようになる。
【００１７】
さらにグループ化によってスケジューリング対象となるＣ／ＤＦＧ  のノード数を削減できるので、スケジューリングにかかる処理時間を減少させることも可能となる。
【００１８】
【発明の実施の形態】
本発明によるスケジューリング方法の一実施形態を図１および図２を参照して説明する。図１はこのスケジューリング方法の全体構成を示す図である。図２はこのスケジューリング方法の全体的な動作を示すフローチャートである。
【００１９】
図１に示すように、本発明の一実施形態は、論理回路の動作を記述した動作記述を入力する動作記述入力部１０１と、演算チェインの長さや使用できる演算器の最大個数などの制約条件を入力する制約条件入力部１０２と、スケジューリング結果のC/DFG （コントロールデータフローグラフ）の各ノードに回路素子を割り付けて論理回路を合成するアロケーション部１０３と、C/DFG 、制約条件、基本回路構造、演算器チェイン、演算チェイン、演算チェインの優先度、などを保持する記憶部１０４と、動作記述から合成される論理回路の概略を与える基本回路構造を入力する基本回路構造入力部１０５と、C/DFG から演算チェインを抽出する演算チェイン抽出部１０６と、抽出された演算チェインの優先度を計算する優先度計算部１０７と、C/DFG を演算チェインを単位としてグループ化するグループ化部１０８と、グループ化されたC/DFG の各ノードにコントロールステップを割り付けるコントロールステップ割り付け部１０９より構成される。
【００２０】
次に図２を参照して本発明の一実施形態の全体的な動作を説明する。まず、動作記述入力部１０１において、動作記述入力処理２０１により、論理回路の動作仕様を記述した動作記述２０９を読み込みＣ／ＤＦＧ  ２１０を生成し、記憶部１０４に保持する。次に、制約条件入力部１０２において、制約条件入力処理２０２により、演算チェインの長さ、使用できる演算器の種類および個数、などの制約条件２１１を読み込み、記憶部１０４に保持する。次に、基本回路構造入力部１０５において、基本回路構造入力処理２０３により、アロケーション処理２０８により合成される論理回路の一部を指定する基本回路構造２１２を読み込み、記憶部１０４に保持する。同時に、基本回路構造からすべての組み合わせの演算器チェイン２１３を抽出し、記憶部１０４に保持する。次に、演算チェイン抽出部１０６において、演算チェイン抽出処理２０４を行い、Ｃ／ＤＦＧ  ２１０から記憶部１０４に保持された制約条件を満たすすべての演算チェイン２１４を抽出し、記憶部１０４に保持する。次に、優先度計算部１０７において、優先度計算処理２０５を行い、演算チェイン２１４の種類ごとの優先度２１５を求め、記憶部１０４に保持する。優先度２１５の計算は、（１）演算チェイン２１４を種類別に分類した場合の出現頻度、（２）演算器チェイン２１３との適合度、（３）記憶部１０４に保持された制約条件のうち優先度計算に関する制約、に基づいて行われる。次に、グループ化部１０８において、グループ化処理２０６により、記憶部１０４に保持されたＣ／ＤＦＧ  を優先度２１５に基づいてグループ化し、記憶部１０４に保持する。次にコントロールステップ割り付け部１０９において、コントロールステップ割り付け処理２０７により、グループ化されたＣ／ＤＦＧ  ２１０の各ノードにコントロールステップを割り付けて、記憶部１０４に保持する。最後に、アロケーション部１０３において、アロケーション処理２０８により、コントロールステップの割り付けられたＣ／ＤＦＧ  の各ノードに回路素子を割り当てて論理回路を合成し、論理回路２１６を出力する。
【００２１】
ここで、本発明の特徴とするところは、演算チェイン抽出部１０６において、制約条件入力部１０２から入力された演算チェインの長さに関する制約を満たす演算チェインをC/DFG から抜き出す処理と、基本回路構造入力部１０５において、入力された基本回路構造から演算器チェインを抽出する処理と、優先度計算部１０７において、抽出された演算チェインを種類別に分類しその出現頻度を計算し、演算チェインの出現頻度と基本回路構造の演算器チェインを考慮して各演算チェインの優先度を計算する処理と、グループ化部１０８において、C/DFG の演算ノードをグループ化する処理と、コントロールステップ割り付け部１０９において、制約条件入力部１０２から入力された演算器の個数などの制約を満たしながら、グループ化部１０８において決定した演算チェインを同一のコントロールステップに割り付ける処理と、を備えたところにある。
【００２２】
以下、図３から図１２を用いて本発明の一実施形態の具体的な動作を説明する。
【００２３】
まず、図３に示す動作記述を入力として動作記述入力処理２０１を行う。２０１は図４に示すＣ／ＤＦＧ  を生成し記憶部１０４に保持する。動作記述は回路の入力がｉｎ１  ，ｉｎ２  ，ｉｎ３  ，ｉｎ４  ，ｉｎ５  であること、回路の出力がｏｕｔ１，０ｕｔ２    であること、算術式で記述された演算が回路内で行われること、を表している。Ｃ／ＤＦＧ  は、ｉｎ１，ｉｎ２を入力として乗算４０１が行われること、乗算４０１は加算４０４よりも先に計算されることなどを表している。
【００２４】
次に、制約条件２１１として、
（制約１）演算チェインの長さ＝２
（制約２）加算器＝２，乗算器＝１
（制約３）加算の優先度＝１０、乗算の優先度＝２０
を入力として、制約条件入力処理処理２０２を行うと、これらの制約条件が内部形式に変換され、記憶部１０４に保持される。（制約１）は、演算チェイン抽出処理２０４において長さが２である演算チェインを抽出することを、（制約２）は、コントロールステップ割り付け処理２０７において加算器が２個、乗算器が１個が同一のコントロールステップで使用できることを、（制約３）は、優先度計算処理２０５において、加算の優先度が１０であること、乗算の優先度が２０であることを、それぞれ表している。
【００２５】
次に、図５に示す基本回路構造を入力として基本回路構造入力処理２０３を行うと、これを内部形式に変換して記憶部１０４に保持する。基本回路構造は、入力５０１、入力５０２、乗算器５０３、加算器５０４、レジスタ５０６が図に示されたように接続されていることを表している。さらに、基本回路構造入力処理２０３は、基本回路構造に対して、（１）入力からレジスタに至る経路、（２）レジスタからレジスタに至る経路、（３）レジスタから出力に至る経路、のそれぞれを探索し、図６に示す演算器のチェインを見つけ出し記憶部１０４に保持する。演算器チェインは、入力５０１→乗算器５０３→加算器５０４→レジスタ５０５の経路、および、レジスタ５０５→乗算器５０３→加算器５０４→レジスタ５０５の経路において発見される。
【００２６】
次に、Ｃ／ＤＦＧ  を入力として演算チェイン抽出処理２０４を行う。（制約１）演算チェインの長さ＝２を満足するすべての演算チェインを探索し、図７に示す演算チェイン７１０を発見する。図７では、演算チェインを種類別に分類されており、７０１に示すように乗算→加算の演算チェインが３個、７０２に示すように加算→加算の演算チェインが４個、７０３に示すように加算→乗算の演算チェインが２個、それぞれ存在する。
【００２７】
次に、演算器チェイン、演算チェイン７１０を入力として優先度計算処理２０５を行う。優先度の計算は演算チェインの種類ごとに行う。優先度の計算の一実施形態として以下に示した（式１）を用いる場合について説明する。
【００２８】
0003602697.tif 000002
＜演算の優先度の総和＞は、あらかじめ各演算に与えられた優先度に基づいて、演算チェインに含まれるすべての演算の優先度の総和を求めたものである。（制約３）加算の優先度＝１０、乗算の優先度＝２０とすると、演算チェイン７０１、７０２、７０３の＜演算の優先度の総和＞はそれぞれ、２０＋１０＝３０、１０＋１０＝２０、１０＋２０＝３０となる。
【００２９】
0003602697.tif 000003
により求める。ここで＜一致度＞は＜演算チェインの長さ＞／＜演算チェインを実行できる演算器チェインの長さ＞、＜Ｋ１＞は任意の定数である。演算チェイン７０１の長さは２、７０１を実行できる演算器チェインの長さは２、＜Ｋ１＞を１００とすると、演算チェイン７０１の＜演算器チェインによる加算＞は、（２／２）＊１００＝１００となる。演算チェイン７０２、７０３には、実行できる演算器チェインがないので、＜演算器チェインによる加算＞はともに０とする。
【００３０】
0003602697.tif 000004
により求める。ここで、＜Ｋ２＞は任意の定数である。各種類ごとの演算チェインの出現回数は７０１が３、７０２が４、７  ０  ３が２、＜すべての演算チェインの出現回数＞は、３＋４＋２＝９なので、＜Ｋ２＞を１とするときの、演算チェイン７０１、７０２、７０３の＜出現頻度による加算＞は、それぞれ３／９＊１＝０．３３、４／９＊１＝０．４５、２／９＊１＝０．２２となる。
【００３１】
以上より、演算チェイン７０１、７０２、７０３の優先度は、それぞれ、
７０１：３０＋１００＋０．３３＝１３０．３
７０２：２０＋０＋０．４５＝２０．４５
７０３：３０＋０＋０．２２＝３０．２２
となる。（式１）（式２）（式３）において、＜Ｋ１＞と＜Ｋ２＞の値の与え方により
（１）演算器の優先度を最優先（Ｋ１＝Ｋ２＝０）
（２）演算器チェインを最優先（Ｋ１＝非常に大きな値、Ｋ２＝０）
（３）出現頻度を最優先（Ｋ１＝０，Ｋ２＝非常に大きな値）
などの方針で優先度を計算することができる。
【００３２】
次に、Ｃ／ＤＦＧ  ２１０と優先度２１５を入力としてグループ化処理２０６を行う。この処理では、優先度計算処理２０５により決定された優先演算チェインに含まれる複数のノードを１つの複合演算ノードヘとマージする。優先度計算処理２０５において、＜Ｋ１＞＝１００、＜Ｋ２＞＝１とした場合に、最高の優先度となる演算チェイン７０１だけをグループ化の候補とする場合には、Ｃ／ＤＦＧ  を入力すると図８に示すＣ／ＤＦＧ  が得られる。図８では、乗算４０１と加算４０４が複合演算ノード８０１に、乗算４０６と加算４０８が複合演算ノード８０２に乗算４０７と加算４０９が複合演算ノード８０３に、それぞれマージされている。
【００３３】
次に、グループ化されたＣ／ＤＦＧ  ２１０を入力としてコントロールステップ割り付け処理２０７を行う。この処理では、制約条件２１１のうち演算器の資源制約を満たすようにＣ／ＤＦＧ  の各演算ノードを実行するコントロールステップを決定する。Ｃ／ＤＦＧ  を入力として、（制約２）加算器＝２，乗算器＝１のもとで処理２０７を行うと、図９に示す結果が得られる。図９は、加算４０２、加算４０３が第１コントロールステップで実行されること、複合演算８０１（乗算４０１、加算４０４）が第２コントロールステップで実行されることなどを表している。
【００３４】
最後に、基本回路構造２１２とコントロールステップが割り付けられたＣ／ＤＦＧ  ２１０を入力としてアロケーション処理２０８を行う。この処理では、Ｃ／ＤＦＧ  を動作させるために必要となる演算器や結線を基本回路構造に付加していき最終的な論理回路を合成する。基本回路構造とＣ／ＤＦＧ  を入力とすると、図１０に示す論理回路が合成される。
【００３５】
【発明の効果】
本発明の有効性を示すために、Ｃ／ＤＦＧ  を入力として、演算チェイン抽出処理２０４、優先度計算処理２０５、グループ化処理２０６を行わないでコントロールステップ割り当て処理２０７および、（制約２）のもとでアロケーション処理２０８を行つた結果を図１１、図１２に示す。グループ化処理２０６を行わない図１１では、演算ノードが１０個であるが、グループ化処理２０６を行った図９では７個となっている。演算ノードの個数を減らすことにより、コントロールステップ割り付けの計算量を減少させることができる。また、グループ化処理２０６を行わない図１２では、乗算器が１個、加算器が２個、レジスタが３個、太線で表されたマルチプレクサが６個含まれており、これらを接続している結線が３３本となっている。グループ化処理２０６を行った図１０では、乗算器が１個、加算器が２個、レジスタが２個、マルチプレクサが６個含まれており、これらを接続している結線が２９本となっている。両者を比較すると、レジスタが１個、結線が４本少なくなっている。以上の結果より、本発明が有用な効果を持っていることがわかる。
【図面の簡単な説明】
【図１】本発明の一実施形態によるスケジューリング方法の構成図。
【図２】本発明の一実施形態によるスケジューリング方法のフローチャート。
【図３】本発明の一実施形態によるスケジューリング方法の動作記述。
【図４】本発明の一実施形態によるスケジューリング方法のＣ／ＤＦＧ  。
【図５】本発明の一実施形態によるスケジューリング方法の基本回路構造を示す図。
【図６】本発明の一実施形態によるスケジューリング方法の演算器チェインを示す図。
【図７】本発明の一実施形態によるスケジューリング方法の演算チェインを示す図。
【図８】本発明の一実施形態によるスケジューリング方法のグループ化されたＣ／ＤＦＧ  を示す図。
【図９】本発明の一実施形態によるスケジューリング方法のコントロールステップ割付されたＣ／ＤＦＧ  を示す図。
【図１０】本発明の一実施形態によるスケジューリング方法で合成された論理回路を示す図。
【図１１】従来技術によるスケジューリング方法を説明する図。
【図１２】別の従来技術によるスケジューリング方法を説明する図。
【符号の説明】
１０１  動作記述入力部
１０２  制約条件入力部
１０３  アロケーション部
１０４  記憶部
１０５  基本回路構造入力部
１０６  演算チェイン抽出部
１０７  優先度計算部
１０８  グループ化部
１０９  コントロールステップ割り付け部
２０１  動作記述入力処理
２０２  制約条件入力処理
２０２  制約条件入力処理処理
２０３  基本回路構造入力処理
２０４  演算チェイン抽出処理
２０５  優先度計算処理
２０６  グループ化処理
２０７  コントロールステップ割り付け処理
２０８  アロケーション処理
２０９  動作記述
２１１  制約条件
２１２  基本回路構造
２１３  演算器チェイン
２１４  演算チェイン
２１５  優先度
２１６  論理回路
３０１  動作記述
５０３  乗算器
５０４  加算器
５０５、５０６  レジスタ
５１０  基本回路構造
７０１  演算チェイン
７０１、７０２、７０３、７１０  演算チェイン
８０１、８０２、８０３  複合演算ノード
【図１】
0003602697.tif 000005
【図２】
0003602697.tif 000006
【図３】
0003602697.tif 000007
【図４】
0003602697.tif 000008
【図５】
0003602697.tif 000009
【図６】
0003602697.tif 000010
【図７】
0003602697.tif 000011
【図８】
0003602697.tif 000012
【図９】
0003602697.tif 000013
【図１０】
0003602697.tif 000014
【図１１】
0003602697.tif 000015
【図１２】
0003602697.tif 000016