JP5991211B2 - シミュレーション方法、およびシミュレーションプログラム - Google Patents

シミュレーション方法、およびシミュレーションプログラム Download PDF

Info

Publication number
JP5991211B2
JP5991211B2 JP2013009672A JP2013009672A JP5991211B2 JP 5991211 B2 JP5991211 B2 JP 5991211B2 JP 2013009672 A JP2013009672 A JP 2013009672A JP 2013009672 A JP2013009672 A JP 2013009672A JP 5991211 B2 JP5991211 B2 JP 5991211B2
Authority
JP
Japan
Prior art keywords
transmission
data
storage area
request
transmission permission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013009672A
Other languages
English (en)
Other versions
JP2014002712A (ja
Inventor
学 山▲崎▼
学 山▲崎▼
典保 中山
典保 中山
幸治 右田
幸治 右田
一彦 波多江
一彦 波多江
直人 下地
直人 下地
尉央 大友
尉央 大友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013009672A priority Critical patent/JP5991211B2/ja
Priority to US13/898,979 priority patent/US20130317802A1/en
Publication of JP2014002712A publication Critical patent/JP2014002712A/ja
Application granted granted Critical
Publication of JP5991211B2 publication Critical patent/JP5991211B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis

Description

本発明は、シミュレーション方法、およびシミュレーションプログラムに関する。
従来、複数のハードウェアと複数のハードウェアを接続するバスとを有するシステムにおけるハードウェア間のデータの送信について、複数のハードウェアからデータの送信許可要求が同時に発生した場合、優先度順に送信要求の許可が与えられる技術が知られている(たとえば、下記特許文献1参照。)。さらに、優先度の高いハードウェアからの送信要求によってバスが長時間占有されるのを回避するため、タイマーによって送信要求が切り替えられる技術が知られている(たとえば、下記特許文献2参照。)。
また、システム上で動作するファームウェアの動作については、ESL(Electronic System Level)シミュレーションによって検証が行われる。ESLシミュレーションには、たとえば、命令単位で動作が実行されるイベントドリブンのESLシミュレーションと、クロック単位で動作が実行されるクロック精度のESLシミュレーションと、がある。イベントドリブンのESLシミュレーションは、クロック精度のESLシミュレーションよりも高速に検証を行うことができる。
特開平6−60017号公報 特開2002−55945号公報
しかしながら、イベントドリブンのESLシミュレーションではハードウェア間でデータを送受信する動作が実際のハードウェアの動作と異なるため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。具体的には、実際のハードウェアでは、送信元ハードウェアから送信先ハードウェアへの送信データの送信イベントについての送信動作中に、該送信イベントよりも優先度の高い送信イベントが発生した場合、先の送信イベントの送信動作が中断される。
一方、イベントドリブンのESLシミュレーションでは、送信イベントが発生すると、送信元ハードウェアの送信データが直ちに送信先ハードウェアの記憶領域に格納される。そして、イベントドリブンのESLシミュレーションでは、送信データの送信にかかる送信時間をタイマーが計時し、タイマーによって該送信時間が計時された後に該送信イベントが完了する。そのため、イベントドリブンのESLシミュレーションでは、該送信イベントについての送信時間を計時中に該送信イベントよりも優先度の高い送信イベントが発生しても送信動作の中断がシミュレーションされないため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。
1つの側面では、本発明は、上述した従来技術による問題点を解消するため、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができるシミュレーション方法、およびシミュレーションプログラムを提供することを目的とする。
本発明の一側面によれば、ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行する場合に、前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、前記送信許可要求(以下、「第1送信許可要求」と称する。)の優先度が、前記第1送信許可要求よりも後に受け付けられた前記送信許可要求(以下、「第2送信許可要求」と称する。)の優先度よりも低いか否かを判定し、前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、前記復元する動作をシミュレートした場合に、前記第2送信許可要求についての前記送信データの前記格納時刻から前記第2送信許可要求についての前記送信時間が計時された後、前記第1送信許可要求についての前記送信データを前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートするシミュレーション方法、およびシミュレーションプログラムが提案される。
本発明の一態様によれば、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができるという効果を奏する。
図1は、本発明における送信済みのデータ量の推移を示す説明図である。 図2は、シミュレーション装置のハードウェア構成例を示すブロック図である。 図3は、システム例を示す説明図である。 図4は、DLYレジスタの一例を示す説明図である。 図5は、マージンテーブルの一例を示す説明図である。 図6は、実施の形態1にかかるシミュレーション装置の機能的構成を示すブロック図である。 図7Aは、イベント制御の一例を示すシーケンス図(その1)である。 図7Bは、イベント制御の一例を示すシーケンス図(その2)である。 図8は、送信元ハードウェアが行う処理手順の一例を示すフローチャート(その1)である。 図9は、送信元ハードウェアが行う処理手順の一例を示すフローチャート(その2)である。 図10は、バスが行う処理手順の一例を示すフローチャートである。 図11は、ハードウェア動作例を示す説明図である。 図12は、実施の形態2にかかるシミュレーション装置の機能的構成を示すブロック図である。 図13は、第1動作例のタイミングチャートを示す説明図である。 図14は、収集データ例を示す説明図である。 図15は、期待値の作成例を示す説明図である。 図16は、第2動作例を示すタイミングチャートである。 図17は、読み出し要求発生時の各シミュレーション結果と期待値との比較結果例を示す説明図である。 図18は、シミュレーション装置が行う処理手順の一例を示すフローチャートである。 図19は、LMODELにおける動作例を示す説明図である。
以下に添付図面を参照して、本発明にかかるシミュレーション方法、およびシミュレーションプログラムの実施の形態1と実施の形態2を詳細に説明する。
(実施の形態1)
図1は、本発明における送信済みのデータ量の推移を示す説明図である。本発明例におけるイベントドリブンのESLシミュレーション100を説明する前に、理解の容易化のため、実際のハードウェアの動作例102と、従来例におけるイベントドリブンのESLシミュレーション101について説明する。
実際のハードウェアの動作例(以下、「ハードウェアの動作」と称する。)102では、第1送信許可要求についての送信が開始されると、送信データのうち、クロックに併せて所定量のデータが送信される。ハードウェアの動作102では、第1送信許可要求について送信中に第1送信許可要求よりも優先度が高い第2送信許可要求が発生した場合、第1送信許可要求についての送信が中断される。ハードウェアの動作102では、第2送信許可要求についての送信が終了すると、第1送信許可要求についての送信が再開される。
従来例におけるイベントドリブンのESLシミュレーション(以下、省略して「従来例のシミュレーション」と称する。)101では、複数のハードウェアのうちの送信元ハードウェアから送信先ハードウェアへの送信データの第1送信許可要求が発生すると、直ちに送信先ハードウェアの記憶領域に送信データが格納される。従来例のシミュレーション101では、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、システムにおける送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間がタイマーによって計時される。
従来例のシミュレーション101では、第1送信許可要求について計時中に第1送信許可要求よりも優先度が高い第2送信許可要求が発生した場合であっても、第1送信許可要求についての送信済みのデータ量は変わらない。
従来例のシミュレーション101では、ハードウェアの動作102のような中断期間がない。そのため、従来例のシミュレーション101では、ハードウェアの動作102においての中断期間と同一の期間にデータを利用する処理が発生した場合、実際のハードウェアとのデータに不一致が発生する。したがって、イベントドリブンのESLシミュレーションではハードウェア間でデータを送受信する動作が実際のハードウェアの動作と異なるため、イベントドリブンのシミュレーション結果と実際のハードウェアの動作結果とが異なる場合がある。
本発明の一例であるイベントドリブンのESLシミュレーション(以下、省略して「本発明例のシミュレーション」と称する。)100では、複数のハードウェアのうちの送信元ハードウェアから送信先ハードウェアへの送信データの第1送信許可要求が発生すると、送信先ハードウェアの記憶領域に記憶された記憶データがメモリに格納される。ここで、メモリは、シミュレーション上でのハードウェアでなく、たとえば、ESLシミュレーションを実行するシミュレーション装置がアクセス可能なメモリである。本発明例のシミュレーション100では、第1送信許可要求について、送信先ハードウェアの記憶領域に送信データが格納される。本発明例のシミュレーション100では、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、システムにおける送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間がタイマーによって計時される。
本発明例のシミュレーション100では、第1送信許可要求について計時中に第1送信許可要求よりも優先度が高い第2送信許可要求が発生した場合、第1送信許可要求についての送信先ハードウェアの記憶領域の一部が、第1送信許可要求の発生前の状態に戻される。ここでは、メモリに格納された記憶データのうちの実際のハードウェアにおいて送信済みであろうデータを除くデータが復元される。記憶データのうち、実際のハードウェアにおいて送信済みであろうと推測されるデータを除くデータは、格納時刻からの経過時間と送信データの送信にかかる送信時間とに基づいて選択される。そのため、本発明例のシミュレーション100では、第2送信許可要求が発生すると、第1送信許可要求についての送信完了のデータ量が減る。
本発明例のシミュレーション100では、第2送信許可要求についての送信先ハードウェアの記憶領域に記憶された記憶データがメモリに格納される。本発明例のシミュレーション100では、第2送信許可要求について、送信先ハードウェアの記憶領域に送信データが格納される。本発明例のシミュレーション100では、第2送信許可要求について、送信データが送信先ハードウェアの記憶領域に格納された格納時刻から、送信データの送信にかかる送信時間がタイマーによって計時される。該送信時間は、システムにおける送信元ハードウェアから送信先ハードウェアへの送信データの送信にかかる時間である。本発明例のシミュレーション100では、第1送信許可要求についての計時が中断される。
つぎに、本発明例のシミュレーション100では、第2送信許可要求についての計時が終了した後、第1送信許可要求についての送信データが再度第1送信許可要求についての送信先ハードウェアの記憶領域に格納される。本発明例のシミュレーション100では、中断された第1送信許可要求についての計時が再開される。
これにより、本発明例のシミュレーション100では、中断期間を現すことができる。そのため、本発明例のシミュレーション100では、ハードウェアの動作102においての中断期間と同一の期間にデータを利用する処理が発生しても、ハードウェアの動作102とのデータに不一致が発生しない。したがって、本発明例のシミュレーション100では、実際のハードウェアの動作結果により近いシミュレーション結果を得ることができる。
(シミュレーション装置のハードウェア構成例)
図2は、シミュレーション装置のハードウェア構成例を示すブロック図である。図2において、シミュレーション装置200は、CPU(Central Processing Unit)201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、を有する。シミュレーション装置200は、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(InterFace)209と、キーボード210と、マウス211と、を有する。また、各部はバス212によってそれぞれ接続される。
ここで、CPU201は、シミュレーション装置200の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F209は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
(システム例)
図3は、システム例を示す説明図である。本実施の形態において、シミュレーションの対象となるシステム300では、CPU301と、MEM302と、バスマスタA303と、バスマスタB304と、バス305と、を有する。CPU301は、システム300全体を制御する。バスマスタA303、バスマスタB304は、たとえば、CPU301の周辺機器である。MEM302は、CPU301がアクセス可能な記憶領域であり、たとえば、ROM、RAM、磁気ディスク、光ディスクなどである。バス305は、ハードウェア(CPU301、MEM302、バスマスタA303、およびバスマスタB304)間のデータを送信するための経路であり、データの送信を調停する調停回路である。
システム300は、たとえば、ESLの記述言語によってコーディングされることにより、モデル化される。ESLの記述言語としては、たとえば、SystemCが挙げられる。ここで、ESLのモデルとはハードウェアデバイスのビヘイビア(ふるまい)をもとに記述される。ESLシミュレータにESLモデルが与えられると、ESLモデルに記述されたハードウェア環境をシミュレーションすることができる。たとえば、ESLシミュレーション時には、CPU301ではファームウェア(Firm Ware(以下、「FW」と省略する。))311を実行する。
図4は、DLYレジスタの一例を示す説明図である。DLYレジスタ400は、送信元と送信先とに基づいて予め決定された単位送信時間を記憶する。たとえば、DLYレジスタ400は、送信元、送信先、送信オーバーヘッド、および単位送信時間のフィールドを有する。各フィールドに情報が設定されることにより、レコード(たとえば、401−1,401−2)が記憶される。DLYレジスタ400は、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などによって実現される。
送信元のフィールドには、送信元ハードウェアの識別情報が設定される。送信先のフィールドには、送信先ハードウェアの識別情報が設定される。送信オーバーヘッドのフィールドには、送信データ先頭で生じる送信オーバーヘッドの時間が設定される。単位送信時間のフィールドには、送信元ハードウェアから送信先ハードウェアに送信データを送信する場合の単位データ量あたりの送信時間が設定される。
図5は、マージンテーブルの一例を示す説明図である。マージンテーブル500は、送信元、送信先、およびマージンサイズのフィールドを有する。各フィールドに情報が設定されることにより、レコードが記憶される。マージンテーブル500は、ROM202、RAM203、磁気ディスク205、光ディスク207などによって実現される。
送信元のフィールドには、送信元ハードウェアの識別情報が設定される。送信先のフィールドには、送信先ハードウェアの識別情報が設定される。マージンサイズのフィールドには、送信元ハードウェアから送信先ハードウェアへのデータ送信にかかるマージンデータサイズである。マージンデータサイズは、送信元ハードウェアの種類、送信先ハードウェアの種類、バスの幅、バスの種類などによって決定される。ESLシミュレーションと実際のハードウェアの間で動作タイミングに誤差が生じた場合に、ESLシミュレーションでは問題なく動作したFWがハードウェアでは動作しないといった事象が発生してしまう。このような事象を回避するために、ESLシミュレーションとハードウェアの動作差分をマージンとして設定する。
(実施の形態1にかかるシミュレーション装置200の機能的構成例)
図6は、実施の形態1にかかるシミュレーション装置の機能的構成を示すブロック図である。シミュレーション装置200は、シミュレート部601と、格納部602と、計時部603と、判定部604と、を有する。シミュレート部601から判定部604の各機能がコーディングされたシミュレーションプログラムが、具体的には、たとえば、図2に示したROM202、磁気ディスク205、光ディスク207などの記憶装置に記憶される。具体的には、シミュレーションプログラムは、システム300を示す情報である。ESLシミュレータを実行可能なCPU201が、該記憶装置からシミュレーションプログラムを読み出し、ESLシミュレータにシミュレーションプログラムを与えることにより、シミュレーションプログラムにコーディングされた機能が実現される。より具体的には、たとえば、CPU201が、シミュレーションプログラムとFW311を併せてESLシミュレータに与える。
シミュレート部601は、ハードウェア群のうちのいずれかの送信元ハードウェアからハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求をバス305が受け付ける動作をシミュレートする。送信許可要求には、送信元ハードウェアの識別情報と、送信先ハードウェアの識別情報と、送信データの送信元ハードウェアにおける開始アドレスと、送信データのデータサイズと、優先度と、が含まれる。具体的には、シミュレート部601は、送信許可要求に基づいて、システム300において送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間(以下、「BUS占有時間」と称する。)TBusNeedを算出する。具体的には、シミュレート部601は、DLYレジスタ400から、送信許可要求に含まれる送信元ハードウェアと送信先ハードウェアに基づいて送信オーバーヘッドと単位送信時間を取得する。シミュレート部601は、下記式(1)に基づいて、BUS占有時間TBusNeedを算出する。
BUS占有時間TBusNeed=送信オーバーヘッド+単位送信時間×データサイズ・・・(1)
格納部602は、受け付ける動作のシミュレート後に、送信許可要求に基づいて、メモリに、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを格納する。メモリは、RAM203、磁気ディスク205、光ディスク207などが挙げられる。
シミュレート部601は、格納部602によって記憶データをメモリに格納後に、送信許可要求に基づいて、送信データを送信先ハードウェアの記憶領域へ格納する動作をシミュレートする。
計時部603は、格納する動作をシミュレートした格納時刻から、システム300において送信データの送信元ハードウェアから送信先ハードウェアへの送信にかかる送信時間を計時する。
判定部604は、第1送信許可要求の優先度が、第1送信許可要求よりも後に受け付けられた第2送信許可要求の優先度よりも低いか否かを判定する。
第1送信許可要求の優先度が第2送信許可要求の優先度よりも低いと判定された場合、シミュレート部601は、第1送信許可要求についての送信先ハードウェアの記憶領域の一部の内容を第1送信許可要求の発生前に復元する動作をシミュレーションする。具体的には、シミュレート部601は、第1送信許可要求についてメモリに格納された記憶データのうちの一部のデータを、第1送信許可要求についての送信先ハードウェアの記憶領域へ復元する動作をシミュレートする。一部のデータは、第1送信許可要求についての送信データの格納時刻からの経過時間に基づいて決定される。より具体的には、シミュレート部601は、第1送信許可要求についての送信データの格納時刻からの経過時間に基づいて、復元データサイズと、復元開始アドレスと、を特定する。
復元データサイズ=(1−(経過時間−送信オーバーヘッド)/(BUS占有時間TBusNeed−送信オーバーヘッド))×データサイズ+マージンデータサイズ・・・(2)
復元開始アドレス=開始アドレス+(((経過時間−送信オーバーヘッド)/(BUS占有時間TBusNeed−送信オーバーヘッド))×データサイズ−マージンデータサイズ)・・・(3)
シミュレート部601は、復元する動作をシミュレートした場合に、第2送信許可要求についての計時が終了した後に、第1送信許可要求についての送信データを第1送信許可要求についての送信先ハードウェアの記憶領域へ格納する動作をシミュレートする。第2送信許可要求についての計時が終了した後とは、第2送信許可要求についての送信データの格納時刻から第2送信許可要求についての送信時間が計時された後である。
また、第1送信許可要求の優先度が第2送信許可要求の優先度よりも低いと判定された場合、計時部603は、第1送信許可要求についての計時に第2送信許可要求についての計時の時間を追加する。計時部603は、第1送信許可要求についての送信時間から第1送信許可要求についての経過時間を除いた時間と、第2送信許可要求についての送信時間と、を併せた時間を算出する。計時部603は、第1送信許可要求についての送信データの格納時刻から第1送信許可要求についての経過時間までの時刻から該併せた時間を計時する。より具体的には、計時部603は、第1送信許可要求の優先度が第2送信許可要求の優先度よりも低いと判定部604によって判定された場合、第1送信許可要求についての送信データの格納時刻から第1送信許可要求についての送信時間の計時を中断する。つぎに、計時部603は、復元する動作をシミュレート後に、第2送信許可要求についての送信データの格納時刻から第2送信許可要求についての送信時間が計時部603によって計時された後に、中断された計時を再開する。
また、第1送信許可要求の優先度が第2送信許可要求の優先度よりも低くないと判定部604によって判定された場合、シミュレート部601は、第1送信許可要求についての計時が終了した後に、第2送信許可要求についての送信を行うシミュレーションを行う。第1送信許可要求についての計時が終了した後とは、第1送信許可要求についての送信データの格納時刻から第1送信許可要求についての送信時間が計時された後である。具体的には、シミュレート部601は、第2送信許可要求に基づいて、メモリに、シミュレーション上で第2送信許可要求についての送信先ハードウェアの記憶領域に記憶された記憶データを格納する。つぎに、詳細なシミュレーション例については、図7Aおよび図7Bのシーケンス図を用いて説明する。
(シーケンス図)
図7Aおよび図7Bは、イベント制御の一例を示すシーケンス図である。図7Aおよび図7Bでは、ESLシミュレーション上でのバス305、バスマスタA303、バスマスタB304についての処理を示すが、単にバス305、バスマスタA303、バスマスタB304と記載する。図7Aでは、前述の式(1)〜(3)にあるマージンデータサイズを考慮しない場合のシーケンスを示し、図7Bではマージンデータサイズを考慮した場合のシーケンスを示す。まず、図7Aの説明を行った後に、図7Bについて説明する。
図7Aでは、バス305は、前処理として、DLYレジスタ400を読み込む。バスマスタA303は、(1)リクエスト登録依頼をバス305へ通知する(ステップS701)。リクエスト登録依頼には、送信元ハードウェアの識別情報、送信先ハードウェアの識別情報、開始アドレス、データサイズ、および優先度が含まれる。
バス305は、バスマスタA303からのリクエスト登録依頼を受け付けると、BUS占有時間TBusNeedを計算する。具体的には、バス305は、DLYレジスタ400から送信元ハードウェアと送信先ハードウェアに基づいて送信オーバーヘッドと単位送信時間を取得する。バス305は、式(1)に基づいて、BUS占有時間TBusNeedを算出する。
図7Aの例では、BUS占有時間TBusNeedが「41110」である。そして、バス305は、リクエスト登録依頼と、算出したBUS占有時間TBusNeedと、を関連付けてReqレジスタ700にリクエストを登録する。Reqレジスタ700は、キューの構造になっており、入力されたリクエストの順にリクエストの処理対象となる。ここでは、他のリクエストが登録されていないため、バスマスタA303からのリクエストがReqレジスタ700の先頭に登録される。具体的には、リクエストID、優先度、送信元、送信先、開始アドレス、データサイズ、およびBUS占有時間TBusNeedの情報が1レコードとして、Reqレジスタ700に登録される。
バス305は、(2)発行イベント開始をバスマスタA303へ通知する(ステップS702)。バスマスタA303は、バス305からの発行イベント開始を受け付けると、現在時刻を開始時刻として取得し、記憶データTBegin_A704として記憶する。バスマスタA303は、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを複製することにより、該記憶データをバックアップする。バックアップデータは、たとえば、記憶データTemp_A701として記憶する。バスマスタA303は、送信先ハードウェアの記憶領域にデータを格納することにより、送信先ハードウェアにデータを送信する。そして、バスマスタA303は、バス305からの完了イベントを待つ。バス305は、リクエストに対するタイマーを開始する。
バスマスタB304は、(3)リクエスト登録依頼をバス305へ通知する(ステップS703)。バス305は、BUS占有時間TBusNeedを計算する。Reqレジスタ700にリクエストが登録済みであるため、バス305は、Reqレジスタ700に登録されているリクエストの優先度と、あらたに受け付けたリクエストの優先度と、を比較する。ここでは、あらたに受け付けたリクエストの優先度がReqレジスタ700に登録されているリクエストの優先度よりも高いため、リクエストの実行順序が変更される。
そのため、バス305は、現在時刻と、Reqレジスタ700に登録された送信元ハードウェアからリクエストの開始時刻である記憶データTBegin_A704と、を取得する。バス305は、現在時刻と取得した開始時刻704との差分値をリクエストの経過時間TBusUsedとして取得する。バス305は、マージンテーブル500から、送信元ハードウェアと送信先ハードウェアに基づいてマージンデータサイズを取得する。バス305は、経過時間TBusUsedとマージンデータサイズに基づいて、復元情報を生成する。復元情報は、復元データサイズと、復元開始アドレスと、を有する。バス305は、復元データサイズを上記式(2)に基づいて生成し、復元開始アドレスを上記式(3)に基づいて生成する。バス305は、再開後のBUS占有時間TBusNeedを下記式(4)に基づいて生成する。バス305は、生成した復元情報を復元情報レジスタに格納する。
再開後のBUS占有時間TBusNeed=送信オーバーヘッド+単位送信時間×復元データサイズ・・・(4)
つぎに、バス305は、(4)Reqレジスタ700に登録されているリクエストの送信元ハードウェアであるバスマスタA303へ完了イベントキャンセルを通知する(ステップS704)。完了イベントキャンセルには、復元情報が付される。
バスマスタA303は、完了イベントキャンセルを受け付けると、復元開始アドレスと復元データサイズに基づいて、記憶データTemp_A701の一部を送信先ハードウェアの記憶領域に復元する。そして、バスマスタA303は発行イベントを待つ。
バス305は、Reqレジスタ700のリクエスト登録順を優先度の順に変更する。ここで、本実施の形態では、優先度は、1、2、3などの正の整数で表し、数が小さいほど優先度が高い。優先度については、これに限らず、種々変更可能である。
バス305は、(5)Reqレジスタ700の先頭のリクエストB1についての送信元ハードウェアであるバスマスタB304へ発行イベント開始を通知する(ステップS705)。
バスマスタB304は、発行イベント開始を受け付けると、現在時刻をリクエストB1の開始時刻として取得し、記憶データTBegin_B705として記憶する。バスマスタB304は、シミュレーション上で送信先ハードウェアの記憶領域に記憶された記憶データを複製することにより、記憶データをバックアップする。バックアップデータは、たとえば、Temp_B703として記憶する。そして、バスマスタB304は、送信先ハードウェアの記憶領域に送信データを格納する。バスマスタB304は、完了イベントを待つ。バス305は、リクエストB1に対するタイマーを開始する。
バス305は、(6)リクエストB1に対するタイマーが終了すると、バスマスタB304へ完了イベント開始を通知する(ステップS706)。バスマスタB304は、完了イベント開始を受け付けると、リクエストB1が終了したと判断し、Reqレジスタ700からリクエストB1を削除する。
つぎに、バスマスタB304は、Reqレジスタ700からつぎのリクエストA1を取得する。バスマスタB304は、(7)リクエストA1の送信元であるバスマスタA303へ発行イベント開始を通知する(ステップS707)。バスマスタA303は、発行イベント開始を受け付けると、現在時刻を開始時刻として取得し、記憶データTBegin_A704として記憶する。バスマスタA303は、送信先ハードウェアの記憶領域のデータを複製することにより、送信先ハードウェアのデータをバックアップする。バックアップデータは、たとえば、記憶データTemp_A701として記憶する。そして、バスマスタA303は、送信先ハードウェアの記憶領域に送信データを格納する。バスマスタA303は、完了イベントを待つ。バスマスタB304は、リクエストA1に対するタイマーを開始する。
バスマスタB304は、リクエストA1に対するタイマーを開始すると、後処理を実行し、レスポンス送信を行う。バスマスタB304は、(8)リクエストA1に対するタイマーが終了すると、完了イベント開始をリクエストA1の送信元であるバスマスタA303へ通知する(ステップS708)。バスマスタA303は、完了イベント開始を受け付けると、リクエストA1をReqレジスタ700から削除する。バスマスタA303は、Reqレジスタ700からつぎのリクエストを取得するが、Reqレジスタ700は空である。そのため、バスマスタA303は、後処理を行い、レスポンスを送信して終了する。
つぎに、図7Bについて説明する。上述したように、図7Bではマージンデータサイズを考慮した場合のシーケンスを示す。図7Bで説明する処理と、図7Aで説明した処理との違いは、復元情報の生成においてマージンデータサイズがあるか否かである。ここでは、復元情報の生成について詳細に説明するとともに、各情報として設定された値において、図7Aと図7Bとの相違を説明する。
バス305は、経過時間TBusUsedとマージンデータサイズに基づいて、復元情報を生成する。復元情報は、復元開始アドレスと、復元データサイズと、を有する。バス305は、復元データサイズを上記式(2)に基づいて生成し、復元開始アドレスを上記式(3)に基づいて生成する。復元開始アドレスは以下のようになる。
復元開始アドレス=0x000+((10390−150)/(41110−150))*0x1000−20
=0x03EC
復元開始アドレスは、図7Aでは0x0400であるが、図7Bでは0x03ECである。復元データサイズは以下のようになる。
復元データサイズ=(1−(10390−150))/(41110−150))*0x1000+20
=0x0C14
復元データサイズは、図7Aでは「0x0C00」であるが、図7Bでは「0x0C14」である。バス305は、再開後BUS占有時間TBusNeedを上記式(4)に基づいて生成する。再開後BUS占有時間TBusNeedは以下のようになる。
再開後BUS占有時間TBusNeed=150+0x0C00*10
=31070
再開後BUS占有時間TBusNeedは、図7Aでは「30870」であるが、図7Bでは「31070」である。そして、バス305は、生成した復元情報を復元情報レジスタに格納する。
また、(4)〜(7)についても図7Aに示す処理と図7Bに示す処理は同様であるが、(7)の後に、バスマスタA303が、送信先ハードウェアのデータをバックアップするが、バックアップデータが、図7Aと図7Bとでは異なる。(1)の後に示す記憶データTemp_A701に新たに登録されるのは、図7Aでは0x0BFFまでであるが、図7Bでは0x0C07である。
(送信元ハードウェアが行う処理手順例)
図8および図9は、送信元ハードウェアが行う処理手順の一例を示すフローチャートである。ここでの送信元ハードウェアが行う処理手順とは、シミュレーション上で送信元ハードウェアが行う処理手順であって、実際のハードウェアが行う処理手順とは異なる。図8および図9に記載の「(番号)」はそれぞれ図7Aおよび図7Bに記載の「(番号)」に対応する。
送信元ハードウェアは、リクエスト登録依頼をバス305へ通知し(ステップS801)、前処理を行う(ステップS802)。送信元ハードウェアは、リクエスト登録依頼に対する発行イベントを受け付けたか否かを判断する(ステップS803)。
発行イベントを受け付けていない場合(ステップS803:No)、ステップS803へ戻る。これにより、送信元ハードウェアは、リクエスト登録依頼に対する発行イベントを待つ(wait(ev_A1))。
発行イベントを受け付けた場合(ステップS803:Yes)、送信元ハードウェアは、現在時刻を開始時刻TBegin_A704として取得する(ステップS804)。送信元ハードウェアは、送信先ハードウェアの記憶領域に記憶されたデータをバックアップし、記憶データTemp_A701として記憶する(ステップS805)。送信元ハードウェアは、データを送信する(ステップS806)。イベントドリブンのESLシミュレーションのデータ送信では、シミュレーション上で送信先ハードウェアの記憶領域が直接書き換えられる。
送信元ハードウェアは、リクエスト登録依頼に対する完了イベントを受け付けたか否かを判断する(ステップS807)。完了イベントを受け付けていない場合(ステップS807:No)、ステップS807に戻る。これにより、送信元ハードウェアは、リクエスト登録依頼に対する完了イベントを待つ(wait(ev_A2))。
完了イベントキャンセルを受け付けた場合(ステップS807:キャンセル)、送信元ハードウェアは、復元情報を取得し(ステップS808)、送信先ハードウェアのデータを復元し(ステップS809)、ステップS803へ戻る。
完了イベントを受け付けた場合(ステップS807:開始)、送信元ハードウェアは、実行中リクエストをReqレジスタ700から削除し(ステップS901)、Reqレジスタ700からつぎのリクエストを取得する(ステップS902)。送信元ハードウェアは、Reqレジスタ700に残リクエストがあるか否かを判断する(ステップS903)。Reqレジスタ700に残リクエストがない場合(ステップS903:No)、ステップS907へ移行する。
Reqレジスタ700に残リクエストがある場合(ステップS903:Yes)、送信元ハードウェアは、Reqレジスタ700の先頭のリクエストの送信元ハードウェアに発行イベント開始を通知する(ステップS904)。送信元ハードウェアは、発行イベント開始を通知したリクエストのタイマー情報を取得し(ステップS905)、リクエストの送信元ハードウェアに完了イベント開始を通知する(ステップS906)。送信元ハードウェアは、後処理を行い(ステップS907)、レスポンスを送信し(ステップS908)、一連の処理を終了する。ここで、完了イベント開始をステップS907,ステップS908の前に通知しているが、完了イベントの開始は、発行イベント開始の時刻からBUS占有時間TBusNeed経過後であるため、ステップS907,ステップS908の後に実行される。ここでは、送信元ハードウェアが、残リクエストについての発行イベント開始と完了イベント開始を残リクエストについての送信元ハードウェアへ通知する。これにより、複数のハードウェアからのイベントについての処理を行う負荷の大きいバスに代わって、他のハードウェアが処理を行うことができる。したがって、シミュレーション上でバスの負荷を低減させることができるため、シミュレーションにかかる時間を低減させることができる。
図10は、バスが行う処理手順の一例を示すフローチャートである。ここでのバス305が行う処理手順とは、シミュレーション上でバス305が行う処理手順であって、実際のバス305が行う処理手順とは異なる。図10に記載の「(番号)」はそれぞれ図7Aおよび図7Bに記載の「(番号)」に対応する。
バス305は、リクエスト登録依頼を受け付けると、DLYレジスタ400から送信先ハードウェアと送信元ハードウェアとに基づいて単位送信時間を取得し、BUS占有時間TBusNeedを計算する(ステップS1001)。バス305は、Reqレジスタ700のリクエスト登録数がいくつであるかを判断する(ステップS1002)。BUS占有時間TBusNeedは、上記式(1)を用いて算出される。
リクエスト登録数が0でない場合(ステップS1002:0以外)、バス305は、Reqレジスタ700に登録された各リクエストの優先度と、受け付けたリクエストの優先度と、を比較することにより、リクエスト優先順に調整を行うか否かを判断する(ステップS1003)。調整を行う場合(ステップS1003:Yes)、バス305は、リクエストの開始時刻と、現在の時刻と、の差分に基づく経過時間TBusUsedを取得する(ステップS1004)。バス305は、復元情報を生成し(ステップS1005)、実行中のリクエストの送信元ハードウェアに完了イベントキャンセルを通知する(ステップS1006)。復元情報は、上記式(2)〜(4)を用いて生成される。バス305は、受け付けたリクエストをReqレジスタ700の先頭に入れ、リクエスト登録順を変更する(ステップS1007)。
ステップS1002において、リクエスト登録数が0の場合(ステップS1002:=0)、バス305は、受け付けたリクエストをReqレジスタ700の先頭に登録する(ステップS1008)。ステップS1007またはステップS1008のつぎに、バス305は、Reqレジスタ700の先頭のリクエストの送信元ハードウェアに発行イベント開始を通知する(ステップS1009)。
そして、バス305は、タイマー情報を取得し(ステップS1010)、完了イベント開始を通知し(ステップS1011)、一連の処理を終了する。ステップS1011では、完了イベント開始を通知する処理を発行するが、実際には、該リクエストに発行イベント開始を通知した時刻からBUS占有時間TBusNeed経過後の時刻に完了イベント開始がリクエストの送信元ハードウェアに通知される。
ステップS1003において、調整を行わない場合(ステップS1003:No)、受け付けたリクエストを優先度に沿ってリクエスト登録し(ステップS1012)、一連の処理を終了する。
以上説明したように、本実施の形態1のシミュレーションでは、第1送信許可要求の後に優先度の高い第2送信許可要求が発生する場合、シミュレーション上で第1送信許可要求についての送信先の記憶領域の一部が第1送信許可要求の発生前の状態に戻される。これにより、第2送信許可要求による第1送信許可要求についてのデータ送信の中断を現すことができる。さらに、本実施の形態1のシミュレーションでは、第2送信許可要求が終了後に、第1送信許可要求についての送信先の記憶領域に第1送信許可要求についての送信データが格納される。これにより、第2送信許可要求が終了後の第1送信許可要求についてのデータ送信の再開を現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、本実施の形態1のシミュレーションでは、第1送信許可要求についての計時が第2送信許可要求についての送信時間延長される。これにより、第2送信許可要求によって第1送信許可要求についてのデータ送信の終了が遅れることを現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、本実施の形態1のシミュレーションでは、第1送信許可要求の優先度が第2送信許可要求の優先度よりも低くない場合、第1送信許可要求についての計時の終了後に、第2送信許可要求についての送信が行われる。これにより、バスの調停機能をシミュレーションすることができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、本実施の形態1のシミュレーションでは、第1送信許可要求についての記憶データのうち、第1送信許可要求についての送信データの格納時刻からの経過時間と第1送信許可要求についての送信時間との比率に基づいて選択された一部のデータが復元される。これにより、第2送信許可要求による第1送信許可要求についてのデータ送信の中断時に送信されたデータ量をより詳細に現すことができる。したがって、実際のハードウェアの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。さらに、本実施の形態1のシミュレーションでは、該比率を、送信元ハードウェアの種類、送信先ハードウェアの種類、バスの幅、バスの種類などによって決定されたマージンデータサイズによって補正してもよい。
(実施の形態2)
実施の形態2では、メモリの動作についてのイベントドリブンのシミュレーションを行う。従来では、実際のハードウェアでの動作において、書き込み要求に対応する書き込み処理を行っている最中に、読み出し処理が発生すると、書き込み途中であるため、書き込み前のデータと書き込み後のデータとが混在したデータが読み出される。しかしながら、イベントドリブンのESLシミュレーションでは、イベントの発生時にのみデータが変化するため、実際のハードウェアと異なるタイミングでメモリが書き込まれる。そのため、書き込み処理期間内に読み出し要求があると、実際のハードウェアと異なるデータが読み出される。
そこで、本実施の形態2の第1動作のシミュレーションでは、第1データが第1記憶領域に記憶されている状態において、第2データの書き込み要求があると、第1データを第2記憶領域に記憶させ、第2データを第1記憶領域に記憶させる。そして、第1動作のシミュレーションでは、書き込み要求が検出されてから所定期間内に読み出し要求があると、第1データと第2データとを含む読み出し要求のタイミングに応じた収集データに基づく記憶データを第3記憶領域に格納する。したがって、書き込み処理期間内に読み出し要求があっても、実際のハードウェアと同一のデータが読み出される。
これにより、実際のハードウェアであるメモリの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。ここで、メモリに対する書き込み要求については、メモリにアクセス可能なハードウェアから発生し、メモリに対する読み出し要求については、メモリにアクセス可能なハードウェアまたはソフトウェアのいずれかから発生する。ここでのハードウェアやソフトウェアについては特に限定しないため、メモリを含むシステムなどの詳細例については省略する。
まず、実施の形態2の詳細な説明の前に、理解の容易化のために、実際のハードウェア動作について簡単に説明する。
図11は、ハードウェア動作例を示す説明図である。タイミングチャート1100は、実際のハードウェアであるメモリmemに対する書き込み要求と、書き込み処理中に発生した読み出し要求と、における各状態を示す。
メモリmemは、current_memoryと、result_memoryと、を有する。current_memoryは、FIFO型のバッファであり、current_memoryには、メモリmemが受信した書き込みデータが順次記憶される。result_memoryは、実際の複数のメモリ素子などによって形成される記憶領域であり、result_memoryには、current_memoryに記憶されたデータに基づくデータが記憶される。current_memoryに記憶されたデータに基づくデータは、current_memoryに記憶されたデータそのものであってもよいし、current_memoryに記憶されたデータが、符号化や暗号化されたデータであってもよい。
たとえば、時刻t0では、current_memoryには、第1データであるD0[n−1:0]が記憶され、result_memoryには、第1データに基づくデータであるR0[n−1:0]が記憶される。nは1以上の整数である。そして、時刻t0においてハードウェアへの書き込みデータの転送が開始されると、current_memoryに順次データが格納される。
時刻t1では、current_memoryにはD0[n−1:1]とD1[0]とが記憶される。そして、時刻t1では、時刻t0におけるcurrent_memoryに記憶されたデータに基づくデータがresult_memoryに記憶される。
たとえば、時刻ti+1では、読み出し要求が検出されると、メモリmemがresult_memoryからR’0[n−1:0]を読み出す処理を行い、読み出されたR’0[n−1:0]に基づくデータを読み出し要求元に返す。
そして、時刻tn+1では、current_memoryに記憶されたD1[n−1:0]に基づく記憶データであるR1[n−1:0]がresult_memoryに記憶される。そして、メモリmemは、書き込み要求に対応する書き込み処理が終了したと判断し、割り込みを発生させる。より具体的には、メモリmemが、interrupt信号を0から1にする。このinterrupt信号の発生によって、つぎの書き込み要求や読み出し要求を受け付け可能であることを示す。
つぎに、実施の形態2にかかるシミュレーション装置について詳細に説明する。実施の形態2にかかるハードウェア構成については、たとえば、実施の形態1で説明したハードウェア構成と同様であってよいため、説明を省略する。
(実施の形態2にかかるシミュレーション装置の機能的構成例)
図12は、実施の形態2にかかるシミュレーション装置の機能的構成を示すブロック図である。シミュレーション装置1200は、第1動作部1201と、第1判断部1202と、第2動作部1203と、第2判断部1204と、判定部1205と、を含む。第1動作部1201から判定部1205の各機能がコーディングされたシミュレーションプログラムが、具体的には、たとえば、図2に示したROM202、磁気ディスク205、光ディスク207などの記憶装置に記憶される。ESLシミュレータを実行可能なCPU201が、該記憶装置からシミュレーションプログラムを読み出し、シミュレーションプログラムにコーディングされた処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、たとえば、RAM203、磁気ディスク205、光ディスク207などの記憶装置に記憶される。
第1記憶領域と、第2記憶領域と、第3記憶領域とを有するメモリmemを示すメモリモデルと、他のハードウェアやソフトウェアやFWを実行可能なCPUなどを示すハードウェアモデルと、を含むシステムを示すモデル1210が記憶装置に記憶される。記憶装置としては、たとえば、ROM202、磁気ディスク205、光ディスク207などが挙げられる。第1記憶領域はcurrent_memoryであり、第2記憶領域はprevious_memoryであり、第3記憶領域はresult_memoryである。第1記憶領域と、第2記憶領域と、第3記憶領域とを有するメモリmemを示すメモリモデルの記述方法をAMODELと称する。第1動作部1201は、m(1以上の整数)個のTP(Test Pattern)1230のうちのいずれかのTPとモデル1210とによるメモリmemの第1動作をイベントドリブンによってESLシミュレーションする。TPとは、ハードウェアやソフトウェアが要求仕様にしたがって動作することを検証するためにこれらに入力し、得られた出力を観測するためのデータである。検証の対象となるハードウェアの動作仕様に応じて適切なTPが決められるが、異なった性質の仕様検証のためには各々の性質に適したTPが複数用意される。ここでは、TP1230がm通りある。TP1230は、予めROM202、磁気ディスク205、光ディスク207などの記憶装置に記憶される。
また、第1記憶領域と第3記憶領域とを有するメモリmemを示すメモリモデルと、他のハードウェア、ソフトウェアやFWを実行可能なCPUなどを示すハードウェアモデルと、を含むシステムを示すモデル1211が記憶装置に記憶される。記憶装置としては、たとえば、ROM202、磁気ディスク205、光ディスク207などが挙げられる。第1記憶領域はcurrent_memoryであり、第3記憶領域はresult_memoryである。第1記憶領域と第3記憶領域とを有するメモリmemを示すメモリモデルの記述方法をFMODELと称する。第2動作部1203は、m個のTP1230のうちのいずれかのTPとモデル1211とによるメモリmemの第2動作をイベントドリブンによってESLシミュレーションする。
モデル1210とモデル1211は、たとえば、所望のシステムがESLの記述言語によってコーディングされることにより、モデル化されることによって得られる。上述したように、ESLのモデルは、ハードウェアデバイスのビヘイビアをもとに記述される。ESLシミュレータにESLのモデルが与えられると、ESLのモデルに記述されたハードウェア環境をシミュレーションすることができる。たとえば、ESLシミュレーションの対象となるシステムにCPUが含まれている場合、ESLシミュレーション時には、そのCPUがソフトウェアやFWを実行する。つぎに、各部の詳細について説明する。
図13は、第1動作例のタイミングチャートを示す説明図である。タイミングチャート1300は、メモリmemに対する書き込み要求と、書き込み処理中に発生したメモリmemに対する読み出し要求と、についてのメモリmemの第1動作のイベントドリブンのシミュレーションにおける各状態を示す。
図13に示すように、Clock信号の代わりに、書き込み処理におけるデータを受信中であることを示すvalidと、所定期間である受信中の期間をカウントするcounterと、がある。たとえば、図13の例では、counterは、0から(n−1)(nは1以上の整数)までをカウントする。validと、counterとは、所定期間内に読み出しされない場合には不要である。たとえば、ソフトウェアやFWが正常動作であれば、interrupt信号に基づいて読み出し要求を発生するため、メモリmemが書き込み処理中に読み出し要求は発生しない。一方、ソフトウェアやFWに動作不良が発生すると、メモリmemが書き込み処理中であってもソフトウェアやFWから読み出し要求が発生する可能性がある。ソフトウェアやFWに限らず他のハードウェアからの読み出し要求も同様に動作不良が発生すると、不適切なタイミングで読み出し要求が発生する可能性がある。
まず、時刻t0では、current_memoryには第1データであるD0[n−1:0]が記憶されている状態である。つぎに、この状態において、第1動作部1201は、メモリmemが、メモリmemに対する第2データであるD1[n−1:0]の書き込み要求を検出する(ステップS1301)。そして、第1動作部1201は、メモリmemが、書き込み要求の検出により、時刻t1において、current_memoryに記憶されたD0[n−1:0]をprevious_memoryに記憶する動作をシミュレーションする(ステップS1302)。これにより、時刻t1では、previous_memoryにD0[n−1:0]が記憶される。
つぎに、第1動作部1201は、メモリmemが、D1[n−1:0]をcurrent_memoryに記憶する動作をシミュレーションする(ステップS1303)。これにより、時刻t1では、current_memoryにD1[n−1:0]が記憶される。
そして、第1動作部1201は、メモリmemが、書き込み要求が検出されてから所定期間内に、メモリmemに対する読み出し要求を検出する(ステップS1304)。第1動作部1201は、メモリmemが、読み出し要求の検出により、読み出し要求が検出されたタイミングに応じたデータに基づく記憶データをresult_memoryに記憶する動作をシミュレーションする(ステップS1305)。ここでは、読み出し要求が検出されたタイミングに応じたデータを収集データと称する。収集データは、current_memoryに記憶されたD1[n−1:0]とprevious_memoryに記憶されたD0[n−1:0]とに含まれるデータである。
具体的には、たとえば、counterの値が(i+1)である。そのため、収集データは、current_memory内のD1[n−1:0]のうちのD1[i:0]と、previous_memory内のD0[n−1:0]のうちのD1[n−1:i+1]と、である。収集データに基づく記憶データは、たとえば、収集データであったり、収集データを符号化や暗号化のような何らかの演算が行われたデータであってもよい。
第1動作部1201は、読み出し要求に基づいて、result_memoryからの読み出し処理を行う動作をシミュレーションする(ステップS1306)。たとえば、読み出し処理は、result_memoryに記憶されたデータを読み出して、読み出し要求の要求元へデータをそのまま送信したり、記憶されたデータが符号化や暗号化されている場合に、復号して送信してもよい。
つぎに、第1動作部1201は、メモリmemが、書き込み要求が検出されてから所定期間経過した際に、current_memoryに記憶されたデータに基づく第2記憶データをresult_memoryに記憶する動作をシミュレーションする(ステップS1307)。current_memoryに記憶されたデータは、D1[n−1:0]であり、D1[n−1:0]に基づく第2記憶データは、R1[n−1:0]である。
そして、第1動作部1201は、書き込み要求が完了した旨を出力する動作をシミュレーションする(ステップS1308)。具体的には、実際のハードウェアの動作と同様に、第1動作部1201は、メモリmemが割り込みを出力する動作をシミュレーションする。より具体的には、第1動作部1201は、メモリmemが、interruput信号を0から1に変化させる動作をシミュレーションする。
これにより、実際のメモリmemの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、実際のハードウェアによるクロック動作の変化タイミングと、ESLシミュレーション時のcounterによるカウント値での動作の変化タイミングと、が一致しない可能性がある。そのため、図13に示すタイミングに応じた収集データに基づく記憶データと、実際のハードウェアにおける記憶データとが、タイミングの不一致により異なる可能性がある。
そこで、たとえば、第1動作部1201は、上述と同様に、ステップS1301〜ステップS1304までの動作をシミュレーションする。第1動作部1201は、読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じた収集データに基づく記憶データを第3記憶領域に記憶する動作をシミュレーションする。この収集データは、メモリmemが、current_memoryに記憶されたD1[n−1:0]とresult_memoryに記憶されたD0[n−1:0]と、に含まれるデータである。所定時間は、たとえば、図13に示すように、1サイクルであってもよいし、1以上のサイクルであってもよい。所定時間については、ROM202、磁気ディスク205、光ディスク207などの記憶装置に記憶される。上述した時刻ti+1におけるresult_memoryに記憶させる記憶データの生成に用いるデータを図14に示すようにしてもよい。
図14は、収集データ例を示す説明図である。No.2に示す収集データは、上述したD1[i:0]とD0[n−1:i+1]とである。No.1に示す収集データは、No.2に示す収集データ時のタイミングTよりも1サイクル分程度早いずれを想定したデータである。No.1に示す収集データは、D1[i−1:0]とD0[n−1:i]とである。No.3に示す収集データは、No.2に示す収集データ時のタイミングTよりも1サイクル分程度遅いずれを想定したデータである。No.3に示す収集データは、D1[i+1:0]とD0[n−1:i+2]とである。
このようにタイミングのずれを考慮して収集データを生成する動作のシミュレーションについては、たとえば実際のハードウェアにおいて不具合が発生した際に行う不具合の検証に有用であるが、特に限定しない。
また、第1判断部1202は、第1動作部1201による第1動作のシミュレーションの後に、第1動作によって得られる第1シミュレーション結果が、所定結果であるか否かを判断する。たとえば、所定結果は期待値であり、第1判断部1202は、第1シミュレーション結果と期待値1220とを比較することによって、第1シミュレーション結果と期待値1220とが一致するか否かを判断する。
図15は、期待値の作成例を示す説明図である。期待値1220は、ESLシミュレーションの対象となるモデル1210やモデル1211よりも抽象度の高い動作モデルの動作結果であってもよい。たとえば、本実施の形態2におけるモデル1210やモデル1211が、ハードウェア記述言語で記述されているとすると、抽象度の高い動作モデルは、C言語などで記述される。
第1動作部1201は、所定結果であると判断された場合に、あらたなテストパターンとモデルによるメモリmemの第1動作をイベントドリブンによってESLシミュレーションする。
そして、第2動作部1203は、所定結果でないと判断された場合に、第1動作部1201で利用されたテストパターンとモデルによるメモリmemの第2動作をイベントドリブンによってESLシミュレーションする。
図16は、第2動作例を示すタイミングチャートである。タイミングチャート1600は、メモリmemに対する書き込み要求と、書き込み処理中に発生したメモリmemに対する読み出し要求と、についてのメモリmemの第2動作のイベントドリブンのシミュレーションにおける各状態を示す。第1動作例と同様に、Clock信号の代わりに、書き込み処理におけるデータを受信中であることを示すvalidと、所定期間である受信中の期間をカウントするcounterと、がある。validと、counterとは、所定期間内に読み出しされない場合には不要である。
第2動作部1203は、メモリmemが、current_memoryに第1データであるD0[n−1:0]が記憶されている状態において、メモリmemに対する第2データであるD1[n−1:0]の書き込み要求を検出する動作をシミュレーションする(ステップS1601)。そして、第2動作部1203は、D1[n−1:0]をcurrent_memoryに記憶する動作をシミュレーションする(ステップS1602)。これにより、時刻t1では、current_memoryにD1[n−1:0]が記憶される。
つぎに、第2動作部1203は、current_memoryに記憶されたD1[n−1:0]に基づく第2記憶データであるR1[n−1:0]をresult_memoryに記憶する動作をシミュレーションする(ステップS1603)。これにより、時刻t2では、result_memoryにR1[n−1:0]が記憶される。第2動作部1203は、書き込み要求が検出されてから所定期間内に、メモリmemに対する読み出し要求を検出する(ステップS1604)と、読み出し要求に基づいて、result_memoryからの読み出し処理を行う動作をシミュレーションする(ステップS1605)。
つぎに、第2動作部1203は、メモリmemが、書き込み要求が検出されてから所定期間経過した際に、書き込み要求が完了した旨を出力する動作をシミュレーションする(ステップS1606)。具体的には、実際のハードウェアの動作と同様に、第2動作部1203は、メモリmemが割り込みを出力する動作をシミュレーションする。より具体的には、第2動作部1203は、メモリmemが、interruput信号を0から1に変化させる動作をシミュレーションする。
第2判断部1204は、第2動作によって得られる第2シミュレーション結果が所定結果であるか否かを判断する。ここでの所定結果は、上述した期待値1220と同様である。たとえば、第2判断部1204は、第2シミュレーション結果と期待値1220とを比較することによって、第2シミュレーション結果と期待値1220とが一致するか否かを判断する。判定部1205は、第2判断部1204によって所定結果であると判断された場合、読み出し要求の要求元に異常があると判定する。
図17は、読み出し要求発生時の各シミュレーション結果と期待値との比較結果例を示す説明図である。ここでの読み出し要求は、書き込み要求に基づく書き込み処理期間内に発生するものであって、不適切な発生である。No.1では、上述した第1動作によるシミュレーションを示す。No.2では、上述したように、第2動作によるシミュレーションを示す。
AMODELによって記述されたモデルによる第1動作の第1シミュレーション結果と期待値1220とは一致せず、第1動作とハードウェアの動作との互換性はある。一方、FMODELによって記述されたモデルによる第2動作の第2シミュレーション結果と期待値1220とは一致するため、第2動作とハードウェアの動作との互換性はない。
そのため、第1判断部1202は、第1動作部1201による第1シミュレーション結果と期待値1220が一致していなければ、ソフトウェアやFWなどによってメモリmemに対して不適切な読み出し要求が発生したと判断できる。そして、第2判断部1204は、第2動作部1203による第2シミュレーション結果と期待値1220が一致しているか否かを第2判断部1204によって判断することによって、不適切な読み出し要求のみが原因か否かを判断することができる。たとえば、判定部1205は、第2シミュレーション結果と期待値1220が一致していれば、不適切な読み出し要求を原因として不具合が発生していると判定し、一致していなければ、不適切な読み出し要求以外にも原因がある可能性があると判定することができる。
これにより、異常な読み出し要求の原因の特定精度を向上させることができる。たとえば、第1判断部1202から判定部1205までの各処理は、ソフトウェアやFWの開発時に有用である。
(シミュレーション装置1200が行う処理手順例)
図18は、シミュレーション装置が行う処理手順の一例を示すフローチャートである。シミュレーション装置1200は、i=0とし(ステップS1801)、m個あるTP1230のうちi番目のTP1230とモデル1210とによって第1動作のイベントドリブンのシミュレーションを実行する(ステップS1802)。シミュレーション装置1200は、第1動作のシミュレーション結果が期待値1220と不一致か否かを判断する(ステップS1803)。
一致している場合(ステップS1803:一致)、ステップS1808へ移行する。不一致である場合(ステップS1803:不一致)、シミュレーション装置1200は、i番目のTP1230とモデル1211とによって第2動作のイベントドリブンのシミュレーションを実行する(ステップS1804)。シミュレーション装置1200は、第2動作のシミュレーション結果が期待値1220と不一致か否かを判断する(ステップS1805)。一致している場合(ステップS1805:一致)、シミュレーション装置1200は、原因が特定されたと判定し(ステップS1806)、ステップS1808へ移行する。一致していない場合(ステップS1805:不一致)、シミュレーション装置1200は、原因は他にあると判定し(ステップS1807)、ステップS1808へ移行する。
ステップS1803:一致の場合、ステップS1806またはステップS1807のつぎに、シミュレーション装置1200は、「i=m−1」であるか否かを判断する(ステップS1808)。「i=m−1」である場合(ステップS1808:Yes)、一連の処理を終了する。「i=m−1」でない場合(ステップS1808:No)、シミュレーション装置1200は、「i=i+1」とし(ステップS1809)、ステップS1802へ戻る。
また、ここで参考に、LMODELと呼ばれる記述方法によって記述されたモデルによるメモリmemの動作についてのシミュレーションを説明する。
図19は、LMODELにおける動作例を示す説明図である。タイミングチャート1900は、メモリmemに対する書き込み要求と、書き込み処理中に発生したメモリmemに対する読み出し要求と、についてのメモリmemの動作のイベントドリブンのシミュレーションにおける各状態を示す。LMODELによって記述されたメモリmemを示すメモリモデルでは、第1記憶領域であるcurrent_memoryと、第3記憶領域であるresult_memoryと、を含む。メモリモデルがESLシミュレーションによって実行されることによって、メモリmemの動作がシミュレーションされる。
第1および2動作と同様に、Clock信号の代わりに、書き込み処理におけるデータを受信中であることを示すvalidと、受信中の期間をカウントするcounterと、がある。所定期間とは、このデータの受信中の期間を示す。たとえば、図19の例では、counterは、0からn−1までをカウントする。
LMODELにおけるメモリの動作のシミュレーションでは、時刻t0において書き込み要求が発生すると、時刻t1において、current_memoryには第2データであるD1[n−1:0]が記憶され、counterの値がカウントアップされる。一方、result_memoryには、時刻t1において変化せずにR0[n−1:0]が記憶される。
そして、時刻ti+1において、読み出し要求が検出されると、result_memoryに記憶されたR0[n−1:0]が読み出されて、読み出し要求の要求元に送信される。したがって、実際のハードウェアの動作と異なるデータが読み出される。
つぎに、時刻tnにおいてcounterの値が0になると、時刻tn+1においてD1[n−1:0]に基づくR1[n−1:0]がresult_memoryに記憶される。時刻tn+2において、書き込み要求に基づく書き込み処理が終了したことを示す割り込みが発行される。図19に示すように、interrupt信号が0から1に変化する。このように、本実施の形態2にかかる第1動作のシミュレーション結果は、図19に示す動作のシミュレーション結果よりも、ハードウェアの動作により近くなる。
以上説明したように、本実施の形態2にかかる第1動作のシミュレーションでは、第1データが第1記憶領域に記憶されている状態において、第2データの書き込み要求があると、第1記憶領域に記憶された第1データを第2記憶領域に記憶させる。その後、第1動作のシミュレーションでは、第1記憶領域に第2データを記憶させる。そして、第1動作のシミュレーションでは、書き込み要求が検出されてから所定期間内に読み出し要求があると、第1データと第2データとを含む読み出し要求のタイミングに応じた収集データに基づく記憶データを第3記憶領域に格納する。これにより、実際のハードウェアであるメモリmemの動作結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、本実施の形態2にかかるシミュレーション方法、シミュレーションプログラムでは、メモリモデルと、メモリと異なるハードウェアを示すモデルと、の間の動作を記述しなくてよく、メモリモデル内にのみ機能を追加するだけでよい。また、本実施の形態2にかかるシミュレーション方法、シミュレーションプログラムでは、メモリ内のメモリ素子への書き込み前にどのような演算があってもよいため、実際のハードウェアの動作により近い動作を実現することができる。
また、本実施の形態2にかかるシミュレーションによれば、サイクル精度のシミュレーションと比較して、シミュレーションの実行時間を短縮することができる。たとえば、実際のハードウェアの動作検証では十数日かかっていたものが、抽象度の高いRTL検証では、数日かかってもシミュレーション対象の回路規模によっては検証実行ができない可能性がある。そして、上述したFMODELによるモデルのイベントドリブンのシミュレーションでは、数時間かかるが、不具合を再現できない可能性がある。さらに、本実施の形態2である上述したAMODELによるモデルのイベントドリブンのシミュレーションでは、数時間であり、不具合を再現できる。したがって、実際のハードウェアにおいて不具合が発生した場合に、本実施の形態2にかかるシミュレーション方法によれば、不具合の早期発見を支援することができる。
また、所定期間は、第2データのデータ量に応じた期間である。これにより、書き込み要求に基づく書き込み処理期間内において、メモリmemに対する読み出し要求を検出することができる。
また、書き込み処理期間が終了すると、書き込み要求に基づく書き込み処理が完了した旨を出力する。これにより、実際のハードウェアであるメモリmemの書き込み動作の結果により近いイベントドリブンのシミュレーション結果を得ることができる。
また、シミュレーション装置は、第1動作のシミュレーション結果が期待値と一致しない場合、第2記憶領域を有さないメモリモデルによる第2動作のシミュレーションを行う。シミュレーション装置は、第2動作のシミュレーション結果が期待値と一致すれば、書き込み要求に基づく書き込み処理期間内に、メモリmemに対する読み出し要求を発生した読み出し要求元に動作不良の原因があると判定する。これにより、動作不良の原因の特定を容易化させることができる。
また、第1の動作のシミュレーションでは、第1データと第2データとに基づいて第3記憶領域にデータを格納する際に、読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じた収集データに基づく第2記憶データを第3記憶領域に記憶する。これにより、実際のハードウェアの動作と、ESLシミュレーションにおける第1動作と、において各変化のタイミングに誤差が生じても、収集データが複数あることによって誤差を調整可能となる。
なお、本実施の形態1および2で説明したシミュレーション方法は、予め用意されたシミュレーションプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本シミュレーションプログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disk)−ROM、MO(Magneto−Optical disk)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本シミュレーションプログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータが、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求(以下、「第1送信許可要求」と称する。)の優先度が、前記第1送信許可要求よりも後に受け付けられた前記送信許可要求(以下、「第2送信許可要求」と称する。)の優先度よりも低いか否かを判定し、
前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第2送信許可要求についての前記送信データの前記格納時刻から前記第2送信許可要求についての前記送信時間が計時された後、前記第1送信許可要求についての前記送信データを前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行することを特徴とするシミュレーション方法。
(付記2)前記格納時刻から前記送信時間を計時する処理は、
前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求についての前記送信データの前記格納時刻から前記第1送信許可要求についての前記経過時間までの時刻から、前記第1送信許可要求についての前記送信時間から前記第1送信許可要求についての前記経過時間を除いた時間と前記第2送信許可要求についての前記送信時間とを併せた時間を計時することを特徴とする付記1に記載のシミュレーション方法。
(付記3)前記格納する動作をシミュレートする処理は、
前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低くないと判定された場合、前記第1送信許可要求についての前記送信データの前記格納時刻から前記第1送信許可要求についての前記送信時間が計時された後に、前記第2送信許可要求に基づいて、前記メモリに、前記シミュレーション上で前記第2送信許可要求についての前記送信先ハードウェアの記憶領域に記憶された記憶データを格納することを特徴とする付記1または2に記載のシミュレーション方法。
(付記4)前記復元する動作をシミュレートする処理は、
前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間と前記第1送信許可要求についての前記送信時間との比率に基づいて選択された一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートすることを特徴とする付記1〜3のいずれか一つに記載のシミュレーション方法。
(付記5)前記復元する動作をシミュレートする処理は、
前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間と前記第1送信許可要求についての前記送信時間との比率と、前記第1送信許可要求についての前記送信元ハードウェアから前記第1送信許可要求についての前記送信先ハードウェアまでの送信によって生じうる前記第1送信許可要求についての送信されるデータ量の誤差と、に基づいて選択された一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートすることを特徴とする付記1〜3のいずれか一つに記載のシミュレーション方法。
(付記6)コンピュータによるイベントドリブンのシミュレーション方法であって、
第1記憶領域と、第2記憶領域と、第3記憶領域と、を有するメモリが、
前記第1記憶領域に第1データが記憶されている状態において、前記メモリに対する第2データの書き込み要求を検出すると、
前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
前記第2データを前記第1記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第3記憶領域に記憶し、
前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
動作を前記コンピュータがシミュレーションすることを特徴とするシミュレーション方法。
(付記7)前記メモリが、
前記書き込み要求が検出されてから前記所定期間経過した際に、前記第1記憶領域に記憶された前記第2データに基づく第2記憶データを前記第3記憶領域に記憶し、
前記書き込み要求に基づく書き込み処理が完了した旨を出力する、
動作を前記コンピュータがシミュレーションすることを特徴とする付記6に記載のシミュレーション方法。
(付記8)前記動作(以下、「第1動作」と称する。)のシミュレーションの後に、
前記第1動作によって得られる第1シミュレーション結果が、所定結果であるか否かを判断し、
前記所定結果でないと判断された場合に、前記第2記憶領域を有さず、前記第1記憶領域と、前記第3記憶領域とを有する第2メモリが、
前記第1記憶領域に前記第1データが記憶されている状態において、前記第2メモリに対する前記第2データの書き込み要求を検出すると、
前記第2データを前記第1記憶領域に記憶し、
前記第1記憶領域に記憶された前記第2データに基づく前記第2記憶データを前記第3記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記第2メモリに対する読み出し要求を検出すると、前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
第2動作をシミュレーションし、
前記第2動作によって得られる第2シミュレーション結果が前記所定結果であるか否かを判断し、
前記所定結果である場合、前記読み出し要求の要求元に異常があると判定する、
処理を前記コンピュータが実行することを特徴とする付記6または7に記載のシミュレーション方法。
(付記9)前記メモリが、
前記第1記憶領域に前記第1データが記憶されている状態において、前記メモリに対する前記第2データの書き込み要求を検出すると、
前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
前記第2データを前記第1記憶領域に記憶し、
前記書き込み要求が検出されてから前記所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データに含まれる、前記読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じたデータに基づく第2記憶データを前記第3記憶領域に記憶し、
前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
動作を前記コンピュータがさらにシミュレーションすることを特徴とする付記6〜8のいずれか一つに記載のシミュレーション方法。
(付記10)前記所定期間は、前記第2データのデータ量に応じた期間であることを特徴とする付記6〜9のいずれか一つに記載のシミュレーション方法。
(付記11)ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータに、
前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
前記送信許可要求(以下、「第1送信許可要求」と称する。)の優先度が、前記第1送信許可要求よりも後に受け付けられた前記送信許可要求(以下、「第2送信許可要求」と称する。)の優先度よりも低いか否かを判定し、
前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
前記復元する動作をシミュレートした場合に、前記第2送信許可要求についての前記送信データの前記格納時刻から前記第2送信許可要求についての前記送信時間が計時された後、前記第1送信許可要求についての前記送信データを前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
処理を実行させることを特徴とするシミュレーションプログラム。
(付記12)コンピュータによるイベントドリブンのシミュレーションプログラムであって、
第1記憶領域と、第2記憶領域と、第3記憶領域と、を有するメモリが、
前記第1記憶領域に第1データが記憶されている状態において、前記メモリに対する第2データの書き込み要求を検出すると、
前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
前記第2データを前記第1記憶領域に記憶し、
前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第3記憶領域に記憶し、
前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
動作を前記コンピュータにシミュレーションさせることを特徴とするシミュレーションプログラム。
300 システム
400 DLYレジスタ
700 Reqレジスタ
701 Temp_A
703 Temp_B

Claims (9)

  1. ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータが、
    前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
    前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
    前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
    前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
    前記送信許可要求(以下、「第1送信許可要求」と称する。)の優先度が、前記第1送信許可要求よりも後に受け付けられた前記送信許可要求(以下、「第2送信許可要求」と称する。)の優先度よりも低いか否かを判定し、
    前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
    前記復元する動作をシミュレートした場合に、前記第2送信許可要求についての前記送信データの前記格納時刻から前記第2送信許可要求についての前記送信時間が計時された後、前記第1送信許可要求についての前記送信データを前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
    処理を実行することを特徴とするシミュレーション方法。
  2. 前記格納時刻から前記送信時間を計時する処理は、
    前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求についての前記送信データの前記格納時刻から前記第1送信許可要求についての前記経過時間までの時刻から、前記第1送信許可要求についての前記送信時間から前記第1送信許可要求についての前記経過時間を除いた時間と前記第2送信許可要求についての前記送信時間とを併せた時間を計時することを特徴とする請求項1に記載のシミュレーション方法。
  3. 前記格納する動作をシミュレートする処理は、
    前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低くないと判定された場合、前記第1送信許可要求についての前記送信データの前記格納時刻から前記第1送信許可要求についての前記送信時間が計時された後に、前記第2送信許可要求に基づいて、前記メモリに、前記シミュレーション上で前記第2送信許可要求についての前記送信先ハードウェアの記憶領域に記憶された記憶データを格納することを特徴とする請求項1または2に記載のシミュレーション方法。
  4. コンピュータによるイベントドリブンのシミュレーション方法であって、
    第1記憶領域と、第2記憶領域と、第3記憶領域と、を有するメモリが、
    前記第1記憶領域に第1データが記憶されている状態において、前記メモリに対する第2データの書き込み要求を検出すると、
    前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
    前記第2データを前記第1記憶領域に記憶し、
    前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第3記憶領域に記憶し、
    前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
    動作を前記コンピュータがシミュレーションすることを特徴とするシミュレーション方法。
  5. 前記メモリが、
    前記書き込み要求が検出されてから前記所定期間経過した際に、前記第1記憶領域に記憶された前記第2データに基づく第2記憶データを前記第3記憶領域に記憶し、
    前記書き込み要求に基づく書き込み処理が完了した旨を出力する、
    動作を前記コンピュータがシミュレーションすることを特徴とする請求項4に記載のシミュレーション方法。
  6. 前記動作(以下、「第1動作」と称する。)のシミュレーションの後に、
    前記第1動作によって得られる第1シミュレーション結果が、所定結果であるか否かを判断し、
    前記所定結果でないと判断された場合に、前記第2記憶領域を有さず、前記第1記憶領域と、前記第3記憶領域とを有する第2メモリが、
    前記第1記憶領域に前記第1データが記憶されている状態において、前記第2メモリに対する前記第2データの書き込み要求を検出すると、
    前記第2データを前記第1記憶領域に記憶し、
    前記第1記憶領域に記憶された前記第2データに基づく前記第2記憶データを前記第3記憶領域に記憶し、
    前記書き込み要求が検出されてから前記所定期間内に、前記第2メモリに対する読み出し要求を検出すると、前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
    第2動作をシミュレーションし、
    前記第2動作によって得られる第2シミュレーション結果が前記所定結果であるか否かを判断し、
    前記所定結果である場合、前記読み出し要求の要求元に異常があると判定する、
    処理を前記コンピュータが実行することを特徴とする請求項4または5に記載のシミュレーション方法。
  7. 前記メモリが、
    前記第1記憶領域に前記第1データが記憶されている状態において、前記メモリに対する前記第2データの書き込み要求を検出すると、
    前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
    前記第2データを前記第1記憶領域に記憶し、
    前記書き込み要求が検出されてから前記所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データに含まれる、前記読み出し要求が検出されたタイミングと所定時間異なるタイミングに応じたデータに基づく第2記憶データを前記第3記憶領域に記憶し、
    前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
    動作を前記コンピュータがさらにシミュレーションすることを特徴とする請求項4〜6のいずれか一つに記載のシミュレーション方法。
  8. ハードウェア群と、前記ハードウェア群内のハードウェア間におけるデータの送信を調停する調停回路と、を有するシステムを示す情報に基づいて前記システムの動作についてイベントドリブンのシミュレーションを実行するコンピュータに、
    前記ハードウェア群のうちのいずれかの送信元ハードウェアから前記ハードウェア群のうちの送信先ハードウェアへの送信データの送信許可要求を前記調停回路が受け付ける動作をシミュレートし、
    前記受け付ける動作をシミュレートした前記送信許可要求に基づいて、メモリに、前記シミュレーション上で前記送信先ハードウェアの記憶領域に記憶された記憶データを格納し、
    前記記憶データを前記メモリに格納後に、前記送信許可要求に基づいて、前記送信データを前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートし、
    前記格納する動作をシミュレートした格納時刻から、前記システムにおいて前記送信データの前記送信元ハードウェアから前記送信先ハードウェアへの送信にかかる送信時間を計時し、
    前記送信許可要求(以下、「第1送信許可要求」と称する。)の優先度が、前記第1送信許可要求よりも後に受け付けられた前記送信許可要求(以下、「第2送信許可要求」と称する。)の優先度よりも低いか否かを判定し、
    前記第1送信許可要求の優先度が前記第2送信許可要求の優先度よりも低いと判定された場合、前記第1送信許可要求について前記メモリに格納された前記記憶データのうち、前記第1送信許可要求についての前記送信データの前記格納時刻からの経過時間に基づく一部のデータを、前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ復元する動作をシミュレートし、
    前記復元する動作をシミュレートした場合に、前記第2送信許可要求についての前記送信データの前記格納時刻から前記第2送信許可要求についての前記送信時間が計時された後、前記第1送信許可要求についての前記送信データを前記第1送信許可要求についての前記送信先ハードウェアの記憶領域へ格納する動作をシミュレートする、
    処理を実行させることを特徴とするシミュレーションプログラム。
  9. コンピュータによるイベントドリブンのシミュレーションプログラムであって、
    第1記憶領域と、第2記憶領域と、第3記憶領域と、を有するメモリが、
    前記第1記憶領域に第1データが記憶されている状態において、前記メモリに対する第2データの書き込み要求を検出すると、
    前記第1記憶領域に記憶された前記第1データを前記第2記憶領域に記憶し、
    前記第2データを前記第1記憶領域に記憶し、
    前記書き込み要求が検出されてから所定期間内に、前記メモリに対する読み出し要求を検出すると、前記第1記憶領域に記憶された前記第2データと前記第2記憶領域に記憶された前記第1データとに含まれる、前記読み出し要求が検出されたタイミングに応じたデータに基づく記憶データを前記第3記憶領域に記憶し、
    前記読み出し要求に基づいて、前記第3記憶領域からの読み出し処理を行う、
    動作を前記コンピュータにシミュレーションさせることを特徴とするシミュレーションプログラム。
