説明

ハードウェア/ソフトウェア協調シミュレーション装置及びそのデバッグ方法

【課題】シミュレーション時間を短縮可能なハードウェア/ソフトウェア協調シミュレーション装置等を提供すること。
【解決手段】本発明にかかるハードウェア/ソフトウェア協調シミュレーション装置は、ードウェアエミュレータとシステムシミュレータとを備え、ハードウェアエミュレータは、複数のユーザデータを生成するユーザロジックと、複数のユーザデータの変化をそれぞれ検出する複数の変化検出回路と、複数の変化検出回路による検出結果をそれぞれ格納する複数のフリップフロップと、複数のフリップフロップに格納された複数の検出結果に応じた終了フラグ信号を生成する論理和回路と、を備える。システムシミュレータは、終了フラグ信号に基づいて複数のユーザデータのいずれかが変化したと判断した場合に複数のユーザデータを順に読み込み、各ユーザデータの読み込みの終了に応じて対応するフリップフロップをクリアさせる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハードウェア/ソフトウェア協調シミュレーション装置及びそのデバッグ方法に関する。
【背景技術】
【0002】
LSI(Large Scale Integrated Circuit)の大規模化やプログラマブル素子の規模制限などにより、LSIの全ての論理回路をシミュレーションアクセラレータ或いはハードウェアエミュレータ上に実現することが困難な状況になってきている。そこで、ソフトウェアによりシミュレーションを行うシステムシミュレータとハードウェアエミュレータとを協調させて動作させることによって、システム全体のシミュレーションを行う協調シミュレーションが用いられるようになった。
【0003】
しかし、LSIの更なる大規模化に伴い、システムシミュレータとハードウェアエミュレータとの間のデータ通信量の増加により、シミュレーション時間が増大している。したがって、シミュレータとエミュレータとの間で効率良いデータ通信を行うことによる、シミュレーション時間の短縮が望まれている。
【0004】
このような要求に対する解決策が、特許文献1に開示されている。特許文献1に開示されている関連する技術(ハードウェア/ソフトウェア協調シミュレーション装置)は、ハードウェアエミュレータとシステムシミュレータとの間のデータ通信量を減少させることにより、シミュレーションの動作スピードを向上させることを目的としている。
【0005】
図4に、特許文献1に開示されているハードウェア/ソフトウェア協調シミュレーション装置のブロック図を示す。図4に示すハードウェア/ソフトウェア協調シミュレーション装置は、システムシミュレータ1と、ハードウェアエミュレータ2と、を備える。
【0006】
システムシミュレータ1は動作モデル6を実装しており、ハードウェアエミュレータ2はユーザロジック5を実装している。協調シミュレーションの実行時には、ハードウェアエミュレータ2にはシステムシミュレータ1からの入力信号3が入力され、また、ハードウェアエミュレータ2から出力信号4−1−1〜4−1−n(nは2以上の整数)がシステムシミュレータ1に送出される。入力信号3には、システムシミュレータ1からハードウェアエミュレータ2に供給されるクロック信号9が含まれている。また、システムシミュレータ1には、ハードウェアエミュレータ2から送出される出力信号4−1−1〜4−1−nを、信号波形表示等により観測するためのデバッグ環境7が実装されている。
【0007】
ハードウェアエミュレータ2から送出される1つのグループの信号は、1ビットの出力信号4−1−1〜4−1−nに分割されて送出されるようになっている。そして、ハードウェアエミュレータ2は、出力信号4−1−1〜4−1−nそれぞれについて、その変化を検出する変化検出回路20−1−1〜20−1−nを実装している。また、ハードウェアエミュレータ2は、変化検出回路20−1−1〜20−1−nから出力される変化検出信号24−1〜24−nの論理和演算を行って変化検出信号8−1を出力する論理和回路25を備えている。
【0008】
変化検出回路20−1−1〜20−1−nはそれぞれ同一の構成である。また、変化検出回路20−1−nは、DフリップフロップであるところのFF21−1−nと、排他的論理和演算を行う排他的論理和回路23−1−nと、を有する。FF21−1−nにおいて、データ入力端子に1ビットの出力信号4−1−nが入力され、クロック入力端子にクロック信号9が入力される。そして、FF21−1−nは、出力信号4−1−nを1クロック遅延させた遅延信号22−1−nを出力する。排他的論理和回路23−1−nは、出力信号4−1−nと遅延信号22−1−nとの排他的論理和演算を行い、出力信号4−1−nが遅延信号22−1−nと異なっていることを検出すると、変化検出信号24−nとして論理値1を出力する。これは、変化検出回路20−1−1〜20−1−nについても同様である。
【0009】
論理和回路25は、変化検出回路20−1−1〜20−1−nから出力される変化検出信号24−1〜24−nの論理和演算を行い、変化検出信号24−1〜24−nの何れかが論理値1を示している場合に、変化検出信号8−1として論理値1を出力する。
【0010】
つまり、ハードウェアエミュレータ2から送出される1つのグループの信号、すなわち、出力信号4−1−1〜4−1−nの何れかに変化が生じた時点で、変化検出信号8−1として論理値1が出力される。したがって、システムシミュレータ1は、変化検出信号8−1を常時監視し、変化検出信号8−1が論理値1を示した時点で、出力信号4−1−1〜4−1−nの値を取り込んで動作モデル6に渡す。
【0011】
このように、図4に示すハードウェア/ソフトウェア協調シミュレーション装置では、ハードウェアエミュレータ2から送出される出力信号4−1−1〜4−1−nの何れかに変化があった場合にだけ、システムシミュレータ1が出力信号4−1−1〜4−1−nを取り込む。それにより、ハードウェアエミュレータとシステムシミュレータとの間の通信量が減少し、ハードウェア/ソフトウェア協調シミュレーションの動作スピードを向上させることができる。
【0012】
さらに、図4に示すハードウェア/ソフトウェア協調シミュレーション装置では、ハードウェアエミュレータ2から送出される出力信号4−1−1〜4−1−nの何れかに変化が生じた場合、各々の変化検出信号24−1〜24−nが論理和回路25によってまとめられてシステムシミュレータ1に通知される。したがって、ハードウェアエミュレータ2とシステムシミュレータ1と間のインタフェース信号の数を減少させることができる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2005−332162号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
従来のハードウェア/ソフトウェア協調シミュレーション装置では、上述のように、変化検出信号8−1が論理値1を示した場合、即ち、出力信号(ユーザデータ)4−1−1〜4−1−nの何れかに変化があった場合、システムシミュレータ1がすべての出力信号4−1−1〜4−1−nを取り込む。
【0015】
ここで、システムシミュレータ1が順に出力信号4−1−1〜4−1−nの取り込みを行っている間、取り込みを終えた出力信号に対応する変化検出信号は元の論理値を維持している。結果として、この期間中、変化検出信号8−1は論理値1を維持することになる。したがって、システムシミュレータ1は、信号変化した出力信号のすべてを取り込み終えたとしても、信号変化していない出力信号を含めたすべての出力信号4−1−1〜4−1−nを取り込まなければならない。
【0016】
このように、システムシミュレータ1は、信号変化していない出力信号を含めたすべての出力信号4−1−1〜4−1−nを取り込んでいるため、シミュレーション時間が長くなるという問題があった。
【課題を解決するための手段】
【0017】
本発明にかかるハードウェア/ソフトウェア協調シミュレーション装置は、互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備え、前記ハードウェアエミュレータは、複数の出力データを生成するユーザロジックと、前記複数の出力データの変化をそれぞれ検出する複数の変化検出回路と、前記複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、前記複数の検出結果格納用レジスタにそれぞれ格納された複数の検出結果に応じたフラグ信号を生成する論理回路と、を備え、前記システムシミュレータは、前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込むとともに、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせる。
【0018】
また、本発明にかかるハードウェア/ソフトウェア協調シミュレーション装置のデバッグ方法は、互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備えたハードウェア/ソフトウェア協調シミュレーション装置のデバッグ方法であって、前記ハードウェアエミュレータにおいて、複数の出力データを生成し、前記複数の出力データの変化を検出し、複数の検出結果をそれぞれ複数の検出結果格納用レジスタに格納し、前記複数の検出結果格納用レジスタにそれぞれ格納された前記複数の検出結果に応じたフラグ信号を生成し、前記システムシミュレータにおいて、前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込み、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせる。
【0019】
上述のような回路構成及びそのデバッグ方法により、シミュレーション時間を短縮することができる。
【発明の効果】
【0020】
本発明により、シミュレーション時間を短縮することが可能なハードウェア/ソフトウェア協調シミュレーション装置及びそのデバッグ方法を提供することができる。
【図面の簡単な説明】
【0021】
【図1】本発明の実施の形態1にかかるハードウェア/ソフトウェア協調シミュレーション装置を示すブロック図である。
【図2】本発明の実施の形態1にかかるハードウェア/ソフトウェア協調シミュレーション装置の動作を示すフローチャートである。
【図3】本発明の実施の形態1にかかるハードウェア/ソフトウェア協調シミュレーション装置の動作を示すタイミングチャートである。
【図4】従来技術のハードウェア/ソフトウェア協調シミュレーション装置を示すブロック図である。
【発明を実施するための形態】
【0022】
以下、図面を参照しつつ、本発明の実施の形態について説明する。なお、図面は簡略的なものであるから、この図面の記載を根拠として本発明の技術的範囲を狭く解釈してはならない。また、同一の要素には、同一の符号を付し、重複する説明は省略する。
【0023】
実施の形態1
図1は、本発明の実施の形態1にかかるハードウェア/ソフトウェア協調シミュレーション装置のブロック図である。
【0024】
図1に示すハードウェア/ソフトウェア協調シミュレーション装置は、ユーザロジックを実装するハードウェアエミュレータF1000と、動作モデルを実装するシステムシミュレータF2000と、を備え、これらを協調させて動作させることによりシミュレーションを行うことを特徴とする。
【0025】
具体的には、シミュレーションによって検証したいLSIシステムのアーキテクチャは、複数の機能ブロックから構成されている。各機能ブロックのうちの一部は、ハードウェアエミュレータF1000によってエミュレートされるようになっており、ハードウェアエミュレータF1000内のFPGA(Field Programmable Gate Array)等のプログラマブル素子上に、ユーザロジックF1100として構築されている。各機能ブロックの他の部分は、システムシミュレータF2000においてソフトウェアによりシミュレートされるようになっており、C言語等で記述される動作モデルF2200として構成されている。動作モデルF2200には、機能ブロックごとの機能・動作及び機能ブロック間の接続関係が記述されており、各機能ブロックをシミュレーション動作させると、動作モデルF2200とユーザロジックF1100との間でデータ送受信が行われる。
【0026】
まず、ハードウェアエミュレータF1000の回路構成を、図1を用いて説明する。
【0027】
ハードウェアエミュレータF1000は、ユーザロジックF1100と、変化検出回路F1210−1〜F1210−n(nは2以上の整数)と、更新フラグ用Dフリップフロップ(検出結果格納用レジスタ)F1220−1〜F1220−nと、論理和回路(論理回路)F1300と、を備える。
【0028】
(ユーザロジックF1100)
ユーザロジックF1100は、ハードウェア同期用クロックCLK_Hに同期して、ユーザロジック検証用パターン供給信号PATに応じたユーザデータ(出力データ)PD−1〜PD−nを生成する回路である。
【0029】
ユーザロジックF1100において、システムシミュレータF2000から出力されたユーザロジック検証用パターン供給信号PATがデータ入力端子に入力され、システムシミュレータF2000から出力されたハードウェア同期用クロックCLK_Hがクロック端子に入力され、ユーザデータPD−1〜PD−nがそれぞれのデータ出力端子から出力される。
【0030】
(変化検出回路F1210−1〜F1210−n)
変化検出回路F1210−1〜F1210−nは、それぞれユーザデータPD−1〜PD−nの更新前後の変化を検出する回路である。例えば、変化検出回路F1210−1〜F1210−nは、それぞれユーザデータPD−1〜PD−nが更新前後で変化している場合には、論理値1の変化検出信号FL−1〜FL−nをそれぞれ出力する。他方、変化検出回路F1210−1〜F1210−nは、それぞれユーザデータPD−1〜PD−nが更新前後で変化していない場合には、論理値0の変化検出信号FL−1〜FL−nをそれぞれ出力する。
【0031】
変化検出回路F1210−1〜F1210−nは、それぞれ、Dフリップフロップ(データ格納用レジスタ)F1211−1〜F1211−nと、排他的論理和回路F1212−1〜F1212−nと、を有する。なお、変化検出回路F1210−1〜F1210−nは、それぞれ同一の回路構成である。
【0032】
変化検出回路1210−1内のDフリップフロップF1211−1において、ユーザロジックF1100から出力されたユーザデータPD−1がデータ入力端子に入力され、システムシミュレータF2000から出力されたハードウェア同期用クロックCLK_Hがクロック端子に入力され、遅延ユーザデータPF−1がデータ出力端子から出力される。
【0033】
また、変化検出回路1210−1内の排他的論理和回路F1212−1において、ユーザロジックF1100から出力されたユーザデータPD−1と、変化検出回路1210−1から出力された遅延ユーザデータPF−1と、がそれぞれの入力端子に入力され、これらの排他的論理和である変化検出信号FL−1が出力端子から出力される。
【0034】
このような回路構成は、変化検出回路1210−2〜1210−nにも同様に採用されている。例えば、変化検出回路1210−n内のDフリップフロップF1211−nにおいて、ユーザロジックF1100から出力されたユーザデータPD−nがデータ入力端子に入力され、システムシミュレータF2000から出力されたハードウェア同期用クロックCLK_Hがクロック端子に入力され、遅延ユーザデータPF−nがデータ出力端子から出力される。
【0035】
そして、変化検出回路1210−n内の排他的論理和回路F1212−nにおいて、ユーザロジックF1100から出力されたユーザデータPD−nと、変化検出回路1210−nから出力された遅延ユーザデータPF−nと、がそれぞれの入力端子に入力され、これらの排他的論理和である変化検出信号FL−nが出力端子から出力される。
【0036】
(更新フラグ用DフリップフロップF1220−1〜F1220−n)
更新フラグ用DフリップフロップF1220−1〜F1220−nは、変化検出信号FL−1〜FL−nをそれぞれ格納する回路である。
【0037】
更新フラグ用DフリップフロップF1220−1において、変化検出信号FL−1がデータ端子に入力され、システムシミュレータF2000から出力された更新フラグクリア信号CLEAR−1がクリア端子に入力され、システムシミュレータF2000から出力されたシステムシミュレータ同期用クロックCLK_Sがクロック端子に入力され、更新フラグ信号CF−1がデータ出力端子から出力される。
【0038】
このような回路構成は、更新フラグ用DフリップフロップF1220−2〜F1220−nにも同様に採用されている。例えば、更新フラグ用DフリップフロップF1220−nにおいて、変化検出信号FL−nがデータ端子に入力され、システムシミュレータF2000から出力された更新フラグクリア信号CLEAR−nがクリア端子に入力され、システムシミュレータF2000から出力されたシステムシミュレータ同期用クロックCLK_Sがクロック端子に入力され、更新フラグ信号CF−nがデータ出力端子から出力される。
【0039】
(論理和回路F1300)
論理和回路F1300は、更新フラグ信号CF−1〜CF−nの論理和を終了フラグ信号(フラグ信号)FGとして出力する回路である。
【0040】
論理和回路F1300において、更新フラグ用DフリップフロップF1220−1〜F1220−nから出力された更新フラグ信号CF−1〜CF−nがそれぞれの入力端子に入力され、これらの論理和である終了フラグ信号FGが出力端子から出力される。
【0041】
次に、システムシミュレータF2000の回路構成を、図1を用いて説明する。
【0042】
システムシミュレータF2000は、ハードウェアエミュレータI/F制御部F2100と、動作モデルF2200と、デバッグ環境F2300と、を備える。
【0043】
(ハードウェアエミュレータI/F制御部F2100)
ハードウェアエミュレータI/F制御部F2100は、システムシミュレータF2000とハードウェアエミュレータF1000との間のデータ送受信を制御する部である。
【0044】
ハードウェアエミュレータI/F制御部F2100において、ハードウェアエミュレータF1000から出力された終了フラグ信号FGが入力端子に入力され、システムシミュレータ同期用クロックCLK_S、ハードウェア同期用クロックCLK_H及び更新フラグクリア信号CLEAR−1〜CLEAR−nがそれぞれの出力端子から出力される。
【0045】
(動作モデルF2200)
動作モデルF2200は、システムシミュレータ同期用クロックCLK_Sに同期して、ユーザロジック検証用パターン供給信号PATをユーザロジックF1100に対した出力する回路である。
【0046】
動作モデルF2200において、ハードウェアエミュレータF1000から出力されたユーザデータPD−1〜PD−nがそれぞれのデータ入力端子に入力され、ハードウェアエミュレータI/F制御部F2100から出力されたシステムシミュレータ同期用クロックCLK_Sがクロック端子に入力され、ユーザロジック検証用パターン供給信号PATがデータ出力端子から出力される。
(デバッグ環境F2300)
デバッグ環境F2300は、ハードウェアエミュレータ2から出力されるユーザデータPD−1〜PD−nを、信号波形表示等により観測するためのものである。
【0047】
デバッグ環境F2300において、ハードウェアエミュレータF1000から出力されたユーザデータPD−1〜PD−nがそれぞれのデータ入力端子に入力され、ハードウェアエミュレータI/F制御部F2100から出力されたシステムシミュレータ同期用クロックCLK_Sがクロック端子に入力される。
【0048】
(フローチャート)
図1に示すハードウェア/ソフトウェア協調シミュレーション装置の動作を、図2を用いて説明する。なお、図2は、図1に示すハードウェア/ソフトウェア協調シミュレーション装置の動作を示すフローチャートである。
【0049】
図2に示すように、ハードウェアエミュレータF1000とシステムシミュレータF2000とは、連携して動作する。ここでは、まず、システムシミュレータF2000の動作について説明する。
【0050】
システムシミュレータF2000は、最初に、ユーザロジックF1100用の検証パターンを、ユーザロジック検証用パターン供給信号PATとして、ユーザロジックF1100に対して出力する(Step110)。具体的には、システムシミュレータF2000に設けられた動作モデルF2200が、内部に格納されているユーザロジックF1100用の検証パターンを、ユーザロジック検証用パターン供給信号PATとして、ユーザロジックF1100に対して出力する。なお、動作モデルF2200は、ハードウェアエミュレータI/F制御部F2100から出力されるシステムシミュレータ同期用クロックCLK_Sに同期して、ユーザロジック検証用パターン供給信号PATを出力する。
【0051】
次に、システムシミュレータF2000は、ハードウェアエミュレータF1000に対して、ユーザロジック動作要求を行う(Step120)。具体的には、システムシミュレータF2000に設けられたハードウェアエミュレータI/F制御部F2100が、ハードウェア同期用クロックCLK_Hとしてパルス信号を生成し、ハードウェアエミュレータF1000に対して出力する。
【0052】
次に、システムシミュレータF2000は、更新フラグ信号CF−1〜CF−nの更新が可能となる時間まで待つ(Step130)。例えば、システムシミュレータF2000は、ハードウェア同期用クロックCLK_Hの1サイクル(パルス幅2個分)以上の時間が経過したことにより、更新フラグ信号CF−1〜CF−nの更新が可能となったと判断する。なお、更新フラグ信号CF−1〜CF−nの更新が可能となると、ユーザロジック動作は終了する。
【0053】
次に、システムシミュレータF2000は、ハードウェアエミュレータF1000に対して、更新フラグ信号CF−1〜CF−nの更新要求を行う(Step140)。具体的には、システムシミュレータF2000に設けられたハードウェアエミュレータI/F制御部F2100が、システムシミュレータ同期用クロックCLK_Sとしてパルス信号を生成し、ハードウェアエミュレータF1000に対して出力する。
【0054】
次に、システムシミュレータF2000は、ハードウェアエミュレータF1000から出力された終了フラグ信号FGを読み込む(Step150)。具体的には、システムシミュレータF2000に設けられたハードウェアエミュレータI/F制御部F2100が、終了フラグ信号FGを読み込む。
【0055】
ハードウェアエミュレータI/F制御部F2100が終了フラグ信号FGの論理値を0以外(つまり、論理値1)と判断した場合(Step160のA)、システムシミュレータF2000は、まず、ユーザデータPD−1を読み込む(Step170)。具体的には、システムシミュレータF2000に設けられた動作モデルF2200及びデバッグ環境F2300が、システムシミュレータ同期用クロックCLK_Sに同期して、ユーザデータPD−1を読み込む。
【0056】
システムシミュレータF2000は、ユーザデータPD−1の読み込みを終えると、更新フラグクリア信号CLEAR−1の論理値を0に遷移させる(Step180)。具体的には、システムシミュレータF2000に設けられたハードウェアエミュレータI/F制御部F2100は、ユーザデータPD−1の読み込みが終了すると、更新フラグクリア信号CLEAR−1の論理値を0に遷移させる。それにより、ハードウェアエミュレータF1000に設けられた更新フラグ用DフリップフロップF1220−1はクリア(リセット)され、更新フラグ信号CF−1の論理値が0になる。
【0057】
その後、システムシミュレータF2000は、終了フラグ信号FGを再度読み込み(Step150)、終了フラグ信号FGの論理値が1の場合(Step160のA)には、図2のフローチャートに沿って同様の動作を繰り返す。つまり、システムシミュレータF2000は、終了フラグ信号FGの論理値が1の場合(Step160のA)、次に、ユーザデータPD−2を読み込む(Step170)。システムシミュレータF2000は、ユーザデータPD−2の読み込みを終えると、更新フラグクリア信号CLEAR−2の論理値を0に遷移させる(Step180)。終了フラグ信号FGの論理値が1を示す間、このような動作は繰り返され、最大でユーザデータPD−nの読み込みまで行われる。
【0058】
このように、各ユーザデータの読み込みの終了に応じて、対応する更新フラグ用Dフリップフロップがクリアされる。したがって、信号変化したユーザデータの読み込みがすべて終了すると、すべての更新フラグ信号CF−1〜CF−nの論理値が0になり、それに応じて終了フラグ信号FGの論理値は0に遷移する。それにより、その後の残りのユーザデータの読み込みは行われない。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【0059】
ハードウェアエミュレータI/F制御部F2100が終了フラグ信号FGの論理値を0と判断した場合(Step160のB)、つまり、信号変化したユーザデータの読み込みがすべて終了した場合、システムシミュレータF2000は、すべての更新フラグクリア信号CLEAR−1〜CLEAR−nの論理値を1に遷移させる(Step190)。それにより、ハードウェアエミュレータF1000に設けられた更新フラグ用DフリップフロップF1220−1〜F1220−nのクリアは解除される。
【0060】
その後、システムシミュレータF2000は、ユーザロジックF1100に対してすべての検証パターンを供給したか否かを判断し(Step200)、供給が完了している場合にはシミュレーションを終了する(Step200のA)。他方、システムシミュレータF2000は、すべての検証パターンの供給が完了していない場合(Step200のB)には、残りの検証パターンの供給を続け(Step110)、以降、図2のフローチャートに沿って同様の動作を繰り返す。
【0061】
次に、ハードウェアエミュレータF1000の動作について説明する。
【0062】
ハードウェアエミュレータF1000は、システムシミュレータF2000からのユーザロジック動作要求(Step120)を受けると、ユーザロジック動作を開始する(Step310)。具体的には、ハードウェアエミュレータF1000に設けられたユーザロジックF1100が、ハードウェア同期用クロックCLK_Hに同期して、ユーザロジック検証用パターン供給信号PATに応じたユーザデータPD−1〜PD−nを出力する。
【0063】
また、変化検出回路F1210−1に設けられたDフリップフロップF1211−1は、ハードウェア同期用クロックCLK_Hに同期して、更新前のユーザデータPD−1を検出し、遅延ユーザデータPF−1として出力する。
【0064】
そして、変化検出回路F1210−1は、遅延ユーザデータPF−1とユーザデータPD−1とを排他的論理和した変化検出信号FL−1を出力する。つまり、変化検出回路F1210−1は、ユーザデータPD−1が変化したか否かを検出する。
【0065】
このような動作は、変化検出回路F1210−2〜F1210−nにも同様に採用されている。つまり、変化検出回路F1210−nに設けられたDフリップフロップF1211−nは、ハードウェア同期用クロックCLK_Hに同期して、更新前のユーザデータPD−nを検出し、遅延ユーザデータPF−nとして出力する。
【0066】
そして、変化検出回路F1210−nは、遅延ユーザデータPF−nとユーザデータPD−nとを排他的論理和した変化検出信号FL−nを出力する。つまり、変化検出回路F1210−nは、ユーザデータPD−nが変化したか否かを検出する。
【0067】
次に、ハードウェアエミュレータF1000は、システムシミュレータF2000からの更新フラグ信号CF−1〜CF−nの更新要求(Step140)を受けると、更新フラグ信号CF−1〜CF−nの更新を開始する(Step340)。具体的には、更新フラグ用DフリップフロップF1220−1〜F1220−nが、システムシミュレータ同期用クロックCLK_Sに同期して、それぞれ変化検出信号FL−1〜FL−nに応じた更新フラグ信号CF−1〜CF−nを出力する。つまり、システムシミュレータ同期用クロックCLK_Sに同期して、更新フラグ信号CF−1〜CF−nが更新される。
【0068】
そして、論理和回路F1300は、更新フラグ信号CF−1〜CF−nを論理和した終了フラグ信号FGを、システムシミュレータF2000に対して出力する(Step350)。
【0069】
ここで、終了フラグ信号FGの論理値が1の場合(Step160のA)、ハードウェアエミュレータF1000は、更新後のユーザデータPD−1〜PD−nをシステムシミュレータF2000に対して出力する(Step360)。そして、システムシミュレータF2000は、前述のように、終了フラグ信号FGの論理値が1を示す間、システムシミュレータ同期用クロックCLK_Sに同期して、ユーザデータPD−1〜PD−nを順に読み込む(Step170)。
【0070】
なお、更新フラグクリア信号CLEAR−1〜CLEAR−nのいずれかの論理値が0に遷移すると(Step180)、対応する更新フラグ用DフリップフロップF1220−1〜F1220−nはクリアされる(Step370)。また、本実施の形態では、更新フラグ用DフリップフロップF1220−1〜F1220−nは、それぞれシステムシミュレータ同期用クロックCLK_Sの立ち下がりに同期してクリアされる。
【0071】
したがって、信号変化したユーザデータの読み込みがすべて終了すると、すべての更新フラグ信号CF−1〜CF−nの論理値が0になり、それに応じて終了フラグ信号FGの論理値は0に遷移する。それにより、システムシミュレータF2000において、その後の残りのユーザデータの読み込みは行われない。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【0072】
他方、終了フラグ信号FGの論理値が0の場合(Step160のB)、すべての更新フラグクリア信号CLEAR−1〜CLEAR−nの論理値が1に遷移するため(Step190)、すべての更新フラグ用DフリップフロップF1220−1〜F1220−nのクリアは解除される(Step380)。
【0073】
(タイミングチャート)
次に、図1に示すハードウェア/ソフトウェア協調シミュレーション装置の動作を、図3を用いて説明する。なお、図3は、図1に示すハードウェア/ソフトウェア協調シミュレーション装置の動作を示すタイミングチャートである。
【0074】
時刻T0にて、システムシミュレータF2000は、システムシミュレータ同期用クロックCLK_Sの立ち上がりに同期して、ユーザロジック検証用パターン供給信号PATをハードウェアエミュレータF1000に対して出力する。
【0075】
時刻T1にて、システムシミュレータF2000は、ハードウェア同期用クロックCLK_Hとしてパルス信号を生成し、ハードウェアエミュレータF1000に対して出力する。換言すると、時刻T1にて、ハードウェア同期用クロックCLK_Hが立ち上がる。それにより、ハードウェアエミュレータF1000では、ユーザロジックF1100がユーザロジック検証用パターン供給信号PATに応じたユーザデータPD−1〜PD−nを出力するとともに、変化検出回路F1210−1〜F1210−nがそれぞれ変化検出信号FL−1〜FL−nを出力する。なお、変化検出信号FL−1〜FL−nは、それぞれ遅延ユーザデータPF−1〜PF−nとユーザデータPD−1〜PD−nとを排他的論理和したものである。図3の例では、ユーザデータPD−1の論理値は0から1に遷移し、それに応じて変化検出信号FL−1の論理値は0から1に遷移している。他方、ユーザデータPD−nの論理値は0を維持し、それに応じて変化検出信号FL−nの論理値は0を維持している。つまり、図3の例では、ユーザデータPD−1〜PD−nのうちユーザデータPD−1のみが信号変化している。
【0076】
時刻T1から所定の時間経過後の時刻T2にて、システムシミュレータF2000は、システムシミュレータ同期用クロックCLK_Sとしてパルス信号を生成し、ハードウェアエミュレータF1000に対して出力する。換言すると、時刻T2にて、システムシミュレータ同期用クロックCLK_Sが立ち上がる。それにより、更新フラグ信号CF−1〜CF−nが更新され、それに応じて終了フラグ信号FGが更新される。図3の例では、更新フラグ信号CF−1の論理値が0から1に遷移し、それに応じて終了フラグ信号FGの論理値が0から1に遷移している。なお、時刻T3、T5においてもシステムシミュレータ同期用クロックCLK_Sが立ち上がる。また、所定の時間とは、例えば、ハードウェア同期用クロックCLK_Hの1サイクル分(パルス幅2個分)の時間である。
【0077】
時刻T3にて、終了フラグ信号FGの論理値が1であるため、システムシミュレータF2000は、システムシミュレータ同期用クロックCLK_Sの立ち上がりに同期して、まずユーザデータPD−1の読み込みを行う。図3の例では、システムシミュレータF2000は、システムシミュレータ同期用クロックCLK_Sの立ち上がりに同期してユーザデータPD−1(論理値1)を読み込む。このように、システムシミュレータF2000は、終了フラグ信号FGの論理値が1を示す間、システムシミュレータ同期用クロックCLK_Sの立ち上がりに同期してユーザデータPD−1〜PD−nを順に読み込む。なお、後述するが、図3の例では、信号変化していないユーザデータPD−2〜PD−nの読み込みは行われない。
【0078】
時刻T4にて、システムシミュレータF2000は、ユーザデータPD−1の読み込みを終えると、システムシミュレータ同期用クロックCLK_Sの立ち下がりに同期して、更新フラグクリア信号CLEAR−1の論理値を0に遷移させる。それにより、ハードウェアエミュレータF1000に設けられた更新フラグ用DフリップフロップF1220−1はクリアされる。図3の例では、更新フラグ信号CF−1の論理値が1から0に遷移する。また、更新前後でユーザデータPD−2〜PD−nが変化していないため、更新フラグ信号CF−2〜CF−nの論理値は0を示したままである。それにより、終了フラグ信号FGの論理値は1から0に遷移する。
【0079】
時刻T5にて、終了フラグ信号FGの論理値が0であるため、システムシミュレータF2000は、ユーザデータPD−1〜PD−nの読み込みを中止する。さらに、システムシミュレータF2000は、システムシミュレータ同期用クロックCLK_Sに同期して、ユーザロジックF1100用検証パターンを更新し、ユーザロジック検証用パターン供給信号PATとして、ハードウェアエミュレータF1000に対して出力する。
【0080】
時刻T6にて、システムシミュレータF2000は、再びユーザデータPD−1〜PD−nを読み込み可能にさせるため、システムシミュレータ同期用クロックCLK_Sの立ち下がりに同期して、更新フラグクリア信号CLEAR−1〜CLEAR−nの論理値を1に遷移させる。それにより、更新フラグ用DフリップフロップF1220−1〜F1220−nのクリアは解除される。
【0081】
このような時刻T0〜T6の動作が、時刻T7以降、ユーザロジックF1100の検証パターンが終了するまで繰り返される。なお、ユーザデータPD−1〜PD−nのうち読み込み対象となるユーザデータの数に応じて、システムシミュレータ同期用クロックCLK_Sの立ち上がり回数は異なる。
【0082】
以上のように、本実施の形態にかかるハードウェア/ソフトウェア協調シミュレーション装置は、ハードウェアエミュレータにおいて、複数のユーザデータを生成するユーザロジックと、複数のユーザデータの変化をそれぞれ検出する複数の変化検出回路と、複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、複数の検出結果格納用レジスタから出力される検出結果に応じたフラグ信号を生成する論理回路と、を備える。また、システムシミュレータは、フラグ信号に基づいて複数のユーザデータのいずれかが変化したと判断した場合に、複数のユーザデータを順に読み込む。ここで、本実施の形態にかかるハードウェア/ソフトウェア協調シミュレーション装置は、各ユーザデータの読み込みの終了に応じて、対応する検出結果格納用レジスタをクリアする。それにより、本実施の形態にかかるハードウェア/ソフトウェア協調シミュレーション装置は、信号変化したユーザデータの読み込みがすべて終了したか否かを判断できるため、残りのユーザデータの読み込みを中止することができる。つまり、信号変化していないユーザデータの読み込みが省略されるため、データ送受信の通信量を削減することができるとともに、データ送受信に要する時間を短縮することができる。その結果、シミュレーション時間を短縮することができる。
【0083】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0084】
F1000 ハードウェアエミュレータ
F1100 ユーザロジック
F1210−1〜F1210−n 変化検出回路
F1211−1〜F1211−n Dフリップフロップ
F1212−1〜F1212−n 排他的論理和回路
F1220−1〜F1220−n 更新フラグ用Dフリップフロップ
F1300 論理和回路
F2000 システムシミュレータ
F2100 ハードウェアエミュレータI/F制御部
F2200 動作モデル
F2300 デバッグ環境
CLK_H ハードウェア同期用クロック
CLK_S システムシミュレータ同期用クロック
FG 終了フラグ信号
PAT ユーザロジック検証用パターン供給信号
CLEAR−1〜CLEAR−n 更新フラグクリア信号
CF−1〜CF−n 更新フラグ信号
FL−1〜FL−n 変化検出信号
PD−1〜PD−n ユーザデータ
PF−1〜PF−n 遅延ユーザデータ

