JP5065344B2 - シミュレーション方法、システム及びプログラム - Google Patents

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

Info

Publication number
JP5065344B2
JP5065344B2 JP2009165698A JP2009165698A JP5065344B2 JP 5065344 B2 JP5065344 B2 JP 5065344B2 JP 2009165698 A JP2009165698 A JP 2009165698A JP 2009165698 A JP2009165698 A JP 2009165698A JP 5065344 B2 JP5065344 B2 JP 5065344B2
Authority
JP
Japan
Prior art keywords
synchronization
peripheral
cycle
synchronization timing
emulator
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.)
Active
Application number
JP2009165698A
Other languages
English (en)
Other versions
JP2011022702A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2009165698A priority Critical patent/JP5065344B2/ja
Priority to US12/834,081 priority patent/US8498856B2/en
Publication of JP2011022702A publication Critical patent/JP2011022702A/ja
Application granted granted Critical
Publication of JP5065344B2 publication Critical patent/JP5065344B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/15Vehicle, aircraft or watercraft design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Description

本発明は、自動車などの物理システムのシミュレーションに関し、より詳しくは、ソフトウェア・ベースでのシミュレーション・システムに関するものである。
自動車は、その初期の時代の20世紀初頭は、動力としてのエンジンと、ブレーキ、アクセル、ハンドル、トランスミッション、サスペンジョンを含む、機構部品からなっていたが、エンジンのプラグの点火、ヘッドライト以外は、電気的な仕組みはほとんど利用していなかった。
ところが、1970年代頃から、大気汚染、石油危機などに備えて、エンジンを効率的に制御する必要性が生じ、このためエンジンの制御に、ECUが使用されるようになってきた。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成される。
いまや、エンジンやトランスミッションなどの制御システム、Anti-lock Breaking System (ABS)、Electronic Stability Control (ESC)、パワーステアリングだけでなく、ワイパー制御やセキュリティ・モニタリング・システムなどに至るまで、最近の自動車では、機構部品だけでなく、エレクトロニクス部品やソフトウエアが重要な比率を占める。後者に関する開発費は全体の25%とも40%とも言われ、ハイブリッド型の自動車では70%を占める。
電子制御は、ECUを複数、配置して行われる。ECU間は車載ネットワーク、例えば、Controller Area Network (CAN) で相互に接続される。また、制御の対象である、エンジンやトランスミッションなどには、それぞれのECUから直接ワイヤ接続する。
ECUは、小さなコンピュータであり、センサ入力などからの割り込みに応じて動作する。一方、エンジンなどは連続的に機械的動作を行っている。すなわち、コンピュータ系のディジタル・システムと、機械系の物理システムが、自動車という単一システムにおいて、並列に協調動作を行っている。当然、これを支えるソフトウエアは複雑さがますます増大しており、ECU単体で動作を検証するだけでなく、複数を同時に検証する仕組みの実現が要望されている。
一方、ECUの出力信号によって駆動されるアクチュエータには、電磁ソレノイド及びモータ等がある。ソレノイドは例えば、エンジンのインジェクタ、トランスミッションのシフト・コントロール、ブレーキのバルブ制御、ドアロックなどに使用される。
このようなテストにために従来行われている技法として、HILS(Hardware In the Loop Simulation)がある。特に、自動車全体のECUをテストする環境は、ホールビークルHILS(Whole Vehicle Hardware In the Loop Simulation)と呼ばれる。ホールビークルHILSにおいては、実験室内で、本物のECUが、エンジン、トランスミッション機構などをエミュレーションする専用のハードウェア装置に接続され、所定のシナリオに従って、テストが行われる。ECUからの出力は、監視用のコンピュータに入力され、さらにはディスプレイに表示されて、テスト担当者がディスプレイを眺めながら、異常動作がないかどうか、チェックする。
しかし、HILSは、専用のハードウェア装置を使い、それと本物のECUの間を物理的に配線しなくてはならないので、準備が大変である。また、別のECUに取り替えてのテストも、物理的に接続し直さなくてはならないので、手間がかかる。さらに、本物のECUを用いたテストであるため、テストに実時間を要する。従って、多くのシナリオをテストすると、膨大な時間がかかる。また、HILSのエミュレーション用のハードウェア装置は、一般に、非常に高価である。
そこで近年、高価なエミュレーション用ハードウェア装置を使うことなく、ソフトウェアで構成する手法が存在する。この手法は、SILS(Software In the Loop Simulation)と呼ばれ、ECUに搭載されるマイクロコンピュータ、入出力回路、制御のシナリオなどを全て、ソフトウェア・シミュレータで構成する技法である。これによれば、ECUのハードウェアが存在しなくても、テストを実行可能である。
ところで、自動車用シミュレーション・システムは、連続系シミュレータと、離散系シミュレータを有する。連続系シミュレータの例として、エンジンの機械系部分をシミュレートするシミュレータがある。離散イベント系シミュレータの例として、エンジン回転のパルスのタイミングで動作し、燃料噴射や点火のタイミングを制御するECUのシミュレータがある。
4WDのシミュレーションをする場合においては、連続系シミュレータの例として、各タイヤへのトルク配分から車の動作を繰り返し計算するシミュレータがあり、離散イベント系シミュレータの例として、10ミリ秒ごとの定期パルス信号で動作し、車のヨーレートなどのセンサ入力から各タイヤへのトルク配分を決定するECUをシミュレートするシミュレータがある。
さらに、離散系シミュレータは、連続系シミュレータのタイムスライスとは非同期に、パルス信号入力以外に、I/Oポートを通じてデータの読み書きを行う。典型的には、センサからのデータを読み込み、更新する。
典型的な離散系シミュレータである、ECUエミュレータは、CPUエミュレータと、CPUエミュレータと連続系シミュレータの間をインターフェースするペリフェラルとからなる。
このようなシミュレータで、特に問題となるのは、ペリフェラルをシミュレートすることである。というのは、特にペリフェラルは種類が多く、その動作タイミングもまちまちなので、正確に動作するようにシミュレーション・システムを構成することが困難である。
1つの解決策は、ECUベンダが提供するハードウェア記述をそのまま利用して、忠実にステップ毎にペリフェラル・エミュレータを実行させることである。
TLM 2.0 user manual, June 2008の3.3.2章には、Loosely-timed coding style
and temporal decouplingに関する記述がある。
特開2001−101156号公報は、最適シミュレーションパラメータ自動推定システムにおいて、生データとシミュレーションデータとの一致性を客観的に判断できるようにするために、出発値、可変ステップ幅、終了値を設定し、パラメータ可変用テーブルを作成するパラメータ可変用設定ダイヤログウインドウと、シミュレーション計算結果と比較データとの類似度を評価するデータ比較モジュールとを備え、パラメータ可変用テーブルの条件全てについて、シミュレーション計算を行って計算結果と比較データとの類似度を評価して最適シミュレーションパラメータを推定することを開示する。
特開2002−318990号公報は、シミュレーション・システムにおいて、jステップ目まで既知の状態で、処理が実行され、j+1ステップ目の予測子及び修正子を計算し、誤差の推定値が誤差の許容値より小さいか判定し、その判定が“Yes”であれば、次のステップ幅又は解を計算し、処理を1ステップ進め、その判定が“No”であれば、ステップ幅を縮小するか、又は、処理を1ステップ戻すことを開示する。
特開2001−101156号公報 特開2002−318990号公報
TLM 2.0 user manual, June 2008
上記従来技術には、予め既定よりも緩いタイミングでシミュレーション・システムを動作させること、及び、必要に応じて、その動作条件を変化させることは開示されているが、ペリフェラルなどの動作条件の異なる複数の機能ブロックの間の動作タイミングを適合させることは開示も示唆もされていない。
従って、この発明の目的は、ECUのペリフェラルなどの動作条件の異なる複数の論理ブロックをもつシミュレーション・システムにおいて、互いに接続される論理ブロック間の同期タイミングを適合させることによって、動作速度を向上させることにある。
この発明の前提としてまず、典型的にはECUのペリフェラル・モジュールである、論理ブロックのハードウェア仕様が、SystemCなどの記述言語により記述される。
そのように記述されたSystemCのハードウェア仕様が、所定のスキャンツールによってスキャンされ、これによって、ペリフェラル・モジュールをノードとし、ペリフェラル・モジュール間の通信時間を重みとしてもつエッジからなるグラフが、好適にはコンピュータのメモリ上に作成される。
このようにして作成されたグラフが、コンピュータ上で探索され、ループが抽出される。抽出されたループについて、エッジの重みに基づきパス長が計算され、こうして計算されたパス長のうちの最小のものが、ΔT_periとして、コンピュータのメモリに記憶される。この発明では、ΔT_periでの同期サイクルでの動作を、強連成モデルでの動作と呼ぶ。
次に、同様にして抽出されたループについて、仕様や経験に基づきユーザが設定した許容される遅延により、より緩められた同期の値が求められ、そのうちの最小のものが、ΔT_peri'として、コンピュータのメモリに記憶される。この発明では、ΔT_peri'での同期サイクルでの動作を、弱連成モデルでの動作と呼ぶ。
本発明によれば次に、あるループ内にあるペリフェラルと、別のループにあるペリフェラルとの間で、ΔT_periやΔT_peri'よりも大きいΔT_majorで通信することが可能かどうかがチェックされ、もしそうなら、ΔT_majorで通信される。この発明では、あるループ内にあるペリフェラルと、別のループにあるペリフェラルとの間で、許容された大きい同期サイクルで動作することを、ペリフェラル間の同期サイクルの集約モデルでの動作と呼ぶ。
本発明によればさらに、あるペリフェラルとプラント間の通信が、ある集約された同期サイクルΔT_majorで通信することが可能かどうかがチェックされ、もしそうなら、ΔT_majorで通信される。この発明では、あるペリフェラルと、プラントの間で、許容された大きい同期サイクルで動作することを、ペリフェラルとプラントの同期サイクルの集約モデルでの動作と呼ぶ。
このようなスキームが用意されると、シミュレーション・システムではまず、強連成モデルでの動作が試みられ、それで所望の動作速度が得られるなら、強連成モデルでシミュレーション・システムが実行される。
そうでないなら次に、弱連成モデルでの動作が試みられ、それで所望の動作速度が得られるなら、弱連成モデルでシミュレーション・システムが実行される。
そうでないなら次に、ペリフェラル間の同期サイクルの集約モデルでの動作が試みられ、それで所望の動作速度が得られるなら、ペリフェラル間の同期サイクルの集約モデルでシミュレーション・システムが実行される。
そうでないなら、ペリフェラルとプラントの同期サイクルの集約モデルで、シミュレーション・システムが実行される。
この発明によれば、シミュレーション・システムにおいて、仕様記述から同期タイミングを次第に緩和していくようにして、動作の正確さを維持しつつ、可能な最大の動作速度を達成することが可能となる。
ECUの典型的な制御である、フィードバック閉ループ系の例を示す図である。 応答関数による記述の例である。 本発明を実施するためのハードウェア構成のブロック図である。 本発明を実行するためのデータ、モジュール、及び実行環境の機能ブロック図である。 ECUエミュレータとプラント・シミュレータの同期実行を示す図である。 プラント・シミュレータとペリフェラル・エミュレータの間の通信、及びペリフェラル・エミュレータ同士の通信に限定して図式的に示す図である。 ΔT_periでの同期サイクルでの動作を、強連成モデルでの同期サイクルΔT_periを求める処理のフローチャートを示す図である。 最大同期サイクルを説明するための図である。 強連成モデルから得られた同期サイクルによる実行の処理を示すフローチャートであり、特に実行時スケジューラの場合を示す。 強連成モデルから得られた同期サイクルによる実行の処理を示すフローチャートであり、特に静的スケジューラの場合、すなわち、あらかじめ実行の順番などを決めてペリフェラル実行コードをディスパッチするコードを予め生成し,それを実行する方式の場合を示す。 弱連成化のための緩和された同期サイクルを説明するための図である。 同期サイクルの集約について説明する図である。 実行時スケジューラの場合の処理を示すフローチャートである。 静的スケジューラの場合の処理を示すフローチャートである。 プラントとの同期の弱連成化を説明する図である。。 処理の全体のシナリオを説明する図である。
以下、図面を参照して、本発明の一実施例の構成及び処理を説明する。以下の記述では、特に断わらない限り、図面に亘って、同一の要素は同一の符号で参照されるものとする。なお、ここで説明する構成と処理は、一実施例として説明するものであり、本発明の技術的範囲をこの実施例に限定して解釈する意図はないことを理解されたい。
本発明を実現するための構成を説明する前に、その前提として、ECUについて説明する。ECUは、一般的に、センサからの入力信号を、例えばA/D変換する入力インターフェースと、決められた論理に従ってディジタル入力信号を処理する論理演算部(マイクロコンピュータ)と、その処理結果を、アクチュエータ作動信号に変換する出力インターフェースとから構成されるものである。
この発明は、説明の便宜上、以下では、自動車のECUに関連して説明するが、それには限定されず、航空機、ロボットなどその他のECUをもつメカトロニクス機構全般に適用可能であることを理解されたい。
ECUは、周辺や環境状態、エンジンなどの駆動機構の状態、及び人間による指示操作の内容をセンサで検出して、信号として入力する。具体的には、水温センサ、吸気温センサ、過給圧センサ、ポンプ角センサ、クランク角センサ、車速センサ、アクセル位置センサ、A/Tシフト・ポジション、スタータ・スイッチ、エアコンECUなどからの信号がある。
ECUは、これらの信号を入力して、電磁スピル弁、フュエル・カット・ソレノイド、タイミング・コントロール・バルブ、吸気絞りVSV、グロー・プラグ・リレー、タコメータ及びエアコン・リレーなどを駆動する信号を出力しする。
1つのECUが複数の異なる機構を制御するための駆動信号を出力するようにすることは不可能ではないが、例えば、エンジンとエアコンのように、応答性やその制御の厳密性が異なるものを単一のECUで制御することは合理的でなく、従って、一般的に自動車にECUは複数個設けられる。
図1は、ECUの典型的な制御である、フィードバック閉ループ系の例を示す図である。すなわち、図1において、ある目標の信号が、ECUであるコントローラ102に入力され、ECUは、目標の信号を内部処理することによって、駆動信号を出力し、制御対象モデルである、エンジンなどのプラント104を駆動し、プラント104の出力は、センサ106を介して、コントローラ102の入力にフィードバックされる。
ここで目標信号として与えられるのは、例えば、スロットル開度、アイドル・コントロール、ブレーキ力、シフト、スタータON・OFF、バッテリ電圧、インジェクション通電時間、インジェクション通電回数、デポジット、ドウェル角、進角値、吸気完了フラグ、点火完了フラグ、大気圧、車両重量、転がり抵抗係数、道路勾配、粘着係数、吸気温、などのパラメータである。
また、センサ信号としてフィードバックされるのは、スロットル開度、吸気圧力、吸入空気量、シフト、エンジン回転数、車速、排気温、O、冷却水温、空燃比、ノック、点火異常、などである。
ECUが制御する対象は、ニュートンの力学方程式で解かれる、機構系システムであったり、電気回路の応答方程式で解かれる、電気駆動回路であったり、それらの組み合わせであったりする。これらは、基本的に微分方程式であり、制御工学によれば、ラプラス変換によって応答関数に変換されて、記述することができる。
図2は、そのような応答関数による記述の例である。図4で破線202で囲った箇所が、図1のコントローラ102に対応し、破線204で囲った箇所が、図1の制御対象モデル104に対応し、センサ106が、ブロック206に対応する。なお、図2は、応答関数による表現の一例であって、特に本発明を限定する意図はないことを理解されたい。
次に、図3を参照して、本発明を実施するために使用されるコンピュータのハードウェアについて説明する。図3において、ホスト・バス302には、複数のCPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dが接続されている。ホスト・バス302にはさらに、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dの演算処理のためのメイン・メモリ306が接続されている。
一方、I/Oバス308には、キーボード310、マウス312、ディスプレイ314及びハードティスク・ドライブ316が接続されている。I/Oバス308は、I/Oブリッジ318を介して、ホスト・バス302に接続されている。キーボード310及びマウス312は、オペレータが、コマンドを打ち込んだり、メニューをクリックするなどして、操作するために使用される。ディスプレイ314は、必要に応じて、後述する本発明に係るプログラムをGUIで操作するためのメニューを表示するために使用される。
この目的のために使用される好適なコンピュータ・システムのハードウェアとして、IBM(R)System Xがある。その際、CPU0 304a、CPU1 304b、CPU2 304c、CPU3 304dは、例えば、インテル(R)Core 2 DUOであり、オペレーティング・システムは、Windows(商標)Server 2003である。オペレーティング・システムは、ハードティスク・ドライブ316に格納され、コンピュータ・システムの起動時に、ハードティスク・ドライブ316からメイン・メモリ306に読み込まれる。
ここで図示されているCPUの個数は4個であるが、これに限定されず、シングル・プロセッサのシステムであってもよく、あるいは、任意の個数のマルチコア、またはマルチプロセッサのシステムであってもよい。
なお、本発明を実施するために使用可能なコンピュータ・システムのハードウェアは、IBM(R)System Xに限定されず、本発明のシミュレーション・プログラムを走らせることができるものであれば、任意のコンピュータ・システムを使用することができる。オペレーティング・システムも、Windows(R)に限定されず、Linux(R)、Mac OS(R)など、任意のオペレーティング・システムを使用することができる。さらに、ECUエミュレータ・プログラム、プラント・シミュレータなどの論理プロセスを高速で動作させるために、POWER(商標)6ベースで、オペレーティング・システムがAIX(商標)のIBM(R)System Pなどのコンピュータ・システムを使用してもよい。
ハードディスク・ドライブ316にはさらに、ECUエミュレータ、プラント・シミュレータなどの複数の論理プロセス、及び、複数の論理プロセスを協働して動作させるためのプログラムが格納され、キーボード310及びマウス312によって起動操作可能である。
好適には、フルビークルSILSを実現するために、1台の自動車で使われるすべてのECUエミュレータ・プログラムと、ECUエミュレータ・プログラムとプラント・シミュレータとのインターフェースを与えるペリフゥラル・エミュレータが、ハードティスク・ドライブ316に保存されている。
ハードティスク・ドライブ316にはさらに、図4に関連して後述するデータ及びプログラム・モジュール、及びプラント・シミュレータも格納されている。
なお、ここでの「エミュレータ」と、「シミュレータ」の用語の使い分けであるが、もともとの、別のプロセッサで動くことを想定して書かれていたECUのコードを、CPU0〜CPU3などをターゲットとして動くようにすることを、エミュレーションと呼び、それを行うプログラムを、エミュレータと呼ぶ。一方、エンジンなどの物理的システムの動作を仮想計算するシステムを、シミュレータと呼ぶ。
図4は、本発明を実行するためのデータ、モジュール、及び実行環境の機能ブロック図である。図4において、ハードウェア仕様402とは、コンピュータ可読にハードディスク・ドライブ316などに保存されたファイルであって、例えば、SystemCで記述されている。以下に、SystemCの記述例を示す。
下記で、通信にかかる遅延時間は、peripheral_a.cpp 16行目に記述:
sc_time* time = new sc_time(50, SC_NS); // communication delay is 50nsに記述
AからBへの通信は、peripheral_a.cpp 24行目に記述:
i_socket->b_transport(*trans, *time);
BからAへの通信は、peripheral_a.cppのb_transportからのreturnに相当する
Bの処理時間と通信にかかる遅延時間は、peripheral_b.cpp 12行目に記述:
sc_time* delay = new sc_time(100, SC_NS); // processing time and communication delay are 100ns
// peripheral_a.h
#ifndef PERIPHERAL_A_H_
#define PERIPHERAL_A_H_
#include <systemc>
#include <tlm.h>
using namespace sc_core;
using namespace sc_dt;
using namespace std;
using namespace tlm;
SC_MODULE(PERIPHERAL_A), tlm_bw_transport_if<>
{
public:
tlm_initiator_socket<32> i_socket;
SC_HAS_PROCESS(PERIPHERAL_A);
PERIPHERAL_A(sc_module_name);
protected:
virtual tlm_sync_enum nb_transport_bw(tlm_generic_payload&, tlm_phase&, sc_time&);
virtual void invalidate_direct_mem_ptr(uint64, uint64);
void thread0(void);
};
// end of peripheral_a.h
#endif
// peripheral_a.cpp
#include "peripheral_a.h"
PERIPHERAL_A::PERIPHERAL_A(sc_module_name name)
: sc_module(name)
, i_socket("i_socket")
{
i_socket.bind(*this);

SC_THREAD(thread0);
}
void PERIPHERAL_A::thread0(void)
{
tlm_generic_payload* trans = new tlm_generic_payload;
int write_value = 100;
sc_time* time = new sc_time(50, SC_NS); // communication delay is 50ns
trans->set_address(0x0);
trans->set_data_ptr(RCAST<unsigned char *>(&write_value));
trans->set_data_length(4);
trans->set_write();
// communication start
i_socket->b_transport(*trans, *time);

// the value of "time" is 150ns here
cout << time->to_string() << endl;
if (trans->is_response_error()) {
//error processing
}
delete trans;
delete time;
}
tlm_sync_enum PERIPHERAL_A::nb_transport_bw(tlm_generic_payload& trans, tlm_phase& phase, sc_time& t)
{
trans.set_response_status(TLM_GENERIC_ERROR_RESPONSE);
return TLM_COMPLETED;
}
void PERIPHERAL_A::invalidate_direct_mem_ptr(uint64 a, uint64 b)
{
}
// end of peripheral_a.cpp
// peripheral_b.h
#ifndef PERIPHERAL_B_H
#define PERIPHERAL_B_H
#include <systemc>
#include <tlm.h>
using namespace sc_core;
using namespace sc_dt;
using namespace std;
using namespace tlm;
SC_MODULE(PERIPHERAL_B), tlm_fw_transport_if<>
{
public:
tlm_target_socket<32> t_socket;
SC_HAS_PROCESS(PERIPHERAL_B);
PERIPHERAL_B(sc_module_name);
protected:
virtual void b_transport(tlm_generic_payload&, sc_time&);
virtual tlm_sync_enum nb_transport_fw(tlm_generic_payload&, tlm_phase&, sc_time&);
virtual unsigned int transport_dbg(tlm_generic_payload&);
virtual bool get_direct_mem_ptr(tlm_generic_payload&, tlm_dmi&);
};
#endif
// end of peripheral_b.h
// peripheral_b.cpp
#include "peripheral_b.h"
PERIPHERAL_B::PERIPHERAL_B(sc_module_name name)
: sc_module(name)
, t_socket("t_socket")
{
t_socket.bind(*this);
}
void PERIPHERAL_B::b_transport(tlm_generic_payload& trans, sc_time& t)
{
sc_time* delay = new sc_time(100, SC_NS); // processing time and communication delay are 100ns
// process descriptions of peripheral_b
t = t + *delay;
delete delay;
}
tlm_sync_enum PERIPHERAL_B::nb_transport_fw(tlm_generic_payload& trans, tlm_phase& phase, sc_time& t)
{
return TLM_COMPLETED;
}
unsigned int PERIPHERAL_B::transport_dbg(tlm_generic_payload& trans)
{
return 0;
}
bool PERIPHERAL_B::get_direct_mem_ptr(tlm_generic_payload& trans, tlm_dmi& dmi)
{
return false;
}
// end of peripheral_b.cpp
// main.cpp
#include "peripheral_a.h"
#include "peripheral_b.h"
#define deltaT 10.0
#define ATUII_NUM 5
int sc_main(int argc, char **argv)
{
PERIPHERAL_A *peri_a;
PERIPHERAL_B *peri_b;
peri_a = new PERIPHERAL_A("A");
peri_b = new PERIPHERAL_B("B");
// connect from peri_a to peri_b
peri_a->i_socket(peri_b->t_socket);
sc_start(200, SC_NS);
delete peri_a;
delete peri_b;
return 0;
}
// end of main.cpp
モジュール間遅延データ404は、ユーザが設定した、所定のペリフェラル間、あるいは所定のペリフェラルと所定のプラントの間の許容可能な遅延時間を含むデータの集まりであり、好適には、CSV、あるいは適当なデータベースのフォーマットでハードディスク・ドライブ316に保存され、後で、ペリフェラルのID、プラントのIDなどで、設定された許容可能な遅延時間を検索可能である。
同期タイミング計算モジュール406は、ハードディスク・ドライブ316に保存されたハードウェア仕様402及びモジュール間遅延データ404を参照して、後述する、強連成モデル、弱練成モデル、ペリフェラル間の同期サイクルの集約モデル、または、ペリフェラルとプラントの同期サイクルの集約モデルにおける同期タイミングを計算する。
ハードディスク・ドライブ316にはさらに、ECUエミュレータ408と、プラント・シミュレータ414が保存されており、コンピュータの起動時に、メイン・メモリ306にロードされて、オペレーティング・システムにより実行される。このような実行環境を、参照符号416で示す。
ECUエミュレータ408は、実際は複数のECUエミュレータからなっており、電磁スピル弁、フュエル・カット・ソレノイド、タイミング・コントロール・バルブ、吸気絞りVSV、グロー・プラグ・リレー、タコメータ及びエアコン・リレーなどに個々に対応する。個々のECUエミュレータは、CPUエミュレータ410と、ペリフゥラル・エミュレータ412からなり、ペリフゥラル・エミュレータ412がCPUエミュレータ410とプラント・シミュレータ414の間のインターフェースを与える。
プラント・シミュレータ414もまた、実際は複数のプラント・シミュレータからなっており、エンジン・シミュレータ、トランスミッション、エアコン、ブレーキ、ワイパーなどに個々に対応する。
図示されているように、実行環境416は、同期タイミング計算モジュール406を参照して、ペリフゥラル・エミュレータ間、またはペリフゥラル・エミュレータとプラント・シミュレータの間の同期タイミングを設定しつつ、シミュレーション・システムを動作させる。
図5は、ECUエミュレータとプラント・シミュレータの同期実行を示す図である。図5において、ECUエミュレータ502及び504は、図4で、ECUエミュレータ408と示したものと同一であり、例えば、ECUエミュレータ502は、CPUエミュレータ502aと、ペリフェラル・エミュレータ502bとからなる。
図5には、ECUエミュレータは2個しか示されていないが、実際のホールビークルSILSを構成する際には、40個以上接続されることもある。
CPUエミュレータ502aは、プラント・シミュレータ506と、ペリフェラル・エミュレータ502bを介して通信する。プラント・シミュレータ506と、ペリフェラル・エミュレータ502bの間は、メイン・メモリ306の指定された共有メモリ領域を使うか、またはCANエミュレータ(図示しない)を介して行なわれる。
図6は、プラント・シミュレータとペリフェラル・エミュレータの間の通信、及びペリフェラル・エミュレータ同士の通信に限定して図式的に示す図である。ここには、プラント・シミュレータ602と、ペリフェラル・エミュレータ604〜610が示されている。
図6において、プラント・シミュレータ602は、1μs毎にペリフェラル・エミュレータA604と通信するものとする。そこで、実機における1秒分のシミュレーションを考慮すると、5ns毎に各ペリフェラル・エミュレータが動作するとすると、実機における1秒分に対応して、シミュレーションに20.40sの時間がかかる。
そこで、ペリフェラル・エミュレータ間の同期コストを削減することにより、100ns毎に各ペリフェラル・エミュレータが動作するとすると、実機における1秒分に対応して、シミュレーションにかかる時間は、5.85sまで減る。
そこでさらに、ペリフェラル・エミュレータA604からプラント・シミュレータ602への通信を、1μs毎に1回にすることにより、シミュレーションにかかる時間は、1.60sまでに減り、これは実機の実時間に迫る速度となる。本発明は、このようなシミュレーション速度の向上を意図するものである。
図7は、ΔT_periでの同期サイクルでの動作を、強連成モデルでの同期サイクルΔT_periを求める処理のフローチャートを示す図である。この処理は、図4に示す同期タイミング計算モジュール406によって実行される。
図7のステップ702において、同期タイミング計算モジュール406は、ハードディスク・ドライブ316に保存されている、好適にはSystemCのソースコードであるハードウェア仕様402から、ペリフェラルの接続情報を抽出する。
次のステップ704で、同期タイミング計算モジュール406は、抽出した情報に基づき、ペリフェラルをノード、ペリフェラル間の接続をエッジとするグラフを生成して、そのデータ構造を含む情報を、メイン・メモリ306に保存する。このとき、エッジには、仕様に基づく、ペリフェラル間の処理時間が重みとして関連付けられ、従って、グラフは重み付きグラフである。
次のステップ706では、同期タイミング計算モジュール406が、ステップ704で生成されたグラフからループを抽出する。
すなわち、求めたいグラフ上の経路を(p0, ...,pk)とする。そして、ステップ704で生成されたグラフG ≡ (V,E) ここで、VはグラフGのノードの集合、EはグラフGのエッジの集合とすると、このようなループは、下記の条件を満たすものとして抽出される。
pi ∈ V ( 0 <= i <= k)
(pjpj+1) ∈ E ( 0 <= j <= k)
p0 = pk
このようにして求められたループ内の仕様の処理時間を加えた値に基づき、ステップ708で、ΔT_periが求められる。ΔT_periの求め方については、図8を参照して、より詳細に説明する。
ステップ710では、個々のループで計算したΔT_periのうちの最小のものが、改めてΔT_periとして、後のシミュレーション実行処理のために、メイン・メモリ306、またはハードディスク・ドライブ316に保存される。
次に、図8を参照して、具体的にΔT_periを求める方法について説明する。先ず、図8(a)のように、ペリフェラル1とペリフェラル2からなるループが見つかったとする。そして、ペリフェラル1からペリフェラル2への通信の仕様上の時間が100nsで、ペリフェラル2からペリフェラル1への通信の仕様上の時間も100nsであるとする。
すると、ペリフェラル1からペリフェラル2へ通信され、それに応答して、ペリフェラル1からペリフェラル2へ通信されることのトータルで、少なくとも200nsという時間がかかる。
そこで、同期サイクルを200nsより大きくとるとする。というのは、同期サイクルを大きくとるほど、シミュレーション速度を向上することができるからである。
しかし、200nsより大きい同期サイクルには、ペリフェラル1からの送信という事象と、ペリフェラル1のペリフェラル2からの受信という事象がともに含まれ得る。ところが、1つの同期サイクル内で起こる事象は、前後関係を確認することができないので、1つの同期サイクル内で同一のペリフェラルに関する異なる2つ以上の事象が複数含まれると、それらの間の因果関係を保証できなくなる。すなわち、図8(b)にあるような「不正確な同期サイクル」になってしまう。
そこで、同期サイクルを縮めて、200nsより短くすると、図8(b)に示すように、ペリフェラル1からの送信という事象と、ペリフェラル1のペリフェラル2からの受信という事象が別の同期サイクルに収まるようになって、因果関係が維持されるようになる。このような同期サイクルは、前述のように、最大同期サイクルΔT_periと呼ばれる。
図9は、強連成モデルから得られた同期サイクルによる実行の処理を示すフローチャートであり、特に実行時スケジューラの場合を示す。言い換えると、ペリフェラル実行コードを、グリーンスレッド・ライブラリなどの実行時にディスバッチする方式である。ここで、グリーンスレッドとは、オペレーティング・システムのサポートによらないユーザー空間のスレッドのことをいい、グリーンスレッドを動かすための実行時ライブラリをグリーンスレッド・ライブラリと呼ぶ。以下の処理は、図4の実行環境416によって実行される。
さて、図9において、ステップ902では、ペリフェラルが1つ選ばれる。次のステップ904では、選ばれたペリフェラルが実行される。
ステップ906では、選ばれたペリフェラルが、同期サイクル分ΔT_peri実行したかどうかが判断される。ここでの実行単位は、図8(b)でのクロック1つ分である。こうして、ペリフェラルが、同期サイクル分ΔT_peri実行されると、ステップ908では、すべてのペリフェラルを今回の同期サイクル分、すなわち、ΔT_peri分実行させたかどうかが判断され、もしそうでなければ、ステップ902に戻って次のペリフェラルを選ぶ。
もしそうであるなら、ステップ910に行って次の同期サイクルに進む。すなわち、同期サイクル分、シミュレーションの時間を進める。
図10は、強連成モデルから得られた同期サイクルによる実行の処理を示すフローチャートであり、特に静的スケジューラの場合、すなわち、あらかじめ実行の順番などを決めてペリフェラル実行コードをディスパッチするコードを予め生成し,それを実行する方式の場合を示す。
図10において、ステップ1002では、ペリフェラル1を実行する。ステップ1004では、同期サイクル分実行したかどうかが判断され、そうでないならステップ1002に戻ってペリフェラル1の実行を続け、ペリフェラル1が同期サイクル分実行されたと判断されると、次にペリフェラル2についての同様の処理へと進む。
こうして、ペリフェラル1、ペリフェラル2、・・・ペリフェラルNと順次進み、ステップ1006でペリフェラルNを実行する。ステップ1008では、同期サイクル分実行したかどうかが判断され、そうでないならステップ1006に戻ってペリフェラルNの実行を続け、ペリフェラルNが同期サイクル分実行されたと判断されると、次にステップ1010に進んで、次の同期サイクル、例えば、弱連成化同期サイクルへと進む。
次に、ペリフェラル間同期の弱連成化について説明する。あるサイクルで同期するシミュレーションでは、ペリフェラル間の発生時刻が遅れるが、そのことが分かっているユーザが予め、特定のペリフェラル間の許容可能な遅延を、図4のモジュール間遅延データ404に記述しておく。
すると、同期タイミング計算モジュール406は、図7のフローチャートの処理と同様の処理で見出されたループにおけるペリフェラル間の許容可能な遅延をルックアップし、その許容可能な遅延も含めて、緩和した同期サイクルΔT_peri'を計算する。
先ず、図11(a)に示すように、ペリフェラル1とペリフェラル2からなるループが見つかったとする。そして、ペリフェラル1からペリフェラル2への通信の仕様上の時間が100nsで、ペリフェラル2からペリフェラル1への通信の仕様上の時間も100nsであるとする。さらにまた、ペリフェラル1からペリフェラル2への通信の、ユーザにより指定された許容可能な遅延が500ns、ペリフェラル2からペリフェラル1への通信の、ユーザにより指定された許容可能な遅延も500nsであるとする。
すると、図11(b)のタイミング図に示すように、ペリフェラル1での遅れP1と、ペリフェラル2での遅れP2が、ユーザにより指定された許容可能な遅延に収まるように、且つ、因果関係を維持するように、緩和した同期サイクルΔT_peri'が決定される。この処理の擬似コードを以下に示す。これは、現実にはどのプログラミング言語にも対応しないが、C言語の文法をベースとしているので、この分野の当業者なら、理解することに困難はないと信じる。
ペリフェラルp0,…,pmからループが形成されていると仮定
function path_len(i, j): piからpjへ至るパスの長さを得る関数
function delay_allowed(i): piに許容される遅延を得る関数
function roundup(u, d): n*u<dでd<=(n+1)*uのとき(n+1)*uを返す関数
ΔTp = ΔT_major // ΔT_majorはシミュレーション環境から得られる最大の同期サイクル
while (delay_allowed(0) < ΔTp) { // 一番最初のペリフェラルp0に関して,許容範囲内に収まるようにΔTpを小さくする
ΔTp /= 2;
}
ステップ1:
prev_time = 0; // prev_timeはpi-1の弱連成シミュレーションでの時刻
for (i=1; i<m; i++) { // 2番目以降のすべてのペリフェラルに関して
time = prev_time + roundup(ΔTp, path_len(i-1, i)); timeはpiの弱連成シミュレーションでの時刻
delay = time - path_len(0, i); // 実世界で起こるタイミングからのずれ
if(delay_allowed(i) < delay) { // 遅延は許容範囲内か?
ΔTp /= 2; // 許容範囲を超えていた場合はΔTpを半分にして再試行
goto ステップ1
}
}
ΔTpを答えとする // 全てのペリフェラルが許容範囲に収まったらそのときのΔTpが答え
このようにして決定されたΔTpの値が、ΔT_peri'として、シミュレーション・システムが参照可能となるように、メイン・メモリ306またはハードディスク・ドライブ316に格納される。
次に、図12を参照して、同期サイクルの集約について説明する。図12(a)に示すように、それぞれがループをなす、グループ1内のペリフェラルと、グループ2内のペリフェラルとが、互いに通信する、ということがありえる。
そこで、本発明の1つの知見によれば、因果律はグループ内で閉じているので、別のグループに属するペリフェラル同士は、シミュレーション環境から得られる最大の同期サイクルである、ΔT_majorにより動作させても、シミュレーションが正しく実行されるということが分かった。すると、ユーザは、そのことを、モジュール間遅延データ404に書き込んでおく。
その様子を、図12(b)のタイミング図に示す。ここでΔT_minorというのは、
前述のΔT_periまたはΔT_peri'である。
次に、ペリフェラルを、同期サイクルの集約で、すなわち、ΔT_minorとΔT_majorで動作させる場合の処理について説明する。
図13は、実行時スケジューラの場合の処理を示すフローチャートである。ステップ1302において、実行環境416はまず、minorペリフェラルを1つ選ぶ。minorペリフェラルとは、ΔT_minorの同期サイクルで動作するペリフェラルであり、ΔT_minorとは、前述のΔT_periまたはΔT_peri'である。なおここで、ペリフェラルがminorペリフェラルであることは、同期タイミング計算モジュール406からの情報により識別できる。
ステップ1304では、そのように選ばれたペリフェラルが実行される。ステップ1306では、選ばれたペリフェラルがΔT_minor実行したかどうかが判断され、そうでなければ、ステップ1304が継続される。
ステップ1308では、全てのペリフェラルが今回のΔT_minorだけ実行されたかどうかが判断され、そうでなければ、ステップ1302に戻って、次のminorペリフェラルが1つ選ばれる。minorペリフェラルとは、ΔT_minorで動作するペリフェラルのことである。
ステップ1308で、すべてのペリフェラルが今回のΔT_minorだけ実行されたと判断されると、ステップ1310では、次のΔT_minorへ進められる。すなわち、ΔT_minorだけシミュレーションの時間が進められる。
ステップ1312では、全てのペリフェラルを今回のΔT_major実行させたかどうかが判断され、そうでなければ、ステップ1302に戻って、次のminorペリフェラルが1つ選ばれる。ここで、ΔT_majorとは、はシミュレーション環境から得られる最大の同期サイクルであり、例えば、ユーザによって、モジュール間遅延データ404に予め設定されている。
ステップ1312で、全てのペリフェラルを今回のΔT_major実行させたと判断されると、ステップ1314に進んで、そこで、majorペリフェラルが1つ選ばれる。majorペリフェラルとは、ΔT_majorで動作するペリフェラルのことである。なおここで、ペリフェラルがmajorペリフェラルであることは、同期タイミング計算モジュール406からの情報により識別できる。
ステップ1316では、選ばれたmajorペリフェラルが実行される。ステップ1318では、選ばれたペリフェラルがΔT_major実行したかどうかが判断され、そうでなければ、ステップ1316が継続される。
ステップ1318では、選ばれたペリフェラルがΔT_major実行したと判断されると、ステップ1320で、ΔT_majorだけシミュレーションの時間が進められ、ステップ1302に戻る。
図14は、静的スケジューラの場合の処理を示すフローチャートである。図14の処理においては、ステップ1402で、minorペリフェラル1が実行され、ステップ1404ではminorペリフェラル1について、ΔT_minorだけ実行したかどうか判断され、すなわち、ΔT_minor経過するまで、minorペリフェラル1が実行される。なおここで、ペリフェラルがminorペリフェラルであることは、同期タイミング計算モジュール406からの情報により識別できる。
これと同じ処理が、minorペリフェラル2、minorペリフェラル3・・・に適用されて、ステップ1406に示すようにminorペリフェラルNまで実行され、ステップ1408でminorペリフェラルNがΔT_minorだけ実行したと判断されると、ステップ1410でΔT_minorだけ時間が進められる。
次にステップ1412で、全てのペリフェラルを今回のΔT_major実行させたと判断されると、ステップ1414に進んでそこで、majorペリフェラル1が実行され、ステップ1416ではmajorペリフェラル1について、ΔT_majorだけ実行したかどうか判断され、すなわち、ΔT_major経過するまで、majorペリフェラル1が実行される。なおここで、ペリフェラルがmajorペリフェラルであることは、同期タイミング計算モジュール406からの情報により識別できる。
これと同じ処理が、majorペリフェラル2、majorペリフェラル3・・・に適用されて、ステップ1418に示すようにmajorペリフェラルNまで実行され、ステップ1420でminorペリフェラルNがΔT_majorだけ実行したと判断されると、ステップ1422でΔT_majorだけ時間が進められる。こうして処理は、ステップ1402に戻る。
次に、図15を参照して、プラントとの同期の弱連成化について説明する。ユーザは予め、あるペリフェラルとプラントの通信が間が集約された同期サイクルΔT_majorまで遅延を許可するかどうか、予め知っている情報を、モジュール間遅延データ404に記録しておく。
図15(a)は、ペリフェラル2と、プラント・グループの間が、ΔT_majorで同期可能であることを示す。
図15(b)は、ペリフェラルとプラントとの、サイクルΔT_minorでの同期において、ペリフェラルとプラントの間の、ΔT_major内の途中の通信が削除(省略)可能であることを示す。すなわち、途中の通信が省略可能であることにより、ペリフェラルとプラントとがΔT_majorで通信可能であることが分かる。
図16は、本発明の処理の全体のシナリオを説明する図である。このシナリオは、同期タイミング計算モジュール406と通信しつつ、実行環境416によって実行される。その際、同期タイミング計算モジュール406は、必要に応じて、モジュール間遅延データ404を参照する。
図16において、ステップ1602では、実行環境416は、図7の処理により強連成モデルで最大同期サイクルを発見し、図9または図10の処理によりシミュレーションを試みる。
ステップ1604では、十分な実行速度が得られたかどうかが判断され、もしそうなら、シミュレーションは終了する。
ステップ1604で、十分な実行速度が得られないと判断されると、ステップ1606に進んで、ペリフェラル間の弱連成化が試みられる。このために、前述の擬似コードで示した処理により、弱連成化のためのΔT_peri'が計算され、このΔT_peri'で以って図9または図10の処理によりシミュレーションを試みる。
ステップ1608では、十分な実行速度が得られたかどうかが判断され、もしそうなら、シミュレーションは終了する。
ステップ1608で、十分な実行速度が得られないと判断されると、ステップ1610に進んで、ペリフェラル間の弱連成化に加え、図13または図14の処理により同期サイクルの集約が試みられる。
ステップ1612では、十分な実行速度が得られたかどうかが判断され、もしそうなら、シミュレーションは終了する。
ステップ1612で、十分な実行速度が得られないと判断されると、ステップ1614に進んで、ペリフェラル間の弱連成化と、同期サイクルの集約に加え、図15に示すプラントとの同期の弱連成化を試み、シミュレーションは終了する。
以上、ECUエミュレータに関するペリフェラル間の通信を例にして本発明を説明してきたが、本発明は、互いに同期通信する任意の機能ブロックについて適用可能である。
また、自動車用の複数のシミュレーション・システムに関連して、本発明の特定の実施例を説明してきたが、本発明はこのような特定の実施例に限定されず、飛行機用のシミュレーション・システムなど、一般的な電子機械制御系システムのシミュレーション・システムに適用可能であることを、この分野の当業者であるなら、理解するであろう。
404 モジュール間遅延データ
406 同期タイミング計算モジュール
408 エミュレータ
414 プラント・シミュレータ
412 ペリフェラル・エミュレータ
416 実行環境
506 プラント・シミュレータ
602 プラント・シミュレータ
604 ペリフェラル・エミュレータ

Claims (12)

  1. CPUエミュレータと、プラント・シミュレータと、互いに接続され、CPUエミュレータとプラント・シミュレータの間のインターフェースを与える複数のペリフェラル・エミュレータをもち、コンピュータにより、システムを動作させる方法であって、
    前記複数のペリフェラル・エミュレータの接続関係と、該接続路を介しての通信時間とから、前記ペリフェラル・エミュレータをノード、前記接続路を前記通信時間を重みとしてもつエッジとするグラフを構成するステップと、
    前記グラフの閉路を見出すステップと、
    前記見出された閉路の重みに基づいて、当該重みより短い同期サイクルを、該各閉路毎の最大同期サイクルとして求めるステップと、
    前記最大同期サイクルのうちの最小のものを、第1の同期タイミングとして保存するステップと、
    前記第1の同期タイミングで同一ペリフェラル・エミュレータの受信の事象と送信の事象の両方が起きないように、複数のペリフェラル・エミュレータを実行させるステップと、
    前記最大同期サイクルが最小となる閉路について、あるノードと直前のノードとの通信時間の近傍値と、当該あるノードに至るまでの経路上の近傍値の合計との差が当該あるノードの遅延の許容範囲を超えなくまるまで短縮した同期サイクルを、第2の同期タイミングとするステップと、
    前記第2の同期タイミングで前記複数のペリフェラル・エミュレータを同期させるステップと、
    前記複数のペリフェラル・エミュレータと外部インターフェースとの間で、第1、第2の同期タイミングより大きい、ユーザーに指定された第3の同期タイミングで同期が許容されるかを判断するステップと、
    前記グラフの前記複数のペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングが許容可能と示された箇所に対して、前記ペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングによって同期を行わせるステップを有する、
    システムの動作方法。
  2. 前記許容可能な遅延は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値により決定される、請求項1に記載の動作方法。
  3. 前記同期が許容されるかの判断は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値に基づき行われる、請求項1に記載の動作方法。
  4. 前記第1の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断するステップと、
    前記第1の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第2の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断するステップと、
    前記第2の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第3の同期タイミングで前記システムを動作させるステップをさらに有する、
    請求項1に記載の動作方法。
  5. CPUエミュレータと、プラント・シミュレータと、互いに接続され、CPUエミュレータとプラント・シミュレータの間のインターフェースを与える複数のペリフェラル・エミュレータをもち、コンピュータにより、システムを動作させるプログラムであって、
    前記コンピュータをして、
    前記複数のペリフェラル・エミュレータの接続関係と、該接続路を介しての通信時間とから、前記ペリフェラル・エミュレータをノード、前記接続路を前記通信時間を重みとしてもつエッジとするグラフを構成するステップと、
    前記グラフの閉路を見出すステップと、
    前記見出された閉路の重みに基づいて、当該重みより短い同期サイクルを、該各閉路毎の最大同期サイクルとして求めるステップと、
    前記最大同期サイクルのうちの最小のものを、第1の同期タイミングとして保存するステップと、
    前記第1の同期タイミングで同一ペリフェラル・エミュレータの受信の事象と送信の事象の両方が起きないように、複数のペリフェラル・エミュレータを実行させるステップと、
    前記最大同期サイクルが最小となる閉路について、あるノードと直前のノードとの通信時間の近傍値と、当該あるノードに至るまでの経路上の近傍値の合計との差が当該あるノードの遅延の許容範囲を超えなくまるまで短縮した同期サイクルを、第2の同期タイミングとするステップと、
    前記第2の同期タイミングで前記複数のペリフェラル・エミュレータを同期させるステップと、
    前記複数のペリフェラル・エミュレータと外部インターフェースとの間で、第1、第2の同期タイミングより大きい、ユーザーに指定された第3の同期タイミングで同期が許容されるかを判断するステップと、
    前記グラフの前記複数のペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングが許容可能と示された箇所に対して、前記ペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングによって同期を行わせるステップを実行させる、
    プログラム。
  6. 前記許容可能な遅延は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値により決定される、請求項5に記載のプログラム。
  7. 前記同期が許容されるかの判断は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値に基づき行われる、請求項5に記載のプログラム。
  8. 前記コンピュータをして、
    前記第1の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断するステップと、
    前記第1の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第2の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断するステップと、
    前記第2の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第3の同期タイミングで前記システムを動作させるステップをさらに実行させる、
    請求項5に記載のプログラム。
  9. CPUエミュレータと、プラント・シミュレータと、互いに接続され、CPUエミュレータとプラント・シミュレータの間のインターフェースを与える複数のペリフェラル・エミュレータをもち、コンピュータにより、システムを動作されるシステムであって、
    前記複数のペリフェラル・エミュレータの接続関係と、該接続路を介しての通信時間とから、前記ペリフェラル・エミュレータをノード、前記接続路を前記通信時間を重みとしてもつエッジとするグラフを構成する手段と、
    前記グラフの閉路を見出す手段と、
    前記見出された閉路の重みに基づいて、当該重みより短い同期サイクルを、該各閉路毎の最大同期サイクルとして求める手段と、
    前記最大同期サイクルのうちの最小のものを、第1の同期タイミングとして保存する手段と、
    前記第1の同期タイミングで同一ペリフェラル・エミュレータの受信の事象と送信の事象の両方が起きないように、複数のペリフェラル・エミュレータを実行させる手段と、
    前記最大同期サイクルが最小となる閉路について、あるノードと直前のノードとの通信時間の近傍値と、当該あるノードに至るまでの経路上の近傍値の合計との差が当該あるノードの遅延の許容範囲を超えなくまるまで短縮した同期サイクルを、第2の同期タイミングとする手段と、
    前記第2の同期タイミングで前記複数のペリフェラル・エミュレータを同期させる手段と、
    前記最大同期サイクルが最小となる閉路について、あるノードと直前のノードとの通信時間の近傍値と、当該あるノードに至るまでの経路上の近傍値の合計との差が当該あるノードの遅延の許容範囲を超えなくまるまで短縮した同期サイクルを、第2の同期タイミングとする手段と、
    前記第2の同期タイミングで前記複数のペリフェラル・エミュレータを同期させる手段と、
    前記複数のペリフェラル・エミュレータと外部インターフェースとの間で、第1、第2の同期タイミングより大きい、ユーザーに指定された第3の同期タイミングで同期が許容されるかを判断する手段と、
    前記グラフの前記複数のペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングが許容可能と示された箇所に対して、前記ペリフェラル・エミュレータと外部インターフェースとの間で前記第3の同期タイミングによって同期を行わせる手段を有する、
    システム。
  10. 前記許容可能な遅延は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値により決定される、請求項9に記載のシステム。
  11. 前記同期が許容されるかの判断は、前記コンピュータの記憶手段に、予め所定のペリフェラル・エミュレータに設定された値に基づき行われる、請求項9に記載のシステム。
  12. 前記第1の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断する手段と、
    前記第1の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第2の同期タイミングで前記システムを動作させて、所望の動作速度が得られたかどうか判断する手段と、
    前記第2の同期タイミングで前記システムが動作した際に所望の動作速度が得られない場合に、前記第3の同期タイミングで前記システムを動作させる手段をさらに実行させる、
    請求項9に記載のシステム。
