JP4137434B2 - シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 - Google Patents
シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 Download PDFInfo
- Publication number
- JP4137434B2 JP4137434B2 JP2001358706A JP2001358706A JP4137434B2 JP 4137434 B2 JP4137434 B2 JP 4137434B2 JP 2001358706 A JP2001358706 A JP 2001358706A JP 2001358706 A JP2001358706 A JP 2001358706A JP 4137434 B2 JP4137434 B2 JP 4137434B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- inspection
- time
- programs
- cpu
- 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
Links
Images
Landscapes
- Testing And Monitoring For Control Systems (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明は、定周期実行プログラムを含むターゲットプログラムのシミュレーション実行をパソコンやワークステーションなどのコンピュータ上で行う、プログラムシミュレーション装置の改良に関するものである。
【0002】
【従来の技術】
組み込みシステムにおいては、リアルタイム性を実現するために、定周期実行モジュールがしばしば利用される。定周期実行モジュールは、マイコンのタイマにより、定周期毎に起動する方式や、外部からの定周期割り込み信号に対応して起動される割り込みモジュールなどとして実装される。
これらの定周期実行プログラムを含むターゲットシステムのシミュレーション/デバッグでは、定周期処理の時間と、それ以外の処理の時間と、センサ入力やアクチュエータ出力時間のマッチングが必要となる。このため定周期起動プログラムを含むターゲットシステムは、実システムを用いた実機デバッグを行うか、または実ボードを搭載したパソコンでのシミュレーションが必要となっていた。
【0003】
次に、定周期実行の動作について説明する。
図5は、定周期実行プログラムの動作のタイミングチャートである。
この例では、プログラムAは5ms周期、プログラムBは10ms周期、プログラムCは25ms周期の3つの定周期プログラムが動作する際のタイミングを示している。
5ms毎にプログラムAが起動され、10ms毎にプログラムBが起動され、25ms毎にプログラムCが起動されている。
【0004】
【発明が解決しようとする課題】
定周期実行プログラムを含むシステムの実機デバッグでは、プログラムの実行速度を変更できないという問題点があった。
このため、例えば、20分間の一連の動作の最後の部分をデバッグしたいときは、そこにブレークポイントを設定して実行し、20分間待つ必要がある。また、実機ではデバッグしたい部分の動作をゆっくり動作させて不具合状況の流れの詳細をチェックすることは困難であった。
【0005】
実ボードにパソコンのバスインタフェースを追加したボードを作成し、パソコンに搭載し、センサやアクチュエータはパソコン上のソフトウェアでシミュレートすることにより、シミュレーションの動作をゆっくり動作させることが可能となる。
この場合は、高速なパソコンを使用していても、実ボードの速度以上の速度で実行できないという問題点があった。
【0006】
CPU(Central Processing Unit)シミュレータを搭載したクロスシミュレーションでは、命令セットレベルやクロック精度レベルでの協調シミュレータがあり、時間軸をスケーリングできるが、これらは実機の2−3桁以上遅く、プログラムのデバッグ用途には使えない。
【0007】
この発明は、上記のような問題点を解決するためになされたもので、定周期実行プログラムを含むシステムのシミュレーション、デバッグをパソコンなどの上で高速に行え、また、特定の実行をゆっくりと動作させる仕組みを実現させ、シミュレーション、デバッグの効率化を図ることを目的とする。
【0008】
【課題を解決するための手段】
この発明に係るシミュレーション方式は、シミュレーションの対象となる検査プログラムを擬似システム上で動作させるシミュレーション方式において、
上記検査プログラムを予め記憶するプログラムメモリと、
上記プログラムメモリに記憶される検査プログラム示す検査プログラム名と、上記検査プログラム名によって示される検査プログラムを起動する所定の周期とを含む検査プログラムを起動する手順を定義する起動手順を予め記憶する起動プログラム表を作成し、起動プログラム表で定義した所定の周期で上記検査プログラム名の示す検査プログラムを起動する起動制御部と
を備えたことを特徴とする。
【0009】
上記起動プログラム表は、起動手順として、複数の検査プログラム名と、上記複数のプログラム名それぞれに対応する複数の所定の周期とを記憶し、
上記起動制御部は、上記起動手順から上記複数の検査プログラム名と、上記複数の所定の周期とを取得し、シミュレーションを開始する実時間を零時とし、零時から上記所定の周期の時刻を起動時刻として、上記複数の所定の周期それぞれに対応する複数の起動時刻を算出し、算出した複数の起動時刻それぞれの時点で対応づけられた検査プログラム名の示す検査プログラムを起動することを特徴とする。
【0010】
上記起動プログラム表は、さらに、起動手順として、一の起動時刻に複数の検査プログラムを起動する場合に、検査プログラムを起動する起動順序を記憶し、
上記起動制御部は、さらに、上記起動手順から、上記起動順序を取得し、一の起動時刻に複数の検査プログラムを起動する場合には、上記起動順序に基づいて、上記起動対応表を生成することを特徴とする。
【0011】
上記起動プログラム表は、起動手順として、複数の検査プログラム名と、上記複数の検査プログラム名それぞれに対応する複数の所定の周期とを記憶し、
上記起動制御部は、上記起動手順から上記複数の検査プログラム名と、上記複数の所定の周期とを取得し、取得した上記複数の検査プログラム名と上記複数の所定の周期とを用いて、検査プログラムを起動することを特徴とする。
【0012】
上記起動プログラム表は、起動手順として、さらに、上記複数の検査プログラムが処理を実行する複数の処理時間をそれぞれ上記複数の検査プログラム名に対応づけて記憶し、
上記起動制御部は、上記起動手順から複数の処理時間を取得し、上記複数の検査プログラムそれぞれを起動した回数を上記複数の検査プログラム毎に起動回数としてカウントし、上記複数の処理時間と上記起動回数とを用いて、処理時間の合計を算出することを特徴とする。
【0013】
上記起動制御部は、一の起動時刻に対応づけられた検査プログラム名の示す検査プログラムを起動した後、任意の時間の経過を待ってから、次の起動時刻に対応づけられた検査プログラム名の示す検査プログラムを起動することを特徴とする。
【0014】
上記シミュレーション方式は、さらに、
上記検査プログラムが入出力するデータを記憶する入出力データメモリと、
上記入出力データメモリからデータを読み込み、読み込んだデータを上記検査プログラムへ入力する入力部と、
上記検査プログラムから出力されたデータを上記入出力データメモリへ出力する出力部とを備えたことを特徴とする。
【0015】
上記シミュレーション方式は、さらに、
上記検査プログラムが使用するデータをシミュレーションデータとして生成し、生成したシミュレーションデータを上記入出力データメモリへ格納するシミュレーションデータ模擬部を備え、
上記起動制御部は、上記シミュレーションデータ模擬部へシミュレーションデータの生成を指示することを特徴とする。
【0016】
上記検査プログラムは、処理を実行した結果として処理結果を上記入出力データメモリへ出力し、
上記シミュレーションデータ模擬部は、上記検査プログラムから上記入出力データメモリへ出力された処理結果を読み込み、読み込んだ処理結果を出力し、
上記起動制御部は、上記処理結果を読み込むことを上記シミュレーションデータ模擬部へ指示することを特徴とする。
【0017】
上記検査プログラムは、所定の周期でセンサから出力されるデータの入力を受け付け、受け付けたデータを用いて処理を実行するプログラムであり、
上記入力部は、センサからの入力を受け付けることを模擬するセンサ入力部であり、
上記シミュレーションデータ模擬部は、所定の周期でセンサから入力されるデータを模擬するシミュレーションデータを生成し、
上記起動制御部は、所定の周期で上記シミュレーションデータの生成を上記シミュレーション模擬部へ指示することを特徴とする。
【0018】
上記検査プログラムは、アクチュエータを制御するプログラムであり、
上記出力部は、検査プログラムの実行結果をアクチュエータへ出力することを模擬するアクチュエータ出力部であることを特徴とする。
【0019】
上記シミュレーションデータ模擬部は、シミュレーションデータを連続して生成する連続系シミュレータであることを特徴とする。
【0020】
上記起動プログラム表は、起動手順として、さらに、複数のプロセッサで検査プログラムを実行させる並列処理を実行することを指示する並列処理モード情報を記憶し、
上記起動制御部は、上記起動手順から並列処理モード情報を取得し、取得した並列処理モード情報に基づいて、一のプロセッサを用いて複数のプロセッサで実行させる検査プログラムを順番に実行させることを特徴とする。
【0021】
上記シミュレーション方式は、チップを搭載した計算機上で検査プログラムを動作させ、検査プログラムを実装する計算機のチップに比べ、上位互換であるチップを搭載した計算機上で上記検査プログラムを実行させることを特徴とする。
【0022】
この発明に係るシミュレーション方法は、シミュレーションの対象となる検査プログラムを擬似システム上で動作させるシミュレーション方法において、
上記検査プログラムを予めプログラムメモリへ記憶する工程と、
上記プログラムメモリに記憶される検査プログラム示す検査プログラム名と、上記検査プログラム名によって示される検査プログラムを起動する所定の周期とを含む検査プログラムを起動する手順を定義する起動手順を予め起動プログラム表へ記憶する工程と、
上記起動プログラム表から上記所定の周期と上記検査プログラム名とを取得し、取得した所定の周期で上記検査プログラム名の示す検査プログラムを起動する起動制御工程と
を備えたことを特徴とする。
【0023】
この発明に係るシミュレーション方式をコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体は、シミュレーションの対象となる検査プログラムを擬似システム上で動作させるシミュレーション方式をコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体において、
上記検査プログラムを予め記憶するプログラムメモリと、
上記プログラムメモリに記憶される検査プログラム示す検査プログラム名と、上記検査プログラム名によって示される検査プログラムを起動する所定の周期とを含む検査プログラムを起動する手順を定義する起動手順を予め記憶する起動プログラム表と、
上記起動プログラム表から上記所定の周期と上記検査プログラム名とを取得し、取得した所定の周期で上記検査プログラム名の示す検査プログラムを起動する起動制御部と
を備えたシミュレーション方式をコンピュータに実行させるためのプログラムを記録したコンピュータ読取可能な記録媒体であることを特徴とする。
【0024】
【発明の実施の形態】
実施の形態1.
図1は、この発明に係るシミュレーション方式の一例を示したものである。
また、このシミュレーション方式を用いて、この発明に係るシミュレーション方法を実現する。
このシミュレーション方式は、定周期で起動される定周期実行プログラムの起動機能と、その周期時間と実時間の対応の調整機能を備えるものである。
以下の説明では、シミュレーションの対象となるプログラムを検査プログラムとする。この実施の形態では定周期実行プログラムA,B,Cの3つを一例として説明する。しかしながら、検査プログラムの数は、3つに限られるわけではない。
また、この実施の形態では、検査プログラムとして定周期で実行されるプログラムを対象とするため、検査プログラムを定周期実行プログラムということもある。
【0025】
図1に一例として示すシミュレーション方式は、シミュレーションを制御するシミュレーション部としてシミュレーションプログラム1と、外部に接続される外部機器を模擬するシミュレーション模擬部として外部機器を模擬するためのプログラム8と、それらの間でやりとりされるデータを記憶する入出力データメモリ7から構成される。
【0026】
シミュレーションプログラム1は、一例として、起動プログラム表12と、センサからのデータの入力を受け付けるセンサ入力部(入力部)としてセンサ入力プログラム4と、アクチュエータへの出力のかわりに入出力データメモリ7へデータを出力するアクチュエータ出力部(出力部)としてアクチュエータ出力プログラム5と、実際のグラフィックパネルへ入出力するデータを模擬するパネル入出力プログラム6と、それらのプログラム群を起動させ、シミュレーションプログラム1全体を制御する起動制御プログラム2とから成る。
【0027】
起動プログラム表12は、少なくとも一の検査プログラム名と、上記検査プログラム名によって示される検査プログラムを起動する所定の周期とを含む検査プログラムを起動する手順を定義する起動手順を記憶する。
この実施の形態では、起動プログラム表12は、起動手順の一例として、複数の検査プログラム名と、上記複数の検査プログラム名それぞれに対応する複数の所定の周期、上記複数の検査プログラムの処理時間、起動順序など、シミュレーションに関わる情報を記憶する。
図2は、この実施の形態で用いる起動プログラム表12に記憶されるデータの構造を示した図である。
図3は、具体的な起動プログラム表の一例を示した図である。
【0028】
以下に、用語を定義する。
シミュレーションパラメータ
Tmax:検査時間。
α:シミュレーション時間倍率≧0
【0029】
変数(時間の単位は全てmsecとする)
T:実時間。シミュレーション開始時は0とする。
Tp:周期計算で求めたプログラムを実行させる実時間。
Tosim:シミュレーション開始時間(開始時のTcur値)。
ind:次に実行するプログラムのインデクス。
【0030】
関数
t=Next_Period(A,Tp):Tpの次の実行時間をAから求める。
i=Next_Prog(A,ind,Tp):ind=−1のとき、実時間Tpで最初に実行するプログラムのインデクスを返す。ind≧0のとき、実時間Tpでindの示すプログラムの次に実行されるプログラムのインデクスを返す。i=−1は該当無しを示す。
t=Tcur();現在の時刻を返す(msec通し時間)。
【0031】
起動順序は、複数の検査プログラムを起動する場合、起動する優先順位を定める。同じ起動時刻に複数の検査プログラムを起動する場合に使用する。
検査時間は、シミュレーションを実行する実時間である。
シミュレーション時間倍率αは、シミュレーションを実行する速度を指示する。
並列処理モード情報は、実システム(実機)において、1つのCPUでプログラムを実行する場合か、2つのCPUでプログラムを実行する場合かを指示する。
センサ入力、アクチュエータ出力、パネル入出力のプログラムも起動プログラム表12に記憶させる。
上記の情報は、予め利用者によって入力される。
また、カウンタは、起動制御プログラム2によって各検査プログラムを起動した回数を格納する。
【0032】
以下、この実施の形態では、起動プログラム表12が、複数の検査プログラム名を記憶し、さらに、上記複数の検査プログラム名それぞれに対応する複数の所定の周期をはじめとするシミュレーションに関わる情報を記憶している場合について説明する。
【0033】
外部機器を模擬するためのプログラム8は、操作・表示機器を模擬するグラフィックパネルシミュレータ9と、センサを模擬するセンサシミュレータ10と、アクチュエータを模擬するアクチュエータシミュレータ11から成る。
入出力データメモリ7は、グラフィックパネルからの入出力、センサからの入力、アクチュエータへの出力のキューを記憶する記憶領域である。
図4は、入出力データメモリ7に記憶されるデータの項目の一例を示した図である。
【0034】
グラフィックパネルシミュレータ9は、利用者からのデータの入力を仲介するとともに、利用者へシミュレーション結果のデータを表示する。グラフィックパネルシミュレータ9は、モニタに接続されており、モニタを介して利用者とデータをやりとりする。
【0035】
センサシミュレータ10は、センサから入力されるデータを模擬するデータを生成する。生成したデータは、入出力データメモリ7へ格納される。生成するタイミングは、所定の周期でデータを生成してもよいし、起動制御プログラム2又は起動制御プログラム2によって起動されるセンサ入力プログラム4からデータ生成の指示を通知されることによってデータを生成してもよい。
【0036】
アクチュエータシミュレータ11は、アクチュエータに出力するデータを模擬する。アクチュエータシミュレータ11は、入出力データメモリ7に格納されたアクチュエータからの出力データをアクチュエータのデータとして取得する。取得するタイミングは、所定の周期でデータを取得してもよいし、起動制御プログラム2又は起動制御プログラム2によって起動されるアクチュエータ出力プログラム5からデータ取得の指示を通知されることによってデータを取得してもよい。
【0037】
このシミュレーション方式では、時間の概念としてシミュレーション時間と実時間とを定義する。
シミュレーション時間とは、シミュレーション方式において実際に経過した時間、すなわち、シミュレーションに要した時間である。
実時間とは、シミュレーションの対象となる検査プログラムを実システム上(実際に動作させるシステム、実機)で予め決められた所定の周期で動作させた場合の経過時間である。また、実システム上で動作する複数の定周期実行プログラムそれぞれは、実時間をベースに同期をとっている。
また、上記起動手順の周期、処理時間は、実時間に基づいて利用者によって入力される。
【0038】
図5は、3つの定周期実行プログラムをそれぞれの周期で起動させる場合の動作例を示している。図5は、シミュレーションの開始の実時間を零時とし、実時間の経過を用いて各検査プログラムを起動するタイミングを示している。
プログラムAは、5msの周期で起動され、プログラムBは、10msの周期で起動され、プログラムCは、25msの周期で起動される設定になっている。
3つの定周期実行プログラムは、図5のように起動されることによって、同期をとっている。
【0039】
図5では、具体的には、起動実時間0msで、定周期実行プログラムAが起動され、処理が終了した後、定周期実行プログラムBが起動され、その処理が終了した後、さらに、定周期実行プログラムCが起動され、定周期実行プログラムCが終了する。次に、検査プログラムが起動されるまで、処理は実行されない。起動実時間5msでは、定周期実行プログラムAが起動され、処理を終了する。以下、検査プログラムの起動周期にあわせて、各実時間に検査プログラムが起動される。
【0040】
起動制御プログラム2の関数Nest_Period(A,Tp)は、検査プログラムを起動するに当たって、起動プログラム表Aと前回の起動実時間Tpに基づいて起動実時間を生成する。
【0041】
次に、起動制御プログラム2は、シミュレーションを開始する実時刻を零時とし、零時から上記所定の周期の時刻を起動実時間として、上記複数の所定の周期それぞれに対応する複数の起動実時間を算出する。
【0042】
図6に、起動順序の一例を示している。また、実行内容は、起動するプログラムとして検査プログラム及びセンサ入力プログラム4、アクチュエータ出力プログラム5、パネル入出力プログラム6等の各プログラムも含まれる。
図6では、「定周期実行プログラムA」を「A」と、「定周期実行プログラムB」を「B」と、「定周期実行プログラムC」を「C」と、「センサ入力プログラム」を「センサ入力」と、「アクチュエータ出力プログラム」を「アクチュエータ出力」と表している。
例えば、図5の例の検査プログラムの起動に対して、さらに、センサ入力周期を5ms、アクチュエータ出力周期を5ms、パネル入出力の周期を50msとした図3に対する起動順序の例が、図6の例である。
起動制御プログラム2は、生成した起動対応表に従って検査プログラムを起動する。
【0043】
図7は、このシミュレーション方式を用いて、図5の例をα=0.4として高速シミュレーションした時の実時間とシミュレーション時間の関係を示している。
図7の例では、一の周期で起動する検査プログラムの処理が終了した時点で、次の周期の起動時刻まで待つことなく、次の周期の検査プログラムの起動を開始するものであり、パソコンが充分高速な場合は、実時間の0.4倍の時間でシミュレーションを行う。
【0044】
図8は、図5の例を、α=2.0を指定して、本装置でゆっくり実行しているとき(低速シミュレーション)の実時間とシミュレーション時間の関係を示している。
図8の例では、各起動時刻にプログラムを起動し、処理が修了した後、所定の時間の待ち時間を入れ、待ち時間終了後、次の起動時刻に起動するプログラムを実行させる。
【0045】
次に、動作を説明する。
図9は、起動制御プログラム動作(起動制御工程)の一例を表している。
起動制御プログラム2は、まず、起動手順を取得して、起動プログラム表を作成する(S9−1)。起動手順は、予め利用者によってグラフィックパネルシミュレータ9を介して入力される。その際、必要な初期設定を行う。
【0046】
S9−1において、起動手順のデータを読み込み、プログラム名、周期、処理時間をAテーブルの0列目から順にセットする。また、カウンタは0で初期化する。
【0047】
次に、起動制御プログラム2は、検査時間Tmaxとシミュレーション時間の倍率αを設定する(S9−2)。
S9−2では、次の動作を行う。
検査時間を読み込み、Tmaxにセットする。シミュレーション時間倍率を読み込み、αにセットする。例えば、α=2.0の場合は、実時間の2倍の時間でゆっくりシミュレーションすることを指定している。
シミュレーション処理を実行し、実時間≧Tmaxとなると、終了処理を行う(S9−20)。終了処理は、メモリの開放等である。
【0048】
S9−3で、シミュレーションの初期化を行う。
実時間T=0、周期時間Tp=0とし、シミュレーション開始時間Tosim=Tcur()により現在の時刻とする。次に、実行するプログラムのインデクスind=−1とする。
【0049】
S9−4で、次に実行するプログラムのインデクスを、
ind=Next_Prog(A,ind,Tp);
により求める。この関数は、起動プログラム表Aから実時間Tpに実行されるプログラム中でindの次の優先度のプログラムを求める。入力のind=−1のときは、Toで最優先のプログラムのインデクスを返す。リターン値が−1のときは、次にToで実行するプログラムがないことを示す。
【0050】
ind≧0が返されたときは、indの示すプログラムを実行する(S9−7)。
S9−7では、次の動作を行う。
Aテーブルには、センサ入力プログラム、アクチュエータ出力プログラム、パネル入出プログラムと、その他の定周期実行プログラムが登録される。プロセッサP1とP2で並列に処理を行う場合は、S9−7の処理をP1のS9−7,P2のS9−7の順に実行するように変更すればよい。
実行に先立って、t=Tcur()−Tosim−T*αを求め、t>0のときは、シミュレーションをtmsecウエイトさせる。
【0051】
実行後、起動プログラム表をカウントアップ
A(3,ind)=A(3,ind)+1;
し、実時間を実行プログラムの処理時間分進める。
T=T+A(2,ind);
【0052】
ind<0のときは、該当時刻のプログラムが全て実行済みのため、
Tp=Next_Period(A,Tp);
によって次の実行実時間を求め、ind=−1とする。
【0053】
S9−11において、T<Tmaxのときは、検査時間に達していないので、S9−4に戻り、シミュレーションを継続する。
【0054】
S9−11において、T≧Tmaxのときは、検査時間に達しているので、S9−20の終了処理を行う。
【0055】
このようにして、低速シミュレーション処理では、シミュレーション中に、S9−6で所定の時間処理を中断することによってシミュレーション処理の状況を調査することが可能となる。
上記の場合、シミュレーション時間は、実際にシミュレーションに要した時間を示す。
実時間は、実システム上でプログラムを実施した時間の経過を示す。
【0056】
このようにして、まず、起動制御プログラム2により、各シミュレーション処理に従って、定周期実行プログラム群が各々の実時間の周期に応じて起動される。パネル入出力とセンサ入力とアクチュエータ出力プログラムは、パネル入出力の周期、センサ入力周期(データ取り込み周期)、アクチュエータ出力周期に応じて起動制御プログラム2によって起動される。
【0057】
センサ入力は、実際のセンサ入力の代わりに、センサ入力プログラム4によって入出力データメモリ7から値を受け取る。
アクチュエータ出力は、実際のアクチュエータ出力の代わりに、アクチュエータ出力プログラム5によって入出力データに値を出力する。
パネル入出力は、実際のグラフィックパネル入出力の代わりに、パネル入出力プログラム6によって入出力データメモリ7に値を入出力する。
【0058】
以上のように、実時間の実行周期に応じてプログラムの起動をするようにしたことで、基本周期(上記例では5ms)の精度で対象システムのシミュレーションデバッグをすることができる。実時間とシミュレーション時間を独立に扱うため、シミュレーション時間を自由にスケーリングすることができる。高速パソコン上でシミュレーション時間を短縮(高速シミュレーション)することができ、逆に基本周期の起動の際にwait時間を入れ、その時間を修正することにより、シミュレーション時間をダイナミックに変更することができ、ゆっくり(低速シミュレーション)することが可能となる。
【0059】
また、センサ値の定期的取り込みは、センサ入力プログラム4を定周期起動することにより実現できる。
アクチュエータへの定期的出力は、アクチュエータ出力プログラム5を定周期起動することにより実現できる。
【0060】
実施の形態2.
この実施の形態では、当シミュレーションプログラムと、連続系シミュレータとの協調シミュレーションを実施する場合を説明する。
連続系シミュレータは、連続系システムをシミュレーションするシミュレータである。連続系システムとは、システムの変化が時間軸に対して連続的に変化するシステムである。連続系システムは、一般には、微分方程式としてモデル化できる。
【0061】
この実施の形態では、図1に示す外部入出力を模擬するプログラム8に代えて、連続系シミュレータを用いる。
このシミュレーションプログラム1と、連続系シミュレータとの協調シミュレーションは、以下の手段で実現できる。
(1)連続系シミュレータのモデルを作成する。
(2)同期を取る周期を決め、連続系シミュレータを、その周期で入出力データメモリ7から入出力データを取り込み、周期時間分シミュレーションし、結果を入出力データメモリ7に出力するように設定する。
(3)シミュレーションプログラム1のセンサ入力プログラム4とアクチュエータ出力プログラム5とをこの周期で、センサ入力とアクチュエータ出力を行うように設定する。
(4)アクチュエータ出力完了後、連続系シミュレータのシミュレーションを起動する。
(5)センサ入力の起動は、この連続系シミュレーションが完了してから行うように同期を取る。
【0062】
以下に、連続系システムの一例に、このシミュレーション方式を適用する場合を説明する。
例えば、時間遅れのないx軸方向への直線運動の簡単な連続系システムのモデルの場合、現在の時間0の位置x(0)、速度v(0)と、加速度aが与えられると、時間t後の速度v(t)=v(0)+a*t、位置x(t)=x(0)+v(0)*t+0.5*a*(t**2)となる。tは、実時間を示す。
【0063】
例えば、上記連続系システムのモデルについて、5ms毎に位置と速度を受センサから入力し、(目標)加速度計算をし、アクチュエータ出力する定周期実行プログラムを一例としてシミュレーションすると、以下の(1),(2)を5ms毎に実行することになる。
(1)定周期実行プログラムは、5ms毎にセンサー値を取り込み、目標加速度を計算し、アクチュエータに出力する。
(2)連続系シミュレータは、アクチュエータ値(上記目標加速度)を取り込み、現在の位置、速度とアクチュエータ値から、5ms後の位置、速度を計算し、センサ値として出力する。
【0064】
このように、連続系モデルで、時刻tの位置x(t)、速度v(t)が求まっているとき、加速度a(t)を定周期実行プログラムが計算し、連続系シミュレータに与える。連続系シミュレータは、5ms後の速度v(t+5)=v(t)+5a、位置x(t+5)=x(t)+5*v(t)+12.5*aを計算し、定周期実行プログラムに次の計算のための入力として与える。
定周期実行プログラムは、v(t+5)、x(t+5)から次の加速度a’を計算し、連続系シミュレータに与える。
以下、同様に検査時間に到達するまで繰り返す。
【0065】
連続系シミュレータの1回のシミュレーション時間が2ms、定周期実行プログラムの1回のシミュレーション時間が1msとすると、3msのシミュレーション時間で、5msの実時間のシミュレーションができることになる。
【0066】
実施の形態3.
定周期実行プログラムを含むターゲットが、複数プロセッサの並列処理を含む場合のシミュレーションは、以下の手段で実現できる。
この実施の形態では、一例として2つのプロセッサP1,P2がある場合を説明する。
複数プロセッサの並列処理を含む場合、複数のプロセッサで並列して実施する処理を1つのプロセッサを用いて順番に処理を実施することによってシミュレーションを行う。
【0067】
図10に、この実施の形態で図3の例を2プロセッサP1,P2で実行した場合の実行順序を示している。
前述した図6と同様の名称を用いて起動するプログラムを表している。図10の例では、起動制御プログラム2は、まず、0msでP1のセンサ入力、P2のセンサ入力、P1のA実行、P2のA実行、P1のB実行、P2のB実行、P1のC実行、P2のC実行、P1のアクチュエータ出力、P2のアクチュエータ出力、P1のパネル入出力、P2のパネル入出力を実行させる。
【0068】
実施の形態4.
また、ターゲットプログラムA,B,Cがパソコン上で直接実行できない場合は、クロスアセンブラ、またはクロスコンパイラを用いて、パソコン上の定周期実行プログラムA,B,Cを作成する。ターゲットチップの上位互換チップを搭載した高速パソコンがある場合、自己のアセンブラや自己のコンパイラでパソコン上の定周期実行プログラムA,B,Cを作成する。この場合はターゲットプログラムA,B,Cにとっては、パソコンは高速エミュレータの役割を果たすので、高速なシミュレーションが可能となる。
【0069】
実施の形態5.
このシミュレーション方式は、図1に一例として示したようにコンピュータ上で実行させるプログラムによって実現することができる。
また、このシミュレーション方式を実現するプログラムは、記録媒体に記録される。この記録媒体からコンピュータにプログラムを読み込み、読み込んだプログラムを動作させることによって、このシミュレーション方式を実現することが可能である。
【0070】
図11に、この実施の形態の一例を示している。
100は、このシミュレーション方式を実現する計算機の一例である。
計算機100は、CPU(Central Processing Unit)110、メモリ120、ハードディスク130、記録媒体入出力部140を備える。
メモリ120は、ロードされたプログラム121と処理用一時記憶エリア122とに利用される。処理用一時記憶エリア122の一部は、入出力データメモリ7として利用する。
記録媒体150に記録されたプログラムは、記録媒体入出力部140を介して計算機のハードディスク130にシミュレーションプログラム1、外部入出力を模擬するプログラム、試験対象プログラム131として記録される。
上記ハードディスク130に記録されたプログラムは、CPU110によって、メモリ120上にロードされ、処理用一時記憶エリアの入出力データメモリ7を利用して実行される。
【0071】
さらに、このシミュレーション方式は、プログラムに限らず、ハードウェア、ファームフェアによって実現するものであってもよく、プログラムとハードウェア、あるいはファームウェアとの組み合わせであっても構わない。
また、プログラムは、記録媒体によって配布される場合であっても、ネットワークを介して、上記プログラムが記録されている記憶領域から利用者が使用する計算機へ配布される場合であっても構わない。
また、記録媒体は、計算機で読み取り可能なものであればよい。例えば、フレキシブルディスク、磁気テープ、コンパクトディスク等である。
【0072】
【発明の効果】
この発明のシミュレーション方式及び方法によれば、1つまたは複数の定周期実行プログラムを含むターゲットとなるプログラムを、パソコンなどの上で、実時間の基本周期の精度でシミュレーションできる。
【0073】
また、この発明によれば、シミュレーション時にシミュレーション時間を自由に調整できる。
【0074】
また、この発明によれば、センサ値の定期的取り込みもシミュレートや、アクチュエータへの定期的出力もシミュレートができる。
【0075】
また、この発明によれば、連続系シミュレータとの協調シミュレーションもできる。
【0076】
また、この発明によれば、複数のプロセッサを用いた並列実行もシミュレートできる。
【0077】
また、この発明によれば、ターゲットチップの上位互換チップ搭載パソコンがある場合は、特に高速のシミュレーションができる。
【図面の簡単な説明】
【図1】 実施の形態1のシミュレーション方式のシステムの構成の一例を表わす図。
【図2】 起動プログラム表を表す図。
【図3】 起動プログラム表の例を示す図。
【図4】 実施の形態1の入出力メモリに記憶されるデータの一例を表わす図。
【図5】 実施の形態1の定周期実行プログラムの動作例を示す図。
【図6】 実施の形態1で生成される起動順序の一例を表わす図。
【図7】 実施の形態1の定周期実行プログラムの高速シミュレーションの動作例を示す図。
【図8】 実施の形態1の定周期実行プログラムの低速シミュレーションの動作例を示す図。
【図9】 実施の形態1の起動手順プログラムの動作(起動手順工程)のフローチャート図。
【図10】 実施の形態3で生成される起動順序の例を表わす図。
【図11】 実施の形態4のシミュレーション方式の一例を表わす図。
【符号の説明】
1 シミュレーションプログラム、2 起動制御プログラム(起動制御部)、3 プログラムメモリ、4 センサ入力プログラム(入力部)、5 アクチュエータ出力プログラム(出力部)、6 パネル入出力プログラム、7 入出力データメモリ、8 外部入出力を模擬するプログラム群(シミュレーションデータ模擬部)、9 グラフィックパネルシミュレータ、10 センサシミュレータ、11 アクチュエータシミュレータ、12 起動プログラム表、31 定周期実行プログラムA、32 定周期実行プログラムB、33 定周期実行プログラムC、100 計算機、110 CPU、120 メモリ、121 ロードされたプログラム、122 処理用一時記憶エリア、130 ハードディスク、131 試験対象プログラム、140 記録媒体入出力部、150 記録媒体。
Claims (4)
- シミュレーションの対象となる複数の検査プログラムを擬似システム上で動作させるシミュレーション方式において、
上記複数の検査プログラムを予め記憶するプログラムメモリと、
起動する優先度の高い順に並べられた上記複数の検査プログラムの検査プログラム名と、上記複数の検査プログラムの各検査プログラムを起動する所定の周期と、上記複数の検査プログラムの各検査プログラムの処理時間とを含む起動手順情報を起動プログラム表にして記憶し、複数の検査プログラムの実行にかける時間を検査時間として利用者に入力させ、上記起動プログラム表に記憶した上記起動手順情報が含む複数の検査プログラム名から、上記起動手順情報が含む所定の周期で、次に起動する検査プログラムの検査プログラム名を取得して、取得した検査プログラム名が示す検査プログラムを上記プログラムメモリから読み出して起動する処理をするとともに、起動した検査プログラムの処理時間を上記起動プログラム表から取得し、取得した処理時間を、これまでに実行したすべての検査プログラムの処理時間の合計に加算して、処理時間の合計を更新する処理をし、更新した処理時間の合計と上記検査時間とを比較する処理をして、比較した結果、上記処理時間の合計が上記検査時間に達していない場合に、上記検査プログラムを起動する処理と上記処理時間の合計を更新する処理と上記比較する処理とを繰り返す起動制御部と
を備えたことを特徴とするシミュレーション方式。 - 上記起動プログラム表は、さらに、上記複数の検査プログラムの各検査プログラムの起動回数を記憶し、
上記起動制御部は、上記検査プログラムを起動する処理を行った場合に、起動した検査プログラムの起動回数を上記起動プログラム表から取得して、取得した起動回数に1を加算して、上記起動プログラム表の上記起動した検査プログラムの起動回数を更新することを特徴とする請求項1記載のシミュレーション方式。 - 複数の検査プログラムを記憶するプログラムメモリと、セントラル・プロセッシング・ユニット(Central Processing Unit、以下、「CPU」と称する)を備えるコンピュータ上で、シミュレーションの対象となる複数の検査プログラムを動作させるシミュレーション方法において、
起動する優先度の高い順に並べられた上記複数の検査プログラムの検査プログラム名と、上記複数の検査プログラムの各検査プログラムを起動する所定の周期と、上記複数の検査プログラムの各検査プログラムの処理時間とを含む起動手順情報を起動プログラム表にしてCPUにより記憶する工程と、
複数の検査プログラムの実行にかける時間を検査時間としてCPUにより利用者に入力させ、上記起動プログラム表に記憶した上記起動手順情報が含む複数の検査プログラム名から、上記起動手順情報が含む所定の周期で、次に起動する検査プログラムの検査プログラム名をCPUにより取得して、取得した検査プログラム名が示す検査プログラムを上記プログラムメモリからCPUにより読み出して起動する処理をするとともに、起動した検査プログラムの処理時間を上記起動プログラム表からCPUにより取得し、取得した処理時間を、これまでに実行したすべての検査プログラムの処理時間の合計にCPUにより加算して、処理時間の合計をCPUにより更新する処理をし、更新した処理時間の合計と上記検査時間とをCPUにより比較する処理をして、比較した結果、上記処理時間の合計が上記検査時間に達していない場合に、上記検査プログラムを起動する処理と上記処理時間の合計を更新する処理と上記比較する処理とをCPUにより繰り返す工程と
を備えたことを特徴とするシミュレーション方法。 - 複数の検査プログラムを記憶するプログラムメモリと、セントラル・プロセッシング・ユニット(Central Processing Unit、以下、「CPU」と称する)を備えるコンピュータに、シミュレーションの対象となる複数の検査プログラムを動作させるためのプログラムを記録したコンピュータ読取可能な記録媒体において、
起動する優先度の高い順に並べられた上記複数の検査プログラムの検査プログラム名と、上記複数の検査プログラムの各検査プログラムを起動する所定の周期と、上記複数の検査プログラムの各検査プログラムの処理時間とを含む起動手順情報を起動プログラム表にしてCPUにより記憶する処理と、
複数の検査プログラムの実行にかける時間を検査時間としてCPUにより利用者に入力させ、上記起動プログラム表に記憶した上記起動手順情報が含む複数の検査プログラム名から、上記起動手順情報が含む所定の周期で、次に起動する検査プログラムの検査プログラム名をCPUにより取得して、取得した検査プログラム名が示す検査プログラムを上記プログラムメモリからCPUにより読み出して起動する処理をするとともに、起動した検査プログラムの処理時間を上記起動プログラム表からCPUにより取得し、取得した処理時間を、これまでに実行したすべての検査プログラムの処理時間の合計にCPUにより加算して、処理時間の合計をCPUにより更新する処理をし、更新した処理時間の合計と上記検査時間とをCPUにより比較する処理をして、比較した結果、上記処理時間の合計が上記検査時間に達していない場合に、上記検査プログラムを起動する処理と上記処理時間の合計を更新する処理と上記比較する処理とをCPUにより繰り返す処理と
をコンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読取可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001358706A JP4137434B2 (ja) | 2001-11-26 | 2001-11-26 | シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001358706A JP4137434B2 (ja) | 2001-11-26 | 2001-11-26 | シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003162428A JP2003162428A (ja) | 2003-06-06 |
JP4137434B2 true JP4137434B2 (ja) | 2008-08-20 |
Family
ID=19169840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001358706A Expired - Fee Related JP4137434B2 (ja) | 2001-11-26 | 2001-11-26 | シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4137434B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9793395B1 (en) | 2016-10-06 | 2017-10-17 | International Business Machines Corporation | Vertical vacuum channel transistor |
US9853163B2 (en) | 2015-09-30 | 2017-12-26 | Stmicroelectronics, Inc. | Gate all around vacuum channel transistor |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4397858B2 (ja) * | 2005-06-27 | 2010-01-13 | 株式会社ソニー・コンピュータエンタテインメント | エミュレート装置及びエミュレート方法 |
JP2007233930A (ja) * | 2006-03-03 | 2007-09-13 | Shimadzu System Solutions Co Ltd | 分散制御システム用シミュレータ |
JP2010191480A (ja) * | 2007-06-01 | 2010-09-02 | Mitsubishi Electric Corp | シミュレーションシステム |
JP5552300B2 (ja) * | 2009-11-16 | 2014-07-16 | 発紘電機株式会社 | 接続機器シミュレータのシーケンス制御装置、方法、及びプログラム |
US9399955B2 (en) * | 2012-02-29 | 2016-07-26 | General Electric Company | Method and apparatus for local loop closure |
JP2013206106A (ja) * | 2012-03-28 | 2013-10-07 | Dainippon Screen Mfg Co Ltd | シミュレータおよびシミュレーションシステム |
JP6034614B2 (ja) * | 2012-07-31 | 2016-11-30 | キヤノン株式会社 | 情報処理装置およびその方法 |
TWI501102B (zh) * | 2013-08-27 | 2015-09-21 | Inst Information Industry | 虛擬時間控制裝置、方法及電腦程式產品 |
JP6066881B2 (ja) * | 2013-10-09 | 2017-01-25 | 新日鉄住金ソリューションズ株式会社 | 情報処理システム、情報処理装置、情報処理方法及びプログラム |
JP6676883B2 (ja) * | 2015-06-01 | 2020-04-08 | 株式会社Ihi | シミュレーション装置 |
CN105955239B (zh) * | 2016-05-26 | 2018-08-21 | 上海南土信息科技有限公司 | 一种基于共享内存的通用测试平台快速构建方法 |
-
2001
- 2001-11-26 JP JP2001358706A patent/JP4137434B2/ja not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9853163B2 (en) | 2015-09-30 | 2017-12-26 | Stmicroelectronics, Inc. | Gate all around vacuum channel transistor |
US10680112B2 (en) | 2015-09-30 | 2020-06-09 | Stmicroelectronics, Inc. | Gate all around vacuum channel transistor |
US11031504B2 (en) | 2015-09-30 | 2021-06-08 | Stmicroelectronics, Inc. | Gate all around vacuum channel transistor |
US11664458B2 (en) | 2015-09-30 | 2023-05-30 | Stmicroelectronics, Inc. | Gate all around vacuum channel transistor |
US9793395B1 (en) | 2016-10-06 | 2017-10-17 | International Business Machines Corporation | Vertical vacuum channel transistor |
US10431682B2 (en) | 2016-10-06 | 2019-10-01 | International Business Machines Corporation | Vertical vacuum channel transistor |
Also Published As
Publication number | Publication date |
---|---|
JP2003162428A (ja) | 2003-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7873507B2 (en) | Multi-core model simulator | |
JP4137434B2 (ja) | シミュレーション方式及びシミュレーション方法及びプログラムを記録したコンピュータ読取可能な記録媒体 | |
JP3803019B2 (ja) | 制御プログラム開発支援装置 | |
JP3131177B2 (ja) | エミュレーションとシミュレーションを用いた設計検証のための方法および装置 | |
US10552560B2 (en) | Controlling real time during embedded system development | |
JP6514465B2 (ja) | 制御システムシミュレーションシステムおよび方法 | |
JP2006350549A (ja) | 統合シミュレーションシステム | |
CN116090403B (zh) | 支持多仿真器的命令处理系统 | |
US7266791B2 (en) | High level synthesis device, method for generating a model for verifying hardware, method for verifying hardware, control program, and readable recording medium | |
JP4906286B2 (ja) | ソフトウェア開発環境システム | |
JP2861962B2 (ja) | コンピュータプログラムのシミュレーション装置および方法 | |
JP3212709B2 (ja) | ロジックシミュレーション装置 | |
US20050234695A1 (en) | Timing control method of hardware-simulating program and application of the same | |
CN1114177C (zh) | 动画控制设备 | |
JP2003228496A (ja) | 制御プログラム開発支援装置 | |
JP2003323203A (ja) | オフラインテスト装置およびオフラインテスト方法 | |
JPS6349851A (ja) | シミユレ−シヨンシステム | |
JPH11219209A (ja) | 汎用plcのオフラインシミュレーション装置 | |
Saoud et al. | Co-design of emulators for power electric processes using SpecC methodology | |
Nalepka et al. | Real-time simulation using Linux | |
JP2001236247A (ja) | ソフトウェアシミュレータおよびシミュレーション処理方法 | |
JPH02125284A (ja) | 発電プラント運転訓練シミュレータ | |
JPH04277840A (ja) | 非同期命令のシミュレーション方式 | |
JP2000293396A (ja) | システム性能見積もり方法及びシステム性能見積もり装置 | |
JPS62267838A (ja) | ハ−ドウエア論理シミユレ−タを用いた論理装置の試験方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20040517 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041018 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041025 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070926 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071016 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071217 |
|
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: 20080603 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080604 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110613 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120613 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130613 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |