JP5226848B2 - シミュレーション装置及びプログラム - Google Patents

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

Info

Publication number
JP5226848B2
JP5226848B2 JP2011242985A JP2011242985A JP5226848B2 JP 5226848 B2 JP5226848 B2 JP 5226848B2 JP 2011242985 A JP2011242985 A JP 2011242985A JP 2011242985 A JP2011242985 A JP 2011242985A JP 5226848 B2 JP5226848 B2 JP 5226848B2
Authority
JP
Japan
Prior art keywords
simulation
software
time
scheduler
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.)
Expired - Fee Related
Application number
JP2011242985A
Other languages
English (en)
Other versions
JP2012027952A (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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2011242985A priority Critical patent/JP5226848B2/ja
Publication of JP2012027952A publication Critical patent/JP2012027952A/ja
Application granted granted Critical
Publication of JP5226848B2 publication Critical patent/JP5226848B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はシミュレーション装置及びプログラムに関し、特にターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するシミュレーション装置及びプログラムに関する。
従来、プロセッサを含むハードウェアと、その上で動作するソフトウェアで構成されるシステムの開発及び検証において、検証対象システム(以下ターゲットシステムという。)上のハードウェアをCベース言語のシステムレベル設計言語で記述したハードウェアモデルと、ターゲットプロセッサ上で動作するソフトウェアとを並列動作させて検証するシミュレーション装置があった。
このようなシミュレーション装置において、ソフトウェアを動作させる方法として以下のようなものがある。
(1)プロセッサの動作を模倣するISS(命令セット・シミュレータ)上でソフトウェアを動作する。
(2)ISSを使用せずにシミュレーション装置上のCPU(Central Processing Unit)で直接、ソフトウェアを動作させる。
ISSを使用しないシミュレーション装置において、ソフトウェアの処理時間を考慮するために、ソフトウェア部品のあるブロックを認識して、制御点を挿入し、制御点間の時間を入力する方法や、ソフトウェアのソースプログラムに、ある間隔で制御点を挿入し制御点間の時間を入れる方法などがあった(たとえば、特許文献1、2、3、非特許文献1参照)。また、ソフトウェアにハードウェアへのアクセス関数を組み込んで、スケジューラへの実行権の開放を行う手法などがあった(たとえば、特許文献4参照)。
特開2006−023852号公報 特開2005−293219号公報 特開2004−234528号公報 特開2005−18623号公報
「ハード−ソフト協調検証の高速化技術SystemCベースでSTARCが開発」、日経マイクロデバイス、2005年1月号、p.106−107
しかし、ISSを使用した従来のシミュレーション装置では、シミュレーションが1命令単位で命令を解釈し実行され、命令ごとにメモリ・アクセスが必要となり、スケジューラへの実行権の開放が頻繁に行われ、シミュレーションの実行に時間がかかるという問題があった。
また、ISSを使用しない従来のシミュレーション装置では、ソフトウェアやハードウェアモデルが通信時などに直接スケジューラに実行権を開放するため、ソフトウェア内のハードウェアアクセス関数の呼び出しにより、実行権の開放が頻繁に行われる問題や、検証対象となるソフトウェアとハードウェアモデルの記述に依存して、シミュレーション速度や精度が固定されてしまう問題があった。
また、検証対象のソフトウェアに制御点間の時間を入れる手法では、たとえば、C言語コードの10行程度に対して1回の頻度でwait()時間制御文が追加されるため、シミュレーション性能が低下するという問題があった。
また、従来では検証対象であるソフトウェアを変更しなければならなかったり、異なるOSへの移植が必要であり、手間がかかった。
発明の一観点によれば、検証対象のソフトウェアと、ハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行うスケジューラと、前記ソフトウェアの処理時間をシミュレーション装置上の処理時間をもとに算出するタイマと、を有し、前記スケジューラは、算出した前記ソフトウェアの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させるシミュレーション装置が提供される。
上記の構成によれば、スケジューラは、タイマによって算出されたソフトウェアの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させる。これにより、ソフトウェアの処理時間を考慮したハードウェアモデルとの協調検証が行われる。
開示のシミュレーション装置によれば、シミュレーションの精度を上げることができる。
第1の実施の形態のシミュレーション装置の概略を示す図である。 第2の実施の形態のシミュレーション装置の概略を示す図である。 シミュレーション装置の具体的なハードウェア構成である。 シミュレーション装置の詳細なソフトウェア構成例を示す図である。 タスクの切り替え時の動作を示すシーケンス図である。 検証対象ソフトウェアからハードウェアモデルへの同期アクセス時の動作を示すシーケンス図である。 検証対象ソフトウェアからハードウェアモデルへの非同期アクセス時の動作を示すシーケンス図である。 タイマが無効の場合のシミュレーション装置の動作を示すシーケンス図である。 タイマが有効の場合のシミュレーション装置の動作を示すシーケンス図である。
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、第1の実施の形態のシミュレーション装置の概略を示す図である。
第1の実施の形態のシミュレーション装置は、ターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するものであり、フレームワーク10内に、擬似OS11、擬似CPU12、通信手段13を有している。また、スケジューラ20を有している。
これらの構成は、いずれもSystemCなどのCベース言語で記述されたソフトウェア部品である。
また、ハードウェアモデルHW1…HWnは、ターゲットシステムのハードウェアをSystemCなどで記述したものである。
擬似OS11は、ターゲットプロセッサで使用するOSを模擬したものであり、擬似CPU12の制御のもと、検証対象ソフトウェアSWの実行をスケジューリングする機能などを有している。擬似OS11と検証対象ソフトウェアSW間の通信も、フレームワーク10内のAPI(Application Programming Interface)11aを用いて行う。このAPI11aは、ターゲットシステムに合わせて適宜変更することにより、検証対象ソフトウェアSWを特に変更することなく、ターゲットシステムのOSの変更などに対応させることができる。
擬似CPU12は、ターゲットプロセッサを模擬したものであり、CPUの実行状態を模倣するとともに、割り込み処理を制御する。また、擬似OS11と連携して、検証対象ソフトウェアSWのスケジューリングに応じて、スケジューラ20への実行権の開放を制御する。たとえば、シミュレーション時間上のある時点で実行可能なアプリケーションタスクなどを全て実行し終えたらスケジューラ20に実行権を開放し、スケジューリングされた次のシミュレーションプロセス(たとえばハードウェアモデルHWの実行など)を実行可能にする。
通信手段13は、ターゲットシステムの通信チャネルを模擬したものである。API13aを用いて、検証対象ソフトウェアSWと、ハードウェアモデルHW1…HWnとの通信や、ハードウェアモデルHW1…HWn間の通信を行う。
さらに、通信手段13は、検証対象ソフトウェアSWと、ハードウェアモデルHW1…HWn間、またはハードウェアモデルHW1…HWn間の通信の抽象度のレベルを制御する。たとえば、シミュレーション速度を優先する場合は、トランザクションレベルの抽象度、シミュレーション精度を優先する場合は、バス・サイクル・アキュレートな抽象度で動作するよう切り替える。
スケジューラ20は、フレームワーク10とハードウェアモデルHW1…HWnの実行スケジューリングを行う。具体的には、検証対象ソフトウェアSWなどを実行する擬似CPU12と、ハードウェアモデルHW1…HWnの評価タイミングを、イベント・ドリブン(またはタイミング・ドリブンともいう)でスケジューリングする。
なお、OSを使用しないソフトウェアの検証では、フレームワーク10内の擬似OS11を使用せず、擬似CPU12の制御で行われる。
上記の構成によれば、検証対象ソフトウェアSWは、フレームワーク10内の擬似CPU12の制御のもと、擬似OS11の実行スケジューリングにしたがって実行される。スケジューラ20への実行権の開放は、擬似OS11の実行スケジューリングにしたがって、擬似CPU12の制御のもと行われる。そして、スケジューラ20の実行スケジューリングに応じてハードウェアモデルHW1…HWnのタスクを実行できるようにする。これによって、検証対象ソフトウェアSWと、ハードウェアモデルHW1…HWnの協調動作を実現できる。
このような第1の実施の形態のシミュレーション装置によれば、検証対象ソフトウェアSWを変更せずに検証することができる。そして、従来のように、検証対象ソフトウェアSWに時間制御文などを挿入することで実行権の開放を行う場合に比べて、実行権開放の頻度を大幅に減少でき、シミュレーションを高速に行うことができる。
通常、ISSを使用してソフトウェアとハードウェアの協調検証を行うシミュレーション装置では、ターゲットシステムの1/1000程度の速度となり性能が悪いという問題がある。ISSを使用しないシミュレーション装置でもソフトウェアに、時間制御文を挿入する方式では、そのオーバーヘッドによりターゲットシステムの1/10〜1/100程度の速度である。しかし、上記のフレームワーク10を用いることにより、検証対象ソフトウェアSWを変更することなく、ターゲットシステムと同等またはそれ以上の速度(たとえば、プラットホームとなるシミュレーション装置上のCPUの速度)でシミュレーションを行うことができる。
また、通信手段13により通信の抽象度を制御することにより、検証対象ソフトウェアSW、ハードウェアモデルHW1…HWnを変更せずにシミュレーションの精度や、シミュレーション速度を、目的に応じて変更することができる。
また、上記のAPI11aにより、検証対象ソフトウェアSWを異なるOSに移植することなく検証することができる。
なお、スケジューラ20は、フレームワーク10内に設けるようにしてもよい。
ところで上記では、検証対象ソフトウェアSWの処理時間を考慮しない場合(アンタイムド)について説明したが、以下に示すようにして、検証対象ソフトウェアSWを変更せずに、処理時間を考慮する方式(タイムド)にしてもよい。
以下その仕組みを、第2の実施の形態のシミュレーション装置として説明する。
図2は、第2の実施の形態のシミュレーション装置の概略を示す図である。
第2の実施の形態のシミュレーション装置は、スケジューラ30と、スケジューラ30に内蔵されたタイマ制御部30a、タイマ30bを有している。
スケジューラ30は、イベント・ドリブンにて、検証対象ソフトウェアSWと、ハードウェアモデルHW1…HWnの実行スケジューリングを行う。
タイマ制御部30aは、外部から、たとえばユーザによって入力されるタイマ制御コマンドに応じて、タイマ30bの機能を有効、または無効にする。
タイマ30bは、検証対象ソフトウェアSWの処理時間をシミュレーション装置(たとえば、PC(パーソナルコンピュータ))上の処理時間から算出する。具体的には、ターゲットプロセッサと、シミュレーション装置上のプロセッサ(以下ホストCPUと呼ぶ)との性能差を換算して、検証対象ソフトウェアSWの処理時間を算出する。
タイマ30bが有効の場合、スケジューラ30は、タイマ30bが算出した検証対象ソフトウェアSWの処理時間をもとに、次のシミュレーションプロセスの開始を遅延させる。また、検証対象ソフトウェアSWの実行中に、タイマ30bの値をもとに次のイベント時間に達したことをスケジューラ30が検知すると、スケジューラ30は、検証対象ソフトウェアSWの実行を停止し、スケジューリングされているハードウェアモデルHW1…HWnの実行を開始させる。
また、タイマ機能を必要としない場合には、外部からのタイマ制御コマンドによりタイマ制御部30aの制御のもとタイマ30bが無効になり、検証対象ソフトウェアSWのタスクがWait状態となるまで検証対象ソフトウェアSWを実行する。
上記の構成によれば、検証対象ソフトウェアを変更して時間制御文を挿入しなくとも、タイマ30bによって、検証対象ソフトウェアSWの処理時間を考慮した検証を行うことができ、精度の高いシミュレーションを行うことができる。
また、性能評価などの場合はタイマ30bを有効に、機能検証だけの場合はタイマ30bを無効にするなどして、目的に応じて、シミュレーション精度またはシミュレーション速度を向上することができる。
なお、ここでは、タイマ制御部30aとタイマ30bとをスケジューラ30内に設けているが、スケジューラ30外に設けてタイマ30bの値をスケジューラ30に渡すような構成にしてもよい。
以下、本実施の形態のシミュレーション装置の詳細を説明する。
図3は、シミュレーション装置の具体的なハードウェア構成である。
シミュレーション装置50は、たとえばPCであり、ホストCPU51、ROM(Read Only Memory)52、RAM(Random Access Memory)53、HDD(Hard Disk Drive)54、グラフィック処理部55、入力I/F(Interface)56、通信I/F57などによって構成され、これらはバス58を介して相互に接続されている。
ここで、ホストCPU51は、ROM52や、HDD54に格納されているプログラムや、各種データに応じて各部を制御し、図1に示したフレームワーク10の各種機能や、スケジューラ20の機能を実現する。
ROM52は、ホストCPU51が実行する基本的なプログラムやデータを格納している。
RAM53は、ホストCPU51が実行途中のプログラムや、演算途中のデータを格納している。
HDD54は、ホストCPU51が実行するOS(たとえば、Windows(Microsoft Corporationの登録商標))や、シミュレーションプログラムや、検証対象ソフトウェアSW、ハードウェアモデルHW1…HWnなどの各種データを格納する。
グラフィック処理部55には、表示装置として、たとえば、ディスプレイ55aが接続されており、ホストCPU51からの描画命令にしたがって、ディスプレイ55a上に、シミュレーション結果などを表示する。
入力I/F56には、マウス56aやキーボード56bなどの入力装置が接続されており、ユーザにより入力された情報を受信し、バス58を介してホストCPU51に伝送する。
通信I/F57は、たとえば、企業内のLAN(Local Area Network)やWAN(Wide Area Network)や、インターネットなどのネットワーク57aと接続して通信を行う。
本実施の形態のシミュレーション装置は、図3のようなハードウェア構成により、以下のようなソフトウェア構成を実現する。
図4は、シミュレーション装置の詳細なソフトウェア構成例を示す図である。
なお、ここでは、図1と図2の機能を両方含めたシミュレーション装置のソフトウェア構成を示している。図中の黒矢印は、イベント通信を示しており、白抜きの矢印はその他の信号またはデータの流れを示している。
検証対象ソフトウェアSWは、ターゲットシステム上で動作する組み込みソフトである。たとえば、Cベース言語で記述された各アプリケーションタスク、ISR(割り込みサービスルーチン)、デバイスドライバなどがある。
ハードウェアモデルHWは、ターゲットシステムのハードウェアの機能をモデル化したものである。SystemC言語などで記述された各ハードウェアコンポーネントのトランザクションレベルのモデル、テストベンチなどを含む。モデルリング時に見積もり時間(精度)に基づいて動作タイミングが設定されている。
なお、ここでは図示の簡略化のため、ハードウェアモデルHWを1つのみ示しているが、図1、図2のように複数あってもよい。
フレームワーク60は、以下の各構成要素を含んでいる。
V−RTOS61は、ターゲットプロセッサで使用するRTOS(リアルタイムOS)をモデル化した仮想的なRTOSである。図1の擬似OS11に相当する。RTOSサービスの他、検証対象ソフトウェアSWのスケジューリング機能(OSスケジューラ)や、割り込み処理機能、I/O機能、ディスパッチ機能などを有している。
データ伝送API62は、検証対象ソフトウェアSWがハードウェアモデルHWとの間でデータの読み書きを行うための機能を提供するAPIである。
RTOS API63は、検証対象ソフトウェアSWがV−RTOS61と通信するための機能を提供するAPIである。ターゲットシステムのRTOSのAPIに合わせてカスタマイズすることができる。
通信チャネル64は、検証対象ソフトウェアSWとハードウェアモデルHW間、または複数のハードウェアモデル間でのデータ通信用のチャネルである。トランザクションレベルでの通信機能(データ通信、割り込み要求/応答など)を提供する。通信方式は、Point−to−Pointか、BFM(Bus Functional Model)かの選択が可能である。また、前述したように、通信の抽象度のレベルを制御して、シミュレーション速度を優先か、シミュレーション精度を優先かを切り替えることができる。
外部I/F65は、外部シミュレーションモデルEMとのインターフェースである。なお、外部シミュレーションモデルEMとは、ターゲットシステムの外部の構成を模擬したシミュレーションモデルである。たとえば、DLL(Dynamic Link Library)として用意された外部モデルや、フレームワーク60と同様の構成を有する他のフレームワークなどである。
V−CPU66は、ターゲットプロセッサをモデル化した仮想的なCPUである。図1の擬似CPU12に対応する。割り込み処理などを行う。
IRC(割り込みコントローラ)67は、ハードウェアモデルHWからの割り込みイベントを、V−CPU66に伝え、V−CPU66からの割り込み応答により割り込みイベントをクリアする。
データ伝送API68は、ハードウェアモデルHWが、検証対象ソフトウェアSWあるいは他のハードウェアモデルHWとの間でデータの読み書きを行う機能を提供するAPIである。
OSタイマ69は、ターゲットシステムのRTOSの時間管理に使用するタイマ機能をモデル化したものである。
シミュレーション制御部70は、ユーザからの入力に応じてシミュレーションの開始、停止などを制御する。
デバッグI/F71は、フレームワーク60の外部のデバッガ72とのインターフェースであり、フレームワーク60からデバッグに必要な情報をデバッガ72に渡す。
以上が、本実施の形態のシミュレーション装置においてフレームワーク60内に備えられた機能である。これらは、SystemCなどのCベース言語により記述される。
フレームワーク60外の構成要素を説明する。
デバッガ72は、MULTI(米国Green Hills Software, Inc.の商標)やVC++(Microsoft Corporationの登録商標)などによるソフトウェアデバッガである。フレームワーク60とは、デバッグI/F71を用いて通信する。デバッグ結果は、たとえば、GUI(Graphical User Interface)を用いて、図3で示したようなディスプレイ55aに表示する。
スケジューラ73は、フレームワーク60とハードウェアモデルHWの評価タイミングをイベント・ドリブンでスケジューリングする。また、スケジューラ73は、タイマ73a及びタイマ制御部73bを有している。
タイマ73aは、検証対象ソフトウェアSWの処理時間をシミュレーション装置上の処理時間を基に算出する。実際には、ターゲットプロセッサと、図3で示したようなホストCPU51との性能差を換算して、ターゲットプロセッサ上での検証対象ソフトウェアSWの処理時間を算出する。
タイマ制御部73bは、たとえば、ユーザから入力されるタイマ制御コマンドに応じて、タイマ73aを有効または無効にする。機能検証などの精度優先の検証の場合にはタイマ73aを有効とし、検証速度優先の場合には無効とする。
トレース出力部74は、RTOS動作トレース(V−RTOS、組み込みソフト、割り込み動作状況のログ)、通信イベントトレース(RTOS API63の呼び出し、データ送受信、割り込みなどの通信イベントのログ)、ハードウェアモデルHWのイベントトレース(各ハードウェアコンポーネントの動作状態やI/Oアクセスのログ)などを出力し、たとえば、GUIを用いて、図3で示したようなディスプレイ55aに表示させる。
OS75は、シミュレーション装置のOS(たとえば、Windows)である。
エラーログ出力部76は、フレームワーク60のエラー(違法な設定、制限事項違反などの検出結果)、V−RTOS61のエラー(API引数エラー、制限事項違反などの検出結果)、通信エラー(プロトコル違反、リソースオーバーフロー、API引数エラー、制限事項違反などの検出結果)、ハードウェアモデルHWのエラー(プロトコル違反、リソースオーバーフロー、制限事項違反などの検出結果)、外部I/F65のエラー(通信エラーの検出結果)、デバッガ72のエラー(MULTI/VC++との通信エラーの検出結果)、SystemCシミュレータエラー(SystemCシミュレータの例外事象の検出結果)、プラットフォームエラー(Windowsの例外事象の検出結果)などを出力し、たとえば、GUIを用いて、図3で示したようなディスプレイ55aに表示させる。
上記のような構成で、フレームワーク60内のRTOS API63や、IRC67、OSタイマ69などは、ターゲットシステムに合わせて適宜カスタマイズされて使用される。
以下このようなシミュレーション装置の動作を説明する。
まず、検証対象ソフトウェアSWのタスクの切り替え時の動作を説明する。
図5は、タスクの切り替え時の動作を示すシーケンス図である。
実行中のアプリケーションタスク(以下タスクと略す)AからタスクBへのタスク切り替え時の動作例を示している。
実行中のタスクAが、タスクBを開始するRTOS API63であるTask_Startサービスをコールすると、RTOS API63を介してフレームワーク60内のOSスケジューラが呼び出される。OSスケジューラは、タスクAの状態をWait状態に設定し、タスクBの状態をRun状態に設定して、ディスパッチャを呼び出す。ディスパッチャは、スケジューラ73に対して、タスクBの開始要求:Wakeup Task Bを発行する。
スケジューラ73はこの要求を受け、タスクBを、実行すべきシミュレーションプロセスのキューに登録(キューイング)する。また、ディスパッチャは、スケジューラ73に対して、タスクAの実行停止要求:Wait Task Aを発行する。
スケジューラ73はこの要求を受け、タスクAの実行を停止し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、スケジューリング結果によっては、他のハードウェアモデルHWなどが先に実行される場合もある。
スケジューリングの結果、先にキューイングされたタスクBが選択されると、ディスパッチャがWaitから復帰する。そして、OSスケジューラによってフレームワーク60に内蔵されたV−RTOS61で実行すべきタスクのスケジューリングが行われる。ハードウェアモデルHWからの割り込みがなければ、OSスケジューラは、先に設定されたタスクの状態(タスクA:Wait状態、タスクB:Run状態)にしたがって、タスクBを起動させる。
次に、検証対象ソフトウェアSWからハードウェアモデルHWへの同期アクセス時の動作を説明する。
図6は、検証対象ソフトウェアからハードウェアモデルへの同期アクセス時の動作を示すシーケンス図である。
ここでは、検証対象ソフトウェアSWのタスクAからハードウェアモデルHWへの同期アクセス時の動作例を示している。
実行中のタスクAが、ハードウェアモデルHWからデータを読み出すデータ伝送API62のData_Read(同期)サービスをコールすると、データ伝送API62を介してフレームワーク60内の通信チャネル64が呼び出される。通信チャネル64は、Data_Readのイベントを、スケジューラ73を介してハードウェアモデルHWに通知する。
スケジューラ73は、イベントをシミュレーションプロセスのキューに登録(キューイング)し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、複数のハードウェアモデルHWがある場合、スケジューリング結果によっては、他のハードウェアモデルHWなどが先に実行される場合もある。
スケジューリングの結果、先にキューイングされたハードウェアモデルHWが選択されると、ハードウェアモデルHWのデータ読み出し機能が実行され、該当するデータが通信チャネル64に送出される。この処理が終了すると、スケジューラ73は、必要に応じてシミュレーションプロセスのキューに登録(キューイング)し、次に実行すべきシミュレーションプロセスのスケジューリングを行う。スケジューリングの結果、先にキューイングされたタスクAが選択されると、通信チャネル64からのデータの読み出しが行われ、データ伝送API62を通じて、タスクAに読み出しデータが渡される。
次に、検証対象ソフトウェアSWからハードウェアモデルHWへの非同期アクセス時の動作を説明する。
図7は、検証対象ソフトウェアからハードウェアモデルへの非同期アクセス時の動作を示すシーケンス図である。
ここでは、検証対象ソフトウェアSWのタスクAからハードウェアモデルHWへの非同期アクセス時の動作を示している。
実行中のハードウェアモデルHWが、データ伝送API68のData_Write(非同期)サービスをコールすると、データ伝送API68を介してフレームワーク60内の通信チャネル64が呼び出される。通信チャネル64は、Data_Writeのデータを通信チャネル64内に保持する。
ハードウェアモデルHWのシミュレーションプロセスの実行を終了すると、スケジューラ73は、次に実行すべきシミュレーションプロセスのスケジューリングを行う。このとき、スケジューリング結果によっては、他のハードウェアモデルHWなどが先に実行される場合もある。
スケジューリングの結果、先にキューイングされたタスクAが選択されると、タスクAの実行が再開される。タスクAの処理の中でデータ伝送API62のData_Read(非同期)データ読み出し機能が実行され、該当データが通信チャネル64から読み出される。
次に、タイマ機能について説明する。
図8は、タイマが無効の場合のシミュレーション装置の動作を示すシーケンス図である。
ここでは、まず、タスクAとタスクBの処理が、図5で示したようなタスク切り替え処理によって実行された場合について図示されている。
タスクAやタスクBに関する検証対象ソフトウェアSWのスケジューラ73上でのシミュレーション時間における遅延時間はゼロとなる。したがって、シミュレーション時間上のある時点で実行可能な全てのソフトウェア処理がシミュレーションされ、それらが終了するとスケジューラ73に戻る。
スケジューラ73は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。図8の例では、ハードウェアモデルHWのシミュレーションプロセスが実行されている。その結果、割り込みが発生すると、スケジューラ73は割り込みイベントをキューイングする。
ハードウェアモデルHWのシミュレーションプロセスの実行が終了すると、スケジューラ73は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。図8の例では、割り込みイベントにより、ISRのシミュレーションプロセスが実行される。
ISRの実行が終了するとスケジューラ73に戻る。スケジューラ73は、イベント時間のスケジューリングに基づいて次のシミュレーション時刻まで進める。たとえば、ハードウェアモデルHWのシミュレーションプロセスが実行される。
次に、タイマ73aが有効のときの動作を説明する。
図9は、タイマが有効の場合のシミュレーション装置の動作を示すシーケンス図である。
前述したように、タスクAやタスクBに関する検証対象ソフトウェアSWのスケジューラ73上でのシミュレーション時間上の遅延時間はゼロとなる。しかし、タイマ73aが有効の場合、タイマ73aは、シミュレーション装置上の処理時間から、ターゲットプロセッサとホストCPU51との性能差を換算して、シミュレーション時間上の検証対象ソフトウェアSWの処理時間を算出する。
したがって、スケジューラ73は、シミュレーション時間上のある時点で開始されたソフトウェア処理のシミュレーションが終了した時点で、ソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。図9の例では、まずタスクAのシミュレーションプロセスが終了すると、そのソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。そして、スケジューラ73は、スケジューリングに基づいてそのシミュレーション時刻に実行すべきシミュレーションプロセスを実行する。図9の例では、タスクBのシミュレーションプロセスが実行される。
タスクBのシミュレーションプロセスが終了すると、そのソフトウェア処理に相当する遅延時間をシミュレーション時間上で進める。そして、スケジューラ73は、スケジューリングに基づいて、そのシミュレーション時刻に実行すべきシミュレーションプロセスを決定する。たとえば、図9のようにハードウェアモデルHWのシミュレーションプロセスが実行される。その結果、割り込みが発生すると、スケジューラ73は割り込みイベントをキューイングする。
ハードウェアモデルHWのシミュレーションプロセスの実行が終了すると、スケジューラ73は、イベント時間のスケジューリングに基づいて次のシミュレーションプロセスを実行させる。これにより、たとえば、割り込みイベントに基づきISRのシミュレーションプロセスが実行される。
スケジューラ73は、ISRの実行中に、タイマ73aより次のイベント時間に達したこと(タイムアウト)の通知を受けると、ISRのシミュレーションプロセスを停止する。そして、スケジューラ73は、当該シミュレーション時刻にスケジューリングされている、シミュレーションプロセス、たとえば図9のようにハードウェアモデルHWのシミュレーションプロセスを実行する。そして、ハードウェアモデルHWのシミュレーションプロセスの実行が終了すると、ISRのシミュレーションプロセスを再開する。
このようなタイマ機能を用いると、検証対象ソフトウェアSWを変更して時間制御文などを挿入することなく、ソフトウェアの処理時間を考慮した精度のよいシミュレーションが可能になる。
以上のように、本実施の形態のシミュレーション装置によれば、検証対象ソフトウェアSWを変更することなく、ハードウェアモデルHWとの協調検証を、シミュレーション速度やシミュレーション精度を検証目的に応じて向上させることができる。
以上、本発明を実施の形態に基づいて説明したが、本発明は上記に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
たとえば、上記では1つの擬似CPU(V−CPU)を用いたが、マルチCPUに対応して複数設けるようにしてもよい。
10 フレームワーク
11 擬似OS
11a、13a API
12 擬似CPU
13 通信手段
20 スケジューラ
SW 検証対象ソフトウェア
HW1…HWn ハードウェアモデル

Claims (5)

  1. ターゲットプロセッサ上で動作するソフトウェアと、ハードウェアとの協調動作を検証するシミュレーション装置において、
    検証対象の前記ソフトウェアと、前記ハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行うスケジューラと、
    前記ソフトウェアの処理時間を前記シミュレーション装置上の処理時間をもとに算出するタイマと、
    を有し、
    前記スケジューラは、前記ソフトウェアのシミュレーションが終了すると、シミュレーション時間上の時刻を、算出された前記ソフトウェアの処理時間分進め、進めた時刻において予定されたシミュレーションプロセスを実行させることを特徴とするシミュレーション装置。
  2. 前記タイマは、前記シミュレーション装置のプロセッサと、前記ターゲットプロセッサとの性能差を換算して、前記ソフトウェアの処理時間を算出することを特徴とする請求項1記載のシミュレーション装置。
  3. 前記スケジューラは、前記ハードウェアモデルの評価タイミングをイベント・ドリブンでスケジューリングし、前記ソフトウェアの実行中に、前記タイマの値をもとに次のイベント時間に達したことを検知すると、前記ソフトウェアの実行を停止し、スケジューリングされている他のシミュレーションプロセスを実行することを特徴とする請求項1または2記載のシミュレーション装置。
  4. 入力される制御命令に応じて、前記タイマの機能を有効、または無効にするタイマ制御部を更に有することを特徴とする請求項1乃至3のいずれか一項に記載のシミュレーション装置。
  5. ターゲットプロセッサ上で動作する検証対象のソフトウェアと、前記ソフトウェアと協調動作するハードウェアをシステムレベル設計言語で表現したハードウェアモデルの実行スケジューリングを行い、
    前記ソフトウェアの処理時間をシミュレーション装置上の処理時間をもとに算出し、
    前記ソフトウェアのシミュレーションが終了すると、シミュレーション時間上の時刻を、算出された前記ソフトウェアの処理時間分進め、進めた時刻において予定されたシミュレーションプロセスを実行する、
    処理をコンピュータに実行させるプログラム。
JP2011242985A 2011-11-07 2011-11-07 シミュレーション装置及びプログラム Expired - Fee Related JP5226848B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011242985A JP5226848B2 (ja) 2011-11-07 2011-11-07 シミュレーション装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011242985A JP5226848B2 (ja) 2011-11-07 2011-11-07 シミュレーション装置及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007189317A Division JP4975544B2 (ja) 2007-07-20 2007-07-20 シミュレーション装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2012027952A JP2012027952A (ja) 2012-02-09
JP5226848B2 true JP5226848B2 (ja) 2013-07-03

Family

ID=45780712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011242985A Expired - Fee Related JP5226848B2 (ja) 2011-11-07 2011-11-07 シミュレーション装置及びプログラム

Country Status (1)

Country Link
JP (1) JP5226848B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7185241B1 (ja) 2021-08-27 2022-12-07 国立大学法人千葉大学 反射光分布測定装置及び方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105354075B (zh) * 2015-10-20 2018-10-26 记忆科技(深圳)有限公司 一种软硬件协同仿真的同步方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005018623A (ja) * 2003-06-27 2005-01-20 Sony Corp シミュレーション装置およびシミュレーション方法
JP4549652B2 (ja) * 2003-10-27 2010-09-22 パナソニック株式会社 プロセッサシステム
JP2005148901A (ja) * 2003-11-12 2005-06-09 Hitachi Ltd ジョブスケジューリングシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7185241B1 (ja) 2021-08-27 2022-12-07 国立大学法人千葉大学 反射光分布測定装置及び方法

Also Published As

Publication number Publication date
JP2012027952A (ja) 2012-02-09

Similar Documents

Publication Publication Date Title
JP4975544B2 (ja) シミュレーション装置及びプログラム
US6427224B1 (en) Method for efficient verification of system-on-chip integrated circuit designs including an embedded processor
Bringmann et al. The next generation of virtual prototyping: Ultra-fast yet accurate simulation of HW/SW systems
De Schutter Better Software. Faster!: Best Practices in Virtual Prototyping
US9418181B2 (en) Simulated input/output devices
Bouchhima et al. Fast and accurate timed execution of high level embedded software using HW/SW interface simulation model
Schirner et al. Fast and accurate processor models for efficient MPSoC design
Gerstlauer et al. Abstract system-level models for early performance and power exploration
Posadas et al. RTOS modeling in SystemC for real-time embedded SW simulation: A POSIX model
Schirner et al. Introducing preemptive scheduling in abstract RTOS models using result oriented modeling
Brandberg et al. A SimEvents model for the analysis of scheduling and memory access delays in multicores
US20170308629A1 (en) Sliding Time Window Control Mechanism for Parallel Execution of Multiple Processor Core Models in a Virtual Platform Simulation
Posadas et al. POSIX modeling in SystemC
US20120197625A1 (en) Data-dependency-Oriented Modeling Approach for Efficient Simulation of OS Preemptive Scheduling
Abdi et al. Automatic TLM generation for early validation of multicore systems
JP5226848B2 (ja) シミュレーション装置及びプログラム
Plyaskin et al. High-level timing analysis of concurrent applications on MPSoC platforms using memory-aware trace-driven simulations
JP6249827B2 (ja) シミュレーション装置及びシミュレーションプログラム
EP4092531A1 (en) Systems, methods, and apparatus for coordinating computation systems
Razaghi et al. Predictive OS modeling for host-compiled simulation of periodic real-time task sets
Chatelain et al. High-level architectural co-simulation using Esterel and C
Mooney III Hardware/Software co-design of run-time systems
JP2005018623A (ja) シミュレーション装置およびシミュレーション方法
Posadas et al. Early modeling of linux-based rtos platforms in a systemc time-approximate co-simulation environment
Ko et al. Hardware-in-the-loop simulation for CPU/GPU heterogeneous platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121109

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130314

R150 Certificate of patent or registration of utility model

Ref document number: 5226848

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees