(57)【要約】  検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするときに、検証対象装置の動作をシミュレートするのに多くの時間を要することを課題とし、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、所定の処理の実行に伴って生成される実行ログを取得し、実行ログから所定の処理単位で構成される処理単位ログを抽出し、検証対象装置の機能の一部を改変した検査モデルにおいて、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートする。
2009050768.tif 000002
【特許請求の範囲】
【請求項１】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、
前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップと、
を含んだことを特徴とするシミュレート方法。
【請求項２】
前記検証対象装置は、所定の命令に対応する命令処理を実行するための命令文、および読み書き処理された所定のデータを記憶する記憶部を備えたものであって、
前記シミュレートステップは、前記処理単位ログに対応する処理が前記命令処理、もしくは前記読み書き処理のいずれであるかを判定し、前記処理単位ログに対応する処理が前記命令処理であった場合には、前記記憶部から前記命令文を読み込んで当該命令文を用いて前記命令処理を実行し、前記処理単位ログに対応する処理が読み書き処理であった場合には、前記記憶部に対して所定のデータを書き込む書き込み処理、または前記記憶部に記憶されている所定のデータを読み込む読み込み処理を実行することを特徴とする請求項１に記載のシミュレート方法。
【請求項３】
前記検証対象装置は、前記命令文を読み込む処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、
前記シミュレートステップは、前記命令処理を実行するときに、前記第一の記憶部に前記命令文が記憶されているか否かを判定し、前記第一の記憶部に前記命令文が記憶されているものと判定された場合には、前記第一の記憶部から前記命令文を読み込み、前記第一の記憶部に前記命令文が記憶されていないものと判定された場合には、前記第二の記憶部から前記命令文を読み込むことを特徴とする請求項２に記載のシミュレート方法。
【請求項４】
前記検証対象装置は、前記読み書き処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、
前記シミュレートステップは、前記読み書き処理を実行するときに、前記所定のデータを記憶部から読み込む処理であるか、もしくは、前記所定のデータを記憶部に書き込む処理であるかを判定し、前記所定のデータを読み込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータが記憶されているか否かを前記第一の記憶部から順に判定して前記所定のデータを読み込み、前記所定のデータを書き込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータを格納すべきかを前記第一の記憶部から順に判定して前記所定のデータを書き込むことを特徴とする請求項２に記載のシミュレート方法。
【請求項５】
前記シミュレートステップは、所定のデータを読み込む処理を繰り返し実行する場合に、オフセットを与えるように処理することを特徴とする請求項４に記載のシミュレート方法。
【請求項６】
前記処理単位ログ抽出ステップは、前記処理単位ログにおける最初のログと、前記処理単位ログを構成するログ数とを前記処理単位ログとして抽出し、
前記シミュレートステップは、前記処理単位ログ抽出ステップによって抽出された、前記処理単位ログにおける最初のログと、前記処理単位ログを構成するログ数とを用いて、前記処理単位ログに対応する処理をシミュレートすることを特徴とする請求項１に記載のシミュレート方法。
【請求項７】
モデル化された検証対象装置の動作をシミュレートして得られたシミュレート結果を用いて電子装置を設計する電子装置の設計方法であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、
前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップと、
前記シミュレートステップによるシミュレート結果を用いて電子装置を設計することを特徴とする電子装置の設計方法。
【請求項８】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法をシミュレーション装置としてのコンピュータに実行させるシミュレートプログラムであって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得手順と、
前記実行ログ取得手順によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出手順と、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出手順によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート手順と、
をコンピュータに実行させることを特徴とするシミュレートプログラム。
【請求項９】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレーション装置であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得部と、
前記実行ログ取得部によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出部と、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出部によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート部と、
を備えたことを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置に関する。
【背景技術】
【０００２】
従来より、ＬＳＩ（Large  Scale  Integration）や、システムＬＳＩ、ＳｏＣ（System  on  Chip）などの検証対象装置（電子装置：Electronic  Device）の性能を評価するために、検証対象装置をモデル化した検査モデルの動作をＩＳＳ（Instruction  Set  Simulator：命令セットシミュレータ）を用いてシミュレートするシミュレーション装置がある（特許文献１〜６参照）。【０００３】
具体的には、従来の技術では、検査モデルのハードウェアは、ＲＴＬ（Register  Transfer  Level）でのＶｅｒｉｌｏｇ−ＨＤＬ（Hardware  Description  Language）や、ＴＬＭ（Transaction  Level  Modeling）でのＳｙｓｔｅｍＣによってモデル化される。また、検査モデルで実行するソフトウェアは、Ｃ言語やアセンブリ言語で記述されたプログラムをコンパイルして、実行バイナリが作成される。【０００４】
そして、従来の技術では、検査モデルに実行バイナリを実行させることで、検証対象装置の動作をシミュレートし、シミュレート時の各ハードウェアを監視することで、検証対象装置の命令実行時間などのシミュレート結果を得ている。【０００５】
【特許文献１】特開２００４−１３２２７号公報
【特許文献２】特開２００６−２３８５２号公報
【特許文献３】特開平１１−９６１３０号公報
【特許文献４】特開２００３−１５９１４号公報
【特許文献５】特開平５−１５８７４０号公報
【特許文献６】特開２００１−２４９８２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術は、検証対象装置の動作をシミュレートするのに多くの時間を要するという課題があった。【０００７】
すなわち、従来の技術では、ＩＳＳが実行バイナリを解読し、実行バイナリに係る命令を実行するという複雑な処理を行うため、ＩＳＳ上でのシミュレートに多くの時間を要していた。【０００８】
また、ＩＳＳを用いずに検証対象装置の性能を評価する場合であっても、従来の技術は、実行バイナリをホスト用コードに変換することなど複雑な工程を必要としていた（特許文献１参照）。【０００９】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能なシミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法であって、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップとを含んだことを特徴とする。【００１１】
また、本発明は、上記の発明において、前記検証対象装置は、所定の命令に対応する命令処理を実行するための命令文、および読み書き処理された所定のデータを記憶する記憶部を備えたものであって、前記シミュレートステップは、前記処理単位ログに対応する処理が前記命令処理、もしくは前記読み書き処理のいずれであるかを判定し、前記処理単位ログに対応する処理が前記命令処理であった場合には、前記記憶部から前記命令文を読み込んで当該命令文を用いて前記命令処理を実行し、前記処理単位ログに対応する処理が読み書き処理であった場合には、前記記憶部に対して所定のデータを書き込む書き込み処理、または前記記憶部に記憶されている所定のデータを読み込む読み込み処理を実行することを特徴とする。【００１２】
また、本発明は、上記の発明において、前記検証対象装置は、前記命令文を読み込む処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、前記シミュレートステップは、前記命令処理を実行するときに、前記第一の記憶部に前記命令文が記憶されているか否かを判定し、前記第一の記憶部に前記命令文が記憶されているものと判定された場合には、前記第一の記憶部から前記命令文を読み込み、前記第一の記憶部に前記命令文が記憶されていないものと判定された場合には、前記第二の記憶部から前記命令文を読み込むことを特徴とする。【００１３】
また、本発明は、上記の発明において、前記検証対象装置は、前記読み書き処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、前記シミュレートステップは、前記読み書き処理を実行するときに、前記所定のデータを記憶部から読み込む処理であるか、もしくは、前記所定のデータを記憶部に書き込む処理であるかを判定し、前記所定のデータを読み込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータが記憶されているか否かを前記第一の記憶部から順に判定して前記所定のデータを読み込み、前記所定のデータを書き込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータを格納すべきかを前記第一の記憶部から順に判定して前記所定のデータを書き込むことを特徴とする。【００１４】
また、本発明は、上記の発明において、前記シミュレートステップは、所定のデータを読み込む処理を繰り返し実行する場合に、オフセットを与えるように処理することを特徴とする。【００１５】
また、本発明は、上記の発明において、前記処理単位ログ抽出ステップは、前記処理単位ログにおける最初のログと、前記処理単位ログを構成するログ数とを前記処理単位ログとして抽出し、前記シミュレートステップは、前記処理単位ログ抽出ステップによって抽出された、前記処理単位ログにおける最初のログと、前記処理単位ログを構成するログ数とを用いて、前記処理単位ログに対応する処理をシミュレートすることを特徴とする。【００１６】
また、本発明は、所定の装置がモデル化された検証対象装置の動作をシミュレートし、当該シミュレートのシミュレート結果を用いて電子装置を設計する電子装置の設計方法であって、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップと、前記シミュレートステップによるシミュレート結果を用いて電子装置を設計することを特徴とする。【００１７】
また、本発明は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法をシミュレーション装置としてのコンピュータに実行させるシミュレートプログラムであって、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得手順と、前記実行ログ取得手順によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出手順と、前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出手順によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート手順とをコンピュータに実行させることを特徴とする。【００１８】
また、本発明は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレーション装置であって、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得部と、前記実行ログ取得部によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出部と、前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出部によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート部とを備えたことを特徴とする。
【発明の効果】
【００１９】
本発明によれば、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。
【図面の簡単な説明】
【００２０】
【図１】図１は、実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。
【図２】図２は、シミュレーション装置の構成を示すブロック図である。
【図３】図３は、検査モデル記憶部１３ａに記憶される情報の一例を示した図である。
【図４】図４は、実行ログ記憶部に記憶される情報の一例を示した図である。
【図５】図５は、処理単位ログ記憶部に記憶される情報の一例を示した図である。
【図６】図６は、設定条件記憶部に記憶される情報の一例を示した図である。
【図７】図７は、シミュレート結果記憶部に記憶される情報の一例を示した図である。
【図８】図８は、処理単位ログを抽出するときのシミュレーション装置による処理の流れを示すフローチャートである。
【図９】図９は、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理の流れを示すフローチャートである。
【図１０】図１０は、実施例２に係るシミュレーション装置の実行ログ記憶部に記憶される情報の一例を示した図である。
【図１１】図１１は、実施例２に係るシミュレーション装置の処理単位ログ記憶部に記憶される情報の一例を示した図である。
【図１２】図１２は、検証対象装置の機能の一部を改変した場合のシミュレータによる処理の流れを示すフローチャートである。
【図１３】図１３は、命令処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１４】図１４は、読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１５】図１５は、読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１６】図１６は、実施例４に係る処理単位ログ記憶部１３ｃに記憶される情報の一例を示した図である。
【図１７】図１７は、シミュレートプログラムを実行するコンピュータを示す図である。
【符号の説明】
【００２１】
１０  シミュレーション装置
１１  入力部
１２  出力部
１３  記憶部
１３ａ  検査モデル記憶部
１３ｂ  実行ログ記憶部
１３ｃ  処理単位ログ記憶部
１３ｄ  設定条件記憶部
１３ｅ  シミュレート結果記憶部
１４  制御部
１４ａ  検査モデル格納部
１４ｂ  実行ログ取得部
１４ｃ  処理単位ログ抽出部
１４ｄ  シミュレータ制御部
１５  シミュレータ
１００  検査モデル
１０１  ターゲットＣＰＵ
１０２  命令キャッシュメモリ
１０３  データキャッシュメモリ
１０４  外部ＲＡＭ
１０５  周辺ハードウェア
１０６  バス
１１０  コンピュータ
１２０  入力部
１３０  ＲＯＭ
１３０ａ  検査モデル格納プログラム
１３０ｂ  実行ログ取得プログラム
１３０ｃ  処理単位ログ抽出プログラム
１３０ｄ  シミュレータ制御プログラム
１４０  ＣＰＵ
１４０ａ  検査モデル格納プロセス
１４０ｂ  実行ログ取得プロセス
１４０ｃ  処理単位ログ抽出プロセス
１４０ｄ  シミュレータ制御プロセス
１５０  ＨＤＤ
１５０ａ  検査モデルデータテーブル
１５０ｂ  実行ログデータテーブル
１５０ｃ  処理単位ログデータテーブル
１５０ｄ  設定条件データテーブル
１５０ｅ  シミュレート結果データテーブル
１６０  ＲＡＭ
１６０ａ  検査モデルデータ
１６０ｂ  実行ログデータ
１６０ｃ  処理単位ログデータ
１６０ｄ  設定条件データ
１６０ｅ  シミュレート結果データ
１７０  出力部
１８０  シミュレータ
１９０  バス
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係るシミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置の実施例を詳細に説明する。なお、以下では、この発明が搭載されたシミュレーション装置を実施例として説明する。【００２３】
［用語の説明］
まず最初に、本実施例で用いる主要な用語を説明する。本実施例で用いる「モデル化された検証対象装置（検査モデル）」とは、ハードウェアによって実現される各機能が、例えば、ＲＴＬ（Register  Transfer  Level）でのＶｅｒｉｌｏｇ−ＨＤＬ（Hardware  Description  Language）や、ＴＬＭ（Transaction  Level  Modeling）でのＳｙｓｔｅｍＣによって記述された検証対象装置である。【００２４】
また、本実施例で用いる「実行ログ」とは、検証対象装置に一連の処理を実行するためのソフトウェアを、ＩＳＳなどのシミュレータで実行させたときの、実際に実行された命令履歴である。
【実施例１】
【００２５】
以下では、実施例１に係るシミュレーション装置の概要および特徴、シミュレーション装置の構成およびシミュレーション装置による処理の流れを順に説明し、実施例１による効果を説明する。【００２６】
［シミュレーション装置の概要および特徴］
まず最初に、図１を用いて、実施例１に係るシミュレーション装置の概要および特徴を説明する。図１は、実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。【００２７】
実施例１に係るシミュレーション装置は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートすることを概要とし、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることを主たる特徴とする。【００２８】
この主たる特徴について説明すると、実施例１に係るシミュレーション装置は、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、この所定の処理の実行に伴って生成される実行ログを取得する（図１の（１）参照）。例えば、実施例１に係るシミュレーション装置は、通信装置モデルにおいて通信処理が実行される場合の一連の動作をシミュレートし、この通信処理を実行に伴って生成される実行ログを取得する。【００２９】
次に、実施例１に係るシミュレーション装置は、実行ログから所定の処理単位で構成される処理単位ログを抽出する（図１の（２）参照）。例えば、実施例１に係るシミュレーション装置は、実行ログから所定の処理単位で構成される「上り送受信処理」や「下り送受信処理」（例えば、「方路を検索する処理」や、「送信する情報をバッファから読み込む処理」や、「情報を送信する処理」などで構成される「送受信処理」）、周期的な割り込み処理である「周期処理Ａ」についての処理単位ログを抽出する。【００３０】
そして、実施例１に係るシミュレーション装置は、検証対象装置の機能の一部を改変した検査モデルにおいて、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートする（図１の（３）参照）。例えば、実施例１に係るシミュレーション装置は、通信速度を２倍に改善した通信装置モデルにおいて、所定の時間当たりに「上り送信処理」や「下り受信処理」を２倍実行し、「周期処理Ａ」を半分の周期で実行した場合の動作をシミュレートする。【００３１】
このようなことから、実施例１に係るシミュレーション装置は、上記した主たる特徴のごとく、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。【００３２】
［実施例１に係るシミュレーション装置の構成］
次に、図２〜図７を用いて、図１に示したシミュレーション装置の構成を説明する。図２は、シミュレーション装置の構成を示すブロック図である。図３は、検査モデル記憶部１３ａに記憶される情報の一例を示した図である。図４は、実行ログ記憶部に記憶される情報の一例を示した図である。図５は、処理単位ログ記憶部に記憶される情報の一例を示した図である。図６は、設定条件記憶部に記憶される情報の一例を示した図である。図７は、シミュレート結果記憶部に記憶される情報の一例を示した図である。【００３３】
図２に示すように、このシミュレーション装置１０は、入力部１１と、出力部１２と、記憶部１３と、制御部１４、シミュレータ１５とから構成される。【００３４】
このうち、入力部１１は、各種の情報の入力を受け付ける。具体的には、入力部１１は、キーボードやマウスなどを備えて構成され、例えば、この入力部１１を介して、検査モデルや、検査モデルで実行するソフトウェアや、設定条件の入力を受け付ける。【００３５】
出力部１２は、各種の情報を出力する。具体的には、出力部１２は、モニタやディスプレイなどを備えて構成され、この出力部１２を介してシミュレート結果（例えば、検証対象装置のＣＵＰ負荷率や、バス占有率や、処理時間や、消費電力や、メモリ使用率など）を出力する。【００３６】
記憶部１３は、処理部３０による各種処理に必要なデータおよびプログラムを記憶し、特に本発明に密接に関連するものとしては、検査モデル記憶部１３ａと、実行ログ記憶部１３ｂと、処理単位ログ記憶部１３ｃと、設定条件記憶部１３ｄと、シミュレート結果記憶部１３ｅとを備える。【００３７】
検査モデル記憶部１３ａは、検査モデルを記憶する。具体的に一例をあげて説明すると、検査モデル記憶部１３ａは、図３に示すように、ターゲットＣＰＵ１０１と、命令キャッシュメモリ１０２と、データキャッシュメモリ１０３と、外部ＲＡＭ１０４と、周辺ハードウェア１０５と、バス１０６とから構成される検査モデル１００を記憶する。【００３８】
ここで、ターゲットＣＰＵ１０１は、検査モデル１００としてのＣＰＵである。また、命令キャッシュメモリ１０２は、所定の命令処理の命令文をターゲットＣＰＵ１０１が短時間で取得するために、命令文を一時的に記憶する記憶部である。また、データキャッシュメモリ１０３は、検査モデルが動作するときに使用する所定のデータをターゲットＣＰＵ１０１が短時間で取得するために一時的に記憶する記憶部である。【００３９】
また、外部ＲＡＭ１０４は、命令文および使用データを長期的に記憶する記憶部である。また、周辺ハードウェア１０５は、外部ＩＦや、特定の用途専用のハードウェアである。そして、ターゲットＣＰＵ１０１、命令キャッシュメモリ１０２およびデータキャッシュメモリ１０３は、外部ＲＡＭ１０４や周辺ハードウェア１０５とバス１０６を介して接続される。【００４０】
実行ログ記憶部１３ｂは、実行ログを記憶する。具体的に一例をあげて説明すると、実行ログ記憶部１３ｂは、図４に示すように、検査モデルが所定の処理の実行に伴って生成される実行ログとして、所定の処理の実行に伴って、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・、の順に各ログに対応する処理が実行されたことを意味する実行ログを記憶する。ここで、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・は、例えば、通信装置モデルの通信処理における「方路を検索する処理」や、「送信する情報をバッファから読み込む処理」や、「情報を送信する処理」などのログに相当する。【００４１】
処理単位ログ記憶部１３ｃは、処理単位ログを記憶する。具体的に一例をあげて説明すると、処理単位ログ記憶部１３ｃは、図５に示すように、実行ログから所定の処理単位で構成される処理単位ログとして、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに実行された処理のログを記憶する。ここで、「イベント」とは、通信装置モデルの「上り送信処理」や、「下り受信処理」や、「周期処理Ａ」に相当し、イベント「１」が実行されたときにログ「Ｂ」に対応する処理が実行され、次にログ「Ｃ」に対応する処理が実行されたことを意味する。【００４２】
設定条件記憶部１３ｄは、設定条件を記憶する。具体的に一例をあげて説明すると、設定条件記憶部１３ｄは、図６に示すように、検証対象装置の機能の一部を改変した検査モデルにおいてイベント「１」を１秒周期で実行させ、イベント「２」を２秒周期で実行し、イベント「３」を３秒周期で実行させるための設定条件として、各イベントと、各イベントを実行すべき周期と（例えば、イベント「１」と、周期「１秒」と）を対応付けて記憶する。【００４３】
シミュレート結果記憶部１３ｅは検証対象装置の機能の一部を改変した検査モデルのシミュレート結果を記憶する。具体的に一例をあげて説明すると、シミュレート結果記憶部１３ｅは、図７に示すように、検証対象装置の機能の一部を改変した検査モデルのシミュレート結果として、ＣＵＰ負荷率（例えば２０％）や、バス占有率（例えば、１０％）や、処理時間（例えば、１分）や、消費電力（例えば、６０Ｗ（ワット））や、メモリ使用率（例えば、７０％）を記憶する。【００４４】
制御部１４は、所定の制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。特に本発明に密接に関連するものとしては、検査モデル格納部１４ａと、実行ログ取得部１４ｂと、処理単位ログ抽出部１４ｃと、シミュレータ制御部１４ｄとを備える。なお、実行ログ取得部１４ｂは、請求の範囲に記載の「実行ログ取得部」に対応し、処理単位ログ抽出部１４ｃは、請求の範囲に記載の「処理単位ログ抽出部」に対応する。【００４５】
検査モデル格納部１４ａは、検査モデルを格納する。具体的には、検査モデル格納部１４ａは、入力部１１を介して、検査モデルを受け付けると、検査モデル記憶部１３ａに格納する。【００４６】
実行ログ取得部１４ｂは、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、この所定の処理の実行に伴って生成される実行ログを取得する。【００４７】
具体的には、実行ログ取得部１４ｂは、入力部１１を介して、検査モデルにおいて所定の処理を実行するための仮ソフトウェアを受け付けると、検査モデル記憶部１３ａから検査モデルを読み込み、検査モデルと、仮ソフトウェアとをシミュレータ１５に入力し、シミュレータ１５に検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートさせる。そして、実行ログ取得部１４ｂは、シミュレータ１５から所定の処理の実行に伴って生成された実行ログを受け付け、実行ログ記憶部１３ｂに格納する（図４参照）。【００４８】
例えば、実行ログ取得部１４ｂは、入力部１１を介して、通信装置モデルにおいて通信処理を実行するための仮ソフトウェアを受け付けると、シミュレータ１５に通信処理が実行される場合の一連の動作をシミュレートさせ、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・の順に各ログに対応する処理が実行されたことを意味する実行ログを受け付け、実行ログ記憶部１３ｂに格納する。【００４９】
ここで、仮ソフトウェアとは、例えば、リアルタイムＯＳ（Real-Time  Operating  System）を利用するシミュレータ１５が所定の処理を実行する場合の一連の動作をシミュレートするときに、十分な負荷（例えば、方路を検索する処理における遅延時間）を作り出すことのできる性能を有したソフトウェアである。【００５０】
処理単位ログ抽出部１４ｃは、実行ログから所定の処理単位で構成される処理単位ログを抽出する。具体的には、処理単位ログ抽出部１４ｃは、実行ログ取得部１４ｂによって実行ログ記憶部１３ｂに実行ログが格納されると、実行ログ記憶部１３ｂから実行ログを読み込み、所定の処理単位で構成される処理単位ログを抽出し、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに生成されたログを処理単位ログ記憶部１３ｃに格納する（図５参照）。【００５１】
例えば、処理単位ログ抽出部１４ｃは、実行ログから同じログの繰り返し（例えば、ログ「Ｂ」の次にログ「Ｃ」が生成されたという繰り返し）や、ＯＳがタスクを起動したときに生成されたログの場所を調べることで、各イベントが実行されたときに生成されたログを抽出し、処理単位ログ記憶部１３ｃに格納する。【００５２】
なお、検査モデルにおいて所定の処理を実行するための仮ソフトウェアの中に、明示的な区切り（例えば、所定の命令に対応する命令処理など）を挿入しておき、処理単位ログ抽出部１４ｃは、この明示的な区切りに係るログを参照して、処理単位ログを抽出するようにしてもよい。【００５３】
シミュレータ制御部１４ｄは、入力部１１を介して、設定条件を受け付けると、設定条件記憶部１３ｄに設定条件を格納する（図６参照）。そして、シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから検査モデルを読み込む。さらに、シミュレータ制御部１４ｄは、処理単位ログ記憶部１３ｃから処理単位ログを読み込む。そして、シミュレータ制御部１４ｄは、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力し、シミュレータ１５に検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートさせる。【００５４】
そして、シミュレータ制御部１４ｄは、シミュレータ１５から検証対象装置の機能の一部を改変した検査モデルの動作のシミュレート結果を受け付け、シミュレート結果をシミュレート結果記憶部１３ｅに格納するとともに、出力部１２を介してシミュレート結果を出力する。【００５５】
シミュレータ１５は、検査モデルにおける一連の動作をシミュレートする。具体的には、シミュレータ１５は、実行ログ取得部１４ｂから検査モデルと、仮ソフトウェアとを受け付けた場合には、仮ソフトウェアをコンパイルして実行バイナリを作成し、検査モデルに実行バイナリを実行させるというシミュレーションを実行し、実行ログを生成する。そして、シミュレータ１５は、生成した実行ログを実行ログ取得部１４ｂに対して送信する。【００５６】
また、シミュレータ１５は、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートする。【００５７】
具体的には、シミュレータ１５は、シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けた場合には、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいて、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートする。そして、シミュレート結果をシミュレータ制御部１４ｄに対して送信する。【００５８】
例えば、シミュレータ１５は、イベント「１」を１秒周期で実行し、イベント「２」を２秒周期で実行し、イベント「３」を３秒周期で実行した場合の検査モデルの動作をシミュレートする。そして、シミュレータ１５は、シミュレート結果として、ＣＵＰ負荷率や、バス占有率や、処理時間や、消費電力や、メモリ使用率を算出し、シミュレータ制御部１４ｄに対して送信する。なお、シミュレータ１５は、請求の範囲に記載の「シミュレート部」に対応する。【００５９】
［実施例１に係るシミュレーション装置による処理］
次に、図８、図９を用いて、実施例１に係るシミュレーション装置による処理を説明する。図８は、処理単位ログを抽出するときのシミュレーション装置による処理の流れを示すフローチャートである。図９は、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理の流れを示すフローチャートである。なお、以下では、検査モデル格納部１４ａによって検査モデルが検査モデル記憶部１３ａに格納されているものとして各処理の流れを説明する。【００６０】
［処理単位ログを抽出するときのシミュレーション装置による処理］
図８に示すように、実行ログ取得部１４ｂは、入力部１１を介して検査モデルにおいて所定の処理を実行するための仮ソフトウェアを受け付けると（ステップＳ１００１肯定）、検査モデル記憶部１３ａから検査モデルを読み込み（ステップＳ１００２）、検査モデルと、仮ソフトウェアとをシミュレータ１５に入力する（ステップＳ１００３）。【００６１】
検査モデルと、仮ソフトウェアとを受け付けたシミュレータ１５は、仮ソフトウェアをコンパイルして実行バイナリを作成し（ステップＳ１００４）、シミュレーションを実行して実行ログを生成し（ステップＳ１００５）、実行ログを実行ログ取得部１４ｂに対して送信する（ステップＳ１００６）。【００６２】
実行ログを受け付けた実行ログ取得部１４ｂは、実行ログを実行ログ記憶部１３ｂに格納する（ステップＳ１００７）。【００６３】
続いて、処理単位ログ抽出部１４ｃは、実行ログ記憶部１３ｂから実行ログを読み込み（ステップＳ１００８）実行ログから所定の処理単位で構成される処理単位ログを抽出し（ステップＳ１００９）、処理単位ログを処理単位ログ記憶部１３ｃに格納し（ステップＳ１０１０）、実行ログから処理単位ログを抽出するときの処理を終了する。【００６４】
［検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理］
図９に示すように、シミュレータ制御部１４ｄは、設定条件を受け付けると（ステップＳ２００１肯定）、設定条件記憶部１３ｄに設定条件を格納する（ステップＳ２００２）。【００６５】
続いて、シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから検査モデルを読み込み（ステップＳ２００３）、処理単位ログ記憶部１３ｃから処理単位ログを読み込み（ステップＳ２００４）、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力する（ステップＳ２００５）。【００６６】
シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けたシミュレータ１５は、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートし、（ステップＳ２００６）、シミュレート結果をシミュレータ制御部１４ｄに対して送信する（ステップＳ２００７）。【００６７】
シミュレーション結果を受け付けたシミュレータ制御部１４ｄは、シミュレート結果をシミュレート結果記憶部１３ｅに格納するとともに、出力部１２を介してシミュレート結果を出力し（ステップＳ２００８）、検証対象装置の動作をシミュレートするときの処理を終了する。【００６８】
［実施例１による効果］
上記したように、実施例１によれば、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、所定の処理の実行に伴って生成される実行ログを取得し、実行ログから所定の処理単位で構成される処理単位ログを抽出し、検証対象装置の機能の一部を改変した検査モデルにおいて、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするので、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。
【実施例２】
【００６９】
ところで、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが必要となる場合もある。例えば、外部ＲＡＭ１０４の使用率や、命令キャッシュメモリ１０２から所定の命令処理の命令文を読み込むときのヒット率（命令キャッシュヒット率）や、データキャッシュメモリ１０３から所定のデータを読み込むときのヒット率（データキャッシュヒット率）や、外部ＲＡＭ１０４から所定の命令処理の命令文を読み込む処理の処理時間（命令フェッチ時間）や、周辺ハードウェア１０５に搭載された記憶部に所定のデータを読み書き処理する処理時間や、ターゲットＣＰＵ１０１のアイドル時間などがシミュレーション結果として必要となる場合もある。そこで、実施例２では、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートする場合を説明する。なお、実施例２では、実施例２に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例２による効果を説明する。【００７０】
［実施例２に係るシミュレーション装置の構成］
まず、図１０、図１１を用いて、実施例２に係るシミュレーション装置の構成を説明する。図１０は、実施例２に係るシミュレーション装置の実行ログ記憶部に記憶される情報の一例を示した図である。図１１は、実施例２に係るシミュレーション装置の処理単位ログ記憶部に記憶される情報の一例を示した図である。【００７１】
実施例２に係るシミュレーション装置１０の構成は、実施例１に係るシミュレーション装置１０と以下に説明する点が異なる。【００７２】
すなわち、実行ログ記憶部１３ｂは、図１０に示すように、実行ログとして、各ログが生成されたときの処理内容を示すラベルを実行ログの各ログに対応付けて記憶する。具体的には、実行ログ記憶部１３ｂは、所定の命令処理が実行されたことを意味するラベル（例えば、ラベル「命令」）を所定の命令処理の実行に伴って生成されたログ（例えば、ログ「Ａ」）に対応付けて記憶する。【００７３】
また、実行ログ記憶部１３ｂは、所定のデータを記憶部から読み込む処理が実行されたことを意味するラベル（例えば、ラベル「データ読み込み」）を所定のデータを記憶部から読み込む処理の実行に伴って生成されたログ（例えば、ログ「Ｃ」）に対応付けて記憶する。【００７４】
また、実行ログ記憶部１３ｂは、所定のデータを記憶部に書き込む処理が実行されたことを意味するラベル（例えば、ラベル「データ書き込み」）を所定のデータを記憶部から書き込む処理の実行に伴って生成されたログ（例えば、ログ「Ｄ」）に対応付けて記憶する。【００７５】
処理単位ログ記憶部１３ｃは、処理単位ログとして、処理内容を示すラベルを各イベントが実行されたときに生成されたログに対応付けて記憶する。具体的に一例をあげて説明すると、処理単位ログ記憶部１３ｃは、図１１に示すように、「ログ「Ｂ」に対応する命令処理が実行され、次に、ログ「Ｃ」に対応する読み込み処理が実行された」というイベント「１」として、ラベル「命令」をログ「Ｂ」に対応付けて記憶し、ラベル「データ読み込み」をログ「Ｃ」に対応付けて記憶する。【００７６】
実行ログ取得部１４ｂは、シミュレータ１５から実行ログを受け付け、処理内容を示すラベルを実行ログの各ログに対応付けて実行ログ記憶部１３ｂに格納する（図１０参照）。【００７７】
処理単位ログ抽出部１４ｃは、実行ログから所定の処理単位で構成される処理単位ログを抽出し、検査モデルによって実行されたイベントごとに区分して、処理内容を示すラベルを各イベントが実行されたときに生成されたログに対応付けて処理単位ログ記憶部１３ｃに格納する（図１１参照）。【００７８】
シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから命令キャッシュメモリ１０２と、データキャッシュメモリ１０３と、外部ＲＡＭ１０４と、周辺ハードウェア１０５とを備えた検査モデル１００を検査モデル記憶部１３ａから読み込み、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力し、シミュレータ１５に検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートさせる。【００７９】
シミュレータ１５は、実行ログ取得部１４ｂから検査モデルと、仮ソフトウェアとを受け付けた場合には、シミュレーションを実行し、実行ログの各ログに対して処理内容を示すラベルを付与しつつ実行ログを生成し、実行ログ取得部１４ｂに対して送信する。【００８０】
また、シミュレータ１５は、シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けた場合には、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートする。【００８１】
ここで、シミュレータ１５が実行するキャッシュメモリの動作の解析が可能な抽象度での検査モデルの動作のシミュレートについて一例をあげて説明する。なお、シミュレータ１５は、図６に示した設定条件に基づいて、図３に示すような検査モデル１００の動作をシミュレートして、一連の処理を実行するのに必要な処理時間を計測するものとする。【００８２】
シミュレータ１５は、検査モデルの動作のシミュレートを開始後、所定のイベントを実行すべき時間に至ると、所定のイベントのログと、このログに対応するラベルとを処理単位ログから読み込み、所定のイベントの処理が命令処理、もしくは、読み書き処理のいずれであるかをログに対応するラベルを用いて判定する。【００８３】
ここで、シミュレータ１５は、所定のイベントの処理が命令処理であった場合には、記憶部から命令文を読み込んで命令処理を実行するというシミュレートを実行する。【００８４】
具体的には、シミュレータ１５は、命令処理を実行するときに、命令キャッシュメモリ１０２に命令文が記憶されているか否かを判定し、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には、命令キャッシュメモリ１０２から命令文を読み込み、命令キャッシュメモリ１０２に命令文が記憶されていないものと判定された場合には、外部ＲＡＭ１０４から命令文を読み込んで命令処理を実行するというシミュレートを実行する。【００８５】
例えば、シミュレータ１５は、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間（平均ＣＰＩ分の時間）を処理時間として計測する。【００８６】
また、命令キャッシュメモリ１０２に命令文が記憶されていないものと判定された場合には、ターゲットＣＰＵ１０１がバス１０６に対してラインフェッチ（例えば、８命令文を連続して外部ＲＡＭ１０４から読み込む処理）をするのに必要な時間を処理時間として計測し、これに加えて、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測する。【００８７】
一方では、シミュレータ１５は、所定のイベントの処理が読み書き処理であった場合には、記憶部に対して所定のデータを書き込む書き込み処理、または記憶部に記憶されている所定のデータを読み込む読み込み処理を実行するというシミュレートを実行する。【００８８】
具体的には、シミュレータ１５は、読み書き処理を実行するときに、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるかを所定のイベントのログに対応するラベルを用いて判定する。【００８９】
ここで、シミュレータ１５は、所定のデータを読み込む処理であるものと判定された場合には、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定して、所定のデータを読み込むというシミュレートを実行する。【００９０】
例えば、データキャッシュメモリ１０３に所定のデータが記憶されている場合には、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチ（外部ＲＡＭ１０４からデータキャッシュメモリ１０３に所定のデータを書き写す処理）を実行するのに必要な時間を処理時間として計測する。【００９１】
また、シミュレータ１５は、所定のデータを書き込む処理であるものと判定された場合には、データキャッシュメモリ１０３および他の記憶部（例えば、周辺ハードウェア１０５に搭載された記憶部）のいずれに所定のデータを格納すべきかをデータキャッシュメモリ１０３から順に判定して所定のデータを書き込むというシミュレートを実行する。【００９２】
例えば、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し、他の記憶部に所定のデータを格納すべきであると判定した場合には、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測する。【００９３】
このようにして、シミュレータ１５は、所定のイベントの処理が終わるまで、所定のイベントの次の処理について上記のシミュレートと同様に実行し、各イベントの周期ごとに所定のイベントの処理をログが生成された順番に実行する。【００９４】
そして、シミュレータ１５は、シミュレートの終了とともに、各処理を実行するのに必要な処理時間を積算し、積算結果をシミュレーション結果として、シミュレータ制御部１４ｄに対して送信する。【００９５】
［シミュレーション装置のシミュレータによる処理］
次に、図１２、図１３、図１４を用いて、実施例２に係るシミュレーション装置１０のシミュレータ１５による処理を説明する。図１２は、検証対象装置の機能の一部を改変した場合のシミュレータによる処理の流れを示すフローチャートである。図１３は、命令処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。図１４は、読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。【００９６】
［検証対象装置の機能の一部を改変した場合のシミュレータによる処理］
まず、図１２を用いて、検証対象装置の機能の一部を改変した検査モデルの動作のシミュレートを開始した後から、シミュレートを終了するまでのシミュレータ１５による処理を説明する。なお、以下に説明するシミュレータ１５による処理は、シミュレートの実行中は繰りかえし実行し、シミュレートの終了とともに処理を終了する。【００９７】
同図に示すように、シミュレータ１５は、所定のイベントを実行すべき時間に至ると（ステップＳ３００１肯定）、所定のイベントのログと、このログに対応するラベルとを処理単位ログから読み込み（ステップＳ３００２）、所定のイベントの処理が命令処理、もしくは、読み書き処理のいずれであるかをログに対応するラベルを用いて判定する（ステップＳ３００３）。【００９８】
ここで、所定のイベントの処理が命令処理であると判定した場合には（ステップＳ３００３肯定）、シミュレータ１５は、命令処理を実行するというシミュレートを実行する（ステップＳ３００４）。【００９９】
一方では、所定のイベントの処理が読み書き処理であると判定した場合には（ステップＳ３００３否定）、シミュレータ１５は、読み書き処理を実行するというシミュレートを実行する（ステップＳ３００５）。【０１００】
命令処理（ステップＳ３００４）、もしくは、読み書き処理（ステップＳ３００５）を実行するというシミュレートを終了すると、シミュレータ１５は、所定のイベントの処理を最後まで実行したかを判定する（ステップＳ３００６）。【０１０１】
ここで、所定のイベントの処理を最後まで実行したと判定した場合には（ステップＳ３００６肯定）、シミュレータ１５は、再び所定のイベントを実行すべき時間に至るまで待機する（ステップＳ３００１）。【０１０２】
一方では、所定のイベントの処理を最後まで実行していないと判定した場合には（ステップＳ３００６否定）、シミュレータ１５は、所定のイベントの次のログと、このログに対応するラベルとを処理単位ログから読み込み（ステップＳ３００２）、所定のイベントの処理を最後まで実行するまで（ステップＳ３００６肯定）、上記した処理を繰り返し実行する。【０１０３】
［命令処理を実行するときのシミュレーション装置のシミュレータによる処理］
次に、図１３を用いて、命令処理を実行するとき（図１２のステップＳ３００４）のシミュレーション装置のシミュレータによる処理の流れを説明する。同図に示すように、命令処理を実行するときにシミュレータ１５は、命令キャッシュメモリ１０２に命令文が記憶されているか否かを判定する（ステップＳ４００１）。【０１０４】
ここで、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には（ステップＳ４００１肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測し（ステップＳ４００２）、命令処理を実行するときの処理を終了する。【０１０５】
一方では、命令キャッシュメモリに命令アドレスに係る処理の命令文が格納されていない場合には（ステップＳ４００１否定）、シミュレータ１５は、ターゲットＣＰＵ１０１がバス１０６に対してラインフェッチをするのに必要な時間を処理時間として計測し（ステップＳ４００３）、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測し（ステップＳ４００２）、命令処理を実行するときの処理を終了する。【０１０６】
［読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理］
次に、図１４を用いて、読み書き処理を実行するとき（図１２のステップＳ３００５）のシミュレーション装置のシミュレータによる処理の流れを説明する。同図に示すように、読み書き処理を実行するときにシミュレータ１５は、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるか否かを所定のイベントのログに対応するラベルを用いて判定する（ステップＳ５００１）。【０１０７】
ここで、所定のデータを読み込む処理であるものと判定された場合には（ステップＳ５００１肯定）、シミュレータ１５は、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定する（ステップＳ５００２）。【０１０８】
データキャッシュメモリ１０３に所定のデータが記憶されている場合には（ステップＳ５００２肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し（ステップＳ５００３）、読み書き処理を実行するときの処理を終了する。【０１０９】
また、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には（ステップＳ５００２否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ５００４）、読み書き処理を実行するときの処理を終了する。【０１１０】
ここで、ステップＳ５００１の説明に戻ると、所定のデータを書き込む処理であるものと判定された場合には（ステップＳ５００１否定）、シミュレータ１５は、データキャッシュメモリ１０３および他の記憶部のいずれに所定のデータを格納すべきかをデータキャッシュメモリ１０３から順に判定する（ステップＳ５００５）。【０１１１】
ここで、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には（ステップＳ５００５肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し（ステップＳ５００６）、読み書き処理を実行するときの処理を終了する。【０１１２】
また、他の記憶部に所定のデータを格納すべきであると判定した場合には（ステップＳ５００５否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測し（ステップＳ５００７）、読み書き処理を実行するときの処理を終了する。【０１１３】
［実施例２による効果］
上記したように、実施例２によれば、処理単位ログに対応する処理が命令処理、もしくは読み書き処理のいずれであるかを判定し、処理単位ログに対応する処理が命令処理であった場合には、記憶部から命令文を読み込んで命令文を用いて命令処理を実行し、処理単位ログに対応する処理が読み書き処理であった場合には、記憶部に対して所定のデータを書き込む書き込み処理、または記憶部に記憶されている所定のデータを読み込む読み込み処理を実行するので、検証対象装置の動作を正確にシミュレートすることが可能である。【０１１４】
また、実施例２によれば、命令処理を実行するときに、第一の記憶部に命令文が記憶されているか否かを判定し、第一の記憶部に命令文が記憶されているものと判定された場合には、第一の記憶部から命令文を読み込み、第一の記憶部に前記命令文が記憶されていないものと判定された場合には、第二の記憶部から命令文を読み込むので、命令処理を実行するときにキャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが可能である。【０１１５】
また、実施例２によれば、読み書き処理を実行するときに、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるかを判定し、所定のデータを読み込む処理であるものと判定された場合には、第一の記憶部および第二の記憶部のいずれに所定のデータが記憶されているかを第一の記憶部から順に判定して所定のデータを読み込み、所定のデータを書き込む処理であるものと判定された場合には、第一の記憶部および第二の記憶部のいずれに所定のデータを格納すべきかを第一の記憶部から順に判定して所定のデータを書き込むので、読み書き処理を実行するときにキャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが可能である。
【実施例３】
【０１１６】
ところで、データキャッシュメモリ１０３に記憶された所定のデータのアドレスが循環するように変化する場合があるが、検証対象装置の動作をシミュレートする場合に、このアドレスの変化を反映してシミュレートすることができない場合がある。そこで、実施例３では、シミュレータ１５が周期的にデータを読み込む処理をシミュレートするときに、オフセットを与える場合を説明する。【０１１７】
ここで、オフセットとは、データキャッシュメモリ１０３に記憶された所定のデータのアドレスの変化によるミスヒットを模擬するために、データキャッシュメモリ１０３に所定のデータが記憶されているときであっても、強制的に外部ＲＡＭ１０４から所定のデータを読み込ませる制御のことをいう。【０１１８】
なお、実施例３では、実施例３に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例３による効果を説明する。【０１１９】
［実施例３に係るシミュレーション装置の構成］
まず、実施例３に係るシミュレーション装置の構成を説明する。なお、実施例３に係るシミュレーション装置１０の構成は、実施例２に係るシミュレーション装置１０と以下に説明する点が異なる。【０１２０】
すなわち、シミュレータ１５は、所定のデータを読み込む処理であるものと判定されたときに、オフセットするか否かを判定し、オフセットする場合には、外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し、オフセットしない場合には、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測する。【０１２１】
例えば、シミュレータ１５は、例えば、シミュレータ１５は、所定のデータを読み込む処理を実行させた回数を所定の記憶部に記憶しておき、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であった場合に、オフセットすると判定する。【０１２２】
［読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理］
次に、図１５を用いて、読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータ１５による処理を説明する。図１５は、読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。【０１２３】
図１５に示すように、読み書き処理を実行するときにシミュレータ１５は、読み込む処理であるか、もしくは、書き込む処理であるかを判定し（ステップＳ６００１）、読み込む処理であるものと判定された場合には（ステップＳ６００１肯定）、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であるか否かを判定する（ステップＳ６００２）。【０１２４】
所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であると判定された場合に（ステップＳ６００２肯定）、シミュレータ１５は、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ６００３）、読み書き処理を実行するときの処理を終了する。【０１２５】
一方では、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数未満であると判定された場合に（ステップＳ６００２否定）、シミュレータ１５は、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定する（ステップＳ６００４）。【０１２６】
データキャッシュメモリ１０３に所定のデータが記憶されている場合には（ステップＳ６００４肯定）、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し（ステップＳ６００５）、読み書き処理を実行するときの処理を終了する。【０１２７】
また、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には（ステップＳ６００４否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ６００３）、読み書き処理を実行するときの処理を終了する。【０１２８】
ここで、ステップＳ６００１の説明に戻ると、所定のデータを書き込む処理であるものと判定された場合には（ステップＳ６００１否定）、シミュレータ１５は、実施例２と同様に処理を実行する。【０１２９】
すなわち、シミュレータ１５は、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には（ステップＳ６００６肯定）、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し（ステップＳ６００７）、他の記憶部に所定のデータを格納すべきであると判定した場合には（ステップＳ６００６否定）、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測し（ステップＳ６００８）、読み書き処理を実行するときの処理を終了する。【０１３０】
［実施例３による効果］
上記したように、実施例３によれば、所定のデータを読み込む処理を繰り返し実行する場合に、オフセットを与えるように処理するので、より正確に検証対象装置の動作をシミュレートすることが可能である。
【実施例４】
【０１３１】
ところで、処理単位ログに対応する処理が複数の処理を連続して実行する処理である場合には、処理単位ログに対応する処理を抽象化しても良い。そこで、実施例４では、処理単位ログに対応する処理を抽象化する場合を説明する。ここで、抽象化とは、例えば、ターゲットＣＰＵ１０１が連続した複数の命令処理を実行するのに必要な時間を、一括して計測することである。【０１３２】
なお、実施例４では、実施例４に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例４による効果を説明する。【０１３３】
［実施例４に係るシミュレーション装置の構成］
まず、実施例４に係るシミュレーション装置の構成を説明する。なお、実施例４に係るシミュレーション装置１０の構成は、実施例３に係るシミュレーション装置１０と以下に説明する点が異なる。【０１３４】
すなわち、処理単位ログ記憶部１３ｃは、図１６に示すように、処理単位ログとして、検査モデルによって実行されたイベントに、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを対応付けて記憶する。例えば、処理単位ログ記憶部１３ｃは、処理単位ログとして、イベント「１」が実行されたときに最初に生成されたログである開始ログ「Ｂ」と、イベント「１」が４種類の処理によってなることを表すログ数「４」とをイベント「１」に対応付けて記憶する。なお、図１６は、実施例４に係る処理単位ログ記憶部１３ｃに記憶される情報の一例を示した図である。【０１３５】
処理単位ログ抽出部１４ｃは、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを処理単位ログとして抽出する。具体的には、処理単位ログ抽出部１４ｃは、入力部１１を介して、処理単位ログ抽出命令を受け付けると、実行ログ記憶部１３ｂから実行ログを読み込み、処理単位ログとして、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに最初に生成された開始ログと、各イベントを実行することによって生成したログ数とを抽出し、処理単位ログ記憶部１３ｃに格納する。【０１３６】
シミュレータ１５は、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを用いて、処理単位ログに対応する処理をシミュレートする。例えば、シミュレータ１５は、４種類の命令処理によってなるイベント「１」を実行すべき時間に至ると、イベント「１」の開始ログ「Ｂ」と、ログ数「４」とを処理単位ログから読み込む。そして、ターゲットＣＰＵ１０１がイベント「１」の最初の命令処理を実行するのに必要な時間を計測し、イベント「１」のログ数である「４」を計測した時間に乗算して、ターゲットＣＰＵ１０１がイベント「１」を実行するのに必要な時間を算出する。【０１３７】
［実施例４による効果］
上記したように、実施例４によれば、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを処理単位ログとして抽出し、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを用いて、処理単位ログに対応する処理をシミュレートするので、より短時間で検証対象装置の動作をシミュレートすることが可能である。
【実施例５】
【０１３８】
さて、これまで実施例１〜４について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、実施例５として、他の実施例を説明する。【０１３９】
例えば、実施例１では、ターゲットＣＰＵ１０１を１つ備えた検査モデル（図３参照）において、処理単位ログに対応する処理が実行される場合の動作をシミュレートする場合を説明したが、本発明はこれに限定されるものではなく、単数または複数のターゲットＣＰＵを備えた検査モデルであっても適応可能である。【０１４０】
また、検査モデル（図３参照）において、命令キャッシュメモリ１０２や、データキャッシュメモリ１０３は、階層構造の記憶部を備えたものであっても適応可能である。【０１４１】
また、実施例１では、検査モデルにおける一連の動作をシミュレートして実行ログを取得する場合を説明したが、本発明はこれに限定されるものではなく、現に存在し、実動している電子装置から実行ログを取得するようにしてもよい。【０１４２】
また、実施例１では、設定条件としての各イベントを実行すべき周期を入力して、各イベントを実行すべき周期を改変した検査モデルの動作をシミュレートする場合を説明したが、本発明はこれに限定されるものではない。例えば、ターゲットＣＰＵ１０１のクロック周波数や、平均処理速度、命令キャッシュメモリ１０２やデータキャッシュメモリ１０３の記憶容量、バス１０６の通信レートや、ラインフェッチをするのに必要な時間などを改変した検査モデルの動作をシミュレートしてもよい。【０１４３】
また、実施例１〜４では、ＯＳのタスク切り替え処理についてのログは、処理単位ログに含まれることを想定しているが、ＯＳのタスク切り替え処理を別個のログとして切り出すようにしてもよい。【０１４４】
また、通信処理における受信処理などは、転送レートを変えた場合についてシミュレートすると、処理の頻度だけでなく、処理量が変化する場合がある。その場合には、処理量の変化を処理の頻度を変更することで置き換えられるようにシミュレートの目的に適した粒度で所定の処理単位を抽出するようにしてもよい。例えば、処理単位としての「上り送信処理」を「方路を検索する処理」および「送信する情報をバッファから読み込む処理」の２つの処理単位に分割して抽出するようにしてもよい。【０１４５】
また、１度に実行するイベントは１つに限定されず、複数のイベントの組み合わせであってもよい。例えば、２秒周期で実行するイベント「２」の実行を契機として、イベント「３」を２回実行するようにしてもよい。【０１４６】
（装置構成等）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。例えば、実行ログから処理単位ログを手動で抽出してもよい。また、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。例えば、予め設定条件記憶部１３ｄに設計条件を記憶しておき、処理単位ログ抽出部１４ｃによって処理単位ログ記憶部１３ｃに処理単位ログが格納されることを契機に、自動で検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするようにしてもよい。【０１４７】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図３に示した検査モデルの構成や、図４、図５、図６、図７、図１０、図１１、図１６に示した記憶情報）については、特記する場合を除いて任意に変更することができる。【０１４８】
また、図２に示したシミュレーション装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる（例えば、図２において、制御部１４をシミュレータ１５に統合するなどできる）。【０１４９】
（シミュレートプログラム）
ところで、本発明はあらかじめ用意されたシミュレートプログラムをコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１７を用いて、上記の実施例に示したシミュレーション装置と同様の機能を有するシミュレートプログラムを実行するコンピュータの一例を説明する。図１７は、シミュレートプログラムを実行するコンピュータを示す図である。【０１５０】
同図に示すように、シミュレーション装置１０としてのコンピュータ１１０は、入力部１２０、ＲＯＭ１３０、ＣＰＵ１４０、ＨＤＤ１５０、ＲＡＭ１６０、出力部１７０およびシミュレータ１８０をバス１９０などで接続して構成される。【０１５１】
ＲＯＭ１３０には、上記の実施例１に示したシミュレーション装置１０と同様の機能を発揮するシミュレートプログラム、つまり、図１７に示すように検査モデル格納プログラム１３０ａと、実行ログ取得プログラム１３０ｂと、処理単位ログ抽出プログラム１３０ｃと、シミュレータ制御プログラム１３０ｄが、あらかじめ記憶されている。なお、これらのプログラム１３０ａ〜プログラム１３０ｄについては、図２に示したシミュレーション装置１０の各構成要素と同様、適宜統合または、分散してもよい。【０１５２】
そして、ＣＰＵ１４０がこれらのプログラム１３０ａ〜プログラム１３０ｄをＲＯＭ１３０から読み出して実行することで、図１７に示すように、プログラム１３０ａ〜プログラム１３０ｄは、検査モデル格納プロセス１４０ａと、実行ログ取得プロセス１４０ｂと、処理単位ログ抽出プロセス１４０ｃと、シミュレータ制御プロセス１４０ｄとして機能するようになる。なお、プロセス１４０ａ〜プロセス１４０ｄは、図２に示した、検査モデル格納部１４ａと、実行ログ取得部１４ｂと、処理単位ログ抽出部１４ｃと、シミュレータ制御部１４ｄとにそれぞれ対応する。【０１５３】
また、ＨＤＤ１５０には、図１７に示すように、検査モデルデータテーブル１５０ａ、実行ログデータテーブル１５０ｂ、処理単位ログデータテーブル１５０ｃ、設定条件データテーブル１５０ｄ、シミュレート結果データテーブル１５０ｅがそれぞれ設けられる。なお、データテーブル１５０ａ〜データテーブル１５０ｅは、図２に示した検査モデル記憶部１３ａと、実行ログ記憶部１３ｂと、処理単位ログ記憶部１３ｃと、設定条件記憶部１３ｄとおよびシミュレート結果記憶部１３ｅにそれぞれ対応する。そして、ＣＰＵ１４０は、データテーブル１５０ａ〜データテーブル１５０ｅから、検査モデルデータ１６０ａ、実行ログデータ１６０ｂ、処理単位ログデータ１６０ｃ、設定条件データ１６０ｄおよびシミュレート結果データ１６０ｅをそれぞれ読み出してＲＡＭ１６０に格納し、ＲＡＭ１６０に格納された、データ１６０ａ〜データ１６０ｅに基づいて処理を実行する。【０１５４】
なお、上記した各プログラム１３０ａ〜プログラム１３０ｄについては、必ずしも最初からＲＯＭ１３０に記憶させておく必要はなく、例えば、コンピュータ１１０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、またはコンピュータ１１０の内外に備えられるＨＤＤなどの「固定用の物理媒体」、さらには公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１１０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ１１０がこれから各プログラムを読み出して実行するようにしてもよい。
【産業上の利用可能性】
【０１５５】
以上のように、本発明に係るシミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートすることに有用であり、特に、検証対象装置の動作をシミュレートするのに多くの時間を要することに適する。
【図１】
2009050768.tif 000003
【図２】
2009050768.tif 000004
【図３】
2009050768.tif 000005
【図４】
2009050768.tif 000006
【図５】
2009050768.tif 000007
【図６】
2009050768.tif 000008
【図７】
2009050768.tif 000009
【図８】
2009050768.tif 000010
【図９】
2009050768.tif 000011
【図１０】
2009050768.tif 000012
【図１１】
2009050768.tif 000013
【図１２】
2009050768.tif 000014
【図１３】
2009050768.tif 000015
【図１４】
2009050768.tif 000016
【図１５】
2009050768.tif 000017
【図１６】
2009050768.tif 000018
【図１７】
2009050768.tif 000019
【手続補正書】
【提出日】平成22年1月8日(2010.1.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、
前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップと、
を含んだことを特徴とするシミュレート方法。
【請求項２】
前記検証対象装置は、所定の命令に対応する命令処理を実行するための命令文、および読み書き処理された所定のデータを記憶する記憶部を備えたものであって、
前記シミュレートステップは、前記処理単位ログに対応する処理が前記命令処理、もしくは前記読み書き処理のいずれであるかを判定し、前記処理単位ログに対応する処理が前記命令処理であった場合には、前記記憶部から前記命令文を読み込んで当該命令文を用いて前記命令処理を実行し、前記処理単位ログに対応する処理が読み書き処理であった場合には、前記記憶部に対して所定のデータを書き込む書き込み処理、または前記記憶部に記憶されている所定のデータを読み込む読み込み処理を実行することを特徴とする請求項１に記載のシミュレート方法。
【請求項３】
前記検証対象装置は、前記命令文を読み込む処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、
前記シミュレートステップは、前記命令処理を実行するときに、前記第一の記憶部に前記命令文が記憶されているか否かを判定し、前記第一の記憶部に前記命令文が記憶されているものと判定された場合には、前記第一の記憶部から前記命令文を読み込み、前記第一の記憶部に前記命令文が記憶されていないものと判定された場合には、前記第二の記憶部から前記命令文を読み込むことを特徴とする請求項２に記載のシミュレート方法。
【請求項４】
前記検証対象装置は、前記読み書き処理を実行する場合に用いられる第一の記憶部および第二の記憶部を備えたものであって、
前記シミュレートステップは、前記読み書き処理を実行するときに、前記所定のデータを記憶部から読み込む処理であるか、もしくは、前記所定のデータを記憶部に書き込む処理であるかを判定し、前記所定のデータを読み込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータが記憶されているか否かを前記第一の記憶部から順に判定して前記所定のデータを読み込み、前記所定のデータを書き込む処理であるものと判定された場合には、前記第一の記憶部および前記第二の記憶部のいずれに前記所定のデータを格納すべきかを前記第一の記憶部から順に判定して前記所定のデータを書き込むことを特徴とする請求項２に記載のシミュレート方法。
【請求項５】
モデル化された検証対象装置の動作をシミュレートして得られたシミュレート結果を用いて電子装置を設計する電子装置の設計方法であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、
前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップと、
前記シミュレートステップによるシミュレート結果を用いて電子装置を設計することを特徴とする電子装置の設計方法。
【請求項６】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法をシミュレーション装置としてのコンピュータに実行させるシミュレートプログラムであって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得手順と、
前記実行ログ取得手順によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出手順と、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出手順によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート手順と、
をコンピュータに実行させることを特徴とするシミュレートプログラム。
【請求項７】
検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレーション装置であって、
検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得部と、
前記実行ログ取得部によって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出部と、
前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出部によって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレート部と、
を備えたことを特徴とするシミュレーション装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、シミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置に関する。
【背景技術】
【０００２】
従来より、ＬＳＩ（Large  Scale  Integration）や、システムＬＳＩ、ＳｏＣ（System  on  Chip）などの検証対象装置（電子装置：Electronic  Device）の性能を評価するために、検証対象装置をモデル化した検査モデルの動作をＩＳＳ（Instruction  Set  Simulator：命令セットシミュレータ）を用いてシミュレートするシミュレーション装置がある（特許文献１〜６参照）。
【０００３】
具体的には、従来の技術では、検査モデルのハードウェアは、ＲＴＬ（Register  Transfer  Level）でのＶｅｒｉｌｏｇ−ＨＤＬ（Hardware  Description  Language）や、ＴＬＭ（Transaction  Level  Modeling）でのＳｙｓｔｅｍＣによってモデル化される。また、検査モデルで実行するソフトウェアは、Ｃ言語やアセンブリ言語で記述されたプログラムをコンパイルして、実行バイナリが作成される。
【０００４】
そして、従来の技術では、検査モデルに実行バイナリを実行させることで、検証対象装置の動作をシミュレートし、シミュレート時の各ハードウェアを監視することで、検証対象装置の命令実行時間などのシミュレート結果を得ている。
【０００５】
【特許文献１】特開２００４−１３２２７号公報
【特許文献２】特開２００６−２３８５２号公報
【特許文献３】特開平１１−９６１３０号公報
【特許文献４】特開２００３−１５９１４号公報
【特許文献５】特開平５−１５８７４０号公報
【特許文献６】特開２００１−２４９８２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記した従来の技術は、検証対象装置の動作をシミュレートするのに多くの時間を要するという課題があった。
【０００７】
すなわち、従来の技術では、ＩＳＳが実行バイナリを解読し、実行バイナリに係る命令を実行するという複雑な処理を行うため、ＩＳＳ上でのシミュレートに多くの時間を要していた。
【０００８】
また、ＩＳＳを用いずに検証対象装置の性能を評価する場合であっても、従来の技術は、実行バイナリをホスト用コードに変換することなど複雑な工程を必要としていた（特許文献１参照）。
【０００９】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能なシミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するため、本発明は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートするシミュレート方法であって、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の当該検査モデルにおける一連の動作をシミュレートし、当該所定の処理の実行に伴って生成される実行ログを取得する実行ログ取得ステップと、前記実行ログ取得ステップによって取得された実行ログから所定の処理単位で構成される処理単位ログを抽出する処理単位ログ抽出ステップと、前記検証対象装置の機能の一部を改変した検査モデルにおいて、前記処理単位ログ抽出ステップによって抽出された処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするシミュレートステップとを含んだことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明に係るシミュレート方法、電子装置の設計方法、シミュレートプログラムおよびシミュレーション装置の実施例を詳細に説明する。なお、以下では、この発明が搭載されたシミュレーション装置を実施例として説明する。
【００１３】
［用語の説明］
まず最初に、本実施例で用いる主要な用語を説明する。本実施例で用いる「モデル化された検証対象装置（検査モデル）」とは、ハードウェアによって実現される各機能が、例えば、ＲＴＬ（Register  Transfer  Level）でのＶｅｒｉｌｏｇ−ＨＤＬ（Hardware  Description  Language）や、ＴＬＭ（Transaction  Level  Modeling）でのＳｙｓｔｅｍＣによって記述された検証対象装置である。
【００１４】
また、本実施例で用いる「実行ログ」とは、検証対象装置に一連の処理を実行するためのソフトウェアを、ＩＳＳなどのシミュレータで実行させたときの、実際に実行された命令履歴である。
【実施例１】
【００１５】
以下では、実施例１に係るシミュレーション装置の概要および特徴、シミュレーション装置の構成およびシミュレーション装置による処理の流れを順に説明し、実施例１による効果を説明する。
【００１６】
［シミュレーション装置の概要および特徴］
まず最初に、図１を用いて、実施例１に係るシミュレーション装置の概要および特徴を説明する。図１は、実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。
【００１７】
実施例１に係るシミュレーション装置は、検証対象装置の性能を評価するためにモデル化された検証対象装置の動作をシミュレートすることを概要とし、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることを主たる特徴とする。
【００１８】
この主たる特徴について説明すると、実施例１に係るシミュレーション装置は、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、この所定の処理の実行に伴って生成される実行ログを取得する（図１の（１）参照）。例えば、実施例１に係るシミュレーション装置は、通信装置モデルにおいて通信処理が実行される場合の一連の動作をシミュレートし、この通信処理を実行に伴って生成される実行ログを取得する。
【００１９】
次に、実施例１に係るシミュレーション装置は、実行ログから所定の処理単位で構成される処理単位ログを抽出する（図１の（２）参照）。例えば、実施例１に係るシミュレーション装置は、実行ログから所定の処理単位で構成される「上り送受信処理」や「下り送受信処理」（例えば、「方路を検索する処理」や、「送信する情報をバッファから読み込む処理」や、「情報を送信する処理」などで構成される「送受信処理」）、周期的な割り込み処理である「周期処理Ａ」についての処理単位ログを抽出する。
【００２０】
そして、実施例１に係るシミュレーション装置は、検証対象装置の機能の一部を改変した検査モデルにおいて、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートする（図１の（３）参照）。例えば、実施例１に係るシミュレーション装置は、通信速度を２倍に改善した通信装置モデルにおいて、所定の時間当たりに「上り送信処理」や「下り受信処理」を２倍実行し、「周期処理Ａ」を半分の周期で実行した場合の動作をシミュレートする。
【００２１】
このようなことから、実施例１に係るシミュレーション装置は、上記した主たる特徴のごとく、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。
【００２２】
［実施例１に係るシミュレーション装置の構成］
次に、図２〜図７を用いて、図１に示したシミュレーション装置の構成を説明する。図２は、シミュレーション装置の構成を示すブロック図である。図３は、検査モデル記憶部１３ａに記憶される情報の一例を示した図である。図４は、実行ログ記憶部に記憶される情報の一例を示した図である。図５は、処理単位ログ記憶部に記憶される情報の一例を示した図である。図６は、設定条件記憶部に記憶される情報の一例を示した図である。図７は、シミュレート結果記憶部に記憶される情報の一例を示した図である。
【００２３】
図２に示すように、このシミュレーション装置１０は、入力部１１と、出力部１２と、記憶部１３と、制御部１４、シミュレータ１５とから構成される。
【００２４】
このうち、入力部１１は、各種の情報の入力を受け付ける。具体的には、入力部１１は、キーボードやマウスなどを備えて構成され、例えば、この入力部１１を介して、検査モデルや、検査モデルで実行するソフトウェアや、設定条件の入力を受け付ける。
【００２５】
出力部１２は、各種の情報を出力する。具体的には、出力部１２は、モニタやディスプレイなどを備えて構成され、この出力部１２を介してシミュレート結果（例えば、検証対象装置のＣＵＰ負荷率や、バス占有率や、処理時間や、消費電力や、メモリ使用率など）を出力する。
【００２６】
記憶部１３は、処理部３０による各種処理に必要なデータおよびプログラムを記憶し、特に本発明に密接に関連するものとしては、検査モデル記憶部１３ａと、実行ログ記憶部１３ｂと、処理単位ログ記憶部１３ｃと、設定条件記憶部１３ｄと、シミュレート結果記憶部１３ｅとを備える。
【００２７】
検査モデル記憶部１３ａは、検査モデルを記憶する。具体的に一例をあげて説明すると、検査モデル記憶部１３ａは、図３に示すように、ターゲットＣＰＵ１０１と、命令キャッシュメモリ１０２と、データキャッシュメモリ１０３と、外部ＲＡＭ１０４と、周辺ハードウェア１０５と、バス１０６とから構成される検査モデル１００を記憶する。
【００２８】
ここで、ターゲットＣＰＵ１０１は、検査モデル１００としてのＣＰＵである。また、命令キャッシュメモリ１０２は、所定の命令処理の命令文をターゲットＣＰＵ１０１が短時間で取得するために、命令文を一時的に記憶する記憶部である。また、データキャッシュメモリ１０３は、検査モデルが動作するときに使用する所定のデータをターゲットＣＰＵ１０１が短時間で取得するために一時的に記憶する記憶部である。
【００２９】
また、外部ＲＡＭ１０４は、命令文および使用データを長期的に記憶する記憶部である。また、周辺ハードウェア１０５は、外部ＩＦや、特定の用途専用のハードウェアである。そして、ターゲットＣＰＵ１０１、命令キャッシュメモリ１０２およびデータキャッシュメモリ１０３は、外部ＲＡＭ１０４や周辺ハードウェア１０５とバス１０６を介して接続される。
【００３０】
実行ログ記憶部１３ｂは、実行ログを記憶する。具体的に一例をあげて説明すると、実行ログ記憶部１３ｂは、図４に示すように、検査モデルが所定の処理の実行に伴って生成される実行ログとして、所定の処理の実行に伴って、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・、の順に各ログに対応する処理が実行されたことを意味する実行ログを記憶する。ここで、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・は、例えば、通信装置モデルの通信処理における「方路を検索する処理」や、「送信する情報をバッファから読み込む処理」や、「情報を送信する処理」などのログに相当する。
【００３１】
処理単位ログ記憶部１３ｃは、処理単位ログを記憶する。具体的に一例をあげて説明すると、処理単位ログ記憶部１３ｃは、図５に示すように、実行ログから所定の処理単位で構成される処理単位ログとして、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに実行された処理のログを記憶する。ここで、「イベント」とは、通信装置モデルの「上り送信処理」や、「下り受信処理」や、「周期処理Ａ」に相当し、イベント「１」が実行されたときにログ「Ｂ」に対応する処理が実行され、次にログ「Ｃ」に対応する処理が実行されたことを意味する。
【００３２】
設定条件記憶部１３ｄは、設定条件を記憶する。具体的に一例をあげて説明すると、設定条件記憶部１３ｄは、図６に示すように、検証対象装置の機能の一部を改変した検査モデルにおいてイベント「１」を１秒周期で実行させ、イベント「２」を２秒周期で実行し、イベント「３」を３秒周期で実行させるための設定条件として、各イベントと、各イベントを実行すべき周期と（例えば、イベント「１」と、周期「１秒」と）を対応付けて記憶する。
【００３３】
シミュレート結果記憶部１３ｅは検証対象装置の機能の一部を改変した検査モデルのシミュレート結果を記憶する。具体的に一例をあげて説明すると、シミュレート結果記憶部１３ｅは、図７に示すように、検証対象装置の機能の一部を改変した検査モデルのシミュレート結果として、ＣＵＰ負荷率（例えば２０％）や、バス占有率（例えば、１０％）や、処理時間（例えば、１分）や、消費電力（例えば、６０Ｗ（ワット））や、メモリ使用率（例えば、７０％）を記憶する。
【００３４】
制御部１４は、所定の制御プログラム、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。特に本発明に密接に関連するものとしては、検査モデル格納部１４ａと、実行ログ取得部１４ｂと、処理単位ログ抽出部１４ｃと、シミュレータ制御部１４ｄとを備える。なお、実行ログ取得部１４ｂは、請求の範囲に記載の「実行ログ取得部」に対応し、処理単位ログ抽出部１４ｃは、請求の範囲に記載の「処理単位ログ抽出部」に対応する。
【００３５】
検査モデル格納部１４ａは、検査モデルを格納する。具体的には、検査モデル格納部１４ａは、入力部１１を介して、検査モデルを受け付けると、検査モデル記憶部１３ａに格納する。
【００３６】
実行ログ取得部１４ｂは、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、この所定の処理の実行に伴って生成される実行ログを取得する。
【００３７】
具体的には、実行ログ取得部１４ｂは、入力部１１を介して、検査モデルにおいて所定の処理を実行するための仮ソフトウェアを受け付けると、検査モデル記憶部１３ａから検査モデルを読み込み、検査モデルと、仮ソフトウェアとをシミュレータ１５に入力し、シミュレータ１５に検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートさせる。そして、実行ログ取得部１４ｂは、シミュレータ１５から所定の処理の実行に伴って生成された実行ログを受け付け、実行ログ記憶部１３ｂに格納する（図４参照）。
【００３８】
例えば、実行ログ取得部１４ｂは、入力部１１を介して、通信装置モデルにおいて通信処理を実行するための仮ソフトウェアを受け付けると、シミュレータ１５に通信処理が実行される場合の一連の動作をシミュレートさせ、ログ「Ａ」、ログ「Ｂ」、ログ「Ｃ」・・・の順に各ログに対応する処理が実行されたことを意味する実行ログを受け付け、実行ログ記憶部１３ｂに格納する。
【００３９】
ここで、仮ソフトウェアとは、例えば、リアルタイムＯＳ（Real-Time  Operating  System）を利用するシミュレータ１５が所定の処理を実行する場合の一連の動作をシミュレートするときに、十分な負荷（例えば、方路を検索する処理における遅延時間）を作り出すことのできる性能を有したソフトウェアである。
【００４０】
処理単位ログ抽出部１４ｃは、実行ログから所定の処理単位で構成される処理単位ログを抽出する。具体的には、処理単位ログ抽出部１４ｃは、実行ログ取得部１４ｂによって実行ログ記憶部１３ｂに実行ログが格納されると、実行ログ記憶部１３ｂから実行ログを読み込み、所定の処理単位で構成される処理単位ログを抽出し、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに生成されたログを処理単位ログ記憶部１３ｃに格納する（図５参照）。
【００４１】
例えば、処理単位ログ抽出部１４ｃは、実行ログから同じログの繰り返し（例えば、ログ「Ｂ」の次にログ「Ｃ」が生成されたという繰り返し）や、ＯＳがタスクを起動したときに生成されたログの場所を調べることで、各イベントが実行されたときに生成されたログを抽出し、処理単位ログ記憶部１３ｃに格納する。
【００４２】
なお、検査モデルにおいて所定の処理を実行するための仮ソフトウェアの中に、明示的な区切り（例えば、所定の命令に対応する命令処理など）を挿入しておき、処理単位ログ抽出部１４ｃは、この明示的な区切りに係るログを参照して、処理単位ログを抽出するようにしてもよい。
【００４３】
シミュレータ制御部１４ｄは、入力部１１を介して、設定条件を受け付けると、設定条件記憶部１３ｄに設定条件を格納する（図６参照）。そして、シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから検査モデルを読み込む。さらに、シミュレータ制御部１４ｄは、処理単位ログ記憶部１３ｃから処理単位ログを読み込む。そして、シミュレータ制御部１４ｄは、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力し、シミュレータ１５に検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートさせる。
【００４４】
そして、シミュレータ制御部１４ｄは、シミュレータ１５から検証対象装置の機能の一部を改変した検査モデルの動作のシミュレート結果を受け付け、シミュレート結果をシミュレート結果記憶部１３ｅに格納するとともに、出力部１２を介してシミュレート結果を出力する。
【００４５】
シミュレータ１５は、検査モデルにおける一連の動作をシミュレートする。具体的には、シミュレータ１５は、実行ログ取得部１４ｂから検査モデルと、仮ソフトウェアとを受け付けた場合には、仮ソフトウェアをコンパイルして実行バイナリを作成し、検査モデルに実行バイナリを実行させるというシミュレーションを実行し、実行ログを生成する。そして、シミュレータ１５は、生成した実行ログを実行ログ取得部１４ｂに対して送信する。
【００４６】
また、シミュレータ１５は、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートする。
【００４７】
具体的には、シミュレータ１５は、シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けた場合には、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいて、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートする。そして、シミュレート結果をシミュレータ制御部１４ｄに対して送信する。
【００４８】
例えば、シミュレータ１５は、イベント「１」を１秒周期で実行し、イベント「２」を２秒周期で実行し、イベント「３」を３秒周期で実行した場合の検査モデルの動作をシミュレートする。そして、シミュレータ１５は、シミュレート結果として、ＣＵＰ負荷率や、バス占有率や、処理時間や、消費電力や、メモリ使用率を算出し、シミュレータ制御部１４ｄに対して送信する。なお、シミュレータ１５は、請求の範囲に記載の「シミュレート部」に対応する。
【００４９】
［実施例１に係るシミュレーション装置による処理］
次に、図８、図９を用いて、実施例１に係るシミュレーション装置による処理を説明する。図８は、処理単位ログを抽出するときのシミュレーション装置による処理の流れを示すフローチャートである。図９は、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理の流れを示すフローチャートである。なお、以下では、検査モデル格納部１４ａによって検査モデルが検査モデル記憶部１３ａに格納されているものとして各処理の流れを説明する。
【００５０】
［処理単位ログを抽出するときのシミュレーション装置による処理］
図８に示すように、実行ログ取得部１４ｂは、入力部１１を介して検査モデルにおいて所定の処理を実行するための仮ソフトウェアを受け付けると（ステップＳ１００１肯定）、検査モデル記憶部１３ａから検査モデルを読み込み（ステップＳ１００２）、検査モデルと、仮ソフトウェアとをシミュレータ１５に入力する（ステップＳ１００３）。
【００５１】
検査モデルと、仮ソフトウェアとを受け付けたシミュレータ１５は、仮ソフトウェアをコンパイルして実行バイナリを作成し（ステップＳ１００４）、シミュレーションを実行して実行ログを生成し（ステップＳ１００５）、実行ログを実行ログ取得部１４ｂに対して送信する（ステップＳ１００６）。
【００５２】
実行ログを受け付けた実行ログ取得部１４ｂは、実行ログを実行ログ記憶部１３ｂに格納する（ステップＳ１００７）。
【００５３】
続いて、処理単位ログ抽出部１４ｃは、実行ログ記憶部１３ｂから実行ログを読み込み（ステップＳ１００８）実行ログから所定の処理単位で構成される処理単位ログを抽出し（ステップＳ１００９）、処理単位ログを処理単位ログ記憶部１３ｃに格納し（ステップＳ１０１０）、実行ログから処理単位ログを抽出するときの処理を終了する。
【００５４】
［検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理］
図９に示すように、シミュレータ制御部１４ｄは、設定条件を受け付けると（ステップＳ２００１肯定）、設定条件記憶部１３ｄに設定条件を格納する（ステップＳ２００２）。
【００５５】
続いて、シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから検査モデルを読み込み（ステップＳ２００３）、処理単位ログ記憶部１３ｃから処理単位ログを読み込み（ステップＳ２００４）、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力する（ステップＳ２００５）。
【００５６】
シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けたシミュレータ１５は、検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートし、（ステップＳ２００６）、シミュレート結果をシミュレータ制御部１４ｄに対して送信する（ステップＳ２００７）。
【００５７】
シミュレーション結果を受け付けたシミュレータ制御部１４ｄは、シミュレート結果をシミュレート結果記憶部１３ｅに格納するとともに、出力部１２を介してシミュレート結果を出力し（ステップＳ２００８）、検証対象装置の動作をシミュレートするときの処理を終了する。
【００５８】
［実施例１による効果］
上記したように、実施例１によれば、検証対象装置をモデル化した検査モデルにおいて所定の処理が実行される場合の検査モデルにおける一連の動作をシミュレートし、所定の処理の実行に伴って生成される実行ログを取得し、実行ログから所定の処理単位で構成される処理単位ログを抽出し、検証対象装置の機能の一部を改変した検査モデルにおいて、処理単位ログに対応する処理が実行される場合の動作を、ユーザによって設定された設定条件に基づいてシミュレートするので、検証対象装置の動作を短時間で複雑な工程を要することなくシミュレートすることが可能である。
【実施例２】
【００５９】
ところで、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが必要となる場合もある。例えば、外部ＲＡＭ１０４の使用率や、命令キャッシュメモリ１０２から所定の命令処理の命令文を読み込むときのヒット率（命令キャッシュヒット率）や、データキャッシュメモリ１０３から所定のデータを読み込むときのヒット率（データキャッシュヒット率）や、外部ＲＡＭ１０４から所定の命令処理の命令文を読み込む処理の処理時間（命令フェッチ時間）や、周辺ハードウェア１０５に搭載された記憶部に所定のデータを読み書き処理する処理時間や、ターゲットＣＰＵ１０１のアイドル時間などがシミュレーション結果として必要となる場合もある。そこで、実施例２では、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートする場合を説明する。なお、実施例２では、実施例２に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例２による効果を説明する。
【００６０】
［実施例２に係るシミュレーション装置の構成］
まず、図１０、図１１を用いて、実施例２に係るシミュレーション装置の構成を説明する。図１０は、実施例２に係るシミュレーション装置の実行ログ記憶部に記憶される情報の一例を示した図である。図１１は、実施例２に係るシミュレーション装置の処理単位ログ記憶部に記憶される情報の一例を示した図である。
【００６１】
実施例２に係るシミュレーション装置１０の構成は、実施例１に係るシミュレーション装置１０と以下に説明する点が異なる。
【００６２】
すなわち、実行ログ記憶部１３ｂは、図１０に示すように、実行ログとして、各ログが生成されたときの処理内容を示すラベルを実行ログの各ログに対応付けて記憶する。具体的には、実行ログ記憶部１３ｂは、所定の命令処理が実行されたことを意味するラベル（例えば、ラベル「命令」）を所定の命令処理の実行に伴って生成されたログ（例えば、ログ「Ａ」）に対応付けて記憶する。
【００６３】
また、実行ログ記憶部１３ｂは、所定のデータを記憶部から読み込む処理が実行されたことを意味するラベル（例えば、ラベル「データ読み込み」）を所定のデータを記憶部から読み込む処理の実行に伴って生成されたログ（例えば、ログ「Ｃ」）に対応付けて記憶する。
【００６４】
また、実行ログ記憶部１３ｂは、所定のデータを記憶部に書き込む処理が実行されたことを意味するラベル（例えば、ラベル「データ書き込み」）を所定のデータを記憶部から書き込む処理の実行に伴って生成されたログ（例えば、ログ「Ｄ」）に対応付けて記憶する。
【００６５】
処理単位ログ記憶部１３ｃは、処理単位ログとして、処理内容を示すラベルを各イベントが実行されたときに生成されたログに対応付けて記憶する。具体的に一例をあげて説明すると、処理単位ログ記憶部１３ｃは、図１１に示すように、「ログ「Ｂ」に対応する命令処理が実行され、次に、ログ「Ｃ」に対応する読み込み処理が実行された」というイベント「１」として、ラベル「命令」をログ「Ｂ」に対応付けて記憶し、ラベル「データ読み込み」をログ「Ｃ」に対応付けて記憶する。
【００６６】
実行ログ取得部１４ｂは、シミュレータ１５から実行ログを受け付け、処理内容を示すラベルを実行ログの各ログに対応付けて実行ログ記憶部１３ｂに格納する（図１０参照）。
【００６７】
処理単位ログ抽出部１４ｃは、実行ログから所定の処理単位で構成される処理単位ログを抽出し、検査モデルによって実行されたイベントごとに区分して、処理内容を示すラベルを各イベントが実行されたときに生成されたログに対応付けて処理単位ログ記憶部１３ｃに格納する（図１１参照）。
【００６８】
シミュレータ制御部１４ｄは、検査モデル記憶部１３ａから命令キャッシュメモリ１０２と、データキャッシュメモリ１０３と、外部ＲＡＭ１０４と、周辺ハードウェア１０５とを備えた検査モデル１００を検査モデル記憶部１３ａから読み込み、検査モデルと、処理単位ログと、設定条件とをシミュレータ１５に入力し、シミュレータ１５に検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートさせる。
【００６９】
シミュレータ１５は、実行ログ取得部１４ｂから検査モデルと、仮ソフトウェアとを受け付けた場合には、シミュレーションを実行し、実行ログの各ログに対して処理内容を示すラベルを付与しつつ実行ログを生成し、実行ログ取得部１４ｂに対して送信する。
【００７０】
また、シミュレータ１５は、シミュレータ制御部１４ｄから検査モデルと、処理単位ログと、設定条件とを受け付けた場合には、キャッシュメモリの動作の解析が可能な抽象度で検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートする。
【００７１】
ここで、シミュレータ１５が実行するキャッシュメモリの動作の解析が可能な抽象度での検査モデルの動作のシミュレートについて一例をあげて説明する。なお、シミュレータ１５は、図６に示した設定条件に基づいて、図３に示すような検査モデル１００の動作をシミュレートして、一連の処理を実行するのに必要な処理時間を計測するものとする。
【００７２】
シミュレータ１５は、検査モデルの動作のシミュレートを開始後、所定のイベントを実行すべき時間に至ると、所定のイベントのログと、このログに対応するラベルとを処理単位ログから読み込み、所定のイベントの処理が命令処理、もしくは、読み書き処理のいずれであるかをログに対応するラベルを用いて判定する。
【００７３】
ここで、シミュレータ１５は、所定のイベントの処理が命令処理であった場合には、記憶部から命令文を読み込んで命令処理を実行するというシミュレートを実行する。
【００７４】
具体的には、シミュレータ１５は、命令処理を実行するときに、命令キャッシュメモリ１０２に命令文が記憶されているか否かを判定し、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には、命令キャッシュメモリ１０２から命令文を読み込み、命令キャッシュメモリ１０２に命令文が記憶されていないものと判定された場合には、外部ＲＡＭ１０４から命令文を読み込んで命令処理を実行するというシミュレートを実行する。
【００７５】
例えば、シミュレータ１５は、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間（平均ＣＰＩ分の時間）を処理時間として計測する。
【００７６】
また、命令キャッシュメモリ１０２に命令文が記憶されていないものと判定された場合には、ターゲットＣＰＵ１０１がバス１０６に対してラインフェッチ（例えば、８命令文を連続して外部ＲＡＭ１０４から読み込む処理）をするのに必要な時間を処理時間として計測し、これに加えて、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測する。
【００７７】
一方では、シミュレータ１５は、所定のイベントの処理が読み書き処理であった場合には、記憶部に対して所定のデータを書き込む書き込み処理、または記憶部に記憶されている所定のデータを読み込む読み込み処理を実行するというシミュレートを実行する。
【００７８】
具体的には、シミュレータ１５は、読み書き処理を実行するときに、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるかを所定のイベントのログに対応するラベルを用いて判定する。
【００７９】
ここで、シミュレータ１５は、所定のデータを読み込む処理であるものと判定された場合には、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定して、所定のデータを読み込むというシミュレートを実行する。
【００８０】
例えば、データキャッシュメモリ１０３に所定のデータが記憶されている場合には、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチ（外部ＲＡＭ１０４からデータキャッシュメモリ１０３に所定のデータを書き写す処理）を実行するのに必要な時間を処理時間として計測する。
【００８１】
また、シミュレータ１５は、所定のデータを書き込む処理であるものと判定された場合には、データキャッシュメモリ１０３および他の記憶部（例えば、周辺ハードウェア１０５に搭載された記憶部）のいずれに所定のデータを格納すべきかをデータキャッシュメモリ１０３から順に判定して所定のデータを書き込むというシミュレートを実行する。
【００８２】
例えば、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し、他の記憶部に所定のデータを格納すべきであると判定した場合には、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測する。
【００８３】
このようにして、シミュレータ１５は、所定のイベントの処理が終わるまで、所定のイベントの次の処理について上記のシミュレートと同様に実行し、各イベントの周期ごとに所定のイベントの処理をログが生成された順番に実行する。
【００８４】
そして、シミュレータ１５は、シミュレートの終了とともに、各処理を実行するのに必要な処理時間を積算し、積算結果をシミュレーション結果として、シミュレータ制御部１４ｄに対して送信する。
【００８５】
［シミュレーション装置のシミュレータによる処理］
次に、図１２、図１３、図１４を用いて、実施例２に係るシミュレーション装置１０のシミュレータ１５による処理を説明する。図１２は、検証対象装置の機能の一部を改変した場合のシミュレータによる処理の流れを示すフローチャートである。図１３は、命令処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。図１４は、読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【００８６】
［検証対象装置の機能の一部を改変した場合のシミュレータによる処理］
まず、図１２を用いて、検証対象装置の機能の一部を改変した検査モデルの動作のシミュレートを開始した後から、シミュレートを終了するまでのシミュレータ１５による処理を説明する。なお、以下に説明するシミュレータ１５による処理は、シミュレートの実行中は繰りかえし実行し、シミュレートの終了とともに処理を終了する。
【００８７】
同図に示すように、シミュレータ１５は、所定のイベントを実行すべき時間に至ると（ステップＳ３００１肯定）、所定のイベントのログと、このログに対応するラベルとを処理単位ログから読み込み（ステップＳ３００２）、所定のイベントの処理が命令処理、もしくは、読み書き処理のいずれであるかをログに対応するラベルを用いて判定する（ステップＳ３００３）。
【００８８】
ここで、所定のイベントの処理が命令処理であると判定した場合には（ステップＳ３００３肯定）、シミュレータ１５は、命令処理を実行するというシミュレートを実行する（ステップＳ３００４）。
【００８９】
一方では、所定のイベントの処理が読み書き処理であると判定した場合には（ステップＳ３００３否定）、シミュレータ１５は、読み書き処理を実行するというシミュレートを実行する（ステップＳ３００５）。
【００９０】
命令処理（ステップＳ３００４）、もしくは、読み書き処理（ステップＳ３００５）を実行するというシミュレートを終了すると、シミュレータ１５は、所定のイベントの処理を最後まで実行したかを判定する（ステップＳ３００６）。
【００９１】
ここで、所定のイベントの処理を最後まで実行したと判定した場合には（ステップＳ３００６肯定）、シミュレータ１５は、再び所定のイベントを実行すべき時間に至るまで待機する（ステップＳ３００１）。
【００９２】
一方では、所定のイベントの処理を最後まで実行していないと判定した場合には（ステップＳ３００６否定）、シミュレータ１５は、所定のイベントの次のログと、このログに対応するラベルとを処理単位ログから読み込み（ステップＳ３００２）、所定のイベントの処理を最後まで実行するまで（ステップＳ３００６肯定）、上記した処理を繰り返し実行する。
【００９３】
［命令処理を実行するときのシミュレーション装置のシミュレータによる処理］
次に、図１３を用いて、命令処理を実行するとき（図１２のステップＳ３００４）のシミュレーション装置のシミュレータによる処理の流れを説明する。同図に示すように、命令処理を実行するときにシミュレータ１５は、命令キャッシュメモリ１０２に命令文が記憶されているか否かを判定する（ステップＳ４００１）。
【００９４】
ここで、命令キャッシュメモリ１０２に命令文が記憶されているものと判定された場合には（ステップＳ４００１肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測し（ステップＳ４００２）、命令処理を実行するときの処理を終了する。
【００９５】
一方では、命令キャッシュメモリに命令アドレスに係る処理の命令文が格納されていない場合には（ステップＳ４００１否定）、シミュレータ１５は、ターゲットＣＰＵ１０１がバス１０６に対してラインフェッチをするのに必要な時間を処理時間として計測し（ステップＳ４００３）、ターゲットＣＰＵ１０１が命令処理を実行するのに必要な時間を処理時間として計測し（ステップＳ４００２）、命令処理を実行するときの処理を終了する。
【００９６】
［読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理］
次に、図１４を用いて、読み書き処理を実行するとき（図１２のステップＳ３００５）のシミュレーション装置のシミュレータによる処理の流れを説明する。同図に示すように、読み書き処理を実行するときにシミュレータ１５は、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるか否かを所定のイベントのログに対応するラベルを用いて判定する（ステップＳ５００１）。
【００９７】
ここで、所定のデータを読み込む処理であるものと判定された場合には（ステップＳ５００１肯定）、シミュレータ１５は、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定する（ステップＳ５００２）。
【００９８】
データキャッシュメモリ１０３に所定のデータが記憶されている場合には（ステップＳ５００２肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し（ステップＳ５００３）、読み書き処理を実行するときの処理を終了する。
【００９９】
また、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には（ステップＳ５００２否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ５００４）、読み書き処理を実行するときの処理を終了する。
【０１００】
ここで、ステップＳ５００１の説明に戻ると、所定のデータを書き込む処理であるものと判定された場合には（ステップＳ５００１否定）、シミュレータ１５は、データキャッシュメモリ１０３および他の記憶部のいずれに所定のデータを格納すべきかをデータキャッシュメモリ１０３から順に判定する（ステップＳ５００５）。
【０１０１】
ここで、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には（ステップＳ５００５肯定）、シミュレータ１５は、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し（ステップＳ５００６）、読み書き処理を実行するときの処理を終了する。
【０１０２】
また、他の記憶部に所定のデータを格納すべきであると判定した場合には（ステップＳ５００５否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測し（ステップＳ５００７）、読み書き処理を実行するときの処理を終了する。
【０１０３】
［実施例２による効果］
上記したように、実施例２によれば、処理単位ログに対応する処理が命令処理、もしくは読み書き処理のいずれであるかを判定し、処理単位ログに対応する処理が命令処理であった場合には、記憶部から命令文を読み込んで命令文を用いて命令処理を実行し、処理単位ログに対応する処理が読み書き処理であった場合には、記憶部に対して所定のデータを書き込む書き込み処理、または記憶部に記憶されている所定のデータを読み込む読み込み処理を実行するので、検証対象装置の動作を正確にシミュレートすることが可能である。
【０１０４】
また、実施例２によれば、命令処理を実行するときに、第一の記憶部に命令文が記憶されているか否かを判定し、第一の記憶部に命令文が記憶されているものと判定された場合には、第一の記憶部から命令文を読み込み、第一の記憶部に前記命令文が記憶されていないものと判定された場合には、第二の記憶部から命令文を読み込むので、命令処理を実行するときにキャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが可能である。
【０１０５】
また、実施例２によれば、読み書き処理を実行するときに、所定のデータを記憶部から読み込む処理であるか、もしくは、所定のデータを記憶部に書き込む処理であるかを判定し、所定のデータを読み込む処理であるものと判定された場合には、第一の記憶部および第二の記憶部のいずれに所定のデータが記憶されているかを第一の記憶部から順に判定して所定のデータを読み込み、所定のデータを書き込む処理であるものと判定された場合には、第一の記憶部および第二の記憶部のいずれに所定のデータを格納すべきかを第一の記憶部から順に判定して所定のデータを書き込むので、読み書き処理を実行するときにキャッシュメモリの動作の解析が可能な抽象度で検証対象装置の動作をシミュレートすることが可能である。
【実施例３】
【０１０６】
ところで、データキャッシュメモリ１０３に記憶された所定のデータのアドレスが循環するように変化する場合があるが、検証対象装置の動作をシミュレートする場合に、このアドレスの変化を反映してシミュレートすることができない場合がある。そこで、実施例３では、シミュレータ１５が周期的にデータを読み込む処理をシミュレートするときに、オフセットを与える場合を説明する。
【０１０７】
ここで、オフセットとは、データキャッシュメモリ１０３に記憶された所定のデータのアドレスの変化によるミスヒットを模擬するために、データキャッシュメモリ１０３に所定のデータが記憶されているときであっても、強制的に外部ＲＡＭ１０４から所定のデータを読み込ませる制御のことをいう。
【０１０８】
なお、実施例３では、実施例３に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例３による効果を説明する。
【０１０９】
［実施例３に係るシミュレーション装置の構成］
まず、実施例３に係るシミュレーション装置の構成を説明する。なお、実施例３に係るシミュレーション装置１０の構成は、実施例２に係るシミュレーション装置１０と以下に説明する点が異なる。
【０１１０】
すなわち、シミュレータ１５は、所定のデータを読み込む処理であるものと判定されたときに、オフセットするか否かを判定し、オフセットする場合には、外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し、オフセットしない場合には、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測する。
【０１１１】
例えば、シミュレータ１５は、例えば、シミュレータ１５は、所定のデータを読み込む処理を実行させた回数を所定の記憶部に記憶しておき、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であった場合に、オフセットすると判定する。
【０１１２】
［読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理］
次に、図１５を用いて、読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータ１５による処理を説明する。図１５は、読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【０１１３】
図１５に示すように、読み書き処理を実行するときにシミュレータ１５は、読み込む処理であるか、もしくは、書き込む処理であるかを判定し（ステップＳ６００１）、読み込む処理であるものと判定された場合には（ステップＳ６００１肯定）、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であるか否かを判定する（ステップＳ６００２）。
【０１１４】
所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数以上であると判定された場合に（ステップＳ６００２肯定）、シミュレータ１５は、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ６００３）、読み書き処理を実行するときの処理を終了する。
【０１１５】
一方では、所定のデータを読み込む処理を実行させた回数がユーザによって設定された回数未満であると判定された場合に（ステップＳ６００２否定）、シミュレータ１５は、データキャッシュメモリ１０３および外部ＲＡＭ１０４のいずれに所定のデータが記憶されているかをデータキャッシュメモリ１０３から順に判定する（ステップＳ６００４）。
【０１１６】
データキャッシュメモリ１０３に所定のデータが記憶されている場合には（ステップＳ６００４肯定）、ターゲットＣＰＵ１０１がデータキャッシュメモリ１０３から所定のデータを読み込むのに必要な時間を処理時間として計測し（ステップＳ６００５）、読み書き処理を実行するときの処理を終了する。
【０１１７】
また、データキャッシュメモリ１０３に所定のデータが記憶されていない場合には（ステップＳ６００４否定）、シミュレータ１５は、ターゲットＣＰＵ１０１が外部ＲＡＭ１０４からデータキャッシュメモリ１０３へのラインフェッチを実行するのに必要な時間を処理時間として計測し（ステップＳ６００３）、読み書き処理を実行するときの処理を終了する。
【０１１８】
ここで、ステップＳ６００１の説明に戻ると、所定のデータを書き込む処理であるものと判定された場合には（ステップＳ６００１否定）、シミュレータ１５は、実施例２と同様に処理を実行する。
【０１１９】
すなわち、シミュレータ１５は、データキャッシュメモリ１０３に所定のデータを格納すべきであると判定した場合には（ステップＳ６００６肯定）、ターゲットＣＰＵ１０１が所定のデータをデータキャッシュメモリ１０３に格納するのに必要な時間を処理時間として計測し（ステップＳ６００７）、他の記憶部に所定のデータを格納すべきであると判定した場合には（ステップＳ６００６否定）、ターゲットＣＰＵ１０１が所定のデータを他の記憶部に格納するのに必要な時間を処理時間として計測し（ステップＳ６００８）、読み書き処理を実行するときの処理を終了する。
【０１２０】
［実施例３による効果］
上記したように、実施例３によれば、所定のデータを読み込む処理を繰り返し実行する場合に、オフセットを与えるように処理するので、より正確に検証対象装置の動作をシミュレートすることが可能である。
【実施例４】
【０１２１】
ところで、処理単位ログに対応する処理が複数の処理を連続して実行する処理である場合には、処理単位ログに対応する処理を抽象化しても良い。そこで、実施例４では、処理単位ログに対応する処理を抽象化する場合を説明する。ここで、抽象化とは、例えば、ターゲットＣＰＵ１０１が連続した複数の命令処理を実行するのに必要な時間を、一括して計測することである。
【０１２２】
なお、実施例４では、実施例４に係るシミュレーション装置の構成およびシミュレーション装置による処理の流れを説明した後、実施例４による効果を説明する。
【０１２３】
［実施例４に係るシミュレーション装置の構成］
まず、実施例４に係るシミュレーション装置の構成を説明する。なお、実施例４に係るシミュレーション装置１０の構成は、実施例３に係るシミュレーション装置１０と以下に説明する点が異なる。
【０１２４】
すなわち、処理単位ログ記憶部１３ｃは、図１６に示すように、処理単位ログとして、検査モデルによって実行されたイベントに、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを対応付けて記憶する。例えば、処理単位ログ記憶部１３ｃは、処理単位ログとして、イベント「１」が実行されたときに最初に生成されたログである開始ログ「Ｂ」と、イベント「１」が４種類の処理によってなることを表すログ数「４」とをイベント「１」に対応付けて記憶する。なお、図１６は、実施例４に係る処理単位ログ記憶部１３ｃに記憶される情報の一例を示した図である。
【０１２５】
処理単位ログ抽出部１４ｃは、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを処理単位ログとして抽出する。具体的には、処理単位ログ抽出部１４ｃは、入力部１１を介して、処理単位ログ抽出命令を受け付けると、実行ログ記憶部１３ｂから実行ログを読み込み、処理単位ログとして、検査モデルによって実行されたイベントごとに区分して、各イベントが実行されたときに最初に生成された開始ログと、各イベントを実行することによって生成したログ数とを抽出し、処理単位ログ記憶部１３ｃに格納する。
【０１２６】
シミュレータ１５は、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを用いて、処理単位ログに対応する処理をシミュレートする。例えば、シミュレータ１５は、４種類の命令処理によってなるイベント「１」を実行すべき時間に至ると、イベント「１」の開始ログ「Ｂ」と、ログ数「４」とを処理単位ログから読み込む。そして、ターゲットＣＰＵ１０１がイベント「１」の最初の命令処理を実行するのに必要な時間を計測し、イベント「１」のログ数である「４」を計測した時間に乗算して、ターゲットＣＰＵ１０１がイベント「１」を実行するのに必要な時間を算出する。
【０１２７】
［実施例４による効果］
上記したように、実施例４によれば、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを処理単位ログとして抽出し、処理単位ログにおける最初のログと、処理単位ログを構成するログ数とを用いて、処理単位ログに対応する処理をシミュレートするので、より短時間で検証対象装置の動作をシミュレートすることが可能である。
【実施例５】
【０１２８】
さて、これまで実施例１〜４について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、実施例５として、他の実施例を説明する。
【０１２９】
例えば、実施例１では、ターゲットＣＰＵ１０１を１つ備えた検査モデル（図３参照）において、処理単位ログに対応する処理が実行される場合の動作をシミュレートする場合を説明したが、本発明はこれに限定されるものではなく、単数または複数のターゲットＣＰＵを備えた検査モデルであっても適応可能である。
【０１３０】
また、検査モデル（図３参照）において、命令キャッシュメモリ１０２や、データキャッシュメモリ１０３は、階層構造の記憶部を備えたものであっても適応可能である。
【０１３１】
また、実施例１では、検査モデルにおける一連の動作をシミュレートして実行ログを取得する場合を説明したが、本発明はこれに限定されるものではなく、現に存在し、実動している電子装置から実行ログを取得するようにしてもよい。
【０１３２】
また、実施例１では、設定条件としての各イベントを実行すべき周期を入力して、各イベントを実行すべき周期を改変した検査モデルの動作をシミュレートする場合を説明したが、本発明はこれに限定されるものではない。例えば、ターゲットＣＰＵ１０１のクロック周波数や、平均処理速度、命令キャッシュメモリ１０２やデータキャッシュメモリ１０３の記憶容量、バス１０６の通信レートや、ラインフェッチをするのに必要な時間などを改変した検査モデルの動作をシミュレートしてもよい。
【０１３３】
また、実施例１〜４では、ＯＳのタスク切り替え処理についてのログは、処理単位ログに含まれることを想定しているが、ＯＳのタスク切り替え処理を別個のログとして切り出すようにしてもよい。
【０１３４】
また、通信処理における受信処理などは、転送レートを変えた場合についてシミュレートすると、処理の頻度だけでなく、処理量が変化する場合がある。その場合には、処理量の変化を処理の頻度を変更することで置き換えられるようにシミュレートの目的に適した粒度で所定の処理単位を抽出するようにしてもよい。例えば、処理単位としての「上り送信処理」を「方路を検索する処理」および「送信する情報をバッファから読み込む処理」の２つの処理単位に分割して抽出するようにしてもよい。
【０１３５】
また、１度に実行するイベントは１つに限定されず、複数のイベントの組み合わせであってもよい。例えば、２秒周期で実行するイベント「２」の実行を契機として、イベント「３」を２回実行するようにしてもよい。
【０１３６】
（装置構成等）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。例えば、実行ログから処理単位ログを手動で抽出してもよい。また、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。例えば、予め設定条件記憶部１３ｄに設計条件を記憶しておき、処理単位ログ抽出部１４ｃによって処理単位ログ記憶部１３ｃに処理単位ログが格納されることを契機に、自動で検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするようにしてもよい。
【０１３７】
この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報（例えば、図３に示した検査モデルの構成や、図４、図５、図６、図７、図１０、図１１、図１６に示した記憶情報）については、特記する場合を除いて任意に変更することができる。
【０１３８】
また、図２に示したシミュレーション装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる（例えば、図２において、制御部１４をシミュレータ１５に統合するなどできる）。
【０１３９】
（シミュレートプログラム）
ところで、本発明はあらかじめ用意されたシミュレートプログラムをコンピュータで実行することによって実現するようにしてもよい。そこで、以下では、図１７を用いて、上記の実施例に示したシミュレーション装置と同様の機能を有するシミュレートプログラムを実行するコンピュータの一例を説明する。図１７は、シミュレートプログラムを実行するコンピュータを示す図である。
【０１４０】
同図に示すように、シミュレーション装置１０としてのコンピュータ１１０は、入力部１２０、ＲＯＭ１３０、ＣＰＵ１４０、ＨＤＤ１５０、ＲＡＭ１６０、出力部１７０およびシミュレータ１８０をバス１９０などで接続して構成される。
【０１４１】
ＲＯＭ１３０には、上記の実施例１に示したシミュレーション装置１０と同様の機能を発揮するシミュレートプログラム、つまり、図１７に示すように検査モデル格納プログラム１３０ａと、実行ログ取得プログラム１３０ｂと、処理単位ログ抽出プログラム１３０ｃと、シミュレータ制御プログラム１３０ｄが、あらかじめ記憶されている。なお、これらのプログラム１３０ａ〜プログラム１３０ｄについては、図２に示したシミュレーション装置１０の各構成要素と同様、適宜統合または、分散してもよい。
【０１４２】
そして、ＣＰＵ１４０がこれらのプログラム１３０ａ〜プログラム１３０ｄをＲＯＭ１３０から読み出して実行することで、図１７に示すように、プログラム１３０ａ〜プログラム１３０ｄは、検査モデル格納プロセス１４０ａと、実行ログ取得プロセス１４０ｂと、処理単位ログ抽出プロセス１４０ｃと、シミュレータ制御プロセス１４０ｄとして機能するようになる。なお、プロセス１４０ａ〜プロセス１４０ｄは、図２に示した、検査モデル格納部１４ａと、実行ログ取得部１４ｂと、処理単位ログ抽出部１４ｃと、シミュレータ制御部１４ｄとにそれぞれ対応する。
【０１４３】
また、ＨＤＤ１５０には、図１７に示すように、検査モデルデータテーブル１５０ａ、実行ログデータテーブル１５０ｂ、処理単位ログデータテーブル１５０ｃ、設定条件データテーブル１５０ｄ、シミュレート結果データテーブル１５０ｅがそれぞれ設けられる。なお、データテーブル１５０ａ〜データテーブル１５０ｅは、図２に示した検査モデル記憶部１３ａと、実行ログ記憶部１３ｂと、処理単位ログ記憶部１３ｃと、設定条件記憶部１３ｄとおよびシミュレート結果記憶部１３ｅにそれぞれ対応する。そして、ＣＰＵ１４０は、データテーブル１５０ａ〜データテーブル１５０ｅから、検査モデルデータ１６０ａ、実行ログデータ１６０ｂ、処理単位ログデータ１６０ｃ、設定条件データ１６０ｄおよびシミュレート結果データ１６０ｅをそれぞれ読み出してＲＡＭ１６０に格納し、ＲＡＭ１６０に格納された、データ１６０ａ〜データ１６０ｅに基づいて処理を実行する。
【０１４４】
なお、上記した各プログラム１３０ａ〜プログラム１３０ｄについては、必ずしも最初からＲＯＭ１３０に記憶させておく必要はなく、例えば、コンピュータ１１０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、またはコンピュータ１１０の内外に備えられるＨＤＤなどの「固定用の物理媒体」、さらには公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１１０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ１１０がこれから各プログラムを読み出して実行するようにしてもよい。
【図面の簡単な説明】
【０１４５】
【図１】実施例１に係るシミュレーション装置の概要および特徴を説明するための図である。
【図２】シミュレーション装置の構成を示すブロック図である。
【図３】検査モデル記憶部１３ａに記憶される情報の一例を示した図である。
【図４】実行ログ記憶部に記憶される情報の一例を示した図である。
【図５】処理単位ログ記憶部に記憶される情報の一例を示した図である。
【図６】設定条件記憶部に記憶される情報の一例を示した図である。
【図７】シミュレート結果記憶部に記憶される情報の一例を示した図である。
【図８】処理単位ログを抽出するときのシミュレーション装置による処理の流れを示すフローチャートである。
【図９】検証対象装置の機能の一部を改変した検査モデルの動作をシミュレートするときのシミュレーション装置による処理の流れを示すフローチャートである。
【図１０】実施例２に係るシミュレーション装置の実行ログ記憶部に記憶される情報の一例を示した図である。
【図１１】実施例２に係るシミュレーション装置の処理単位ログ記憶部に記憶される情報の一例を示した図である。
【図１２】検証対象装置の機能の一部を改変した場合のシミュレータによる処理の流れを示すフローチャートである。
【図１３】命令処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１４】読み書き処理を実行するときのシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１５】読み書き処理を実行するときの実施例３に係るシミュレーション装置のシミュレータによる処理の流れを示すフローチャートである。
【図１６】実施例４に係る処理単位ログ記憶部１３ｃに記憶される情報の一例を示した図である。
【図１７】シミュレートプログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１４６】
１０  シミュレーション装置
１１  入力部
１２  出力部
１３  記憶部
１３ａ  検査モデル記憶部
１３ｂ  実行ログ記憶部
１３ｃ  処理単位ログ記憶部
１３ｄ  設定条件記憶部
１３ｅ  シミュレート結果記憶部
１４  制御部
１４ａ  検査モデル格納部
１４ｂ  実行ログ取得部
１４ｃ  処理単位ログ抽出部
１４ｄ  シミュレータ制御部
１５  シミュレータ
１００  検査モデル
１０１  ターゲットＣＰＵ
１０２  命令キャッシュメモリ
１０３  データキャッシュメモリ
１０４  外部ＲＡＭ
１０５  周辺ハードウェア
１０６  バス
１１０  コンピュータ
１２０  入力部
１３０  ＲＯＭ
１３０ａ  検査モデル格納プログラム
１３０ｂ  実行ログ取得プログラム
１３０ｃ  処理単位ログ抽出プログラム
１３０ｄ  シミュレータ制御プログラム
１４０  ＣＰＵ
１４０ａ  検査モデル格納プロセス
１４０ｂ  実行ログ取得プロセス
１４０ｃ  処理単位ログ抽出プロセス
１４０ｄ  シミュレータ制御プロセス
１５０  ＨＤＤ
１５０ａ  検査モデルデータテーブル
１５０ｂ  実行ログデータテーブル
１５０ｃ  処理単位ログデータテーブル
１５０ｄ  設定条件データテーブル
１５０ｅ  シミュレート結果データテーブル
１６０  ＲＡＭ
１６０ａ  検査モデルデータ
１６０ｂ  実行ログデータ
１６０ｃ  処理単位ログデータ
１６０ｄ  設定条件データ
１６０ｅ  シミュレート結果データ
１７０  出力部
１８０  シミュレータ
１９０  バス
【国際調査報告】
2009050768.tif 000020
2009050768.tif 000021