(57)【要約】【課題】検証対象となるシステムのＳＷモデルとＨＷモデルとに特別な修正を必要とすることなく、タイミング精度よくＳＷモデルとＨＷモデルとを協調して動作させることが可能とすることを目的とする。【解決手段】ＩＳＳモデル１０は、ＳＷモデルで規定された命令を実行する。実行回数計上部２０は、実行された命令のうち、ＨＷモデルに対して発行されるＨＷ命令の前に実行された他の命令によって発生する動作の実行回数を計上する。実行時間計算部３０は、計上された実行回数に基づき、他の命令の実行時間を計算する。タイミング調整部４０は、計算された実行時間に応じて、ＨＷ命令をＩＦ部がＨＷモデルへ中継するタイミングを遅延させる。関数／ピンＩＦ変換部５０は、タイミング調整部４０の制御に従い、ＳＷモデルとＨＷモデルとの通信を中継する。【選択図】図１
2015170081.tif 000002
【特許請求の範囲】
【請求項１】
時間概念を持たないＳＷモデル（ソフトウェアモデル）と、時間概念を持つＨＷモデル（ハードウェアモデル）とを協調して動作させるシミュレーション装置であり、
前記ＳＷモデルで規定された命令を実行するＳＷモデル実行部と、
前記ＳＷモデル実行部が実行した命令のうち、前記ＨＷモデルに対して発行されるＨＷ命令の前に実行された他の命令によって発生する動作の実行回数を計上する計上部と、
前記計上部が計上した実行回数に基づき、前記他の命令の実行時間を計算する実行時間計算部と、
前記ＳＷモデルと前記ＨＷモデルとの通信を中継するＩＦ部と、
前記実行時間計算部が計算した実行時間に応じて、前記ＨＷ命令を前記ＩＦ部が前記ＨＷモデルへ中継するタイミングを遅延させるタイミング調整部と
を備えることを特徴とするシミュレーション装置。
【請求項２】
前記ＩＦ部は、中継したＨＷ命令に対する前記ＨＷモデルの動作が完了すると、前記ＳＷモデル実行部へ応答を返し、
前記ＳＷモデル実行部は、前記ＩＦ部から応答が返ると、前記ＨＷ命令の後の命令を実行する
ことを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記シミュレーション装置は、さらに、
動作の種類毎に実行時間の基準値を記憶する基準値記憶部
を備え、
前記計上部は、前記動作の種類毎に、前記動作の実行回数を計上し、
前記実行時間計算部は、前記計上部が計上した前記動作の種類毎の実行回数と、前記基準値記憶部が記憶した基準値とに基づき、前記他の命令の実行時間を計算する
ことを特徴とする請求項１又は２に記載のシミュレーション装置。
【請求項４】
前記シミュレーション装置は、さらに、
前記ＨＷ命令が実行された場合に、前記ＨＷモデルの動作が完了するまで、実行された前記ＨＷ命令を記憶するバッファ部
を備え、
前記ＩＦ部は、前記バッファに空きがある場合には、前記ＨＷ命令が実行された場合に、実行された前記ＨＷ命令に対する前記ＨＷモデルの動作の完了前に、前記ＳＷモデル実行部へ応答を返し、
前記ＳＷモデル実行部は、前記ＩＦ部から応答が返ると、前記ＨＷ命令の後の命令を実行する
ことを特徴とする請求項１から３までのいずれかに記載のシミュレーション装置。
【請求項５】
時間概念を持たないＳＷモデル（ソフトウェアモデル）と、時間概念を持つＨＷモデル（ハードウェアモデル）とを協調して動作させるシミュレーションプログラムであり、
前記ＳＷモデルで規定された命令を実行するＳＷモデル実行処理と、
前記ＳＷモデル実行処理で実行した命令のうち、前記ＨＷモデルに対して発行されるＨＷ命令の前に実行された他の命令によって発生する動作の実行回数を計上する計上処理と、
前記計上処理で計上した実行回数に基づき、前記他の命令の実行時間を計算する実行時間計算処理と、
前記ＳＷモデルと前記ＨＷモデルとの通信を中継するＩＦ処理と、
前記実行時間計算処理で計算した実行時間に応じて、前記ＨＷ命令を前記ＩＦ処理で前記ＨＷモデルへ中継するタイミングを遅延させるタイミング調整処理と
をコンピュータに実行させることを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、時間概念を持たないソフトウェア（以下、ＳＷ）モデルと、時間概念を持つハードウェア（以下、ＨＷ）モデルとを協調して動作させるシミュレーション装置に関するものである。
【背景技術】
【０００２】
プロセッサを含むＨＷと、そのＨＷで動作するＳＷとで構成されるシステムがある。このシステムを構成するＨＷをＣベース言語のシステムレベル設計言語で記述したＨＷモデルと、このシステムのプロセッサで動作するＳＷとを並列動作させて、このシステムの動作を検証するシミュレーション装置がある。
【０００３】
特許文献１，２及び非特許文献１には、時間概念を持たないＳＷモデルと時間概念を持つＨＷモデルとを協調シミュレーションさせるための技術について記載されている。
【０００４】
特許文献１，２には、ＳＷモデルの実行スケジューリングを行う手段（擬似ＯＳ）と、ＨＷモデルの実行スケジューリングを行う手段と、ＨＷモデルとＳＷモデルとの通信手段とを備え、擬似ＯＳの算出する処理時間に応じて次のシミュレーションプロセスの開始を遅延させることが記載されている。これにより、ＳＷモデルの実行に時間概念（処理遅延）を付与し、ＳＷモデルとＨＷモデルとが実機と同等のタイミング・実行順で協調動作できるようにしている。
【０００５】
非特許文献１には、ＳＷの処理時間を考慮するために、ＳＷ部品のあるブロックを認識し、ある間隔で制御点を挿入し制御点間の時間を入れることについて記載されている。これにより、ＳＷモデルのシミュレーションに時間概念を付与し、ＨＷモデルとの協調動作できるようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２６１１３号公報
【特許文献２】特開２０１２−２７９５２号公報
【非特許文献】
【０００７】
【非特許文献１】「ハード−ソフト協調検証の高速化技術ＳｙｓｔｅｍＣベースでＳＴＡＲＣが開発」、日経マイクロデバイス、２００５年１月号、ｐ．１０６−１０７
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１，２及び非特許文献１に記載された技術では、ＳＷモデルに与える時間（遅延）情報として、検証対象のシステムとシミュレーション装置との性能差からソフトウェアＳＷの処理時間を算出したものを用いる。そのため、キャッシュ動作や外部メモリへのアクセス時間等、ＣＰＵの内部動作に起因する処理時間を考慮すると、誤差が大きくなってしまうという課題がある。
【０００９】
また、特許文献１，２に記載された技術では、擬似ＯＳを用いるため、ＯＳを含めたシステム全体のデバッグには用いることができない。さらに、非特許文献１に記載された技術では、ＳＷモデルに改修が必要となるため、協調動作させることはできるものの、ＳＷモデルのデバッグには使えないという課題がある。
【００１０】
この発明は、検証対象となるシステムのＳＷモデルとＨＷモデルとに特別な修正を必要とすることなく、タイミング精度よくＳＷモデルとＨＷモデルとを協調して動作させる事を目的とする。
【課題を解決するための手段】
【００１１】
この発明に係るシミュレーション装置は、
時間概念を持たないＳＷモデル（ソフトウェアモデル）と、時間概念を持つＨＷモデル（ハードウェアモデル）とを協調して動作させるシミュレーション装置であり、
前記ＳＷモデルで規定された命令を実行するＳＷモデル実行部と、
前記ＳＷモデル実行部が実行した命令のうち、前記ＨＷモデルに対して発行されるＨＷ命令の前に実行された他の命令によって発生する動作の実行回数を計上する計上部と、
前記計上部が計上した実行回数に基づき、前記他の命令の実行時間を計算する実行時間計算部と、
前記ＳＷモデルと前記ＨＷモデルとの通信を中継するＩＦ部と、
前記実行時間計算部が計算した実行時間に応じて、前記ＨＷ命令を前記ＩＦ部が前記ＨＷモデルへ中継するタイミングを遅延させるタイミング調整部と
を備えることを特徴とする。
【発明の効果】
【００１２】
この発明に係るシミュレーション装置は、ＳＷモデル実行部が実行した命令の実行回数に基づき、命令の実行時間を計算して、計算した実行時間に応じてＨＷモデルへの命令の発行を遅延させる。そのため、ＳＷモデルとＨＷモデルとに特別な修正を必要とすることなく、タイミング精度よくＳＷモデルとＨＷモデルとを協調して動作させることが可能である。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係るシミュレーション装置１００の構成図。
【図２】図１に示す各モデルの実装言語の分類を示す図。
【図３】動作フローの一例を示す図。
【図４】前提条件の下、実機が動作する場合のタイミングチャートを示す図。
【図５】シミュレーションの開始から外部ＩＯアクセスが実行されるまでの、実行回数計上部２０の動作を示す図。
【図６】実行時間計算部３０の動作を示す図。
【図７】外部ＩＯモデル１５からＨＷモデル７０Ａに対するアクセス要求がされた場合のタイミング調整部４０と関数／ピンＩＦ変換部５０の動作を示す図。
【図８】図５から図７までに基づき説明した一連の動作を示す図。
【図９】実施の形態２に係るシミュレーション装置１００の構成図。
【図１０】追加タイミング情報計算部８０と、他の機能部との関係を示す図。
【図１１】実機の外部ＩＯ部分に１段のバスバッファがある場合の動作例を示す図。
【図１２】シミュレーション装置１００が図１１と同等のシミュレーションが行えることを示す図。
【図１３】実施の形態１，２に示したシミュレーション装置１００のハードウェア構成の例を示す図。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１は、実施の形態１に係るシミュレーション装置１００の構成図である。
シミュレーション装置１００は、ＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）モデル１０（ＳＷモデル実行部）、実行回数計上部２０（計上部）、実行時間計算部３０、基準値記憶部３１、タイミング調整部４０、関数／ピンＩＦ変換部５０（ＩＦ部）、ＳＷモデル６０、ＨＷモデル７０（ＨＷモデル７０Ａ〜７０Ｚ）を備える。
【００１５】
ＩＳＳモデル１０は、検証対象のシステムのＳＷモデル６０を動作させる。ＩＳＳモデル１０は、検証対象のシステムの実機と同じように、ＳＷモデル６０の実行をシミュレーションする。ＩＳＳモデル１０は、実機の各構成要素を模擬したＣＰＵコアモデル１１、ＣＰＵバスモデル１２、内部メモリ／周辺装置モデル１３、キャッシュモデル１４、外部ＩＯモデル１５を含む。
ＩＳＳモデル１０に含まれる各機能モデル１１〜１５と、ＳＷモデル６０とは、Ｃ言語等の高級言語を用いてモデル化されており、シミュレーションにおいて時間概念を持たない。
【００１６】
実行回数計上部２０は、ＩＳＳモデル１０に含まれる各モデルの挙動を監視し、ＩＳＳモデル１０で実行されたＳＷモデル６０の命令によって発生する動作の実行回数を計上する。
実行回数計上部２０は、例えば、内部メモリ／周辺装置モデル１３に対するＣＰＵコアモデルのアクセス回数２１、キャッシュモデルで発生するキャッシュヒット／ミス回数２２、ＣＰＵコアモデルで実行される各命令の実行回数２３、外部ＩＯモデルへのＣＰＵコアモデルのアクセス回数２４等の、実際のＣＰＵで処理時間がかかる動作の実行回数を計上する。
なお、各実行回数２１〜２４は、命令の実行シーケンス、キャッシュヒット／ミス等を考慮してパイプライン実行される際に隠蔽されるものを差し引いて計上される。また、計上された各実行回数２１〜２４は、後述する関数／ピンＩＦ変換部５０が出力する計上値リセット指示５１により０にリセットされる。
【００１７】
実行時間計算部３０は、実行回数計上部２０が計上した各実行回数２１〜２４の実行回数に対して、後述する基準値記憶部３１が記憶した基準値を適用して、実際のＣＰＵでの実行時間３２を算出する。
基準値記憶部３１は、実行回数計上部２０が計上する動作の種類毎に、実際のＣＰＵでの１回当たりの実行時間を記憶した記憶装置である。
【００１８】
タイミング調整部４０は、実行時間３２に基づき、関数／ピンＩＦ変換部５０がＨＷモデル７０に対して、命令を発行するタイミングを制御する。
【００１９】
関数／ピンＩＦ変換部５０は、ＩＳＳモデル１０からＨＷモデル７０に対するアクセス要求（Ｃ言語等の関数の実行）を、ＨＷモデル７０とＩＦ（インタフェース）可能なピンの動作に変換する。
関数／ピンＩＦ変換部５０は、例えば、ＳｙｓｔｅｍＣのような、ＳＷモデル６０とＨＷモデル７０との両方の記述が可能な言語でモデル化されている。
【００２０】
ＳＷモデル６０は、検証対象となるＳＷモデルである。ＳＷモデル６０は、ＯＳを含んでモデル化されている。ＳＷモデル６０は、上述した通り、Ｃ言語等の高級言語を用いてモデル化されており、シミュレーションにおいて時間概念を持たない。
【００２１】
ＨＷモデル７０は、検証対象となるＨＷモデルである。ＨＷモデル７０は、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）でモデル化されており、シミュレーションにおいて、時間概念を持つ。
【００２２】
図２は、図１に示す各モデルの実装言語の分類を示す図である。
ここでは、ＩＳＳモデル１０（内部の各モデルも含む）、実行回数計上部２０、実行時間計算部３０、基準値記憶部３１、タイミング調整部４０は、Ｃ言語で記述されている。関数／ピンＩＦ変換部５０は、ＳｙｓｔｅｍＣで記述されている。ＨＷモデル７０は、ＨＤＬの１つであるＶｅｒｉｌｏｇで記述されている。
なお、この分類は以降の説明を簡単にするために示すものであり、各モデルの実装言語を限定するものではない。
【００２３】
シミュレーション装置１００でＳＷモデル６０とＨＷモデル７０がどのように協調動作するのかを説明する。
まず前提条件を説明した上で、前提条件の下、実機とシミュレーション装置１００とのそれぞれで、ＳＷモデル６０とＨＷモデル７０とが協調動作する様子を説明する。
【００２４】
＜前提条件＞
（条件１）ＳＷモデル６０は、ＩＳＳモデル１０の内部メモリ／周辺装置モデル１３の内部メモリに格納されているものとし、ＣＰＵコアモデル１１は内部メモリから命令を読みだして実行するものとする。
（条件２）基準値記憶部３１は、ＣＰＵコアモデル１１が実行する各命令の実行時間を一律１、内部メモリのアクセス時間を５、キャッシュヒット時のアクセス時間を１、外部ＩＯモデルがＩＳＳモデル１０の外部にアクセスを発行するまでの時間を２、関数／ピンＩＦ変換部５０からアクセス要求が発行されてからＨＷモデル７０が応答を返すまでの時間を１０とする（単位はｎｓ）。
（条件３）ＳＷモデル６０の動作の説明を簡単にするために、図３に示す動作フローように、ＣＰＵコアモデル１１は、９個の命令（命令Ａ〜Ｉ）を実行した後、外部ＩＯモデル１５にアクセスし、外部ＩＯモデル１５のアクセス完了後に続いて１個の命令（命令Ｊ）を実行する、という状況を想定する。なお、合計１０個の命令（命令Ａ〜Ｊ）を実行するにあたり、９回のキャッシュアクセス（ヒット）、と１回の内部メモリアクセスがあるものとする。
なお、これら前提条件は説明を簡易にするために便宜的に定めたものであり、この内容に限定するものではない。
【００２５】
＜実機での動作＞
図４は、前提条件の下、実機が動作する場合のタイミングチャートを示す図である。
図４では、上に書かれている数字は時間［ｎｓ］を表す。また、Ｃａは、図３で示した「キャッシュアクセス」を表し、Ｍａは「内部メモリアクセス」、Ａ〜Ｊは「命令Ａ〜Ｊの実行」、外部ＩＯは「外部ＩＯアクセス」、ＨＷは「ＨＷ動作」を表している。
その結果、実機では前提条件の実行に２８［ｎｓ］かかる。
【００２６】
＜シミュレーション装置１００での動作＞
図５は、シミュレーションの開始から外部ＩＯアクセスが実行されるまでの、実行回数計上部２０の動作を示す図である。
ＩＳＳモデル１０では、シミュレーションされる命令実行やメモリアクセスは時間概念が無く、順番に実行されるだけである。実行回数計上部２０は、これらの動作（命令実行やメモリアクセス）の実行回数を計上するが、各動作の実行順番（シーケンス）を監視する事で、実機ではパイプライン動作の結果として隠蔽される動作については、差し引いて計上する。その結果、図５に示すように、キャッシュアクセスは８回、内部メモリアクセス１回、命令実行１回、外部ＩＯアクセス１回と計上される。
【００２７】
図６は、実行時間計算部３０の動作を示す図である。
実行時間計算部３０は、実行回数計上部２０が計上した各動作の実行回数を入力とし、基準値記憶部３１が記憶した各動作の１回当たりの実行時間を引きながら、計上された全動作の実機での実行時間を計算する。今回の例の場合、キャッシュアクセスは８回×１［ｎｓ］と、内部メモリアクセス１回×５［ｎｓ］と、命令実行１回×１［ｎｓ］と、外部ＩＯアクセス１回×２［ｎｓ］とを合わせて、１５［ｎｓ］となる。
【００２８】
図７は、外部ＩＯモデル１５からＨＷモデル７０Ａに対するアクセス要求がされた場合のタイミング調整部４０と関数／ピンＩＦ変換部５０との動作を示す図である。
外部ＩＯモデル１５からのアクセス要求（ＨＷ命令）は、まず関数／ピンＩＦ変換部５０に発行される（１）。アクセス要求が発行されると関数／ピンＩＦ変換部５０は、タイミング調整部４０にタイミング調整開始指示を発行する（２）。
【００２９】
タイミング調整部４０は、関数／ピンＩＦ変換部５０が、ＨＷモデル７０Ａに対してアクセス要求を発行するタイミングを制御する。タイミング調整部４０は、タイミング調整開始指示を受けると、内部の時間計測用のタイマ（カウンタ）を用いて、実行時間計算部３０が計算した実行時間（ここでは、１５［ｎｓ］）が経過したことを確認する。タイミング調整部４０は、実行時間が時間経過すると、関数／ピンＩＦ変換部５０に対して動作開始指示を発行する（３）。
【００３０】
動作開始指示を受けた関数／ピンＩＦ変換部５０は、外部ＩＯモデル１５からのアクセス要求（関数動作）をＨＷモデル７０ＡとＩＦが可能なピン動作への変換を開始する（４）。
ここで、関数動作とは、例えば、ｒｅａｄ（ＨＷ＿Ａ）といったＣ言語で定義された関数の動作の事である。ｒｅａｄ（）関数の引数ＨＷ＿Ａは、ＨＷモデル７０Ａに割り当てられた特別な識別子（例えば、アドレス情報）である。一方、ピン動作とは、ＨＷモデル７０Ａが動作するために必要な入出力ピンの動作の事で、例えば、アクセス要求発行状態を表すアクセスイネーブル信号、リード／ライトの制御を表すリード／ライト信号、アクセスする番地を表すアドレス信号、リード／ライトデータをやりとりするためのデータ信号等で構成される。
【００３１】
関数／ピンＩＦ変換部５０は、関数動作をピン動作に変換してＨＷモデル７０ＡとＩＦを行う（５）。
関数／ピンＩＦ変換部５０は、ピン動作によって得られた結果、例えば、０ｘＡＢＣＤというデータ値を得た場合、これを外部ＩＯモデル１５の関数動作（ｒｅａｄ（ＨＷ＿Ａ））の応答として返す（６）。また同時に、関数／ピンＩＦ変換部５０は、実行回数計上部２０に対して計上値リセット指示５１を発行して、計上値を０にリセットする（７）。
【００３２】
図８は、図５から図７までに基づき説明した一連の動作を示す図である。
図８上部は、実機での動作（図４で示したものと同じ）であり、図８下部がシミュレーション装置１００での動作である。
ＩＳＳモデル１０によって、図３で示した動作フローのうち「外部ＩＯアクセス」までが実行される。並行して、実行回数計上部２０がＩＳＳモデル１０の命令実行回数等を計上する。ＩＳＳモデル１０の動作が「外部ＩＯアクセス」に達した時点で、ＩＳＳモデル１０の外部ＩＯモデル１５が、関数／ピンＩＦ変換部５０にアクセス要求（ｒｅａｄ（ＨＷ＿Ａ））を発行する。アクセス要求を発行した後は、関数／ピンＩＦ変換部５０からの応答があるまで、ＩＳＳモデル１０（外部ＩＯモデル１５）は動作が応答待ち状態（停止）になる。一方、実行時間計算部３０は、実行回数計上部２０の計上した各実行回数をもとに、実行時間を計算する（ここでは、１５［ｎｓ］と計算される）。ここまでの一連の動作は、シミュレーション上の時間経過は０で実行される。
【００３３】
続いて、関数／ピンＩＦ変換部５０は、タイミング調整部４０に対して、タイミング調整開始指示を発行する。タイミング調整部４０は、タイミング調整開始指示を受けると、実行時間計算部３０が計算した実行時間（ここでは、１５［ｎｓ］）が経過するのを待った後、関数／ピンＩＦ変換部５０に動作開始指示を発行する。動作開始指示が発行されると、関数／ピンＩＦ変換部５０は、関数動作（ｒｅａｄ（ＨＷ＿Ａ））をピン動作に変換してＨＷモデル７０ＡとのＩＦを行う。
【００３４】
ＨＷモデル７０Ａは、関数／ピンＩＦ変換部５０が変換したピン動作の結果、１０［ｎｓ］後にアクセス要求に対する応答を返す。アクセス応答が返ったことにより、アクセス応答待ちで停止していたＩＳＳモデル１０（外部ＩＯモデル１５）が動作を再開する。同時に、関数／ピンＩＦ変換部５０は、実行回数計上部２０に計上値リセット指示５１を発行する。これにより、実行回数計上部２０が計上していた全ての動作の実行回数は０にリセットされる。
以降、外部ＩＯアクセスが発生する毎に同じ動作を繰り返す。
【００３５】
以上のように動作する事で、図８に示す通り、時間経過概念のないＳＷモデル６０の動作に対して時間経過の概念が付与されてシミュレーションが実行される。そのため、実機と同じ動作タイミングでＳＷ７０モデルとＨＷモデル７０とを協調させてシミュレーションを実行することができる。
【００３６】
特に、ＳＷモデル６０とＨＷモデル７０とに特別な修正をすることなく、タイミング精度よくＳＷモデル６０とＨＷモデル７０とを協調して動作させることが可能である。
【００３７】
実施の形態２．
実施の形態２では、実機の外部ＩＯに実装されるバスバッファの動作を模擬することについて説明する。
実施の形態２では、実施の形態１と同じ部分については説明を省略し、実施の形態１と異なる部分について説明する。
【００３８】
図９は、実施の形態２に係るシミュレーション装置１００の構成図である。
図９に示すシミュレーション装置１００は、追加タイミング情報計算部８０（追加タイミング調整部）を備える点が、図１に示す実施の形態１に係るシミュレーション装置１００と異なる。追加タイミング情報計算部８０は、実機の外部ＩＯに実装されるバスバッファの動作を模擬する。
【００３９】
図１０は、追加タイミング情報計算部８０と、他の機能部との関係を示す図である。
追加タイミング情報計算部８０は、関数／ピンＩＦ変換部５０から、ＨＷ動作情報を受ける（１）。ＨＷ動作情報とは、関数／ピンＩＦ変換部５０の先に繋がるＨＷモデル７０がアクセス応答処理中かどうかを示す情報である。追加タイミング情報計算部８０は、内部に、シミュレーション装置が模擬する対象となる実機の外部ＩＯ部分に含まれるバッファを模擬するバッファモデル８１（バッファ部）を持つ。追加タイミング情報計算部８０は、ＨＷ動作情報とバッファモデル８１とから、追加タイミング情報を計算して、関数／ピンＩＦ変換部５０に出力する（２）。追加タイミング情報により、関数／ピンＩＦ変換部５０の動作完了が引き延ばされ、外部ＩＯモデル１５へ応答を返すタイミングが引き延ばされる。
【００４０】
図１１は、実機の外部ＩＯ部分に１段のバスバッファがある場合の動作例を示す図である。
図１１では、外部ＩＯはＨＷに対してライト要求２個（Ｗ１とＷ２）を発行した場合を示しており、説明の前提条件として外部ＩＯのライト要求の発行は最短１サイクルで発行可能とする。また、ＨＷは外部ＩＯのライト要求に対して応答を返すのに５サイクルかかるものとする。
【００４１】
図１１の動作詳細を説明する。
時刻１で外部ＩＯがＨＷに対してライト要求（Ｗ１）を発行する。時刻２でＨＷモデル７０がライト要求（Ｗ１）に対する動作を開始し、この動作は時刻６まで続き、ＨＷは新しい要求を受け付けることができない。一方、外部ＩＯは、バスバッファを１段備えているので、ライト要求（Ｗ１）発行後にライト要求（Ｗ１）の応答を待つこと無く、次の動作を開始できる。つまり、実施の形態１では、外部ＩＯからＨＷへ要求を発行すると、外部ＩＤは要求に対する応答があるまで次の動作を実行できなかった。しかし、ここでは、バスバッファを１段備えているため、１つ要求を発行しても、応答を待つことなく次の動作を開始できる。
外部ＩＯが次の動作を開始した結果、時刻５にライト要求（Ｗ２）を発行する。しかし、ＨＷがライト要求（Ｗ１）の処理中のため、時刻７までライト要求（Ｗ２）の開始が待たされる。つまり、新しい要求が発行されたが、時刻６の時点では外部ＩＯのバッファが使い切られた状態であり、次のライト要求を処理できない。そのため、時刻６ではライト要求（Ｗ２）を完了できず、時刻７までライト要求（Ｗ２）の開始が引き延ばされた状態になる。
続いて、時刻７の時点でＨＷがライト要求（Ｗ１）の処理を完了し、次のライト要求を受け付けられるようになったため、開始待ちとなっていたライト要求（Ｗ２）の処理を開始する。同時に、外部ＩＯは次の処理を開始する。
【００４２】
図１２は、シミュレーション装置１００が図１１と同等のシミュレーションが行えることを示す図である。
図１２では、鍵型の矢印は、図８で説明した「タイミング調整部４０による１５［ｎｓ］経過待ち」と同等の動作を表す。また、斜線で網掛けしている六角形は、図８で説明した「ＩＳＳモデル１０による命令の実行」、「実行回数計上部２０による実行回数計上」「実行時間計算部３０による実行時間計算」と同等の動作を表す。
【００４３】
時刻１では、関数／ピンＩＦ変換部５０の動作により、ＨＷモデル７０にライト要求（Ｗ１）が発行される。
時刻２では、追加タイミング情報計算部８０がバッファ残量（時刻１でライト要求（Ｗ１）を受けたので、時刻２ではバッファ残量０）と、ＨＷモデル７０の動作状況とを勘案して、追加タイミング情報が必要かどうかを計算する。図１２の場合、時刻２の時点ではバッファにライト要求（Ｗ１）が入りＩＳＳモデル１０は次の動作を開始できる状態であるので、追加のタイミング情報は出力されない。
【００４４】
時刻２では、追加のタイミング情報が出力されないので、関数／ピンＩＦ変換部５０は、ＩＳＳモデル１０の外部ＩＯモデル１５に応答を返す。応答が返ることでＩＳＳモデル１０は動作を再開し、何らかの命令を実行する。実行の結果、ライト要求（Ｗ２）が発行されるが、図１２の場合ではライト要求（Ｗ２）が発行されるまでに３サイクル分（時刻２〜４の分）の動作時間が計上され、タイミング調整部４０によりその分の遅延が付加される。時刻５でＷ２がＨＷモデル７０に発行される。
【００４５】
時刻６では、バッファ残量が無く、かつライト要求（Ｗ１）がまだ処理中であるため、追加タイミング情報が出力される。追加タイミング情報の出力により、関数／ピンＩＦ変換部５０は動作の完了を追加タイミング情報が無くなるまで引き延ばし、追加タイミング情報が無くなるまで外部ＩＯモデル１５に応答を返さない。
【００４６】
時刻７では、ＨＷモデル７０のライト要求（Ｗ１）についての処理が完了し、追加タイミング情報が無くなる。これにより、関数／ピンＩＦ変換部５０は、ＩＳＳモデル１０の外部ＩＯモデル１５にライト要求（Ｗ２）についての応答を返し、ＩＳＳモデル１０の動作が再開される。
【００４７】
以降、これら動作が繰り返されることで、外部ＩＯモデル１５にバッファがある場合に、実機と同等のタイミングで協調シミュレーションを行うことが可能である。
【００４８】
図１３は、実施の形態１，２に示したシミュレーション装置１００のハードウェア構成の例を示す図である。
シミュレーション装置１００は、コンピュータである。シミュレーション装置１００の各要素をプログラムで実現することができる。
シミュレーション装置１００のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００４９】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置等である。主記憶装置９０３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。通信装置９０４は、例えば通信ボード等である。入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００５０】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、ＩＳＳモデル１０、実行回数計上部２０、実行時間計算部３０、タイミング調整部４０、関数／ピンＩＦ変換部５０、ＳＷモデル６０、ＨＷモデル７０として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、上記プログラムを実行する。
また、実施の形態１，２の説明において、基準値記憶部３１が記憶すると説明した情報や、ＩＳＳモデル１０、実行回数計上部２０、実行時間計算部３０、タイミング調整部４０、関数／ピンＩＦ変換部５０、ＳＷモデル６０、ＨＷモデル７０が出力する等と説明した情報等が主記憶装置９０３にファイルとして記憶されている。
【００５１】
なお、図１３の構成は、あくまでもシミュレーション装置１００のハードウェア構成の一例を示すものであり、シミュレーション装置１００のハードウェア構成は図１３に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００５２】
１０  ＩＳＳモデル、２０  実行回数計上部、３０  実行時間計算部、３１  基準値記憶部、４０  タイミング調整部、５０  関数／ピンＩＦ変換部、６０  ＳＷモデル、７０  ＨＷモデル、８０  追加タイミング情報計算部、８１  バッファモデル、１００  シミュレーション装置。
【図１】
2015170081.tif 000003
【図２】
2015170081.tif 000004
【図３】
2015170081.tif 000005
【図４】
2015170081.tif 000006
【図５】
2015170081.tif 000007
【図６】
2015170081.tif 000008
【図７】
2015170081.tif 000009
【図８】
2015170081.tif 000010
【図９】
2015170081.tif 000011
【図１０】
2015170081.tif 000012
【図１１】
2015170081.tif 000013
【図１２】
2015170081.tif 000014
【図１３】
2015170081.tif 000015