(57)【要約】【課題】システムに含まれる動的再構成可能ハードウェアの回路変更に必要な時間を算出することにより、システムを制御するソフトウェアの回路変更を指示するタイミングを解析可能なシミュレーション装置を提供する。【解決手段】複数の回路にそれぞれ対応した複数のハードウェア動作モデルを有するハードウェアモデルと、複数の回路をそれぞれ定義する複数のデータを格納するメモリモデルとを含むシミュレーション回路のデータを格納するシミュレーション回路記憶装置５０と、ソフトウェアによってシミュレーション回路を動作させ複数のハードウェア動作モデルの切り替え動作を解析し、メモリモデルからハードウェアモデルへの複数のデータの転送時間を含む切り替え動作に必要な時間を算出する解析モジュール１０とを備える。【選択図】図１
2007317102.tif 000002
【特許請求の範囲】
【請求項１】
複数の回路にそれぞれ対応した複数のハードウェア動作モデルを有するハードウェアモデルと、前記複数の回路をそれぞれ定義する複数のデータを格納するメモリモデルとを含むシミュレーション回路のデータを格納するシミュレーション回路記憶装置と、
ソフトウェアによって前記シミュレーション回路を動作させ前記複数のハードウェア動作モデルの切り替え動作を解析し、前記メモリモデルから前記ハードウェアモデルへの前記複数のデータの転送時間を含む前記切り替え動作に必要な時間を算出する解析モジュール
とを備え、前記ソフトウェアを解析することを特徴とするシミュレーション装置。
【請求項２】
前記ハードウェアモデルが、前記ハードウェアモデルの動作状態に応じて前記ハードウェアモデルへのアクセスを制御するアクセス制御手段を更に備えることを特徴とする請求項１に記載のシミュレーション装置。
【請求項３】
前記アクセス制御手段が、前記ハードウェアモデルへのアクセスが禁止された期間における前記ハードウェアモデルへのアクセスの情報を記録することを特徴とする請求項２に記載のシミュレーション装置。
【請求項４】
前記ハードウェアモデルが、
前記複数のハードウェア動作モデルと前記複数の回路との関係を示す管理テーブルを有する管理手段と、
前記管理テーブルを参照し、前記ソフトウェアに含まれる回路変更の命令に従って、前記ハードウェアモデルにおいて前記複数のハードウェア動作モデルを切り替える切り替え手段
とを更に備えることを特徴とする請求項１乃至３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記シミュレーション回路が、前記ハードウェアモデルと前記メモリモデルとを互いに接続するバスモデルを更に備え、前記解析モジュールが、前記バスモデルにおけるデータ転送状況に応じて変動する前記転送時間を算出することを特徴とする請求項１乃至４のいずれか１項に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの解析に用いられるシミュレーション装置に係り、特に回路を動的に再構成するハードウェアを含むシステムを制御するソフトウェアの解析に用いられるシミュレーション装置に関する。
【背景技術】
【０００２】
近年、複数の回路を切り替えて回路を動的に再構成するハードウェア（以下において、「動的再構成可能ハードウェア」という。）が使用されている。動的再構成可能ハードウェアは、回路構成を定義するデータ（以下において、「ハードウェア仕様データ」という。）に応じて動的に自身の回路構成を変更する。処理内容に適した回路を構成することにより、動的再構成可能ハードウェアは高速処理を達成できる。又、動的再構成可能ハードウェアを採用することによって、専用ハードウェアを新たに製作する場合に比べて、ハードウェアの開発期間を短縮できる。
【０００３】
システムを制御するソフトウェアを開発するために、シミュレーション用モデルを用いた回路シミュレーションが使用されている（例えば、特許文献１参照。）。動的再構成可能ハードウェアを含むシステムを制御するソフトウェアを設計する場合、システム稼動中における動的再構成可能ハードウェアの回路変更に要する時間を予測する必要がある。動的再構成可能ハードウェアの回路変更に要する時間は、（１）ハードウェア仕様データをメモリから動的再構成可能ハードウェアに転送する時間、及び（２）転送されたハードウェア仕様データに応じて動的再構成可能ハードウェアの回路の変更が完了するまでの時間、の和となる。ソフトウェア開発者は、動的再構成可能ハードウェアの回路変更に要する時間を見積り、動的再構成可能ハードウェアに回路変更を指示する命令（以下において、「ドライバコマンド」という。）をソフトウェアに記述する。
【０００４】
しかし、動的再構成可能ハードウェアに回路変更を指示しても、動的再構成可能ハードウェアが動作中の場合は回路を変更できず、動作中の処理が終了した後に動的再構成可能ハードウェアの回路が変更される。そのため、ドライバコマンドが実行されるタイミングが適切でないと動的再構成可能ハードウェアの回路を変更するための待ち時間が発生し、システム全体のスループットが低下する。
【０００５】
一般に、動的再構成可能ハードウェア及びハードウェア仕様データを格納するメモリを接続するバスには、メモリに直接アクセス可能なバスマスタが複数接続される。メモリから動的再構成可能ハードウェアへのハードウェア仕様データの転送に要する時間は、バスにおけるデータ転送状況、つまり各バスマスタのメモリへのアクセス状況に依存して変動する。そのため、ハードウェア仕様データをメモリから動的再構成可能ハードウェアに転送する時間の見積もりは困難である。
【０００６】
関連技術では、動的再構成可能ハードウェアを含むシステムを制御するソフトウェアにおいて動的再構成可能ハードウェアの回路変更を指示するタイミングを正確に解析できない。そのため、動的再構成可能ハードウェアへのハードウェア仕様データの転送が終了する前に、動的再構成可能ハードウェアに対する動作命令が実行されることによる誤動作の検出が困難である。更に、ソフトウェア開発者の手作業によるドライバコマンドの実行タイミングを調整する手間が増大するという問題があった。
【特許文献１】特開平１１−１４９４８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、システムに含まれる動的再構成可能ハードウェアの回路変更に必要な時間を算出することにより、システムを制御するソフトウェアの回路変更を指示するタイミングを解析可能なシミュレーション装置を提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、（イ）複数の回路にそれぞれ対応した複数のハードウェア動作モデルを有するハードウェアモデルと、複数の回路をそれぞれ定義する複数のデータを格納するメモリモデルとを含むシミュレーション回路のデータを格納するシミュレーション回路記憶装置と、（ロ）ソフトウェアによってシミュレーション回路を動作させ複数のハードウェア動作モデルの切り替え動作を解析し、メモリモデルからハードウェアモデルへの複数のデータの転送時間を含む切り替え動作に必要な時間を算出する解析モジュールとを備え、ソフトウェアを解析するシミュレーション装置が提供される。
【発明の効果】
【０００９】
本発明によれば、システムに含まれる動的再構成可能ハードウェアの回路変更に必要な時間を算出することにより、システムを制御するソフトウェアの回路変更を指示するタイミングを解析可能なシミュレーション装置を提供できる。
【発明を実施するための最良の形態】
【００１０】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１１】
本発明の実施の形態に係るシミュレーション装置は、図１に示すように、複数の回路にそれぞれ対応した複数のハードウェア動作モデルを有するハードウェアモデルと、複数の回路をそれぞれ定義する複数のデータを格納するメモリモデルとを含むシミュレーション回路のデータを格納するシミュレーション回路記憶装置５０と、ソフトウェアによってシミュレーション回路を動作させ複数のハードウェア動作モデルの切り替え動作を解析し、メモリモデルからハードウェアモデルへの複数のデータの転送時間を含む切り替え動作に必要な時間を算出する解析モジュール１０とを備えを備え、ソフトウェアを解析する。
【００１２】
図１に示したシミュレーション装置は、メモリ２０、入力装置３０及び出力装置４０を更に備える。メモリ２０は、ソフトウェア記憶領域２１、ハードウェア構成情報記憶領域２２及びログ情報記憶領域２３を備える。ソフトウェア記憶領域２１は、解析対象のソフトウェア（以下において、「対象ソフトウェア」という。）を格納する。ハードウェア構成情報記憶領域２２は、後述するハードウェア構成情報を格納する。ログ情報記憶領域２３は、シミュレーション結果を格納する。
【００１３】
入力装置３０はキーボード、マウス、ライトペン又はフレキシブルディスク装置などで構成される。入力装置３０よりシミュレーションの実行者は、対象ソフトウェアを指定したり、シミュレーション回路を修正したりすることができる。出力装置４０としては、解析結果を表示するディスプレイやプリンタ、或いはコンピュータ読み取り可能な記録媒体に保存する記録装置等が使用可能である。ここで、「コンピュータ読み取り可能な記録媒体」とは、例えばコンピュータの外部メモリ装置、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどの電子データを記録することができるような媒体などを意味する。具体的には、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯディスク等が「コンピュータ読み取り可能な記録媒体」に含まれる。
【００１４】
以下において、図１に示したシミュレーション装置を用いて、図２に示すシステムを制御するソフトウェアを解析する例を説明する。図２に示したシステムは、バス１０５に接続するプロセッサ１０１、動的再構成可能ハードウェア１０２、メモリコントローラ１０３及びメモリ１０４を備える。先ず、図２に示したシステムを説明する。
【００１５】
プロセッサ１０１は、図２に示したシステムを制御する対象ソフトウェアを命令単位で実行する。対象ソフトウェアは、メモリ１０４に格納される。プロセッサ１０１はメモリ１０４からフェッチした命令をデコードし、デコードされた命令を実行して動的再構成可能ハードウェア１０２における回路変更等を指示する。
【００１６】
動的再構成可能ハードウェア１０２は、プロセッサ１０１が対象ソフトウェアに含まれる回路変更命令に従って送信する回路構成変更のコマンド（以下において、「切り替えコマンド」という。）を受信すると、切り替えコマンドで指定された回路のハードウェア仕様データをメモリ１０４から転送させて、動的再構成可能ハードウェア１０２の回路構成を変更する。動的再構成可能ハードウェア１０２として、例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）等が採用可能である。
【００１７】
メモリコントローラ１０３は、メモリ１０４に直接アクセス可能なバスマスタであり、例えばダイレクトメモリアクセス（ＤＭＡ）コントローラである。メモリコントローラ１０３はプロセッサ１０１によって制御される。
【００１８】
メモリ１０４は、図２に示したシステムを制御する対象ソフトウェア、及び複数のハードウェア仕様データを格納する。メモリ１０４から動的再構成可能ハードウェア１０２へのハードウェア仕様データの転送は、メモリコントローラ１０３によって制御される。
【００１９】
バス１０５は、プロセッサ１０１、動的再構成可能ハードウェア１０２、メモリコントローラ１０３及びメモリ１０４に接続する。プロセッサ１０１、動的再構成可能ハードウェア１０２、メモリコントローラ１０３及びメモリ１０４間でのデータ転送は、バス１０５を介して行われる。
【００２０】
図２の構成は一例であり、プロセッサ１０１及びメモリコントローラ１０３以外のバスマスタがバス１０５に接続してもよい。例えば、対象ソフトウェアとハードウェア仕様データをそれぞれ格納するメモリがバス１０５に別個に接続してもよい。既に述べたように、複数のバスマスタがバス１０５に接続する場合、ハードウェア仕様データをメモリ１０４から動的再構成可能ハードウェア１０２に転送するために要するクロックサイクル数は、各バスマスタのメモリ１０４へのアクセス状況に依存して変動する。
【００２１】
図１に示した解析モジュール１０は、図２に示したシステムを制御するソフトウェアの動作を解析するために、図２に示したシステムに対応するシミュレーション回路において対象ソフトウェアを動作させる。図３に、図２に示したシステムの動作をシミュレートするシミュレーション回路を示す。図３に示したプロセッサモデル２０１、ハードウェアモデル２０２、メモリコントローラモデル２０３、メモリモデル２０４、及びバスモデル２０５は、図２に示したプロセッサ１０１、動的再構成可能ハードウェア１０２、メモリコントローラ１０３、メモリ１０４、及びバス１０５の動作をそれぞれシミュレートする回路動作モデルである。図３に示した各回路動作モデルは、パーソナルコンピュータ（ＰＣ）或いはワークステーション（ＷＳ）等のホストプロセッサ上で動作するソフトウェアモジュール群によって構成可能である。各回路動作モデルのデータは、図１に示したシミュレーション回路記憶装置５０に格納される。
【００２２】
図３に示したシミュレーション回路では、プロセッサモデル２０１及びメモリコントローラモデル２０３がバスマスタとしてバスモデル２０５に接続する。現実の使用状況に対応させて、他のプロセッサやペリフェラル回路等のバスマスタの回路動作モデルがバスモデル２０５に接続してもよい。
【００２３】
プロセッサモデル２０１は、プロセッサ１０１の動作をシミュレートして、対象ソフトウェアを命令単位で実行する機能を有する。プロセッサモデル２０１によって、ハードウェアモデル２０２、メモリコントローラモデル２０３、及びメモリモデル２０４がそれぞれ制御される。
【００２４】
ハードウェアモデル２０２は、システム稼動中に自分自身の回路構成を変更する動的再構成可能ハードウェア１０２の動作をシミュレートする。ハードウェアモデル２０２は、図３に示すように、複数のハードウェア動作モデル２１１〜２１ｎ、アクセス制御手段２２０、管理手段２３０及び切り替え手段２４０を有する（ｎ：２以上の整数）。
【００２５】
ハードウェア動作モデル２１１〜２１ｎは、動的再構成可能ハードウェア１０２が構成可能な複数の回路の動作をそれぞれシミュレートする。つまり、ハードウェアモデル２０２は、メモリ１０４から動的再構成可能ハードウェア１０２に転送される複数のハードウェア仕様データにそれぞれ対応するハードウェア動作モデル２１１〜２１ｎを有する。プロセッサモデル２０１から転送される切り替えコマンドに応じて、ハードウェアモデル２０２はハードウェア動作モデル２１１〜２１ｎを切り替えてシミュレートする回路を変更する。ハードウェアモデル２０２がハードウェア動作モデル２１１〜２１ｎを切り替えることにより、動的再構成可能ハードウェア１０２の回路変更動作がシミュレートされる。
【００２６】
アクセス制御手段２２０は、プロセッサモデル２０１から転送されるハードウェアモデル２０２への要求コマンドを受信する。又、アクセス制御手段２２０は、ハードウェアモデル２０２の状態に応じて、ハードウェアモデル２０２へのプロセッサモデル２０１のアクセスを制御する。例えば、ハードウェアモデル２０２がハードウェア動作モデル２１１〜２１ｎを切り替えている期間、或いはハードウェアモデル２０２が動作している期間は、アクセス制御手段２２０は、プロセッサモデル２０１のハードウェアモデル２０２へのアクセスを禁止する。ハードウェアモデル２０２へのアクセスが禁止されている場合、「ハードウェアモデル２０２はアクセス禁止状態である。」という。
【００２７】
管理手段２３０は、動的再構成可能ハードウェア１０２に設定されるハードウェア構成情報に基づき、ハードウェア動作モデル２１１〜２１ｎと、対象ソフトウェアに含まれる切り替えコマンドによって指定される回路との関係を示す管理テーブルを作成する。管理テーブルは、管理手段２３０が有する管理テーブル記憶領域２３１に格納される。「ハードウェア構成情報」は、動的再構成可能ハードウェア１０２が構成可能な回路（以下において、単に「構成可能回路」という。）に対応するハードウェア動作モデル２１１〜２１ｎ、各構成可能回路に対応する指示子、及び動的再構成可能ハードウェア１０２が構成する回路を各構成可能回路に変更するために必要な変更クロックサイクル数の情報を含む。「変更クロックサイクル数」は、ハードウェア仕様データが動的再構成可能ハードウェア１０２に転送されてから動的再構成可能ハードウェア１０２の回路変更が完了するまでに要するクロックサイクル数である。
【００２８】
対象ソフトウェアに含まれる回路変更の命令で指定される指示子によって、動的再構成可能ハードウェア１０２の回路変更後の回路が決定される。対象ソフトウェアの回路変更の命令を含む部分の例を図４に示す。図４は、動的再構成可能ハードウェア１０２を指示子「ｈｗｅＸ」に対応する構成可能回路に変更する例を示す。
【００２９】
図５に、動的再構成可能ハードウェア１０２の構成可能回路が構成可能回路Ａ及び構成可能回路Ｂである場合のハードウェア構成情報の例を示す。図５に示したように、構成可能回路Ａ及び構成可能回路Ｂのハードウェア動作モデルはそれぞれ動作モデルＭＡ及び動作モデルＭＢである。対象ソフトウェアの回路変更の命令で構成可能回路Ａを指定する指示子は指示子「ｈｗｅＡ」であり、動的再構成可能ハードウェア１０２が構成する回路を構成可能回路Ａに変更するために必要な変更クロックサイクル数は２０である。対象ソフトウェアの回路変更の命令で構成可能回路Ｂを指定する指示子は指示子「ｈｗｅＢ」であり、動的再構成可能ハードウェア１０２が構成する回路を構成可能回路Ｂに変更するために必要な変更クロックサイクル数は３０である。
【００３０】
図５に示したハードウェア構成情報に基づき管理手段２３０が作成する管理テーブルの例を図６に示す。図６に示すように、管理テーブルは、動作モデルＭＡ及び動作モデルＭＢそれぞれの、動作記述が記述されたオブジェクトのリファレンス、シミュレーションにおける状態、対象ソフトウェアにおいて回路変更を指示するタイミングを示す変更アドレス、及び回路変更に必要なクロックサイクル数の情報を含む。プログラムカウンタがいずれかの変更アドレスに一致した場合に、プロセッサモデル２０１は、その変更アドレスに対応するハードウェア動作モデルへの切り替えをハードウェアモデル２０２に指示する。つまり、管理テーブルは、ハードウェア動作モデルと、対象ソフトウェアに含まれる回路変更を指示する命令が指定する構成可能回路との関係を示す。各構成可能回路に対応する指示子に割り当てられた変更アドレスの情報は、対象ソフトウェアのシンボル情報に含まれる。管理手段２３０は、ソフトウェアのシンボル情報及びハードウェア構成情報を参照して管理テーブルを作成する。
【００３１】
ハードウェア動作モデル２１１〜２１ｎがシミュレーション実行中に取り得る状態は、「実行状態」、「実行可能状態」及び「待機状態」のいずれかである。「実行状態」は、そのハードウェア動作モデルの動作をハードウェアモデル２０２がシミュレートしていることを示す。「実行可能状態」は、ハードウェア動作モデルの切り替えを行わずに、そのハードウェア動作モデルの動作をハードウェアモデル２０２がシミュレートできることを示す。「待機状態」は、ハードウェア動作モデルの切り替えをしなければ、そのハードウェア動作モデルの動作をハードウェアモデル２０２がシミュレートできないことを示す。管理テーブルにおけるハードウェア動作モデルの初期状態は「待機状態」である。
【００３２】
切り替え手段２４０は、シミュレーション中に対象ソフトウェアによって指示される動的再構成可能ハードウェア１０２の回路変更動作をシミュレートするために、管理テーブルを参照してハードウェア動作モデル２１１〜２１ｎを切り替える。ハードウェア動作モデル２１１〜２１ｎを切り替えることによって、ハードウェアモデル２０２は、対象ソフトウェアによって指示された構成可能回路をシミュレートする。
【００３３】
メモリモデル２０４は、対象ソフトウェア及びハードウェア仕様データの読み出し等のメモリ１０４の動作をシミュレートする。メモリモデル２０４からハードウェアモデル２０２へのハードウェア仕様データの転送は、メモリコントローラモデル２０３によって制御される。具体的には、メモリコントローラモデル２０３は、メモリ１０４から動的再構成可能ハードウェア１０２に転送するデータのデータ長Ｌ及び占有要求をバス１０５に転送する動作をシミュレートする。バスモデル２０５は、データ長Ｌとバス１０５のデータ幅Ｗから、以下に示す式（１）を用いて、メモリモデル２０４からハードウェアモデル２０２へのデータ転送にかかる最短のクロックサイクル数Ｃを算出する：
Ｃ＝α＋Ｌ／Ｗ  ・・・（１）
ここで、定数αはデータ転送以外に各回路の初期動作等に必要なクロックサイクル数を表す値で、システムが採用するアーキテクチャの仕様に基づいて定まる一定値である。データ長Ｌもアーキテクチャの仕様に基づいて定まる値であり、例えばアーキテクチャの仕様に基づいて作成されるメモリコントローラモデル２０３からバスモデル２０５にデータ長Ｌの情報が通知される。
【００３４】
バスモデル２０５は、プロセッサモデル２０１、メモリコントローラモデル２０３、及びバスモデル２０５に接続する他のバスマスタからの要求を検出し、例えばラウンドロビン等のアルゴリズムによって、各バスマスタにデータ転送許可を与える。そして、バスモデル２０５は、各バスマスタから要求されたデータの転送に必要なサイクルクロック数（以下において、「転送クロックサイクル数」という。）をカウントした後に、データ転送終了をデータ転送許可を与えたバスマスタに通知する。データの転送に必要なサイクルクロック数は、バスモデル２０５におけるデータ転送状況、つまり各バスマスタのメモリモデル２０４へのアクセス状況に依存して変動する。そのため、バスモデル２０５は各バスマスタからのデータ転送要求を調整し、データ転送が優先されたバスマスタへのデータ転送に要するクロックサイクル数に式（１）で算出されたクロックサイクル数を加算したサイクルクロック数を転送クロックサイクル数として、各バスマスタに通知する。
【００３５】
例えば、データ転送許可を与えたバスマスタがメモリコントローラモデル２０３である場合は、メモリモデル２０４からのハードウェア仕様データの転送が終了したことがハードウェアモデル２０２に通知される。上記で説明したように、バスモデル２０５は、バス１０５におけるデータ転送状況に依存して変動するメモリ１０４から動的再構成可能ハードウェア１０２へのハードウェア仕様データの転送に要する時間を転送クロックサイクル数として算出する。
【００３６】
以下に、図１に示したシミュレーション装置によって、図２に示したシステムを制御する対象ソフトウェアを解析する例を説明する。先ず、図７に示したフローチャートを参照して、動的再構成可能ハードウェア１０２の回路変更動作を解析する例を説明する。以下では、動的再構成可能ハードウェア１０２の回路を、図５に示した構成可能回路Ａに切り替える例を説明する。つまり、以下の解析において、ハードウェアモデル２０２がシミュレートする回路が動作モデルＭＡに切り替わる。既に述べたように、プロセッサモデル２０１のプログラムカウンタが動作モデルＭＡの変更アドレスに一致した場合に、ハードウェアモデル２０２のシミュレートする回路を動作モデルＭＡに切り替える動作が開始される。
【００３７】
（イ）ステップＳ１００において、対象ソフトウェア及び図２に示した動的再構成可能ハードウェア１０２のハードウェア構成情報が、図１に示した入力装置３０を介してメモリ２０に入力される。ここで、動的再構成可能ハードウェア１０２のハードウェア構成情報が図５に示したハードウェア構成情報であるとする。対象ソフトウェア及びハードウェア構成情報は、ソフトウェア記憶領域２１及びハードウェア構成情報記憶領域２２にそれぞれ格納される。
【００３８】
（ロ）ステップＳ２００において、解析モジュール１０が、対象ソフトウェア及びハードウェア構成情報をソフトウェア記憶領域２１及びハードウェア構成情報記憶領域２２からそれぞれ読み出す。更に解析モジュール１０は、シミュレーション回路記憶装置５０から図３に示したシミュレーション回路を読み出し、シミュレーションを開始する。
【００３９】
（ハ）ステップＳ３００において、図３に示したハードウェアモデル２０２の管理手段２３０が、ハードウェア構成情報に基づき図６に示した管理テーブルを作成する。作成された管理テーブルは管理手段２３０内部の管理テーブル記憶領域２３１に格納される。
【００４０】
（ニ）ステップＳ４００において、解析モジュール１０は、図３に示したシミュレーション回路において対象ソフトウェアを動作させて、対象ソフトウェアの解析を開始する。つまり、プロセッサモデル２０１が対象ソフトウェアを命令単位で実行する。
【００４１】
（ホ）ステップＳ５００において、プロセッサモデル２０１のプログラムカウンタが動作モデルＭＡの変更アドレスに一致すると、ハードウェアモデル２０２のハードウェア動作モデルを動作モデルＭＡに切り替える動作が開始される。先ず、ステップＳ５１０において、切り替え手段２４０が、ハードウェアモデル２０２がアクセス禁止状態であるか否かを判定する。ハードウェアモデル２０２がアクセス禁止状態でなければ、処理はステップＳ５１１に進む。ハードウェアモデル２０２がアクセス禁止状態であれば、処理はステップＳ５１５に進む。
【００４２】
（ヘ）ステップＳ５１１において、ハードウェアモデル２０２をアクセス禁止状態に設定する。具体的には、切り替え手段２４０が、アクセス制御手段２２０にハードウェアモデル２０２へのアクセスを禁止するアクセス禁止要求を転送する。アクセス禁止要求を受信したアクセス制御手段２２０は、ハードウェアモデル２０２をアクセス禁止状態に設定する。又、切り替え手段２４０は、動作モデルＭＡのハードウェア仕様データをメモリモデル２０４からハードウェアモデル２０２に転送する要求をメモリコントローラモデル２０３に転送する。更に、切り替え手段２４０は、管理テーブルの構成可能回路Ａの状態を「待機状態」から「実行可能状態」に変更する。
【００４３】
（ト）ステップＳ５１２において、メモリモデル２０４からハードウェアモデル２０２へのハードウェア仕様データの転送動作がシミュレートされる。具体的には、動作モデルＭＡのハードウェア仕様データをメモリモデル２０４からハードウェアモデル２０２に転送する要求が、メモリコントローラモデル２０３からバスモデル２０５に転送される。バスモデル２０５は、既に説明したように式（１）を用いて、動作モデルＭＡのハードウェア仕様データをメモリモデル２０４からハードウェアモデル２０２に転送するのに必要な転送クロックサイクル数を算出する。そして、バスモデル２０５は、動作モデルＭＡのハードウェア仕様データの転送に必要なサイクルクロック数をカウントした後に、メモリモデル２０４からのハードウェア仕様データの転送が終了したことをハードウェアモデル２０２に通知する。
【００４４】
（チ）ハードウェア仕様データの転送が終了したことがハードウェアモデル２０２に通知された後、ステップＳ５１３において、動的再構成可能ハードウェア１０２の回路変更動作を解析モジュール１０がシミュレートする。具体的には、切り替え手段２４０が、管理テーブル記憶領域２３１に格納された管理テーブルを参照し、ハードウェアモデル２０２の回路が動作モデルＭＡに変更されるまでに要する変更クロックサイクル数である２０をカウント値の初期値として、カウントダウンを行う。切り替え手段２４０は、１クロックサイクル毎に１ずつカウント値を減らし、カウント値が０になるまでカウントダウンを行う。
【００４５】
（リ）カウント値が０になった後、ステップＳ５１４において、ハードウェアモデル２０２のアクセス禁止状態を解除する。具体的には、切り替え手段２４０が、アクセス制御手段２２０にハードウェアモデル２０２へのアクセス禁止を解除するアクセス禁止解除要求を転送する。アクセス禁止解除要求を受信したアクセス制御手段２２０は、ハードウェアモデル２０２をアクセス禁止状態から解除し、動的再構成可能ハードウェア１０２の構成可能回路Ａへの切り替え動作が完了する。
【００４６】
（ヌ）ステップＳ５１５において、アクセス制御手段２２０が、プロセッサモデル２０１からハードウェアモデル２０２へのアクセス動作を停止させる。そして、ステップＳ５１６において、アクセス制御手段２２０は、ハードウェアモデル２０２のアクセス禁止状態が解除されるまでの期間にプロセッサモデル２０１からハードウェアモデル２０２に転送された要求コマンド等のログ情報を記録する。ログ情報は、図１に示したログ情報記憶領域２３に格納される。又、アクセス制御手段２２０は、ハードウェアモデル２０２のアクセス禁止状態が解除されるまで、クロックサイクル数をカウントする。ハードウェアモデル２０２のアクセス禁止状態が解除された後、処理はステップＳ５１１に進む。
【００４７】
尚、アクセス制御手段２２０は、ハードウェア仕様データの転送動作及び動的再構成可能ハードウェア１０２の回路変更動作がシミュレートされている期間のログ情報も記録する。又、変更クロックサイクル数及び転送クロックサイクル数を含む、プロセッサモデル２０１からハードウェアモデル２０２へのアクセス動作が禁止された期間のクロックサイクル数が、ログ情報の一部としてログ情報記憶領域２３に格納される。
【００４８】
上記に説明したように、解析モジュール１０は、シミュレーション回路において対象ソフトウェアを動作させて構成可能回路の変更動作を解析することによって、メモリ１０４から動的再構成可能ハードウェア１０２へのハードウェア仕様データの転送時間を含む、動的再構成可能ハードウェア１０２の回路の再構成に必要な時間をクロックサイクル数として算出し、ログ情報を作成する。以上では、構成可能回路の変更が１回である場合を説明した。構成可能回路の変更が複数回ある場合には、各変更時においてログ情報が作成される。
【００４９】
次に、図８に示すフローチャートを参照して、図２に示した動的再構成可能ハードウェア１０２が動作中であるためにプロセッサ１０１からのアクセスが禁止される場合において対象ソフトウェアを解析する例を説明する。以下では、動的再構成可能ハードウェア１０２の回路が図５に示した構成可能回路Ａである場合を説明する。つまり、ハードウェアモデル２０２において動作モデルＭＡが動作中である場合における対象ソフトウェアを解析する例を説明する。
【００５０】
（イ）図８に示したステップＳ１００〜Ｓ４００において、図７に示したフローチャートを参照して説明した方法と同様にして、図３に示したハードウェアモデル２０２の管理手段２３０が管理テーブルを作成し、解析モジュール１０が対象ソフトウェアの解析を開始する。
【００５１】
（ロ）ステップＳ６００において、プロセッサモデル２０１からの要求コマンドに応じて、ハードウェアモデル２０２において動作モデルＭＡが動作する。
【００５２】
（ハ）ステップＳ６１１において、ハードウェアモデル２０２をアクセス禁止状態に設定する。具体的には、切り替え手段２４０が、アクセス制御手段２２０にハードウェアモデル２０２へのアクセスを禁止するアクセス禁止要求を転送する。アクセス禁止要求を受信したアクセス制御手段２２０は、ハードウェアモデル２０２をアクセス禁止状態に設定する。又、切り替え手段２４０は、管理テーブルの構成可能回路Ａの状態を「実行可能状態」から「実行状態」に変更する。
【００５３】
（ニ）ステップＳ６１２において、アクセス制御手段２２０が、プロセッサモデル２０１からハードウェアモデル２０２へのアクセス動作を停止させる。そして、ステップＳ６１３において、アクセス制御手段２２０は、ハードウェアモデル２０２のアクセス禁止状態が解除されるまでの期間にプロセッサモデル２０１からハードウェアモデル２０２に転送された要求コマンド等のログ情報を記録する。ログ情報は、図１に示したログ情報記憶領域２３に格納される。又、アクセス制御手段２２０は、ハードウェアモデル２０２のアクセス禁止状態が解除されるまで、クロックサイクル数をカウントする。
【００５４】
（ホ）プロセッサモデル２０１からの要求コマンドに応じた動作モデルＭＡの動作が終了すると、ステップＳ６１４において、ハードウェアモデル２０２のアクセス禁止状態を解除する。具体的には、切り替え手段２４０が、アクセス制御手段２２０にハードウェアモデル２０２へのアクセス禁止を解除するアクセス禁止解除要求を転送する。アクセス禁止解除要求を受信したアクセス制御手段２２０は、ハードウェアモデル２０２をアクセス禁止状態から解除する。又、ハードウェアモデル２０２のアクセス禁止状態が解除された後、プロセッサモデル２０１からハードウェアモデル２０２へのアクセス動作が禁止された期間のクロックサイクル数が、ログ情報の一部としてログ情報記憶領域２３に格納される。
【００５５】
上記に説明したように、図１に示したシミュレーション装置によれば、ハードウェアモデル２０２がアクセス禁止状態であり、プロセッサモデル２０１のハードウェアモデル２０２へのアクセスが停止される期間のログ情報が記録される。ハードウェアモデル２０２がアクセス禁止状態である期間は、プロセッサモデル２０１のプログラムカウンタがハードウェア動作モデル２１１〜２１ｎの変更アドレスのいずれかに一致してから動的再構成可能ハードウェア１０２の回路変更動作が終了するまでの期間、及びハードウェアモデル２０２においてハードウェア動作モデル２１１〜２１ｎのいずれかが動作中の期間である。ログ情報は、プロセッサモデル２０１からハードウェアモデル２０２に転送された要求コマンド及びクロックサイクル数を含む。
【００５６】
図９に、ログ情報記憶領域２３に格納されるログ情報の例を示す。ハードウェアモデル２０２がアクセス禁止状態である期間におけるプロセッサモデル２０１のハードウェアモデル２０２へのアクセスはエラーとみなされ、図９に示した「エラー内容」の欄は、プロセッサモデル２０１のアクセスがハードウェア動作モデルの「切り替え中」に行われたか、或いはハードウェアモデル２０２においてハードウェア動作モデル２１１〜２１ｎのいずれかが「動作中」に行われたかを示す。「時刻」の欄は、システムが動作を始めたときのクロックサイクル値を「０」とした場合の、プロセッサモデル２０１がハードウェアモデル２０２にアクセスしたときのクロックサイクル値を示す。「ｐｃ」の欄はプロセッサモデル２０１がハードウェアモデル２０２にアクセスしたときのプログラムカウンタ値を示す。「カウント」の欄は、プロセッサモデル２０１のハードウェアモデル２０２へのアクセスが停止されていた期間のクロックサイクル数を示す。
【００５７】
上記に説明したように、プロセッサモデル２０１のアクセスがハードウェア動作モデルの切り替え中に行われた場合の「カウント」欄の値は、ハードウェア仕様データの転送動作及び動的再構成可能ハードウェア１０２の回路変更動作がシミュレートされている期間のクロックサイクル数を含む。つまり、バス１０５におけるデータ転送状況に応じて変動するメモリ１０４から動的再構成可能ハードウェア１０２へのハードウェア仕様データの転送に要するクロックサイクル数が、「カウント」欄の値に含まれる。ハードウェア仕様データの転送に要するクロックサイクル数は、各バスマスタのメモリ１０４へのアクセス状況に基づいて算出される。そのため、図１に示したシミュレーション装置によれば、動的再構成可能ハードウェア１０２の回路変更に要するクロックサイクル数の見積もりが容易に行われる。その結果、動的再構成可能ハードウェア１０２へのハードウェア仕様データの転送が終了する前に、動的再構成可能ハードウェア１０２に対する動作命令が実行されることによる誤動作の検出が容易である。
【００５８】
対象ソフトウェアの開発者は、図１に示した出力装置４０を介してログ情報記憶領域２３に格納されたログ情報を参照することにより、ハードウェアモデル２０２がアクセス禁止状態である期間におけるプロセッサモデル２０１のハードウェアモデル２０２へのアクセス（以下において「エラーアクセス」という。」）の発生を検出できる。そのため、対象ソフトウェアの開発者は、ログ情報に基づき、エラーアクセスを減少させるように対象ソフトウェアを修正できる。具体的には、対象ソフトウェアの開発者は、対象ソフトウェアのシンボル情報に含まれる指示子の変更アドレスを修正することによって、プロセッサモデル２０１がハードウェアモデル２０２に切り替えコマンドを転送するタイミングを変更する。対象ソフトウェアの開発者は、プロセッサ１０１の待ち時間が無いように修正された変更アドレスに基づき、対象ソフトウェアにおいてドライバコマンドを実行するタイミングを設定する。上記の方法によれば、対象ソフトウェアのドライバコマンドの設定自体を修正しながらエラーアクセスを減少させる方法よりも、対象ソフトウェアの修正が容易であり、対象ソフトウェアにバグが混入する危険性も低くなる。その結果、対象ソフトウェアの開発者の手作業によるドライバコマンドの実行タイミングを調整する手間の増大が抑制される。
【００５９】
以上に説明したように、本発明の実施の形態に係るシミュレーション装置によれば、システムを制御する対象ソフトウェアの指示による動的再構成可能ハードウェアの回路変更に必要な時間を算出できる。そして、対象ソフトウェアの開発者は、エラーアクセスがなくなるまで対象ソフトウェアを修正することによって、プロセッサ１０１の待ち時間が無い最適なタイミングで回路変更を指示する命令が実行されるようにドライバコマンドを設定できる。つまり、ソフトウェア開発者は、図１に示したシミュレーション装置によって、対象ソフトウェアの回路変更を指示する最適なタイミングを解析可能である。その結果、回路変更の待ち時間に起因するシステム全体のスループットの低下が防止される。
【００６０】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００６１】
既に述べた実施の形態の説明においては、含まれる動的再構成可能ハードウェアが一つであるシステムについて説明したが、複数の動的再構成可能ハードウェアを含むシステムについてもシミュレーション回路を構成して対象ソフトウェアの解析が可能である。
【００６２】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施の形態に係るシミュレーション装置の構成を示す模式図である。
【図２】本発明の実施の形態に係るシミュレーション装置を用いて解析するソフトウェアが制御するシステムの例を示す模式図である。
【図３】図２に示したシステムの動作をシミュレートするシミュレーション回路を示す模式図である。
【図４】本発明の実施の形態に係るシミュレーション装置を用いて解析するソフトウェアの一部である。
【図５】本発明の実施の形態に係るシミュレーション装置が使用するハードウェア構成情報の例を示す表である。
【図６】本発明の実施の形態に係るシミュレーション装置によって作成される管理テーブルの例を示す表である。
【図７】本発明の実施の形態に係るシミュレーション方法の例を説明するためのフローチャートである。
【図８】本発明の実施の形態に係るシミュレーション方法の他の例を説明するためのフローチャートである。
【図９】本発明の実施の形態に係るシミュレーション装置によって作成されるログ情報の例を示す表である。
【符号の説明】
【００６４】
１０…解析モジュール
２０…メモリ
３０…入力装置
４０…出力装置
５０…シミュレーション回路記憶装置
２０１…プロセッサモデル
２０２…ハードウェアモデル
２０３…メモリコントローラモデル
２０４…メモリモデル
２０５…バスモデル
２１１〜２１ｎ…ハードウェア動作モデル
２２０…アクセス制御手段
２３０…管理手段
２３１…管理テーブル記憶領域
２４０…切り替え手段
【図１】
2007317102.tif 000003
【図２】
2007317102.tif 000004
【図３】
2007317102.tif 000005
【図４】
2007317102.tif 000006
【図５】
2007317102.tif 000007
【図６】
2007317102.tif 000008
【図７】
2007317102.tif 000009
【図８】
2007317102.tif 000010
【図９】
2007317102.tif 000011