(57)【要約】【課題】シミュレーションに要する時間を短縮することができるシミュレーション装置等を提供する。【解決手段】シミュレーション装置は、予め定められた複数の入力パターンを用いて、複数の入力変数を有する対象モデルのシミュレーションを行う。そして、複数の入力パターンによりいずれかの入力変数の入力値が変化しない一定区間が形成さる場合には、対象モデルの中から、該入力変数の入力値が変化しないことにより、出力値が一定となる演算が表された部分（対象演算ステップ）を特定する（Ｓ３１５）。さらに、対象演算ステップを、一定区間における対象演算ステップの出力値を固定値として出力する代替演算ステップに置き換えて（Ｓ３２５）、対象モデルのシミュレーションを行う。【選択図】図５
2014016891.tif 000002
【特許請求の範囲】
【請求項１】
複数の変数を入力とする演算処理に関して、これらの変数の入力値の組合せを、予め定められた順番に従い前記入力として設定する設定手段（Ｓ２１５，Ｓ５２０）と、
前記設定手段により連続して設定される複数の前記組合せに関して、これらの組合せが前記入力となった際に前記入力値が一定値となる前記変数である一定変数を検出する検出手段（Ｓ３１０）と、
前記演算処理を構成する演算ステップの中から、前記一定変数を用いて行われ、該一定変数に係る前記入力値を含む複数の前記組合せが前記入力となった際に出力値が一定となる対象演算ステップを特定する特定手段（Ｓ４０５〜Ｓ４３０）と、
前記対象演算ステップを、前記一定変数に係る前記入力値を含む複数の前記組合せが前記入力となった際の該対象演算ステップの前記出力値を常に出力する前記演算ステップである代替演算ステップに置き換える置換手段（Ｓ３２５，Ｓ３４０）と、
前記設定手段により前記順番に従い設定されたそれぞれの前記組合せを前記入力として前記演算処理を実行すると共に、前記一定変数に係る前記入力値を含む前記組合せが前記入力となる場合には、前記置換手段により、該一定変数を用いて行われる前記対象演算ステップが前記代替演算ステップに置き換えられた前記演算処理を実行する実行手段（Ｓ２２５，Ｓ５３５）と、
を備えることを特徴とするシミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置において、
前記演算処理は、予め定められた処理手順を示すブロックと、前記ブロック同士を繋ぐことでこれらのブロック間のデータの入出力を表す結線とから構成されるモデルとして記述されており、
前記演算ステップは、１または複数の前記ブロックから構成されること、
を特徴とするシミュレーション装置。
【請求項３】
請求項１または請求項２に記載のシミュレーション装置において、
前記対象演算ステップとは、前記一定変数と、予め定められた固定値、或いは、該一定変数以外の他の前記変数とを用いて行われる前記演算ステップであること、
を特徴とするシミュレーション装置。
【請求項４】
請求項１から請求項３のうちのいずれか１項に記載のシミュレーション装置において、
前記設定手段により前記入力として連続して設定され、同一の前記変数への前記入力値が一定値となる複数の前記組合せを探すサーチ手段（Ｓ５１５）をさらに備え、
前記検出手段は、前記サーチ手段により見付けられた複数の前記組合せが前記入力となった際の前記一定変数を検出すること、
を特徴とするシミュレーション装置。
【請求項５】
請求項１から請求項４のうちのいずれか１項に記載のシミュレーション装置において、
前記置換手段は、前記実行手段が、前記一定変数に係る前記入力値を含む前記組合せを前記入力として前記演算処理を実行した後、次に前記入力として設定される前記組合せに該入力値が含まれていない場合には、該一定変数を用いて行われる前記対象演算ステップを置換した前記代替演算ステップを、該対象演算ステップに置き換えること（Ｓ３４０）、
を特徴とするシミュレーション装置。
【請求項６】
複数の変数を入力とする演算処理に関して、これらの変数の入力値の組合せを、予め定められた順番に従い前記入力として設定する設定手段（Ｓ２１５，Ｓ５２０）と、
前記設定手段により連続して設定される複数の前記組合せに関して、これらの組合せが前記入力となった際に前記入力値が一定値となる前記変数である一定変数を検出する検出手段（Ｓ３１０）と、
前記演算処理を構成する演算ステップの中から、前記一定変数を用いて行われ、該一定変数に係る前記入力値を含む複数の前記組合せが前記入力となった際に出力値が一定となる対象演算ステップを特定する特定手段（Ｓ４０５〜Ｓ４３０）と、
前記対象演算ステップを、前記一定変数に係る前記入力値を含む複数の前記組合せが前記入力となった際の該対象演算ステップの前記出力値を常に出力する前記演算ステップである代替演算ステップに置き換える置換手段（Ｓ３２５，Ｓ３４０）と、
前記設定手段により前記順番に従い設定されたそれぞれの前記組合せを前記入力として前記演算処理を実行すると共に、前記一定変数に係る前記入力値を含む前記組合せが前記入力となる場合には、前記置換手段により、該一定変数を用いて行われる前記対象演算ステップが前記代替演算ステップに置き換えられた前記演算処理を実行する実行手段（Ｓ２２５，Ｓ５３５）と
してコンピュータを動作させることを特徴とするシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデルのシミュレーションを行うシミュレーション装置等に関する。
【背景技術】
【０００２】
従来、例えば車両のエンジンＥＣＵのプログラムの開発においては、開発者が直接ソースコードを記述せず、目的とするプログラムの機能を、より作成が簡易で視認性の良いモデルという形態で記述する場合がある。このモデルは、各種演算等を行う機能単位であるブロックや、ブロック間のデータの入出力を示す結線等の組合せにより処理を表しており、このようにしてモデルに基づきソースコードを自動生成するプログラム開発は、モデルベース開発と呼ばれている。
【０００３】
また、特許文献１に記載されているように、パソコン上でモデルのシミュレーションを行うシミュレーションプログラムが知られている。このシミュレーションプログラムでは、モデルから生成されたプログラムに従い動作するコンピュータによる浮動小数点型変数を用いた条件式の真偽判定結果と、シミュレーションでの該真偽判定結果を一致させるため、該真偽判定を行うブロックに改変が加えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１５４３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このようなシミュレーションによりモデルの検証を行う場合は、モデルから生成されたプログラムをコンピュータに実装し、実機を動作させて検証を行う場合に比べ、所要時間を大幅に短縮することができる。
【０００６】
しかしながら、シミュレーションにより検証を行うためには、条件を変えながらモデルにより表された処理を繰り返し実行する必要があるため、実機による検証に比べて所要時間を短縮できるとはいえ、長い時間を要する場合がある。
【０００７】
本願発明は上記課題に鑑みてなされたものであり、シミュレーションに要する時間を短縮することができるシミュレーション装置等を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に鑑みてなされた請求項１に係るシミュレーション装置は、複数の変数を入力とする演算処理に関して、これらの変数の入力値の組合せを、予め定められた順番に従い入力として設定する設定手段と、設定手段により連続して設定される複数の組合せに関して、これらの組合せが入力となった際に入力値が一定値となる変数である一定変数を検出する検出手段と、を備える。
【０００９】
また、演算処理を構成する演算ステップの中から、一定変数を用いて行われ、該一定変数に係る入力値を含む複数の組合せが入力となった際に出力値が一定となる対象演算ステップを特定する特定手段と、対象演算ステップを、一定変数に係る入力値を含む複数の組合せが入力となった際の該対象演算ステップの出力値を常に出力する演算ステップである代替演算ステップに置き換える置換手段と、を備える。
【００１０】
また、設定手段により順番に従い設定されたそれぞれの組合せを入力として演算処理を実行すると共に、一定変数に係る入力値を含む組合せが入力となる場合には、置換手段により、該一定変数を用いて行われる対象演算ステップが代替演算ステップに置き換えられた演算処理を実行する実行手段を備える。
【００１１】
このような構成によれば、同一変数の入力値が一定となる複数の組合せが連続して入力として設定される場合には、該変数が一定変数として検出される。また、該一定変数を用いて行われる演算ステップであって、これらの組合せが入力となる期間中に出力値が一定となる対象演算ステップが特定される。そして、該期間中は、該対象演算ステップを、これと同一の出力値を常に出力する代替演算ステップに置き換えて演算処理が実行される。
【００１２】
この代替演算ステップとして、例えば、該出力値を固定値として出力する演算ステップを用いることが考えられ、このような置き換えを行うことで、対象演算ステップにより記述された演算を行う場合に比べ、処理を大幅に簡略化することができる。
【００１３】
したがって、請求項１に係るシミュレーション装置によれば、シミュレーションに要する時間を短縮することができる。
なお、請求項２に記載されているように、演算処理は、予め定められた処理手順を示すブロックと、ブロック同士を繋ぐことでこれらのブロック間のデータの入出力を表す結線とから構成されるモデルとして記述されており、演算ステップは、１または複数のブロックから構成されていても良い。
【００１４】
こうすることにより、モデルのシミュレーションに要する時間を短縮することができる。
【図面の簡単な説明】
【００１５】
【図１】ＰＣの構成を示すブロック図と、シミュレーションの対象モデルの一例を示す説明図である。
【図２】対象モデルに対する入力パターンの一例を示す表と、各入力パターンが入力となった際の対象モデルによる演算処理の途中経過や出力値の変化を示すグラフである。
【図３】対象演算ステップが代替演算ステップに置き換えられた後の対象モデルの一例を示す説明図である。
【図４】第一実施形態におけるシミュレーション処理のフローチャートである。
【図５】第一実施形態におけるモデル書換処理のフローチャートである。
【図６】第一実施形態における代替演算ステップ作成処理のフローチャートである。
【図７】第二実施形態におけるシミュレーション処理のフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００１７】
［構成の説明］
図１（ａ）には、モデルのシミュレーションを行うシミュレーション装置として稼動する周知のパーソナルコンピュータ（ＰＣ）１の構成を示すブロック図が記載されている。このＰＣ１は、ディスプレイ１０，ＨＤＤ２０，ＣＰＵ３０，ＲＯＭ４０，ＲＡＭ５０，入力装置６０等を備える。
【００１８】
ディスプレイ１０は、ＣＰＵ３０から受けた映像信号を、ユーザに対して映像として表示する。
入力装置６０は、キーボード、マウス等から構成され、ユーザが操作することにより、その操作に応じた信号をＣＰＵ３０に出力する。
【００１９】
ＲＡＭ５０は読み出し、書き込み可能な揮発性メモリであり、ＲＯＭ４０は読み出し専用の不揮発性メモリであり、ＨＤＤ２０は読み出し、書き込み可能な不揮発性メモリである。ＲＯＭ４０、ＨＤＤ２０には、ＣＰＵ３０が読み出して実行するプログラム等が予め記憶されている。
【００２０】
ＲＡＭ５０は、ＣＰＵ３０がＲＯＭ４０，ＨＤＤ２０に記憶されたプログラムを実行する際に、そのプログラムを一時的に保存するための記憶領域、及び作業用のデータを一時的に保存するための記憶領域として用いられる。
【００２１】
ＣＰＵ３０は、ＯＳをＨＤＤ２０から読み出して実行し、ＨＤＤ２０に記録されている各種プログラムをＯＳ上のプロセスとして実行する。また、このプロセスにおいて、ＣＰＵ３０は必要に応じて入力装置６０から信号の入力を受け付け、ディスプレイ１０に映像信号を出力し、ＲＡＭ５０，ＨＤＤ２０に対してデータの読み出し／書き込みの制御を行う。
【００２２】
このＰＣ１には、モデルのシミュレーションを行うためのシミュレーションツールがインストールされている。シミュレーションツールは、ＨＤＤ２０に保存され、ＯＳ上のプロセスとして実行されるアプリケーションの１つであり、ＰＣ１は、シミュレーションツールを動作させることで、モデルの比較を行うシミュレーション装置として稼動する。なお、このシミュレーション装置は、車載装置等といった組み込みシステム向けのプログラム開発に用いられることが考えられるが、これに限定されることは無く、あらゆる用途のプログラム開発に用いることができる。
【００２３】
また、モデルとは、ソースコードよりも記述が簡易になり、かつ人による可読性を高くする目的で定められたモデル言語仕様に基づいて作成されるプログラムの一表現形態である。
【００２４】
なお、モデルの一例として、Ｓｉｍｕｌｉｎｋ（登録商標）によって作成されるＳｉｍｕｌｉｎｋモデルを挙げることができる。Ｓｉｍｕｌｉｎｋ（登録商標）モデルを、Ｍａｔｌａｂ（登録商標）上で動作するＲｅａｌ  Ｔｉｍｅ  Ｗｏｒｋｓｈｏｐ（登録商標）に入力することにより、該モデルに対応するソースコードが生成される。
【００２５】
本実施形態におけるモデルは、特定の処理手順を示すブロックと呼ばれる機能単位の組合せとして記述され、モデルを構成するブロックは、ブロック間のデータの入出力、及び、対応する処理手順の順序を示す結線により繋ぎ合わされている。
【００２６】
［動作の説明］
［第一実施形態］
次に、第一実施形態のシミュレーション装置の動作について説明する。
【００２７】
第一実施形態のシミュレーション装置は、複数の入力変数を有するモデルを対象とするシミュレーションを行う。なお、以後、シミュレーションの対象となるモデルを、対象モデルと記載する。シミュレーションの際には、対象モデルの入力として複数の入力パターン（対象モデルの入力変数の入力値の組合せ）を、予め定められた順番に従い設定すると共に、対象モデルにより表された演算処理を実行し、各入力パターンに対応する演算結果を算出する。
【００２８】
ここで、特定の入力変数の入力値が変化しない複数の入力パターンが連続して設定される場合がある（なお、このような入力パターンが設定される区間を一定区間とすると共に、入力値が変化しない特定の入力変数を一定変数とする）。
【００２９】
このような場合には、シミュレーション装置は、対象モデルの中から、一定変数の入力値が変化しないことで演算結果が変化しなくなる演算を表した部分（対象演算ステップ）を特定する。そして、一定区間では、対象演算ステップを、より簡易的に同等の処理を実現する演算ステップ（代替演算ステップ）に置き換えてシミュレーションを行う。
【００３０】
ここで、図１（ｂ）に記載の対象モデル１００のシミュレーションを行う場合を例に挙げて説明する。この対象モデル１００は、Ｘ，Ｙを入力変数として出力値Ｚを算出する演算処理を表したものであり、入力変数Ｘ，Ｙから入力値を読み出して出力する入力ブロック１０１，１０２と、固定値Ｌ，Ｍを出力する固定値ブロック１０３，１０４を有する。
【００３１】
また、入力変数Ｙに設定された入力値と固定値Ｌとを入力とした演算Ａを行う演算ブロック１０５と、演算Ａの演算結果と固定値Ｍとを入力とした演算Ｂを行う演算ブロック１０６を有する。また、入力変数Ｘに設定された入力値と演算Ｂの演算結果とを入力とした演算Ｃを行う演算ブロック１０７と、演算Ｃの演算結果を出力値Ｚとして生成する出力ブロック１０８を有する。
【００３２】
そして、対象モデル１００の入力変数Ｘ，Ｙとして、図２（ａ）に記載の表が示す一連の入力パターンが上から順番に設定されたとする。これらの入力パターンを設定した場合、５〜１３番目に設定される入力パターンは入力変数Ｙの入力値が１１００となっており、これらの入力パターンは、Ｙを一定変数とする一定区間を形成している。
【００３３】
ここで、演算ブロック１０５により行われる演算Ａは、入力変数Ｙと固定値Ｌとを入力としているため、一定区間では演算Ａの演算結果は一定値となる。さらに、演算ブロック１０６により行われる演算Ｂは、演算ブロック１０５により行われた演算Ａの演算結果と、固定値Ｍとを入力としているため、一定区間では演算Ｂの演算結果は一定値となる。
【００３４】
なお、図２（ｂ）に記載のグラフは、図２（ａ）に記載の入力パターンが対象モデル１００の入力変数Ｘ，Ｙに設定された場合の、演算Ａ，Ｂの演算結果と、対象モデル１００の出力値Ｚとを示している。該グラフは、入力変数Ｙの入力値が一定となる一定区間（図中、ｔ２と記載）では、演算Ａ，Ｂの演算結果が一定値となることを示している。
【００３５】
このため、ブロック１０２〜１０６から構成される演算ステップは、一定区間において演算結果が変化しない対象演算ステップとして特定される。そして、一定区間における対象演算ステップの出力値（演算Ｂの演算結果）をＮとすると、対象演算ステップは、固定値Ｎを出力する固定値ブロックからなる代替演算ステップに置き換えられる。
【００３６】
図３に記載の対象モデル１１０は、対象モデル１００における対象演算ステップを代替演算ステップに置き換えた後の状態を示している。この置き換えにより、ブロック１０２〜１０６が固定値Ｎを出力する固定値ブロック１１１に置き換えられ、演算Ｃを行うブロック１０７には、入力変数Ｘに設定された入力値と固定値Ｎが入力される。
【００３７】
なお、以後、対象モデルにおいて、入力変数から入力値を読み出すブロックが配された側を上流側、対象モデルの出力値を出力するブロックが配された側を下流側と記載する。
次に、シミュレーション装置にて実行される各処理について詳しく説明する。
【００３８】
（１）シミュレーション処理について
まず、予め準備された入力パターンを用いて対象モデルのシミュレーションを行うシミュレーション処理について、図４に記載のフローチャートを用いて説明する。本処理は、入力装置６０に対する操作に応じて実行される。
【００３９】
Ｓ２０５では、シミュレーション装置のＣＰＵ３０は、ＨＤＤ２０等から対象モデルと複数の入力パターンを読み込み、これらの入力パターンを対象モデルの入力とした際のシミュレーションを開始する（Ｓ２１０）。
【００４０】
続くＳ２１５では、ＣＰＵ３０は、予め定められた順番に従い、いずれかの入力パターンを対象モデルの入力として設定し、Ｓ２２０に処理を移行する。
Ｓ２２０では、ＣＰＵ３０は、一定区間となった場合に対象演算ステップを代替演算ステップに置き換えると共に、一定区間の終了後に、代替演算ステップを対象演算ステップに置き換える（書き戻す）モデル書換処理（詳細は後述する）を実行する。
【００４１】
続くＳ２２５では、ＣＰＵ３０は、モデル書換処理による置き換えを反映した状態の対象モデルにより表された演算処理（以後、対象演算処理とも記載）を実行し、Ｓ２３０に処理を移行する。
【００４２】
Ｓ２３０では、ＣＰＵ３０は、今回設定した入力パターンが、最後に設定される入力パターンか否かを判定する。そして、肯定判定が得られた場合には（Ｓ２３０：Ｙｅｓ）、Ｓ２３５に処理を移行すると共に、否定判定が得られた場合には（Ｓ２３０：Ｎｏ）、Ｓ２１５に処理を移行する。
【００４３】
Ｓ２３５では、ＣＰＵ３０は、シミュレーションを終了させた後、本処理を終了する。
（２）モデル書換処理について
次に、一定区間となった場合に対象演算ステップを代替演算ステップに置き換えると共に、一定区間の終了後に代替演算ステップを対象演算ステップに書き戻すモデル書換処理について、図５に記載のフローチャートを用いて説明する。なお、本処理は、シミュレーション処理からコールされるサブルーチンとして構成されている。
【００４４】
Ｓ３０５では、ＣＰＵ３０は、予め定められた順番に従い、対象モデルの入力変数のうちのいずれかを選択し、Ｓ３１０に処理を移行する。
Ｓ３１０では、ＣＰＵ３０は、今回の入力パターンにおける選択中の入力変数の入力値を今回値として特定すると共に、前回の入力パターンにおける選択中の入力変数の入力値を前回値として特定し、前回値と今回値が一致するか否かを判定する。そして、肯定判定が得られた場合には（Ｓ３１０：Ｙｅｓ）、Ｓ３１５に処理を移行すると共に、否定判定が得られた場合には（Ｓ３１０：Ｎｏ）、Ｓ３３５に処理を移行する。
【００４５】
Ｓ３１５では、ＣＰＵ３０は、選択中の入力変数を一定変数とみなす。そして、対象モデルの中から、該一定変数の入力値が変化しないことで演算結果が変化しなくなる対象演算ステップを特定すると共に、代替演算ステップを生成する代替演算ステップ作成処理（詳細は後述する）を実行し、Ｓ３２０に処理を移行する。
【００４６】
Ｓ３２０では、ＣＰＵ３０は、前回の入力パターンを入力として対象演算処理を実行した際に、今回特定した対象演算ステップが代替演算ステップに置き換えられていたか否かを判定する。そして、肯定判定が得られた場合には（Ｓ３２０：Ｙｅｓ）、Ｓ３３０に処理を移行すると共に、否定判定が得られた場合には（Ｓ３２０：Ｎｏ）、Ｓ３２５に処理を移行する。
【００４７】
Ｓ３２５では、ＣＰＵ３０は、対象モデルにおいて、今回特定した対象演算ステップを、今回作成した代替演算ステップに置き換えるモデル置換処理を実行し、Ｓ３４５に処理を移行する。
【００４８】
Ｓ３３０では、ＣＰＵ３０は、今回作成した代替演算ステップが、前回実行された対象演算処理に用いられたものと同一であるか否かを判定する。そして、肯定判定が得られた場合には（Ｓ３３０：Ｙｅｓ）、Ｓ３４５に処理を移行すると共に、否定判定が得られた場合には（Ｓ３３０：Ｎｏ）、Ｓ３２５に処理を移行する。
【００４９】
Ｓ３３５では、ＣＰＵ３０は、前回の入力パターンを入力として対象演算処理を実行した際に、選択中の入力変数を一定変数とした対象演算ステップが代替演算ステップに置き換えられていたか否かを判定する。そして、肯定判定が得られた場合には（Ｓ３３５：Ｙｅｓ）、Ｓ３４０に処理を移行すると共に、否定判定が得られた場合には（Ｓ３３５：Ｎｏ）、Ｓ３４５に処理を移行する。
【００５０】
Ｓ３４０では、ＣＰＵ３０は、前回実行された対象演算処理に用いられた上記代替演算ステップを上記対象演算ステップに書き戻し、Ｓ３４５に処理を移行する。
Ｓ３４５では、ＣＰＵ３０は、選択されていない入力変数が存在するか否かを判定し、肯定判定が得られた場合には（Ｓ３４５：Ｙｅｓ）、本処理を終了すると共に、否定判定が得られた場合には（Ｓ３４５：Ｎｏ）、Ｓ３０５に処理を移行する。
【００５１】
（３）代替演算ステップ作成処理について
次に、対象モデルの中から対象演算ステップを特定すると共に、該対象演算ステップを置き換えるための代替演算ステップを作成する代替演算ステップ作成処理について、図６に記載のフローチャートを用いて説明する。なお、本処理は、モデル書換処理からコールされるサブルーチンとして構成されている。
【００５２】
Ｓ４０５では、ＣＰＵ３０は、モデル書換処理において選択中となっている対象モデルの入力変数（一定変数）の入力値が入力となるブロックを特定すると共に、該ブロックを対象ブロックとし、Ｓ４１０に処理を移行する。
【００５３】
Ｓ４１０では、ＣＰＵ３０は、対象ブロックにおける、選択中の一定変数、或いは、後述するＳ４２５にて作成された代替演算ステップからの代替出力値の演算相手が固定値であるか否かを判定する。具体的には、対象ブロックに固定値ブロックからの出力値が入力される場合や、固定値のみを入力とする演算ブロックからの出力値が入力される場合等には、演算相手が固定値とみなしても良い。そして、肯定判定が得られた場合には（Ｓ４１０：Ｙｅｓ）、Ｓ４２５に処理を移行すると共に、否定判定が得られた場合には（Ｓ４１０：Ｎｏ）、Ｓ４１５に処理を移行する。
【００５４】
Ｓ４２５では、ＣＰＵ３０は、対象ブロックと、対象ブロックよりも上流側に配されたブロックと、これらを接続する結線を、対象演算ステップとみなす。そして、設定中の入力パターンが対象モデルに入力された場合の対象演算ステップからの出力値を算出すると共に、該出力値を固定値として出力する固定値ブロックを代替演算ステップとして作成し、Ｓ４３０に処理を移行する。なお、代替演算ステップをなす固定値ブロックからの出力値を代替出力値とする。
【００５５】
Ｓ４３０では、ＣＰＵ３０は、対象ブロックが対象モデルからの最終的な出力値を生成するブロックであるか否かを判定する。そして、肯定判定が得られた場合には（Ｓ４３０：Ｙｅｓ）、本処理を終了すると共に、否定判定が得られた場合には（Ｓ４３０：Ｎｏ）、Ｓ４１０に処理を移行する。
【００５６】
一方、対象ブロックにおける選択中の一定変数或いは代替出力値の演算相手が固定値でない場合に移行するＳ４１５では、ＣＰＵ３０は、対象ブロックにおいて該一定変数或いは代替出力値の演算相手となる他の入力変数を特定し、Ｓ４２０に処理を移行する。
【００５７】
具体的には、対象ブロックに直接入力される入力変数を、演算相手として特定しても良い。また、これ以外にも、対象ブロックに間接的に入力される入力変数を、演算相手として特定しても良い。より詳しくは、対象ブロックの上流側に配された演算ブロックに入力される入力変数であって、該入力変数を用いた演算の結果が対象ブロックの入力となるものを、演算相手として特定しても良い。
【００５８】
Ｓ４２０では、ＣＰＵ３０は、今回の入力パターンにおける演算相手となる入力変数の入力値を今回値として特定すると共に、前回の入力パターンにおける該入力変数の入力値を前回値として特定し、前回値と今回値が一致するか否かを判定する。そして、肯定判定が得られた場合には（Ｓ４２０：Ｙｅｓ）、Ｓ４２５に処理を移行すると共に、否定判定が得られた場合には（Ｓ４２０：Ｎｏ）、本処理を終了する。
【００５９】
［第二実施形態］
次に、第二実施形態のシミュレーション装置の動作について説明する。
第二実施形態のシミュレーション装置も、第一実施形態とほぼ同様にして対象モデルのシミュレーションを行う。しかし、シミュレーション処理において事前に一定区間をサーチし、該一定区間を形成する入力パターンが入力となる場合に限り、対象演算ステップの特定や、代替演算ステップへの置き換えを行うという点で相違している。
【００６０】
以下では、第二実施形態におけるシミュレーション処理について、図７に記載のフローチャートを用いて説明する。
Ｓ５０５，Ｓ５１０では、ＣＰＵ３０は、第一実施形態のシミュレーション処理のＳ２０５，Ｓ２１０と同様にしてシミュレーションを開始する。
【００６１】
続くＳ５１５では、ＣＰＵ３０は、読み込んだ入力パターンの中から、一定区間を形成する複数の入力パターンを特定し、Ｓ５２０に処理を移行する。
Ｓ５２０では、ＣＰＵ３０は、予め定められた順番に従い、いずれかの入力パターンを対象モデルの入力として設定し、Ｓ５２５に処理を移行する。
【００６２】
Ｓ５２５では、ＣＰＵ３０は、今回入力として設定された入力パターンが、一定区間を形成する入力パターンか否かを判定する。そして、肯定判定が得られた場合には（Ｓ５２５：Ｙｅｓ）、Ｓ５３０に処理を移行すると共に、否定判定が得られた場合には（Ｓ５２５：Ｎｏ）、Ｓ５３５に処理を移行する。
【００６３】
なお、今回の入力パターンが、一定区間を形成する入力パターンではないが、一定区間を形成する一連の入力パターンの入力終了後、最初に入力として設定されたものである場合には、ＣＰＵ３０は、Ｓ５３５に処理を移行する。これにより、代替演算ステップを対象演算ステップに書き戻す処理が行われる。
【００６４】
Ｓ５３０では、ＣＰＵ３０は、第一実施形態と同様のモデル書換処理を実行し、Ｓ５３５に処理を移行する。
Ｓ５３５では、ＣＰＵ３０は、対象演算処理を実行し、Ｓ５４０に処理を移行する。
【００６５】
Ｓ５４０では、ＣＰＵ３０は、今回設定した入力パターンが、最後に設定される入力パターンか否かを判定する。そして、肯定判定が得られた場合には（Ｓ５４０：Ｙｅｓ）、Ｓ５４５に処理を移行すると共に、否定判定が得られた場合には（Ｓ５４０：Ｎｏ）、Ｓ５２０に処理を移行する。
【００６６】
Ｓ５４５では、ＣＰＵ３０は、シミュレーションを終了させた後、本処理を終了する。
［効果］
第一，第二実施形態における代替演算ステップ作成処理では、対象演算ステップとして、一定変数と固定値とを用いた演算が行われる部分が特定されると共に、さらに、一定変数と他の入力変数とを用いた演算が行われる部分が特定される。このため、様々な演算を表した部分を対象演算ステップとして検出することができ、より一層、シミュレーションに要する時間を短縮することができる。
【００６７】
また、一定区間の終了後、最初に行われるモデル書換処理にて代替演算ステップを対象演算ステップに書き戻す処理が行われ、これ以降に行われるモデル書換処理では、代替演算ステップを書き戻す処理が行われない。このため、処理負荷を低減させることができると共に、シミュレーションに要する時間を短縮することができる。
【００６８】
さらに、第二実施形態のシミュレーション処理では、各入力パターンを入力とする対象演算処理の実行が開始される前に、一定区間を形成する入力パターンがサーチされ、これらの入力パターンが入力として設定される場合にモデル書換処理が行われる。このため、必要以上に対象演算ステップを特定する処理や、代替演算ステップを作成する処理が行われず、処理負荷を低減させることができると共に、シミュレーションに要する時間を短縮することができる。
【００６９】
［他の実施形態］
（１）第一，第二実施形態におけるモデル書換処理では、各入力変数について、前回の入力パターンと今回の入力パターンとの間での入力値の変化の有無を判定することで、一定変数となる入力変数を検出している。そして、一定変数が用いられる対象演算ステップを特定すると共に、代替演算ステップを作成している。
【００７０】
しかしながら、これに限らず、各入力変数について、今回の入力パターンと次回以降の入力パターンとの間での入力値の変化の有無を判定することで一定変数を検出し、一定変数が用いられる対象演算ステップの特定や、代替演算ステップの作成を行っても良い。
【００７１】
そして、該一定変数を形成する入力パターンが入力される間は、対象演算ステップの特定や代替演算ステップの作成を行わず、該対象演算ステップを該代替演算ステップに置き換えた状態を維持して対象演算処理を実行しても良い。このような場合であっても、同様の効果を得ることができる。
【００７２】
（２）また、第二実施形態におけるシミュレーション処理において、一定区間を形成する複数の入力パターンを特定した際に一定変数を検出しても良い。そして、代替演算ステップ作成処理と同様の方法により、該一定変数を用いて行われる対象演算ステップを特定すると共に、代替演算ステップを作成し、対象モデルにおける対象演算ステップを代替演算ステップに置き換えた代替モデルを生成しても良い。
【００７３】
その後、各入力パターンを順番に入力として設定し、一定区間を形成する入力パターンが入力となった際には、対象モデルに替えて、該一定区間において生じる一定変数に対応する代替モデルを用いてシミュレーションを実行しても良い。このような場合であっても、同様の効果を得ることができる。
【００７４】
［特許請求の範囲との対応］
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
【００７５】
第一実施形態のシミュレーション処理におけるＳ２１５が設定手段に、Ｓ２２５が実行手段に相当し、モデル書換処理におけるＳ３１０が検出手段に、Ｓ３２５，Ｓ３４０が置換手段に相当する。また、代替演算ステップ作成処理におけるＳ４０５〜Ｓ４３０が特定手段に相当する。
【００７６】
また、第二実施形態のシミュレーション処理におけるＳ５１５がサーチ手段に、Ｓ５２０が設定手段に、Ｓ５３５が実行手段に相当する。
【符号の説明】
【００７７】
１…ＰＣ、１０…ディスプレイ、２０…ＨＤＤ、３０…ＣＰＵ、４０…ＲＯＭ、５０…ＲＡＭ、６０…入力装置。
【図１】
2014016891.tif 000003
【図２】
2014016891.tif 000004
【図３】
2014016891.tif 000005
【図４】
2014016891.tif 000006
【図５】
2014016891.tif 000007
【図６】
2014016891.tif 000008
【図７】
2014016891.tif 000009