"開発対象の機能ブロックをシミュレートするためのシミュレーション装置であって、ユーザプログラムを実行することによって前記機能ブロックを制御する第1のプロセッサと、シミュレータプログラムを実行することによって前記機能ブロックをシミュレートする第2のプロセッサと、前記第1のプロセッサおよび前記第2のプロセッサによってアクセスされる共有メモリとを含み、前記共有メモリには、前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、前記第1のプロセッサは、前記内蔵レジスタ領域にデータを書き込むことによって前記第2のプロセッサによるシミュレーションを制御し、前記第2のプロセッサは、前記内蔵レジスタ領域に書き込まれたデータに応じて前記機能ブロックのシミュレーションを実行する、シミュレーション装置。前記内蔵レジスタ領域は、前記機能ブロックの内蔵レジスタの相対アドレスと一致する前記共有メモリの領域にマッピングされる、請求項1記載のシミュレーション装置。前記共有メモリには、さらに前記機能ブロックの内蔵メモリに相当する内蔵メモリ領域がマッピングされており、前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ演算処理要求が書き込まれたときに、前記内蔵メモリ領域に格納されているデータに対して演算処理を行なう、請求項1または2記載のシミュレーション装置。前記共有メモリには、さらにデータ演算処理に必要な実行サイクル数を記録する実行記録領域がマッピングされており、前記第2のプロセッサは、データ演算処理を行なうときにその実行サイクル数を計算して前記実行記録領域に格納する、請求項3記載のシミュレーション装置。前記共有メモリには、さらに前記機能ブロックの内蔵メモリに相当する内蔵メモリ領域がマッピングされており、前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ転送処理要求が書き込まれたときに、外部メモリからデータを読み出して前記内蔵メモリ領域に転送する、請求項1または2記載のシミュレーション装置。前記第2のプロセッサは、前記第1のプロセッサによって前記内蔵レジスタ領域にデータ転送処理要求が書き込まれたときに、前記内蔵メモリ領域からデータを読み出して前記外部メモリに転送する、請求項5記載のシミュレーション装置。前記共有メモリには、さらにデータ転送に必要な転送サイクル数および転送データ量を記録する転送記録領域がマッピングされており、前記第2のプロセッサは、データ転送処理を行なうときにその転送サイクル数および転送データ量を計算して前記転送記録領域に格納する、請求項5または6記載のシミュレーション装置。前記シミュレーション装置はさらに、前記機能ブロックをシミュレートする第3のプロセッサを含み、前記シミュレータプログラムが少なくとも2つに分割されており、前記第2のプロセッサおよび前記第3のプロセッサが、前記分割されたシミュレータプログラムを実行する、請求項1~7のいずれかに記載のシミュレーション装置。第1のプロセッサ、第2のプロセッサおよび共有メモリを含んだシステムにおける開発対象の機能ブロックをシミュレートするためのシミュレーション方法であって、前記共有メモリには、前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、前記第1のプロセッサがユーザプログラムを実行することによって、前記内蔵レジスタ領域にデータを書き込んで前記第2のプロセッサによるシミュレーションを制御するステップと、前記第2のプロセッサがシミュレータプログラムを実行することによって、前記内蔵レジスタ領域に書き込まれたデータに応じて前記機能ブロックのシミュレーションを実行するステップとを含む、シミュレーション方法。第1のプロセッサ、第2のプロセッサおよび共有メモリを含んだシステムにおける開発対象の機能ブロックをシミュレートするためのコンピュータプログラムであって、前記第2のプロセッサが、前記共有メモリにマッピングされた前記機能ブロックの内蔵レジスタに相当する内蔵レジスタ領域に前記第1のプロセッサによって書き込まれた処理内容を読み出すステップと、前記第2のプロセッサが、前記読み出した処理内容に応じて前記機能ブロックのシミュレーションを実行するステップとを含む、コンピュータプログラム。上述の特許文献1および特許文献2は、汎用PCPersonalComputer上でモデルシミュレータを構成して実行する方式に関するものである。このモデルシミュレータにおいては、ハードウェアの振る舞いを全てソフトウェアで記述することによって、汎用PC上でのシミュレーションを可能としたものである。この技術を用いた場合、ソフトウェアによる自由な記述が可能であるため、新規IPの動作についての振る舞いを記述することでシミュレータを開発することが可能である。しかしながら、そのIPがSoCに搭載される場合、既存のCPUや周辺IOとの協調動作が必要となるため、これらの既存モジュールも全てシミュレータとして動作させる必要がある。したがって、開発したモデルシミュレータのみを用いて先行的にこれらの外部のモジュールも含んだシステムに対するソフトウェア開発を実施することが困難であるといった問題点があった。また、上述のモデルシミュレータを用いたシミュレーション環境の他に、実際のハードウェア設計に用いるRTLRegisterTransferLanguageをFPGAFieldProgrammableGateArrayに実装して、その動作を確認するFPGAを用いたプロトタイプ環境がある。この環境においては、周辺IOなどを含めた実機動作の確認が可能であるため、実際のLSIに近い環境でソフトウェア開発を行なうことが可能である。しかしながら、よりハードウェア設計に近い開発が必要となるため、新規IPに対してこれを適用するためにはその開発のための工数が大きくなり、ハードウェアへのフィードバックが必要な場合には、そのアーキテクチャの変更に伴って開発期間が増大するといった問題点があった。また、近年ではSoCに複数のCPUを搭載したシステムLSILargeScaleIntegratedcircuitが開発されており、所望の性能を満たすことが可能である場合には、単一または複数のCPUにユーザプログラムを実行させることにより機能IPに相当する機能を実装することも可能である。このようなマルチコア構成のシミュレーション装置としては、上記の特許文献3および特許文献4に開示された発明を挙げることができる。特許文献3は、複数のCPUによってコントローラモデルとシミュレータとを構成し、ユーザインタフェースからこれらに選択的にアクセスすることによりシミュレーションを行なうものである。この構成によって、CPUに機能IPの機能を割り当て、機能IP以外の周辺機能としてはCPUが接続されている実際のバスシステムのものを使用することで、高い精度のシミュレーションが可能である。しかしながら、ユーザインタフェースからシミュレータを制御するため、実際に機能IPを制御するCPU上で動作するユーザプログラムを、開発後のSoCでそのまま使用できないといった問題点があった。また、特許文献4は、シミュレーション対象へのアクセスを処理するエミュレーション用プロセッサと、専用のシステムプログラムおよびメモリから構成されるエミュレーション用モジュールとを搭載し、このエミュレーションモジュールが機能IPとして動作するものである。しかしながら、機能IPと同様の構成をエミュレーションモジュールによって実現するが、マルチコアを構成するCPUのうち1つまたは複数のCPUをこのような専用のエミュレーションモジュールとして構成する必要があるため、このような構成を有するSoCを、シミュレーション装置の専用用途のSoCとして設計して準備する必要があるといった問題点があった。本発明は、上記問題点を解決するためになされたものであり、その目的は、機能IPの精度の高いシミュレーションを実現することが可能なシミュレーション装置、シミュレーション方法およびそのコンピュータプログラムを提供することである。本発明の一実施例によれば、開発対象の機能ブロックをシミュレートするためのシミュレーション装置が提供される。シミュレーション装置は、ユーザプログラムを実行することによって機能IPを制御する第1のプロセッサと、シミュレータプログラムを実行することによって機能IPをシミュレートする第2のプロセッサと、第1のプロセッサおよび第2のプロセッサによってアクセスされる共有メモリとを含む。共有メモリには、機能IPの内蔵レジスタに相当する内蔵レジスタ領域がマッピングされており、第1のプロセッサは、内蔵レジスタ領域にデータを書き込むことによって第2のプロセッサによるシミュレーションを制御し、第2のプロセッサは、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行する。本発明の一実施例によれば、第2のプロセッサが、内蔵レジスタ領域に書き込まれたデータに応じて機能IPのシミュレーションを実行するので、機能IPの精度の高いシミュレーションを実現することが可能となる。図1は、本発明の対象となるシステムの一例を示す図である。このシステムは、システムオンチップSoC1と、ソフトウェア開発環境としての汎用PC2と、ユーザプログラム4が記憶される外部メモリ3とを含む。また、SoC1は、CPU11と、内部メモリ12と、デバッグ回路13と、周辺I/O14および15と、機能IP16と、開発対象となる新規IP17とを含む。なお、CPU11と、内部メモリ12と、外部メモリ3と、周辺I/O14および15と、機能IP16と、新規IP17とが、システムバス18を介して接続される。デバッグ回路13は、ソフトウェア開発環境である汎用PC2から受けた指示に応じて、CPU11にユーザプログラムの実行を行なわせる。図2は、CPU11がユーザプログラム4を実行するときのSoC1内の動作を説明するための図である。また、図3は、CPU11がユーザプログラム4を実行するときの処理手順を説明するためのフローチャートである。以下、図2および図3を参照しながら、図1に示すシステムの動作を説明する。まず、SoC1内の各モジュールがリセットされS11、ユーザプログラム4が外部メモリ3にロードされるS12、図2の1。このユーザプログラム4は、汎用PC2から外部メモリ3に転送されてもよいし、図示しない外部記憶装置から外部メモリ3に転送されてもよい。次に、ユーザが汎用PC2を介してデバッグ回路13にユーザプログラム4の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU11によるユーザプログラム4の実行が開始されるS13。CPU11がユーザプログラム4の実行を開始すると、新規IP機能IP17の内蔵レジスタ21などの初期化や、パラメータの書き込みなどを行なって、新規IP17の設定を行なうS14、図2の2。なお、本発明の実施の形態においては、内蔵レジスタ21などのレジスタがメモリマップにマッピングされる、いわゆるメモリマップドI/Oが採用される。次に、CPU11は、システムバス18に接続される周辺I/O14または15を介して、SoC1外部から処理対象となるデータ処理データ5を読み込み、外部メモリ3または内部メモリ12に格納するS15、図2の3。たとえば、SoC1が画像処理を行なう場合には、カメラで撮像された画像データがカメラインタフェースなどの周辺I/Oを介して、外部メモリ3または内部メモリ12に格納されることになる。次に、CPU11は、機能IP17による処理を実行するために、外部メモリ3または内部メモリ12から機能IP17内に搭載されるラインバッファなどの内蔵メモリ20に処理データ5を転送するS16、図2の4。処理データ5の転送が完了すると、機能IP17による処理が可能な状態となるため、CPU11は、機能IP17の内蔵レジスタ21内の起動レジスタに起動信号を書き込むことで、機能IP17による処理が開始されるS17、図2の5。機能IP17は、データ処理を行ない、その実行結果を内蔵メモリ20に格納するS18。そして、データ処理が完了すると、機能IP17は、CPU11に対してデータ処理完了を通知するS19、図2の6。この通知の方法としては、機能IP17が割り込み回路19を介してCPU11に割り込み要求を出力するようにしてもよいし、機能IP17の内蔵レジスタ21に実行状態レジスタを用意しておき、CPU11がこの実行状態レジスタを定期的にポーリングして処理完了を検知するようにしてもよい。CPU11は、機能IP17からの処理完了通知を受けると、機能IP17の内蔵メモリ20から処理結果のデータを外部メモリ3または内部メモリ12に転送するS20、図2の7。次に、外部メモリ3または内部メモリ12に格納された処理結果のデータが周辺I/O14または15を介して外部に出力されるS21、図2の8。そして、機能IP17による処理が必要回数だけ行なわれたか否かが判定されるS22。必要回数が完了していなければS22,No、ステップS15に戻って以降の処理を繰り返す。また、必要回数が完了していればS22,Yes、処理を終了する。このように、新規IP17を開発してSoC1に搭載する場合、SoC1に搭載するハードウェアロジックの開発のみならず、ユーザプログラム4に相当する、機能IP17を利用するためにCPU11から機能IP17を制御するためのドライバや、その機能IP17を用いたアプリケーション、ミドルウェアなどのソフトウェアの開発が必要となる。また、開発した新規IP17を用いてどの程度所望の処理の高速化が達成されているかを早期に解析したり、新規IP17が必要とするシステムバスのデータ転送量を解析したりすることで、そのソフトウェア開発の成果をハードウェアロジックの仕様にフィードバックすることができ、新規IP開発やシステム設計の効率化を実現できる。第1の実施の形態図4は、本発明の第1の実施の形態におけるシミュレーション装置を含んだシステムの一例を示す図である。このシステムは、SoC1と、ソフトウェア開発環境としての汎用PC2と、シミュレータプログラムCPU16およびユーザプログラムCPU07が記憶される外部メモリ3とを含む。また、SoC1は、デバッグ回路13と、周辺I/O14および15と、機能IP16と、CPU031と、CPU132と、共有メモリ33とを含む。なお、CPU031と、CPU132と、共有メモリ33と、外部メモリ3と、周辺I/O14および15と、機能IP16とが、システムバス18を介して接続される。なお、図1に示すシステムと同じ構成および機能を有する部分については、同じ参照番号を付すものとする。本実施の形態におけるシステムにおいては、CPU132、共有メモリ33およびシミュレータプログラム6によって、図2に示す新規IP17の機能をエミュレートするものであり、これらによってIPシミュレータが構成されるものとする。図5は、IPシミュレータの構成を詳細に説明するための図である。CPU031をユーザプログラム7を動作させるターゲットCPUとして割り当て、CPU132をシミュレータプログラム6を動作させるシミュレータCPUとして割り当てる。また、共有メモリ33にはシミュレータ領域として、新規IP17の内蔵メモリ20に相当する内蔵メモリ領域41と、内蔵レジスタ21に相当する内蔵レジスタ領域42と、演算処理の実行サイクル数の計測および記録のための実行記録領域43と、データ転送のサイクル数およびデータ転送量の計測および記録のための転送記録領域44との4領域をマッピングする。図6は、共有メモリ33にマッピングされるシミュレータ領域をさらに詳細に説明するための図である。内蔵メモリ領域41には、たとえば新規IP17のラインバッファやデータバッファとして内蔵されているメモリ領域がマッピングされる。内蔵レジスタ領域42には、新規IP17に実装されている全ての内蔵レジスタがマッピングされる。このとき、内蔵レジスタの相対アドレスを維持してマッピングする。これによって、ユーザプログラム7で使用する新規IP17のベースアドレスのみを変更するだけで、その制御対象をハードウェアロジックからIPシミュレータへ、またはIPシミュレータからハードウェアロジックへ変更することが可能となる。マッピングされる内蔵レジスタとして、新規IP17のパラメータを設定するためのレジスタ、演算動作やデータ転送動作を起動するための起動レジスタ、新規IP17の実行状態を示す状態レジスタなどを挙げることができるが、これらに限られるものではない。これらのレジスタは、ユーザプログラム7が動作するCPU031による参照および書き込みが行なわれると共に、シミュレータプログラム6が動作するCPU132からも同様に参照および書き込みが行なわれる。マルチコア構成のシステムバスに接続される共有メモリには、通常、このような複数のCPUコアの書き込みによるデータの一貫性コンシステンシを制御するためのスヌープ機能が搭載されており、シミュレータプログラム6を実装する上でのソフトウェア上の制約は小さい。実行記録領域43には、動作中の演算処理の実行サイクル数をカウントするための1つ以上の実行サイクル数カウンタと、実行結果を、シミュレーション時間や実行箇所などのパラメータ、処理内容および実行サイクル数と共に記録するトレースバッファとがマッピングされる。実行結果については、その実行回数がシミュレーションにより膨大な回数となるため、シミュレータプログラム6によって共有メモリ33から外部メモリ3にコピーして保存するようにすることも可能である。また、実行結果が共有メモリ33にマッピングされていることから、この処理結果を汎用PCソフトウェア開発環境2から参照することも可能であり、実行サイクル数に基づく性能解析が可能となる。転送記録領域44には、データの転送サイクル数をカウントするための転送サイクル数カウンタと、システムバス18の負荷解析のために転送データ量をカウントする転送データ数カウンタとがマッピングされる。さらに、データ転送に関するパラメータ、転送サイクル数および転送データ量を記録する領域もマッピングされる。転送サイクル数および転送データ量が共有メモリ33にマッピングされていることから、これらのデータを汎用PCソフトウェア開発環境2から参照することも可能であり、転送データに基づくシステムバス18の負荷解析が可能となる。図7は、本発明の実施の形態におけるシミュレーション装置を含んだシステムの動作を説明するフローチャートである。また、図8は、CPU031およびCPU132がそれぞれユーザプログラム7およびシミュレータプログラム6を実行するときのSoC1内の動作を説明するための図である。以下、図7および図8を参照しながら、シミュレーション装置を含んだシステムの動作について説明する。なお、図7に示すフローチャートにおいて、汎用PCソフトウェア開発環境2の処理手順をステップS31~S35、ユーザプログラム7が動作するCPU031の処理手順をステップS41~S49、シミュレータプログラム6が動作するCPU132の処理手順をステップS51~S61で示している。まず、SoC1内の各モジュールがリセットされS31、ユーザプログラム7が外部メモリ3にロードされS32、図8の1、シミュレータプログラム6が外部メモリ3にロードされるS33、図8の2。次に、ユーザが汎用PC2を介してデバッグ回路13にシミュレータプログラム6の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU132によるシミュレータプログラム6の実行が開始されるS34、図8の3。このとき、CPU132がシミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ないS51、図8の5、内蔵レジスタ領域42の内容を参照してS52、内蔵レジスタ領域42の内容に変化があるか否かを判定する、すなわち一定周期でポーリングを行なうS53。このように、CPU132は実行待機の状態となり、新規IP17と同等の動作を行なうIPシミュレータとして動作するようになる。IPシミュレータの起動後に、汎用PC2が、デバッグ回路13にユーザプログラム7の実行開始を指示すると、デバッグ回路13からの指示に応じてCPU031によるユーザプログラム7の実行が開始されるS35、図8の4。このとき、IPシミュレータが既に動作しているため、CPU031は、図3に示すフローチャートのステップS14~S22と同様の動作を行なう。すなわち、CPU031がユーザプログラム7の実行を開始すると、新規IP機能IP17の設定を行なうのと同様に、共有メモリ33の内蔵レジスタ領域42などの初期化や、パラメータの書き込みなどを行なうS41、図8の6。次に、CPU031は、システムバス18に接続される周辺I/O14または15を介して、SoC1外部から処理対象となるデータを読み込み、外部メモリ3に格納するS42。次に、CPU031は、IPシミュレータによるデータ演算処理を実行するために、外部メモリ3から共有メモリ33内のラインバッファなどの内蔵メモリ領域41に処理データを転送するS43。このとき、CPU031は、IPシミュレータに対してデータ転送を行なわせるが、その処理の詳細は後述する。処理データの転送が完了すると、IPシミュレータによるデータ演算処理が可能な状態となるため、CPU031は、共有メモリ33の内蔵レジスタ領域42内の起動レジスタに起動信号を書き込むことによって、IPシミュレータによるデータ演算処理が開始されるS44。そして、CPU031は、IPシミュレータによるデータ演算処理待ち状態となるS45。IPシミュレータによるデータ演算処理が完了すると、CPU031は、IPシミュレータからの通知によってデータ演算処理完了を検出しS46、共有メモリ33の内蔵メモリ領域41から処理結果のデータを外部メモリ3に転送するS47。このとき、CPU031は、IPシミュレータに対してデータ転送を行なわせるが、その処理の詳細は後述する。次に、外部メモリ3に格納された処理結果のデータが周辺I/O14または15を介して外部に出力されるS48。そして、IPシミュレータによる処理が必要回数だけ行なわれたか否かが判定されるS49。必要回数が完了していなければS49,No、ステップS42に戻って以降の処理を繰り返す。また、必要回数が完了していればS49,Yes、処理を終了する。上述のように、CPU132は、IPシミュレータ起動後に、内蔵レジスタ領域42の内容に変化があるか否かをポーリングしておりS53、CPU031によって内蔵レジスタ領域42に書き込みがあったときに、その内容に応じて、データ演算処理、データ転送処理または停止処理のいずれかを実行する。内蔵レジスタ領域42にデータ演算処理の開始指示が書き込まれていればS53,処理スタート、CPU132は、後述のデータ演算処理を行なうS54。そして、その演算処理に対応した実行サイクル数を加算することによって実行サイクル数を更新しS55、CPU031に対してデータ処理完了を通知するS56。そして、内蔵レジスタ領域42の内容を更新しS60、ステップS52に戻って以降の処理を繰り返す。また、内蔵レジスタ領域42にデータ転送処理の開始指示が書き込まれていればS53,転送スタート、CPU132は、後述のデータ転送処理を行なうS57。そして、そのデータ転送処理に対応した転送サイクル数を加算することによって転送サイクル数を更新しS58、そのデータ転送処理に対応した転送データ量を加算することによって転送データ量を更新するS59。そして、内蔵レジスタ領域42の内容を更新しS60、ステップS52に戻って以降の処理を繰り返す。また、内蔵レジスタ領域42に停止処理の指示が書き込まれていればS53,停止、CPU132は処理を終了する。なお、図7に示すフローチャートにおいては、IPシミュレータの動作として、演算処理動作、データ転送動作、停止動作を記載しているが、これらの動作は全てハードウェアロジックである機能IP17の仕様に準ずるものであり、これらの動作に限定されるものではない。図9は、図7に示すフローチャート中のデータ演算処理に関する部分をさらに詳細に説明するためのフローチャートである。また、図10は、IPシミュレータがデータ演算処理を行なうときのSoC1の動作を説明するための図である。以下、図9および図10を参照しながら、データ演算処理動作について説明する。上述のように、CPU132は、シミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ないS81、内蔵レジスタ領域42の内容をポーリングしてS82,S83、実行待機状態となっている。CPU031は、内蔵レジスタ領域42の中の起動レジスタに相当する領域に起動信号を書き込むことによりS71、図10の1、IPシミュレータによる演算処理が開始される。このとき、演算に必要なデータは既に内蔵メモリ領域41であるラインバッファやデータバッファに転送されているため、データ演算処理が可能な状態となっている。CPU132は、CPU031による起動レジスタへの書き込みを検知すると、それがデータ演算処理の開始を示していればS83、処理スタート、データ演算動作を開始する。CPU132は、共有メモリ33の内蔵メモリ領域41に格納されるデータに対して演算処理を行ない、その演算結果を出力領域に相当する内蔵メモリ領域41に格納するS84、図10の2。このとき、CPU132は、実行サイクル数カウンタを用い、実行したデータ演算処理に応じて、機能IP17における実行サイクル数をカウントしS85、その実行サイクル数を実行記録領域43の実行サイクル数記録領域の値に加算して書き戻すS86、図10の4。必要であれば、そのシミュレーション時間、実行箇所、処理内容などの統計情報を実行データ記録として実行記録領域43に保存する。なお、演算処理の種別に対応して予め機能IP17における実行サイクル数を規定しておき、その実行サイクル数を加算することによって実際の実行サイクル数を算出する。このように、実行記録領域43に実行サイクル数およびシミュレーション時間を記録し、データ演算完了後に汎用PCソフトウェア開発環境2からそれらの情報を参照することによって、IPシミュレータの実行時間が実際のハードウェアロジックと異なる場合でも、その実行性能の高精度な見積もりが可能となる。次に、CPU132は、起動レジスタなどのレジスタの内容を更新しS87、図10の5、状態レジスタの内容を更新してデータ演算処理完了としS88、図10の6、ステップS82に戻って以降の処理を繰り返す。CPU031は、状態レジスタを参照してS72、データ演算処理が完了したか否かを判定するS73。データ演算処理が完了していなければS73,No、ステップS72に戻って以降の処理を繰り返す。また、データ演算処理が完了していればS73,Yes、データ演算動作を終了する。なお、図9においては、CPU031が、機能IP17の実行状態を記録する状態レジスタをポーリングすることによってIPシミュレータのデータ演算処理完了を検知しているが、上述のようにCPU031に割り込み要求を発行することによってデータ演算完了通知を行なうことも可能である。このような完了通知の方法は、開発対象の機能IP17の仕様に準ずる。図11は、図7に示すフローチャート中のデータ転送処理に関する部分をさらに詳細に説明するためのフローチャートである。また、図12は、IPシミュレータがデータ転送処理を行なうときのSoC1の動作を説明するための図である。以下、図11および図12を参照しながら、データ転送処理動作について説明する。上述のように、CPU132は、シミュレータプログラム6の実行を開始して共有メモリ33の各領域の初期化を行ないS101、内蔵レジスタ領域42の内容をポーリングしてS102,S103、実行待機状態となっている。CPU031は、内蔵レジスタ領域42に、転送されるデータ数、転送元アドレス、転送先アドレス、データの種類などのデータ転送に必要な転送パラメータを設定するS91、図12の1。CPU132は、内蔵レジスタ領域42の内容に変化があることを検出するとS103,Yes、その設定によって影響を受ける状態レジスタなどの内部状態を更新しS104、図12の2、再度、内蔵レジスタ領域42の内容をポーリングしてS105,S106、実行待機状態となる。この状態で、CPU031が、内蔵レジスタ領域42内の転送開始レジスタに開始信号を書き込むとS92、図12の3、CPU132は、設定された転送パラメータに応じてデータ転送処理を開始するS107、図12の4。データ転送処理が内蔵メモリ領域41への書き込み処理の場合、CPU132は、外部メモリ3の指定された転送元アドレスから転送対象データを読み出し、そのデータを共有メモリ33のラインバッファやデータバッファである内蔵メモリ領域41の指定された領域に書き込む。また、データ転送処理が内蔵メモリ領域41からの読み出し処理の場合、CPU132は、内蔵メモリ領域41の指定された領域からデータを読み出し、そのデータを外部メモリ3の指定された転送先アドレスに書き込む。このデータ転送処理は、内蔵レジスタ領域42に予め設定されたパラメータに従って実行され、所望のデータ容量のデータ転送が完了するまで繰り返される。このとき、CPU132は、転送サイクル数カウンタおよび転送データ数カウンタを用い、実行したデータ転送処理に応じて、機能IP17における転送サイクル数およびデータ転送量をカウントしS108、図12の5、その転送サイクル数および転送データ量を転送記録領域44の転送サイクル数記録領域および転送データ量記録領域の値に加算して書き戻すS109、図12の6。必要であれば、そのシミュレーション時間、実行箇所、読み出し/書き込みの種別、転送モードなどのパラメータと、転送サイクル数、転送データ量などの統計情報とを転送データ記録として転送記録領域44に保存する。このように、転送記録領域44に転送サイクル数、転送データ量およびシミュレーション時間を記録し、データ転送完了後に汎用PCソフトウェア開発環境2からそれらの情報を参照することによって、IPシミュレータの転送時間が実際のハードウェアロジックと異なる場合でも、そのデータ転送によるシステムバス18への負荷やデータ転送時間の高精度な見積もりが可能となる。CPU132は、所望のデータ転送処理が完了すると、各内蔵レジスタ領域42の内容を実行後の状態に更新しS110、図12の7、その実行完了をCPU031に通知する。CPU031は、状態レジスタを参照してS93、データ転送処理が完了したか否かを判定するS94。データ転送処理が完了していなければS94,No、ステップS93に戻って以降の処理を繰り返す。また、データ転送処理が完了していればS94,Yes、データ転送動作を終了する。なお、図11においては、CPU031が、機能IP17の実行状態を記録する状態レジスタをポーリングすることによってIPシミュレータのデータ転送処理完了を検知しているが、上述のようにCPU031に割り込み要求を発行することによってデータ転送完了通知を行なうことも可能である。このような完了通知の方法は、開発対象の機能IP17の仕様に準ずる。以上説明したように、本実施の形態におけるシミュレーション装置によれば、開発対象の機能IPの機能をIPシミュレータで実現し、その他の既存モジュール、ユーザプログラムが動作するターゲットCPU、システムバスなどは実機のものを用いるようにしたので、精度の高いシミュレーションを実現することが可能となった。また、機能IP17の内蔵レジスタを共有メモリ33の相対アドレスが同じ領域にマッピングするようにしたので、ユーザプログラム7がIPシミュレータを制御する場合でも、ユーザプログラム7が機能IP17を制御する場合でも、ベースアドレスを変更するのみで同じプログラムを使用することが可能となった。また、共有メモリ33に実行記録領域43および転送記録領域44を設け、IPシミュレータが実行サイクル数、データ転送サイクル数、データ転送量などの情報をそれらの領域に記録するようにしたので、機能IP17の性能評価やシステムバス18の負荷評価などを高い精度で行なうことが可能となった。さらには、SoCがマルチCPU構成であり、かつ共有メモリが搭載されていれば、その他のモジュールなどのハードウェア構成にかかわらずIPシミュレータを実装することができるため、既存のLSIをIPシミュレータとして活用することが可能である。したがって、専用のシミュレーション装置を必要とせず、低コストでシミュレータを用いたソフトウェア開発環境を提供することが可能となった。第2の実施の形態第1の実施の形態におけるシミュレーション装置は、単一のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものであった。本発明の第2の実施の形態におけるシミュレーション装置は、複数のCPUがシミュレータプログラムを実行することによってIPシミュレータを実現するものである。図13は、本発明の第2の実施の形態におけるシミュレーション装置を含んだシステムの一例を示す図である。このシステムは、SoC1と、ソフトウェア開発環境としての汎用PC2と、シミュレータプログラムCPU1~CPUN6-1~6-NおよびユーザプログラムCPU07が記憶される外部メモリ3とを含む。また、SoC1は、デバッグ回路13と、周辺I/O14および15と、機能IP16と、CPU031と、CPU1~N32-1~32-Nと、共有メモリ33とを含む。なお、CPU031と、CPU1~N32-1~32-Nと、共有メモリ33と、外部メモリ3と、周辺I/O14および15と、機能IP16とが、システムバス18を介して接続される。なお、図5に示すシステムと同じ構成および機能を有する部分については、同じ参照番号を付すものとする。CPU1~N32-1~32-Nがそれぞれ、シミュレータプログラム6-1~6-Nを実行することによってIPシミュレータを実現する。この場合、データ演算処理を2つ以上に分割し、それぞれのデータ演算処理を2つ以上のCPUに実行させることによってIPシミュレータの実行時間を削減し、より実際の機能IP17に近い動作とすることができる。なお、処理を分割して複数のCPUに実行させる場合でも、第1の実施の形態におけるIPシミュレータと同様に、内蔵メモリ領域41、内蔵レジスタ領域42、実行記録領域43および転送記録領域44が共有メモリ33にマッピングされるため、ユーザプログラム7として第1の実施の形態において説明したのと同様のプログラムを用いることが可能である。以上説明したように、本実施の形態におけるシミュレーション装置によれば、シミュレータプログラムを分割して複数のCPUに実行させるようにしたので、第1の実施の形態において説明した効果に加えて、IPシミュレータの実行時間を削減し、より実際の機能IP17に近い動作とすることが可能となった。今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。"