(57)【要約】  動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置を提供する。生成部（２１）は、動作レベル記述と制約条件とに基づいて、中間レベル記述を生成する。特定部（２２）は、中間レベル記述のループ構造を特定する。判別部（２３）は、特定されたループ構造について、シミュレーション済みであるか否かを判別する。計測部（２４）は、判別部（２３）がシミュレーション済みではないと判別した場合、個別実行サイクル数と総実行サイクル数とを求める。記憶部（２５）は、個別実行サイクル数と、特定されたループ構造とを対応付けて記憶する。計算部（２６）は、判別部（２３）がシミュレーション済みであると判別した場合、記憶部（２５）に記憶されている個別実行サイクル数に基づいて、総実行サイクル数を求める。
2011007640.tif 000002
【特許請求の範囲】
【請求項１】
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
ことを特徴とする動作合成装置。
【請求項２】
前記判別手段は、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする請求項１に記載の動作合成装置。
【請求項３】
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする請求項１または２に記載の動作合成装置。
【請求項４】
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする請求項１または２に記載の動作合成装置。
【請求項５】
動作合成装置が実行する動作合成方法であって、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップで生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
前記計測ステップで求められた個別実行サイクル数と、前記特定ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
ことを特徴とする動作合成方法。
【請求項６】
前記判別ステップでは、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする請求項５に記載の動作合成方法。
【請求項７】
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする請求項５または６に記載の動作合成方法。
【請求項８】
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする請求項５または６に記載の動作合成方法。
【請求項９】
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するための記録媒体に関する。
【背景技術】
【０００２】
所望のシステムの回路機能の全てを１つのチップで実現するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）が知られている。このようなＬＳＩは、システムＬＳＩあるいはＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）と呼ばれる。近年、半導体製造技術の向上に伴って、システムＬＳＩに集積できるゲート数が飛躍的に増加し、システムＬＳＩの処理能力も飛躍的に向上している。このため、システムＬＳＩは、画像処理、暗号化処理、復号処理、および、フィルタ処理など多彩な処理に用いられている。【０００３】
一般に、システムＬＳＩの設計にあたっては、ＬＳＩ設計を自動的に行う、もしくは、ＬＳＩ設計を支援する、ＬＳＩ設計自動化・支援技術が採用される。このＬＳＩ設計自動化・支援技術を採用した設計のうち、代表的なものとして、ＥＤＡ（Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ）ツールを利用したトップダウン設計があげられる。このトップダウン設計の各工程は、上流工程から順に、システム設計、機能設計、論理設計、レイアウト設計と大別することができる。以下に、トップダウン設計について具体的に説明する。【０００４】
トップダウン設計は、まず、システム仕様の作成工程から始まる。この工程では、例えば、設計者が、所定の記述言語を用いて、システムの動作を記述する。この工程は、動作レベル設計フェーズと呼ばれる。動作レベル設計フェーズで作成される記述は、動作レベル回路記述、動作レベル記述、もしくは、動作記述と呼ばれる。動作レベル記述の作成には、Ｃ、Ｃ＋＋、あるいは、ＪＡＶＡ（登録商標）などの言語が用いられる。なお、ＳｙｓｔｅｍＣやＳｐｅｃＣ等のように、ＣやＣ＋＋に、回路表現に便利な機能が付加された言語が用いられることもある。【０００５】
次に、動作合成フェーズにおいて、動作レベル設計フェーズにおいて生成された動作レベル記述が、ＲＴレベル（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述に変換される。ＲＴレベル記述は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）もしくはプログラム言語により表現される。【０００６】
そして、論理合成フェーズにおいて、動作合成フェーズにおいて生成されたＲＴレベル記述が、ゲートレベル記述（ゲートレベル論理回路：ネットリスト）に自動で変換される。このようにして生成されたネットリストをもとに、レイアウト設計が行われ、ついで、チップ設計が行われる。【０００７】
動作合成フェーズにおいて実行される動作合成では、与えられた合成制約を満たすように、動作レベル記述から合成回路が生成される。すなわち、合成制約が変更されると、同じ動作レベル記述から異なる合成回路が生成される。従って、利用目的に適合した合成回路が得られるように、動作合成装置に適当な合成制約を与える必要がある。しかしながら、所望の合成回路を得るための最適な合成制約があらかじめ分かっている場合はまれである。従って、合成制約を適宜変更しながら動作合成を行い、得られた複数の合成回路から最適な合成回路を探索する手法が有効である。このように所望の合成回路を探索することを、アーキテクチャ探索という。【０００８】
アーキテクチャ探索を実行するためには、多くの合成回路の性能を評価する必要がある。ここで、合成回路の性能としては、動作周波数や回路面積の他、合成回路に所定の入力が与えられたときに、その入力に対する処理を完了するために必要となる実行サイクル数（実行クロック数）があげられる。ところで、合成回路の性能は、クロックサイクル毎の動作を指定する中間レベル記述を用いたシミュレーションにより評価することができる。例えば、特許文献１には、合成回路の性能を評価するシミュレーションを実行するシミュレーション装置が開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００３−６７４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献１に記載されているような、合成回路の性能を評価するシミュレーションは、多くの時間を要する。従って、多くの合成回路に対してシミュレーションを実行して性能を評価する必要があるアーキテクチャ探索には、多大な時間がかかってしまっていた。このため、合成回路の性能を速やかに取得し、短時間でアーキテクチャ探索をすることが可能な動作合成システムが望まれている。【００１１】
本発明は、上記問題に鑑みてなされたものであり、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するためのプログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の第１の観点に係る動作合成装置は、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
ことを特徴とする。【００１３】
上記目的を達成するために、本発明の第２の観点に係る動作合成方法は、
動作合成装置が実行する動作合成方法であって、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップでより生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
前記計測ステップで求められた個別実行サイクル数と、前記特定ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
ことを特徴とする。【００１４】
上記目的を達成するために、本発明の第３の観点に係る記録媒体は、
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００１５】
本発明によれば、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンピュータ上で実現するためのプログラムを記録した記録媒体を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る動作合成装置の構成を示すブロック図である。
【図２】本発明の実施形態に係る動作合成装置の動作の概略を説明するためのブロック図である。
【図３】本発明の実施形態に係る動作合成装置が備える機能を説明するためのブロック図である。
【図４】本発明の実施形態に係る動作合成装置が実行するアーキテクチャ探索処理を示すフローチャートである。
【図５】動作レベル記述を示す図である。
【図６】クロックサイクル毎の動作を指定する中間レベル記述を示す第１の図である。
【図７】特定されたループ構造を示す第１の図である。
【図８】シミュレーションモデルを示す図である。
【図９】入力端子に供給されるデータを示す図である。
【図１０】ループ構造と実行サイクル数との対応関係を示す第１の図である。
【図１１】クロックサイクル毎の動作を指定する中間レベル記述を示す第２の図である。
【図１２】特定されたループ構造を示す第２の図である。
【図１３】ループ構造と実行サイクル数との対応関係を示す第２の図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態に係る動作合成装置について図面を参照して説明する。ここで、動作合成装置は、動作レベルで半導体集積回路等の回路を表現する記述（以下「動作レベル記述」という。）を、合成制約に基づいて動作合成することにより、クロックサイクル毎の動作を指定する中間レベル記述を生成する。ここで、クロックサイクル毎の動作を指定する中間レベル記述により表される回路を、合成回路という。なお、動作合成装置は、クロックサイクル毎の動作を指定する中間レベル記述を、さらにＲＴレベル（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述に変換する。また、動作合成装置は、生成された複数の合成回路から最適な合成回路を探索するアーキテクチャ探索が可能な装置であるものとする。従って、動作合成装置は、生成された合成回路の性能を取得することが可能なシミュレータを備える。そして、動作合成装置は、合成制約を適宜切り替えながら、所望の合成回路を探索する。なお、合成制約の切り替え、ならびに、所望の合成回路の探索は、設計者が行っても良いが、本実施形態においては、動作合成装置が自動で行うものとする。
【００１８】
まず、図１を参照して、本実施形態に係る動作合成装置の構成について説明する。
【００１９】
図１に示すように、動作合成装置１０は、物理的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ハードディスク装置１４と、入力装置１５と、表示装置１６と、を備える。動作合成装置１０が備える各構成要素はバスを介して接続される。
【００２０】
ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムに従って動作合成装置１０全体の動作を制御する。ＣＰＵ１１は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
【００２１】
ＲＯＭ１２は、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記憶する。ＩＰＬが実行された後、ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムをＲＡＭ１３に読み出して実行する。
【００２２】
ＲＡＭ１３は、データやプログラムを一時的に記憶する。ＲＡＭ１３は、ハードディスク装置１４から読み出されたプログラムや、アーキテクチャ探索処理に必要なデータ等を一時記憶する。
【００２３】
ハードディスク装置１４は、ＣＰＵ１１により実行されるプログラムを記憶する。また、ハードディスク装置１４は、動作レベル記述や合成制約なども記憶する。
【００２４】
入力装置１５は、ＣＰＵ１１による制御のもと、動作レベル記述や合成制約等の入力をユーザから受け付け、また、アーキテクチャ探索の開始要求等の要求をユーザから受け付ける。入力装置１５は、例えば、キーボードやマウスから構成される。
【００２５】
表示装置１６は、ＣＰＵ１１による制御のもと、動作レベル記述を示す画面、合成制約を示す画面、シミュレーション実行中の画面などを表示する。表示装置１６は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）やＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などから構成される。
【００２６】
図２を参照して、本実施形態に係る動作合成装置１０の動作の概略について説明する。図２に示すように、動作合成装置１０は、生成部２１と、特定部２２と、判別部２３と、計測部２４と、記憶部２５と、計算部２６とを含む。
【００２７】
生成部２１は、集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する。
【００２８】
特定部２２は、生成部２１により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する。
【００２９】
判別部２３は、特定部２２により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する。
【００３０】
計測部２４は、判別部２３によりシミュレーション済みではないと判別された場合、生成部２１により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める。
【００３１】
記憶部２５は、計測部２４により求められた個別実行サイクル数と、特定部２２により特定されたループ構造とを対応付けて記憶する。
【００３２】
計算部２６は、判別部２３によりシミュレーション済みであると判別された場合、特定部２２により特定されたループ構造と同じループ構造に対応付けられて記憶部２５に記憶されている個別実行サイクル数に基づいて、生成部２１により生成された中間レベル記述の総実行サイクル数を求める。
【００３３】
図３は、本実施形態に係る動作合成装置１０が備える機能を説明するためのブロック図である。図３に示すように、動作合成装置１０は、機能的には、処理装置１００と、記憶装置１１０とから構成される。処理装置１００は、機能的には、動作合成部１０１と、ループ構造解析部１０２と、ループ構造比較部１０３と、実行サイクル数計算部１０４と、シミュレーションモデル生成部１０５と、シミュレーション実行部１０６と、を備える。
【００３４】
記憶装置１１０は、機能的には、動作レベル記述記憶部１１１と、合成制約記憶部１１２と、ループ構造記憶部１１３と、シミュレーションデータ記憶部１１４と、対応関係記憶部１１５と、実行サイクル数記憶部１１６と、を備える。なお、処理装置１００は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。従って、処理装置１００が備える各部は、それぞれ、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。また、記憶装置１１０は、ハードディスク装置１４により実現される。従って、記憶装置１１０が備える各部は、それぞれ、ハードディスク装置１４により実現される。
【００３５】
動作合成部１０１は、動作レベル記述記憶部１１１に記憶されている動作レベル記述を、合成制約記憶部１１２に記憶されている合成制約に基づいて動作合成する。具体的には、動作合成部１０１は、最適化処理、スケジューリング処理、ならびに、バインディング処理を順次実行することにより、動作レベル記述をクロックサイクル毎の動作を指定する中間レベル記述に変換する。
【００３６】
ループ構造解析部１０２は、動作合成部１０１により生成されたクロックサイクル毎の動作を指定する中間レベル記述を解析し、ループ構造を特定する。
【００３７】
ループ構造比較部１０３は、ループ構造解析部１０２により特定されたループ構造とループ構造記憶部１１３に記憶されているループ構造とを比較し、ループ構造解析部１０２により特定されたループ構造と同一のループ構造がループ構造記憶部１１３に記憶されているか否かを判別する。そして、ループ構造比較部１０３は、同一のループ構造が記憶されていない場合、ループ構造解析部１０２により特定されたループ構造をループ構造記憶部１１３に記憶する。
【００３８】
実行サイクル数計算部１０４は、対応関係記憶部１１５から、ループ構造解析部１０２により特定されたループ構造に対応する、ループ構造と実行サイクル数との対応関係を示す情報を読み出す。そして、実行サイクル数計算部１０４は、読み出された情報に基づいて、実行サイクル数を計算し、計算結果を実行サイクル数記憶部１１６に記憶する。
【００３９】
シミュレーションモデル生成部１０５は、動作合成部１０１により生成されたクロックサイクル毎の動作を指定する中間レベル記述を、シミュレーションを実行可能なシミュレーションモデルに変換する。
【００４０】
シミュレーション実行部１０６は、シミュレーションモデル生成部１０５により生成されたシミュレーションモデルに対してシミュレーションを実行する。具体的には、シミュレーション実行部１０６は、シミュレーションモデル生成部１０５により生成されたシミュレーションモデルと、シミュレーションデータ記憶部１１４に記憶されているシミュレーションデータとを用いて、動作合成部１０１により生成された中間レベル記述により表される合成回路のシミュレーションを実行する。シミュレーション実行部１０６は、シミュレーションの最中に、実行サイクル数を求める。そして、シミュレーション実行部１０６は、求められた実行サイクル数とループ構造との対応関係を示す情報を対応関係記憶部１１５に記憶するとともに、当該実行サイクル数を実行サイクル数記憶部１１６に記憶する。
【００４１】
動作レベル記述記憶部１１１には、動作レベル記述があらかじめ記憶されている。動作レベル記述は、ハードウェア記述言語やプログラム言語により表現される。ハードウェア記述言語は、例えば、Ｖｅｒｉｌｏｇ−ＨＤＬ（Ｖｅｒｉｌｏｇ  Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、ＶＨＤＬ（Ｖｅｒｙ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｈａｒｄｗａｒｅ  Ｄｉｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、ＳｙｓｔｅｍＶｅｒｉｌｏｇである。プログラム言語は、例えば、Ｃ、Ｃ＋＋、Ｃ＃、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、ＪＡＶＡ（登録商標）、Ｐｅｒｌ、Ｓｃｈｅｍｅ、Ｌｉｓｐである。動作レベル記述は、Ｃ、Ｃ＋＋、あるいは、ＪＡＶＡ（登録商標）に、回路を実現するための拡張が行われた言語で表現されてもよい。動作レベル記述は、例えば、設計者によって準備される。
【００４２】
合成制約記憶部１１２は、複数の合成制約をあらかじめ記憶している。合成制約は、回路の合成に使用可能なハードウェア資源、合成回路の動作クロック周波数、あるいは、合成回路の面積、もしくはこれらの組み合わせにより指定される。
【００４３】
ループ構造記憶部１１３は、実行サイクル数を取得済のループ構造を示す情報を記憶する。ループ構造は、クロックサイクル毎の動作を指定する中間レベル記述から抽出された、ループ構造に関する記述により特定される。なお、ループ構造は、各ループを特定する文字列、ループ間の関係を特定する情報、各ループが実行される回数、各ループの中身が実行される回数などにより特定されてもよい。
【００４４】
シミュレーションデータ記憶部１１４は、シミュレーションの実行に必要なシミュレーションデータを記憶する。
【００４５】
対応関係記憶部１１５は、ループ構造と実行サイクル数との対応関係を示す情報を記憶する。対応関係を示す情報は、ループ構造を特定する情報と、各ループを実行するのに要した実行サイクル数とを含む情報である。
【００４６】
実行サイクル数記憶部１１６は、シミュレーション実行部１０６から取得した実行サイクル数を記憶する。記憶する実行サイクル数は、各ループを実行するのに要した実行サイクル数であってもよいし、これらの実行サイクル数の総和であってもよい。
【００４７】
なお、動作合成部１０１は、生成部２１に相当する。また、ループ構造解析部１０２は、特定部２２に相当する。そして、ループ構造比較部１０３は、判別部２３に相当する。さらに、シミュレーションモデル生成部１０５ならびにシミュレーション実行部１０６は、計測部２４に相当する。また、対応関係記憶部１１５は、記憶部２５に相当する。そして、実行サイクル数計算部１０４は、計算部２６に相当する。
【００４８】
以下、図４に示すフローチャートを用いて、動作合成装置１０が実行するアーキテクチャ探索処理について説明する。アーキテクチャ探索処理は、複数の合成制約のそれぞれに基づいて動作レベル記述を動作合成することにより複数の合成回路を生成し、生成された複数の合成回路から最適な合成回路を探索する処理である。動作合成装置１０は、設計者などによる、アーキテクチャ探索処理の開始を要求する操作入力を受け付けると、図４に示すアーキテクチャ探索処理を開始する。
【００４９】
まず、ＣＰＵ１１は、ハードディスク装置１４に記憶されている動作レベル記述をＲＡＭ１３に読み出す（ステップＳ１０１）。ステップＳ１０１の処理は、動作合成部１０１が、動作レベル記述記憶部１１１に記憶されている動作レベル記述を取得する処理に相当する。
【００５０】
図５に、ＳｙｓｔｅｍＣ言語を用いて表現された動作レベル記述を示す。なお、図５には、本実施形態の説明に必要な部分のみを示している。以下、図５に示す動作レベル記述の処理の内容を説明する。
【００５１】
図５の１行目から４行目までに、端子が定義されている。具体的には、ｉｎｔ型の入力端子として、入力端子ｉｎ０、ｉｎ１が定義され、ｉｎｔ型の出力端子として出力端子ｏｕｔ０が定義されている。
【００５２】
そして、５行目から１７行目までに、当該動作レベル記述により表される合成回路の動作を定義する情報が示されている。まず、ｉｎｔ型の変数ｖが値０で初期化されている。そして、１０行目に定義されたラベルＬ１を持つｆｏｒ文によるループにより、変数ｉの値が０から３になるまで、１１行目に記述された処理が繰り返し実行される。１１行目では、入力端子ｉｎ０および入力端子ｉｎ１から値が読み出され、読み出された値の和が変数ｖに足されている。１４行目では、出力端子ｏｕｔ０に変数ｖの値が出力されている。
【００５３】
ＣＰＵ１１は、図４のステップＳ１０１の処理を終了すると、ハードディスク装置１４に記憶されている複数の合成制約から合成制約を１つ選択し、選択した合成制約をＲＡＭ１３に読み出す（ステップＳ１０２）。ここでは、加算器を２つ使用できることを示す合成制約、すなわち、２つ以下の加算器で合成することを示す合成制約が選択されたものとして説明する。
【００５４】
ＣＰＵ１１は、ステップＳ１０２の処理を終了すると、ステップＳ１０１で読み出された動作レベル記述をステップＳ１０２で選択された合成制約を用いて動作合成する（ステップＳ１０３）。具体的には、ＣＰＵ１１は、最適化処理、スケジューリング処理、ならびに、バインディング処理を順次実行することにより、動作レベル記述をクロックサイクル毎の動作を指定する中間レベル記述に変換する。なお、生成されたクロックサイクル毎の動作を指定する中間レベル記述は、ＲＡＭ１３に記憶される。また、最適化処理、スケジューリング処理、ならびに、バインディング処理には、例えばＪｏｈｎ  Ｐ．  Ｅｌｌｉｏｔｔ，「Ｕｎｄｅｒｓｔａｎｄｉｎｇ  Ｂｅｈａｖｉｏｒａｌ  Ｓｙｎｔｈｅｓｉｓ」，Ｋｌｕｗｅｒ  Ａｃａｄｅｍｉｃ  Ｐｕｂｌｉｓｈｅｒｓ，ｐｐ．２５−４０．に開示されている技術を用いることができる。
【００５５】
図６に、クロックサイクル毎の動作を指定する中間レベル記述を示す。以下、図６に示されたクロックサイクル毎の動作を指定する中間レベル記述により表現されている動作について説明する。
【００５６】
図６に示されたクロックサイクル毎の動作を指定する中間レベル記述では、１行目から４行目に示されているように、図５に示された動作レベル記述と同じ端子が定義されている。ここで、バインディング処理によって、動作レベル記述における変数ｖに、中間レベル記述においてはレジスタＲＧ＿ｖが割り当てられている。また、動作レベル記述における変数ｉに、中間レベル記述においてはレジスタＲＧ＿ｉが割り当てられている。さらに、スケジューリング処理によって、動作レベル記述における１１行目の処理が、中間レベル記述における１１行目の処理で実現されるように変換されている。すなわち、１クロック内で、入力端子ｉｎ０ならびに入力端子ｉｎ１の値が読み出されて、読み出された値がレジスタＲＧ＿ｖに加算されている。
【００５７】
ＣＰＵ１１は、図４のステップＳ１０３の処理を終了すると、ステップＳ１０３で生成されたクロックサイクル毎の動作を指定する中間レベル記述を解析して、制御フローに含まれるループ構造を特定する（ステップＳ１０４）。本実施形態においては、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分を抜き出したもので表現されるものとする。
【００５８】
図７に、特定されたループ構造を示す。図７に示すループ構造は、図６に示すクロックサイクル毎の動作を指定する中間レベル記述から、ループ文、および、クロック境界を示すｗａｉｔ（）文のみを抜き出したものである。図７に示すループ構造の１行目には、図６に示す中間レベル記述の８行目のループＬ０が抽出されている。図７に示すループ構造の２行目には、図６に示す中間レベル記述の１０行目のループＬ１が抽出されている。そして、図７に示すループ構造には、ループＬ１のボディの実行に１サイクル、ループＬ１の実行が完了してからループＬ０の先頭に戻るまでに１サイクル必要であることが示されている。
【００５９】
ＣＰＵ１１は、図４のステップＳ１０４の処理を終了すると、ステップＳ１０４で特定されたループ構造と同一のループ構造が、ハードディスク装置１４に記憶されているか否かを判別する（ステップＳ１０５）。なお、ハードディスク装置１４に記憶されているループ構造は、後述するシミュレーションにより実行サイクル数を取得済のループ構造である。従って、最初にステップＳ１０５の処理が実行される場合、ハードディスク装置１４にはいかなるループ構造も記憶されていないため、ＣＰＵ１１は、ＮＯと判別する。なお、本実施形態においては、同一のループ構造であるか否かは、ループの部分とクロック境界の部分を抜き出したもので表現されたループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであるか否かを基準に判断するものとする。
【００６０】
ＣＰＵ１１は、同じループ構造が存在しないと判別した場合（ステップＳ１０５：ＮＯ）、ループ構造を示す情報をハードディスク装置１４に記憶する（ステップＳ１０６）。ここでは、図７に示すループ構造を示す情報が記憶される。
【００６１】
ＣＰＵ１１は、ステップＳ１０６の処理を終了すると、ステップＳ１０３で生成されたクロックサイクル毎の動作を指定する中間レベル記述からシミュレーションモデルを生成する（ステップＳ１０７）。シミュレーションモデルは、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＶＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇといったハードウェア記述言語や、Ｃ、Ｃ＋＋、Ｃ＃、ＳｙｓｔｅｍＣ、ＳｐｅｃＣ、ＪＡＶＡ（登録商標）、Ｐｅｒｌ、Ｓｃｈｅｍｅ、Ｌｉｓｐといったプログラム言語により表現される。
【００６２】
図８に、ＳｙｓｔｅｍＣ言語を用いて表現されたシミュレーションモデルを示す。なお、図８には、本実施形態の説明に必要な部分のみを示している。また、本実施形態においては、図８に示すシミュレーションモデルは、図６に示す中間レベル記述と同じ記述となっている。
【００６３】
ＣＰＵ１１は、ステップＳ１０７の処理を終了すると、ハードディスク装置１４に記憶されているシミュレーションデータを用いて、ステップＳ１０７で生成されたシミュレーションモデルに対してシミュレーションを実行する（ステップＳ１０８）。本実施形態においては、動作合成装置１０がシミュレーションを実行するものとして説明するが、外部のシミュレータにシミュレーションを実行させることもできる。この場合、ＣＰＵ１１は、外部のシミュレータに、シミュレーションデータとシミュレーションモデルとを引き渡し、当該外部のシミュレータから、シミュレーションにより得られた実行サイクル数を取得する。なお、シミュレータには、例えば、Ｏｐｅｎ  ＳｙｓｔｅｍＣ  ＩｎｉｔｉａｔｉｖｅのＳｙｓｔｅｍＣシミュレータ、Ｓｙｎｏｐｓｙｓ（登録商標）社のＶＣＳ（登録商標）、ＭｅｎｔｏｒＧｒａｐｈｉｃｓ（登録商標）社のＭｏｄｅｌＳｉｍ、もしくは、Ｃａｄｅｎｃｅ（登録商標）社のＩｎｃｉｓｉｖｅ（登録商標）などを採用することができる。
【００６４】
図９に、入力端子ｉｎ０ならびに入力端子ｉｎ１に順次供給されるシミュレーションデータを示す。図９に示す例は、入力端子ｉｎ０ならびに入力端子ｉｎ１のそれぞれに、１から９までの値が順次供給されることを示している。
【００６５】
ＣＰＵ１１は、ステップＳ１０８の処理を終了すると、シミュレーションにより得られた実行サイクル数とループ構造との対応関係を示す情報をハードディスク装置１４に記憶する（ステップＳ１０９）。
【００６６】
一方、ＣＰＵ１１は、同じループ構造が存在すると判別した場合（ステップＳ１０５：ＹＥＳ）、ハードディスク装置１４に記憶されている情報に基づいて実行サイクル数を計算する（ステップＳ１１０）。具体的には、ＣＰＵ１１は、ハードディスク装置１４に記憶されている情報を参照して、当該ループ構造の各ループを実行するのに必要な実行サイクル数をＲＡＭ１３に読み出し、読み出された実行サイクル数に基づいて、ステップＳ１０３で生成されたクロックサイクル毎の動作を指定する中間レベル記述により表現される、全ての処理を実行するのに必要な実行サイクル数を計算する。
【００６７】
ＣＰＵ１１は、ステップＳ１０９の処理、もしくは、ステップＳ１１０の処理を終了すると、ステップＳ１０８のシミュレーションで取得した実行サイクル数、もしくは、ステップＳ１１０で計算した実行サイクル数を、ステップＳ１０２で選択した合成制約と対応付けてハードディスク装置１４に記憶する（ステップＳ１１１）。
【００６８】
図１０に、ループ構造と実行サイクル数との対応関係を示す。図１０に示す例では、ループ構造は、ループ名によって特定される。ループ名は、ループ文に記述されているシンボル名を表す文字列などにより表現される。なお、図示しないが、ループ名により、ループ間の構造も特定されるものとする。本実施形態においては、ループＬ１はループＬ０内に配置され、ループＬ０はループＭＡＩＮ内に配置されることを前提としている。そして、ループ構造に対応づけられるデータとして、ループの訪問回数と、ループボディ（ループの中身の処理）の実行回数と、ループボディの１回あたりの実行サイクル数とが記憶される。ループの訪問回数は、そのループが訪問される回数である。ループボディの実行回数は、ループが１回訪問される毎にループボディが実行される回数である。
【００６９】
図１０は、図９に示すシミュレーションデータによりシミュレーションが実行される際に、ループＬ０は、１回訪問され、ループボディが３回実行され、ループボディの１回の実行あたりの実行サイクル数が４サイクルであることを表している。同様に、ループＬ１は、３回訪問され、ループボディが３回実行され、ループボディの１回の実行あたりの実行サイクル数が１サイクルであることを表している。そして、ループＭＡＩＮの実行サイクル数（全体の実行サイクル数）が１２であることを示している。従って、ここでは、実行サイクル数として１２サイクルが、加算器が２個であることを示す合成制約と対応付けられて記憶される。ここで、ループＬ０のループボディが３回実行されるのは、図９に示すように、シミュレーションデータが９個であるためである。なお、シミュレーションデータが無限に与えられる場合、ループＬ０のループボディは無限に実行される。
【００７０】
ＣＰＵ１１は、図４のステップＳ１１１の処理を終了すると、未選択の合成制約がハードディスク装置１４に記憶されているか否かを判別する（ステップＳ１１２）。ＣＰＵ１１は、未選択の合成制約があると判別すると（ステップＳ１１２：ＹＥＳ）、合成制約を選択する処理（ステップＳ１０２）に処理を戻す。
【００７１】
ここで、加算器が１つしか使用できないことを指定する合成制約が、未選択の合成制約として、ハードディスク装置１４に記憶されている場合について説明する。
【００７２】
図１１に、ステップＳ１０３の処理において、このような合成制約に基づいて動作合成することにより生成されるクロックサイクル毎の動作を指定する中間レベル記述を示す。図６に示す中間レベル記述の１１行目から１２行目において１サイクルで実行されていた処理が、図１１に示す中間レベル記述では、１１行目から１４行目の２サイクルをかけて実行されている。
【００７３】
ここで、図１２に、ステップＳ１０４の処理において、図１１に示すクロックサイクル毎の動作を指定する中間レベル記述から特定されるループ構造を示す。図１２に示すように、図７に示すループ構造においては１サイクルで実行されていたループＬ１のボディの実行が、図１２に示すループ構造においては２サイクルで実行される。
【００７４】
そして、ステップＳ１０５において、ＣＰＵ１１は、同じループ構造が存在するか否かが判別する。この時点においては、ステップＳ１０６の処理において、図７に示すループ構造がハードディスク装置１４に記憶されている。ここで、図７に示すループ構造と、図１２に示すループ構造とは、ループＬ２のボディの実行にかかるサイクル数が異なるものの、ループの構造自体は同じである。すなわち、図７に示すループ構造と図１２に示すループ構造とは、ともに、ループＬ０とループＬ１とから構成され、ループＬ１がループＬ０の内側に含まれている。従って、ステップＳ１０５で、ＣＰＵ１１は、同じループ構造があると判別する。
【００７５】
次に、ステップＳ１１０において、ＣＰＵ１１は、ループ構造と実行サイクル数との対応関係を示す情報を、ハードディスク装置１４から読み出し、実行サイクル数が計算する。ここでは、ＣＰＵ１１は、同じループ構造を有するクロックサイクル毎の動作を指定する中間レベル記述について、シミュレーションにより得られた実行サイクル数と異なる部分についてのみ、実行サイクル数を計算する。本実施形態においては、ループＬ０，Ｌ１のループはともに、ループ構造が同じであるため、ループの訪問回数とループボディの実行回数は同じである。これは、ループ構造が同じである場合、シミュレーションにおいて、同じ入力データが与えられると、ループの訪問回数およびループボディの実行回数は同じになるためである。従って、ハードディスク装置１４に記憶されている情報を使用すれば、シミュレーションをしなくてもループの訪問回数およびループボディの実行回数を得ることができる。
【００７６】
しかしながら、ＣＰＵ１１は、ループＬ１についてのループボディの１回の実行あたりの実行サイクル数については、シミュレーションにより得られた値を採用することができない。従って、ＣＰＵ１１は、当該実行サイクル数については、ループボディに含まれるクロック境界の数をもとに計算により求める。また、ループＬ０は、ループＬ１を含む。このため、ＣＰＵ１１は、ループＬ０についてのループボディの１回の実行あたりの実行サイクル数についても、シミュレーションにより得られた値を採用することができない。従って、ＣＰＵ１１は、当該実行サイクル数も、計算により求める。図１３に、計算により求められる実行サイクル数を示す。
【００７７】
一方、ＣＰＵ１１は、未選択の合成制約がないと判別すると（ステップＳ１１２：ＮＯ）、実行サイクル数が最も少ない合成制約を特定する（ステップＳ１１３）。具体的には、ＣＰＵ１１は、ステップＳ１１１でハードディスク装置１４に記憶された実行サイクル数のうち、実行サイクル数が最も少ない実行サイクル数に対応付けられている合成制約を特定する。なお、当該合成制約に基づいて生成された合成回路は、実行サイクル数が最も少ない合成回路である。
【００７８】
ＣＰＵ１１は、ステップＳ１１３の処理を終了すると、アーキテクチャ探索処理を終了する。
【００７９】
本実施形態に係る動作合成装置１０は、過去に性能が評価された合成回路とループ構造が同じ回路に対しては、シミュレーションを実行せずに性能が評価されるように構成される。係る構成によれば、シミュレーションが実行される回数が抑制され、アーキテクチャ探索に要する時間が短縮されることが期待できる。
【００８０】
なお、動作合成装置１０は、シミュレーションにより得られた実行サイクル数を採用できない部分についてのみ、実行サイクル数を計算し、シミュレーションにより得られた実行サイクル数を採用できる部分についてはシミュレーションにより得られた実行サイクル数を採用する。このため、実行サイクル数を求めようとしている中間レベル記述と、当該中間レベル記述とループ構造が同じであるシミュレーション済みの中間レベル記述とが、一部しか記述が異ならないなどの場合には、多くの部分についてシミュレーションにより求められた実行サイクル数を採用することができ、計算量を少なくすることができる。
【００８１】
なお、アーキテクチャ探索する場合は、動作レベル記述そのものは変化せず、合成制約が変化するだけである。ここで、合成制約の変化は、ループ構造には影響を与えずに、ループボディ一回の実行あたりのサイクル数に影響を与える場合が多い。従って、多くの場合、ループ構造が変化しないことが期待できる。このため、シミュレーションによらず、計算のみによって実行サイクル数が求められる場合も多いと考えられる。
【００８２】
上記実施形態においては、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分とを抜き出したもので表現されていた。しかしながら、ループ構造は、中間レベル記述のうち、ループの部分だけを抜き出したもので表現されてもよい。あるいは、ループ構造は、中間レベル記述のうち、ループの部分とクロック境界の部分を抜き出し、かつ、ループボディの動作の内容を論理式で表現される形式でもよい。
【００８３】
上記実施形態においては、同一のループ構造であるか否かは、ループの部分とクロック境界の部分を抜き出したもので表現されたループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであるか否かを基準に判断されるものとして説明した。しかしながら、同一のループ構造であるか否かは、構成されるループが全く同じであるか否かを基準にして判断されてもよい。あるいは、中間レベル記述の制御の構造をグラフとして表現されたループ構造に対して、グラフが同形であるか否かを基準に判断されてもよい。あるいは、ループの部分とクロック境界の部分を抜き出し、かつ、ループボディの動作の内容を論理式で表現する形式であるループ構造に対して、クロック境界の部分を無視した上で構成されるループが全く同じであり、かつ、ループボディの動作の内容を表現した論理式が等価であるか否かを基準に判断されてもよい。
【００８４】
上記実施形態においては、ループ構造は、ループ名（ループ間の関係を含む）、ならびに、ループボディの実行回数によりループ構造が特定される例を示した。しかし、より少ない要素によりループ構造を特定するようにしてもよい。例えば、ループ名（ループ間の関係を含む）によりループ構造が特定されるようにする。このようにループ構造を特定することで、シミュレーション済みのループ構造と同じであると判別されやすくなる。従って、シミュレーションの回数が減ることが期待できる。反対に、より多くの要素によりループ構造を特定するようにしてもよい。例えば、ループ名（ループ間の関係を含む）、ループボディの実行回数、ならびに、ループボディの１回の実行あたりの実行サイクル数によりループ構造が特定されるようにする。このようにループ構造を特定することで、複雑な計算をせずに実行サイクル数を求めることが可能となる。
【００８５】
なお、本発明に係る動作合成装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、コンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する動作合成装置を構成しても良い。
【００８６】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【００８７】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００８８】
（付記１）
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段と、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段と、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段と、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段と、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段と、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段と、を備える、
ことを特徴とする動作合成装置。
【００８９】
（付記２）
前記判別手段は、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定手段により特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする付記１に記載の動作合成装置。
【００９０】
（付記３）
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記１または２に記載の動作合成装置。
【００９１】
（付記４）
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記１または２に記載の動作合成装置。
【００９２】
（付記５）
動作合成装置が実行する動作合成方法であって、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成ステップと、
前記生成ステップで生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定ステップと、
前記特定ステップで特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別ステップと、
前記判別ステップでシミュレーション済みではないと判別された場合、前記生成ステップで生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測ステップと、
前記計測ステップで求められた個別実行サイクル数と、前記特定手段ステップで特定されたループ構造とを対応付けて記憶する記憶ステップと、
前記判別ステップでシミュレーション済みであると判別された場合、前記特定ステップで特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成ステップで生成された中間レベル記述の総実行サイクル数を求める計算ステップと、を備える、
ことを特徴とする動作合成方法。
【００９３】
（付記６）
前記判別ステップでは、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されている場合に、シミュレーション済みであると判別し、前記特定ステップで特定されたループ構造と同じループ構造が前記記憶手段に記憶されていない場合に、シミュレーション済みではないと判別する、
ことを特徴とする付記５に記載の動作合成方法。
【００９４】
（付記７）
前記ループ構造は、前記中間レベル記述からループ文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記５または６に記載の動作合成方法。
【００９５】
（付記８）
前記ループ構造は、前記中間レベル記述からループ文ならびにクロック境界指定文を特定したときに得られる記述の構造により特定される、
ことを特徴とする付記５または６に記載の動作合成方法。
【００９６】
（付記９）
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体。
【００９７】
本出願は、２００９年７月１５日に出願された日本国特許出願２００９−１６７２８６号に基づく。本明細書中に日本国特許出願２００９−１６７２８６号の明細書、特許請求の範囲、図面全体を参照として取り込むものとする。
【産業上の利用可能性】
【００９８】
本発明は、例えば、電子回路の回路設計を支援する動作合成装置に利用することができる。
【符号の説明】
【００９９】
１０  動作合成装置
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ハードディスク装置
１５  入力装置
１６  表示装置
２１  生成部
２２  特定部
２３  判別部
２４  計測部
２５  記憶部
２６  計算部
１００  処理装置
１０１  動作合成部
１０２  ループ構造解析部
１０３  ループ構造比較部
１０４  実行サイクル数計算部
１０５  シミュレーションモデル生成部
１０６  シミュレーション実行部
１１０  記憶装置
１１１  動作レベル記述記憶部
１１２  合成制約記憶部
１１３  ループ構造記憶部
１１４  シミュレーションデータ記憶部
１１５  対応関係記憶部
１１６  実行サイクル数記憶部
【図１】
2011007640.tif 000003
【図２】
2011007640.tif 000004
【図３】
2011007640.tif 000005
【図４】
2011007640.tif 000006
【図５】
2011007640.tif 000007
【図６】
2011007640.tif 000008
【図７】
2011007640.tif 000009
【図８】
2011007640.tif 000010
【図９】
2011007640.tif 000011
【図１０】
2011007640.tif 000012
【図１１】
2011007640.tif 000013
【図１２】
2011007640.tif 000014
【図１３】
2011007640.tif 000015
【手続補正書】
【提出日】平成24年1月16日(2012.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させるためのプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムに関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
本発明は、上記問題に鑑みてなされたものであり、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムを提供することを目的とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
上記目的を達成するために、本発明の第３の観点に係るプログラムは、
コンピュータを、
集積回路上に実装される回路の動作が記述された動作レベル記述と制約条件とに基づいて、当該動作レベル記述に記述されている動作を実現するとともに当該制約条件を満たす回路を表現する中間レベル記述を生成する生成手段、
前記生成手段により生成された中間レベル記述を解析して、当該中間レベル記述のループ構造を特定する特定手段、
前記特定手段により特定されたループ構造と同じループ構造を有するいずれかの中間レベル記述について、シミュレーション済みであるか否かを判別する判別手段、
前記判別手段によりシミュレーション済みではないと判別された場合、前記生成手段により生成された中間レベル記述により表現される回路の動作をシミュレーションし、当該中間レベル記述に記述されている各処理を実行するのに要する個別実行サイクル数を求めるとともに、当該中間レベル記述に記述されている全ての処理を実行するのに要する総実行サイクル数を求める計測手段、
前記計測手段により求められた個別実行サイクル数と、前記特定手段により特定されたループ構造とを対応付けて記憶する記憶手段、
前記判別手段によりシミュレーション済みであると判別された場合、前記特定手段により特定されたループ構造と同じループ構造に対応付けられて前記記憶手段に記憶されている個別実行サイクル数に基づいて、前記生成手段により生成された中間レベル記述の総実行サイクル数を求める計算手段、
として機能させるためのプログラムである。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明によれば、動作レベル記述により表される回路の性能を速やかに取得するのに好適な動作合成装置、動作合成方法、ならびに、これらをコンビュータ上で実現するためのプログラムを提供することができる。
【国際調査報告】
2011007640.tif 000016
2011007640.tif 000017
2011007640.tif 000018