(57)【要約】      （修正有）【課題】ＣＰＵシミュレータからのアクセス報知のたびに行う結線判断処理の負荷を軽減できるプログラム連携システムを提供する。【解決手段】ソフトウェア検証装置３６０（プログラム連携システム）は、ＣＰＵシミュレータ３１０と外的要因シミュレータ３５０との間で送受信される情報の伝達を仲介して連携動作させる連携処理部３３０と、結線テーブル作成手段３４０を備える。結線テーブル作成手段は、ＣＰＵシミュレータのアクセスアドレス及びアクセスサイズごとに、外的要因シミュレータのどの信号と結線するかを算出し、ＣＰＵアクセス用の結線テーブル３４３を作成する。結線判断部３４２は、ＣＰＵアクセス用の結線テーブルを参照して、付随して報知されるアクセスアドレス及びアクセスサイズ情報に紐付けられる外的要因シミュレータの信号情報の有無を確認し、外的要因シミュレータから値を受け取るか、外的要因シミュレータへ値を伝えるかを判断する。【選択図】図１
2019066964.tif 000002
【特許請求の範囲】
【請求項１】
制御ソフトウェアを実行するターゲットＣＰＵをシミュレーションするＣＰＵシミュレータと、前記ＣＰＵシミュレータとは独立して動作する１つ以上のアプリケーションソフトウェアとを連携して動作させるプログラム連携システムにおいて、
前記ＣＰＵシミュレータ及び前記１つ以上のアプリケーションソフトウェアの各々の内部で扱う情報に対して同値関係にある情報を関連付ける結線信号情報に基づき、前記ＣＰＵシミュレータ及び前記アプリケーションソフトウェアにおける前記同値関係にある情報の値又は論理を一致させる信号伝達処理を行うことで、前記ＣＰＵシミュレータ及び前記１つ以上のアプリケーションソフトウェアを連携して動作させる連携処理部を備え、
前記結線信号情報は、前記ＣＰＵシミュレータによる仮想アドレス領域上のアドレスと、所定のアクセスサイズとに対して、該アドレスと該アクセスサイズにより定まるアクセス範囲内の少なくとも一部と前記同値関係にある全てのアプリケーションソフトウェアの内部の情報との関連付けを定義した情報を含み、
前記連携処理部は、前記ＣＰＵシミュレータからの前記仮想アドレス領域上のアクセス報知を受けたときには、付随して報知されるアドレスとアクセスサイズに基づいて、前記結線信号情報を検索し、アクセスされた情報と同値関係にある情報の値又は論理を一致させる信号伝達処理を行うことを特徴とするプログラム連携システム。
【請求項２】
前記結線信号情報を生成する結線情報生成手段を有することを特徴とする請求項１のプログラム連携システム。
【請求項３】
前記結線情報生成手段は、前記ＣＰＵシミュレータ及び前記１つ以上のアプリケーションソフトの中で同値関係にある情報が１対１または１対多で定義された一次結線情報に基づいて前記結線信号情報に定義されるべきアドレスの範囲を定めることを特徴とする請求項２に記載のプログラム連携システム。
【請求項４】
前記仮想アドレス領域へのアクセスの方式に関するアクセス方式情報を有し、
前記結線情報生成手段は、前記アクセス方式情報に基づき、前記結線信号情報に定義されるべきアドレス及びアクセスサイズの少なくともいずれかを定めることを特徴とする請求項２又は３に記載のプログラム連携システム。
【請求項５】
前記アクセス方式情報は、前記制御ソフトウェアが前記仮想アドレス領域に対してアクセスし得るアクセスサイズの情報を含むことを特徴とする請求項４に記載のプログラム連携システム。
【請求項６】
前記アクセス方式情報は、前記制御ソフトウェアをコンパイルすることにより得られることを特徴とする請求項５に記載のプログラム連携システム。
【請求項７】
前記アクセス方式情報は、前記制御ソフトウェアを静的解析により得られることを特徴とする請求項５に記載のプログラム連携システム。
【請求項８】
前記アクセス方式情報は、前記制御ソフトウェアを実行して前記ターゲットＣＰＵに制御されるシステムの特徴に基づく情報であることを特徴とする請求項４乃至７いずれか１項に記載のプログラム連携システム。
【請求項９】
前記特徴は、前記ターゲットＣＰＵの仕様又はコンパイラの仕様であることを特徴とする請求項８に記載のプログラム連携システム。
【請求項１０】
結線情報生成手段は、前記ターゲットＣＰＵの全アドレス空間に対してとり得るアクセ
スサイズ毎に前記同値関係にある情報との関連付け情報を定義した前記結線信号情報を生成し、
前記連携処理部は、前記ＣＰＵシミュレータのアクセス報知に付随するアクセスアドレスをインデックスとして前記結線信号情報を参照し信号伝達処理を行うことを特徴とする請求項８又は９に記載のプログラム連携システム。
【請求項１１】
前記結線情報生成手段は、前記仮想アドレス領域上で、マッピング可能領域の先頭から後端までの全領域に対してとり得るアクセスサイズ毎に前記同値関係にある情報との関連付け情報を定義した前記結線信号情報を生成し、
前記連携処理部は、前記ＣＰＵシミュレータのアクセス報知に付随するアクセスアドレスから前記仮想アドレスのマッピング可能領域の先頭アドレスを差引いた値をインデックスとして前記結線信号情報を参照し信号伝達処理を行うことを特徴とする請求項８乃至１０のいずれか１項に記載のプログラム連携システム。
【請求項１２】
前記情報生成手段は、前記制御ソフトウェアのグローバル変数及び前記ターゲットＣＰＵによって制御される機器のレジスタアドレス定義情報に基づいて前記制御ソフトウェアのアクセス範囲を特定することを特徴とする請求項２又は３に記載のプログラム連携システム。
【請求項１３】
前記１つ以上のアプリケーションソフトウェアは、前記ターゲットＣＰＵに制御される周辺機器や機能ブロックの機能の動作をシミュレーションするソフトウェアであることを特徴とすることを特徴とする請求項１乃至１２のいずれか１項に記載のプログラム連携システム。
【請求項１４】
請求項１乃至１３のいずれか１項に記載のプログラム連携システムとしてコンピュータを機能させることを特徴とするプログラム。
【請求項１５】
請求項１４に記載のプログラムを記憶したコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のアプリケーションソフトウェア間で同一の意味として取り扱う信号情報を伝達することにより連係動作させるプログラム連携システムに関するものである。
【背景技術】
【０００２】
通常の装置においては、ＣＰＵに制御される各機能ブロックの状態変化に応じて、ＣＰＵの動作が変化し、かつ、ＣＰＵからの信号出力により、ＣＰＵに制御される各機能ブロックの動作は変化する。このため、特許文献１は、機器組込系ソフトウェアの評価システムに、ＣＰＵシミュレータ及び外的要因シミュレータの使用を開示している。ＣＰＵシミュレータは、機器組込系ソフトウェアを仮想環境上で動作させるものである。そして、外的要因シミュレータは、前記ＣＰＵシミュレータから情報を受け取って、対応する機能の動作を模擬し、模擬結果を、ＣＰＵシミュレータへ送信したり、割込要求を出力したりする。この様に、ＣＰＵシミュレータと外的要因シミュレータとを連携動作させるシステムを、以下、シミュレーション連携システムと呼ぶ。
【０００３】
ＣＰＵシミュレータはＣＰＵの仮想アドレス領域情報を持ち、各領域が現在どの値を取るかシミュレーションする。ＣＰＵシミュレータにおけるＣＰＵ仮想アドレス上の特定領域の情報と外的要因シミュレータ内で扱われる情報で同値関係にある情報がある。ＣＰＵシミュレータにおけるモータ駆動信号に相当する仮想アドレス上の領域の情報を例にとる。そうすると、この情報は、外的要因シミュレータにおいて前記モータ駆動信号が接続されるモータをシミュレーションする外的要因シミュレータ内のモータモデルに定義される駆動信号情報と同値関係にある。
各々のシミュレータは独立したアプリケーションとして存在しているため、シミュレーション連携システムとして成り立つには、ＣＰＵシミュレータ内の情報と外的要因シミュレータ内の情報とで同値関係にある情報は常に論理が一致していなければならない。そこで、このようなシミュレーション連携システムにおいては、前記シミュレータ間で同値関係にある情報の論理を連動させる処理を行う。以下、このような同値関係で結びつけられる情報を「結線信号」と呼ぶ。
前記シミュレーション連携システムは、ＣＰＵシミュレータの各仮想領域と、関連付けられる外的要因シミュレータの各種信号情報とを、結線信号情報としてテーブル化して保持している。以後この結線信号情報の定義情報のことを結線定義情報と呼び、結線信号情報が格納されるテーブルを結線テーブルと呼ぶ。
前記シミュレーション連携システムは、ＣＰＵシミュレータが仮想領域にアクセスするたびに、前記結線テーブルを探索し、当該領域に結線定義がなされていれば、定義に従って、外的要因シミュレータと信号情報の伝達処理を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３３９０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、前記シミュレーション連携システムは、ＣＰＵシミュレータからアクセス報知された場合に、結線テーブルに登録されるすべての結線信号情報を参照して接続先情報の有無を確認する必要が有った。
ここで、結線テーブルから対象の結線信号情報をひとつ見つけたところで探索処理を中止出来ない理由について述べる。
従来のシミュレーション連携システムは、ＣＰＵ仮想アドレス上の領域と、外的要因シミュレータ内で扱われる情報との同値関係の定義を１対１で行っていた。模擬対象の装置のＣＰＵは、制御対象の機能が２値の信号情報である場合などに、同一のアドレス領域上に複数の機能が配置されることがある。これら各機能をシミュレーションするためには、ＣＰＵシミュレータと外的要因シミュレータの同値関係の定義をＣＰＵ仮想アドレス領域のビット単位でなすため、同一の仮想アドレス領域上に、ビット毎に複数の同値関係の定義がなされることになる。
従って、装置制御ソフトウェアがＣＰＵ仮想アドレス領域上のなんらかの領域にアクセスしたときに、結線テーブルでひとつの結線信号情報を見つけたとしても、別の結線信号情報が定義されている可能性がある。このため、シミュレーション連携システムは、ひとつの結線信号情報を見つけたとしても結線テーブルを仕舞いまで参照する必要が有った。
【０００６】
更に、もうひとつの課題として、装置制御ソフトウェアによるＣＰＵ仮想アドレス領域へのアクセス範囲が、必ずしも同値定義される仮想アドレス領域と同一ではないことがあげられる。ＣＰＵ仮想アドレス領域の０ｘ２００２番地が外的要因シミュレータと同値関係の定義がなされている場合を例に説明する。装置制御ソフトウェアが０ｘ２０００番地に４バイトアクセスする場合には、装置制御ソフトウェアのアクセス範囲は０ｘ２０００から０ｘ２００３である。このとき、外的要因シミュレータと同値関係が定義されている仮想アドレス領域０ｘ２００２も装置制御ソフトウェアのアクセス範囲内に入っている。従って、この場合にも、シミュレーション連携システムは０ｘ２００２番地の結線定義情報について処理対象の結線定義情報として抽出する必要が有る。
つまり、プログラム連携システムは、ＣＰＵ仮想アドレス領域のアクセス番地だけではなく、そのアクセスサイズ情報も考慮して結線テーブルを探索する必要が有る。
このため、ＣＰＵシミュレータからのアクセス報知のたびに行う配線データベースの探索処理が処理負荷になっていた。
本発明の目的は、結線判断処理の負荷を軽減することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係るプログラム連携システムは、制御ソフトウェアを実行するターゲットＣＰＵをシミュレーションするＣＰＵシミュレータと、前記ＣＰＵシミュレータとは独立して動作する１つ以上のアプリケーションソフトウェアとを連携して動作させるプログラム連携システムにおいて、
前記ＣＰＵシミュレータ及び前記１つ以上のアプリケーションソフトウェアの各々の内部で扱う情報に対して同値関係にある情報を関連付ける結線信号情報に基づき、前記ＣＰＵシミュレータ及び前記アプリケーションソフトウェアにおける前記同値関係にある情報の値又は論理を一致させる信号伝達処理を行うことで、前記ＣＰＵシミュレータ及び前記１つ以上のアプリケーションソフトウェアを連携して動作させる連携処理部を備え、
前記結線信号情報は、前記ＣＰＵシミュレータによる仮想アドレス領域上のアドレスと、所定のアクセスサイズとに対して、該アドレスと該アクセスサイズにより定まるアクセス範囲内の少なくとも一部と前記同値関係にある全てのアプリケーションソフトウェアの内部の情報との関連付けを定義した情報を含み、
前記連携処理部は、前記ＣＰＵシミュレータからの前記仮想アドレス領域上のアクセス報知を受けたときには、付随して報知されるアドレスとアクセスサイズに基づいて、前記結線信号情報を検索し、アクセスされた情報と同値関係にある情報の値又は論理を一致させる信号伝達処理を行うことを特徴とする。
【０００８】
また、本発明に係るプログラムは、上記プログラム連携システムとしてコンピュータを機能させることを特徴とする。
【０００９】
また、本発明は、上記プログラムを記憶したコンピュータが読み取り可能な記憶媒体で
ある。
【発明の効果】
【００１０】
以上説明したように、本発明によれば結線判断処理の負荷が軽減される。結果としてシミュレーションの負荷が軽減される。
【図面の簡単な説明】
【００１１】
【図１】実施例１の連携システムのブロック図
【図２】実施例１〜４の連携システムを実現するハードウェア構成図
【図３】実施例１における連携開始時の処理のフローチャート
【図４（Ａ）】実施例１における結線条件及び結線テーブルの一例を示す図
【図４（Ｂ）】実施例１における結線条件及び結線テーブルの一例を示す図
【図４（Ｃ）】実施例１における結線条件及び結線テーブルの一例を示す図
【図５】実施例１における連携動作中の処理のフローチャート
【図６】実施例２の連携システムのブロック図
【図７】実施例２におけるアクセス方式情報の一例を示す図
【図８】実施例４における連携システムのブロック図
【図９】実施例４における結線テーブルの情報の持ち方を示す図
【図１０】実施例３における連携システムのブロック図
【図１１（Ａ）】実施例４における結線テーブルの一例を示す図
【図１１（Ｂ）】実施例４における結線テーブルの一例を示す図
【図１１（Ｃ）】実施例４における結線テーブルの一例を示す図
【発明を実施するための形態】
【００１２】
以下に図面を参照して、この発明を実施するための形態を、実施例に基づいて例示的に詳しく説明する。ただし、この実施の形態に記載されている構成部品の寸法、材質、形状それらの相対配置などは、発明が適用される装置の構成や各種条件により適宜変更されるべきものである。すなわち、この発明の範囲を以下の実施の形態に限定する趣旨のものではない。
【実施例１】
【００１３】
本発明においてソフトウェア検証装置は、コンピュータシステム２０１上でプログラムを実行することで実現でき、そのハードウェア構成を図２に示す。図２の本体部２０２のハードディスク２０８には、ソフトウェア検証装置の各機能を実現するためのプログラムが格納される。中央処理部（ＣＰＵ）２０６は、プログラム及び各種データを主記憶部２０８にロードして実行することで、コンピュータシステム２０１はソフトウェア検証装置として動作する。なお、表示装置２０３は、本体部２０２からの指示により画面表示を行う。また、キーボード２０４は、このコンピュータシステム２０１にユーザの指示や文字情報を入力するためのものである。さらに、マウス２０５は、表示装置２０３上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するためのものである。
【００１４】
図１は、本実施形態によるソフトウェア検証装置３６０の機能ブロック図である。ＣＰＵシミュレータ３１０は、制御ソフトウェアを実行してターゲットＣＰＵの動作を模擬するものである。また、外的要因シミュレータ３５０は、ペリフェラル、つまり、ターゲットＣＰＵに制御される周辺機器や機能ブロックの機能の動作を模擬するものである。さらに、ソフトウェア検証装置３６０は、ＣＰＵシミュレータ３１０と外的要因シミュレータ３５０との間で送受信される情報の伝達を仲介して、これらを連携動作させる連携処理部３３０と、結線テーブル作成手段３４０とを備えている。ここで、結線テーブル作成手段は、結線情報生成手段に相当する。なお、ターゲットＣＰＵとは、コンピュータシステム
２０１に搭載されているＣＰＵ２０６ではなく、制御ソフトウェアが実際に使用される装置のＣＰＵである。また、図において、外的要因シミュレータ３５０の数を１つだけ図示しているがこれは概念を図示したものであり、ソフトウェア検証装置３６０は、任意の数の外的要因シミュレータを接続し得る。また、本実施例においては、外的要因シミュレータ３５０をＣＰＵシミュレータ３１０とは別プロセスとしているが、これも例示である。上述のＣＰＵシミュレータ３１０及び外的要因シミュレータ３５０は、それぞれの機能をシミュレーションするアプリケーションソフトウェアをコンピュータシステム上で実行することにより実現される。また、上述のソフトウェア検証装置は、それぞれのアプリケーションソフトウェアを連携動作させるプログラム連携システムである。
【００１５】
ＣＰＵシミュレータ３１０の命令実行部３１１は、検証対象である制御ソフトウェアを実行して、メモリや装置制御用のレジスタに値の読み書きを行う。情報格納部３１６は、ターゲットＣＰＵのアドレス空間をＣＰＵシミュレータ上で模擬する仮想アドレス空間情報を有している。仮想アドレス空間には、ターゲットＣＰＵの主メモリだけではなく、制御対象のハードウェアへの制御信号に対応する値を書き込み、ハードウェアの状態を示す値を保持するレジスタも含まれている。さらに、命令実行部３１１は、制御ソフトウェアのアクセス命令に従い、仮想アドレス空間の対応領域にアクセスする。
命令実行部３１１は、特定の命令の実行時に、Ｉ／Ｆ部３１２経由で連携処理部３３０に、当該特定命令の実行をイベントとして通知する。ここで、特定の命令とは、例えば、仮想アドレス空間へのライトアクセス、及びリードアクセス処理等である。なお、命令実行部３１１は、イベント通知後、連携処理部３３０から再開指示を受け取るまで、模擬処理を停止する。
連携処理部３３０は、ＣＰＵシミュレータ３１０内部で扱われる情報と外的要因シミュレータ３５０内部で扱われる情報の内、同値関係の情報間でのデータの受け渡しを行うためのものである。連携処理部３３０は管理部３３５を持ち、管理部３３５は結線判断部３４２を持つ。
【００１６】
結線テーブル作成手段３４０は、結線条件３３７と、内部で持つアクセス方式情報３４５から、ＣＰＵシミュレータ３１０のアクセスアドレス及びアクセスサイズごとに、外的要因シミュレータ３５０のどの信号と結線するかを算出する。これにより、結線テーブル作成手段３４０は、ＣＰＵアクセス用の結線テーブル３４３を作成する。
結線条件３３７には、ＣＰＵシミュレータ３１０と、外的要因シミュレータ３５０との各々で扱われる情報の内の同値関係にある情報が１対１又は１対多で関連付けられた情報が格納される。具体的には、同値関係にある情報について、ＣＰＵシミュレータの仮想アドレス上の領域と外的要因シミュレータ３５０の信号識別情報の組合せを定義した情報を有する。ここで、結線条件３３７が一次結線情報に相当する。
図４（Ａ）は結線条件３３７の一例である。ＣＰＵアドレス領域０ｘ２０００に対し、共用信号ｎ及び共用信号ｍが割り当てられている。
共用信号ｎは、ＣＰＵシミュレータ３１０と、外的要因シミュレータ２とで伝達処理を行うべき信号として定義されている。共用信号ｎは、外的要因シミュレータ２の内部では、Ｓｉｇ＿ａという信号として取り扱われている。また、信号値の伝達方向（以後結線方向と呼ぶ）についても定義されており、外的要因シミュレータ２からの出力をＣＰＵシミュレータ３１０が受け取るよう定義されている。ＣＰＵシミュレータ３１０がアドレス０ｘ２０００を書き換えたときには、外的要因シミュレータ２へＣＰＵシミュレータ３１０の書込値は伝達されない。
共用信号ｍは、ＣＰＵシミュレータ３１０と、外的要因シミュレータ１とで伝達処理を行うべき信号として定義されている。共用信号ｍは、外的要因シミュレータ１の内部では、Ｓｉｇ１という信号として取り扱われている。ＣＰＵシミュレータ３１０からの出力を外的要因シミュレータ１が受け取るよう定義されている。共用信号ｍは２バイトの領域を持つ信号として定義されている。このため、ＣＰＵシミュレータ３１０がアドレス０ｘ２
０００を書き換えたときにも、アドレス０ｘ２００１を書き換えたときにも、連携処理部３３０は外的要因シミュレータ１へＣＰＵシミュレータの書込値を伝達する。
また、ＣＰＵアドレス領域０ｘ２００２には、共用信号ｘが割り当てられている。共用信号ｘは外的要因シミュレータ１及び２と伝達処理を行うべき信号として定義されている。共用信号ｘは、外的要因シミュレータ１の内部では、Ｓｉｇ２という信号として取り扱われており、外的要因シミュレータ２の内部では、Ｓｉｇ＿ｂという信号として取り扱われている。外的要因シミュレータ２からの出力をＣＰＵシミュレータ３１０が受け取り、さらに、ＣＰＵシミュレータ３１０からの出力を外的要因シミュレータ１が受け取るよう定義されている。
尚、本実施例では結線条件３３７に信号の伝達方向についての情報を入れたが、本発明を制限するものではない。結線方向の定義が無い場合には、各アプリケーションが自身の管理する領域や信号情報を書き換えた時に、連携処理部は当該信号に対して結線定義がなされている全てのアプリケーションへ書込値を伝達する。
アクセス方式情報３４５には装置制御ソフトウェア３００の制御対象ＣＰＵに対するごく一般的なアクセスサイズの仕様情報が格納される。たとえば、制御装置ソフトウェア３００は制御対象装置へのアクセスとして、１バイト、２バイト、４バイトでのアクセスを行うといった情報が格納される。
【００１７】
結線テーブル３４３には、ＣＰＵシミュレータ３１０の所定のアクセスサイズ、及びアクセス方法について、どのアプリケーションと結線するか、及び結線先アプリケーションにおける当該領域と対応する信号の識別情報が格納される。このとき、ＣＰＵシミュレータによる仮想アドレス領域のアドレスと、アクセス方法等により定まる所定のアクセスサイズとによりアクセス範囲が定まる。結線テーブル３４３は、このアクセス範囲内の少なくとも一部と同値関係にあるアプリケーションの内部の情報と関連付けを定義したものである。ここで、結線テーブルは結線信号情報に相当する。
図４（Ｂ）は結線テーブル作成手段３４０が、図４（Ａ）の結線条件３３７を元に作成するＣＰＵアクセス用の結線テーブル３４３の一例である。
共用信号ｎはＣＰＵアドレス領域０ｘ２０００の１ｂｙｔｅに関連付けられているため、制御ソフトウェア３００が共用信号ｎにアクセスする可能性が有るのは、０ｘ２０００近傍のアクセスに限られる。今、ＣＰＵのアクセス仕様が、「１バイトアクセス」または「２バイトアクセス」または「４バイトアクセス」である場合に、制御ソフトウェア３００が共用信号ｎにアクセスする可能性が有るのは、以下である。
すなわち、共用信号ｎのアドレス０ｘ２０００−｛最大アクセスサイズ４バイト−最小アクセスサイズ１バイト｝から、共用信号ｎの終端アドレスである。
従って、制御ソフトウェア３００による、アドレス０ｘ１ＦＦＤから０ｘ２０００へのアクセスが共用信号ｎとの結線処理が必要な可能性がある。
ここで、制御ソフトウェア３００がアドレス０ｘ１ＦＦＤへ１バイトアクセス乃至２バイトアクセスする場合には、制御ソフトウェア３００のアクセス領域内にアドレス０ｘ２０００が入らない。このため、共用信号ｎには無関係なアクセスであると結線テーブル作成手段３４０は判断する。
制御ソフトウェア３００がアドレス０ｘ１ＦＦＤへ４バイトアクセスした場合には、制御ソフトウェア３００のアクセス領域内にアドレス０ｘ２０００が入る。このため、結線テーブル作成手段３４０は、結線テーブル３４３にアドレス０ｘ１ＦＦＤの４バイトアクセスと共用信号ｎの外的要因シミュレータ２との結線情報とを関連付けて格納する。
また、制御ソフトウェア３００がアドレス０ｘ２０００へアクセスする場合には、アクセス方式に関わらず制御ソフトウェア３００のアクセス領域内にアドレス０ｘ２０００が入る。このため、結線テーブル作成手段３４０は、結線テーブル３４３にアドレス０ｘ２０００の全アクセスサイズについて、共用信号ｎの外的要因シミュレータ２との結線情報とを関連付けて格納する。
共用信号ｍについては、先頭アドレスについては共用信号ｎと同様だが、結線サイズが
２バイトのため、終端アドレスが０ｘ２００１となる。
すなわち、制御ソフトウェア３００による、アドレス０ｘ１ＦＦＤから０ｘ２００１へのアクセスが共用信号ｍとの結線処理が必要な可能性がある。
【００１８】
結線テーブル作成手段３４０は、結線条件３３７に定義される全ての結線信号情報について、上記結線テーブル３４３の作成処理を行う。
以上のように、本発明においてはシミュレータ間で同値関係にある情報をＣＰＵシミュレータ内の仮想アドレス空間のアドレス毎にアクセスされる可能性のある接続先を関連付けた結線テーブルを構成する。
さらに、検索テーブル作成手段３４０は、結線条件３３７の情報を、外的要因シミュレータからのアクセス通知時の結線テーブルとして記憶する。すなわち、検索テーブル作成手段３４０は、外的要因シミュレータの各信号情報と、同値関係が定義されるＣＰＵシミュレータの仮想アドレス領域情報とを関連付けて、外的要因シミュレータからのアクセス通知時の結線テーブルとして記憶する。
これを外的要因シミュレータアクセス用の結線テーブル３５２とする。理由として、外的要因シミュレータの信号に対しては同値関係にあるＣＰＵシミュレータの仮想アドレス領域情報が一意に決まるためである。
【００１９】
結線判断部３４２は、ＣＰＵシミュレータからアクセス報知を受けると、ＣＰＵアクセス用の結線テーブル３４３を参照して、付随して報知されるアクセスアドレス及びアクセスサイズ情報に紐付けられる外的要因シミュレータの信号情報の有無を確認する。もし存在する場合には、外的要因シミュレータ３５０から値を受け取るか、外的要因シミュレータ３５０へ値を伝えるかを結線テーブル３４３に記載の情報に従い判断する。
ＣＰＵアクセス用の結線テーブル３４３には、先述の通り結線先アプリケーション、及び結線先アプリケーションにおける信号識別情報が格納される。このため、連携処理部は結線先アプリケーションに則したインターフェースであるＩ／Ｆ部３３８を用いることができる。これにより、連携処理部は、外的要因シミュレータ３５０から信号情報の値を取得する必要が有る場合には、結線先のアプリケーション仕様に則ったインターフェースで外的要因シミュレータと信号情報の伝達処理を行う。
また、結線判断部３４２は、外的要因シミュレータ側からのアクセスに関しては、外的要因シミュレータアクセス用の結線テーブル３５２の情報を用いて信号伝達処理対象のＣＰＵ仮想アドレス領域情報を探索する。結線判断部３４２は、アクセス対象のＣＰＵ仮想アドレス領域情報を取得すると、同様にＣＰＵシミュレータ３１０とのインターフェースであるＩ／Ｆ部３３１を用いて、ＣＰＵシミュレータ３１０との信号情報の伝達処理を行う。
【００２０】
結線テーブル作成手段３４０が、ＣＰＵアクセス用の結線テーブル３４３及び外的要因シミュレータアクセス用の結線テーブル３５２を作成する処理について、図３を用いて詳細に説明する。
図３は、制御ソフトウェア検証装置３６０の結線テーブル作成に関するフローチャートである。
制御ソフトウェア検証装置３６０は、外部からシミュレーション開始トリガを受信すると（Ｓ４００）、あらかじめユーザによって定義される結線条件３３７を読み込む（Ｓ４０１）。
次いで、結線条件３３７と、一般的な制御ソフトウェア３００のアクセス仕様から、結線テーブル作成手段３４０により結線テーブル３４３を作成する。また、結線条件３３７から外的要因シミュレータアクセス用の結線テーブル３５２を作成する（Ｓ４０２）。
制御ソフトウェア検証装置３６０は、結線テーブル３４３及び３５２を作成すると、結線情報についてのシミュレーション開始時の処理を終了したとみなし、連携駆動対象の各アプリケーションの連携処理を開始する（Ｓ４０３）。
以上で、シミュレーション開始時の結線処理に関する処理フローの説明を終える。
【００２１】
次いで、図５を用いて、連携駆動時の結線処理について説明する。
図５は、ＣＰＵシミュレータ３１０からアクセス報知を受けた時の結線判断部３４２の処理を説明するフローチャートである。
結線判断部３４２が、ＣＰＵシミュレータ３１０からアクセス報知を受けると（Ｓ５００）、結線判断部３４２は結線テーブル３４３を探索して、報知されたアクセスアドレスが結線テーブル３４３に登録されているか否かを確認する（Ｓ５０１）。
報知されたアクセスアドレスが結線テーブル３４３に登録されている場合には、関連する結線信号数分の結線処理を行う必要が有るため、結線信号数と結線処理回数が同数になるまで処理を繰り返す。まず前準備として処理回数比較用の変数ｉを０に初期化し（Ｓ５０３）、結線テーブル３４３が持つ当該アドレスのアクセスサイズ情報から、報知されたアクセスサイズに対応する情報を参照する。以後、結線テーブル３４３の報知されるアクセスアドレス及びアクセスサイズに対応する番地を、対応番地と呼称する。
【００２２】
Ｓ５０４にて、結線テーブル３４３の対応番地に格納される情報の結線信号数と処理回数比較用の変数ｉとを比較し、結線処理を行うか、結線処理を終了するかを判断する。結線信号数のほうが、処理回数比較用の変数ｉより大きい場合には、Ｓ５０５〜Ｓ５０７の結線処理を行う。
たとえば結線信号数がない（０である）場合には、処理回数比較用の変数ｉとイコールとなるため、一度も結線処理を行わずにＳ５０８へ移行する。結線信号数が１以上の場合には、処理回数比較用の変数ｉが０のため結線処理が必要と判断する。
Ｓ５０４にて、結線処理が必要と判断すると、結線判断部３４２は結線テーブル３４３の対応番地に格納される、ｉ＋１番目の結線情報を参照し、対応する外的要因シミュレータ３５０との結線情報を取得する（Ｓ５０５）。Ｓ５０６にて、対応する外的要因シミュレータ３５０との接続インタフェースであるＩ／Ｆ部３３８を用いて、信号情報の伝達処理を行う。具体的には、結線情報には結線先のアプリケーション及び、当該アプリケーションにおける信号識別情報、結線方向等の情報が格納される。これにより、結線先アプリケーションの対応する信号へＣＰＵシミュレータ３１０の当該領域の値を伝達したり、結線先アプリケーションの対応する信号の値をＣＰＵシミュレータ３１０の当該領域に反映させたりする。
ひとつの結線信号の処理が終わると、処理回数比較用の変数ｉをインクリメントし（Ｓ５０７）、再びＳ５０４にて結線処理をすべきか否かを判断する。
Ｓ５０４にて結線処理を終了したと判断すると、結線判断部３４２はアクセス報知処理を終了したと判断し、ＣＰＵシミュレータ３１０へ処理の実行権を返す（Ｓ５０８）。
連携処理部３３０が外的要因シミュレータ３５０からのアクセス通知を受けたときの処理に関しては従来通りであるため説明を省略する。
以上で連携駆動時の結線処理についての説明を終える。
【００２３】
尚、今回はＳ５０４にて結線処理の有無判断に変数ｉを用いたが、本発明を制限するものではない。結線テーブルの定義なしの番地には特定情報（ＮＵＬＬなど）を格納し、対応番地情報を読み出して特定情報の場合には処理を終了するというつくりでも良い。
また、Ｓ５０６にて行う結線処理について、結線先アプリケーションの処理を終えるまで待つ必要はない。結線先アプリケーションへ値を伝達する際には、結線先アプリケーションとのＩ／Ｆ部３３８へ値変更情報を追加すれば処理を終えたものとして別アプリケーションへのの結線処理を行える。
以上の事から、ＣＰＵシミュレータ３１０と外的要因シミュレータ３５０との連携処理について、ＣＰＵシミュレータからのアクセス報知のたびに結線テーブルを仕舞いまで確認する必要が無くなり、処理の高速化を図れる。
【実施例２】
【００２４】
実施例１では、ごく一般的なマイコンの仕様情報が格納されるアクセス方式情報３４５に基づいて、ＣＰＵシミュレータのアクセスアドレス及びアクセスサイズごとに、ＣＰＵアクセス用の結線テーブル３４３を作成していた。
しかしながらマイコンによっては、２バイト境界や４バイト境界に従って変数をＣＰＵ領域にマッピングするものがある。そのようなマイコンの場合には、奇数アドレスに２バイト及び４バイトの変数をマッピングしない。また。マイコンによっては４バイト境界＋２のアドレス領域にも１バイトまたは２バイトの変数しかマッピングしない。
このようなマイコンの場合には、制御ソフトウェアもマイコンのマッピング仕様に従ってアクセスするため、奇数アドレスに２バイト及び４バイトのアクセスをしないと言える。
本実施例では、マイコンの仕様に従ってＣＰＵアクセス用の結線テーブル３４３を作成することで、結線テーブル３４３のサイズを小さくし、結線テーブルのサーチ処理を一層高速に行う方法について述べる。
【００２５】
図６は、本実施形態によるソフトウェア検証装置３６０の機能ブロック図である。図１と同番号のものは、図１と同一の機能であるため説明を省略する。
結線テーブル作成手段３４０は結線条件３３７と、アクセス方式情報３４７から、ＣＰＵシミュレータのアクセスアドレス及びアクセスサイズごとに、外的要因シミュレータ３５０のどの信号と結線するかを算出して結線テーブル３４３を作成する。
アクセス方式情報３４７には、アクセスサイズの最大値の倍数アドレスから、アクセスサイズの最大値の倍数アドレス−アクセスサイズの最小値までの各アドレスについて、制御ソフトウェアがアクセスするアクセスサイズが格納される。
たとえば前記アクセスサイズの最小値が１、最大値が４だとする。そうすると、４の倍数アドレス＋０アドレスから、４の倍数アドレス＋３（最大アクセスサイズ−最小アクセスサイズ）アドレスまでの各アドレスについて、制御ソフトウェアが１バイト、２バイト、３バイト、４バイトのアクセスを行うか否かが格納される。
【００２６】
図７は本実施例におけるアクセス方式情報の一例を示す図である。
４の倍数アドレス＋０の領域には、制御ソフトウェアは１バイト及び２バイト及び４バイトのアクセスを行う可能性がある。
４の倍数アドレス＋１、及び４の倍数アドレス＋３の領域には、制御ソフトウェアは１バイトのアクセスのみを行う可能性がある。
４の倍数アドレス＋２の領域には、制御ソフトウェアは１バイト、及び２バイトのアクセスを行う可能性がある。
配線データベース３３６の結線条件３３７が、実施例１の図４（Ａ）のとおりだとすると、結線テーブル作成手段３４０が作成する結線テーブル３４３は、図７のアクセス仕様に基づき図４（Ｃ）のとおりとなる。
図４（Ｂ）で結線テーブルの要素として格納されていたアドレス０ｘ１ＦＦＦや０ｘ２００１への２バイト及び４バイトアクセス、及びアドレス０ｘ１ＦＦＤ、０ｘ１ＦＦＥ、０ｘ２００２への４バイトアクセスは制御ソフトウェアがアクセスする可能性が無い。このため、これらの要素は結線テーブル３４３から削除されている。
以上のようにして結線テーブルをより小さいものにすることが出来るようになり、結線テーブルのサーチ処理を一層高速にすることが出来る。
【実施例３】
【００２７】
実施例１又は２では、マイコンの仕様情報が格納されるアクセス方式情報３４５又は乃至３４７に基づいて、ＣＰＵシミュレータのアクセスアドレス及びアクセスサイズごとに、結線テーブル３４３を作成していた。
しかしながら、マイコンの仕様としてはアクセスが可能でも、制御ソフトウェア３００
がアクセスしないアクセスアドレス及びアクセスサイズが存在する。本実施例では、制御ソフトウェア３００のアクセスアドレス及びアクセスサイズを考慮してＣＰＵアクセス用の結線テーブル３４３を作成する方法について述べる。
【００２８】
本実施形態によるソフトウェア検証装置３６０の機能ブロック図は図１０のとおりである。
装置制御ソフトウェア３００はアクセス領域情報３５１を持つ。アクセス領域情報３５１は例えば装置制御ソフトウェア３００をコンパイラによりコンパイルして生成される装置制御ソフトウェア３００のアドレスマップ情報である。
結線テーブル作成手段３４０は、まず実施例２と同様の方法でＣＰＵアクセス用の結線テーブル３４３を作成する。次いで、アクセス領域情報３５１を参照する。アクセス領域情報３５１には、装置制御ソフトウェア３００がアクセスする可能性のあるアドレス領域情報が格納されている。このため、結線テーブル３４３のアクセスアドレス及びアクセスサイズと、アクセス領域情報３５１記載のアドレス領域情報とをひとつずつ照会する。
結線テーブル３４３内のアドレス及びアクセスサイズ情報が、アクセス領域情報３５１内に存在しなければ、当該アドレス及びアクセスサイズ情報に定義される情報は不要な情報として結線テーブル３４３から削除する。
この方法により、ＣＰＵアクセス用の結線テーブル３４３の情報が間引かれるため、結線判断部３４２がＣＰＵシミュレータ３１０からのアクセス報知のたびに行う結線テーブル３４３のサーチ処理のサーチ対象が少なくなる。その結果としてシミュレーション速度が向上する。
尚、本実施例ではアクセス領域情報３５１を装置制御ソフトウェア３００のコンパイル生成物としたが、装置制御ソフトウェア３００を図示しない静的解析手段で算出したものであってもよい。
また、装置制御ソフトウェアのグローバル変数及びペリフェラルデバイス（ターゲットＣＰＵに制御される周辺機器）のレジスタアドレス定義情報によって、装置制御ソフトウェアの仮想アドレス領域上へのアクセス範囲を特定することもできる。
【実施例４】
【００２９】
実施例１、２、３では、制御ソフトウェアからのアクセスのたびに結線テーブルを参照して、報知されたアクセスアドレス及びアクセスサイズに対応する結線信号情報を探索している。すなわち探索の負荷が少なからず発生する。
本実施例では、ＣＰＵアクセス用の結線テーブル３４３を探索することなく、ＣＰＵシミュレータ３１０から報知されたアクセスアドレス及びアクセスサイズに対応する連携処理部内の共用信号に関する信号識別情報を取得する方法について述べる。
【００３０】
模擬対象のＣＰＵアドレス領域は、コンピュータシステム２０１の持つメモリ領域に比べるとはるかに小さい。そこで、結線テーブル３４３の作りを、ＣＰＵシミュレータの仮想アドレス及びアクセス報知される可能性のあるアクセスサイズに依存した形態にする。このようにすれば、ＣＰＵシミュレータ３１０からのアクセス報知から結線テーブル３４３の参照箇所を一意に決めることが出来るようになる。
すなわち、結線テーブル３４３を３次元配列にし、第１の要素にアクセスアドレス、第２の要素にアクセスサイズ、第３の要素に結線条件３３７への各信号定義情報への照会情報を格納する。第１の要素としては、ターゲットＣＰＵの全アドレス空間を登録してすることもできる。
ここで第１の要素について、ＣＰＵのＲＡＭ領域のみを登録する形式にしても良い。模擬対象のＣＰＵアドレス領域は、コンピュータシステム２０１の持つメモリ領域に比べるとはるかに小さい。しかし、制御ソフトウェアがリード乃至ライトアクセスを行う可能性のない領域まで結線テーブルに含めるとコンピュータシステム２０１上のメモリの負荷になるためである。
ＲＡＭ領域のみを登録する場合には、ＣＰＵ仮想アドレス領域上のＲＡＭ領域が０より大きいアドレスに配置されているときにはオフセットを持たせる。図８は本実施例にかかるシステム構成図である。図８に示す通り、結線テーブル作成手段３４０と結線判断部３４２は同一のアクセス領域情報３５１を参照し、同一のオフセット値を取得する。ＣＰＵ仮想アドレス領域上のＲＡＭ領域が複数点在していることが有るため、アドレス領域毎にオフセット値を変更する。
【００３１】
図９はＲＡＭ領域が０始まりではなく、かつ点在する例である。
第１のＲＡＭ領域が０ｘ１０００から０ｘ１ＦＦＦ、第２のＲＡＭ領域が０ｘ８０００から０ｘ８７ＦＦとする。このとき第１のＲＡＭ領域の要素数が０ｘ１０００、第２のＲＡＭ領域の要素数が０ｘ８００である。このとき、第１のＲＡＭ領域に対応する結線信号情報は結線テーブルの０ｘ００００からアドレス範囲０ｘ１０００分、すなわち０ｘ００００から０ｘ０ＦＦＦへ格納される。同様に、第２のＲＡＭ領域に対応する結線信号情報は結線テーブルの続き領域からアドレス範囲０ｘ８００分であるため０ｘ１０００から０ｘ１７ＦＦへ格納される。
また、結線判断部３４２は、ＣＰＵシミュレータ３１０からアクセス報知を受けると、アクセス報知アドレスが０ｘ１０００から０ｘ１ＦＦＦであれば結線テーブルの０ｘ００００から０ｘ０ＦＦＦを参照する。また、アクセス報知アドレスが０ｘ８０００から０ｘ８７ＦＦであれば、結線判断部３４２は、結線テーブルの０ｘ１０００から０ｘ１７ＦＦを参照する。また、ＣＰＵシミュレータ３１０から報知されたアクセス領域がそれ以外であれば、結線なしと判断する。
結線テーブルの第２の要素はアクセスサイズであるため、アクセス方式が１バイト及び２バイト及び４バイトの３種類の場合には、１、２、４のみが格納される。
尚、本実施例ではＲＡＭ領域情報とアクセスサイズ情報とを、第１の要素及び第２の要素というように分けて定義したが、第１の要素を桁上げして、第２の要素を付加する等、両者を融合させて１つの要素として取り扱っても良い。
第３の要素の個数は、結線定義可能数の総数となる。すなわち、各アドレス領域には、結線の定義がビット単位でなされることと、バイト単位でなされることがあり、それらが重複して定義されることがあるため、要素数は定義可能な結線方式の総和となる。
また、実施例２で述べたように、アクセス方式情報３４５が境界条件を含む場合には第３の要素数をさらに削減することが出来る。
【００３２】
結線判断部３４２は、ＣＰＵシミュレータ３１０からアクセス報知を受けると、結線テーブル３４３を、第１の要素を報知されるアクセスアドレス、第２の要素をアクセスサイズとして参照する。なお、オフセットを持たせる必要が有る場合には、報知されるアクセスアドレスは、オフセット値を加味した値となる。
本実施例では、結線テーブル３４３を配列で管理し、そのインデックス（添え字）をＣＰＵアドレス領域及びアクセスサイズと紐づけている。このため、ＣＰＵシミュレータ３１０から報知されるアクセスアドレス及びアクセスサイズから、対象のデータ領域が一意に決まり、サーチが不要となる。
第１の要素であるアクセスアドレスは、図９の例では、全ＲＡＭ領域数の０ｘ１７ＦＦであり、第２の要素であるアクセスサイズは、上述のように、１、２、４バイトであり、第３の要素は配列の個数となる。すなわち、第１の要素は、仮想アドレス領域上で、マッピング可能領域の先頭から後端までの全領域に対して定義される。このとき、オフセットを持たせる場合には、マッピング可能領域の先頭アドレスを差引いた値が第１の要素となる。また、第２の要素は、とり得るアクセスサイズ毎に定義されている。
結線テーブル名をｔａｂｌｅとすると、配列の構成及び格納される情報は、次のようになる。図１１（Ａ）及び図１１（Ｂ）に、本実施例の結線テーブルの例を示す。なお、図１１（Ａ）では、第２の要素（アクセスサイズ）が０及び１、図１１（Ｂ）では、第２の要素が２及び３のみを示し、図１１（Ｃ）では第２の要素が４の場合を示している。
配列：ｔａｂｌｅ［０ｘ１７ＦＦ］［５］［ｎ］
格納情報：結線条件３４９の各信号定義情報へのポインタ
たとえば、制御ソフトウェアが０ｘ１００８に４バイト分アクセスすると、第１の要素は、アクセス領域０ｘ１００８を０ｘ１０００分オフセットして０ｘ８となり、第２の要素は４バイトアクセスであるため、４となる。そして、結線テーブルへのアクセスは、ｔａｂｌｅ［８］［４］［０］〜ｔａｂｌｅ［８］［４］［ｍ（格納するポインタの数）］となる。
以上の方法で、結線テーブル３４３を探索することなく、結線信号情報を取得することが出来る。ＣＰＵシミュレータ３１０からのアクセス報知のたびに発生する結線テーブル４３４へのサーチ処理が低減されるため、従来より高速にシミュレーションを行うことが可能になる。
なお、上述の実施例の機能を実現するプログラムを、記録媒体から直接、或いは有線／無線通信を用いてプログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのプログラムを実行する場合も本発明に含む。プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光／光磁気記憶媒体、不揮発性の半導体メモリでもよい。
【符号の説明】
【００３３】
３１０…ＣＰＵシミュレータ、３５０…外的要因シミュレータ、３００…装置制御ソフトウェア、３３０…連携処理部、３４０…結線テーブル作成手段、３４３…結線テーブル
【図１】
2019066964.tif 000003
【図２】
2019066964.tif 000004
【図３】
2019066964.tif 000005
【図４（Ａ）】
2019066964.tif 000006
【図４（Ｂ）】
2019066964.tif 000007
【図４（Ｃ）】
2019066964.tif 000008
【図５】
2019066964.tif 000009
【図６】
2019066964.tif 000010
【図７】
2019066964.tif 000011
【図８】
2019066964.tif 000012
【図９】
2019066964.tif 000013
【図１０】
2019066964.tif 000014
【図１１（Ａ）】
2019066964.tif 000015
【図１１（Ｂ）】
2019066964.tif 000016
【図１１（Ｃ）】
2019066964.tif 000017