(57)【要約】【課題】回路面積の増加を抑えつつ性能を向上できるインターフェイス回路を自動合成できるようにする。【解決手段】入力記述に基づいてタスクＡの処理を実行する回路モジュール、及びタスクＡの出力データを受けてタスクＢの処理を実行する回路モジュールを高位合成する高位合成部と、インターフェイス回路に係るライトトレースデータ及びリードトレースデータに基づいて回路モジュール間のインターフェイス回路を合成するインターフェイス回路合成部とを有し、インターフェイス回路を合成する際、ライトトレースデータ及びリードトレースデータに基づいて求めたインターフェイス回路の最小の実行開始間隔が、回路モジュールの最小の実行開始間隔よりも大きい場合、インターフェイス回路内メモリとは別の記憶素子を設けてインターフェイス回路の実行開始間隔を短縮する。【選択図】図２
2018151973.tif 000002
【特許請求の範囲】
【請求項１】
それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成部と、
前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成する回路合成部とを有し、
前記回路合成部は、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設けることを特徴とする情報処理装置。
【請求項２】
前記高位合成部は、前記第１の回路モジュールでの処理の流れを示す第１のスケジュール情報及び前記第２の回路モジュールでの処理の流れを示す第２のスケジュール情報を出力し、
前記第１のスケジュール情報から前記データの書き込み情報を抽出し、前記第２のスケジュール情報から前記データの読み出し情報を抽出する情報抽出部を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第１のスケジュール情報に基づいて前記第１の回路モジュールの最小の実行開始間隔を求め、前記第２のスケジュール情報に基づいて前記第２の回路モジュールの最小の実行開始間隔を求めることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記別の記憶素子は、ＦＩＦＯバッファであることを特徴とする請求項１〜３の何れか１項に記載の情報処理装置。
【請求項５】
前記回路合成部は、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記メモリが前記データを保持する期間を解析し、解析結果に基づいて前記ＦＩＦＯバッファのサイズを決定することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記データの書き込み情報及び前記データの読み出し情報が指定する前記メモリのメモリ要素のうち、前記データを保持する期間が重ならないメモリ要素を共有させることを特徴とする請求項１〜５の何れか１項に記載の情報処理装置。
【請求項７】
前記高位合成部が出力する前記第１の回路モジュール及び前記第２の回路モジュールの回路情報、及び前記回路合成部が出力する前記インターフェイス回路の回路情報を論理合成する論理合成部を有することを特徴とする請求項１〜６の何れか１項に記載の情報処理装置。
【請求項８】
情報処理装置の高位合成部が、それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成し、
前記情報処理装置の回路合成部が、前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成し、
前記インターフェイス回路の合成では、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設けることを特徴とする情報処理方法。
【請求項９】
それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成ステップと、
前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成する回路合成ステップとをコンピュータに実行させ、
前記回路合成ステップにて、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設ける処理をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
回路設計において、ＲＴＬ（Register Transfer Level）設計ツールや高位合成ツールの進歩により、回路モジュールの設計は設計工数を削減できている。その一方で、回路モジュール間でのデータ転送を担う、回路モジュール間を接続するためのインターフェイス回路の設計については、設計ツールによる設計支援があまりなされていない。回路モジュール間のインターフェイス回路は、システム全体の性能と回路面積との両方に影響を与えるので、設計時にはどのように実現するかを検討することは重要である。
【０００３】
回路モジュール間のインターフェイス回路の作成方法としては、回路モジュールの動作にあわせた専用回路として人手により設計する方法がある。この方法では、インターフェイス回路は専用化されるため、性能や回路面積の点では優れたものが作成できるが、設計に多大な時間及び労力を要する。また、回路モジュールのインターフェイスが変更された場合、インターフェイス回路も変更が必要となり手間がかかってしまう。
【０００４】
また、インターフェイス回路の別の作成方法としては、回路モジュール間のインターフェイスとして標準的な方式を採用し、ＩＰマクロを使って作成する方法がある。この方法では、設計の工数は低減できるが、性能向上や回路面積削減を目的としたカスタマイズの実現可能範囲が限られてしまう。また、インターフェイス回路の別の作成方法として、回路モジュール間のインターフェイス回路を自動合成する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−５４６４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図２６に示すようにタスクＡの処理を実行する回路モジュール２６０１と、回路モジュール２６０１から出力されるデータを用いてタスクＢの処理を実行する回路モジュール２６０３とが、インターフェイス回路２６０２により接続されている場合、回路モジュール２６０１、インターフェイス回路２６０２、回路モジュール２６０３のいずれかがボトルネックとなることでシステム全体の性能が決まる。インターフェイス回路２６０２は、回路モジュール２６０１、２６０３間でデータを転送するためのメモリを有している。
【０００７】
ここで、インターフェイス回路２６０２の実行開始間隔（同じ処理を繰り返す間隔）は、回路モジュール２６０１による書き込み動作と、回路モジュール２６０３による読み出し動作と、インターフェイス回路２６０２のメモリの容量とによって定まる。回路面積が大きくなることを避けるため、インターフェイス回路２６０２のメモリの容量を小さくすると、インターフェイス回路２６０２の実行開始間隔が大きくなる。インターフェイス回路２６０２の実行開始間隔が、回路モジュール２６０１及び回路モジュール２６０３の実行開始間隔よりも大きい場合、インターフェイス回路２６０２がボトルネックとなる。その結果、回路モジュール２６０１から出力されたデータが回路モジュール２６０３に入力されるまでの期間が長くなり、システム全体の性能が低下してしまう。
【０００８】
１つの側面では、本発明の目的は、回路面積の増加を抑えつつ性能を向上できるインターフェイス回路を自動合成することができる情報処理装置を提供することにある。
【課題を解決するための手段】
【０００９】
情報処理装置の一態様は、それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成部と、データが入出力されるメモリを有して回路モジュール間のデータの転送を担うインターフェイス回路を、インターフェイス回路に対する第１の回路モジュールによるデータの書き込み情報及び第２の回路モジュールによるデータの読み出し情報に基づいて合成する回路合成部とを有する。回路合成部は、データの書き込み情報及びデータの読み出し情報に基づいてインターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、第１の回路モジュール及び第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、第１の回路モジュール及び第２の回路モジュールの最小の実行開始間隔に基づいて、インターフェイス回路内にメモリに入出力されるデータを記憶する、メモリとは別の記憶素子を設ける。
【発明の効果】
【００１０】
発明の一態様においては、回路面積の増加を抑えつつ実行開始間隔を短縮し性能を向上させることができるインターフェイス回路を自動合成することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施形態における情報処理装置の構成例を示す図である。
【図２】図２は、本実施形態における情報処理装置の機能構成例を示す図である。
【図３】図３は、本実施形態における情報処理装置の処理例を示すフローチャートである。
【図４】図４は、入力記述の一例を示す図である。
【図５】図５（Ａ）は、タスクＡに係る回路モジュールの例を示すブロック図であり、図５（Ｂ）は、タスクＡのスケジュール情報を説明する図である。
【図６】図６（Ａ）は、タスクＢに係る回路モジュールの例を示すブロック図であり、図６（Ｂ）は、タスクＢのスケジュール情報を説明する図である。
【図７】図７（Ａ）は、ライトトレースデータを説明する図であり、図７（Ｂ）は、リードトレースデータを説明する図である。
【図８】図８は、インターフェイス回路に対する動作を説明する図である。
【図９】図９は、タスクＡ、インターフェイス回路、及びタスクＢの処理タイミングの一例を示す図である。
【図１０】図１０（Ａ）〜図１０（Ｃ）は、インターフェイス回路の実行開始間隔の改善方法を説明する図である。
【図１１】図１１は、インターフェイス回路に対する動作を説明する図である。
【図１２】図１２は、インターフェイス回路の構成例を示す図である。
【図１３】図１３は、制御回路の構成例を示す図である。
【図１４】図１４は、インターフェイス回路の動作例を示すタイミングチャートである。
【図１５】図１５は、インターフェイス回路の他の構成例を示す図である。
【図１６】図１６（Ａ）及び図１６（Ｂ）は、複数のインスタンスを用いる例を説明する図である。
【図１７】図１７は、インターフェイス回路内のメモリ容量を削減する例を説明する図である。
【図１８】図１８は、タスクＡのスケジュール情報を示す図である。
【図１９】図１９（Ａ）〜図１９（Ｃ）は、タスクＡのタスク実行開始間隔を変化させたときのスケジュール情報を示す図である。
【図２０】図２０（Ａ）及び図２０（Ｂ）は、インターフェイス回路のスケジュールを示す図である。
【図２１】図２１（Ａ）及び図２１（Ｂ）は、分離するインターフェイス回路内のメモリ要素の決定方法を説明する図である。
【図２２】図２２（Ａ）及び図２２（Ｂ）は、改善後のインターフェイス回路のスケジュールを示す図である。
【図２３】図２３は、別に設けるメモリ素子のサイズの決定方法を説明する図である。
【図２４】図２４は、別に設けるメモリ素子の動作モデルを示す図である。
【図２５】図２５は、本実施形態における情報処理装置を実現可能なコンピュータの機能ブロック図である。
【図２６】図２６は、設計対象回路の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
なお、以下では、設計対象のハードウェア回路として、図２６に示したようにタスクＡの処理を実行するとともに、タスクＡの出力データを受けてタスクＢの処理を実行する回路を一例に説明する。
【００１３】
図１は、本発明の一実施形態における情報処理装置の構成例を示す図である。本実施形態における情報処理装置としてのサーバ１２１は、ユーザー（ハードウェア回路の設計者等）１１０が行う入力操作等に応じて、設計データ１２２を基に設計対象のハードウェア回路を自動合成して回路データを提供する。設計データ１２２は、設計対象の回路の入力記述（動作記述）や合成制約等を含む。
【００１４】
設計データ１２２に基づくハードウェア回路は、高位合成ツール１３１、論理合成ツール１３２、スケジュール情報抽出ツール１３３、インターフェイス回路合成ツール１３４等のソフトウェアをサーバ１２１で実行することで自動的に合成される。高位合成ツール１３１は、入力記述（動作記述）から、その入力記述に応じた処理を実行する回路モジュール（ＲＴＬ記述）を合成するためのツールである。論理合成ツール１３２は、ＲＴＬ記述に基づいてゲートレベルの回路データを生成するためのツールである。
【００１５】
スケジュール情報抽出ツール１３３は、スケジュール情報からデータの入出力タイミングの情報（ライトトレースデータやリードトレースデータ）を取得するためのツールである。インターフェイス回路合成ツール１３４は、スケジュール情報から取得したライトトレースデータ及びリードトレースデータに基づいて、インターフェイス回路（ＲＴＬ記述）を合成するためのツールである。
【００１６】
ここで、スケジュール情報は、回路モジュールの合成時に出力されるログ情報の１つとして得られ、回路モジュールの処理の流れを示す情報である。また、ライトトレースデータは、インターフェイス回路内のどのメモリ要素に、どのタイミングでデータを書き込むかを示すデータの書き込み情報であり、リードトレースデータは、インターフェイス回路内のどのメモリ要素から、どのタイミングでデータを読み出すかを示すデータの読み出し情報である。
【００１７】
図２は、本実施形態における情報処理装置の機能構成例を示す図である。本実施形態における情報処理装置は、高位合成部２０１、スケジュール情報抽出部２０２、インターフェイス回路合成部２０３、及び論理合成部２０４を有する。高位合成部２０１、スケジュール情報抽出部２０２、インターフェイス回路合成部２０３、及び論理合成部２０４の各機能は、それぞれ高位合成ツール１３１、スケジュール情報抽出ツール１３３、インターフェイス回路合成ツール１３４、及び論理合成ツール１３２によって実現される。
【００１８】
高位合成部２０１は、入力記述（動作記述）に記載された処理を実行する回路モジュール（ＲＴＬ記述）を合成する。高位合成部２０１は、パイプライン合成機能を有しており、パイプライン動作可能な回路モジュールを合成する。高位合成部２０１は、タスクＡの入力記述２１１Ａが入力されると、入力記述２１１Ａに基づいてタスクＡの処理を実行する回路モジュールを合成し、その回路モジュールのＲＴＬ記述２１２Ａ及びログ情報２１３Ａを出力する。また、高位合成部２０１は、タスクＢの入力記述２１１Ｂが入力されると、入力記述２１１Ｂに基づいてタスクＢの処理を実行する回路モジュールを合成し、その回路モジュール（タスクＢ）のＲＴＬ記述２１２Ｂ及びログ情報２１３Ｂを出力する。ログ情報２１３Ａ、２１３Ｂは、回路モジュールでの処理の流れを示すスケジュール情報を含む。
【００１９】
スケジュール情報抽出部２０２は、高位合成部２０１が出力するログ情報におけるスケジュール情報からデータの入出力タイミングの情報（ライトトレースデータやリードトレースデータ）を取得する。スケジュール情報抽出部２０２は、データを出力する（データを書き込む）側である回路モジュール（タスクＡ）のログ情報２１３Ａにおけるスケジュール情報からライトトレースデータ２１４を取得して出力する。また、スケジュール情報抽出部２０２は、データが入力される（データを読み出す）側である回路モジュール（タスクＢ）のログ情報２１３Ｂにおけるスケジュール情報からリードトレースデータ２１５を取得して出力する。
【００２０】
インターフェイス回路合成部２０３は、スケジュール情報抽出部２０２が出力するライトトレースデータ及びリードトレースデータに基づいて、回路モジュール間のデータ転送を担うインターフェイス回路（ＲＴＬ記述）を合成する。インターフェイス回路合成部２０３は、ライトトレースデータ２１４及びリードトレースデータ２１５を用いてインターフェイス回路２６０２内のメモリのライフタイム解析を行う。また、インターフェイス回路合成部２０３は、解析結果に基づいてインターフェイス回路を合成し、インターフェイス回路のＲＴＬ記述２１６を出力する。なお、ライフタイムとは、メモリ要素に対してデータが書き込まれた時に開始され、そのデータが最後に読み出された時に終了するものであり、メモリ要素がデータを保持する期間を示す。
【００２１】
論理合成部２０４は、各回路の回路情報（ＲＴＬ記述）を論理合成しゲートレベルの回路データを生成する。論理合成部２０４は、高位合成部２０１が出力する回路モジュールのＲＴＬ記述２１２Ａ、２１２Ｂと、インターフェイス回路合成部２０３が出力するインターフェイス回路のＲＴＬ記述２１６とに基づいて、設計対象であるハードウェア回路のゲートレベルの回路データ２１７を生成し出力する。
【００２２】
図３は、本実施形態における情報処理装置の処理例を示すフローチャートである。
処理を開始すると、ステップＳ３０１にて、情報処理装置の高位合成部２０１が、それぞれの入力記述に基づいて、タスクＡの処理を実行する回路モジュール及びタスクＢの処理を実行する回路モジュールを高位合成する。次に、ステップＳ３０２にて、情報処理装置のスケジュール情報抽出部２０２が、ステップＳ３０１での高位合成により得られたタスクＡの処理を実行する回路モジュールのスケジュール情報からライトトレースデータを取得し、タスクＢの処理を実行する回路モジュールのスケジュール情報からリードトレースデータを取得する。
【００２３】
続いて、ステップＳ３０３にて、情報処理装置のインターフェイス回路合成部２０３が、ステップＳ３０２において取得されたライトトレースデータ及びリードトレースデータを用いて、インターフェイス回路内メモリのライフタイム解析を行う。次に、ステップＳ３０４にて、インターフェイス回路合成部２０３が、各回路モジュールのスケジュール情報及びライフタイムの解析結果に基づいて、各回路モジュール及びインターフェイス回路の実行開始間隔を決定する。ここで、実行開始間隔とは、同じタスクの処理を繰り返す間隔であり、タスクの処理を開始してから次回の同じタスクの処理を開始するまでの時間間隔である。
【００２４】
次に、ステップＳ３０５にて、インターフェイス回路合成部２０３が、設計対象の回路全体での処理性能及び回路面積を評価し、処理性能及び回路面積が所定の条件を満たさない場合、ステップＳ３０６へ進む。例えば、インターフェイス回路合成部２０３は、インターフェイス回路の最小の実行開始間隔が各回路モジュールの最小の実行開始間隔よりも大きく、インターフェイス回路がボトルネックとなると判定した場合、ステップＳ３０６へ進む。
【００２５】
ステップＳ３０６にて、インターフェイス回路合成部２０３が、インターフェイス回路内メモリのメモリ要素を１つ選択して別のメモリ素子（記憶素子）へ分離する。そして、別のメモリ素子へ分離した状態での、インターフェイス回路内メモリのライフタイム解析を行い、解析結果を更新して、ステップＳ３０４へ戻る。
【００２６】
ステップＳ３０５において、回路全体での処理性能及び回路面積が所定の条件を満たすと判定した場合、ステップＳ３０７にて、インターフェイス回路合成部２０３が、インターフェイス回路の合成を行ってインターフェイス回路のＲＴＬ記述を生成する。続いて、ステップＳ３０８にて、情報処理装置の論理合成部２０４が、ステップＳ３０１において得られた各回路モジュールのＲＴＬ記述、及びステップＳ３０７において得られたインターフェイス回路のＲＴＬ記述を論理合成して回路データを出力し、処理を終了する。
【００２７】
以下、本実施形態における情報処理装置による回路合成について、図４に示す入力記述に記載した処理を実行する回路を合成する場合を例に具体的に説明する。図４は、入力記述の一例を示す図である。図４において、４０１がタスクＡの入力記述であり、４０２がタスクＢの入力記述である。なお、入力記述には、２つの回路モジュールに限らず、他の回路モジュール（図４に示した例ではタスクＣ）の入力記述も適宜含まれる。
【００２８】
なお、本実施形態では、タスクは、１つのインターフェイス回路内メモリに対して書き込み及び読み出しの両方を行うことはなく、１つのインターフェイス回路内メモリに対しては書き込み又は読み出しの一方だけを行えるとする。また、タスクは、タスクの１回の実行中、インターフェイス回路内メモリの各メモリ要素に対する書き込みはそれぞれ１回だけ行えるとし、インターフェイス回路内メモリの各メモリ要素に対する読み出しはそれぞれ１回以上行っても良いとする。
【００２９】
タスクＡの入力記述４０１は、データｉｎ［０］〜ｉｎ［７］を入力とし、データｔｍｐ１２［０］〜ｔｍｐ１２［７］を出力として、データｉｎ［ｊ］を用いて演算処理を行って演算結果をデータｔｍｐ１２［ｊ］として出力する処理を、値ｊを０から１ずつ増加させて８回繰り返し行うことを示している。また、タスクＢの入力記述４０２は、データｔｍｐ１２［０］〜ｔｍｐ１２［７］を入力とし、データｔｍｐ２３［０］〜ｔｍｐ２３［７］を出力として、データｔｍｐ１２［ｊ］とｔｍｐ１２［（ｊ＋１）％８］（％は剰余演算子）を用いて演算処理を行って演算結果をデータｔｍｐ２３［ｊ］として出力する処理を、値ｊを０から１ずつ増加させて８回繰り返し行うことを示している。
【００３０】
入力データはメモリ（ＲＡＭ）に格納されていると指定し、出力データはメモリ（ＲＡＭ）に格納すると指定して、入力記述４０１、４０２を高位合成部２０１に入力すると、高位合成部２０１は、タスクＡの処理を実行する回路モジュール及びタスクＢの処理を実行する回路モジュールをそれぞれ合成する。高位合成部２０１による高位合成での合成結果の一例を図５及び図６に示す。
【００３１】
図５（Ａ）は、タスクＡの入力記述４０１に基づいて合成された回路モジュールの例を示すブロック図である。なお、図５（Ａ）においては、データパスに係る部分のみを示している。図５（Ａ）に示すように、タスクＡの処理を実行する回路モジュール５１０は、レジスタ５１１、５１３及び組み合わせ論理回路５１２を有する。メモリ５２０は、タスクＡでの入力データｉｎを格納するメモリ（ＲＡＭ）であり、メモリ５３０は、タスクＡでの出力データｔｍｐ１２を格納するメモリ（ＲＡＭ）である。
【００３２】
レジスタ（ｒｅｇ０）５１１は、入力データとしてメモリ５２０から読み出したデータを格納するレジスタである。組み合わせ論理回路（ｌｏｇｉｃ）５１２は、レジスタ（ｒｅｇ０）５１１に格納されたデータを用いた演算処理を実行する回路であり、演算結果として得られるデータはレジスタ（ｒｅｇ１）５１３に格納される。レジスタ（ｒｅｇ１）５１３は、出力データとしてメモリ５３０に書き込むデータを格納するレジスタである。
【００３３】
図５（Ｂ）は、合成結果のログ情報の１つとして得られるタスクＡのスケジュール情報を説明する図である。図５（Ｂ）において、ｉｎ［０］〜ｉｎ［７］、ｒｅｇ０、ｌｏｇｉｃ、ｒｅｇ１、ｔｍｐ１２［０］〜ｔｍｐ１２［７］は、タスクＡの処理に係る回路リソースを示している。ｉｎ［０］〜ｉｎ［７］は入力データｉｎが格納されているメモリ５２０のメモリ要素を示し、ｔｍｐ１２［０］〜ｔｍｐ１２［７］は出力データｔｍｐ１２を格納するメモリ５３０のメモリ要素を示す。また、ｒｅｇ０、ｌｏｇｉｃ、ｒｅｇ１は、回路モジュール５１０が有するレジスタ５１１、組み合わせ論理回路５１２、レジスタ５１３をそれぞれ示す。また、図５（Ｂ）において、ｒ、ｗ、ａは回路リソースの動作を示しており、ｒは読み出し、ｗは書き込み、ａは動作している状態を示す。
【００３４】
図５（Ｂ）に示すようにタスクＡの処理では、サイクル０でメモリ５２０のメモリ要素ｉｎ［０］からデータが読み出され、その読み出されたデータがサイクル１でレジスタ５１１に書き込まれる。そして、サイクル２で、サイクル１にレジスタ５１１に書き込まれたデータを用いて、組み合わせ論理回路５１２が演算処理を行い、演算結果のデータがレジスタ５１３に書き込まれる。次のサイクル３で、サイクル２にレジスタ５１３に書き込まれたデータがメモリ５３０のメモリ要素ｔｍｐ１２［０］に書き込まれる。
【００３５】
回路モジュール５１０はパイプライン動作するので、サイクル１でメモリ５２０のメモリ要素ｉｎ［１］からデータが読み出され、サイクル２でメモリ５２０のメモリ要素ｉｎ［２］からデータが読み出され、以降同様にメモリ５２０のメモリ要素ｉｎ［３］〜ｉｎ［７］からデータが順次読み出されて、前述の処理が繰り返し行われる。そして、サイクル１０で、レジスタ５１３からメモリ５３０のメモリ要素ｔｍｐ１２［７］へのデータの書き込みが行われて１つのタスクＡの処理が終了する。
【００３６】
このようにタスクＡの１回の実行には１１サイクルを要するが、回路モジュール５１０はタスクレベルでのパイプライン動作が可能であるので、図５（Ｂ）に示すように１回目のタスクＡの処理が実行中であるサイクル８から２回目のタスクＡの処理を開始することができる。すなわち、タスクＡの処理を実行する回路モジュール５１０は、最短で８サイクル毎に同じタスクＡの処理を繰り返すことが可能であり、回路モジュール５１０における最小の実行開始間隔は８サイクルとなる。
【００３７】
図６（Ａ）は、タスクＢの入力記述４０２に基づいて合成された回路モジュールの例を示すブロック図である。なお、図６（Ａ）においても、データパスに係る部分のみを示している。図６（Ａ）に示すように、タスクＢの処理を実行する回路モジュール６１０は、レジスタ６１１、６１３及び組み合わせ論理回路６１２を有する。メモリ６２０は、タスクＢでの入力データｔｍｐ１２を格納するメモリ（ＲＡＭ）であり、メモリ６３０は、タスクＢでの出力データｔｍｐ２３を格納するメモリ（ＲＡＭ）である。
【００３８】
レジスタ（ｒｅｇ０）６１１は、入力データとしてメモリ６２０から読み出したデータを格納するレジスタである。組み合わせ論理回路（ｌｏｇｉｃ）６１２は、レジスタ（ｒｅｇ０）６１１に格納されたデータを用いた演算処理を実行する回路であり、演算結果として得られるデータはレジスタ（ｒｅｇ１）６１３に格納される。レジスタ（ｒｅｇ１）６１３は、出力データとしてメモリ６３０に書き込むデータを格納するレジスタである。
【００３９】
図６（Ｂ）は、合成結果として得られるタスクＢのスケジュール情報を説明する図である。図６（Ｂ）において、ｔｍｐ１２［０］〜ｔｍｐ１２［７］、ｒｅｇ０、ｌｏｇｉｃ、ｒｅｇ１、ｔｍｐ２３［０］〜ｔｍｐ２３［７］は、タスクＢの処理に係る回路リソースを示している。ｔｍｐ１２［０］〜ｔｍｐ１２［７］は入力データｔｍｐ１２が格納されているメモリ６２０のメモリ要素を示し、ｔｍｐ２３［０］〜ｔｍｐ２３［７］は出力データｔｍｐ２３を格納するメモリ６３０のメモリ要素を示す。また、ｒｅｇ０、ｌｏｇｉｃ、ｒｅｇ１は、回路モジュール６１０が有するレジスタ６１１、組み合わせ論理回路６１２、レジスタ６１３をそれぞれ示す。また、図６（Ｂ）において、ｒ、ｗ、ａは回路リソースの動作を示しており、ｒは読み出し、ｗは書き込み、ａは動作している状態を示す。
【００４０】
図６（Ｂ）に示すようにタスクＢの処理では、サイクル０でメモリ５３０のメモリ要素ｔｍｐ１２［０］及びｔｍｐ１２［１］からデータが読み出され、その読み出されたデータがサイクル１でレジスタ６１１に書き込まれる。そして、サイクル２で、サイクル１にレジスタ６１１に書き込まれたデータを用いて、組み合わせ論理回路６１２が演算処理を行い、演算結果のデータがレジスタ６１３に書き込まれる。次のサイクル３で、サイクル２にレジスタ６１３に書き込まれたデータがメモリ６３０のメモリ要素ｔｍｐ２３［０］に書き込まれる。
【００４１】
回路モジュール６１０はパイプライン動作するので、サイクル１でメモリ６２０のメモリ要素ｔｍｐ１２［１］及びｔｍｐ１２［２］からデータが読み出され、以降同様にメモリ６２０のメモリ要素からデータが順次読み出されて、前述の処理が繰り返し行われる。そして、サイクル７でメモリ６２０のメモリ要素ｔｍｐ１２［１］及びｔｍｐ１２［７］からデータが読み出され、それを用いた演算処理が行われ、サイクル１０でレジスタ６１３からメモリ６３０のメモリ要素ｔｍｐ２３［７］へのデータの書き込みが行われて１つのタスクＢの処理が終了する。
【００４２】
このようにタスクＢの１回の実行には１１サイクルを要するが、回路モジュール６１０はタスクレベルでのパイプライン動作が可能であるので、図６（Ｂ）に示すように１回目のタスクＢの処理が実行中であるサイクル８から２回目のタスクＢの処理を開始することができる。すなわち、タスクＢの処理を実行する回路モジュール６１０は、最短で８サイクル毎に同じタスクＢの処理を繰り返すことが可能であり、回路モジュール６１０における最小の実行開始間隔は８サイクルとなる。
【００４３】
前述したようなタスクＡ、タスクＢのそれぞれのスケジュール情報が得られると、スケジュール情報抽出部２０２は、スケジュール情報に基づいて、インターフェイス回路のメモリに係るライトトレースデータ及びリードトレースデータを取得する。ライトトレースデータは、データ出力側であるタスクＡのスケジュール情報の中から、回路モジュール５１０からメモリ５３０へのデータの書き込みを抽出することで取得でき、図７（Ａ）に示すようになる。また、リードトレースデータは、データ入力側であるタスクＢのスケジュール情報の中から、メモリ６２０から回路モジュール６１０へのデータの読み出しを抽出することで取得でき、図７（Ｂ）に示すようになる。図７（Ａ）に示すライトトレースデータ及び図７（Ｂ）に示すリードトレースデータは、下記のような数式で表現できる。ここで、ｗ［ｉ］＝ｊは、第ｉのメモリ要素にサイクルｊで書き込むことを示し、ｒ［ｉ］＝｛ｊ，ｋ｝は、第ｉのメモリ要素をサイクルｊ，ｋで読み出すことを示す。
【００４４】
【数１】
2018151973.tif 000003
【００４５】
次に、インターフェイス回路合成部２０３は、取得されたインターフェイス回路のメモリに係るライトトレースデータ及びリードトレースデータを用いてメモリのライフタイム解析を行い、メモリ要素毎にどの時間帯に値を保持するかの情報を求める。タスクＡとタスクＢとの間には、タスクＡの処理を開始した後にタスクＢの処理を開始するという依存関係がある。そこで、タスクＡの処理がサイクル０に開始され、タスクＢの処理がサイクルｔ（ｔ＞０）に開始されるとすると、ライトトレースデータ及びリードトレースデータは、下記のように書き換えられる。
【００４６】
【数２】
2018151973.tif 000004
【００４７】
インターフェイス回路内のメモリにおけるデータは書き込んだ後に読み出し、また処理性能の観点からタスクＢをできるだけ早く実行開始したいので、
【００４８】
【数３】
2018151973.tif 000005
【００４９】
を満たす最小の値ｔを求める。具体的には、下記のように展開される。
【００５０】
【数４】
2018151973.tif 000006
【００５１】
これを解くと、ｔ＝２が得られる。したがって、メモリのライフタイム解析の結果、インターフェイス回路のメモリに対するデータの書き込み及び読み出しは、図８に示すようなタイミングで実行されることとなる。図８は、インターフェイス回路のメモリに対する動作を説明する図である。第０のメモリ要素ではサイクル０からサイクル９までの１０サイクルの間においてデータを保持し、その他のメモリ要素では３サイクルの間においてデータを保持することとなる。したがって、インターフェイス回路は、１回の実行に１０サイクルを要し、インターフェイス回路における最小の実行開始間隔は１０サイクルとなる。
【００５２】
ライフタイムの解析結果を基にインターフェイス回路における最小の実行開始間隔が求まると、インターフェイス回路合成部２０３は、タスクＡの処理を実行する回路モジュール５１０、タスクＢの処理を実行する回路モジュール６１０、及び回路モジュール５１０、６１０を接続するためのインターフェイス回路のそれぞれの実行開始間隔を決定する。本例では、回路モジュール５１０、６１０における最小の実行開始間隔は８サイクルであるが、インターフェイス回路における最小の実行開始間隔は１０サイクルである。そのため、回路モジュール５１０、回路モジュール６１０、及びインターフェイス回路の実行開始間隔は、これらの最小の実行開始間隔の内で最も大きい１０サイクルに決定される。
【００５３】
この場合、タスクＡの処理を実行する回路モジュール、インターフェイス回路、及びタスクＢの処理を実行する回路モジュールの動作タイミングは、図９に示すようになる。図９は、タスクＡ、インターフェイス回路、及びタスクＢの処理タイミングの一例を示す図である。図９において、ＩＦ１２がインターフェイス回路の処理タイミングを示している。タスクＡは１０サイクル毎に新しい入力データを処理し、タスクＢは１０サイクル毎に新しい出力データを出力しているので、タスクＡ及びタスクＢを実行するシステムでは、１０サイクルに１回の割合で新データを処理する性能を有する。
【００５４】
回路モジュール５１０、６１０における最小の実行開始間隔は８サイクルであるのに対し、インターフェイス回路における最小の実行開始間隔は１０サイクルである。このようにインターフェイス回路における最小の実行開始間隔が、回路モジュールにおける最小の実行開始間隔よりも大きい場合、回路モジュールにおける最小の実行開始間隔に基づいて、インターフェイス回路内に別のメモリ素子（記憶素子）を設けることで、インターフェイス回路がボトルネックとなることを回避することができる。
【００５５】
以下に、インターフェイス回路内に別のメモリ素子を設けることで、インターフェイス回路における最小の実行開始間隔を改善する手法について説明する。インターフェイス回路合成部２０３は、インターフェイス回路のメモリに対するアクセスタイミングにおいて、次回のタスクの処理の内で最初に接触するメモリ要素を選択する。本例では、図８に示したように、インターフェイス回路内メモリの第０のメモリ要素が最初に接触するメモリ要素であるので、第０のメモリ要素が選択される。
【００５６】
そして、サイクル２でインターフェイス回路内メモリの第０のメモリ要素からデータを読み出した後、そのデータを別のメモリ素子ｘ０に書き込み、サイクル９では第０のメモリ要素に対する読み出しは行わず、別のメモリ素子ｘ０からデータを読み出すように制御する。このようにすることで、図１０（Ａ）に示すインターフェイス回路におけるアクセスタイミングが、図１０（Ｂ）に示すインターフェイス回路におけるアクセスタイミングに変更され、第０のメモリ要素のライフタイムが１０サイクルから３サイクルに短縮される。
【００５７】
変更後のライフタイムに基づいて、インターフェイス回路における最小の実行開始間隔を求めると３サイクルとなる。なお、メモリ素子ｘ０のライムタイムは考慮しない。したがって、パイプライン動作する場合、図１０（Ｃ）に示すようなアクセスタイミングでのインターフェイス回路へのアクセスが可能となる。ここで、図１０（Ｃ）から明らかなように、メモリ素子ｘ０からは書き込まれた順でデータが読み出されるので、メモリ素子ｘ０としてＦＩＦＯ（First In First Out）バッファを用いることで、メモリ素子ｘ０における各データのライフタイムが重なっても、タスクＡからタスクＢへ正しくデータを受け渡すことが可能である。
【００５８】
図１０（Ｃ）に示すようにインターフェイス回路へアクセスを行う場合、サイクル８までに３個のデータが貯まりサイクル９でデータが読み出され、以降はデータの書き込みと読み出しが交互に繰り返されるので、３段のＦＩＦＯバッファをメモリ素子ｘ０とすれば良く、回路面積の増加も抑制できる。なお、ＦＩＦＯバッファのサイズは、ライトトレースデータ及びリードトレースデータに基づいてインターフェイス回路内メモリのライフタイム解析を行い、解析結果に基づいて決定する。
【００５９】
以上のようにインターフェイス回路に別のメモリ素子ｘ０を設けることで、インターフェイス回路における最小の実行開始間隔を改善することができる。この改善後のインターフェイス回路における最小の実行開始間隔で、インターフェイス回路合成部２０３が、回路モジュール５１０、回路モジュール６１０、及びインターフェイス回路のそれぞれの実行開始間隔を再び決定する。回路モジュール５１０、６１０における最小の実行開始間隔は８サイクルであり、インターフェイス回路における最小の実行開始間隔は３サイクルであるので、回路モジュール５１０、回路モジュール６１０、及びインターフェイス回路の実行開始間隔は、これらの最小の実行開始間隔の内で最も大きい８サイクルに決定される。
【００６０】
この場合、インターフェイス回路における実行開始間隔を８サイクルにすれば良く、インターフェイス回路におけるアクセスタイミングは図１１に示すようになる。図１１に示されるように、ｎ回目の実行と（ｎ＋１）回目の実行とで、インターフェイス回路内メモリの同じメモリ要素に同時にアクセスしていないので、タスクＡ及びタスクＢの処理を依存関係に従ってパイプライン処理できる。また、メモリ素子ｘ０は、ライフタイムの重なりがないことからＦＩＦＯバッファでなくともよく、例えばレジスタであってもよい。
【００６１】
このようにして別のメモリ素子ｘ０を設けることで実行開始間隔を改善したインターフェイス回路のＲＴＬ記述をインターフェイス回路合成部２０３が生成する。そして、そのインターフェイス回路のＲＴＬ記述と回路モジュール５１０、６１０のＲＴＬ記述を論理合成部２０４が論理合成して、図４に示した入力記述４０１、４０２に記載した処理を実行する回路の回路データが生成される。
【００６２】
図１２は、本実施形態におけるインターフェイス回路の構成例を示す図である。図１２には、インターフェイス回路内にメモリとＦＩＦＯバッファを設けた例を示している。インターフェイス回路（ＩＦ１２）１２１０は、タスクＡの処理を実行する回路モジュール１２２０、及びタスクＢの処理を実行する回路モジュール１２３０とそれぞれ接続され、回路モジュール１２２０から回路モジュール１２３０へデータを受け渡す。
【００６３】
回路モジュール１２２０は、インターフェイス回路１２１０からライトレディ信号ＷＲＤＹが入力され、インターフェイス回路１２１０にライトイネーブル信号ＷＥＮ、ライトアドレスＷＡ、及びライトデータＷＤを出力する。回路モジュール１２３０は、インターフェイス回路１２１０からリードレディ信号ＲＲＤＹ及びリードデータＲＤが入力され、インターフェイス回路１２１０にリードイネーブル信号ＲＥＮ及びリードアドレスＲＡを出力する。なお、インターフェイス回路１２１０及び回路モジュール１２３０におけるリードアドレスＲＡ及びリードデータＲＤに係るポートは、タスクＢの処理において同時に読み出すデータ数に応じた数が設けられる。
【００６４】
インターフェイス回路１２１０は、制御回路１２１１、メモリ１２１２、ＦＩＦＯバッファ１２１３、及びマルチプレクサ１２１４、１２１５を有する。制御回路１２１１は、インターフェイス回路１２１０へのデータの書き込みが可能であることをライトレディ信号ＷＲＤＹにより回路モジュール１２２０に通知したり、インターフェイス回路１２１０からのデータの読み出しが可能であることをリードレディ信号ＲＲＤＹにより回路モジュール１２３０に通知したりする。また、制御回路１２１１は、ＦＩＦＯバッファ１２１３、及びマルチプレクサ１２１４、１２１５を制御し、ＦＩＦＯバッファ１２１３に対するデータの書き込み及び読み出しを制御する。ライトレディ信号ＷＲＤＹは、“１”がデータの書き込みが可能であることを示すものとし、リードレディ信号ＲＲＤＹは、“１”がデータの読み出しが可能であることを示すものとする。
【００６５】
メモリ１２１２及びＦＩＦＯバッファ１２１３は、回路モジュール１２２０から回路モジュール１２３０へ受け渡すデータを記憶する。メモリ１２１２は、入力されるライトイネーブル信号ＷＥＮが“１”であるとき、ライトアドレスＷＡによって指定されるメモリ要素にライトデータＷＤを格納する。また、メモリ１２１２は、入力されるリードイネーブル信号ＲＥＮが“１”であるとき、リードアドレスＲＡによって指定されるメモリ要素からデータを読み出して第１のリードデータＲＤとして出力する。
【００６６】
ＦＩＦＯバッファ１２１３は、入力される制御回路１２１１からのＦＩＦＯライトイネーブル信号ＦＷＥＮが“１”であるとき、マルチプレクサ１２１５から出力されるデータを格納する。また、ＦＩＦＯバッファ１２１３は、入力される制御回路１２１１からのＦＩＦＯリードイネーブル信号ＦＲＥＮが“１”であるとき、格納しているデータのうちで最も古いデータを第２のリードデータＲＤとして出力する。
【００６７】
マルチプレクサ１２１４は、制御回路１２１１から出力される制御信号ＳＥＬ２に応じて、メモリ１２１２から出力される第１のリードデータＲＤ又はＦＩＦＯバッファ１２１３から出力される第２のリードデータＲＤの何れかを、回路モジュール１２３０にリードデータＲＤとして出力する。マルチプレクサ１２１４は、制御信号ＳＥＬ２が“０”であれば第１のリードデータＲＤを回路モジュール１２３０にリードデータＲＤとして出力し、制御信号ＳＥＬ２が“１”であれば第２のリードデータＲＤを回路モジュール１２３０にリードデータＲＤとして出力する。ここで、制御回路１２１１は、スケジュール情報に基づいて予め決定された所定のタイミングで、ＦＩＦＯリードイネーブル信号ＦＲＥＮ及び制御信号ＳＥＬ２を“１”にする。
【００６８】
マルチプレクサ１２１５は、制御回路１２１１から出力される制御信号ＳＥＬ１に応じて、メモリ１２１２から出力される第１のリードデータＲＤ又は回路モジュール１２２０から出力されるライトデータＷＤの何れかをＦＩＦＯバッファ１２１３に出力する。マルチプレクサ１２１５は、制御信号ＳＥＬ１が“０”であれば第１のリードデータＲＤをＦＩＦＯバッファ１２１３に出力し、制御信号ＳＥＬ１が“１”であればライトデータＷＤをＦＩＦＯバッファ１２１３に出力する。マルチプレクサ１２１５を設けることで、タスクＢの処理において複数回読み出されない、すなわち１回だけ読み出されるデータであっても、ＦＩＦＯバッファ１２１３に格納することが可能となる。
【００６９】
図１３は、本実施形態における制御回路１２１１の構成例を示す図である。図１３には、制御回路１２１１におけるリードレディ信号ＲＲＤＹを生成する構成を示している。処理の開始を示すスタート信号が組み合わせ回路１３０１に入力されると、ライトレディ信号ＷＲＤＹ用のフリップフロップ１３０２の出力が“１”になる。フリップフロップ１３０２の出力は、ライトレディ信号ＷＲＤＹとして回路モジュール１２２０に出力されるとともに、リードレディ信号生成回路１３０３に出力される。
【００７０】
リードレディ信号生成回路１３０３は、ライトレディ信号ＷＲＤＹが“１”になってから所定のサイクル数が経過した後にリードレディ信号ＲＲＤＹを“１”にするように動作する。リードレディ信号生成回路１３０３は、組み合わせ回路１３０４、フリップフロップ１３０５、及び加算器１３０７を有するカウンタにより、ライトレディ信号ＷＲＤＹが“１”になってからの経過サイクル数をカウントする。また、リードレディ信号生成回路１３０３は、経過サイクル数のカウント値と予め定められるパラメータ値とを比較器１３０６により比較することで所定のサイクル数が経過したか否かを判定する。
【００７１】
そして、リードレディ信号生成回路１３０３は、所定のサイクル数が経過したと判定した場合、リードレディ信号ＲＲＤＹ用のフリップフロップ１３０８の出力を“１”にする。フリップフロップ１３０８の出力は、リードレディ信号ＲＲＤＹとして回路モジュール１２３０に出力される。なお、比較器１３０６での比較に用いるパラメータ値は、スケジュール情報等に基づいて決められる定数値である。制御回路１２１１が出力する他の信号も、同様に制御回路１２１１にカウンタ等を設けて、カウンタや状態を用いて生成すれば良い。
【００７２】
図１４は、本実施形態におけるインターフェイス回路の動作例を示すタイミングチャートである。図１２に示した構成において、回路モジュール１２２０が図４に示したタスクＡの処理を実行し、回路モジュール１２３０が図４に示したタスクＢの処理を実行し、インターフェイス回路１２１０及び回路モジュール１２２０、１２３０の実行開始間隔が８サイクルである場合の動作を示している。
【００７３】
処理の開始を示すスタート信号ＳＴＡＲＴが“１”になったら、制御回路１２１１は、ライトレディ信号ＷＲＤＹを“１”にする。その後、回路モジュール１２２０でタスクＡの処理が実行され、サイクル１にて回路モジュール１２２０から出力されるライトイネーブル信号ＷＥＮが“１”となり、ライトアドレスＷＡにより指定されるメモリ１２１２の第０のメモリ要素に回路モジュール１２２０の出力データが書き込まれる。以降も同様にして、ライトアドレスＷＡにより指定されるメモリ１２１２のメモリ要素に回路モジュール１２２０の出力データが書き込まれていく。
【００７４】
タスクＡの処理開始後（ライトレディ信号ＷＲＤＹが“１”になった後）、タスクＢの処理を開始可能なデータのメモリ１２１２への書き込みが行われるまでの期間（本例では５サイクル）が経過したサイクル２にて、制御回路１２１１は、リードレディ信号ＲＲＤＹを“１”にする。続く、サイクル３にて、“１”のリードレディ信号ＲＲＤＹを受けた回路モジュール１２３０から出力されるリードイネーブル信号ＲＥＮが“１”となり、リードアドレスＲＡ０、ＲＡ１により指定されるメモリ１２１２の第０のメモリ要素、第１のメモリ要素からデータが読み出され、マルチプレクサ１２１４を介して回路モジュール１２３０に出力される。以降も同様にして、リードアドレスＲＡ０、ＲＡ１により指定されるメモリ１２１２のメモリ要素からデータが読み出され、マルチプレクサ１２１４を介して回路モジュール１２３０に出力される。
【００７５】
また、サイクル３においては、制御回路１２１１は、ＦＩＦＯライトイネーブル信号ＦＷＥＮを“１”にする。これにより、メモリ１２１２の第０のメモリ要素から読み出されたデータが、マルチプレクサ１２１５を介してＦＩＦＯバッファ１２１３に書き込まれる。そして、リードアドレスＲＡ１としてメモリ１２１２の第０のメモリ要素が再び指定されるサイクル１０にて、制御回路１２１１は、ＦＩＦＯリードイネーブル信号ＦＲＥＮ及び制御信号ＳＥＬ２をともに“１”にする。これにより、サイクル３においてＦＩＦＯバッファ１２１３に書き込まれたデータが、メモリ１２１２の第０のメモリ要素のデータとして、マルチプレクサ１２１４を介して回路モジュール１２３０に出力される。
【００７６】
インターフェイス回路１２１０及び回路モジュール１２２０、１２３０の実行開始間隔が８サイクルであるので、以降は８サイクル毎に同じように各信号が制御され処理が実行される。
【００７７】
なお、制御回路１２１１は、ライトレディ信号ＷＲＤＹが“１”になってから回路モジュール１２２０（タスクＡ）の実行開始間隔分のサイクルが経過したらライトレディ信号ＷＲＤＹを“０”にする。また、制御回路１２１１は、ライトレディ信号ＷＲＤＹが“０”になってから（インターフェイス回路１２１０の実行開始間隔−回路モジュール１２２０の実行開始間隔）分のサイクルが経過したらライトレディ信号ＷＲＤＹを“１”にする。しかし、本例ではインターフェイス回路１２１０の実行開始間隔と回路モジュール１２２０の実行開始間隔とが同じであるので、ライトレディ信号ＷＲＤＹは“１”のままである。
【００７８】
また、制御回路１２１１は、リードレディ信号ＲＲＤＹが“１”になってから回路モジュール１２３０（タスクＢ）の実行開始間隔分のサイクルが経過したらリードレディ信号ＲＲＤＹを“０”にする。また、制御回路１２１１は、リードレディ信号ＲＲＤＹが“０”になってから（インターフェイス回路１２１０の実行開始間隔−回路モジュール１２３０の実行開始間隔）分のサイクルが経過したらリードレディ信号ＲＲＤＹを“１”にする。しかし、本例ではインターフェイス回路１２１０の実行開始間隔と回路モジュール１２３０の実行開始間隔とが同じであるので、リードレディ信号ＲＲＤＹは“１”のままである。
【００７９】
図１５は、本実施形態におけるインターフェイス回路の他の構成例を示す図である。図１５において、図１２に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。図１２に示したインターフェイス回路１２１０は、マルチプレクサ１２１５により、メモリ１２１２から出力される第１のリードデータＲＤ又は回路モジュール１２２０から出力されるライトデータＷＤの何れかをＦＩＦＯバッファ１２１３に出力するようにしている。しかし、ＦＩＦＯバッファ１２１３に格納するデータが、タスクＢの処理において複数回読み出されるデータである場合には、図１５に示すようにマルチプレクサ１２１５を設けない構成としても良い。
【００８０】
なお、前述した実施形態では、タスクＡの処理を実行する回路モジュールにおける最小の実行開始間隔及びタスクＢの処理を実行する回路モジュールにおける最小の実行開始間隔の内で大きい方の最小の実行開始間隔を、それぞれタスクＡ、タスクＢの処理を実行する回路モジュール及びインターフェイス回路の実行開始間隔としたが、複数のインスタンスを使用することで実行開始間隔を小さくすることも可能である。例えば、実行開始間隔をインターフェイス回路における最小の実行開始間隔である３サイクルにすることも可能である。
【００８１】
図１６（Ａ）に示すように、インターフェイス回路における実行開始間隔が３サイクルである場合、タスクＡの処理によるインターフェイス回路内メモリへのデータの書き込みは、最大で３回分が並列実行されている。タスクＢの処理によるインターフェイス回路へのアクセスも同様である。したがって、図１６（Ｂ）に示すように、タスクＡの処理を実行する回路モジュール１６０１及びタスクＢの処理を実行する回路モジュール１６０３を、それぞれ３つ設けることで３サイクルの実行開始間隔で処理を行うことができる。
【００８２】
図１６（Ｂ）において、１６０１−１、１６０１−２、１６０１−３は、それぞれがタスクＡの処理を実行する回路モジュールであり、１６０２はインターフェイス回路であり、１６０３−１、１６０３−２、１６０３−３は、それぞれがタスクＢの処理を実行する回路モジュールである。タスクＡの処理を実行する回路モジュール１６０１−１、１６０１−２、１６０１−３は、それぞれメモリ１６０４から入力データｉｎを読み出して処理を実行する。
【００８３】
回路モジュール１６０１−１、１６０１−２、１６０１−３は、処理結果として得られる出力データを、インターフェイス回路１６０２を介してタスクＢの処理を実行する回路モジュール１６０３−１、１６０３−２、１６０３−３に供給する。回路モジュール１６０３−１、１６０３−２、１６０３−３は、それぞれ回路モジュール１６０１−１、１６０１−２、１６０１−３から出力された出力データを用いて処理を実行し、処理結果をメモリ１６０５に出力する。
【００８４】
このように構成することでタスクＡの処理を実行する回路モジュールからタスクＢの処理を実行する回路モジュールへのデータの転送に要する時間を短縮することができる。また、データの転送を担うインターフェイス回路のインスタンス数が１であるので、回路面積を小さくできる。
【００８５】
また、タスクＡの処理を実行する回路モジュール、タスクＢの処理を実行する回路モジュール、及びインターフェイス回路の実行開始間隔を８サイクルとした場合、インターフェイス回路におけるアクセスタイミングは、前述した図１１のようになる。さらに、ライフタイムが重ならないメモリ要素を、メモリアドレスの変換を行うことにより共有させるようにしても良い。メモリ要素を共有させた場合のインターフェイス回路におけるアクセスタイミングの一例を図１７に示す。図１７に示す例では、第０のメモリ要素、第１のメモリ要素、及び第２のメモリ要素を共有させており、これによりインターフェイス回路内のメモリの容量を８から５に削減することができる。
【００８６】
前述した説明では、図４に示した入力記述に記載した処理を実行する回路を合成する場合を例に説明したが、以下では、より一般的な場合について説明する。
【００８７】
関数ｓｃｈｅｄｕｌｅ（ｔａｓｋ，ｒｅｓｏｕｒｃｅ，ｔ）の値を、行方向に回路リソースを、列方向に時刻（サイクル）をとって行列表現したときの行列Ｍのｉ行ｊ列の要素の値をＭ［ｉ，ｊ］とする。関数ｓｃｈｅｄｕｌｅ（ｔａｓｋ，ｒｅｓｏｕｒｃｅ，ｔ）は、タスクｔａｓｋにおいて、時刻ｔに回路リソースｒｅｓｏｕｒｃｅが使われるときに１を返し、使われないときに０を返す関数である。例えば、前述したタスクＡのスケジュール情報は、図１８に示すような１９行１１列の行列で表現できる。なお、図１８においては値１のみを記載し、値０については記載を省略している。
【００８８】
タスクの実行開始間隔は、タスクレベルで繰り返し動作するとき、どのくらいの時間間隔でタスクを実行するかを示す指標値である。行列Ｍで表現されるタスクが時刻０で実行開始し、次に時刻ｔで実行開始するとき、各時刻でどの回路リソースが使われるかは、Ｍ＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ，ｔ）を算出することで求められる。関数ｓｈｉｆｔｒｉｇｈｔ（Ｍ，ｔ）は、行列Ｍの要素を右方向にｔ列シフトした行列を返す関数であり、行列Ｍで表現されるタスクが時刻ｔで実行開始した場合の回路リソースの稼働状況を表現する。なお、関数ｓｈｉｆｔｒｉｇｈｔによってシフトして空いた部分の行列要素の値は０とする。つまり、行列Ｍがｉ行ｊ列のとき、
【００８９】
【数５】
2018151973.tif 000007
【００９０】
となる。また、行列Ｍと行列要素を右方向にシフトした行列とを加算するとき、列数が異なる行列を加算することになるが、対応する行列要素がないときはその要素の値を０として加算する。
【００９１】
例えば、前述したタスクＡについて、実行開始間隔を１１にする場合を示すＭ＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ，１１）は図１９（Ａ）に示すようになる。また、実行開始間隔を８にする場合を示すＭ＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ，８）は図１９（Ｂ）に示すようになり、実行開始間隔を７にする場合を示すＭ＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ，７）は図１９（Ｃ）に示すようになる。図１９（Ｃ）においては、要素の値が２になっている箇所があり、２以上の値は回路リソースの割り当てが矛盾しており、実行不可能なスケジューリングであることを意味する。つまり、前述したタスクＡについて、Ｍ＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ，ｔ）の値は、ｔの値が７以下である場合、何れかの行列要素の値が２以上となるため、タスクＡの実行開始間隔の最小値は８となる。
【００９２】
データの出力側の第１のタスクのライトトレースデータをｗｒｉｔｅ（ｘ）＝ｗx（ｘ＝０，１，２，…，ｎ−１、ｗxは時刻を意味する実数）で表す。ｗｒｉｔｅ（ｘ）＝ｗxは、第ｘのメモリ要素（メモリアドレスｘ）に時刻ｗxでデータが書き込まれることを示す。また、第１のタスクの出力データを受けるデータの入力側の第２のタスクのリードトレースデータをｒｅａｄ（ｘ）＝｛ｒx0，ｒx1，…，ｒxk-1｝（ｘ＝０，１，２，…，ｎ−１、ｒxjは時刻を意味する実数）で表す。ｒｅａｄ（ｘ）＝｛ｒx0，ｒx1，…，ｒxk-1｝は、第ｘのメモリ要素（メモリアドレスｘ）から時刻ｒx0，ｒx1，…，ｒxk-1にデータが読み出されることを示す。なお、メモリ要素（メモリアドレス）毎に読み出し回数が異なっていても良い。また、一般性を失うことなく、ｒｅａｄ（ｘ）の右辺｛ｒx0，ｒx1，…，ｒxk-1｝は昇順でソートされているものとする。すなわち、ｒxj＜ｒxj+1  （０≦ｊ≦ｋ−２）とする。最小値であるｒx0をｒxminとし、最大値であるｒxk-1をｒxmaxとする。
【００９３】
第１のタスクの実行開始時刻をｔ1とし、第２のタスクの実行開始時刻をｔ2としたとき、すべてのメモリ要素（メモリアドレス）のデータについて、第１のタスクによって書き込んだ後に第２のタスクによって読み出すという依存関係を満たす必要がある。これは、第１のタスクから第２のタスクへ正しくデータ転送が行われるために必要な条件である。ライトトレースデータ及びリードトレースデータをそれぞれ時刻と解釈して、ｔ1＋ｗｒｉｔｅ（ｘ）＜ｔ2＋ｒｅａｄ（ｘ）（ｘ＝０，１，２，…，ｎ−１）となるような下記のような連立不等式を基にｔの最小値を求める。
【００９４】
【数６】
2018151973.tif 000008
【００９５】
これは、下記のように簡略化できる。
【００９６】
【数７】
2018151973.tif 000009
【００９７】
ここで、ｔ2−ｔ1＝ｔとなる変数ｔを導入すると以下のようになる。
【００９８】
【数８】
2018151973.tif 000010
【００９９】
このときの解となるｔの最小値をｔwriteとする。例えば、前述したタスクＡとタスクＢの場合、値ｔwriteは５となり、便宜的に第０のメモリ要素（メモリアドレス０）に時刻０でデータが書き込まれるとするため、ｔ1＝−３とし、ｔ2＝２とする。また、第ｘのメモリ要素のライフタイムｌｉｆｅｔｉｍｅ（ｘ）は、ｌｉｆｅｔｉｍｅ（ｘ）＝［ｔ1＋ｗx，ｔ2＋ｒxmax］で表される。ｒxmaxは、ｒｅａｄ（ｘ）の最大値、すなわち、ｍａｘ（｛ｒx0，ｒx1，…，ｒxk-1｝）である。ｌｉｆｅｔｉｍｅ（ｘ）＝［ｔ1＋ｗx，ｔ2＋ｒxmax］は、第ｘのメモリ要素（メモリアドレスｘ）のデータは、時刻ｔ1＋ｗxから時刻ｔ2＋ｒxmaxまでの間は保持しておく必要があることを示す。
【０１００】
ここで、第１のタスクの処理を実行する回路モジュールと第２のタスクの処理を実行する回路モジュールとの間のインターフェイス回路において、第ｘのメモリ要素（メモリアドレスｘ）にデータがいつ書き込まれ、いつ読み出されるかを示すトレースデータｔｒａｃｅ（ｉｆ１２，ｘ）は、ｔｒａｃｅ（ｉｆ１２，ｘ）＝［ｔ1＋ｗx，｛ｔ2＋ｒx0，ｔ2＋ｒx1，…，ｔ2＋ｒxk-1｝］とする。つまり、時刻ｔ1で実行開始する第１のタスクのライトトレースデータと、時刻ｔ2で実行開始する第２のタスクのリードトレースデータとから構成される。
【０１０１】
インターフェイス回路の処理が繰り返し実行されるときの実行開始間隔を、１回目の処理の実行開始が時刻０であり、２回目の処理の実行開始が時刻ｔとして求める。このとき、第１のタスクから第２のタスクへ正常にデータの受け渡しが行われるためには、１回目の処理の実行時のすべてのメモリ要素のライフタイムが終了してから２回目の処理の実行時のライフタイムが始まるという順序関係が必要となる。つまり、ｌｉｆｅｔｉｍｅ（ｘ）＝［ｔ1＋ｗx，ｔ2＋ｒxmax］であるから、下記の連立不等式が成立するｔの値の最小値が、インターフェイス回路の実行開始間隔の最小値となる。
【０１０２】
【数９】
2018151973.tif 000011
【０１０３】
第１のタスクから第２のタスクへ受け渡すデータに対応する配列変数をｔｍｐ１２とすると、インターフェイス回路のスケジュール情報は、関数ｓｃｈｅｄｕｌｅ（ｉｆ，ｔｍｐ１２［ｘ］，ｔ）（ｘ＝０，１，２，…，ｎ−１）の値を用いて行列表現できる。なお、ｔｍｐ１２のサイズはｎとする。また、関数ｓｃｈｅｄｕｌｅ（ｉｆ，ｔｍｐ１２［ｘ］，ｔ）は、例えば図２０（Ａ）に示すように、時刻ｔで回路リソースｔｍｐ１２［ｘ］にデータを書き込むときに１を返し、時刻ｔで回路リソースｔｍｐ１２［ｘ］からデータを読み出すときに４を返し、時刻ｔで回路リソースｔｍｐ１２［ｘ］のデータを保持するときに１６を返し、それ以外は０を返すものとする。つまり、メモリ要素のライフタイム期間外では、関数ｓｃｈｅｄｕｌｅ（ｉｆ，ｔｍｐ１２［ｘ］，ｔ）は０を返す。
【０１０４】
第１のタスクの処理を実行する回路モジュールと第２のタスクの処理を実行する回路モジュールとの間のインターフェイス回路のスケジュール情報を、行方向に回路リソースを、列方向に時刻（サイクル）をとって行列表現したときの行列をＭ（ｉｆ１２）とする。また、行列Ｍ（ｉｆ１２）の列数を、ｃ（Ｍ（ｉｆ１２））で表す。例えば、前述したタスクＡ及びタスクＢ間のインターフェイス回路のスケジュール情報は、図２０（Ｂ）に示すようになる。
【０１０５】
インターフェイス回路の処理を繰り返し実行する場合の実行開始間隔は、Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）に基づいて求められる。Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）を計算した結果の行列要素のそれぞれの値が０，１，４，１６の何れかであれば、そのスケジュールは実行可能であるが、その他の値（具体的には、２，５，８，１７，２０）が含まれる場合、そのスケジュールは実行不可能である。
【０１０６】
まず、ｔ＝ｃ（Ｍ（ｉｆ１２））とする。次に、Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）のスケジュールが可能か否かを判定する。その結果、Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）のスケジュールが可能であれば、ｔ＝ｔ−１に更新し、Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）のスケジュールが可能か否かを判定する。Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）のスケジュールが不可能であると判定するまで、ｔの値を１つずつ小さくして繰り返す。Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），ｔ）のスケジュールが不可能であると判定したとき、行列要素の値が２，５，８，１７，２０になった行のメモリ要素（メモリアドレス）を分離するメモリ要素として判定する。
【０１０７】
例えば、前述したタスクＡとタスクＢとの間のインターフェイス回路において、別のメモリ素子を設けずにＭ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），１０）とした場合を図２１（Ａ）に、Ｍ（ｉｆ１２）＋ｓｈｉｆｔｒｉｇｈｔ（Ｍ（ｉｆ１２），９）とした場合を図２１（Ｂ）に示す。したがって、図２１（Ｂ）に示されるように、分離するメモリ要素はｔｍｐ１２［０］となる。以下では、第０のメモリ要素が分離するメモリ要素であるとして説明する。
【０１０８】
別のメモリ素子を設けて、インターフェイス回路の実行開始間隔を改善する手法について説明する。インターフェイス回路のスケジュール情報を示す行列Ｍ（ｉｆ１２）の第０のメモリ要素に対する行ベクトルをＭ（ｉｆ１２）［ｘ０］と表記する。第０のメモリ要素のデータを格納する別のメモリ要素を新たに導入する。
【０１０９】
第０のメモリ要素が、書き込まれる時間をｗｔ０とし、最後に読み出される時刻をｒｔ０とし、最後から２番目に読み出される時刻をｒｔ１とする。そして、インターフェイス回路の動作を以下のように変更する。時刻ｒｔ１で第０のメモリ要素から読み出したデータを、別のメモリ素子ｘ０へ書き込み、第０のメモリ要素のライフタイムは終了したとみなす。すなわち、ｌｉｆｅｔｉｍｅ（ｘ０）＝［ｗｔ０，ｒｔ１］である。また、時刻ｒｔ０で別のメモリ要素ｘ０からデータを読み出して第２のタスクに渡す。このように動作するインターフェイス回路内のメモリのスケジュール情報をＭ２（ｉｆ１２）とし、別のメモリ素子のスケジュール情報をＭ２（ＦＩＦＯ（ｘ０））と示す。元のＭ（ｉｆ１２）［ｘ０］と、改善後のＭ（ｉｆ１２）［ｘ０］、Ｍ２（ＦＩＦＯ（ｘ０））のスケジュール情報を図２２（Ａ）に示す。
【０１１０】
なお、第０のメモリ要素のデータが、第２のタスクによって１回だけ読み出される場合には、インターフェイス回路の動作を、次のように変更する。時刻ｗｔ０で第０のメモリ要素にはデータの書き込みを行わず、別のメモリ要素ｘ０にデータを書き込む。そして、時刻ｒｔ０で、別のメモリ要素ｘ０からデータを読み出して第２のタスクに出力する。このように動作するインターフェイス回路内のメモリのスケジュール情報をＭ２（ｉｆ１２）とし、別のメモリ素子のスケジュール情報をＭ２（ＦＩＦＯ（ｘ０））と示す。元のＭ（ｉｆ１２）［ｘ０］と、改善後のＭ（ｉｆ１２）［ｘ０］、Ｍ２（ＦＩＦＯ（ｘ０））のスケジュール情報を図２２（Ｂ）に示す。
【０１１１】
次に、インターフェイス回路内のメモリと別に設けるメモリ素子のサイズを決定する手法について説明する。以下のように、インターフェイス回路の実行開始間隔を示すＬは１以上の整数として、行ベクトルを加算し行列要素の最大値を求める。これで、求められた最大値を１６で除算して整数の位へ切り上げた値が別のメモリ素子のサイズである。
【０１１２】
【数１０】
2018151973.tif 000012
【０１１３】
前述したタスクＡ及びタスクＢの例において、インターフェイス回路の実行開始間隔を３とすると、図２３に示すｓｕｍ行が行ベクトルの要素の値の加算結果である。したがって、３６を１６で除算して整数の位へ切り上げた値は３となるので、別のメモリ素子のサイズは３となる。
【０１１４】
図２４にインターフェイス回路に設けた別のメモリ素子を制御する制御回路の状態遷移図を示す。図２４は、ｐ＝０として書き出した状態を示しているが、ｐ＝０とｐ＝１６とは対応しており、状態としては、ｐ＝α＋１６、α＋１７、α＋２０、α＋３２（α＝０，１６，３２，…）の状態を繰り返し遷移することとなる。例えば、ｐ＝α＋１６の状態でデータを保持する場合にはその状態を維持し、データの書き込みがあれば１を加えた値の状態に遷移する。また、ｐ＝α＋１７の状態でデータの読み出しがあれば３を加えた値の状態に遷移する。
【０１１５】
本実施形態によれば、インターフェイス回路の最小の実行開始間隔が回路モジュールの最小の実行開始間隔よりも大きい場合、インターフェイス回路内にメモリとは別のメモリ素子（記憶素子）を設けてインターフェイス回路の実行開始間隔を短縮することで、回路面積の増加を抑えつつ処理性能を向上させることができる。また、スケジュール情報からライトトレースデータ及びリードトレースデータを取得し、ライトトレースデータ及びリードトレースデータに基づいてインターフェイス回路を自動合成するので、設計工数を削減できるとともに、適切な回路面積のインターフェイス回路を設計することができる。
【０１１６】
図２５は、本実施形態における情報処理装置を実現可能なコンピュータの機能ブロック図である。図２５に示すようにコンピュータは、ＣＰＵ（Central Processing Unit）２５０１、各プログラムのワークエリアとなる主記憶装置２５０２、各プログラムやデータベースが記録されるハードディスク等の補助記憶装置２５０３、ディスプレイ、キーボード等の入出力装置（Ｉ／Ｏ）２５０４、ネットワークに接続するためのネットワーク接続装置２５０５、及びディスク、磁気テープ等の可搬記憶媒体から記憶内容を読み出す媒体読取装置２５０６を有し、これらが互いにバス２５０８を介して通信可能に接続される。
【０１１７】
構成合成や論理合成に係る機能やモジュール間インターフェイス回路の自動合成（スケジュール情報抽出を含む）に係る機能をソフトウェアによって実現した場合、ＣＰＵ２５０１がプログラムに基づいて、主記憶装置２５０２をワークエリアとして、主記憶装置２５０２又は補助記憶装置２５０３からデータを読み出して実現する。図２５に示したコンピュータでは、媒体読取装置２５０６によりディスク、磁気テープ等の記憶媒体２５０７に記憶されているプログラム、データを読み出し、これを主記憶装置２５０２又は補助記憶装置２５０３にダウンロードする。そして本実施形態による各処理は、ＣＰＵ２５０１がこのプログラムを実行することによりソフトウェア的に実現させることができる。
【０１１８】
また、図２５に示したコンピュータでは、ディスク、磁気テープ等の記憶媒体２５０７を用いてアプリケーションソフトの交換が行われる場合がある。よって、本実施形態は、コンピュータにより使用されたときに、前述した本実施形態における機能をコンピュータに行わせるためのプログラムやコンピュータ読み出し可能な記憶媒体２５０７として構成することもできる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１１９】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
前述した本実施形態に関し、さらに以下の付記を開示する。
【０１２０】
（付記１）
それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成部と、
前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成する回路合成部とを有し、
前記回路合成部は、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設けることを特徴とする情報処理装置。
（付記２）
前記高位合成部は、前記第１の回路モジュールでの処理の流れを示す第１のスケジュール情報及び前記第２の回路モジュールでの処理の流れを示す第２のスケジュール情報を出力し、
前記第１のスケジュール情報から前記データの書き込み情報を抽出し、前記第２のスケジュール情報から前記データの読み出し情報を抽出する情報抽出部を有することを特徴とする付記１記載の情報処理装置。
（付記３）
前記第１のスケジュール情報に基づいて前記第１の回路モジュールの最小の実行開始間隔を求め、前記第２のスケジュール情報に基づいて前記第２の回路モジュールの最小の実行開始間隔を求めることを特徴とする付記２記載の情報処理装置。
（付記４）
前記別の記憶素子は、ＦＩＦＯバッファであることを特徴とする付記１〜３の何れか１項に記載の情報処理装置。
（付記５）
前記回路合成部は、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記メモリが前記データを保持する期間を解析し、解析結果に基づいて前記ＦＩＦＯバッファのサイズを決定することを特徴とする付記４記載の情報処理装置。
（付記６）
前記別の記憶素子は、レジスタであることを特徴とする付記１〜３の何れか１項に記載の情報処理装置。
（付記７）
前記データの書き込み情報及び前記データの読み出し情報が指定する前記メモリのメモリ要素のうち、前記データを保持する期間が重ならないメモリ要素を共有させることを特徴とする付記１〜６の何れか１項に記載の情報処理装置。
（付記８）
前記高位合成部が出力する前記第１の回路モジュール及び前記第２の回路モジュールの回路情報、及び前記回路合成部が出力する前記インターフェイス回路の回路情報を論理合成する論理合成部を有することを特徴とする付記１〜７の何れか１項に記載の情報処理装置。
（付記９）
情報処理装置の高位合成部が、それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成し、
前記情報処理装置の回路合成部が、前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成し、
前記インターフェイス回路の合成では、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設けることを特徴とする情報処理方法。
（付記１０）
それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成ステップと、
前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成する回路合成ステップとをコンピュータに実行させ、
前記回路合成ステップにて、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設ける処理をコンピュータに実行させるためのプログラム。
（付記１１）
それぞれの入力記述に基づいて、第１のタスクの処理を実行する第１の回路モジュール、及び前記第１の回路モジュールから出力されるデータを受けて第２のタスクの処理を実行する第２の回路モジュールを高位合成する高位合成ステップと、
前記データが入出力されるメモリを有して回路モジュール間の前記データの転送を担うインターフェイス回路を、前記インターフェイス回路に対する前記第１の回路モジュールによる前記データの書き込み情報及び前記第２の回路モジュールによる前記データの読み出し情報に基づいて合成する回路合成ステップとをコンピュータに実行させ、
前記回路合成ステップにて、前記データの書き込み情報及び前記データの読み出し情報に基づいて前記インターフェイス回路の最小の実行開始間隔を求め、求めた最小の実行開始間隔が、前記第１の回路モジュール及び前記第２の回路モジュールのそれぞれの最小の実行開始間隔よりも大きい場合、前記第１の回路モジュール及び前記第２の回路モジュールの最小の実行開始間隔に基づいて、前記インターフェイス回路内に前記メモリに入出力されるデータを記憶する、前記メモリとは別の記憶素子を設ける処理をコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１２１】
２０１  高位合成部
２０２  スケジュール情報抽出部
２０３  インターフェイス回路合成部
２０４  論理合成部
２１１  入力記述
２１２  ＲＴＬ記述
２１３  ログ情報
２１４  ライトトレースデータ
２１５  リードトレースデータ
２１６  ＲＴＬ記述
２１７  回路データ
１２１０  インターフェイス回路
１２１１  制御回路
１２１２  メモリ
１２１３  ＦＩＦＯバッファ（記憶素子）
１２１４、１２１５  マルチプレクサ
１２２０、１２３０  回路モジュール
【図１】
2018151973.tif 000013
【図２】
2018151973.tif 000014
【図３】
2018151973.tif 000015
【図４】
2018151973.tif 000016
【図５】
2018151973.tif 000017
【図６】
2018151973.tif 000018
【図７】
2018151973.tif 000019
【図８】
2018151973.tif 000020
【図９】
2018151973.tif 000021
【図１０】
2018151973.tif 000022
【図１１】
2018151973.tif 000023
【図１２】
2018151973.tif 000024
【図１３】
2018151973.tif 000025
【図１４】
2018151973.tif 000026
【図１５】
2018151973.tif 000027
【図１６】
2018151973.tif 000028
【図１７】
2018151973.tif 000029
【図１８】
2018151973.tif 000030
【図１９】
2018151973.tif 000031
【図２０】
2018151973.tif 000032
【図２１】
2018151973.tif 000033
【図２２】
2018151973.tif 000034
【図２３】
2018151973.tif 000035
【図２４】
2018151973.tif 000036
【図２５】
2018151973.tif 000037
【図２６】
2018151973.tif 000038