JP2011258045A - シミュレーション装置、シミュレーションプログラム及び方法 - Google Patents

シミュレーション装置、シミュレーションプログラム及び方法 Download PDF

Info

Publication number
JP2011258045A
JP2011258045A JP2010132770A JP2010132770A JP2011258045A JP 2011258045 A JP2011258045 A JP 2011258045A JP 2010132770 A JP2010132770 A JP 2010132770A JP 2010132770 A JP2010132770 A JP 2010132770A JP 2011258045 A JP2011258045 A JP 2011258045A
Authority
JP
Japan
Prior art keywords
model
simulation
simulation time
time
hardware
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.)
Granted
Application number
JP2010132770A
Other languages
English (en)
Other versions
JP5450271B2 (ja
Inventor
Shogo Ishii
正悟 石井
Hidehisa Takamizawa
秀久 高見澤
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2010132770A priority Critical patent/JP5450271B2/ja
Priority to US13/156,449 priority patent/US8744831B2/en
Priority to CN201110155067.9A priority patent/CN102279768B/zh
Publication of JP2011258045A publication Critical patent/JP2011258045A/ja
Application granted granted Critical
Publication of JP5450271B2 publication Critical patent/JP5450271B2/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

【課題】実機の時間経過、タイミングを再現しつつ高速化を図るシミュレーション装置を提供する。
【解決手段】シミュレーション時間を通知するHWモデルを実行するHWモデル実行部と、シミュレーション時間を通知するSWモデルを実行するSWモデル実行部と、HWモデルのシミュレーション時間の総経過時間である第1シミュレーション時間をHWモデルが通知したシミュレーション時間分経過させ、SWモデルのシミュレーション時間の総経過時間である第2シミュレーション時間をSWモデルが通知したシミュレーション時間分経過させるシミュレーション時間管理部と、第1シミュレーション時間と第2シミュレーション時間を比較し、比較結果に基づきSWモデルまたはHWモデルを実行させ、SWモデルがHWモデルからの割込みを待つ場合、アイドラを実行する代わりにHWモデルのみを実行させるスケジューラとを有する。
【選択図】図1

Description

本発明の実施形態は、ソフトウェア及びハードウェアによって構成される機器を擬似的に模擬するシミュレーション技術に関する。
従来、ハードウェアとソフトウェアとが協働することで機能する機器をシミュレートするシミュレーション装置が知られている。このようなシミュレーション装置は、ハードウェア処理を模擬するHW(Hardware)モデルと、ソフトウェア処理を模擬するSW(Software)モデルとを有し、これらHWモデル、SWモデルを用いてシミュレートする。また、このシミュレーション装置は、シミュレート対象の機器(以降、実機と称す)のハードウェア構成及びソフトウェア構成の並列動作を、HWモデル及びSWモデルの逐次処理によって実現する。
またシミュレーション装置は、実機の時間経過、タイミングを再現するため、HWモデル、SWモデルごとに「シミュレーション時間」という時間情報を保持し、管理する。
また、以下の技術が開示されている。
特開2004−234528号公報 特開2005−293219号公報 特開2006−023852号公報 特開2009-26113号公報 特開2006−163983号公報
「ハード−ソフト協調検証の高速化技術System-CベースでSTARCが開発」日経マイクロデバイス、2005年1月号、P.106-107
ここで、シミュレーション時間とシミュレーション装置での演算によって経過した時間とについて、図10を参照しつつ説明する。図10(A)は、実機が実際に稼動しているときに各処理にかかる時間(または設計段階である場合は各処理の想定時間)の一例を示す図であり、図10(B)は、シミュレーション装置上でのシミュレーション時間の一例を示す図である。また図10(C)は、シミュレーション装置で実機の各処理をシミュレートするときに、実際にかかる時間(以下、実時間と称す)である。
実機での処理時間が、例えば図10(A)で示すように処理Aが1ms、処理Bが2ms、処理Cが1ms、処理Dが1msであるとする。シミュレーション時間を考慮するシミュレーション装置では、この実機での各処理の時間をシミュレーション時間として管理している。すなわち、図10(A)、図10(B)に示すように、実機での処理時間とシミュレーション時間とは同値となる。
シミュレーション装置で実機の各処理をシミュレートする場合、シミュレーション装置のハードウェア資源の制御による処理時間、およびソフトウェア制御による処理時間が発生するため、実時間は図10(C)に示すように実機での処理時間に収まることは無く、それぞれの処理で遅延が生ずる。
従来技術では、SWモデルがHWモデルからの割込みを待っている状態である場合、シミュレーション装置は、待機処理用のループ(以下、アイドラ)を実行することになる。つまり、シミュレーションを実行するシミュレーション装置は、SWモデルのアイドリング状態に係る処理に対してハードウェアリソースを割り当てなければならず、その結果としてシミュレーションの実行速度が低下してしまうという問題がある。
また従来方法は、OS(Operating System)のアイドラにおけるビジーループの実行にホスト計算機のリソースを割り当てる。ホスト計算機は、割込みが発生するまでのシミュレーション時間が経過するのを待つ間、ハードウェアリソースを必要以上に消費し、シミュレーション実行性能を低下させている。
この従来技術の問題点ついて、図11を参照しつつ説明する。図11は、シミュレーションエンジンが、アイドリング中のSWモデルとHWモデルをシミュレーション時間に従って実行単位を切り替えながらシミュレーションするときの遷移を示している。
これらのシミュレーション方式は、HWモデル側で経過するシミュレーション時間と同じ時間だけ、シミュレーション時間が経過するのを待つ(アイドラが実行される)ことでシミュレーション対象の時間経過、タイミングを再現する。すなわち、これらのシミュレーション方式は、SWモデル側のアイドラを随時実行するため、ホストCPU(Central Processing Unit)のリソースを必要以上に消費する、という問題がある。また、これらシミュレーション方式は、実行単位の切り替えのためにシミュレーションエンジンのオーバヘッドが発生する、という問題がある。これらホストCPUのリソース消費、および実行単位の切り替えは、共にシミュレーション実行性能を低下させる要因である。
また、シミュレーション時間の情報を有する従来のシミュレーション方式では、SWモデルの実行単位とHWモデルの実行単位が同じシミュレーション時間を経過させながら並行動作する。HWモデルが割込みを発生させるまでに要するシミュレーション時間と同じ時間だけSWモデルもシミュレーション実行する必要がある。しかし、このときSWモデル側ではアイドラ以外に動作するタスクがないため、アイドラが無駄なループ処理を実行してシミュレーション時間の経過を待つことになる。
アイドリング状態のシミュレーションにおいて、ホスト計算機に無駄な負荷をかけない方法として、プロセス相対時間タイマ機能と実時間タイマ機能の切り替えによって、アイドリング状態になったときのOS(Operating System)への負荷を軽減する方法(リアルタイムOSシミュレーション方式)がある。しかし、この方法は、ホスト計算機のリソースを使ってアイドリング状態をシミュレートする必要があり、実時間を経過させる必要がある。
本発明の実施形態は上述した問題点を解決するためになされたものであり、アイドリング状態のシミュレーションにホスト計算機のリソースを使わず、且つシミュレーション装置で実行する時間を短縮することで、ホストOSへの負荷を軽減するのみではなく、実機の時間経過、タイミングの再現精度を劣化させることなく、シミュレーション実行性能を高速化することができる技術を提供することを目的とする。
実施形態のシミュレーション装置は、検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することで、検証対象の各処理の実行タイミングを再現するシミュレーション装置である。また、このシミュレーション装置は、検証対象に実装されるハードウェアの処理を模擬するハードウェアモデルであって、ハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルを実行するハードウェアモデル実行部を有する。またシミュレーション装置は、検証対象に実装されるソフトウェアの処理を模擬するソフトウェアモデルであって、ソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを実行するソフトウェアモデル実行部を有する。実施形態のシミュレーション装置は、ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶するとともに、ハードウェアモデルが通知したシミュレーション時間を取得して、第1シミュレーション時間を、取得したシミュレーション時間経過させ、ソフトウェアモデルが通知したシミュレーション時間を取得して、第2シミュレーション時間を、取得したシミュレーション時間経過させるシミュレーション時間管理部を有する。またシミュレーション装置は、第1シミュレーション時間と第2シミュレーション時間とを比較し、第1シミュレーション時間の方が第2シミュレーション時間よりも経過している場合、ソフトウェアモデルを実行させ、第2シミュレーション時間の方が第1シミュレーション時間よりも経過している場合、ハードウェアモデルを実行させる実行指示部を有する。またシミュレーション装置は、ハードウェアモデルからソフトウェアモデルへの割込み通知が現在有るか否かの情報を記憶する割込み管理部を有する。実施形態のシミュレーション装置の実行指示部は、さらに、割込み管理部に割込み通知の有無を問い合わせ、割込み通知がある場合、ソフトウェアモデルの割込みハンドラを実行させる。一方、割込み通知が無い場合、実行指示部はソフトウェアモデルのタスクを実行させる。また実行指示部は、ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合には、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりにハードウェアモデルのみを実行させる。実行指示部は、ハードウェアモデルから割込みが発生したときに、第2シミュレーション時間を第1シミュレーション時間まで進める。
第1の実施の形態に係るシミュレーション装置の機能構成の一例を示すブロック図である。 モデル識別情報とシミュレーション時間との対応関係を管理するテーブルの一例を示す図である。 第1の実施の形態に係るシミュレーション実行の遷移の一例を示す図である。 第1の実施の形態に係るシミュレーション装置の動作の一例を示すフローチャートである(その1)。 第1の実施の形態に係るシミュレーション装置の動作の一例を示すフローチャートである(その2)。 第2の実施の形態に係るシミュレーション装置の機能構成の一例を示すブロック図である。 第2の実施の形態に係るシミュレーション実行の遷移の一例を示す図である。 第4の実施の形態に係るシミュレーション装置の機能構成の一例を示すブロック図である。 第4の実施の形態に係るシミュレーション装置の動作の一例を示すフローチャートである(図5に対応)。 シミュレーション時間と実時間を説明する図である。 従来のシミュレーション実行の遷移の一例を示す図である。
(第1の実施の形態)
第1の実施の形態のシミュレーション装置は、アイドリング状態になる際、SWモデルのビジーループ処理を実行せず、HWモデルからの割込みが次に発生するまでの時間だけシミュレーション時間を進めることで、ホスト計算機のリソースを使わず、且つシミュレーション実行を高速化する。
図1に、第1の実施の形態に係るシミュレーション装置の機能ブロックの一例を示す。尚、シミュレーション装置1は、CPU、主記憶装置、及びハードディスクドライブやフラッシュメモリ等の不揮発性記憶装置等のハードウェア資源を備えるコンピュータである。
シミュレーション装置1は、シミュレーションエンジン10、SWモデル実行部20、HWモデル実行部30を有する。これら各機能ブロックは、不揮発性記憶装置に予めインストールされたプログラムが主記憶装置にロードされ、CPUで演算実行されることで実現される。
SWモデル実行部20は、シミュレート対象の機器(シミュレーション装置1が例えばデジタルカメラをシミュレートする場合の当該デジタルカメラ。上述同様にシミュレート対象の機器を実機と称す。)のソフトウェア処理をシミュレートする。SWモデル実行部20は、実機上のCPUをソフトウェア処理によってシミュレートするCPUモデル25を有する。SWモデル実行部20は、CPUモデル25上で動作するように、SWモデル26を実行する。
SWモデル26は、CPUモデル25上で実行されるプログラム(実機のOSを含めたプログラム)であり、実機におけるソフトウェアの処理を模擬し、シミュレーション時間更新手段を用いることで、実行する処理によって経過するシミュレーション時間を処理ごとにシミュレーションエンジン10のシミュレーション時間管理部11に通知する。SWモデル26は、タスク21A、タスク21B、アイドラ22、割込みハンドラ23、タスクスケジューラ24のプログラムモジュールで構成される。タスク21A、21Bは、SWモデル26が有する機能を実現するプログラムである。アイドラ22は、タスク21A、21Bのいずれも実行されないとき、すなわちアイドリング状態をシミュレートするときに実行されるプログラムである。
タスクスケジューラ24は、タスク21A、タスク21B、アイドラ22の各プログラムを切り替えるモジュールであり、CPUモデル25のリソースを各タスクで共有するための機能であるコンテキストスイッチを実現するモジュールである。割込みハンドラ23は、HWモデル実行部30からの割込み要求があった場合、事前に定義された処理を実行するプログラムである。
HWモデル実行部30は、HWモデル31A、31B、割込みコントローラ32を実行することで、実機のハードウェアの動作を模擬する。HWモデル31A、31Bは、例えば実機がデジタルカメラである場合のシャッターの開閉制御部やCCD(Charge Coupled Device)イメージセンサ等、実機内のハードウェアそれぞれの動作を模擬するプログラムである。HWモデル31A、31Bは、シミュレーション時間更新手段を用いることで、実行する処理によって経過するシミュレーション時間を処理ごとにシミュレーションエンジン10のシミュレーション時間管理部11に通知する。HWモデル31A、31Bの実装は、C言語を拡張したシステムレベル記述言語が用いられている。またHWモデル31A、31Bは、必要に応じ割込み要求を出力する。
割込みコントローラ32は、HWモデル31A、31Bによって出力された割込み要求を取得し、いずれのHWモデルがいずれのSWモデルに対して出力した要求かを少なくとも有するフォーマットに変換した後に、割込み通知をシミュレーションエンジン10の割込みシミュレーション管理部12に送信する。
尚、図1において、破線で囲まれているモジュールがシミュレーションエンジン10が管理制御する実行単位であり、これらは並列に動作する。
シミュレーションエンジン10は、SWモデル実行部20、HWモデル実行部30で相互に使用するデータの管理や、各種通知の伝達を担うフレームワークである。シミュレーションエンジン10は、SWモデル26のシミュレーション時間と、HWモデル31A、31Bのシミュレーション時間が常に同じになるように、それぞれのシミュレーション時間の更新を行うとともに、実行単位の実行を切り替える。シミュレーションエンジン10は、シミュレーション時間管理部11、割込みシミュレーション管理部12、スケジューラ13の各プログラムモジュールを有する。
シミュレーション時間管理部11は、SWモデル26のシミュレーション時間、HWモデル31A、31Bそれぞれのシミュレーション時間の更新処理を行う。シミュレーション時間管理部11は、HWモデル31A、31Bごとにシミュレーション時間の総経過時間(以下、必要に応じて第1シミュレーション時間と称す)を主記憶装置に記憶し、また、SWモデル26のシミュレーション時間の総経過時間(以下、必要に応じて第2シミュレーション時間と称す)を主記憶装置に記憶する。また、シミュレーション時間管理部11は、HWモデル31A、31Bがそれぞれ通知したシミュレーション時間を取得して、第1シミュレーション時間を、取得したシミュレーション時間分加算することで経過させる。シミュレーション時間管理部11は、SWモデル26が通知したシミュレーション時間を取得して、第2シミュレーション時間を、取得したシミュレーション時間分加算することで経過させる。
シミュレーション時間管理部11は、SWモデルが複数存在するときはSWモデル毎の第2シミュレーション時間を管理する。HWモデルが複数存在する場合も同様に、シミュレーション時間管理部11はHWモデル毎に第1シミュレーション時間を管理する。シミュレーション時間管理部11は、シミュレーション装置1内の主記憶装置にSWモデル、HWモデルの識別情報とシミュレーション時間の総経過時間との対応関係(テーブル)を記憶させ、このテーブルを更新することで、SWモデル、HWモデルごとのシミュレーション時間を管理する。図2はモデル識別情報とシミュレーション時間との対応関係を管理するテーブルの一例である。
割込みシミュレーション管理部12は、HWモデル実行部30からの割込み通知を取得し、いずれのモデルからいずれのモデルへの割込み通知が現在有るかの情報をシミュレーション装置1の主記憶装置に記憶させることで、割込みの有無を管理する。
スケジューラ13は、シミュレーション時間管理部11からSWモデル26、HWモデル31A、31Bのシミュレーション時間を取得し、いずれのモデルを実行させるかを判断し、判断結果後のモデルに対して実行指示する。スケジューラ13は、第1シミュレーション時間と第2シミュレーション時間とを比較し、第1シミュレーション時間の方が第2シミュレーション時間よりも経過している(大きい)場合、SWモデル26を実行させ、第2シミュレーション時間の方が第1シミュレーション時間よりも経過している(大きい)場合、HWモデル31A、31Bのいずれかを実行させるように、SWモデル実行部20、HWモデル実行部30に指示する。
またスケジューラ13は、割込みシミュレーション管理部12に割込み通知の有無を問い合わせ、割込み通知がある場合、SWモデル26の割込みハンドラ23を実行させるようにSWモデル実行部20に指示する。一方、割込みが無い場合、スケジューラ13はSWモデル26のタスク21A、21Bもしくはアイドラ22を実行させるようにSWモデル実行部20に指示する。
上記以外にも、シミュレーションエンジン10は、HWモデル31A、31BからSWモデル26への割込み通知が現在有るか否かの情報を記憶するアイドル中フラグ15を有する。アイドル中フラグ15は、主記憶装置または不揮発性記憶装置に記憶されており、シミュレーションエンジン10内のスケジューラ13が管理するフラグであって、アイドリングしているか否かの判定に使用される。またアイドル中フラグ15は、SWモデル26毎に存在する。尚、アイドル中フラグ15の設置位置については、様々な態様が考えられ、例えば割込みシミュレーション管理部12に含まれる構成であってもよい。また、アイドル中フラグ15の書き込み制御、読み出し制御や管理も他のユニット(例えば割込みシミュレーション管理部12)が行ってもよい。
次に、シミュレーション装置1でのHWモデル実行部30からSWモデル実行部20への割込通知について説明する。
HWモデル31Aまたは31Bは、割込みコントローラ32にSWモデル26に対する割込みを要求する。割込みコントローラ32は、いずれのHWモデルがいずれのSWモデルに対して割込み要求を行ったかをシミュレーションエンジン10の割込みシミュレーション管理部12に通知する。割込みシミュレーション管理部12は、SWモデル実行部20のCPUモデル25を経由して、SWモデル26に対して割込みを発生させる。SWモデル26のタスクスケジューラ24は、割込みが発生した場合、現在稼動しているタスクの実行を中断して割込みハンドラ23を実行する。割込みハンドラ23の処理が終わると、割込み発生前に実行していたタスクが再開されるか、またはタスクスケジューラ24が実行され、タスクの切り替え処理が実行される。
また、SWモデル26のタスク21Aまたは21Bが、タスクスケジューラ24を呼び出して実行権を放棄すると、タスクスケジューラ24は、その時点で最も実行優先度の高いタスクに実行権を与える。実行すべきタスクが存在しないときは、アイドラ22に実行権を与える。
次に、シミュレーション時間更新手段の詳細について説明する。SWモデル26、およびHWモデル31A、31Bは、シミュレーション時間更新手段(waitfor関数)が組み込まれており、シミュレーションエンジン10にシミュレーション時間経過を通知する。シミュレーション時間更新手段であるwaitfor関数について説明する。waitfor(t)の関数は、シミュレーション時間を更新する関数であり、呼び出し元の総シミュレーション時間(現在のシミュレーション時間の総計)に引数tを加算するようにシミュレーション時間管理部11に通知する関数である。例えばSWモデル26がwaitfor(t)を呼び出した場合、シミュレーション時間管理部11は、SWモデル26の総シミュレーション時間に引数tを加算する。HWモデル31A、31Bがwaitfor(t)を呼び出した場合も同様に、シミュレーション時間管理部11は、HWモデル31A、31Bそれぞれに対応した総シミュレーション時間に引数tを加算する。
シミュレーションエンジン10のスケジューラ13は、シミュレーション時間tが経過するまでwaitfor(t)を発行した実行単位を実行待ち状態にして、シミュレーション時間tだけ経過したらその実行単位を実行可能状態にする。
図3は、シミュレーション装置1による実行単位の遷移を表す。SWモデル26では、図11で示したようにアイドラ22でループ処理を行う代わりに、割込み発生までのシミュレーション時間を経過させる。そして、シミュレーション装置1は、HWモデル側のシミュレーション時間が経過するまでHWモデルのみを実行させる。このようにすることで、無駄なループ処理が無くなり、また実行単位の切り替えが最小で済み、無駄な切り替えが無くなる。
次に、シミュレーション装置1の動作について、図4、図5のフローチャートを参照しつつ説明する。
SWモデル実行部20の実行単位であるSWモデル26は、HWモデル31A、31Bからの割込みを待つためにアイドリングする場合(S1、Yes)、スケジューラ13にアイドリングである旨を通知し、アイドル中フラグ15をONにさせる(S2)。アイドリングしない場合(S1、No)、処理はステップS3に進む。SWモデル26は、シミュレーション時間をt進めるため、シミュレーション時間更新手段であるwaitfor関数を呼び出す(S3)。
また一方、HWモデル実行部30の実行単位であるHWモデル31A、31Bは、SWモデル26への割込み要因がある場合(S4、Yes)、割込みシミュレーション管理部12に割込み要因を通知し(S5)、スケジューラ13にアイドル中フラグ15をOFFにさせる。ここで、S2でアイドル中フラグ15がONにされた状態のまま(ON状態)であれば(S6、Yes)、シミュレーション時間管理部11にアイドル中フラグ15がONからOFFに変更されたことを通知し(S7)、アイドル中フラグ15はOFFの状態になる(S8)。一方、アイドル中フラグ15がOFFの場合(S6、No)、現状のOFFの状態が維持される(S8)。
また一方、SWモデル26への割込み要因が無い場合(S4、No)、処理はS9へ進む。HWモデル31A、31Bはシミュレーション時間をt進めるため、シミュレーション時間更新手段であるwaitfor関数を呼び出す(S9)。
シミュレーション時間管理部11は、waitfor関数の呼び出し元を判別する(S10)。ここで、呼び出し元がSWモデル26である場合(S10、SWモデル)、SWモデル26の現時点での総シミュレーション時間TSWにtを加えることで更新する(S11)。一方、呼び出し元がHWモデル31A、31Bである場合(S10、HWモデル)、HWモデル31A、31Bの現在の総シミュレーション時間THWにtを加えることで、HWモデルのシミュレーション時間を更新する(S12)。またシミュレーション時間管理部11は、HWモデル31A、31Bからアイドル中フラグ15がONからOFFに変更されたことの通知を受けていない場合(S13、No)、処理はS15へ進み、一方アイドル中フラグ15がONからOFFに変更されたことの通知を受けている場合(S13、Yes)、SWモデル26の現在の総シミュレーション時間TSWを、HWモデル31A、31Bの現時点での総シミュレーション時間THWにする(S14)。
ステップS14について説明する。アイドリング中は、HWモデル31A、31Bのみが実行されるため(S25参照)、SWモデル26の総シミュレーション時間TSWは更新されない。この状態のままでは、HWモデル31A、31Bの総シミュレーション時間THWのみ更新され、SWモデル26とHWモデル31A、31Bとの同期がとれなくなってしまう。このため、前述のようにHWモデル31A、31Bの総シミュレーション時間THWを使って、SWモデル26の総シミュレーション時間TSWを進める設定をする。
スケジューラ13は、シミュレーション時間管理部11からTHWを取得し(S15)、またアイドル中フラグ15の状態を判別する(S16)。ここで、アイドル中フラグ15がOFFである場合(S16、Yes)、スケジューラ13は、シミュレーション時間管理部11からTSWを取得する(S17)。スケジューラ13は、取得したTSWとTHWとを比較し、TSW≧THWが成立する場合(S18、「≧」)、HWモデルが実行され(S25)、処理はS4に戻る。一方、TSW<THWが成立する場合(S18、「<」)、スケジューラ13は、割込みシミュレーション管理部12に割込み要因の有無を問い合わせる(S19)。
ここで、割込み要因が無い場合(S20、No)、SWモデル26のタスク21A、21Bもしくはアイドラ22が実行される(S22)。割込み要因がある場合(S20、Yes)、割込みハンドラ23が実行される(S21)。ステップS21、ステップS22の後、処理はステップS1に戻る。
ステップS16の判別処理で、アイドル中フラグ15がONである場合(S16、No)、スケジューラ13は、THWに動作すべきHWモデルがあるかを判別する(S23)。ここで、動作すべきHWモデルが無い場合(S23、No)、スケジューラ13は、直近に動作するHWモデルの総シミュレーション時間までTHWを進め(S24)、その後、HWモデルが実行される(S25)。またTHWに動作すべきHWモデルがある場合(S23、Yes)、処理はステップS25へ進む。
図4、図5で示した動作例は、モデルの数が3つ以上のときでも同様の処理となり、またステップS18の判定処理において、いずれの判定結果に等号を付けるかはスケジューラ実装ポリシーに依拠するものであり、いずれであってもよい。
また第1の実施の形態で示したwaitfor関数は、シミュレーション時間更新手段の一例であり、HWモデルやSWモデルをSystemCやSpecCなど、C言語を拡張したシステムレベル記述言語で記述する場合に用いられるものである。よって、第1の実施の形態におけるシミュレーション時間更新手段をwaitfor関数に限定するものではない。
このように、シミュレーション時間を管理し、SWモデルがアイドル中の場合はHWモデルのみ実行させることで、無駄なループ処理が無くなり、且つ実行単位の切り替えが最小で済む。また、再現精度を劣化させることなく、実機の時間経過、タイミングを再現することができる。
(第2の実施の形態)
シミュレーション装置が模擬する対象の機器(実機)には、ドライバソフトがハードウェアに対してポーリングすることで、ハードウェアの状態の変化を監視するような機器がある。第2の実施の形態では、このようなドライバソフトが採用された機器を模擬するシミュレーション装置について説明する。
図6は、第2の実施の形態に係るシミュレーション装置の構成の一例を示す図である。シミュレーション装置1Aは、タスク21A、タスク21B、タスクスケジューラ24を有するSWモデル26Aを有する。また、シミュレーション装置1Aは、HWモデル31A、31Bに対してポーリングし、HWモデル31A、31Bの状態の変化を監視するドライバ27を有する。図6において、図1と同一符号のユニットは第1の実施の形態と同様であるため、説明を割愛する。
図7は、第2の実施の形態におけるシミュレーション実行の遷移の一例を示す図である。ドライバ27は、HWモデル31A、31Bの処理が完了したタイミングでHWモデルに対しポーリングを行う。HWモデル31A、31Bは、ドライバ27から要求された処理の実行と、ドライバ27からのポーリングに対する状態通知処理を実行する。シミュレーション装置1Aは、処理の最後にポーリング処理が発生すること以外は、第1の実施の形態のシミュレーション装置1と同様の動作となる。
(第3の実施の形態)
第3の実施の形態では、実機がOSレスの場合についての説明をする。OSを含む場合は、OSのアイドラタスクのビジーループ処理が高速化の改善対象であるが、第3の実施の形態では、実機がOSレスの場合に高速化を図る例を説明する。
OSレスのソフトウェアで、外部とのタイミング調整のために時間経過を待つ場合、ビジーループを行うことがある。第3の実施の形態では、そのビジーループ処理のシミュレーション高速化を行う。
実施の形態で適用されるループ処理は、ループ外への副作用のないループ処理であることが必要となり、そのループ処理開始時に第1の実施の形態におけるアイドラ開始通知を行う。
ループ外への副作用のないループ処理のソースコードを検証対象ソフトウェアの中から抽出してアイドラ開始通知処理を挿入するには、コンパイラのプリプロセッサを利用することでも良いが、比較的長時間ループするようなループ箇所は一般的に多くないため、シミュレーション装置に対して外部から当該個所を指示する方法でも良い。
例えば、OSのアイドラタスクのビジーループは、検証対象ソフトウェアの一箇所である場合が多く、プログラムによって自動抽出するまでもない。
(第4の実施の形態)
第1の実施の形態で、例えばデジタル時計を模擬する場合、シミュレーション装置では以下の処理が行われる。
1.時間経過を待つ(アイドリング)。
2.時間が経つとタイマー割り込みが発生する。
3.ソフトウェア制御で時間表示を更新する。
ここで、1.で動作すべきHWモデル(本例ではタイマ)が無いため、第1の実施の形態ではHWモデルが直近に動作すべき時間まで、HWモデルの時間を進めて直ちに2.を実行する。この場合、時計は連続して時間更新することになる。この動作によって高速シミュレートを可能にし、且つ期待通りのシミュレーションを実現できる。
また一方、例えば電卓を模擬する場合、任意に発生するキー入力(シミュレーション装置外部(外界)の動作)がメインイベントとなり、キー入力された場合、計算して結果を表示する処理となる。ここで、キー入力が無い状態で一定時間経過するとパワーオフになる電卓を模擬する場合、第1の実施の形態の例ではパワーオンしてもすぐにパワーオフしてしまうため、所望のシミュレーションが期待できない。
第4の実施の形態のシミュレーション装置は、SWモデルがアイドリング状態になる際、動作すべきHWモデルがあればSWモデルのビジーループ処理を実行せず、HWモデルからの割込みが次に発生するまでHWモデルのみを実行することで、無駄なビジーループ処理のためにホスト計算機のリソースを使わず、且つシミュレーション実行を高速化する。
図8に、第4の実施の形態に係るシミュレーション装置の機能ブロックの一例を示す。尚、シミュレーション装置1Bは、CPU、主記憶装置、及びハードディスクドライブやフラッシュメモリ等の不揮発性記憶装置等のハードウェア資源を備えるコンピュータである。
第4の実施の形態は主に外界モデル40と外界モデル通信制御部14、および機器50を含む点が第1の実施の形態と異なる。図8において、図1と同一符号のユニットは第1の実施の形態と同様である。
シミュレーション装置1Bは、シミュレーションエンジン10B、SWモデル実行部20B、HWモデル実行部30B、外界モデル40を有する。これら各機能ブロックは、不揮発性記憶装置に予めインストールされたプログラムが主記憶装置にロードされ、CPUで演算実行されることで実現される。
SWモデル実行部20BとHWモデル実行部30Bは、シミュレーションエンジン10Bの制御下で動作するのに対し、外界モデル40は、シミュレーションエンジン10Bとは独立して、シミュレーションエンジン10Bと並列動作し、シミュレーションエンジン10Bの外界モデル通信制御部14を経由してHWモデルとインタラクティブな通信を行う。
外界モデル40は、シミュレーション装置1Bに内部接続、または外部接続された機器50(例えば、CPUボード、タッチパネル、ディスプレイ、キーボード、マウス、カメラ、ハードディスク、USB接続記憶装置など)との入出力を行い、シミュレーションエンジン10Bとの通信を行うプログラムであって、ホスト計算機上のCPUで直接動作するプログラムモジュールである。
外界モデル通信制御部14は、HWモデル31A、31Bと外界モデル40との間の双方向または片方向の通信を制御するプログラムモジュールである。
外界モデル40から外界モデル通信制御部14にデータ送受信の要求が通知されると、外界モデル通信制御部14は、スケジューラ13BにHWモデル31Aまたは31Bのデータ送受信処理の実行を指示する。スケジューラ13Bは、シミュレーション時間管理部11が持つスケジュール時間情報に依らず、HWモデル31Aまたは31Bのデータ送受信処理を実行し、HWモデルと外界モデル40の通信が成立する。
HWモデル31Aまたは31Bから外界モデル通信制御部14にデータ送受信の要求が通知されると、外界モデル通信制御部14はプロセス間通信により外界モデル40とのデータ通信を行い、HWモデルと外界モデル40の通信処理が成立する。
次に、シミュレーション装置1Bの動作について、図9のフローチャートを参照しつつ説明する。図9は、第1の実施の形態で説明した図5に対応したフローチャートである。シミュレーション装置1Bは、図4で示した各処理を実行し、その後、図9の各処理を実行し、図9の各処理が行われた後に図4で示した処理に戻る。また、図4、図5のフローチャートと同一符号の処理は第1の実施の形態と同様であるため、ここでは主に第1の実施の形態と異なるステップの説明をする。
スケジューラ13Bは、シミュレーション時間管理部11からTHWを取得する(S15)。スケジューラ13Bは、アイドル中フラグ15の状態を判別する(S16)。ここで、アイドル中フラグ15がONである場合(S16、No)、スケジューラ13Bはシミュレーション時間THWに動作すべきHWモデルの有無を調べる(S23)。
ここで、動作すべきHWモデルがある場合(S23、Yes)、HWモデルを実行させ(S25)、処理はステップS4へ戻る。動作すべきHWモデルが無い場合(S23、No)、スケジューラ13Bは、アイドル中フラグ15をOFFにリセットして(S24A)、通常のスケジューリング処理を継続する(S17へ進む)。第1の実施の形態では、直近に動作すべきHWモデルがシミュレーション時間THWに動作すべきか否か判断をせずに、直近に動作すべきHWモデルを動作させるか、またはシミュレーション時間THWに動作すべきHWモデルがなければ、直近にHWモデルが動作すべき時間までTHWを進めてHWモデルを実行させる。この処理が第4の実施の形態とは異なっている。動作すべきHWモデルが無いというのは、実行可能状態のHWモデルがないということを意味する。
外界モデルを含まないシミュレーション装置においては、SWモデルがHWモデルからの割込みを待つためにアイドリング実行する場合、必ず直近に動作すべきHWモデルが存在する。存在しなければ、永遠にSWモデルのアイドリングが解かれることがない。このことは、HWモデルまたはSWモデルにバグが潜在することを意味するので、直近に動作すべきHWモデルが存在しない場合、シミュレーション装置は検証対象SWモデル、HWモデルのバグ検出と判断してシミュレーションを停止しても良い。
一方、外界モデルを含むシミュレーション装置においては、SWモデルがHWモデルからの割込みを待つためにアイドリング実行する場合、その時点で実行可能状態のHWモデルが存在しなくても、時間経過した後に外界モデルからの通信が発生してHWモデルが実行可能状態になるので、シミュレーション実行を継続する必要がある。
第4の実施の形態によれば、SWモデルがHWモデルからの割込みを待つためにアイドリング実行する場合、動作すべきHWモデルがなければアイドラのビジーループ処理をシミュレーション単位時間づつ経過させながらHWモデルが実行可能状態になる事象発生を待ち合わせることが可能で、且つ、動作すべきHWモデルが存在する場合には、HWモデルのみを実行させることで、無駄なループ処理が無くなり、更に実行単位の切り替えが最少で済む。また、精度を劣化させることなく、実機の時間経過、タイミングを再現することができる。
ターゲットプロセッサが、アイドルモード(スリープモードと呼ぶこともある)をサポートするプロセッサである場合、OSはアイドリング状態に移行する際にアイドラでビジーループするのではなく、プロセッサをアイドルモードに切り替える。アイドルモードになったプロセッサは、ハードウェアからの割込みを受け付けると通常モードに切り替わる。
実施の形態は、ターゲットプロセッサがアイドルモードをサポートする場合にも適用可能であり、シミュレーション実行性能を高速化できる。プロセッサをアイドルモードに切り替える代わりに、次にHWモデルから割込みが発生するまでの時間だけSWモデルのシミュレーション時間を経過させることで実現できる。
以上説明したように、第1の実施の形態には、検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することで、検証対象の各処理の実行タイミングを再現するシミュレーション装置1が開示されている。シミュレーション装置1は、検証対象に実装されるハードウェアの処理を模擬するハードウェアモデルであってハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルを実行するHWモデル実行部30と、検証対象に実装されるソフトウェアの処理を模擬するソフトウェアモデルであってソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを実行するSWモデル実行部20とを有する。
また、第1の実施の形態のシミュレーション装置1は、ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶するとともに、ハードウェアモデルが通知したシミュレーション時間を取得して、第1シミュレーション時間を取得したシミュレーション時間経過させ、ソフトウェアモデルが通知したシミュレーション時間を取得して、第2シミュレーション時間を取得したシミュレーション時間経過させるシミュレーション時間管理部11と、第1シミュレーション時間と第2シミュレーション時間とを比較し、第1シミュレーション時間の方が第2シミュレーション時間よりも経過している場合、ソフトウェアモデルを実行させ、第2シミュレーション時間の方が第1シミュレーション時間よりも経過している場合、ハードウェアモデルを実行させるスケジューラ13と、ハードウェアモデルからソフトウェアモデルへの割込み通知が現在有るか否かの情報を記憶する割込みシミュレーション管理部12とを有する。
また、第1の実施の形態のスケジューラ13は、割込みシミュレーション管理部12に割込み通知の有無を問い合わせ、割込み通知がある場合、ソフトウェアモデルの割込みハンドラを実行させ、割込み通知が無い場合、ソフトウェアモデルのタスクを実行させる。
また、第1の実施の形態で開示されているシミュレーション装置1は、ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合(すなわち、ステップS1、YesからステップS2への処理)には、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりにハードウェアモデルのみを実行させる。すなわち、ステップS16で、アイドル中フラグ15がONならばHWモデルのみが実行され、また、ステップS4、YesからステップS5の処理で割り込み要因が発生し、その後アイドル中フラグ15がOFFになるまで、SWモデル(=アイドラ)は実行されず、HWモデルのみが実行される。
またシミュレーション装置1は、ハードウェアモデルから割込みが発生したときに(すなわち、ステップS4、Yesの処理)、前記第2シミュレーション時間を前記第1シミュレーション時間まで進める。すなわち、ステップS14の処理が実行される。
第4の実施の形態で開示されているシミュレーション装置1Bは、シミュレーション装置1Bに接続された機器との入出力を行い、シミュレーションエンジンとの通信を行うプログラムであって、シミュレーション装置1BのCPUで直接動作する外界モデル40と、ハードウェアモデルと外界モデル40との間の双方向または片方向の通信を制御する外界モデル通信制御部14を有する。
また、第4の実施の形態で開示されているシミュレーション装置1Bは、ソフトウェアモデルがハードウェアモデルからの割込を待つ場合(すなわち、ステップS1、YesからステップS2への処理)には、動作可能なハードウェアモデルがあれば(すなわち、ステップS23、Yes)、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりに動作可能なハードウェアモデルのみを実行させる。すなわち、ステップS23がYesの場合はHWモデルのみが実行される。
また、第4の実施の形態で開示されているシミュレーション装置1Bは、動作可能なハードウェアモデルが無ければ、ハードウェアモデルが動作可能になるまでアイドラを実行する。すなわち、ステップS23がNoの場合、SWモデル(アイドラ22)が実行される。アイドラ22の実行が継続する場合には、ステップS24Aで一旦OFFにリセットされたアイドル中フラグ15が再度ステップS2でONになる。
第4の実施の形態で開示されているシミュレーション装置1Bは、ハードウェアモデルが動作可能になれば(すなわちステップS23、Yes)、ソフトウェアモデルのアイドラを実行する代わりに動作可能なハードウェアモデルのみを実行させ(すなわち、ステップS25の処理)、ハードウェアモデルから割込みが発生したときに(すなわち、ステップS4、Yes)、第2シミュレーション時間を第1シミュレーション時間まで進める(すなわち、ステップS14の処理が実行される)。
また、上記の実施の形態で示したフローチャートやステップに示された各動作をコンピュータにより実行させるシミュレーションプログラムを提供することができる。このプログラムは、コンピュータにより読取可能な媒体、例えばCD−ROM、フレキシブルディスク、DVDディスク、光磁気ディスク、ICカード等の可搬型記憶媒体や、データベース等に記録されてコンピュータにより実行させることができる。
以上説明した実施形態によれば、無駄なループ処理が無くなり、且つ実行単位の切り替えが最小で済む。よってシミュレーション装置で実行する時間を短縮させ、実機の時間経過、タイミングの再現精度を劣化させることなく、シミュレーションの高速化を図ることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1、1A、1B シミュレーション装置、10、10B シミュレーションエンジン、11 シミュレーション時間管理部、12 割込みシミュレーション管理部、13、13B スケジューラ、14 外界モデル通信制御部、15 アイドル中フラグ、20、20A、20B SWモデル実行部、21A、21B タスク、22 アイドラ、23 割込みハンドラ、24 タスクスケジューラ、25 CPUモデル、26、26A SWモデル、27 ドライバ、30、30B HWモデル実行部、31A、31B HWモデル、32 割込みコントローラ、40 外界モデル、50 機器。

Claims (7)

  1. 検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、前記検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することにより、前記検証対象の各処理の実行タイミングを再現するシミュレーション装置であって、
    検証対象に実装されるハードウェアの処理を模擬するハードウェアモデルであって、該ハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルを実行するハードウェアモデル実行部と、
    前記検証対象に実装されるソフトウェアの処理を模擬するソフトウェアモデルであって、該ソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを実行するソフトウェアモデル実行部と、
    ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶するとともに、前記ハードウェアモデルが通知したシミュレーション時間を取得して、前記第1シミュレーション時間を取得したシミュレーション時間経過させ、前記ソフトウェアモデルが通知したシミュレーション時間を取得して、前記第2シミュレーション時間を取得したシミュレーション時間経過させるシミュレーション時間管理部と、
    前記第1シミュレーション時間と前記第2シミュレーション時間とを比較し、前記第1シミュレーション時間の方が前記第2シミュレーション時間よりも経過している場合、前記ソフトウェアモデルを実行させ、前記第2シミュレーション時間の方が前記第1シミュレーション時間よりも経過している場合、前記ハードウェアモデルを実行させる実行指示部と、
    前記ハードウェアモデルから前記ソフトウェアモデルへの割込み通知が現在有るか否かの情報を記憶する割込み管理部と、を有し、
    前記実行指示部は、前記割込み管理部に割込み通知の有無を問い合わせ、割込み通知がある場合、前記ソフトウェアモデルの割込みハンドラを実行させ、割込み通知が無い場合、前記ソフトウェアモデルのタスクを実行させ、ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合には、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりにハードウェアモデルのみを実行させ、ハードウェアモデルから割込みが発生したときに、前記第2シミュレーション時間を前記第1シミュレーション時間まで進めることを特徴とするシミュレーション装置。
  2. 請求項1に記載のシミュレーション装置において、
    さらに、前記ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合に、その時点の第1シミュレーション時間において動作すべきハードウェアモデルがなければ、直近にハードウェアモデルが動作すべき時間まで第1シミュレーション時間を進めてハードウェアモデルを動作させることを特徴とするシミュレーション装置。
  3. 検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、前記検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することにより、前記検証対象の各処理の実行タイミングを再現するシミュレーション処理を、コンピュータに実行させるシミュレーションプログラムであって、
    検証対象に実装されるハードウェアの処理を模擬するプログラムであるハードウェアモデルであって、該ハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルをコンピュータに実行させ、
    前記検証対象に実装されるソフトウェアの処理を模擬するプログラムであるソフトウェアモデルであって、該ソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを前記コンピュータに実行させ、
    ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶装置に記憶させるとともに、前記ハードウェアモデルが通知したシミュレーション時間を取得して、前記第1シミュレーション時間を取得したシミュレーション時間経過させ、前記ソフトウェアモデルが通知したシミュレーション時間を取得して、前記第2シミュレーション時間を取得したシミュレーション時間経過させ、
    前記第1シミュレーション時間と前記第2シミュレーション時間とを比較し、前記第1シミュレーション時間の方が前記第2シミュレーション時間よりも経過している場合、前記ソフトウェアモデルを実行させ、前記第2シミュレーション時間の方が前記第1シミュレーション時間よりも経過している場合、前記ハードウェアモデルを実行させる処理を前記コンピュータに実行させ、
    さらに、前記ソフトウェアモデルを実行させる場合、前記ハードウェアモデルから前記ソフトウェアモデルへの割込み通知が現在有るか否かの情報が記憶される割込み管理部に、割込み通知の有無を問い合わせ、割込み通知がある場合、前記ソフトウェアモデルの割込みハンドラを実行させ、割込み通知が無い場合、前記ソフトウェアモデルのタスクを実行させ、
    ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合には、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりにハードウェアモデルのみを実行させ、ハードウェアモデルから割込みが発生したときに、前記第2シミュレーション時間を前記第1シミュレーション時間まで進める処理を、前記コンピュータに実行させるシミュレーションプログラム。
  4. 請求項3に記載のシミュレーションプログラムにおいて、
    さらに、前記ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合に、その時点の第1シミュレーション時間において動作すべきハードウェアモデルがなければ、直近にハードウェアモデルが動作すべき時間まで第1シミュレーション時間を進めてハードウェアモデルを動作させる処理を、前記コンピュータに実行させることを特徴とするシミュレーションプログラム。
  5. 検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、前記検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することにより、前記検証対象の各処理の実行タイミングを再現するシミュレーション処理を、コンピュータが実行するシミュレーション方法であって、
    前記コンピュータが、
    検証対象に実装されるハードウェアの処理を模擬するプログラムであるハードウェアモデルであって、該ハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルを実行し、
    前記検証対象に実装されるソフトウェアの処理を模擬するプログラムであるソフトウェアモデルであって、該ソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを実行し、
    ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶装置に記憶させるとともに、前記ハードウェアモデルが通知したシミュレーション時間を取得して、前記第1シミュレーション時間を取得したシミュレーション時間経過させ、前記ソフトウェアモデルが通知したシミュレーション時間を取得して、前記第2シミュレーション時間を取得したシミュレーション時間経過させ、
    前記第1シミュレーション時間と前記第2シミュレーション時間とを比較し、前記第1シミュレーション時間の方が前記第2シミュレーション時間よりも経過している場合、前記ソフトウェアモデルを実行し、前記第2シミュレーション時間の方が前記第1シミュレーション時間よりも経過している場合、前記ハードウェアモデルを実行する処理を実行し、
    さらに、前記ソフトウェアモデルを実行する場合、前記ハードウェアモデルから前記ソフトウェアモデルへの割込み通知が現在有るか否かの情報が記憶される割込み管理部に、割込み通知の有無を問い合わせ、割込み通知がある場合、前記ソフトウェアモデルの割込みハンドラを実行し、割込み通知が無い場合、前記ソフトウェアモデルのタスクを実行し、
    ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合には、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりにハードウェアモデルのみを実行し、ハードウェアモデルから割込みが発生したときに、前記第2シミュレーション時間を前記第1シミュレーション時間まで進める処理を、
    実行するシミュレーション方法。
  6. 請求項5に記載のシミュレーション方法において、
    さらに、前記ソフトウェアモデルがハードウェアモデルからの割込みを待つ場合に、動作すべきハードウェアモデルがなければ、ハードウェアモデルが動作すべき時間まで第1シミュレーション時間を進めてハードウェアモデルを動作させることを特徴とするシミュレーション方法。
  7. 検証対象がハードウェアの処理とソフトウェアの処理とを行う場合に、前記検証対象がこれら処理を実行することで経過する時間の情報であるシミュレーション時間を管理することにより、前記検証対象の各処理の実行タイミングを再現するシミュレーション装置であって、
    検証対象に実装されるハードウェアの処理を模擬するハードウェアモデルであって、該ハードウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するハードウェアモデルを実行するハードウェアモデル実行部と、
    前記検証対象に実装されるソフトウェアの処理を模擬するソフトウェアモデルであって、該ソフトウェアモデルの処理によって経過するシミュレーション時間を処理ごとに通知するソフトウェアモデルを実行するソフトウェアモデル実行部と、
    ハードウェアモデルのシミュレーション時間の総経過時間である第1シミュレーション時間と、ソフトウェアモデルのシミュレーション時間の総経過時間である第2シミュレーション時間とを記憶するとともに、前記ハードウェアモデルが通知したシミュレーション時間を取得して、前記第1シミュレーション時間を取得したシミュレーション時間経過させ、前記ソフトウェアモデルが通知したシミュレーション時間を取得して、前記第2シミュレーション時間を取得したシミュレーション時間経過させるシミュレーション時間管理部と、
    前記第1シミュレーション時間と前記第2シミュレーション時間とを比較し、前記第1シミュレーション時間の方が前記第2シミュレーション時間よりも経過している場合、前記ソフトウェアモデルを実行させ、前記第2シミュレーション時間の方が前記第1シミュレーション時間よりも経過している場合、前記ハードウェアモデルを実行させる実行指示部と、
    前記ハードウェアモデルから前記ソフトウェアモデルへの割込通知が現在有るか否かの情報を記憶する割込み管理部と、
    前記シミュレーション装置に接続された機器との入出力を行い、シミュレーションエンジンとの通信を行うプログラムであって、前記シミュレーション装置のCPUで直接動作する外界モデルと、
    前記ハードウェアモデルと前記外界モデルとの間の双方向または片方向の通信を制御する外界モデル通信制御部と、
    を有し、
    前記実行指示部は、前記割込み管理部に割込み通知の有無を問い合わせ、割込み通知がある場合、前記ソフトウェアモデルの割込みハンドラを実行させ、割込みが無い場合、前記ソフトウェアモデルのタスクを実行させ、ソフトウェアモデルがハードウェアモデルからの割込を待つ場合には、動作可能なハードウェアモデルがあれば、ハードウェアモデルからの割込みが発生するまでソフトウェアモデルのアイドラを実行する代わりに動作可能なハードウェアモデルのみを実行させ、動作可能なハードウェアモデルが無ければ、ハードウェアモデルが動作可能になるまでアイドラを実行し、ハードウェアモデルが動作可能になればソフトウェアモデルのアイドラを実行する代わりに動作可能なハードウェアモデルのみを実行させ、ハードウェアモデルから割込みが発生したときに、第2シミュレーション時間を第1シミュレーション時間まで進めることを特徴とするシミュレーション装置。
JP2010132770A 2010-06-10 2010-06-10 シミュレーション装置、シミュレーションプログラム及び方法 Expired - Fee Related JP5450271B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010132770A JP5450271B2 (ja) 2010-06-10 2010-06-10 シミュレーション装置、シミュレーションプログラム及び方法
US13/156,449 US8744831B2 (en) 2010-06-10 2011-06-09 Simulation apparatus, simulation method and recording medium for recording simulation program
CN201110155067.9A CN102279768B (zh) 2010-06-10 2011-06-10 仿真装置以及仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010132770A JP5450271B2 (ja) 2010-06-10 2010-06-10 シミュレーション装置、シミュレーションプログラム及び方法

Publications (2)

Publication Number Publication Date
JP2011258045A true JP2011258045A (ja) 2011-12-22
JP5450271B2 JP5450271B2 (ja) 2014-03-26

Family

ID=45096921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010132770A Expired - Fee Related JP5450271B2 (ja) 2010-06-10 2010-06-10 シミュレーション装置、シミュレーションプログラム及び方法

Country Status (3)

Country Link
US (1) US8744831B2 (ja)
JP (1) JP5450271B2 (ja)
CN (1) CN102279768B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013179439A1 (ja) * 2012-05-31 2013-12-05 三菱電機株式会社 データ処理装置及びデータ処理システム及びシミュレーション方法及びプログラム
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム
US9444949B2 (en) 2013-11-27 2016-09-13 Kyocera Document Solutions Inc. Simulation apparatus, simulation system, and simulation method that ensure use of general-purpose PC
KR20180120380A (ko) * 2017-04-27 2018-11-06 국방과학연구소 빠르고 정확한 실행 시간 예측을 위한 하이브리드 명령어 집합 시뮬레이션 방법 및 시스템

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5625714B2 (ja) * 2010-10-07 2014-11-19 富士通セミコンダクター株式会社 シミュレーション装置、プログラム、記憶媒体、及び方法
JP6496278B2 (ja) * 2016-06-27 2019-04-03 ファナック株式会社 シミュレーションシステム
JP6751231B2 (ja) * 2016-07-07 2020-09-02 富士通株式会社 ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
US10963036B2 (en) 2018-04-16 2021-03-30 Nxp Usa, Inc. Idle loop detection and control for processors
CN114428722A (zh) * 2020-10-29 2022-05-03 上海阵量智能科技有限公司 硬件仿真方法、装置、设备及存储介质
CN115292102B (zh) * 2022-05-20 2024-05-28 芯华章科技股份有限公司 仿真方法、电子设备、可读存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6389379B1 (en) * 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6230114B1 (en) * 1999-10-29 2001-05-08 Vast Systems Technology Corporation Hardware and software co-simulation including executing an analyzed user program
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US7260517B2 (en) * 2001-06-17 2007-08-21 Brian Bailey Synchronization of multiple simulation domains in an EDA simulation environment
JP3951925B2 (ja) 2003-01-31 2007-08-01 セイコーエプソン株式会社 ハードウェア/ソフトウェア協調検証方法
JP4271072B2 (ja) 2004-03-31 2009-06-03 Okiセミコンダクタ株式会社 ソフトウェア検証モデル生成方法
JP4342392B2 (ja) 2004-07-06 2009-10-14 Okiセミコンダクタ株式会社 ソフトウェア検証モデル生成方法
JP2006163983A (ja) 2004-12-09 2006-06-22 Canon Inc リアルタイムosシミュレーション方式
JP4843554B2 (ja) 2007-05-11 2011-12-21 株式会社東芝 インターフェイスボード、シミュレータ、同期方法、同期プログラム
JP2008282314A (ja) 2007-05-14 2008-11-20 Toshiba Corp シミュレータ、シミュレーション方法
JP2008287308A (ja) 2007-05-15 2008-11-27 Toshiba Corp ブリッジプログラム、ブリッジ方法、シミュレータ
JP4975544B2 (ja) 2007-07-20 2012-07-11 富士通セミコンダクター株式会社 シミュレーション装置及びプログラム
JP4873423B2 (ja) 2007-12-27 2012-02-08 東芝ソリューション株式会社 仮想化プログラム、シミュレーション装置、仮想化方法
CN101593219A (zh) * 2008-05-30 2009-12-02 国际商业机器公司 动态切换仿真模式的仿真方法及仿真设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013179439A1 (ja) * 2012-05-31 2013-12-05 三菱電機株式会社 データ処理装置及びデータ処理システム及びシミュレーション方法及びプログラム
US9444949B2 (en) 2013-11-27 2016-09-13 Kyocera Document Solutions Inc. Simulation apparatus, simulation system, and simulation method that ensure use of general-purpose PC
JP2015170081A (ja) * 2014-03-06 2015-09-28 三菱電機株式会社 シミュレーション装置及びシミュレーションプログラム
KR20180120380A (ko) * 2017-04-27 2018-11-06 국방과학연구소 빠르고 정확한 실행 시간 예측을 위한 하이브리드 명령어 집합 시뮬레이션 방법 및 시스템
KR102007881B1 (ko) * 2017-04-27 2019-08-06 국방과학연구소 빠르고 정확한 실행 시간 예측을 위한 하이브리드 명령어 집합 시뮬레이션 방법 및 시스템

Also Published As

Publication number Publication date
JP5450271B2 (ja) 2014-03-26
US8744831B2 (en) 2014-06-03
CN102279768A (zh) 2011-12-14
CN102279768B (zh) 2014-06-25
US20110307236A1 (en) 2011-12-15

Similar Documents

Publication Publication Date Title
JP5450271B2 (ja) シミュレーション装置、シミュレーションプログラム及び方法
CA2795489C (en) Opportunistic multitasking
KR100864964B1 (ko) 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체
CN103890694B (zh) 基于任务紧急性来管理时钟速率的系统和方法
JP5312478B2 (ja) データ・プロセッサのパフォーマンス予測
CN102870061B (zh) 使用显示图像的选择性更新来控制平台功率消耗
CN103631655B (zh) 大核和小核中的任务调度
JP4996519B2 (ja) 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
JP2008506187A (ja) 複数のカーネルの並列実行のための方法およびシステム
US20230127112A1 (en) Sub-idle thread priority class
KR20110097859A (ko) 장치와, 이 장치의 전력 소비를 관리하는 방법 및 컴퓨터 판독가능 저장 매체
JP4910067B1 (ja) 電子機器および電子機器の省電力制御方法
CN103543982B (zh) 一种时钟频率管理方法及移动设备
JP5681576B2 (ja) ホストコントローラ装置、情報処理装置及びイベント情報出力方法
EP3855285B1 (en) System, apparatus and method for latency monitoring and response
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
JP3830133B2 (ja) 電力制御装置及び方法並びに電力制御プログラム
JP3823475B2 (ja) データ処理方法、記録媒体及びデータ処理装置
KR100930009B1 (ko) 인터럽트 처리방법
JP5786946B2 (ja) 電源制御方法およびシステム
JP2015095132A (ja) 情報処理システム、情報処理システムの制御方法及び管理装置の制御プログラム
JP2012027825A (ja) 情報処理装置及びそのサスペンド/リジューム方法
KR20170062365A (ko) 상황인식 리소스 핫플러그 관리 시스템 및 방법
JP2004326399A (ja) タスク管理システム
AU2013205570A1 (en) Opportunistic multitasking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120906

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130925

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: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131225

R150 Certificate of patent or registration of utility model

Ref document number: 5450271

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees