(57)【特許請求の範囲】
【請求項１】
スレッド間同期通信を行なう命令を含んだ動作記述から論理合成を行なう高位合成装置であって、
予め選択されたスレッドに含まれる動作記述に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうための同期通信スケジューリング手段と、
前記同期通信スケジューリング手段によってスケジューリングされたスレッド間同期通信オペレーションに基づいて前記スレッド毎に動作合成制約情報を生成するための制約情報生成手段と、
前記制約情報生成手段によって生成された動作合成制約情報に基づいて前記スレッド毎の動作合成をおこなうための動作合成手段とを含み、
前記同期通信スケジューリング手段は、前記予め選択されたスレッドに含まれるスレッド間同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出手段と、
前記スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド内における同期通信オペレーションの順序を示す有向エッジを生成するためのスレッド内同期通信オペレーション間エッジ生成手段と、
前記スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド間における送受信の関係を示す有向エッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成手段と、
前記スレッド内同期通信オペレーション間エッジ生成手段および前記スレッド間同期通信オペレーション組間エッジ生成手段によって生成された有向エッジにスケジューリングサイクル制約を付加するためのスケジューリングサイクル制約付加手段と、
前記スケジューリングサイクル制約付加手段によって付加されたスケジューリングサイクル制約に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうためのスレッド間同期通信スケジューリング手段とを含む、高位合成装置。
【請求項２】
前記スケジューリングサイクル制約付加手段は、スレッド毎に動作記述を動作合成するためのスレッド毎動作合成手段と、
前記スレッド毎動作合成手段による動作合成結果に基づいて同期通信オペレーション間のスケジューリングサイクル制約を抽出するためのスケジューリングサイクル制約抽出手段とを含む、請求項１記載の高位合成装置。
【請求項３】
前記スケジューリングサイクル制約抽出手段は、前記スレッド毎動作合成手段によって生成されたスレッド内におけるノードのスケジューリングサイクルの差からスレッド内同期通信間スケジューリング制約を抽出するためのスレッド内同期通信間スケジューリング制約抽出手段と、
スレッド間における同期通信オペレーションに対して所定値をスレッド間同期通信間スケジューリング制約として抽出するスレッド間同期通信スケジューリング制約抽出手段とを含む、請求項２記載の高位合成装置。
【請求項４】
前記スレッド間同期通信スケジューリング手段は、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限して前記スレッド間同期通信オペレーションのスケジューリングを行なう、請求項１〜３のいずれかに記載の高位合成装置。
【請求項５】
スレッド間同期通信を行なう命令を含んだ動作記述から論理合成を行なう高位合成装置であって、
予め選択されたスレッドに含まれる動作記述に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうための同期通信スケジューリング手段と、
前記同期通信スケジューリング手段によってスケジューリングされたスレッド間同期通信オペレーションに基づいて前記スレッド毎に動作合成制約情報を生成するための制約情報生成手段と、
前記制約情報生成手段によって生成された動作合成制約情報に基づいて前記スレッド毎の動作合成をおこなうための動作合成手段とを含み、
前記同期通信スケジューリング手段は、前記予め選択されたスレッドに含まれるスレッド間同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出手段と、
前記スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド内における同期通信オペレーションの順序を示す有向エッジを生成するためのスレッド内同期通信オペレーション間エッジ生成手段と、
前記スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド間における送受信の関係を示す有向エッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成手段と、
前記スレッド内同期通信オペレーション間エッジ生成手段および前記スレッド間同期通信オペレーション組間エッジ生成手段によって生成された有向エッジにパイプラインスループットサイクルを考慮してスケジューリングサイクル制約を付加するためのパイプライン化スケジューリングサイクル制約付加手段と、
前記パイプライン化スケジューリングサイクル制約付加手段によって付加されたスケジューリングサイクル制約に基づいてスレッド間同期通信オペレーションのスケジューリングを行い、前記パイプラインスループットサイクルを考慮してスケジューリング結果のスケジューリングサイクルを調整するためのパイプライン化同期通信スケジューリング手段とを含む、高位合成装置。
【請求項６】
前記パイプライン化同期通信スケジューリング手段は、前記スケジューリング結果内の送信を示すノードと受信を示すノードとのスケジューリングサイクルの差が前記パイプラインスループットサイクルとなるようにスケジューリングサイクルを調整する、請求項５記載の高位合成装置。
【請求項７】
前記パイプライン化同期通信スケジューリング手段は、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限して前記スレッド間同期通信オペレーションのスケジューリングを行なう、請求項５または６記載の高位合成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動作記述によって表現された半導体集積回路の論理回路を論理合成する高位合成装置に関し、特に、同期データ通信を表す記述を含んだ動作記述から論理回路を合成する高位合成装置に関する。
【０００２】
【従来の技術】
近年、半導体集積回路の高密度化、多機能化に伴い、その回路規模は増大する傾向にあり、回路設計に要する時間も増加しつつある。この回路設計に要する時間を短縮する方法の１つとして、ハードウェア記述言語（ＨＤＬ）を使用して回路設計を行なう方法が挙げられる。
【０００３】
このＨＤＬ記述から論理回路を合成する装置の中で、並列に動作する複数のスレッドと、これら複数のスレッド間の同期データ通信との表現を許容する装置に関する技術がいくつか提案されている。その１つとして、特開平９−２４９１５２号公報に開示された発明がある。
【０００４】
この特開平９−２４９１５２号公報に開示された発明は、動作記述として２つのプロセス間でデータを同期して転送するプロトコルを定義した命令（ｓｅｎｄ，ｒｅｃｅｉｖｅ）を用意する。そして、動作記述の中に単にデータを送信する命令（ｓｅｎｄ）、またはデータを受信する命令（ｒｅｃｅｉｖｅ）を記述し、論理回路を合成する際にこれらの同期データ通信のために各スレッドに対応する回路に対してハンドシェイクを行なう回路を生成し、スレッド間での同期データ通信が確実に行なわれる回路を合成するものである。なお、このハンドシェイクを用いた回路を合成した場合、データの送信側および受信側の両方がデータを転送できる状態になって初めて転送が行なわれる。
【０００５】
また、他の従来技術として、「Optimal Synthesis of Multichip Architecture (ICCAD'92,pp238-241)」に記載されたものがある。この文献には、スレッド間の同期データ通信を実現するために、ハンドシェイク回路を生成せずにスレッド間同期データ通信が確実に行なわれる回路を生成する方法が記載されている。
【０００６】
【発明が解決しようとする課題】
しかし、上述した特開平９−２４９１５２号公報に開示された発明は、スレッド間同期データ通信に関する記述に対して、必ずハンドシェイク回路が合成される。このハンドシェイク回路は、送信側が１つのデータ線に対してデータの準備ができたことを示す信号線と、受信側がデータを受け取ったことを示す信号線との２本の制御用信号線が必要となる。したがって、動作記述から論理回路を合成する際、ハンドシェイク回路でなくても実現できる場合であっても必ずハンドシェイク回路が生成されるため、回路規模が大きくなり、通信速度も遅くなるという問題点があった。
【０００７】
また、「Optimal Synthesis of Multichip Architecture 」に記載されている技術は、ハンドシェイク回路を生成せずにスレッド間同期データ通信を実現するために、予めスレッド間同期通信オペレーションを含む全スレッドの全オペレーションについて動作合成の際実施されるスケジューリングが行なわれる。したがって、動作合成の対象となる動作記述が非常に大きくなった場合、スケジューリング対象も大きくなり、それに伴いスケジューリングに要する時間も多大になるという問題点があった。
【０００８】
本発明は、上記問題点を解決するためになされたものであり、第１の目的は、ハンドシェイクなしにスレッド間同期通信が可能な動作記述に対して、高速にデータ通信が可能な論理回路を確実に合成でき、回路規模の縮小を図ることが可能な高位合成装置を提供することである。
【０００９】
本発明の第２の目的は、誤動作が起こらないようにパイプライン動作を行なう回路を合成することが可能な高位合成装置を提供することである。
【００１０】
本発明の第３の目的は、ハンドシェイクなしにスレッド間同期通信が可能な動作記述に対して、高速にデータ通信が可能な論理回路を確実に合成でき、回路規模の縮小を図ることが可能な高位合成方法を提供することである。
【００１１】
本発明の第４の目的は、ハンドシェイクなしにスレッド間同期通信が可能な動作記述に対して、高速にデータ通信が可能な論理回路を確実に合成でき、回路規模の縮小を図ることが可能な高位合成プログラムを記録した媒体を提供することである。
【００１２】
【課題を解決するための手段】
請求項１に記載の高位合成装置は、スレッド間同期通信を行なう命令を含んだ動作記述から論理合成を行なう高位合成装置であって、予め選択されたスレッドに含まれる動作記述に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうための同期通信スケジューリング手段と、同期通信スケジューリング手段によってスケジューリングされたスレッド間同期通信オペレーションに基づいてスレッド毎に動作合成制約情報を生成するための制約情報生成手段と、制約情報生成手段によって生成された動作合成制約情報に基づいてスレッド毎の動作合成をおこなうための動作合成手段とを含み、同期通信スケジューリング手段は、予め選択されたスレッドに含まれるスレッド間同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出手段と、スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド内における同期通信オペレーションの順序を示す有向エッジを生成するためのスレッド内同期通信オペレーション間エッジ生成手段と、スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド間における送受信の関係を示す有向エッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成手段と、スレッド内同期通信オペレーション間エッジ生成手段およびスレッド間同期通信オペレーション組間エッジ生成手段によって生成された有向エッジにスケジューリングサイクル制約を付加するためのスケジューリングサイクル制約付加手段と、スケジューリングサイクル制約付加手段によって付加されたスケジューリングサイクル制約に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうためのスレッド間同期通信スケジューリング手段とを含む。
【００１３】
動作合成手段は、同期通信スケジューリング手段によるスケジューリング結果と、制約情報生成手段によって生成された動作合成制約情報とに基づいてスレッド毎に動作合成するので、高速でデータ通信が可能な論理回路を確実に合成でき、回路規模の縮小を図ることが可能となる。
【００１５】
スレッド間同期通信スケジューリング手段は、スケジューリングサイクル制約付加手段によって付加されたスケジューリングサイクル制約に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうので、さらに容易にスレッド間同期通信オペレーションのスケジューリングが可能になる。
【００１６】
請求項２に記載の高位合成装置は、請求項１記載の高位合成装置であって、スケジューリングサイクル制約付加手段は、スレッド毎に動作記述を動作合成するためのスレッド毎動作合成手段と、スレッド毎動作合成手段による動作合成結果に基づいて同期通信オペレーション間のスケジューリングサイクル制約を抽出するためのスケジューリングサイクル制約抽出手段とを含む。
【００１７】
スケジューリングサイクル制約抽出手段は、スレッド毎動作合成手段による動作合成結果に基づいて同期通信オペレーション間のスケジューリングサイクル制約を抽出するので、さらに容易にスレッド間同期通信オペレーションのスケジューリングが可能になる。
【００１８】
請求項３に記載の高位合成装置は、請求項２記載の高位合成装置であって、スケジューリングサイクル制約抽出手段は、スレッド毎動作合成手段によって生成されたスレッド内におけるノードのスケジューリングサイクルの差からスレッド内同期通信間スケジューリング制約を抽出するためのスレッド内同期通信間スケジューリング制約抽出手段と、スレッド間における同期通信オペレーションに対して所定値をスレッド間同期通信間スケジューリング制約として抽出するスレッド間同期通信スケジューリング制約抽出手段とを含む。
【００１９】
スレッド内同期通信間スケジューリング制約抽出手段は、スレッド毎動作合成手段によって生成されたスレッド内におけるノードのスケジューリングサイクルの差からスレッド内同期通信間スケジューリング制約を抽出するので、さらに容易にスレッド間同期通信オペレーションのスケジューリングが可能になる。
【００２０】
請求項４に記載の高位合成装置は、請求項１〜３のいずれかに記載の高位合成装置であって、スレッド間同期通信スケジューリング手段は、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスレッド間同期通信オペレーションのスケジューリングを行なう。
【００２１】
スレッド間同期通信スケジューリング手段は、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスレッド間同期通信オペレーションのスケジューリングを行なうので、スレッド間のバス幅等を小さくすることが可能となり、合成される論理回路の回路規模を小さくすることが可能となる。
【００２２】
請求項５に記載の高位合成装置は、スレッド間同期通信を行なう命令を含んだ動作記述から論理合成を行なう高位合成装置であって、予め選択されたスレッドに含まれる動作記述に基づいてスレッド間同期通信オペレーションのスケジューリングを行なうための同期通信スケジューリング手段と、同期通信スケジューリング手段によってスケジューリングされたスレッド間同期通信オペレーションに基づいてスレッド毎に動作合成制約情報を生成するための制約情報生成手段と、制約情報生成手段によって生成された動作合成制約情報に基づいてスレッド毎の動作合成をおこなうための動作合成手段とを含み、同期通信スケジューリング手段は、予め選択されたスレッドに含まれるスレッド間同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出手段と、スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド内における同期通信オペレーションの順序を示す有向エッジを生成するためのスレッド内同期通信オペレーション間エッジ生成手段と、スレッド間同期通信オペレーション抽出手段によって抽出されたスレッド間同期通信オペレーションに基づいて、スレッド間における送受信の関係を示す有向エッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成手段と、スレッド内同期通信オペレーション間エッジ生成手段およびスレッド間同期通信オペレーション組間エッジ生成手段によって生成された有向エッジにパイプラインスループットサイクルを考慮してスケジューリングサイクル制約を付加するためのパイプライン化スケジューリングサイクル制約付加手段と、パイプライン化スケジューリングサイクル制約付加手段によって付加されたスケジューリングサイクル制約に基づいてスレッド間同期通信オペレーションのスケジューリングを行い、パイプラインスループットサイクルを考慮してスケジューリング結果のスケジューリングサイクルを調整するためのパイプライン化同期通信スケジューリング手段とを含む。
【００２３】
パイプライン化同期通信スケジューリング手段は、パイプラインスループットサイクルを考慮してスケジューリング結果のスケジューリングサイクルを調整するので、動作合成手段は誤動作が起こらないようにパイプライン動作を行なう回路を合成することが可能となる。
【００２４】
請求項６に記載の高位合成装置は、請求項５記載の高位合成装置であって、パイプライン化同期通信スケジューリング手段は、スケジューリング結果内の送信を示すノードと受信を示すノードとのスケジューリングサイクルの差がパイプラインスループットサイクルとなるようにスケジューリングサイクルを調整する。
【００２５】
パイプライン化同期通信スケジューリング手段は、スケジューリング結果内の送信を示すノードと受信を示すノードとのスケジューリングサイクルの差がパイプラインスループットサイクルとなるようにスケジューリングサイクルを調整するので、動作合成手段は誤動作が起こらないようにパイプライン動作を行なう回路を合成することが可能となる。
【００２６】
請求項７に記載の高位合成装置は、請求項５または６記載の高位合成装置であって、パイプライン化同期通信スケジューリング手段は同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスレッド間同期通信オペレーションのスケジューリングを行なう。
【００２７】
パイプライン化同期通信スケジューリング手段は、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスレッド間同期通信オペレーションのスケジューリングを行なうので、スレッド間のバス幅等を小さくすることが可能となり、合成される論理回路の回路規模を小さくすることが可能となる。
【００３２】
【発明の実施の形態】
図１は、本発明の高位合成装置の外観例を示す図である。高位合成装置は、コンピュータ本体１、グラフィックディスプレイ装置２、磁気テープ４が装着される磁気テープ装置３、キーボード５、マウス６、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）８が装着されるＣＤ−ＲＯＭ装置７、および通信モデム９を含む。高位合成プログラムは、磁気テープ４またはＣＤ―ＲＯＭ８等の記憶媒体によって供給される。高位合成プログラムはコンピュータ本体１によって実行され、操作者はグラフィックディスプレイ装置２を見ながらキーボード５またはマウス６を操作することによって高位合成を行う。また、高位合成プログラムは他のコンピュータより通信回線を経由し、通信モデム９を介してコンピュータ本体１に供給されてもよい。
【００３３】
図２は、本発明の高位合成装置の構成例を示すブロック図である。図１に示すコンピュータ本体１は、ＣＰＵ（Central Processing Unit ）１０、ＲＯＭ(Read Only Memory)１１、ＲＡＭ（Random Access Memory）１２およびハードディスク１３を含む。ＣＰＵ１０は、グラフィックディスプレイ装置２、磁気テープ装置３、キーボード５、マウス６、ＣＤ−ＲＯＭ装置７、通信モデム９、ＲＯＭ１１、ＲＡＭ１２またはハードディスク１３との間でデータを入出力しながら処理を行う。磁気テープ４またはＣＤ−ＲＯＭ８に記録された高位合成プログラムは、ＣＰＵ１０により磁気テープ装置３またはＣＤ−ＲＯＭ装置７を介して一旦ハードディスク１３に格納される。ＣＰＵ１０は、ハードディスク１３から適宜高位合成プログラムをＲＡＭ１２にロードして実行することによって高位合成を行う。
【００３４】
以下に各実施の形態における高位合成装置について説明するが、図１に示す高位合成装置の外観および図２に示す高位合成装置の構成は各実施の形態において共通である。
【００３５】
（実施の形態１）
図３は、本発明の実施の形態１における高位合成装置の概略構成を示すブロック図である。この高位合成装置は、動作記述２１からハンドシェイクなしで同期通信が可能なスレッド間同期通信オペレーションを選択するためのスケジューリング可能スレッド間同期通信オペレーション選択部２２、スケジューリング可能スレッド間同期通信オペレーション選択部２２によって選択された同期通信可能なスレッド間同期通信オペレーションのスケジューリングを行なうためのスレッド間同期通信オペレーションスケジューリング部２３、スレッド間同期通信オペレーションスケジューリング部２３によって生成された同期通信オペレーションのスケジューリング結果に基づいてスレッド毎の動作合成制約情報を生成するためのスレッド毎動作合成制約情報生成部２４、およびスレッド毎動作合成制約情報生成部２４によって生成された動作合成制約情報に基づいて各スレッド毎に動作合成を行なうためのスレッド毎動作合成部２５を含む。
【００３６】
図４は、本実施の形態における高位合成装置の処理手順を説明するためのフローチャートである。まず、スケジューリング可能スレッド間同期通信オペレーション選択部２２は、ハンドシェイクなしでスケジューリング可能なスレッド間の同期通信オペレーションを選択する（Ｓ１０）。本実施の形態における高位合成装置においては、この選択は人手によって行なわれる。たとえば、図５に示す動作記述がスケジューリング可能スレッド間同期通信オペレーション選択部２２に入力された場合、人手によってスレッド１１１、１１２および１１３が選択されたものとする。
【００３７】
ここで、図５に示す動作記述について簡単に説明する。図５に示す動作記述１０１において、ＲＥＣＶ（ＩＮ）は通信路（以下、チャネルと呼ぶ）ＩＮを介してデータを受信する記述であり、その受信データをＩＮＤに代入することを示している。次の動作記述１０２において、ＰＡＲ文によって複数のプロセスを並列に動作させることを定義している。動作記述１０２の中の動作記述１１１〜１１３は、それぞれスレッド（ＰＡＲ文によって定義された各々のプロセス上で動作する記述）を示している。この各スレッド内の記述についてさらに詳細に説明する。
【００３８】
スレッド１１１において、最初の１〜２行目の記述はそれぞれ、ＩＮＤに“５”を加算してＤ１に代入すること、およびＤ１からＩＮＤを除算してＤ２に代入することを示している。また、３〜４行目の記述はそれぞれ、データＤ１をチャネルＣＨ１を介して送信すること、およびデータＤ２をチャネルＣＨ２を介して送信することを示している。さらに５行目において、チャネルＣＨ３を介して受信したデータをＯＵＴＤに代入することを示している。
【００３９】
スレッド１１２において、最初の１行目の記述は、チャネルＣＨ２から受信したデータをＤ３に代入することを示している。また、２行目において、Ｄ３に“４”を加算してＤ４に代入することを示している。さらに３行目において、データＤ４をチャネルＣＨ４を介して送信することを示している。
【００４０】
スレッド１１３において、最初の１〜２行目はそれぞれ、チャネルＣＨ１からデータを受信してＤ５に代入すること、およびチャネルＣＨ４からデータを受信してＤ６に代入することを示している。また、３行目において、Ｄ５にＤ６を乗算してＤ７に代入することを示している。さらに４行目において、データＤ７をチャネルＣＨ３を介して送信することを示している。
【００４１】
最後の記述１０３は、データＯＵＴＤをチャネルＯＵＴを介して送信することを示している。
【００４２】
再び図４に戻り、本実施の形態における高位合成装置の処理手順の説明を続ける。スレッド間同期通信オペレーションスケジューリング部２３は、ステップＳ１０において選択されたスレッド間の同期通信オペレーションのスケジューリングを行なう（Ｓ１１）。
【００４３】
このスレッド間同期通信オペレーションスケジューリング部２３をさらに詳細に説明するための概略構成図を図６に示す。スレッド間同期通信オペレーションスケジューリング部２３は、スケジューリング可能スレッド間同期通信オペレーション選択部２２から出力された動作記述２７（図５のスレッド１１１〜１１３がこれに相当する）の中からスレッド間の同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出部２８、スレッド間同期通信オペレーション抽出部２８によって抽出されたスレッド間同期通信オペレーションに基づいてスレッド内の同期通信オペレーション間のエッジを生成するためのスレッド内同期通信オペレーション間エッジ生成部２９、スレッド間同期通信オペレーション抽出部２８によって抽出されたスレッド間同期通信オペレーションに基づいてスレッド間の同期通信オペレーション組（各スレッド内における同期通信オペレーションを１組とする）間のエッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成部３０、スレッド間同期通信オペレーション抽出部２８とスレッド内同期通信オペレーション間エッジ生成部２９とスレッド間同期通信オペレーション組間エッジ生成部３０とによって生成された同期通信オペレーショングラフの各有向エッジに対して、スケジューリングサイクル制約を生成するためのスケジューリングサイクル制約付加部３１、およびスケジューリングサイクル制約付加部３１によって生成された制約条件に基づいて同期通信オペレーションのスケジューリングを行なうための同期通信スケジューリング部３２を含む。
【００４４】
図７は、スレッド間同期通信オペレーションスケジューリング部２３の処理手順を説明するためのフローチャートである。まず、スレッド間同期通信オペレーション抽出部２８は、スケジューリング可能スレッド間同期通信オペレーション間選択部２２によって選択された同期通信オペレーションの中から、スレッド間同期通信オペレーションを抽出する（Ｓ２０）。図５に示す動作記述の場合、スレッド１１１内のＳＥＮＤ（ＣＨ１，Ｄ１）、ＳＥＮＤ（ＣＨ２，Ｄ２）およびＲＥＣＶ（ＣＨ３）が抽出される。同様にして、スレッド１１２内のＲＥＣＶ（ＣＨ２）およびＳＥＮＤ（ＣＨ４，Ｄ４）が抽出され、スレッド１１３内のＲＥＣＶ（ＣＨ１）、ＲＥＣＶ（ＣＨ４）およびＳＥＮＤ（ＣＨ３，Ｄ７）が抽出される。
【００４５】
図８は、スレッド間同期通信オペレーション抽出部２８によって抽出された動作記述から生成された同期通信オペレーショングラフを示している。図８に示すグラフの中で、Ｓｎ（ｎ＝１〜４）はＳＥＮＤ（ＣＨｎ，Ｄｘ）に対応するノードを示している。また、Ｒｎ（ｎ＝１〜４）はＲＥＣＶ（ＣＨｎ）に対応するノードを示している。
【００４６】
次に、スレッド内同期通信オペレーション間エッジ生成部２９は、スレッド間同期通信オペレーション抽出部２８によって生成されたスレッド間同期通信オペレーショングラフに対して、スレッド内における同期通信オペレーションの順序関係に基づいてノード間に有向エッジを加える（Ｓ２１）。図９は、図８に示す同期通信オペレーショングラフに、このスレッド内同期通信オペレーション間エッジ生成部２９によって有向エッジが加えられた後のグラフを示している。図９からわかるように、各スレッド内のスレッド間同期通信オペレーションの順序関係のみが有向エッジ（実線）によって示されている。
【００４７】
次に、スレッド間同期通信オペレーション組間エッジ生成部３０は、スレッド内同期通信オペレーション間エッジ生成部２９によって有向エッジが加えられた後の同期通信オペレーショングラフに対して、スレッド間における同期通信オペレーションの送信と受信との関係に基づいてノード間に有向エッジを加える（Ｓ２２）。図１０は、このスレッド間同期通信オペレーション組間エッジ生成部３０によって有向エッジが加えられた後の同期通信オペレーショングラフを示している。たとえば、図５のスレッド１１１内の動作記述ＳＥＮＤ（ＣＨ１，Ｄ１）によって送信されるデータは、スレッド１１３内の動作記述ＲＥＣＶ（ＣＨ１）によって受信されることがわかるので、図１０に示すようにノードＳ１からノードＲ１へ有向エッジ（破線）が加えられる。同様にして、ノードＳ２とノードＲ２との間、ノードＳ３とノードＲ３との間、およびノードＳ４とノードＲ４との間に有向エッジが加えられる。
【００４８】
次に、スケジューリングサイクル制約付加部３１は、スレッド内同期通信オペレーション間エッジ生成部２９、およびスレッド間同期通信オペレーション組間エッジ生成部３０によって加えられた同期通信オペレーショングラフの有向エッジに対して、スケジューリング時の制約条件を付加する（Ｓ２３）。図１１は、このスケジューリングサイクル制約付加部３１をさらに詳細に説明するためのブロック図である。スケジューリングサイクル制約付加部３１は、スケジューリング可能スレッド間同期通信オペレーション選択部２２によって選択されたスレッドの動作記述に基づいてスレッド毎の動作合成を行なうためのスレッド毎動作合成部３５、およびスレッド毎動作合成部３５によって行なわれた動作合成結果（スケジューリング結果）に基づいてスケジューリングサイクルにおける制約条件を抽出するための同期通信オペレーション間スケジューリングサイクル制約抽出部３６を含む。
【００４９】
図１２は、スケジューリングサイクル制約付加部３１の処理手順を説明するためのフローチャートである。スレッド毎動作合成部３５は、各スレッド毎に動作合成を行ない、スレッド内の同期通信オペレーションのスケジューリングを行なう（Ｓ３０）。この動作合成には、一般に高位合成と呼ばれる手法が用いられる。この高位合成に関する手法の一例として、文献「High-Level Synthesis,Kluwer Academic Publishers 」に紹介されている手法を簡単に説明する。
【００５０】
図１３は、スレッド毎動作合成部３５の概略構成を示すブロック図であり、上述した高位合成と呼ばれる手法により動作合成を行なう。このスレッド毎動作合成装置３５は、動作記述４０からコントロールデータフローグラフ（ＣＤＦＧ）を生成するためのＣＤＦＧ生成部４１、ＣＤＦＧ生成部４１によって生成されたグラフの依存関係に基づいてスケジューリングを行なうためのスケジューリング部４１、およびスケジューリング部４２によるスケジューリング結果に基づいて、回路を構成する回路要素の選択、制御回路の生成を行なうことで、論理回路４４を合成するためのアロケーション部４３を含む。
【００５１】
ＣＤＦＧ生成部４１は、入力された動作記述４０を実行の制御の流れ（コントロールフロー）とデータの流れ（データフロー）とを表すＣＤＦＧと呼ばれるグラフに変換する。このグラフにおいては、データの入出力と演算や制御の分岐とが節点で表され、この節点間のデータの流れや制御の流れ（依存関係）が枝で表される。高位合成において、動作記述をこのＣＤＦＧに変換する理由は、動作記述に記述された動作が保証される上に、合成される論理回路に並列化の余地を残すことが可能な動作表現だからである。
【００５２】
次に、スケジューリング部４２は、ＣＤＦＧ生成部４１によって生成されたＣＤＦＧによって表される依存関係に基づき、節点に対応するデータの入出力と演算や制御の分岐とが実行される相対的な時間を決定する。この処理は一般にスケジューリングと呼ばれている。
【００５３】
そして、アロケーション部４３は、節点に対応する論理回路を合成する。すなわち、演算に割り当てられる演算器、データ選択のためのセレクタ、データを記憶するためのレジスタ等の回路要素（回路素子）が選択され、これらの回路要素を制御するための制御回路が生成され、これらの回路要素および制御回路間を接続することにより論理回路が合成される。この処理は一般にアロケーションと呼ばれている。なお、このアロケーションは、上述したスケジューリング処理と同時に行なわれる場合もある。
【００５４】
図１４は、図５に示すスレッド毎の動作記述のスケジューリング結果を示す図である。図１４のスケジューリング結果１１１’、１１２’および１１３’はそれぞれ、図５に示すスレッド１１１，１１２および１１３のスケジューリング結果を示している。たとえば、スケジューリング結果１１１’に示されるように、変数ＩＮＤと“５”とがノード“＋”に入力され、その加算結果Ｄ１がノード“ＣＨ１Ｗ”およびノード“−”に入力されている。また、加算結果Ｄ１と変数ＩＮＤとがノード“−”に入力され、その減算結果Ｄ２がノード“ＣＨ２Ｗ”に入力されている。また、ノード“ＣＨ１Ｗ”および“ＣＨ２Ｗ”は、それぞれ変数Ｄ１をＣＨ１に書き込み、変数Ｄ２をＣＨ２に書き込むことを示している。さらには、ノード“ＣＨ３Ｒ”はＣＨ３からデータを読み込むことを示しており、このデータが変数ＯＵＴＤに書き込まれる。なお、これらの一連の動作が１サイクルで実行されるように動作合成されている。
【００５５】
また、スケジューリング結果１１２’に示されるように、ノード“ＣＨ２Ｒ”によってＣＨ２からデータが読み込まれ、変数Ｄ３に代入される。また、変数Ｄ３と“４”とがノード“＋”に入力され、その加算結果Ｄ４がノード“ＣＨ４Ｗ”に入力され、その加算結果Ｄ４がＣＨ４に書き込まれる。これらの一連の動作も１サイクルで実行されるように動作合成されている。
【００５６】
また、スケジューリング結果１１３’に示すように、ノード“ＣＨ１Ｒ”によってＣＨ１からデータが読み込まれて変数Ｄ５に代入され、ノード“ＣＨ４Ｒ”によってＣＨ４からデータが読み込まれて変数Ｄ６に代入される。そして、変数Ｄ５とＤ６とがノード“×”に入力され、その乗算結果Ｄ７がノード“ＣＨ３Ｗ”に入力される。そして、ノード“ＣＨ３Ｗ”は乗算結果Ｄ７をＣＨ３に書き込む。なお、図１４に示すように、スレッド１１３の乗算に２サイクル要すると判断されて動作合成されている。
【００５７】
再び図１２に示すフローチャートに戻り、スケジューリングサイクル制約付加部３１の処理手順の説明を続ける。同期通信オペレーション間スケジューリングサイクル制約抽出部３６は、スレッド毎動作合成部３５によるスケジューリング結果に基づいて同期通信オペレーション間のスケジューリングサイクル制約を抽出し、図１０に示す同期通信オペレーショングラフの各エッジに当該スケジューリングサイクル制約を制約条件として付加する（Ｓ３１）。
【００５８】
同期通信オペレーション間のスケジューリングサイクル制約は、スレッド内同期通信間スケジューリング制約と、スレッド間同期通信間スケジューリング制約との２種類に大別され、それぞれ以下の式で算出される。なお、図１０に示すグラフにおいて、実線で示す有向エッジはスレッド内同期通信間スケジューリング制約を表しており、破線で示す有向エッジはスレッド間同期通信間スケジューリング制約を表している。
【００５９】
スレッド内同期通信間スケジューリング制約＝｜先行実行される同期通信オペレーションのスケジューリングサイクル−後続実行される同期通信オペレーションのスケジューリングサイクル｜‥‥  （１）
スレッド間同期通信間スケジューリング制約＝１  ‥‥  （２）
たとえば、ノードＳ１とＳ２との間の有向エッジは、スレッド内同期通信間スケジューリング制約であるので、式（１）を用いて計算する。すなわち、図１４に示すように、ノードＳ１とＳ２とに対応するノード“ＣＨ１Ｗ”と“ＣＨ２Ｗ”とは、共に１サイクル目にスケジューリングされているため、スレッド内同期通信間スケジューリング制約＝｜１−１｜＝０となる。
【００６０】
また、ノードＲ４とＳ３との間の有向エッジも、スレッド内同期通信間スケジューリング制約であるので、式（１）を用いて計算する。すなわち、図１４に示すように、ノードＲ４とＳ３とに対応するノード“ＣＨ４Ｒ”と“ＣＨ３Ｗ”とは、それぞれ１サイクル目と２サイクル目にスケジューリングされているため、スレッド内同期通信間スケジューリング制約＝｜２−１｜＝１となる。
【００６１】
一方、ノードＳ１とＲ１との間の有向エッジは、スレッド間同期通信間スケジューリング制約であるので、式（２）を用いて計算する。すなわち、スレッド間同期通信間スケジューリング制約＝１となる。このようにして、図１４に示すスケジューリング結果を用いてスレッド内同期通信間スケジューリング制約およびスレッド間同期通信間スケジューリング制約を算出し、これらの制約条件を付加したグラフを図１５に示す。
【００６２】
次に、図７に示すスレッド間同期通信オペレーションスケジューリング部２３のフローチャートに戻り、ステップＳ２４の処理について説明する。同期通信スケジューリング部３２は、スケジューリングサイクル制約付加部３１によって制約条件が付加された同期通信オペレーショングラフを用いて同期通信のスケジューリングを行なう。このスケジューリングには、ＡＳＡＰスケジューリング方法が用いられ、有向エッジに付加されたスケジューリング制約を満たすように同期通信オペレーションノードがスケジューリングされる。
【００６３】
図１６は、この同期通信スケジューリング部３２の処理手順を説明するためのフローチャートである。まず、同期通信スケジューリング部３２に図１５に示す制約が付加されたグラフが入力されると、このグラフのノードの中から次にスケジューリングするノード（以下、スケジュールノードと呼ぶ）が選択される（Ｓ４０）。同期通信スケジューリング部３２は、先行するノードを持たないノード、または先行するノードが全てスケジューリングされているノードを選択する。この先行するノードとは、注目するノードに有向エッジの終端を持つノードのことを意味する。図１５に示すグラフの場合、同期通信スケジューリング部３２は、まずノードＳ１をスケジュールノードとして選択する。
【００６４】
次に、ステップＳ４０において選択されたスケジュールノードがあるか否かを判定する（Ｓ４１）。選択されたスケジュールノードがなければ（Ｓ４１，Ｎｏ）、処理を終了する。また、選択されたスケジュールノードがあれば（Ｓ４１，Ｙｅｓ）、ステップＳ４２へ進む。
【００６５】
ステップＳ４２において、同期通信スケジューリング部３２は、選択されたスケジュールノードのスケジューリングサイクルを計算する（Ｓ４２）。この後、ステップＳ４０においてさらにスケジュールノードの選択を繰り返すが、ここで、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限する方法と、制限しない方法とが挙げられる。
【００６６】
同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限しない方法の場合、同期通信スケジューリング部３２はノードＳ１のスケジューリングの後、同じ種類のノードであるＳ２を選択する。このノードＳ２をスケジューリングする際ノードＳ１とＳ２との間の制約が“０”であるので、図１７に示すように、同じスケジューリングサイクル“１”にスケジューリングする。また、ノードＲ１をスケジューリングする際ノードＳ１とＲ１との間の制約が“１”であるので、ノードＲ１をスケジューリングサイクル“２”にスケジューリングする。このようにして、先行するノードが全てスケジューリングされているノードを順次スケジューリングすると、図１５に示す制約が付加されたグラフから図１７に示すスケジューリング結果が得られる。
【００６７】
なお、注目するノードが複数の先行ノードを有する場合には、スケジュールサイクルを次式により算出する。
【００６８】
スケジューリングサイクル＝Ｍａｘ｛先行ノードｉのスケジューリングサイクル＋先行ノードｉとスケジュールノードとの間のスケジューリングサイクル制約（ただし、ｉ＝１〜ｎ）｝    ‥‥  （３）
なお、ｎは先行ノードの総数を、ｉは１〜ｎの任意の整数を表している。
【００６９】
たとえば、図１５のノードＲ３のスケジューリングサイクルは以下のようにして求められる。
【００７０】
スケジューリングサイクル＝Ｍａｘ｛（先行ノードＳ２のスケジューリングサイクル＋先行ノードＳ２とスケジュールノードＲ３との間のスケジューリングサイクル制約），（先行ノードＳ３のスケジューリングサイクル＋先行ノードＳ３とスケジュールノードＲ３との間のスケジューリングサイクル制約）｝＝Ｍａｘ｛（１＋０），（４＋１）｝＝５
このようにして、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限せずにスケジューリングすることにより、スレッド間のバス幅等が大きくなるが、処理速度に優れた論理回路を合成することが可能になる。
【００７１】
また、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限する方法の場合（たとえば、同じ種類のノードによるオペレーション数を１に制限する場合）、同期通信スケジューリング部３２はノードＳ１のスケジューリングの後、同じ種類のノードであるＳ２を選択せずに、異なる種類のノードＲ１を選択する。そして、同じ種類のノードＳ２は次のスケジュールサイクル以降にスケジューリングされるように選択される。すなわち、図１８に示すように、スケジューリングサイクル“２”でこのノードＳ２のスケジューリングが行なわれる。このようにして、先行するノードが全てスケジューリングされているノードを順次スケジューリングすると、図１５に示す制約が付加されたグラフから図１８に示すスケジューリング結果が得られる。
【００７２】
このように、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスケジューリングすることにより、スレッド間のバス幅等を小さくすることができ、合成される論理回路の回路規模を小さくすることが可能になる。
【００７３】
再び図４に示す高位合成装置のフローチャートに戻り、ステップＳ１２以降の処理手順の説明を続ける。ステップＳ１１において作成されたスケジューリング結果に基づいてスレッド毎の動作合成制約情報を生成する（Ｓ１２）。たとえば、図１９は図１７に示すスケジューリング結果に基づいて生成されたスレッド毎の動作制約情報を示している。図１９の中の情報１１１”、１１２”および１１３”は、それぞれ図５に示すスレッド１１１，１１２および１１３の動作合成制約情報を示している。
【００７４】
スレッド毎動作合成部２５は、このようにして生成された動作合成制約情報に基づいてスレッド毎に動作合成を行ない、論理回路２６を生成する（Ｓ１３）。この動作合成は、図１３を用いて説明した高位合成の処理手順と同じであるので、詳細な説明は繰り返さない。
【００７５】
以上説明したように、本実施の形態における高位合成装置によれば、ハンドシェイクなしにスレッド間同期通信が可能な動作記述に対して、高速にデータ通信が可能な論理回路を確実に合成でき、回路規模の縮小を図ることが可能となった。
【００７６】
また、スレッド毎に動作合成制約情報を生成し、各スレッド毎に動作合成を行なうため、スケジューリング対象を小さくすることが可能となり、スケジューリングに要する時間を縮小することが可能となった。
【００７７】
また、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限せずにスケジューリングすることにより、スレッド間のバス幅等が大きくなるが、処理速度に優れた論理回路を合成することが可能になった。
【００７８】
さらには、同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限してスケジューリングすることにより、スレッド間のバス幅等を小さくすることができ、合成される論理回路の回路規模を小さくすることが可能になった。
【００７９】
（実施の形態２）
以下に本発明の実施の形態２における高位合成装置について説明するが、まず、実施の形態１における高位合成装置によってパイプライン動作を実行する回路を合成した場合における問題点について説明する。
【００８０】
図２０は、動作記述の他の一例を示している。図２０に示す動作記述２０１において、ＲＥＣＶ（ＩＮ）はチャネルＩＮを介してデータを受信する記述であり、その受信データをＩＮＤに代入することを示している。次の動作記述２０２において、ＰＡＲ文によって複数のプロセスを並列に動作させることを定義している。動作記述２０２の中の動作記述２１１〜２１３は、それぞれスレッドを示している。
【００８１】
スレッド２１１において、最初の１〜２行目の記述はそれぞれ、ＩＮＤに“５”を加算してＤ１に代入すること、およびＤ１からＩＮＤを減算してＤ２に代入することを示している。また、３〜４行目の記述はそれぞれ、データＤ１をチャネルＣＨ１を介して送信すること、およびデータＤ２をチャネルＣＨ２を介して送信することを示している。さらに５行目において、チャネルＣＨ３を介して受信したデータからチャネルＣＨ４を介して受信したデータを減算し、その減算結果をＯＵＴＤに代入することを示している。
【００８２】
スレッド２１２において、最初の１行目の記述は、チャネルＣＨ１から受信したデータをＤ３に代入することを示している。また、２行目において、Ｄ３に“４”を乗算してＤ４に代入することを示している。さらに３行目において、データＤ４をチャネルＣＨ３を介して送信することを示している。
【００８３】
スレッド２１３において、最初の１行目の記述は、チャネルＣＨ２から受信したデータをＤ５に代入することを示している。また、２行目において、Ｄ５に“９”を加算してＤ６に代入することを示している。さらに３行目において、データＤ６をチャネルＣＨ４を介して送信することを示している。
【００８４】
最後の記述２０３は、データＯＵＴＤをチャネルＯＵＴを介して送信することを示している。
【００８５】
図２１および図２２は、図２０に示す動作記述から生成された制約条件が付加されたグラフおよびスケジューリング結果を示しており、スレッド間同期通信オペレーションスケジューリング部２３によって生成されたものである。図２２に示すように、スレッド２１３’内のノードＳ４がスケジューリングサイクル“２”にスケジューリングされており、スレッド２１１’内のノードＲ４がスケジューリングサイクル“４”にスケジューリングされている。そのため、このスケジューリング結果からパイプラインスループットサイクル“１”サイクルでパイプライン動作する回路を合成すると、ノードＳ４が含まれるスレッド２１３’は毎サイクルノードＳ４にあたる動作を行なうようになる。その結果、スレッド２１１’のノードＲ４は、スケジューリングサイクル“２”で実行されたノードＳ４の値ではなく、スレッド２１３’の次のパイプライン動作で実行されるノードＳ４（スケジューリングサイクル“３”）の値を受け取ることになり、誤った値を受信することになる。
【００８６】
本実施の形態における高位合成装置は、パイプライン動作を実行する回路の合成に適用されるものであり、図３に示すスレッド間同期通信オペレーションスケジューリング部２３の構成および機能のみが異なる。したがって、重複する構成および機能についての詳細な説明は繰り返さない。なお、本実施の形態においてスレッド間同期通信オペレーションスケジューリング部の参照符号を２３’として説明する。
【００８７】
図２３は、本実施の形態における高位合成装置のスレッド間同期通信オペレーションスケジューリング部２３’の概略構成を示す図である。このスレッド間同期通信オペレーションスケジューリング部２３’は、スケジューリング可能スレッド間同期通信オペレーション選択部２２から出力された動作記述２７の中からスレッド間の同期通信オペレーションを抽出するためのスレッド間同期通信オペレーション抽出部２８、スレッド間同期通信オペレーション抽出部２８によって抽出されたスレッド間同期通信オペレーションに基づいてスレッド内の同期通信オペレーション間のエッジを生成するためのスレッド内同期通信オペレーション間エッジ生成部２９、スレッド間同期通信オペレーション抽出部２８によって抽出されたスレッド間同期通信オペレーションに基づいてスレッド間の同期通信オペレーション組間のエッジを生成するためのスレッド間同期通信オペレーション組間エッジ生成部３０、スレッド間同期通信オペレーション抽出部２８とスレッド内同期通信オペレーション間エッジ生成部２９とスレッド間同期通信オペレーション組間エッジ生成部３０とによって生成された同期通信オペレーショングラフの各有向エッジに対して、パイプライン化に必要となるスケジューリングサイクル制約を付加するためのパイプライン化スケジューリングサイクル制約付加部５１、パイプライン化スケジューリングサイクル制約付加部５１によって付加された制約条件に基づいて同期通信オペレーションのスケジューリングを行なうためのパイプライン化同期通信スケジューリング部５２およびパイプライン化同期通信スケジューリング部５２によるスケジューリング結果内のノードのスケジューリングサイクルを調整するためのスケジューリングサイクル調整部５３を含む。
【００８８】
パイプライン化スケジューリングサイクル制約付加部５１は、同期通信オペレーション間のスケジューリングサイクル制約を次式によって算出する。
【００８９】
スレッド内同期通信間スケジューリング制約＝
｜先行実行される同期通信オペレーションのスケジューリングサイクル−
後続実行される同期通信オペレーションのスケジューリングサイクル｜
‥‥  （４）
スレッド間同期通信スケジューリング制約＝
パイプラインスループットサイクル  ‥‥  （５）
パイプラインスループットサイクルとは、何サイクルの間隔で回路をパイプライン化合成するかを示す値であり、設計者によって与えられる。以下の説明においては、設計者によりパイプラインサイクル“１”が与えられたものとする。
【００９０】
パイプライン化スケジューリングサイクル制約付加部５１によってスケジューリングサイクル制約が付加された同期通信オペレーショングラフは、図２１に示す通りとなる。
【００９１】
パイプライン化同期通信スケジューリング部５２は、パイプライン化スケジューリングサイクル制約付加部５１によって制約条件が付加された同期通信オペレーショングラフを用いて同期通信のスケジューリングを行なう。このスケジューリングには、図１６を用いて説明したＡＳＡＰスケジューリング方法が用いられ、有効エッジに付加されたスケジューリング制約を満たすように同期通信オペレーションノードがスケジューリングされる。図２２は、このスケジューリングによって生成されたスケジューリング結果を示している。なお、このスケジューリングの際、上述したように同じスケジューリングサイクル内で同じ種類のノードによるオペレーション数を制限する方法と、制限しない方法とを選択して行なうことができる。
【００９２】
図２４は、パイプライン化同期通信スケジューリング部５２がスケジューリング結果内のノードのスケジューリングサイクルを調整する手順を示すフローチャートである。まず、パイプライン化同期通信スケジューリング部５２は、同期通信オペレーショングラフ内のスレッド間同期通信間スケジューリング制約が付加されたエッジについて、チェックされていないエッジがあるか否かを判定する（Ｓ５０）。
【００９３】
パイプライン化同期通信スケジューリング部５２は、チェックされていないエッジがないと判定した場合（Ｓ５０，Ｎｏ）、処理を終了する。また、パイプライン化同期通信スケジューリング部５２は、チェックされていないエッジがあると判定した場合（Ｓ５０、Ｙｅｓ）、そのエッジ両端のスケジューリングサイクル差を計算する（Ｓ５１）。そして、そのスケジューリングサイクル差がパイプラインスループットサイクルと同じであるか否かを判定する（Ｓ５２）。
【００９４】
スケジューリングサイクル差がパイプラインスループットサイクルと同じであれば（Ｓ５２，Ｙｅｓ）、ステップＳ５０へ戻り処理を繰り返す。また、スケジューリングサイクル差がパイプラインスループットサイクルと異なれば（Ｓ５２，Ｎｏ）、パイプライン化同期通信スケジューリング部５２は、ＳＥＮＤノードのスケジューリングサイクルを調整し（Ｓ５３）、ステップＳ５０へ戻って処理を繰り返す。
【００９５】
図２５は、パイプライン化同期通信スケジューリング部５２によってスケジューリングサイクルが調整された後の同期通信オペレーショングラフを示している。図２２においてノードＳ１とＲ１との間、ノードＳ２とＲ２との間、ノードＳ３とＲ３との間のスケジューリングサイクルの差はそれぞれ“１”であるので、図２５に示すようにスケジューリングサイクルの調整は行なわれない。しかし、図２２においてノードＳ４とＲ４との間のスケジューリングサイクルの差は“２”であるので、スケジューリングサイクルの調整が行なわれ、ノードＳ４がスケジューリングサイクル“３”に移動される。
【００９６】
図２６は、スケジューリングサイクル調整部５３の処理手順を説明するためのフローチャートである。スケジューリングサイクル調整部５３は、パイプライン化同期通信スケジューリング部５２によってスケジューリングサイクルが調整された後の同期通信オペレーショングラフに対して、さらに各スレッド毎にスケジューリングサイクルの調整を行なって、パイプライン処理が可能な回路に変更する。
【００９７】
まず、スケジューリングサイクル調整部５３は、スケジューリングサイクル“１”にノードがスケジューリングされているか否かを判定する（Ｓ６０）。スケジューリングサイクル“１”にノードがスケジューリングされていれば（Ｓ６０，Ｙｅｓ）、スケジューリングサイクル調整部５３は処理を終了する。また、スケジューリングサイクル“１”にノードがスケジューリングされていなければ（Ｓ６０，Ｎｏ）、スケジューリングサイクル調整部５３は当該スレッド内のノードのスケジューリングサイクルから“１”を減算する（Ｓ６１）。すなわち、当該スレッド内の各ノードを１つ上のスケジューリングサイクルにスケジューリングし直す。そして、ステップＳ６０へ戻り処理を繰り返す。
【００９８】
図２７は、スケジューリングサイクル調整部５３によって、図２５に示す同期通信オペレーショングラフのスケジューリングサイクルが調整された後のグラフを示している。図２５においてノードＲ１およびＳ３がそれぞれスケジューリングサイクル“２”および“３”にスケジューリングされていたが、図２７においてはそれぞれスケジューリングサイクル“１”および“２”にスケジューリングされている。同様に、図２５においてノードＲ２およびＳ４がそれぞれスケジューリングサイクル“２”および“３”にスケジューリングされていたが、図２７においてはそれぞれスケジューリングサイクル“１”および“２”にスケジューリングされている。
【００９９】
図３に示すスレッド毎動作合成制約情報生成部２４は、以上の処理によって求めれられたスケジューリング結果から動作合成制約情報を生成する。そして、図３に示すスレッド毎動作合成部２５は、スレッド毎に動作合成を行なう。この動作合成の際、スレッド毎動作合成部２５はパイプラインスループットサイクルも考慮して動作合成を行ない、指定されたパイプラインスループットで動作を行なうように回路を合成する。
【０１００】
以上説明したように、本実施の形態における高位合成装置によれば、パイプラインスループットサイクルに基づいて同期通信オペレーショングラフのスケジューリングサイクルを調整するようにしたので、誤動作を起こさないようにパイプライン動作を行なう回路を合成することが可能になった。
【０１０１】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】本発明の高位合成装置の外観例を示す図である。
【図２】本発明の高位合成装置の構成を示すブロック図である。
【図３】本発明の実施の形態１における高位合成装置の概略構成を説明するためのブロック図である。
【図４】本発明の実施の形態１における高位合成装置の処理手順を説明するためのフローチャートである。
【図５】本発明の実施の形態１における高位合成装置が処理する動作記述の一例を示す図である。
【図６】図３に示すスレッド間同期通信オペレーションスケジューリング部２３をさらに詳細に説明するためのブロック図である。
【図７】図３に示すスレッド間同期通信オペレーションスケジューリング部２３の処理手順をさらに詳細に説明するためのフローチャートである。
【図８】図６に示すスレッド間同期通信オペレーション抽出部２８によって生成された同期通信オペレーショングラフを示す図である。
【図９】図６に示すスレッド内同期通信オペレーション間エッジ生成部２９によって有向エッジが付加された同期通信オペレーショングラフを示す図である。
【図１０】図６に示すスレッド間同期通信オペレーション組間エッジ生成部３０によって有向エッジが付加された同期通信オペレーショングラフを示す図である。
【図１１】図６に示すスケジューリングサイクル制約付加部３１をさらに詳細に説明するためのブロック図である。
【図１２】図６に示すスケジューリングサイクル制約付加部３１の処理手順をさらに詳細に説明するためのフローチャートである。
【図１３】図１１に示すスレッド毎動作合成部３５をさらに詳細に説明するためのブロック図である。
【図１４】図１１に示すスレッド毎動作合成部３５によるスレッド毎のスケジューリング結果を示す図である。
【図１５】図１１に示す同期通信オペレーション間スケジューリングサイクル制約抽出部３６によって制約が付加された同期通信オペレーショングラフを示す図である。
【図１６】図６に示す同期通信スケジューリング部３２の処理手順を説明するためのフローチャートである。
【図１７】同じ種類のノードによるオペレーション数を制限せずにスケジューリングした場合のスケジューリング結果を示す図である。
【図１８】同じ種類のノードによるオペレーション数を制限してスケジューリングした場合のスケジューリング結果を示す図である。
【図１９】図３に示すスレッド毎動作合成制約情報生成部２４によって生成された動作合成制約情報を示す図である。
【図２０】本発明の実施の形態２における高位合成装置が処理する動作記述の一例を示す図である。
【図２１】パイプライン化スケジューリングサイクル制約付加部５１によって制約が付加された同期通信オペレーショングラフを示す図である。
【図２２】パイプライン化同期通信スケジューリング部５２によってスケジューリングサイクルの調整が行なわれる前のスケジューリング結果を示す図である。
【図２３】本発明の実施の形態２におけるスレッド間同期通信オペレーションスケジューリング部２３’を詳細に説明するためのブロック図である。
【図２４】パイプライン化同期通信スケジューリング部５２の処理手順を説明するためのフローチャートである。
【図２５】パイプライン化同期通信スケジューリング部５２によってスケジューリングサイクルの調整が行なわれた後のスケジューリング結果を示す図である。
【図２６】スケジューリングサイクル調整部５３の処理手順を説明するためのフローチャートである。
【図２７】スケジュルーリングサイクル調整部５３によってスケジューリングサイクルが調整された後のスケジューリング結果を示す図である。
【符号の説明】
１  コンピュータ本体
２  グラフィックディスプレイ装置
３  磁気テープ装置
４  磁気テープ
５  キーボード
６  マウス
７  ＣＤ−ＲＯＭ装置
８  ＣＤ−ＲＯＭ
９  通信モデム
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  ハードディスク
２２  スケジューリング可能スレッド間同期通信オペレーション選択部
２３，２３’  スレッド間同期通信オペレーションスケジューリング部
２４  スレッド毎動作合成制約情報生成部
２５  スレッド毎動作合成部
２８  スレッド間同期通信オペレーション抽出部
２９  スレッド内同期通信オペレーション間エッジ生成部
３０  スレッド間同期通信オペレーション組間エッジ生成部
３１  スケジューリングサイクル制約付加部
３２  同期通信スケジューリング部
３５  スレッド毎動作合成部
３６  同期通信オペレーション間スケジューリングサイクル制約抽出部
４１  ＣＤＦＧ生成部
４２  スケジューリング部
４３  アロケーション部
５１  パイプライン化スケジューリングサイクル制約付加部
５２  パイプライン化同期通信スケジューリング部
５３  スケジューリングサイクル調整部
【図１】
0003763700.tif 000002
【図２】
0003763700.tif 000003
【図３】
0003763700.tif 000004
【図４】
0003763700.tif 000005
【図５】
0003763700.tif 000006
【図６】
0003763700.tif 000007
【図７】
0003763700.tif 000008
【図８】
0003763700.tif 000009
【図９】
0003763700.tif 000010
【図１０】
0003763700.tif 000011
【図１１】
0003763700.tif 000012
【図１２】
0003763700.tif 000013
【図１３】
0003763700.tif 000014
【図１４】
0003763700.tif 000015
【図１５】
0003763700.tif 000016
【図１６】
0003763700.tif 000017
【図１７】
0003763700.tif 000018
【図１８】
0003763700.tif 000019
【図１９】
0003763700.tif 000020
【図２０】
0003763700.tif 000021
【図２１】
0003763700.tif 000022
【図２２】
0003763700.tif 000023
【図２３】
0003763700.tif 000024
【図２４】
0003763700.tif 000025
【図２５】
0003763700.tif 000026
【図２６】
0003763700.tif 000027
【図２７】
0003763700.tif 000028