(57)【要約】【課題】動作レベル回路のメモリに該当する配列変数部分に対してどのように実装するかでメモリの共有化を容易にする高位合成装置等を提供すること。【解決手段】高位合成装置は、検出されたメモリに変換される動作記述を抽出する手段と、抽出された動作記述のサイズ、接続情報を分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する手段と、メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する動作合成ツールとを備える。【選択図】図２
2011134308.tif 000002
【特許請求の範囲】
【請求項１】
処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換する高位合成装置において、
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する動作合成ツールと、
を備えたことを特徴とする高位合成装置。
【請求項２】
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する動作合成ツールと、
を備えたことを特徴とする高位合成装置。
【請求項３】
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定できる制御手段と、
前記制御手段によりメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する前記動作合成ツールと、
を備えたことを特徴とする高位合成装置。
【請求項４】
メモリに繋がる複数のモジュールをアービトレーションすることが可能なことを特徴とする請求項１記載の高位合成装置。
【請求項５】
アービトレーションする順番を指定することが可能なことを特徴とする請求項２記載の高位合成装置。
【請求項６】
メモリの配置する場所を指定することが可能なことを特徴とする請求項１から３のいずれか１項に記載の高位合成装置。
【請求項７】
処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換するコンピュータを用いた高位合成方法であって、
メモリに変換される動作記述を検出する検出工程と、
前記検出されたメモリに変換される動作記述を抽出する抽出工程と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、
前記分析工程において分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換工程と、
動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する生成工程とを含むことを特徴とする高位合成方法。
【請求項８】
メモリに変換される動作記述を検出する検出工程と、
前記検出されたメモリに変換される動作記述を抽出する抽出工程と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、
前記分析工程において分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換工程と、
動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する生成工程とを含むことを特徴とする高位合成方法。
【請求項９】
メモリに変換される動作記述を検出する検出工程と、
前記検出されたメモリに変換される動作記述を抽出する抽出工程と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、
前記分析工程において分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換工程と、
動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定する制御工程と、
前記制御工程において、前記動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する生成工程とを含むことを特徴とする高位合成方法。
【請求項１０】
コンピュータを、
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する動作合成ツールとして機能させ、
処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換する高位合成装置として機能させることを特徴とする高位合成プログラム。
【請求項１１】
コンピュータを、
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する動作合成ツールとして機能させることを特徴とする高位合成プログラム。
【請求項１２】
コンピュータを、
メモリに変換される動作記述を検出する検出手段と、
前記検出されたメモリに変換される動作記述を抽出する抽出手段と、
前記抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、
前記分析手段により分析した結果、前記動作記述をメモリへ変換し、前記接続情報を元にプロトコルに変換する変換手段と、
動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定できる制御手段と、
前記制御手段によりメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する前記動作合成ツールとして機能させることを特徴とする高位合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位言語で記述したアルゴリズムの仕様から、ハードウェア記述言語への変換を行う動作合成技術に関する。
【背景技術】
【０００２】
チップ内部に実装するＲＡＭ（Random Access Memory）やＲＯＭ(Read Only Memory)などのメモリはチップサイズに及ぼす影響が大きい。そこでチップサイズを小さくするために内部に実装されるメモリを共有することで、実装するメモリサイズを小さくしてチップサイズを抑えている。
【０００３】
動作レベル記述を動作合成する方法においても、メモリの共有化された動作レベル記述を人手で用意することでメモリの共有化を行っていることは既に知られている。
【０００４】
特許文献１には、以下の技術が開示されている。同一区間（サイクル）あるいは、他の区間に記述された変数をメモリとして自動でスケジューリングをする目的で、動作レベル回路に記述された変数が参照される参照回数を算出して、変数のビット幅を抽出し、抽出したビット幅のデータ転送が可能な複数のメモリを選定する。そして、選定された複数のメモリについて、参照回数と変数のビット幅とに基づいて、変数が割り当てられた場合におけるメモリアクセスのサイクル数の合計を算出し、算出されたサイクル数の合計が最小となるメモリを、変数の割り当て対象として選択する構成が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、今までの動作レベル回路を動作合成する方法では、動作合成対象となる回路にメモリが実装された状態でスケジューリングを行う必要があった。動作レベル回路外に共有使用を目的としたメモリを実装する場合にメモリをメモリポートに変更する必要があった。実際はメモリが実装されないので、さらにメモリを削除する記述を人手で用意する必要があり、チップサイズが増大するのを防ぐには手間がかかってしまい、間違いが混入してしまう問題があった。
【０００６】
本発明の目的は、動作レベル回路のメモリに該当する配列変数部分に対してどのように実装するかでメモリの共有化を容易にする高位合成装置、高位合成方法および高位合成プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第一の高位合成装置は、処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換する高位合成装置において、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する動作合成ツールとを備えたことを特徴とする高位合成装置である。
【０００８】
本発明の第二の高位合成装置は、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する動作合成ツールとを備えたことを特徴とする高位合成装置である。
【０００９】
本発明の第三の高位合成装置は、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定できる制御手段と、制御手段によりメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する動作合成ツールとを備えたことを特徴とする高位合成装置である。
【００１０】
本発明の第一の高位合成方法は、処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換するコンピュータを用いた高位合成方法であって、メモリに変換される動作記述を検出する検出工程と、検出されたメモリに変換される動作記述を抽出する抽出工程と、抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、分析工程において分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換工程と、動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する生成工程とを含むことを特徴とする高位合成方法である。
【００１１】
本発明の第二の高位合成方法は、メモリに変換される動作記述を検出する検出工程と、検出されたメモリに変換される動作記述を抽出する抽出工程と、抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、分析工程において分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換工程と、動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する生成工程とを含むことを特徴とする高位合成方法である。
【００１２】
本発明の第三の高位合成方法は、メモリに変換される動作記述を検出する検出工程と、検出されたメモリに変換される動作記述を抽出する抽出工程と、抽出された動作記述のサイズ、及び、接続情報を分析する分析工程と、分析工程において分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換工程と、動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定する制御工程と、制御工程において、動作合成ツールへメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する生成工程とを含むことを特徴とする高位合成方法である。
【００１３】
本発明の第一の高位合成プログラムは、コンピュータを、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリポートを生成する動作合成ツールとして機能させ、処理の動作を記述した動作記述から、レジスタトランスファレベルの論理回路に変換する高位合成装置として機能させることを特徴とする高位合成プログラムである。
【００１４】
本発明の第二の高位合成プログラムは、コンピュータを、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、メモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリを生成する動作合成ツールとして機能させることを特徴とする高位合成プログラムである。
【００１５】
本発明の第三の高位合成プログラムは、コンピュータを、メモリに変換される動作記述を検出する検出手段と、検出されたメモリに変換される動作記述を抽出する抽出手段と、抽出された動作記述のサイズ、及び、接続情報を分析する分析手段と、分析手段により分析した結果、動作記述をメモリへ変換し、接続情報を元にプロトコルに変換する変換手段と、動作合成ツールへメモリの実装方法を制約として与え、メモリに該当する配列変数に対してメモリを生成するかメモリポートを生成するか任意で指定できる制御手段と、制御手段によりメモリの実装方法が制約として与えられ、通常の動作合成制約に加えてメモリの実装方法に関する制約を得ることで、メモリに該当する配列変数に対してメモリまたはメモリポートを生成する動作合成ツールとして機能させることを特徴とする高位合成プログラムである。
【発明の効果】
【００１６】
本発明によれば、動作レベル回路のメモリに該当する配列変数部分に対してどのように実装するかでメモリの共有化を容易にする手段を提供できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第一の実施の形態に係る高位合成装置の構成例を示すブロック図である。
【図２】本発明の第一の実施の形態に係る高位合成装置の機能構成を示すブロック図である。
【図３】本発明の第一の実施の形態に係る動作記述の一例を示す図である。
【図４】本発明の第一の実施の形態に係る動作合成制約記述を示す図である。
【図５】本発明の第一の実施の形態に係るメモリリソースに合ったインターフェース記述を示す図である。
【図６】本発明の第一の実施の形態に係る各動作レベル記述を回路イメージにした図である。
【図７】本発明の第一の実施の形態に係る動作記述のブロック図のイメージを示す図である。
【図８】本発明の第二の実施の形態に係る各動作レベル記述を回路イメージにした図である。
【図９】本発明の第三の実施の形態に係る動作記述のブロック図のイメージを示す図である。
【図１０】本発明の第四の実施の形態に係るハードウェア回路記述を示す図である。
【図１１】本発明の第四の実施の形態に係る動作記述のブロック図のイメージを示す図である。
【図１２】本発明の第一の実施の形態に係るＨＤＬ回路記述を示す図である。
【図１３】本発明の第五の実施の形態に係るメモリリソースを動作合成対象からはずしたイメージについて説明する図である。
【図１４】本発明の第五の実施の形態に係る図１３のときの動作レベル記述について説明する図である。
【図１５】本発明の第六の実施の形態に係る動作記述のブロック図のイメージを示す図である。
【図１６】本発明の第六の実施の形態に係る動作合成制約記述を示す図である。
【図１７】本発明の第六の実施の形態に係る動作記述のブロック図のイメージを示す図である。
【図１８】本発明の第六の実施の形態に係る動作合成制約記述を示す図である。
【図１９】本発明の第七の実施形態に係る高位合成結果を示す図である。
【図２０】従来の高位合成結果を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の第一の実施形態の高位合成装置及び、それを用いた高位合成方法について図面を参照しながら説明する。
【００１９】
図１は、本発明の実施形態の高位合成装置の構成例を示すブロック図である。図１に示すコンピュータ本体としての高位合成装置１１０は、ＣＰＵ（Central Processing Unit ）１１１、ＲＯＭ(Read Only Memory)１１２、ＲＡＭ（Random Access Memory）１１３およびＨＤＤ（ハードディスクドライブ：Hard Disk Drive）１１４を含む。ＣＰＵ１１１は、グラフィックディスプレイ装置１１５、キーボード１１６、マウス１１７、ＣＤ−ＲＯＭ装置１１８、図示しないネットワーク装置、ＲＯＭ１１２、ＲＡＭ１１３またはハードディスク１１４との間でデータを入出力しながら処理を行う。ＣＤ−ＲＯＭ装置１１８に記録された高位合成プログラムは、ＣＰＵ１１１によりＣＤ−ＲＯＭ装置１１８を介して一旦ハードディスク１１４に格納される。ＣＰＵ１１１は、ハードディスク１１４から適宜高位合成プログラムをＲＡＭ１１３にロードして実行することによって高位合成を行う。
なお、図１に示す高位合成装置の構成は後述する各実施の形態において共通である。
【００２０】
図２は本発明の一実施形態における高位合成装置の機能構成を示すブロック図である。図２において、高位合成装置はメモリリソース検出部３と、メモリリソース抽出部４と、メモリリソース分析部５と、メモリ変換部６と、ＣＤＦＧ(コントロール・データ・フロー・グラフ)変換処理部７０１とスケジューリング処理部７０２とアロケーション処理部７０３で構成された動作合成部７と、メモリ生成部８と、メモリインターフェース生成部９とを有し、動作記述１と動作合成制約記述２とを入力として、動作記述から生成される演算器、レジスタ、データパスおよびコントローラ回路などに、メモリ生成部８と、メモリインターフェース生成部９により自動生成されたＨＤＬ（Hardware description Language）記述１０によるメモリ及びメモリインターフェース回路を付加して、ＨＤＬ回路を合成するものである。
【００２１】
動作記述１は処理の動作のみを記述した動作記述であり、動作記述を記述できる言語なら何でもよい。その動作記述の一例を図３に示している。
【００２２】
図３において、動作記述はメモリのように扱われる配列の記述を含み、図３の（２）の一行目と二行目で８ｂｉｔのデータを２５６個分格納できる配列を宣言している。三行目よりモジュールsystemを宣言しているモジュールsystemは図３の（２）のモジュールmod1と図３の（３）のモジュールmod2をインスタンスしており、モジュールmod1はグローバル宣言された配列arrayへデータを書き込む処理を行っている。モジュールmod2はグローバル宣言された配列arrayに格納されたデータを読み出す処理を行っている。また図３の（１）の二行目に記述してあるarrayxは宣言されているがmod1、mod2では使用されていない。
【００２３】
動作合成制約記述２を図４に示す。一行目から三行目まで、高位合成の対象となるモジュールを定義している。四行目より対象のモジュールをどのように高位合成するかを示している。図４の例ではクロックのサイクルを５、オプションではエリアを小さくなるように合成をするとか、パイプライン回路になるように高位合成するなどがある。
【００２４】
図２のメモリリソース分析部５で解析されたメモリリソースに合ったインターフェース記述例を図５に示す。図２にあるメモリリソース分析部でメモリになる配列を分析した情報を基にライトデータ、リードデータ、アドレス、ライトイネーブルなどのビット幅を決定する。この例はsc_uint<8> array[256]の配列をメモリとするため、メモリにアクセスするためのメモリポートは図５のようになる。
【００２５】
メモリリソース検出部３は、処理の動作のみを記述した動作記述から、メモリとなり得る記述を動作記述１と動作合成制約記述２より検出するものである。具体的には図３のメモリになり得る配列記述である一行目と二行目のarrayと配列arrayxが検出されることになる。
【００２６】
メモリリソース抽出部４は、処理の動作のみを記述した動作記述から、複数のモジュールから使用されるメモリとなる配列を抽出する。具体的には図３の（１）の一行目のarrayがメモリとなる。二行目のarrayxは複数モジュールから使用される配列変数ではないためこの工程で除外される。
【００２７】
メモリリソース分析部５は、メモリリソース抽出部４で抽出されたメモリリソースを分析する。具体的にはarrayのデータサイズや、データが格納できる量から、使用するインターフェースを求める。この例では配列arrayはデータ幅が8bitでデータの深さが２５６個であることが分析の結果わかることになる。分析された情報を基に具体的には図５のようにライトデータ、リードデータ、アドレス、ライトイネーブルなどのビット幅を決定する。
【００２８】
メモリ変換部６は、メモリリソース分析部５で分析されたメモリリソースをメモリの形式に変換を行う。
【００２９】
ＣＤＦＧ変換処理部７０１はコントロールデータフローグラフに変換処理を行う。スケジューリング処理部７０２は、入力されたデータがどれだけ時間をかけて出力されるか、内部の各信号を調整し、最適なスケジュールを行う。アロケーション処理部７０３は、演算器などのリソースの共通化して最適な回路を生成する。メモリやインターフェースが解析された高位合成対象の３つのモジュールを入力として高位合成が行われる。
【００３０】
メモリ生成部８は、高位合成で使ったメモリ変数をＨＤＬに生成するための工程である。
【００３１】
メモリインターフェース生成部９はメモリ生成部８で生成されたメモリとメモリにアクセスするモジュールmod1とモジュールmod2を接続するためのインターフェースを生成する。生成されたインターフェースが付加された例を図１０に示す。配列変数arrayにアクセスしていた記述は、それぞれ生成されたインターフェースへのアクセスに変換されている。
【００３２】
ＨＤＬ記述１０は、動作記述１が図２のメモリリソース検出部３と、メモリリソース抽出部４と、メモリリソース分析部５と、メモリ変換部６と、ＣＤＦＧ変換処理部７０１とスケジューリング処理部７０２とアロケーション処理部７０３で構成された動作合成部７と、メモリ生成部８と、メモリインターフェース生成部９とによる処理がなされることによって出力されるＨＤＬ回路記述である。メモリのインターフェースが付加されたＨＤＬ回路が生成される。ＨＤＬ回路記述の例を図１２（メモリリソースを接続したＨＤＬ回路記述）に示す。
【００３３】
図６は、本実施形態の各動作レベル記述を回路イメージにした図である。
図３のmod1（２）とmod2（３）をブロックイメージにした図である。
mod1はグローバル配列array[256]にdataを書き込み、mod2はグローバル配列のarray[256]からdataを読み出す。図のようにグローバルな変数であるarray[256]を物理的に配置することは無理なために、全体の回路イメージは図７のようになる。
【００３４】
図７は図３の（１）のイメージをブロック図化したものである。systemモジュールには図３の（２）のmod1モジュールと図３の（３）のmod2モジュールがインスタンス化され、グローバルで宣言された配列arrayをアクセスする。図２の動作合成制約記述２に高位合成となる前述のモジュールの情報や、どのように高位合成をするか等、高位合成をするための情報が格納される。
【００３５】
次に、本発明の第二の実施形態について図面を参照しながら説明する。
【００３６】
図８は、本実施形態の各動作レベル記述を回路イメージにした図である。
図６に示す第一の実施形態では物理的に配列のarray[256]を配置することができないため、配列のarray[256]にデータを送受信するために図２のメモリリソース分析部で分析をされたメモリポートをmod1、mod2に付加する。これによりmod1、mod2に配列のarray[256]の実態がなくても配列のarray[256]にアクセスすることが可能になる。
【００３７】
次に、本発明の第三の実施形態について図面を参照しながら説明する。
【００３８】
図９は、本実施形態のメモリリソースを配置した動作レベル記述を回路イメージにした例について説明する図である。
入力される動作記述１は図９のようにmod2２０３の中に配列array２０１が実装され、mod2２０３にはmod1２０２から配列array２０１へアクセスするためにインターフェースが用意された形に認識されるようになり図２の高位合成７０１、７０２，７０３に入力される。
【００３９】
次に、本発明の第四の実施形態について図面を参照しながら説明する。
【００４０】
図１０は、本実施形態の生成されたインターフェースが付加された動作レベル記述について説明する図である。
図２のメモリインターフェース生成部９は図２のメモリ生成部８で生成されたメモリとメモリにアクセスするモジュールmod1とモジュールmod2を接続するためのインターフェースを生成する。
生成されたインターフェースが付加された例を示すのが図１０である。
【００４１】
図１１は、本実施形態の生成されたインターフェースが付加された動作レベル記述のイメージについて説明する図である。
生成されたインターフェースが付加された図１０の動作レベル記述をブロック図イメージにしたものである。
【００４２】
次に、本発明の第五の実施形態について図面を参照しながら説明する。
【００４３】
図１３は、本実施形態のメモリリソースを動作合成対象からはずしたイメージについて説明する図である。
図８に示す第二の実施形態でmod1、mod2に配列のarray[256]にアクセスするためのメモリポートを配置したイメージ図に、さらに上位の階層であるsystemに配列のarray[256]にアクセスするためのメモリポートを配置して、動作合成対象であるsystem以下の回路からメモリを取り出している。動作合成対象のsystemの外側にメモリを出し、各モジュールのmod1、mod2はメモリポートに対してアクセスすることによって、配列のarray[256]に対してデータのアクセスができる。
【００４４】
図１４は、図１３のときの動作レベル記述について説明する図である。
図１３を動作レベル記述で記す。mod1から、メモリポートとなるramifをsystemのメモリポートとなるr_port1へ接続している。同じようにmod2からメモリポートとなるramifをsystemのメモリポートとなるr_port2へ接続している。mod1、mod2はそれぞれメモリのポートとなるr_port1、r_port2にアクセスすることで、systemの外に配置されたarray[256]のデータを使用することが可能になる。
【００４５】
次に、本発明の第六の実施形態について図面を参照しながら説明する。
【００４６】
図１５は、本実施形態のメモリリソースを各モジュール内に配置したイメージについて説明する図である。
メモリの配置場所の指定は、図２の動作合成制約記述２内に記述する。図３の動作記述を例にあげると、後述する図１７の例のように３箇所に配置することができる。後述する図１８の動作合成制約によると、ＲＡＭの配置場所はsystemモジュールとなり、図１５の（１）の様なハードウェア記述が生成されることになる。
【００４７】
図１６は、動作合成制約記述について説明する図である。
配置したＲＡＭに対してアービトレーションに関する指定するための動作合成制約を記した図である。ここでは、ram_arbitrationという変数を動作合成ツールが参照することによって配置されたＲＡＭに対してアービタを追加配置することができる。
アービトレーションに関する制約を与えることでユーザーの任意で設定することができる。また、モジュールの強弱を記号などで示すことによりアービトレーション強度を指定することが可能である。この例ではmodule2とmodule3の関係を示しており、module2の強度が強い設定になっている。
【００４８】
図１７は、アービタ回路が付加された回路イメージについて説明する図である。
図１６のアービトレーションの制約記述を追加時に生成される回路図のイメージ図である。
mod1のメモリポートとmod2のメモリポートを入力としたアービタが配置され、アービトレーションされた後に、メモリへまたはメモリからのデータを送受信する。
【００４９】
図１８は、動作合成制約記述について説明する図である。
ＲＡＭの配置場所を指定するための動作合成制約を記した図である。ここでは、ram_Locationという変数を動作合成ツールが参照することによってＲＡＭの配置場所を決定し、配置を行う。ram_Locationで指定されているmodule1はsystemモジュールになる為、図１５の（１）の図のようにＲＡＭが配置され接続される。ここでram_Locationの指定をmodule2にした場合は図１５の（２）、ram_Locationの指定をmodule3にした場合は図１５の（３）といった具合になる。配置場所指定宣言を図１６の動作合成制約記述に追記することでアービトレーションとメモリ配置指定を同時に行うことができる。
【００５０】
次に、本発明の第七の実施形態について図面を参照しながら説明する。
【００５１】
以下、本実施形態のメモリの生成、メモリインターフェースの生成処理の一例について説明する。メモリの生成、メモリインターフェースの生成処理とは、インターフェースを介して外部とデータ転送を行うためのインターフェース回路を生成する処理である。
【００５２】
前述したとおり、図７は図３の（１）のイメージをブロック図化したものである。systemモジュールには図３の（２）のmod1モジュールと図３の（３）のmod2モジュールがインスタンス化され、グローバルで宣言された配列arrayをアクセスする。図２の動作合成制約記述２に高位合成となる前述のモジュールの情報や、どのように高位合成をするか等、高位合成をするための情報が格納される。
【００５３】
図２のメモリリソース検出部３に入力された図２の動作記述１からメモリになり得る配列記述である配列arrayと配列arrayxを検出する。図２のメモリリソース抽出部４でメモリリソース検出部３で検出された配列に対して複数モジュールから使用されている配列変数を抽出する。ここでは配列arrayのみが抽出されることとなる。
抽出された配列arrayは図２のメモリリソース分析部５によって分析される。この例では配列arrayはデータ幅が8bitでデータの深さが２５６個であることが分析の結果わかることになる。図３の（２）のmod1モジュールを見るとarrayへの代入のみが行われていることが分析の結果わかる。このことによりmod1モジュールはarrayへ書き込みを行うモジュールということになる。また、図３の（３）の、mod2モジュールを見るとarrayからの代入のみが行われていることが分析の結果わかることになる。このように配列arrayが代入式で右辺にあるか左辺にあるかを分析することによりポートの分析情報を得ることができる。この分析によってインターフェースで必要な情報が求められ、mod1モジュールには書き込み専用のメモリポート、mod2モジュールには読み出し専用のメモリポートが、図５のようにインターフェースとして作成される。
高位合成を行うために図２のメモリリソース分析部５で分析されたメモリへの変換を図２のメモリ変換部６で行う。メモリ変換部６ではデータ8bitでアドレスが8bitのメモリへ変換される。メモリへ変換されたものと動作記述１と動作合成制約記述２が図２の高位合成に関するＣＤＦＧ変換処理部７０１とスケジューリング処理部７０２とアロケーション処理部７０３に入力される。この時入力される動作記述１は図９のようにmod2２０３の中に配列array２０１が実装され、mod2２０３にはmod1２０２から配列array２０１へアクセスするためにインターフェースが用意された形に認識されるようになっている。
図２のＣＤＦＧ変換処理部７０１とスケジューリング処理部７０２とアロケーション処理部７０３で高位合成された回路記述を元に図２のメモリ生成部８で配列arrayを分析した結果に基づきメモリのモデルを生成する。その後、図４のメモリインターフェース生成部９にて前段で生成されたメモリへアクセスするためのメモリインターフェースを生成し、図１１をイメージとした図１０の様なハードウェア回路記述を出力する。図１９は従来技術（図２０参照）での高位合成結果と比較した図である。本実施の形態で高位合成を行うと、データの方向が一方向になり、余計な配線が無くなる。
【００５４】
このようにすれば、メモリに繋がる各モジュールに無駄なポートが生成されないことで関係のない機能との接続やセレクタの生成を防ぐことができ、カバレッジ率の低下や不要な回路の生成を防ぐことが可能になる。
これは、以下のような問題点を解決していることとなる。
【００５５】
動作レベル回路を動作合成する方法において、動作レベル回路に記述される大きな配列変数はメモリとして扱う必要があり、メモリを意識した配列変数の扱い方がある。小さな範囲でメモリを使用する場合などは、特許文献１で述べられるとおり同一区間（サイクル）あるいは、他の区間に記述された変数をメモリとして自動でスケジューリングが可能になっている。
動作レベル回路の複数モジュールから一つのメモリを共有使用する場合、２ポートメモリを使用することになる。また、１ポートのメモリでもメモリの周辺にモジュールからの接続信号をセレクトする機構を持つことで可能となる。
図２０のように複数モジュールからのメモリポートではリード／ライトが可能なポートである為、例えばモジュール１がメモリへライトし、モジュール２がメモリからリードしても、モジュール１にはライトポートとリードポートとが、同じくモジュール２にもライトポートとリードポートとが生成されてしまう。
しかしながら、図２０で示す技術で、モジュール１にはライトポートとリードポートとが、同じくモジュール２にもライトポートとリードポートとが生成されると機能に関係ない回路が生成されてしまうために、カバレッジ率が下がってしまったり、無駄に回路が大きくなってしまったりする。
【００５６】
以下、各請求項ごとの作用・効果を説明する。
請求項２、請求項８、請求項１１によれば、一つのモジュールでは動作合成出来ないサイズのモジュール同士のメモリの共有や、排他に動作する異なる機能のモジュール同士のメモリの共有が可能になる。
【００５７】
請求項３、請求項９、請求項１２によれば、動作合成対象外のモジュールとのメモリ共有使用と、動作合成できないサイズのモジュール同士のメモリの共有や、排他に動作する異なる機能のモジュール同士のメモリの共有を任意に選択することが可能になる。
【００５８】
請求項４によれば、異なるモジュールから、メモリへ同時にアクセスした時にメモリ内のデータが壊れたり、間違えた値を読み取るような不具合を回避することが可能になる。
【００５９】
請求項５によれば、異なるモジュールから、メモリへ同時にアクセスした時に問題なく動作するように全体的な機能を考慮した動作合成が可能になる。
【００６０】
請求項６によれば、メモリの速度が動作速度を左右する場合などに、メモリの配置場所を選択することで全体の速度性能を考慮した動作合成が可能になる。
【００６１】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々の変更実施が可能である。例えば、高位合成装置の機能を実現するためのプログラムを装置に読込ませて実行することにより装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。また、各装置の機能が他の装置によりまとめて実現されたり、追加の装置により機能が分散されて実現される形態も本発明の範囲内である。
【符号の説明】
【００６２】
１    動作記述
２    動作合成制約記述
３    メモリリソース検出部
４    メモリリソース抽出部
５    メモリリソース分析部
６    メモリ変換部
７    動作合成部
７０１    ＣＤＦＧ変換処理部
７０２    スケジューリング処理部
７０３    アロケーション処理部
８    メモリ生成部
９    メモリインターフェース生成部
１０    ＨＤＬ記述
【先行技術文献】
【特許文献】
【００６３】
【特許文献１】特開２００５−１７３６４８号公報
【図１】
2011134308.tif 000003
【図２】
2011134308.tif 000004
【図３】
2011134308.tif 000005
【図４】
2011134308.tif 000006
【図５】
2011134308.tif 000007
【図６】
2011134308.tif 000008
【図７】
2011134308.tif 000009
【図８】
2011134308.tif 000010
【図９】
2011134308.tif 000011
【図１０】
2011134308.tif 000012
【図１１】
2011134308.tif 000013
【図１２】
2011134308.tif 000014
【図１３】
2011134308.tif 000015
【図１４】
2011134308.tif 000016
【図１５】
2011134308.tif 000017
【図１６】
2011134308.tif 000018
【図１７】
2011134308.tif 000019
【図１８】
2011134308.tif 000020
【図１９】
2011134308.tif 000021
【図２０】
2011134308.tif 000022