(57)【要約】【課題】  所望のパイプライン回路を短期間で容易に設計するための設計支援装置を提供する。【解決手段】  論理回路の設計に用いられる設計支援装置であって、論理回路の動作を記述した動作記述を記憶する動作記述記憶部４１と、繰返し動作を記述したループ文を動作記述から検出するループ文検出部１２と、ループ文検出部１２が検出したループ文を解析することで、ループ文の構造についての情報である構造情報を生成するループ文解析部１３と、構造情報を表示装置２上に表示させる表示制御部１４とを備え、表示制御部１４は、ループ文中のループ本体の処理を表示装置２上に時系列的に表示させる。【選択図】    図１
2007287044.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の設計に用いられる設計支援装置であって、
前記論理回路の動作を記述した動作記述を記憶する動作記述記憶部と、
繰返し動作を記述したループ文を前記動作記述から検出するループ文検出部と、
前記ループ文検出部が検出したループ文を解析することで、前記ループ文の構造についての情報である構造情報を生成するループ文解析部と、
前記構造情報を表示装置上に表示させる表示制御部
とを備え、前記表示制御部は、前記ループ文中のループ本体の処理を前記表示装置上に時系列的に表示させることを特徴とする設計支援装置。
【請求項２】
前記ループ文解析部は、前記ループ本体の処理のうち並列実行可能な処理を検出する並列処理検出部を備え、
前記表示制御部は、前記並列実行可能な処理同士を、時間軸方向と直交する方向に並べて前記表示装置上に表示させることを特徴とする請求項１に記載の設計支援装置。
【請求項３】
前記ループ文解析部は、前記ループ文検出部が検出したループ文のループ本体に別のループ文が含まれることを示す階層構造を検出する階層構造検出部を備え、
前記表示制御部は、前記ループ文検出部が検出したループ文、及び前記ループ文検出部が検出したループ文に含まれるループ文の各ループ本体の処理を前記表示装置上に時系列的に表示させることを特徴とする請求項１又は２に記載の設計支援装置。
【請求項４】
前記ループ文解析部は、前記ループ本体の処理が繰り返し動作の前回の実行に依存することを示すデータ依存関係を検出する依存関係検出部を更に備え、
前記表示制御部は、前記データ依存関係の情報を前記表示装置上に表示させることを特徴とする請求項１〜３のいずれか１項に記載の設計支援装置。
【請求項５】
前記表示制御部は、前記動作記述から回路記述を生成する高位合成に対する制約である高位合成制約を入力するよう設計者に促し、
前記設計者が入力装置を用いて入力した情報から高位合成制約を設定し、設定された高位合成制約から高位合成制約記述を生成する高位合成制約設定部と、
前記高位合成制約記述を用いて前記動作記述を高位合成する高位合成部
とを更に備えることを特徴とする請求項１〜４のいずれか１項に記載の設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路の設計技術に関し、特に論理回路の設計に用いられる設計支援装置に関する。
【背景技術】
【０００２】
半導体技術の発展に伴って１チップ上に実装可能なシステムの規模が増大してきている。巨大なシステムを短期間で設計する手法の１つとして、Ｃ言語等の高級言語によってシステム（論理回路）の動作のみを記述した動作記述を作成し、動作記述から、クロック・サイクル、レジスタ、及び演算器等のハードウエア情報を含んだ回路記述（ＲＴＬ記述）に合成する高位合成が知られている。高位合成処理は、主に、動作記述をクロック・サイクル毎に分割してグループ化するスケジューリングと、動作記述中の演算を演算器に割振るバインディングからなる。
【０００３】
動作記述は、通常、繰返し動作を記述したループ文を有する。例えば、Ｃ言語により記述された動作記述では、ｆｏｒ文、ｗｈｉｌｅ文、及びｄｏ−ｗｈｉｌｅ文がループ文として使用される。ループ文に対する高位合成方法は主に２つある。１つは、ループ文の繰返し動作を変更することなく、スケジューリング及びバインディングを行う方法である。もう１つは、ループ文の繰返し動作を、１回目の繰返し動作が終了する前に２回目の繰返し動作を開始するようにスケジューリング及びバインディングを行う方法である。後者をパイプライン合成と呼ぶ。ループ文をパイプライン合成することにより、通常の高位合成方法よりもスループットの高い回路を合成できる（例えば、非特許文献１参照。）。
【０００４】
ループ文のパイプライン合成を行うには、どのループ文に対してパイプライン合成を実施するかを指定する必要がある。更に、高位合成制約として、ループ文の繰返し動作１回分が何サイクルで実行されるかを示す「ディレイ」と、繰返し動作を何サイクル間隔で開始するかを示す「レイテンシ」を指定する必要がある。これらの値を適切に設定しないと所望のパイプライン回路を合成することができない。
【０００５】
したがって、ループ文の具体的な情報が提供されない状況で、ループ文の構造を理解することなく、パイプライン合成制約を指定するといった従来の方法では、所望のパイプライン回路を合成するための適切な高位合成制約を指定することが困難である。したがって、短期間で容易に所望のパイプライン回路を合成できなかった。
【非特許文献１】Cheng-Tsung Hwang他,「Scheduling for Functional Pipelining and Loop Winding」,28th ACM/IEEE Design Automation Conference
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、所望のパイプライン回路を短期間で容易に設計するための設計支援装置を提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様によれば、論理回路の設計に用いられる設計支援装置であって、論理回路の動作を記述した動作記述を記憶する動作記述記憶部と、繰返し動作を記述したループ文を動作記述から検出するループ文検出部と、ループ文検出部が検出したループ文を解析することで、ループ文の構造についての情報である構造情報を生成するループ文解析部と、構造情報を表示装置上に表示させる表示制御部とを備え、表示制御部は、ループ文中のループ本体の処理を表示装置上に時系列的に表示させる設計支援装置が提供される。
【発明の効果】
【０００８】
本発明によれば、所望のパイプライン回路を短期間で容易に設計するための設計支援装置を提供できる。
【発明を実施するための最良の形態】
【０００９】
次に、図面を参照して、本発明の実施形態を説明する。以下の実施形態における図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１０】
（全体構成例）
本発明の本発明の実施形態に係る設計支援装置は、図１に示すように、記憶装置４、処理装置１、表示装置２、及び入力装置３を備える。記憶装置４としては、ＲＯＭ及びＲＡＭ等のメモリとハードディスク等の補助記憶装置等が使用できる。処理装置１としてはＣＰＵが使用できる。表示装置２としては液晶ディスプレイ又はＣＲＴディスプレイ等が使用できる。入力装置３としては、キーボード及びマウス等が使用できる。
【００１１】
記憶装置４は、動作記述等の各種データを記憶するとともに、処理装置１に実行させる制御プログラムを記憶する。ここで「動作記述」とは、設計対象のシステム（論理回路）の動作を高級言語によって記述したものを意味する。以下においては、動作記述がＣ言語で記述されている一例を説明する。処理装置１は、記憶装置４に記憶された制御プログラムを実行することにより、動作記述取得部１１、ループ文検出部１２、ループ文解析部１３、表示制御部１４、高位合成制約設定部１５、及び高位合成部１６のそれぞれの機能を実現する。
【００１２】
動作記述取得部１１は、記憶装置４の動作記述記憶部４１に予め記憶された動作記述を取得する。動作記述取得部１１が取得した動作記述はループ文検出部１２へ入力される。ループ文検出部１２は、動作記述中のループ文を検出する。ここで「ループ文」とは、繰返し動作を記述したものであり、Ｃ言語の場合、ｆｏｒ文、ｗｈｉｌｅ文、及びｄｏ−ｗｈｉｌｅ文等が該当する。また、ループ文検出部１２は、検出したループ文に対してラベル（識別子）を付与する。
【００１３】
ループ文解析部１３は、ループ文検出部１２が検出したループ文を解析することで、ループ文の構造を示す構造情報を生成する。「構造情報」とは、例えば、ループ文を含む関数の関数名と、ループ文のラベルと、アンロール数と、繰返し処理を制御するループ変数の初期化を設定する初期設定式（以下、「ループ変数初期化」という。）と、ループの繰返しの判定条件である条件式（以下、「ループ判定条件」という。）と、ループ変数を再設定（更新）する再設定式（以下、「ループ変数更新」という。）と、ループ文中の演算又はループ文中で呼ばれている関数と、ループ文中の演算の実行順序又はループ文中で呼ばれている関数の呼出し順序とを意味する。ループ文解析部１３が生成した構造情報は、記憶装置４の構造情報記憶部４２に記憶される。
【００１４】
以下においては、ループ文中の演算又はループ文中で呼ばれている関数を「ループ本体の処理」と呼ぶ。上記「アンロール数」とは、ループ本体の処理を何回展開したかを意味する。ループ文解析部１３が生成した構造情報は、構造情報記憶部４２に登録される。
【００１５】
図２に示す動作記述例においては、ループ文を有する関数名は“ｍａｉｎ”であり、付与するラベルは“ＬＯＯＰ１”であり、アンロール数は“０”であり、ループ変数初期化は“ｉ＝０”であり、ループ判定条件は“ｉ＜１００”であり、ループ変数更新は“i++”であり、ループ本体の処理は３つの関数“ＲｅａｄＡｒｒａｙ”，“Ｃａｌｃｕｌａｔｉｏｎ”，及び“ＷｒｉｔｅＡｒｒａｙ”である。
【００１６】
表示制御部１４は、構造情報記憶部４２に登録された構造情報を表示装置２上に表示させる。その際、表示制御部１４は、ループ本体の処理を時系列的に表示装置２上に表示させる。すなわち、ループ本体の処理は図３に示すように、繰返し動作の１回分が、水平方向を時間軸方向として、時間軸方向に並んだ棒グラフ状に表示される。図３の例では、棒グラフ中の矩形の中には、ループ文中で呼ばれている関数名が表示されている。
【００１７】
このように、ループ文についての詳細な情報を表示装置２上に表示することにより、設計者は、パイプライン合成すべきループ文を容易に指定可能となる。更に、ループ本体の処理を時系列的に表示することで、設計者はループ本体の処理の時系列を把握可能となる。
【００１８】
高位合成制約設定部１５は、設計者が入力装置３を用いて行う入力操作に応じて、パイプライン合成を実行するループ文を指定すると共に、高位合成制約を設定する。ここで「パイプライン合成」とは、高位合成時において、ループ文の繰返し動作を、１回目の繰返し動作が終了する前に２回目の繰返し動作を開始するようにスケジューリング及びバインディングを行うことを意味する。ここで「高位合成制約」とは、ループ文の繰返し動作１回分が何サイクルで実行されるかを示す「ディレイ」と、繰返し動作を何サイクル間隔で開始するかを示す「レイテンシ」を意味する。
【００１９】
設定された高位合成制約は、構造情報記憶部４２に記憶される。また、高位合成制約設定部１５は、設定された高位合成制約に基づき、高位合成部１６が認識可能な記述である高位合成制約記述（制約スクリプト）を生成する。生成された高位合成制約記述は、制約記述記憶部４３に記憶される。
【００２０】
高位合成部１６は、制約記述記憶部４３に記憶された高位合成制約記述を用いて、動作記述記憶部４１に記憶された動作記述を高位合成する。また、高位合成部１６は、指定されたループ文に対してパイプライン合成を行う。この結果、動作記述から、クロック・サイクル、レジスタ、及び演算器等のハードウエア情報を含んだ回路記述（ＲＴＬ記述）が生成される。生成された回路記述は回路記述記憶部４４に記憶される。高位合成制約記述を用いた高位合成処理の詳細については後述する。
【００２１】
（表示処理フロー）
次に、図４に示すフローチャートを参照して、本発明の実施形態に係る設計支援装置における表示処理の概要を説明する。
【００２２】
ステップＳ１０１において、動作記述取得部１１は、動作記述記憶部４１から動作記述を読み込む。
【００２３】
ステップＳ１０２において、ループ文検出部１２は、ステップＳ１０１で読み込まれた動作記述中のループ文を検出する。
【００２４】
ステップＳ１０３において、ループ文解析部１３は、ステップＳ１０２で検出されたループ文にラベルを付与する。
【００２５】
ステップＳ１０４において、表示制御部１４は、ステップＳ１０２で検出されたループ文を含む関数の関数名を表示装置２上に表示する。
【００２６】
ステップＳ１０５において、表示制御部１４は、ステップＳ１０２で検出されたループ文のラベルを表示装置２上に表示する。
【００２７】
ステップＳ１０６において、表示制御部１４は、ステップＳ１０２で検出されたループ文のアンロール数を表示装置２上に表示する。この時点では、アンロールが実行されていないため、初期値として“０”が表示される。
【００２８】
ステップＳ１０７において、ループ文検出部１２は、ステップＳ１０２で検出されたループ文の繰返し回数を制御するループ変数を検出する。
【００２９】
ステップＳ１０８において、表示制御部１４は、ループ変数初期化を表示装置２上に表示させる。
【００３０】
ステップＳ１０９において、表示制御部１４は、ループ判定条件を表示装置２上に表示させる。
【００３１】
ステップＳ１１０において、表示制御部１４は、ループ変数更新を表示装置２上に表示させる。
【００３２】
ステップＳ１１１において、ループ文解析部１３は、ループ本体の処理を解析する。この解析には、例えばデータフロー解析の技術が利用できる。ループ文解析処理の詳細については後述する。
【００３３】
ステップＳ１１２において、表示制御部１４は、ループ本体の処理を棒グラフ状に表示する。
【００３４】
以上述べた処理フローは、動作記述に複数のループ文が含まれる場合にも適用できる。
【００３５】
（ループ文解析部）
ループ文解析部１３の機能構成例を図５に示す。ループ文解析部１３は、図５に示すように、構造解析部１３１、データフローグラフ生成部１３２、並列処理検出部１３３、階層構造検出部１３４、及び依存関係検出部１３５を備える。構造解析部１３１は、上述した構造情報を生成する。
【００３６】
データフローグラフ生成部１３２は、ループ本体の処理からデータフローグラフを生成する。ここで「データフローグラフ」とは、オペランドのデータ依存関係に応じて各命令を連結したグラフを意味する。生成されたデータフローグラフは、並列処理検出部１３３、階層構造検出部１３４及び依存関係検出部１３５で利用される。
【００３７】
（並列処理検出部）
次に、並列処理検出部１３３について説明する。並列処理検出部１３３は、図４のステップＳ１１１において、データフローグラフ生成部１３２が生成したデータフローグラフに基づいて、ループ本体の処理のうち並列実行可能な処理を検出する。検出された並列実行可能な処理についての情報は、構造情報記憶部４２に登録される。
【００３８】
表示制御部１４は、図４のステップＳ１１２において、ループ本体を時間軸方向に並べて表示するとき、時間軸方向と直交する方向に、並列実行可能な処理同士を並べて表示する。例えば、図２に示した動作記述例において、関数“ＲｅａｄＡｒｒａｙ”、関数“Ｃａｌｃｕｌａｔｉｏｎ”、及び関数“ＷｒｉｔｅＡｒｒａｙ”が並列実行可能である場合、図６に示すように、関数“ＲｅａｄＡｒｒａｙ”、関数“Ｃａｌｃｕｌａｔｉｏｎ”、及び関数“ＷｒｉｔｅＡｒｒａｙ”のそれぞれの矩形を積み重ねて表示する。
【００３９】
次に、ループ文に対してアンロール指示があった場合のループ文の構造情報と表示について説明する。パイプライン合成したいループ文が更にループ文を有する場合、ループ文の内側のループ文をアンロールする必要がある。このような場合にアンロール指示をすることになる。ここで「アンロール指示」とは、ループ本体の処理を複製して、逐次処理的に繋げる操作を意味する。アンロール数は構造情報記憶部４２に登録される。
【００４０】
表示制御部１４は、構造情報記憶部４２に登録されたアンロール数に応じて、ループ本体の処理を複製し、複製したループ本体の処理を複製元の処理に対して時間軸方向に並べて表示する。アンロールが指示された場合、ループ変数更新の式が変更されるので、表示制御部１４は、アンロール数に応じたループ変数更新を表示する。
【００４１】
例えば、図２の動作記述例において、１回のアンロールを指示した場合、すなわちループの本体の複製が１つ作成される場合、図７に示すように、ループ本体の棒グラフを１つ複製し、時間軸方向に並べて表示する。また、ループ変数更新が、図３では“i++”であるが、図７では“ｉ＋＝２”となっている。
【００４２】
（階層構造検出部）
次に、階層構造検出部１３４について説明する。階層構造検出部１３４は、ループ文中にループ文が含まれることを示す階層構造情報を検出する。検出された階層構造の情報は、構造情報記憶部４２に登録される。表示制御部１４は、ループ文中に含まれるループ文を下位階層のループ文として、上位階層のループ文と下位階層のループ文とを、時間軸方向と直交する方向に並べて表示する。
【００４３】
階層構造を有するループ文を含む動作記述の例を図８に示す。図８の例では、ｍａｉｎ関数内のループ文中の関数“Ｃａｌｃｕｌａｔｉｏｎ”が、ループ文を更に有している。関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文のループ本体は、関数“ＳｕｂＣａｌｃ１”，“ＳｕｂＣａｌｃ２”，及び“ＳｕｂＣａｌｃ３”を含んでいる。
【００４４】
図８の２つのループ文のアンロール数指定がともに１である場合の表示例を図９に示す。図９の例では、ｍａｉｎ関数内のループ文にラベル“ＬＯＯＰ１”、関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文にラベル“ＬＯＯＰ２”が付けられている。表示制御部１４は、棒グラフ状の表示で関数“Ｃａｌｃｕｌａｔｉｏｎ”の矩形の下に、“ＬＯＯＰ２”の示すループ文のループ本体の処理を積み重ねた形で階層構造を有することを表示している。
【００４５】
次に、図１０に示すフローチャートを参照して、階層構造検出部１３４の処理フローについて説明する。図１０に示す処理フローは、図４のステップＳ１１１で実行される。
【００４６】
ステップＳ１２１において、階層構造検出部１３４は、ループ文Ｌ１内のループ文を検索する。
【００４７】
ステップＳ１２２において、階層構造検出部１３４は、ループ文Ｌ１内にループ文が見つかったかを判定する。ループ文Ｌ１内にループ文が見つからなかったと判定された場合、階層構造検出部１３４は、ループ文Ｌ１をスタックからポップする。
【００４８】
ループ文Ｌ１内にループ文が見つかったと判定された場合、ステップＳ１２３において、見つかったループ文をループ文Ｌ２として、ステップＳ１２５でループ文Ｌ２が解析される。この解析は、構造解析部１３１等により実行される。この結果、ループ文Ｌ２の構造情報が取得される。
【００４９】
ステップＳ１２６において、表示制御部１４は、ステップＳ１２５で取得されたループ文Ｌ２の構造情報を表示する。
【００５０】
ステップＳ１２８において、ループ文Ｌ２をループ文Ｌ１として、ステップＳ１２１から再帰的に階層構造が解析される。
【００５１】
上記の階層構造検出部１３４の処理フローは、ループ本体に複数のループ文がある場合も容易に対応可能である。
【００５２】
（パイプライン動作の指定例）
次に、ループ文がパイプライン動作を指定された場合のループ文の構造情報と表示について説明する。図２に示した動作記述のループ文がパイプライン動作を指定された場合を説明する。この場合、パイプライン動作のディレイ値とレイテンシ値がループ文の構造情報に追加される。
【００５３】
ディレイ値が１０、レイテンシ値が４と指定された場合の表示例を図１１に示す。ループ文の繰返し動作１回の処理に必要なクロック・サイクル数をディレイとして、何サイクル毎に繰返し処理が開始されるかを表したレイテンシが表示されている。また、ループ本体の処理を表す棒グラフ状の矩形をディレイ値だけずらして、［ディレイ／レイテンシ］つまり［１０／４］＝３個だけ縦に重ねて表示する。なお、演算“［ｘ］”は、ｘ以上の最小の整数（切り上げ）を表す。
【００５４】
次に、階層構造を有するループ文に対してパイプライン動作を指定する場合の、ループ文の構造情報と表示について説明する。ループ文の階層構造がループ文の構造情報に追加される。図８に示した動作記述の階層構造を持ったループ文がパイプライン指定された場合を説明する。
【００５５】
ｍａｉｎ関数内のループ文に対して、ディレイが２０、レイテンシが３、関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文に対しては、ディレイ“１０”、レイテンシ“５”を指定した例を図１２に示す。
【００５６】
関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文に対して、［ディレイ／レイテンシ］つまり［１０／５］＝２個だけ縦に積み重ねて表示されている。ｍａｉｎ関数内のループ文に対しては、［ディレイ／レイテンシ］つまり［２０／３］＝７個ずらして表示される。ただし、図１２に示した例では簡単のため２つだけ書かれている。
【００５７】
このように、ループ文が階層構造を有する場合であっても、各ループ文のループ本体の処理を時系列的に表示することで、設計者は、パイプライン合成すべきループ文の指定を容易に行うことができる。
【００５８】
（依存関係検出部）
次に、依存関係検出部１３５について説明する。依存関係検出部１３５は、データフローグラフ生成部１３２が生成したデータフローグラフに基づいて、ループ本体の処理が前回の繰返し動作の処理に依存するか否かを判定する。検出されたデータの依存関係の情報は、構造情報記憶部４２に記憶される。
【００５９】
一例として、図８に示した動作記述の関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文内の関数“ＳｕｂＣａｌｃ1”が関数“ＳｕｂＣａｌｃ２”の前回の繰返し実行の結果に依存する場合を説明する。ディレイが１０、レイテンシが８の指定がある場合のループ文のパイプライン表示を図１３に示す。データ依存関係をラベルＳ２の付いた矩形からラベルＳ１の付いた矩形への矢印で表している。
【００６０】
他の例として、階層構造を越えてデータ依存関係がある場合のパイプライン表示について説明する。図８において、関数“ＳｕｂＣａｌｃ１”が前回の関数“Ｃａｌｃｕｌａｔｉｏｎ”の実行時の関数“ＳｕｂＣａｌｃ２”の実行結果に依存する場合を説明する。この場合のパイプライン表示を図１４に示す。この表示では、ｍａｉｎ関数内のループ文の繰返しを超えて“ＳｕｂＣａｌｃ２”と“ＳｕｂＣａｌｃ１”のデータ依存関係がラベルＳ２の矩形とラベルＳ１の矩形の間に書かれている矢印で表されている。
【００６１】
したがって、ループ文がデータ依存関係を有する場合であっても、ループ文の繰返し処理が繰返しの前回の実行結果に依存する場合であっても、設計者が高位合成制約の設定を容易に行うことを可能としている。
【００６２】
（高位合成制約設定部）
高位合成制約設定部１５の詳細について説明する。始めに、図２に示した動作記述のループ文に対する高位合成制約の設定方法を説明する。パイプラインの高位合成制約設定用のグラフィカル表示の例を図１５に示す。
【００６３】
設計者に対して、ループ本体１回の実行に要するサイクル数を「ディレイ：」とラベルの付いたボックスに入力するよう促す。上述したように、パイプライン動作では、ループ本体があるサイクル数ずれて動作を開始する。設計者は、ループ本体の処理の開始位置を、例えば入力装置３としてのマウスを用いて、ドラッグしてずらすことにより指定する。あるいは、設計者は、そのずれのサイクル数を、例えば入力装置３としてのキーボードを用いて「レイテンシ：」とラベルの付いたボックスに入力する。
【００６４】
次に、ループ文が階層構造を有する場合の高位合成制約の指定方法について説明する。図８に示した動作記述のｍａｉｎ関数内のループ文と関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文に、パイプラインの高位合成制約を指定する場合を説明する。この場合のパイプラインの高位合成制約設定用のグラフィカル表示の例を図１６に示す。
【００６５】
階層が無い場合と同様に、それぞれのループ文に対して、ループ本体１回の実行に要するサイクル数を「ディレイ：」とラベルの付いたボックスに入力するよう促す。設計者は、ループ本体の処理開始のずれをループ本体の処理の開始位置をドラッグしてずらすことにより指定する。あるいは、設計者は、そのずれのサイクル数を「レイテンシ：」とラベルの付いたボックスに入力する。
【００６６】
次に、ループ本体が前回の繰返し動作の処理に依存する場合のパイプラインの高位合成制約指定について説明する。
【００６７】
１つ目の例として図８に示した動作記述の関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文の関数“ＳｕｂＣａｌｃ１”が関数“ＳｕｂＣａｌｃ２”の前回の繰返し実行の結果に依存する場合を説明する。この場合のパイプラインの高位合成制約設定用のグラフィカル表示の例を図１７に示す。図１４に示した例と同様に、ループ本体１回の実行に要するサイクル数を「ディレイ：」とラベルの付いたボックスに入力するよう促す。
【００６８】
設計者は、ループ本体の処理開始のずれをループ本体の処理の開始位置をドラッグしてずらすことにより指定する。あるいは、設計者は、そのずれのサイクル数を「レイテンシ：」とラベルの付いたボックスに入力する。ただし、関数“ＳｕｂＣａｌｃ２”と関数“ＳｕｂＣａｌｃ１”とのデータ依存関係により、データ依存関係を表す矢印の向きが左に変わるまでドラッグして繰返し動作の開始時期を左に動かすことはできない。
【００６９】
２つ目の例として階層構造を越えてデータ依存関係がある場合のパイプライン表示について説明する。図８に示す動作記述の例において、関数“ＳｕｂＣａｌｃ１”が関数“ＳｕｂＣａｌｃ２”のループの階層を越えて前回の実行結果に依存する場合を説明する。この場合のパイプラインの高位合成制約設定用のグラフィカル表示の例を図１８に示す。図１３に示した例と同様に、それぞれのループ文に対して、ループ本体１回の実行に要するサイクル数を「ディレイ：」とラベルの付いたボックスに入力するよう促す。
【００７０】
設計者は、ループ本体の処理開始のずれをループ本体の処理の開始位置をドラッグしてずらすことにより指定する。あるいは、設計者は、そのずれのサイクル数を「レイテンシ：」とラベルの付いたボックスに入力する。ただし、関数のデータ依存関係を表す矢印の向きが左になるまで、ドラッグして繰返し動作の開始位置を左にすることはできない。
【００７１】
（高位合成制約記述生成処理）
次に、高位合成制約設定部１５による高位合成制約記述の生成処理について説明する。
【００７２】
一例として、図２に示した動作記述に対して図１１に示したディレイ１０、レイテンシ４と高位合成制約を設定された場合を説明する。この場合の高位合成制約記述が埋め込まれた動作記述の例を図１９に示す。この例では、ループ文にラベルＬＯＯＰ１が付けられている。ループ文のラベルの下に、ＤＥＬＡＹ（１１)とＬＡＴＥＮＣＹ（４)の２つのスクリプトでディレイとレイテンシを指定している。
【００７３】
次に、ループ文が階層構造を有する場合において、パイプラインの高位合成制約記述を生成する処理について説明する。図８に示した動作記述に対し、図１２に示すようにｍａｉｎ関数中のループ文（ラベルＬＯＯＰ１が付けられている）のディレイを２０、レイテンシを３、関数“Ｃａｌｃｕｌａｔｉｏｎ”内のループ文（ラベルＬＯＯＰ２が付けられている）のディレイを１０、レイテンシを５に指定した場合を説明する。この場合の高位合成制約を埋め込んだ動作記述の例を図２０に示す。ループ文のラベルの下に、ＤＥＬＡＹ（)文とＬＡＴＥＮＣＹ（)文でディレイ値とレイテンシ値を指定している。
【００７４】
次に、ループ本体が前回の繰返し動作の処理に依存する場合のパイプラインの高位合成制約記述生成について説明する。
【００７５】
一例として、図８に示した動作記述の関数“Ｃａｌｃｕｌａｔｉｏｎ”内にループ文（ラベルＬＯＯＰ２が付けられている）の関数“ＳｕｂＣａｌｃ１”が関数“ＳｕｂＣａｌｃ２”の前回の繰返し実行の結果に依存する場合を説明する。
【００７６】
図１３に示すようにＬＯＯＰ２に対してディレイを１０、レイテンシを８に設定したとする。この場合の高位合成制約を埋め込んだ動作記述の例を図２１に示す。ループ文のラベルの下に、ＤＥＬＡＹ（)文とＬＡＴＥＮＣＹ（)文でディレイ値とレイテンシ値を指定している。データ依存関係は高位合成部１６におけるスケジューリング処理で考慮される。
【００７７】
他の例として、階層構造を越えてデータ依存関係がある場合のパイプライン表示について説明する。動作記述の例を図８に示す。関数“ＳｕｂＣａｌｃ１”が関数“ＳｕｂＣａｌｃ２”のループの階層を越えて前回の実行結果に依存する場合である。図１４に示すようにｍａｉｎ関数内のループ文（ラベルＬＯＯＰ１が付けられている）に対してディレイを１０、レイテンシを８、ＬＯＯＰ２に対してディレイを５、レイテンシを４に設定したとする。この場合の高位合成制約を埋め込んだ動作記述の例を図２２に示す。ラベルの下に、ＤＥＬＡＹ（)文とＬＡＴＥＮＣＹ（)文でディレイ値とレイテンシ値を指定している。データ依存関係は高位合成１６におけるスケジューリング処理で考慮される。
【００７８】
以上詳細に説明したように、本発明の実施形態によれば、設計者は、どのループ文に対してパイプライン合成を実施するか等の判断を容易に行うことができる。よって、パイプライン合成に要する時間を短縮できるため、高位合成全体の所要時間を短縮できる。
【００７９】
また、設計者に対してパイプライン合成の高位合成制約を入力するよう促すことにより、容易に所望のパイプライン回路を合成するための適切な高位合成制約を指定することが可能となるため、高位合成を利用して所望の回路を容易に合成できる。
【００８０】
更に、高位合成制約記憶部４３に記憶された高位合成制約記述を用いて、自動的に高位合成を実行可能となる。すなわち、ループ文の構造情報に基づいて設定した高位合成制約から高位合成制約記述を生成することで、手作業による制約指定間違いが無くなる。
【００８１】
（その他の実施形態）
上記のように、本発明は実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【００８２】
上述した実施の形態においては、時間軸方向を表示装置２の水平方向とする一例を説明したが、時間軸方向を表示装置２の垂直方向としてもかまわない。
【００８３】
また、動作記述がＣ言語で作成されている場合について説明したが、Ｃ言語に限定されるものではなく、ループ文を有するプログラミング言語であれば適用可能である。
【００８４】
なお、既に述べた設計支援装置において、記憶装置４に対し、ローカルエリアネットワーク（ＬＡＮ）等のネットワークを介して各種データの入出力を行っても良い。この場合、設計支援装置に、ネットワークとの通信を制御する通信制御装置等を更に備える必要がある。
【００８５】
このように本発明は、ここでは記載していない様々な実施形態等を包含するということを理解すべきである。したがって、本発明はこの開示から妥当な特許請求の範囲の発明特定事項によってのみ限定されるものである。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施形態に係る設計支援装置の全体構成例を示す機能ブロック図である。
【図２】本発明の実施形態に係る設計支援装置に用いられる動作記述の一例を示す模式図である。
【図３】図３の動作記述を用いた場合の表示例を示す模式図である。
【図４】本発明の実施形態に係るループ文表示処理の処理フロー例を示すフローチャートである。
【図５】本発明の実施形態に係るループ文解析部の構成例を示す機能ブロック図である。
【図６】図３の動作記述中のループ文が並列実行可能な場合の表示例を示す模式図である。
【図７】図３の動作記述中のループ文に対してアンロール指示があった場合の表示例を示す模式図である。
【図８】階層構造を有するループ文を含む動作記述例を示す模式図である。
【図９】図８の動作記述を用いた場合の表示例を示す模式図である。
【図１０】ループ文の階層構造の検出処理フローを示すフローチャートである。
【図１１】パイプライン動作を指定された場合の表示例を示す模式図である。
【図１２】階層構造を有するループ文に対してパイプライン動作が指定された場合の表示例を示す模式図である。
【図１３】データ依存関係を有するループ文に対してパイプライン動作が指定された場合の表示例を示す模式図である。
【図１４】階層を越えたデータ依存関係を有するループ文に対してパイプライン動作が指定された場合の表示例を示す模式図である。
【図１５】設計者に対してパイプライン合成制約の入力を促す際の表示例を示す模式図である。
【図１６】階層構造を有する場合において、設計者に対してパイプライン合成制約の入力を促す際の表示例を示す模式図である。
【図１７】ループ文がデータ依存関係を有する場合において、設計者に対してパイプライン合成制約の入力を促す際の表示例を示す模式図である。
【図１８】階層を越えたデータ依存関係がある場合のパイプライン合成制約指定の例を示す模式図である。
【図１９】高位合成制約記述が埋め込まれた動作記述の例を示す模式図である。
【図２０】ループ文が階層構造を有する場合において、高位合成制約記述が埋め込まれた動作記述の例を示す模式図である。
【図２１】ループ文がデータ依存関係を有する場合において、高位合成制約記述が埋め込まれた動作記述の例を示す模式図である。
【図２２】階層を越えたデータ依存関係がある場合において、高位合成制約記述が埋め込まれた動作記述の例を示す模式図である。
【符号の説明】
【００８７】
２…表示装置
３…入力装置
１２…ループ文検出部
１３…ループ文解析部
１４…表示制御部
１５…高位合成制約設定部
１６…高位合成部
４１…動作記述記憶部
１３３…並列処理検出部
１３４…階層構造検出部
１３５…依存関係検出部
【図１】
2007287044.tif 000003
【図２】
2007287044.tif 000004
【図３】
2007287044.tif 000005
【図４】
2007287044.tif 000006
【図５】
2007287044.tif 000007
【図６】
2007287044.tif 000008
【図７】
2007287044.tif 000009
【図８】
2007287044.tif 000010
【図９】
2007287044.tif 000011
【図１０】
2007287044.tif 000012
【図１１】
2007287044.tif 000013
【図１２】
2007287044.tif 000014
【図１３】
2007287044.tif 000015
【図１４】
2007287044.tif 000016
【図１５】
2007287044.tif 000017
【図１６】
2007287044.tif 000018
【図１７】
2007287044.tif 000019
【図１８】
2007287044.tif 000020
【図１９】
2007287044.tif 000021
【図２０】
2007287044.tif 000022
【図２１】
2007287044.tif 000023
【図２２】
2007287044.tif 000024