JP2013009672A 2012-05-25 2013-01-22 シミュレーション方法、およびシミュレーションプログラム Expired - Fee Related JP5991211B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013009672A JP5991211B2 (ja) 2012-05-25 2013-01-22 シミュレーション方法、およびシミュレーションプログラム
US13/898,979 US20130317802A1 (en) 2012-05-25 2013-05-21 Method for simulating data transmission among a plurality of hardware elements

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012120285 2012-05-25
JP2012120285 2012-05-25
JP2013009672A JP5991211B2 (ja) 2012-05-25 2013-01-22 シミュレーション方法、およびシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2014002712A JP2014002712A (ja) 2014-01-09
JP5991211B2 true JP5991211B2 (ja) 2016-09-14

Family

ID=49622264

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013009672A Expired - Fee Related JP5991211B2 (ja) 2012-05-25 2013-01-22 シミュレーション方法、およびシミュレーションプログラム

Country Status (2)

Country Link
US (1) US20130317802A1 (ja)
JP (1) JP5991211B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0546697A (ja) * 1991-08-14 1993-02-26 Nec Corp 論理シミユレータ
JP3144950B2 (ja) * 1993-04-28 2001-03-12 富士通株式会社 論理シミュレーション方式
US5835953A (en) * 1994-10-13 1998-11-10 Vinca Corporation Backup system that takes a snapshot of the locations in a mass storage device that has been identified for updating prior to updating
CA2221216A1 (en) * 1996-11-15 1998-05-15 Mark Squibb System and apparatus for merging a write event journal and an original storage to produce an updated storage using an event map
US6292790B1 (en) * 1997-10-20 2001-09-18 James E. Krahn Apparatus for importing and exporting partially encrypted configuration data
US6871271B2 (en) * 2000-12-21 2005-03-22 Emc Corporation Incrementally restoring a mass storage device to a prior state
US7213049B2 (en) * 2001-07-17 2007-05-01 Bea Systems, Inc. System and method for transaction processing with transaction property feature
US6839819B2 (en) * 2001-12-28 2005-01-04 Storage Technology Corporation Data management appliance
US7440884B2 (en) * 2003-01-23 2008-10-21 Quickturn Design Systems, Inc. Memory rewind and reconstruction for hardware emulator
JP4426280B2 (ja) * 2003-12-25 2010-03-03 株式会社日立製作所 バックアップ/リストアシステム及び方法
US7620785B1 (en) * 2004-06-30 2009-11-17 Symantec Operating Corporation Using roll-forward and roll-backward logs to restore a data volume
US7778815B2 (en) * 2005-05-26 2010-08-17 The Regents Of The University Of California Method for the fast exploration of bus-based communication architectures at the cycle-count-accurate-at-transaction-boundaries (CCATB) abstraction
US7484032B2 (en) * 2005-06-30 2009-01-27 Smith Roger A Fault tolerant computer system
US7398365B1 (en) * 2005-07-13 2008-07-08 Symantec Corporation Restoring data with reduced suspension-of-access periods
US8781808B2 (en) * 2005-10-10 2014-07-15 Sei Yang Yang Prediction-based distributed parallel simulation method
US8200914B2 (en) * 2008-01-03 2012-06-12 International Business Machines Corporation Apparatus, system, and method for a read-before-write storage controller instruction
US8577845B2 (en) * 2008-06-13 2013-11-05 Symantec Operating Corporation Remote, granular restore from full virtual machine backup
US8204732B1 (en) * 2008-10-03 2012-06-19 The Mathworks, Inc. Modeling communication interfaces for multiprocessor systems
JP5347482B2 (ja) * 2008-12-18 2013-11-20 富士通セミコンダクター株式会社 性能評価装置、性能評価方法及びシミュレーションプログラム
US8327069B2 (en) * 2009-12-08 2012-12-04 Hitachi, Ltd. Storage system and storage control apparatus provided with cache memory group including volatile memory and nonvolatile memory
KR20130081354A (ko) * 2012-01-09 2013-07-17 삼성전자주식회사 분산 병렬 시뮬레이션에서의 통신 방법

