(57)【要約】【課題】データ処理装置の動作をシミュレートするための改良された技術を提供すること。【解決手段】データ処理装置の動作を共同シミュレートするための技術が提供される。このシミュレートするシステムはハードウェアデスクリプションモデルとシステムレベルモデルを含み、このシステムレベルモデルは、ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶する少なくとも１つのシャドーアーキテクチャステートコンポーネントを含む。シャドーアーキテクチャステートコンポーネントにより、対応するアーキテクチャステートコンポーネントに記憶されるアーキテクチャステートの変化も記憶される。【選択図】図１
2007052783.tif 000002
【特許請求の範囲】
【請求項１】
ある命令シーケンスを実行するときのデータ処理装置の動作をシミュレートする方法であって、前記データ処理装置が複数のユニットを備え、該ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするための方法において、
前記複数のユニットの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションモデルを提供するステップであって、前記各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表現するハードウェア特性コンポーネントおよび前記命令シーケンスに応答して発生した、前記ユニットに関連するアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントを備えるステップと、
前記複数のユニットの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルを提供するステップであって、前記システムレベルモデルが更に前記ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するための、少なくとも１つのシャドーアーキテクチャステートコンポーネントを備えるステップと、
前記ハードウェアデスクリプションモデルおよび前記システムレベルモデルを実行し、前記命令シーケンスを実行するときの前記データ処理装置の動作をシミュレートするステップと、
前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントによっても記憶させるようにするステップとを備えた、データ処理装置の動作をシミュレートするための方法。
【請求項２】
前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするように動作可能なソフトウェアデバッガーを設けるステップを更に備えた、請求項１記載の方法。
【請求項３】
前記ソフトウェアデバッガーからのリクエストに応答し、前記システムレベルモデルおよび前記ハードウェアデスクリプションモデルの実行を中止するステップを更に備えた、請求項２記載の方法。
【請求項４】
前記ハードウェアデスクリプションモデルによって記憶されるアーキテクチャステートの詳細を、前記ソフトウェアデバッガーによって決定できるように、前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするステップを更に備えた、請求項３記載の方法。
【請求項５】
前記実行するステップが、前記システムレベルモデルおよび前記ハードウェアデスクリプションモデルを共同シミュレートすることを含む、請求項１記載の方法。
【請求項６】
前記アーキテクチャステートが更新されるときに、前記アーキテクチャステートの変化を記憶させるステップが、前記ハードウェアデスクリプションモデルからの関数の呼び出しを実行することを含む、請求項１記載の方法。
【請求項７】
前記アーキテクチャステートが変更されるときに、前記アーキテクチャステートの変化を記憶させるステップが、前記ハードウェアデスクリプションモデルからのプログラミング言語インターフェース関数の呼び出しを実行することを含む、請求項１記載の方法。
【請求項８】
前記少なくとも１つのシャドーアーキテクチャステートコンポーネントが、前記プログラミング言語インターフェース関数の呼び出しに応答し、前記ハードウェアデスクリプションモデルの前記対応するアーキテクチャステートコンポーネントで更新されたアーキテクチャステートの前記表示を記憶する、請求項７記載の方法。
【請求項９】
各アーキテクチャステートコンポーネントが、前記ユニットによって提供される記憶装置の表示を記憶する、請求項１記載の方法。
【請求項１０】
前記記憶装置が、前記ユニットによって提供されるメモリ領域およびレジスタのうちの少なくとも１つを含む、請求項９記載の方法。
【請求項１１】
各アーキテクチャステートコンポーネントが、前記ユニットによって提供される信号レベルの表示を記憶する、請求項１記載の方法。
【請求項１２】
前記システムレベルモデルが、トランザクションレベルモデルを含む、請求項１記載の方法。
【請求項１３】
前記システムレベルモデルが、Ｃプログラミング言語モデルを含む、請求項１記載の方法。
【請求項１４】
前記ハードウェアデスクリプションモデルが、ＲＴＬモデルを含む、請求項１記載の方法。
【請求項１５】
ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするシステムであって、前記データ処理装置が複数のユニットを備え、該ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのシステムにおいて、
前記複数のユニットの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションモデルであって、前記各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表示するハードウェア特性コンポーネントおよび前記ユニットに関連するアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントを備えるハードウェアデスクリプションモデルと、
前記複数のユニットの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルであって、前記システムレベルモデルが更に前記ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するための、少なくとも１つのシャドーアーキテクチャステートコンポーネントを備えるシステムレベルモデルとを含み、
前記ハードウェアデスクリプションモデルおよび前記システムレベルモデルが、前記命令シーケンスを実行するときの前記データ処理装置の動作をシミュレートすると共に、前記命令シーケンスに応答して発生され、前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントによっても記憶されるように動作する、データ処理装置の動作をシミュレートするためのシステム。
【請求項１６】
前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするように動作可能なソフトウェアデバッガーを更に備えた、請求項１５記載のシステム。
【請求項１７】
前記ソフトウェアデバッガーが、前記システムレベルモデルおよび前記ハードウェアデスクリプションモデルの実行を中止するように動作可能な、請求項１６記載のシステム。
【請求項１８】
前記ソフトウェアデバッガーが、前記ハードウェアデスクリプションモデルによって記憶されるアーキテクチャステートの詳細を、前記ソフトウェアデバッガーによって決定できるように、前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするように動作可能な、請求項１７記載のシステム。
【請求項１９】
前記ソフトウェアデスクリプションモデルおよび前記システムレベルモデルが、前記命令シーケンスを実行するときの、前記データ処理装置の動作を共同シミュレートするように動作可能な請求項１５記載のシステム。
【請求項２０】
前記アーキテクチャステートが更新されるときに、前記ハードウェアアデスクリプションモデルが、関数の呼び出しを実行するように動作可能な、請求項１５記載のシステム。
【請求項２１】
前記アーキテクチャステートが変更されるときに、前記ハードウェアアデスクリプションモデルが、プログラミング言語インターフェース関数の呼び出しを実行するように動作可能な、請求項１５記載のシステム。
【請求項２２】
前記少なくとも１つのシャドーアーキテクチャステートコンポーネントが、前記プログラミング言語インターフェース関数の呼び出しに応答し、前記ハードウェアデスクリプションモデルの前記対応するアーキテクチャステートコンポーネントで更新されたアーキテクチャステートの前記表示を記憶するように動作可能な、請求項２０記載のシステム。
【請求項２３】
各アーキテクチャステートコンポーネントが、前記ユニットによって提供される記憶装置の表示を記憶するように動作可能な、請求項１５記載のシステム。
【請求項２４】
前記記憶装置が、前記ユニットによって提供されるメモリ領域およびレジスタのうちの少なくとも１つを含む、請求項２３記載のシステム。
【請求項２５】
各アーキテクチャステートコンポーネントが、前記ユニットによって提供される信号レベルの表示を記憶するように動作可能な請求項１５記載のシステム。
【請求項２６】
前記システムレベルモデルが、トランザクションレベルモデルを含む、請求項１５記載のシステム。
【請求項２７】
前記システムレベルモデルが、Ｃプログラミング言語モデルを含む、請求項１５記載のシステム。
【請求項２８】
前記ハードウェアデスクリプションモデルが、ＲＴＬモデルを含む、請求項１５記載のシステム。
【請求項２９】
ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするときのコンピュータプログラムであって、前記データ処理装置が複数のユニットを備え、前記ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのコンピュータプログラムにおいて、
前記複数のユニットのうちの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションモデルを備え、
各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表示するハードウェア特性コンポーネントと、前記命令シーケンスに応答して発生される前記ユニットに関連したアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントとを備え、
前記ハードウェアデスクリプションモデルが前記複数のユニットのうちの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルと共に実行されるときに、前記命令シーケンスを実行している前記データ処理装置の動作をシミュレートするように動作可能であり、
前記ハードウェアデスクリプションモデルが、前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記システムレベルモデルのシャドーアーキテクチャステートコンポーネントによっても記憶されるようにする、データ処理装置の動作をシミュレートするためのコンピュータプログラム。
【請求項３０】
ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするときのコンピュータプログラムであって、前記データ処理装置が複数のユニットを備え、前記ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのコンピュータプログラムにおいて、
前記複数のユニットの少なくとも１つに対応するシステムレベルコンポーネントを備えたシステムレベルモデルを備え、
前記システムレベルモデルがハードウェアデスクリプションモデルのアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するように動作可能な少なくとも１つのシャドーアーキテクチャステートコンポーネントを更に備え、
前記システムレベルモデルが、前記ハードウェアデスクリプションモデルと共に実行されるときに、前記命令シーケンスを実行中の前記データ処理装置の動作をシミュレートするように動作可能であり、
前記システムレベルモデルが前記ハードウェアデスクリプションモデルから受信したアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントに記憶するように動作可能な、データ処理装置の動作をシミュレートするためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置のシミュレーションに関する。本発明の実施例はハードウェアデスクリプションモデルおよびシステムレベルモデルの双方を使ったデータ処理装置の動作をシミュレーションする方法に関する。
【背景技術】
【０００２】
開発環境では、データ処理装置の動作の特性を決定しなければならないケースが多い。データ処理装置の動作特性を理解するためにデータ処理装置の動作をシミュレートするための装置は公知であり、かかるシミュレーション技術の１つは、データ処理装置を示すソフトウェアモデルを使用しており、このソフトウェアモデルはデータ処理装置の各コンポーネントユニットを一般にモデル化するものである。異なる動作条件下のデータ処理装置のコンポーネントユニット間の予想される相互作用を検査するのにソフトウェアモデルを使用できる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
異なるレベルの抽象化でのデータ処理装置の動作挙動をモデル化することは知られている。異なるレベルの抽象化でモデル化することによって種々の利点と欠点が生じる。一般に高いレベルの抽象化でのモデル化は、データ処理装置の動作に関する少ない情報しか提供できないが、このモデルは比較的迅速に実行できる。一方より低いレベルの抽象化でのモデル化は、データ処理装置の詳細や動作に関する情報をより多く提供できるが、これらモデルは一般に実行に長い時間がかかる。
【０００４】
開発環境下では、現在のコンポーネントユニットを変更した後、または新しいコンポーネントユニットを導入した後に、データ処理装置の動作特性を決定しなければならないケースが多い。
【０００５】
これら状況下では、コンポーネントユニットの特定のハードウェア実現例を示すことができる、より低いレベルの抽象化モデル、例えばＲＴＬモデルがデータ処理装置のコンポーネントユニットに対して既に利用できる状況にある。しかしながら、新しいコンポーネントユニットまたは変更されたコンポーネントユニットに対しては、かかるＲＴＬモデルはまだ利用できない。
【０００６】
従って、より高いレベルの抽象化、例えばＣ言語のような言語でプログラムされたシステムレベルまたはトランザクションレベルモデルで新しいコンポーネントユニットが一般にまずモデル化される。このコンポーネントユニットが正しく動作することが明らかになると、その後、ＲＴＬモデルを開発できる。
【０００７】
これら２つのモデル化は例えば所定の命令シーケンスに応答するとき、データ処理装置の動作を共に同時にシミュレートするようになっている。一方のモデルから、他方のモデルが必要とする適当な情報を、２つのモデル間で互いにやりとりできるようにする機構を設けることにより、共同シミュレーション中にＲＴＬモデルおよびシステムレベルモデルが正しく機能できるようにするために、当技術分野で知られている種々の標準的技術が使用される。これら機構、例えばトランスレータインターフェースは、共同シミュレーションが実行されている間、自動的に動作する。このように、命令シーケンスに応答するデータ処理装置の動作の特性を決定することができる。
【０００８】
ユーザーが異なるモデルと相互対話できるようにするツールも提供されている。例えばユーザーがシステムレベルモデルから情報を得て、命令シーケンスに応答するシステムレベルモデルの動作の特性を決定できるようにするツール、例えばデバッグツールが提供されている。更にユーザーがＲＴＬモデルから情報、例えばアーキテクチャルステート情報を得て、命令シーケンスに応答するモデルの動作を決定できるようにするツールも提供されている。
【０００９】
しかしながら、デバッグツールが、命令シーケンスに応答するデータ処理装置のアーキテクチャルステートに関する役に立つ情報をシステムレベルモデルから入手することは困難である。特にシステムレベルモデル自体からメモリロケーションのステータス、レジスタのステータス、特定のパスでアサートされるロジックレベルまたはデータ処理装置内のその他のアーキテクチャルステート情報に関する情報を決定することはできない。
【００１０】
理論的にはこれらすべての情報はＲＴＬモデルから入手できるが、デバッグ中に生じるようにモデルが実行を中止しているときに、トランスレータ機構はシステムレベルモデルからの情報にアクセスできない。従って、システムレベルモデルに関連したツールを使って命令に応答するデータ処理装置のアーキテクチャステートを詳細に理解することは容易ではない。
【００１１】
更に、ＲＴＬモデルに関連したツールを使ってデータ処理装置のアーキテクチャステートを正確に理解することは可能であるが、アーキテクチャステートの特定の個々のアイテムとを特定の個々の命令との関係（この関係が生じる場合には）を理解することは困難である。
【００１２】
従って、２つのモデルからの情報を有意義に相互に相関させることが困難であるという問題が生じる。このことは、共同シミュレーション方法を使ったときにデータ処理装置の動作に対する命令シーケンスの効果をユーザーが決定できる能力を制限する。
【００１３】
この問題を解消しようとする一部の技術が存在するが、共同シミュレーション中にこれら方法は、モデルの性能に大きな影響を与える。
【００１４】
従って、データ処理装置の動作をシミュレートするための改良された技術を提供することが望まれている。
【課題を解決するための手段】
【００１５】
本発明の第１の様相によれば、ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートする方法であって、前記データ処理装置が複数のユニットを備え、該ユニットの各々が前記命令シーケンスに応答して発生され前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするための方法において、前記複数のユニットの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションモデルを提供するステップを備え、前記各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表わすハードウェア特性コンポーネント、および前記命令シーケンスに応答して発生した前記ユニットに関連するアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントを備え、前記複数のユニットの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルを提供するステップを備え、前記システムレベルモデルが更に前記ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するための、少なくとも１つのシャドーアーキテクチャステートコンポーネントを備え、前記ハードウェアデスクリプションモデルおよび前記システムレベルモデルを実行し、前記命令シーケンスを実行するときの前記データ処理装置の動作をシミュレートするステップと、前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントによっても記憶させるようにするステップとを備えた、データ処理装置の動作をシミュレートするための方法が提供される。
【００１６】
本発明は、命令シーケンスに応答し、データ処理装置の動作を理解する上での問題の１つは、システムレベルモデルに関連したツールを使用したときに、ハードウェアデスクリプションモデル内のアーキテクチャステートに関係する情報を得ることが困難であることを認識するものである。
【００１７】
従って、システムレベルモデルにはシャドーアーキテクチャステートコンポーネントが設けられる。このシャドーアーキテクチャステートコンポーネントはハードウェアデスクリプションモデルによってモデル化されたユニットのうちの１つ以上に関連するアーキテクチャステートの一部またはすべてを記憶する。システムレベルモデル内にこのシャドーアーキテクチャステートコンポーネントを設けることにより、システムレベルモデルに関連するツールを使用してシステムレベルコンポーネントからの情報と組み合わせて、このアーキテクチャステートのステータスを容易に決定できる。このように、命令シーケンスに応答してハードウェアデスクリプションモデルによって発生されるアーキテクチャステートとシステムレベルコンポーネントのステータスとを容易に相関化することができる。これによってモデルの有効性および使用の容易性が大幅に改善される。
【００１８】
更に、ハードウェアデスクリプションモデル内にアーキテクチャステートを記憶するためのアーキテクチャステートコンポーネントおよびシステムレベルモデル内にアーキテクチャステートを記憶するための１つ以上のシャドーアーキテクチャステートコンポーネントの双方を設けることにより、ハードウェアデスクリプションレベルモデルの性能が比較的変更されない状態のままになる。その理由は、ハードウェアデスクリプションモデルドメイン内では、ハードウェアデスクリプションレベルモデルが必要とするアーキテクチャステート情報に依然としてアクセス可能であるからである。
【００１９】
更に、アーキテクチャステートコンポーネント内のアーキテクチャステートを更新するときに、シャドーアーキテクチャステートコンポーネントにアーキテクチャステートを記憶させるだけで、ハードウェアデスクリプションモデルとシステムレベルモデルとの間の更新の回数を、ハードウェアデスクリプションモデルの現在のステートの表示をするのに必要な最小の回数まで少なくすることができる。このように、２つのモデルの間で伝送しなければならない更新回数を少なくすることにより、これらモデルの性能が大幅に改善される。
【００２０】
一実施例では、本方法は、前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするようになっているソフトウェアデバッガーを設けるステップを更に備える。
【００２１】
従って、一般にシステムレベルモデルに関連するソフトウェアデバッガーは、シャドーアーキテクチャステートコンポーネントからハードウェアデスクリプションモデル内のアーキテクチャステートの細部とシステムレベルコンポーネントの双方に容易にアクセスできる。
【００２２】
一実施例では、本方法は、前記ソフトウェアデバッガーからのリクエストに応答し、前記システムレベルモデルおよび前記ハードウェアデスクリプションモデルの実行を中止するステップを更に備える。
【００２３】
従って、ソフトウェアデバッガーがモデルの動作を終了させるときでも、ハードウェアデスクリプションモデル内のアーキテクチャステートとシステムレベルコンポーネントの双方を、システムレベルモデルから利用できる。
【００２４】
一実施例では、本方法は、前記ハードウェアデスクリプションモデルによって記憶されるアーキテクチャステートの詳細を、前記ソフトウェアデバッガーによって決定できるように、前記システムレベルコンポーネントおよび前記少なくとも１つのシャドーアーキテクチャステートコンポーネントにアクセスするステップを更に備える。
【００２５】
従って、ソフトウェアデバッガーはモデルの動作が中止していても、ハードウェアデスクリプションモデル内のアーキテクチャステートとシステムレベルコンポーネントの双方に直接アクセスする。
【００２６】
一実施例では、前記実行するステップは、前記システムレベルモデルおよび前記ハードウェアデスクリプションモデルを共同シミュレートすることを含む。
【００２７】
一実施例では、前記アーキテクチャステートが更新されるときに、前記アーキテクチャステートの変化を記憶させるステップは、前記ハードウェアデスクリプションモデルからの関数の呼び出しを実行することを含む。
【００２８】
従って、アーキテクチャステートを更新するときにしか、更新の指示をアーキテクチャステートにするためのハードウェアデスクリプションモデルからの関数の呼び出しを行わない。
【００２９】
一実施例では、前記アーキテクチャステートが変更されるときに、前記アーキテクチャステートの変化を記憶させるステップは、前記ハードウェアデスクリプションモデルからのプログラミング言語インターフェース関数の呼び出しを実行することを含む。
【００３０】
従って、関数の呼び出しはハードウェアデスクリプションモデル内からのプログラム言語インターフェース関数の呼び出しの形態をとり得る。
【００３１】
一実施例では、前記少なくとも１つのシャドーアーキテクチャステートコンポーネントは、前記プログラミング言語インターフェース関数の呼び出しに応答し、前記ハードウェアデスクリプションモデルの前記対応するアーキテクチャステートコンポーネントで更新されたアーキテクチャステートの前記表示を記憶する。
【００３２】
従って、システムレベルモデルは、関数の呼び出しに応答し、更新されたアーキテクチャステートをシャドーアーキテクチャステートコンポーネントに記憶させる。
【００３３】
一実施例では、各アーキテクチャステートコンポーネントは、前記ユニットによって提供される記憶装置の表示を記憶する。
【００３４】
この記憶装置は任意の数の異なる記憶素子または記憶アイテムを含むことができると理解できよう。
【００３５】
一実施例では、前記記憶装置は、前記ユニットによって提供されるメモリ領域およびレジスタのうちの少なくとも１つを含む。
【００３６】
従って、この記憶装置は１つ以上のメモリロケーションまたは領域、もしくはレジスタまたはフラグにも関連することができ、または記憶能力を提供するその他の論理素子にも関連できる。
【００３７】
一実施例では、各アーキテクチャステートコンポーネントは、前記ユニットによって提供される信号レベルの表示を記憶する。
【００３８】
従って、記憶装置に関連するアーキテクチャステートを提供できるだけでなく、個々のパス、バスまたはロジックユニットのアーキテクチャステートも提供できる。
【００３９】
一実施例では、前記システムレベルモデルは、トランザクションレベルモデルを含む。
【００４０】
かかるトランザクションレベルは時々電子システムレベルモデルと称される。
【００４１】
一実施例では、前記システムレベルモデルは、Ｃプログラム言語モデルを含む。
【００４２】
一実施例では、前記ハードウェアデスクリプションモデルは、ＲＴＬモデルを含む。
【００４３】
本発明の第２の特徴によれば、ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするシステムであって、前記データ処理装置が複数のユニットを備え、該ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのシステムにおいて、前記複数のユニットの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションソフトウェアモデルを提供するステップを備え、前記各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表現するハードウェア特性コンポーネントおよび前記ユニットに関連するアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントを備え、前記複数のユニットの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルを備え、前記システムレベルモデルが更に前記ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するための、少なくとも１つのシャドーアーキテクチャステートコンポーネントを備え、前記ハードウェアデスクリプションモデルおよび前記システムレベルモデルが、前記命令シーケンスを実行するときの前記データ処理装置の動作をシミュレートすると共に、前記命令シーケンスに応答して発生され、前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントによっても記憶されるように動作する、データ処理装置の動作をシミュレートするためのシステムが提供される。
【００４４】
本発明の第３の特徴によれば、ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするときのコンピュータプログラムであって、前記データ処理装置が複数のユニットを備え、前記ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのコンピュータプログラムにおいて、前記複数のユニットのうちの少なくとも１つに対応するハードウェアデスクリプションコンポーネントを備えたハードウェアデスクリプションモデルを備え、各ハードウェアデスクリプションコンポーネントが前記ユニットのハードウェア特性を表示するハードウェア特性コンポーネントと、前記命令シーケンスに応答して発生される前記ユニットに関連したアーキテクチャステートの表示を記憶するためのアーキテクチャステートコンポーネントとを備え、前記ハードウェアデスクリプションモデルが前記複数のユニットのうちの少なくとも１つの他のユニットに対応するシステムレベルコンポーネントを備えたシステムレベルモデルと共に実行されるときに、前記命令シーケンスを実行している前記データ処理装置の動作をシミュレートするようになっており、前記ハードウェアデスクリプションモデルが、前記対応するアーキテクチャステートコンポーネントに記憶されたアーキテクチャステートの変化を前記システムレベルモデルのシャドーアーキテクチャステートコンポーネントによっても記憶されるようにする、データ処理装置の動作をシミュレートするためのコンピュータプログラムが提供される。
【００４５】
本発明の第４の特徴によれば、ある命令シーケンスを実行するときの、データ処理装置の動作をシミュレートするときのコンピュータプログラムであって、前記データ処理装置が複数のユニットを備え、前記ユニットの各々が前記命令シーケンスに応答して発生され、前記ユニットに関連するアーキテクチャステートを有する、データ処理装置の動作をシミュレートするためのコンピュータプログラムにおいて、前記複数のユニットの少なくとも１つに対応するシステムレベルコンポーネントを備えたシステムレベルモデルを備え、前記システムレベルモデルがハードウェアデスクリプションモデルのアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶するようになっている少なくとも１つのシャドーアーキテクチャステートコンポーネントを更に備え、前記システムレベルモデルが、前記ハードウェアデスクリプションモデルと共に実行されるときに、前記命令シーケンスを実行中の前記データ処理装置の動作をシミュレートするようになっており、前記システムレベルモデルが前記ハードウェアデスクリプションモデルから受信したアーキテクチャステートの変化を前記シャドーアーキテクチャステートコンポーネントに記憶するようになっている、データ処理装置の動作をシミュレートするためのコンピュータプログラムが提供される。
【００４６】
従って、添付図面に示された好ましい実施例を参照しながら、単なる例示に基づき、本発明について更に説明する。
【実施例】
【００４７】
図１は、一実施例に係わる、全体が番号１０で示されたモデル化システムを示す。
【００４８】
既に述べたように、代表的なデータ処理装置の開発シナリオでは、そのデータ処理システムのコンポーネントユニットの設計および実施の特徴を決定し、改良するのを助けるためのモデルが使用される。ほとんどのコンポーネントユニットは、まず、例えばＣ言語を使ってプログラムされたシステムレベルモデルを使って、より高いレベルでモデル化される。その設計において、一旦確実性が得られると、次に、例えばレジスター転送ロジック（ＲＴＬ：ｒｅｇｉｓｔｅｒ  ｔｒａｎｓｆｅｒ  ｌｏｇｉｃ）を使用してプログラムされたハードウェアデスクリプションモデルを使って、より低いレベルで各コンポーネントユニットをモデル化する。従って、このモデル化システム１０は、Ｃ環境２０とＲＴＬ環境３０とを有する。
【００４９】
これら２つのモデルを共同シミュレーションすることは各モデルを、より高いシミュレーションからＲＴＬへの移行をスムーズにすることを助ける。他のコンポーネントユニットを示す他のモデルと共に、新しい各ＲＴＬモデルを導入し、シミュレートすることができる。この移行段階では、ＲＴＬ環境の実証が強調される。一般に、テストされるのはＲＴＬモデルであり、そのモデルの動作を囲むすべてのハードウェアの事象を捕捉することが重要である。従って、ＲＴＬ環境３０内ですべてのアーキテクチャステート情報を維持することが一般に望ましい。その理由は、このようにすることによって、実証目的およびデバッグ目的のためにすべてのＲＴＬ情報を存在させることが可能であるからである。
【００５０】
しかしながら、効率的なデバッギングを行うには、できるだけ可視度を大きくすることが重要である。ＲＴＬ環境３０内ではＲＴＬシミュレータ（図示せず）によりハードウェア可視性が得られるが、Ｃ環境２０からのデバッグ可視性によってＲＴＬ環境３０内でモデル化されるアーキテクチャステートとハードウェア事象との相関性を理解できるようにすることも重要である。このような可視性を得るにはＣ環境において外部埋め込みソフトウェアデバッガー（図示せず）を使ったソフトウェアビュー（ｖｉｅｗ）およびＲＴＬモデルに含まれるアーキテクチャステートのビューを提供しなければならない。以下、より詳細に説明するように、このことはＣ環境２０に、ミラー状態のバーチャルな、すなわちシャドーステートコンポーネント１４０を維持することによって達成できる。
【００５１】
次の説明はアービター（ａｒｂｉｔｅｒ）を介して、いくつかのスレーブユニットＳ１〜Ｓ３と結合され相互接続されたいくつかのマスターユニットＭ１〜Ｍ３を備えたデータ処理装置を共同シミュレートするモデルの構造の一例について説明するものである。しかしながら、他の構造例にも同じ技術を使用できることが理解できよう。この例では、システムレベルモデル４０を利用できるマスターユニットＭ１を除くすべてに対しＲＴＬモデルが存在する。しかしながら、Ｃ環境２０では１つ以上の他のモデルもモデル化できると理解できよう。次の例は、デバッグの目的のためにはスレーブユニットＳ１〜Ｓ３に関連するメモリ領域しか関心を払わないと仮定するものである。その理由は、これら領域のコンテントは、更新時にシャドーステートコンポーネント１４０内にも記憶されるからである。しかしながら、シャドーステートコンポーネント１４０にはＲＴＬモデルのいずれかに関連するその他のアーキテクチャステート情報を提供できることが理解できよう。
【００５２】
従って、Ｃ環境２０内では開発中のデータ処理装置のコンポーネントユニットＭ１のシステムレベルモデル４０が提供される。コンポーネントユニットＭ１はデータ処理装置の新しいか、または変更されたコンポーネントユニットでよい。サイクルに基づくシミュレーションエンジン（図示せず）を利用する、サイクルに基づくＳｙｓｔｅｍＣシミュレーション環境であるＭａｘＳｉｍを使ってシステムレベルモデル４０は生成される。システムモデル４０は、当業者で公知のようなコンポーネントユニットＭ１の特性を示す。この例では、システムレベルモデル４０によって示されるコンポーネントユニットＭ１はプロセッサコアである。しかしながら、システムレベルモデル４０は、データ処理装置のその他のユニット（単数または複数）を示すことができると理解できよう。
【００５３】
シミュレートされるデータ処理装置の特性を調査するときの、システムレベルモデル４０によって実行すべきソフトウェアコードの例を含むソフトウェアコード５０も提供される。このソフトウェアコード５０はＣ環境２０内ではシステムレベルモデル４０と相互作用するように示されているが、ソフトウェアコード５０はその代わりにＲＴＬ環境３０または２つの環境の組み合わせ内でも提供できることが理解できよう。
【００５４】
システムレベルモデル４０とトランスレータ６０とが結合されており、トランスレータ６０は、ＲＴＬ環境３０内のモデルが必要とするシステムレベルモデル６０によって提供される任意のデータを受信するようになっている。トランスレータ６０は、このデータをＲＴＬ環境３０内のモデルによる使用に適した形態に変換する。同様に、トランスレータ６０は、ＲＴＬ環境３０から得られたデータをＣ環境２０内のシステムレベルモデル４０によって使用するために変換する。共同シミュレーション中に使用されるかかるトランスレータは当技術分野では周知のものである。
【００５５】
ＲＴＬ環境３０は、データ処理装置の残りのコンポーネントユニットをモデル化する多数のＲＴＬモデル７０〜１３０を含む。各ＲＴＬモデル７０〜１３０は２つのＲＴＬコンポーネント、すなわちハードウェアＲＴＬコンポーネントおよびアーキテクチャステートのＲＴＬコンポーネントを一般に含む。ハードウェアＲＴＬコンポーネントは、そのコンポーネントユニットの特定のハードウェア特性をモデル化する。アーキテクチャステートのＲＴＬコンポーネントは、そのコンポーネントユニットのそのときのアーキテクチャステートを示す。例えばメモリシステムのＲＴＬモデルでは、そのモデルのハードウェアＲＴＬコンポーネントがビットおよびワードラインの特性およびそのメモリシステム内のセルの特性と共に、バスの特定のハードウェア構造および多重化構造を示すことができる。アーキテクチャステートのＲＴＬコンポーネント内には、バス、マルチプレクサおよびその他のラインもしくはロジックユニットのステートと共に、メモリセル内に記憶されたデータを示す情報が記憶される。例えばＲＴＬモデル１１０〜１３０によって示されるスレーブユニットＳ１〜Ｓ３は、これらに関連するアーキテクチャステート情報Ａ１〜Ａ３を有する。他のＲＴＬモデル７０〜１００も、これらに関連するアーキテクチャステート情報を有する。しかしながら、これらについては説明を明確にするために省略されている。
【００５６】
既に述べたように、Ｃ環境２０内にはＲＴＬモデル７０〜１３０のいずれかから得られるアーキテクチャステート情報を記憶するようになっているシャドーアーキテクチャステートコンポーネント１４０が設けられている。この構造例では、シャドーステートコンポーネント１４０はスレーブユニットＳ１〜Ｓ３をモデル化する、ＲＴＬモデル１１０〜１３０に関連したアーキテクチャステート情報Ａ１〜Ａ３を記憶する。特にこの構造では、シャドーステートコンポーネント１４０は、スレーブユニットＳ１〜Ｓ３に関連する当該メモリ領域からのステート情報を記憶する。しかしながら、シャドーステートコンポーネント１４０は、ＲＴＬモデル７０〜１３０のいずれかに関連するアーキテクチャステート情報のすべてまたは任意のサブセットを記憶できることが理解できよう。
【００５７】
ＲＴＬモデル内のどのアーキテクチャステートに関心があるかが決定されると、当該アーキテクチャステートを変更するときたは更新するときに生じるプログラム言語インターフェース（ＰＬＩ）の関数の呼び出しを含むように、これらＲＴＬモデルに注釈が付けられる。アーキテクチャステートを変更するときに、ＰＬＩの関数の呼び出しをアクティブにするだけで、実行に必要なＰＬＩ関数の呼び出しの回数が、Ｃ環境２０内のアーキテクチャステートの正確な記録を維持できるようにする最小の回数となることが理解できよう。これによって大きな性能上の利点が得られる。その理由は、かかるＰＬＩ関数の呼び出しの発生は、ＲＴＬモデルの性能を劣化し得るからである。
【００５８】
アーキテクチャステートをＲＴＬモデルからシャドーステートコンポーネントに１４０にミラー化するために、ＰＬＩ関数の呼び出しを使用することにより、ＲＴＬ環境３０およびＣ環境２０の双方において、アーキテクチャステートの一貫したビューを提供することが可能となる。従って、Ｃ環境２０内でアーキテクチャステートを完全に理解でき、これによってシステムレベルモデル４０をＲＴＬに書き込んだり、または逆にＲＴＬモデル７０〜１３０をＣ言語に書き直したりする必要がなくなる。
【００５９】
従って、ＲＴＬモデル７０〜１３０が必要とするアーキテクチャステート情報はＲＴＬ環境３０内に留まる。これによってＲＴＬモデルが必要とする情報は、まだＲＴＬ環境３０内に留まるので、ＲＴＬモデルの実行速度が過度に変化しないことが保証される。しかしながら、Ｃ環境内のツールが必要とするすべての情報は、Ｃ環境内のツールの効用を大幅に高めるシャドーステートコンポーネント１４０によって提供される。ＲＴＬモデルによるシャドーステートコンポーネント１４０に対する更新は、そのステートが変化するとき、例えばＲＴＬ内でモデル化されたアドレス領域にアクセスされ、更新されるときにしか行われないので、ＲＴＬモデルの全体の動作に対する性能の影響が最小となる。
【００６０】
Ｃ環境２０内では、種々のデバッガーおよびプロファイリングツール、例えばＭａｘＳｉｍデバッグインターフェースおよびＭａｘＳｉｍプロファイリングインターフェース１５０が設けられている。ＭａｘＳｉｍデバッグインターフェースはユーザーに対し、コンポーネント、システムおよびソフトウェアの可視性を提供するためのメカニズムである。ＭａｘＳｉｍデバッグインターフェースがイネーブルされると、このインターフェースは共同シミュレーションを中止し、Ｃ環境２０内のアイテムを試す非侵襲的なゼロ遅延のアクセスによってアーキテクチャステートまたはリソースに関する情報を検索できるようにすると、この情報はＭａｘＳｉｍデバッグインターフェースウィンドーにディスプレイされる。かかる情報は、レジスターおよびメモリ領域のステートを含む。プロセッサモデルのために、ソフトウェア中心の可視性を提供するよう、外部ソフトウェアデバッガー（例えばＡＲＭリアルビューデバッガー（図示せず））を取り付けることができる。シャドーステートコンポーネント１４０を試すことにより、ＭａｘＳｉｍデバッグインターフェースおよびＭａｘＳｉｍプロファイリングインターフェース１５０から、ＲＴＬ環境３０内にデバッグアクセスが認められないという制限を克服することができるので、ＲＴＬ環境３０内に常駐する任意のモデルに対し、ＭａｘＳｉｍデバッグインターフェースおよびＭａｘＳｉｍプロファイリングインターフェース１５０の特徴を実現することができる。例えばＭａｘＳｉｍデバッグインターフェースとＭａｘＳｉｍプローブインターフェース１５０は、ＲＴＬモデルのアーキテクチャステートに対するコードの効果と共に、マスターユニットＭ１でのソフトウェアコードの実行に関する情報を相関化できる。これによって大きな利点が得られることが理解できよう。
【００６１】
図２は、図１に示されたモデル化システム１０の動作を示すフローチャートである。
【００６２】
準備段階中にステップＳ１０にてシステムＣおよびＲＴＬモデルが提供される。
その後、ステップＳ２０にて、シミュレートされるべきコードが提供される。これによって準備段階が終了する。
その後、共同シミュレーション段階に入る。従って、ステップＳ３０にて、コード内の命令がモデルによって共同シミュレートされる。
【００６３】
ステップＳ４０にて、当該アーキテクチャステートが変化しているので、ＰＬＩ関数の呼び出しを行うかどうかの判断がＲＴＬモデルのうちの１つ以上によって行われる。アーキテクチャステートが変化している場合に、起動すべきモデル内で、かかるＰＬＩ関数の呼び出しが行われた状況において、この判断をＲＴＬモデルによって自動的に行うことができることが理解できよう。
【００６４】
当該アーキテクチャステートが変更されていない場合、ステップＳ３０に進み、ここで次の命令が共同シミュレートされる。
【００６５】
当該アーキテクチャステートが変更されていると判断された場合、ステップＳ５０に進み、ここで、このような変化と共にシャドーステートコンポーネント１４０を更新させるＰＬＩ関数の呼び出しが行われる。
その後、ステップＳ３０に進み、ここで次の命令が共同シミュレートされる。
この共同シミュレート段階はコードが実行を終了させるか、または共同シミュレーションを中止させるようなデバッグまたはその他の外部事象が生じるまで続く。
【００６６】
デバッグリクエストが生じた場合、デバッガー１５０はステップＳ６０で起動し、ステップＳ７０にてＭａｘＳｉｍデバッグインターフェースおよびＭａｘＳｉｍプロファイリングインターフェース１５０が情報、例えばコード５０、システムモデル４０およびシャドーステートコンポーネント１４０のコンテントに関連する情報を分析し、ユーザーが必要とする態様でこの情報を提供する。
【００６７】
その後、共同シミュレーションを再開始でき、この場合、ステップＳ３０に進む。これとは異なり、モデルまたはコードを更新してもよく、この場合、ステップＳ１０またはステップＳ２０のいずれかに進む。
【００６８】
従って、システムレベルモデルにはシャドーアーキテクチャステートコンポーネントが設けられ、このシャドーアーキテクチャステートコンポーネントは、ハードウェアデスクリプションモデルによってモデル化されたユニットのうちの１つ以上に関連するアーキテクチャステートの一部またはすべてを記憶する。システムレベルモデル内にこのシャドーアーキテクチャステートコンポーネントを設けることにより、システムレベルモデルに関連するツールを使用するシステムレベルのコンポーネントからの情報と組み合わせて、このアーキテクチャステートのステータスを容易に決定できる。このように、命令のシーケンスに応答し、ハードウェアデスクリプションモデルによって発生されたアーキテクチャステートとシステムレベルのコンポーネントのステータスとの間の相関化を容易に行うことができる。このことは、モデルの有効性および使用の容易さを大幅に改善できる。
【００６９】
従って、データ処理装置の動作を共同シミュレートするための技術が提供される。このシステムレベルモデルは、ハードウェアデスクリプションモデルの対応するアーキテクチャステートコンポーネントによって記憶されるアーキテクチャステートの表示を記憶する少なくとも１つのシャドーアーキテクチャステートコンポーネントを含む。シャドーアーキテクチャステートコンポーネントにより、対応するアーキテクチャステートコンポーネントに記憶されるアーキテクチャステートの変化も記憶される。ハードウェアデスクリプションモデル内にアーキテクチャステートを記憶するためのアーキテクチャステートコンポーネントおよびシステムレベルモデル内にアーキテクチャステートを記憶するための１つ以上のシャドーアーキテクチャステートコンポーネントの双方を設けることにより、ハードウェアデスクリプションモデルドメイン内にて、ハードウェアデスクリプションレベルモデルが必要とするアーキテクチャステート情報に、まだアクセス可能であることが保証される。更に、アーキテクチャステートコンポーネント内のアーキテクチャステートが更新されるときに、アーキテクチャステートをシャドーアーキテクチャステートコンポーネントが記憶するようにするだけで、ハードウェアデスクリプションモデルとシステムレベルモデルとの間の更新の回数を、ハードウェアデスクリプションモデルの現在のステートの表示を提供するのに必要な数となるように最小にできる。２つのモデルの間で通信するのに必要な更新回数が低減することによって、これらモデルの性能が大幅に改善されることが理解できよう。
【００７０】
以上で、本発明の特定の実施例について説明したが、本発明はこの実施例だけに限定されないこと、および発明の範囲内で多くの変形および追加を行うことが可能であることが明らかとなろう。例えば本発明の範囲から逸脱することなく、独立請求項の特徴事項と従属請求項の特徴事項とを種々に組み合わせることが可能である。
【図面の簡単な説明】
【００７１】
【図１】一実施例に係わるデータ処理装置の動作をシミュレートするためのモデルを示すブロック略図である。
【図２】図１のモデルの動作を示すフローチャートである。
【符号の説明】
【００７２】
１０  モデル化システム
２０  Ｃ環境
３０  ＲＴＬ環境
４０  システムレベルモデル
５０  ソフトウェアコード
６０  トランスレータ
７０〜１３０  ＲＴＬモデル
１４０  シャドーステートコンポーネント
Ａ１〜Ａ３  アーキテクチャステート情報
Ｓ１〜Ｓ３  スレーブユニット
【図１】
2007052783.tif 000003
【図２】
2007052783.tif 000004