(57)【要約】【課題】  論理等価性を同一環境で検証することができるハードウェア／ソフトウェア協調検証システムを提供する。【解決手段】  Ａ回路の動作をＣ言語等で記述したＡ回路動作モデル３が設けられたシステムシミュレータ１と、Ａ回路の論理回路４が設けられ、システムシミュレータ１と同期して協調検証が行われるハードウェアエミュレータ２とを有する。Ａ回路動作モデル３と論理回路４は、上記協調検証においていずれかが使用されるように選択可能に構成されている。【選択図】図１
2006079417.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、
前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有し、
前記動作モデルと前記論理回路は、前記協調検証においていずれかが使用されるように選択可能に構成されている、ハードウェア／ソフトウェア協調検証システム。
【請求項２】
前記動作モデルと前記論理回路のいずれかを選択する選択部と、
前記選択部に前記論理回路を選択させた状態で前記協調検証を行わせて第１の検証結果を取得し、前記選択部に前記動作モデルを選択させた状態で前記協調検証を行わせて第２の検証結果を取得し、該取得した第１および第２の検証結果を比較して前記動作モデルと前記論理回路の論理等価性を判断する制御部とをさらに有する、請求項１に記載のハードウェア／ソフトウェア協調検証システム。
【請求項３】
前記動作モデルと前記論理回路のいずれかを選択する選択部と、
前記協調検証の動作レベルが、クロック動作の精度を重視した検証が行われる第１の動作レベルと、スピードを優先した検証が行われる第２の動作レベルとからなり、前記第１の動作レベルに対する選択対象として前記論理回路が、前記第２の動作レベルに対する選択対象として前記動作モデルがそれぞれ設定されたテーブルと、
前記第１の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記論理回路が選択対象であると判断して、前記選択部に前記論理回路を選択させ、前記第２の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記動作モデルが選択対象であると判断し、前記選択部に前記動作モデルを選択させる制御部とをさらに有する、請求項１に記載のハードウェア／ソフトウェア協調検証システム。
【請求項４】
前記所定の言語が、クロック概念のない言語である、請求項１乃至３のいずれか１項に記載のハードウェア／ソフトウェア協調検証システム。
【請求項５】
前記機能回路がプロセッサである、請求項１乃至３のいずれか１項に記載のハードウェア／ソフトウェア協調検証システム。
【請求項６】
前記機能回路は複数あり、各機能回路ごとに前記動作モデルおよび論理回路の選択が可能に構成されている、請求項１乃至３のいずれか１項に記載のハードウェア／ソフトウェア協調検証システム。
【請求項７】
少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有するコンピュータシステムにおいて行われるハードウェア／ソフトウェア協調検証方法であって、
前記機能回路として前記論理回路を選択した状態で前記協調検証を行う第１のステップと、
前記機能回路として前記動作モデルを選択した状態で前記協調検証を行う第２のステップと、
前記第１および第２のステップの協調検証でそれぞれ取得した検証結果を比較して前記動作モデルと前記論理回路の論理等価性を判断する第３のステップとを含むハードウェア／ソフトウェア協調検証方法。
【請求項８】
少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有するコンピュータシステムにおいて行われるハードウェア／ソフトウェア協調検証方法であって、
前記協調検証の動作レベルが、クロック動作の精度を重視した検証が行われる第１の動作レベルと、スピードを優先した検証が行われる第２の動作レベルとからなり、前記第１の動作レベルに対する選択対象として前記論理回路が、前記第２の動作レベルに対する選択対象として前記動作モデルがそれぞれ設定されたテーブルを参照するステップと、
前記第１の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記論理回路が選択対象であると判断し、前記機能回路として前記論理回路を選択して前記協調検証を行うステップと、
前記第２の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記動作モデルが選択対象であると判断し、前記機能回路として前記動作モデルを選択して前記協調検証を行うステップとを含むハードウェア／ソフトウェア協調検証方法。
【請求項９】
前記所定の言語が、クロック概念のない言語である、請求項７または８に記載のハードウェア／ソフトウェア協調検証方法。
【請求項１０】
前記機能回路がプロセッサである、請求項７または８に記載のハードウェア／ソフトウェア協調検証方法。
【請求項１１】
少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有するコンピュータシステムにおいて用いられるプログラムであって、
前記機能回路として前記論理回路を選択した状態で前記協調検証を行う第１の処理と、
前記機能回路として前記動作モデルを選択した状態で前記協調検証を行う第２の処理と、
前記第１および第２の処理の協調検証でそれぞれ取得した検証結果を比較して前記動作モデルと前記論理回路の論理等価性を判断する第３の処理とをコンピュータに実行させるプログラム。
【請求項１２】
少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有するコンピュータシステムにおいて用いられるプログラムであって、
前記協調検証の動作レベルが、クロック動作の精度を重視した検証が行われる第１の動作レベルと、スピードを優先した検証が行われる第２の動作レベルとからなり、前記第１の動作レベルに対する選択対象として前記論理回路が、前記第２の動作レベルに対する選択対象として前記動作モデルがそれぞれ設定されたテーブルを参照する処理と、
前記第１の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記論理回路が選択対象であると判断し、前記機能回路として前記論理回路を選択して前記協調検証を行う処理と、
前記第２の動作レベルを選択する旨の入力を受け付けると、前記テーブルの内容から前記動作モデルが選択対象であると判断し、前記機能回路として前記動作モデルを選択して前記協調検証を行う処理とをコンピュータに実行させるプログラム。
【請求項１３】
前記所定の言語が、クロック概念のない言語である、請求項１１または１２に記載のプログラム。
【請求項１４】
前記機能回路がプロセッサである、請求項１１または１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路、特にＬＳＩのシステムレベルでの検証を行うシステムおよび方法に関する。
【背景技術】
【０００２】
ＬＳＩの大規模化に伴い、設計段階での検証も複雑さを増している。特に、システムＬＳＩでは、１つのＬＳＩチップ上に機能の異なる複数の回路が搭載されることから、検証は多岐にわたり、より複雑である。こうした状況の中、さまざまなソフトウェア／ハードウェア協調検証方法が提案されている。
【０００３】
ソフトウェア／ハードウェア協調検証は、ソフトウェアの動作検証とハードウェア（機能回路）の機能検証を相互に協調して行うものであって、例えば、ＲＴＬ設計によって作成したハードウェア部分とソフトウェア仕様の間に不整合がないかどうかの検証を行うことができる。ソフトウェアの動作検証には、ＣＰＵと周辺回路を含むシステム全体（ＬＳＩチップ全体）を対象とした動作検証が可能なソフトウェア検証専用のシステムシミュレータが用いられる。ハードウェアの機能検証には、ＦＰＧＡ（Field Programmable Gate Array）とメモリ等で構成されるハードウェアエミュレータが用いられる。システムシミュレータでは、各種ハードウェア記述言語（ＶＨＤＬやVerilog ＨＤＬなど）で記述した動作モデルを使用して動作検証を行う。ハードウェアエミュレータでは、検証対象であるハードウェア（機能回路）の論理回路を使用して機能検証を行う。
【０００４】
ＲＴＬシミュレータを使用したソフトウェア／ハードウェア協調検証システムが既に実現されている。しかし、ＲＴＬシミュレータによる検証は、動作スピードが遅く、また、デバック性も悪い。そこで、ＲＴＬよりも抽象度の高いＣ言語等で機能回路の動作を記述した動作モデルを別途作成して検証に用いる方法が提案されている（特許文献１参照）。クロック概念のないＣ言語で記述した動作モデルは、クロック動作をしないことから、検証時間はＲＴＬシミュレータを使用する場合よりも短縮される。また、抽象度の高いＣ言語で記述した動作モデルを使用することで、デバック性も改善される。ここで、抽象度は、ビヘイビアレベル、ＲＴＬ、ゲートレベルなどの設計レベルを表すものである。例えば、ＶＨＤＬやVerilog ＨＤＬなどを用いる場合の抽象度は、ビヘイビアレベル〜ゲートレベルの範囲であるのに対して、Ｃ言語を用いる場合の抽象度は、アルゴリズムレベル〜ビヘイビアレベルの範囲である。
【０００５】
上記の他、ソフトウェアを搭載するプロセッサを動作レベルモデルとサイクルアキュレートモデルで切り替えて、論理レベルのハードウェアシミュレータと協調動作させるソフトウェア／ハードウェア協調検証方法も提案されている（特許文献２参照）。サイクルアキュレートモデルは、クロック動作をするモデルである。このサイクルアキュレートモデルを使用した場合は、クロック動作での検証が可能となり、ステップバイステップの検証ができるため、検証精度が向上する。
【特許文献１】特開２００１−１８９３８７号公報
【特許文献２】特開２０００−１１０２２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ハードウェア（機能回路）の動作モデルをＲＴＬよりも抽象度の高いＣ言語等で記述するソフトウェア／ハードウェア協調検証方法においては、検証時間の短縮およびデバック性の改善を図ることができるものの、以下のような問題がある。
【０００７】
動作合成ツールを使用しない場合、同じ仕様書から作成した動作モデルとＲＴＬの回路とは、それぞれ個別に作成することになるために、同じ動作をするかの保証はない。このため、通常は、動作モデルを検証して得られた結果は、そのハードの論理結果であることから、ＲＴＬの論理回路が動作モデルと同じ論理結果となるかの確認として期待値に使用する。このとき、ＲＴＬの論理回路の検証結果と期待値が一致すれば、同じ論理を出力したこととなる。しかし、そのような論理等価性の確認においては、通常、システムシミュレータでの動作モデルを使用した動作検証とハードウェアエミュレータでのＲＴＬ論理回路の検証とをそれぞれ個別の検証環境で行うが、そのような個別の検証環境の構築は、非常に手間がかかる上、工数も増えることになり、使用者への負担が大きい。この問題は、ＲＴＬの回路に対して、Ｃ言語等を用いて動作モデルを作成した場合にも生じる。
【０００８】
なお、ソフトウェア検証を目的として、既存のツールを用いてＲＴＬの回路への動作合成を行うことができないＣ言語等でハードウェアの動作モデルを作成した場合において、その動作モデル相当のＲＴＬの回路を作成した場合に、その論理等価性を同一環境で検証する具体的な方法は、これまで提案されていない。
【０００９】
特許文献２に記載のソフトウェア／ハードウェア協調検証方法においては、ソフトウェアを搭載するプロセッサをサイクルアキュレートモデルとした場合に、クロック動作を行う分、処理に時間を要することになり、検証スピードが落ちる。
【００１０】
上述した問題の他、従来のソフトウェア／ハードウェア協調検証方法には、以下のような問題もある。
【００１１】
複数の機能回路から構成されているシステム（ＬＳＩ）のある機能回路を検証する場合で、他の機能回路に、すでにＲＴＬの論理回路と動作モデルとの論理等価性が確認された機能回路がある場合は、その論理等価性が確認された機能回路の動作レベルを切り替えることで、検証目的に応じた協調検証を行うことができる。具体的には、検証すべき機能回路を回路Ａ、論理等価性が確認された機能回路を回路Ｂとした場合、回路Ａについてスピードを優先した検証を行う場合は、回路Ｂとして動作モデルを使用し、回路Ａについてクロック動作の精度を重視した検証を行う場合は、回路Ｂとして論理回路を使用する。こうすることで、検証目的に応じた協調検証を効率良く行うことができる。しかし、従来は、機能回路の動作レベルの切り替えを行うことができないため、そのような検証目的に応じた協調検証を行うことはできなかった。
【００１２】
本発明の目的は、上記問題を解決し、検証時間の短縮およびデバック性の改善を図りつつ、論理等価性を同一環境で検証することができ、かつ、検証目的に応じた協調検証を行うことができる、協調検証システム、協調検証方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本願発明は、少なくとも１つの機能回路の動作を所定の言語で記述した動作モデルが設けられたシステムシミュレータと、前記機能回路の論理回路が設けられ、前記システムシミュレータと同期して協調検証が行われるハードウェアエミュレータとを有し、前記動作モデルと前記論理回路は、前記協調検証においていずれかが使用されるように選択可能に構成されている。
【発明の効果】
【００１４】
本発明によれば、機能回路の論理回路と動作モデルの論理等価性の検証を、同一の協調検証環境にて行うことが可能である。具体的に説明すると、ある機能回路の動作モデルとＲＴＬの回路（論理回路）を同じ仕様書から個別に作成した場合、システムシミュレータ上にその動作モデルが、ハードウェアエミュレータ上にそのＲＴＬの回路（論理回路）がそれぞれ設けられる。機能回路として動作モデルを選択して協調検証を行うことで、動作モデルの検証結果を得られ、機能回路としてＲＴＬの回路（論理回路）を選択して協調検証を行うことで、ＲＴＬの回路（論理回路）の検証結果を得られる。こうして得られた検証結果を比較することで、論理等価性を検証することできる。この論理等価性の検証において、協調検証環境は、動作モデルとＲＴＬの回路（論理回路）を切り替えた以外は全く同じ検証環境となる。
【００１５】
また、本発明によれば、抽象度の異なる論理回路と動作モデルを切り替え可能に構成したことで、検証目的に応じた協調検証を行うことが可能である。具体的に説明すると、機能回路の論理回路（ＲＴＬ回路）と動作モデル（Ｃ言語）の論理等価性が確認済みの場合、機能回路として動作モデルを選択すれば、スピードを優先した検証を行うことが可能となり、また、機能回路として論理回路を選択すれば、クロック動作の精度を重視した検証を行うことが可能となる。
【００１６】
以上のように、本発明によれば、個別の検証環境を構築する従来の手法において生じていたような手間や工数の増大の問題を解決することができ、また、検証目的に応じた協調検証を効率良く行うことができる。
【発明を実施するための最良の形態】
【００１７】
次に、本発明の実施形態について図面を参照して説明する。
【００１８】
（実施形態１）
図１は、本発明の第１の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。このソフトウェア／ハードウェア協調検証システムは、ＬＳＩのシステムレベルの検証、より具体的には、ＲＴＬ設計によって作成したハードウェア部分とソフトウェア仕様の間に不整合がないかどうかを検証するものであって、その構成はシステムシミュレータ１とハードウェアエミュレータ２からなる。
【００１９】
システムシミュレータ１は、ＣＰＵや周辺回路（通信回路等）などの機能回路を含むシステム全体を対象とした動作検証が可能なソフトウェア検証専用のシミュレータである。このようなシミュレータは、表示部と、シミュレーションプログラム（ソフトウェア）やシミュレーション処理に必要なデータが格納されるメモリ部と、このメモリ部から必要なプログラムおよびデータを読み出してシミュレーションを実行する制御部（ＣＰＵ）とを少なくとも有する計算機（具体的には、パーソナルコンピュータ）により実現される。
【００２０】
ハードウェアエミュレータ２は、ＦＰＧＡとメモリ等を搭載したボートよりなり、ＦＰＧＡに機能回路を書き込むことでその論理回路を作成することができる。このハードウェアエミュレータ２の拡張ボートを、システムシミュレータ１を構成する計算機に搭載することで、ソフトウェア／ハードウェア協調検証システムが実現される。
【００２１】
上記のようにしてソフトウェア／ハードウェア協調検証システムを実現した計算機において、制御部は、システムシミュレータ１によるシミュレーションおよびハードウェアエミュレータ２によるエミュレーションを制御する。また、制御部は、システムシミュレータ１からシミュレーション結果を、ハードウェアエミュレータ２からエミュレーション結果をそれぞれ取得し、それら結果に基づいて、ＲＴＬの回路（論理回路）と動作モデルの等価性の検証および機能回路の検証を行うとともに、その検証結果を表示部に表示させる。
【００２２】
システムシミュレータ１の主要部は、機能回路であるＡ回路の動作モデル３、クロック生成回路６、Ｃプロセッサ動作モデル７、ＲＡＭモデル８、タイミング調整回路９およびセレクタ１０からなる。ハードウェアエミュレータ２の主要部は、Ａ回路の論理回路４、別の機能回路であるＢ回路の論理回路５およびセレクタ１１からなる。
【００２３】
クロック生成回路６は、動作の基準となるクロックを生成し、該生成したクロックをＡ回路動作モデル３、Ｃプロセッサ動作モデル７、タイミング調整回路９、論理回路４、５のそれぞれに供給する。Ａ回路動作モデル３およびＣプロセッサ動作モデル７は、所定の記述言語で記述した動作モデルである。ここで、所定の記述言語とは、クロック概念のない記述言語であって、例えばＣ言語である。このようなＣ言語で記述した動作モデルでは、ハードウェアクロック（システムクロック）による制御は行われず、ソフトウェアによる処理が実行される。ただし、ハードウェア（論理回路４、５）との同期をとるためにクロック生成回路６からのクロックが用いられる。
【００２４】
Ａ回路の論理回路４およびＢ回路の論理回路５は、クロック生成回路６からのクロックに基づいて動作する。ＲＡＭモデル８は、Ｃプロセッサ動作モデル７上で動作するソフトウェアを格納するものである。Ｃプロセッサ動作モデル７は、ＲＡＭモデル８に格納されているソフトウェアに従って動作する。タイミング調整回路９は、システムシミュレータ１上の動作モデルとハードウェアエミュレータ２上の論理回路との間の信号のやりとりにおいてタイミングの調整を行う。
【００２５】
Ｃプロセッサ動作モデル７の出力は２つに分岐され、一方はＡ回路動作モデル３、タイミング調整回路９を順次介してセレクタ１１の一方の入力に供給され、他方は、タイミング調整回路９、Ａ回路の論理回路４を順次介してセレクタ１１の他方の入力に供給されている。セレクタ１１は、２つの入力のいずれかをＢ回路の論理回路５に供給する。Ｂ回路の論理回路５の出力は２つに分岐され、一方はＡ回路の論理回路４、タイミング調整回路９を順次介してセレクタ１０の一方の入力に供給され、他方はタイミング調整回路９、Ａ回路動作モデル３を順次介してセレクタ１０の他方の入力に供給されている。セレクタ１０は、２つの入力のいずれかをＣプロセッサ動作モデル７に供給する。
【００２６】
セレクタ１０、１１における入力の選択は、制御部によって制御される。セレクタ１０、セレクタ１１は連動して動作する構成であり、Ａ回路として、システムシミュレータ１上の動作モデル３とハードウェアエミュレータ２上の論理回路４のいずれかを選択することが可能である。Ａ回路動作モデル３が選択された場合は、セレクタ１０は、Ａ回路動作モデル３からの信号をタイミング調整回路９によりタイミング調整したものをハードウェアエミュレータ２上のＢ回路の論理回路５に渡し、セレクタ１１は、Ａ回路動作モデル３からの信号をＣプロセッサ動作モデル７に渡す。また、Ａ回路の論理回路４が選択された場合は、セレクタ１０は、Ｂ回路の論理回路５にＡ回路の論理回路４からの出力信号を渡し、セレクタ１１は、Ａ回路４からの出力信号をタイミング調整回路９によりタイミング調整した信号をＣプロセッサ動作モデル７に渡す。
【００２７】
クロック生成回路６から供給されるクロックで各部を動作させることで、システムシミュレータ１とハードウェアエミュレータ２の間の同期をとることが可能となっており、これにより、論理回路および動作モデルからなるシステムモデルの各部の同時起動および同時停止が可能となっている。システムモデルの同時起動および同時停止は、任意のタイミング、または、イベントの発生および終了に基づいて行われる。
【００２８】
システムシミュレータ１およびハードウェアエミュレータ２による協調検証は、システムモデルを停止した状態で行われる。具体的には、システムシミュレータ１の動作を停止することで、クロック生成回路６からハードウェアエミュレータ２の各論理回路４、５へのクロック供給が停止することとなり、その結果、システムシミュレータ１上の動作モデルとハードウェアエミュレータ２上の論理回路が同時に停止することになる。この停止状態での論理回路の状態（ＦＰＧＡのレジスタの状態）および動作モデルの内部変数がそれぞれエミュレーション結果およびシミュレーション結果として制御部に供給される。
【００２９】
なお、エミュレーション結果およびシミュレーション結果は、テキストファイル形式で供給されてもよい。また、検証結果の比較は、ステップバイステップで行ってもよく、システムシミュレータ上でブレーク設定可能なタイミングで行ってもよい。
【００３０】
上述した本実施形態のソフトウェア／ハードウェア協調検証システムでは、制御部によって、（１）Ａ回路の動作モデル３と論理回路４の等価性の検証、（２）Ｂ回路の機能検証の２つの検証が行われる。以下、これら検証の具体的な動作を説明する。
【００３１】
（１）Ａ回路の動作モデル３と論理回路４の等価性の検証：
この等価性の検証では、既存のＲＴＬの回路に対して、新たに動作モデルを作成し、その作成した動作モデルとＲＴＬの回路との等価性が検証される。図２に、既存のＲＴＬの回路に対して新たに作成した動作モデルの等価性を検証する一手順を示す。
【００３２】
図３を参照すると、まず、使用者が、計算機上で、既存のツールを用いてＡ回路の動作モデルをクロック概念のないＣ言語等により作成する（ステップＳ１１）。次に、使用者が、ハードウェアエミュレータ２上にＡ回路の論理回路（既存のＲＴＬの回路の論理回路）を、システムシミュレータ１上にＡ回路の動作モデルをそれぞれ形成し、Ａ回路をテストするためのテストパタンを所定のツールで作成する（ステップＳ１２）。こうして図１に示した検証環境が構築されるとともに、検証のための準備がなされる。準備が整った後、使用者が、計算機上で、回路Ａの等価性の検証を行うための入力操作を行うと、制御部によって以下のような処理が実行される。なお、テストパタンは、システムシミュレータ１にインタフェースを設けて外部装置から供給するようにしてもよく、また、ハードウェアエミュレータ２上にテストパタンを発生する回路を設けて、その回路から供給するようにしてもよい。
【００３３】
まず、セレクタ１０、１１を制御して、ハードウェアエミュレータ２上の論理回路４を選択する（ステップＳ１３）。この選択により、図３に示すような状態となる。図３の状態では、システムシミュレータ１上で、Ｃプロセッサ動作モデル７およびＲＡＭモデル８が動作し、ハードウェアエミュレータ２上で、論理回路４、５が動作する。
【００３４】
次に、ステップＳ１２で作成したテストパタンをシステムシミュレータ１およびハードウェアエミュレータ２に供給して協調検証を行う（ステップＳ１４）。この協調検証では、任意のタイミング、またはイベントの発生および終了をきっかけにして、システムシミュレータ１上の動作モデル（Ａ回路動作モデル３およびＣプロセッサ動作モデル７）およびハードウェアエミュレータ２上の論理回路（論理回路４、５）が同時起動して同時停止する。同時停止後、動作モデルおよび論理回路のそれぞれの状態が制御部に供給される。
【００３５】
次に、セレクタ１０、１１を制御して、システムシミュレータ１上のＡ回路動作モデル３を選択する（ステップＳ１５）。この選択により、図４に示すような状態となる。図４の状態では、システムシミュレータ１上で、Ａ回路動作モデル３、Ｃプロセッサ動作モデル７およびＲＡＭモデル８が動作し、ハードウェアエミュレータ２上で、論理回路５が動作する。
【００３６】
次に、ステップＳ１２で作成したテストパタンをシステムシミュレータ１およびハードウェアエミュレータ２に供給して協調検証を行う（ステップＳ１６）。この協調検証では、任意のタイミング、またはイベントの発生および終了をきっかけにして、システムシミュレータ１上の動作モデル（Ａ回路動作モデル３およびＣプロセッサ動作モデル７）およびハードウェアエミュレータ２上の論理回路（論理回路５）が同時起動して同時停止する。同時停止後、動作モデルおよび論理回路のそれぞれの状態が制御部に供給される。
【００３７】
最後に、ステップＳ１４で得られた検証結果のうちの論理回路４の内部状態と、ステップＳ１６で得られた検証結果のうちのＡ回路動作モデル３の内部変数とが一致するか否かを判断する（ステップＳ１７）。一致した場合は、論理回路４とＡ回路動作モデル３が等価であるとして、検証処理を終了する。一致しなかった場合は、使用者が、計算機上で、所定のツールを用いてＡ回路動作モデル３の修正を行い（ステップＳ１８）、その後、ステップＳ１２〜Ｓ１７の処理を繰り返す。
【００３８】
（２）Ｂ回路の機能検証：
この機能検証では、Ａ回路として論理等価性が確認済みの動作モデル３および論理回路４が用いられ、Ｂ回路の機能検証が以下のようにして実行される。なお、Ａ回路の論理等価性の確認には、上述した「（１）Ａ回路の動作モデル３と論理回路４の論理等価性の検証」を用いることができる。
【００３９】
まず、使用者が、論理等価性が確認済みの動作モデル３、論理回路４をそれぞれシステムシミュレータ１、ハードウェアエミュレータ２上に形成する。さらに、機能検証すべきＢ回路の論理回路５をハードウェアエミュレータ２上に形成する。こうして、図１に示した検証環境を構築する。
【００４０】
検証環境を構築後、使用者が、計算機上で、検証目的に応じた動作レベルを入力指定する。検証目的には、（１）クロック動作の精度を重視した検証、（２）スピードを優先した検証があり、それぞれを動作レベルＬ１、Ｌ２と表す。計算機のメモリ部には、動作レベルＬ１、Ｌ２毎にＡ回路の動作モデル３および論理回路４のいずれを選択するかの情報を記述したテーブルが予め格納されており、制御部は、使用者が指定した動作レベルからテーブルを参照して動作モデル３および論理回路４のいずれを選択するかの判断を行う。ここでは、動作レベルＬ１に対して論理回路４が、動作レベルＬ２に対して動作モデル３がそれぞれ選択されるようにテーブルが構成されている。
【００４１】
動作レベルＬ１が指定入力されると、制御部は、セレクタ１０、１１を制御して論理回路４を選択する。この選択により、図３に示した状態となる。この状態では、Ａ回路として、クロック動作する論理回路４が使用され、その結果、クロック動作の精度を重視した検証が可能となる。
【００４２】
図３に示した状態で、テストパタンをシステムシミュレータ１およびハードウェアエミュレータ２に供給して協調検証を行う。この協調検証においても、任意のタイミング、またはイベントの発生および終了をきっかけにして、システムシミュレータ１上の動作モデル（Ｃプロセッサ動作モデル７）およびハードウェアエミュレータ２上の論理回路（論理回路４、５）が同時起動して同時停止する。同時停止後、動作モデルおよび論理回路のそれぞれの状態が制御部に供給される。制御部は、ハードウェアエミュレータ２から供給された検証結果のうちの論理回路５の内部状態と予め設定されている期待値とを比較し、その比較結果を表示部に出力する。
【００４３】
動作レベルＬ２が指定入力されると、制御部は、セレクタ１０、１１を制御してＡ回路動作モデル３を選択する。この選択により、図４に示した状態となる。この状態では、Ａ回路として、クロックの概念のない動作モデル３が使用され、その結果、スピードを優先した検証が可能となる。
【００４４】
図４に示した状態で、テストパタンをシステムシミュレータ１およびハードウェアエミュレータ２に供給して協調検証を行う。この協調検証においても、任意のタイミング、またはイベントの発生および終了をきっかけにして、システムシミュレータ１上の動作モデル（Ａ回路動作モデル４およびＣプロセッサ動作モデル７）およびハードウェアエミュレータ２上の論理回路（論理回路５）が同時起動して同時停止する。同時停止後、動作モデルおよび論理回路のそれぞれの状態が制御部に供給される。制御部は、ハードウェアエミュレータ２から供給された検証結果のうちの論理回路５の内部状態と予め設定されている期待値とを比較し、その比較結果を表示部に出力する。
【００４５】
上述の「（２）Ｂ回路の機能検証」の手順はＣプロセッサ動作モデル７の検証にも適用することができる。この場合は、論理回路５の内部状態と予め設定されている期待値との比較する動作に代えて、システムシミュレータ１からの検証結果のうちのＣプロセッサ動作モデル７の内部変数と予め設定されている期待値との比較を行う動作が行われる。
【００４６】
以上のように、本実施形態では、システムシミュレータ１とハードウェアエミュレータ２の協調検証環境において、異なった抽象度で作成されたＡ回路の論理回路と動作モデルをそれぞれシステムシミュレータ１とハードウェアエミュレータ２にあらかじめ搭載しておき、協調検証時に、Ａ回路として抽象度の異なるの論理回路と動作モデルのどちらを検証に使用するかを選択することができる。これにより、Ａ回路について、同一検証環境での同一テストパタンを使用した論理等価性の確認を行うことができる。
【００４７】
また、Ａ回路の抽象度を選択することができるので、検証スピード重視の場合やクロック動作精度重視など検証目的に合わせて、検証環境を自由に変更することができる。さらに、動作モデルを抽象度の高いＣ言語で作成するので、検証時間の短縮およびデバック性の改善を図ることができる。
【００４８】
（実施形態２）
上述した第１の実施形態の協調検証システムにおいて、システムシミュレータ１に形成する動作モデルとハードウェアエミュレータ２上に形成する論理回路の動作レベルが異なる機能回路は複数であってもよい。ここでは、そのような機能回路を複数有する協調検証システムについて説明する。
【００４９】
図５は、本発明の第２の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。この協調検証システムは、図１に示した検証システムにおいて、システムシミュレータ１上にＢ回路の動作モデル１２、セレクタ１４、１５をさらに設け、ハードウェアエミュレータ２上にセレクタ１３をさらに設けて、制御部により、Ａ回路の動作モデル３および論理回路４の切り替えおよびＢ回路の動作モデル１２と論理回路５の切り替えが個別に制御されるように構成されている。図５中、図１に示したものと同じものには同じ符号を付している。
【００５０】
Ａ回路動作モデル３のタイミング調整回路９への出力は分岐されており、その分岐した出力はセレクタ１４の一方の入力に供給されている。論理回路４のセレクタ１１への出力は分岐されており、その分岐した出力はタイミング調整回路９を介してセレクタ１４の他方の入力に供給されている。セレクタ１４は、２つの入力のいずれかをＢ回路動作モデル１２に供給する。
【００５１】
Ｂ回路動作モデル１２は、他の動作モデルおよび論理回路との同期をとるためにクロック生成回路６からクロックが供給されている。Ｂ回路動作モデル１２の出力は分岐されており、一方は、セレクタ１５の一方の入力に供給され、他方はタイミング調整回路９を介してセレクタ１３の一方の入力に供給されている。論理回路５の出力は分岐されており、一方はセレクタ１３の他方の入力に供給され、他方はタイミング調整回路９を介してセレクタ１５の他方の入力に供給されている。セレクタ１３は、２つの入力のいずれかをＡ回路の論理回路４に供給する。セレクタ１５は、２つの入力のいずれかをＡ回路動作モデル３に供給する。
【００５２】
セレクタ１０〜１５における入力の選択は、制御部によって制御される。これらセレクタ１０〜１５を用いた選択により、図６に示すような第１〜第４の状態を選択することが可能となる。
【００５３】
第１の状態では、Ａ回路として動作モデル３を選択し、Ｂ回路として動作モデル１２を選択する。この場合は、各セレクタ１０〜１５の切り替えは次のようになる。セレクタ１０は、Ａ回路動作モデル３からの信号を選択してＣプロセッサ動作モデル７に渡す。セレクタ１４は、Ａ回路動作モデル３からの出力信号を選択してＢ回路動作モデル１２に渡す。セレクタ１５は、Ｂ回路動作モデル１２からの出力信号を選択してＡ回路動作モデル３に渡す。ハードウェアエミュレータ２上の論理回路４、５はいずれも未使用の状態であるため、セレクタ１１、１３はどのように選択されていてもよい。
【００５４】
第２の状態では、Ａ回路として動作モデル３を選択し、Ｂ回路として論理回路５を選択する。この場合は、各セレクタ１０〜１５の切り替えは次のようになる。セレクタ１０は、Ａ回路動作モデル３からの出力信号を選択してＣプロセッサ動作モデル７に渡す。セレクタ１５は、ハードウェアエミュレータ２上のＢ回路５からの出力されタイミング調整回路９によりタイミング調整された信号を選択してＡ回路動作モデル３に渡す。セレクタ１１は、システムシミュレータ１上のＡ回路動作モデル３から出力されタイミング調整回路９によりタイミング調整された信号を選択してＢ回路５に渡す。Ａ回路の論理回路４およびＢ回路動作モデル１２は未使用のため、セレクタ１３、１４はどのように選択されていてもよい。
【００５５】
第３の状態では、Ａ回路として論理回路４を選択し、Ｂ回路として動作モデル１２を選択する。この場合は、各セレクタ１０〜１５の切り替えは次のようになる。セレクタ１０は、Ａ回路の論理回路４から出力されタイミング調整回路９によりタイミング調整された信号を選択しＣプロセッサ動作モデル７に渡す。セレクタ１４は、Ａ回路４から出力されタイミング調整回路９によりタイミング調整された信号を選択してＢ回路動作モデル１２に渡す。セレクタ１３は、Ｂ回路動作モデル１２から出力されタイミング調整回路９によりタイミング調整された信号を選択してＡ回路の論理回路４に渡す。Ａ回路動作モデル３とＢ回路の論理回路５は未使用のため、セレクタ１１、１５はどのように選択されていてもよい。
【００５６】
第４の状態では、Ａ回路として論理回路４を選択し、Ｂ回路として論理回路５を選択する。この場合は、各セレクタ１０〜１５の切り替えは次のようになる。セレクタ１０は、Ａ回路の論理回路４から出力されタイミング調整回路９によりタイミング調整された信号を選択しＣプロセッサ動作モデル７に渡す。セレクタ１１は、Ａ回路の論理回路４からの出力信号を選択してＢ回路５に渡す。セレクタ１３は、Ｂ回路の論理回路５からの出力信号を選択してＡ回路の論理回路４に渡す。Ａ回路動作モデル３およびＢ回路動作モデル１２は未使用のため、セレクタ１４、１５はどのように選択されていてもよい。
【００５７】
本実施形態の協調検証システムでは、第２、第４の状態を適宜切り替えることで、Ａ回路の動作モデル３と論理回路４の等価性の検証を行うことができる。
【００５８】
また、第３、第４の状態を適宜切り替えることで、Ｂ回路の動作モデル１２と論理回路５の等価性の検証を行うことができる。
【００５９】
また、検証目的に応じて第１〜第４の状態を切り替えることで、協調検証を効率良く行うことができる。例えば、Ｂ回路の論理等価性が確認されている場合において、Ａ回路の動作モデル３の検証を行う場合は、検証目的に応じて第１、第２の状態を切り替え、Ａ回路の論理回路４の検証を行う場合は、検証目的に応じて第３、第４の状態を切り替える。同様に、Ａ回路の論理等価性が確認されている場合において、Ｂ回路の動作モデル１２の検証を行う場合は、検証目的に応じて第１、第３の状態を切り替え、Ｂ回路の論理回路５の検証を行う場合は、検証目的に応じて第２、第４の状態を切り替える。また、Ａ回路およびＢ回路の論理等価性がともに確認されている場合において、Ｃプロセッサ動作モデル７の検証を行う場合は、検証目的に応じて第１〜４の状態が適宜切り替えられる。いずれの場合の検証も、基本的には、上述の「（２）Ｂ回路の機能検証」と同じ処理となる。
【００６０】
以上の本実施形態によれば、第１の実施形態のものと比べて、検証環境の変更における自由度がより大きくなる。
【００６１】
（実施形態３）
上述した第１および第２の実施形態において、切り替え可能とする機能回路をＣプロセッサとしてもよい。ここでは、Ｃプロセッサの動作モデルおよび論理回路がそれぞれシステムシミュレータおよびハードウェアエミュレータに設けられた形態について説明する。
【００６２】
図７は、本発明の第３の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。この協調検証システムは、図１に示した協調検証システムにおいて、セレクタ１０、１１、Ａ回路動作モデル３を削除するとともに、システムシミュレータ１上にデバック環境１９を設け、ハードウェアエミュレータ２上にセレクタ１８、Ｃプロセッサ論理回路１６およびＲＡＭ論理回路１８を設けたものである。図７中、図１に示したものと同じものには同じ符号を付している。
【００６３】
クロック生成回路６からのクロックは、論理回路４、５、Ｃプロセッサ動作モデル７、タイミング調整回路９およびＣプロセッサ論理回路１６のそれぞれに供給されている。ＲＡＭ論理回路１８は、Ｃプロセッサ論理回路１６上で動作するソフトウェアを格納するものである。Ｃプロセッサ論理回路１６は、ＲＡＭ論理回路１８に格納されているソフトウェアに従って動作する。Ｃプロセッサ論理回路１６の出力は、セレクタ１８の一方の入力に供給されている。セレクタ１８の他方の入力には、Ｃプロセッサ動作モデル７の出力がタイミング調整回路９を介して供給されている。セレクタ１８は、いずれかの入力を選択して論理回路４に供給する。論理回路４は論理回路５との間で信号をやりとりする。論理回路４からタイミング調整回路９へ出力された信号はそのままＣプロセッサ動作モデル７に供給されている。デバッグ環境１９には、ソフトウェアのプログラムカウンタ等の信号が供給されている。
【００６４】
本実施形態では、制御部によってセレクタ１８の切り替えが制御される。この切り替え制御により、ＣプロセッサとしてＣプロセッサ動作モデル７またはＣプロセッサ論理回路１６が選択される。Ｃプロセッサ動作モデル７を選択した場合は、セレクタ１８はＣプロセッサ動作モデル７から出力されタイミング調整機能９によりタイミング調整された信号をＡ回路の論理回路４に渡す。Ｃプロセッサ論理回路１６を選択した場合は、セレクタ１８は、Ｃプロセッサ論理回路１８からの出力信号をＡ回路の論理回路４に渡す。
【００６５】
Ｃプロセッサの論理等価性の検証は、基本的には、図２に示した手順で行われる。図２の手順において、ステップＳ１１では、Ｃプロセッサの動作モデルが作成される。また、ステップＳ１３では、ＣプロセッサとしてＣプロセッサ論理回路１６が選択され、ステップＳ１５ではＣプロセッサとしてＣプロセッサ動作モデル７が選択される。そして、ステップＳ１８では、Ｃプロセッサの動作モデルの修正が行われる。これ以外の動作は、第１の実施形態で説明したとおりである。
【００６６】
また、本実施形態においても、Ｃプロセッサの論理等価性が確認できている場合は、論理回路４、５のそれぞれについて、Ｃプロセッサ動作モデル７とＣプロセッサ論理回路１６の切り替え制御により、検証目的に応じた協調検証を行うことができる。この場合の動作も、基本的には、第１の実施形態と同じである。
【図面の簡単な説明】
【００６７】
【図１】本発明の第１の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。
【図２】図１に示す協調検証システムにおいて論理等価性の検証の一手順を示すフローチャートである。
【図３】図１に示す協調検証システムの選択状態の一例を示す模式図である。
【図４】図１に示す協調検証システムの選択状態の他の例を示す模式図である。
【図５】本発明の第２の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。
【図６】図５に示す協調検証システムにおける選択状態を説明する図である。
【図７】本発明の第３の実施形態であるソフトウェア／ハードウェア協調検証システムの主要部の構成を示すブロック図である。
【符号の説明】
【００６８】
１  システムシミュレータ
２  ハードウェアエミュレータ
３  Ａ回路動作モデル
４、５  論理回路
６  クロック生成回路
７  Ｃプロセッサ動作モデル
８  ＲＡＭモデル
９  タイミング調整回路
１０、１１  セレクタ
【図１】
2006079417.tif 000003
【図２】
2006079417.tif 000004
【図３】
2006079417.tif 000005
【図４】
2006079417.tif 000006
【図５】
2006079417.tif 000007
【図６】
2006079417.tif 000008
【図７】
2006079417.tif 000009