【特許請求の範囲】
【請求項1】
互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備え、
前記ハードウェアエミュレータは、
複数の出力データを生成するユーザロジックと、
前記複数の出力データの変化をそれぞれ検出する複数の変化検出回路と、
前記複数の変化検出回路による検出結果をそれぞれ格納する複数の検出結果格納用レジスタと、
前記複数の検出結果格納用レジスタにそれぞれ格納された複数の検出結果に応じたフラグ信号を生成する論理回路と、を備え、
前記システムシミュレータは、
前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込むとともに、各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせるハードウェア/ソフトウェア協調シミュレーション装置。
【請求項2】
前記論理回路は、
前記複数の検出結果格納用レジスタに格納された複数の検出結果の論理和を、前記フラグ信号として生成する論理和回路であることを特徴とする請求項1に記載のハードウェア/ソフトウェア協調シミュレーション装置。
【請求項3】
前記複数の変化検出回路は、それぞれ、
更新前の出力データを格納するデータ格納用レジスタと、
更新後の出力データと更新前の出力データとの排他的論理和を、前記検出結果として出力する排他的論理和回路と、を備えた請求項1又は2に記載のハードウェア/ソフトウェア協調シミュレーション装置。
【請求項4】
互いに協調してシミュレーションを実行するハードウェアエミュレータとシステムシミュレータとを備えたハードウェア/ソフトウェア協調シミュレーション装置のデバッグ方法であって、
前記ハードウェアエミュレータにおいて、
複数の出力データを生成し、
前記複数の出力データの変化を検出し、
複数の検出結果をそれぞれ複数の検出結果格納用レジスタに格納し、
前記複数の検出結果格納用レジスタにそれぞれ格納された前記複数の検出結果に応じたフラグ信号を生成し、
前記システムシミュレータにおいて、
前記フラグ信号に基づいて前記複数の出力データのいずれかが変化したと判断した場合に前記複数の出力データを順に読み込み、
各出力データの読み込みの終了に応じて対応する前記検出結果格納用レジスタをクリアさせるハードウェア/ソフトウェア協調シミュレーション装置のデバッグ方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate