(57)【要約】      （修正有）【課題】untimed記述されたハードウエア上で実行したプログラムが、実際のハードウエアでも動作保証されるようにする。【解決手段】ＣＰＵ動作モデル上で実行されるプログラムのＣＰＵコマンドを解析し（Ｓ２０５）、複数のハードウエアが並列に動作する場合の処理時間をハードウエアモデルの処理時間の最大値および最小値から予測し（Ｓ２０７）、ＣＰＵ動作モデルからプログラムへの応答の順番を、各コマンドの処理時間の予測に従って調停する（Ｓ２０９）。【選択図】図２
2006277348.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置に、時間精度のない動作記述により設計されたハードウエアモデルの動作検証を行わせる情報処理装置の制御方法であって、
前記ハードウェアモデルには、データを格納するメモリ動作モデルと、前記メモリ動作モデルへの書き込まれる所定のデータを供給する第１の動作モデルと、前記メモリ動作モデルから読み出された前記所定のデータが供給される第２の動作モデルとが含まれ、
前記制御方法は、
前記第１の動作モデルから前記メモリ動作モデルへのデータの供給と、前記第２の動作モデルへの前記メモリ動作モデルからのデータの供給とを制御する制御工程と、
前記第１の動作モデルから前記メモリ動作モデルへデータが供給される第１の速度と、前記第２の動作モデルへデータが前記メモリ動作モデルから供給される第２の速度とに基づいて、前記第２の動作モデルへの前記所定データの供給が開始される以前に前記第１の動作モデルより読み出す第１のデータ量を決定する決定工程とを備え、
前記制御工程では、全データ量から前記第１のデータ量を除いたデータ量の前記所定のデータを前記第１の動作モデルから前記メモリ動作モデルへ供給するようにデータの供給が制御され、かつ、前記全データ量の前記所定のデータを前記第２の動作モデルへ前記メモリ動作モデルから供給するようにデータの供給が制御されることを特徴とする制御方法。
【請求項２】
前記第１の速度は、前記第１の動作モデルから単位データが供給されるのに要する時間として表され、かつ、前記第２の速度は、前記第２の動作モデルへ単位データが供給されるのに要する時間として表され、
前記決定工程は、
前記第１の速度の最小値と前記第２の速度の最大値とを比較する工程と、
前記第１の速度の最小値が前記第２の速度の最大値よりも大きい場合に、前記第１のデータ量を、前記第１の動作モデルから供給されるデータの全体量と、前記第１の速度の最小値と前記第２の速度の最大値とに基づいて決定する工程と、
前記第１の速度の最小値が前記第２の速度の最大値以下の場合に、前記第１のデータ量を単位データ量よりも大きいデータ量として決定する工程と、
を備えることを特徴とする請求項１に記載の制御方法。
【請求項３】
前記第１の速度の最小値と最大値との間の任意の第１の速度を設定する第１の設定工程と、
前記第２の速度の最小値と最大値との間の任意の第２の速度を設定する第２の設定工程と、
前記第１の設定工程において設定された前記任意の第１の速度と、前記データの全体量と、前記第１のデータ量とに基づいて、前記第１の動作モデルから前記メモリ動作モデルへ前記全体量から前記第１のデータ量を除いたデータ量の前記所定データが供給されるのに要する第１の処理時間を算出する第１の算出工程と、
前記第２の設定工程において設定された前記任意の第２の速度と、前記データの全体量とに基づいて、前記第２の動作モデルへ前記メモリ動作モデルから前記所定データが供給されるのに要する第２の処理時間を算出する第２の算出工程と、
前記第１の処理時間と前記第２の処理時間とに基づいて、処理完了通知の順位を決定する順位決定工程と、
前記第１の動作モデルから前記メモリ動作モデルへの前記所定データの供給の完了と、前記第２の動作モデルへの前記メモリ動作モデルからの前記所定データの供給の完了とを、前記順位に基づいて前記制御工程に対して通知する通知工程と
を備えることを特徴とする請求項２に記載の制御方法。
【請求項４】
請求項１乃至３のいずれかに記載の制御方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項５】
請求項４に記載のコンピュータプログラムを格納したコンピュータで読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、untimed記述されたシステムＬＳＩにおけるプログラム開発環境に関するものである。
【背景技術】
【０００２】
ハードウエアモデルには、設計記述方法により段階的な抽象度が存在する。以下は一例である。
１  ビヘイビュア記述モデル：動作機能のみを記述したハードウエアモデル。直接関数を呼出すことにより、モデル間を接続する。応答時間は考慮されない。
２  トランザクション・レベル（以下、ＴＬ）記述モデル：ビヘイビュア記述モデルに対し、モデル間の接続に関しては書き込み・読み出しなど一連のトランザクション単位で行うハードウエアモデル。応答時間は考慮されない。
３  バス・サイクル・アキュリット（以下、ＢＣＡ）記述モデル：ＴＬ記述モデルに対し、トランザクションに要する応答時間を記述したハードウエアモデル。
４  レジスタ・トランスファー・レベル（以下、ＲＴＬ）記述モデル：ＢＣＡ記述モデルに対し、動作機能もレジスタ転送レベル制御で記述したハードウエアモデル。
【０００３】
上記定義では、ビヘイビュア記述モデルおよびＴＬ記述モデルは時間精度のないuntimed記述、BCA記述モデルおよびRTL記述モデルは時間精度のあるtimed記述である。プログラムからシステムＬＳＩに内蔵された複数のハードウエアモデルを同時動作させる場合、プログラムへの応答時間は時間精度のあるtimed記述で設計されたハードウエアモデルでは保証されるが、時間精度のないuntimed記述で設計されたハードウエアモデルでは保証されない。よって、untimed記述で設計されたハードウエアモデルで開発されたプログラムがハードウエアの実行時間に依存性のある場合、実際のハードウエア上での動作は保証されない。
【０００４】
また、untimed記述で設計されたシステムＬＳＩにおいて、時間精度のあるシステムＬＳＩでの動作が保証されるプログラム開発環境の構築が提案されている（特許文献１）。ＣＰＵ動作モデル上で実行されるプログラムのＣＰＵコマンドを解析し、複数のハードウエアが並列に動作する場合の処理時間を予測し、ＣＰＵ動作モデルからプログラムへの応答の順番を、各コマンドの処理時間の予測に従って調停する機構、を特徴とする。
【特許文献１】特開２００２−０７３３６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら上記の例では、各コマンドの処理時間の予測を固定値で行っており、複数のハードウエアが並列に動作する場合の処理時間を予測した上でのＣＰＵ動作モデルからプログラムへの応答の順番が変わらない。一方、ＲＴＬもしくは実際のハードウエアにおいては、デバイスの応答速度のばらつきなどの要因により、一定とは限らない。これにより、並列に動作する複数のハードウエアからの応答順番が状況により変わる場合がある。そのため、上記の例で検証された動作と異なる応答順番となる場合がある。
【０００６】
そこで、本発明は、untimed記述されたハードウエア上で実行したプログラムが、実際のハードウエアでも動作保証されるようなプログラム開発環境を構築することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するための本願発明は、情報処理装置に、時間精度のない動作記述により設計されたハードウエアモデルの動作検証を行わせる情報処理装置の制御方法であって、前記ハードウェアモデルには、データを格納するメモリ動作モデルと、前記メモリ動作モデルへの書き込まれる所定のデータを供給する第１の動作モデルと、前記メモリ動作モデルから読み出された前記所定のデータが供給される第２の動作モデルとが含まれ、前記制御方法は、前記第１の動作モデルから前記メモリ動作モデルへのデータの供給と、前記第２の動作モデルへの前記メモリ動作モデルからのデータの供給とを制御する制御工程と、前記第１の動作モデルから前記メモリ動作モデルへデータが供給される第１の速度と、前記第２の動作モデルへデータが前記メモリ動作モデルから供給される第２の速度とに基づいて、前記第２の動作モデルへの前記所定データの供給が開始される以前に前記第１の動作モデルより読み出す第１のデータ量を決定する決定工程とを備え、前記制御工程では、全データ量から前記第１のデータ量を除いたデータ量の前記所定のデータを前記第１の動作モデルから前記メモリ動作モデルへ供給するようにデータの供給が制御され、かつ、前記全データ量の前記所定のデータを前記第２の動作モデルへ前記メモリ動作モデルから供給するようにデータの供給が制御されることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、untimed記述されたハードウエア上で実行したプログラムが、実際のハードウエアでも動作保証されるようなプログラム開発環境を構築することができる。
【発明を実施するための最良の形態】
【０００９】
以下、添付する図面を参照して、本発明の実施形態を説明する。
【００１０】
図１は本発明の実施形態に対応するハードウェアモデルを示す図であり、各ハードウェアモデルが実現する機能は、対応するソフトウェアを演算処理装置としてのＣＰＵが実行することにより仮想的に実現される。図１に示すハードウェアモデルを利用して検証を行うための実際のハードウェアには、図４に示すような汎用のコンピュータなどの情報処理装置などが該当する。
【００１１】
まず、図１において、１０１はシステムＬＳＩの動作モデル、１０２はＣＰＵの動作モデル、１０３はＣＰＵ動作モデル１０２上で実行されるプログラム、１０４および１０５はプログラム１０３で使用されるサブルーチン・プログラム、１０６はプログラム１０３のＣＰＵコマンドを解析して応答の順番を調停する応答順番調停インターフェース、１０７はＣＰＵコマンドをＣＰＵ動作モデル１０２上で実行してＣＰＵ動作モデル１０２で受け付けられた割込みもプログラムに通知するためのＣＰＵインターフェース、１０８はＣＰＵ動作モデル１０２に論理的に接続されるＣＰＵバスである。
【００１２】
また、１０９はＣＰＵバス１０８に論理的に接続されるuntimed記述のメモリ制御ハードウエアモデル（以下、メモリコントローラ）、１１０はＣＰＵバス１０８に論理的に接続されるuntimed記述の割り込み制御ハードウエアモデル（以下、割り込みコントローラ）、１１１はＣＰＵバス１０８に論理的に接続されるuntimed記述のＤＭＡ制御ハードウエアモデル（以下、ＤＭＡコントローラ）、１１２はＤＭＡコントローラ１１１に論理的に接続されるuntimed記述のＵＳＢデバイス制御ハードウエアモデル（以下、ＵＳＢデバイスコントローラ）である。
【００１３】
また、１１３はＤＭＡコントローラ１１１に論理的に接続されるuntimed記述のＵＳＢホスト制御ハードウエアモデル（以下、ＵＳＢホストコントローラ）、１１４はメモリコントローラ１０９により読書きされる検証用メモリ動作モデル、１１５はＵＳＢデバイスコントローラ１１２に論理的に接続される検証用ＵＳＢホスト動作モデル、１１６はＵＳＢホストコントローラ１１３に論理的に接続される検証用ＵＳＢデバイス動作モデル、１１７は応答順番調停インターフェース１０６で使用されるハードウエア仕様のデータベースである。
【００１４】
本実施形態では、untimed記述のハードウエアモデルはTL記述とする。プログラム１０３に記述されたＣＰＵコマンドは、応答順番調停インターフェース１０６に渡され、並行同時動作するハードウエアモデルがない場合は、ＣＰＵインターフェース１０７を介してＣＰＵ動作モデル１０２に渡される。
【００１５】
例えばメモリ動作モデル１１４上のアドレスＡ番地にデータＤを書き込むＣＰＵコマンドが発行された場合、ＣＰＵ動作モデル１０２はＣＰＵバス１０８を介してメモリコントローラ１０９にメモリ動作モデル１１４上のアドレスＡ番地へのデータＤを書き込み要求を行う。要求を受けたメモリコントローラ１０９はメモリ動作モデル１１４にアクセスし、データを書き込み、ＣＰＵ動作モデル１０２には書き込み完了を通知する。するとＣＰＵ動作モデル１０２は、ＣＰＵインターフェース１０７を介して、メモリ動作モデル１１４への書き込み要求を行ったソフトウエア１０３に書き込み完了を通知する。
【００１６】
このようにプログラム１０３からＣＰＵ動作モデル１０２を使用することで、システムＬＳＩ１０１内のハードウエアモデルの制御が可能となる。
【００１７】
次に、プログラム１０３が複数のハードウエアモデルを並行動作させる場合について述べる。１０４は、ＵＳＢホスト動作モデル１１５から送信されるデータを、ＤＭＡコントローラ１１１を使用して、メモリ動作モデル１１４に書き込むサブルーチン・プログラム（以下、ＵＳＢ受信ルーチン）とする。また１０５は、メモリ動作モデル１１４のデータを読み出して、ＤＭＡコントローラ１１１を使用して、ＵＳＢデバイス動作モデル１１６に送信するサブルーチン（以下、ＵＳＢ送信ルーチン）とする。
【００１８】
ここで、１０３は、ＵＳＢホスト動作モデル１１５から送信要求（所定のデータをＵＳＢデバイスモデル１１６へ送信する要求）が発生すると、ＵＳＢ受信ルーチン１０４を起動し、所定のデータの一部をメモリ動作モデル１１４に書き込む処理を行う。当該データの一部がメモリ動作モデル１１４に書き込まれた後、ＵＳＢ送信ルーチン１０５を並行動作させることで、ＵＳＢホスト動作モデル１１５から送信されるデータを、ＵＳＢデバイス動作モデル１１６に転送するプログラムとする。
【００１９】
このとき、プログラム１０３は、まずＵＳＢデバイスコントローラ１１２の割込み待ちを行う。ＵＳＢホスト動作モデル１１５からＵＳＢデバイスコントローラ１１２に対し送信要求が行われると、ＵＳＢデバイスコントローラ１１２から割込みコントローラ１１０、ＣＰＵ動作モデル１０２を介してプログラム１０３に割込みが通知される。割込みを受け付けたプログラム１０３は、所定の転送先アドレスＡ番地とＤＭＡ転送長Ｌワードを指定して、ＵＳＢ受信ルーチン１０４を起動する。起動されたＵＳＢ受信ルーチン１０４は、ＤＭＡコントローラ１１１に対し転送先アドレスＡ番地とＤＭＡ転送長Ｌワードを指定してＤＭＡを起動し、ＵＳＢデバイスコントローラ１１２にデータ転送開始要求を行う。
【００２０】
これにより、ＵＳＢホスト動作モデル１１５から送信されるデータのうち転送長Ｌワード分のデータが、ＵＳＢデバイスコントローラ１１２およびＤＭＡコントローラ１１１を介して、メモリ動作モデル１１４にアドレスＡから書き込まれる。ＤＭＡ転送長Ｌワード分のデータ転送が完了すると、ＤＭＡコントローラ１１１から割込みコントローラ１１０、ＣＰＵ動作モデル１０２を介してプログラム１０４にＤＭＡ完了割込みが通知され、プログラム１０３に知らされる。
【００２１】
これに対してプログラム１０３は、転送先アドレス（Ａ＋Ｌ）番地とＤＭＡ転送長に残りの全データ転送長（Ｌａ−Ｌ）ワードを指定してＵＳＢ受信ルーチン１０４を再度起動すると同時に、転送元アドレスＡ番地とＤＭＡ転送長に全データの転送長Ｌａワードを指定してＵＳＢ送信ルーチン１０５を起動する。ＵＳＢ受信ルーチン１０４は転送先アドレス（Ａ＋Ｌ）番地に対し、上記と同様のＤＭＡ転送を行って、Ｌａ−Ｌ分のデータをメモリ動作モデル１１４に書き込む。
【００２２】
一方、ＵＳＢ送信ルーチン１０５は、ＤＭＡコントローラ１１１に対し転送元アドレスＡ番地とＤＭＡ転送長にすべての転送データ長Ｌａワードを指定してＤＭＡを起動し、ＵＳＢホストコントローラ１１３にデータ転送開始要求を行う。これにより、メモリ動作モデル１１４のアドレスＡ番地から読み出されるデータは、ＤＭＡコントローラ１１１およびＵＳＢホストコントローラ１１３を介し、ＵＳＢデバイス動作モデル１１６に送信されることになる。
【００２３】
サブルーチン１０４、１０５ともに、全データのＤＭＡ転送が完了すると、ＤＭＡコントローラ１１１から割込みコントローラ１１０、ＣＰＵ動作モデル１０２を介してＤＭＡ完了割込みが通知され、プログラム１０３に知らされる。これにより、ＵＳＢホスト動作モデル１１５から送信される全データが、ＵＳＢデバイス動作モデル１１６により受信されることとなる。
【００２４】
このプログラム１０３を実際のハードウエア上で実行した場合、最初のＵＳＢ受信ルーチン１０４実行時のＤＭＡ転送長である「Ｌワード」の値が小さいほど性能の高いプログラムとなる。というのも、ＵＳＢ送信ルーチン１０５を起動するまでの時間が早まるため、全体のデータ転送完了時間が短くなるからである。しかしＵＳＢデバイス動作モデル１１６へのデータ送信速度が、ＵＳＢホスト動作モデル１１５からのデータ受信速度よりも早い場合、ＤＭＡ転送長Ｌワードが短すぎると、ＵＳＢホスト動作モデル１１５からの送信データがメモリ動作モデル１１４上に書き込まれるより以前のデータがＵＳＢデバイス動作モデル１１６に誤って送信されることとなり、エラーとなる。１０９〜１１３のハードウエアモデルは時間精度のないuntimed記述で設計されているため、プログラム１０３における上記Ｌの値の確からしさを確認することはできない。
【００２５】
そこで本実施形態に対応する本発明では、プログラム１０３において、メモリ動作モデル１１４に対する書込速度と、メモリ動作モデル１１４からの読出速度に基づいて、ＵＳＢホスト動作モデル１１５からの送信データがメモリ動作モデル１１４上に書き込まれるより以前のデータがＵＳＢデバイス動作モデル１１６に誤って送信されることとならないＬの値を設定する。
【００２６】
まず、プログラム１０３はＵＳＢ受信ルーチン１０４のＤＭＡがデータ転送長が（Ｌａ−Ｌ）ワードで起動され、それと同時にＵＳＢ送信ルーチン１０５のＤＭＡがデータ転送長がＬａワードで起動されたことを検知すると、応答順番調停インターフェース１０６は、ハードウエア仕様のデータベース１１７に対し、ＵＳＢホスト動作モデル１１５からメモリ動作モデル１１４への１ワード分（単位データ当たり）のＤＭＡ転送速度Ｒｓの最小値（Ｒｓｍｉｎ）と、メモリ動作モデル１１４からＵＳＢデバイス動作モデル１１６への１ワード分（単位データ当たり）のＤＭＡ転送速度Ｒｄの最大値（Ｒｄｍａｘ）の情報を問い合わせる。
【００２７】
そして各々の転送速度における、ＵＳＢ受信ルーチン１０４の残りの全データ転送に要する時間Ｔｉ＝Ｒｓｍｉｎ（Ｌａ−Ｌ）と、ＵＳＢ送信ルーチン１０５の全データ転送に要する時間Ｔｏ＝Ｒｄｍａｘ＊Ｌａとを比較する。このときＴｉがＴｏより小さければ、ＵＳＢ送信ルーチン１０５が実行された場合でも、メモリ動作モデル１１４内にＵＳＢホスト動作モデル１１５からの送信データが書き込まれる以前に、当該データについてのメモリ動作モデル１１４からの読み出しが行われることはない。よって、アンダーラン状態を回避でき送信エラーを防止することができる。
【００２８】
ＴｉとＴｏとの大小関係は、ＵＳＢ受信ルーチン１１４とＵＳＢ送信ルーチン１１５とが並行動作する以前の、ＵＳＢ受信ルーチン１１４のみ動作する場合の受信データの長さ、即ちＬの値に依存する。従って、Ｌが極端に小さければＵＳＢデバイス動作モデル１１６への送信速度がＵＳＢホスト動作モデル１１５より受信する受信速度を上回りバッファにまだ入っていないデータを送信してしまうおそれがある。また極端にＬが大きい場合はＵＳＢデバイス１１６へのデータ転送が開始されるまでの時間が長くかかるため全体の処理時間が大きくなり、全体としての処理効率が悪化してしまう。
【００２９】
ここで、ＴｉとＴｏとの関係はＴｉ＜Ｔｏであれば良く、上記式を利用すれば、ＴｉとＴｏとの関係は、Ｒｓ（Ｌａ−Ｌ）＜Ｒｄ＊Ｌａと書き換えられる。これを解くと、Ｌ＞（Ｌａ／Ｒｓｍｉｎ）＊（Ｒｓｍｉｎ−Ｒｄｍａｘ）となる。従ってＬが、（Ｌａ／Ｒｓｍｉｎ）＊（Ｒｓｍｉｎ−Ｒｄｍａｘ）よりも大きければ、ＲｓとＲｄとの関係がどのようになろうとも、読み出しが書き込みを上回ることはない。
【００３０】
また、Ｒｓｍｉｎ＞Ｒｄｍａｘの関係が成立する場合には、Ｌは、（Ｌａ／Ｒｓｍｉｎ）＊（Ｒｓｍｉｎ−Ｒｄｍａｘ）よりも大きく設定されなければならないが、Ｒｓｍｉｎ≦Ｒｄｍａｘの関係が成立する場合には、Ｌは０より大きければよい。というのも、書込アドレスが読出アドレスよりも後ろにある場合、言い換えれば、書込アドレスをＡで、読み出しアドレスがＡ＋Ｌの場合には、Ｒｓｍｉｎ≦Ｒｄｍａｘが成立すれば、読み出しが書き込みを上回ることはあり得ないからである。
【００３１】
従って、プログラム１０３は、ＲｓｍｉｎとＲｄｍａｘとの大小関係に応じて、Ｌを設定することができる。このプログラム１０３によるＬの設定処理を図３のフローチャートを参照して説明する。
【００３２】
まず、ステップＳ３０１において、ハードウェア仕様のデータベース１１７から、ＵＳＢホスト動作モデル１１５からメモリ動作モデル１１４への１ワード分のＤＭＡ転送速度Ｒｓの最小値（Ｒｓｍｉｎ）と、メモリ動作モデル１１４からＵＳＢデバイス動作モデル１１６への１ワード分のＤＭＡ転送速度Ｒｄの最大値（Ｒｄｍａｘ）とを取得する。
【００３３】
次に、ステップＳ３０２において、Ｒｓｍｉｎと、Ｒｄｍａｘとを比較して大小関係を判定する。もし、Ｒｓｍｉｎ＞Ｒｄｍａｘであった場合には、ステップＳ３０３へ移行して、Ｌを（Ｌａ／Ｒｓｍｉｎ）＊（Ｒｓｍｉｎ−Ｒｄｍａｘ）よりも大きい値：Ｌ１に設定する。一方、Ｒｓｍｉｎ≦Ｒｄｍａｘの場合には、ステップＳ３０４へ移行して、Ｌを０よりも大きい値：Ｌ２に設定する。ここで、Ｌ２は所定値として予め与えられる値であり、例えば、１／Ｒｓｍｉｎのように設定される。
【００３４】
以上により、Ｌの値が求まり、ＵＳＢホストからＵＳＢデバイスへのエラーのない安全なもっとも高速の転送が可能となる設計を行なうことができる。
【００３５】
次に、本実施形態に対応する応答順番調停インターフェース１０６における処理を説明する。
【００３６】
本実施形態において、ハードウェアモデルは時間精度のない動作記述で設計されているので、サブルーチン１０４及び１０５を実行した場合でも、書込速度Ｒｓ及び読出速度Ｒｄは考慮されずに、割込み完了通知がプログラム１０３へ通知されることとなる。従って、書き込みをＬワード分だけ先に行う限りは、Ｌの設定内容にかかわらず、書込み処理の割込み完了通知が先になされることとなる。そこで、本実施形態では、応答順番調停インタフェース１０６を利用して、プログラム１０３への割込み完了通知を行う順番を調整する。
【００３７】
図２は、応答順番調停インタフェース１０６における、ＵＳＢ受信ルーチン１０４とＵＳＢ送信ルーチン１０５とが並行して実行される場合の処理のフローチャートである。図２において、ステップＳ２０１では、プログラム１０３からのＣＰＵコマンド有り無しの判定を行う。例えば、プログラム１０３がＵＳＢ受信ルーチン１０４のＤＭＡ起動シーケンスのＣＰＵコマンドを発行した場合、当該ＣＰＵコマンドが本ステップＳ２０１で検知される。
【００３８】
次に、ステップＳ２０２では、ステップＳ２０１において受け付けたＣＰＵコマンドをＣＰＵインターフェース１０７に発行する。続くステップＳ２０３では、ＣＰＵインターフェース１０７からの応答の有無を判定する。もし、応答がない場合（ステップＳ２０３において「ＮＯ」）は、ステップＳ２０４へ移行して、ハードウエア応答エラーをプログラム１０３に通知する。この場合、プログラム１０３による処理自体が終了される。
【００３９】
一方、応答があった場合（ステップＳ２０３で「ＹＥＳ」）は、ステップＳ２０５に移行して、ステップＳ２０１において受け付けたＣＰＵコマンドを解析し、ステップＳ２０６において割込み処理であるか否かを判定する。ここで、割込み処理でないと判定された場合（ステップＳ２０６で「ＮＯ」）は、ステップＳ２０１に戻って、次のＣＰＵコマンドの受信待ちとなる。一方、割込み処理と判定された場合には、ステップＳ２０７へ移行して、ハードウエア仕様データベース１１７からメモリ動作もである１１４への書込速度の最小値から最大値までのうち、任意の書込速度と、読出速度の最小値から最大値までのうち任意の読出速度とを取得する。また、プログラム１０３から、ＵＳＢ受信ルーチン１０４が単独で実行された際に、メモリ動作モデル１１４に書き込まれたワード数：Ｌ及び転送データ長：Ｌａを取得する。
【００４０】
ステップＳ２０８では、ステップＳ２０７において取得した情報に基づいて、ＤＭＡ転送長分の処理時間を演算する。具体的には、メモリ動作モデル１１４への書き込み時間Ｔｉ（＝Ｒｓ＊（Ｌ−Ｌａ））と、メモリ動作モデル１１４からの読み出し時間Ｔｏ（＝Ｒｄ＊Ｌ）とを算出する。続くステップＳ２０９では、算出したＴｉとＴｏとに基づいて、応答順位を決定し、ステップＳ２０１に戻る。
【００４１】
このあとプログラム１０３はＵＳＢ送信ルーチン１０４およびＵＳＢ受信ルーチン１０５の割込完了応答待ちとなるため、ステップ２０１においてプログラム１０３からのＣＰＵコマンドを受け付けることはなくなり、ステップＳ２１０に移行する。ステップＳ２１０では、割込完了応答待ちの処理があるか否かを判定する。割込完了応答待ちの処理がある場合（ステップＳ２１０で「ＹＥＳ」）には、ステップＳ２１１へ移行して、ＣＰＵインタフェース１０７より割込完了応答を受け付けたか否かを判定する。ここで、本実施形態では、ＵＳＢ送信ルーチン１０４及びＵＳＢ受信ルーチン１０５についての割込完了応答を待っている状態となっているので、ステップＳ２１１へ移行して、対応する割込完了応答を受け付けたか否かが判定される。一方、割込完了応答待ちの処理がない場合（ステップＳ２１０で「ＮＯ」）には、ステップＳ２０１に戻る。
【００４２】
ステップＳ２１１では、一定時間を超えてＣＰＵインタフェース１０７より割込完了応答を受け付けない場合（ステップＳ２１１で「ＮＯ」）には、ステップＳ２０４へ移行してハードウェア応答エラーをプログラム１０３に通知して、処理を終了する。一方、割込完了応答を受け付けた場合（ステップＳ２１１で「ＹＥＳ」）には、ステップＳ２１２に移行して、ステップＳ２０９において決定された応答順番に基づいて応答順番を調停する。ステップＳ２１３では、調停された応答順番に基づいて、プログラム１０３へ割込完了応答を通知する。その後、ステップＳ２０１に戻り、上記の処理を継続する。すべての割込みが通知されると、２０１でＣＰＵコマンドがないこと、２１０で割り込み待ちの処理がないことが確認されたうえで、プログラム終了となる。
【００４３】
以上のように、応答順番調停インタフェース１０６は、割込処理に要する時間を各サブルーチン毎に算出し、untimedで記述されたハードウェアモデル上でも、割込処理に要する時間に応じて割込完了応答をプログラム１０３へ通知することができる。よって、untimed記述で設計されたハードウエア上で実行したプログラム１０３が、timed記述で設計されたハードウエア上で実行可能であることが保証される。また状況により実行速度が異なる設計においても、本実施形態に対応する発明によれば、順番の入れ替わる可能性のある割込完了応答に対する動作保証が可能となる。
【００４４】
なお、以上の実施形態は、ハードウエア仕様データベース１１７に登録された情報を満たすtimed記述のハードウエアが実現されることを前提として説明した。
【００４５】
次に、図１に示すようなハードウェアモデルを利用して検証を行うためのハードウェアとして情報処理装置の構成例を説明する。図４は、本発明の実施形態に対応する、プログラム開発環境を実現するためのハードウェア構成の一例を示す図である。
【００４６】
図４において、４００はＣＰＵであり、ハードディスク装置（以下、ＨＤと呼ぶ）４０５に格納されているアプリケーションプログラム、オペレーティングシステム（ＯＳ）や制御プログラム等を実行し、ＲＡＭ４０２にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。
【００４７】
４０１はＲＯＭであり、内部には基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。４０２は各種データを一時記憶するためのＲＡＭであり、ＣＰＵ４００の主メモリ、ワークエリア等として機能する。
【００４８】
４０３は記録媒体へのアクセスを実現するための外部記憶ドライブであり、メディア（記録媒体）４０４に記憶されたプログラム等を本コンピュータシステムにロードすることができる。尚、メディア４０４は、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＰＣカード、ＤＶＤ、ＩＣメモリカード、ＭＯ、メモリスティック等を利用することができる。
【００４９】
４０５は外部記憶装置であり、本実施形態では大容量メモリとして機能するＨＤを用いている。ＨＤ４０５には、図１のハードウェアモデルによるプログラム開発環境を実現するためのアプリケーションプログラム、ＯＳ、制御プログラム、関連プログラム等が格納される。
【００５０】
４０６は指示入力装置であり、キーボードやポインティングデバイス（マウス等）、タッチパネル等がこれに相当する。指示入力装置４０６を用いて、ユーザは、クライアント１０１に対して、装置を制御するコマンド等を入力指示する。
【００５１】
４０７はディスプレイであり、指示入力装置４０６から入力したコマンドや、それに対するクライアント１０１の応答出力等を表示したりするものである。４０９はシステムバスであり、情報処理装置内のデータの流れを司るものである。４０８はインターフェイス（以下、Ｉ／Ｆという）であり、このＩ／Ｆ４０８を介して外部装置とのデータのやり取りを行う。
【００５２】
本実施形態では、メディア４０４から本実施形態に係るプログラム及び関連データを直接ＲＡＭ４０２にロードして実行させる例を示すが、これ以外にも、本実施形態に係るプログラムを動作させる度に、既にプログラムがインストールされているＨＤ４０５からＲＡＭ４０２にロードするようにしてもよい。また、本実施形態に係るプログラムをＲＯＭ４０１に記録しておき、これをメモリマップの一部をなすように構成し、直接ＣＰＵ４００で実行することも可能である。
【００５３】
以上説明したように、本発明によれば、untimed記述されたハードウエア上で実行されるプログラムであっても、実際のハードウエア上で動作した場合に、untimed記述に基づくエラーを回避して動作保証すること可能なプログラム開発環境を構築することができる。
【００５４】
［その他の実施形態］
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施形態に対応するプログラム開発環境の一例を示す図である。
【図２】本発明の実施形態に対応する応答順番調停インターフェース１０６における処理の一例に対応するフローチャートである。
【図３】本発明の実施形態に対応するプログラム１０３における処理の一例に対応するフローチャートである。
【図４】本発明の実施形態に対応する、プログラム開発環境を実現するためのハードウェア構成の一例を示す図である。
【図１】
2006277348.tif 000003
【図２】
2006277348.tif 000004
【図３】
2006277348.tif 000005
【図４】
2006277348.tif 000006