JP2009165698A 2009-07-14 2009-07-14 シミュレーション方法、システム及びプログラム Active JP5065344B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009165698A JP5065344B2 (ja) 2009-07-14 2009-07-14 シミュレーション方法、システム及びプログラム
US12/834,081 US8498856B2 (en) 2009-07-14 2010-07-12 Simulation method, system and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009165698A JP5065344B2 (ja) 2009-07-14 2009-07-14 シミュレーション方法、システム及びプログラム

Publications (2)

Publication Number Publication Date
JP2011022702A JP2011022702A (ja) 2011-02-03
JP5065344B2 true JP5065344B2 (ja) 2012-10-31

Family

ID=43465889

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009165698A Active JP5065344B2 (ja) 2009-07-14 2009-07-14 シミュレーション方法、システム及びプログラム

Country Status (2)

Country Link
US (1) US8498856B2 (ja)
JP (1) JP5065344B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8655461B2 (en) * 2010-05-25 2014-02-18 Siemens Product Lifecycle Management Software Inc. Method, system, and non-transitory computer readable storage medium for generating code for a closed-loop controller
CN103098032B (zh) * 2010-08-20 2015-10-14 国际商业机器公司 仿真方法和系统
JP5528294B2 (ja) * 2010-10-20 2014-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション制御方法、システム及びプログラム
US9817410B2 (en) 2012-03-30 2017-11-14 Mitsubishi Electric Corporation Air conditioner testing system, air-conditioning system simulator, and program
US9251308B2 (en) * 2012-07-23 2016-02-02 International Business Machines Corporation Simulation method, system, and program
JP5908088B2 (ja) * 2012-08-08 2016-04-26 株式会社日立製作所 シミュレータ間の通信方法およびシミュレーションシステム
AT514731A2 (de) * 2013-09-13 2015-03-15 Fts Computertechnik Gmbh Verfahren zur Verifizierung generierter Software sowie Verifizierungseinrichtung zum Durchführen eines solchen Verfahrens
JP6246548B2 (ja) * 2013-10-11 2017-12-13 株式会社Jsol シミュレーション装置及びコンピュータプログラム
DE102014219709A1 (de) * 2014-09-29 2016-03-31 Siemens Aktiengesellschaft Verfahren zur Kraftwerkssimulation für Test- und Schulungszwecke mittels einer verteilten Simulationshardware
US10652256B2 (en) * 2017-06-20 2020-05-12 International Business Machines Corporation Real-time active threat validation mechanism for vehicle computer systems
DE102017214125A1 (de) * 2017-08-14 2019-02-14 Robert Bosch Gmbh Verfahren und Vorrichtung zum Synchronisieren einer Simulation mit einem Echtzeitsystem
EP3454234A1 (de) * 2017-09-06 2019-03-13 dSPACE digital signal processing and control engineering GmbH Verfahren zum bereitstellen einer echtzeitfähigen simulation für die steuergerätentwicklung und simulationsvorrichtung für die steuergerätentwicklung

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5187785A (en) * 1990-12-28 1993-02-16 General Electric Company Algorithm for representing component connectivity
US6438734B1 (en) * 1997-10-06 2002-08-20 Agilent Technologies, Inc. Fast search method for enabling a computer to find elementary loops in a graph
JP2001101156A (ja) 1999-09-28 2001-04-13 Jeol Ltd 最適シミュレーションパラメータ自動推定システム
JP2001290860A (ja) * 2000-04-10 2001-10-19 Matsushita Electric Ind Co Ltd ハードウエア/ソフトウエア協調シミュレータ
JP2002318990A (ja) 2001-04-20 2002-10-31 Nec Corp シミュレーション方法及びシミュレータ
JP4132802B2 (ja) * 2001-12-07 2008-08-13 富士通株式会社 概略マルチタスクソフトウェアのシミュレーションを行う方法、装置及びプログラム
US7346902B2 (en) * 2002-10-22 2008-03-18 Sun Microsystems, Inc. System and method for block-based concurrentization of software code
US7222218B2 (en) * 2002-10-22 2007-05-22 Sun Microsystems, Inc. System and method for goal-based scheduling of blocks of code for concurrent execution
US7809545B2 (en) * 2003-04-16 2010-10-05 The Mathworks, Inc. System and method for using execution contexts in block diagram modeling
US7178112B1 (en) * 2003-04-16 2007-02-13 The Mathworks, Inc. Management of functions for block diagrams
US7162704B2 (en) * 2003-05-09 2007-01-09 Synplicity, Inc. Method and apparatus for circuit design and retiming
US7801715B2 (en) * 2003-08-11 2010-09-21 The Mathworks, Inc. System and method for block diagram simulation context restoration
US7614037B2 (en) * 2004-05-21 2009-11-03 Microsoft Corporation Method and system for graph analysis and synchronization
JP2006350549A (ja) * 2005-06-14 2006-12-28 Hitachi Ltd 統合シミュレーションシステム
US20060290311A1 (en) * 2005-06-28 2006-12-28 Nikhil Chopra Method and System for Synchronizing Networked Passive Systems
US20080005357A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Synchronizing dataflow computations, particularly in multi-processor setting
US8406248B2 (en) * 2007-04-13 2013-03-26 Hart Communication Foundation Priority-based scheduling and routing in a wireless network
JP4468410B2 (ja) * 2007-06-21 2010-05-26 株式会社東芝 ソフトウェア実行装置および協調動作方法
US7992111B1 (en) * 2009-05-18 2011-08-02 Xilinx, Inc. Conversion of a high-level graphical circuit design block to a high-level language program