Also Published As

Publication number Publication date
US20130317802A1 (en) 2013-11-28
JP2014002712A (ja) 2014-01-09

Similar Documents

Publication Publication Date Title
JP2699377B2 (ja) ハードウエア論理シミユレータ
US5650938A (en) Method and apparatus for verifying asynchronous circuits using static timing analysis and dynamic functional simulation
US20060130029A1 (en) Programming language model generating apparatus for hardware verification, programming language model generating method for hardware verification, computer system, hardware simulation method, control program and computer-readable storage medium
US10353789B1 (en) Analog fault simulation control with multiple circuit representations
TW201140357A (en) Techniques for analysis of logic designs with transient logic
US10775430B2 (en) Fault campaign in mixed signal environment
US20190286776A1 (en) System design using accurate performance models
JP4468410B2 (ja) ソフトウェア実行装置および協調動作方法
US20160292307A1 (en) Temporal logic robustness guided testing for cyber-physical systems
JP2005525660A (ja) トランザクションレベルモデルにおける改善された性能分析のための方法及び機構
US20080244478A1 (en) Model generation method and model generation apparatus of semiconductor device
JP4175953B2 (ja) 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
US8504347B2 (en) Simulation apparatus, simulation method, and program to perform simulation on design data of a target circuit
JP2011186817A (ja) 論理検証装置及び論理検証方法
JP5034916B2 (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
JP5991211B2 (ja) シミュレーション方法、およびシミュレーションプログラム
JP2010176486A (ja) 検証支援プログラムおよび検証支援装置
JP2014215768A (ja) 性能評価用トランザクション生成プログラム及び性能評価用トランザクション生成装置
US11200125B2 (en) Feedback from higher-level verification to improve unit verification effectiveness
US20090055155A1 (en) Simulating execution of software programs in electronic circuit designs
JP6089627B2 (ja) 消費電力見積り装置および消費電力見積り方法
JPH03269736A (ja) 計算機システム
JP2007052783A (ja) データ処理装置のシミュレーション
JP5077219B2 (ja) シミュレーション方法、シミュレーション装置およびシミュレーションプログラム
JP2009140028A (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150903

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160712

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160719

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160801

R150 Certificate of patent or registration of utility model

Ref document number: 5991211

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees