JP5262774B2 - シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法 - Google Patents

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

Info

Publication number
JP5262774B2
JP5262774B2 JP2009022799A JP2009022799A JP5262774B2 JP 5262774 B2 JP5262774 B2 JP 5262774B2 JP 2009022799 A JP2009022799 A JP 2009022799A JP 2009022799 A JP2009022799 A JP 2009022799A JP 5262774 B2 JP5262774 B2 JP 5262774B2
Authority
JP
Japan
Prior art keywords
execution
simulation
system level
control
model
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
JP2009022799A
Other languages
English (en)
Other versions
JP2010181961A (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 JP2009022799A priority Critical patent/JP5262774B2/ja
Publication of JP2010181961A publication Critical patent/JP2010181961A/ja
Application granted granted Critical
Publication of JP5262774B2 publication Critical patent/JP5262774B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、ハードウェアモデルとソフトウェアモデルとを含む組み込み機器等に内蔵される電子装置等のシステムレベルシミュレーションを制御する技術に関する。
組み込みプロセッサやSoC(System on Chip)が搭載された携帯電話などの電子機器を開発する作業工程では、システムレベルでのシミュレーションがおこなわれることがある。このシステムレベルシミュレーションでは、システム内に含まれる電子装置・ハードウェアをモデル化して、シミュレータを利用してシミュレーションをおこなう。システム内にCPU(Central Processing Unit)を含む場合には、そのCPUをモデル化して、ハードウェアモデルに組み込み、そのハードウェアモデル内のCPU上でソフトウェアを動作させる。
また、このシステムを記述するための言語としてSystemCがある。SystemCには、シミュレーションの実行、終了、停止などを制御するための構文がある。具体的には、たとえば、sc_start()は、シミュレーションを指定した時間まで実行させたり、イベントがなくなるまで実行させたりすることができる。
従来においては、半導体試験装置の動作をエミュレートして半導体試験用プログラムの検証をおこなうための各種技術が提供されている。たとえば、半導体デバイスの試験用の技術として、アナログ出力端子を有する被検査用半導体デバイスに試験信号が入力されたときに、対応して出力される試験信号を擬似的に発生させるものがある(たとえば、下記特許文献1参照。)。
また、論理回路の論理シミュレーションにおいて、1つの試験命令を実行するたびに、その結果値と期待値とを比較することで、試験対象論理回路モデルに不良が発生した場合に、不良の要因である試験命令を抽出する技術がある(たとえば、下記特許文献2参照。)。
特開2002−333469号公報 特開平5−61935号公報
しかしながら、従来のシステムレベルシミュレーションでは、システム内のCPU上で動作するアプリケーションから、システムレベルシミュレーション自体を制御する手段がなかった。このため、アプリケーションが特定のポイントまで実行されたときに、システムレベルシミュレーションの実行を自動制御することが難しいという問題がある。
具体的には、たとえば、アプリケーションが特定のポイントまで実行されたときにシステムレベルシミュレーションを終了させたい場合がある。このような場合、ユーザが、システムレベルシミュレーションの進行状況を監視し、アプリケーションの特定のポイントまで実行されたことを確認して、システムレベルシミュレーションを終了させるなどの面倒な作業が必要となる。
また、特定のポイントまで実行されたことをユーザが見過ごしてしまうと、最悪の場合、最初からシステムレベルシミュレーションをやり直す必要があり、シミュレーション期間の長期化を招くという問題がある。さらに、システムレベルシミュレーションに使用できる計算機リソースやライセンスリソースには限りがあるため、あるシスレムレベルシミュレーションが長期化するほど、他のシステムレベルシミュレーションの長期化を引き起こすという問題がある。
本開示技術は、上述した従来技術による問題点を解消するため、システムレベルシミュレーションにかかる作業負担の軽減化およびシミュレーション期間の短縮化を図るシミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本開示技術は、ハードウェアモデルとソフトウェアモデルとを含むシステムレベルシミュレーションを実行し、前記ソフトウェアモデルの特定の命令が実行された結果、前記ハードウェアモデル内のモジュールのモデルのうち前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルに対するアクセス要求を受け付け、前記アクセス要求を受け付けた場合、前記システムレベルシミュレーションを実行制御することを要件とする。
本開示技術によれば、システム内のCPU上で動作するアプリケーションから、システムレベルシミュレーションを制御することができる。
本シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法によれば、システムレベルシミュレーションにかかる作業負担の軽減化およびシミュレーション期間の短縮化を図ることができるという効果を奏する。
システムレベルシミュレーション装置のシステム構成図(その1)である。 ホストマシンのハードウェア構成を示すブロック図である。 ホストマシンの機能的構成を示すブロック図である。 制御用仮想デバイスの機能に関する記述例を示す説明図である。 制御用仮想デバイスの終了の機能に関する記述例を示す説明図である。 制御用仮想デバイスの優先度制御の機能に関する記述例を示す説明図である 制御用仮想デバイスのイメージダンプの機能に関する記述例を示す説明図(その1)である。 制御用仮想デバイスのイメージダンプの機能に関する記述例を示す説明図(その2)である。 制御用仮想デバイスの停止の機能に関する記述例を示す説明図である。 システムレベルシミュレーション装置のシステム構成図(その2)である。 ホストマシンのシミュレーション制御処理手順の一例を示すフローチャートである。 シミュレーション制御処理の具体的な処理手順の一例を示すフローチャート(その1)である。 シミュレーション制御処理の具体的な処理手順の一例を示すフローチャート(その2)である。
以下に添付図面を参照して、この発明にかかるシミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法の好適な実施の形態を詳細に説明する。なお、本明細書において、シミュレーション装置とは、シミュレーション制御プログラムがインストールされたホストマシンである。
(システムレベルシミュレーション装置(システムレベルシミュレータ)のシステム構成)
まず、実施の形態にかかるシステムレベルシミュレーションを実行するホストマシン100に構築されるシステムレベルシミュレーション装置のシステム構成について説明する。図1は、システムレベルシミュレーション装置のシステム構成図(その1)である。図1において、システムレベルシミュレーション装置は、OS(Operation System)101と、ESL(Electronic system level)シミュレータカーネル102と、SystemCライブラリ103と、シミュレーション対象104と、システムレベルシミュレーション実行するホストマシン100と、を有している。
OS101は、システムレベルシミュレーション実行するホストマシン100全体を管理するソフトウェアプログラムである。ESLシミュレータカーネル102は、シミュレーション対象104の動作を電子システムレベルで模擬するためのシミュレータである。SystemCライブラリ103は、特定の機能のプログラムを他のプログラムから利用可能に部品化し、アーカイブ化やライブラリ化された電子ファイルにまとめたものである。
ここで、シミュレーション対象104のハードウェアモデル110は、CPU111と、メインメモリ112と、周辺デバイス113と、制御用仮想デバイス114と、バス115と、を含む構成である。また、各構成部はバス115によってそれぞれ接続されている。
CPU111は、ソフトウェアモデル120を実行できるソフトウェアモジュールである。メインメモリ112は、CPU111のプログラム格納エリアやデータ格納エリアやワークエリアの記憶装置(メモリ)として使用されるソフトウェアモジュールである。周辺デバイス113は、入出力装置(I/O)などの周辺装置(不図示)を制御するためのソフトウェアモジュールである。制御用仮想デバイス114は、システムレベルシミュレーションの実行を制御するためのソフトウェアモジュールである。
また、ソフトウェアモデル120は、OS121と、制御用仮想デバイスドライバ122と、アプリケーションプログラム123と、を含む構成である。OS121は、ハードウェアモデル110の一部(メインメモリ112、周辺デバイス113)やアプリケーションプログラム123、制御用仮想デバイスドライバ122などを管理するCPU111上で動作するソフトウェアプログラムである。制御用仮想デバイスドライバ122は、制御用仮想デバイス114を操作するためのソフトウェアプログラムである。
アプリケーションプログラム123は、CPU111上で動作させるユーザプログラムである。このアプリケーションプログラム123には、制御用仮想デバイス114のAPI(Application Programming Interface)を用いて、任意のポイントで各種操作を実行するための操作指示が記述されている。操作としては、たとえば、システムレベルシミュレーションの実行を終了させるものがある。
ここで、システムレベルシミュレーションのシステム概要について説明する。(1)ESLシミュレータカーネル102が、SystemCライブラリ103と連携して、シミュレーション対象104のハードウェアモデル110を実行する。ハードウェアモデル110内のCPU111は、OS121、アプリケーションプログラム123を実行する。(2)アプリケーションプログラム123の実行中に制御用仮想デバイス114を操作するため、制御用仮想デバイスドライバ122のAPIが呼び出される。
(3)APIの呼び出しによって、OS121が、制御用仮想デバイスドライバ122にAPIの呼び出しを通知し、CPU111が制御用仮想デバイスドライバ122を実行する。(4)CPU111が、バス115を介して、制御用仮想デバイス114の特定のアドレスに対してアクセスする。(5)制御用仮想デバイス114が、ESLシミュレータカーネル102やOS101に対して指示を出して、システムレベルシミュレーションに対してAPIで指示された操作を実行する。
これにより、ハードウェアモデル110内のCPU111上で動作しているアプリケーションプログラム123から、システムレベルシミュレーションを制御することができる。この結果、アプリケーションプログラム123が特定のポイントまで実行されたときに、システムレベルシミュレーションに対する任意の操作を実行することができる。
(ホストマシンのハードウェア構成)
つぎに、実施の形態にかかるホストマシン100のハードウェア構成について説明する。図2は、ホストマシンのハードウェア構成を示すブロック図である。図2において、ホストマシン100は、CPU201と、ROM(Read‐Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、光ディスクドライブ206と、光ディスク207と、ディスプレイ208と、I/F(Interface)209と、キーボード210と、マウス211と、スキャナ212と、プリンタ213と、を備えている。また、各構成部はバス200によってそれぞれ接続されている。
ここで、CPU201は、ホストマシン100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶している。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
光ディスクドライブ206は、CPU201の制御にしたがって光ディスク207に対するデータのリード/ライトを制御する。光ディスク207は、光ディスクドライブ206の制御で書き込まれたデータを記憶したり、光ディスク207に記憶されたデータをコンピュータに読み取らせたりする。
ディスプレイ208は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ208は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
インターフェース(以下、「I/F」と略する。)209は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク214に接続され、このネットワーク214を介して他の装置に接続される。そして、I/F209は、ネットワーク214と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F209には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード210は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス211は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ212は、画像を光学的に読み取り、ホストマシン100内に画像データを取り込む。なお、スキャナ212は、OCR(Optical Character Reader)機能を持たせてもよい。また、プリンタ213は、画像データや文書データを印刷する。プリンタ213には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(ホストマシンの機能的構成)
つぎに、実施の形態にかかるホストマシン100の機能的構成について説明する。図3は、ホストマシンの機能的構成を示すブロック図である。図3において、ホストマシン100は、実行部301と、受付部302と、実行制御部303と、判定部304と、出力部305と、を含む構成である。
この制御部となる機能(実行部301〜出力部305)は、具体的には、たとえば、図2に示したROM202、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶されたプログラムをCPU201に実行させることにより、または、I/F209により、その機能を実現する。
実行部301は、ハードウェアモデルとソフトウェアモデルとのシステムレベルシミュレーションを実行する機能を有する。ここで、ハードウェアモデルとは、ハードウェアの機能をC/C++、SystemCなどで記述したプログラムによって実現するモデルである。ソフトウェアモデルとは、ハードウェアモデル内のCPU上で動作するプログラムである。
具体的には、たとえば、ESLシミュレータカーネル102(図1参照)が、システムレベルシミュレーションを実行する。そうすると、ハードウェアモデル110内のCPU111が実行され、CPU111はその上で動作するアプリケーションプログラム123を実行する。なお、ESLシミュレータカーネル102は、システムレベルシミュレーションの実行を制御する機能を有している。
CPU111は、アプリケーションプログラム123の特定の命令、または、命令列が実行された結果、システムレベルシミュレーションの実行を制御する特定のモジュールのモデル(制御用仮想デバイス114)に対してアクセス要求を出す機能を有する。バス115等は、マイクロプロセッサモデル(CPU111)と制御用仮想デバイス114との間のアクセス要求を伝達する機能を有する。
受付部302は、システムレベルシミュレーションの実行を制御する特定のモジュールに対するアクセス要求を受け付ける機能を有する。ここで、特定のモジュールとは、たとえば、図1に示したハードウェアモデル110内の制御用仮想デバイス114である。なお、制御用仮想デバイス114は、システムレベルシミュレーションを制御するために付加されるソフトウェアモジュールであり、電子機器に実際に搭載される物理的なモジュールではない。
特定の命令とは、たとえば、制御用仮想デバイス114の機能を利用するためのAPIを呼び出すための命令または命令列である。アクセス要求とは、たとえば、制御用仮想デバイス114に割り当てられた特定のアドレスに対する書込要求である。また、特定のアドレスとは、たとえば、制御用仮想デバイス114が有するレジスタのアドレスであり、システムレベルシミュレーションに対する操作の内容と関連付けられている。
具体的には、たとえば、制御用仮想デバイス114が、特定のアドレスに対するCPU111からの書込要求を受け付ける。なお、上記レジスタは、たとえば、制御用仮想デバイス114での処理(操作)の起動指示、処理実行時の入力パラメータ、処理結果などを保持する。
実行制御部303は、実行部301を制御して、システムレベルシミュレーションを実行制御する機能を有する。具体的には、たとえば、制御用仮想デバイス114が、特定のアドレスに対するCPU111からの書込要求に基づいて、実行部301に指示を出すなどして、システムレベルシミュレーションを実行制御する。
判定部304は、制御用仮想デバイス114の特定のアドレスに対して書き込まれた値に基づいて、システムレベルシミュレーションに対する操作の要否を判定する機能を有する。具体的には、たとえば、制御用仮想デバイス114が、特定のアドレスに対して書き込まれた値に基づいて、操作を実行するか否かを判定する。
この場合、実行制御部303は、判定された判定結果に基づいて、システムレベルシミュレーションに対する操作を実行する。具体的には、たとえば、制御用仮想デバイス114が、ESLシミュレータカーネル102を制御して、システムレベルシミュレーションに対する操作を実行する。
ここで、制御用仮想デバイス114の機能を実現するためのプログラムの記述例について説明する。図4は、制御用仮想デバイスの機能に関する記述例を示す説明図である。図4において、プログラム400には、SystemCを用いて記述された制御用仮想デバイス114の機能が示されている。
具体的には、プログラム400には、switch文を用いて、制御用仮想デバイス114の特定のアドレス『0x00XX』に、特定の値『EXIT_VALUE』が書き込まれた場合に実行される操作が記述されている。このプログラム400をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の機能を実現することができる。
システムレベルシミュレーションに対する操作の内容は、制御用仮想デバイス114に割り当てられたアドレスと関連付けられている。このため、制御用仮想デバイス114が、特定のアドレスから操作の内容を判定し、そのアドレスに対して書き込まれた値から、その操作を実行するか否かを判定する。
以下、具体的な操作の内容の具体例(i)〜(v)を示す。(i)実行制御部303は、判定された判定結果に基づいて、システムレベルシミュレーションの実行を終了させる。ここで、制御用仮想デバイス114の「終了」の機能を実現するためのプログラムの記述例について説明する。
図5は、制御用仮想デバイスの終了の機能に関する記述例を示す説明図である。図5において、プログラム500には、制御用仮想デバイス114のアドレス『0x0010』に対して、特定の値『EXIT_VALUE』が書き込まれた場合に、システムレベルシミュレーションの実行を終了させるためのソースコードが記述されている。
このプログラム500をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の「終了」の機能を実現することができる。これにより、CPU111上で動作するアプリケーションプログラム123からシステムレベルシミュレーションの実行を終了させることができる。
(ii)実行制御部303は、判定された判定結果に基づいて、システムレベルシミュレーションのプロセスの優先度を制御する。ここで、制御用仮想デバイス114の「優先度制御」の機能を実現するためのプログラムの記述例について説明する。
図6は、制御用仮想デバイスの優先度制御の機能に関する記述例を示す説明図である。図6において、プログラム600には、制御用仮想デバイス114の特定のアドレス『0x0020』に対して特定の値が書き込まれた場合に、getpid()により取得されたプロセスIDのプロセスの優先度を変更して実行するソースコードが記述されている。
具体的には、特定のアドレス『0x0020』に対して、特定の値『PRIORITY_UP_VALUE』が書き込まれた場合は、優先度を『−10』してプロセスを実行する。また、特定のアドレス『0x0020』に対して、特定の値『PRIORITY_DOWN_VALUE』が書き込まれた場合は、優先度を『+10』してプロセスを実行する。また、特定のアドレス『0x0020』に対して、特定の値『PRIORITY_SET_VALUE』が書き込まれた場合は、優先度を『Pvalue』に変更してプロセスを実行する。
このプログラム600をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の「優先度制御」の機能を実現することができる。これにより、CPU111上で動作するアプリケーションプログラム123からシステムレベルシミュレーションのプロセスの優先度を変更することができる。
(iii)実行制御部303は、判定された判定結果に基づいて、システムレベルシミュレーションのプロセスのメモリイメージダンプを実行する。ここで、制御用仮想デバイス114の「システムレベルシミュレーションのプロセスのイメージダンプ」の機能を実現するためのプログラムの記述例について説明する。
図7は、制御用仮想デバイスのイメージダンプの機能に関する記述例を示す説明図(その1)である。図7において、プログラム700には、特定のアドレス『0x0030』に対して特定の値『COREDUMP_VALUE』が書き込まれた場合に、システムレベルシミュレーションのプロセスのイメージダンプをするソースコードが記述されている。
このプログラム700をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の「システムレベルシミュレーションのプロセスのイメージダンプ」の機能を実現することができる。これにより、CPU111上で動作するアプリケーションプログラム123からシステムレベルシミュレーションのプロセスのイメージダンプをすることができる。
(iv)実行制御部303は、判定された判定結果に基づいて、ハードウェアモデル110内のメインメモリ112のモデルのイメージダンプを実行する。ここで、制御用仮想デバイス114の「メインメモリのモデルのイメージダンプ」の機能を実現するためのプログラムの記述例について説明する。
図8は、制御用仮想デバイスのイメージダンプの機能に関する記述例を示す説明図(その2)である。図8において、プログラム800には、特定のアドレス『0x0040』に対して特定の値『MEMORYDUMP_VALUE』が書き込まれた場合に、メインメモリ112のイメージダンプをするソースコードが記述されている。
具体的には、『memory_address』のメモリから『mem_size』バイト分のメモリの内容をファイル『memory_dump_file』に出力する。なお、『memory_address』はメインメモリ112の先頭アドレスであり、『mem_size』はイメージダンプするメモリサイズである。
このプログラム800をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の「メインメモリのモデルのイメージダンプ」の機能を実現することができる。これにより、CPU111上で動作するアプリケーションプログラム123からメインメモリ112のイメージダンプをすることができる。
(v)実行制御部303は、判定された判定結果に基づいて、システムレベルシミュレーションの実行を停止させる。ここで、制御用仮想デバイス114の「停止」の機能を実現するためのプログラムの記述例について説明する。
図9は、制御用仮想デバイスの停止の機能に関する記述例を示す説明図である。図9において、プログラム900には、特定のアドレス『0x0050』に対して特定の値『STOP_VALUE』が書き込まれた場合に、sc_stop()により、最上位階層であるsc_main()に制御を戻すためのソースコードが記述されている。
このプログラム900をハードウェアモデル110のプログラム記述に挿入することにより、制御用仮想デバイス114の「停止」の機能を実現することができる。これにより、CPU111上で動作するアプリケーションプログラム123からシステムレベルシミュレーションの実行を停止させることができる。
出力部305は、実行部301によって実行された実行結果を出力する機能を有する。出力結果としては、たとえば、システムレベルシミュレーションの実行結果、デバッグ用の各種メモリのイメージダンプ結果などがある。具体的には、たとえば、出力部305が、メインメモリ112のメモリ内容をバイナリファイルなどのファイル形式で出力する。出力形式としては、たとえば、ディスプレイ208への表示、プリンタ213への印刷出力、I/F209による外部装置への送信がある。また、RAM203、磁気ディスク205、光ディスク207などの記憶領域に記憶することとしてもよい。
(アクセス時間の短縮化)
ここで、ハードウェアモデル110内のCPU111から制御用仮想デバイス114にアクセスする際のアクセス時間について説明する。図1に示した例では、CPU111は、バス115を介して、制御用仮想デバイス114の特定のアドレスに対してアクセスする。
この場合、制御用仮想デバイス114に対するアクセスに時間がかかり(たとえば、100[ns])、システムレベルシミュレーションに対する操作に遅れが生じてしまう。これでは、システムレベルシミュレーションの実行を終了させる場合に、アクセス時間分だけシステムレベルシミュレーションが実行されてしまい、シミュレーション結果に影響を与えることになる。
そこで、ハードウェアモデル110内のCPU111から制御用仮想デバイス114にアクセスするための専用のバスのモデルを構築する。図10は、システムレベルシミュレーション装置のシステム構成図(その2)である。図10において、CPU111とバス115との間に仮想ブリッジ1001が設けられ、CPU111と制御用仮想デバイス114とを接続する制御用バス1002が構築されている。
CPU111は、この制御用バス1002を介して制御用仮想デバイス114にアクセスすることにより、アクセス時間を0時間(デルタ0時間)に短縮することができる。このように、CPU111から制御用仮想デバイス114に対して、0時間でアクセス可能にすることにより、システムレベルシミュレーションに影響を与えることなく、その実行を制御することができる。なお、「時間」とは、シミュレーションにおける時間をあらわしている。
(ホストマシンのシミュレーション制御処理手順)
つぎに、実施の形態にかかるホストマシン100のシミュレーション制御処理手順について説明する。図11は、ホストマシンのシミュレーション制御処理手順の一例を示すフローチャートである。
図11のフローチャートにおいて、まず、実行部301により、ハードウェアモデル110とソフトウェアモデル120とのシステムレベルシミュレーションを実行開始する(ステップS1101)。このあと、受付部302により、CPU111から制御用仮想デバイス114の特定のアドレスに対する書込要求を受け付けたか否かを判断する(ステップS1102)。
ここで、書込要求を受け付けるのを待って(ステップS1102:No)、受け付けた場合(ステップS1102:Yes)、判定部304により、書込先のアドレスからシステムレベルシミュレーションに対する操作を特定する(ステップS1103)。そして、判定部304により、そのアドレスに対して特定の値が書き込まれたか否かを判定する(ステップS1104)。
ここで、特定の値が書き込まれた場合(ステップS1104:Yes)、実行制御部303により、実行部301を制御して、ステップS1103において特定された操作を実行して(ステップS1105)、本フローチャートによる一連の処理を終了する。一方、特定の値が書き込まれていない場合は(ステップS1104:No)、ステップS1102に戻る。
これにより、ハードウェアモデル110内のCPU111上で動作しているアプリケーションプログラム123から、システムレベルシミュレーションの実行を制御することができる。
つぎに、図5〜図9に示した制御用仮想デバイス114の記述例に基づくシミュレーション制御処理の具体的な処理手順について説明する。図12および図13は、シミュレーション制御処理の具体的な処理手順の一例を示すフローチャートである。
図12のフローチャートにおいて、まず、ESLシミュレータカーネル102により、ハードウェアモデル110とソフトウェアモデル120とのシステムレベルシミュレーションを実行開始する(ステップS1201)。このあと、制御用仮想デバイス114により、特定のアドレスに対する書込要求を受け付けたか否かを判断する(ステップS1202)。
ここで、特定のアドレスに対する書込要求を受け付けるのを待って(ステップS1202:No)、受け付けた場合(ステップS1202Yes)、制御用仮想デバイス114により、書込先のアドレスは『0x0010』か否かを判断する(ステップS1203)。ここで、アドレスが『0x0010』の場合(ステップS1203:Yes)、制御用仮想デバイス114により、書き込まれた値は『EXIT_VALUE』か否かを判断する(ステップS1204)。
ここで、書き込まれた値が『EXIT_VALUE』の場合(ステップS1204:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、システムレベルシミュレーションの実行を終了させて(ステップS1205)、本フローチャートによる一連の処理を終了する。一方、書き込まれた値が『EXIT_VALUE』ではない場合(ステップS1204:No)、ステップS1202に戻る。
また、ステップS1203において、アドレスが『0x0010』ではない場合(ステップS1203:No)、制御用仮想デバイス114により、書込先のアドレスは『0x0020』か否かを判断する(ステップS1206)。
ここで、アドレスが『0x0020』の場合(ステップS1206:Yes)、制御用仮想デバイス114により、書き込まれた値は『PRIORITY_UP_VALUE』か否かを判断する(ステップS1207)。
そして、書き込まれた値が『PRIORITY_UP_VALUE』の場合(ステップS1207:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、getpid()により取得されたプロセスIDのプロセスの優先度を『−10』してプロセスを実行して(ステップS1208)、本フローチャートによる一連の処理を終了する。
一方、ステップS1207において、書き込まれた値が『PRIORITY_UP_VALUE』ではない場合(ステップS1207:No)、制御用仮想デバイス114により、書き込まれた値は『PRIORITY_DOWN_VALUE』か否かを判断する(ステップS1209)。
そして、書き込まれた値が『PRIORITY_DOWN_VALUE』の場合(ステップS1209:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、getpid()により取得されたプロセスIDのプロセスの優先度を『+10』してプロセスを実行して(ステップS1210)、本フローチャートによる一連の処理を終了する。
一方、ステップS1209において、書き込まれた値が『PRIORITY_DOWN_VALUE』ではない場合(ステップS1209:No)、制御用仮想デバイス114により、書き込まれた値は『PRIORITY_SET_VALUE』か否かを判断する(ステップS1211)。
そして、書き込まれた値が『PRIORITY_SET_VALUE』の場合(ステップS1211:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、getpid()により取得されたプロセスIDのプロセスの優先度を『Pvalue』に変更してプロセスを実行し(ステップS1212)、本フローチャートによる一連の処理を終了する。
一方、ステップS1211において、書き込まれた値が『PRIORITY_SET_VALUE』ではない場合(ステップS1211:No)、ステップS1202に戻る。また、ステップS1206において、書込先のアドレスが『0x0020』ではない場合(ステップS1206:No)、図13に示すステップS1213に移行する。
図13のフローチャートにおいて、まず、制御用仮想デバイス114により、書込先のアドレスは『0x0030』か否かを判断する(ステップS1213)。ここで、アドレスが『0x0030』の場合(ステップS1213:Yes)、制御用仮想デバイス114により、書き込まれた値は『COREDUMP_VALUE』か否かを判断する(ステップS1214)。
そして、書き込まれた値が『COREDUMP_VALUE』の場合(ステップS1214:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、システムレベルシミュレーションのプロセスのイメージダンプをして(ステップS1215)、本フローチャートによる一連の処理を終了する。一方、書き込まれた値が『COREDUMP_VALUE』ではない場合(ステップS1214:No)、図12に示したステップS1202に移行する。
また、ステップS1213において、書込先のアドレスが『0x0030』ではない場合(ステップS1213:No)、制御用仮想デバイス114により、書込先のアドレスは『0x0040』か否かを判断する(ステップS1216)。ここで、アドレスが『0x0040』の場合(ステップS1216:Yes)、制御用仮想デバイス114により、書き込まれた値は『MEMORYDUMP_VALUE』か否かを判断する(ステップS1217)。
そして、書き込まれた値が『MEMORYDUMP_VALUE』の場合(ステップS1217:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、ハードウェアモデル110内のメインメモリ112のイメージダンプをして(ステップS1218)、本フローチャートによる一連の処理を終了する。一方、書き込まれた値が『MEMORYDUMP_VALUE』ではない場合(ステップS1217:No)、図12に示したステップS1202に移行する。
また、ステップS1216において、書込先のアドレスが『0x0040』ではない場合(ステップS1216:No)、制御用仮想デバイス114により、書込先のアドレスは『0x0050』か否かを判断する(ステップS1219)。ここで、アドレスが『0x0050』の場合(ステップS1219:Yes)、制御用仮想デバイス114により、書き込まれた値は『STOP_VALUE』か否かを判断する(ステップS1220)。
そして、書き込まれた値が『STOP_VALUE』の場合(ステップS1220:Yes)、制御用仮想デバイス114により、ESLシミュレータカーネル102を制御して、システムレベルシミュレーションの実行を停止させて(ステップS1221)、本フローチャートによる一連の処理を終了する。
一方、書き込まれた値が『STOP_VALUE』ではない場合(ステップS1220:No)、図12に示したステップS1202に移行する。また、ステップS1219において、書込先のアドレスが『0x0050』ではない場合(ステップS1219:No)、図12に示したステップS1202に移行する。
これにより、ユーザが期待したアプリケーションプログラム123の特定のポイントで、システムレベルシミュレーションに対する操作(上述した(i)〜(v)の機能)を実行することができる。
以上説明したように、本実施の形態によれば、ハードウェアモデル110内のCPU111上で動作しているアプリケーションプログラム123から、システムレベルシミュレーションを制御することができる。これにより、アプリケーションプログラム123の特定のポイントでシステムレベルシミュレーションを終了させる場合などに、特定のポイントまで実行されるのをユーザが監視するなどの面倒な作業が不要となる。
また、特定のポイントまで実行されたことをユーザが見過ごしてシステムレベルシミュレーションをやり直すなどの手戻りを防ぐことができる。さらに、システムレベルシミュレーションの処理の効率化を図ることができ、限られた計算機リソースやライセンスリソースを有効活用することができる。
以上のことから、このシミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法によれば、システムレベルシミュレーションにかかる作業負担の軽減化およびシミュレーション期間の短縮化を図ることができる。
なお、本実施の形態で説明したシミュレーション制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能であってもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータをシステムレベルシミュレーション装置として機能させるために、
ハードウェアモデルとソフトウェアモデルとを持つシステムレベルシミュレーションを実行制御する手段として、
前記コンピュータが、前記ハードウェアモデルを実行するための実行手段を有し、
前記ハードウェアモデル内に、
マイクロプロセッサモデルと、
前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルと、
前記マイクロプロセッサモデルと前記特定のモジュールのモデルとの間のバスと、を有し、
前記ソフトウェアモデル内に、
前記特定のモジュールを操作する特定の命令、または、命令列を有し、
前記マイクロプロセッサモデルが前記特定の命令、または、前記命令列を実行した結果、前記特定のモジュールのモデルに対してアクセス要求を出す送出手段と、
前記アクセス要求を伝達する伝達手段と、
前記特定のモジュールのモデルに対するアクセス要求を受け付ける受付手段と、
前記受付手段によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御する実行制御手段と、
を持つことを特徴とするシミュレーション制御プログラム。
(付記2)前記受付手段は、
前記特定のモジュールに割り当てられた特定のアドレスに対する書込要求を受け付け、
前記実行制御手段は、
前記特定のアドレスに対する書込要求に基づいて、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御することを特徴とする付記1に記載のシミュレーション制御プログラム。
(付記3)前記コンピュータを、
前記特定のアドレスに対して書き込まれた値に基づいて、前記システムレベルシミュレーションに対する操作の要否を判定する判定手段として機能させ、
前記実行制御手段は、
前記判定手段によって判定された判定結果に基づいて、前記システムレベルシミュレーションに対する操作を実行することを特徴とする付記2に記載のシミュレーション制御プログラム。
(付記4)前記実行制御手段は、
前記判定結果に基づいて、前記システムレベルシミュレーションの実行を終了させることを特徴とする付記3に記載のシミュレーション制御プログラム。
(付記5)前記実行制御手段は、
前記判定結果に基づいて、前記システムレベルシミュレーションのプロセスの優先度を変更することを特徴とする付記3または4に記載のシミュレーション制御プログラム。
(付記6)前記実行制御手段は、
前記判定結果に基づいて、前記システムレベルシミュレーションのプロセスのメモリイメージダンプをすることを特徴とする付記3〜5のいずれか一つに記載のシミュレーション制御プログラム。
(付記7)前記実行制御手段は、
前記判定結果に基づいて、前記ハードウェアモデル内のメインメモリのメモリイメージダンプをすることを特徴とする付記3〜6のいずれか一つに記載のシミュレーション制御プログラム。
(付記8)前記実行制御手段は、
前記判定結果に基づいて、前記システムレベルシミュレーションの実行を停止させることを特徴とする付記3〜7のいずれか一つに記載のシミュレーション制御プログラム。
(付記9)前記ハードウェアモデル内のCPU(Central Processing Unit)のモデルと前記特定のモジュールのモデルとが0時間でアクセス可能なバスのモデルで接続されており、
前記受付手段は、
前記バスのモデルを介して、前記特定のモジュールのモデルに対するアクセス要求を受け付けることを特徴とする付記1〜8のいずれか一つに記載のシミュレーション制御プログラム。
(付記10)前記特定の命令は、前記特定のモジュールを呼び出すためのAPI(Application Programming Interface)であることを特徴とする付記1〜9のいずれか一つに記載のシミュレーション制御プログラム。
(付記11)ハードウェアモデルとソフトウェアモデルとのシステムレベルシミュレーションを実行する実行手段と、
前記ソフトウェアモデル内の特定の命令が実行された結果、前記ハードウェアモデル内のモジュールのモデルのうち前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルに対するアクセス要求を受け付ける受付手段と、
前記受付手段によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行する実行制御手段と、
を備えることを特徴とするシミュレーション装置。
(付記12)制御手段、記憶手段、およびハードウェアモデルとソフトウェアモデルとのシステムレベルシミュレーションを実行する実行手段を備えるコンピュータが、
前記制御手段により、前記ソフトウェアモデル内の特定の命令が実行された結果、前記ハードウェアモデル内のモジュールのモデルのうち前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルに対するアクセス要求を受け付けて、前記記憶手段に記憶する受付工程と、
前記制御手段により、前記受付工程によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行する制御工程と、
を実行することを特徴とするシミュレーション制御方法。
100 ホストマシン
101,121 OS
102 ESLシミュレータカーネル
103 SystemCライブラリ
110 ハードウェアモデル
111,201 CPU
112 メインメモリ
113 周辺デバイス
114 制御用仮想デバイス
120 ソフトウェアモデル
122 制御用仮想デバイスドライバ
123 アプリケーションプログラム
301 実行部
302 受付部
303 実行制御部
304 判定部
305 出力部

Claims (8)

  1. コンピュータをシステムレベルシミュレーション装置として機能させるために、
    ハードウェアモデルとソフトウェアモデルとを持つシステムレベルシミュレーションを実行制御する手段として、
    前記コンピュータが、前記ハードウェアモデルを実行するための実行手段を有し、
    前記ハードウェアモデル内に、
    マイクロプロセッサモデルと、
    前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルと、
    前記マイクロプロセッサモデルと前記特定のモジュールのモデルとの間のバスと、を有し、
    前記ソフトウェアモデル内に、
    前記特定のモジュールを操作する特定の命令、または、命令列を有し、
    前記コンピュータを、
    前記マイクロプロセッサモデルが前記特定の命令、または、前記命令列を実行した結果、前記特定のモジュールのモデルに対してアクセス要求を出す送出手
    前記アクセス要求を伝達する伝達手
    前記特定のモジュールのモデルに対するアクセス要求を受け付ける受付手
    前記受付手段によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御する実行制御手
    として機能させることを特徴とするシミュレーション制御プログラム。
  2. 前記受付手段は、
    前記特定のモジュールに割り当てられた特定のアドレスに対する書込要求を受け付け、
    前記実行制御手段は、
    前記特定のアドレスに対する書込要求に基づいて、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御することを特徴とする請求項1に記載のシミュレーション制御プログラム。
  3. 前記コンピュータを、
    前記特定のアドレスに対して書き込まれた値に基づいて、前記システムレベルシミュレーションに対する操作の要否を判定する判定手段として機能させ、
    前記実行制御手段は、
    前記判定手段によって判定された判定結果に基づいて、前記システムレベルシミュレーションに対する操作を実行することを特徴とする請求項2に記載のシミュレーション制御プログラム。
  4. 前記実行制御手段は、
    前記判定結果に基づいて、前記システムレベルシミュレーションの実行を終了させることを特徴とする請求項3に記載のシミュレーション制御プログラム。
  5. 前記実行制御手段は、
    前記判定結果に基づいて、前記システムレベルシミュレーションのプロセスの優先度を変更することを特徴とする請求項3または4に記載のシミュレーション制御プログラム。
  6. 前記実行制御手段は、
    前記判定結果に基づいて、前記システムレベルシミュレーションのプロセスのメモリイメージダンプをすることを特徴とする請求項3〜5のいずれか一つに記載のシミュレーション制御プログラム。
  7. ハードウェアモデルとソフトウェアモデルとのシステムレベルシミュレーションを実行する実行手段と、
    前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルに対するアクセス要求を受け付ける受付手段と、
    前記受付手段によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御する実行制御手段と、
    を備えることを特徴とするシミュレーション装置。
  8. 制御手段、記憶手段、およびハードウェアモデルとソフトウェアモデルとのシステムレベルシミュレーションを実行する実行手段を備えるコンピュータが、
    前記制御手段により、前記ソフトウェアモデル内の特定の命令が実行された結果、前記ハードウェアモデル内のモジュールのモデルのうち前記システムレベルシミュレーションの実行を制御する特定のモジュールのモデルに対するアクセス要求を受け付けて、前記記憶手段に記憶する受付工程と、
    前記制御手段により、前記受付工程によって前記アクセス要求を受け付けた場合、前記実行手段を制御して、前記システムレベルシミュレーションを実行制御する制御工程と、
    を実行することを特徴とするシミュレーション制御方法。
JP2009022799A 2009-02-03 2009-02-03 シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法 Expired - Fee Related JP5262774B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009022799A JP5262774B2 (ja) 2009-02-03 2009-02-03 シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009022799A JP5262774B2 (ja) 2009-02-03 2009-02-03 シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法

Publications (2)

Publication Number Publication Date
JP2010181961A JP2010181961A (ja) 2010-08-19
JP5262774B2 true JP5262774B2 (ja) 2013-08-14

Family

ID=42763525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009022799A Expired - Fee Related JP5262774B2 (ja) 2009-02-03 2009-02-03 シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法

Country Status (1)

Country Link
JP (1) JP5262774B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155515A (ja) * 2011-01-26 2012-08-16 Renesas Electronics Corp ソースデバイスドライバ及び実行モジュールの作成方法
FR2971596B1 (fr) * 2011-02-15 2016-01-01 Commissariat Energie Atomique Dispositif pour accelerer l'execution d'une simulation systemc

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7149676B2 (en) * 2001-06-21 2006-12-12 Renesas Technology Corporation Variable accuracy modes in microprocessor simulation
JP2006079464A (ja) * 2004-09-10 2006-03-23 Canon Inc シミュレーション装置及びシミュレーション方法
JP2006343942A (ja) * 2005-06-08 2006-12-21 Nec Electronics Corp バスシステム設計方法と装置

Also Published As

Publication number Publication date
JP2010181961A (ja) 2010-08-19

Similar Documents

Publication Publication Date Title
TWI400652B (zh) Dual operating system parallel processing methods, recording media and computer program products
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
US20060143523A1 (en) Apparatus and method for debugging embedded software
CN111104269B (zh) 一种基于uart接口的处理器调试方法及系统
JP3822044B2 (ja) 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体
KR20040063837A (ko) 언어 독립 구문으로 매크로를 기록하기 위한 방법 및 시스템
EP1220099A2 (en) Debugger system, method of extending debug functions of a debugger system and debugger program product
JP5262774B2 (ja) シミュレーション制御プログラム、シミュレーション装置、およびシミュレーション制御方法
JP5444724B2 (ja) 検証支援プログラム、情報処理装置および検証支援方法
JP2007310565A (ja) システムlsi検証装置及びシステムlsi検証プログラム
JP2002366602A (ja) ソフトウエア及びハードウエアのシミュレーション方法及びシステム並びにプログラム
JP4342392B2 (ja) ソフトウェア検証モデル生成方法
JP5293165B2 (ja) シミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法
US11544436B1 (en) Hardware-software interaction testing using formal verification
US6766510B2 (en) Application program developing system, application program developing method, and recording medium in which application program developing program is stored
CN102043677B (zh) 双操作系统平行处理的方法
JP5262909B2 (ja) 検証支援プログラム、検証支援装置および検証支援方法
CN112000235B (zh) 一种用于si测试工具的虚拟键盘系统和设计方法
JP4820654B2 (ja) サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
JP2013020425A (ja) オープンソースソフトウェアを利用したハードウェア・ソフトウェア協調検証方法
JP2005293219A (ja) ソフトウェア検証モデル生成方法
JP2013080386A (ja) 情報処理装置、アドレス管理方法
CN111045665B (zh) 一种基于uml的gpu命令处理器
JP4421498B2 (ja) プログラム
JP2007219893A (ja) ファームウェア評価システムおよびファームウェア評価方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121204

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130415

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees