(57)【要約】【課題】シミュレーション時間を短縮可能なハードウェア／ソフトウェア協調シミュレーション装置等を提供すること。【解決手段】本発明にかかるハードウェア／ソフトウェア協調シミュレーション装置は、ードウェアエミュレータとシステムシミュレータとを備え、ハードウェアエミュレータは、複数のユーザデータを生成するユーザロジックと、複数のユーザデータの変化をそれぞれ検出する複数の変化検出回路と、複数の変化検出回路による検出結果をそれぞれ格納する複数のフリップフロップと、複数のフリップフロップに格納された複数の検出結果に応じた終了フラグ信号を生成する論理和回路と、を備える。システムシミュレータは、終了フラグ信号に基づいて複数のユーザデータのいずれかが変化したと判断した場合に複数のユーザデータを順に読み込み、各ユーザデータの読み込みの終了に応じて対応するフリップフロップをクリアさせる。【選択図】図１
2012037992.tif 000002
【特許請求の範囲】
【請求項１】
互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備え、
前記ハードウェアエミュレータは、
複数の出力データを生成するユーザロジックと、
前記複数の出力データの変化をそれぞれ検出する複数の変化検出回路と、
前記複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、
前記複数の検出結果格納用レジスタにそれぞれ格納された複数の検出結果に応じたフラグ信号を生成する論理回路と、を備え、
前記システムシミュレータは、
前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込むとともに、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせるハードウェア／ソフトウェア協調シミュレーション装置。
【請求項２】
前記論理回路は、
前記複数の検出結果格納用レジスタに格納された複数の検出結果の論理和を、前記フラグ信号として生成する論理和回路であることを特徴とする請求項１に記載のハードウェア／ソフトウェア協調シミュレーション装置。
【請求項３】
前記複数の変化検出回路は、それぞれ、
更新前の出力データを格納するデータ格納用レジスタと、
更新後の出力データと更新前の出力データとの排他的論理和を、前記検出結果として出力する排他的論理和回路と、を備えた請求項１又は２に記載のハードウェア／ソフトウェア協調シミュレーション装置。
【請求項４】
互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備えたハードウェア／ソフトウェア協調シミュレーション装置のデバッグ方法であって、
前記ハードウェアエミュレータにおいて、
複数の出力データを生成し、
前記複数の出力データの変化を検出し、
複数の検出結果をそれぞれ複数の検出結果格納用レジスタに格納し、
前記複数の検出結果格納用レジスタにそれぞれ格納された前記複数の検出結果に応じたフラグ信号を生成し、
前記システムシミュレータにおいて、
前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込み、
各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせるハードウェア／ソフトウェア協調シミュレーション装置のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア／ソフトウェア協調シミュレーション装置及びそのデバッグ方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）の大規模化やプログラマブル素子の規模制限などにより、ＬＳＩの全ての論理回路をシミュレーションアクセラレータ或いはハードウェアエミュレータ上に実現することが困難な状況になってきている。そこで、ソフトウェアによりシミュレーションを行うシステムシミュレータとハードウェアエミュレータとを協調させて動作させることによって、システム全体のシミュレーションを行う協調シミュレーションが用いられるようになった。
【０００３】
しかし、ＬＳＩの更なる大規模化に伴い、システムシミュレータとハードウェアエミュレータとの間のデータ通信量の増加により、シミュレーション時間が増大している。したがって、シミュレータとエミュレータとの間で効率良いデータ通信を行うことによる、シミュレーション時間の短縮が望まれている。
【０００４】
このような要求に対する解決策が、特許文献１に開示されている。特許文献１に開示されている関連する技術（ハードウェア／ソフトウェア協調シミュレーション装置）は、ハードウェアエミュレータとシステムシミュレータとの間のデータ通信量を減少させることにより、シミュレーションの動作スピードを向上させることを目的としている。
【０００５】
図４に、特許文献１に開示されているハードウェア／ソフトウェア協調シミュレーション装置のブロック図を示す。図４に示すハードウェア／ソフトウェア協調シミュレーション装置は、システムシミュレータ１と、ハードウェアエミュレータ２と、を備える。
【０００６】
システムシミュレータ１は動作モデル６を実装しており、ハードウェアエミュレータ２はユーザロジック５を実装している。協調シミュレーションの実行時には、ハードウェアエミュレータ２にはシステムシミュレータ１からの入力信号３が入力され、また、ハードウェアエミュレータ２から出力信号４−１−１〜４−１−ｎ（ｎは２以上の整数）がシステムシミュレータ１に送出される。入力信号３には、システムシミュレータ１からハードウェアエミュレータ２に供給されるクロック信号９が含まれている。また、システムシミュレータ１には、ハードウェアエミュレータ２から送出される出力信号４−１−１〜４−１−ｎを、信号波形表示等により観測するためのデバッグ環境７が実装されている。
【０００７】
ハードウェアエミュレータ２から送出される１つのグループの信号は、１ビットの出力信号４−１−１〜４−１−ｎに分割されて送出されるようになっている。そして、ハードウェアエミュレータ２は、出力信号４−１−１〜４−１−ｎそれぞれについて、その変化を検出する変化検出回路２０−１−１〜２０−１−ｎを実装している。また、ハードウェアエミュレータ２は、変化検出回路２０−１−１〜２０−１−ｎから出力される変化検出信号２４−１〜２４−ｎの論理和演算を行って変化検出信号８−１を出力する論理和回路２５を備えている。
【０００８】
変化検出回路２０−１−１〜２０−１−ｎはそれぞれ同一の構成である。また、変化検出回路２０−１−ｎは、ＤフリップフロップであるところのＦＦ２１−１−ｎと、排他的論理和演算を行う排他的論理和回路２３−１−ｎと、を有する。ＦＦ２１−１−ｎにおいて、データ入力端子に１ビットの出力信号４−１−ｎが入力され、クロック入力端子にクロック信号９が入力される。そして、ＦＦ２１−１−ｎは、出力信号４−１−ｎを１クロック遅延させた遅延信号２２−１−ｎを出力する。排他的論理和回路２３−１−ｎは、出力信号４−１−ｎと遅延信号２２−１−ｎとの排他的論理和演算を行い、出力信号４−１−ｎが遅延信号２２−１−ｎと異なっていることを検出すると、変化検出信号２４−ｎとして論理値１を出力する。これは、変化検出回路２０−１−１〜２０−１−ｎについても同様である。
【０００９】
論理和回路２５は、変化検出回路２０−１−１〜２０−１−ｎから出力される変化検出信号２４−１〜２４−ｎの論理和演算を行い、変化検出信号２４−１〜２４−ｎの何れかが論理値１を示している場合に、変化検出信号８−１として論理値１を出力する。
【００１０】
つまり、ハードウェアエミュレータ２から送出される１つのグループの信号、すなわち、出力信号４−１−１〜４−１−ｎの何れかに変化が生じた時点で、変化検出信号８−１として論理値１が出力される。したがって、システムシミュレータ１は、変化検出信号８−１を常時監視し、変化検出信号８−１が論理値１を示した時点で、出力信号４−１−１〜４−１−ｎの値を取り込んで動作モデル６に渡す。
【００１１】
このように、図４に示すハードウェア／ソフトウェア協調シミュレーション装置では、ハードウェアエミュレータ２から送出される出力信号４−１−１〜４−１−ｎの何れかに変化があった場合にだけ、システムシミュレータ１が出力信号４−１−１〜４−１−ｎを取り込む。それにより、ハードウェアエミュレータとシステムシミュレータとの間の通信量が減少し、ハードウェア／ソフトウェア協調シミュレーションの動作スピードを向上させることができる。
【００１２】
さらに、図４に示すハードウェア／ソフトウェア協調シミュレーション装置では、ハードウェアエミュレータ２から送出される出力信号４−１−１〜４−１−ｎの何れかに変化が生じた場合、各々の変化検出信号２４−１〜２４−ｎが論理和回路２５によってまとめられてシステムシミュレータ１に通知される。したがって、ハードウェアエミュレータ２とシステムシミュレータ１と間のインタフェース信号の数を減少させることができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００５−３３２１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
従来のハードウェア／ソフトウェア協調シミュレーション装置では、上述のように、変化検出信号８−１が論理値１を示した場合、即ち、出力信号（ユーザデータ）４−１−１〜４−１−ｎの何れかに変化があった場合、システムシミュレータ１がすべての出力信号４−１−１〜４−１−ｎを取り込む。
【００１５】
ここで、システムシミュレータ１が順に出力信号４−１−１〜４−１−ｎの取り込みを行っている間、取り込みを終えた出力信号に対応する変化検出信号は元の論理値を維持している。結果として、この期間中、変化検出信号８−１は論理値１を維持することになる。したがって、システムシミュレータ１は、信号変化した出力信号のすべてを取り込み終えたとしても、信号変化していない出力信号を含めたすべての出力信号４−１−１〜４−１−ｎを取り込まなければならない。
【００１６】
このように、システムシミュレータ１は、信号変化していない出力信号を含めたすべての出力信号４−１−１〜４−１−ｎを取り込んでいるため、シミュレーション時間が長くなるという問題があった。
【課題を解決するための手段】
【００１７】
本発明にかかるハードウェア／ソフトウェア協調シミュレーション装置は、互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備え、前記ハードウェアエミュレータは、複数の出力データを生成するユーザロジックと、前記複数の出力データの変化をそれぞれ検出する複数の変化検出回路と、前記複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、前記複数の検出結果格納用レジスタにそれぞれ格納された複数の検出結果に応じたフラグ信号を生成する論理回路と、を備え、前記システムシミュレータは、前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込むとともに、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせる。
【００１８】
また、本発明にかかるハードウェア／ソフトウェア協調シミュレーション装置のデバッグ方法は、互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備えたハードウェア／ソフトウェア協調シミュレーション装置のデバッグ方法であって、前記ハードウェアエミュレータにおいて、複数の出力データを生成し、前記複数の出力データの変化を検出し、複数の検出結果をそれぞれ複数の検出結果格納用レジスタに格納し、前記複数の検出結果格納用レジスタにそれぞれ格納された前記複数の検出結果に応じたフラグ信号を生成し、前記システムシミュレータにおいて、前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込み、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせる。
【００１９】
上述のような回路構成及びそのデバッグ方法により、シミュレーション時間を短縮することができる。
【発明の効果】
【００２０】
本発明により、シミュレーション時間を短縮することが可能なハードウェア／ソフトウェア協調シミュレーション装置及びそのデバッグ方法を提供することができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施の形態１にかかるハードウェア／ソフトウェア協調シミュレーション装置を示すブロック図である。
【図２】本発明の実施の形態１にかかるハードウェア／ソフトウェア協調シミュレーション装置の動作を示すフローチャートである。
【図３】本発明の実施の形態１にかかるハードウェア／ソフトウェア協調シミュレーション装置の動作を示すタイミングチャートである。
【図４】従来技術のハードウェア／ソフトウェア協調シミュレーション装置を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として本発明の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【００２３】
実施の形態１
図１は、本発明の実施の形態１にかかるハードウェア／ソフトウェア協調シミュレーション装置のブロック図である。
【００２４】
図１に示すハードウェア／ソフトウェア協調シミュレーション装置は、ユーザロジックを実装するハードウェアエミュレータＦ１０００と、動作モデルを実装するシステムシミュレータＦ２０００と、を備え、これらを協調させて動作させることによりシミュレーションを行うことを特徴とする。
【００２５】
具体的には、シミュレーションによって検証したいＬＳＩシステムのアーキテクチャは、複数の機能ブロックから構成されている。各機能ブロックのうちの一部は、ハードウェアエミュレータＦ１０００によってエミュレートされるようになっており、ハードウェアエミュレータＦ１０００内のＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のプログラマブル素子上に、ユーザロジックＦ１１００として構築されている。各機能ブロックの他の部分は、システムシミュレータＦ２０００においてソフトウェアによりシミュレートされるようになっており、Ｃ言語等で記述される動作モデルＦ２２００として構成されている。動作モデルＦ２２００には、機能ブロックごとの機能・動作及び機能ブロック間の接続関係が記述されており、各機能ブロックをシミュレーション動作させると、動作モデルＦ２２００とユーザロジックＦ１１００との間でデータ送受信が行われる。
【００２６】
まず、ハードウェアエミュレータＦ１０００の回路構成を、図１を用いて説明する。
【００２７】
ハードウェアエミュレータＦ１０００は、ユーザロジックＦ１１００と、変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎ（ｎは２以上の整数）と、更新フラグ用Ｄフリップフロップ（検出結果格納用レジスタ）Ｆ１２２０−１〜Ｆ１２２０−ｎと、論理和回路（論理回路）Ｆ１３００と、を備える。
【００２８】
（ユーザロジックＦ１１００）
ユーザロジックＦ１１００は、ハードウェア同期用クロックＣＬＫ＿Ｈに同期して、ユーザロジック検証用パターン供給信号ＰＡＴに応じたユーザデータ（出力データ）ＰＤ−１〜ＰＤ−ｎを生成する回路である。
【００２９】
ユーザロジックＦ１１００において、システムシミュレータＦ２０００から出力されたユーザロジック検証用パターン供給信号ＰＡＴがデータ入力端子に入力され、システムシミュレータＦ２０００から出力されたハードウェア同期用クロックＣＬＫ＿Ｈがクロック端子に入力され、ユーザデータＰＤ−１〜ＰＤ−ｎがそれぞれのデータ出力端子から出力される。
【００３０】
（変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎ）
変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎは、それぞれユーザデータＰＤ−１〜ＰＤ−ｎの更新前後の変化を検出する回路である。例えば、変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎは、それぞれユーザデータＰＤ−１〜ＰＤ−ｎが更新前後で変化している場合には、論理値１の変化検出信号ＦＬ−１〜ＦＬ−ｎをそれぞれ出力する。他方、変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎは、それぞれユーザデータＰＤ−１〜ＰＤ−ｎが更新前後で変化していない場合には、論理値０の変化検出信号ＦＬ−１〜ＦＬ−ｎをそれぞれ出力する。
【００３１】
変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎは、それぞれ、Ｄフリップフロップ（データ格納用レジスタ）Ｆ１２１１−１〜Ｆ１２１１−ｎと、排他的論理和回路Ｆ１２１２−１〜Ｆ１２１２−ｎと、を有する。なお、変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎは、それぞれ同一の回路構成である。
【００３２】
変化検出回路１２１０−１内のＤフリップフロップＦ１２１１−１において、ユーザロジックＦ１１００から出力されたユーザデータＰＤ−１がデータ入力端子に入力され、システムシミュレータＦ２０００から出力されたハードウェア同期用クロックＣＬＫ＿Ｈがクロック端子に入力され、遅延ユーザデータＰＦ−１がデータ出力端子から出力される。
【００３３】
また、変化検出回路１２１０−１内の排他的論理和回路Ｆ１２１２−１において、ユーザロジックＦ１１００から出力されたユーザデータＰＤ−１と、変化検出回路１２１０−１から出力された遅延ユーザデータＰＦ−１と、がそれぞれの入力端子に入力され、これらの排他的論理和である変化検出信号ＦＬ−１が出力端子から出力される。
【００３４】
このような回路構成は、変化検出回路１２１０−２〜１２１０−ｎにも同様に採用されている。例えば、変化検出回路１２１０−ｎ内のＤフリップフロップＦ１２１１−ｎにおいて、ユーザロジックＦ１１００から出力されたユーザデータＰＤ−ｎがデータ入力端子に入力され、システムシミュレータＦ２０００から出力されたハードウェア同期用クロックＣＬＫ＿Ｈがクロック端子に入力され、遅延ユーザデータＰＦ−ｎがデータ出力端子から出力される。
【００３５】
そして、変化検出回路１２１０−ｎ内の排他的論理和回路Ｆ１２１２−ｎにおいて、ユーザロジックＦ１１００から出力されたユーザデータＰＤ−ｎと、変化検出回路１２１０−ｎから出力された遅延ユーザデータＰＦ−ｎと、がそれぞれの入力端子に入力され、これらの排他的論理和である変化検出信号ＦＬ−ｎが出力端子から出力される。
【００３６】
（更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎ）
更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎは、変化検出信号ＦＬ−１〜ＦＬ−ｎをそれぞれ格納する回路である。
【００３７】
更新フラグ用ＤフリップフロップＦ１２２０−１において、変化検出信号ＦＬ−１がデータ端子に入力され、システムシミュレータＦ２０００から出力された更新フラグクリア信号ＣＬＥＡＲ−１がクリア端子に入力され、システムシミュレータＦ２０００から出力されたシステムシミュレータ同期用クロックＣＬＫ＿Ｓがクロック端子に入力され、更新フラグ信号ＣＦ−１がデータ出力端子から出力される。
【００３８】
このような回路構成は、更新フラグ用ＤフリップフロップＦ１２２０−２〜Ｆ１２２０−ｎにも同様に採用されている。例えば、更新フラグ用ＤフリップフロップＦ１２２０−ｎにおいて、変化検出信号ＦＬ−ｎがデータ端子に入力され、システムシミュレータＦ２０００から出力された更新フラグクリア信号ＣＬＥＡＲ−ｎがクリア端子に入力され、システムシミュレータＦ２０００から出力されたシステムシミュレータ同期用クロックＣＬＫ＿Ｓがクロック端子に入力され、更新フラグ信号ＣＦ−ｎがデータ出力端子から出力される。
【００３９】
（論理和回路Ｆ１３００）
論理和回路Ｆ１３００は、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの論理和を終了フラグ信号（フラグ信号）ＦＧとして出力する回路である。
【００４０】
論理和回路Ｆ１３００において、更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎから出力された更新フラグ信号ＣＦ−１〜ＣＦ−ｎがそれぞれの入力端子に入力され、これらの論理和である終了フラグ信号ＦＧが出力端子から出力される。
【００４１】
次に、システムシミュレータＦ２０００の回路構成を、図１を用いて説明する。
【００４２】
システムシミュレータＦ２０００は、ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００と、動作モデルＦ２２００と、デバッグ環境Ｆ２３００と、を備える。
【００４３】
（ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００）
ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００は、システムシミュレータＦ２０００とハードウェアエミュレータＦ１０００との間のデータ送受信を制御する部である。
【００４４】
ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００において、ハードウェアエミュレータＦ１０００から出力された終了フラグ信号ＦＧが入力端子に入力され、システムシミュレータ同期用クロックＣＬＫ＿Ｓ、ハードウェア同期用クロックＣＬＫ＿Ｈ及び更新フラグクリア信号ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎがそれぞれの出力端子から出力される。
【００４５】
（動作モデルＦ２２００）
動作モデルＦ２２００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、ユーザロジック検証用パターン供給信号ＰＡＴをユーザロジックＦ１１００に対した出力する回路である。
【００４６】
動作モデルＦ２２００において、ハードウェアエミュレータＦ１０００から出力されたユーザデータＰＤ−１〜ＰＤ−ｎがそれぞれのデータ入力端子に入力され、ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００から出力されたシステムシミュレータ同期用クロックＣＬＫ＿Ｓがクロック端子に入力され、ユーザロジック検証用パターン供給信号ＰＡＴがデータ出力端子から出力される。
（デバッグ環境Ｆ２３００）
デバッグ環境Ｆ２３００は、ハードウェアエミュレータ２から出力されるユーザデータＰＤ−１〜ＰＤ−ｎを、信号波形表示等により観測するためのものである。
【００４７】
デバッグ環境Ｆ２３００において、ハードウェアエミュレータＦ１０００から出力されたユーザデータＰＤ−１〜ＰＤ−ｎがそれぞれのデータ入力端子に入力され、ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００から出力されたシステムシミュレータ同期用クロックＣＬＫ＿Ｓがクロック端子に入力される。
【００４８】
（フローチャート）
図１に示すハードウェア／ソフトウェア協調シミュレーション装置の動作を、図２を用いて説明する。なお、図２は、図１に示すハードウェア／ソフトウェア協調シミュレーション装置の動作を示すフローチャートである。
【００４９】
図２に示すように、ハードウェアエミュレータＦ１０００とシステムシミュレータＦ２０００とは、連携して動作する。ここでは、まず、システムシミュレータＦ２０００の動作について説明する。
【００５０】
システムシミュレータＦ２０００は、最初に、ユーザロジックＦ１１００用の検証パターンを、ユーザロジック検証用パターン供給信号ＰＡＴとして、ユーザロジックＦ１１００に対して出力する（Ｓｔｅｐ１１０）。具体的には、システムシミュレータＦ２０００に設けられた動作モデルＦ２２００が、内部に格納されているユーザロジックＦ１１００用の検証パターンを、ユーザロジック検証用パターン供給信号ＰＡＴとして、ユーザロジックＦ１１００に対して出力する。なお、動作モデルＦ２２００は、ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００から出力されるシステムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、ユーザロジック検証用パターン供給信号ＰＡＴを出力する。
【００５１】
次に、システムシミュレータＦ２０００は、ハードウェアエミュレータＦ１０００に対して、ユーザロジック動作要求を行う（Ｓｔｅｐ１２０）。具体的には、システムシミュレータＦ２０００に設けられたハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００が、ハードウェア同期用クロックＣＬＫ＿Ｈとしてパルス信号を生成し、ハードウェアエミュレータＦ１０００に対して出力する。
【００５２】
次に、システムシミュレータＦ２０００は、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新が可能となる時間まで待つ（Ｓｔｅｐ１３０）。例えば、システムシミュレータＦ２０００は、ハードウェア同期用クロックＣＬＫ＿Ｈの１サイクル（パルス幅２個分）以上の時間が経過したことにより、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新が可能となったと判断する。なお、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新が可能となると、ユーザロジック動作は終了する。
【００５３】
次に、システムシミュレータＦ２０００は、ハードウェアエミュレータＦ１０００に対して、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新要求を行う（Ｓｔｅｐ１４０）。具体的には、システムシミュレータＦ２０００に設けられたハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００が、システムシミュレータ同期用クロックＣＬＫ＿Ｓとしてパルス信号を生成し、ハードウェアエミュレータＦ１０００に対して出力する。
【００５４】
次に、システムシミュレータＦ２０００は、ハードウェアエミュレータＦ１０００から出力された終了フラグ信号ＦＧを読み込む（Ｓｔｅｐ１５０）。具体的には、システムシミュレータＦ２０００に設けられたハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００が、終了フラグ信号ＦＧを読み込む。
【００５５】
ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００が終了フラグ信号ＦＧの論理値を０以外（つまり、論理値１）と判断した場合（Ｓｔｅｐ１６０のＡ）、システムシミュレータＦ２０００は、まず、ユーザデータＰＤ−１を読み込む（Ｓｔｅｐ１７０）。具体的には、システムシミュレータＦ２０００に設けられた動作モデルＦ２２００及びデバッグ環境Ｆ２３００が、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、ユーザデータＰＤ−１を読み込む。
【００５６】
システムシミュレータＦ２０００は、ユーザデータＰＤ−１の読み込みを終えると、更新フラグクリア信号ＣＬＥＡＲ−１の論理値を０に遷移させる（Ｓｔｅｐ１８０）。具体的には、システムシミュレータＦ２０００に設けられたハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００は、ユーザデータＰＤ−１の読み込みが終了すると、更新フラグクリア信号ＣＬＥＡＲ−１の論理値を０に遷移させる。それにより、ハードウェアエミュレータＦ１０００に設けられた更新フラグ用ＤフリップフロップＦ１２２０−１はクリア（リセット）され、更新フラグ信号ＣＦ−１の論理値が０になる。
【００５７】
その後、システムシミュレータＦ２０００は、終了フラグ信号ＦＧを再度読み込み（Ｓｔｅｐ１５０）、終了フラグ信号ＦＧの論理値が１の場合（Ｓｔｅｐ１６０のＡ）には、図２のフローチャートに沿って同様の動作を繰り返す。つまり、システムシミュレータＦ２０００は、終了フラグ信号ＦＧの論理値が１の場合（Ｓｔｅｐ１６０のＡ）、次に、ユーザデータＰＤ−２を読み込む（Ｓｔｅｐ１７０）。システムシミュレータＦ２０００は、ユーザデータＰＤ−２の読み込みを終えると、更新フラグクリア信号ＣＬＥＡＲ−２の論理値を０に遷移させる（Ｓｔｅｐ１８０）。終了フラグ信号ＦＧの論理値が１を示す間、このような動作は繰り返され、最大でユーザデータＰＤ−ｎの読み込みまで行われる。
【００５８】
このように、各ユーザデータの読み込みの終了に応じて、対応する更新フラグ用Ｄフリップフロップがクリアされる。したがって、信号変化したユーザデータの読み込みがすべて終了すると、すべての更新フラグ信号ＣＦ−１〜ＣＦ−ｎの論理値が０になり、それに応じて終了フラグ信号ＦＧの論理値は０に遷移する。それにより、その後の残りのユーザデータの読み込みは行われない。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【００５９】
ハードウェアエミュレータＩ／Ｆ制御部Ｆ２１００が終了フラグ信号ＦＧの論理値を０と判断した場合（Ｓｔｅｐ１６０のＢ）、つまり、信号変化したユーザデータの読み込みがすべて終了した場合、システムシミュレータＦ２０００は、すべての更新フラグクリア信号ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎの論理値を１に遷移させる（Ｓｔｅｐ１９０）。それにより、ハードウェアエミュレータＦ１０００に設けられた更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎのクリアは解除される。
【００６０】
その後、システムシミュレータＦ２０００は、ユーザロジックＦ１１００に対してすべての検証パターンを供給したか否かを判断し（Ｓｔｅｐ２００）、供給が完了している場合にはシミュレーションを終了する（Ｓｔｅｐ２００のＡ）。他方、システムシミュレータＦ２０００は、すべての検証パターンの供給が完了していない場合（Ｓｔｅｐ２００のＢ）には、残りの検証パターンの供給を続け（Ｓｔｅｐ１１０）、以降、図２のフローチャートに沿って同様の動作を繰り返す。
【００６１】
次に、ハードウェアエミュレータＦ１０００の動作について説明する。
【００６２】
ハードウェアエミュレータＦ１０００は、システムシミュレータＦ２０００からのユーザロジック動作要求（Ｓｔｅｐ１２０）を受けると、ユーザロジック動作を開始する（Ｓｔｅｐ３１０）。具体的には、ハードウェアエミュレータＦ１０００に設けられたユーザロジックＦ１１００が、ハードウェア同期用クロックＣＬＫ＿Ｈに同期して、ユーザロジック検証用パターン供給信号ＰＡＴに応じたユーザデータＰＤ−１〜ＰＤ−ｎを出力する。
【００６３】
また、変化検出回路Ｆ１２１０−１に設けられたＤフリップフロップＦ１２１１−１は、ハードウェア同期用クロックＣＬＫ＿Ｈに同期して、更新前のユーザデータＰＤ−１を検出し、遅延ユーザデータＰＦ−１として出力する。
【００６４】
そして、変化検出回路Ｆ１２１０−１は、遅延ユーザデータＰＦ−１とユーザデータＰＤ−１とを排他的論理和した変化検出信号ＦＬ−１を出力する。つまり、変化検出回路Ｆ１２１０−１は、ユーザデータＰＤ−１が変化したか否かを検出する。
【００６５】
このような動作は、変化検出回路Ｆ１２１０−２〜Ｆ１２１０−ｎにも同様に採用されている。つまり、変化検出回路Ｆ１２１０−ｎに設けられたＤフリップフロップＦ１２１１−ｎは、ハードウェア同期用クロックＣＬＫ＿Ｈに同期して、更新前のユーザデータＰＤ−ｎを検出し、遅延ユーザデータＰＦ−ｎとして出力する。
【００６６】
そして、変化検出回路Ｆ１２１０−ｎは、遅延ユーザデータＰＦ−ｎとユーザデータＰＤ−ｎとを排他的論理和した変化検出信号ＦＬ−ｎを出力する。つまり、変化検出回路Ｆ１２１０−ｎは、ユーザデータＰＤ−ｎが変化したか否かを検出する。
【００６７】
次に、ハードウェアエミュレータＦ１０００は、システムシミュレータＦ２０００からの更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新要求（Ｓｔｅｐ１４０）を受けると、更新フラグ信号ＣＦ−１〜ＣＦ−ｎの更新を開始する（Ｓｔｅｐ３４０）。具体的には、更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎが、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、それぞれ変化検出信号ＦＬ−１〜ＦＬ−ｎに応じた更新フラグ信号ＣＦ−１〜ＣＦ−ｎを出力する。つまり、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、更新フラグ信号ＣＦ−１〜ＣＦ−ｎが更新される。
【００６８】
そして、論理和回路Ｆ１３００は、更新フラグ信号ＣＦ−１〜ＣＦ−ｎを論理和した終了フラグ信号ＦＧを、システムシミュレータＦ２０００に対して出力する（Ｓｔｅｐ３５０）。
【００６９】
ここで、終了フラグ信号ＦＧの論理値が１の場合（Ｓｔｅｐ１６０のＡ）、ハードウェアエミュレータＦ１０００は、更新後のユーザデータＰＤ−１〜ＰＤ−ｎをシステムシミュレータＦ２０００に対して出力する（Ｓｔｅｐ３６０）。そして、システムシミュレータＦ２０００は、前述のように、終了フラグ信号ＦＧの論理値が１を示す間、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、ユーザデータＰＤ−１〜ＰＤ−ｎを順に読み込む（Ｓｔｅｐ１７０）。
【００７０】
なお、更新フラグクリア信号ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎのいずれかの論理値が０に遷移すると（Ｓｔｅｐ１８０）、対応する更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎはクリアされる（Ｓｔｅｐ３７０）。また、本実施の形態では、更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎは、それぞれシステムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち下がりに同期してクリアされる。
【００７１】
したがって、信号変化したユーザデータの読み込みがすべて終了すると、すべての更新フラグ信号ＣＦ−１〜ＣＦ−ｎの論理値が０になり、それに応じて終了フラグ信号ＦＧの論理値は０に遷移する。それにより、システムシミュレータＦ２０００において、その後の残りのユーザデータの読み込みは行われない。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【００７２】
他方、終了フラグ信号ＦＧの論理値が０の場合（Ｓｔｅｐ１６０のＢ）、すべての更新フラグクリア信号ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎの論理値が１に遷移するため（Ｓｔｅｐ１９０）、すべての更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎのクリアは解除される（Ｓｔｅｐ３８０）。
【００７３】
（タイミングチャート）
次に、図１に示すハードウェア／ソフトウェア協調シミュレーション装置の動作を、図３を用いて説明する。なお、図３は、図１に示すハードウェア／ソフトウェア協調シミュレーション装置の動作を示すタイミングチャートである。
【００７４】
時刻Ｔ０にて、システムシミュレータＦ２０００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち上がりに同期して、ユーザロジック検証用パターン供給信号ＰＡＴをハードウェアエミュレータＦ１０００に対して出力する。
【００７５】
時刻Ｔ１にて、システムシミュレータＦ２０００は、ハードウェア同期用クロックＣＬＫ＿Ｈとしてパルス信号を生成し、ハードウェアエミュレータＦ１０００に対して出力する。換言すると、時刻Ｔ１にて、ハードウェア同期用クロックＣＬＫ＿Ｈが立ち上がる。それにより、ハードウェアエミュレータＦ１０００では、ユーザロジックＦ１１００がユーザロジック検証用パターン供給信号ＰＡＴに応じたユーザデータＰＤ−１〜ＰＤ−ｎを出力するとともに、変化検出回路Ｆ１２１０−１〜Ｆ１２１０−ｎがそれぞれ変化検出信号ＦＬ−１〜ＦＬ−ｎを出力する。なお、変化検出信号ＦＬ−１〜ＦＬ−ｎは、それぞれ遅延ユーザデータＰＦ−１〜ＰＦ−ｎとユーザデータＰＤ−１〜ＰＤ−ｎとを排他的論理和したものである。図３の例では、ユーザデータＰＤ−１の論理値は０から１に遷移し、それに応じて変化検出信号ＦＬ−１の論理値は０から１に遷移している。他方、ユーザデータＰＤ−ｎの論理値は０を維持し、それに応じて変化検出信号ＦＬ−ｎの論理値は０を維持している。つまり、図３の例では、ユーザデータＰＤ−１〜ＰＤ−ｎのうちユーザデータＰＤ−１のみが信号変化している。
【００７６】
時刻Ｔ１から所定の時間経過後の時刻Ｔ２にて、システムシミュレータＦ２０００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓとしてパルス信号を生成し、ハードウェアエミュレータＦ１０００に対して出力する。換言すると、時刻Ｔ２にて、システムシミュレータ同期用クロックＣＬＫ＿Ｓが立ち上がる。それにより、更新フラグ信号ＣＦ−１〜ＣＦ−ｎが更新され、それに応じて終了フラグ信号ＦＧが更新される。図３の例では、更新フラグ信号ＣＦ−１の論理値が０から１に遷移し、それに応じて終了フラグ信号ＦＧの論理値が０から１に遷移している。なお、時刻Ｔ３、Ｔ５においてもシステムシミュレータ同期用クロックＣＬＫ＿Ｓが立ち上がる。また、所定の時間とは、例えば、ハードウェア同期用クロックＣＬＫ＿Ｈの１サイクル分（パルス幅２個分）の時間である。
【００７７】
時刻Ｔ３にて、終了フラグ信号ＦＧの論理値が１であるため、システムシミュレータＦ２０００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち上がりに同期して、まずユーザデータＰＤ−１の読み込みを行う。図３の例では、システムシミュレータＦ２０００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち上がりに同期してユーザデータＰＤ−１（論理値１）を読み込む。このように、システムシミュレータＦ２０００は、終了フラグ信号ＦＧの論理値が１を示す間、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち上がりに同期してユーザデータＰＤ−１〜ＰＤ−ｎを順に読み込む。なお、後述するが、図３の例では、信号変化していないユーザデータＰＤ−２〜ＰＤ−ｎの読み込みは行われない。
【００７８】
時刻Ｔ４にて、システムシミュレータＦ２０００は、ユーザデータＰＤ−１の読み込みを終えると、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち下がりに同期して、更新フラグクリア信号ＣＬＥＡＲ−１の論理値を０に遷移させる。それにより、ハードウェアエミュレータＦ１０００に設けられた更新フラグ用ＤフリップフロップＦ１２２０−１はクリアされる。図３の例では、更新フラグ信号ＣＦ−１の論理値が１から０に遷移する。また、更新前後でユーザデータＰＤ−２〜ＰＤ−ｎが変化していないため、更新フラグ信号ＣＦ−２〜ＣＦ−ｎの論理値は０を示したままである。それにより、終了フラグ信号ＦＧの論理値は１から０に遷移する。
【００７９】
時刻Ｔ５にて、終了フラグ信号ＦＧの論理値が０であるため、システムシミュレータＦ２０００は、ユーザデータＰＤ−１〜ＰＤ−ｎの読み込みを中止する。さらに、システムシミュレータＦ２０００は、システムシミュレータ同期用クロックＣＬＫ＿Ｓに同期して、ユーザロジックＦ１１００用検証パターンを更新し、ユーザロジック検証用パターン供給信号ＰＡＴとして、ハードウェアエミュレータＦ１０００に対して出力する。
【００８０】
時刻Ｔ６にて、システムシミュレータＦ２０００は、再びユーザデータＰＤ−１〜ＰＤ−ｎを読み込み可能にさせるため、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち下がりに同期して、更新フラグクリア信号ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎの論理値を１に遷移させる。それにより、更新フラグ用ＤフリップフロップＦ１２２０−１〜Ｆ１２２０−ｎのクリアは解除される。
【００８１】
このような時刻Ｔ０〜Ｔ６の動作が、時刻Ｔ７以降、ユーザロジックＦ１１００の検証パターンが終了するまで繰り返される。なお、ユーザデータＰＤ−１〜ＰＤ−ｎのうち読み込み対象となるユーザデータの数に応じて、システムシミュレータ同期用クロックＣＬＫ＿Ｓの立ち上がり回数は異なる。
【００８２】
以上のように、本実施の形態にかかるハードウェア／ソフトウェア協調シミュレーション装置は、ハードウェアエミュレータにおいて、複数のユーザデータを生成するユーザロジックと、複数のユーザデータの変化をそれぞれ検出する複数の変化検出回路と、複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、複数の検出結果格納用レジスタから出力される検出結果に応じたフラグ信号を生成する論理回路と、を備える。また、システムシミュレータは、フラグ信号に基づいて複数のユーザデータのいずれかが変化したと判断した場合に、複数のユーザデータを順に読み込む。ここで、本実施の形態にかかるハードウェア／ソフトウェア協調シミュレーション装置は、各ユーザデータの読み込みの終了に応じて、対応する検出結果格納用レジスタをクリアする。それにより、本実施の形態にかかるハードウェア／ソフトウェア協調シミュレーション装置は、信号変化したユーザデータの読み込みがすべて終了したか否かを判断できるため、残りのユーザデータの読み込みを中止することができる。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【００８３】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００８４】
Ｆ１０００  ハードウェアエミュレータ
Ｆ１１００  ユーザロジック
Ｆ１２１０−１〜Ｆ１２１０−ｎ  変化検出回路
Ｆ１２１１−１〜Ｆ１２１１−ｎ  Ｄフリップフロップ
Ｆ１２１２−１〜Ｆ１２１２−ｎ  排他的論理和回路
Ｆ１２２０−１〜Ｆ１２２０−ｎ  更新フラグ用Ｄフリップフロップ
Ｆ１３００  論理和回路
Ｆ２０００  システムシミュレータ
Ｆ２１００  ハードウェアエミュレータＩ／Ｆ制御部
Ｆ２２００  動作モデル
Ｆ２３００  デバッグ環境
ＣＬＫ＿Ｈ  ハードウェア同期用クロック
ＣＬＫ＿Ｓ  システムシミュレータ同期用クロック
ＦＧ  終了フラグ信号
ＰＡＴ  ユーザロジック検証用パターン供給信号
ＣＬＥＡＲ−１〜ＣＬＥＡＲ−ｎ  更新フラグクリア信号
ＣＦ−１〜ＣＦ−ｎ  更新フラグ信号
ＦＬ−１〜ＦＬ−ｎ  変化検出信号
ＰＤ−１〜ＰＤ−ｎ  ユーザデータ
ＰＦ−１〜ＰＦ−ｎ  遅延ユーザデータ
【図１】
2012037992.tif 000003
【図２】
2012037992.tif 000004
【図３】
2012037992.tif 000005
【図４】
2012037992.tif 000006