Also Published As

Publication number Publication date
US20110015916A1 (en) 2011-01-20
US8498856B2 (en) 2013-07-30
JP2011022702A (ja) 2011-02-03

Similar Documents

Publication Publication Date Title
JP5065344B2 (ja) シミュレーション方法、システム及びプログラム
JP5153465B2 (ja) シミュレーション方法、システム及びプログラム
JP5179249B2 (ja) 制御装置シミュレーション方法、システム及びプログラム
JP5295355B2 (ja) シミュレーション方法、システム及びプログラム
US8612192B2 (en) Vehicle simulation system with software-in-the-loop bypass control
JP5224957B2 (ja) シミュレーション方法、システム及びプログラム
KR101136408B1 (ko) 신뢰성 있는 cps 개발을 위한 cps 시뮬레이터, 이를 이용한 cps 시뮬레이션 시스템 및 방법
US20120101791A1 (en) Controlling simulation systems
JP4978285B2 (ja) 電子制御ユニットの自動検査装置、および電子制御ユニットの自動検査方法
JP5379862B2 (ja) シミュレーション方法、システム及びプログラム
WO2013099438A1 (ja) 協調シミュレーション用計算機システム、組込みシステムの検証方法及びプログラム
JP5186290B2 (ja) シミュレーション方法、システム及びプログラム
Lee et al. Towards a seamless development process for automotive engine-control system
JP4852629B2 (ja) シミュレーション・システム、方法及びプログラム
JP5460010B2 (ja) シミュレーション方法、システム及びプログラム
Nanjundaswamy et al. Development and calibration of on-board-diagnostic strategies using a micro-HiL approach
JP5500820B2 (ja) シミュレーション方法、システム及びプログラム
JP5186307B2 (ja) シミュレーション方法、システム及びプログラム
Ishikawa et al. CPU model-based hardware/software co-design for real-time embedded control systems
EP4036780A1 (en) Electronic control unit timing emulation
Gaglio Design and realization of an open-loop simulator for ICE control unit, developing the crankshaft and camshaft sensors simulation
Viele et al. A PC and FPGA hybrid approach to hardware-in-the-loop simulation
Fransson et al. Automated Testing of Hardware-in-the-Loop Systems for Electrified Vehicles
Oho CPU Model-based Hardware/Software Co-design for Real-Time Embedded Control Systems

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111025

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120327

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120427

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120627

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5065344

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

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250