(57)【要約】【課題】動的なシミュレーション実行環境制御を行う柔軟な開発環境の提供し、開発効率を向上させることが可能な情報処理装置およびその方法を提供する。【解決手段】統合制御ブロック１１は、ソフトウェアブロック１２のシミュレーションを実行するノードが、シミュレーションコードを必要に応じて動的に起動、終了するように制御し、新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックし、他のソフトウェアが実行中には、ハードウェアブロック１３のシミュレーション環境をコピーし、コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する制御を行う。【選択図】図１
2008021142.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理装置であって、
プロセッサブロックを含む複数の回路ブロックと、
ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、
全体の統合制御を行う統合制御ブロックと、を含み、
上記プロセッサブロックは、ソフトウェアをシミュレートするソフトウェアブロックとのメッセージパッシング通信により実行コードフェッチとそれに基づくシミュレーションを実行し、
上記統合制御ブロックは、ソフトウェアブロックのシミュレーションを実行するノードが、シミュレーションコードを必要に応じて動的に起動、終了動作を制御し、新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックし、他のソフトウェアが実行中には、ハードウェアブロックのシミュレーション環境をコピーし、コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する制御を行う
情報処理装置。
【請求項２】
上記統合制御ブロックは、ソフトウェアブロック以外のハードウェアブロックについては、ソフトウェアブロックの起動終了情報に基づいて、起動数に応じたシミュレーションシステムのコピー、終端制御を行う
請求項１記載の情報処理装置。
【請求項３】
上記プロセッサブロックのシミュレーションを実行するノードは、上記ソフトウェアブロックのシミュレーションを実行するノードで実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、
統合制御ブロックは、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御し管理する
請求項１記載の情報処理装置。
【請求項４】
上記統合制御ブロックは、他ソフトウェアブロックの第１シミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、プロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで形成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用する第２のシミュレーションの実行を制御する
請求項３記載の情報処理装置。
【請求項５】
上記統合制御ブロックは、他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの第２のシミュレーションの実行を制御する
請求項４記載の情報処理装置。
【請求項６】
シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理装置であって、
プロセッサブロックを含む複数の回路ブロックと、
ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、
全体の統合制御を行う統合制御ブロックと、を含み、
上記プロセッサブロックのシミュレーションを実行するノードは、ソフトウェアブロックのシミュレーションを実行するノード上で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、
統合制御ブロックは、
協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理し、
他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、プロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用する第２のシミュレーションの実行を制御し、
他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの第２のシミュレーションの実行を制御する
情報処理装置。
【請求項７】
プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、を用い、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理方法であって、
プロセッサブロックにより、ソフトウェアをシミュレートするソフトウェアブロックとのメッセージパッシング通信により実行コードフェッチとそれに基づくシミュレーションを実行し、
ソフトウェアブロックのシミュレーションを実行するノードが、シミュレーションコードを必要に応じて動的に起動、終了するように制御し、
新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックし、
他のソフトウェアが実行中には、ハードウェアブロックのシミュレーション環境をコピーし、
コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する
情報処理方法。
【請求項８】
プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、を用い、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理方法であって、
上記プロセッサブロックのシミュレーションを実行するノードにより、ソフトウェアブロックのシミュレーションを実行するノード２で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、
協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理し、
他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、プロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、
システム上の別ノードを使用する第２のシミュレーションの実行を行い、
他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの第２のシミュレーションの実行を行う
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびその方法に係り、特に、プロセッサブロックを含む半導体の開発設計実行環境において、ソフトウェアとハードウェアの論理シミュレーションを高速、柔軟に行うシステムの管理、制御技術に関するものである。
【背景技術】
【０００２】
一般的に、ハードウェアに含まれるプロセッサの実行プログラムのシミュレーション環境への提供は、あらかじめシミュレーションコード内に含み、シミュレーション実行時にソフトウェアの擬似実行も含め、統合して実行していた（たとえば特許文献１参照）。
【０００３】
また、特許文献２には、ソフトウェアブロックとハードウェアブロックを含むシミュレーション方法に関する技術が記載されており、ソフトウェアを実行するプロセッサの部分のシミュレーション方法そのものに着目した内容が記載されている。
この技術では、プロセッサ部分のシミュレーション方法を命令モデルでのシミュレーションとサイクルアキュレートなシミュレーションをある条件により動的に切り替える。
具体的には、あらかじめプロセッサシミュレーションモデルを複数種類と論理回路モデルを備え、シミュレーションの実行中にプロセッサシミュレーションモデルを動的に切り替えることにより、プロセッサ部と論理回路部の相互作用を分岐、例外処理等を含め、高速にシミュレーションを行う。
【０００４】
また、特許文献３には、ハードウェアと実行ソフトウェアの相互に作用を及ぼし合う要素を結合させた標的電子システムを、一部は物理的エミュレーション手段により、一部は概念的なソフトウェアシミュレーションによりシミュレートするシステムが記載されている。
【特許文献１】特開２０００−７６２１１号公報
【特許文献２】特開２０００−０１１０２２号公報
【特許文献３】特開平０９−２９３００２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、特許文献１に開示された技術では、あらたなデバッグ用等のソフトウェアを含むシミュレーションを実行したり、既に実行済みのシミュレーション結果により明らかに変更を加えてシミュレーションを再実行しなおす場合など、柔軟なシミュレーションを行うことはできない。実行環境の制約により、追加シミュレーション、再実行シミュレーションは、既存シミュレーションの実行完了を待たなくてはならず設計ターンアラウンドタイム（ＴＡＴ）の短縮に大きな障害があった。
【０００６】
また、特許文献２あるいは３に記載された技術では、ＥＤＡツールによる半導体開発設計環境において、プロセッサブロックを含むハードウェアと、ソフトウェアのシミュレーションを行う際に、動的なシミュレーションを実現することが困難であるという不利益がある。
【０００７】
本発明は、半導体開発設計環境において、プロセッサブロックを含むハードウェアと、ソフトウェアのシミュレーションを行う際に、動的なシミュレーション実行環境制御を行う柔軟な開発環境の提供し、開発効率を向上させることが可能な情報処理装置およびその方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の観点は、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理装置であって、プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、全体の統合制御を行う統合制御ブロックと、を含み、上記プロセッサブロックは、ソフトウェアをシミュレートするソフトウェアブロックとのメッセージパッシング通信により実行コードフェッチとそれに基づくシミュレーションを実行し、上記統合制御ブロックは、ソフトウェアブロックのシミュレーションを実行するノードが、シミュレーションコードを必要に応じて動的に起動、終了動作を制御し、新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックし、他のソフトウェアが実行中には、ハードウェアブロックのシミュレーション環境をコピーし、コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する制御を行う。
【０００９】
好適には、上記統合制御ブロックは、ソフトウェアブロック以外のハードウェアブロックについては、ソフトウェアブロックの起動終了情報に基づいて、起動数に応じたシミュレーションシステムのコピー、終端制御を行う。
【００１０】
本発明の第２の観点は、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理装置であって、プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、全体の統合制御を行う統合制御ブロックと、を含み、上記プロセッサブロックのシミュレーションを実行するノードは、ソフトウェアブロックのシミュレーションを実行するノード上で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、統合制御ブロックは、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理し、他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、プロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用する第２のシミュレーションの実行を制御し、他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの第２のシミュレーションの実行を制御する。
【００１１】
本発明の第３の観点は、プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、を用い、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理方法であって、プロセッサブロックにより、ソフトウェアをシミュレートするソフトウェアブロックとのメッセージパッシング通信により実行コードフェッチとそれに基づくシミュレーションを実行し、ソフトウェアブロックのシミュレーションを実行するノードが、シミュレーションコードを必要に応じて動的に起動、終了するように制御し、新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックし、他のソフトウェアが実行中には、ハードウェアブロックのシミュレーション環境をコピーし、コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する。
【００１２】
本発明の第４の観点は、プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、を用い、シミュレーションの実行にあたり、各ブロックを別処理装置上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境で情報処理を行う情報処理方法であって、上記プロセッサブロックのシミュレーションを実行するノードにより、ソフトウェアブロックのシミュレーションを実行するノード２で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理し、他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、プロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用する第２のシミュレーションの実行を行い、他ソフトウェアブロックの第１のシミュレーションの実行がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの第２のシミュレーションの実行を行う。
【発明の効果】
【００１３】
本発明によれば、プロセッサブロックを含むハードウェアと、ソフトウェアのシミュレーションを行う際に、動的なシミュレーション実行環境制御を行う柔軟な開発環境の提供し、開発効率を向上させることが可能となる利点がある。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態を添付図面に関連付けて説明する。
【００１５】
図１は、本発明の実施形態に係る情報処理装置の基本概念を示すシステム構成図である。
図２は、本発明の実施形態に係る情報処理装置の要部の具体的なアーキテクチャを示す図である。
【００１６】
本情報処理装置１０は、図１に示すように、ノードＮＤ１を含むソフトウェアシミュレーション統合制御ブロック(以下、単に統合制御ブロックという)１１、ノードＮＤ２，ＮＤ３を含むソフトウェアブロック１２、複数（本実施形態では４）のノードＮＤ４〜ＮＤ７を含むハードウェアブロック１３、ノードＮＤ８を含むストレージ装置１４、並びに統合制御ブロック１１、ソフトウェアブロック１２、ストレージ装置１３、ハードウェア１４、およびノードＮＤ９を含む開発環境部１５が接続され、これらが相互に通信を行うためのネットワーク１６を有する。
【００１７】
統合制御ブロック１１は、全体の統制制御を行い、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理する。
【００１８】
図１および図２に示すノードＮＤ９を含む開発環境部１５は、ＭＰＩ版のＳｙｓｔｅｍＣのソースコード（Source Code）をＭＰＩ並列ライブラリとＳｙｓｔｅｍＣライブラリを使い、ＭＰＩ並列コンパイラでコンパイルを行い、シミュレーション実行形式のファイルを生成する計算機環境である。
【００１９】
ソフトウェアブロック１２は、ソフトウェアを実行するプログラムを収納し実行する。
ソフトウェアブロック１２は、たとえば図２に示すように、アプリケーション部１２Ａ、ミドルウェア部１２Ｂ、およびオペレーティングシステム（ＯＳ）１２Ｃにより形成される。
【００２０】
アプリケーション部１２Ａは、ＳｙｓｔｅｍＣソースコード（ＭＰＩ版）生成部１２１、ＭＰＩ並列コンパイラ１２２、およびシミュレーション実行形式部１２３を含む。
ミドルウェア部１２Ｂは、ＭＰＩ並列(関数)ライブラリ１２４、およびＳｙｓｔｅｍＣライブラリ１２５を含む。
また、オペレーティングシステム１２Ｃは、ラムホストファイル部１２６、ユーティリティ部１２７、および常駐プログラム部（ｌａｍｄ）１２８を含む。
【００２１】
このように形成されるソフトウェアブロック１２の実行ファイル生成および実行環境起動手順について、図３および図４に関連付けて説明する。
図３は、ソフトウェアブロック１２における実行ファイル生成の手順を示すフローチャートである。また、図４は、ソフトウェアブロック１２における実行環境起動手順を示すフローチャートである。
【００２２】
実行ファイルの生成処理においては、まず、ソースコード生成部１２１において、ＭＰＩ版のソースコードを作成する（ＳＴ１）。
ＭＰＩ関数ライブラリ１２４、ＳｙｓｔｅｍＣライブラリ１２５を参照しＭＰＩ並列コンパイラ１２２で作成したソースコードに関するコンパイルを行う（ＳＴ２）。
コンパイル結果を用いてシミュレーション実行形式部１２３が並列アプリケーションの実行ファイルを完成する（ＳＴ３）。完成した実行ファイルは、オペレーティングシステム１２Ｃに与えられる。
【００２３】
実行環境起動処理においては、実行ホストを設定し（ＳＴ１１）、ラム部１２８の環境の初期化を行う（ＳＴ１２）。
そして、実行ファイル生成処理で生成した実行ファイルに基づいて並列アプリケーションの実行を行う（ＳＴ１３）。
実行して、実行環境の停止である場合に（ＳＴ１４）、ラム部１２８の環境のクリーンアップを行う（ＳＴ１５）。
【００２４】
ハードウェアブロック１３は、プロセッサブロックを含む複数の回路ブロックであるノードＮＤ４〜ＮＤ７を有する。また、ノードＮＤ４〜ＮＤ７は、処理装置としてのＣＰＵあるいはハードウェア（Ｈ／Ｗ）ブロックを含む場合もある。
図２においては、ノードＮＤ４は１つのＣＰＵ４１を有し、ノードＮＤ５は２つのＣＰＵ５１を有し、ノードＮＤ６は２つのＣＰＵ６１，６２を有し、ノードＮＤ７は４つのＣＰＵ７１〜７４を有している例を示している。
【００２５】
ここで、各ノードの構成について説明する。
統合制御ブロック１１のノードＮＤ１、ソフトウェアブロック１２のノードＮＤ２，ＮＤ３、ハードウェアブロック１３のノードＮＤ４〜ＮＤ７は同様の構成を有し、ストレージ装置１４のノード８のみ異なる構成を有する。
【００２６】
図５は、ストレージ装置を除く各ブロックにおける第１ノードの構成例を示すブロック図である。
また、図６は、ストレージ装置における第２ノードの構成例を示すブロック図である。
【００２７】
第１ノード２０は、図５に示すように、演算処理部２１、制御部２２、蓄積部２３、通信部２４、入力部２５、および出力部２６がバスＢＳ１により接続されて形成されている。
図２の構成においては、たとえば、第１ノード２０における演算処理部２１と制御部２２によりＣＰＵが形成される。
【００２８】
第２ノード３０は、図６に示すように、制御部３１、蓄積部３２、通信部３３、入力部３４、および出力部３５がバスＢＳ２により接続されて形成されている。
【００２９】
図７は、作成された実行ファイルにより２つのノード(ハードウェア部)間でネットワークを介してデータ通信を行う例を示す図である。
【００３０】
図７の例は、メッセージパッシングの例であって、ノードＮＤ４でデータを入力し、ノードＮＤ４の出力メッセージをネットワーク１６を介してノードＮＤ５に入力し、ノードＮＤ５から所定の処理後の所望のデータを出力する。
【００３１】
図８は、作成された実行ファイルにより２つのノード(ハードウェア部)間で共有メモリを介してデータの授受を行う例を示す図である。
【００３２】
図８の例は、ネットワークの代わりに、共有メモリ１７を用いる例であって、ノードＮＤ４でデータを入力し、ノードＮＤ４の処理後のデータ（たとえば係数等）を共有メモリ１７に記憶し、この共有メモリ１７に記憶されたデータをノードＮＤ５で読み出し、ノードＮＤ５から所定の処理後の所望のデータを出力する。
【００３３】
以上の構成を有する情報処理装置１０は、シミュレーション実行にあたり、各ブロックを別ＣＰＵ上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境において、次の３点を特徴的な機能として有している。
(A)：「新たなソフトウェアを起動する場合に、既に他のソフトウェアが実行されていることをチェックする」点と、
(B)：「他のソフトウェアが実行中には、ハードウェアブロックのシミュレーション環境をコピーする」点と、
(C)：「コピーしたハードウェアブロックのシミュレーション環境に新ソフトウェアブロックを接続し、シミュレーションを開始する」点、の３点である。
【００３４】
(A)について：
単に他のソフトが実行されているかどうかをチェックすることはある。通常、複数実行できないソフトウェアでは、複数実行しようとする際に、他の同じソフトが実行されているかどうかをチェックしている。
【００３５】
(B)について：
「ハードウェアのシミュレーション環境をコピーする」自体が一般的なシステムにはない特徴的な点である。
【００３６】
この特徴的な機能を踏また代表的なシーケンスを説明する。
図９は、本実施形態のシステムにおける代表的なシーケンス例を示す図である。
図９においては、ハードウェアブロック１３のノードＮＤ４はプロセッサブロック、ノードＮＤ５はハードウェア（Ｈ／Ｗ）ブロック、ノードＮＤ６はプロセッサブロック、ノードＮＤ７はハードウェア（Ｈ／Ｗ）ブロックとして示している。
【００３７】
実施形態においては、前述したように、並列協調シミュレーション実行環境に適応しており、プロセッサブロックを含む複数の回路ブロックを有するハードウェアブロック１３と、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロック１２と、全体の統合制御を行う統合制御ブロック１１とを、有し、シミュレーション実行にあたり、各ブロックを別ＣＰＵ上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境において、たとえば以下の処理を行う。
【００３８】
プロセッサブロックのシミュレーションを実行するノードＮＤ１は、ソフトウェアブロック１２のシミュレーションを実行するノードＮＤ２、ＮＤ３上で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信する。
統合制御ブロック１１は、協調シミュレーション実行環境の資源状況とソフトウェアブロック１２の実行内容に基づいて、実行環境の構成を動的に制御し管理する。
他ソフトウェアブロックの実行（第１のシミュレーションＡ）がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、統合制御ブロック１１はプロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用する第２のシミュレーションの実行（シミュレーションＢ）を行う。
他ソフトウェアブロックの実行(第１のシミュレーションＡ)がなされている際に、起動するソフトウェアの内容が他ソフトウェアの継続する内容の場合、統合制御ブロック１１は他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの実行（第２のシミュレーションＢ）を行う。
【００３９】
本実施形態のシステムにおいて、プロセッサブロックはソフトウェアをシミュレートするソフトウェアブロックとのメッセージパッシングによる通信により実行コードのフェッチとそれに基づくシミュレーションを実行する。
ソフトウェアブロック１２のシミュレーションを実行するノードは動的にシミュレーションコードを起動、終了する統合制御ブロック１１により統合制御される。
ソフトウェアブロック以外のブロックは、ソフトウェアブロック１２の起動終了により、起動数に応じたシミュレーションシステムのコピー、終端制御を行う。
【００４０】
次に、統合制御ブロック１１によるソフトウェアブロックの起動終了の制御処理について、図１０および図１１に関連付けて説明する。
図１０は、新ソフトウェアブロックを起動する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を示すフローチャートである。
図１１は、ソフトウェアブロックを起動している場合であって、別のシナリオを追加する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を示すフローチャートである。
【００４１】
まず、図１０に関連付けて、新ソフトウェアブロックを起動する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を説明する。
【００４２】
既にソフトウェアブロックとハードウェアブロックを含むシミュレーションを実行している実行環境で、関連するシミュレーションを継続して実行する場合は、並列プロセスの追加処理を行う（ＳＴ２１）。
そして、既に他のソフトウェアブロックのシミュレーションが実行されているか否かをチェック、換言すれば、既に実行されている同じハードウェアブロックを含む他のシミュレーションの存在を、チェックする（ＳＴ２２，ＳＴ２３）。
既に他のシミュレーションが実行中である場合には、該当ハードウェアブロックのシミュレーション環境を並列実行環境上の新たなノード構成にコピーする（ＳＴ２４）。
そして、ステップＳＴ２４の処理後、または、ステップＳＴ２３において、既に実行中の他のシミュレーションが存在しないと判別した場合には、新たなソフトウェアブロックのシミュレーション環境に、コピーしたハードウェアブロックのシミュレーション環境を接続してシミュレーションを実行する（ＳＴ２５）。
これにより、起動処理が終了し、シミュレーションを続行する。
【００４３】
次に、図１１に関連付けて、別のシナリオを追加する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を説明する。
【００４４】
この場合、既存シミュレーション実行環境にシナリオを追加する（ＳＴ３１）。
次に、ハードウェアブロックの環境が同じものが既に実行されているかどうかをチェックする（ＳＴ３２、ＳＴ３３）。
既に同じものが実行中である場合、ソフトウェアブロック１２のオブジェクトのみを用いて追加シナリオ実行ファイルを作成する（ＳＴ３４）。
そして、生成した追加シナリオ実行ファイルを実行環境に投入する（ＳＴ３５）。
ステップＳＴ３５の処理後、または、ステップＳＴ３３において、同じものが実行中でないと判別した場合に、起動処理が終了し、シミュレーションを続行する。
【００４５】
以下、シナリオを追加する場合の処理について、具体例に関連付けて説明する。
シナリオ例：
ここでは、ＨＤＤ内蔵型のＤＶＤレコーダの制御用組み込みソフトの例で説明する。
【００４６】
シナリオの概要：
初期シナリオ：ＤＶＤレコーダの電源を投入し、起動したら、メニューからＨＤＤに録画済みの番組を選択し、再生操作をしているのが既存のシナリオとする。
追加シナリオ：上記既存シナリオでの再生中に、録画予約メニューを呼び出し、録画日時、チャンネルを登録し、再生に戻るケースとする。
追加シナリオの目的は、録画予約中に再生が一時停止となる機能が正常に働くかどうか、である。
【００４７】
図１２は、初期シナリオ時におけるハードウェアブロックおよびソフトウェアブロックの一例を示すブロック構成図である。
また、図１３は、追加シナリオ時におけるソフトウェアブロックの一例を示すブロック構成図である。
【００４８】
初期シナリオ構成：
ハードウェアブロック１３とソフトウェアブロック１２は、図１２および以下に示すような、初期シナリオ構成を有する。以下には、理解を容易にするために箇条書きのように列挙して示している。
【００４９】
1．ハードウェアブロック１３：
1-a：システムコントロール用周辺回路ブロック：  名称：ioctrl.cpp
1-b：周辺回路ブロック制御用ＣＰＵブロック：    名称：cpu0.cpp
1-c：ＣＰＵ用外部メモリ(DRAM)ブロック：        名称：dram.cpp
1-d：Ｃｏｄｅｃブロック：                      名称：codec.cpp
1-e：内部バス：                                名称：bus.cpp
1-f：ソフトウェアブロックとの通信用ブロック：  名称：soft_msging.cpp
2．ソフトウェアブロック：（電源投入から起動まで）
2-a：initial boot loader：                     名称：init.cpp
2-b：各種チェックルーチン：                    名称：check.cpp
2-c：ブートブロック：                          名称：boot.cpp
2-d：I/O初期化ブロック：                       名称：ioinit.cpp
2-e：表示初期化ブロック：                      名称：disp.cpp
2-f：ハードウェアブロックとの通信用ブロック：  名称：hard_msging.cpp
2-g：進行時間管理用ブロック：                  名称：time_keeper0.cpp
3.ソフトウェアブロック：（起動後、再生まで）
3-a：メニュー呼び出し操作：                    名称：ui_menu1.cpp
3-b：録画済み番組選択操作：                    名称：ui_content_select.cpp
3-c：選択した番組の再生操作：                  名称：ui_play.cpp
【００５０】
追加シナリオ構成：
ハードウェアブロック１３とソフトウェアブロック１２は、図１３および以下に示すような、初期シナリオ構成を有する。以下には、理解を容易にするために箇条書きのように列挙して示している。
【００５１】
4．ソフトウェアブロック：（再生中のメニュー操作による録画予約）
4-a：メニュー呼び出し操作：                      名称：ui_menu2.cpp
4-b：録画チャンネル入力操作：                    名称：ui_ch_select.cpp
4-c：録画開始日時入力操作：                      名称：ui_rec_start_input.cpp
4-d：録画終了日時入力操作：                      名称：ui_rec_end_input.cpp
4-e：ハードウェアブロックとの通信用ブロック：    名称：hard_msging1.cpp
4-f：進行時間管理用ブロック：                    名称：time_keeper1.cpp
5．ソフトウェアブロック：（動作が正しく機能したかどうかのチェック）
5-a：モードが再生になったかどうかのチェック：    名称：check_play.cpp
5-b：操作中、再生が一時停止になったかのチェック：名称：check_pause_time.cpp
【００５２】
起動段階では、ハードウェア環境は、ioctl.cpp, cpu0.cpp, dram.cpp, codec.cpp, bus.cppの各ソースコードをコンパイルした結果のオブジェクトと、ソフトウェア環境はinit.cpp,check.cpp, boot.cpp, ioinit.cpp, disp.cpp, ui_menu1.cpp, ui_content_select.cpp, ui_play.cppの各ソースコードをコンパイルした結果のオブジェクトをリンクし、実行ファイルを生成し、並列実行環境に投入する。
ここでハードウェアブロックとソフトウェアブロックはそれぞれ、soft_msging.cpp, hard_msging.cppの各ソースコードに対応する処理で相互に通信し、システム全体の動作を行う。
並列実行環境では、1-a 〜 1-eの複数のハードウェアブロックの実行用ノード群と、2-a 〜 3-cまでのソフトウェアブロックの実行用ノード群は別のノードで構成される。
【００５３】
実行されるノードとして、ハードウェアブロックの実行用ノードはws_hard0, ws_hard1, ws_hard2, ws_hard3, ws_hard4で並列実行されるものとする。
【００５４】
実行ノード対ブロックの対応：
ws_hard0：ioctrl.cpp
ws_hard1：cpu0.cpp
ws_hard2：dram.cpp
ws_hard3：codec.cpp
ws_hard4：bus.cpp
ws_hard5：soft_msging.cpp
【００５５】
ソフトウェアブロックの実行用ノードはws_soft0, ws_soft1, ws_soft2, ws_soft3, ws_soft4, ws_soft5, ws_soft6, ws_soft7, ws_soft8で並列実行されるものとする。
【００５６】
実行ノード対ブロックの対応：
ws_soft0：init.cpp
ws_soft1：check.cpp
ws_soft2：boot.cpp
ws_soft3：ioinit.cpp
ws_soft4：disp.cpp
ws_soft5：hard_msging.cpp, time_keeper0.cpp
ws_soft6：ui_menu1.cpp
ws_soft7：ui_content_select.cpp
ws_soft8：ui_play.cpp
【００５７】
この段階で初期シナリオの実行が行われ、ハードウェアとソフトウェア（初期シナリオ）の協調並列実行処理が進む。
【００５８】
次に追加シナリオの投入を行う。
ハードウェアブロックは、初期シナリオで使用したものと同じ、ioctl.cpp, cpu0.cpp, dram.cpp, codec.cpp,bus.cppの各ソースコードをコンパイルした結果のオブジェクトである。
【００５９】
追加シナリオであるソフトウェアブロックはui_menu2.cpp, ui_ch_select.cpp, ui_rec_start_input.cpp, ui_rec_end_input.cpp, hard_msging1.cpp, time_keeper1.cppに加え、動作チェック用のcheck_play.cpp, check_pause_time.cppの各ソースコードをコンパイルした結果のオブジェクトである。
【００６０】
ハードウェアとソフトウェアのリンク実行の際の処理は、既に実行されている並列実行環境を確認し、ハードウェアブロックの環境が同じものが既に実行されている場合は、ソフトウェアブロックのオブジェクトのみを用いて実行ファイルを生成し、生成した実行ファイルを並列実行環境に投入する。
これらの処理は、図１１のフローに対応している。
【００６１】
実行用ノードはws_soft9, ws_soft10, ws_soft2, ws_soft3, ws_soft4, ws_soft5, ws_soft6, ws_soft7, ws_soft8で並列実行されるものとする。
【００６２】
実行ノード対ブロックの対応
ws_soft9：check_play.cpp
ws_soft10：check_pause_time.cpp
【００６３】
ちなみに、追加シナリオではなく、全く新たなシナリオを同じハードウェアブロック上で実行したい場合は、ハードウェアブロックの各ノードの環境を別ノードにコピーして、同様に実行する。
【００６４】
以上のように、既に実行中のシミュレーションにシナリオを追加したり、実行環境を動的に新構築することにより、以下の効果を得ることができる。
ＬＳＩのシミュレーションは多数のシナリオを実行させ、網羅的に検証することで機能検証、品質向上、ＴＡＴ短縮を実現することができる。したがって、作成したシナリオを実現しつつ、カバレッジをあげるために、後から新シナリオを作成、追加し、実行中の既存シミュレーションにマージしたり、新たな別シミュレーションを起動できることは、ＬＳＩの品質向上、設計ＴＡＴ短縮におおいに効果がある。
【００６５】
以上説明したように、本実施形態によれば、プロセッサブロックを含む複数の回路ブロックと、ソフトウェアを実行するプログラムを収納し実行するソフトウェアブロックと、全体の統合制御を行う統合制御ブロックと、を有し、シミュレーション実行にあたり、各ブロックを別ＣＰＵ上で並列処理するハードウェア、ソフトウェアの協調シミュレーション実行環境において、次の特徴的な構成を有する。
すなわち、プロセッサブロックのシミュレーションを実行するノード１は、ソフトウェアブロックのシミュレーションを実行するノード２上で実行されるプロセスから実行プログラムの命令コードをメッセージパッシングによる通信により受信し、統合制御ブロックは、協調シミュレーション実行環境の資源状況とソフトウェアブロックの実行内容に基づいて、実行環境の構成を動的に制御管理し、他ソフトウェアブロックの実行（第１のシミュレーションＡ）がなされている際に、起動するソフトウェアの内容が他ソフトウェアと異なる内容の場合、統合制御ブロックはプロセッサブロックを含む複数の回路ブロックをコピーした複製ブロックと自ソフトウェアブロックで構成される構成と、シミュレーション資源として別ノードを指定し、システム上の別ノードを使用するシミュレーションの実行（第２のシミュレーションＢ）を行い、他ソフトウェアブロックの実行(第１のシミュレーションＡ)がなされている際に、起動するソフトウェアの内容が他ソフトウェアに継続する内容の場合、統合制御ブロックは他ソフトウェアブロックの実行状況をモニターし、実行が完了したことを検出すると、自身のソフトウェアブロックの実行（第２のシミュレーションＢ）を行うことから、以下の効果を得ることができる。
【００６６】
ソフトウェアとハードウェアのシミュレーションを行う際に、既にシミュレーションが実行されている際に、関連したシミュレーションを継続して実行したい場合に追加コードを付加して実行することができ、関連しない別シミュレーションをプロセッサを含む同じハードウェア環境で実行したい場合には、本並列実行環境の中で、別ノードを利用する同じハードウェアとあらたなシミュレーションの為のソフトウェアコードの実行を行うことができ、大幅は設計のターンアラウンドタイム（ＴＡＴ）の短縮を行うことができる。
【００６７】
この効果についてさらに具体的に説明する。
【００６８】
既存システムにおいては、ソフトウェアとハードウェアブロックを含むＥＤＡシミュレーションを行うための並列実行プログラムを構成する場合は、あらかじめシミュレーションストーリを最後まで作成した上でコーディングし、コンパイルし、実行（Ａ）を行う必要がある。ストーリを追加する場合は、別途コーディングを行い、コンパイルし、再実行（Ｂ）を行う必要がある。
つまり、（Ａ）の実行にかかる所要時間をＴＡ（Time for A）とし、（Ｂ）の実行にかかる時間をＴＢ（Time for B）とすると、たとえばＴＡ＝１０時間、ＴＢ＝１２時間とした場合、一般的にシステムで、ＴＡを実行中にＴＡ開始から８時間後にＴＢを開始する場合（実行例１）、８＋１２＝２０時間かかる。ＴＡ終了後にＴＢ実行の場合（実行例２）は１０＋１２＝２２時間かかる。ＴＡにストーリ追加したＴＢの追加部分をＴＣとすると、ＴＣが２時間である。
本実施形態においては、ＴＡの実行中にＴＢ´を実行すると、ＴＡ実行後に追加の２時間のシミュレーションを行うため、合計で１２時間で完了する。
【００６９】
すなわち、一般的なシステムのＴＡＴは、実行例１で２０時間、実行例２で２２時間となる。
これに対して、本発明の実施形態の信号処システムのＴＡＴは１２時間となる。
【００７０】
ＴＡＴの改善は、実行例１の場合、１２／２０＝６０％となり、４０％改善される。
実行例２の場合、１２／２２＝５５％となり、４５％改善される。
【００７１】
なお本発明によれば、ハードウェア的に再構成可能なリコンフィギャラブルハードウェアの場合の、再構成するストーリを追加する場合にも適用可能である。
【００７２】
なお、本装置は、半導体開発設計環境において、プロセッサブロックを含むハードウェアと、ソフトウェアのシミュレーション、たとえばアナログ回路のスパイスシミュレーションを行う際に、動的なシミュレーション実行環境制御を行う柔軟な開発環境を提供し、開発効率を向上させることができる。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施形態に係る情報処理装置の基本概念を示すシステム構成図である。
【図２】本発明の実施形態に係る情報処理装置の要部の具体的なアーキテクチャを示す図である。
【図３】ソフトウェアブロックにおける実行ファイル生成の手順を示すフローチャートである。
【図４】ソフトウェアブロックにおける実行環境起動手順を示すフローチャートである。
【図５】ストレージ装置を除く各ブロックにおける第１ノードの構成例を示すブロック図である。
【図６】ストレージ装置における第２ノードの構成例を示すブロック図である。
【図７】作成された実行ファイルにより２つのノード(ハードウェア部)間でネットワークを介してデータ通信を行う例を示す図である。
【図８】作成された実行ファイルにより２つのノード(ハードウェア部)間で共有メモリを介してデータの授受を行う例を示す図である。
【図９】本実施形態のシステムにおける代表的なシーケンス例を示す図である。
【図１０】新ソフトウェアブロックを起動する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を示すフローチャートである。
【図１１】ソフトウェアブロックを起動している場合であって、別のシナリオを追加する場合の、統合制御ブロックによるソフトウェアブロック起動終了制御手順を示すフローチャートである。
【図１２】初期シナリオ時におけるハードウェアブロックおよびソフトウェアブロックの一例を示すブロック構成図である。
【図１３】追加シナリオ時におけるソフトウェアブロックの一例を示すブロック構成図である。
【符号の説明】
【００７４】
１０・・・情報処理装置、１１・・・ソフトウェアシミュレーション統合制御ブロック(統合制御ブロック)、１２・・・ソフトウェアブロック、１３・・・ハードウェアブロック、１４・・・ストレージ装置、１５・・・開発環境部、１６・・・ネットワーク、１７・・・共有メモリ、ＮＤ１〜ＮＤ９・・・ノード、２０・・・第１ノード、３０・・・第２ノード。
【図１】
2008021142.tif 000003
【図２】
2008021142.tif 000004
【図３】
2008021142.tif 000005
【図４】
2008021142.tif 000006
【図５】
2008021142.tif 000007
【図６】
2008021142.tif 000008
【図７】
2008021142.tif 000009
【図８】
2008021142.tif 000010
【図９】
2008021142.tif 000011
【図１０】
2008021142.tif 000012
【図１１】
2008021142.tif 000013
【図１２】
2008021142.tif 000014
【図１３】
2008021142.tif 000015