(57)【要約】【課題】ハードウェアモデル／ソフトウェア協調シミュレーションにおいて、無駄なスケジューリングによるオーバーヘッドを削減して、シミュレーションにかかる処理時間の短縮化を図ること。【解決手段】ソフトウェアが実行するａｄｄ命令、ｍｕｌ命令、ｍｕｌ命令、ｌｏａｄ命令のうち、ハードウェアモデルとソフトウェアとの間で依存関係のあるデータのやり取りをおこなうｌｏａｄ命令のタイミングでスケジューリングをおこなう。これにより、シミュレーション結果に影響しない無駄なスケジューリングのオーバーヘッドを削減し、シミュレーションにかかる処理時間の短縮化を図る。【選択図】図１
2010152645.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータを、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信する受信手段、
前記受信手段によって前記読出要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定する判定手段、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信手段、
前記送信手段によって前記データが送信された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段、
として機能させることを特徴とするシミュレーション支援プログラム。
【請求項２】
前記コンピュータを、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する読出要求を受け付けたことを示す読出通知を前記アクセス先に通知する通知手段として機能させることを特徴とする請求項１に記載のシミュレーション支援プログラム。
【請求項３】
前記変更手段は、
前記判定手段によって読出待ち状態ではないと判定された場合、前記記憶手段に記憶されている一のチャネルの状態を書込待ち状態に変更することを特徴とする請求項１または２に記載のシミュレーション支援プログラム。
【請求項４】
前記コンピュータを、
前記記憶領域にデータを格納する格納手段として機能させ、
前記受信手段は、
前記協調シミュレーションの実行中に、前記一のチャネルを介して、前記アクセス元からアクセス先に対する書込要求を受信し、
前記判定手段は、
前記受信手段によって前記書込要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が書込待ち状態か否かを判定し、
前記格納手段は、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に前記データを格納し、
前記変更手段は、
前記格納手段によって前記データが格納された結果、前記記憶手段に記憶されている前記一のチャネルの状態を読出待ち状態に変更することを特徴とする請求項２または３に記載のシミュレーション支援プログラム。
【請求項５】
前記通知手段は、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する書込要求を受け付けたことを示す書込通知を前記アクセス先に通知することを特徴とする請求項４に記載のシミュレーション支援プログラム。
【請求項６】
第１および第２のシミュレーション対象の協調シミュレーションを実行するシミュレーション装置であって、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段と、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信する受信手段と、
前記受信手段によって前記読出要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定する判定手段と、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信手段と、
前記送信手段によって前記データが送信された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段と、
を備えることを特徴とするシミュレーション装置。
【請求項７】
制御手段および記憶手段を備え、第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータが、
前記制御手段により、前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信して、前記記憶手段に記憶する受信工程と、
前記制御手段により、前記受信工程によって前記読出要求が受信された場合、前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶するテーブルに記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定して、前記記憶手段に記憶する判定工程と、
前記制御手段により、前記判定工程によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信工程と、
前記制御手段により、前記送信工程によって前記データが送信された結果、前記テーブルに記憶されている前記一のチャネルの状態を初期状態に変更する変更工程と、
を実行することを特徴とするシミュレーション支援方法。
【請求項８】
ハードウェアとソフトウェアの協調検証を実行するシミュレーション装置であって、
前記ハードウェアと前記ソフトウェア間を一対一かつ片方向の接続ごとに設けられ、それぞれが対応する前記ハードウェアと前記ソフトウェアとのシミュレーションの実行を制御するために、前記ハードウェアと前記ソフトウェアのいずれか一方（以下、「書込側」）から他方（以下、「読出側」）に対する書込要求を処理する機能、前記読出側から前記書込側に対する読出要求を処理する機能、初期状態、書込待ち状態、読出待ち状態のいずれかの状態を保持する第１の変数、前記書込側と前記読出側との間で、データの伝送に使用される第２の変数、前記書込側が読出待ち状態に、または、前記読出側が書込待ち状態に遷移する場合、読出待ち状態または書込待ち状態に遷移する前記ハードウェアまたは前記ソフトウェアのシミュレーションを中断する中断処理を実行する機能を備えた複数のチャネルと、
前記チャネルからの要求に応じて、並列して動作する前記ハードウェアおよび前記ソフトウェア間の実行処理および中断処理をおこなうシミュレータ本体と、
を備えることを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、組み込みシステムのハードウェアモデルとソフトウェアプログラムとの協調シミュレーションに関し、特に、ソフトウェアプログラムの実行を高速化する技術に関する。
【背景技術】
【０００２】
ハードウェアとソフトウェアとが混在するシステムを開発する場合、ハードウェアとソフトウェアとを同時に取り扱って、システム全体のシミュレーションをおこなう。近年では、短期間で高品質のシステムを開発するために、より高速なシミュレータが求められている。特に、生産性に大きな影響を及ぼすようになったソフトウェアプログラムを高速に実行する技術が求められている。
【０００３】
一般に、ハードウェアモデルとソフトウェアの協調シミュレーションでは、命令単位でシミュレーションを実行するシミュレータ（ＩＳＳ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）が用いられている。このとき、ＩＳＳは、命令ごとに、周辺回路をシミュレートするシミュレータとスケジューリングしながらハードウェアとソフトウェアの協調シミュレーションを実行する。
【０００４】
また、ＩＳＳを用いない協調シミュレーションとして、ソフトウェアを組み込んだＣＰＵ模擬ブロックとハードウェアモデルとを並列動作させる技術が開示されている（たとえば、下記特許文献１参照。）。この技術では、ソフトウェアからハードウェアモデルへのアクセス関数内にシミュレーションの実行権を開放する記述を埋め込むことにより、上記並列動作を実現している。
【０００５】
また、ハードウェア／ソフトウェア協調設計において、処理をブロックごとに細分化し、ブロック間のデータ依存関係を示す情報に基づいて、各ブロックのスケジューリングをおこなう技術が開示されている（たとえば、下記特許文献２参照。）。これによれば、ソフトウェアでおこなうシステム処理に対して、使用する資源を抑えることができる。
【０００６】
【特許文献１】特開２００５−１８６２３号公報
【特許文献２】特開２００２−２１５７０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、ソフトウェアの処理内容に関係なくスケジューリングがおこなわれるため、シミュレーション結果に影響しない無駄なスケジューリングがおこなわれる場合がある。これでは、シミュレータ内のスケジューリング／コンテキストスイッチの回数が増加し、シミュレーション速度が低下してしまう。この結果、シミュレーションにかかる処理時間が増大し、ひいては開発期間の長期化を招くという問題がある。
【０００８】
この発明は、上述した従来技術による問題点を解消するため、ハードウェアモデル／ソフトウェア協調シミュレーションにおいて、無駄なスケジューリングによるオーバーヘッドを削減して開発期間の短縮化を図るシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法は、第１および第２のシミュレーション対象の協調シミュレーションの実行中に、前記第１および第２のシミュレーション対象間のデータの読出・書込に使用される複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信し、前記読出要求が受信された場合、前記チャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶するテーブルに記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定し、読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信し、前記データが送信された結果、前記テーブルに記憶されている前記一のチャネルの状態を初期状態に変更することを要件とする。
【００１０】
このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法によれば、第１および第２のシミュレーション対象間で依存関係のあるデータのやり取りの順序を保障することができる。
【発明の効果】
【００１１】
このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法によれば、ハードウェアモデル／ソフトウェア協調シミュレーションにおいて、無駄なスケジューリングによるオーバーヘッドを削減して開発期間の短縮化を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法の好適な実施の形態を詳細に説明する。このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法では、ＨＷ／ＳＷ協調シミュレーションにおいて、シミュレータ内のスケジューリングを特定の命令に限定しておこなうことにより、スケジューリング回数を減らしてオーバーヘッドを削減し、シミュレーションの高速化を図る。
【００１３】
（本スケジューリング方式の概要）
まず、実施の形態にかかるハードウェアモデルとソフトウェアとの協調シミュレーションにおけるスケジューリング方式の概要について説明する。図１は、スケジューリング方式の概要を示す説明図である。ここでは、ハードウェアモデル（図１中、「ＨＷ」と表記）の動作結果を、ソフトウェア（図１中、「ＳＷ」と表記）のｌｏａｄ命令で読み込むモデルを例に挙げて説明する。
【００１４】
図１中、ｔ１〜ｔ８は、スケジューリングのオーバーヘッドをあらわしている。また、図１中、□は、ソフトウェアの命令の実行時間に合わせて、ハードウェアモデルのシミュレーション時刻を進めるための時間をあらわしている。また、時間軸Ｔは、シミュレーションにかかる実際の所要時間をあらわしている。なお、この例では、ソフトウェアのａｄｄ命令、ｍｕｌ命令、ｍｕｌ命令が終了した時点で、ハードウェアモデルの動作は完了していることとする。
【００１５】
従来のスケジューリング方式（図１中上段）では、たとえば、命令（ａｄｄ命令、ｍｕｌ命令、ｍｕｌ命令）ごとに、ソフトウェアのスケジューリングがおこなわれる。具体的には、ソフトウェアの各命令が実行されたあとスケジューリングがおこなわれ、ハードウェアモデルのシミュレーション時刻が各命令の実行時間分（図１中□）だけ進められている。
【００１６】
すなわち、従来のスケジューリング方式では、各命令の処理内容に関係なく、ハードウェアモデルとソフトウェアとの協調が求められており、命令ごとにシミュレーション時刻を合わせるためのスケジューリングがおこなわれている。ところが、これらスケジューリングの中には、シミュレーション結果に影響しない無駄なスケジューリングが含まれている。
【００１７】
図１の例では、ａｄｄ命令、ｍｕｌ命令、ｍｕｌ命令は、ハードウェアモデルとの協調が求められていない命令であり、シミュレーション時刻を合わせる必要がない。したがって、ｌｏａｄ命令の実行前に、ハードウェアモデルのシミュレーション時刻を合わせるだけで十分であり、それ以外のスケジューリングはシミュレーション結果に影響しない無駄なスケジューリングである。
【００１８】
通常、シミュレータ内のスケジューリング／コンテキストスイッチの回数が増加すると、シミュレーション速度が低下してしまう。このため、無駄なスケジューリング回数が多くなるほど、スケジューリングのオーバーヘッドが増大してしまい、シミュレーションの低速化を招くという問題がある。
【００１９】
そこで、本スケジューリング方式では、ハードウェアモデルとソフトウェアとの間で依存関係のあるデータのやり取りのタイミングによってスケジューリングをおこなう。図１の例では、ソフトウェアのｌｏａｄ命令だけがハードウェアモデルとの依存関係があるため、ｌｏａｄ命令前にのみスケジューリングをおこなう。
【００２０】
すなわち、ＨＷ／ＳＷ間で依存関係のあるデータのやり取りの実行順序に着目して、その実行順序を維持するようにスケジューリングをおこなう。これにより、シミュレーション結果に影響しない無駄なスケジューリングのオーバーヘッドを削減することが可能となり、シミュレーションにかかる処理時間の短縮化を図ることができる。
【００２１】
（シミュレーション装置のハードウェア構成）
つぎに、実施の形態にかかるシミュレーション装置のハードウェア構成について説明する。図２は、シミュレーション装置のハードウェア構成を示すブロック図である。図２において、シミュレーション装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２２０によってそれぞれ接続されている。
【００２２】
ここで、ＣＰＵ２０１は、シミュレーション装置２００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２３】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御にしたがって光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２４】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２５】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２６】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２７】
スキャナ２１２は、画像を光学的に読み取り、シミュレーション装置２００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００２８】
（シミュレーションシステムのシステム構成）
つぎに、シミュレーション装置２００上に構築されるシミュレーションシステムのシステム構成について説明する。図３は、シミュレーションシステムのシステム構成図である。図３において、シミュレーションシステム３００は、シミュレーション対象３１０と、シミュレーションライブラリ３２０と、を含む構成である。
【００２９】
シミュレーション対象３１０は、ユーザプログラムＰおよびハードウェアモデルＭを有する。ここで、ユーザプログラムＰは、シミュレーション対象となるソフトウェアである。ユーザプログラムＰには、ターゲットＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）上で動作するタスクプログラムとＩＳＲ（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ）プログラムが含まれている。また、ハードウェアモデルＭは、シミュレーション対象となるハードウェアのモデルである。なお、ユーザプログラムＰおよびハードウェアモデルＭの具体例については、図３および図４を用いて後述する。
【００３０】
シミュレーションライブラリ３２０は、ＯＳモデル３２１と、ＨＷシミュレータ３２２と、チャネルＣと、を有する。ここで、ＯＳモデル３２１は、ユーザプログラムＰをスケジュールするためのＯＳのモデルである。ＯＳモデル３２１としては、たとえば、ＯＳＥＫを用いることができる。また、ＨＷシミュレータ３２２は、ハードウェアモデルＭのシミュレータである。ＨＷシミュレータ３２２には、たとえば、ＳｙｓｔｅｍＣが用いられる。
【００３１】
また、チャネルＣは、ハードウェアモデルＭとユーザプログラムＰとの間でのデータのやり取りに使用するデータパスである。このチャネルＣは、ユーザプログラムＰとハードウェアモデルＭとを１対１に接続する。また、このチャネルＣは、片方向の接続（「ユーザプログラムＰ→ハードウェアモデルＭ」または「ハードウェアモデルＭ→ユーザプログラムＰ」）ごとに設けられている。具体的には、たとえば、チャネルＣは、ユーザプログラムＰ内のタスクまたはＩＳＲと、ハードウェアモデルＭとを１対１に接続する。
【００３２】
さらに、チャネルＣは、ハードウェアモデルＭとユーザプログラムＰのいずれか一方から他方に対する書込要求を処理する機能を有する。また、チャネルＣは、ハードウェアモデルＭとユーザプログラムＰのいずれか一方から他方に対する読出要求を処理する機能を有する。また、チャネルＣは、ハードウェアモデルＭとユーザプログラムＰのいずれか一方が読出待ち状態または書込待ち状態に遷移する場合に、待ち状態に遷移する一方のシミュレーションを中断する中断処理を実行する機能を有する。以下において、本実施の形態では、複数のチャネルＣ１〜Ｃｎが存在すると仮定する。なお、チャネルＣの構成については図５を用いて説明する。
【００３３】
このシミュレーションシステム３００では、ハードウェアモデルＭ上で動作するユーザプログラムＰ（検証対象）の振る舞いを検証する。このとき、ハードウェアモデルＭとユーザプログラムＰとの間で依存関係のあるデータのやり取りをおこなう場合に、直接やり取りするのではなくチャネルＣを介しておこなう。具体的には、たとえば、ＨＷシミュレータ３２２が、チャネルＣからの要求に応じて、並列して動作するハードウェアモデルＭとユーザプログラムＰとの間の実行処理および中断処理をおこなう。
【００３４】
ここで、シミュレーションシステム３００のシステム概要を説明する。まず、シミュレーションを実行するコンピュータ（たとえば、シミュレーション装置２００）向けに、ユーザプログラムＰとハードウェアモデルＭとをコンパイルしてバイナリを生成する。このあと、バイナリとシミュレーションライブラリ３２０とをリンクして実行ファイルを生成する。そして、実行ファイルを実行して、ユーザプログラムＰとハードウェアモデルＭとをシミュレーションする。
【００３５】
（ユーザプログラムＰの具体例）
図４は、ユーザプログラムの具体例を示す説明図である。図４において、ユーザプログラムＰ１は、Ｃ言語を用いて記述されたソフトウェアプログラムである。このユーザプログラムＰ１では、ハードウェアモデルＭとのインターフェースとして、ｒｅａｄ関数およびｗｒｉｔｅ関数が使用されている。
【００３６】
具体的には、ｒｅａｄ、ｗｒｉｔｅ関数内には、ハードウェアモデルＭとのデータのやり取りに使用するチャネルＣのチャネル番号が記述されている。たとえば、ソースコード４０１のｒｅａｄ関数内には、ハードウェアモデルＭとのデータのやり取りに使用するチャネルＣ１のチャネル番号「Ｃ１」が記述されている。なお、ユーザプログラムＰ１では、ＯＳＥＫのＡＰＩをすべて呼び出すことが可能であり、振る舞いも仕様と同じものである。
【００３７】
（ハードウェアモデルＭの具体例）
つぎに、ハードウェアモデルＭの具体例について説明する。図５は、ハードウェアモデルの具体例を示す説明図である。図５において、ハードウェアモデルＭは、ＳｙｓｔｅｍＣを用いて記述されたハードウェアのモデルである。このハードウェアモデルＭでは、ユーザプログラムＰ１とのインターフェースとして、ｒｅａｄ関数およびｗｒｉｔｅ関数が使用されている。
【００３８】
具体的には、ｒｅａｄ、ｗｒｉｔｅ関数内には、ユーザプログラムＰ１とのデータのやり取りに使用するチャネルＣのチャネル番号が記述されている。たとえば、ソースコード５０１のｗｒｉｔｅ関数内には、ユーザプログラムＰ１とのデータのやり取りに使用するチャネルＣ１のチャネル番号「Ｃ１」が記述されている。
【００３９】
（チャネルＣの構成）
つぎに、チャネルＣの構成について説明する。ここでは、複数のチャネルＣ１〜Ｃｎのうち任意のチャネルＣｉを例に挙げて説明する。図６は、チャネルの構成を示す説明図である。図６において、チャネルＣｉは、インターフェースＩ／Ｆｉと、データバッファＢｉと、を含む構成である。
【００４０】
インターフェースＩ／Ｆｉは、ユーザプログラムＰやハードウェアモデルＭからの書込要求および読出要求を受け付ける機能を有する。データバッファＢｉは、チャネルＣｉに割り当てられた記憶領域であり、ユーザプログラムＰとハードウェアモデルＭとの間でデータの書き込み・読み出しをおこなう際に使用される。
【００４１】
なお、データバッファＢｉは、たとえば、図２に示したＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域によって実現される。また、チャネルＣｉは、初期状態、ｗｒｉｔｅ待ち状態およびｒｅａｄ待ち状態のいずれかの状態を有している。チャネルＣｉの状態は、たとえば、図７に示す状態テーブル７００を用いて管理されている。
【００４２】
（状態テーブルの記憶内容）
つぎに、状態テーブルの記憶内容について説明する。図７は、状態テーブルの記憶内容の一例を示す説明図である。図７において、状態テーブル７００は、チャネル番号および状態のフィールド項目を有している。各フィールド項目に情報を設定することで、各チャネルＣ１〜Ｃｎの状態がレコードとして記憶されている。
【００４３】
チャネル番号は、各チャネルＣ１〜Ｃｎを識別する識別子である。状態は、各チャネルＣ１〜Ｃｎの状態である。ここでは、状態のフィールド項目には、初期状態フラグ、ｗｒｉｔｅ待ちフラグおよびｒｅａｄ待ちフラグが設定されている。これら初期状態フラグ、ｗｒｉｔｅ待ちフラグおよびｒｅａｄ待ちフラグのうちＯＮとなっているものが、各チャネルＣ１〜Ｃｎの状態を示している。
【００４４】
なお、シミュレーション実行前の時点では、全チャネルＣ１〜Ｃｎの状態が初期状態となっている。状態テーブル７００は、たとえば、図２に示したＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されている。
【００４５】
（動作シーケンス）
つぎに、ユーザプログラムＰとハードウェアモデルＭとの動作シーケンスについて説明する。ここでは、図４に示したユーザプログラムＰ１と、図５に示したハードウェアモデルＭとを例に挙げて説明する。図８は、動作シーケンスの一例を示すシーケンス図である。なお、図８中、時間軸Ｔは、シミュレーションにかかる実際の所要時間をあらわしている。
【００４６】
（１）ハードウェアモデルＭがチャネルＣ１のデータバッファＢ１にｄａｔａを書き込む（図５中、ソースコード５０１）。これにより、ハードウェアモデルＭは、チャネルＣ１のｒｅａｄ待ち状態となる。すなわち、ハードウェアモデルＭは、ユーザプログラムＰ１がチャネルＣ１のデータバッファＢ１からｄａｔａを読み出すまでの間、つぎの処理（図５中、ソースコード５０２）を実行することなく待機することになる。
【００４７】
（２）ユーザプログラムＰ１が、チャネルＣ１からｄａｔａを読み出す（図４中、ソースコード４０１）。この結果、ハードウェアモデルＭに対するｒｅａｄ通知が発生する。これにより、チャネルＣ１のｒｅａｄ待ち状態にあったハードウェアモデルＭ１が、つぎの処理を実行可能な状態となる。
【００４８】
（３）ユーザプログラムＰ１が、チャネルＣ２にｄａｔａを書き込む（図４中、ソースコード４０２）。これにより、ユーザプログラムＰ１は、チャネルＣ２のｒｅａｄ待ち状態となる。すなわち、ユーザプログラムＰ１は、ハードウェアモデルＭがチャネルＣ２のデータバッファＢ２からｄａｔａを読み出すまでの間、つぎの処理を実行することなく待機することになる。
【００４９】
（４）ハードウェアモデルＭが、チャネルＣ２からｄａｔａを読み出す（図５中、ソースコード５０３）。この結果、ユーザプログラムＰ１に対するｒｅａｄ通知がおこなわれる。これにより、チャネルＣ２のｒｅａｄ待ち状態にあったユーザプログラムＰ１が、つぎの処理を実行可能な状態となる。
【００５０】
この動作シーケンスでは、（１）において、ユーザプログラムＰがチャネルＣ１のデータバッファＢ１からｄａｔａが読み出すまでの期間、ハードウェアモデルＭを待機させることによってスケジューリングを実現している。また、（３）において、ハードウェアモデルＭがチャネルＣ２のデータバッファＢ２からｄａｔａが読み出すまでの期間、ユーザプログラムＰ１を待機させることによってスケジューリングを実現している。
【００５１】
（シミュレーション装置の機能的構成）
つぎに、シミュレーション装置２００の機能的構成について説明する。シミュレーション装置２００は、図３に示したシミュレーションシステム３００を構築して、ハードウェアモデルＭとユーザプログラムＰとの協調シミュレーションを実行するコンピュータ装置である。
【００５２】
図９は、シミュレーション装置の機能的構成を示すブロック図である。図９において、シミュレーション装置２００は、受信部９０１と、判定部９０２と、送信部９０３と、変更部９０４と、通知部９０５と、格納部９０６と、を含む構成である。この制御部となる機能（受信部９０１〜格納部９０６）は、具体的には、たとえば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００５３】
受信部９０１は、協調シミュレーションの実行中に、チャネルＣｉ（ｉ＝１，２，…，ｎ）を介して、ハードウェアモデルＭまたはユーザプログラムＰのいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対するアクセス要求を受信する機能を有する。具体的には、たとえば、受信部９０１が、チャネルＣｉのインターフェースＩ／Ｆｉを介して、アクセス元からアクセス先に対するｒｅａｄ要求またはｗｒｉｔｅ要求を受信する。
【００５４】
また、ｒｅａｄ要求、ｗｒｉｔｅ要求には、たとえば、チャネル番号「Ｃｉ」が含まれている。これにより、データのやり取りに使用するチャネルＣｉを認識することができる。なお、受信された受信結果は、図２に示したＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００５５】
判定部９０２は、ｒｅａｄ要求が受信された場合、図７に示した状態テーブル７００に記憶されているチャネルＣｉの状態がｒｅａｄ待ち状態か否かを判定する機能を有する。具体的には、たとえば、判定部９０２が、状態テーブル７００を参照して、ｒｅａｄ要求に含まれるチャネル番号を手掛かりに、チャネルＣｉのｒｅａｄ待ち状態フラグがＯＮとなっているか否かを判定する。なお、判定された判定結果は、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００５６】
送信部９０３は、ｒｅａｄ待ち状態と判定された場合、チャネルＣｉに割り当てられたデータバッファＢｉに格納されているデータをアクセス元に送信する機能を有する。具体的には、たとえば、送信部９０３が、チャネルＣｉのインターフェースＩ／Ｆｉを介して、データバッファＢｉに格納されているデータをアクセス元に送信する。
【００５７】
変更部９０４は、データが送信された結果、状態テーブル７００に記憶されているチャネルＣｉの状態を初期状態に変更する機能を有する。具体的には、たとえば、変更部９０４が、状態テーブル７００内のチャネルＣｉのｒｅａｄ待ち状態フラグをＯＦＦにし、初期状態フラグをＯＮにする（後述の図１０中（Ａ））。
【００５８】
ここで、変更部９０４による変更処理について説明する。図１０は、変更処理の一例を示す説明図である。図１０の（Ａ）では、アクセス元にデータが送信された結果、チャネルＣｉのｒｅａｄ待ち状態フラグがＯＮからＯＦＦにセットされ、初期状態フラグがＯＦＦからＯＮにセットされている。
【００５９】
通知部９０５は、ｒｅａｄ要求が受信され、かつ、ｒｅａｄ待ち状態と判定された場合、チャネルＣｉに割り当てられたデータバッファＢｉに対するｒｅａｄ要求を受け付けたことを示すｒｅａｄ通知をアクセス先に送信する機能を有する。具体的には、たとえば、送信部９０３が、チャネルＣｉのインターフェースＩ／Ｆｉを介して、ｒｅａｄ通知をアクセス先に送信する。これにより、データバッファＢｉに格納されているデータのｒｅａｄ待ち状態にあったアクセス先が、つぎの処理を実行可能な状態になる。
【００６０】
変更部９０４は、ｒｅａｄ要求が受信され、かつ、ｒｅａｄ待ち状態ではないと判定された場合、状態テーブル７００に記憶されているチャネルＣｉの状態をｗｒｉｔｅ待ち状態に変更する機能を有する。具体的には、たとえば、変更部９０４が、状態テーブル７００内のチャネルＣｉの初期状態フラグをＯＦＦにし、ｗｒｉｔｅ待ち状態フラグをＯＮにする（図１０中（Ｂ））。
【００６１】
図１０の（Ｂ）では、ｒｅａｄ要求が受信され、かつ、ｒｅａｄ待ち状態ではないと判定された結果、チャネルＣｉの初期状態フラグがＯＮからＯＦＦにセットされ、ｗｒｉｔｅ待ち状態フラグがＯＦＦからＯＮにセットされている。これにより、アクセス元が、データバッファＢｉに対するデータのｗｒｉｔｅ待ち状態となり、つぎの処理を実行することなく待機することになる。
【００６２】
判定部９０２は、ｗｒｉｔｅ要求が受信された場合、チャネルＣｉの状態がｗｒｉｔｅ待ち状態か否かを判定する機能を有する。具体的には、たとえば、判定部９０２が、状態テーブル７００を参照して、ｗｒｉｔｅ要求に含まれるチャネル番号を手掛かりに、チャネルＣｉのｗｒｉｔｅ待ち状態フラグがＯＮとなっているか否かを判定する。
【００６３】
格納部９０６は、ｗｒｉｔｅ要求が受信され、かつ、ｗｒｉｔｅ待ち状態と判定された場合、チャネルＣｉに割り当てられたデータバッファＢｉにデータを格納する機能を有する。具体的には、たとえば、格納部９０６が、ｗｒｉｔｅ要求に含まれているデータをデータバッファＢｉに格納する。これにより、アクセス元からアクセス先に対するデータの書き込みが実現される。
【００６４】
変更部９０４は、データが格納された結果、状態テーブル７００に記憶されているチャネルＣｉの状態をｒｅａｄ待ち状態に変更する機能を有する。具体的には、たとえば、変更部９０４が、状態テーブル７００内のチャネルＣｉのｗｒｉｔｅ待ち状態をＯＦＦにし、ｒｅａｄ待ち状態フラグをＯＮにする（図１０中（Ｃ））。
【００６５】
図１０の（Ｃ）では、ｗｒｉｔｅ要求が受信され、かつ、ｗｒｉｔｅ待ち状態と判定された結果、チャネルＣｉのｗｒｉｔｅ待ち状態がＯＮからＯＦＦにセットされ、ｒｅａｄ待ち状態フラグがＯＦＦからＯＮにセットされている。これにより、アクセス元が、データバッファＢｉに格納されているデータのｒｅａｄ待ち状態となり、つぎの処理を実行することなく待機することになる。
【００６６】
通知部９０５は、ｗｒｉｔｅ要求が受信され、かつ、ｗｒｉｔｅ待ち状態と判定された場合、チャネルＣｉに割り当てられたデータバッファＢｉに対するｗｒｉｔｅ要求を受け付けたことを示すｗｒｉｔｅ通知をアクセス先に送信する機能を有する。具体的には、たとえば、通知部９０５が、チャネルＣｉのインターフェースＩ／Ｆｉを介して、ｗｒｉｔｅ通知をアクセス先に送信する。これにより、データバッファＢｉに対するデータのｗｒｉｔｅ待ち状態にあったアクセス先が、つぎの処理を実行可能な状態になる。
【００６７】
格納部９０６は、ｗｒｉｔｅ要求が受信され、かつ、ｗｒｉｔｅ待ち状態ではないと判定された場合、チャネルＣｉに割り当てられたデータバッファＢｉにデータを格納する機能を有する。具体的には、たとえば、格納部９０６が、ｗｒｉｔｅ要求に含まれているデータをデータバッファＢｉに格納する。
【００６８】
変更部９０４は、ｗｒｉｔｅ要求を受け付け、かつ、ｗｒｉｔｅ待ち状態ではないと判定された場合、状態テーブル７００に記憶されているチャネルＣｉの状態をｒｅａｄ待ち状態に変更する機能を有する。具体的には、たとえば、変更部９０４が、状態テーブル７００内のチャネルＣｉの初期状態フラグをＯＦＦにし、ｒｅａｄ待ち状態フラグをＯＮにする（図１０中（Ｄ））。
【００６９】
図１０の（Ｄ）では、ｗｒｉｔｅ要求が受信され、かつ、ｗｒｉｔｅ待ち状態ではないと判定された結果、チャネルＣｉの初期状態がＯＮからＯＦＦにセットされ、ｒｅａｄ待ち状態フラグがＯＦＦからＯＮにセットされている。これにより、アクセス元が、データバッファＢｉに格納されているデータのｒｅａｄ待ち状態となり、つぎの処理を実行することなく待機することになる。
【００７０】
なお、ハードウェアモデルＭとユーザプログラムＰ（タスク、ＩＳＲ）とは１対１に接続されているため、たとえば、ｒｅａｄ待ち状態となっているチャネルＣｉを使用したｗｒｉｔｅ要求は発生しない。また、ｗｒｉｔｅ待ち状態となっているチャネルＣｉを使用したｒｅａｄ要求は発生しない。
【００７１】
（シミュレーション装置のシミュレーション支援処理手順）
つぎに、シミュレーション装置２００のシミュレーション支援処理手順について説明する。図１１および図１２は、シミュレーション装置のシミュレーション支援処理手順の一例を示すフローチャートである。
【００７２】
図１１のフローチャートにおいて、まず、受信部９０１により、協調シミュレーションの実行中に、チャネルＣｉを介して、ハードウェアモデルＭまたはユーザプログラムＰのいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対するアクセス要求を受信したか否かを判断する（ステップＳ１１０１）。
【００７３】
ここで、アクセス要求を受信するのを待って（ステップＳ１１０１：Ｎｏ）、アクセス要求を受信した場合（ステップＳ１１０１：Ｙｅｓ）、判定部９０２により、アクセス要求がｒｅａｄ要求か否かを判断する（ステップＳ１１０２）。
【００７４】
ここで、アクセス要求がｗｒｉｔｅ要求の場合（ステップＳ１１０２：Ｎｏ）、図１２に示すステップＳ１２０１に移行する。一方、アクセス要求がｒｅａｄ要求の場合（ステップＳ１１０２：Ｙｅｓ）、判定部９０２により、状態テーブル７００に記憶されているチャネルＣｉの状態がｒｅａｄ待ち状態か否かを判定する（ステップＳ１１０３）。
【００７５】
ここで、ｒｅａｄ待ち状態と判定された場合（ステップＳ１１０３：Ｙｅｓ）、通知部９０５により、チャネルＣｉに割り当てられたデータバッファＢｉに対するｒｅａｄ要求を受け付けたことを示すｒｅａｄ通知をアクセス先に送信する（ステップＳ１１０４）。そして、送信部９０３により、チャネルＣｉに割り当てられたデータバッファＢｉに格納されているデータをアクセス元に送信する（ステップＳ１１０５）。
【００７６】
最後に、変更部９０４により、状態テーブル７００に記憶されているチャネルＣｉの状態を初期状態に変更して（ステップＳ１１０６）、本フローチャートによる一連の処理を終了する。また、ステップＳ１１０３において、ｒｅａｄ待ち状態ではないと判定された場合（ステップＳ１１０３：Ｎｏ）、状態テーブル７００に記憶されているチャネルＣｉの状態をｗｒｉｔｅ待ち状態に変更して（ステップＳ１１０７）、本フローチャートによる一連の処理を終了する。
【００７７】
図１２のフローチャートにおいて、まず、判定部９０２により、チャネルＣｉの状態がｗｒｉｔｅ待ち状態か否かを判定する（ステップＳ１２０１）。ここで、ｗｒｉｔｅ待ち状態と判定された場合（ステップＳ１２０１：Ｙｅｓ）、格納部９０６により、ｗｒｉｔｅ要求に含まれているデータを、チャネルＣｉに割り当てられたデータバッファＢｉに格納する（ステップＳ１２０２）。
【００７８】
このあと、通知部９０５により、チャネルＣｉに割り当てられたデータバッファＢｉに対するｗｒｉｔｅ要求を受け付けたことを示すｗｒｉｔｅ通知をアクセス先に送信する（ステップＳ１２０３）。最後に、変更部９０４により、状態テーブル７００に記憶されているチャネルＣｉの状態をｒｅａｄ待ち状態に変更して（ステップＳ１２０４）、本フローチャートによる一連の処理を終了する。
【００７９】
また、ステップＳ１２０１において、ｗｒｉｔｅ待ち状態ではないと判定された場合（ステップＳ１２０１：Ｎｏ）、格納部９０６により、ｗｒｉｔｅ要求に含まれているデータを、チャネルＣｉに割り当てられたデータバッファＢｉに格納する（ステップＳ１２０５）。最後に、変更部９０４により、状態テーブル７００に記憶されているチャネルＣｉの状態をｒｅａｄ待ち状態に変更して（ステップＳ１２０６）、本フローチャートによる一連の処理を終了する。
【００８０】
以上説明したように、本実施の形態によれば、ＨＷ／ＳＷ間を１対１に接続するチャネルＣ１〜Ｃｎの状態に基づいて、ＨＷ／ＳＷ間のアクセスを制御することにより、データのやり取りの順序を保障することができる。この結果、ＨＷ／ＳＷ間での依存関係のあるデータのやり取りのタイミングでのスケジューリングを実現することができる。
【００８１】
これにより、ＨＷ／ＳＷ協調シミュレーションにおける無駄なスケジューリングを排除して、スケジューリング回数を減らすことができる。この結果、スケジューラ上で実行することのオーバーヘッドが削減され、ソフトウェアの実行を高速化することができる。
【００８２】
このように、このシミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法によれば、ＨＷ／ＳＷ協調シミュレーションにおいて、無駄なスケジューリングを排除してスケジューリング回数を減らすことにより、シミュレーションにかかる処理時間を削減し開発期間の短縮化を図ることができる。
【００８３】
なお、本実施の形態で説明したシミュレーション支援方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、このプログラムは、インターネットなどのネットワークを介して配布することが可能であってもよい。
【００８４】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００８５】
（付記１）第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータを、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信する受信手段、
前記受信手段によって前記読出要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定する判定手段、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信手段、
前記送信手段によって前記データが送信された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段、
として機能させることを特徴とするシミュレーション支援プログラム。
【００８６】
（付記２）前記コンピュータを、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する読出要求を受け付けたことを示す読出通知を前記アクセス先に通知する通知手段として機能させることを特徴とする付記１に記載のシミュレーション支援プログラム。
【００８７】
（付記３）前記変更手段は、
前記判定手段によって読出待ち状態ではないと判定された場合、前記記憶手段に記憶されている一のチャネルの状態を書込待ち状態に変更することを特徴とする付記１または２に記載のシミュレーション支援プログラム。
【００８８】
（付記４）前記コンピュータを、
前記記憶領域にデータを格納する格納手段として機能させ、
前記受信手段は、
前記協調シミュレーションの実行中に、前記一のチャネルを介して、前記アクセス元からアクセス先に対する書込要求を受信し、
前記判定手段は、
前記受信手段によって前記書込要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が書込待ち状態か否かを判定し、
前記格納手段は、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に前記データを格納し、
前記変更手段は、
前記格納手段によって前記データが格納された結果、前記記憶手段に記憶されている前記一のチャネルの状態を読出待ち状態に変更することを特徴とする付記２または３に記載のシミュレーション支援プログラム。
【００８９】
（付記５）前記通知手段は、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する書込要求を受け付けたことを示す書込通知を前記アクセス先に通知することを特徴とする付記４に記載のシミュレーション支援プログラム。
【００９０】
（付記６）前記変更手段は、
前記判定手段によって書込待ち状態ではないと判定された場合、前記記憶手段に記憶されている一のチャネルの状態を読出待ち状態に変更することを特徴とする付記４または５に記載のシミュレーション支援プログラム。
【００９１】
（付記７）第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータを、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する書込要求を受信する受信手段、
前記受信手段によって前記書込要求が受信された場合、当該一のチャネルの状態が書込待ち状態か否かを判定する判定手段、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に前記データを格納する格納手段、
前記格納手段によって前記データが格納された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段、
として機能させることを特徴とするシミュレーション支援プログラム。
【００９２】
（付記８）前記コンピュータを、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する書込要求を受け付けたことを示す書込通知を前記アクセス先に通知する通知手段として機能させることを特徴とする付記７に記載のシミュレーション支援プログラム。
【００９３】
（付記９）前記変更手段は、
前記判定手段によって書込待ち状態ではないと判定された場合、前記記憶手段に記憶されている一のチャネルの状態を読出待ち状態に変更することを特徴とする付記７または８に記載のシミュレーション支援プログラム。
【００９４】
（付記１０）前記コンピュータを、
前記記憶領域に格納されているデータを前記アクセス元に送信する送信手段として機能させ、
前記受信手段は、
前記協調シミュレーションの実行中に、前記一のチャネルを介して、前記アクセス元から前記アクセス先に対する読出要求を受信し、
前記判定手段は、
前記受信手段によって前記読出要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定し、
前記送信手段は、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信し、
前記変更手段は、
前記送信手段によって前記データが送信された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更することを特徴とする付記８または９に記載のシミュレーション支援プログラム。
【００９５】
（付記１１）前記通知手段は、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に対する読出要求を受け付けたことを示す読出通知を前記アクセス先に通知する通知手段として機能させることを特徴とする付記１０に記載のシミュレーション支援プログラム。
【００９６】
（付記１２）前記変更手段は、
前記判定手段によって読出待ち状態ではないと判定された場合、前記記憶手段に記憶されている一のチャネルの状態を書込待ち状態に変更することを特徴とする付記１０または１１に記載のシミュレーション支援プログラム。
【００９７】
（付記１３）第１および第２のシミュレーション対象の協調シミュレーションを実行するシミュレーション装置であって、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段と、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信する受信手段と、
前記受信手段によって前記読出要求が受信された場合、前記記憶手段に記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定する判定手段と、
前記判定手段によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信手段と、
前記送信手段によって前記データが送信された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段と、
を備えることを特徴とするシミュレーション装置。
【００９８】
（付記１４）第１および第２のシミュレーション対象の協調シミュレーションを実行するシミュレーション装置であって、
前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶する記憶手段と、
前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する書込要求を受信する受信手段と、
前記受信手段によって前記書込要求が受信された場合、当該一のチャネルの状態が書込待ち状態か否かを判定する判定手段と、
前記判定手段によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に前記データを格納する格納手段と、
前記格納手段によって前記データが格納された結果、前記記憶手段に記憶されている前記一のチャネルの状態を初期状態に変更する変更手段と、
を備えることを特徴とするシミュレーション装置。
【００９９】
（付記１５）ハードウェアとソフトウェアの協調検証を実行するシミュレーション装置であって、
前記ハードウェアと前記ソフトウェア間を一対一かつ片方向の接続ごとに設けられ、それぞれが対応する前記ハードウェアと前記ソフトウェアとのシミュレーションの実行を制御するために、前記ハードウェアと前記ソフトウェアのいずれか一方（以下、「書込側」）から他方（以下、「読出側」）に対する書込要求を処理する機能、前記読出側から前記書込側に対する読出要求を処理する機能、初期状態、書込待ち状態、読出待ち状態のいずれかの状態を保持する第１の変数、前記書込側と前記読出側との間で、データの伝送に使用される第２の変数、前記書込側が読出待ち状態に、または、前記読出側が書込待ち状態に遷移する場合、読出待ち状態または書込待ち状態に遷移する前記ハードウェアまたは前記ソフトウェアのシミュレーションを中断する中断処理を実行する機能を備えた複数のチャネルと、
前記チャネルからの要求に応じて、並列して動作する前記ハードウェアおよび前記ソフトウェア間の実行処理および中断処理をおこなうシミュレータ本体と、
を備えることを特徴とするシミュレーション装置。
【０１００】
（付記１６）制御手段および記憶手段を備え、第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータが、
前記制御手段により、前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する読出要求を受信して、前記記憶手段に記憶する受信工程と、
前記制御手段により、前記受信工程によって前記読出要求が受信された場合、前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶するテーブルに記憶されている前記一のチャネルの状態が読出待ち状態か否かを判定して、前記記憶手段に記憶する判定工程と、
前記制御手段により、前記判定工程によって読出待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に格納されているデータを前記アクセス元に送信する送信工程と、
前記制御手段により、前記送信工程によって前記データが送信された結果、前記テーブルに記憶されている前記一のチャネルの状態を初期状態に変更する変更工程と、
を実行することを特徴とするシミュレーション支援方法。
【０１０１】
（付記１７）制御手段および記憶手段を備え、第１および第２のシミュレーション対象の協調シミュレーションを実行するコンピュータが、
前記制御手段により、前記協調シミュレーションの実行中に、前記複数のチャネルのうち一のチャネルを介して、前記第１または第２のシミュレーション対象のいずれか一方（以下、「アクセス元」）から他方（以下、「アクセス先」）に対する書込要求を受信して、前記記憶手段に記憶する受信工程と、
前記制御手段により、前記受信工程によって前記書込要求が受信された場合、前記第１および第２のシミュレーション対象間のデータの読出・書込に使用されるチャネルごとに、初期状態、読出待ち状態および書込待ち状態のいずれかの状態を記憶するテーブルに記憶されている前記一のチャネルの状態が書込待ち状態か否かを判定して、前記記憶手段に記憶する判定工程と、
前記制御手段により、前記判定工程によって書込待ち状態と判定された場合、前記一のチャネルに割り当てられた記憶領域に前記データを格納する格納工程と、
前記制御手段により、前記格納工程によって前記データが格納された結果、前記テーブルに記憶されている前記一のチャネルの状態を初期状態に変更する変更工程と、
を実行することを特徴とするシミュレーション支援方法。
【図面の簡単な説明】
【０１０２】
【図１】スケジューリング方式の概要を示す説明図である。
【図２】シミュレーション装置のハードウェア構成を示すブロック図である。
【図３】シミュレーションシステムのシステム構成図である。
【図４】ユーザプログラムの具体例を示す説明図である。
【図５】ハードウェアモデルの具体例を示す説明図である。
【図６】チャネルの構成を示す説明図である。
【図７】状態テーブルの記憶内容の一例を示す説明図である。
【図８】動作シーケンスの一例を示すシーケンス図である。
【図９】シミュレーション装置の機能的構成を示すブロック図である。
【図１０】変更処理の一例を示す説明図である。
【図１１】シミュレーション装置のシミュレーション支援処理手順の一例を示すフローチャート（その１）である。
【図１２】シミュレーション装置のシミュレーション支援処理手順の一例を示すフローチャート（その２）である。
【符号の説明】
【０１０３】
２００  シミュレーション装置
７００  状態テーブル
９０１  受信部
９０２  判定部
９０３  送信部
９０４  変更部
９０５  通知部
９０６  格納部
Ｃ，Ｃ１〜Ｃｎ  チャネル
Ｍ  ハードウェアモデル
Ｐ，Ｐ１  ユーザプログラム
【図１】
2010152645.tif 000003
【図２】
2010152645.tif 000004
【図３】
2010152645.tif 000005
【図４】
2010152645.tif 000006
【図５】
2010152645.tif 000007
【図６】
2010152645.tif 000008
【図７】
2010152645.tif 000009
【図８】
2010152645.tif 000010
【図９】
2010152645.tif 000011
【図１０】
2010152645.tif 000012
【図１１】
2010152645.tif 000013
【図１２】
2010152645.tif 000014