(57)【要約】  バインディングデータ取得部（２２０）は、設計対象回路の機能モジュールとして複数のメモリモジュールが記述されるバインディングデータ（１２４）を取得する。メモリモジュール選択部（２０００）は、設計対象回路に関する制約条件に基づいて、バインディングデータ（１２４）に記述される複数のメモリモジュールの中から、設計対象回路外の外部メモリとして実装される外部メモリモジュールを選択する。
2016162970.tif 000002
【特許請求の範囲】
【請求項１】
設計対象回路の機能モジュールとして複数のメモリモジュールが記述されるバインディングデータを取得するバインディングデータ取得部と、
前記設計対象回路に関する制約条件に基づいて、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールを選択するメモリモジュール選択部とを有する回路設計支援装置。
【請求項２】
前記メモリモジュール選択部は、
回路規模の制約条件及びレイテンシの制約条件の少なくともいずれかに基づいて、前記複数のメモリモジュールの中から、前記外部メモリモジュールを選択する請求項１に記載の回路設計支援装置。
【請求項３】
前記バインディングデータ取得部は、
メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミングとリードアクセスのタイミングが記述されるバインディングデータを取得し、
前記メモリモジュール選択部は
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、前記複数のメモリモジュールの中から、前記外部メモリモジュールの候補である外部メモリモジュール候補を抽出し、
抽出した外部メモリモジュール候補の中から、前記制約条件に基づいて、前記外部メモリモジュールを選択する請求項１に記載の回路設計支援装置。
【請求項４】
前記バインディングデータ取得部は、
前記設計対象回路の機能モジュールとして、前記複数のメモリモジュールが記述されるとともに、演算を行う複数の演算ブロックが記述されるバインディングデータを取得し、
前記メモリモジュール選択部は、
複数の外部メモリモジュール候補を抽出した場合に、
外部メモリモジュール候補の組合せを複数生成し、
外部メモリモジュール候補の組合せごとに、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合の回路規模及びレイテンシを、前記バインディングデータに基づき算出し、
算出した回路規模及びレイテンシに基づき、外部メモリモジュール候補の複数の組合せの中から、いずれかの組合せを選択し、
選択した組合せに含まれる外部メモリモジュール候補を、前記外部メモリモジュールとして選択する請求項３に記載の回路設計支援装置。
【請求項５】
前記メモリモジュール選択部は、
外部メモリモジュール候補の複数の組合せの中から、算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せを選択する請求項４に記載の回路設計支援装置。
【請求項６】
前記メモリモジュール選択部は、
算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せの中から、算出された回路規模が最小である組合せを選択する請求項５に記載の回路設計支援装置。
【請求項７】
前記メモリモジュール選択部は、
算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せの中から、算出されたレイテンシが最小である組合せを選択する請求項５に記載の回路設計支援装置。
【請求項８】
前記メモリモジュール選択部は、
外部メモリモジュール候補の組合せごとに、
前記バインディングデータに記述される全てのメモリモジュールが前記設計対象回路内の内部メモリとして実装される場合の前記設計対象回路の回路規模と、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合の前記外部メモリの回路規模と、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合に前記設計対象回路が前記外部メモリと通信するために用いる通信インターフェイスの回路規模とを算出し、
前記設計対象回路の回路規模から前記外部メモリの回路規模を減算し、減算値に前記通信インターフェイスの回路規模を加算して得られる回路規模が回路規模の制約条件に合致するか否かを判断し、
前記バインディングデータに記述される全てのメモリモジュールが前記設計対象回路内の内部メモリとして実装される場合に発生する第１のレイテンシと、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合に前記設計対象回路が前記外部メモリからデータを取得するために要する第２のレイテンシとを算出し、
前記第１のレイテンシに前記第２のレイテンシを加算して得られるレイテンシが、レイテンシの制約条件に合致するか否かを判断する請求項５に記載の回路設計支援装置。
【請求項９】
前記メモリモジュール選択部は、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、メモリモジュールへのライトアクセスが終了してから、当該ライトアクセスでメモリモジュールに書き込まれたデータへの最後のリードアクセスが開始するまでの時間であるライトデータ保持時間を算出し、
算出したライトデータ保持時間が閾値以上であるメモリモジュールを前記外部メモリモジュール候補として抽出する請求項３に記載の回路設計支援装置。
【請求項１０】
前記バインディングデータ取得部は、
前記設計対象回路の機能モジュールとして、前記複数のメモリモジュールが記述されるとともに、演算を行う複数の演算ブロックが記述され、更に、メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミング及びライトアクセスを行うライトアクセス演算ブロックと、メモリモジュールへのリードアクセスのタイミング及びリードアクセスを行うリードアクセス演算ブロックとが記述されるバインディングデータを取得し、
前記メモリモジュール選択部は、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミング及びライトアクセス演算ブロックとリードアクセスのタイミング及びリードアクセス演算ブロックとを解析して、リードアクセス演算ブロックが演算に用いる被演算データのライトアクセスを行うライトアクセス演算ブロックが動作を開始してから前記リードアクセス演算ブロックが前記被演算データのリードアクセスを開始できるまでの時間であるリードアクセス待ち時間を算出し、
算出したリードアクセス待ち時間が閾値以上であるメモリモジュールを前記外部メモリモジュール候補として抽出する請求項３に記載の回路設計支援装置。
【請求項１１】
前記回路設計支援装置は、更に、
前記バインディングデータに記述される前記複数のメモリモジュールが記述されるＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）データを取得するＣＤＦＧデータ取得部と、
前記ＣＤＦＧデータ内の前記外部メモリモジュールに対応するメモリモジュールの記述を、前記設計対象回路が前記外部メモリと通信するために用いる通信インターフェイスのモジュールの記述に置換する外部メモリインターフェイス生成部とを有する請求項１に記載の回路設計支援装置。
【請求項１２】
コンピュータが、設計対象回路の機能モジュールとして複数のメモリモジュールが記述されるバインディングデータを取得し、
前記コンピュータが、前記設計対象回路に関する制約条件に基づいて、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールを選択する回路設計支援方法。
【請求項１３】
設計対象回路の機能モジュールとして複数のメモリモジュールが記述されるバインディングデータを取得するバインディングデータ取得処理と、
前記設計対象回路に関する制約条件に基づいて、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールを選択するメモリモジュール選択処理とをコンピュータに実行させる回路設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計を支援する技術に関する。
【背景技術】
【０００２】
従来より、半導体集積回路（以下、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）ともいう）の設計に関して、ハードウェア記述言語を用いて、レジスタ（フリップフロップ）間の組み合わせ回路の動作を記述したＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）を生成する技術が存在する。
近年では集積回路の回路規模が増大しており、ＲＴＬの生成に多大な時間を要するようになっていた。
そこで、ＲＴＬよりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語を用いて、自動的にＲＴＬを生成する技術が提唱されている。
そして、高級言語からＲＴＬを生成するツールが高位合成ツールとして市販されている。【０００３】
動作記述では、動作の仕様のみが記述され、実装についての仕様は記述されない。
しかし、高位合成における一般的な制約から、動作記述は、記述方法によっては、動作記述の結果として得られる実装に影響を与える場合がある。【０００４】
例えば、動作記述中の配列変数は、高位合成において、一般的にメモリやレジスタなどの記憶素子の機能モジュール（以下、記憶素子の機能モジュールをメモリモジュールという）へ割り当てられる。
配列変数は大きなサイズで記述されることが多く、このため、高位合成においても配列変数は大きなサイズのメモリモジュールへ割り当てられる。
高位合成における大きなサイズのメモリモジュールへの割り当てによって、サイズの大きなメモリ（ハードウェア）が割り当てられ、設計対象のＬＳＩの面積が増大する可能性がある。
通常、このような大きなメモリは、設計対象のＬＳＩの外部にある外部メモリにて実現する。
しかし、今の高位合成ツールでは、特定のメモリモジュールを、自動的に外部メモリへ割り当てることができない。
このため、特定のメモリモジュールを外部メモリで実現するアーキテクチャとなるようにするためには、設計者自身が動作記述を修正し、ＬＳＩと外部メモリとの通信インターフェイスを記述しなければならない。【０００５】
例えば特許文献１では、設計者が作成した動作記述に、設計するハードウェアの構成情報（外部メモリの有無）、マッピング情報（動作記述中の配列変数に対する、外部メモリへの割り当て指定）を与えることで、設計者が動作記述を修正せずとも、自動的にＬＳＩと外部メモリとの通信インターフェイスを自動生成する方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２０４３４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１では、動作記述中の配列変数をどのメモリに割り当てるかについては、設計者自身が選択する必要がある。
つまり、特許文献１の方法では、外部メモリを割り当てるメモリモジュールを設計者自身が選択しなければならず、効率的でないという課題がある。【０００８】
本発明は上記のような課題を解決することを主な目的としており、回路設計手順を効率化できる構成を得ることを主な目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る回路設計支援装置は、
設計対象回路の機能モジュールとして複数のメモリモジュールが記述されるバインディングデータを取得するバインディングデータ取得部と、
前記設計対象回路に関する制約条件に基づいて、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールを選択するメモリモジュール選択部とを有する。
【発明の効果】
【００１０】
本発明によれば、回路設計支援装置が、外部メモリとして実装すべきメモリモジュールを選択するため、設計者が外部メモリとして実装すべきメモリモジュールを検討する必要がなく、回路設計手順を効率化できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における高位合成システムの機能構成例を示す図である。
【図２】実施の形態１における回路設計支援装置の機能構成例を示す図である。
【図３】実施の形態１における回路設計支援装置の動作例を示すフローチャート図。
【図４】実施の形態１における制約情報の例を示す図である。
【図５】実施の形態１におけるバインディングデータの例を示す図である。
【図６】実施の形態１におけるライトアクセスタイミングとリードアクセスタイミングの例を示す図である。
【図７】実施の形態１におけるライトデータ保持サイクル時間に基づく外部メモリモジュール候補の判定例を示す図である。
【図８】実施の形態１におけるリードアクセス待ち時間に基づく外部メモリモジュール候補の判定処理の対象となるメモリモジュールの例を示す図である。
【図９】実施の形態１におけるリードアクセス待ち時間に基づく外部メモリモジュール候補の判定例を示す図である。
【図１０】実施の形態１におけるリードアクセス待ち時間に基づく外部メモリモジュール候補の判定例を示す図である。
【図１１】実施の形態１における外部メモリモジュール候補の例を示す図である。
【図１２】実施の形態１における外部メモリモジュールの選択手順の例を示す図である。
【図１３】実施の形態１における回路設計支援装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、実施の形態１における高位合成システム１００の機能構成例を示す。
実施の形態１における高位合成システム１００の機能構成を、図１に基づいて説明する。
但し、高位合成システム１００の構成は図１と異なる構成であっても構わない。
例えば、高位合成装置１１０および回路設計支援装置２００を１台の装置で構成しても構わない。
【００１３】
高位合成システム１００は、半導体集積回路等の回路設計のために、高位合成を行うシステムである。
以下では、高位合成システム１００において高位合成が行われる、設計対象の回路を設計対象回路という。
高位合成は、Ｃ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語を用いた設計対象回路の動作を記述した動作記述から、レジスタ転送レベル（ＲＴＬ）で設計対象回路の動作を記述したＲＴＬ記述を生成する技術である。
【００１４】
高位合成システム１００は、高位合成を実行する高位合成装置１１０と、高位合成の実行を支援する回路設計支援装置２００とを備える。
【００１５】
高位合成装置１１０は、ＣＤＦＧ生成部１１１と、スケジューリング部１１２と、バインディング部１１３と、ＲＴＬ記述生成部１１４と、高位合成装置記憶部１２０とを備える。
【００１６】
ＣＤＦＧ生成部１１１は、設計対象回路の動作記述を含む動作記述ファイル１２１からＣＤＦＧ（Ｃｏｎｔｒｏｌ  Ｄａｔａ  Ｆｌｏｗ  Ｇｒａｐｈ）を含むＣＤＦＧデータ１２２を生成する。
ＣＤＦＧは設計対象回路が行う複数の演算の演算順序を表す。
ＣＤＦＧは、コントロールフローグラフ（ＣＦＧ）とデータフローグラフ（ＤＦＧ）とを含む。
【００１７】
スケジューリング部１１２は、ＣＤＦＧデータ１２２に基づいて、スケジューリングデータ１２３を生成する。
スケジューリングデータ１２３は、ＣＤＦＧに含まれる各演算の実行時間帯を示すデータである。
スケジューリングデータ１２３を生成する方法は、従来の高位合成におけるスケジューリング方法と同様でよい。
【００１８】
バインディング部１１３は、ＣＤＦＧデータ１２２とスケジューリングデータ１２３とに基づいて、バインディングデータ１２４を生成する。
バインディングデータ１２４には、設計対象回路の機能モジュールが記述される。
バインディングデータ１２４には、機能モジュールとして、ＣＤＦＧに含まれる各演算に割り当てられる演算モジュール（演算リソース）が複数記述される。
演算モジュールは、演算器およびレジスタなどである。
また、バインディングデータ１２４には、演算モジュールが利用する記憶素子のモジュールであるメモリモジュールが複数記述される。
バインディングデータ１２４の詳細は後述する。
なお、バインディングデータ１２４を生成する方法は、従来の高位合成におけるバインディング方法と同様でよい。
【００１９】
ＲＴＬ記述生成部１１４は、ＣＤＦＧデータ１２２とスケジューリングデータ１２３とバインディングデータ１２４とに基づいて、ＲＴＬ記述を示すＲＴＬ記述ファイル１２５を生成する。
ＲＴＬ記述ファイル１２５を生成する方法は、従来の高位合成におけるＲＴＬ記述生成方法と同様でよい。
【００２０】
高位合成装置記憶部１２０は、高位合成装置１１０が使用、生成または入出力するデータを記憶する。
具体的には、高位合成装置記憶部１２０は、動作記述ファイル１２１、ＣＤＦＧデータ１２２、スケジューリングデータ１２３、バインディングデータ１２４およびＲＴＬ記述ファイル１２５を記憶する。
【００２１】
図２は、実施の形態１における回路設計支援装置２００の機能構成例を示す。
実施の形態１における回路設計支援装置２００の機能構成を、図２に基づいて説明する。
但し、回路設計支援装置２００の機能構成は図２と異なる機能構成であっても構わない。
【００２２】
回路設計支援装置２００は、制約情報入力受付部２１０と、バインディングデータ取得部２２０と、外部メモリ判定部２３０と、外部メモリ選択部２４０と、ＣＤＦＧデータ取得部２８０と、外部メモリインターフェイス生成部２５０と、支援データ提供部２６０と、支援装置記憶部２７０とを備える。
【００２３】
制約情報入力受付部２１０は、設計対象回路に関する制約条件等が定義される制約情報２７１を受け付ける。
制約情報２７１の入力は、回路設計支援装置２００を使用するユーザーが実施する。
【００２４】
バインディングデータ取得部２２０は、高位合成装置１１０からバインディングデータ１２４を取得する。
なお、バインディングデータ取得部２２０により行われる処理が、バインディングデータ取得処理の例に相当する。
【００２５】
外部メモリ判定部２３０は、制約情報２７１と、バインディングデータ１２４より、メモリモジュールのリードサイクル時間及びライトサイクル時間を解析する。
そして、外部メモリ判定部２３０は、設計対象回路外の外部メモリとして実装すべきメモリモジュールである外部メモリモジュールの候補となる外部メモリモジュール候補を抽出する。
そして、外部メモリ判定部２３０は、抽出した外部メモリモジュール候補が示される外部メモリ判定結果２７２を生成する。
【００２６】
外部メモリ選択部２４０は、制約情報２７１と、バインディングデータ１２４と、外部メモリ判定結果２７２より、制約条件を満たすメモリアーキテクチャを探索する。
すなわち、外部メモリ選択部２４０は、外部メモリモジュール候補の中から、制約条件を満たすメモリモジュールを外部メモリモジュールとして選択する。
より具体的には、外部メモリ選択部２４０は、回路規模の制約条件及びレイテンシの制約条件の少なくともいずれかに基づいて、外部メモリモジュール候補の中から、外部メモリモジュールを選択する。
そして、外部メモリ選択部２４０は、選択した外部メモリモジュールが示される外部メモリ選択結果２７３を生成する。
【００２７】
外部メモリ判定部２３０と外部メモリ選択部２４０は、メモリモジュール選択部２０００を構成する。
また、外部メモリ判定部２３０と外部メモリ選択部２４０により行われる処理が、メモリモジュール選択処理の例に相当する。
【００２８】
ＣＤＦＧデータ取得部２８０は、高位合成装置１１０からＣＤＦＧデータ１２２を取得する。
【００２９】
外部メモリインターフェイス生成部２５０は、外部メモリ選択結果２７３より、設計対象回路が外部メモリと通信するために用いる通信インターフェイスのモジュールの記述を生成する。
そして、外部メモリインターフェイス生成部２５０は、ＣＤＦＧデータ１２２内の外部メモリモジュールに対応するメモリモジュールの記述を、通信インターフェイスのモジュールの記述に置き換えることによって、変換後のＣＤＦＧデータ２７４を生成する。
【００３０】
支援データ提供部２６０は、変換後のＣＤＦＧデータ２７４を高位合成装置１１０に提供する。
【００３１】
高位合成装置１１０のスケジューリング部１１２は、提供された変換後のＣＤＦＧデータ２７４に基づいて、スケジューリングデータ１２３を再生成する。
そして、バインディング部１１３およびＲＴＬ記述生成部１１４は、再生成されたスケジューリングデータ１２３と変換後のＣＤＦＧデータ２７４とに基づいて、バインディングデータ１２４およびＲＴＬ記述ファイル１２５を再生成する。
【００３２】
＊＊＊動作の説明＊＊＊
図３は、実施の形態１における回路設計支援装置２００が実行する回路設計支援処理のフローチャートである。
実施の形態１における回路設計支援装置２００が実行する回路設計支援処理を、図３に基づいて説明する。
但し、回路設計支援処理は図３と異なる処理手順により実現されてもよい。
なお、図３に示す回路設計支援処理が、本願の回路設計支援方法及び回路設計支援プログラムの例に相当する。
【００３３】
Ｓ１１０において、制約情報入力受付部２１０は、回路設計支援装置２００を動作させるために必要な制約情報２７１をユーザーから受け付け、取得（受信）した制約情報２７１を支援装置記憶部２７０に格納する。
制約情報には、以下の５つ値が定義されている。
（ａ）外部メモリ判定におけるサイクル時間閾値Ｔｔｈ
（ｂ）外部メモリ選択におけるレイテンシ制約Ｌｍａｘ
（ｃ）外部メモリ選択における回路規模制約Ｓｍａｘ
（ｄ）外部メモリ選択における最適化方針情報Ｐ
（ｅ）外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏ
【００３４】
まず、（ａ）外部メモリ判定におけるサイクル時間閾値Ｔｔｈについて説明する。
外部メモリ判定におけるサイクル時間閾値Ｔｔｈは、外部メモリモジュール候補を抽出するための基準となる閾値である。
外部メモリ判定におけるサイクル時間閾値Ｔｔｈは、Ｓ１３２とＳ１３４で使用される。
以下、外部メモリ判定におけるサイクル時間閾値Ｔｔｈは、単にサイクル時間閾値Ｔｔｈともいう。
【００３５】
次に、（ｂ）外部メモリ選択におけるレイテンシ制約Ｌｍａｘについて説明する。
外部メモリ選択におけるレイテンシ制約Ｌｍａｘとは、外部メモリモジュール候補から外部メモリモジュールを選択する際に参照される、レイテンシについての制約条件である。
外部メモリ選択部２４０は、外部メモリ選択におけるレイテンシ制約Ｌｍａｘを満たすメモリアーキテクチャを探索する。
外部メモリ選択におけるレイテンシ制約Ｌｍａｘは、Ｓ１４０で使用される。
以下、外部メモリ選択におけるレイテンシ制約Ｌｍａｘは、単にレイテンシ制約Ｌｍａｘともいう。
【００３６】
次に、（ｃ）外部メモリ選択における回路規模制約Ｓｍａｘについて説明する。
外部メモリ選択における回路規模制約Ｓｍａｘとは、外部メモリモジュール候補から外部メモリモジュールを選択する際に参照される、回路規模についての制約条件である。
外部メモリ選択部２４０は、外部メモリ選択における回路規模制約Ｓｍａｘを満たすメモリアーキテクチャを探索する。
外部メモリ選択における回路規模制約Ｓｍａｘは、Ｓ１４０で使用される。
以下、外部メモリ選択における回路規模制約Ｓｍａｘは、単に回路規模制約Ｓｍａｘともいう。
【００３７】
次に、（ｄ）外部メモリ選択における最適化方針情報Ｐについて説明する。
外部メモリ選択における最適化方針情報Ｐは、外部メモリモジュール候補から外部メモリモジュールを選択する際に参照される、最適化の指針である。
外部メモリ選択における最適化方針情報Ｐとして、回路規模最適化と、レイテンシ最適化とが選択される。
外部メモリ選択における最適化方針情報Ｐが回路規模最適化の場合は、外部メモリ選択部２４０は、外部メモリ選択におけるレイテンシ制約Ｌｍａｘと外部メモリ選択における回路規模制約Ｓｍａｘとを満たしつつ、回路規模が最小となるメモリアーキテクチャを探索する。
外部メモリ選択における最適化方針情報Ｐがレイテンシ最適化の場合は、外部メモリ選択部２４０は、外部メモリ選択におけるレイテンシ制約Ｌｍａｘと外部メモリ選択における回路規模制約Ｓｍａｘとを満たしつつ、レイテンシが最小となるメモリアーキテクチャを探索する。
外部メモリ選択における最適化方針情報Ｐは、Ｓ１４０で使用される。
以下、外部メモリ選択における最適化方針情報Ｐは、単に最適化方針情報Ｐともいう。
【００３８】
次に、（ｅ）外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏについて説明する。
外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏは、Ｓ１３５で選択された外部メモリモジュールが、どのようなハードウェアに実装されるのかを示す情報である。
例えば、外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏには、外部メモリの種類（ＤＲＡＭなのか、ＤＤＲ−ＳＤＲＡＭなのか、ＱＤＲ−ＳＤＲＡＭなのか等）等が示される。
外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏは、Ｓ１４０とＳ１６０で使用される。
以下、外部メモリ選択および外部メモリインターフェイス生成における外部メモリ構成情報Ｍｉｎｆｏは、単に外部メモリ構成情報Ｍｉｎｆｏともいう。
【００３９】
制約情報入力受付部２１０は、例えば、図４に示すような制約情報２７１を取得する。
Ｓ１１０の後、処理はＳ１２０に進む。
【００４０】
Ｓ１２０において、回路設計支援装置２００のバインディングデータ取得部２２０は、高位合成装置１１０のバインディング部１１３によって生成されたバインディングデータ１２４を高位合成装置１１０から取得（受信）する。
Ｓ１２０の後、処理はＳ１３０に進む。
【００４１】
図５は、実施の形態１におけるバインディングデータ１２４の一例を示す図である。
実施の形態１は、図５に示すバインディングデータに基づいて説明する。
【００４２】
バインディングデータは、図５に示すように、設計対象回路に含まれる複数の機能モジュールが記述されている。
図５のｆｕｎｃと記載された四角形は、設計対象回路の演算モジュールである。
演算モジュールは、前述のように、演算を行う演算器、レジスタを表す。
図５のｍｅｍと記載された四角形は、設計対象回路のメモリモジュールである。
メモリモジュールは、前述のように、記憶素子を表す。
図５の矢印はデータの流れを表している。
バインディングデータでは、各演算モジュールがどのメモリモジュールにリードアクセスを行うか（どのメモリからデータを読み出すか）、どのメモリモジュールにライトアクセスを行うか（演算結果をどのメモリに格納するか）が示される。
また、図５では図示されていないが、バインディングデータには、各メモリモジュールで発生するリードアクセスのタイミング（サイクル時間）とリードアクセスを行う演算ブロック（リードアクセス演算ブロック）、ライトアクセスのタイミング（サイクル時間）とライトアクセスを行う演算ブロック（ライトアクセス演算ブロックという）とが記述されている。
【００４３】
本実施の形態では、バインディングデータ取得部２２０は、図５のバインディングデータ１２４を取得する。
図３に戻り、Ｓ１３０から説明を続ける。
【００４４】
Ｓ１３０において、外部メモリ判定部２３０は、バインディングデータ１２４に記述されている複数のメモリモジュールから、任意のメモリモジュールを選択する。
以下、Ｓ１３０で選択されたメモリモジュールを、判定対象メモリモジュールという。
Ｓ１３０の後、処理はＳ１３１に進む。
【００４５】
Ｓ１３１において、外部メモリ判定部２３０は、判定対象メモリモジュールのライフサイクルを解析し、以下２つのサイクル時間を取得する。
（１）判定対象メモリモジュールについて、ライトアクセスが終了した時のサイクル時間
（２）判定対象メモリモジュールについて、ライトデータに対する最後のリードアクセスが開始した時のサイクル時間
次に、外部メモリ判定部２３０は、「（１）のサイクル時間−（２）のサイクル時間」を計算し、判定対象メモリモジュールのライトデータ保持サイクル時間Ｔｓを算出する。
ライトデータ保持サイクル時間Ｔｓは、上記の式に示されるように、メモリモジュールへのライトアクセスが終了してから、当該ライトアクセスでメモリモジュールに書き込まれたライトデータへの最後のリードアクセスが開始するまでの時間である。
Ｓ１３１の後、処理はＳ１３２に進む。
【００４６】
Ｓ１３２において、外部メモリ判定部２３０は、Ｓ１３１で求めた判定対象メモリモジュールのライトデータ保持サイクル時間Ｔｓと、制約情報２７１中の外部メモリ判定におけるサイクル時間閾値Ｔｔｈとを比較し、判定対象メモリモジュールを外部メモリモジュール候補とするか否かを判定する。
Ｔｓ≧Ｔｔｈの場合、外部メモリ判定部２３０は、判定対象メモリモジュールを外部メモリモジュール候補とすると判定し（ＹＥＳ）、処理はＳ１３５に進む。
Ｔｓ＜Ｔｔｈの場合、外部メモリ判定部２３０は、判定対象メモリモジュールを外部メモリモジュール候補とせず（ＮＯ）、処理はＳ１３３に進む。
【００４７】
図６は、実施の形態１における各メモリモジュールのライフタイムサイクル解析結果の一例を示す。
図７は、実施の形態１における各メモリモジュールのライフタイムサイクル解析結果に基づいた外部メモリモジュール候補の抽出判定結果の一例を示す。
Ｓ１３１及びＳ１３２の具体例を、図６および図７に基づいて説明する。
【００４８】
図６は、バインディングデータ１２４中の各メモリモジュールについて、ライトアクセスサイクル時間、及びリードアクセスサイクル時間を解析した結果を示す。
この解析結果より、外部メモリ判定部２３０は、メモリモジュールごとに、ライトアクセスが終了した時のサイクル時間と、ライトデータに対する最後のリードアクセスが開始した時のサイクル時間とを取得する。
【００４９】
図７は、外部メモリ判定部２３０が図６より取得した、メモリモジュールごとに、ライトアクセスが終了した時のサイクル時間と、ライトデータに対する最後のリードアクセスが開始した時のサイクル時間とを示す。
また、外部メモリ判定部２３０は、メモリモジュールごとに、ライトデータの保持サイクル時間Ｔｓを算出し、ＴｓとＴｔｈとの比較により各メモリモジュールを外部メモリモジュール候補とするか否かを判定する。
図４に示すようにＴｔｈは１５００であり、図７に示すようにｍｅｍ１のＴｓは９０００であり、ｍｅｍ４のＴｓは２２００である。
このように、ｍｅｍ１とｍｅｍ４は、Ｔｓ＞Ｔｔｈであるため、図７の例では、ｍｅｍ１とｍｅｍ４が外部メモリモジュール候補として抽出される。
図５のバインディングデータ及び図６のサイクル時間では、ｆｕｎｃ１の計算結果を外部メモリに蓄え、ｆｕｎｃ７が動作開始する際に外部メモリからデータを取得するようにすれば、ｍｅｍ１は内部メモリとして設計対象回路の内部に置かなくてもよい。
このため、ｍｅｍ１は、外部メモリモジュール候補として抽出される。
同様の考えにより、ｍｅｍ４も内部メモリとして設計対象回路の内部に置かなくてもよいため、外部メモリモジュール候補として抽出される。
ただし、ｍｅｍ１については、ｆｕｎｃ２でも利用するため、別途小容量の内部メモリを実装する必要がある。これについては後述する。
図３に戻り、Ｓ１３３から説明を続ける。
【００５０】
Ｓ１３２の結果、外部メモリモジュール候補では無いと判定された判定対象メモリモジュールに対し、外部メモリ判定部２３０は、「判定対象メモリモジュールを必要とする演算モジュールを動作開始させるために必要なデータが、閾値Ｔｔｈ以内のサイクル時間で揃うか」という判定基準を適用する。
つまり、外部メモリ判定部２３０は、上記の判定基準に基づき、判定対象メモリモジュールを外部メモリモジュール候補とするか否かを判定する。
【００５１】
Ｓ１３３では、外部メモリ判定部２３０は、判定対象メモリモジュールを解析して以下の２つの情報を取得する。
（１）判定対象メモリモジュールを必要とする機能の１イタレーションに必要な判定対象メモリモジュール格納データ
（２）上記の（１）のデータが揃うまでに必要なサイクル時間Ｔｇ
上記の２つの情報の取得後、処理はＳ１３４に進む。
【００５２】
Ｓ１３４において、外部メモリ判定部２３０は、Ｓ１３３で求めたサイクル時間Ｔｇと、制約情報２７１中の外部メモリ判定時におけるサイクル時間閾値Ｔｔｈとを比較し、判定対象メモリモジュールを外部メモリモジュール候補として抽出するか否かを判定する。
Ｔｇ≧Ｔｔｈの場合、判定対象メモリモジュールは外部メモリモジュール候補と判定し（ＹＥＳ）、処理はＳ１３５に進む。
Ｔｇ＜Ｔｔｈの場合、判定対象メモリモジュールは内部メモリとして実装する内部メモリモジュールの候補と判定し（ＮＯ）、処理はＳ１３６に進む。
【００５３】
図８は、Ｓ１３３の外部メモリ判定の対象となるメモリモジュールの例を示す図である。
図８において、ｍｅｍ１及びｍｅｍ４以外のメモリモジュール（矢印が差しているメモリモジュール）がＳ１３３の外部メモリ判定の対象となるメモリモジュールである。
【００５４】
図９は、ｍｅｍ５を対象とする外部メモリモジュール候補の判定例を示す。
図１０は、ｍｅｍ３を対象とする外部メモリモジュール候補の判定例を示す。
Ｓ１３１及びＳ１３２の具体例を、図８、図９および図１０に基づいて説明する。
【００５５】
Ｓ１３１及びＳ１３２において、ｍｅｍ１およびｍｅｍ４については、既に外部メモリモジュール候補として確定している。
従って、図８に示すように、ｍｅｍ２、ｍｅｍ３、ｍｅｍ５、ｍｅｍ６が、Ｓ１３３およびＳ１３４における外部メモリ判定の対象となる。
【００５６】
図９は、ｍｅｍ５を対象に外部メモリモジュール候補とするか否かの判定を実施した結果を示す。
まず、外部メモリ判定部２３０は、ｍｅｍ５へのリードアクセスを抽出する。
抽出した結果、ｍｅｍ５がループ内でリードされているのであれば、外部メモリ判定部２３０は、ループの１回目のイタレーションで、ｍｅｍ５のどの要素がアクセスされているかを解析する。
図９の例の場合、ループの１回目では、ｉ＝０であるため、ｍｅｍ５［ｉ］及びｍｅｍ５［Ｎ−ｉ］より、ｍｅｍ５［０］とｍｅｍ５［Ｎ］とがアクセスされている。
即ち、ｍｅｍ５［０］とｍｅｍ５［Ｎ］のデータが揃えば、ｆｕｎｃ６は動作開始可能である。
次に、外部メモリ判定部２３０は、ｍｅｍ５へのライトアクセスを抽出する。
そして、外部メモリ判定部２３０は、ｍｅｍ５［０］とｍｅｍ５［Ｎ］が、どのタイミングで揃うかを算出する。
図９の例の場合、ｍｅｍ５［Ｎ］へのライトアクセスが発生するまで、即ち、ｆｕｎｃ５の動作が終了するまで、ｆｕｎｃ６は動作を開始することができない。
図９の例では、ｆｕｎｃ５が動作を開始してから、ｆｕｎｃ６が動作を開始できるようになるまで（ｍｅｍ５［Ｎ］へのライトアクセスが発生するまで）のサイクル時間Ｔｇは２０００である。
このため、「Ｔｇ≧Ｔｔｈ」となり、ｍｅｍ５は外部メモリモジュール候補と判定される。
図５のバインディングデータ及び図６のサイクル時間では、ｆｕｎｃ５の計算結果を外部メモリに蓄え、ｆｕｎｃ６が動作開始する際に外部メモリからデータを取得するようにすれば、ｍｅｍ５は内部メモリとして設計対象回路の内部に置かなくてもよい。
したがって、ｍｅｍ５は外部メモリモジュール候補として抽出される。
【００５７】
図１０は、ｍｅｍ３を対象に外部メモリモジュール候補とするか否かの判定をした結果を示す。
まず、外部メモリ判定部２３０は、ｍｅｍ３へのリードアクセスを抽出する。
抽出した結果、ｍｅｍ３がループ内でリードされているのであれば、外部メモリ判定部２３０は、ループの１回目のイタレーションで、ｍｅｍ３のどの要素がアクセスされているかを解析する。
図１０の例の場合、ループの１回目では、ｉ＝０であるため、ｍｅｍ３［ｉ］、ｍｅｍ３［ｉ＋１］及びｍｅｍ３［ｉ＋２］より、ｍｅｍ３［０］とｍｅｍ３［１］とｍｅｍ３［２］とがアクセスされている。
即ち、ｍｅｍ３［０］とｍｅｍ３［１］とｍｅｍ３［２］のデータが揃えば、ｆｕｎｃ５は動作開始可能である。
次に、外部メモリ判定部２３０は、ｍｅｍ３へのライトアクセスを抽出する。
そして、外部メモリ判定部２３０は、ｍｅｍ３［０］とｍｅｍ３［１］とｍｅｍ３［２］が、どのタイミングで揃うかを算出する。
図１０の例の場合、ｍｅｍ３［２］へのライトアクセスが発生するまでｆｕｎｃ５は動作開始できない。
しかし、ｆｕｎｃ３の動作終了を待たずとも、ｍｅｍ３［２］にはデータが書き込まれるので、ｆｕｎｃ５を動作開始することができる。
図１０の例では、ｆｕｎｃ３が動作を開始してから、ｆｕｎｃ５が動作を開始できるようになるまで（ｍｅｍ３［２］へのライトアクセスが発生するまで）のサイクル時間Ｔｇは１００である。
このため、「Ｔｇ＜Ｔｔｈ」となり、ｍｅｍ３は内部メモリで実現すると判定される。
【００５８】
このように、外部メモリ判定部２３０は、メモリモジュールごとに、バインディングデータ１２４に記述されるライトアクセスのタイミング及びライトアクセスを行う演算ブロック（ライトアクセス演算ブロック）とリードアクセスのタイミング及びリードアクセスを行う演算ブロック（リードアクセス演算ブロック）とを解析する。
また、外部メモリ判定部２３０は、リードアクセス演算ブロック（例えば、図９のｆｕｎｃ６）が演算に用いる被演算データのライトアクセスを行うライトアクセス演算ブロック（例えば、図９のｆｕｎｃ５）が動作を開始してからリードアクセス演算ブロック（例えば、図９のｆｕｎｃ６）が被演算データのリードアクセスを開始できるまでの時間であるリードアクセス待ち時間（例えば、図９のサイクル時間Ｔｇ）を算出する。
そして、外部メモリ判定部２３０は、算出したリードアクセス待ち時間が閾値以上であるメモリモジュール（例えば、図９のｍｅｍ５）を外部メモリモジュール候補として抽出する。
【００５９】
図３に戻り、Ｓ１３５から説明を続ける。
【００６０】
Ｓ１３５において、外部メモリ判定部２３０は、Ｓ１３２とＳ１３４の結果、Ｓ１３１で選択された判定対象メモリモジュールが外部メモリモジュール候補と判定された場合に、判定対象メモリモジュールの情報を外部メモリ判定結果２７２に書き込む。
Ｓ１３５の後、処理はＳ１３６に進む。
【００６１】
Ｓ１３６において、外部メモリ判定部２３０は、バインディングデータ１２４中の全てのメモリモジュールを解析済みかどうかをチェックする。
解析していないメモリモジュールがある場合（ＮＯ）は、処理はＳ１３０に戻る。
全てのメモリモジュールが解析済みである場合（ＹＥＳ）は、処理はＳ１４０に進む。
【００６２】
Ｓ１４０において、外部メモリ選択部２４０は、制約情報２７１に基づいて、外部メモリ判定結果２７２中の外部メモリモジュール候補の中から、外部メモリモジュールを選択する。
Ｓ１４０の後、処理はＳ１５０に進む。
【００６３】
図１１は、実施の形態１における外部メモリ判定結果２７２の例を示す。
図１２は、実施の形態１におけるメモリアーキテクチャ探索結果の例を示す。
Ｓ１４０の具体例を、図１１および図１２に基づいて説明する。
【００６４】
図１１は、外部メモリ判定部２３０でバインディングデータ１２４に記述されているメモリモジュールについて外部メモリモジュール判定を実行した結果、外部メモリモジュール候補と判定されたメモリモジュールの一覧を示す。
図１１の例の場合、ｍｅｍ１、ｍｅｍ４、ｍｅｍ５、ｍｅｍ６が外部メモリモジュール候補である。
従って、外部メモリ選択部２４０は、ｍｅｍ１、ｍｅｍ４、ｍｅｍ５、ｍｅｍ６の中から、どのメモリモジュールを外部メモリモジュールとするかを探索する。
【００６５】
一般的に、ＬＳＩ内部のメモリを外部メモリにすることによって、ＬＳＩからメモリを省くことができるため、ＬＳＩの回路規模は小さくなる。
しかし、外部メモリからデータを取得するために必要なサイクル時間は、ＬＳＩ内部のメモリからデータを取得する場合と比べると長くなる。
即ち、ＬＳＩ内部メモリの外部メモリ化には、回路規模と処理レイテンシのトレードオフが伴う。
従って、図１１に示す外部メモリモジュール候補と判定されたメモリを、全て外部メモリとして実現することが最適解であるとは限らない。
そのため、図１１に示す外部メモリモジュール候補と判定されたメモリモジュールのうち、どのメモリモジュールを外部メモリとして実現するべきか探索する必要がある。
【００６６】
本実施の形態では、外部メモリ選択部２４０は、複数の外部メモリモジュール候補の全ての組合せを生成する。
そして、外部メモリモジュール候補の組合せごとに、組合せに含まれる外部メモリモジュール候補が外部メモリとして実装される場合の回路規模及びレイテンシを、バインディングデータ１２４に基づき算出する。
更に、外部メモリ選択部２４０は、算出した回路規模及びレイテンシに基づき、外部メモリモジュール候補の複数の組合せの中から、いずれかの組合せを選択し、選択した組合せに含まれる外部メモリモジュール候補を、外部メモリモジュールとして選択する。
より具体的には、外部メモリ選択部２４０は、外部メモリモジュール候補の複数の組合せの中から、算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せを選択する。
算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せが複数存在する場合は、外部メモリ選択部２４０は、算出された回路規模が最小である組合せを選択する。
もしくは、外部メモリ選択部２４０は、算出されたレイテンシが最小である組合せを選択するようにしてもよい。
【００６７】
図１２は、外部メモリ選択部２４０が算出した、外部メモリモジュール候補の組合せごとの回路規模とレイテンシを示す。
図１２のＬＳＩ全体の回路規模とは、複数のメモリモジュールの中から、任意のメモリモジュールを外部メモリとして実現した場合の設計対象回路の回路規模と周辺回路の回路規模とを合わせた回路規模である。
また、図１２のＬＳＩ全体の処理レイテンシとは、複数のメモリモジュールの中から、任意のメモリモジュールを外部メモリとして実現した場合の設計対象回路で発生する処理レイテンシである。
【００６８】
ＬＳＩ全体の回路規模は、具体的には、以下で計算される。
ＬＳＩ全体の回路規模
＝  全メモリモジュールを内部メモリとした場合の設計対象回路の回路規模
−  外部メモリ化するメモリモジュールの回路規模
＋  外部メモリとの通信インターフェイスの回路規模
つまり、外部メモリ選択部２４０は、これら３つの回路規模を算出し、３つの回路規模を用いた上記の計算を行う。
１つ目の「全メモリモジュールを内部メモリとした場合の設計対象回路の回路規模」は、バインディングデータ１２４に記述される全てのメモリモジュールが設計対象回路内の内部メモリとして実装される場合の設計対象回路の回路規模である。
２つ目の「外部メモリ化するメモリモジュールの回路規模」は、組合せに含まれる外部メモリモジュール候補が外部メモリとして実装される場合の外部メモリの回路規模である。
３つ目の「外部メモリとの通信インターフェイスの回路規模」は、組合せに含まれる外部メモリモジュール候補が外部メモリとして実装される場合に設計対象回路が外部メモリと通信するために用いる通信インターフェイスの回路規模である。
【００６９】
ＬＳＩ全体の処理レイテンシは、具体的には、以下で計算される。
ＬＳＩ全体の処理レイテンシ
＝  全メモリモジュールを内部メモリとした場合の設計対象回路の処理レイテンシ
＋  外部メモリからデータを取得する際の処理レイテンシ
つまり、外部メモリ選択部２４０は、これら２つの処理レイテンシを算出し、２つの処理レイテンシを用いた上記の計算を行う。
１つ目の「全メモリモジュールを内部メモリとした場合の設計対象回路の処理レイテンシ」は、バインディングデータに記述される全てのメモリモジュールが設計対象回路内の内部メモリとして実装される場合に発生するレイテンシであり、第１のレイテンシに相当する。
また、２つ目の「外部メモリからデータを取得する際の処理レイテンシ」は、組合せに含まれる外部メモリモジュール候補が外部メモリとして実装される場合に設計対象回路が外部メモリからデータを取得するために要するレイテンシであり、第２のレイテンシに相当する。
【００７０】
なお、外部メモリ選択部２４０は、外部メモリからデータを取得するために必要なサイクル時間を、外部メモリ構成情報Ｍｉｎｆｏを元に計算する。
図４の例の場合、外部メモリはＤＤＲ＿ＳＤＲＡＭであるため、これに従って外部メモリからデータを取得するために必要なサイクル時間を計算する。
【００７１】
外部メモリ選択部２４０は、制約情報２７１中のレイテンシ制約Ｌｍａｘ、回路規模制約Ｓｍａｘ、最適化方針情報Ｐを元に、図１２の結果の中から、条件を満たす組合せを選択する。
図４の例の場合、最適化方針情報Ｐは回路規模優先となっているため、レイテンシ制約Ｌｍａｘ、回路規模制約Ｓｍａｘを満たし、且つ、回路規模が最小となるメモリアーキテクチャ（外部メモリモジュールの組合せ）を選択する。
そして、外部メモリ選択部２４０は、選択結果が記述される外部メモリ選択結果２７３を生成する。
図３に戻り、Ｓ１５０から説明を続ける。
【００７２】
Ｓ１５０において、回路設計支援装置２００のＣＤＦＧデータ取得部２８０は、高位合成装置１１０のＣＤＦＧ生成部１１１によって生成されたＣＤＦＧデータ１２２を高位合成装置１１０から取得（受信）する。
Ｓ１５０の後、処理はＳ１６０に進む。
【００７３】
Ｓ１６０において、回路設計支援装置２００の外部メモリインターフェイス生成部２５０は、外部メモリ選択結果２７３に基づいて外部メモリインターフェイスを自動生成する。
外部メモリインターフェイス生成部２５０は、ＣＤＦＧデータ１２２中の外部メモリモジュールとして選択されたメモリモジュールの記述を、自動生成された外部インターフェイスの記述に変換して、変換後のＣＤＦＧデータ２７４を生成する。
例えば、外部メモリインターフェイス生成部２５０は、特許文献１に開示されているインターフェイス生成装置などを用いて、変換後のＣＤＦＧデータ２７４を生成する。
Ｓ１６０の後、処理はＳ１７０に進む。
【００７４】
Ｓ１７０において、支援データ提供部２６０は、変換後のＣＤＦＧデータ２７４を高位合成装置１１０に提供（送信）する。
そして、高位合成装置１１０のスケジューリング部１１２、バインディング部１１３およびＲＴＬ記述生成部１１４は、提供された変換後のＣＤＦＧデータ２７４に基づいて、スケジューリングデータ１２３、バインディングデータ１２４およびＲＴＬ記述ファイル１２５を生成する。
【００７５】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態によれば、回路設計支援装置が、動作記述中の記憶素子（メモリ）の機能モジュールであるメモリモジュールの中から、外部メモリとして実装すべきメモリモジュールを抽出し、また、メモリモジュールを外部メモリとして実装する際に必要な回路を高位合成で自動生成できるという効果がある。
【００７６】
＊＊＊まとめ＊＊＊
以上、本実施の形態では、
動作記述を入力として高位合成（動作合成）処理を行いＲＴＬ記述を出力する回路設計支援装置であって、
前記高位合成された結果であるバインディング結果から、各メモリモジュールのライトデータの保持サイクル時間と、各メモリモジュールを必要とする各機能を動作開始させるために必要なデータが揃うまでのサイクル時間を算出し、各メモリモジュールを外部メモリ化すべきかを判定する外部メモリ判定部と、
外部メモリモジュール候補となったメモリモジュールの中から、制約条件を満たすメモリアーキテクチャを探索する外部メモリ選択部と、
外部メモリ選択部の選択結果から、外部メモリとの通信インターフェイスを自動生成する外部メモリインターフェイス生成部を備える回路設計支援装置を説明した。
【００７７】
また、本実施の形態では、
動作記述を入力として高位合成（動作合成）処理を行いＲＴＬ記述を出力する回路設計支援方法であって、
前記高位合成された結果であるバインディング結果から、各メモリモジュールのライトデータの保持サイクル時間と、各メモリモジュールを必要とする各機能を動作開始させるために必要なデータが揃うまでのサイクル時間を算出し、各メモリモジュールを外部メモリ化すべきかを判定する外部メモリ判定工程と、
外部メモリモジュール候補となったメモリモジュールの中から、制約条件を満たすメモリアーキテクチャを探索する外部メモリ選択工程と、
外部メモリ選択工程の選択結果から、外部メモリとの通信インターフェイスを自動生成する外部メモリインターフェイス生成工程を含む回路設計支援方法を説明した。
【００７８】
＊＊＊ハードウェア構成の説明＊＊＊
【００７９】
最後に、回路設計支援装置２００のハードウェア構成例を図１３を参照して説明する。
回路設計支援装置２００はコンピュータである。
回路設計支援装置２００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インターフェイス９０５、ディスプレイインターフェイス９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インターフェイス９０５は、入力装置９０７に接続されている。
ディスプレイインターフェイス９０６は、ディスプレイ９０８に接続されている。
【００８０】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インターフェイス９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インターフェイス９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインターフェイス９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインターフェイス９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００８１】
補助記憶装置９０２には、図２に示す制約情報入力受付部２１０、バインディングデータ取得部２２０、外部メモリ判定部２３０、外部メモリ選択部２４０、外部メモリインターフェイス生成部２５０、支援データ提供部２６０、ＣＤＦＧデータ取得部２８０（以下、これらをまとめて「部」と表記する）の機能を実現するプログラムが記憶されている。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図１３では、１つのプロセッサ９０１が図示されているが、回路設計支援装置２００が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００８２】
「部」を「サーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
「回路」及び「サーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【符号の説明】
【００８３】
１００  高位合成システム、１１０  高位合成装置、１１１  ＣＤＦＧ生成部、１１２  スケジューリング部、１１３  バインディング部、１１４  ＲＴＬ記述生成部、１２０  高位合成装置記憶部、１２１  動作記述ファイル、１２２  ＣＤＦＧデータ、１２３  スケジューリングデータ、１２４  バインディングデータ、１２５  ＲＴＬ記述ファイル、２００  回路設計支援装置、２１０  制約情報入力受付部、２２０  バインディングデータ取得部、２３０  外部メモリ判定部、２４０  外部メモリ選択部、２５０  外部メモリインターフェイス生成部、２６０  支援データ提供部、２７０  支援装置記憶部、２７１  制約情報、２７２  外部メモリ判定結果、２７３  外部メモリ選択結果、２７４  変換後のＣＤＦＧデータ、２８０  ＣＤＦＧデータ取得部、２０００  メモリモジュール選択部。
【図１】
2016162970.tif 000003
【図２】
2016162970.tif 000004
【図３】
2016162970.tif 000005
【図４】
2016162970.tif 000006
【図５】
2016162970.tif 000007
【図６】
2016162970.tif 000008
【図７】
2016162970.tif 000009
【図８】
2016162970.tif 000010
【図９】
2016162970.tif 000011
【図１０】
2016162970.tif 000012
【図１１】
2016162970.tif 000013
【図１２】
2016162970.tif 000014
【図１３】
2016162970.tif 000015
【手続補正書】
【提出日】平成29年2月7日(2017.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
設計対象回路の機能モジュールとして複数のメモリモジュールが記述され、メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミングとリードアクセスのタイミングが記述されるバインディングデータを取得するバインディングデータ取得部と、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、前記複数のメモリモジュールの中から、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールの候補である外部メモリモジュール候補を抽出し、抽出した外部メモリモジュール候補の中から、前記設計対象回路に関する制約条件に基づいて、前記外部メモリモジュールを選択するメモリモジュール選択部とを有する回路設計支援装置。
【請求項２】
前記バインディングデータ取得部は、
前記設計対象回路の機能モジュールとして、前記複数のメモリモジュールが記述されるとともに、演算を行う複数の演算ブロックが記述されるバインディングデータを取得し、
前記メモリモジュール選択部は、
複数の外部メモリモジュール候補を抽出した場合に、
外部メモリモジュール候補の組合せを複数生成し、
外部メモリモジュール候補の組合せごとに、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合の回路規模及びレイテンシを、前記バインディングデータに基づき算出し、
算出した回路規模及びレイテンシに基づき、外部メモリモジュール候補の複数の組合せの中から、いずれかの組合せを選択し、
選択した組合せに含まれる外部メモリモジュール候補を、前記外部メモリモジュールとして選択する請求項１に記載の回路設計支援装置。
【請求項３】
前記メモリモジュール選択部は、
外部メモリモジュール候補の複数の組合せの中から、算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せを選択する請求項２に記載の回路設計支援装置。
【請求項４】
前記メモリモジュール選択部は、
算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せの中から、算出された回路規模が最小である組合せを選択する請求項３に記載の回路設計支援装置。
【請求項５】
前記メモリモジュール選択部は、
算出された回路規模が回路規模の制約条件に合致し、算出されたレイテンシがレイテンシの制約条件に合致する組合せの中から、算出されたレイテンシが最小である組合せを選択する請求項３に記載の回路設計支援装置。
【請求項６】
前記メモリモジュール選択部は、
外部メモリモジュール候補の組合せごとに、
前記バインディングデータに記述される全てのメモリモジュールが前記設計対象回路内の内部メモリとして実装される場合の前記設計対象回路の回路規模と、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合の前記外部メモリの回路規模と、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合に前記設計対象回路が前記外部メモリと通信するために用いる通信インターフェイスの回路規模とを算出し、
前記設計対象回路の回路規模から前記外部メモリの回路規模を減算し、減算値に前記通信インターフェイスの回路規模を加算して得られる回路規模が回路規模の制約条件に合致するか否かを判断し、
前記バインディングデータに記述される全てのメモリモジュールが前記設計対象回路内の内部メモリとして実装される場合に発生する第１のレイテンシと、組合せに含まれる外部メモリモジュール候補が前記外部メモリとして実装される場合に前記設計対象回路が前記外部メモリからデータを取得するために要する第２のレイテンシとを算出し、
前記第１のレイテンシに前記第２のレイテンシを加算して得られるレイテンシが、レイテンシの制約条件に合致するか否かを判断する請求項３に記載の回路設計支援装置。
【請求項７】
前記メモリモジュール選択部は、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、メモリモジュールへのライトアクセスが終了してから、当該ライトアクセスでメモリモジュールに書き込まれたデータへの最後のリードアクセスが開始するまでの時間であるライトデータ保持時間を算出し、
算出したライトデータ保持時間が閾値以上であるメモリモジュールを前記外部メモリモジュール候補として抽出する請求項１に記載の回路設計支援装置。
【請求項８】
前記バインディングデータ取得部は、
前記設計対象回路の機能モジュールとして、前記複数のメモリモジュールが記述されるとともに、演算を行う複数の演算ブロックが記述され、更に、メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミング及びライトアクセスを行うライトアクセス演算ブロックと、メモリモジュールへのリードアクセスのタイミング及びリードアクセスを行うリードアクセス演算ブロックとが記述されるバインディングデータを取得し、
前記メモリモジュール選択部は、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミング及びライトアクセス演算ブロックとリードアクセスのタイミング及びリードアクセス演算ブロックとを解析して、リードアクセス演算ブロックが演算に用いる被演算データのライトアクセスを行うライトアクセス演算ブロックが動作を開始してから前記リードアクセス演算ブロックが前記被演算データのリードアクセスを開始できるまでの時間であるリードアクセス待ち時間を算出し、
算出したリードアクセス待ち時間が閾値以上であるメモリモジュールを前記外部メモリモジュール候補として抽出する請求項１に記載の回路設計支援装置。
【請求項９】
コンピュータが、設計対象回路の機能モジュールとして複数のメモリモジュールが記述され、メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミングとリードアクセスのタイミングが記述されるバインディングデータを取得し、
前記コンピュータが、メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、前記複数のメモリモジュールの中から、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールの候補である外部メモリモジュール候補を抽出し、抽出した外部メモリモジュール候補の中から、前記設計対象回路に関する制約条件に基づいて、前記外部メモリモジュールを選択する回路設計支援方法。
【請求項１０】
設計対象回路の機能モジュールとして複数のメモリモジュールが記述され、メモリモジュールごとに、メモリモジュールへのライトアクセスのタイミングとリードアクセスのタイミングが記述されるバインディングデータを取得するバインディングデータ取得処理と、
メモリモジュールごとに、前記バインディングデータに記述されるライトアクセスのタイミングとリードアクセスのタイミングとを解析して、前記複数のメモリモジュールの中から、前記バインディングデータに記述される前記複数のメモリモジュールの中から、前記設計対象回路外の外部メモリとして実装すべき外部メモリモジュールの候補である外部メモリモジュール候補を抽出し、抽出した外部メモリモジュール候補の中から、前記設計対象回路に関する制約条件に基づいて、前記外部メモリモジュールを選択するメモリモジュール選択処理とをコンピュータに実行させる回路設計支援プログラム。
【国際調査報告】
2016162970.tif 000016
2016162970.tif 000017