(57)【要約】【課題】実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ること。【解決手段】イベントドリブンのシミュレーション１００では、送信元ハードウェアから送信先ハードウェアへのデータの第１送信許可要求が発生すると、送信先ハードウェアの記憶領域に記憶された記憶データがメモリに格納される。シミュレーション１００では、第１送信許可要求についての送信時間を計時中に第１送信許可要求よりも優先度が高い第２送信許可要求が発生した場合、メモリに格納された記憶データに基づいて、第１送信許可要求についての送信先ハードウェアの記憶領域の一部が、第１送信許可要求の発生前の状態に戻される。シミュレーション１００では、第２送信許可要求についての計時の終了後に、第１送信許可要求についての送信データが再度第１送信許可要求についての送信先ハードウェアの記憶領域に格納される。【選択図】図１
2014002712.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータが、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求（以下、「第１送信許可要求」と称する。）の優先度が、前記第１送信許可要求よりも後に受け付けられた前記送信許可要求（以下、「第２送信許可要求」と称する。）の優先度よりも低いか否かを判定し、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第２送信許可要求についての前記送信データの前記格納時刻から前記第２送信許可要求についての前記送信時間が計時された後、前記第１送信許可要求についての前記送信データを前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行することを特徴とするシミュレーション方法。
【請求項２】
前記格納時刻から前記送信時間を計時する処理は、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求についての前記送信データの前記格納時刻から前記第１送信許可要求についての前記経過時間までの時刻から、前記第１送信許可要求についての前記送信時間から前記第１送信許可要求についての前記経過時間を除いた時間と前記第２送信許可要求についての前記送信時間とを併せた時間を計時することを特徴とする請求項１に記載のシミュレーション方法。
【請求項３】
前記格納する動作をシミュレートする処理は、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低くないと判定された場合、前記第１送信許可要求についての前記送信データの前記格納時刻から前記第１送信許可要求についての前記送信時間が計時された後に、前記第２送信許可要求に基づいて、前記メモリに、前記シミュレーション上で前記第２送信許可要求についての前記送信先ハードウェアの記憶領域に記憶された記憶データを格納することを特徴とする請求項１または２に記載のシミュレーション方法。
【請求項４】
コンピュータによるイベントドリブンのシミュレーション方法であって、
第１記憶領域と、第２記憶領域と、第３記憶領域と、を有するメモリが、
前記第１記憶領域に第１データが記憶されている状態において、前記メモリに対する第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータがシミュレーションすることを特徴とするシミュレーション方法。
【請求項５】
前記メモリが、
前記書き込み要求が検出されてから前記所定期間経過した際に、前記第１記憶領域に記憶された前記第２データに基づく第２記憶データを前記第３記憶領域に記憶し、
前記書き込み要求に基づく書き込み処理が完了した旨を出力する、
動作を前記コンピュータがシミュレーションすることを特徴とする請求項４に記載のシミュレーション方法。
【請求項６】
前記動作（以下、「第１動作」と称する。）のシミュレーションの後に、
前記第１動作によって得られる第１シミュレーション結果が、所定結果であるか否かを判断し、
前記所定結果でないと判断された場合に、前記第２記憶領域を有さず、前記第１記憶領域と、前記第３記憶領域とを有する第２メモリが、
前記第１記憶領域に前記第１データが記憶されている状態において、前記第２メモリに対する前記第２データの書き込み要求を検出すると、
前記第２データを前記第１記憶領域に記憶し、
前記第１記憶領域に記憶された前記第２データに基づく前記第２記憶データを前記第３記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記第２メモリに対する読み出し要求を検出すると、前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
第２動作をシミュレーションし、
前記第２動作によって得られる第２シミュレーション結果が前記所定結果であるか否かを判断し、
前記所定結果である場合、前記読み出し要求の要求元に異常があると判定する、
処理を前記コンピュータが実行することを特徴とする請求項４または５に記載のシミュレーション方法。
【請求項７】
前記メモリが、
前記第１記憶領域に前記第１データが記憶されている状態において、前記メモリに対する前記第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データに含まれる、前記読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じたデータに基づく第２記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータがさらにシミュレーションすることを特徴とする請求項４〜６のいずれか一つに記載のシミュレーション方法。
【請求項８】
ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータに、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求（以下、「第１送信許可要求」と称する。）の優先度が、前記第１送信許可要求よりも後に受け付けられた前記送信許可要求（以下、「第２送信許可要求」と称する。）の優先度よりも低いか否かを判定し、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第２送信許可要求についての前記送信データの前記格納時刻から前記第２送信許可要求についての前記送信時間が計時された後、前記第１送信許可要求についての前記送信データを前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行させることを特徴とするシミュレーションプログラム。
【請求項９】
コンピュータによるイベントドリブンのシミュレーションプログラムであって、
第１記憶領域と、第２記憶領域と、第３記憶領域と、を有するメモリが、
前記第１記憶領域に第１データが記憶されている状態において、前記メモリに対する第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータにシミュレーションさせることを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション方法、およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
従来、複数のハードウェアと複数のハードウェアを接続するバスとを有するシステムにおけるハードウェア間のデータの送信について、複数のハードウェアからデータの送信許可要求が同時に発生した場合、優先度順に送信要求の許可が与えられる技術が知られている（たとえば、下記特許文献１参照。）。さらに、優先度の高いハードウェアからの送信要求によってバスが長時間占有されるのを回避するため、タイマーによって送信要求が切り替えられる技術が知られている（たとえば、下記特許文献２参照。）。
【０００３】
また、システム上で動作するファームウェアの動作については、ＥＳＬ（Ｅｌｅｃｔｒｏｎｉｃ  Ｓｙｓｔｅｍ  Ｌｅｖｅｌ）シミュレーションによって検証が行われる。ＥＳＬシミュレーションには、たとえば、命令単位で動作が実行されるイベントドリブンのＥＳＬシミュレーションと、クロック単位で動作が実行されるクロック精度のＥＳＬシミュレーションと、がある。イベントドリブンのＥＳＬシミュレーションは、クロック精度のＥＳＬシミュレーションよりも高速に検証を行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−６００１７号公報
【特許文献２】特開２００２−５５９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、イベントドリブンのＥＳＬシミュレーションではハードウェア間でデータを送受信する動作が実際のハードウェアの動作と異なるため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。具体的には、実際のハードウェアでは、送信元ハードウェアから送信先ハードウェアへの送信データの送信イベントについての送信動作中に、該送信イベントよりも優先度の高い送信イベントが発生した場合、先の送信イベントの送信動作が中断される。
【０００６】
一方、イベントドリブンのＥＳＬシミュレーションでは、送信イベントが発生すると、送信元ハードウェアの送信データが直ちに送信先ハードウェアの記憶領域に格納される。そして、イベントドリブンのＥＳＬシミュレーションでは、送信データの送信にかかる送信時間をタイマーが計時し、タイマーによって該送信時間が計時された後に該送信イベントが完了する。そのため、イベントドリブンのＥＳＬシミュレーションでは、該送信イベントについての送信時間を計時中に該送信イベントよりも優先度の高い送信イベントが発生しても送信動作の中断がシミュレーションされないため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。
【０００７】
１つの側面では、本発明は、上述した従来技術による問題点を解消するため、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができるシミュレーション方法、およびシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行する場合に、前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、前記送信許可要求（以下、「第１送信許可要求」と称する。）の優先度が、前記第１送信許可要求よりも後に受け付けられた前記送信許可要求（以下、「第２送信許可要求」と称する。）の優先度よりも低いか否かを判定し、前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、前記復元する動作をシミュレートした場合に、前記第２送信許可要求についての前記送信データの前記格納時刻から前記第２送信許可要求についての前記送信時間が計時された後、前記第１送信許可要求についての前記送信データを前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートするシミュレーション方法、およびシミュレーションプログラムが提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明における送信済みのデータ量の推移を示す説明図である。
【図２】図２は、シミュレーション装置のハードウェア構成例を示すブロック図である。
【図３】図３は、システム例を示す説明図である。
【図４】図４は、ＤＬＹレジスタの一例を示す説明図である。
【図５】図５は、マージンテーブルの一例を示す説明図である。
【図６】図６は、実施の形態１にかかるシミュレーション装置の機能的構成を示すブロック図である。
【図７Ａ】図７Ａは、イベント制御の一例を示すシーケンス図（その１）である。
【図７Ｂ】図７Ｂは、イベント制御の一例を示すシーケンス図（その２）である。
【図８】図８は、送信元ハードウェアが行う処理手順の一例を示すフローチャート（その１）である。
【図９】図９は、送信元ハードウェアが行う処理手順の一例を示すフローチャート（その２）である。
【図１０】図１０は、バスが行う処理手順の一例を示すフローチャートである。
【図１１】図１１は、ハードウェア動作例を示す説明図である。
【図１２】図１２は、実施の形態２にかかるシミュレーション装置の機能的構成を示すブロック図である。
【図１３】図１３は、第１動作例のタイミングチャートを示す説明図である。
【図１４】図１４は、収集データ例を示す説明図である。
【図１５】図１５は、期待値の作成例を示す説明図である。
【図１６】図１６は、第２動作例を示すタイミングチャートである。
【図１７】図１７は、読み出し要求発生時の各シミュレーション結果と期待値との比較結果例を示す説明図である。
【図１８】図１８は、シミュレーション装置が行う処理手順の一例を示すフローチャートである。
【図１９】図１９は、ＬＭＯＤＥＬにおける動作例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかるシミュレーション方法、およびシミュレーションプログラムの実施の形態１と実施の形態２を詳細に説明する。
【００１２】
（実施の形態１）
図１は、本発明における送信済みのデータ量の推移を示す説明図である。本発明例におけるイベントドリブンのＥＳＬシミュレーション１００を説明する前に、理解の容易化のため、実際のハードウェアの動作例１０２と、従来例におけるイベントドリブンのＥＳＬシミュレーション１０１について説明する。
【００１３】
実際のハードウェアの動作例（以下、「ハードウェアの動作」と称する。）１０２では、第１送信許可要求についての送信が開始されると、送信データのうち、クロックに併せて所定量のデータが送信される。ハードウェアの動作１０２では、第１送信許可要求について送信中に第１送信許可要求よりも優先度が高い第２送信許可要求が発生した場合、第１送信許可要求についての送信が中断される。ハードウェアの動作１０２では、第２送信許可要求についての送信が終了すると、第１送信許可要求についての送信が再開される。
【００１４】
従来例におけるイベントドリブンのＥＳＬシミュレーション（以下、省略して「従来例のシミュレーション」と称する。）１０１では、複数のハードウェアのうちの送信元ハードウェアから送信先ハードウェアへの送信データの第１送信許可要求が発生すると、直ちに送信先ハードウェアの記憶領域に送信データが格納される。従来例のシミュレーション１０１では、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、システムにおける送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間がタイマーによって計時される。
【００１５】
従来例のシミュレーション１０１では、第１送信許可要求について計時中に第１送信許可要求よりも優先度が高い第２送信許可要求が発生した場合であっても、第１送信許可要求についての送信済みのデータ量は変わらない。
【００１６】
従来例のシミュレーション１０１では、ハードウェアの動作１０２のような中断期間がない。そのため、従来例のシミュレーション１０１では、ハードウェアの動作１０２においての中断期間と同一の期間にデータを利用する処理が発生した場合、実際のハードウェアとのデータに不一致が発生する。したがって、イベントドリブンのＥＳＬシミュレーションではハードウェア間でデータを送受信する動作が実際のハードウェアの動作と異なるため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。
【００１７】
本発明の一例であるイベントドリブンのＥＳＬシミュレーション（以下、省略して「本発明例のシミュレーション」と称する。）１００では、複数のハードウェアのうちの送信元ハードウェアから送信先ハードウェアへの送信データの第１送信許可要求が発生すると、送信先ハードウェアの記憶領域に記憶された記憶データがメモリに格納される。ここで、メモリは、シミュレーション上でのハードウェアでなく、たとえば、ＥＳＬシミュレーションを実行するシミュレーション装置がアクセス可能なメモリである。本発明例のシミュレーション１００では、第１送信許可要求について、送信先ハードウェアの記憶領域に送信データが格納される。本発明例のシミュレーション１００では、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、システムにおける送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間がタイマーによって計時される。
【００１８】
本発明例のシミュレーション１００では、第１送信許可要求について計時中に第１送信許可要求よりも優先度が高い第２送信許可要求が発生した場合、第１送信許可要求についての送信先ハードウェアの記憶領域の一部が、第１送信許可要求の発生前の状態に戻される。ここでは、メモリに格納された記憶データのうちの実際のハードウェアにおいて送信済みであろうデータを除くデータが復元される。記憶データのうち、実際のハードウェアにおいて送信済みであろうと推測されるデータを除くデータは、格納時刻からの経過時間と送信データの送信にかかる送信時間とに基づいて選択される。そのため、本発明例のシミュレーション１００では、第２送信許可要求が発生すると、第１送信許可要求についての送信完了のデータ量が減る。
【００１９】
本発明例のシミュレーション１００では、第２送信許可要求についての送信先ハードウェアの記憶領域に記憶された記憶データがメモリに格納される。本発明例のシミュレーション１００では、第２送信許可要求について、送信先ハードウェアの記憶領域に送信データが格納される。本発明例のシミュレーション１００では、第２送信許可要求について、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、送信データの送信にかかる送信時間がタイマーによって計時される。該送信時間は、システムにおける送信元ハードウェアから送信先ハードウェアへの送信データの送信にかかる時間である。本発明例のシミュレーション１００では、第１送信許可要求についての計時が中断される。
【００２０】
つぎに、本発明例のシミュレーション１００では、第２送信許可要求についての計時が終了した後、第１送信許可要求についての送信データが再度第１送信許可要求についての送信先ハードウェアの記憶領域に格納される。本発明例のシミュレーション１００では、中断された第１送信許可要求についての計時が再開される。
【００２１】
これにより、本発明例のシミュレーション１００では、中断期間を現すことができる。そのため、本発明例のシミュレーション１００では、ハードウェアの動作１０２においての中断期間と同一の期間にデータを利用する処理が発生しても、ハードウェアの動作１０２とのデータに不一致が発生しない。したがって、本発明例のシミュレーション１００では、実際のハードウェアの動作結果により近いシミュレーション結果を得ることができる。
【００２２】
（シミュレーション装置のハードウェア構成例）
図２は、シミュレーション装置のハードウェア構成例を示すブロック図である。図２において、シミュレーション装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、を有する。シミュレーション装置２００は、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（ＩｎｔｅｒＦａｃｅ）２０９と、キーボード２１０と、マウス２１１と、を有する。また、各部はバス２１２によってそれぞれ接続される。
【００２３】
ここで、ＣＰＵ２０１は、シミュレーション装置２００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２４】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２５】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２６】
Ｉ／Ｆ２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２７】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２８】
（システム例）
図３は、システム例を示す説明図である。本実施の形態において、シミュレーションの対象となるシステム３００では、ＣＰＵ３０１と、ＭＥＭ３０２と、バスマスタＡ３０３と、バスマスタＢ３０４と、バス３０５と、を有する。ＣＰＵ３０１は、システム３００全体を制御する。バスマスタＡ３０３、バスマスタＢ３０４は、たとえば、ＣＰＵ３０１の周辺機器である。ＭＥＭ３０２は、ＣＰＵ３０１がアクセス可能な記憶領域であり、たとえば、ＲＯＭ、ＲＡＭ、磁気ディスク、光ディスクなどである。バス３０５は、ハードウェア（ＣＰＵ３０１、ＭＥＭ３０２、バスマスタＡ３０３、およびバスマスタＢ３０４）間のデータを送信するための経路であり、データの送信を調停する調停回路である。
【００２９】
システム３００は、たとえば、ＥＳＬの記述言語によってコーディングされることにより、モデル化される。ＥＳＬの記述言語としては、たとえば、ＳｙｓｔｅｍＣが挙げられる。ここで、ＥＳＬのモデルとはハードウェアデバイスのビヘイビア（ふるまい）をもとに記述される。ＥＳＬシミュレータにＥＳＬモデルが与えられると、ＥＳＬモデルに記述されたハードウェア環境をシミュレーションすることができる。たとえば、ＥＳＬシミュレーション時には、ＣＰＵ３０１ではファームウェア（Ｆｉｒｍ  Ｗａｒｅ（以下、「ＦＷ」と省略する。））３１１を実行する。
【００３０】
図４は、ＤＬＹレジスタの一例を示す説明図である。ＤＬＹレジスタ４００は、送信元と送信先とに基づいて予め決定された単位送信時間を記憶する。たとえば、ＤＬＹレジスタ４００は、送信元、送信先、送信オーバーヘッド、および単位送信時間のフィールドを有する。各フィールドに情報が設定されることにより、レコード（たとえば、４０１−１，４０１−２）が記憶される。ＤＬＹレジスタ４００は、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などによって実現される。
【００３１】
送信元のフィールドには、送信元ハードウェアの識別情報が設定される。送信先のフィールドには、送信先ハードウェアの識別情報が設定される。送信オーバーヘッドのフィールドには、送信データ先頭で生じる送信オーバーヘッドの時間が設定される。単位送信時間のフィールドには、送信元ハードウェアから送信先ハードウェアに送信データを送信する場合の単位データ量あたりの送信時間が設定される。
【００３２】
図５は、マージンテーブルの一例を示す説明図である。マージンテーブル５００は、送信元、送信先、およびマージンサイズのフィールドを有する。各フィールドに情報が設定されることにより、レコードが記憶される。マージンテーブル５００は、ＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などによって実現される。
【００３３】
送信元のフィールドには、送信元ハードウェアの識別情報が設定される。送信先のフィールドには、送信先ハードウェアの識別情報が設定される。マージンサイズのフィールドには、送信元ハードウェアから送信先ハードウェアへのデータ送信にかかるマージンデータサイズである。マージンデータサイズは、送信元ハードウェアの種類、送信先ハードウェアの種類、バスの幅、バスの種類などによって決定される。ＥＳＬシミュレーションと実際のハードウェアの間で動作タイミングに誤差が生じた場合に、ＥＳＬシミュレーションでは問題なく動作したＦＷがハードウェアでは動作しないといった事象が発生してしまう。このような事象を回避するために、ＥＳＬシミュレーションとハードウェアの動作差分をマージンとして設定する。
【００３４】
（実施の形態１にかかるシミュレーション装置２００の機能的構成例）
図６は、実施の形態１にかかるシミュレーション装置の機能的構成を示すブロック図である。シミュレーション装置２００は、シミュレート部６０１と、格納部６０２と、計時部６０３と、判定部６０４と、を有する。シミュレート部６０１から判定部６０４の各機能がコーディングされたシミュレーションプログラムが、具体的には、たとえば、図２に示したＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。具体的には、シミュレーションプログラムは、システム３００を示す情報である。ＥＳＬシミュレータを実行可能なＣＰＵ２０１が、該記憶装置からシミュレーションプログラムを読み出し、ＥＳＬシミュレータにシミュレーションプログラムを与えることにより、シミュレーションプログラムにコーディングされた機能が実現される。より具体的には、たとえば、ＣＰＵ２０１が、シミュレーションプログラムとＦＷ３１１を併せてＥＳＬシミュレータに与える。
【００３５】
シミュレート部６０１は、ハードウェア群のうちのいずれかの送信元ハードウェアからハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求をバス３０５が受け付ける動作をシミュレートする。送信許可要求には、送信元ハードウェアの識別情報と、送信先ハードウェアの識別情報と、送信データの送信元ハードウェアにおける開始アドレスと、送信データのデータサイズと、優先度と、が含まれる。具体的には、シミュレート部６０１は、送信許可要求に基づいて、システム３００において送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間（以下、「ＢＵＳ占有時間」と称する。）ＴＢｕｓＮｅｅｄを算出する。具体的には、シミュレート部６０１は、ＤＬＹレジスタ４００から、送信許可要求に含まれる送信元ハードウェアと送信先ハードウェアに基づいて送信オーバーヘッドと単位送信時間を取得する。シミュレート部６０１は、下記式（１）に基づいて、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを算出する。
【００３６】
ＢＵＳ占有時間ＴＢｕｓＮｅｅｄ＝送信オーバーヘッド＋単位送信時間×データサイズ・・・（１）
【００３７】
格納部６０２は、受け付ける動作のシミュレート後に、送信許可要求に基づいて、メモリに、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを格納する。メモリは、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などが挙げられる。
【００３８】
シミュレート部６０１は、格納部６０２によって記憶データをメモリに格納後に、送信許可要求に基づいて、送信データを送信先ハードウェアの記憶領域へ格納する動作をシミュレートする。
【００３９】
計時部６０３は、格納する動作をシミュレートした格納時刻から、システム３００において送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間を計時する。
【００４０】
判定部６０４は、第１送信許可要求の優先度が、第１送信許可要求よりも後に受け付けられた第２送信許可要求の優先度よりも低いか否かを判定する。
【００４１】
第１送信許可要求の優先度が第２送信許可要求の優先度よりも低いと判定された場合、シミュレート部６０１は、第１送信許可要求についての送信先ハードウェアの記憶領域の一部の内容を第１送信許可要求の発生前に復元する動作をシミュレーションする。具体的には、シミュレート部６０１は、第１送信許可要求についてメモリに格納された記憶データのうちの一部のデータを、第１送信許可要求についての送信先ハードウェアの記憶領域へ復元する動作をシミュレートする。一部のデータは、第１送信許可要求についての送信データの格納時刻からの経過時間に基づいて決定される。より具体的には、シミュレート部６０１は、第１送信許可要求についての送信データの格納時刻からの経過時間に基づいて、復元データサイズと、復元開始アドレスと、を特定する。
【００４２】
復元データサイズ＝（１−（経過時間−送信オーバーヘッド）／（ＢＵＳ占有時間ＴＢｕｓＮｅｅｄ−送信オーバーヘッド））×データサイズ＋マージンデータサイズ・・・（２）
復元開始アドレス＝開始アドレス＋（（（経過時間−送信オーバーヘッド）／（ＢＵＳ占有時間ＴＢｕｓＮｅｅｄ−送信オーバーヘッド））×データサイズ−マージンデータサイズ）・・・（３）
【００４３】
シミュレート部６０１は、復元する動作をシミュレートした場合に、第２送信許可要求についての計時が終了した後に、第１送信許可要求についての送信データを第１送信許可要求についての送信先ハードウェアの記憶領域へ格納する動作をシミュレートする。第２送信許可要求についての計時が終了した後とは、第２送信許可要求についての送信データの格納時刻から第２送信許可要求についての送信時間が計時された後である。
【００４４】
また、第１送信許可要求の優先度が第２送信許可要求の優先度よりも低いと判定された場合、計時部６０３は、第１送信許可要求についての計時に第２送信許可要求についての計時の時間を追加する。計時部６０３は、第１送信許可要求についての送信時間から第１送信許可要求についての経過時間を除いた時間と、第２送信許可要求についての送信時間と、を併せた時間を算出する。計時部６０３は、第１送信許可要求についての送信データの格納時刻から第１送信許可要求についての経過時間までの時刻から該併せた時間を計時する。より具体的には、計時部６０３は、第１送信許可要求の優先度が第２送信許可要求の優先度よりも低いと判定部６０４によって判定された場合、第１送信許可要求についての送信データの格納時刻から第１送信許可要求についての送信時間の計時を中断する。つぎに、計時部６０３は、復元する動作をシミュレート後に、第２送信許可要求についての送信データの格納時刻から第２送信許可要求についての送信時間が計時部６０３によって計時された後に、中断された計時を再開する。
【００４５】
また、第１送信許可要求の優先度が第２送信許可要求の優先度よりも低くないと判定部６０４によって判定された場合、シミュレート部６０１は、第１送信許可要求についての計時が終了した後に、第２送信許可要求についての送信を行うシミュレーションを行う。第１送信許可要求についての計時が終了した後とは、第１送信許可要求についての送信データの格納時刻から第１送信許可要求についての送信時間が計時された後である。具体的には、シミュレート部６０１は、第２送信許可要求に基づいて、メモリに、シミュレーション上で第２送信許可要求についての送信先ハードウェアの記憶領域に記憶された記憶データを格納する。つぎに、詳細なシミュレーション例については、図７Ａおよび図７Ｂのシーケンス図を用いて説明する。
【００４６】
（シーケンス図）
図７Ａおよび図７Ｂは、イベント制御の一例を示すシーケンス図である。図７Ａおよび図７Ｂでは、ＥＳＬシミュレーション上でのバス３０５、バスマスタＡ３０３、バスマスタＢ３０４についての処理を示すが、単にバス３０５、バスマスタＡ３０３、バスマスタＢ３０４と記載する。図７Ａでは、前述の式（１）〜（３）にあるマージンデータサイズを考慮しない場合のシーケンスを示し、図７Ｂではマージンデータサイズを考慮した場合のシーケンスを示す。まず、図７Ａの説明を行った後に、図７Ｂについて説明する。
【００４７】
図７Ａでは、バス３０５は、前処理として、ＤＬＹレジスタ４００を読み込む。バスマスタＡ３０３は、（１）リクエスト登録依頼をバス３０５へ通知する（ステップＳ７０１）。リクエスト登録依頼には、送信元ハードウェアの識別情報、送信先ハードウェアの識別情報、開始アドレス、データサイズ、および優先度が含まれる。
【００４８】
バス３０５は、バスマスタＡ３０３からのリクエスト登録依頼を受け付けると、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを計算する。具体的には、バス３０５は、ＤＬＹレジスタ４００から送信元ハードウェアと送信先ハードウェアに基づいて送信オーバーヘッドと単位送信時間を取得する。バス３０５は、式（１）に基づいて、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを算出する。
【００４９】
図７Ａの例では、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄが「４１１１０」である。そして、バス３０５は、リクエスト登録依頼と、算出したＢＵＳ占有時間ＴＢｕｓＮｅｅｄと、を関連付けてＲｅｑレジスタ７００にリクエストを登録する。Ｒｅｑレジスタ７００は、キューの構造になっており、入力されたリクエストの順にリクエストの処理対象となる。ここでは、他のリクエストが登録されていないため、バスマスタＡ３０３からのリクエストがＲｅｑレジスタ７００の先頭に登録される。具体的には、リクエストＩＤ、優先度、送信元、送信先、開始アドレス、データサイズ、およびＢＵＳ占有時間ＴＢｕｓＮｅｅｄの情報が１レコードとして、Ｒｅｑレジスタ７００に登録される。
【００５０】
バス３０５は、（２）発行イベント開始をバスマスタＡ３０３へ通知する（ステップＳ７０２）。バスマスタＡ３０３は、バス３０５からの発行イベント開始を受け付けると、現在時刻を開始時刻として取得し、記憶データＴＢｅｇｉｎ＿Ａ７０４として記憶する。バスマスタＡ３０３は、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを複製することにより、該記憶データをバックアップする。バックアップデータは、たとえば、記憶データＴｅｍｐ＿Ａ７０１として記憶する。バスマスタＡ３０３は、送信先ハードウェアの記憶領域にデータを格納することにより、送信先ハードウェアにデータを送信する。そして、バスマスタＡ３０３は、バス３０５からの完了イベントを待つ。バス３０５は、リクエストに対するタイマーを開始する。
【００５１】
バスマスタＢ３０４は、（３）リクエスト登録依頼をバス３０５へ通知する（ステップＳ７０３）。バス３０５は、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを計算する。Ｒｅｑレジスタ７００にリクエストが登録済みであるため、バス３０５は、Ｒｅｑレジスタ７００に登録されているリクエストの優先度と、あらたに受け付けたリクエストの優先度と、を比較する。ここでは、あらたに受け付けたリクエストの優先度がＲｅｑレジスタ７００に登録されているリクエストの優先度よりも高いため、リクエストの実行順序が変更される。
【００５２】
そのため、バス３０５は、現在時刻と、Ｒｅｑレジスタ７００に登録された送信元ハードウェアからリクエストの開始時刻である記憶データＴＢｅｇｉｎ＿Ａ７０４と、を取得する。バス３０５は、現在時刻と取得した開始時刻７０４との差分値をリクエストの経過時間ＴＢｕｓＵｓｅｄとして取得する。バス３０５は、マージンテーブル５００から、送信元ハードウェアと送信先ハードウェアに基づいてマージンデータサイズを取得する。バス３０５は、経過時間ＴＢｕｓＵｓｅｄとマージンデータサイズに基づいて、復元情報を生成する。復元情報は、復元データサイズと、復元開始アドレスと、を有する。バス３０５は、復元データサイズを上記式（２）に基づいて生成し、復元開始アドレスを上記式（３）に基づいて生成する。バス３０５は、再開後のＢＵＳ占有時間ＴＢｕｓＮｅｅｄを下記式（４）に基づいて生成する。バス３０５は、生成した復元情報を復元情報レジスタに格納する。
【００５３】
再開後のＢＵＳ占有時間ＴＢｕｓＮｅｅｄ＝送信オーバーヘッド＋単位送信時間×復元データサイズ・・・（４）
【００５４】
つぎに、バス３０５は、（４）Ｒｅｑレジスタ７００に登録されているリクエストの送信元ハードウェアであるバスマスタＡ３０３へ完了イベントキャンセルを通知する（ステップＳ７０４）。完了イベントキャンセルには、復元情報が付される。
【００５５】
バスマスタＡ３０３は、完了イベントキャンセルを受け付けると、復元開始アドレスと復元データサイズに基づいて、記憶データＴｅｍｐ＿Ａ７０１の一部を送信先ハードウェアの記憶領域に復元する。そして、バスマスタＡ３０３は発行イベントを待つ。
【００５６】
バス３０５は、Ｒｅｑレジスタ７００のリクエスト登録順を優先度の順に変更する。ここで、本実施の形態では、優先度は、１、２、３などの正の整数で表し、数が小さいほど優先度が高い。優先度については、これに限らず、種々変更可能である。
【００５７】
バス３０５は、（５）Ｒｅｑレジスタ７００の先頭のリクエストＢ１についての送信元ハードウェアであるバスマスタＢ３０４へ発行イベント開始を通知する（ステップＳ７０５）。
【００５８】
バスマスタＢ３０４は、発行イベント開始を受け付けると、現在時刻をリクエストＢ１の開始時刻として取得し、記憶データＴＢｅｇｉｎ＿Ｂ７０５として記憶する。バスマスタＢ３０４は、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを複製することにより、記憶データをバックアップする。バックアップデータは、たとえば、Ｔｅｍｐ＿Ｂ７０３として記憶する。そして、バスマスタＢ３０４は、送信先ハードウェアの記憶領域に送信データを格納する。バスマスタＢ３０４は、完了イベントを待つ。バス３０５は、リクエストＢ１に対するタイマーを開始する。
【００５９】
バス３０５は、（６）リクエストＢ１に対するタイマーが終了すると、バスマスタＢ３０４へ完了イベント開始を通知する（ステップＳ７０６）。バスマスタＢ３０４は、完了イベント開始を受け付けると、リクエストＢ１が終了したと判断し、Ｒｅｑレジスタ７００からリクエストＢ１を削除する。
【００６０】
つぎに、バスマスタＢ３０４は、Ｒｅｑレジスタ７００からつぎのリクエストＡ１を取得する。バスマスタＢ３０４は、（７）リクエストＡ１の送信元であるバスマスタＡ３０３へ発行イベント開始を通知する（ステップＳ７０７）。バスマスタＡ３０３は、発行イベント開始を受け付けると、現在時刻を開始時刻として取得し、記憶データＴＢｅｇｉｎ＿Ａ７０４として記憶する。バスマスタＡ３０３は、送信先ハードウェアの記憶領域のデータを複製することにより、送信先ハードウェアのデータをバックアップする。バックアップデータは、たとえば、記憶データＴｅｍｐ＿Ａ７０１として記憶する。そして、バスマスタＡ３０３は、送信先ハードウェアの記憶領域に送信データを格納する。バスマスタＡ３０３は、完了イベントを待つ。バスマスタＢ３０４は、リクエストＡ１に対するタイマーを開始する。
【００６１】
バスマスタＢ３０４は、リクエストＡ１に対するタイマーを開始すると、後処理を実行し、レスポンス送信を行う。バスマスタＢ３０４は、（８）リクエストＡ１に対するタイマーが終了すると、完了イベント開始をリクエストＡ１の送信元であるバスマスタＡ３０３へ通知する（ステップＳ７０８）。バスマスタＡ３０３は、完了イベント開始を受け付けると、リクエストＡ１をＲｅｑレジスタ７００から削除する。バスマスタＡ３０３は、Ｒｅｑレジスタ７００からつぎのリクエストを取得するが、Ｒｅｑレジスタ７００は空である。そのため、バスマスタＡ３０３は、後処理を行い、レスポンスを送信して終了する。
【００６２】
つぎに、図７Ｂについて説明する。上述したように、図７Ｂではマージンデータサイズを考慮した場合のシーケンスを示す。図７Ｂで説明する処理と、図７Ａで説明した処理との違いは、復元情報の生成においてマージンデータサイズがあるか否かである。ここでは、復元情報の生成について詳細に説明するとともに、各情報として設定された値において、図７Ａと図７Ｂとの相違を説明する。
【００６３】
バス３０５は、経過時間ＴＢｕｓＵｓｅｄとマージンデータサイズに基づいて、復元情報を生成する。復元情報は、復元開始アドレスと、復元データサイズと、を有する。バス３０５は、復元データサイズを上記式（２）に基づいて生成し、復元開始アドレスを上記式（３）に基づいて生成する。復元開始アドレスは以下のようになる。
【００６４】
復元開始アドレス＝０ｘ０００＋（（１０３９０−１５０）／（４１１１０−１５０））＊０ｘ１０００−２０
＝０ｘ０３ＥＣ
【００６５】
復元開始アドレスは、図７Ａでは０ｘ０４００であるが、図７Ｂでは０ｘ０３ＥＣである。復元データサイズは以下のようになる。
【００６６】
復元データサイズ＝（１−（１０３９０−１５０））／（４１１１０−１５０））＊０ｘ１０００＋２０
＝０ｘ０Ｃ１４
【００６７】
復元データサイズは、図７Ａでは「０ｘ０Ｃ００」であるが、図７Ｂでは「０ｘ０Ｃ１４」である。バス３０５は、再開後ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを上記式（４）に基づいて生成する。再開後ＢＵＳ占有時間ＴＢｕｓＮｅｅｄは以下のようになる。
【００６８】
再開後ＢＵＳ占有時間ＴＢｕｓＮｅｅｄ＝１５０＋０ｘ０Ｃ００＊１０
＝３１０７０
【００６９】
再開後ＢＵＳ占有時間ＴＢｕｓＮｅｅｄは、図７Ａでは「３０８７０」であるが、図７Ｂでは「３１０７０」である。そして、バス３０５は、生成した復元情報を復元情報レジスタに格納する。
【００７０】
また、（４）〜（７）についても図７Ａに示す処理と図７Ｂに示す処理は同様であるが、（７）の後に、バスマスタＡ３０３が、送信先ハードウェアのデータをバックアップするが、バックアップデータが、図７Ａと図７Ｂとでは異なる。（１）の後に示す記憶データＴｅｍｐ＿Ａ７０１に新たに登録されるのは、図７Ａでは０ｘ０ＢＦＦまでであるが、図７Ｂでは０ｘ０Ｃ０７である。
【００７１】
（送信元ハードウェアが行う処理手順例）
図８および図９は、送信元ハードウェアが行う処理手順の一例を示すフローチャートである。ここでの送信元ハードウェアが行う処理手順とは、シミュレーション上で送信元ハードウェアが行う処理手順であって、実際のハードウェアが行う処理手順とは異なる。図８および図９に記載の「（番号）」はそれぞれ図７Ａおよび図７Ｂに記載の「（番号）」に対応する。
【００７２】
送信元ハードウェアは、リクエスト登録依頼をバス３０５へ通知し（ステップＳ８０１）、前処理を行う（ステップＳ８０２）。送信元ハードウェアは、リクエスト登録依頼に対する発行イベントを受け付けたか否かを判断する（ステップＳ８０３）。
【００７３】
発行イベントを受け付けていない場合（ステップＳ８０３：Ｎｏ）、ステップＳ８０３へ戻る。これにより、送信元ハードウェアは、リクエスト登録依頼に対する発行イベントを待つ（ｗａｉｔ（ｅｖ＿Ａ１））。
【００７４】
発行イベントを受け付けた場合（ステップＳ８０３：Ｙｅｓ）、送信元ハードウェアは、現在時刻を開始時刻ＴＢｅｇｉｎ＿Ａ７０４として取得する（ステップＳ８０４）。送信元ハードウェアは、送信先ハードウェアの記憶領域に記憶されたデータをバックアップし、記憶データＴｅｍｐ＿Ａ７０１として記憶する（ステップＳ８０５）。送信元ハードウェアは、データを送信する（ステップＳ８０６）。イベントドリブンのＥＳＬシミュレーションのデータ送信では、シミュレーション上で送信先ハードウェアの記憶領域が直接書き換えられる。
【００７５】
送信元ハードウェアは、リクエスト登録依頼に対する完了イベントを受け付けたか否かを判断する（ステップＳ８０７）。完了イベントを受け付けていない場合（ステップＳ８０７：Ｎｏ）、ステップＳ８０７に戻る。これにより、送信元ハードウェアは、リクエスト登録依頼に対する完了イベントを待つ（ｗａｉｔ（ｅｖ＿Ａ２））。
【００７６】
完了イベントキャンセルを受け付けた場合（ステップＳ８０７：キャンセル）、送信元ハードウェアは、復元情報を取得し（ステップＳ８０８）、送信先ハードウェアのデータを復元し（ステップＳ８０９）、ステップＳ８０３へ戻る。
【００７７】
完了イベントを受け付けた場合（ステップＳ８０７：開始）、送信元ハードウェアは、実行中リクエストをＲｅｑレジスタ７００から削除し（ステップＳ９０１）、Ｒｅｑレジスタ７００からつぎのリクエストを取得する（ステップＳ９０２）。送信元ハードウェアは、Ｒｅｑレジスタ７００に残リクエストがあるか否かを判断する（ステップＳ９０３）。Ｒｅｑレジスタ７００に残リクエストがない場合（ステップＳ９０３：Ｎｏ）、ステップＳ９０７へ移行する。
【００７８】
Ｒｅｑレジスタ７００に残リクエストがある場合（ステップＳ９０３：Ｙｅｓ）、送信元ハードウェアは、Ｒｅｑレジスタ７００の先頭のリクエストの送信元ハードウェアに発行イベント開始を通知する（ステップＳ９０４）。送信元ハードウェアは、発行イベント開始を通知したリクエストのタイマー情報を取得し（ステップＳ９０５）、リクエストの送信元ハードウェアに完了イベント開始を通知する（ステップＳ９０６）。送信元ハードウェアは、後処理を行い（ステップＳ９０７）、レスポンスを送信し（ステップＳ９０８）、一連の処理を終了する。ここで、完了イベント開始をステップＳ９０７，ステップＳ９０８の前に通知しているが、完了イベントの開始は、発行イベント開始の時刻からＢＵＳ占有時間ＴＢｕｓＮｅｅｄ経過後であるため、ステップＳ９０７，ステップＳ９０８の後に実行される。ここでは、送信元ハードウェアが、残リクエストについての発行イベント開始と完了イベント開始を残リクエストについての送信元ハードウェアへ通知する。これにより、複数のハードウェアからのイベントについての処理を行う負荷の大きいバスに代わって、他のハードウェアが処理を行うことができる。したがって、シミュレーション上でバスの負荷を低減させることができるため、シミュレーションにかかる時間を低減させることができる。
【００７９】
図１０は、バスが行う処理手順の一例を示すフローチャートである。ここでのバス３０５が行う処理手順とは、シミュレーション上でバス３０５が行う処理手順であって、実際のバス３０５が行う処理手順とは異なる。図１０に記載の「（番号）」はそれぞれ図７Ａおよび図７Ｂに記載の「（番号）」に対応する。
【００８０】
バス３０５は、リクエスト登録依頼を受け付けると、ＤＬＹレジスタ４００から送信先ハードウェアと送信元ハードウェアとに基づいて単位送信時間を取得し、ＢＵＳ占有時間ＴＢｕｓＮｅｅｄを計算する（ステップＳ１００１）。バス３０５は、Ｒｅｑレジスタ７００のリクエスト登録数がいくつであるかを判断する（ステップＳ１００２）。ＢＵＳ占有時間ＴＢｕｓＮｅｅｄは、上記式（１）を用いて算出される。
【００８１】
リクエスト登録数が０でない場合（ステップＳ１００２：０以外）、バス３０５は、Ｒｅｑレジスタ７００に登録された各リクエストの優先度と、受け付けたリクエストの優先度と、を比較することにより、リクエスト優先順に調整を行うか否かを判断する（ステップＳ１００３）。調整を行う場合（ステップＳ１００３：Ｙｅｓ）、バス３０５は、リクエストの開始時刻と、現在の時刻と、の差分に基づく経過時間ＴＢｕｓＵｓｅｄを取得する（ステップＳ１００４）。バス３０５は、復元情報を生成し（ステップＳ１００５）、実行中のリクエストの送信元ハードウェアに完了イベントキャンセルを通知する（ステップＳ１００６）。復元情報は、上記式（２）〜（４）を用いて生成される。バス３０５は、受け付けたリクエストをＲｅｑレジスタ７００の先頭に入れ、リクエスト登録順を変更する（ステップＳ１００７）。
【００８２】
ステップＳ１００２において、リクエスト登録数が０の場合（ステップＳ１００２：＝０）、バス３０５は、受け付けたリクエストをＲｅｑレジスタ７００の先頭に登録する（ステップＳ１００８）。ステップＳ１００７またはステップＳ１００８のつぎに、バス３０５は、Ｒｅｑレジスタ７００の先頭のリクエストの送信元ハードウェアに発行イベント開始を通知する（ステップＳ１００９）。
【００８３】
そして、バス３０５は、タイマー情報を取得し（ステップＳ１０１０）、完了イベント開始を通知し（ステップＳ１０１１）、一連の処理を終了する。ステップＳ１０１１では、完了イベント開始を通知する処理を発行するが、実際には、該リクエストに発行イベント開始を通知した時刻からＢＵＳ占有時間ＴＢｕｓＮｅｅｄ経過後の時刻に完了イベント開始がリクエストの送信元ハードウェアに通知される。
【００８４】
ステップＳ１００３において、調整を行わない場合（ステップＳ１００３：Ｎｏ）、受け付けたリクエストを優先度に沿ってリクエスト登録し（ステップＳ１０１２）、一連の処理を終了する。
【００８５】
以上説明したように、本実施の形態１のシミュレーションでは、第１送信許可要求の後に優先度の高い第２送信許可要求が発生する場合、シミュレーション上で第１送信許可要求についての送信先の記憶領域の一部が第１送信許可要求の発生前の状態に戻される。これにより、第２送信許可要求による第１送信許可要求についてのデータ送信の中断を現すことができる。さらに、本実施の形態１のシミュレーションでは、第２送信許可要求が終了後に、第１送信許可要求についての送信先の記憶領域に第１送信許可要求についての送信データが格納される。これにより、第２送信許可要求が終了後の第１送信許可要求についてのデータ送信の再開を現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【００８６】
また、本実施の形態１のシミュレーションでは、第１送信許可要求についての計時が第２送信許可要求についての送信時間延長される。これにより、第２送信許可要求によって第１送信許可要求についてのデータ送信の終了が遅れることを現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【００８７】
また、本実施の形態１のシミュレーションでは、第１送信許可要求の優先度が第２送信許可要求の優先度よりも低くない場合、第１送信許可要求についての計時の終了後に、第２送信許可要求についての送信が行われる。これにより、バスの調停機能をシミュレーションすることができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【００８８】
また、本実施の形態１のシミュレーションでは、第１送信許可要求についての記憶データのうち、第１送信許可要求についての送信データの格納時刻からの経過時間と第１送信許可要求についての送信時間との比率に基づいて選択された一部のデータが復元される。これにより、第２送信許可要求による第１送信許可要求についてのデータ送信の中断時に送信されたデータ量をより詳細に現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。さらに、本実施の形態１のシミュレーションでは、該比率を、送信元ハードウェアの種類、送信先ハードウェアの種類、バスの幅、バスの種類などによって決定されたマージンデータサイズによって補正してもよい。
【００８９】
（実施の形態２）
実施の形態２では、メモリの動作についてのイベントドリブンのシミュレーションを行う。従来では、実際のハードウェアでの動作において、書き込み要求に対応する書き込み処理を行っている最中に、読み出し処理が発生すると、書き込み途中であるため、書き込み前のデータと書き込み後のデータとが混在したデータが読み出される。しかしながら、イベントドリブンのＥＳＬシミュレーションでは、イベントの発生時にのみデータが変化するため、実際のハードウェアと異なるタイミングでメモリが書き込まれる。そのため、書き込み処理期間内に読み出し要求があると、実際のハードウェアと異なるデータが読み出される。
【００９０】
そこで、本実施の形態２の第１動作のシミュレーションでは、第１データが第１記憶領域に記憶されている状態において、第２データの書き込み要求があると、第１データを第２記憶領域に記憶させ、第２データを第１記憶領域に記憶させる。そして、第１動作のシミュレーションでは、書き込み要求が検出されてから所定期間内に読み出し要求があると、第１データと第２データとを含む読み出し要求のタイミングに応じた収集データに基づく記憶データを第３記憶領域に格納する。したがって、書き込み処理期間内に読み出し要求があっても、実際のハードウェアと同一のデータが読み出される。
【００９１】
これにより、実際のハードウェアであるメモリの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。ここで、メモリに対する書き込み要求については、メモリにアクセス可能なハードウェアから発生し、メモリに対する読み出し要求については、メモリにアクセス可能なハードウェアまたはソフトウェアのいずれかから発生する。ここでのハードウェアやソフトウェアについては特に限定しないため、メモリを含むシステムなどの詳細例については省略する。
【００９２】
まず、実施の形態２の詳細な説明の前に、理解の容易化のために、実際のハードウェア動作について簡単に説明する。
【００９３】
図１１は、ハードウェア動作例を示す説明図である。タイミングチャート１１００は、実際のハードウェアであるメモリｍｅｍに対する書き込み要求と、書き込み処理中に発生した読み出し要求と、における各状態を示す。
【００９４】
メモリｍｅｍは、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙと、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙと、を有する。ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙは、ＦＩＦＯ型のバッファであり、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙには、メモリｍｅｍが受信した書き込みデータが順次記憶される。ｒｅｓｕｌｔ＿ｍｅｍｏｒｙは、実際の複数のメモリ素子などによって形成される記憶領域であり、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙには、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータに基づくデータが記憶される。ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータに基づくデータは、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータそのものであってもよいし、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータが、符号化や暗号化されたデータであってもよい。
【００９５】
たとえば、時刻ｔ0では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙには、第１データであるＤ０［ｎ−１：０］が記憶され、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙには、第１データに基づくデータであるＲ０［ｎ−１：０］が記憶される。ｎは１以上の整数である。そして、時刻ｔ0においてハードウェアへの書き込みデータの転送が開始されると、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに順次データが格納される。
【００９６】
時刻ｔ1では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙにはＤ０［ｎ−１：１］とＤ１［０］とが記憶される。そして、時刻ｔ1では、時刻ｔ0におけるｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータに基づくデータがｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶される。
【００９７】
たとえば、時刻ｔi+1では、読み出し要求が検出されると、メモリｍｅｍがｒｅｓｕｌｔ＿ｍｅｍｏｒｙからＲ’０［ｎ−１：０］を読み出す処理を行い、読み出されたＲ’０［ｎ−１：０］に基づくデータを読み出し要求元に返す。
【００９８】
そして、時刻ｔn+1では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたＤ１［ｎ−１：０］に基づく記憶データであるＲ１［ｎ−１：０］がｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶される。そして、メモリｍｅｍは、書き込み要求に対応する書き込み処理が終了したと判断し、割り込みを発生させる。より具体的には、メモリｍｅｍが、ｉｎｔｅｒｒｕｐｔ信号を０から１にする。このｉｎｔｅｒｒｕｐｔ信号の発生によって、つぎの書き込み要求や読み出し要求を受け付け可能であることを示す。
【００９９】
つぎに、実施の形態２にかかるシミュレーション装置について詳細に説明する。実施の形態２にかかるハードウェア構成については、たとえば、実施の形態１で説明したハードウェア構成と同様であってよいため、説明を省略する。
【０１００】
（実施の形態２にかかるシミュレーション装置の機能的構成例）
図１２は、実施の形態２にかかるシミュレーション装置の機能的構成を示すブロック図である。シミュレーション装置１２００は、第１動作部１２０１と、第１判断部１２０２と、第２動作部１２０３と、第２判断部１２０４と、判定部１２０５と、を含む。第１動作部１２０１から判定部１２０５の各機能がコーディングされたシミュレーションプログラムが、具体的には、たとえば、図２に示したＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。ＥＳＬシミュレータを実行可能なＣＰＵ２０１が、該記憶装置からシミュレーションプログラムを読み出し、シミュレーションプログラムにコーディングされた処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、たとえば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。
【０１０１】
第１記憶領域と、第２記憶領域と、第３記憶領域とを有するメモリｍｅｍを示すメモリモデルと、他のハードウェアやソフトウェアやＦＷを実行可能なＣＰＵなどを示すハードウェアモデルと、を含むシステムを示すモデル１２１０が記憶装置に記憶される。記憶装置としては、たとえば、ＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などが挙げられる。第１記憶領域はｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙであり、第２記憶領域はｐｒｅｖｉｏｕｓ＿ｍｅｍｏｒｙであり、第３記憶領域はｒｅｓｕｌｔ＿ｍｅｍｏｒｙである。第１記憶領域と、第２記憶領域と、第３記憶領域とを有するメモリｍｅｍを示すメモリモデルの記述方法をＡＭＯＤＥＬと称する。第１動作部１２０１は、ｍ（１以上の整数）個のＴＰ（Ｔｅｓｔ  Ｐａｔｔｅｒｎ）１２３０のうちのいずれかのＴＰとモデル１２１０とによるメモリｍｅｍの第１動作をイベントドリブンによってＥＳＬシミュレーションする。ＴＰとは、ハードウェアやソフトウェアが要求仕様にしたがって動作することを検証するためにこれらに入力し、得られた出力を観測するためのデータである。検証の対象となるハードウェアの動作仕様に応じて適切なＴＰが決められるが、異なった性質の仕様検証のためには各々の性質に適したＴＰが複数用意される。ここでは、ＴＰ１２３０がｍ通りある。ＴＰ１２３０は、予めＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。
【０１０２】
また、第１記憶領域と第３記憶領域とを有するメモリｍｅｍを示すメモリモデルと、他のハードウェア、ソフトウェアやＦＷを実行可能なＣＰＵなどを示すハードウェアモデルと、を含むシステムを示すモデル１２１１が記憶装置に記憶される。記憶装置としては、たとえば、ＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などが挙げられる。第１記憶領域はｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙであり、第３記憶領域はｒｅｓｕｌｔ＿ｍｅｍｏｒｙである。第１記憶領域と第３記憶領域とを有するメモリｍｅｍを示すメモリモデルの記述方法をＦＭＯＤＥＬと称する。第２動作部１２０３は、ｍ個のＴＰ１２３０のうちのいずれかのＴＰとモデル１２１１とによるメモリｍｅｍの第２動作をイベントドリブンによってＥＳＬシミュレーションする。
【０１０３】
モデル１２１０とモデル１２１１は、たとえば、所望のシステムがＥＳＬの記述言語によってコーディングされることにより、モデル化されることによって得られる。上述したように、ＥＳＬのモデルは、ハードウェアデバイスのビヘイビアをもとに記述される。ＥＳＬシミュレータにＥＳＬのモデルが与えられると、ＥＳＬのモデルに記述されたハードウェア環境をシミュレーションすることができる。たとえば、ＥＳＬシミュレーションの対象となるシステムにＣＰＵが含まれている場合、ＥＳＬシミュレーション時には、そのＣＰＵがソフトウェアやＦＷを実行する。つぎに、各部の詳細について説明する。
【０１０４】
図１３は、第１動作例のタイミングチャートを示す説明図である。タイミングチャート１３００は、メモリｍｅｍに対する書き込み要求と、書き込み処理中に発生したメモリｍｅｍに対する読み出し要求と、についてのメモリｍｅｍの第１動作のイベントドリブンのシミュレーションにおける各状態を示す。
【０１０５】
図１３に示すように、Ｃｌｏｃｋ信号の代わりに、書き込み処理におけるデータを受信中であることを示すｖａｌｉｄと、所定期間である受信中の期間をカウントするｃｏｕｎｔｅｒと、がある。たとえば、図１３の例では、ｃｏｕｎｔｅｒは、０から（ｎ−１）（ｎは１以上の整数）までをカウントする。ｖａｌｉｄと、ｃｏｕｎｔｅｒとは、所定期間内に読み出しされない場合には不要である。たとえば、ソフトウェアやＦＷが正常動作であれば、ｉｎｔｅｒｒｕｐｔ信号に基づいて読み出し要求を発生するため、メモリｍｅｍが書き込み処理中に読み出し要求は発生しない。一方、ソフトウェアやＦＷに動作不良が発生すると、メモリｍｅｍが書き込み処理中であってもソフトウェアやＦＷから読み出し要求が発生する可能性がある。ソフトウェアやＦＷに限らず他のハードウェアからの読み出し要求も同様に動作不良が発生すると、不適切なタイミングで読み出し要求が発生する可能性がある。
【０１０６】
まず、時刻ｔ0では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙには第１データであるＤ０［ｎ−１：０］が記憶されている状態である。つぎに、この状態において、第１動作部１２０１は、メモリｍｅｍが、メモリｍｅｍに対する第２データであるＤ１［ｎ−１：０］の書き込み要求を検出する（ステップＳ１３０１）。そして、第１動作部１２０１は、メモリｍｅｍが、書き込み要求の検出により、時刻ｔ1において、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたＤ０［ｎ−１：０］をｐｒｅｖｉｏｕｓ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１３０２）。これにより、時刻ｔ1では、ｐｒｅｖｉｏｕｓ＿ｍｅｍｏｒｙにＤ０［ｎ−１：０］が記憶される。
【０１０７】
つぎに、第１動作部１２０１は、メモリｍｅｍが、Ｄ１［ｎ−１：０］をｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１３０３）。これにより、時刻ｔ1では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙにＤ１［ｎ−１：０］が記憶される。
【０１０８】
そして、第１動作部１２０１は、メモリｍｅｍが、書き込み要求が検出されてから所定期間内に、メモリｍｅｍに対する読み出し要求を検出する（ステップＳ１３０４）。第１動作部１２０１は、メモリｍｅｍが、読み出し要求の検出により、読み出し要求が検出されたタイミングに応じたデータに基づく記憶データをｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１３０５）。ここでは、読み出し要求が検出されたタイミングに応じたデータを収集データと称する。収集データは、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたＤ１［ｎ−１：０］とｐｒｅｖｉｏｕｓ＿ｍｅｍｏｒｙに記憶されたＤ０［ｎ−１：０］とに含まれるデータである。
【０１０９】
具体的には、たとえば、ｃｏｕｎｔｅｒの値が（ｉ＋１）である。そのため、収集データは、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙ内のＤ１［ｎ−１：０］のうちのＤ１［ｉ：０］と、ｐｒｅｖｉｏｕｓ＿ｍｅｍｏｒｙ内のＤ０［ｎ−１：０］のうちのＤ１［ｎ−１：ｉ＋１］と、である。収集データに基づく記憶データは、たとえば、収集データであったり、収集データを符号化や暗号化のような何らかの演算が行われたデータであってもよい。
【０１１０】
第１動作部１２０１は、読み出し要求に基づいて、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙからの読み出し処理を行う動作をシミュレーションする（ステップＳ１３０６）。たとえば、読み出し処理は、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶されたデータを読み出して、読み出し要求の要求元へデータをそのまま送信したり、記憶されたデータが符号化や暗号化されている場合に、復号して送信してもよい。
【０１１１】
つぎに、第１動作部１２０１は、メモリｍｅｍが、書き込み要求が検出されてから所定期間経過した際に、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータに基づく第２記憶データをｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１３０７）。ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたデータは、Ｄ１［ｎ−１：０］であり、Ｄ１［ｎ−１：０］に基づく第２記憶データは、Ｒ１［ｎ−１：０］である。
【０１１２】
そして、第１動作部１２０１は、書き込み要求が完了した旨を出力する動作をシミュレーションする（ステップＳ１３０８）。具体的には、実際のハードウェアの動作と同様に、第１動作部１２０１は、メモリｍｅｍが割り込みを出力する動作をシミュレーションする。より具体的には、第１動作部１２０１は、メモリｍｅｍが、ｉｎｔｅｒｒｕｐｕｔ信号を０から１に変化させる動作をシミュレーションする。
【０１１３】
これにより、実際のメモリｍｅｍの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【０１１４】
また、実際のハードウェアによるクロック動作の変化タイミングと、ＥＳＬシミュレーション時のｃｏｕｎｔｅｒによるカウント値での動作の変化タイミングと、が一致しない可能性がある。そのため、図１３に示すタイミングに応じた収集データに基づく記憶データと、実際のハードウェアにおける記憶データとが、タイミングの不一致により異なる可能性がある。
【０１１５】
そこで、たとえば、第１動作部１２０１は、上述と同様に、ステップＳ１３０１〜ステップＳ１３０４までの動作をシミュレーションする。第１動作部１２０１は、読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じた収集データに基づく記憶データを第３記憶領域に記憶する動作をシミュレーションする。この収集データは、メモリｍｅｍが、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたＤ１［ｎ−１：０］とｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶されたＤ０［ｎ−１：０］と、に含まれるデータである。所定時間は、たとえば、図１３に示すように、１サイクルであってもよいし、１以上のサイクルであってもよい。所定時間については、ＲＯＭ２０２、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶される。上述した時刻ｔi+1におけるｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶させる記憶データの生成に用いるデータを図１４に示すようにしてもよい。
【０１１６】
図１４は、収集データ例を示す説明図である。Ｎｏ．２に示す収集データは、上述したＤ１[ｉ：０]とＤ０[ｎ−１：ｉ＋１]とである。Ｎｏ．１に示す収集データは、Ｎｏ．２に示す収集データ時のタイミングＴよりも１サイクル分程度早いずれを想定したデータである。Ｎｏ．１に示す収集データは、Ｄ１［ｉ−１：０］とＤ０［ｎ−１：ｉ］とである。Ｎｏ．３に示す収集データは、Ｎｏ．２に示す収集データ時のタイミングＴよりも１サイクル分程度遅いずれを想定したデータである。Ｎｏ．３に示す収集データは、Ｄ１［ｉ＋１：０］とＤ０［ｎ−１：ｉ＋２］とである。
【０１１７】
このようにタイミングのずれを考慮して収集データを生成する動作のシミュレーションについては、たとえば実際のハードウェアにおいて不具合が発生した際に行う不具合の検証に有用であるが、特に限定しない。
【０１１８】
また、第１判断部１２０２は、第１動作部１２０１による第１動作のシミュレーションの後に、第１動作によって得られる第１シミュレーション結果が、所定結果であるか否かを判断する。たとえば、所定結果は期待値であり、第１判断部１２０２は、第１シミュレーション結果と期待値１２２０とを比較することによって、第１シミュレーション結果と期待値１２２０とが一致するか否かを判断する。
【０１１９】
図１５は、期待値の作成例を示す説明図である。期待値１２２０は、ＥＳＬシミュレーションの対象となるモデル１２１０やモデル１２１１よりも抽象度の高い動作モデルの動作結果であってもよい。たとえば、本実施の形態２におけるモデル１２１０やモデル１２１１が、ハードウェア記述言語で記述されているとすると、抽象度の高い動作モデルは、Ｃ言語などで記述される。
【０１２０】
第１動作部１２０１は、所定結果であると判断された場合に、あらたなテストパターンとモデルによるメモリｍｅｍの第１動作をイベントドリブンによってＥＳＬシミュレーションする。
【０１２１】
そして、第２動作部１２０３は、所定結果でないと判断された場合に、第１動作部１２０１で利用されたテストパターンとモデルによるメモリｍｅｍの第２動作をイベントドリブンによってＥＳＬシミュレーションする。
【０１２２】
図１６は、第２動作例を示すタイミングチャートである。タイミングチャート１６００は、メモリｍｅｍに対する書き込み要求と、書き込み処理中に発生したメモリｍｅｍに対する読み出し要求と、についてのメモリｍｅｍの第２動作のイベントドリブンのシミュレーションにおける各状態を示す。第１動作例と同様に、Ｃｌｏｃｋ信号の代わりに、書き込み処理におけるデータを受信中であることを示すｖａｌｉｄと、所定期間である受信中の期間をカウントするｃｏｕｎｔｅｒと、がある。ｖａｌｉｄと、ｃｏｕｎｔｅｒとは、所定期間内に読み出しされない場合には不要である。
【０１２３】
第２動作部１２０３は、メモリｍｅｍが、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに第１データであるＤ０［ｎ−１：０］が記憶されている状態において、メモリｍｅｍに対する第２データであるＤ１［ｎ−１：０］の書き込み要求を検出する動作をシミュレーションする（ステップＳ１６０１）。そして、第２動作部１２０３は、Ｄ１［ｎ−１：０］をｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１６０２）。これにより、時刻ｔ1では、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙにＤ１［ｎ−１：０］が記憶される。
【０１２４】
つぎに、第２動作部１２０３は、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙに記憶されたＤ１［ｎ−１：０］に基づく第２記憶データであるＲ１［ｎ−１：０］をｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶する動作をシミュレーションする（ステップＳ１６０３）。これにより、時刻ｔ2では、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙにＲ１［ｎ−１：０］が記憶される。第２動作部１２０３は、書き込み要求が検出されてから所定期間内に、メモリｍｅｍに対する読み出し要求を検出する（ステップＳ１６０４）と、読み出し要求に基づいて、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙからの読み出し処理を行う動作をシミュレーションする（ステップＳ１６０５）。
【０１２５】
つぎに、第２動作部１２０３は、メモリｍｅｍが、書き込み要求が検出されてから所定期間経過した際に、書き込み要求が完了した旨を出力する動作をシミュレーションする（ステップＳ１６０６）。具体的には、実際のハードウェアの動作と同様に、第２動作部１２０３は、メモリｍｅｍが割り込みを出力する動作をシミュレーションする。より具体的には、第２動作部１２０３は、メモリｍｅｍが、ｉｎｔｅｒｒｕｐｕｔ信号を０から１に変化させる動作をシミュレーションする。
【０１２６】
第２判断部１２０４は、第２動作によって得られる第２シミュレーション結果が所定結果であるか否かを判断する。ここでの所定結果は、上述した期待値１２２０と同様である。たとえば、第２判断部１２０４は、第２シミュレーション結果と期待値１２２０とを比較することによって、第２シミュレーション結果と期待値１２２０とが一致するか否かを判断する。判定部１２０５は、第２判断部１２０４によって所定結果であると判断された場合、読み出し要求の要求元に異常があると判定する。
【０１２７】
図１７は、読み出し要求発生時の各シミュレーション結果と期待値との比較結果例を示す説明図である。ここでの読み出し要求は、書き込み要求に基づく書き込み処理期間内に発生するものであって、不適切な発生である。Ｎｏ．１では、上述した第１動作によるシミュレーションを示す。Ｎｏ．２では、上述したように、第２動作によるシミュレーションを示す。
【０１２８】
ＡＭＯＤＥＬによって記述されたモデルによる第１動作の第１シミュレーション結果と期待値１２２０とは一致せず、第１動作とハードウェアの動作との互換性はある。一方、ＦＭＯＤＥＬによって記述されたモデルによる第２動作の第２シミュレーション結果と期待値１２２０とは一致するため、第２動作とハードウェアの動作との互換性はない。
【０１２９】
そのため、第１判断部１２０２は、第１動作部１２０１による第１シミュレーション結果と期待値１２２０が一致していなければ、ソフトウェアやＦＷなどによってメモリｍｅｍに対して不適切な読み出し要求が発生したと判断できる。そして、第２判断部１２０４は、第２動作部１２０３による第２シミュレーション結果と期待値１２２０が一致しているか否かを第２判断部１２０４によって判断することによって、不適切な読み出し要求のみが原因か否かを判断することができる。たとえば、判定部１２０５は、第２シミュレーション結果と期待値１２２０が一致していれば、不適切な読み出し要求を原因として不具合が発生していると判定し、一致していなければ、不適切な読み出し要求以外にも原因がある可能性があると判定することができる。
【０１３０】
これにより、異常な読み出し要求の原因の特定精度を向上させることができる。たとえば、第１判断部１２０２から判定部１２０５までの各処理は、ソフトウェアやＦＷの開発時に有用である。
【０１３１】
（シミュレーション装置１２００が行う処理手順例）
図１８は、シミュレーション装置が行う処理手順の一例を示すフローチャートである。シミュレーション装置１２００は、ｉ＝０とし（ステップＳ１８０１）、ｍ個あるＴＰ１２３０のうちｉ番目のＴＰ１２３０とモデル１２１０とによって第１動作のイベントドリブンのシミュレーションを実行する（ステップＳ１８０２）。シミュレーション装置１２００は、第１動作のシミュレーション結果が期待値１２２０と不一致か否かを判断する（ステップＳ１８０３）。
【０１３２】
一致している場合（ステップＳ１８０３：一致）、ステップＳ１８０８へ移行する。不一致である場合（ステップＳ１８０３：不一致）、シミュレーション装置１２００は、ｉ番目のＴＰ１２３０とモデル１２１１とによって第２動作のイベントドリブンのシミュレーションを実行する（ステップＳ１８０４）。シミュレーション装置１２００は、第２動作のシミュレーション結果が期待値１２２０と不一致か否かを判断する（ステップＳ１８０５）。一致している場合（ステップＳ１８０５：一致）、シミュレーション装置１２００は、原因が特定されたと判定し（ステップＳ１８０６）、ステップＳ１８０８へ移行する。一致していない場合（ステップＳ１８０５：不一致）、シミュレーション装置１２００は、原因は他にあると判定し（ステップＳ１８０７）、ステップＳ１８０８へ移行する。
【０１３３】
ステップＳ１８０３：一致の場合、ステップＳ１８０６またはステップＳ１８０７のつぎに、シミュレーション装置１２００は、「ｉ＝ｍ−１」であるか否かを判断する（ステップＳ１８０８）。「ｉ＝ｍ−１」である場合（ステップＳ１８０８：Ｙｅｓ）、一連の処理を終了する。「ｉ＝ｍ−１」でない場合（ステップＳ１８０８：Ｎｏ）、シミュレーション装置１２００は、「ｉ＝ｉ＋１」とし（ステップＳ１８０９）、ステップＳ１８０２へ戻る。
【０１３４】
また、ここで参考に、ＬＭＯＤＥＬと呼ばれる記述方法によって記述されたモデルによるメモリｍｅｍの動作についてのシミュレーションを説明する。
【０１３５】
図１９は、ＬＭＯＤＥＬにおける動作例を示す説明図である。タイミングチャート１９００は、メモリｍｅｍに対する書き込み要求と、書き込み処理中に発生したメモリｍｅｍに対する読み出し要求と、についてのメモリｍｅｍの動作のイベントドリブンのシミュレーションにおける各状態を示す。ＬＭＯＤＥＬによって記述されたメモリｍｅｍを示すメモリモデルでは、第１記憶領域であるｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙと、第３記憶領域であるｒｅｓｕｌｔ＿ｍｅｍｏｒｙと、を含む。メモリモデルがＥＳＬシミュレーションによって実行されることによって、メモリｍｅｍの動作がシミュレーションされる。
【０１３６】
第１および２動作と同様に、Ｃｌｏｃｋ信号の代わりに、書き込み処理におけるデータを受信中であることを示すｖａｌｉｄと、受信中の期間をカウントするｃｏｕｎｔｅｒと、がある。所定期間とは、このデータの受信中の期間を示す。たとえば、図１９の例では、ｃｏｕｎｔｅｒは、０からｎ−１までをカウントする。
【０１３７】
ＬＭＯＤＥＬにおけるメモリの動作のシミュレーションでは、時刻ｔ0において書き込み要求が発生すると、時刻ｔ1において、ｃｕｒｒｅｎｔ＿ｍｅｍｏｒｙには第２データであるＤ１［ｎ−１：０］が記憶され、ｃｏｕｎｔｅｒの値がカウントアップされる。一方、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙには、時刻ｔ1において変化せずにＲ０［ｎ−１：０］が記憶される。
【０１３８】
そして、時刻ｔi+1において、読み出し要求が検出されると、ｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶されたＲ０［ｎ−１：０］が読み出されて、読み出し要求の要求元に送信される。したがって、実際のハードウェアの動作と異なるデータが読み出される。
【０１３９】
つぎに、時刻ｔnにおいてｃｏｕｎｔｅｒの値が０になると、時刻ｔn+1においてＤ１［ｎ−１：０］に基づくＲ１［ｎ−１：０］がｒｅｓｕｌｔ＿ｍｅｍｏｒｙに記憶される。時刻ｔn+2において、書き込み要求に基づく書き込み処理が終了したことを示す割り込みが発行される。図１９に示すように、ｉｎｔｅｒｒｕｐｔ信号が０から１に変化する。このように、本実施の形態２にかかる第１動作のシミュレーション結果は、図１９に示す動作のシミュレーション結果よりも、ハードウェアの動作により近くなる。
【０１４０】
以上説明したように、本実施の形態２にかかる第１動作のシミュレーションでは、第１データが第１記憶領域に記憶されている状態において、第２データの書き込み要求があると、第１記憶領域に記憶された第１データを第２記憶領域に記憶させる。その後、第１動作のシミュレーションでは、第１記憶領域に第２データを記憶させる。そして、第１動作のシミュレーションでは、書き込み要求が検出されてから所定期間内に読み出し要求があると、第１データと第２データとを含む読み出し要求のタイミングに応じた収集データに基づく記憶データを第３記憶領域に格納する。これにより、実際のハードウェアであるメモリｍｅｍの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【０１４１】
また、本実施の形態２にかかるシミュレーション方法、シミュレーションプログラムでは、メモリモデルと、メモリと異なるハードウェアを示すモデルと、の間の動作を記述しなくてよく、メモリモデル内にのみ機能を追加するだけでよい。また、本実施の形態２にかかるシミュレーション方法、シミュレーションプログラムでは、メモリ内のメモリ素子への書き込み前にどのような演算があってもよいため、実際のハードウェアの動作により近い動作を実現することができる。
【０１４２】
また、本実施の形態２にかかるシミュレーションによれば、サイクル精度のシミュレーションと比較して、シミュレーションの実行時間を短縮することができる。たとえば、実際のハードウェアの動作検証では十数日かかっていたものが、抽象度の高いＲＴＬ検証では、数日かかってもシミュレーション対象の回路規模によっては検証実行ができない可能性がある。そして、上述したＦＭＯＤＥＬによるモデルのイベントドリブンのシミュレーションでは、数時間かかるが、不具合を再現できない可能性がある。さらに、本実施の形態２である上述したＡＭＯＤＥＬによるモデルのイベントドリブンのシミュレーションでは、数時間であり、不具合を再現できる。したがって、実際のハードウェアにおいて不具合が発生した場合に、本実施の形態２にかかるシミュレーション方法によれば、不具合の早期発見を支援することができる。
【０１４３】
また、所定期間は、第２データのデータ量に応じた期間である。これにより、書き込み要求に基づく書き込み処理期間内において、メモリｍｅｍに対する読み出し要求を検出することができる。
【０１４４】
また、書き込み処理期間が終了すると、書き込み要求に基づく書き込み処理が完了した旨を出力する。これにより、実際のハードウェアであるメモリｍｅｍの書き込み動作の結果により近いイベントドリブンのシミュレーション結果を得ることができる。
【０１４５】
また、シミュレーション装置は、第１動作のシミュレーション結果が期待値と一致しない場合、第２記憶領域を有さないメモリモデルによる第２動作のシミュレーションを行う。シミュレーション装置は、第２動作のシミュレーション結果が期待値と一致すれば、書き込み要求に基づく書き込み処理期間内に、メモリｍｅｍに対する読み出し要求を発生した読み出し要求元に動作不良の原因があると判定する。これにより、動作不良の原因の特定を容易化させることができる。
【０１４６】
また、第１の動作のシミュレーションでは、第１データと第２データとに基づいて第３記憶領域にデータを格納する際に、読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じた収集データに基づく第２記憶データを第３記憶領域に記憶する。これにより、実際のハードウェアの動作と、ＥＳＬシミュレーションにおける第１動作と、において各変化のタイミングに誤差が生じても、収集データが複数あることによって誤差を調整可能となる。
【０１４７】
なお、本実施の形態１および２で説明したシミュレーション方法は、予め用意されたシミュレーションプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本シミュレーションプログラムは、ハードディスク、フレキシブルディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本シミュレーションプログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４８】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４９】
（付記１）ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータが、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求（以下、「第１送信許可要求」と称する。）の優先度が、前記第１送信許可要求よりも後に受け付けられた前記送信許可要求（以下、「第２送信許可要求」と称する。）の優先度よりも低いか否かを判定し、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第２送信許可要求についての前記送信データの前記格納時刻から前記第２送信許可要求についての前記送信時間が計時された後、前記第１送信許可要求についての前記送信データを前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行することを特徴とするシミュレーション方法。
【０１５０】
（付記２）前記格納時刻から前記送信時間を計時する処理は、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求についての前記送信データの前記格納時刻から前記第１送信許可要求についての前記経過時間までの時刻から、前記第１送信許可要求についての前記送信時間から前記第１送信許可要求についての前記経過時間を除いた時間と前記第２送信許可要求についての前記送信時間とを併せた時間を計時することを特徴とする付記１に記載のシミュレーション方法。
【０１５１】
（付記３）前記格納する動作をシミュレートする処理は、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低くないと判定された場合、前記第１送信許可要求についての前記送信データの前記格納時刻から前記第１送信許可要求についての前記送信時間が計時された後に、前記第２送信許可要求に基づいて、前記メモリに、前記シミュレーション上で前記第２送信許可要求についての前記送信先ハードウェアの記憶領域に記憶された記憶データを格納することを特徴とする付記１または２に記載のシミュレーション方法。
【０１５２】
（付記４）前記復元する動作をシミュレートする処理は、
前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間と前記第１送信許可要求についての前記送信時間との比率に基づいて選択された一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートすることを特徴とする付記１〜３のいずれか一つに記載のシミュレーション方法。
【０１５３】
（付記５）前記復元する動作をシミュレートする処理は、
前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間と前記第１送信許可要求についての前記送信時間との比率と、前記第１送信許可要求についての前記送信元ハードウェアから前記第１送信許可要求についての前記送信先ハードウェアまでの送信によって生じうる前記第１送信許可要求についての送信されるデータ量の誤差と、に基づいて選択された一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートすることを特徴とする付記１〜３のいずれか一つに記載のシミュレーション方法。
【０１５４】
（付記６）コンピュータによるイベントドリブンのシミュレーション方法であって、
第１記憶領域と、第２記憶領域と、第３記憶領域と、を有するメモリが、
前記第１記憶領域に第１データが記憶されている状態において、前記メモリに対する第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータがシミュレーションすることを特徴とするシミュレーション方法。
【０１５５】
（付記７）前記メモリが、
前記書き込み要求が検出されてから前記所定期間経過した際に、前記第１記憶領域に記憶された前記第２データに基づく第２記憶データを前記第３記憶領域に記憶し、
前記書き込み要求に基づく書き込み処理が完了した旨を出力する、
動作を前記コンピュータがシミュレーションすることを特徴とする付記６に記載のシミュレーション方法。
【０１５６】
（付記８）前記動作（以下、「第１動作」と称する。）のシミュレーションの後に、
前記第１動作によって得られる第１シミュレーション結果が、所定結果であるか否かを判断し、
前記所定結果でないと判断された場合に、前記第２記憶領域を有さず、前記第１記憶領域と、前記第３記憶領域とを有する第２メモリが、
前記第１記憶領域に前記第１データが記憶されている状態において、前記第２メモリに対する前記第２データの書き込み要求を検出すると、
前記第２データを前記第１記憶領域に記憶し、
前記第１記憶領域に記憶された前記第２データに基づく前記第２記憶データを前記第３記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記第２メモリに対する読み出し要求を検出すると、前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
第２動作をシミュレーションし、
前記第２動作によって得られる第２シミュレーション結果が前記所定結果であるか否かを判断し、
前記所定結果である場合、前記読み出し要求の要求元に異常があると判定する、
処理を前記コンピュータが実行することを特徴とする付記６または７に記載のシミュレーション方法。
【０１５７】
（付記９）前記メモリが、
前記第１記憶領域に前記第１データが記憶されている状態において、前記メモリに対する前記第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データに含まれる、前記読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じたデータに基づく第２記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータがさらにシミュレーションすることを特徴とする付記６〜８のいずれか一つに記載のシミュレーション方法。
【０１５８】
（付記１０）前記所定期間は、前記第２データのデータ量に応じた期間であることを特徴とする付記６〜９のいずれか一つに記載のシミュレーション方法。
【０１５９】
（付記１１）ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータに、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求（以下、「第１送信許可要求」と称する。）の優先度が、前記第１送信許可要求よりも後に受け付けられた前記送信許可要求（以下、「第２送信許可要求」と称する。）の優先度よりも低いか否かを判定し、
前記第１送信許可要求の優先度が前記第２送信許可要求の優先度よりも低いと判定された場合、前記第１送信許可要求について前記メモリに格納された前記記憶データのうち、前記第１送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第２送信許可要求についての前記送信データの前記格納時刻から前記第２送信許可要求についての前記送信時間が計時された後、前記第１送信許可要求についての前記送信データを前記第１送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行させることを特徴とするシミュレーションプログラム。
【０１６０】
（付記１２）コンピュータによるイベントドリブンのシミュレーションプログラムであって、
第１記憶領域と、第２記憶領域と、第３記憶領域と、を有するメモリが、
前記第１記憶領域に第１データが記憶されている状態において、前記メモリに対する第２データの書き込み要求を検出すると、
前記第１記憶領域に記憶された前記第１データを前記第２記憶領域に記憶し、
前記第２データを前記第１記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第１記憶領域に記憶された前記第２データと前記第２記憶領域に記憶された前記第１データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第３記憶領域に記憶し、
前記読み出し要求に基づいて、前記第３記憶領域からの読み出し処理を行う、
動作を前記コンピュータにシミュレーションさせることを特徴とするシミュレーションプログラム。
【符号の説明】
【０１６１】
３００  システム
４００  ＤＬＹレジスタ
７００  Ｒｅｑレジスタ
７０１  Ｔｅｍｐ＿Ａ
７０３  Ｔｅｍｐ＿Ｂ
【図１】
2014002712.tif 000003
【図２】
2014002712.tif 000004
【図３】
2014002712.tif 000005
【図４】
2014002712.tif 000006
【図５】
2014002712.tif 000007
【図６】
2014002712.tif 000008
【図７Ａ】
2014002712.tif 000009
【図７Ｂ】
2014002712.tif 000010
【図８】
2014002712.tif 000011
【図９】
2014002712.tif 000012
【図１０】
2014002712.tif 000013
【図１１】
2014002712.tif 000014
【図１２】
2014002712.tif 000015
【図１３】
2014002712.tif 000016
【図１４】
2014002712.tif 000017
【図１５】
2014002712.tif 000018
【図１６】
2014002712.tif 000019
【図１７】
2014002712.tif 000020
【図１８】
2014002712.tif 000021
【図１９】
2014002712.tif 000022