JP5475996B2 - モデル化およびシミュレーション方法 - Google Patents

モデル化およびシミュレーション方法 Download PDF

Info

Publication number
JP5475996B2
JP5475996B2 JP2008550846A JP2008550846A JP5475996B2 JP 5475996 B2 JP5475996 B2 JP 5475996B2 JP 2008550846 A JP2008550846 A JP 2008550846A JP 2008550846 A JP2008550846 A JP 2008550846A JP 5475996 B2 JP5475996 B2 JP 5475996B2
Authority
JP
Japan
Prior art keywords
component
simulation
entity
computer program
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008550846A
Other languages
English (en)
Other versions
JP2009524138A (ja
Inventor
パーカー,ダニエル,ロビン
ジョーンズ,クリストファー
ポリクロノポウロス,ジェイソン,ソティリス
Original Assignee
メンター グラフィックス コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to GB0601135.7 priority Critical
Priority to GBGB0601135.7A priority patent/GB0601135D0/en
Application filed by メンター グラフィックス コーポレイション filed Critical メンター グラフィックス コーポレイション
Priority to PCT/GB2007/000168 priority patent/WO2007083134A2/en
Publication of JP2009524138A publication Critical patent/JP2009524138A/ja
Application granted granted Critical
Publication of JP5475996B2 publication Critical patent/JP5475996B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking

Description

本発明は、モデル化およびシミュレーション方法に関係する。
システムのモデルを構築して、予め定義された条件下で該モデルの挙動を実証するためにシミュレーション・プロセスを使用することは周知である。システムは2以上の相関コンポーネントを含んでもよい。多くのモデル化の方法がよく知られており、選択された特定の方法は、通常モデル化するシステムの要件によって判断する。
モデル化およびシミュレーション方法のある具体的な用途は、プロトタイプシステムを製作する前に、コンピュータのハードウェア・システムをモデル化およびシミュレートすることである。これは、プロトタイプ・コンピュータのハードウェア・システムの開発に関わる時間と費用の点で有利である。このようなモデル化およびシミュレーションは、最終設計に到る前に、必要な設計イタレーション(繰り返し)の回数を実質的に減らすことができる。さらに、モデル化およびシミュレーションは、設計期間の初期に問題を突き止められるため、最終システムが意図したとおりに動作する確率を高めることができる。モデル化およびシミュレーション・プロセスで、モデル化したシステムが必要な挙動を示すことが一度実証されたら、コンピュータのハードウェア設計者は、検証可能な形でモデルと同じシステムの実装を構築すれば所望の結果が得られるという確信がもてる。
コンピュータのハードウェア・システムはその設計中に様々な抽象化レベルで考えられることは周知である。さらに、コンピュータのハードウェア・システムは、様々な抽象化レベルでモデル化およびシミュレーションをすることができる。例えば、典型的にはモデル化はシステムの仕様を英語などの自然言語で書くことから始める。それから、この仕様に基づいて、アーキテクチャ・モデルおよびパフォーマンス・モデルを作成する。このようなモデルはC++などの高レベルのコンピュータ・プログラミング言語で作成されることが多い。アーキテクチャ・モデルおよびパフォーマンス・モデルを使用して、システムのアーキテクチャ設計の妥当性を確認し、様々な設計特徴のパフォーマンスを評価する。このモデル化の段階で、アーキテクチャおよびパフォーマンスのモデル化の結果を考慮してシステム仕様を修正してもよい。このプロセスが完了したら、システムの個々のコンポーネントのユニット仕様を自然言語で作成し、さらにVHDLまたはVerilogなどのハードウェア記述言語(HDL)で書かれた仕様に変換すると、レジスタ転送レベル(RTL)など、より低い抽象化レベルでモデル化できる。
前述したシステム仕様は、システム仕様から作成する適切なシステムテストを同時に行って、システムの挙動を検証する。同じくシステム仕様から作成するユニットテストを使用して、個々のコンポーネントの挙動をシミュレーション・プロセスを使って検証する。このようなシミュレーションは従来、例えばRTLなど単一の抽象化レベルで行ってきた。すべてのコンポーネントに詳細RTL設計を行ってからでないと、どのコンポーネントもシミュレーションできないため、この点は明らかに不利である。前述のシステム仕様からのユニット仕様の作成と、適切なテストの作成とは手作業で行う。このような手作業によるユニット仕様の作成は時間がかかるとともに、間違いやすい。さらに、RTLでのシステム全体のテストは、テストデータの作成の点においてもシミュレーションの点においても非常に時間がかかる。
上記の問題を解決しようとして、VHDLおよびC++などのプログラミング言語が備えるより高レベルの特徴を使って、より高い抽象化レベルでモデル化を試みてきた。しかし、より高レベルのモデルは直接RTLモデルに接続できないなど、大きな問題がでてきた。異なる抽象化レベルでモデル化したコンポーネント間でトランスレータを手作業で作成すると、多くの場合、より低いレベルのモデル自体を作成するのと少なくとも同じくらい複雑で間違いやすい作業になることがわかっている。
システムのコンポーネントを異なる抽象化レベルで(例えば、システムレベルおよびRTL)記述するシステムのシミュレーション・プロセスを自動化することが周知である。下記特許文献1は、システム内の相関のある第1および第2コンポーネントの挙動のシミュレーション方法を記載している。ここで記載される方法は、コンポーネントの挙動を第1機能仕様および第2機能仕様を使用してモデル化する工程と、予め定義した状況下でコンポーネントをシミュレーションする工程とを含む。モデル化するコンポーネントは異なる抽象化レベルにすることができる。
下記特許文献1は、コンポーネント全部をソフトウェアでモデル化するシステムを記載している。しかし、マルチレベルのモデル化では、シミュレーションの速度が最も低いレベルのコンポーネントの速度に制限されてしまう。単一のコンポーネントをより高次の挙動(ビヘイビア)レベルではなく、RTLなどの低い抽象化レベルでシミュレーションするには、低レベルのモデル内に含まれている詳細の量が多くなるため、計算上の負荷がはるかに多いためである。さらに、下記特許文献1の中で記載されるような先行技術のシミュレーション・システムは、モデル化するコンポーネントすべてのシミュレーション・プロセスを管理する個別のシミュレータが必要である。このことは計算上の大きな負荷を意味するが、計算リソースに対してモデル化する個々のコンポーネントの矛盾する要求を管理するために、個別のシミュレータが必要である。
単一コンポーネントの低レベルHDLモデルを使用して、そのモデルをハードウェアに実装するプログラマブル・コンピューティング・デバイスをプログラムすることが周知である。「プログラマブル・コンピューティング・デバイス」とは、本明細書で使用する場合、単一のプログラマブル・チップであってもよい。あるいは、プログラマブル・コンピューティング・デバイスは相互接続した複数のプログラマブル・チップを含んでもよい。さらに、プログラマブル・コンピューティング・デバイスは、1または複数のプログラマブル・チップの代わりに、またはそれに追加して、プロセッシング・エレメントを含むエミュレータ・ボックスを含んでもよい。HDLモデルは、プログラマブル・コンピューティング・デバイスの挙動を決定(判定)する。プログラマブル・コンピューティング・デバイスはシミュレーション・プロセス内で使用して、システム全体のシミュレーションを迅速化できる。しかし、これは、モデル化するシステムのコンポーネント全部が同じ低レベルでモデル化する場合に限って、効率的なプロセスであることがわかっている。それは、高レベルのソフトウェア・モデルを低レベルのハードウェア・モデルにインターフェースする際に問題が生じるためである。
モデル化するシステム内の一部のコンポーネントを低い抽象化レベルでハードウェアに実装し、一部のコンポーネントを高い抽象化レベルでソフトウェアに実装すると、高レベルのソフトウェア・モデルと低レベルのハードウェア・モデルとの間のトランスレータを開発する必要がある。このようなトランスレータはソフトウェアに実装してもよい。しかし、これが通常シミュレーションするシステムにおいて障害となる。障害の一因は、低い抽象化レベルでモデル化するハードウェア・コンポーネントに情報を渡す場合、ソフトウェアからハードウェアに大量の情報を渡さなければならないことである。さらに、ソフトウェアとハードウェアとが通信するときに、多くの非連続通信が発生することも障害の原因になるおそれがある。各トランザクションの開始および終了時点で、非連続通信が発生する。各トランザクションは多サイクルに渡ることがある。高レベルのソフトウェア・コンポーネントと低レベルのハードウェア・コンポーネントとの間で伝送する情報の総量が、両コンポーネントをソフトウェアに実装した場合と同じであったとしても、ソフトウェア・コンポーネントとハードウェア・コンポーネントとを同期させる負荷によって、情報交換できる速度が遅くなる。
ソフトウェア・コンポーネント・モデルとハードウェア・コンポーネント・モデルとのトランスレータをハードウェアに実装することが周知である。このようなトランスレータは前記または各ハードウェア・コンポーネント・モデルと同じプログラマブル・コンピューティング・デバイス内に実装する。これは、ソフトウェアとハードウェアとの間のデータ伝送を高い抽象化レベルでできるため、伝送する必要のあるデータの総量を低減できる点が有利である。また、ハードウェア・コンポーネントとソフトウェア・コンポーネントととのデータ交換の同期により生じる障害が少なくなる点も有利である。
欧州特許出願公開第1,517,254号明細書
ハードウェア・トランスレータは、データを低レベルのハードウェア・モデルが必要とするより低い抽象化レベルに変換する。しかし、今までのところ、このようなハードウェア・トランスレータは手作業で実装している。これは手間がかかり、かつ間違いやすいプロセスである。システムの一部を高レベル(例、システムレベル)でソフトウェアに記述およびモデル化するとともに、システムの一部を低レベル(例、RTL)でハードウェアに記述およびモデル化する場合に、システムを自動的にかつ正確にシミュレーションする方法は知られていない。
本発明の実施形態の目的は、本明細書または他で特定されるものかどうかを問わず、先行技術の問題の1または複数を排除または軽減することである。
本発明の第1の局面によると、相関のある第1および第2コンポーネントを含むシステムをモデル化およびシミュレーションする方法を提供し、当該方法は、前記第1コンポーネントおよび前記第2コンポーネントの挙動を、第1仕様および第2仕様を使用してモデル化する工程であって、前記第1仕様および前記第2仕様のそれぞれが機能仕様と関連シミュレーション・エレメントとを含む、挙動をモデル化する工程と、前記第1コンポーネントおよび前記第2コンポーネントの挙動を前記第1仕様および前記第2仕様を使用してシミュレーションする工程とを含み、前記シミュレーション・エレメントが互いに通信して、シミュレーション・システムを提供する。
本発明の第1の局面の利点は、シミュレーション・エレメントがまとまって分散シミュレーション・システムを形成し、これがハードウェア実装コンポーネントのシミュレーションを制御することである。本発明のある実施形態において、コンポーネント内にエレメントを含む分散シミュレーション・システムをシミュレーションさせることによって、ハードウェア実装エレメントのシミュレーションを制御する役割を担う個別のエンティティを有する必要がない。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との通信を管理してもよい。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様および前記第2仕様がイベントを処理する順序を決定してもよい。
前記シミュレーションする工程はさらに、相関エンティティの階層内の少なくとも1つの第1エンティティをインスタンス化する工程を含んでもよい。前記少なくとも1つの第1エンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義される。
前記方法はさらに、前記または各インスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程を含んでもよく、前記または各さらなるエンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義され、前記または各さらなるエンティティは前記少なくとも1つの第1エンティティとの階層関係に基づいてシミュレーション・システムによって選択される。
前記第1コンポーネントおよび前記第2コンポーネントを、前記相関エンティティの階層内のそれぞれのエンティティによって表してもよく、前記それぞれのエンティティのインスタンスが作成される。
前記少なくとも1つのさらなるエンティティは、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの親であってもよい。あるいは、前記少なくとも1つの別のエンティティは、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの子であってもよい。
前記階層内のエンティティは、第1コンポーネントと第2コンポーネントとの間で送信されるデータを表すインスタンスを生成してもよい。前記第1コンポーネントおよび前記第2コンポーネントを表す第1仕様と第2仕様との間の通信をモデル化する。
前記第1コンポーネントは前記第2コンポーネントよりも高い抽象化レベルでモデル化してもよく、前記方法は前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を前記階層を使って規定する工程を含む。
前記エンティティ間の階層関係は、前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つから導き出してもよい。
前記第1仕様および前記第2仕様は、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムとして記述してもよい。前記方法はさらに、前記第1仕様と前記第2仕様との関係を前記第1コンピュータ・プログラムに記述する工程を含んでもよい。
前記方法はさらに、第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する工程を含んでもよい。前記処理する工程は、前記第1コンピュータ・プログラムを前記第1コンピュータ・プログラミング言語から第2コンピュータ・プログラミング言語に変換(翻訳)してもよい。前記第2コンピュータ・プログラミング言語はVHDLまたはVerilogであってもよい。
前記方法はさらに、前記第2コンピュータ・プログラムに基づいて、ハードウェアに前記第1コンポーネントおよび前記第2コンポーネントの実装(実動化)を生成する工程を含んでもよい。
前記処理する工程は、前記第2コンピュータ・プログラムに追加のコンピュータ・コードを挿入する工程を含んでもよい。前記追加のコンピュータ・コードは前記または各シミュレーション・エレメントを実装する。
前記方法はさらに、第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する工程を含んでもよい。前記処理する工程は、前記第1コンピュータ・プログラムを前記第1コンピュータ・プログラミング言語から、それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語に変換してもよい。前記第2コンピュータ・プログラミング言語はVHDLまたはVerilogであってもよく、前記第3コンピュータ・プログラミング言語はCまたはC++であってもよい。前記第1コンポーネントはハードウェアに実装してもよく、前記第2コンポーネントはソフトウェアに実装してもよい。
前記方法はさらに、少なくとも1つのさらなるコンポーネントの挙動を少なくとも1つのさらなる機能仕様を使用してモデル化する工程と、前記少なくとも1つのさらなる機能仕様に基づいて、ソフトウェアに前記少なくとも1つのさらなるコンポーネントの実装を生成する工程と、前記少なくとも1つのさらなるコンポーネントの挙動を前記少なくとも1つのさらなる機能仕様を使用してシミュレーションする工程とを含んでもよい。
前記方法はさらに、前記第1コンポーネントおよび前記第2コンポーネントと、前記少なくとも1つの別のコンポーネントとの通信を管理するために、ソフトウェア実装シミュレーション・システムを提供する工程を含んでもよい。
前記方法はさらに、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様および前記第2仕様が、ソフトウェア実装シミュレーション・システムと、ハードウェアに実装されている他のコンポーネントを表す他の仕様とを介して、同時にさらなるコンポーネントとの通信を試みる工程を含んでもよい。
前記第2コンピュータ・プログラムは、前記シミュレーションに応答して、より低い階層レベルの少なくとも1つのエンティティに基づいて、より高い階層レベルのエンティティをインスタンス化するように構成した有限状態機械の実装を含んでもよい。
前記第2コンピュータ・プログラムは、前記シミュレーションに応答して、より高い階層レベルの少なくとも1つのエンティティに基づいて、より低い階層レベルのエンティティをインスタンス化するように構成した有限状態機械の実装を含んでもよい。
前記第2コンピュータ・プログラムは、前記シミュレーションに応答して、それぞれより低い階層レベルまたはより高い階層レベルの少なくとも1つのエンティティに基づいて、より高い階層レベルのエンティティおよびより低い階層レベルのエンティティ双方をインスタンス化するように構成した有限状態機械の実装を含んでもよい。
本発明の第2の局面により、第1仕様および第2仕様を記憶する記憶手段であって、前記第1仕様および前記第2仕様がそれぞれ第1コンポーネントおよび第2コンポーネントの挙動をモデル化し、前記第1仕様および前記第2仕様のそれぞれが機能仕様とシミュレーション・エレメントとを含む、記憶手段と、前記第1コンポーネントおよび前記第2コンポーネントの挙動を前記第1仕様および前記第2仕様を使用してシミュレーションするように構成した処理手段とを含むプログラマブル・コンピューティング・デバイスを提供する。前記シミュレーション・エレメントは互いに通信してシミュレーション・システムを提供するように構成する。
本発明の第3の局面により、相関のある第1および第2コンポーネントとを含むシステムをモデル化およびシミュレーションする装置を提供する。前記装置は、前記第1コンポーネントおよび前記第2コンポーネントの挙動を第1仕様および第2仕様を使用してモデル化するモデル化手段であって、前記第1仕様および前記第2仕様のそれぞれが機能仕様と関連シミュレーション・エレメントとを含む、モデル化手段と、前記第1コンポーネントおよび前記第2コンポーネントの挙動を前記第1仕様および前記第2仕様を使用してシミュレーションするシミュレーション手段とを含み、前記シミュレーション・エレメントは互いに通信してシミュレーション・システムを提供する。
本発明の第4の局面により、コンポーネントを含むシステムをモデル化およびシミュレーションする方法を提供する。前記方法は、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムに記述された仕様を使用して、コンポーネントの挙動をモデル化する工程と、第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する工程と、前記第2コンピュータ・プログラムに基づいてコンポーネントの実装を生成する工程と、エンティティの階層内の第1エンティティをインスタンス化することによって、前記生成した実装を使用してコンポーネントの挙動をシミュレーションする工程とを含み、前記第2コンピュータ・プログラムは、前記シミュレーションに応答して、前記エンティティの階層内のより高いレベルのエンティティおよびより低いレベルのエンティティ双方をインスタンス化するように構成した有限状態機械の実装を含む。
本発明の第4の局面の利点は、エンティティの階層内のより高いレベルとより低いレベルのエンティティとをインスタンス化するように構成されている単一のコンポーネントを有することによって、システムのモデル化およびシミュレーションの複雑さを低減できることである。
前記システムは、各仕様が機能仕様と関連シミュレーション・エレメントとを含む相関のある少なくとも第1および第2コンポーネントとを含んでもよい。前記シミュレーション・エレメントは互いに通信してシミュレーション・システムを提供する。
前記シミュレーション・システムは前記有限状態機械を実装してもよい。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との通信を管理してもよい。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントがイベントを処理する順序を決定してもよい。
前記方法はさらに、前記または各インスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程を含んでもよく、前記または各さらなるエンティティは第1機能仕様および第2機能仕様のうちの少なくとも1つによって定義され、前記シミュレーションに応答して、インスタンス化される前記または各さらなるエンティティは、前記第1エンティティとの階層関係に基づいて前記シミュレーション・システムによって選択される。
前記第1コンポーネントおよび前記第2コンポーネントは、前記相関エンティティの階層内のそれぞれのエンティティで表してもよい。前記それぞれのエンティティのインスタンスを作成する。前記少なくとも1つのさらなるエンティティは、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの親であってもよい。前記少なくとも1つのさらなるエンティティは、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの子であってもよい。
前記所定の階層内のエンティティは、前記第1コンポーネントおよび前記第2コンポーネントを表す第1仕様と第2仕様との間で送信されるデータを表すようにインスタンス化され、前記第1コンポーネントと前記第2コンポーネントとの通信をモデル化してもよい。
前記第1コンポーネントは、前記第2コンポーネントよりも高い抽象化レベルでモデル化してもよい。前記方法は前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を前記階層を使用して規定する工程を含む。
前記エンティティ間の階層関係は、前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つから導き出してもよい。
前記処理する工程は、前記第1コンピュータ・プログラムを前記第1コンピュータ・プログラミング言語から第2コンピュータ・プログラミング言語に変換してもよい。前記第2コンピュータ・プログラミング言語はVHDLまたはVerilogであってもよい。
前記方法はさらに、前記第2コンピュータ・プログラムに基づいて、ハードウェアに前記第1コンポーネントおよび前記第2コンポーネントの実装を生成する工程を含んでもよい。
前記処理する工程は、前記第2コンピュータ・プログラムに追加のコンピュータ・コードを挿入する工程を含んでもよい。前記追加のコンピュータ・コードは、前記または各シミュレーション・エレメントを実装する。
本発明の第5の局面により、仕様を記憶する記憶手段であって、前記仕様がコンポーネントの挙動をモデル化し、前記仕様を第1コンピュータ・プログラムに記述する記憶手段と、第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理するように構成した第1処理手段と、前記第2コンピュータ・プログラムに基づいて前記コンポーネントの実装を生成するように構成した生成手段と、エンティティの階層内の第1エンティティをインスタンス化することによって前記生成した実装を使用して前記コンポーネントの挙動をシミュレーションするように構成した第2処理手段とを含むプログラマブル・コンピューティング・デバイスを提供し、前記第2コンピュータ・プログラムが、前記シミュレーションに応答して前記エンティティの階層内のより高いレベルのエンティティとより低いレベルのエンティティの双方をインスタンス化するように構成した有限状態機械の実装を含む。
本発明の第6の局面により、コンポーネントを含むシステムをモデル化およびシミュレーションする装置を提供し、前記方法は、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムに記述される仕様を使用して、前記コンポーネントの挙動をモデル化するモデル化手段と、第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する処理手段と、前記第2コンピュータ・プログラムに基づいて前記コンポーネントの実装を生成する生成手段と、エンティティの階層内の第1エンティティをインスタンス化することによって、前記生成した実装を使用して前記コンポーネントの挙動をシミュレーションするシミュレーション手段とを含み、前記第2コンピュータ・プログラムは、前記シミュレーションに応答して、前記エンティティの階層内のより高いレベルのエンティティとより低いレベルのエンティティの双方をインスタンス化するように構成した有限状態機械の実装を含む。
本発明の第7の局面により、相関のある第1および第2コンポーネントとを含むシステムをモデル化およびシミュレーションする方法を提供し、前記方法は、第1コンピュータ・プログラミング言語で書かれたコンピュータ・プログラムに記述された第1仕様および第2仕様を使用して、前記第1コンポーネントおよび前記第2コンポーネントの挙動をモデル化する工程と、それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で書かれた第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように、前記コンピュータ・プログラムを処理する工程と、前記第2コンピュータ・プログラムに基づいて、ハードウェアに前記第1コンポーネントの実装を生成する工程と、前記第3コンピュータ・プログラムに基づいてソフトウェアに前記第2コンポーネントの実装を生成する工程と、前記生成した第1コンポーネントの実装と前記生成した第2コンポーネントの実装とをそれぞれ使用して、前記第1コンポーネントおよび前記第2コンポーネントの挙動をシミュレーションする工程とを含む。
本発明の第7の局面の利点は、ハードウェアおよびソフトウェアにコンポーネントの実装を生成することによって、コンポーネントは第1プログラミング言語で書かれた単一のコンピュータ・プログラムに記述され、第1コンピュータ・プログラムのシミュレーションの速度を高めることができることである。システムのあるコンポーネントをハードウェアに実装することによって、これらのコンポーネントはソフトウェアに実装されているシステムの残りとは個別に記述する必要がなくなるため、シミュレーションの速度が高まるからである。
前記第1仕様は、機能仕様と関連シミュレーション・エレメントとを含んでもよい。前記シミュレーション・エレメントは他のシミュレーション・エレメントと通信してシミュレーション・システムを提供するように配列し、前記方法はさらに、前記第2コンポーネントおよび前記少なくとも1つのさらなるコンポーネントを表す仕様間の通信を管理するソフトウェア実装シミュレーション・システムを提供する工程を含む。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との通信を管理してもよい。
前記シミュレーション・システムは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様および前記第2仕様がイベントを処理する順序を決定してもよい。
前記シミュレーションする工程はさらに、相関エンティティの階層内の少なくとも1つの第1エンティティをインスタンス化する工程を含んでもよく、前記少なくとも1つの第1エンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義される。
前記方法はさらに、前記または各インスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程を含んでもよく、前記または各さらなるエンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義され、前記または各さらなるエンティティは前記少なくとも1つの第1エンティティとの階層関係に基づいて前記シミュレーション・システムによって選択される。
前記第1コンポーネントおよび前記第2コンポーネントは前記相関エンティティの階層内のそれぞれのエンティティによって表してもよく、前記それぞれのエンティティのインスタンスを作成する。
前記少なくとも1つのさらなるエンティティは、前記相関エンティティの階層内の前記少なくとも1つの第1エンティティの親であってもよい。あるいは、前記少なくとも1つのさらなるエンティティは、前記相関エンティティの階層内の前記少なくとも1つの第1エンティティの子であってもよい。
前記階層内のエンティティは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との間で送信されるデータを表すようにインスタンス化されてもよく、前記第1コンポーネントと前記第2コンポーネントとの通信をモデル化する。
前記第1コンポーネントは、前記第2コンポーネントよりも高い抽象化レベルでモデル化してもよい。前記方法は、前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を前記階層を使用して提供する工程を含む。
前記エンティティ間の階層関係は、前記第1仕様および前記第2仕様のうちの少なくとも1つから導き出してもよい。
前記処理する工程は、前記第2コンピュータ・プログラムおよび前記第3コンピュータ・プログラムに追加のコンピュータ・コードを挿入する工程を含んでもよい。前記追加のコンピュータ・コードは、前記または各シミュレーション・エレメントを実装する。
前記第2プログラミング言語はVHDLまたはVerilogであってもよく、前記第3プログラミング言語はCまたはC++であってもよい。
本発明の第8の局面により、第1仕様および第2仕様を記憶する記憶手段であって、前記第1仕様および前記第2仕様がそれぞれ第1コンポーネントおよび第2コンポーネントの挙動をモデル化し、前記第1仕様および前記第2仕様は、第1コンピュータ・プログラミング言語で書かれたコンピュータ・プログラムに記述されている記憶手段と、それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で書かれた第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように、前記コンピュータ・プログラムを処理するために構成した処理手段と、前記第2コンピュータ・プログラムに基づいてハードウェアに前記第1コンポーネントの実装を生成するために構成した第1生成手段と、前記第3コンピュータ・プログラムに基づいてソフトウェアに前記第2コンポーネントの実装を生成するために構成した第2生成手段と、前記生成した第1コンポーネントの実装および前記生成した第2コンポーネントの実装をそれぞれ使用して、前記第1コンポーネントおよび前記第2コンポーネントの挙動をシミュレーションするために構成したシミュレーション手段とを含むプログラマブル・コンピューティング・デバイスを提供する。
本発明の第9の局面により、コンポーネントを含むシステムをモデル化およびシミュレーションする装置を提供する。前記装置は、第1コンピュータ・プログラミング言語でコンピュータ・プログラムに記述されている第1仕様および第2仕様を使用して、前記第1コンポーネントおよび第2コンポーネントの挙動をモデル化するモデル化手段と、第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを、それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で生成するように前記コンピュータ・プログラムを処理する処理手段と、前記第2コンピュータ・プログラムに基づいてハードウェアに前記第1コンポーネントの実装を生成する第1生成手段と、前記第3コンピュータ・プログラムに基づいてソフトウェアに前記第2コンポーネントの実装を生成する第2生成手段と、前記生成した第1コンポーネントの実装と前記生成した第2コンポーネントの実装とをそれぞれ使用して、前記第1コンポーネントおよび前記第2コンポーネントの挙動を、シミュレーションするシミュレーション手段とを含む。
本発明の第10の局面により、上記方法のいずれか1つを行うようにコンピュータを制御するコンピュータ読取可能コードを伝達する伝達媒体を提供する。
本発明の第11の局面により、システムをモデル化およびシミュレーションするコンピュータ装置を提供する前記装置は、プロセッサ読取可能命令を記憶するプログラム・メモリと、前記プログラム・メモリに記憶した命令を読み取って実行するように構成したプロセッサとを含み、前記プロセッサ読取可能命令は、上記方法のいずれか1つを行うように、前記プロセッサを制御する命令を含む。
本明細書で使用する「ハードウェアに実装」という表現は、プログラマブル・コンピューティング・デバイスをプログラムするのにコンポーネントのHDLモデルを使用することを意味するものである。
本明細書で使用する「ソフトウェアに実装」という表現は、コンピュータ装置でランするソフトウェアに、コンピュータ・プログラミング言語で書かれたコンポーネントのモデルを実装することを意味するものである。
ここで単なる例示として、添付の図面を参照しながら、本発明の実施形態を説明する。
図1を参照すると、先行技術から周知のモデル化プロセスが示されており、様々なシステム・コンポーネントが様々な抽象化レベルで記述されている。システム・モデル1はCYとして知られるプログラミング言語で相対的に高いレベルで記述されている。先行技術と本発明の実施形態はCYを使って記述されているが、他のプログラミング言語を同様に使用してもよいことは当業者には容易に明らかであろう。システムの他のコンポーネントは、より低い抽象化レベルで記述されている。例えば、2つのコンポーネントはそれぞれ挙動(ビヘイビア)モデル2,3としてシステムCおよびVHDLを使って記述されている。同様に、さらなる2つのコンポーネント4,5は、それぞれVHDLおよびVerilogを使って、RTLレベルで記述されている。各プログラミング言語は他のプログラミング言語で代用できることは理解されよう。
そのため、図1は様々な抽象化レベルの多数のモデルを含んでいる。これらのモデルは同時にシミュレーションされる。モデル間のインタラクションはインターフェース6,7,8で定義され、同じくコンピュータ言語CYで記述されている。
図1に示す先行技術のモデル化およびシミュレーション方法では、複数のレベルのモデルがCYで記述されている。そして、このCYモデルをシミュレーションできる形にコンパイルする。コンパイラがCYコードをシミュレータに渡すことのできる形のC++に変換する。シミュレーション・プロセスを使用して、コンポーネントを様々な抽象化レベルでモデル化できる。図1のモデル化およびシミュレーション方法は、全部ソフトウェアに実装されている(ソフトウェアで実行される)。
前述したように、一部のコンポーネントはソフトウェアにモデル化および実装され、一部のコンポーネントはハードウェアにモデル化および実装されているため、システムの様々なコンポーネントを様々な抽象化レベルでシミュレーションできることが望ましい。
プロトコル・ツリーは、様々な抽象化レベルのオブジェクトの関わり合い方に関係する。本発明の実施形態により使用に適したプロトコル・ツリーを、プロトコル・ツリーに記述される関係も含めて図2に図示している。各オブジェクトA,B,W,X,Y,Zはモデル化されているシステムのコンポーネント、コンポーネント間で渡されるデータ、コンポーネントが行う活動、または他の種類の情報を表すことができる。オブジェクトAは2つの子、WおよびXを有するように示されている。逆に、AはWおよびXの親である。オブジェクトAは相対的に高い抽象化レベルのコンポーネントのモデルである。WおよびXは相対的に低い抽象化レベルのコンポーネントのモデルである。同時に、WおよびXは、コンポーネントAを完全に定義する。すなわち、実行中において、WおよびXはその親の機能の全部を備えている。同様に、コンポーネントBは2つの子、YおよびZを有する(また、BはYおよびZ双方の親である)。
ここで、図3を参照して、本発明の実施形態によるモデル化およびシミュレーション方法のコンパイル・プロセスを説明する。モデルの仕様30は、プログラミング言語CYで作成する。この仕様30をコンパイラ31に通し、コンパイラ31はCYコードを少なくとも1つのさらなるプログラミング言語に変換する。さらなるプログラミング言語は、個々のコンポーネントがハードウェアまたはソフトウェアにモデル化および実装されるかどうかによって変わる。コンパイルしたコードは、本質的に5つのコンポーネントを含む。
第1コンポーネント32は機能アルゴリズムを含み、モデル化するコンポーネントをどのように動作させるかを定義する。機能アルゴリズム32はモデル化するシステム内のモデルの機能性を定義する。この機能性はCYソースコードで記述することができ、あるいは、CYソースコードは機能性のある場所を示すヘッダーだけ規定してもよい。機能アルゴリズム32はユニット仕様内に規定されている定義から作成する。
モデル形状の第2コンポーネント33は、モデル化するシステムの形状を、モデル化するコンポーネントと、それらが互いにどのような関係にあるかとについて定義する。モデル形状33は、どのコンポーネントが他のどのコンポーネントと、どのインターフェースによって通信するかを記述する。これはコンパイラ31によってCYコードから導き出すことができる。
第3コンポーネント34はプロトコル・ツリーであり、様々な抽象化レベルのコンポーネント間の関係を記述する。図2に戻ると、これがプロトコル・ツリーの一実施例である。
第4コンポーネント35は、生成アルゴリズムを含み、高いレベルのオブジェクトから相対的に低いレベルのオブジェクトを生成するのに使う。
最後の第5コンポーネント36は認識アルゴリズムを含み、1または複数の低いレベルのオブジェクトから相対的に高いレベルのオブジェクトを認識するのに使う。
システムのコンポーネントのすべてを共通言語CYを使ってモデル化すると仮定すると、それをコンパイラ31が使って、さらなるコンピュータ・プログラムを適切なコンピューティング言語で生成することになり、図3に示しているモデル化およびシミュレーション・プロセスを使用して、システム内のコンポーネントを様々な抽象化レベルでモデル化できる。
本発明のある実施形態によると、CYで書かれた単一のモデル仕様30は、コンパイラ31内で、2以上のコンピューティング言語で書かれた2以上のコンピュータ・プログラムにコンパイルされる。具体的には、本発明のある実施形態では、モデル化するシステム内の相関コンポーネントを、ソフトウェアとハードウェアと別々に実装する。コンパイラは、どのコンポーネントをハードウェアに実装し、どれをソフトウェアに実装するかを決定する役割を担う。コンパイラ31はCYソースコードを受け取って、ソフトウェアに実装するコンポーネントを記述するCYコードを、ソフトウェアの実装に適したコンピュータ・コード(C++など)に変換する役割を担う。コンパイラはまた、ハードウェアに実装するコンポーネントを記述するCYソースコードも受け取って、そのCYコードをハードウェアの実装に適したコンピュータ・コード(VHDLまたはVerilogなど)に変換する。
生成アルゴリズムおよび認識アルゴリズムは、CYソースコード30からコンパイルする。本発明の実施形態によると、ハードウェアに実装してモデル化したシステムのコンポーネントの場合、生成アルゴリズムおよび認識アルゴリズムは、CY言語を、例えば、Verilogにコンパイルした単一ブロックのコードで実装してもよい。この1つに結合した生成および認識アルゴリズムは状況に依存する。すなわち、生成または認識が起こるかは、生成/認識アルゴリズムに渡される入力次第である。
図2を参照して、生成/認識アルゴリズムへの入力がコンポーネントAなどの単一コンポーネントならば、生成/認識アルゴリズムはこのコンポーネントが2つの子を有することを記憶しているため、コンポーネントWおよびXのインスタンスを生成する。すなわち、Aを生成する場合、より低レベルのWおよびXも生成されなければならないことが導き出せる。逆に、生成/認識アルゴリズムへの入力がコンポーネントWおよびXならば、生成/認識アルゴリズムはこれら2つのコンポーネントの親がコンポーネントAであることを認識し、そのためインスタンスAを生成する。
このように、コンポーネントAおよびBはコンポーネントW,X,YおよびZよりも抽象化レベルが高い。上記したように、コンポーネントはハードウェアかソフトウェアのいずれかに実装できる。考えられるある分割状態を図2に示しており、より高いレベルのコンポーネント(AおよびB)はソフトウェアに実装され、より低いレベルのコンポーネント(W,X,YおよびZ)はハードウェアに実装されている。しかし、本発明はこれに限定されない。本発明のある実施形態では、どのコンポーネントも、またはコンポーネントのどのグループも、ハードウェアまたはソフトウェアのいずれにも実装できる。本発明の他の実施形態では、あるコンポーネントをハードウェアに実装することが不可能または実用的でないことがあり得る。このような実施形態では、コンパイラ31がどのコンポーネントをハードウェアに実装するかを決定するときに、これらの問題を考慮する。
ソフトウェアにモデル化するコンポーネントの場合、各コンポーネントはどの抽象化レベルでもモデル化できる。ソフトウェアにモデル化するシステム内では、任意の数のコンポーネントを様々なレベルでモデル化することができる。しかし、本発明の実施形態によるモデル化およびシミュレーション・システムでソフトウェアにモデル化および実装するコンポーネントの場合、抽象化レベルの数を制限することが有利である。
ここで図4を参照すると、この図はシステムのコンポーネントをハードウェアにモデル化および実装するための使用に適した、標準化された一連の抽象化レベルを模式的に表している。モデル化システムの様々なコンポーネントに単独で取り組む開発者が、モデル化するコンポーネントを標準化された抽象化レベルで生成しやすくなるため、抽象化レベルの数を標準化することが望ましい。しかし、この抽象化レベルの正確な数が異なっていてもよいことは、当業者には容易に明らかとなろう。
図4は、個々のコンポーネントをモデル化できる4つの抽象化レベルを示している。加えて、かつ完全にするために、本発明はこれらのレベルのコンポーネントのモデル化には関係ないが、アルゴリズムレベルとゲートレベルを示している。各抽象化レベルを模式的に表しており、隣同士の抽象化レベルの関係を括弧で示して、ある抽象化レベル、またはレベルのある部分を次のレベルに関係付けている。
アルゴリズムレベル(AL)では、システムは一連の機能によって表されている。個々の機能間に通信はなく、むしろこれらは順次に実行されることが模式的に示されている。各機能の実行にかかる時間は考慮していない。
第1モデル化抽象化レベルはプログラマーズ・ビュー(PV)である。PVレベルは一連の時間情報をもたない(非時限の)機能を含むが、異なる機能間の通信を考慮する。各機能は不連続なイベントと考えられる。また、PVレベルでは、機能または機能のグループが並行して動作してもよい。ALレベルおよびPVレベルでは、(図4に図示すように)機能間に1対1のマッピングがなくてもよい。PVレベルは、プログラマがC++などの高レベルのプログラミング言語でプログラムを作成するときにイベントのシーケンスをどのように理解するかに近いものである。
第2モデル化抽象化レベルは時間調節(タイミング)を伴うプログラマーズ・ビュー(PVT)である。PVTレベルは、PVレベルからの各機能にタイミングの検討を導入する。例えば、機能40は、機能40と並行して逐次実行する機能41および42と同じ時間がかかることが示されている。PVTレベルでのタイミングは概算である。
第3モデル化抽象化レベルはサイクル・コーラブル(CC)である。CCレベルでは、タイミングは機能ごとに要するクロックサイクル数に基づいている。すなわち、各機能について、開始時間と終了時間がわかる。各機能はnクロックサイクルを要する。図4は、モデル化しているPVTレベルの機能40を、CCレベルの一連の機能43として模式的に示している。CCレベルでは、各機能中に出力が生成される時刻までは分からない。
第4モデル化抽象化レベルはサイクル精度/レジスタ転送レベル(CA/RTL)である。CA/RTLレベルでは、CCレベルからの各機能または機能のサブグループが、逐次実行される一連の機能で表わされ、各機能が1クロックサイクルを要する。このように、各機能からの出力の正確なタイミングが、もっとも近いクロックサイクルまでわかる。
最後に、図4はゲートレベル(GL)を示している。GLレベルは、CA/RTLからの各機能または機能のサブグループを、ハードウェアに実装されるときに論理ゲートまたは一連の論理ゲートとして表す。本発明はGLレベルでのシステムのモデル化には関係していない。
ここで図5を参照すると、この図はモデル化およびシミュレーション・システムを模式的に示している。システムは2つの相関コンポーネント50および51として示され、それぞれPVレベルおよびCAレベルでソフトウェアにモデル化される。ソフトウェアに実装されているトランスレータ52も、コンポーネント50とコンポーネント51との間で渡されるデータをPVレベルとCA/RTLレベルとに変換する。第1方向(矢印53で示す)で渡される場合、トランスレータは高レベルのトランザクションを低レベルの刺激に変換して、これをコンポーネント51に渡す。第2方向(矢印54で示す)に渡す場合、トランスレータはコンポーネント51からの低レベルの結果を、コンポーネント50用の高レベルのトランザクションに変換する。トランスレータ52は当初プログラミング言語CYで書かれている。コンポーネント50および51もCYで書いてもよい。あるいは、コンポーネント50および51は、1または複数の他のコンピュータ・プログラミング言語で書いてもよい。
図6は、本発明の実施形態によるモデル化およびシミュレーション・システムを示している。前と同様、システムは2つの相関コンポーネント60および61として示しており、それぞれPVレベルおよびCAレベルでモデル化している。ただし、コンポーネント60はソフトウェアにモデル化および実装し、コンポーネント61はハードウェアにモデル化して実装している。
上記導入部で述べたように、システムの一部を高レベル(例、システムレベル)でソフトウェアに記述およびモデル化し、システムの一部を低レベル(例、RTL)でハードウェアに記述およびモデル化する場合、システムを自動的にかつ正確にシミュレーションする方法は知られていない。本発明のある実施形態の目的は、ソフトウェアに実装したRTLモデルおよびテストを、ハードウェアに実装したモデルと効率的に通信できるようにすることである。ソフトウェア・モデルとハードウェア・モデルとの通信の場合、ソフトウェア・コンポーネントとハードウェア・コンポーネントとの間でデータを伝送するために周知の標準協調エミュレーション・モデリング・インターフェース(SCE−MI)が使用されている。
ハードウェア・コンポーネントとソフトウェア・コンポーネントとの間でデータを渡すトランスレータを2つの半体部に実装して、シミュレーション・システムのソフトウェア部分とシミュレーション・システムのハードウェア・エミュレータ部分との間に分割する。トランスレータ62の第1半体部はソフトウェアに実装されている。ソフトウェアからハードウェアにPVレベルで情報が(SCE−MIインターフェースを介して)渡されるため、トランスレータのソフトウェア半体部62がソフトウェアの情報をPVレベルより低い抽象化レベルまで変換する必要はない。そのため、トランスレータのソフトウェア半体部62だけがPVレベルを含む。トランスレータの第2半体部63はハードウェアに実装されている。トランスレータのハードウェア半体部63はコンポーネント60からの高レベルのトランザクションを、コンポーネント61に渡す低レベルの刺激に変換する役割を担うため、トランスレータのハードウェア半体部はPVからCA/RTLまですべてのレベルで示されている。トランスレータのハードウェア半体部63はコンポーネント61からの低レベルの結果をコンポーネント60用の高レベルのトランザクションに変換する。
図5の場合と同様、トランスレータ62,63は当初CYで書かれており、その後各半体部が適切な別のプログラミング言語に変換される(例えば、ソフトウェア実装の半体部にはC++、ハードウェア実装の半体部にはVerilog)。
トランスレータの部分間の通信はPVレベルで起こるように示されているが、同様に他のどのレベルであっても起こってもよい。トランスレータのソフトウェア部分62とトランスレータのハードウェア部分63との間の通信は、伝送するデータの総量を最小限にするとともに、ハードウェア・コンポーネントとソフトウェア・コンポーネントとの間のデータ交換の同期による障害を最小限にするために、できるだけ高い抽象化レベルで起こることが望ましい。コンポーネントをトランスレータ62,63を介して接続すれば、どの抽象化レベルでもモデル化および実装できる。本発明のある実施形態では、コンポーネント61はCA/RTLレベルで実装されている。CA/RTLレベルでモデル化したコンポーネントをハードウェアに実装することによって、システムのシミュレーションの速度が高まる。
図7は図6と同様なシミュレーション・システムを示しているが、システムを2つの相関コンポーネント70および71として示しており、それぞれCCレベルおよびCAレベルでモデル化している。しかし、コンポーネント70はソフトウェアにモデル化および実装され、コンポーネント71はハードウェアにモデル化および実装されている。図6と同様に、情報はCCレベルで(SCE−MIインターフェースを介して)ソフトウェアからハードウェアに渡されるため、トランスレータのソフトウェア半体部72がソフトウェアの情報をCCレベルより低い抽象化レベルまで変換する必要はない。しかし、トランスレータが渡すコンポーネント(メッセージおよびデータなど)をプロトコル・ツリーにおいてより高いコンポーネントに認識させるには、トランスレータのソフトウェア半体部72ではCCレベルより上の抽象化レベルが必要である。そのため、トランスレータのソフトウェア半体部72だけがCCレベルより上の抽象化レベルを含む。トランスレータの第2半体部73はハードウェアに実装されている。トランスレータのハードウェア半体部はPVからCA/RTLまでのすべてのレベルで示されている。トランスレータのソフトウェア半体部72の場合と同様、認識するには、データを交換するCCレベルより上の抽象化レベルが必要である。トランスレータのハードウェア半体部63は、コンポーネント60からの高レベルのトランザクションを、コンポーネント61に渡される低レベルの刺激に変換する役割を担う。トランスレータのハードウェア半体部73はコンポーネント61からの低レベルの結果を、コンポーネント72用の高レベルのトランザクションに変換する。
トランスレータの第1半体部72はソフトウェアに実装されている。トランスレータの第2半体部73はハードウェアに実装されている。SCE−MIインターフェースを使用して、トランスレータの2つの半体部72,73の間はCCレベルで通信する。
トランスレータの部分間の通信はCCレベルで起こるように示されている。コンポーネント70はCCレベルで実装されているため、データをトランスレータのハードウェア部分73に渡す前にトランスレータのソフトウェア部分72はデータを異なる抽象化レベルに変換する必要はない。トランスレータのハードウェア部分73は、(矢印74で示すとおり)CCレベルのデータをCA/RTLレベルのデータに、またその逆も同様に変換する役割を担う。
ここで図8を参照すると、この図は本発明のある実施形態により、ソフトウェアに実装してモデル化するコンポーネントとハードウェアに実装してモデル化するコンポーネントとの違いを示している。
コンポーネントAはソフトウェアに実装されている。コンポーネントAは有限状態機械(FSM)を含む。コンポーネントA内のFSMは入力80と出力81とを有し、FSMが他のコンポーネントとデータを送受信できるようにしている。ソフトウェアに実装されるコンポーネントの場合、シミュレーションの管理の役割を担う個別のシミュレータ・エンティティ(図8には図示せず)がある。ソフトウェア実装コンポーネントは互いに直接通信せず、シミュレータを介して通信する。イベントが発生する順序およびコンポーネントがシミュレーションされた作業(アクティビティ)を引き受ける順序は、シミュレータが決定する。ランタイム時のコンポーネントAはシミュレータに要求を送るサービスが必要であり、タスクをプロセッサに割り当てる。
コンポーネントXはハードウェアに実装されている。FSMを有することに加えて、コンポーネントXはシミュレーション・エンティティ82を有する。ハードウェアに実装された各モデル化コンポーネントのシミュレーション・エンティティは互いに通信して、まとまって分散シミュレーション・システム(DSS)になる。DSSはイベントが発生する順序およびコンポーネントがシミュレーションされる作業を引き受ける順序を決定する役割を担う。
DSSはCY(図3のCYソースコード)で書かれるそのコンポーネントのモデル仕様によって定義される。各コンポーネントのCYコードはコンポーネント仕様を含む。各コンポーネントの仕様は、機能仕様と関連シミュレーション・エレメントとを含む。機能仕様はコンポーネントの動作を定義し、そのコンポーネントのFSMを定義し、シミュレーション・システム内でコンポーネントの動作をシミュレーションするのに使われる。シミュレーション・エレメントはDSSの動作を定義し、そのコンポーネントが他のコンポーネントとどのように通信するかを定義する。
本発明のある実施形態により、各コンポーネントのDSSエレメントのCYソースコードは、コンパイラ内のテンプレートコードが供給する。コンパイラは、モデル化されたシステムをコンパイルする時、DSSエレメントに適したCYコードを挿入するよう配列されている。
コンポーネントXのDSSエレメント82は、FSMからの他のコンポーネントとのすべての通信を操作する(扱う)役割を担う。入力83および出力84はDSS82に接続して、これがそれぞれFSM入力85およびFSM出力86を介してデータをFSMに渡す。各DSSエレメントはそのコンポーネント内のリソース管理と通信、および他のコンポーネントとの通信を担う。ハードウェアに本質的な並列処理により、各ハードウェア実装コンポーネントは他のコンポーネントとは独立して作業を処理できる。
分散シミュレーション・システムは6つのコンポーネントを含む。DSSの第1コンポーネントは生成トリガを扱う。DSSは双方向のマルチプレクサを含み、他のコンポーネントから出入りする複数の出入力をより少ない数の通信リンクでFSMに多重送信する。生成トリガが受信されると、生成トリガはFSMに渡されて、より高い抽象化レベルの親コンポーネントの生成に応答して、またはソフトウェア実装コンポーネントからのトリガに応答して、そのコンポーネントのインスタンスの生成をトリガするのに使われる。生成トリガを第1コンポーネントのDSSエレメントで受信するとすぐに生成イベントが起こる。生成が完了すると、完了通知が開始したアイテムに渡される。複数の生成トリガが受信された場合、これらは適切なリソースに分散される。利用できるリソースが十分にない場合、生成トリガはリソースが利用できるようになるまで待機状態になる。
DSSの第2コンポーネントは認識トリガを扱う。あるコンポーネントの子全部が生成または認識されると、DSSは認識トリガを生じて、親コンポーネントのインスタンスが要求されていることを知らせる。あるいは、あるコンポーネントの子の一部が生成または認識されたときに、認識トリガを生じてもよい。認識イベントを発生させるために、一連のイベントが発生してしまうまで、すなわち、子コンポーネント全部が生成または認識されるまで待つ必要があってもよい。そのため、認識イベントがトリガされる時点を識別できるようにするために、FSMと連動したDSSは発生したイベントのシーケンスを追跡する。さらに、より低レベルのコンポーネントを認識しようとする場合、この識別がコンポーネントの階層の上まで渡されて、モデル化するシステムの状態を維持する。しかし、より低レベルのコンポーネントがインスタンス化(すなわち、生成または自己認識)されなければ、より高レベルのコンポーネントは実際に認識できない。
DSSの第3コンポーネントはパラメータ・ブロックである。これは生成および認識されたコンポーネントの動作中に、これらコンポーネント間で渡されるパラメータを扱う役割を担う。パラメータ・ブロックはパラメータがコンポーネント内に正確に記憶されることを確実にする役割も担う。生成イベント中、生成される子コンポーネントのパラメータ・ブロックはすぐにパラメータを取り込む(ポピュレートする)ことができる。しかし、認識イベントの場合、認識された親ブロックのパラメータ・ブロックは一定時間かけて移植され、その間に子コンポーネントが生成または自己認識される。あるコンポーネントが終了すると、そのパラメータのコピーがそれを生成した親または認識する子コンポーネントに渡されて、例えば、そのリソースを使って別のコンポーネントを生成または認識することによって、そのリソースがすぐに再利用してもよい。
DSSの第4コンポーネントは他のオブジェクトに対するオブジェクトのタイミングを担う。コンポーネントの開始時間と終了時間とは、そのコンポーネントのすぐ下のエレメントの階層によって決定する。開始時間と終了時間とは、階層レベルがより高いハードウェア実装コンポーネントに渡される。コンポーネントの階層はプロトコル・ツリー34で定義される。次に開始時間と終了時間とはソフトウェア実装コンポーネントに渡されて、コンポーネントのタイミングがハードウェア実装コンポーネントとソフトウェア実装コンポーネントとの間で一致する。
DSSの第5コンポーネントは、ハードウェア・コンポーネントが動作を完了したときにソフトウェア実装コンポーネントに通知する役割を担う。
DSSの第6コンポーネントは、ハードウェアに実装するシミュレータの部分(すなわち、DSS)とソフトウェアに実装するシミュレータの部分とのシミュレーション時間の同期を担う。これはシミュレータのソフトウェア部分からメッセージを受信して、シミュレーションのハードウェア部分を進行させ、ハードウェア実装コンポーネントに適用されるクロックを制御する。DSSの第6コンポーネントは、ハードウェア・コンポーネントがそのタスクの処理を完了したら、または他のあるメッセージを送る必要があれば(例えば、別のコンポーネントが完了してそれをソフトウェアに通知する必要がある)、シミュレータのソフトウェア部分にメッセージを送り返す。DSSの第6コンポーネントは、ハードウェア実装コンポーネントとソフトウェア実装コンポーネントとのシミュレーションのタイミングを同期させる役割を担うため、このインスタンスは1つしか存在しない。このようにして、DSSの第6エレメントは各ハードウェア実装コンポーネントの外部に置かれている。個々のハードウェア実装コンポーネントは、内部のタイミングのために未制御クロックを含んでいてもよい。DSSの第6コンポーネントは、図9ないし図11には明示的には示されていない。
ソフトウェア実装コンポーネントおよびハードウェア実装コンポーネントともに、有限状態機械(FSM)がそのコンポーネントの機能性を実装する役割を担う。さらに、FSMは、任意のプロトコル・エレメント(すなわち、アイテムはあるインスタンス化で2つの子からなり、別のインスタンス化で3つの子からなってもよい)を含めて、プロトコル・ツリーの階層構造およびエレメント間のタイミングの関係を定義する。
図9を参照すると、2つのコンポーネントXおよびYを模式的に示しており、その両方ともハードウェアに実装されている。XおよびYは両方ともDSSエレメント82を内蔵している。DSSエレメント82は、複数の双方向の出入力を有するように示されている。これらの通信リンクは、(ソフトウェア・シミュレータを介した)ソフトウェア・コンポーネントとの通信用のものと、他のハードウェア実装コンポーネントとの通信用とに分割されている。図9に示すように、ハードウェア実装コンポーネントは、分散シミュレーション・システムを介して他のハードウェア実装コンポーネントと直接通信できる。
ここで図10を参照すると、これは本発明のある実施形態によるモデル化およびシミュレーション・システムを示している。このシステムは4つの相関コンポーネントを有するように示されている。コンポーネントAおよびBの2つはソフトウェアに実装されている。AおよびBはソフトウェア・シミュレータ100を介して互いにおよび他のコンポーネントと通信する。残り2つのコンポーネントXおよびYはハードウェアに実装されている。XおよびYは線101で示すように、互いに直接通信できる。コンポーネントAおよびBと通信するために、コンポーネントXおよびYはソフトウェア・シミュレータ100と通信する。そのため、XおよびYの通信形態は、通信しようとする他のコンポーネントがハードウェア実装コンポーネントであるか、またはソフトウェア実装コンポーネントであるかによって変わる。逆に、AおよびBの場合、AおよびBがシミュレータを介してしかデータを送れないため、通信モードは常に同じである。
第1ハードウェア・コンポーネントのモデルは、第1コンポーネントが他のどのコンポーネントを認識しているかを記述する。例えば、図10のシステムの場合、コンポーネントXのモデルはコンポーネントYに関する情報を含んでいる。コンポーネントXはコンポーネントYがハードウェアに実装されていることを識別している。このようにして、コンポーネントXがコンポーネントYと通信する必要がある場合、リンク101を介してしかデータを送らない。同様に、コンポーネントXはコンポーネントAがソフトウェアに実装されていることを識別している。そのため、コンポーネントAと通信するために、コンポーネントXはリンクを介してしかソフトウェア・シミュレータ102にデータを送らない。しかし、コンポーネントXのモデルはコンポーネントBの情報を含んでいない。そのため、コンポーネントXがコンポーネントBと通信する必要がある場合、要求はリンク102を介してソフトウェア・シミュレータに送るとともに、リンク101を介して他のハードウェア・コンポーネント(この場合はコンポーネントYだけ)を送る。次に、コンポーネントXは1つのリンクからしか応答を受け取らない。コンポーネントXはコンポーネントBとの通信を試みると、ソフトウェア・シミュレータおよび他のハードウェア・コンポーネント双方と通信を続ける。本発明の別の実施形態によると、代わりに、コンポーネントXは他のハードウェア・コンポーネントとのリンクだけを介してコンポーネントBとの通信を試みることができよう。
図11は、ハードウェア実装コンポーネントが4つある以外は図10と同様のシステムを示している。図11は、ハードウェア実装コンポーネントのどの対の間にも直接通信リンクがあることを示している。
添付の特許請求の範囲から逸脱することなく、本発明の他の変型および利点は当業者には、容易に明らかとなろう。
本発明の精神および範囲は、添付する特許請求の範囲の中に存在するが、本願の出願時に存在し、その一部は補正により削除された、以下の[予備的な特許請求の範囲]の中にも潜在する。この[予備的な特許請求の範囲]の記載事項は、本願明細書の開示に含まれるものとする。
[予備的な特許請求の範囲]
[請求項1]
相関のある第1および第2コンポーネントを含むシステムをモデル化およびシミュレーションする方法であって、当該方法が、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、第1仕様および第2仕様を使用してモデル化する工程であって、前記第1仕様および前記第2仕様のそれぞれが機能仕様と関連シミュレーション・エレメントとを含む工程と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を前記第1仕様および前記第2仕様を使用してシミュレーションする工程とを含む方法。
[請求項2]
前記シミュレーション・システムが、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との通信を管理することを特徴とする、請求項1に記載の方法。
[請求項3]
前記シミュレーション・システムが、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様および前記第2仕様がイベントを処理する順序を決定することを特徴とする、請求項1または2に記載の方法。
[請求項4]
前記シミュレーションする工程がさらに、相関エンティティの階層内の少なくとも1つの第1エンティティをインスタンス化する工程を含み、前記少なくとも1つの第1エンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義されることを特徴とする、請求項1〜3のいずれか1項に記載の方法。
[請求項5]
前記または各インスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程を含み、前記または各さらなるエンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義され、前記または各さらなるエンティティは前記少なくとも1つの第1エンティティとの階層関係に基づいて前記シミュレーション・システムによって選択される、請求項4に記載の方法。
[請求項6]
前記第1コンポーネントおよび前記第2コンポーネントを、前記相関エンティティの階層内のそれぞれのエンティティによって表し、前記それぞれのエンティティのインスタンスを作成することを特徴とする、請求項5に記載の方法。
[請求項7]
前記少なくとも1つのさらなるエンティティが、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの親であることを特徴とする、請求項5または6に記載の方法。
[請求項8]
前記少なくとも1つの別のエンティティが、前記相関エンティティの階層において前記少なくとも1つの第1エンティティの子であることを特徴とする、請求項5または6に記載の方法。
[請求項9]
前記階層内のエンティティは、前記第1コンポーネントと前記第2コンポーネントとの間で送信されるデータ、ならびに前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との間の通信を表すインスタンスを生成することを特徴とする、請求項5〜8のいずれか1項に記載の方法。
[請求項10]
前記第1コンポーネントを前記第2コンポーネントよりも高い抽象化レベルでモデル化し、前記方法が前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を前記階層を使って規定する工程を含むことを特徴とする、請求項5〜9のいずれか1項に記載の方法。
[請求項11]
前記エンティティ間の階層関係を、前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つから導き出すことを特徴とする、請求項5〜10のいずれか1項に記載の方法。
[請求項12]
前記第1仕様および前記第2仕様を、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムとして記述することを特徴とする、請求項1〜11のいずれか1項に記載の方法。
[請求項13]
前記第1仕様と前記第2仕様との関係を前記第1コンピュータ・プログラム内に記述する工程をさらに含む、請求項12に記載の方法。
[請求項14]
第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する工程をさらに含む、請求項12または13に記載の方法。
[請求項15]
前記処理する工程が、前記第1コンピュータ・プログラムを、前記第1コンピュータ・プログラミング言語から、第2コンピュータ・プログラミング言語に変換することを特徴とする、請求項14に記載の方法。
[請求項16]
前記第2コンピュータ・プログラミング言語がVHDLまたはVerilogであることを特徴とする、請求項15に記載の方法。
[請求項17]
前記第2コンピュータ・プログラムに基づいてハードウェアに前記第1コンポーネントおよび前記第2コンポーネントの実装を生成する工程をさらに含む請求項14に記載の方法。
[請求項18]
前記処理する工程が、前記第2コンピュータ・プログラムに追加のコンピュータ・コードを挿入する工程を含み、前記追加のコンピュータ・コードが前記または各シミュレーション・エレメントを実装することを特徴とする、請求項14〜17のいずれか1項に記載の方法。
[請求項19]
第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する工程をさらに含む、請求項12または13に記載の方法。
[請求項20]
前記処理する工程が、前記第1コンピュータ・プログラムを、前記第1コンピュータ・プログラミング言語から、それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語に変換することを特徴とする、請求項19に記載の方法。
[請求項21]
前記第2コンピュータ・プログラミング言語がVHDLまたはVerilogであり、前記第3コンピュータ・プログラミング言語がCまたはC++であることを特徴とする、請求項20に記載の方法。
[請求項22]
前記第1コンポーネントをハードウェアに実装し、前記第2コンポーネントをソフトウェアに実装することを特徴とする、請求項21に記載の方法。
[請求項23]
少なくとも1つのさらなるコンポーネントの挙動を、少なくとも1つのさらなる機能仕様を使用してモデル化する工程と、
前記少なくとも1つのさらなる機能仕様に基づいて、ソフトウェアに前記少なくとも1つのさらなるコンポーネントの実装を生成する工程と、
前記少なくとも1つのさらなるコンポーネントの挙動を、前記少なくとも1つのさらなる機能仕様を使用してシミュレーションする工程とをさらに含む請求項17もしくはそれに従属する請求項のいずれか1項のまたは請求項22に記載の方法。
[請求項24]
前記第1コンポーネントおよび前記第2コンポーネントと、前記少なくとも1つのさらなるコンポーネントとの通信を管理するために、ソフトウェア実装シミュレーション・システムを提供する工程をさらに含む、請求項23に記載の方法。
[請求項25]
前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様および前記第2仕様が、前記ソフトウェア実装シミュレーション・システムと、ハードウェアに実装されている他のコンポーネントを表す他の仕様とを介して、同時にさらなるコンポーネントとの通信を試みる工程をさらに含む、請求項24に記載の方法。
[請求項26]
前記第2コンピュータ・プログラムが、前記シミュレーションに応答して、より高い階層レベルのエンティティを、より低い階層レベルの少なくとも1つのエンティティに基づいて、インスタンス化するように構成した有限状態機械の実装を含むことを特徴とする、請求項14または請求項19もしくはそれに従属する請求項のいずれか1項に記載の方法。
[請求項27]
前記第2コンピュータ・プログラムが、前記シミュレーションに応答して、より低い階層レベルのエンティティを、より高い階層レベルの少なくとも1つのエンティティに基づいて、インスタンス化するように構成した有限状態機械の実装を含むことを特徴とする、請求項14、19、または請求項14もしくは請求項19に従属する請求項のいずれか1項に記載の方法。
[請求項28]
前記第2コンピュータ・プログラムが、前記シミュレーションに応答して、より高い階層レベルおよびより低い階層レベル双方のエンティティを、それぞれより低い階層レベルまたはより高い階層レベルの少なくとも1つのエンティティに基づいて、インスタンス化するように構成した有限状態機械の実装を含むことを特徴とする、請求項14または請求項19もしくはそれに従属する請求項のいずれか1項に記載の方法。
[請求項29]
請求項1〜28のいずれか1項の方法を行うようにコンピュータを制御するコンピュータ読取可能コードを伝達する伝達媒体。
[請求項30]
プロセッサ読取可能命令を記憶するプログラム・メモリと、
前記プログラム・メモリに記憶されている命令を読み取って実行するように構成したプロセッサとを含み、
前記プロセッサ読み取り可能命令が、前記プロセッサを請求項1〜28のいずれか1項の方法を行うように制御する命令を含むことを特徴とする、システムをモデル化およびシミュレーションするコンピュータ装置。
[請求項31]
第1仕様および第2仕様を記憶する記憶手段であって、前記第1仕様および前記第2仕様がそれぞれ第1コンポーネントおよび第2コンポーネントの挙動をモデル化し、前記第1仕様および前記第2仕様のそれぞれが機能仕様とシミュレーション・エレメントとを含む、記憶手段と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を前記第1仕様および前記第2仕様を使用してシミュレーションするように構成した処理手段とを含み、
前記シミュレーション・エレメントが、互いに通信してシミュレーション・システムを提供するように構成されていることを特徴とする、プログラマブル・コンピューティング・デバイス。
[請求項32]
相関のある第1および第2コンポーネントを含むシステムをモデル化およびシミュレーションする装置であって、当該装置が、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、第1仕様および第2仕様を使用してモデル化するモデル化手段であって、前記第1仕様および前記第2仕様のそれぞれが機能仕様と関連シミュレーション・エレメントとを含む、モデル化手段と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、前記第1仕様および前記第2仕様を使用してシミュレーションするシミュレーション手段とを含み、
前記シミュレーション・エレメントが互いに通信してシミュレーション・システムを提供することを特徴とする、装置。
[請求項53]
相関のある第1および第2コンポーネントを含むシステムをモデル化およびシミュレーションする方法であって、当該方法が、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、第1コンピュータ・プログラミング言語で書かれたコンピュータ・プログラムに記述された第1仕様および第2仕様を使用してモデル化する工程と、
それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で書かれた第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように、前記コンピュータ・プログラムを処理する工程と、
前記第2コンピュータ・プログラムに基づいて、ハードウェアに前記第1コンポーネントの実装を生成する工程と、
前記第3コンピュータ・プログラムに基づいて、ソフトウェアに前記第2コンポーネントの実装を生成する工程と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、それぞれ前記第1コンポーネントの前記生成した実装と前記第2コンポーネントの前記生成した実装とを使用してシミュレーションする工程とを含む方法。
[請求項54]
前記第1仕様は、機能仕様と関連シミュレーション・エレメントとを含み、前記シミュレーション・エレメントは、他のシミュレーション・エレメントと通信してシミュレーション・システムを提供するように配列し、当該方法が、前記第2コンポーネントおよび前記少なくとも1つのさらなるコンポーネントを表す前記仕様間の通信を管理するソフトウェア実装シミュレーション・システムを提供する工程を含むことを特徴とする、請求項53に記載の方法。
[請求項55]
前記シミュレーション・システムが、前記第1コンポーネントおよび前記第2コンポーネントを表す記第1仕様と前記第2仕様との通信を管理することを特徴とする、請求項53または請求項54に記載の方法。
[請求項56]
前記シミュレーション・システムが、前記第1コンポーネントおよび第2コンポーネントを表す前記第1仕様および前記第2仕様がイベントを処理する順序を決定することを特徴とする、請求項53〜55のいずれか1項に記載の方法。
[請求項57]
前記シミュレーションする工程が、相関エンティティの階層内の少なくとも1つの第1エンティティをインスタンス化する工程をさらに含み、前記少なくとも1つの第1エンティティは、前記第1機能仕様および第2機能仕様のうちの少なくとも1つによって定義されることを特徴とする、請求項53〜56のいずれか1項に記載の方法。
[請求項58]
さらに、前記または各インスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程を含み、前記または各さらなるエンティティは前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つによって定義され、前記または各さらなるエンティティは、前記少なくとも1つの第1エンティティとの階層関係に基づいて、前記シミュレーション・システムによって選択される、請求項57に記載の方法。
[請求項59]
前記第1コンポーネントおよび前記第2コンポーネントを前記相関エンティティの階層におけるそれぞれのエンティティによって表し、前記それぞれのエンティティのインスタンスを作成することを特徴とする、請求項58に記載の方法。
[請求項60]
前記少なくとも1つのさらなるエンティティが、前記相関エンティティの階層内の前記少なくとも1つの第1エンティティの親であることを特徴とする、請求項58または請求項59に記載の方法。
[請求項61]
前記少なくとも1つのさらなるエンティティが、前記相関エンティティの階層内の前記少なくとも1つの第1エンティティの子であることを特徴とする、請求項58または請求項59に記載の方法。
[請求項62]
前記階層内のエンティティは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との間で送信されるデータを表すようにインスタンス化され、前記第1コンポーネントと前記第2コンポーネントとの通信をモデル化することを特徴とする、請求項58〜61のいずれか1項に記載の方法。
[請求項63]
前記第1コンポーネントを前記第2コンポーネントよりも高い抽象化レベルでモデル化し、当該方法が、前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を、前記階層を使って提供する工程を含むことを特徴とする、請求項58〜62のいずれか1項に記載の方法。
[請求項64]
前記エンティティ間の階層関係を、前記第1仕様および前記第2仕様のうちの少なくとも1つから導き出すことを特徴とする、請求項58〜63のいずれか1項に記載の方法。
[請求項65]
前記処理する工程が、前記第2コンピュータ・プログラムおよび前記第3コンピュータ・プログラムに追加のコンピュータ・コードを挿入する工程を含み、前記追加のコンピュータ・コードが、前記または各シミュレーション・エレメントを実装することを特徴とする、請求項54〜64のいずれか1項に記載の方法。
[請求項66]
前記第2プログラミング言語がVHDLまたはVerilogであり、前記第3プログラミング言語がCまたはC++であることを特徴とする、請求項53〜65のいずれか1項に記載の方法。
[請求項67]
請求項53〜66のいずれか1項の方法を行うようにコンピュータを制御するコンピュータ読取可能コードを伝達する伝達媒体。
[請求項68]
プロセッサ読取可能命令を記憶するプログラム・メモリと、
前記プログラム・メモリ内に記憶されている命令を読み出して実行するように構成したプロセッサとを含み、
前記プロセッサ読取可能命令が、請求項53〜66のいずれか1項の方法を行うようにプロセッサを制御する命令を含むことを特徴とする、システムをモデル化およびシミュレーションするコンピュータ装置。
[請求項69]
第1仕様および第2仕様を記憶する記憶手段であって、前記第1仕様および前記第2仕様がそれぞれ第1コンポーネントおよび第2コンポーネントの挙動をモデル化し、前記第1仕様および前記第2仕様は、第1コンピュータ・プログラミング言語で書かれたコンピュータ・プログラムに記述されている、記憶手段と、
それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で書かれた第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように、前記コンピュータ・プログラムを処理するために構成した処理手段と、
前記第2コンピュータ・プログラムに基づいてハードウェアに前記第1コンポーネントの実装を生成するために構成した第1生成手段と、
前記第3コンピュータ・プログラムに基づいてソフトウェアに前記第2コンポーネントの実装を生成するために構成した第2生成手段と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、それぞれ前記第1コンポーネントの前記生成した実装と前記第2コンポーネントの前記生成した実装とを使用して、シミュレーションするために構成したシミュレーション手段とを含むプログラマブル・コンピューティング・デバイス。
[請求項70]
コンポーネントを含むシステムをモデル化およびシミュレーションする装置であって、当該装置が、
第1コンポーネントおよび第2コンポーネントの挙動を、第1コンピュータ・プログラミング言語でコンピュータ・プログラムに記述されている第1仕様および第2仕様を使用してモデル化するモデル化手段と、
それぞれ第2コンピュータ・プログラミング言語および第3コンピュータ・プログラミング言語で第2コンピュータ・プログラムおよび第3コンピュータ・プログラムを生成するように、前記コンピュータ・プログラムを処理する処理手段と、
前記第2コンピュータ・プログラムに基づいて、ハードウェアに前記第1コンポーネントの実装を生成する第1生成手段と、
前記第3コンピュータ・プログラムに基づいて、ソフトウェアに前記第2コンポーネントの実装を生成する第2生成手段と、
前記第1コンポーネントおよび前記第2コンポーネントの挙動を、それぞれ前記第1コンポーネントの前記生成した実装と前記第2コンポーネントの前記生成した実装とを使用してシミュレーションするシミュレーション手段とを含む、装置。
システムのコンポーネントを様々な抽象化レベルでモデル化する先行技術のモデル化プロセスを模式的に示している。 本発明の実施形態での使用に適したプロトコル・ツリーを模式的に示している。 本発明の実施形態によるモデル化およびシミュレーション方法のコンパイル・プロセスを模式的に示している。 本発明の実施形態によるモデル化およびシミュレーション・システムでの使用に適した抽象化レベルの縮少化した階層を模式的に示している。 本発明の実施形態により相関コンポーネントを異なる抽象化レベルでモデル化するのに適したモデル化およびシミュレーション・システムを模式的に示している。 本発明の実施形態によりハードウェアおよびソフトウェアに実装されている相関コンポーネントをモデル化するのに適したモデル化およびシミュレーション・システムを模式的に示している。 本発明のさらなる実施形態によりハードウェアおよびソフトウェアに実装した相関コンポーネントをモデル化するのに適したモデル化およびシミュレーション・システムを模式的に示している。 本発明の実施形態によりハードウェアおよびソフトウェアに実装したモデル化したコンポーネント間の違いを模式的に示している。 本発明の実施形態によりハードウェアに実装した2つの相関コンポーネントを模式的に示している。 本発明の実施形態によるモデル化およびシミュレーション・システムを模式的に示している。 本発明のさらなる実施形態によるモデル化およびシミュレーション・システムを模式的に示している。

Claims (18)

  1. プログラム・メモリ内に記憶されているプロセッサ読取可能命令を読み取って実行するように構成したプロセッサを用いて、システムをモデル化およびシミュレーションする方法であって、前記システムはコンポーネントを含み、
    (a)前記プロセッサが、前記コンポーネントの挙動を、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムに記述された仕様を使用してモデル化する工程と、
    (b)前記プロセッサが、前記第1コンピュータ・プログラムを処理して第2コンピュータ・プログラムを生成する工程と、
    (c)前記プロセッサが、前記第2コンピュータ・プログラムに基づいて、前記コンポーネントの実装を生成する工程と、
    (d)前記プロセッサが、エンティティの階層内の第1エンティティをインスタンス化することによって前記生成した実装を使用して、前記コンポーネントの挙動をシミュレーションする工程とを含み、
    前記第2コンピュータ・プログラムが、前記シミュレーションに応答して、前記エンティティの階層内のより高いレベルのエンティティおよびより低いレベルのエンティティ双方をインスタンス化するように構成した有限状態機械の実装を含むことを特徴とする方法。
  2. 前記システムが、それぞれの仕様が機能仕様および関連シミュレーション・エレメントを含む、相関のある少なくとも第1および第2コンポーネントを含み、前記シミュレーション・エレメントが互いに通信してシミュレーション・システムを提供することを特徴とする、請求項1に記載の方法。
  3. 前記シミュレーション・システムが前記有限状態機械を実装することを特徴とする、請求項2に記載の方法。
  4. 前記シミュレーション・システムが、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との通信を管理することを特徴とする、請求項2または請求項3に記載の方法。
  5. 前記シミュレーション・システムが、前記第1コンポーネントおよび前記第2コンポーネントがイベントを処理する順序を決定することを特徴とする、請求項2〜請求項4のいずれか1項に記載の方法。
  6. 前記少なくとも1つのインスタンス化した第1エンティティに応答して、少なくとも1つのさらなるエンティティをインスタンス化する工程をさらに含み、前記少なくとも1つのさらなるエンティティは第1機能仕様および第2機能仕様の少なくとも1つによって定義され、前記シミュレーションに応答してインスタンス化される前記少なくとも1つのさらなるエンティティは、前記第1エンティティとの階層関係に基づいて、前記シミュレーション・システムによって選択される、請求項2〜請求項5のいずれか1項に記載の方法。
  7. 前記第1コンポーネントおよび前記第2コンポーネントを、前記相関エンティティの階層内におけるそれぞれのエンティティによって表し、前記それぞれのエンティティのインスタンスを作成することを特徴とする、請求項6に記載の方法。
  8. 前記少なくとも1つのさらなるエンティティが、前記相関エンティティの階層において、前記少なくとも1つの第1エンティティの親であることを特徴とする、請求項6または請求項7に記載の方法。
  9. 前記少なくとも1つのさらなるエンティティが、前記相関エンティティの階層において、前記少なくとも1つの第1エンティティの子であることを特徴とする、請求項6〜請求項8のいずれか1項に記載の方法。
  10. 前記所定の階層内のエンティティは、前記第1コンポーネントおよび前記第2コンポーネントを表す前記第1仕様と前記第2仕様との間で送信されるデータを表すようにインスタンス化され、前記第1コンポーネントと前記第2コンポーネントとの通信をモデル化することを特徴とする、請求項6〜請求項9のいずれか1項に記載の方法。
  11. 前記第1コンポーネントを前記第2コンポーネントよりも低い抽象化レベルでモデル化し、当該方法が前記第1コンポーネントと前記第2コンポーネントとの関係の詳細を、前記階層を使って提供する工程を含むことを特徴とする、請求項6〜請求項10のいずれか1項に記載の方法。
  12. 前記エンティティ間の階層関係を、前記第1機能仕様および前記第2機能仕様のうちの少なくとも1つから導き出すことを特徴とする、請求項6〜請求項11のいずれか1項に記載の方法。
  13. 前記処理する工程が、前記第1コンピュータ・プログラムを、前記第1コンピュータ・プログラミング言語から第2コンピュータ・プログラミング言語に変換することを特徴とする、請求項1〜請求項12のいずれか1項に記載の方法。
  14. 前記第2コンピュータ・プログラミング言語がVHDLまたはVerilogであることを特徴とする請求項13に記載の方法。
  15. 前記第2コンピュータ・プログラムに基づいてハードウェアに前記第1コンポーネントおよび前記第2コンポーネントの実装を生成する工程をさらに含む、請求項1〜請求項14のいずれか1項に記載の方法。
  16. 請求項2に従属することを前提として、前記処理する工程が、前記第2コンピュータ・プログラムに、追加のコンピュータ・コードを挿入する工程を含み、前記追加のコンピュータ・コードが前記少なくとも1つのシミュレーション・エレメントを実装することを特徴とする、請求項13〜請求項15のいずれか1項に記載の方法。
  17. プロセッサ読取可能命令を記憶するプログラム・メモリと、前記プログラム・メモリ内に記憶されている命令を読み取って実行するように構成したプロセッサとを含み、
    前記プロセッサ読取可能命令が、前記プロセッサを請求項1〜請求項16のいずれか1項の方法を行うように制御する命令を含むことを特徴とする、システムをモデル化およびシミュレーションするコンピュータ装置。
  18. コンポーネントを含むシステムをモデル化およびシミュレーションする装置であって、当該装置が、
    前記コンポーネントの挙動を、第1コンピュータ・プログラミング言語で書かれた第1コンピュータ・プログラムに記述された仕様を使用して、モデル化するモデル化手段と、
    第2コンピュータ・プログラムを生成するように前記第1コンピュータ・プログラムを処理する処理手段と、
    前記第2コンピュータ・プログラムに基づいて、前記コンポーネントの実装を生成する生成手段と、
    前記コンポーネントの挙動を、エンティティの階層内の第1エンティティをインスタンス化することによって、前記生成した実装を使って、シミュレーションするシミュレーション手段とを含み、
    前記第2コンピュータ・プログラムが、前記シミュレーションに応答して、前記エンティティの階層内のより高いレベルのエンティティおよびより低いレベルのエンティティ双方をインスタンス化するように構成した有限状態機械の実装を含むことを特徴とする、装置。
JP2008550846A 2006-01-20 2007-01-18 モデル化およびシミュレーション方法 Active JP5475996B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
GB0601135.7 2006-01-20
GBGB0601135.7A GB0601135D0 (en) 2006-01-20 2006-01-20 Modelling and simulation method
PCT/GB2007/000168 WO2007083134A2 (en) 2006-01-20 2007-01-18 Modelling and simulation method

Publications (2)

Publication Number Publication Date
JP2009524138A JP2009524138A (ja) 2009-06-25
JP5475996B2 true JP5475996B2 (ja) 2014-04-16

Family

ID=36010634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008550846A Active JP5475996B2 (ja) 2006-01-20 2007-01-18 モデル化およびシミュレーション方法

Country Status (6)

Country Link
US (2) US8165865B2 (ja)
EP (1) EP1977355A2 (ja)
JP (1) JP5475996B2 (ja)
CN (2) CN101395610B (ja)
GB (1) GB0601135D0 (ja)
WO (1) WO2007083134A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868397B2 (en) * 2006-11-20 2014-10-21 Sonics, Inc. Transaction co-validation across abstraction layers
US8549468B2 (en) * 2010-02-08 2013-10-01 National Tsing Hua University Method, system and computer readable storage device for generating software transaction-level modeling (TLM) model
US8943451B2 (en) * 2010-06-23 2015-01-27 Mentor Graphics Corporation Hierarchical finite state machine generation for power state behavior in an electronic design
US8845624B2 (en) 2010-06-25 2014-09-30 Alcon LexSx, Inc. Adaptive patient interface
US9015649B2 (en) * 2010-07-19 2015-04-21 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for electronic system model generation
AT511334B1 (de) * 2011-07-14 2012-11-15 Fronius Int Gmbh Schweissstromquelle und verfahren zu deren steuerung
US9514254B2 (en) 2012-01-24 2016-12-06 The United States Of America As Represented By The Secretary Of The Navy Modular model and simulation architecture
KR20130091096A (ko) * 2012-02-07 2013-08-16 한국전자통신연구원 하이브리드 시스템을 검증하기 위한 시뮬레이션 장치 및 방법
CN102609585A (zh) * 2012-02-09 2012-07-25 北京航空航天大学 基于组件的航空仪表高效建模设计方法
CN102819218B (zh) * 2012-07-19 2015-04-29 西安交通大学 基于事件控制函数的离散事件系统监控器及其控制方法
EP2902930A3 (en) * 2014-02-04 2015-11-11 Ingersoll-Rand Company System and method for modeling, simulation, optimization, and/or quote creation
KR101575133B1 (ko) * 2014-04-11 2015-12-07 국방과학연구소 M&s 환경에서 군집객체 구성을 위한 개체 조립 시스템 및 방법
KR20150134688A (ko) * 2014-05-22 2015-12-02 삼성전자주식회사 트랜잭터를 자동으로 생성하는 컴퓨팅 시스템
US9898390B2 (en) * 2016-03-30 2018-02-20 Ca, Inc. Virtual service localization

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6132109A (en) 1994-04-12 2000-10-17 Synopsys, Inc. Architecture and methods for a hardware description language source level debugging system
GB2301911B (en) * 1995-06-08 2000-01-12 Advanced Risc Mach Ltd Simulation of digital circuits
US5870585A (en) * 1995-10-10 1999-02-09 Advanced Micro Devices, Inc. Design for a simulation module using an object-oriented programming language
US6240376B1 (en) 1998-07-24 2001-05-29 Mentor Graphics Corporation Method and apparatus for gate-level simulation of synthesized register transfer level designs with source-level debugging
US6336087B2 (en) 1998-07-24 2002-01-01 Luc M. Burgun Method and apparatus for gate-level simulation of synthesized register transfer level design with source-level debugging
US6601024B1 (en) * 1998-11-12 2003-07-29 Synopsys, Inc. Code translation between hardware design languages
JP2000215226A (ja) * 1999-01-25 2000-08-04 Mitsubishi Electric Corp 論理検証装置
JP2000315222A (ja) * 1999-04-30 2000-11-14 Matsushita Electric Ind Co Ltd 集積回路装置の設計用データベース及び集積回路装置の設計方法
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US7065481B2 (en) * 1999-11-30 2006-06-20 Synplicity, Inc. Method and system for debugging an electronic system using instrumentation circuitry and a logic analyzer
US6823497B2 (en) * 1999-11-30 2004-11-23 Synplicity, Inc. Method and user interface for debugging an electronic system
US6931572B1 (en) 1999-11-30 2005-08-16 Synplicity, Inc. Design instrumentation circuitry
JP2002175344A (ja) * 2000-10-17 2002-06-21 Nec Corp 電子回路と制御プログラムとのコバリデーション方法
US7000213B2 (en) * 2001-01-26 2006-02-14 Northwestern University Method and apparatus for automatically generating hardware from algorithms described in MATLAB
US6691301B2 (en) * 2001-01-29 2004-02-10 Celoxica Ltd. System, method and article of manufacture for signal constructs in a programming language capable of programming hardware architectures
US20020152061A1 (en) * 2001-04-06 2002-10-17 Shintaro Shimogori Data processing system and design system
JP2003114914A (ja) * 2001-10-04 2003-04-18 Sharp Corp ソフトウェア/ハードウェア協調設計方法
US7110935B1 (en) * 2001-10-16 2006-09-19 Xilinx, Inc. Method and system for modeling and automatically generating an electronic design from a system level environment
US7231334B2 (en) * 2002-04-18 2007-06-12 International Business Machines Corporation Coupler interface for facilitating distributed simulation of a partitioned logic design
JP2005084956A (ja) * 2003-09-09 2005-03-31 Nec Corp 論理回路の検証方法および検証システム
GB0322050D0 (en) * 2003-09-20 2003-10-22 Spiratech Ltd Modelling and simulation method
US7260798B2 (en) * 2003-12-29 2007-08-21 Mentor Graphics Corporation Compilation of remote procedure calls between a timed HDL model on a reconfigurable hardware platform and an untimed model on a sequential computing platform
JP4470582B2 (ja) * 2004-05-19 2010-06-02 日本電気株式会社 ハードウェア/ソフトウェア協調シミュレーション方式及びその方法
US7657416B1 (en) * 2005-06-10 2010-02-02 Cadence Design Systems, Inc Hierarchical system design
US7472361B2 (en) * 2005-12-30 2008-12-30 Cadence Design Systems, Inc. System and method for generating a plurality of models at different levels of abstraction from a single master model
US7895560B2 (en) * 2006-10-02 2011-02-22 William Stuart Lovell Continuous flow instant logic binary circuitry actively structured by code-generated pass transistor interconnects

Also Published As

Publication number Publication date
US8165865B2 (en) 2012-04-24
US20100223042A1 (en) 2010-09-02
JP2009524138A (ja) 2009-06-25
CN102156774B (zh) 2014-06-25
EP1977355A2 (en) 2008-10-08
US8600723B2 (en) 2013-12-03
CN101395610B (zh) 2012-12-05
WO2007083134A2 (en) 2007-07-26
US20120259610A1 (en) 2012-10-11
CN102156774A (zh) 2011-08-17
GB0601135D0 (en) 2006-03-01
WO2007083134A3 (en) 2007-09-07
CN101395610A (zh) 2009-03-25

Similar Documents

Publication Publication Date Title
JP5475996B2 (ja) モデル化およびシミュレーション方法
JP4014080B2 (ja) デジタル回路の設計装置および設計方法、並びに、プログラムおよび格納媒体
US8326592B2 (en) Method and system for verifying electronic designs having software components
JP2004510258A (ja) ハードウェアとソフトウェアを備えた電子システムの性能レベルモデリング及びシミュレーション
US8443319B2 (en) Method for preparing re-architected designs for sequential equivalence checking
Bunker et al. Formal hardware specification languages for protocol compliance verification
Herrmannsdörfer et al. Library concepts for model reuse
CN102722601A (zh) 数控系统的模型转换形式化语义集成框架的实现方法
Dillaber et al. Pragmatic Strategies for Adopting Model-Based Design for Embedded Applications
Hu A simulation-based software development methodology for distributed real-time systems
Suhaib et al. Validating families of latency insensitive protocols
Sohofi et al. System-level assertions: approach for electronic system-level verification
KR101125365B1 (ko) Sdl?opnet 코-시뮬레이션 기법을 이용한 통신 프로토콜의 단일 모델 기반 통합 설계 방법
da Silva et al. Composition of software artifacts modelled using colored Petri nets
Roychoudhury et al. Automatic generation of protocol converters from scenario-based specifications
CN110221815B (zh) 一种基于本体的控制软件模型的自动生成方法
Doucet et al. A methodology to take credit for high-level verification during RTL verification
Wampler et al. An implementation of inverse kinematic functions for control of a redundant wrist
Gerstlauer et al. System-on-chip specification style guide
Huggi et al. Design and Verification of Memory Elements using Python
Pacholik et al. Real Time Constraints in System Level Specifications Improving the Verification Flow of Complex Systems
Bianculli et al. Software Engineering and Formal Methods: SEFM 2015 Collocated Workshops: ATSE, HOFM, MoKMaSD, and VERY* SCART, York, UK, September 7-8, 2015. Revised Selected Papers
Niazi et al. An emulation solution for the segbus platform
Nanbo Realization of MATLAB Model Callaborative Simulation in Hopsan Environment based on Hopsan Framework
Lund Design and Application of a Co-Simulation Framework for Chisel

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120131

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120309

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120316

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120409

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120416

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120629

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120802

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121130

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20121221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130719

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130726

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130819

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130826

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140207

R150 Certificate of patent or registration of utility model

Ref document number: 5475996

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250