(57)【特許請求の範囲】
【請求項１】
第１のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータと、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数のシミュレーションブロック手段であって、各シミュレーションブロック手段は主シミュレータから送られる外部入力データ、他のシミュレーションブロック手段から送られる内部入力データまたはその両方を受信し、各シミュレーションブロック手段は主シミュレータに出力するための外部出力データ、１個または複数の他のシミュレーションブロック手段に出力するための内部出力データまたはその両方を発生するようになっている複数シミュレーションブロック手段と、
主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
（ア）  主シミュレータから送られた外部入力データを１個または複数のシミュレーションブロック手段に供給することと、
（イ）  シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
（ウ）  シミュレーションブロック手段から送られた内部出力データを１個または複数の他のシミュレーションブロック手段に供給することと、を行うようになっているデータインタフェイス手段と、
を含み、前記データインタフェイス手段は、
シミュレーションブロックにより実行される動作と、該動作が実行される時間とを特定するスケジュールデータを、シミュレーションブロックから受信して記憶する手段と、
動作が実行される時間に前記主シミュレータからスケジューリングの呼出しを要求する手段と、
前記主シミュレータから受信したスケジューリング呼出しに応じて、前記動作を開始する手段と、
を含む、ディジタル回路シミュレーション装置。
【請求項２】
請求項１記載の装置において、前記ディジタル回路は集積回路である、ディジタル回路シミュレーション装置。
【請求項３】
請求項２記載の装置において、前記集積回路はマイクロプロセッサである、ディジタル回路シミュレーション装置。
【請求項４】
請求項３記載の装置において、前記外部入力データは、
（ア）  前記マイクロプロセッサの処理命令を表わすデータと、
（イ）  前記マイクロプロセッサにより処理されるオペランドを表わすデータと、
を含む、ディジタル回路シミュレーション装置。
【請求項５】
請求項３記載の装置において、前記外部入力データはクロック信号を表わすデータを含む、ディジタル回路シミュレーション装置。
【請求項６】
請求項１記載の装置において、前記シミュレーションブロックの動作は前記第１のプログラミング言語と異なる第２のプログラミング言語で記述されたシミュレーション命令により制御される、ディジタル回路シミュレーション装置。
【請求項７】
請求項１記載の装置において、前記データインタフェイスはシミュレーションブロック手段から発せられた外部出力データを１個または複数の他の前記シミュレーションブロック手段に供給するようになっている、ディジタル回路シミュレーション装置。
【請求項８】
第１のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータとデータを交換するようになっていて、ディジタル回路のデータ処理動作をシミュレーションするディジタル回路シミュレーション装置であって、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数のシミュレーションブロック手段であって、各シミュレーションブロック手段は主シミュレータから送られる外部入力データ、他のシミュレーションブロック手段から送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、１個または複数の他のシミュレーションブロック手段に出力するための内部出力データまたはその両方を発生するようになっている複数シミュレーションブロック手段と、
主シミュレータおよびシミュレーションブロック手段とデータを交換するようになっていて、
（ア）  主シミュレータから送られた外部入力データを１個または複数のシミュレーションブロック手段に供給することと、
（イ）  シミュレーションブロック手段から送られた外部出力データを主シミュレータに供給することと、
（ウ）  シミュレーションブロック手段から送られた内部出力データを１個または複数の他のシミュレーションブロック手段に供給することと、を行うようになっているデータインタフェイス手段と、
を含み、前記データインタフェイス手段は、
シミュレーションブロックにより実行される動作と、該動作が実行される時間とを特定するスケジュールデータを、シミュレーションブロックから受信して記憶する手段と、
動作が実行される時間に前記主シミュレータからスケジューリングの呼出しを要求する手段と、
前記主シミュレータから受信したスケジューリング呼出しに応じて、前記動作を開始する手段と、
を含む、ディジタル回路シミュレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はたとえばディジタル集積回路のようなディジタル回路のシミュレーションに関するものである。
【０００２】
【従来の技術】
ディジタル回路のシミュレーションには、汎用コンピュータで動くソフトウェアでディジタル回路の機能をシミュレーションすることが含まれる。この技術はマイクロプロセッサのような複雑な集積回路に適用するときに、主にふたつの理由で特に有用である。ひとつの理由は、比較的高価な半導体回路の製造プロセスを始める前に、マイクロプロセッサの設計者が設計をテストすることがシミュレーションにより可能になることである。もうひとつの理由は、マイクロプロセッサと一緒に働らく周辺装置のハードウェアとソフトウェアの開発中にシミュレーションを使うことにより、マイクロプロセッサの製造後できるだけ早く周辺装置が利用できるようになることである。
【０００３】
商業的に入手可能なディジタル回路シミュレーションのコンピュータプログラムがいくつかある。以下４種の例を挙げる。「ヴァンテージ・スプレッドシート（Ｖａｎｔａｇｅ  Ｓｐｒｅａｄｓｈｅｅｔ）」、「シノプシィス  Ｖｓｓ（Ｓｙｎｏｐｓｙｓ  Ｖｓｓ）」、「ケイデンス・ベリログ（Ｃａｄｅｎｃｅ  Ｖｅｒｉｌｏｇ）」、「モデルテク・Ｖシステム（Ｍｏｄｅｌｔｅｃｋ  Ｖ−Ｓｙｓｔｅｍ）」。
【０００４】
これらの４種のディジタル回路シミュレーションパッケージは、専用の論理シミュレーションプログラミング言語または「ＶＨＤＬ」のような公開された標準言語を使うが、主シミュレータの言語で書かれた主シミュレーションとインタフェイスをとるために、たとえばＣプログラミング言語で書かれたシミュレーションコードのブロックも許容される。この便宜は以下の表に示すようにいろいろな名前で呼ばれていて、以下の発行物に記載されているので、参照されたい。
【０００５】
【表１】
0003856496.tif 000002
【０００６】
上述の各パッケージを用いてＣコードのブロックを書くことにより、パイプライン装置、プログラムカウンタ、演算論理装置のようなマイクロプロセッサの比較的小さなブロックをシミュレーションすることができる。それから各ブロックは直接シミュレーションパッケージとインタフェイスされて、マイクロプロセッサ全体のシミュレーションを得ることができる。
【０００７】
この構成の例を図１に示す。図１の略図は従来のディジタル回路シミュレータにおける主シミュレータ４０と、上記のようないくつかのシミュレーションブロック１０，２０，３０との相互作用を示している。主シミュレータはたとえば前述の商業的に入手可能な４種のシミュレータのうちのひとつでよい。
【０００８】
各シミュレーションブロック１０，２０，３０はＣプログラミング言語で書かれて、マイクロプロセッサのそれぞれの部分の働らきをシミュレーションする。たとえば、シミュレーションブロックは乗算器、状態レジスタ、命令パイプラインなどをシミュレーションすることができよう。
【０００９】
一般的に、各シミュレーションブロックは２クラスの入力データを要し、２クラスの出力データを発生する。これらのクラスのうちの１個は「内部」データと呼ばれ、ディジタル回路の異なる部分の間で受け渡しされる内部信号を表わすデータである。マイクロプロセッサのシミュレーションの場合、この種の信号の例として内部レジスタ値やゼロフラグがある。この場合、集積回路が半導体製品としてつくられるとき、これらの内部信号は集積回路の入出力ピンすなわち接続点とは接続されないであろう。すなわち、これらの内部の部品間でのみ受け渡しされるであろう。
【００１０】
データのもう一方のクラスは「外部」データと呼ばれる。これは回路が半導体製品としてつくられるとき、通常外部の世界と受け渡しされる電気信号を表わしている。外部信号の例としてクロック信号と外部アドレスバスがある。
【００１１】
しかしながら図１においてシミュレーションブロックは相互に主シミュレータ４０を経由してのみ接続されているので、内部信号も外部信号も共に主シミュレータ４０と受け渡しをしなければならない。前述のように、このことは、集積回路の内部動作の詳細、特に内部の信号トラヒックとシミュレーションブロックの識別と機能とに関する詳細をシミュレータの使用者に公開しなければならないことを意味する。これらの情報はさもなくば秘密にしておくことであろう。
【００１２】
図１に示した従来のシミュレータのもうひとつの特徴は、使用中のシミュレーションブロック１０，２０，３０と特定の主シミュレータ４０間のインタフェイスを調整するのに「ベニア（ｖｅｎｅｅｒ）」を使うことである。ベニア５０，６０，７０を使うことにより、シミュレーションブロック１０，２０，３０などを基本的な形で用意することが可能になる。その結果、特定の主シミュレータ４０と会話するために、比較的少量の作業だけをベニアに追加すればよい。
【００１３】
図２は図１の構成に対応した概略回路図である。図２は主シミュレータ４０を経由して相互接続されるシミュレーションブロックの例をいくつか示してある（たとえば、条件ユニット、乗算器、演算論理装置（ＡＬＵ）、パイプライン）。したがって、これらのブロックは製造された集積回路内では直接会話することであろうが、シミュレーション装置ではブロックは主シミュレータを経由して会話しなければならない。
【００１４】
この従来の構成にはふたつの欠点がある。ひとつは各コードブロックが特定の方法でコードを書くかそれとも各コードブロックに適切なベニヤを適用するかいずれかの方法によって、適当なシミュレーションパッケージとコンパチブルにつくられなければならないということである。可能性のあるもうひとつのもっと重要な欠点は、マイクロプロセッサが市場に供給される前に、シミュレーションコードがマイクロプロセッサの設計者により第三者の会社にしばしば提供されるという事実に由来する。個々のコードブロックはマイクロプロセッサの比較的小さい部分を表わしていて、ブロック間で交換される内部信号を特定する情報を伴わなければならないので、マイクロプロセッサの設計者はマイクロプロセッサの内部動作に関する情報を、周辺装置の設計者の要求よりずっと詳しく供給しているのが実情である。実際多くの場合、さもなくば製造された製品が市場に供給された後でさえマイクロプロセッサの設計者により秘密が保たれるであろう情報の多くを、このように提供しなければならない。この情報は一般的に受領者により乱用されないけれども、詳細な設計情報が第三者の周辺装置設計者に供給されているという事実があるから、マイクロプロセッサの設計者は設計情報が不当にコピーされたり拡布されたりすることにより、秘密が洩れる危険にさらされることになる。
【００１５】
【発明が解決しようとする課題】
本発明の目的はシミュレーションする回路の内部設計の詳細の保護を改良することである。
【００１６】
【課題を解決するための手段】
本発明はディジタル回路のデータ処理動作をシミュレーションするディジタル回路シミュレータ（たとえばシミュレーション装置）を提供するものであって、このシミュレータは、
第１のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータと、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数個のシミュレーションブロックであって、各シミュレーションブロックは主シミュレータから送られる外部入力データ、他のシミュレーションブロックから送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、１個または複数の他のシミュレーションブロックに出力するための内部出力データまたはその両方を発生するようになっているシミュレーションブロックと、
主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
（ア）  主シミュレータから送られた外部入力データを１個または複数のシミュレーションブロックに供給することと、
（イ）  シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
（ウ）  シミュレーションブロックから送られた内部出力データを１個または複数の他のシミュレーションブロックに供給することと、
を行うようになっているデータインターフェイスとを含む。
【００１７】
本発明はシミュレーションブロックと主（たとえば専有の）シミュレータとの間に中間のデータインタフェイスを設けることによって、上記の問題に取組むものである。データインタフェイスは「外部」データ信号を主シミュレータと受け渡しするが、「内部」データ信号（これはディジタル回路の非公開内部電気信号をシミュレーションすることができる）は他のシミュレーションブロックとだけ受け渡しして、主シミュレータとは受け渡ししない。
【００１８】
このように、以前と同様にディジタル回路の完全なシミュレーションを複数のブロック内で完成することができるが、シミュレーションを第三者の開発者を供給するとき、周辺装置の開発に必要な「外部」データ信号以外のディジタル回路の動作を開示する必要はない。このようにして、ディジタル回路の内部動作に関する情報が乱用される危険性が著しく軽減される。
【００１９】
本発明はまたすべてのシミュレーションブロックと主シミュレータ間にただ１個のインタフェイスを提供するものである。その結果、主シミュレータと一緒に動作するのにただ１個のインタフェイスのみを調整（たとえばベニア）しさえすればよい。このことはまた、シミュレーションブロックとデータインタフェイス間のインタフェイスが主シミュレータとの公開されたインタフェイスプロトロルに強制されるものでないので、図１の従来のシステムより効率良く（たとえばより速く）することができることを意味する。
【００２０】
本発明は各種の集積回路のシミュレーションに適用することができるが、特にマイクロプロセッサ（この術語はここではプログラム可能な処理装置をすべて包含するものとして用いる）のシミュレーションに適用することができる。この場合、外部入力データは以下のものを含むのが好ましい。
（ア）  マイクロプロセッサの処理命令を表わすデータと、
（イ）  マイクロプロセッサにより処理されるオペランドを表わすデータ。
【００２１】
好ましくは、外部入力データはクロック信号を表わすデータを含む。
好ましくは、シミュレーションブロックの動作は第１のプログラミング言語とは異なる第２のプログラミング言語（たとえばＣ）で記述されたシミュレーション命令により制御される。好ましくは、前述の如くシミュレーションブロックの機能の秘密性の保持を助けるために、この第２の言語は人に容易に読まれない形式にコンパイルしてもよい（この場合Ｃのような言語を用いる）。
【００２２】
シミュレーションブロックから発生する外部出力データのうちいくつかは（たとえば、主データまたはアドレスバス）、他のシミュレーションブロックにとって有用かもしれないので、データインタフェイスはシミュレーションブロックから出力された外部出力データを１個または複数の他のシミュレーションブロックに供給することができるのが好ましい。
【００２３】
データインタフェイスはまた主シミュレータから発せられるシミュレーションブロックの時間遅延動作に関する秘密のスケジューリング情報を隠すのにも使うことができる。このことを実現するために、データインタフェイスは、シミュレーションブロックにより実行される動作とその動作を実行すべき時間とを特定するスケジュール情報をシミュレーションブロックから受信して記憶する手段と、動作を実行すべき時間に主シミュレータからスケジューリング呼び出しを要求する手段と、主シミュレータから受信したスケジューリング呼出しに応じて動作を開始する手段とを含む。
【００２４】
本発明はまた第１のプログラミング言語で記述されたシミュレーション命令に応じて主シミュレータとデータを交換するようになっていて、ディジタル回路のデータ処理動作をシミュレーションするためのディジタル回路シミュレータを提供するものであって、ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数個のシミュレーションブロックであって、各シミュレーションブロックは主シミュレータから送られる外部入力データ、他のシミュレーションブロックから送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、１個または複数の他のシミュレーションブロックに出力するための内部出力データまたはその両方を発生するようになっているシミュレーションブロックと、主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
（ア）  主シミュレータから送られた外部入力データを１個または複数のシミュレーションブロックに供給することと、
（イ）  シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
（ウ）  シミュレーションブロックから送られた内部出力データを１個または複数の他のシミュレーションブロックに供給することと、
を行うようになっているデータインターフェイスとを含む。
【００２５】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を説明するなかで、本発明に関する上記およびその他の目的、特徴、利点を明らかにする。
図３は本発明の一実施例による集積回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図である。
シミュレーションブロック１０，２０，３０は前述のものと同様のものであるが、これらは主シミュレータ（この場合４０′）ではなくて、データインタフェイスブロック１００と通信する。
データインタフェイスブロック１００は、シミュレーションブロックと主シミュレータ間を行き来するデータ信号のリスト１０５を記憶している。このリストは受信信号の必要な行き先と、その信号が内部データ信号なのかそれとも外部データ信号なのかを指示する（この情報は実際には行き先情報の中に含めてもよい）。
【００２６】
データインタフェイスブロック１００の働きは、それがシミュレーションブロックまたは主シミュレータ４０′からデータ信号を受信すると、記憶リストにあるルーチング情報に従ってデータ信号を送るという点で正直である。（第２の実施例ではこのルーチングにタイミング情報を含むことがあるが、説明をやさしくするため、タイミング情報の使用は後で別に説明する。）
【００２７】
次にシミュレーションブロックの例を、各ブロックにより使われるデータ入力とデータ出力と共に詳しく一覧表で示す。表の中で外部データ信号にはアンダーラインを付してあり、アンダーラインのない信号は内部信号である。
【００２８】
【表２】
0003856496.tif 000003
【００２９】
例えば、主シミュレータ４０′から外部入力信号として受信されたクロック信号は、この表に従ってすべてのシミュレーションブロックに送られる。それとは対照的に、プログラムカウンタの値はプログラムカウンタ・シミュレーションブロックにより内部出力信号としてつくられて、データインタフェイスブロック１００を経由して直接アドレスレジスタ・インタフェイスブロックに送られる、すなわち主シミュレータ４０′には送られない。
【００３０】
その結果、製造される半導体集積回路の入力または出力として通常供給されるであろう外部信号だけが、主シミュレータ４０′と交換される。
もうひとつの特徴は、データインタフェイスブロック１００と主シミュレータ４０′間のインタフェイスを制御するのに、ただ１個のベニア５０′だけが必要とされることである。もはや、シミュレータブロック１０，２０，３０の各々にベニヤを適用する必要はない。
【００３１】
図４にその構造の略図を示すが、図２とは対照的に、主シミュレータ４０′は全体的にベニア５０′を経由してシミュレートされるマイクロプロセッサ１１０と交信する。マイクロプロセッサ１１０の内部動作に付随する内部信号は、主シミュレータ４０′と往き来する必要はない。
【００３２】
第２の実施例では、完了するのに有限の時間を要するイベントをシミュレーションするために、シミュレーションの中にタイミング情報が含まれる。例えば、シミュレーションのためのシミュレーションブロック、たとえばレジスタブロックがシミュレーション時間に関して瞬時に出力値を供給できるようにしてもよいが、それに対して出力値は実際に製造される回路で計算するのに有限の（実）時間を要するだろう。したがって、そのブロックの動作をシミュレーションするために、シミュレーションはある時間にレジスタのうちの１個の内容に対する要求を受信して、そのブロックに、出力をデータをつくることを命令するが、そのとき要求後適当な遅延期間まで（シミュレーション時間に関して）出力データを読まないように命令することになろう。
【００３３】
以前にはこの種のイベントは、主シミュレータの一部を形成するスケジューラに詳細を渡すことにより、将来の実行用にスケジュールされていた。しかしながら、これは作用の詳細を強制的に主シミュレータの使用者に供給させることになろう。
【００３４】
この問題を避けるために、本発明の第２の実施例において、データインタフェイス１００は将来実行されるようにスケジュールされているイベント（たとえば上述のレジスタアクセス）のリスト１０８すなわち「ヒープ」（これは必ずしも順序よく整理されている必要はない）を維持することにより、このことが解決される。
【００３５】
データインタフェイスがシミュレーションブロックからこの種の各イベントの詳細を受信すると、データインタフェイスはとるべき特定の行動の詳細を、その行動をとるべき時間と一緒に記憶する。しかしながら、データインタフェイスは主シミュレータ内のスケジューラに実行の時間の詳細だけを渡す。
【００３６】
主シミュレータはデータインタフェイスから時間情報を受信して、そのときに開始すべき非特定のイベントをスケジュールする。各時間に達すると、主シミュレータは非特定のスケジューリング信号をデータインタフェイスに送る。するとデータインタフェイスは待機イベントのヒープを調べて、そのときに働らくようになっているレジスタシミュレーションブロックから出力値を読み出すようなイベント（１個または複数）を開始する。
このように、主シミュレータに供給されなければならない待機イベントの詳細のみが実行の時であり、他の詳細はデータインタフェイスにより処理される。
【００３７】
以上、図面を参照して本発明の実施例を詳細に説明したが、本発明はこれらの実施例に限定されるものではなく、当業者なら特許請求の範囲に記載された本発明の思想から逸脱することなく、各種の変形および修正をなすことができることを理解すべきである。
【図面の簡単な説明】
【図１】従来のディジタル回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図。
【図２】図１の構成に対応する回路の略図。
【図３】本発明の実施例によるディジタル回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図。
【図４】図３の構成に対応する回路の略図。
【符号の説明】
１０，２０，３０  シミュレーションブロック
４０，４０′  主シミュレータ
５０，５０′，６０，７０  ベニア
１００  データインタフェイス
【図１】
0003856496.tif 000004
【図２】
0003856496.tif 000005
【図３】
0003856496.tif 000006
【図４】
0003856496.tif 000007