(57)【要約】【課題】一つのプロセスで行うハードウェア・ソフトウェア協調シミュレーションにおいて、ハードウェア側のシミュレーションの実現方法としてシミュレーションを実行するマシン上で直接実行可能なコンパイル済みのコードを用いる場合、ハードウェア記述をデバッグするためにハードウェアのシミュレーションを途中で停止したとき、同じアプリケーションの一部となっているソフトウェアのシミュレータも停止してしまい、ソフトウェアのデバッグに必要な情報を取得できなくなる。【解決手段】ＩＳＳ実行部１０３とソフトウェアデバッガＧＵＩ部１０５との間に共有ファイル２０１を設け、必要な情報を取得可能とする。【選択図】  図１
2005332110.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたシミュレーションシステム。
【請求項２】
ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記被デバッグシステム記述部と前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたシミュレーションシステム。
【請求項３】
ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な複数の被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記複数の被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたシミュレーションシステム。
【請求項４】
ソフトウェアをシミュレートしかつ同じプロセス内で連携して動作する複数の命令セットシミュレータ実行部と、前記複数の命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記複数の命令セットシミュレータ実行部を操作するとともに前記複数の命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記複数の命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたシミュレーションシステム。
【請求項５】
ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアの動作を記述したハードウェア記述の内容を実行するハードウェア記述実行部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作し前記ハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記ハードウェア記述実行部を操作し前記ハードウェア記述をデバッグするハードウェア記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な第１の共有ファイルと、前記ハードウェア記述実行部と前記ハードウェア記述デバッガＧＵＩ部の間の情報を共有し前記ハードウェア記述デバッガＧＵＩ部がデバッグに必要な情報を取得可能な第２の共有ファイルとを備えたシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアとソフトウェアを協調してシミュレーションを行うシミュレーションシステムに係わり、特にソフトウェアデバッグが容易に実行できるシミュレーションシステムに関するものである。
【背景技術】
【０００２】
ハードウェアとソフトウェアを協調してシミュレーションを行うシミュレーションシステムとして、ハードウェア・ソフトウェア協調シミュレーションが従来知られている。
【０００３】
これによれば、実際のハードウェアを使わずに仮想的なハードウェアを使ってソフトウェアのデバッグを行うことによりハードウェアの不具合を早期に発見したり、ソフトウェアのデバッグを行ったり、あるいはシステムの全体の品質や完成度を短期間に上げたりするという効果が期待できる。
【０００４】
従来、マイコン上で動作するソフトウェアとマイコン周辺のハードウェアの両方を連動させてシミュレーションを行う、協調シミュレーションという手法には、大別して３つの手法が知られていた。
【０００５】
１つ目はハードウェアの動きをある程度抽象化してソフトウェアの一部として記述し、ソフトウェアと直接的に連結させて実行可能ファイルを作成してからそれを実行するという方法である。
【０００６】
２つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータのそれぞれにインターフェイスを設けて連動させるという方法である。つまり、２つの大きなアプリケーションが連動してシミュレーションを行うことになる。
【０００７】
そして、３つ目は、ソフトウェアのシミュレータとハードウェアのシミュレータを１つのアプリケーションとして統合した上でそれぞれの処理にインターフェイスを設けて連動させるという方法である。
【特許文献１】特開２００２−２４４８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ハードウェアの動きをある程度抽象化してソフトウェアとして記述し、ソフトウェアと連結させて実行可能ファイルを作成してからそれを実行するという方法の場合、シミュレータとしての実行速度は高速であるが、ハードウェアの動きを抽象化する工数が大きいために、余程の理由がない限り実際の業務では実施できなかったり、あるいは、ハードウェアの実際の動きとは大きく異なった抽象化をしてしまったりするという課題があった。
【０００９】
また、ソフトウェアのシミュレータとハードウェアのシミュレータの２つの別々のシミュレータを連携させてシミュレーションを行う方法では、ハードウェアの抽象化という作業がなくなるので最初の方法での課題は解決される。しかし、協調シミュレーションの中では２つのシミュレータが同時並行して動作したり、お互いの情報をやり取りすることが頻繁に発生したりするため、やり取りするたびに時間がかかってしまいシミュレーションが非常に遅くなるという課題があった。言い換えると、別々のプロセスで２つのシミュレータが実行されていることが一般的であり、プロセスを跨いで頻繁なやり取りを行うことは大きなオーバヘッドが発生してしまい、シミュレータとしての実行速度が許容範囲を超えるため実用に耐えないものとなっていた。
【００１０】
ソフトウェアのシミュレータとハードウェアのシミュレータを１つのアプリケーションに統合した上でそれぞれのシミュレーション実行部にインターフェイスを設けて連動させるという方法の場合、ハードウェアの設計がある程度終わっていればそれを実行すればよいのでハードウェアの抽象化の作業は不要であり、また、ハードウェアとソフトウェアのシミュレータ相互のやり取りについても１つのアプリケーションの中で行うので高速にやり取りすることはできるようになる。
【００１１】
しかし、一つのプロセスで行うハードウェア・ソフトウェア協調シミュレーションにおいて、ハードウェア側のシミュレーションの実現方法としてシミュレーションを実行するマシン上で直接実行可能なコンパイル済みのコードを用いる場合、ハードウェア記述をデバッグするためにハードウェアのシミュレーションを途中で停止したとき、同じアプリケーションの一部となっているソフトウェアのシミュレータも停止してしまう。これによって、ソフトウェア側のデバッグ機能が一切利用できず、ソフトウェアのデバッグに必要な情報を取得できなくなる。つまり、ハードウェアのデバッグとソフトウェアのデバッグを同時に行うことができないという課題があった。この様子を図１を用いて説明する。なお、以降では命令セットシミュレータのことをＩＳＳと略すこととする。
【００１２】
図１１のシミュレーションシステム１００はソフトウェアのシミュレータであるＩＳＳ実行部１０３とハードウェアのシミュレータである実行可能な被デバッグシステム記述部１０４が一つのシミュレーション実行プロセス１０１の中で統合されており、ＩＳＳ実行部１０３はＩＳＳ上で実行可能な被デバッグソフトウェア１０２を実行するとともに、ＩＳＳ実行部１０３の動作と連動して被デバッグシステム記述部１０４が実行される。
【００１３】
ソフトウェアをデバッグするためのソフトウェアデバッガＧＵＩ（グラフィカル・ユーザ・インターフェース）部１０５はＩＳＳ実行部１０３に対して実行開始や実行停止などの制御を行う。ハードウェアのデバッグをするためのシステム記述デバッガＧＵＩ部１０６は被デバッグシステム記述部１０４に対して実行開始や実行停止などの制御を行う。被デバッグシステム記述部１０４はシミュレーションシステム１００を実行しているプロセッサによって直接実行できるようにあらかじめコンパイルされているものである。つまり、被デバッグシステム記述部１０４はＩＳＳ実行部１０３と同じレベルで動作しており、被デバッグシステム記述部１０４を停止するということはシミュレーション実行プロセス１０１が停止するということである。これは、ＩＳＳ実行部１０３を停止することでもある。シミュレーション実行プロセス１０１が実行している間はソフトウェアデバッガＧＵＩ部１０５がＩＳＳ実行部１０３と自由にやり取りすることができ、ソフトウェアデバッガＧＵＩ部１０５がＩＳＳ実行部１０３の実行状況や内部状態を取得することもでき、また、ＩＳＳ実行部１０３に対してデバッグ機能などを設定することもできる。しかし、シミュレーション実行プロセス１０１が停止してしまうと、ソフトウェアデバッガＧＵＩ部１０５はＩＳＳ実行部１０３とのやり取りが全くできなくなってしまう。１０７はＩＳＳの内部情報である。
【００１４】
近年、システムの複雑化や大規模化が著しく、ソフトウェアのデバッグ工数や検証工数の増大が経営を圧迫するほどになっている。また、ソフトウェアのデバッグや検証に用いるハードウェアを必要なタイミングで入手することもますます困難となっている。
【００１５】
したがって、本発明の目的は、シミュレーション実行プロセスが停止しても、ＩＳＳ実行部の状態を取得でき、ＩＳＳ実行部に対してデバッグ機能の設定などができるようにしたシミレーションシステムを提供することである。
【課題を解決するための手段】
【００１６】
本発明はハードウェアのシミュレーションとソフトウェアのシミュレーションを一つのアプリケーションに統合し、かつ、双方のデバッグができるようにし、さらに、高速な協調シミュレーションを実現するものである。
【００１７】
本発明のシミュレーションシステムは、ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたものである。
【００１８】
本発明の別のシミュレーションシステムは、ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記被デバッグシステム記述部と前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたものである。
【００１９】
本発明の別のシミュレーションシステムは、ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な複数の被デバッグシステム記述部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記複数の被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたものである。
【００２０】
本発明の別のシミュレーションシステムは、ソフトウェアをシミュレートしかつ同じプロセス内で連携して動作する複数の命令セットシミュレータ実行部と、前記複数の命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記複数の命令セットシミュレータ実行部を操作するとともに前記複数の命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作しハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記複数の命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な共有ファイルとを備えたものである。
【００２１】
本発明の別のシミュレーションシステムは、ソフトウェアをシミュレートする命令セットシミュレータ実行部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアをシミュレートする実行可能な被デバッグシステム記述部と、前記命令セットシミュレータ実行部と同じプロセスで連携して動作しハードウェアの動作を記述したハードウェア記述の内容を実行するハードウェア記述実行部と、前記命令セットシミュレータ実行部を操作するとともに前記命令セットシミュレータ実行部から前記ソフトウェアをデバッグするのに必要な情報を取得するソフトウェアデバッガＧＵＩ部と、前記被デバッグシステム記述部を操作し前記ハードウェアをデバッグするシステム記述デバッガＧＵＩ部と、前記ハードウェア記述実行部を操作し前記ハードウェア記述をデバッグするハードウェア記述デバッガＧＵＩ部と、前記命令セットシミュレータ実行部と前記ソフトウェアデバッガＧＵＩ部の間の情報を共有し前記ソフトウェアデバッガＧＵＩ部がデバッグに必要な情報を取得可能な第１の共有ファイルと、前記ハードウェア記述実行部と前記ハードウェア記述デバッガＧＵＩ部の間の情報を共有し前記ハードウェア記述デバッガＧＵＩ部がデバッグに必要な情報を取得可能な第２の共有ファイルとを備えたものである。
【発明の効果】
【００２２】
本発明では、ＩＳＳ実行部とソフトウェアデバッガＧＵＩ部との間に共有ファイルを置き、この中にＩＳＳ実行部とソフトウェアデバッガＧＵＩ部の相互に必要な情報を蓄えることで、上記課題を解決した。したがって、シミュレーションシステムを実行しているプロセッサによって直接実行できるようにあらかじめコンパイルされている被デバッグシステム記述部のシミュレーション実行プロセスが停止したとしても、ＩＳＳ実行部の状態を取得できる。
【００２３】
本発明によって、ハードウェアとソフトウェアを協調してシミュレーションするとともに、ハードウェアもソフトウェアも同時にデバッグすることが可能となり、ハードウェアとソフトウェアの相互関係によって発生する複雑な問題を効率よく解決することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の各実施の形態を図１から図１０に基づいて説明する。
【００２５】
（実施の形態１）
本発明の第１の実施の形態は、請求項１に対応するものであり、ＩＳＳ実行部とハードウェアのシミュレータが同じプロセスで動作している場合に、ハードウェアのシミュレーションをデバッグのために一時停止しても、ソフトウェア側でもある程度のデバッグ機能を利用できるようにするものである。これにより、ハードウェアとソフトウェアの相互に関連しあうことにより生じている不具合を効率よく発見できるようになる。
【００２６】
図１は本発明の第１の実施の形態にかかるシミュレーションシステムを示す。
【００２７】
シミュレーションシステム１００は、実行可能な被デバッグシステム記述部１０４と、ＩＳＳ実行部１０３と、システム記述デバッガＧＵＩ部１０６とソフトウェアデバッガＧＵＩ部１０５と共有ファイル２０１から構成される。
【００２８】
なお、実行可能な被デバッグシステム記述部１０４はＣ言語やＣ＋＋言語、あるいは、ＳｙｓｔｅｍＣやＳｐｅｃＣ、ＶｅｒｉｌｏｇＨＤＬなどの言語を用いてハードウェアやソフトウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。また、ＩＳＳ実行部１０３はパソコンやワークステーションなどのホストコンピュータ上で、マイコンによって実行される被デバッグソフトウェア１０２を、命令単位でマイコンと同じように実行し、マイコン内部のレジスタ、メモリのアクセスをシミュレートしたりシミュレーションに要するクロック数をカウントしたりするものである。１１０はシステム記述、１１１はコンパイラである。
【００２９】
実行可能な被デバッグシステム記述部１０４と、ＩＳＳ実行部１０３が互いに連携しあい同一プロセス１０で実行される。
【００３０】
共有ファイル２０１は、ふたつ以上のプロセスがお互いに情報を交換するために仮想メモリを共有する仕組みであり、パソコンやワークステーションのＯＳの機能である共有メモリやファイルで実現される。
【００３１】
ソフトウェアデバッガＧＵＩ部１０５は、プロセス間通信によってＩＳＳ実行部１０３を制御したりデバッグに必要な情報をＩＳＳ実行部１０３から取得したりすることで被デバッグソフトウェアの動作検証を可能にするものである。
【００３２】
システム記述デバッガＧＵＩ部１０６は、ソフトウェアデバッガＧＵＩ部１０５と同様にプロセス間通信によって実行可能な被デバッグシステム記述部１０４を制御したりデバッグに必要な情報を被デバッグシステム記述部１０４から取得したりすることでシステム記述の動作検証を可能にするものである。
【００３３】
次に、第１の実施の形態の動作について詳細に説明する。
【００３４】
図６は、ＩＳＳ実行部１０３による共有メモリ作成フローを表す。この処理は、シミュレーション実行プロセスの起動時にＩＳＳ実行部１０３が行う。図６の中の処理をＭｉｃｒｏｓｏｆｔ社製ＯＳの機能を使って具体化したＩＳＳ実行部共有メモリ作成コード例を図７のＰ１００とＰ１０１に示す。Ｐ１００の行番号Ｌ０１の構造体「struct TRegMemInfo」は共有化したメモリ領域に記録、保持するためのものである。その構造体のポインタ「ShearedRegMemInfo」がＰ１０１の行番号Ｌ１４で設定される。
【００３５】
まずＳ１０１において命令セットシミュレーションに必要な仮想的なマイコンのレジスタやメモリ情報を記録、保持するための共有ファイルを開く。Ｐ１０１の行番号Ｌ０２のコードがそれにあたる。Ｓ１０２では、開いた共有ファイルへアクセスできるようにメモリへ割当てる。Ｐ１０１の行番号Ｌ１４のコードがそれにあたる。そしてＳ１０３において共有化したメモリ領域を初期化する。Ｐ１０１の行番号Ｌ２５のコードがそれにあたる。
【００３６】
次に、ＩＳＳ実行部１０３が共有ファイル２０１に必要な情報を記録、保持するための動作を説明する。
【００３７】
図８は、ＩＳＳ実行部１０３における命令実行の手順を示すものである。命令を実行する前にあらかじめＩＳＳ上で実行可能な被デバッグソフトウェア１０２を読み込み、共有ファイル２０１の中の仮想的なメモリへ書き込んでおく。Ｓ２０１で命令実行処理を行ない、Ｓ２０２で命令実行の終了条件をチェックし、条件が満たされていれば命令実行のループを終了する。Ｓ２０３において命令セットシミュレーション時に実行する命令を被デバッグソフトウェア１０２から取り込む。Ｓ２０４において取り込んだ命令を解析し、命令の種類やその命令の実行で使用する仮想的なマイコンのメモリアドレスや仮想的なマイコンのレジスタの種類などを特定する。命令の種類がデータの読み込みを必要とする場合、Ｓ２０５で仮想的なメモリや仮想的なレジスタからデータを読み込む。このとき、共有ファイル２０１の中に割当てられた仮想的なメモリやレジスタから読み込む。読み出したデータに対して演算が必要ならばＳ２０６で演算を行う。その後でデータの保存が必要ならば、Ｓ２０７で仮想的なメモリやレジスタへデータを書き込む。このとき、共有ファイル２０１の中に割当てられた仮想的なメモリやレジスタへ書き込む。Ｓ２０８でひとつの命令でどれだけのシミュレーション上の時間が経過したかを算出する。これらの動作を繰り返して命令を実行する。
【００３８】
このように、ＩＳＳ実行部１０３が実行に必要な情報を共有ファイル２０１へ置くことにより、別プロセスで動作しているソフトウェアデバッガＧＵＩ部１０５からデバッグに必要な情報を任意のタイミングで取得することができ、たとえシミュレーション実行プロセス１０１が停止していても可能となる。
【００３９】
図９にソフトウェアデバッガＧＵＩ部１０５で共有ファイル２０１を開きデータを取得する際のコード例を示す。
【００４０】
ＩＳＳ実行部１０３やソフトウェアデバッガＧＵＩ部１０５が共有ファイル２０１の同じ箇所にライトアクセスする可能性があるので、アクセスする際にはＯＳのセマフォ機能を使ったり共有ファイル２０１内のメモリにフラグを設けたりして排他制御をすると良い。また、一度に大きなサイズの共有ファイル２０１を設けるとＯＳによってはパフォーマンスが劣化するため、適切なサイズの複数の共有ファイルに分割することも有効である。
【００４１】
本実施の形態では、共有ファイル２０１の上に仮想的なメモリとレジスタを設ける例を示したが、それ以外にも、ＩＳＳ実行部１０３で設定されるデバッグ機能に関する情報を共有ファイル２０１に持たせることで、シミュレーション実行プロセス１０１が停止してもデバッグ機能の設定や参照ができるようになる。
【００４２】
（実施の形態２）
図２は本発明の請求項２に対応する第２の実施の形態にかかるシミュレーションシステムを示す。ＩＳＳ実行部１０３に必要な情報および実行可能な被デバッグシステム記述部１０４が使用するデータを共有ファイル３０１に記録することで、実行可能な被デバッグシステム記述部１０４をデバッグするためにシミュレーション実行プロセス１０１を停止する場合においてもソフトウェアデバッガＧＵＩ部１０５はデバッグに必要な情報を共有ファイル３０１から取得でき、かつ、実行可能な被デバッグシステム記述１０４が使用するデータをも取得するができることを特徴とするシミュレーションシステム１００である。ＩＳＳ実行部１０３と被デバッグシステム記述部１０４が共有すべきデータがあり、かつ、シミュレーション実行プロセス１０１が停止したときに、ソフトウェアデバッガＧＵＩ部１０５が参照できたほうがデバッグ効率が高まる場合、たとえば、マイコンのアドレス空間に配置されたシステムＬＳＩのレジスタの情報などがある場合は、デバッグ効率が高まり有効となる。
【００４３】
共有ファイル３０１は、ふたつ以上のプロセスがお互いに情報を交換するために仮想メモリを共有する仕組みであり、パソコンやワークステーションのＯＳの機能である共有メモリやファイルで実現される。
【００４４】
ソフトウェアデバッガＧＵＩ部１０５は第１の実施の形態と同様に、プロセス間通信によってＩＳＳ実行部１０３を制御しデバッグに必要な情報を取得することで被デバッグソフトウェア１０２の動作検証を可能にするものである。
【００４５】
システム記述デバッガＧＵＩ部１０６も第１の実施の形態と同様で、ソフトウェアデバッガＧＵＩ部１０５と同様にプロセス間通信によって実行可能な被デバッグシステム記述部１０４を制御しデバッグに必要な情報を取得することでシステム記述の動作検証を可能にするものである。
【００４６】
共有ファイル３０１の作成手順、ＩＳＳ実行部１０３や実行可能な被デバッグシステム記述部１０４が共有ファイル３０１に必要な情報を記録、保持する手順およびソフトウェアデバッガＧＵＩ部１０５が共有ファイル３０１から情報を取得する手順については、第１の実施の形態で説明した動作と同様である。
【００４７】
（実施の形態３）
図３は本発明の請求項３に対応する第３の実施の形態にかかるシミュレーションシステムを示す。第３の実施の形態は、実行可能な被デバッグシステム記述部１０４、４０１が複数のモジュールで構成されている場合において、いずれかのシステム記述デバッガＧＵＩ部１０６、６０１によりデバッグするためにシミュレーション実行プロセス１０１を停止する場合においても、ソフトウェアデバッガＧＵＩ部１０５が必要な情報を共有ファイル２０１から取得することが可能とするものである。
【００４８】
ＩＳＳ実行部１０３、ＩＳＳ上で実行可能な被デバッグソフトウェア１０２、共有ファイル２０１およびソフトウェアデバッガＧＵＩ部１０５は、第１の実施の形態と同じである。実行可能な被デバッグシステム記述部Ａ１０４および実行可能な被デバッグシステム記述部Ｂ４０１は第１の実施の形態と同様にＣ言語やＣ＋＋言語、あるいは、ＳｙｓｔｅｍＣやＳｐｅｃＣ、ＶｅｒｉｌｏｇＨＤＬなどの言語を用いてハードウェアやソフトウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものであるが、ダイナミックリンクライブラリのような形態でコンポーネント化されている点が異なる。
【００４９】
実行可能な被デバッグシステム記述部Ａ１０４は、システム記述デバッガＧＵＩ部Ａ１０６により、実行可能な被デバッグシステム記述Ｂ４０１は、システムデバッガＧＵＩ部Ｂ４０２により、それぞれプロセス間通信で制御されデバッグに必要な情報を取得することでシステム記述の動作検証を可能にするものである。
【００５０】
実行可能な被デバッグシステム記述部Ａ１０４と実行可能な被デバッグシステム記述部Ｂ４０１とＩＳＳ実行部１０３とは連携しあい同一プロセスで実行される。
【００５１】
次に、第３の実施の形態の動作について説明する。
【００５２】
共有ファイル２０１の作成手順、ＩＳＳ実行部１０３が共有ファイル２０１に必要な情報を記録、保持する手順およびソフトウェアデバッガＧＵＩ部１０５が共有ファイル２０１から情報を取得する手順については、第１の実施の形態で説明した動作と同様である。
【００５３】
共有ファイル２０１へのアクセスはファイルを共有する他方のプロセスを意識せずに行うことが可能である。そのため、実行可能な被デバッグシステム記述部Ａ１０４をデバッグするためにシステム記述デバッガＧＵＩ部Ａ１０６により、もしくは、実行可能な被デバッグシステム記述部Ｂ４０１をデバッグするためにシステム記述デバッガＧＵＩ部Ｂ４０２により、シミュレーション実行プロセス１０１を停止することがあっても、ソフトウェアデバッガＧＵＩ部１０５は、デバッグに必要な情報を取得できる。
【００５４】
以上のように、このシミュレーションシステム１００によれば、コンポーネント化された複数の実行可能な被デバッグシステム記述部１０４、４０１をデバッグするためにシミュレーション実行プロセスを停止する場合においてもソフトウェアデバッガＧＵＩ部１０５はデバッグに必要な情報を共有ファイル２０１から取得することができ、効率よく被デバッグシステム記述や被デバッグソフトウェアをデバッグすることが可能となる。
【００５５】
（実施の形態４）
図５は本発明の請求項４に対応する第４の実施の形態にかかるシミュレーションシステムを示す。第４の実施の形態は２つ以上の例えばＩＳＳ実行部１０３、５０２を用いて実行可能な被デバッグシステム記述部１０４が連携しながら動作する場合において、２つ以上のＩＳＳの情報を各々のソフトウェアデバッグ用共有ファイル２０１、５０３に記録することで、実行可能な被デバッグシステム記述部１０４をデバッグするためにシミュレーション実行プロセス１０１を停止する場合においても、ソフトウェアデバッガＧＵＩ部１０４、５０４はデバッグに必要な情報を共有ファイルから取得でき、かつ、実行可能な被デバッグシステム記述部１０４が使用するデータを取得することができることを特徴とするシミュレーションシステムである。これにより、複数のＩＳＳ実行部１０３、５０２が存在するシミュレーションシステム１００でも各々のＩＳＳ実行部１０３、５０２が持つ情報を取得することで、デバッグに必要な情報の取得範囲を広めることができ、デバッグの効率を高めてシステム開発期間が短縮できる。
【００５６】
図５のシミュレーションシステム１００は、実行可能な被デバッグシステム記述部１０４と、ＩＳＳ実行部Ａ１０３およびＩＳＳ実行部Ｂ５０２と、ＩＳＳ上で実行可能な被デバッグソフトウェアＡ１０２および被デバッグソフトウェアＢ５０１と、システム記述デバッガＧＵＩ部１０６とソフトウェアデバッガＧＵＩ部Ａ１０５およびソフトウェアデバッガＧＵＩ部Ｂ５０４と共有ファイルＡ２０１および共有ファイルＢ５０３から構成される。
【００５７】
なお、実行可能な被デバッグシステム記述部１０４は第１の実施の形態と同様にＣ言語やＣ＋＋言語、あるいは、ＳｙｓｔｅｍＣやＳｐｅｃＣ、ＶｅｒｉｌｏｇＨＤＬなどの言語を用いてハードウェアやソフトウェアの動作を記述したソースコードをパソコンやワークステーションなどのホストコンピュータ上で実行できるようにコンパイルしたものである。
【００５８】
また、ＩＳＳ実行部Ａ１０３およびＩＳＳ実行部Ｂ５０２も第１の実施の形態で述べたＩＳＳ実行部１０３と同等のもので、パソコンやワークステーションなどのホストコンピュータ上でマイコンによって実行される被デバッグソフトウェアＡ１０２や被デバッグソフトウェアＢ５０１を、命令単位でマイコンと同じように実行し、マイコン内部のレジスタ、メモリのアクセスをシミュレートしたり、シミュレーションに要するクロック数をカウントしたりするものである。
【００５９】
実行可能な被デバッグシステム記述部１０４と、ＩＳＳ実行部Ａ１０３およびＩＳＳ実行部Ｂ５０２は互いに連携しあいながらひとつのプロセス１０１で実行される。
【００６０】
共有ファイルＡ２０１および共有ファイルＢ５０３は、第１の実施の形態の共有ファイル２０１と同様に、ふたつ以上のプロセスがお互いに情報を交換するために仮想メモリを共有する仕組みであり、共有メモリやファイルで実現される。
【００６１】
ソフトウェアデバッガＧＵＩ部Ａ１０５およびソフトウェアデバッガＧＵＩ部Ｂ５０４は第１の実施の形態のときと同様に、プロセス間通信によってＩＳＳ実行部Ａ１０３やＩＳＳ実行部Ｂ５０２を制御し、デバッグに必要な情報を取得することで被デバッグソフトウェアＡ１０２や被デバッグソフトウェアＢ５０１の動作検証を可能にするものである。
【００６２】
システム記述デバッガＧＵＩ部１０６も第１の実施の形態のときと同様で、ソフトウェアデバッガＧＵＩ部Ａ１０５やソフトウェアデバッガＧＵＩ部Ｂ５０４と同様にプロセス間通信によって実行可能な被デバッグシステム記述部１０４を制御することでシステム記述の動作検証を可能にするものである。
【００６３】
以上のように、第４の実施の形態のシミュレーションシステム１００によれば、実行可能な被デバッグシステム記述部１０４をデバッグするためにシミュレーション実行プロセス１０１を停止する場合においても複数のソフトウェアデバッガＧＵＩ部１０５、５０４はデバッグに必要な情報を共有ファイルを経由して取得したり設定したりすることができる。
【００６４】
（実施の形態５）
図５は本発明の請求項５に対応する第５の実施の形態にかかるシミュレーションシステムを示す。第５の実施の形態は、第１の実施の形態の構成に加え、ハードウェア記述実行部６０２も連携するものであり、被デバッグソフトウェア１０２、被デバッグシステム記述部１０４、被デバッグハードウェア記述６０１のシミュレーションを可能とするシミュレーションシステム１００である。ここで、被デバッグハードウェア記述６０１とはＣ言語やＣ＋＋言語、あるいは、ＳｙｓｔｅｍＣやＳｐｅｃＣ、ＶｅｒｉｌｏｇＨＤＬなどの言語を用いてハードウェアの動作を記述したソースコードであり、ハードウェア記述実行部６０２がそれを解釈して実行するものである。ハードウェア記述実行部６０２は一般的にはインタープリタが用いられ、最初に中間言語に変換してからその中間言語を実行することが多いが、実行時に部分的にコンパイルするジャストインタイムコンパイラ方式を採用してもよく、あるいは、ハードウェア記述内容をシミュレータが実行しやすいデータに変換し、それを参照しながら実行してもよい。第１の実施の形態から第５の実施の形態の実行可能な被デバッグシステム記述部１０４はコンパイル済みであったが、第５の実施の形態の被デバッグハードウェア記述６０１はコンパイルされていないものを指す。
【００６５】
ＩＳＳ実行部１０３、ＩＳＳ実行部１０３で実行可能な被デバッグソフトウェア１０２、共有ファイルＡ２０１、ソフトウェアデバッガＧＵＩ部１０５、実行可能な被デバッグシステム記述部１０４およびシステム記述デバッガＧＵＩ部１０６は、第１の実施の形態と同じである。
【００６６】
ハードウェア記述実行部６０２は被デバッグハードウェア記述６０１を読み込んでその記述内容を実行する。
【００６７】
実行可能な被デバッグシステム記述部１０４とＩＳＳ実行部１０３およびハードウェア記述実行部６０２が連携しあい同一のプロセスで実行される。
【００６８】
共有ファイルＡ２０１および共有ファイルＢ６０３は、ふたつ以上のプロセスがお互いに情報を交換するためにファイルを共有する仕組みであり、ＯＳの機能である共有メモリや共有ファイルで実現される。共有ファイルＡ２０１は、ＩＳＳ実行部１０３上で実行可能な被デバッグソフトウェア１０２を動作検証するために必要な情報を記録、保持するために使われる。
【００６９】
共有ファイルＢ６０３は、ハードウェア記述実行部６０２上で実行される被デバッグハードウェア記述６０１を動作検証するために必要な情報を記録、保持するために使われる。
【００７０】
ハードウェア記述デバッガＧＵＩ部６０４は、ソフトウェアデバッガＧＵＩ部１０５と同様にプロセス間通信によってハードウェア記述実行部６０２を制御することで被デバッグハードウェア記述６０１の動作検証を可能にするものである。
【００７１】
共有ファイルＡ２０１の作成手順、ＩＳＳ実行部１０３が共有ファイルＡ２０１に必要な情報を記録、保持する手順、およびソフトウェアデバッガＧＵＩ部１０５が共有ファイル２０１から情報を取得する手順については、第１の実施の形態で説明した動作と同様である。
【００７２】
ハードウェア記述デバッガＧＵＩ部６０４は、共有ファイルＢ６０３から、ハードウェア記述のシミュレーション状態である信号の状態やシミュレーション時間などを取得したり設定したりする。
【００７３】
共有ファイルＡ２０１および共有ファイルＢ６０３へのアクセスはファイルを共有する他方のプロセスを意識せずに行うことが可能である。そのため、実行可能な被デバッグシステム記述部Ａ１０４をデバッグするためにシステム記述デバッガＧＵＩ部Ａ１０６によりシミュレーション実行プロセス１０１を停止することがあっても、ソフトウェアデバッガＧＵＩ部１０５やハードウェア記述デバッガＧＵＩ部６０４は、デバッグに必要な情報を取得したり設定したりすることができる。
【産業上の利用可能性】
【００７４】
本発明にかかるシミュレーションシステムは、ハードウェアとソフトウェアを協調してシミュレーションできるものであり、プロセッサを使用する各種電子機器のハードウェアやソフトウェア開発に有用である。また、プロセッサの開発やプロセッサの周辺ＬＳＩの開発においても有用である。
【図面の簡単な説明】
【００７５】
【図１】本発明の第１の実施の形態を説明するシミュレーションシステムのブロック図である。
【図２】本発明の第２の実施の形態を説明するシミュレーションシステムのブロック図である。
【図３】本発明の第３の実施の形態を説明するシミュレーションシステムのブロック図である。
【図４】本発明の第４の実施の形態を説明するシミュレーションシステムのブロック図である。
【図５】本発明の第５の実施の形態を説明するシミュレーションシステムのブロック図である。
【図６】ISS実行部での共有メモリ作成フロー図である。
【図７】ISS実行部での共有メモリ作成のコード例の図である。
【図８】ISS実行部での命令実行フロー図である。
【図９】ソフトウェアデバッガGUI部でのデータ取得のコード例の図である。
【図１０】ハードウェア記述実行部の記述実行フロー図である。
【図１１】シミュレーションシステムの従来例である。
【符号の説明】
【００７６】
１０１  シミュレーションシステム
１０２  ＩＳＳ上で実行可能な被デバッグソフトウェア
１０３  ＩＳＳ実行部
１０４  実行可能な被デバッグシステム記述
１０５  ソフトウェアデバッガＧＵＩ部
１０６  システム記述デバッガＧＵＩ部
１１０  システム記述
１１１  コンパイラ
２０１  共有ファイル
６０１  被デバッグハードウェア記述
６０２  ハードウェア記述実行部
６０４  ハードウェア記述デバッガＧＵＩ部
【図１】
2005332110.tif 000003
【図２】
2005332110.tif 000004
【図３】
2005332110.tif 000005
【図４】
2005332110.tif 000006
【図５】
2005332110.tif 000007
【図６】
2005332110.tif 000008
【図７】
2005332110.tif 000009
【図８】
2005332110.tif 000010
【図９】
2005332110.tif 000011
【図１０】
2005332110.tif 000012
【図１１】
2005332110.tif 000013