(57)【要約】【課題】効率的なプログラム開発が可能なシミュレーション方法及びプログラム作成方法、並びに作成されたプログラムにより動作する集積回路装置及び電子機器等を提供できる。【解決手段】シミュレーション方法は、ホストプロセッサー２１０とサブプロセッサー１００によりターゲットプログラムを実行するターゲットシステムのシミュレーション方法であって、サブプロセッサー１００の動作をエミュレーションするためのビヘイビアーモデル３４０を記憶部３３０に記憶し、実動作時においてホストプロセッサー２１０がサブプロセッサー１００のレジスターをアクセスする際に用いる関数と同一のインターフェースを有する少なくとも１つの第１の関数が記述されたターゲットプログラムを記憶部３３０に記憶し、第１の関数によってビヘイビアーモデル３４０を制御してエミュレーション処理を実行する。【選択図】図３
2011018233.tif 000002
【特許請求の範囲】
【請求項１】
ホストプロセッサーとサブプロセッサーによりターゲットプログラムを実行するターゲットシステムのシミュレーション方法であって、
前記サブプロセッサーの動作をエミュレーションするためのビヘイビアーモデルを記憶部に記憶し、
実動作時において前記ホストプロセッサーが前記サブプロセッサーのレジスターをアクセスする際に用いる関数と同一のインターフェースを有する少なくとも１つの第１の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、
前記記憶部に記憶された前記第１の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を実行することを特徴とするシミュレーション方法。
【請求項２】
請求項１において、
前記ターゲットプログラムをコンパイルする際に、コンパイラーのプリプロセッサーに切り換え指示を行うことで、
前記ターゲットプログラムに記述されている前記第１の関数をオブジェクトコードに変換する際に、実動作用のオブジェクトコードに変換するか、又はエミュレーション用のオブジェクトコードに変換するかを切り換えることを特徴とするシミュレーション方法。
【請求項３】
請求項１又は２において、
シミュレーション実行環境のメモリー空間のアドレスを実アドレスとし、前記ターゲットシステムのメモリー空間のアドレスを仮想アドレスとした場合に、
前記実アドレスと前記仮想アドレスとの間のアドレス変換のためのマッピング情報を生成し、前記第１の関数を実行する際に前記マッピング情報を用いてアドレス変換を行うことを特徴とするシミュレーション方法。
【請求項４】
請求項３において、
エミュレーション処理時において、前記サブプロセッサーのアドレスレジスターへのアドレスセット時には、前記マッピング情報に基づいて前記実アドレスから前記仮想アドレスへのアドレス変換を行い、
前記サブプロセッサーのアドレスレジスターからのアドレス読み出し時には、前記マッピング情報に基づいて前記仮想アドレスから前記実アドレスへのアドレス変換を行うことを特徴とするシミュレーション方法。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記サブプロセッサーの少なくとも１つの命令を実行する第２の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、
前記第１の関数及び前記第２の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を行うことを特徴とするシミュレーション方法。
【請求項６】
請求項５において、
前記第２の関数は、前記ターゲットプログラムにインライン形式で記述されることを特徴とするシミュレーション方法。
【請求項７】
請求項１乃至６のいずれかにおいて、
エミュレーション処理時に、前記ビヘイビアーモデルの内部状態をモニターすることを特徴とするシミュレーション方法。
【請求項８】
ホストプロセッサーとサブプロセッサーによりターゲットプログラムを実行するターゲットシステムにおける前記ターゲットプログラムの作成方法であって、
前記サブプロセッサーの動作をエミュレーションするためのビヘイビアーモデルを記憶部に記憶し、
実動作時において前記ホストプロセッサーが前記サブプロセッサーのレジスターをアクセスする際に用いる関数と同一のインターフェースを有する少なくとも１つの第１の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、
前記記憶部に記憶された前記第１の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を実行することで、前記ターゲットプログラムの動作確認を行い、
動作確認された前記ターゲットプログラムから実動作用のオブジェクトプログラムを作成することを特徴とするプログラム作成方法。
【請求項９】
請求項８に記載のプログラム作成方法により作成された前記ターゲットプログラムによって動作する集積回路装置。
【請求項１０】
請求項９に記載の集積回路装置を含む電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション方法、プログラム作成方法、集積回路装置及び電子機器等に関する。
【背景技術】
【０００２】
近年、デジタル信号処理の分野では、高速でかつ低消費電力のデータ処理装置に対する要求が高まっている。特にセンサーを搭載した携帯機器（脈拍計、デジタルカメラ等）では、センサーの出力信号をリアルタイムにかつ低消費電力で処理する必要がある。この課題に対して、積和演算などデジタル信号処理に多用される演算処理を効率的に実行するための専用プロセッサー（サブプロセッサー）が開発されている。これに伴って、このようなホストプロセッサーとサブプロセッサーとが協調してデータ処理を行うシステムで実行されるプログラム（ターゲットプログラム）の開発及びデバッグを効率的に行うことが求められている。
【０００３】
この課題に対して例えば特許文献１には、ターゲットプログラムをＰＣ（パーソナルコンピューター）等でシミュレーションする方法が開示されている。しかしながらこの手法では、デバッグ制御のために特別の実行制御手段を必要とするなどの課題があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１６３６８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の幾つかの態様によれば、効率的なプログラム開発が可能なシミュレーション方法及びプログラム作成方法、並びに作成されたプログラムにより動作する集積回路装置及び電子機器等を提供できる。
【課題を解決するための手段】
【０００６】
本発明の一態様は、ホストプロセッサーとサブプロセッサーによりターゲットプログラムを実行するターゲットシステムのシミュレーション方法であって、前記サブプロセッサーの動作をエミュレーションするためのビヘイビアーモデルを記憶部に記憶し、実動作時において前記ホストプロセッサーが前記サブプロセッサーのレジスターをアクセスする際に用いる関数と同一のインターフェースを有する少なくとも１つの第１の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、前記記憶部に記憶された前記第１の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を実行することを特徴とするシミュレーション方法に関係する。
【０００７】
本発明の一態様によれば、第１の関数によりビヘイビアーモデルを制御することで、サブプロセッサーの動作をエミュレーション（擬似的に実行）することができるから、実際のハードウェア（ターゲットシステム）を用いないで、ＰＣ（パーソナルコンピューター）などの汎用的な環境でシミュレーションを行うことができる。
【０００８】
また本発明の一態様では、前記ターゲットプログラムをコンパイルする際に、コンパイラーのプリプロセッサーに切り換え指示を行うことで、前記ターゲットプログラムに記述されている前記第１の関数をオブジェクトコードに変換する際に、実動作用のオブジェクトコードに変換するか、又はエミュレーション用のオブジェクトコードに変換するかを切り換えてもよい。
【０００９】
このようにすれば、第１の関数を含むターゲットプログラムから、プログラムの内容に変更を加えることなく、シミュレーション用のオブジェクトプログラムと実動作用のオブジェクトプログラムとを、１つのコンパイラーによって生成することができる。
【００１０】
また本発明の一態様では、シミュレーション実行環境のメモリー空間のアドレスを実アドレスとし、前記ターゲットシステムのメモリー空間のアドレスを仮想アドレスとした場合に、前記実アドレスと前記仮想アドレスとの間のアドレス変換のためのマッピング情報を生成し、前記第１の関数を実行する際に前記マッピング情報を用いてアドレス変換を行ってもよい。
【００１１】
このようにすれば、ターゲットシステムのメモリー空間がシミュレーション実行環境のメモリー空間より小さい場合であっても、マッピング情報に基づいてビヘイビアーモデルの内部と外部との間でメモリー空間上のアドレスを支障なくやり取りすることができる。
【００１２】
また本発明の一態様では、エミュレーション処理時において、前記サブプロセッサーのアドレスレジスターへのアドレスセット時には、前記マッピング情報に基づいて前記実アドレスから前記仮想アドレスへのアドレス変換を行い、前記サブプロセッサーのアドレスレジスターからのアドレス読み出し時には、前記マッピング情報に基づいて前記仮想アドレスから前記実アドレスへのアドレス変換を行ってもよい。
【００１３】
このようにすれば、エミュレーション処理時において、サブプロセッサーのアドレスレジスターのアドレスセット時及びアドレス読み出し時に、マッピング情報に基づいて必要なアドレス変換を行うことができる。この結果、ターゲットシステムのメモリー空間がシミュレーション実行環境のメモリー空間より小さい場合であっても、支障なくシミュレーションを実行できる。
【００１４】
また本発明の一態様では、前記サブプロセッサーの少なくとも１つの命令を実行する第２の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、前記第１の関数及び前記第２の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を行ってもよい。
【００１５】
このようにすれば、１つのターゲットプログラムによって、サブプロセッサーのレジスターへのアクセス及びサブプロセッサーの命令の実行を擬似的に行うことができるから、ホストプロセッサー用プログラムとサブプロセッサー用プログラムとを一体化したソースプログラムとして作成し、シミュレーションすることができる。
【００１６】
また本発明の一態様では、前記第２の関数を、前記ターゲットプログラムにインライン形式で記述してもよい。
【００１７】
このようにすれば、ターゲットプログラムの中に、必要とするサブプロセッサーの命令を必要な箇所に埋め込むことができるから、処理の流れが分かり易くなり、プログラムの作成、編集、デバッグ等が容易になる。その結果、プログラム開発を効率良く進めることができる。
【００１８】
また本発明の一態様では、エミュレーション処理時に、前記ビヘイビアーモデルの内部状態をモニターしてもよい。
【００１９】
このようにすれば、サブプロセッサーの各レジスターの値などをモニターしながらシミュレーションを実行することがきるから、ターゲットプログラムのデバッグを効率良く進めることができる。
【００２０】
本発明の他の態様は、ホストプロセッサーとサブプロセッサーによりターゲットプログラムを実行するターゲットシステムにおける前記ターゲットプログラムの作成方法であって、前記サブプロセッサーの動作をエミュレーションするためのビヘイビアーモデルを記憶部に記憶し、実動作時において前記ホストプロセッサーが前記サブプロセッサーのレジスターをアクセスする際に用いる関数と同一のインターフェースを有する少なくとも１つの第１の関数が記述された前記ターゲットプログラムを前記記憶部に記憶し、前記記憶部に記憶された前記第１の関数によって前記ビヘイビアーモデルを制御して、前記サブプロセッサーのエミュレーション処理を実行することで、前記ターゲットプログラムの動作確認を行い、動作確認された前記ターゲットプログラムから実動作用のオブジェクトプログラムを作成することを特徴とするプログラム作成方法に関係する。
【００２１】
本発明の他の態様によれば、第１の関数によりビヘイビアーモデルを制御することで、サブプロセッサーの動作をエミュレーションすることができるから、実際のハードウェア（ターゲットシステム）を用いないで、汎用的な環境でプログラムの動作確認を行い、さらに動作確認されたプログラムから実動作用のオブジェクトプログラムを効率的に作成することができる。
【００２２】
本発明の他の態様は、上記に記載のプログラム作成方法により作成された前記ターゲットプログラムによって動作する集積回路装置に関係する。
【００２３】
本発明の他の態様は、上記に記載の集積回路装置を含む電子機器に関係する。
【図面の簡単な説明】
【００２４】
【図１】集積回路装置の基本的な構成例。
【図２】集積回路装置の基本的な動作フロー。
【図３】シミュレーション方法を説明する図。
【図４】第１の関数の一例。
【図５】コンパイルする際の切り換えを説明する図。
【図６】ターゲットプログラムの一例。
【図７】アドレス変換を説明する図。
【図８】デバッグモニターのモニター動作及び表示例。
【図９】シミュレーション方法の全体のフロー。
【図１０】プログラム作成方法を説明する図。
【図１１】電子機器の一例。
【発明を実施するための形態】
【００２５】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２６】
１．集積回路装置
図１にホストプロセッサーとサブプロセッサーによりターゲットプログラムを実行する集積回路装置の基本的な構成例を示す。例えば本構成例のサブプロセッサーは、高速フーリエ変換のようなデジタル信号処理に適した命令セットを有し、ホストプロセッサーとの協調動作によりデータ処理を実行する。この集積回路装置は、後述するターゲットシステム（電子機器）に組み込まれて必要な処理を行う。ターゲットプログラムは、このターゲットシステム（電子機器）の動作を制御するためのプログラムである。
【００２７】
この集積回路装置で実行されるターゲットプログラムは、後述する本実施形態のシミュレーション方法により効率的に開発及びデバッグを行うことができる。また、このターゲットプログラムから、後述する本実施形態のプログラム作成方法により、ホストプロセッサー用プログラム及びサブプロセッサー用プログラムを作成することができる。
【００２８】
図１の集積回路装置２００は、ホストプロセッサー２１０とサブプロセッサー１００とが協調してデータ処理を行うシステムであって、サブプロセッサー１００、ホストプロセッサー２１０、バスコントローラー２２０及びメモリー２３０を含む。なお、集積回路装置２００は図１の構成に限定されず、その構成要素の一部を省略したり、他の構成要素に置き換えたり、他の構成要素を追加するなどの種々の変形実施が可能である。
【００２９】
サブプロセッサー１００（コプロセッサー）は、メモリー２３０に格納されたサブプロセッサー用プログラムから命令をフェッチし、フェッチされた命令をデコードして、ターゲットとするデータ処理を行う。サブプロセッサー用プログラムには、ターゲットとするデータ処理のための命令が記述されている。バスコントローラー２２０は、サブプロセッサー１００及びホストプロセッサー２１０に接続され、メモリー２３０と、ホストプロセッサー２１０と、サブプロセッサー１００との間のバス制御を行う。
【００３０】
図２に集積回路装置２００の基本的な動作フローを示す。以下に、図２に示すステップＡ１〜Ａ６に従って、動作フローを説明する。
【００３１】
ステップＡ１では、ホストプロセッサー２１０は、ターゲットとする信号処理のサブプロセッサー用プログラムが格納されたアドレスを、サブプロセッサー１００のプログラムカウンターにセットする。
【００３２】
ステップＡ２では、ホストプロセッサー２１０は、必要に応じて、パラメーター（データのアドレス等）をサブプロセッサー１００のアドレスレジスターにセットする。ここでパラメーターとは、具体的には、サブプロセッサー１００が処理する入力データの所在を示すアドレス及び出力データの格納先を示すアドレス等である。
【００３３】
ステップＡ３では、ホストプロセッサー２１０は、サブプロセッサーの処理を開始するコマンドを発行する。具体的には、例えばサブプロセッサー１００の制御レジスターの所定のビットに１を書き込むことで、処理を開始させてもよい。
【００３４】
ステップＡ４では、サブプロセッサー１００は自立的にターゲットとする信号処理を実行する。具体的には、ホストプロセッサー２１０により指示されたアドレス（プログラムカウンターにセットされたアドレス）から、自立的にプログラムをロードし、ターゲットとする信号処理を実行する。また、命令コードで指定されたアドレスレジスターが指し示すアドレスからデータを自立的にロード又はストアーを行う。一方、ホストプロセッサー２１０は休止状態（ホールト状態）に移行する。
【００３５】
ステップＡ５では、ホストプロセッサー２１０は、サブプロセッサー１００の処理が終了すると、サブプロセッサー１００からの割り込み信号により休止状態から復帰する。具体的には、サブプロセッサー１００が処理終了を示す命令をデコードすると、割り込み信号でホストプロセッサー２１０に通知し、同時に制御レジスターの上記ビットを０にクリアーする。
【００３６】
ステップＡ６では、ホストプロセッサー２１０は、サブプロセッサー１００からの割り込み信号をクリアーする。
【００３７】
２．シミュレーション方法
本実施形態のシミュレーション方法は、上記の集積回路装置２００（ホストプロセッサー２１０及びサブプロセッサー１００）で実行されるターゲットプログラムを、ＰＣ（パーソナルコンピューター）などの汎用的な環境でシミュレーションを行う方法である。すなわち、本実施形態のシミュレーション方法によれば、実際のハードウェア（集積回路装置）を用いないで、ＰＣ上でサブプロセッサー１００の動作をエミュレーション（擬似的に実行）することで、ターゲットプログラムの開発及びデバッグを行うことができる。
【００３８】
図３に示すように、本実施形態のシミュレーション方法では、サブプロセッサー１００の動作をエミュレーション（擬似的に実行）するためのビヘイビアーモデル３４０を記憶部３３０に記憶し、ビヘイビアーモデル３４０を制御する少なくとも１つの第１の関数が記述されたターゲットプログラムを記憶部３３０に記憶する。ビヘイビアーモデル３４０は、サブプロセッサー１００の動作をエミュレーションするための関数（第１の関数及び後述する第２の関数）を定義するファイル等を含み、これらの関数によって制御されて、サブプロセッサー１００と等価な処理を行うソフトウェアである。
【００３９】
記憶部３３０は、例えばＰＣ（パーソナルコンピューター）がエミュレーション処理を行う際の作業領域となるメモリー等により実現できる。
【００４０】
第１の関数は、実動作時においてホストプロセッサー２１０がサブプロセッサー１００のレジスターにアクセスする際に用いる関数（下位レベルＡＰＩ（Application Program Interface）関数）と同一のインターフェースを有する関数である。すなわち１つの下位レベルＡＰＩ関数に対応して同一の機能を有する１つの第１の関数が存在し、これらの２つの関数の引数は同一の並びと同一の型を有する。
【００４１】
具体的には、下位レベルＡＰＩ関数は、実動作時にホストプロセッサー２１０がサブプロセッサー１００のレジスターの書き込み又は読み出しを行ったり、サブプロセッサー１００の実行を制御するための関数である。一方、第１の関数は、シミュレーション実行環境において、すなわちＰＣ３００上で、ビヘイビアーモデル３４０に対して、擬似的にサブプロセッサー１００のレジスターの書き込み又は読み出しを行ったり、擬似的にサブプロセッサー１００の実行を制御するための関数である。すなわち、ある１つの第１の関数が実行されると、ビヘイビアーモデル３４０は、その第１の関数に対応する下位レベルＡＰＩ関数による処理と等価なエミュレーション処理を行う。
【００４２】
ターゲットプログラムに記述された第１の関数及び後述する第２の関数は、本発明の他の実施形態であるプログラムの作成方法により、図３に示すように、実動作用のプログラム（ホストプロセッサー用プログラム及びサブプロセッサー用プログラム）にコンパイルされる。具体的には、ターゲットプログラム中の第１の関数で記述された部分は、対応する下位レベルＡＰＩ関数のオブジェクトコードに変換され、また第２の関数で記述された部分は、対応するサブプロセッサー用命令のオブジェクトコードに変換される。
【００４３】
図４に、本実施形態のシミュレーション方法で用いられる第１の関数の一例を示す。例えば制御レジスターＣＴＲの書き込み及び読み出しを行う第１の関数は、それぞれFSASetCTR及びFSAGetCTRである。第１の関数FSASetCTRに対応する下位レベルＡＰＩ関数は、第１の関数と同一の関数名FSASetCTRを有し、その引数は第１の関数の引数と同一の並びと同一の型を有する。つまり、第１の関数であるFSASetCTRとそれに対応する下位レベルＡＰＩ関数とは、同一のインターフェースを有する。同様に、第１の関数FSAGetCTRについても、それに対応する下位レベルＡＰＩ関数は、同一の関数名FSAGetCTRを有し、その引数は第１の関数の引数と同一の並びと同一の型を有する。
【００４４】
図４には、上記の第１の関数以外に、プログラムカウンターＰＣ、アドレスレジスターＡ０〜Ａ２、ＺＲ、ＸＲ、ＹＲ及びループ制御レジスターＬＰＣＲに関する第１の関数が示されている。これらの関数についても、第１の関数と対応する下位レベルＡＰＩ関数とは、同一のインターフェースを有することができる。
【００４５】
なお、図４に示した第１の関数及び下位レベルＡＰＩ関数は、例として示したものであって、図４に限定されず、種々の変形実施が可能である。また、第１の関数とそれに対応する下位レベルＡＰＩ関数とが同一の関数名であることは必須ではない。すなわち第１の関数とそれに対応する下位レベルＡＰＩ関数とが同一のインターフェースを有していればよいのであって、関数名は異なっていてもよい。
【００４６】
さらに本実施形態のシミュレーション方法では、サブプロセッサー１００の少なくとも１つの命令を実行する第２の関数を、ターゲットプログラムに記述することができる。すなわち第１、第２の関数が記述されたターゲットプログラムを記憶部３３０に記憶する。この第２の関数は、サブプロセッサー１００の命令をシミュレーション実行環境で擬似的に実行するものであって、擬似的にレジスターにアクセスするための第１の関数とは区別される。この命令は、例えば算術演算命令（加算、減算、乗算、積和など）、論理演算命令（論理積、論理和）、ループ制御命令などである。
【００４７】
また、第２の関数をターゲットプログラムに記述する際に、第２の関数はインライン形式（行間形式）で記述されることが望ましい。すなわち、ターゲットプログラムに含まれるホストプロセッサー用プログラム（ソースプログラム）の行間に、サブプロセッサー１００の実行処理に必要な第２の関数を埋め込むことができる。このようにすることで、ターゲットプログラムの中に、必要とするサブプロセッサー用の命令を、必要とする箇所に記述することができるから、処理の流れが分かり易くなり、プログラムの作成、編集、デバッグ等が容易になる。さらにホストプロセッサー用プログラムとサブプロセッサー用プログラムとを一体化したソースプログラムとして作成し、シミュレーションすることができる。
【００４８】
上記の第１の関数及び第２の関数によって、ビヘイビアーモデル３４０を制御してエミュレーション処理を実行する。この処理は、ＰＣ（パーソナルコンピューター）３００で実行することができる。具体的には、例えばVisual C++等の既存のプログラム開発環境に、ビヘイビアーモデル３４０をライブラリーとして組み込むことで、容易にシミュレーション実行環境を構築することができる。
【００４９】
図５は、ターゲットプログラムをコンパイルする際の切り換えを説明する図である。本実施形態のシミュレーション方法では、ターゲットプログラムをコンパイルする際に、コンパイラーのプリプロセッサーに切り換え指示を行うことで、第１の関数のオブジェクトコードを切り換えることができる。すなわちターゲットプログラムに記述されている第１の関数をオブジェクトコードに変換する際に、実動作用のオブジェクトコードに変換するか、又はエミュレーション用のオブジェクトコードに変換するかを切り換えることができる。具体的には、図５に示すようにコンパイル時のパラメーター定義（例えばFSABHV）によって、プリプロセッサーに切り換え指示を行うことができる。このようにすれば、第１の関数を含むターゲットプログラムから、プログラムの内容に変更を加えることなく、シミュレーション用のオブジェクトプログラムと実動作用のオブジェクトプログラムとを、１つのコンパイラーによって生成することができる。なお、第２の関数についても同様であって、コンパイル時のパラメーター定義によって、実動作用のオブジェクトコードに変換するか、又はエミュレーション用のオブジェクトコードに変換するかを切り換えることができる。
【００５０】
以上説明したように、本実施形態のシミュレーション方法によれば、ＰＣ上の使い慣れた汎用のプログラム開発環境を用いて、ターゲットプログラムの開発及びデバッグができる。さらに、ホストプロセッサー用プログラムとサブプロセッサー用プログラムとを１つのソースプログラムとして記述することができるから、これら２つのプログラムを１つのプログラム開発環境で開発及びデバッグすることができる。また、ターゲットプログラムをコンパイルする際に、コンパイラーのプリプロセッサーに切り換え指示を行うことで、シミュレーション用オブジェクトプログラム及び実動作用オブジェクトプログラムのいずれか一方を選択して生成することができる。
【００５１】
図６は、第１、第２の関数を含むターゲットプログラムの一例として、ＤＭＡ（Direct Memory Access）のプログラムを示す。このプログラムは、plSrcで指定されたアドレスから、iSizeで指定されたワード数のデータを、plDstで指定されたアドレスに転送する処理を行う。なお、ターゲットプログラムは図６に示すようにＣ言語（Ｃ＋＋言語）で記述されてもよいし、またシミュレーション実行環境によっては他の言語で記述されてもよい。以下に、このプログラムについて図６により説明する。
【００５２】
最初にヘッダーファイルfsa.hを読み込む（ステップＰ１）。ここで、ヘッダーファイルfsa.hは、下位レベルＡＰＩ関数及び定数パラメーターを定義するためのものである。
【００５３】
ステップＰ２では、グローバルな配列aulDMACodeを宣言する。この配列は、シミュレーションでは実体がないが、実動作用プログラムを作成する際には、第２の関数で記述されたサブプロセッサー用プログラムがこの配列に割り当てられる。
【００５４】
ステップＰ３〜Ｐ７では、下位レベルＡＰＩ関数（第１の関数）を用いて、サブプロセッサー１００のレジスターに必要な値をセットし、サブプロセッサー１００の処理をスタートさせる。具体的には、ステップＰ３では、実行させるＤＭＡプログラムのアドレスをFSASetPCを用いてプログラムカウンターにセットする。ステップＰ４では、FSASetA0を用いて転送元アドレスplSrcをアドレスレジスターＡ０にセットする。ステップＰ５では、FSASetA1を用いて転送先アドレスplDstをアドレスレジスターＡ１にセットする。ステップＰ６では、FSASetLPCRを用いて転送ワード数iSizeをループ制御レジスターにセットする。転送ワード数をループの繰り返し回数として与えるからである。ステップＰ７では、FSASetCTRを用いて制御レジスターの所定のビットに１をセットして、サブプロセッサー１００の処理をスタートさせる。
【００５５】
ステップＰ８〜Ｐ１０では、第２の関数を用いてインライン形式で記述されたプログラムに従ってＤＭＡ処理を実行する。具体的には、ステップＰ８のループ命令LOOPxによって、ステップＰ９のデータ移動命令MOVXがループ制御レジスターで指定された回数だけ実行される。ループ処理の終了後、ステップＰ１０では、EXIT命令により処理の終了がホストプロセッサー２１０に通知される。
【００５６】
第２の関数は、例えばステップＰ８では、fsa関数の形式でfsa(pFsaReg,_LOOPx (_LP0_))と記述されている。ここで、fsa関数の引数であるpFsaRegはシミュレーション実行時に確保される共有メモリー（構造体）のポインターであり、もう一つの引数である_LOOPx (_LP0_)はサブプロセッサー１００を制御する命令（ループ命令）である。シミュレーション実行時には、この命令によってビヘイビアーモデル３４０が制御されることにより、サブプロセッサー１００のループ処理が擬似的に実行される。
【００５７】
第２の関数は、上記の例ではfsa関数の引数として、サブプロセッサー１００の命令を記述しているが、これに限定されるものではない。第２の関数として、他の形式（フォーマット）で記述してもよい。
【００５８】
最後のステップＰ１１は、サブプロセッサー１００の処理が完了するまで、ホストプロセッサー２１０を休止状態にするための関数である。
【００５９】
以上説明したように、本実施形態のシミュレーション方法によれば、第１、第２の関数を用いて、ホストプロセッサー用プログラムとサブプロセッサー用プログラムとを一体化したソースプログラムとして作成し、シミュレーションすることができる。さらに、第２の関数をインライン形式でターゲットプログラムの必要とする箇所に埋め込むことができるから、処理の流れが分かり易くなり、プログラムの作成、編集、デバッグ等が容易になる。また、サブプロセッサーの１命令が１つの組み込み関数（第２の関数）に対応するので、ＰＣ上の汎用的なプログラム開発環境のデバッグ機能を利用して、１命令ごとにブレークポイントの設定やステップ実行を行うことができる。以上の結果として、本実施形態のシミュレーション方法によれば、ターゲットプログラムの開発及びデバッグを効率的に行うことができる。
【００６０】
集積回路装置２００（広義にはターゲットシステム）のメモリー空間は、シミュレーションを実行するＰＣ（パーソナルコンピューター）３００のメモリー空間より小さい場合が多い。例えばＰＣ３００のメモリー空間は通常３２ビットのアドレスを有するが、集積回路装置２００のメモリー空間は、高々１２〜２１ビットのアドレスを有するにすぎない。ビヘイビアーモデル３４０の内部で扱うメモリー空間は、実動作時のアドレス生成をモデル化しているから、集積回路装置２００のメモリー空間と同一になっている。一方、ビヘイビアーモデル３４０の外部すなわちＰＣ３００で扱うメモリー空間は３２ビットのアドレスを持っている。したがって、ビヘイビアーモデル３４０の内部と外部との間でメモリー空間上のアドレスをやり取りする際に、アドレスの変換が必要になる。具体的には、第１の関数によってアドレスレジスターにアドレスを書き込む時、あるいは第１の関数によってアドレスレジスターからアドレスを読み出す時に、第１の関数の引数として設定されるアドレスを変換する必要がある。
【００６１】
本実施形態のシミュレーション方法では、シミュレーション実行環境（ＰＣ）のメモリー空間のアドレスを実アドレスとし、ターゲットシステム（集積回路装置２００）のメモリー空間のアドレスを仮想アドレスとした場合に、実アドレスと仮想アドレスとの間のアドレス変換のためのマッピング情報を生成し、第１の関数を実行する際にマッピング情報を用いてアドレス変換を行う。
【００６２】
具体的には、エミュレーション処理時において、サブプロセッサー１００のアドレスレジスターへのアドレスセット時には、マッピング情報に基づいて実アドレスから仮想アドレスへのアドレス変換を行う。また、サブプロセッサー１００のアドレスレジスターからのアドレス読み出し時には、マッピング情報に基づいて仮想アドレスから実アドレスへのアドレス変換を行う。
【００６３】
図７は、上記のアドレス変換を説明する図である。例えば、シミュレーション実行環境（ＰＣ）のメモリー空間のアドレス（３２ビット）を実アドレスとし、ビヘイビアーモデル３４０のメモリー空間のアドレス（１２〜２１ビット）を仮想アドレスとする。この仮想アドレスは、集積回路装置２００（広義にはターゲットシステム）のメモリー空間のアドレスと同一である。アドレス変換のためのマッピング情報を初期化の段階で生成し、第１の関数によりアドレスをセットする際に、マッピング情報に基づいて実アドレスを仮想アドレスに変換し、また第１の関数によりアドレスを読み出す際に、マッピング情報に基づいて仮想アドレスを実アドレスに変換する。
【００６４】
本実施形態のシミュレーション方法では、エミュレーション処理時に、ビヘイビアーモデル３４０の内部状態をモニターすることができる。具体的には、デバッグモニター３５０がビヘイビアーモデル３４０とプロセス間通信を行い、エミュレーション処理における内部状態を表示することができる。このプロセス間通信は、例えばビヘイビアーモデル３４０とデバッグモニター３５０とが共有可能な共有メモリー（構造体）３７０を介して行われる。
【００６５】
図８は、デバッグモニター３５０によるモニター動作及び表示例を示す。ターゲットプログラムに記述された第１、第２の関数によってビヘイビアーモデル３４０を制御してエミュレーション処理を実行する。共有メモリー（構造体）３７０は、シミュレーション実行環境においてサブプロセッサー１００の擬似的なレジスターとして機能する。デバッグモニター３５０は、共有メモリー３７０上の構造体メンバーをタイマーの動作により定期的に参照し、最新の状態を表示することができる。例えば図８に示す表示例では、各レジスターの値、最後のバスアクセスのアドレス及びデータ、エラーメッセージ等が表示されている。
【００６６】
以上説明したように、本実施形態のシミュレーション方法では、エミュレーション処理時に、ビヘイビアーモデル３４０の内部状態をモニターすることができるから、ターゲットプログラムのデバッグを効率良く行うことができる。
【００６７】
図９は、本実施形態のシミュレーション方法の全体のフローである。以下に、図９に従ってステップＢ１〜Ｂ５を説明する。
【００６８】
最初のステップＢ１では、共有メモリー（構造体）３７０の領域を確保する。次にステップＢ２では、共有メモリー３７０の初期化を行って、続いてステップＢ３では、上述したアドレス変換のためのメモリーマッピングを行う。そしてステップＢ４では、ターゲットプログラムに記述された第１、第２の関数によってビヘイビアーモデル３４０を制御してエミュレーション処理を実行する。エミュレーション処理後のステップＢ５では、共有メモリーの領域を解放して、フローが終了する。
【００６９】
３．プログラム作成方法
図１０は、本発明の他の実施形態であるプログラム作成方法を説明する図である。本実施形態のプログラム作成方法によれば、上述したシミュレーション方法により開発され、デバッグされたターゲットプログラムから、実動作用のオブジェクトプログラムを効率的に作成することができる。
【００７０】
図１０に示すように、ターゲットプログラムから実動作用のオブジェクトプログラムを作成するために、２つのフローが設けられる。第１のフローでは、コンパイラーによってオブジェクトコードに変換されて、ホストプロセッサー用オブジェクトプログラムが生成される。この場合には、ターゲットプログラム中の第２の関数で記述された部分は変換されずに空白になる。一方、第２のフローでは、プリプロセッサー、専用ツール及びアセンブラーによって、サブプロセッサー用オブジェクトプログラムが生成される。
【００７１】
具体的には、第２のフローでは、最初にプリプロセッサーによりマクロ定義（例えば#defineによるマクロ定義）を解決し、次に専用ツールにより第２の関数で記述された部分を抽出してアセンブラー記述に変換する。最後にアセンブラーによりオブジェクトコードに変換して、サブプロセッサー用オブジェクトプログラムが生成される。ここでプリプロセッサー及びコンパイラーは、標準的なものを用いることができる。また、専用ツールにより標準アセンブラー記述に変換することによって、アセンブラーについても標準的なものを用いることができる。さらにホストプロセッサー２１０のリンカーを用いて、サブプロセッサー用オブジェクトプログラムをホストプロセッサー用オブジェクトプログラムにリンクすることができる。
【００７２】
以上説明したように、本実施形態のプログラム作成方法によれば、上述したシミュレーション方法により動作確認されたターゲットプログラムから実動作用のオブジェクトプログラムを効率的に作成することができる。
【００７３】
４．電子機器
図１１は、本実施形態のプログラム作成方法により作成されたターゲットプログラムによって動作する集積回路装置を含む電子機器（ターゲットシステム）の一例を示す。図１１の電子機器４００は、センサー４１０、検出回路４２０、Ａ／Ｄ変換器４３０及び処理部４４０を含む。処理部４４０は、本実施形態の集積回路装置２００により実現される。なお、検出回路４２０やＡ／Ｄ変換器４３０を、集積回路装置２００に組み込んで、１チップ構成にしてもよい。
【００７４】
電子機器４００は、例えば脈拍計、歩数計、デジタルカメラ等である。センサー４１０は、ジャイロセンサー、加速度センサー、フォトセンサー、圧力センサー等であって、電子機器４００の用途に応じたセンサーが用いられる。検出回路４２０はセンサー４１０からの出力信号（センサー信号）を増幅し、フィルターによりノイズを除去する。Ａ／Ｄ変換器４３０は増幅された信号をデジタル信号に変換して処理部４４０へ出力する。
【００７５】
処理部４４０は、Ａ／Ｄ変換器４３０からのデジタル信号に対して必要なデジタル信号処理を実行する。また検出回路４２０のゲイン制御等を行ってもよい。ここで、処理部４４０で行われるデジタル信号処理としては、例えばフーリエ変換等の処理を想定できる。
【００７６】
センサー４１０からのセンサー信号は一般的に微少振幅の信号であるため、センサー信号から所望信号を抽出するためには、検出回路４２０は、ノイズの少ない環境で所望信号の検出動作を行う必要がある。一方、微少振幅のセンサー信号から所望信号を抽出するためには、例えば高速フーリエ変換等の処理負荷が高いデータ処理が必要になる。
【００７７】
この点、本実施形態では、微少振幅のセンサー信号から所望信号を抽出するための処理負荷が高いデータ処理を、演算処理能力が高いサブプロセッサー１００により高速に実行できる。そして、この際にホストプロセッサー２１０を休止状態にすることで、ホストプロセッサー２１０からのノイズが検出回路４２０に悪影響を及ぼすことも防止できる。
【００７８】
また、脈拍計、歩数計等の電子機器４００が、電池からの電源だけで、長時間動作するためには、無駄な電力の消費を抑える必要がある。この点、本実施形態では、サブプロセッサー１００の動作中にはホストプロセッサー２１０を休止状態にしたり、或いは逆にホストプロセッサー２１０の動作中にはサブプロセッサー１００を休止状態にすることができるため、無駄な電力の消費を抑えることができ、電池駆動の電子機器４００を長時間動作させることが可能になる。
【００７９】
なお、以上のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、シミュレーション方法、プログラム作成方法、集積回路装置及び電子機器の構成、動作も本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【００８０】
１００  サブプロセッサー、２００  集積回路装置、２１０  ホストプロセッサー、
２２０  バスコントローラー、２３０  メモリー、３００  ＰＣ、３３０  記憶部、
３４０  ビヘイビアーモデル、３５０  デバッグモニター、３７０  共有メモリー、
４００  電子機器、４１０センサー、４２０  検出回路、４３０  Ａ／Ｄ変換器、
４４０  処理部
【図１】
2011018233.tif 000003
【図２】
2011018233.tif 000004
【図３】
2011018233.tif 000005
【図４】
2011018233.tif 000006
【図５】
2011018233.tif 000007
【図６】
2011018233.tif 000008
【図７】
2011018233.tif 000009
【図８】
2011018233.tif 000010
【図９】
2011018233.tif 000011
【図１０】
2011018233.tif 000012
【図１１】
2011018233.tif 000013