(57)【要約】【課題】複数の機能モジュールが使用するメモリのメモリ構成が異なる場合でも、各機能モジュールがメモリを共有出来るように、メモリの接続記述を自動的に生成する。【解決手段】処理動作の記述を解析し、全機能モジュールが使用するメモリのメモリ構成の情報のリストを作成する（Ｓ１、Ｓ２）。排他動作する機能モジュールを識別し、メモリ構成の各容量を算出する（Ｓ３）。排他動作する機能モジュール毎に共有可能なメモリ構成の組み合わせの対応付けを探索する（Ｓ４〜Ｓ１１）。探索結果を基に、メモリ記述の修正及び変更を行う（Ｓ１２）。【選択図】図８
2014106639.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能モジュールの処理動作の記述を解析し、排他動作する複数の機能モジュールが使用するメモリのメモリ構成情報を取得するメモリ構成情報取得手段と、
該取得したメモリ構成情報を基に、前記排他動作する複数の機能モジュール間で共有可能なメモリ構成の対応付けを行う対応付け手段と、
該対応付けの記述を含むメモリの接続記述を生成するメモリ接続記述生成手段と、
を有する高位合成装置。
【請求項２】
請求項１に記載された高位合成装置において、
前記対応付け手段は、前記排他動作する複数の機能モジュールが使用するメモリのメモリ構成情報を比較し、該複数の機能モジュール間で共有可能なメモリ構成を対応付ける高位合成装置。
【請求項３】
請求項２に記載された高位合成装置において、
前記排他動作する複数の機能モジュール内に、使用するメモリのメモリ構成が異なる複数の下階層モジュールがある場合、前記対応付け手段は、容量の大きいメモリ構成から順に対応付ける高位合成装置。
【請求項４】
請求項２に記載された高位合成装置において、
前記排他動作する複数の機能モジュール間にメモリ構成が同じメモリがある場合には、前記対応付け手段は、最初に当該メモリ構成同士を対応付ける高位合成装置。
【請求項５】
請求項２に記載された高位合成装置において、
前記対応付け手段は、前記メモリ構成をビット方向又はワード方向の少なくとも一方に分割して対応付ける高位合成装置。
【請求項６】
請求項５に記載された高位合成装置において、
分割される最小のメモリ構成、又は分割数に制限を有する高位合成装置。
【請求項７】
請求項１に記載された高位合成装置において、
メモリ構成を共有しないメモリを指定した記述が前記処理動作の記述に含まれていた場合、前記対応付け手段は、前記メモリ構成を共有しないメモリを共有可能なメモリの組み合わせの対象外とする高位合成装置。
【請求項８】
請求項１に記載された高位合成装置において、
前記処理動作の記述に、メモリを共有とするための記述が含まれていた場合、前記対応付け手段は、前記メモリを共有とするための記述を優先的に採用する高位合成装置。
【請求項９】
コンピュータにより処理動作の記述からレジスタトランスファレベルの論理回路を生成する高位合成方法であって、
複数の機能モジュールの処理動作の記述を解析し、排他動作する複数の機能モジュールが使用するメモリのメモリ構成情報を取得するメモリ構成情報取得ステップと、
該取得したメモリ構成情報を基に、前記排他動作する複数の機能モジュール間で共有可能なメモリ構成の対応付けを行う対応付けステップと、
該対応付けの記述を含むメモリの接続記述を生成するメモリ接続記述生成ステップと、
を有する高位合成方法。
【請求項１０】
請求項９に記載された高位合成方法の各ステップをコンピュータに実行させる高位合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理動作記述からレジスタトランスファレベル（ＲＴＬ）の論理回路を自動生成する、高位合成装置、高位合成方法、及び高位合成プログラムに関する。
【背景技術】
【０００２】
ＬＳＩの集積度は年々指数関数的に増加しているが、設計者一人一人の能力には限界があるため、設計規模の増大に設計能力が追いつかないという状況が生じる。この設計生産性の危機を打開するための有効なアプローチの一つに、設計の抽象度を上げる方法が知られている。
【０００３】
例えば、ある処理を実行するハードウェアを設計する際に、対象となる処理のアルゴリズムを動作レベルで記述した「処理動作記述」から、レジスタやクロックによる同期などハードウェアに特有の概念を意識した「レジスタ転送レベル記述」（以下、「ＲＴＬ記述」と言う）を自動的に合成する「高位合成」（「動作合成」、「機能合成」とも言われている）がある。
【０００４】
ここで、「処理動作記述」はＣ言語のようなプログラミング言語を用いて、回路の動作を逐次処理として記述したものであり、「ＲＴＬ記述」はVerilog-ＨＤＬのようなハードウェア記述言語（Hardware Description Language：ＨＤＬ）により記述したものである。
【０００５】
高位合成では、Ｃ、Ｃ++言語などで記述されたアルゴリズムからＲＴＬへの変換を行えるが、ハード特有の部分の生成が困難な場合には記述の修正が必要となる。例えば、メモリ部分などは処理動作記述にはないため、ハード化のための記述をする必要がある。
【０００６】
特に、図１に示すような、回路Ａ 100と回路Ｂ 102の両回路がメモリ(ＲＡＭ)101を共有している場合などでは記述の修正を行っている。その記述は、図２に示すようになる。ここで、図２（１）はトップ記述、図２（２）はメモリ記述、図２（３）は回路Ａ記述、図２（４）は回路Ｂ記述である。
【０００７】
図２（１）に示すように、トップ記述200は、回路Ａ 100、回路Ｂ 102のそれぞれがＲＡＭ101の接続記述として、記述204及び205を有する。記述204は回路Ａ 100の接続信号ポートとＲＡＭ101の接続信号ポートの記述であり、記述205は回路Ｂ 102の接続信号ポートとＲＡＭ101の接続信号ポートの記述である。
【０００８】
図２（２）に示すように、メモリ記述201は、回路Ａ 100と回路Ｂ 102への接続記述として、記述206乃至210を有する。記述206と207は、回路Ａ 100と回路Ｂ 102への接続のためのポートの記述である。記述208は、このポートがメモリを共有とするための記述である。記述209及び210は、このポートとメモリ（メモリマクロ）との接続記述である。メモリ（メモリマクロ）との接続は、回路Ａ 100及び回路Ｂ 102からの信号をメモリ（メモリマクロ）のインタフェースへセレクタを介して接続されるようになる。
【０００９】
図２（３）に示すように、回路Ａ記述202は、ＲＡＭ101との接続のためのポートの記述211を有し、図２（４）に示すように、回路Ｂ記述203は、ＲＡＭ101との接続のためのポートの記述212を有する。
【００１０】
ＲＴＬに変換される回路としてのイメージ図は図３に示すようになる。図２に示す記述例では、ＲＡＭ部分を１つのモジュール(ＲＡＭトップ)301として作成し、メモリマクロ(ＲＡＭ302）を回路Ａ 100と回路Ｂ 102から共有制御するための制御信号を選択するセレクタ303が作成される。
【００１１】
このように、メモリの接続記述（メモリインタフェースとなる回路記述）は処理動作の記述とは異なり、ハード化のための記述であり、共有であるための記述208乃至210が必要である。また、複数のメモリを共有化させる場合には、どのメモリをどのように共有化させるか（ここでは記載していない）を人手で検討して記述する必要がある。
【００１２】
近年、ＡＳＩＣなどの論理回路は大規模となり、多機能化され、複数の機能モジュールが搭載され、機能モジュール個々にメモリが使用され、多種多数のメモリが使用される。回路規模を削減するためにメモリを共有させることが多々あるが、多数の機能モジュールとメモリとの共有のための組み合せを検討し、記述する手間が大きくなっている。
【００１３】
メモリ共有を可能とした高位合成装置としては、動作合成記述からメモリに変換される部分を検出・抽出する手段と、抽出した記述よりサイズや、接続情報を分析してメモリへの変換及びプロトコルへの変換を行う手段を備え、メモリへの変換として、スケジュールリングのためのＣＤＦＧ（コントロール・データ・フロー・グラフ）の生成から、主に並列動作する箇所に関しての共有可能なメモリを分析することで、アロケーションを行う高位合成装置がある（特許文献１、２）。
【００１４】
しかしながら、上述のメモリ共有を可能とした高位合成装置は、単一のメモリを並列動作するモジュールから、スケジューリングを基にアロケーション回路を生成してメモリ共有を行うものであるため、共有する回路のそれぞれが使用するメモリ容量としては共有可能であっても、メモリ構成が異なる場合には対応していない。
【００１５】
メモリ容量としては共有可能であっても、メモリ構成が異なる場合とは、例えば、一方の回路で８ビット×１２８ワードを２個使用しており、他方の回路で１６ビット×１２８ワードを１個使用する場合である。
【００１６】
このような場合、メモリを組み合わせて必要なメモリ構成にするとともに、その組み合わせを示すメモリの接続記述を作成することで共有が可能となる。しかし、人手により組み合わせの検討とその記述を行う必要があり、最適（メモリを最小容量にするなど）とすることが困難である。また、設計途中で各メモリ構成の変更が発生したとき、再度メモリの組み合わせ及び記述の変更が必要となるため、作業が大きくなるという問題や、人手では記述ミスとなる可能性が増えるという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【００１７】
本発明は、このような問題を解決するためになされたものであり、その目的は、複数の機能モジュールが使用するメモリのメモリ構成が異なる場合であっても、それらの機能モジュールがメモリを共有出来るように、メモリの接続記述を自動的に生成出来るようにすることである。
【課題を解決するための手段】
【００１８】
本発明は、複数の機能モジュールの処理動作の記述を解析し、排他動作する複数の機能モジュールが使用するメモリのメモリ構成情報を取得するメモリ構成情報取得手段と、該取得したメモリ構成情報を基に、前記排他動作する複数の機能モジュール間で共有可能なメモリ構成の対応付けを行う対応付け手段と、該対応付けの記述を含むメモリの接続記述を生成するメモリ接続記述生成手段と、を有する高位合成装置である。
【発明の効果】
【００１９】
本発明によれば、複数の機能モジュールが使用するメモリのメモリ構成が異なる場合であっても、それらの機能モジュールがメモリを共有出来るように、メモリの接続記述を自動的に生成することが出来る。
【図面の簡単な説明】
【００２０】
【図１】２つの回路がメモリを共有する構成を示すブロック図である。
【図２】２つの回路がメモリを共有する場合の記述例を示す図である。
【図３】２つの回路がメモリを共有するための制御信号選択回路を説明するための図である。
【図４】本発明の実施形態に係る高位合成装置のハードウェア構成を示すブロック図である。
【図５】本発明の第１の実施形態における、メモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図、及びそのメモリのメモリ構成と２つの機能モジュールが使用するメモリのメモリ構成との関係を示す図である。
【図６】図５に示す構成を実現するための制御信号選択回路を示す図である。
【図７】図６に示す回路を生成するための記述を高位合成可能な記述を示す図である。
【図８】図７に示す記述を作成する処理の手順を示すフローチャートである。
【図９】図７に示す記述に変換される前の記述を示す図である。
【図１０】本発明の第２の実施形態における、メモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図である。
【図１１】図１０におけるメモリのメモリ構成と２つの機能モジュールが使用するメモリのメモリ構成との関係を示す図である。
【図１２】図１１に示すメモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートである。
【図１３】図１２に示す処理を実行する過程で作成され、保持される情報を示す図である。
【図１４】１つのメモリをワード方向やビット方向に結合して組み合わせ、異なるメモリ構成のメモリとする様子を示す図である。
【図１５】１つのメモリをワード方向やビット方向に分割して、異なるメモリ構成の２つのメモリとする様子を示す図である。
【図１６】複数のメモリのそれぞれをワード方向に分割したものをビット方向に組み合わせて、異なるメモリ構成の１つのメモリとする様子を示す図である。
【図１７】本発明の第３の実施形態における、メモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図である。
【図１８】図１７における一方の機能モジュールが使用するメモリを示す図である。
【図１９】図１７における一方の機能モジュールが使用するメモリのメモリ構成を示す図である。
【図２０】図１７における他方の機能モジュールが使用するメモリを示す図である。
【図２１】図１７における他方の機能モジュールが使用するメモリのメモリ構成を示す図である。
【図２２】図２０に示すメモリ構成と、図２１に示すメモリ構成との最適な対応付けを示す図である。
【図２３】図２２に示すメモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートである。
【図２４】図２３に示す処理を実行する過程で作成され、保持される情報を示す図である。
【図２５】メモリの分割の度合に制限がある場合のメモリ分割を示す図である。
【図２６】メモリの分割の度合に制限が無い場合のメモリ分割を示す図である。
【図２７】本発明の第４の実施形態に係る高位合成処理の内、メモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートである。
【図２８】図５におけるＲＡＭ−Ｂ２を共有しないものとした場合の記述例を示す図である。
【図２９】本発明の第５の実施形態に係る高位合成処理を実行する過程で作成され、保持される情報を示す図である。
【図３０】本発明の第５の実施形態に係る高位合成処理により変換された記述を示す図である。
【図３１】本発明の第６の実施形態に係る高位合成処理における記述を示す図である。
【図３２】本発明の第７の実施形態に係る高位合成処理の要部の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について図面を参照して説明する。
［高位合成装置のハードウェア構成］
図４は、本発明の実施形態に係る高位合成装置のハードウェア構成を示すブロック図である。この高位合成装置400はコンピュータシステムにより構成されており、ＣＰＵ401、ＲＯＭ402、ＲＡＭ403、ＨＤＤ（ハードディスク）404を備えている。また、この高位合成装置400はディスプレイ装置405、キーボード406、マウス407、及び光学ディスクドライブ装置408を備えている。
【００２２】
ＣＰＵ401は、ＲＯＭ402、ＲＡＭ403、ＨＤＤ404、ディスプレイ装置405、キーボード406、マウス407、光学ディスクドライブ装置408、ネットワーク装置（図示せず）との間でデータを入出力しながら処理を行う。
【００２３】
ＣＤ−ＲＯＭなどの光学ディスクに記録された高位合成プログラムは、ＣＰＵ401により光学ディスクドライブ装置408を介して一旦ＨＤＤ404に格納される。ＣＰＵ401は、ＨＤＤ404から適宜高位合成プログラムをＲＡＭ403にロードして実行することによって、後述する各実施形態に係る高位合成処理を実行し、処理動作の記述からレジスタトランスファレベルの記述の論理回路を生成する。
【００２４】
［第１の実施形態］
図５は、本発明の第１の実施形態における、メモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図、及びそのメモリのメモリ構成と２つの機能モジュールが使用するメモリのメモリ構成との関係を示す図である。また、図６は、図５に示す構成を実現するための制御信号選択回路を示す図である。
【００２５】
図５（１）において、回路ＡＢＣ 500は機能モジュールの１つであり、下階層の回路Ａ 501と回路Ｂ 502と、回路Ｃ 503により構成されている。各回路はＲＡＭトップ508として構成された１つのモジュールのメモリを使用する。即ち、回路Ａ 501はＲＡＭ−Ａ 504を使用し、回路Ｂ 502はＲＡＭ−Ｂ１ 505とＲＡＭ−Ｂ２ 506を使用し、回路Ｃ 503はＲＡＭ−Ｃ 507を使用する。回路Ｏ 510はもう一方の機能モジュールであり、下階層の回路Ｏ 509の１つで構成されており、ＲＡＭトップ508として構成されたメモリを使用する。
【００２６】
図５（２）に示すように、回路ＡＢＣ 500の各回路が使用するメモリ構成は、回路Ａ 501が１６ビット×５１２ワード、回路Ｂ 502が８ビット×１２８ワードを２本、回路Ｃ 503が１６ビット×６４ワードである。また、回路Ｏ 509が使用するメモリ構成は１６ビット×７００ワードである。回路Ｏ 509が使用するメモリは、回路ＡＢＣ 500が使用するメモリの全てを結合することで必要なメモリ構成となる。
【００２７】
回路ＡＢＣ 500と回路Ｏ 510が排他動作する回路とすると、メモリを共有可能となる。このようにメモリを共有する場合、図６に示すように、ＲＡＭトップ508には、各メモリが２つの機能モジュール（回路ＡＢＣ 500、回路Ｏ 510）からの制御信号を排他動作毎にアクセス制御するための信号を選択する回路600が必要となる。
【００２８】
そのため、ＲＡＭ−Ａ 504には回路Ａ 501からの信号601と回路Ｏ 509からの信号605を選択するためのセレクタ606が生成され、ＲＡＭ−Ｂ１ 505には回路Ｂ 502からの信号602と回路Ｏ 509からの信号605を選択するためのセレクタ607が生成される。また、ＲＡＭ−Ｂ２ 506には回路Ｂ 502からの信号603と回路Ｏ 509からの信号605を選択するためのセレクタ608が生成され、ＲＡＭ−Ｃ 507には回路Ｃ 503からの信号604と回路Ｏ 509からの信号605を選択するためのセレクタ609が生成される。
【００２９】
また、回路Ｏ 509とＲＡＭトップ508との接続はＲＡＭ−Ａ 504〜ＲＡＭ−Ｃ 507の組み合わせによる構成のため、メモリアクセスのためのアドレスマッピングが必要となる。図５（２）に示すように、先頭アドレスをＲＡＭ−Ａとし、ＲＡＭ−Ａの後にＲＡＭ−Ｃ、ＲＡＭ−Ｃの後にＲＡＭ−Ｂ１とＲＡＭ−Ｂ２を幅（ビット）方向に結合したマッピングとなるようにする。このマッピングにより、セレクタ606→609→607→608の順にアクセス可能となる。
【００３０】
図７は、図６に示す回路を生成するための記述を高位合成可能な記述を示す図である。ここで、図７（１）、図７（２）、図７（３）、図７（４）は、それぞれトップ記述、メモリ記述、回路ＡＢＣ記述、回路Ｏ記述を示す。
【００３１】
図７（１）に示すように、トップ記述700は、回路ＡＢＣと回路Ｏのそれぞれがメモリとの接続記述として、記述705と記述706を有する。記述705が回路ＡＢＣの接続信号ポートとＲＡＭの接続信号ポートの記述であり、記述706が回路Ｏの接続信号ポートとＲＡＭの接続信号ポートの記述である。
【００３２】
図７（２）に示すように、ＲＡＭトップ記述701は、回路ＡＢＣと回路Ｏへの接続記述として、記述707乃至709を有する。記述707は回路ＡＢＣと回路Ｏへの接続ポートの記述であり、記述708はこのポートがメモリを共有とするための記述であり、記述709はこのポートと各メモリとの接続記述である。
【００３３】
図７（３）に示すように、回路ＡＢＣ記述702は、メモリとの接続のためのポートの記述710を有し、図７（４）に示すように、回路Ｏ記述703は、メモリとの接続のためのポートの記述711を有する。
【００３４】
前述のとおり、回路Ｏは回路ＡＢＣとのメモリ共有をメモリの組み合わせにより実現するため、メモリのアドレスマッピングとなる記述が必要となる。そこで、図７（５）の記述704における記述712、713、714に示すように、アドレス値によりデコードされる記述となる。また、データもそれぞれのメモリのデータ（ここでは読み出しの記載のみ例示）との接続となり、記述715、716、717のようになる。ここで、記述717は幅（ビット）方向へのメモリ結合のために２つのメモリ（ｒａｍ＿ｂ１，ｒａｍ＿ｂ２）を結合した記述となる。
【００３５】
図８は、図７に示す記述を作成する処理の手順を示すフローチャートであり、図９は、図７に示す記述に変換される前の記述を示す図である。つまり、図８に示す処理により、図９に示す記述を図７に示す記述に変換する。図８に示す処理の手順が本発明の第１の実施形態に係る高位合成処理における記述変換処理の手順である。
【００３６】
まず図９について説明する。ここで、図９（１）、図９（２）、図９（３）、図９（４）は、それぞれトップ記述、ＲＡＭトップ記述、回路ＡＢＣ記述、回路Ｏ記述を、それぞれ示す。
【００３７】
図９（１）に示すように、トップ記述900は、各モジュールとメモリとの接続において、”//groupＡＢＣ”や”//groupＯ”などのように、排他動作毎にグループ分けを行う記述904及び905を有する。
【００３８】
図９（２）に示すように、ＲＡＭトップ記述901は、排他動作毎の回路に対するポートを表す記述906及び907を有する。また、図９（３）に示すように、回路ＡＢＣ記述902は、メモリとの接続のためのポートの記述909を有し、図９（４）に示すように、回路Ｏ記述903は、メモリとの接続のためのポートの記述910を有する。
【００３９】
次に図８について説明する。
まず、高位合成のための回路記述（処理動作の記述）から全機能モジュールで使用されるメモリの構成の情報を抽出する（ステップＳ１）。ここでは、回路ＡＢＣ記述902の記述909、及び回路Ｏ記述903の記述910により、全機能モジュール（回路ＡＢＣ、回路Ｏ）の使用するメモリ構成の情報を取得出来る。
【００４０】
次に、抽出したメモリ構成の情報のリストを作成して、管理を行えるようにする（ステップＳ２）。次いで、記述904〜905から排他動作する回路を識別するとともに、排他動作する回路毎のメモリ構成の容量を算出する（ステップＳ３）。
【００４１】
次に、回路ＡＢＣと回路Ｏとの間で同じメモリ構成同士の対応付けを行う（ステップＳ４）。この例では、回路ＡＢＣと回路Ｏで同じメモリ構成を使用していないので対応なしとなるが、回路Ｏが回路ＡＢＣのメモリ構成のうちの何れかと同じメモリ構成を使用していれば、ここで対応付けを行う。
【００４２】
次いで、対応付けされていないメモリ構成をピックアップ（抽出）し（ステップＳ５）、メモリを結合する形で対応付けを行う（ステップＳ６）。ここで、メモリの結合とは、図５（２）に示すように、必要なメモリ構成（ビット数×ワード数）を複数のメモリの組み合わせにより作成することである。
【００４３】
このとき、ビット数とワード数が使用されるサイズを満たしていれば、完全に一致しなくてもよい。即ち、図５（１）に示すように、回路Ｏ側の１６ビット×７００ワードに対し、ＲＡＭ−Ａ、ＲＡＭ−Ｃ、ＲＡＭ−Ｂ１、及びＲＡＭ−Ｂ２の組み合わせは１６ビット×７０４ワードとなり、４ワード多いが、必要なメモリ構成を満たしているため問題ない。
【００４４】
次に、結合したメモリ構成が必要なメモリ構成と対応出来ているか否かを判断するため、未対応部分（未対応容量）を確認する（ステップＳ７）。回路Ｏの対応付けを例に説明すると、ステップＳ５で回路Ｏの１６ビット×７００ワードのメモリ構成の対応付けを行うことを識別し、ステップＳ６でＲＡＭ−Ａ（１６ビット×５１２ワード）の対応付けを行う。従って、ステップＳ７では、対応付けの必要なメモリ容量の１６ビット×７００ワードに対して、１６ビット×１８８ワードを未対応部分として把握する。
【００４５】
未対応部分があると判断すると（ステップＳ７：あり）、ステップＳ８に進み、未対応構成があるか否かを判断する。回路Ｏの対応付け例として、上記の続きから説明すると、１６ビット×１８８ワードが未対応部分であり、これに対して、ＲＡＭ−Ｂ１とＲＡＭ−Ｂ２が対応付けを行っていない未対応構成である。このため、未対応構成がある（ステップＳ８：あり）と判断し、ステップＳ６に戻る。
【００４６】
ステップＳ８において、未対応構成がない（ステップＳ８：ない）と判断した場合、即ち、全メモリ構成での対応確認が済んでいる場合、未対応部分とその対応付けしたメモリ構成の組み合わせを保持・管理し、ステップＳ９に進む。
【００４７】
ステップＳ９では、未対応部分が０でない状態、即ち未対応部分が残っている状態である。ステップＳ９では、ステップＳ６〜Ｓ８において対応付けされた組み合わせと異なる組み合わせがあるか否かを判断する。ある場合は（ステップＳ９：あり）、ステップＳ６に戻り、別の組み合わせによる対応付けを行うように、ステップＳ６〜Ｓ９の処理を行う。なお、ステップＳ９の詳細については第２の実施形態において説明する。
【００４８】
ステップＳ９において、全ての組み合わせの確認が完了したら（ステップＳ９：なし）、ステップＳ１１に進む。この段階で未対応部分が０でない場合、ステップＳ８においてメモリ構成の組み合わせによる対応付けの情報が管理保持されている。未対応容量が０でなく、不足している場合は、ステップＳ１１においてメモリ構成を新規に追加する。
【００４９】
次に、メモリ構成の記述の修正及び変更を行い（ステップＳ１２）、この図に示すフローを終了する。以上により、図９に示す記述から図７に示す記述への変換が完了する。以上の処理手順において、ステップＳ１〜Ｓ３が本発明に係るメモリ構成情報取得手段に、ステップＳ４〜Ｓ１１が対応付け手段に、ステップＳ１２がメモリ接続記述生成手段に、それぞれ対応する。
【００５０】
図９及び図７に示すように、トップ記述700に関しては、共有部分の回路とメモリの接続記述706を追加・変更・修正する。また、ＲＡＭトップ記述701に関しては、ＲＡＭトップと各回路との接続ポートの記述707、共有情報の記述708、及び各信号とメモリの接続記述709を追加・変更・修正する。また、回路Ｏ記述703については、共有したメモリとの信号に変換する記述711を追加・変更・修正する。さらに、メモリのアドレスマッピングによるセレクトのための回路の記述が追加される。
【００５１】
このように、本実施形態に係る高位合成処理では、処理動作の記述を解析して、メモリの接続記述を検出し、検出したメモリの接続記述から、メモリ構成の情報の検出と、検出したメモリ構成の排他動作の情報を取得する。次に、これらのメモリ構成の情報及び排他動作の情報をリスト化し、排他動作する機能モジュール間で使用されるメモリ構成を比較し、メモリ構成を結合した場合の構成を比較する。次に、比較結果より、排他動作する回路間で共有するメモリ構成の組み合わせの対応付けを探索する。次に、探索した組み合わせのメモリ構成を基に、処理動作の記述におけるメモリ共有部分を含めたメモリの接続記述に変換する。
【００５２】
これにより、排他動作する回路間でメモリを共有する場合、それぞれのメモリ構成を高位合成するための回路記述として、それぞれの回路で必要となるメモリ構成としての記述を行うことで、共有するための記述を行わずにすむ。このメモリ構成としての記述を基に、メモリを共有するためのメモリ構成の組み合わせの対応付けを自動的に探索し、探索したメモリ構成の組み合わせの対応付けにより、高位合成可能な記述に変更することが出来るからである。
【００５３】
［第２の実施形態］
第１の実施形態（図５）では、２つの機能モジュールの内、一方は複数のメモリを使用し、他方は１つのメモリを使用したが、本実施形態では、２つの機能モジュールの双方が複数のメモリを使用する。
【００５４】
図１０は、本発明の第２の実施形態における、メモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図であり、図１１は、図１０におけるメモリのメモリ構成と２つの機能モジュールが使用するメモリのメモリ構成との関係を示す図である。図１０、図１１において、図５と同一の部分には図５と同じ参照符号を付した。
【００５５】
図１０に示すブロックは、図５に示すブロックにおける回路Ｏ側の下階層のモジュールが２つとなり、共有させるメモリ構成が２つとなったものである。ここでは、回路ＯＰ 1000の下階層の回路Ｏ 1001と、回路Ｐ 1002がそれぞれ１つのメモリを使用する。各回路が使用するメモリを順番に対応させることで、第１の実施形態に係る高位合成処理（図８）と同様に処理することが出来る。
【００５６】
図１１に示すように、回路ＡＢＣ 500の各回路が使用するメモリ構成は、第１の実施形態と同じであり、回路Ａ 501が１６ビット×５１２ワード、回路Ｂ 502が８ビット×１２８ワードを２本、回路Ｃ 503が１６ビット×６４ワードである。一方、回路ＯＰ 1000の各回路の内、回路Ｏ 1001が使用するメモリ構成は１６ビット×５７６ワードであり、回路Ｐ 1002が使用するメモリ構成は８ビット×２５６ワードである。図１１（１）に示すように、回路Ｏ 1001は、ＲＡＭ−ＡとＲＡＭ−Ｃの組み合わせにより、また図１１（２）に示すように、回路Ｐ 1002はＲＡＭ−Ｂ１とＲＡＭ−Ｂ２の組み合わせにより、使用するメモリ構成を得る。
【００５７】
本実施形態に係る高位合成処理における記述修正処理では、このメモリ構成の組み合わせ探索することになる。図１２は、本実施形態に係る高位合成処理における記述変換処理の内、メモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートであり、図１３は図１２に示す処理を実行する過程で作成され、保持される情報を示す図である。
【００５８】
図１２において、図８におけるステップと対応するステップには図８と同じ参照符号（ステップ番号）を付した。本実施形態に係る高位合成処理における記述変換処理の全体の流れは図８と同じであり、更に複数のメモリ（図１０の場合は回路Ｏ 1001と回路Ｐ 1002で使用するメモリ）の対応付けを行う順番を加味したものである。ステップＳ１〜Ｓ４、Ｓ１１、Ｓ１２は図示を省略した。
【００５９】
まず、ステップＳ１、Ｓ２において、全機能モジュールが使用するメモリのメモリ構成の情報を抽出し、メモリ構成の情報のリストを作成する。ここでは、図１３における欄1300示すように、メモリを共有していない状態での全ての回路である回路ＡＢＣと回路ＯＰが使用するメモリのメモリ構成が抽出され、リストが作成される。
【００６０】
次に、ステップＳ３において、排他動作する回路を記述から識別するとともに、排他動作する回路毎のメモリ構成の容量を算出する。算出した情報は、図１３における欄1301に示すように、「ビット数×ワード数」の情報である。
【００６１】
次いで、ステップＳ４において、同じメモリ構成の対応付けを行い、ステップＳ５により、対応付けされていないメモリ構成をピックアップする。ここでは、全てが対応付けされていないため、全メモリ構成がピックアップされる。
【００６２】
次に、ステップＳ５１において、ステップＳ５でピックアップされた未対応構成の内、メモリ構成が大きいものから順に対応付けを行う。ここで、メモリ構成の大小はステップＳ２で算出した情報を基に判定する。図１０に示す回路の場合、回路Ｏ 1001が使用するメモリ（以下、ＲＡＭ−Ｏ）のメモリ容量（１６ビット×５７６ワード）が最大であるため、ＲＡＭ−Ｏを対応させるメモリを最初に決めることになる。従って、ステップＳ６において、図１３の欄1303に示すように、ＲＡＭ−Ｏ（＊が対応付けを決める対象のメモリを示す）に対して、ＲＡＭ−Ａ（１６ビット×５１２ワード）との対応付けを行う（番号１）。
【００６３】
次のステップＳ７においては、ＲＡＭ−Ｏの未対応部分（未対応容量）がある状態となり（ステップＳ７：あり）、ステップＳ８に進み、未対応構成の有無を判定する。ここでは、別の対応確認していないメモリ構成があるため（ステップＳ８：あり）、ステップＳ６に戻る。
【００６４】
ステップＳ６では、ＲＡＭ−Ｏの未対応部分（未対応容量：１６ビット×６４ワード）に対する対応を確認する。そして、欄1304に示すように、未対応部分に対してＲＡＭ−Ｂ１（８ビット×１２８ワード）、ＲＡＭ−Ｂ２（８ビット×１２８ワード）の対応付けを行う（番号２、番号３）。ここで、ＲＡＭ−Ｂ１、ＲＡＭ−Ｂ２との対応付けは、２回のステップＳ６により行われる。即ち、ステップＳ６（ＲＡＭ−Ｂ１との対応付け）→ステップＳ７：あり→ステップＳ８：あり→ステップＳ６（ＲＡＭ−Ｂ２との対応付け）の処理となる。
【００６５】
メモリ容量が最大のメモリ構成（ここではＲＡＭ−Ｏ）に対する１つの組み合わせの対応付けが完了したら（ステップＳ８：なし）、ステップＳ９に進んで、他の組み合わせの確認が完了しているか否かを判断する。
【００６６】
ここでは、他の組み合わせとしてＲＡＭ−Ｃを用いる組み合わせが完了していないため（ステップＳ９：あり）、ステップＳ６に戻り、組み合わせの確認を行っていないものの確認を繰り返す。この繰り返しにより、欄1306の組み合わせが探索される。
【００６７】
他の組み合わせの確認が完了したら（ステップＳ９：なし）、ステップＳ９１において、全てのメモリ構成の対応付けが出来ているか否かを判断する。ここでは、ＲＡＭ−Ｏの対応付けのみ完了であり、ＲＡＭ−Ｐの対応付けが未了のため（ステップＳ９１：NO）、ステップＳ５１に戻る。
【００６８】
このとき、ステップＳ６〜Ｓ９における組み合わせ（欄1303及び1304、欄1306の情報）を加味して、ＲＡＭ−Ｐのメモリの組み合わせの探索を行う。即ち、欄1303及び1304のメモリの組み合わせに対する残りのメモリ組み合わせ、欄1306のメモリの組み合わせに対する残りのメモリ組み合わせの探索を順次に行う。これにより、全メモリ構成の対応付けが完了となる(ステップＳ９１：YES)。
【００６９】
以上の処理により組み合わせ情報を収集し、ステップＳ１０において、最小容量となる組み合わせの対応付けを選択する。ここでは、回路Ｏと回路Ｐの組み合わせとして、下記(i)、(ii)のような選択候補を算出して、追加するメモリの容量が最小となる組み合わせを選択する。
【００７０】
(i)回路Ｏ側のメモリ構成の対応付けが欄1303，1304に示すものとなる場合は、回路Ｐ側のメモリ構成の対応付けは欄1308に示すものとなり、回路Ｐ側の不足分として１６ビット×６４ワードを追加する対応付けとなる。
【００７１】
(ii)回路Ｏ側のメモリ構成の対応付けが欄1306に示すものとなった場合は、回路Ｐ側のメモリ構成の対応付けは欄1307に示すものとなり、回路Ｐ側の不足分は０となる。
【００７２】
これらの(i)、(ii)のうち、追加するメモリの容量が最小となる(ii)を選択する。ステップＳ１１以降の処理（ステップＳ１１、Ｓ１２）は図８と同じである。
【００７３】
［第３の実施形態］
第１の実施形態及び第２の実施形態は、図９（３）、（４）における記述909、910に示すように、記述に基づいたメモリ構成として、共有するメモリの組み合わせを探索するものであった。
【００７４】
これに対し、本実施形態では、共有化するために一方の回路で使用するメモリ構成が他方と異なる場合、図１４（１）に示すように、２つのメモリ（ＲＡＭ−１、ＲＡＭ−２）をワード方向に結合して１つのメモリ1400とする。また、図１４（２）に示すように、２つのメモリ（ＲＡＭ−１、ＲＡＭ−２）をビット方向に結合して１つのメモリ1401とすることも行う。
【００７５】
また、図１５に示すように、メモリ1500、1501をそれぞれワード方向、ビット方向に分割して、２つのメモリ1502とすることも出来る。また、図１６に示すように、メモリ1600、1601の各々をワード方向に分割したものをビット方向に組み合わせて、１つのメモリ1603とすることも出来る。また、メモリ1601を分割したものとメモリ1602とをワード方向に組み合わせて、１つのメモリ1604としたりすることも出来る。以下、このように、記述にあるメモリ構成から分割したメモリ構成をも考慮した場合について説明する。
【００７６】
図１７は、本発明の第３の実施形態におけるメモリを共有する２つの機能モジュールとメモリとの接続関係を示すブロック図である。また、図１８、図１９は、それぞれ図１７における回路ＡＢＣが使用するメモリ、メモリ構成を示す図であり、図２０、図２１は、それぞれ図１７における回路ＯＰＱが使用するメモリ、メモリ構成を示す図である。
【００７７】
図１７に示すように、メモリ（ＲＡＭ−トップ）1701を共有する機能モジュールとして、回路ＡＢＣ 1700と回路ＯＰＱ 1702からなる回路構成がある。回路ＡＢＣ 1700には、下階層モジュールとして回路Ａ 1703 、回路Ｂ 1704、回路Ｃ 1705があり、回路ＯＰＱ 1702には、下階層モジュールとして回路Ｏ 1706 、回路Ｐ 1707、回路Ｑ 1708がある。
【００７８】
図１８、図１９に示すように、回路ＡＢＣ 1700の各回路が使用するメモリとそのメモリ構成は、以下のようになる。即ち、回路Ａ 1703がＲＡＭ−Ａ 1801として１６ビット×５１２ワードである。また、回路Ｂ 1704がＲＡＭ−Ｂ１ 1802として８ビット×１２８ワード、ＲＡＭ−Ｂ２ 1803として７ビット×１２８ワードである。また、回路Ｃ 1705がＲＡＭ−Ｃ 1804として１６ビット×６４ワードである。
【００７９】
図２０、図２１に示すように、回路ＯＰＱ 1702の各回路が使用するメモリとそのメモリ構成は、以下のようになる。即ち、回路Ｏ 1706がＲＡＭ−Ｏ 2001として２３ビット×１２８ワード、回路Ｐ 1707がＲＡＭ−Ｐ 2002として８ビット×１２８ワード、回路Ｑ 1708がＲＡＭ−Ｑ 2003として８ビット×１２８ワードである。
【００８０】
図２２は、回路ＡＢＣ 1700の各回路が使用するメモリのメモリ構成と、回路ＯＰＱ 1702の各回路が使用するメモリのメモリ構成との最適な対応付けを示す図である。図示のように、ＲＡＭ−ＡとＲＡＭ−Ｂ２とをビット方向に結合した組み合わせがＲＡＭ−Ｏに対応し、ＲＡＭ−Ｂ１がＲＡＭ−Ｐに対応し、ＲＡＭ−Ｃをビット方向に分割し、ワード方向に結合してメモリ構成を変えた形がＲＡＭ−Ｑに対応する。
【００８１】
本実施形態に係る高位合成処理における記述変換処理では、このメモリ構成の組み合わせを探索する。図２３は、本実施形態に係る高位合成処理における記述変換処理の内、メモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートであり、図２４は図２３に示す処理を実行する過程で作成され、保持される情報を示す図である。
【００８２】
図２３において、図８（第１の実施形態）、図１２（第２の実施形態）におけるステップと対応するステップには図８、図１２と同じ参照符号を付した。本実施形態に係る高位合成処理における記述変換処理の全体の流れは図１２と同じであり、図２２に示すＲＡＭ−Ｃ 1804とＲＡＭ−Ｑを対応させ、共有するための処理を追加したものである。なお、ステップＳ１〜Ｓ４は図示を省略した。
【００８３】
まず、ステップＳ１、Ｓ２において、全機能モジュールが使用するメモリのメモリ構成の情報を抽出し、メモリ構成の情報のリストを作成する。ここでは、メモリを共有していない状態での全ての回路である回路ＡＢＣと回路ＯＰＱのメモリ構成が抽出され、リストが作成される。従って、図２４における欄2400に示すように、ＲＡＭ−Ａ、ＲＡＭ−Ｂ１、ＲＡＭ−Ｂ２、ＲＡＭ−Ｃ、ＲＡＭ−Ｏ、ＲＡＭ−Ｐ，ＲＡＭ−Ｑが抽出され、リストが作成される。
【００８４】
次に、ステップＳ３において、排他動作する回路を記述から識別するとともに、排他動作する回路毎のメモリ構成の容量を算出し、算出した「ビット数×ワード数」の情報を保持する。
【００８５】
次いで、ステップＳ４において、メモリの構成が同じもの同士の対応付けを行う。ここで、図２２に示すように、ＲＡＭ−Ｂ１とＲＡＭ−Ｐの対応付けが行われる。この対応付けの結果は、図２４の欄2403に示すように保持される。
【００８６】
次に、ステップＳ４１において、記述されているメモリ構成から分割を行い、対応付けを行う。この構成の分割は、分割することによりメモリ構成が同じとなるもののみを対応付けるための分割である。ここでは、図２２に示すように、ＲＡＭ−Ｃをビット方向に分割し、ワード方向に結合することで、ＲＡＭ−Ｑとの対応付けが出来る。この対応付けの結果は、図２４の欄2402、2403に示すように保持される。
【００８７】
次いで、ステップＳ５において、対応付けされていないメモリ構成をピックアップし、ステップＳ５１において、ステップＳ５でピックアップされた未対応構成の内、メモリ構成が大きいものから順に対応付けを行う。
【００８８】
以後のステップＳ６〜Ｓ９では第２の実施形態と同じ処理行う。ステップＳ９において、他の組み合わせの確認が全て完了したら（ステップＳ９：なし）、ステップＳ９２〜Ｓ９７からなる分割・結合組み合わせによる対応付けの探索を行う。
【００８９】
まず、ステップＳ９２において、メモリ構成の分割及び結合による対応付けを行い、次に、ステップＳ９３において、未対応部分があるか否かを判断する。未対応部分がない場合、その状態（未対応部分が０となった状態）での情報を保持する（ステップＳ９４）。この情報（図２４の欄2403）は、メモリの組み合わせ、及び結合，分割・結合の情報となる。ステップＳ９４で情報を保持したら、ステップＳ９６に進み、他の組み合わせの有無を判断する。
【００９０】
ステップＳ９３において未対応部分があると判断した場合は（ステップＳ９３：あり）、ステップＳ９５に進み、未対応構成の有無を判断する。未対応構成がある（ステップＳ９５：あり）場合は、ステップＳ９２に戻り、未対応部分がなくなるまで、メモリ構成の分割及び結合による対応付けを繰り返す。
【００９１】
ステップＳ９６において、他の組み合わせがあると判断した場合は、ステップＳ９２に戻り、未対応部分がなくなるまで、メモリ構成の分割及び結合による対応付けを繰り返す。
【００９２】
ステップＳ９６において、他の組み合わせがない、即ち全ての組み合わせが完了したと判断したら（ステップＳ９６：なし）、ステップＳ９７に進む。このステップでは、ステップＳ９４で保持した情報によるメモリ構成の組み合わせで分割・結合した組み合わせに関して、分割数が最小となる情報を取得し、後処理の情報とする。
【００９３】
以後のステップＳ９１、Ｓ１０〜Ｓ１２では第１の実施形態と同様に処理する。これにより、図１７〜図２１に示すメモリ構成の回路は、図２２に示すようにメモリを共有することが可能となる。
【００９４】
なお、図１７〜図２１に示す構成に対して、第２の実施形態に係る高位合成処理における記述変換処理（図１２）を適用した場合は、図２４の欄2401に示す組み合わせとなる。即ち、ＲＡＭ−Ａ及びＲＡＭ−Ｂ１がＲＡＭ−Ｏに対応し、ＲＡＭ−Ｂ２がＲＡＭ−Ｐに対応して共有となり、ＲＡＭ−ＣとＲＡＭ−Ｑが共有のないメモリとして回路が構成される。
【００９５】
［第４の実施形態］
第３の実施形態において、メモリの分割の度合に制限が無い場合、分割される最小のメモリ構成は１ビット×１ワードとなる。この場合、分割数が多く、メモリ数が多くなることで、メモリ部分の回路構成の増加となる。
【００９６】
図２５、図２６は、それぞれメモリの分割の度合に制限がある場合、無い場合のメモリ分割を示す図である。図２５（１）に示すメモリ(ＲＡＭ−１)2500のメモリ構成（２０ビット×１２８ワード）と、図２５（２）に示すメモリ(ＲＡＭ−３)2501のメモリ構成（１３ビット×１４０ワード）との共有を考える。
【００９７】
この場合、メモリ(ＲＡＭ−１)2500のメモリ構成を、メモリ2503（１３ビット×１２８ワード）と、メモリ2504（７ビット×６４ワード）と、メモリ2505（７ビット×６４ワード）とに分割する。そして、図２５（３）に示すように、メモリ2503、2504、2505を、それぞれメモリ2506、2507、2508として結合する。これにより、共有するメモリ構成のメモリ2502を作成することが出来る。この組み合わせが最適に近い分割・結合による共有である。
【００９８】
しかし、メモリ2502の容量はメモリ2501の容量より多い。容量を合わせた無駄のない分割・結合の組み合わせは、共有させるメモリ構成間での最大公約数のサイズ構成のメモリによる分割・結合となる。
【００９９】
従って、メモリ(ＲＡＭ−１)2500のメモリ構成（２０ビット×１２８ワード）と、メモリ(ＲＡＭ−３)2501のメモリ構成（１３ビット×１４０ワード）の場合、１ビット×４ワードのメモリ構成が最大公約数のメモリ構成となる。
【０１００】
この１ビット×４ワードを最小のメモリ構成として組み合わせると、図２６（１）、図２６（２）に示すように、メモリ2500は２０×３２個、メモリ2501は１３×３５個の組み合わせによる構成で、容量の不足や余りのない組合せとすることが出来る。しかし、メモリ回路や、制御信号のセレクト、アドレスマッピングなどの部分の回路が増加することになる。また、組み合わせ探索のための時間が膨大となる。
【０１０１】
そこで、本実施形態に係る高位合成処理における記述変換処理では、回路規模増加や処理時間の増加を抑えるため、メモリ分割に関する制限を設けることで、最適なメモリ構成の組み合わせ対応によるメモリの共有を可能にする。図２７は、本実施形態に係る高位合成処理の内、メモリ構成の組み合わせの対応付けを探索する処理の手順を示すフローチャートである。
【０１０２】
この図において、図２３（第３の実施形態）と同一のステップには、図２３と同じ参照符号を付した。本実施形態は、図２３におけるステップＳ９２（分割・結合して対応付け）を、分割制限を有するステップＳ９２ａに置き換えたものである。
【０１０３】
ここで、分割制限としては、例えば、「ワード方向の分割を制限する」、「ビット方向の分割を制限する」、「ワード方向及びビット方向の分割を制限する」、「分割数を制限する」などが挙げられる。このような制限を設けることで、図２５のような最適な分割結合による共有のためのメモリ構成が行うことが出来る。
【０１０４】
［第５の実施形態］
本実施形態に係る高位合成処理における記述変換処理では、機能モジュールが使用するメモリの内、共有するメモリと共有しないメモリを判断し、共有するメモリのみを共有のための組み合わせの探索として対象とする。このとき、メモリの接続記述に予め記述されているメモリ共有に関する箇所を識別し、その結果を基に共有するメモリの対象とするか否かを判断する。
【０１０５】
ここでは、図５（第１の実施形態）におけるＲＡＭ−Ｂ２を共有しないものとした場合の指定方法と処理について説明する。
図２８はこの場合の記述例を示す図である。ここで、図２８（１）、図２８（２）、図２８（３）、図２８（４）は、それぞれ、トップ記述、ＲＡＭトップ記述、回路ＡＢＣ記述、回路Ｏ記述である。
【０１０６】
図２８（１）に示すように、トップ記述900内にメモリと回路ＡＢＣとの接続関係の記述箇所に対して、“//group-o ＡＢＣ”という記述2800を設けている。また、図２８（３）に示すように、回路ＡＢＣ記述 902内に、回路Ｂで使用されるＲＡＭ−Ｂ２のメモリ構成について、“//group-o”という記述2801を設けている。なお、ＲＡＭトップ記述901、及び回路Ｏ記述903は、第１の実施形態の記述（図９）と同じである。
【０１０７】
これらの記述2800及び2801が、ＲＡＭ−Ｂ２のメモリ構成を共有しないことを指定した記述であり、この部分を識別して、メモリ構成が８ビット×１２８ワードのＲＡＭ−Ｂ２を共有対象外のメモリであることを認識する。
【０１０８】
本実施形態に係る高位合成処理における記述変換処理の流れは図８（第１の実施形態）と基本的に同じである。ただし、ステップＳ１（全機能モジュールが使用するメモリ構成の情報の抽出）を行った後、ステップＳ２（メモリ構成の情報のリストを作成）を行う際に、ＲＡＭ−Ｂ２を共有対象外とし、その情報を保持する点が異なる。
【０１０９】
図２９は、本実施形態に係る高位合成処理における記述変換処理を実行する過程で作成され、保持される情報を示す図である。図の欄2900に示すＲＡＭ−Ｂ２を共有対象外とすること(×印)をメモリ構成リストの欄2901に登録する。これを基に、共有するための組み合わせを探索すると、欄2902に示すように、ＲＡＭ−Ｏは、ＲＡＭ−Ａと、ＲＡＭ−Ｂ１と、ＲＡＭ−Ｃとの組み合わせによる共有となり、８ビット×１２８ワードの不足として処理される。
【０１１０】
この組み合わせの結果を基に変換された記述を図３０に示す。ここで、図３０（１）図３０（２）、図３０（３）、図３０（４）は、それぞれトップ記述、ＲＡＭトップ記述、回路ＡＢＣ記述、回路Ｏ記述を示す。
【０１１１】
図３０（１）に示すように、トップ記述3000には、回路Ｏのメモリ接続に関して、不足分を示す記述3004がある。図３０（２）に示すように、ＲＡＭトップ記述3001では、メモリとの接続に関する記述3005において、ＲＡＭ−Ｂ２への接続は共有されず、回路Ｏのメモリ不足分の記述3006が追加されている。共有のための記述3007ではＲＡＭ−Ｂ２は対象外となっている。
【０１１２】
図３０（３）、図３０（４）に示すように、回路ＡＢＣ記述3002、回路Ｏ記述3003には、それぞれＲＡＭ−Ｂ２が共有されていない記述3008、不足分が追加された記述3009がある。
【０１１３】
［第６の実施形態］
本実施形態に係る高位合成処理における記述変換処理では、メモリを共有とするための記述と、予め記述されたメモリを共有しない記述とが混在した記述でも、メモリ共有のための組み合わせの探索が可能である。即ち、メモリの接続記述として、図３０のような最終的に変換される記述の一部を行う箇所（後述する記述3100、3101、3102、3103）が存在する場合にこれを識別して処理することが出来る。
【０１１４】
図３１は、本実施形態に係る高位合成処理における記述を示す図である。ここで、図３１（１）、図３１（２）、図３１（３）、図３１（４）は、それぞれトップ記述、ＲＡＭトップ記述、回路ＡＢＣ記述、回路Ｏ記述を示す。
【０１１５】
図３１（１）に示すトップ記述における記述3100、3101から、回路ＡＢＣ（kairo_abc）へメモリのram_a_o信号が接続され、回路Ｏ（kairo_o）へメモリのram_o信号が接続されることを認識する。また、図３１（２）に示すＲＡＭトップ記述における記述3102と3103から、ram_aとram_a_o信号が共有メモリとすることが記述されていることを認識する。また、図３１（３）に示す回路ＡＢＣ記述における記述3104から、ram_a（ＲＡＭ−Ａ）の構成を認識し、図３１（４）に示す回路Ｏ記述における記述3105から、ram_o（ＲＡＭ−Ｏ）の構成を認識する。このとき、メモリ構成からＲＡＭ−ＡとＲＡＭ−Ｏの共有が容量として不足していることも認識する。
【０１１６】
そして、これらの情報を優先的に採用して、ＲＡＭ−ＡをＲＡＭ−Ｏと共有させ、残りのＲＡＭ−Ｂ１、ＲＡＭ−Ｂ２、ＲＡＭ−ＣとＲＡＭ−Ｏの不足容量分を、上述のようにメモリ構成の組み合わせの対応付けによる共有の探索を行う。これにより、図７と同じ記述に変換することが出来る。
【０１１７】
［第７の実施形態］
本発明の実施形態に係る高位合成処理における記述変換処理は、共有化の再対応が指示された場合に、元の記述から全メモリのメモリ構成と共有化メモリ、排他動作関係の情報を収集し、再度共有化対応を行い、最適なメモリ共有構成の組み合わせ（最適化）を行う。ここで、元の記述は、図３０のように全てのメモリ共有に関する記述がなされているものでも、図３１のように一部のメモリ共有に関する記述がなされているものでもよい。
【０１１８】
図３２は、本実施形態に係る高位合成処理における記述変換処理の要部の処理の流れを示すフローチャートである。
まず、ステップＳ１０１において、全機能モジュールが使用するメモリのメモリ構成の情報を抽出する。例えば図３０に示す記述であれば、図３０（３）に示す回路ＡＢＣ記述3002における記述3008より、１６ビット×５１２ワード、８ビット×１２８ワード、８ビット×１２８ワード、１６ビット×６４ワードのメモリ構成を抽出可能である。また、図３０（４）に示す回路Ｏ記述3003における記述3009より、１６ビット×５１２ワード、８ビット×１２８ワード、８ビット×１２８ワード、１６ビット×６４ワードのメモリ構成を抽出することが出来る。
【０１１９】
次に、ステップＳ１０２において、共有情報の抽出を行う。図３０に示す記述であれば、共有情報としては、図３０（２）に示すＲＡＭトップ記述3001における記述3005、3007が得られる。記述3007から、ram_a（ＲＡＭ−Ａ）とram_o（ＲＡＭ−Ｏ）が共有であり、記述3005から、これらのメモリは１６ビット×５１２ワードのメモリ構成であることが判る。同様に全てのメモリ構成の共有情報を抽出することが出来る。
【０１２０】
次に、ステップＳ１０３において、分割メモリの抽出を行う。分割に関しては、メモリへのアドレスデコードの記述部分から判断することが出来る。図３０では示していないが、図７における記述704にアドレスデコード部分の記述例の一部がある。これより、同じデータ“Ｄ”に対して、メモリとなるram_a［］、ram_c［］、ram_b1［］、ram_b2［］のデータがアサインされている記述715〜717より分割されていることが判る。
【０１２１】
次に、ステップＳ１０４において、分割されているメモリを結合し、元のメモリ構成とし、ステップＳ１０５において、ステップＳ１０４までの情報を基にメモリ構成の情報のリストを作成する。次いで、ステップＳ１０６において、メモリ共有の組み合わせの対応付けの処理を行う。即ち、図８、図２３、図２７におけるステップＳ３以降の処理を行う。
【０１２２】
以上のように処理をすることで、メモリ共有を含むメモリの接続記述がなされている記述に対して再度、メモリ共有のためのメモリ構成の組み合わせの最適化を行い、元の記述を改良することが出来る。
【符号の説明】
【０１２３】
400…高位合成装置、401…ＣＰＵ、402…ＲＯＭ、403…ＲＡＭ、404…ＨＤＤ、500…回路ＡＢＣ、508…ＲＡＭトップ、510…回路Ｏ、606〜609…セレクタ、700…トップ記述、701…ＲＡＭトップ記述、702…回路ＡＢＣ記述、703…回路Ｏ記述、706…共有部分の回路とメモリの接続記述、707…ＲＡＭトップと各回路との接続ポートの記述、708…共有情報の記述、709…各信号とメモリの接続記述、711…共有としたメモリとの信号に変換する記述、Ｓ１〜Ｓ３…メモリ構成情報取得ステップ、Ｓ４〜Ｓ１１…対応付けステップ、Ｓ１２…メモリ接続記述生成ステップ。
【先行技術文献】
【特許文献】
【０１２４】
【特許文献１】特開２０１１−４４０７３号公報
【特許文献２】特許第４００７４８３号公報
【図１】
2014106639.tif 000003
【図２】
2014106639.tif 000004
【図３】
2014106639.tif 000005
【図４】
2014106639.tif 000006
【図５】
2014106639.tif 000007
【図６】
2014106639.tif 000008
【図７】
2014106639.tif 000009
【図８】
2014106639.tif 000010
【図９】
2014106639.tif 000011
【図１０】
2014106639.tif 000012
【図１１】
2014106639.tif 000013
【図１２】
2014106639.tif 000014
【図１３】
2014106639.tif 000015
【図１４】
2014106639.tif 000016
【図１５】
2014106639.tif 000017
【図１６】
2014106639.tif 000018
【図１７】
2014106639.tif 000019
【図１８】
2014106639.tif 000020
【図１９】
2014106639.tif 000021
【図２０】
2014106639.tif 000022
【図２１】
2014106639.tif 000023
【図２２】
2014106639.tif 000024
【図２３】
2014106639.tif 000025
【図２４】
2014106639.tif 000026
【図２５】
2014106639.tif 000027
【図２６】
2014106639.tif 000028
【図２７】
2014106639.tif 000029
【図２８】
2014106639.tif 000030
【図２９】
2014106639.tif 000031
【図３０】
2014106639.tif 000032
【図３１】
2014106639.tif 000033
【図３２】
2014106639.tif 000034