JP3856496B2 - Digital circuit simulator - Google Patents

Digital circuit simulator Download PDF

Info

Publication number
JP3856496B2
JP3856496B2 JP12185896A JP12185896A JP3856496B2 JP 3856496 B2 JP3856496 B2 JP 3856496B2 JP 12185896 A JP12185896 A JP 12185896A JP 12185896 A JP12185896 A JP 12185896A JP 3856496 B2 JP3856496 B2 JP 3856496B2
Authority
JP
Japan
Prior art keywords
simulation
data
simulation block
digital circuit
main simulator
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.)
Expired - Lifetime
Application number
JP12185896A
Other languages
Japanese (ja)
Other versions
JPH096835A (en
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
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JPH096835A publication Critical patent/JPH096835A/en
Application granted granted Critical
Publication of JP3856496B2 publication Critical patent/JP3856496B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

【0001】
【発明の属する技術分野】
本発明はたとえばディジタル集積回路のようなディジタル回路のシミュレーションに関するものである。
【0002】
【従来の技術】
ディジタル回路のシミュレーションには、汎用コンピュータで動くソフトウェアでディジタル回路の機能をシミュレーションすることが含まれる。この技術はマイクロプロセッサのような複雑な集積回路に適用するときに、主にふたつの理由で特に有用である。ひとつの理由は、比較的高価な半導体回路の製造プロセスを始める前に、マイクロプロセッサの設計者が設計をテストすることがシミュレーションにより可能になることである。もうひとつの理由は、マイクロプロセッサと一緒に働らく周辺装置のハードウェアとソフトウェアの開発中にシミュレーションを使うことにより、マイクロプロセッサの製造後できるだけ早く周辺装置が利用できるようになることである。
【0003】
商業的に入手可能なディジタル回路シミュレーションのコンピュータプログラムがいくつかある。以下4種の例を挙げる。「ヴァンテージ・スプレッドシート(Vantage Spreadsheet)」、「シノプシィス Vss(Synopsys Vss)」、「ケイデンス・ベリログ(Cadence Verilog)」、「モデルテク・Vシステム(Modelteck V−System)」。
【0004】
これらの4種のディジタル回路シミュレーションパッケージは、専用の論理シミュレーションプログラミング言語または「VHDL」のような公開された標準言語を使うが、主シミュレータの言語で書かれた主シミュレーションとインタフェイスをとるために、たとえばCプログラミング言語で書かれたシミュレーションコードのブロックも許容される。この便宜は以下の表に示すようにいろいろな名前で呼ばれていて、以下の発行物に記載されているので、参照されたい。
【0005】
【表1】

Figure 0003856496
【0006】
上述の各パッケージを用いてCコードのブロックを書くことにより、パイプライン装置、プログラムカウンタ、演算論理装置のようなマイクロプロセッサの比較的小さなブロックをシミュレーションすることができる。それから各ブロックは直接シミュレーションパッケージとインタフェイスされて、マイクロプロセッサ全体のシミュレーションを得ることができる。
【0007】
この構成の例を図1に示す。図1の略図は従来のディジタル回路シミュレータにおける主シミュレータ40と、上記のようないくつかのシミュレーションブロック10,20,30との相互作用を示している。主シミュレータはたとえば前述の商業的に入手可能な4種のシミュレータのうちのひとつでよい。
【0008】
各シミュレーションブロック10,20,30はCプログラミング言語で書かれて、マイクロプロセッサのそれぞれの部分の働らきをシミュレーションする。たとえば、シミュレーションブロックは乗算器、状態レジスタ、命令パイプラインなどをシミュレーションすることができよう。
【0009】
一般的に、各シミュレーションブロックは2クラスの入力データを要し、2クラスの出力データを発生する。これらのクラスのうちの1個は「内部」データと呼ばれ、ディジタル回路の異なる部分の間で受け渡しされる内部信号を表わすデータである。マイクロプロセッサのシミュレーションの場合、この種の信号の例として内部レジスタ値やゼロフラグがある。この場合、集積回路が半導体製品としてつくられるとき、これらの内部信号は集積回路の入出力ピンすなわち接続点とは接続されないであろう。すなわち、これらの内部の部品間でのみ受け渡しされるであろう。
【0010】
データのもう一方のクラスは「外部」データと呼ばれる。これは回路が半導体製品としてつくられるとき、通常外部の世界と受け渡しされる電気信号を表わしている。外部信号の例としてクロック信号と外部アドレスバスがある。
【0011】
しかしながら図1においてシミュレーションブロックは相互に主シミュレータ40を経由してのみ接続されているので、内部信号も外部信号も共に主シミュレータ40と受け渡しをしなければならない。前述のように、このことは、集積回路の内部動作の詳細、特に内部の信号トラヒックとシミュレーションブロックの識別と機能とに関する詳細をシミュレータの使用者に公開しなければならないことを意味する。これらの情報はさもなくば秘密にしておくことであろう。
【0012】
図1に示した従来のシミュレータのもうひとつの特徴は、使用中のシミュレーションブロック10,20,30と特定の主シミュレータ40間のインタフェイスを調整するのに「ベニア(veneer)」を使うことである。ベニア50,60,70を使うことにより、シミュレーションブロック10,20,30などを基本的な形で用意することが可能になる。その結果、特定の主シミュレータ40と会話するために、比較的少量の作業だけをベニアに追加すればよい。
【0013】
図2は図1の構成に対応した概略回路図である。図2は主シミュレータ40を経由して相互接続されるシミュレーションブロックの例をいくつか示してある(たとえば、条件ユニット、乗算器、演算論理装置(ALU)、パイプライン)。したがって、これらのブロックは製造された集積回路内では直接会話することであろうが、シミュレーション装置ではブロックは主シミュレータを経由して会話しなければならない。
【0014】
この従来の構成にはふたつの欠点がある。ひとつは各コードブロックが特定の方法でコードを書くかそれとも各コードブロックに適切なベニヤを適用するかいずれかの方法によって、適当なシミュレーションパッケージとコンパチブルにつくられなければならないということである。可能性のあるもうひとつのもっと重要な欠点は、マイクロプロセッサが市場に供給される前に、シミュレーションコードがマイクロプロセッサの設計者により第三者の会社にしばしば提供されるという事実に由来する。個々のコードブロックはマイクロプロセッサの比較的小さい部分を表わしていて、ブロック間で交換される内部信号を特定する情報を伴わなければならないので、マイクロプロセッサの設計者はマイクロプロセッサの内部動作に関する情報を、周辺装置の設計者の要求よりずっと詳しく供給しているのが実情である。実際多くの場合、さもなくば製造された製品が市場に供給された後でさえマイクロプロセッサの設計者により秘密が保たれるであろう情報の多くを、このように提供しなければならない。この情報は一般的に受領者により乱用されないけれども、詳細な設計情報が第三者の周辺装置設計者に供給されているという事実があるから、マイクロプロセッサの設計者は設計情報が不当にコピーされたり拡布されたりすることにより、秘密が洩れる危険にさらされることになる。
【0015】
【発明が解決しようとする課題】
本発明の目的はシミュレーションする回路の内部設計の詳細の保護を改良することである。
【0016】
【課題を解決するための手段】
本発明はディジタル回路のデータ処理動作をシミュレーションするディジタル回路シミュレータ(たとえばシミュレーション装置)を提供するものであって、このシミュレータは、
第1のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータと、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数個のシミュレーションブロックであって、各シミュレーションブロックは主シミュレータから送られる外部入力データ、他のシミュレーションブロックから送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、1個または複数の他のシミュレーションブロックに出力するための内部出力データまたはその両方を発生するようになっているシミュレーションブロックと、
主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
(ア) 主シミュレータから送られた外部入力データを1個または複数のシミュレーションブロックに供給することと、
(イ) シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
(ウ) シミュレーションブロックから送られた内部出力データを1個または複数の他のシミュレーションブロックに供給することと、
を行うようになっているデータインターフェイスとを含む。
【0017】
本発明はシミュレーションブロックと主(たとえば専有の)シミュレータとの間に中間のデータインタフェイスを設けることによって、上記の問題に取組むものである。データインタフェイスは「外部」データ信号を主シミュレータと受け渡しするが、「内部」データ信号(れはディジタル回路の非公開内部電気信号をシミュレーションすることができる)は他のシミュレーションブロックとだけ受け渡しして、主シミュレータとは受け渡ししない。
【0018】
このように、以前と同様にディジタル回路の完全なシミュレーションを複数のブロック内で完成することができるが、シミュレーションを第三者の開発者を供給するとき、周辺装置の開発に必要な「外部」データ信号以外のディジタル回路の動作を開示する必要はない。このようにして、ディジタル回路の内部動作に関する情報が乱用される危険性が著しく軽減される。
【0019】
本発明はまたすべてのシミュレーションブロックと主シミュレータ間にただ1個のインタフェイスを提供するものである。その結果、主シミュレータと一緒に動作するのにただ1個のインタフェイスのみを調整(たとえばベニア)しさえすればよい。このことはまた、シミュレーションブロックとデータインタフェイス間のインタフェイスが主シミュレータとの公開されたインタフェイスプロトロルに強制されるものでないので、図1の従来のシステムより効率良く(たとえばより速く)することができることを意味する。
【0020】
本発明は各種の集積回路のシミュレーションに適用することができるが、特にマイクロプロセッサ(この術語はここではプログラム可能な処理装置をすべて包含するものとして用いる)のシミュレーションに適用することができる。この場合、外部入力データは以下のものを含むのが好ましい。
(ア) マイクロプロセッサの処理命令を表わすデータと、
(イ) マイクロプロセッサにより処理されるオペランドを表わすデータ。
【0021】
好ましくは、外部入力データはクロック信号を表わすデータを含む。
好ましくは、シミュレーションブロックの動作は第1のプログラミング言語とは異なる第2のプログラミング言語(たとえばC)で記述されたシミュレーション命令により制御される。好ましくは、前述の如くシミュレーションブロックの機能の秘密性の保持を助けるために、この第2の言語は人に容易に読まれない形式にコンパイルしてもよい(この場合Cのような言語を用いる)。
【0022】
シミュレーションブロックから発生する外部出力データのうちいくつかは(たとえば、主データまたはアドレスバス)、他のシミュレーションブロックにとって有用かもしれないので、データインタフェイスはシミュレーションブロックから出力された外部出力データを1個または複数の他のシミュレーションブロックに供給することができるのが好ましい。
【0023】
データインタフェイスはまた主シミュレータから発せられるシミュレーションブロックの時間遅延動作に関する秘密のスケジューリング情報を隠すのにも使うことができる。このことを実現するために、データインタフェイスは、シミュレーションブロックにより実行される動作とその動作を実行すべき時間とを特定するスケジュール情報をシミュレーションブロックから受信して記憶する手段と、動作を実行すべき時間に主シミュレータからスケジューリング呼び出しを要求する手段と、主シミュレータから受信したスケジューリング呼出しに応じて動作を開始する手段とを含む。
【0024】
本発明はまた第1のプログラミング言語で記述されたシミュレーション命令に応じて主シミュレータとデータを交換するようになっていて、ディジタル回路のデータ処理動作をシミュレーションするためのディジタル回路シミュレータを提供するものであって、ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数個のシミュレーションブロックであって、各シミュレーションブロックは主シミュレータから送られる外部入力データ、他のシミュレーションブロックから送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、1個または複数の他のシミュレーションブロックに出力するための内部出力データまたはその両方を発生するようになっているシミュレーションブロックと、主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
(ア) 主シミュレータから送られた外部入力データを1個または複数のシミュレーションブロックに供給することと、
(イ) シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
(ウ) シミュレーションブロックから送られた内部出力データを1個または複数の他のシミュレーションブロックに供給することと、
を行うようになっているデータインターフェイスとを含む。
【0025】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を説明するなかで、本発明に関する上記およびその他の目的、特徴、利点を明らかにする。
図3は本発明の一実施例による集積回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図である。
シミュレーションブロック10,20,30は前述のものと同様のものであるが、これらは主シミュレータ(この場合40′)ではなくて、データインタフェイスブロック100と通信する。
データインタフェイスブロック100は、シミュレーションブロックと主シミュレータ間を行き来するデータ信号のリスト105を記憶している。このリストは受信信号の必要な行き先と、その信号が内部データ信号なのかそれとも外部データ信号なのかを指示する(この情報は実際には行き先情報の中に含めてもよい)。
【0026】
データインタフェイスブロック100の働きは、それがシミュレーションブロックまたは主シミュレータ40′からデータ信号を受信すると、記憶リストにあるルーチング情報に従ってデータ信号を送るという点で正直である。(第2の実施例ではこのルーチングにタイミング情報を含むことがあるが、説明をやさしくするため、タイミング情報の使用は後で別に説明する。)
【0027】
次にシミュレーションブロックの例を、各ブロックにより使われるデータ入力とデータ出力と共に詳しく一覧表で示す。表の中で外部データ信号にはアンダーラインを付してあり、アンダーラインのない信号は内部信号である。
【0028】
【表2】
Figure 0003856496
【0029】
例えば、主シミュレータ40′から外部入力信号として受信されたクロック信号は、この表に従ってすべてのシミュレーションブロックに送られる。それとは対照的に、プログラムカウンタの値はプログラムカウンタ・シミュレーションブロックにより内部出力信号としてつくられて、データインタフェイスブロック100を経由して直接アドレスレジスタ・インタフェイスブロックに送られる、すなわち主シミュレータ40′には送られない。
【0030】
その結果、製造される半導体集積回路の入力または出力として通常供給されるであろう外部信号だけが、主シミュレータ40′と交換される。
もうひとつの特徴は、データインタフェイスブロック100と主シミュレータ40′間のインタフェイスを制御するのに、ただ1個のベニア50′だけが必要とされることである。もはや、シミュレータブロック10,20,30の各々にベニヤを適用する必要はない。
【0031】
図4にその構造の略図を示すが、図2とは対照的に、主シミュレータ40′は全体的にベニア50′を経由してシミュレートされるマイクロプロセッサ110と交信する。マイクロプロセッサ110の内部動作に付随する内部信号は、主シミュレータ40′と往き来する必要はない。
【0032】
第2の実施例では、完了するのに有限の時間を要するイベントをシミュレーションするために、シミュレーションの中にタイミング情報が含まれる。例えば、シミュレーションのためのシミュレーションブロック、たとえばレジスタブロックがシミュレーション時間に関して瞬時に出力値を供給できるようにしてもよいが、それに対して出力値は実際に製造される回路で計算するのに有限の(実)時間を要するだろう。したがって、そのブロックの動作をシミュレーションするために、シミュレーションはある時間にレジスタのうちの1個の内容に対する要求を受信して、そのブロックに、出力をデータをつくることを命令するが、そのとき要求後適当な遅延期間まで(シミュレーション時間に関して)出力データを読まないように命令することになろう。
【0033】
以前にはこの種のイベントは、主シミュレータの一部を形成するスケジューラに詳細を渡すことにより、将来の実行用にスケジュールされていた。しかしながら、これは作用の詳細を強制的に主シミュレータの使用者に供給させることになろう。
【0034】
この問題を避けるために、本発明の第2の実施例において、データインタフェイス100は将来実行されるようにスケジュールされているイベント(たとえば上述のレジスタアクセス)のリスト108すなわち「ヒープ」(これは必ずしも順序よく整理されている必要はない)を維持することにより、このことが解決される。
【0035】
データインタフェイスがシミュレーションブロックからこの種の各イベントの詳細を受信すると、データインタフェイスはとるべき特定の行動の詳細を、その行動をとるべき時間と一緒に記憶する。しかしながら、データインタフェイスは主シミュレータ内のスケジューラに実行の時間の詳細だけを渡す。
【0036】
主シミュレータはデータインタフェイスから時間情報を受信して、そのときに開始すべき非特定のイベントをスケジュールする。各時間に達すると、主シミュレータは非特定のスケジューリング信号をデータインタフェイスに送る。するとデータインタフェイスは待機イベントのヒープを調べて、そのときに働らくようになっているレジスタシミュレーションブロックから出力値を読み出すようなイベント(1個または複数)を開始する。
このように、主シミュレータに供給されなければならない待機イベントの詳細のみが実行の時であり、他の詳細はデータインタフェイスにより処理される。
【0037】
以上、図面を参照して本発明の実施例を詳細に説明したが、本発明はこれらの実施例に限定されるものではなく、当業者なら特許請求の範囲に記載された本発明の思想から逸脱することなく、各種の変形および修正をなすことができることを理解すべきである。
【図面の簡単な説明】
【図1】従来のディジタル回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図。
【図2】図1の構成に対応する回路の略図。
【図3】本発明の実施例によるディジタル回路シミュレータにおけるシミュレーションブロックの相互作用を示す略図。
【図4】図3の構成に対応する回路の略図。
【符号の説明】
10,20,30 シミュレーションブロック
40,40′ 主シミュレータ
50,50′,60,70 ベニア
100 データインタフェイス[0001]
BACKGROUND OF THE INVENTION
The present invention relates to the simulation of digital circuits such as digital integrated circuits.
[0002]
[Prior art]
The simulation of the digital circuit includes simulating the function of the digital circuit with software running on a general-purpose computer. This technique is particularly useful when applied to complex integrated circuits such as microprocessors for two main reasons. One reason is that simulation allows a microprocessor designer to test a design before starting the manufacturing process for a relatively expensive semiconductor circuit. Another reason is that by using simulation during the development of peripheral hardware and software that works with the microprocessor, the peripheral can be used as soon as possible after the microprocessor is manufactured.
[0003]
There are several commercially available computer programs for digital circuit simulation. Four examples are given below. “Vantage Spreadsheet”, “Synopsys Vss”, “Cadence Verilog”, “Modeltech V-System”.
[0004]
These four digital circuit simulation packages use a dedicated logic simulation programming language or a published standard language such as “VHDL”, but to interface with the main simulation written in the main simulator language. For example, blocks of simulation code written in the C programming language are allowed. This convenience is referred to by various names as shown in the table below and is described in the following publications:
[0005]
[Table 1]
Figure 0003856496
[0006]
By writing a block of C code using each of the above-described packages, a relatively small block of a microprocessor such as a pipeline device, a program counter, and an arithmetic logic device can be simulated. Each block can then be directly interfaced with a simulation package to obtain a simulation of the entire microprocessor.
[0007]
An example of this configuration is shown in FIG. The schematic diagram of FIG. 1 shows the interaction between a main simulator 40 in a conventional digital circuit simulator and several simulation blocks 10, 20, 30 as described above. The main simulator may be, for example, one of the four commercially available simulators described above.
[0008]
Each simulation block 10, 20, 30 is written in C programming language to simulate the working of the respective part of the microprocessor. For example, a simulation block could simulate a multiplier, status register, instruction pipeline, and so on.
[0009]
In general, each simulation block requires two classes of input data and generates two classes of output data. One of these classes, called “internal” data, is data representing internal signals that are passed between different parts of the digital circuit. In the case of microprocessor simulation, examples of this type of signal include internal register values and zero flags. In this case, when the integrated circuit is made as a semiconductor product, these internal signals will not be connected to the input / output pins or connection points of the integrated circuit. That is, it will only be passed between these internal components.
[0010]
The other class of data is called “external” data. This represents an electrical signal that is usually passed to the outside world when the circuit is made as a semiconductor product. Examples of external signals include a clock signal and an external address bus.
[0011]
However, since the simulation blocks in FIG. 1 are connected to each other only via the main simulator 40, both internal signals and external signals must be transferred to the main simulator 40. As mentioned above, this means that details of the internal operation of the integrated circuit, in particular details regarding the internal signal traffic and the identification and function of the simulation block, must be made available to the simulator user. This information would otherwise be kept secret.
[0012]
Another feature of the conventional simulator shown in FIG. 1 is that “veneener” is used to adjust the interface between the simulation blocks 10, 20, 30 in use and a specific main simulator 40. is there. By using the veneers 50, 60, and 70, the simulation blocks 10, 20, and 30 can be prepared in a basic form. As a result, only a relatively small amount of work needs to be added to the veneer to converse with a particular main simulator 40.
[0013]
FIG. 2 is a schematic circuit diagram corresponding to the configuration of FIG. FIG. 2 shows some examples of simulation blocks interconnected via the main simulator 40 (eg, conditional units, multipliers, arithmetic logic units (ALUs), pipelines). Thus, while these blocks would talk directly within the manufactured integrated circuit, in the simulation device the blocks must talk via the main simulator.
[0014]
This conventional configuration has two drawbacks. One is that each code block must be made compatible with the appropriate simulation package either by writing code in a specific way or by applying the appropriate veneer to each code block. Another more important disadvantage that may be derived from the fact that simulation code is often provided by a microprocessor designer to a third party company before the microprocessor is brought to market. Because each code block represents a relatively small portion of the microprocessor and must be accompanied by information identifying the internal signals exchanged between the blocks, the microprocessor designer can provide information on the internal operation of the microprocessor. In fact, the situation is much more detailed than the requirements of peripheral designers. In fact, in many cases, much of the information that would otherwise be kept secret by the microprocessor designer even after the manufactured product is brought to market must be provided in this way. Although this information is generally not abused by the recipient, due to the fact that detailed design information is provided to third party peripheral designers, microprocessor designers may copy the design information illegally. By spreading or spreading, you are at risk of leaking secrets.
[0015]
[Problems to be solved by the invention]
The object of the present invention is to improve the protection of the details of the internal design of the circuit to be simulated.
[0016]
[Means for Solving the Problems]
The present invention provides a digital circuit simulator (for example, a simulation device) for simulating data processing operations of a digital circuit.
A main simulator that works in response to simulation instructions written in a first programming language;
A plurality of simulation blocks that simulate the data processing operation of each part of the digital circuit, each simulation block receiving external input data sent from the main simulator, internal input data sent from other simulation blocks, or both A simulation block adapted to generate external output data for output to the main simulator, internal output data for output to one or more other simulation blocks, or both;
It exchanges data with the main simulator and simulation block,
(A) supplying external input data sent from the main simulator to one or more simulation blocks;
(B) supplying external output data sent from the simulation block to the main simulator;
(C) supplying the internal output data sent from the simulation block to one or more other simulation blocks;
Including a data interface that is supposed to do.
[0017]
The present invention addresses the above problem by providing an intermediate data interface between the simulation block and the main (eg, proprietary) simulator. Data interface is to pass the main simulator "external" data signal is "internal" data signal (Re This can simulate private internal electrical signal of a digital circuit) is passed only with other simulation blocks It is not handed over to the main simulator.
[0018]
In this way, a complete simulation of a digital circuit can be completed in multiple blocks as before, but when providing simulation to a third party developer, the "external" required for peripheral development It is not necessary to disclose the operation of the digital circuit other than the data signal. In this way, the risk of abuse of information regarding the internal operation of the digital circuit is significantly reduced.
[0019]
The present invention also provides a single interface between all simulation blocks and the main simulator. As a result, only one interface needs to be adjusted (eg veneer) to operate with the main simulator. This also makes it more efficient (eg faster) than the conventional system of FIG. 1, since the interface between the simulation block and the data interface is not forced to the public interface protocol with the main simulator. Means that you can.
[0020]
The present invention can be applied to various integrated circuit simulations, and in particular to simulations of microprocessors (this terminology is used herein to encompass all programmable processing devices). In this case, the external input data preferably includes the following.
(A) data representing microprocessor processing instructions;
(B) Data representing operands processed by the microprocessor.
[0021]
Preferably, the external input data includes data representing a clock signal.
Preferably, the operation of the simulation block is controlled by simulation instructions written in a second programming language (eg C) different from the first programming language. Preferably, the second language may be compiled into a form that is not easily readable by humans (in this case using a language such as C, in order to help preserve the confidentiality of the function of the simulation block as described above. ).
[0022]
Since some of the external output data generated from the simulation block (eg, main data or address bus) may be useful to other simulation blocks, the data interface will receive one external output data output from the simulation block. Alternatively, it can be supplied to a plurality of other simulation blocks.
[0023]
The data interface can also be used to hide secret scheduling information about the time delay behavior of the simulation block originating from the main simulator. In order to achieve this, the data interface executes the operation by means for receiving and storing schedule information from the simulation block specifying the operation to be executed by the simulation block and the time at which the operation should be executed. Means for requesting a scheduling call from the main simulator at a power time, and means for starting an operation in response to the scheduling call received from the main simulator.
[0024]
The present invention also provides a digital circuit simulator for simulating the data processing operation of a digital circuit, which exchanges data with a main simulator in accordance with a simulation instruction described in a first programming language. A plurality of simulation blocks for simulating the data processing operation of each part of the digital circuit, each simulation block being external input data sent from the main simulator, internal input data sent from another simulation block or A simulation system that receives both and generates external output data for output to the main simulator, internal output data for output to one or more other simulation blocks, or both. And down the block, it is adapted to replace the main simulator and simulation block and data,
(A) supplying external input data sent from the main simulator to one or more simulation blocks;
(B) supplying external output data sent from the simulation block to the main simulator;
(C) supplying the internal output data sent from the simulation block to one or more other simulation blocks;
Including a data interface that is supposed to do.
[0025]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, the above and other objects, features, and advantages of the present invention will be clarified in embodiments of the present invention with reference to the drawings.
FIG. 3 is a schematic diagram showing the interaction of simulation blocks in an integrated circuit simulator according to one embodiment of the present invention.
The simulation blocks 10, 20, 30 are similar to those described above, but they communicate with the data interface block 100, not the main simulator (in this case 40 ').
The data interface block 100 stores a list 105 of data signals going back and forth between the simulation block and the main simulator. This list indicates the required destination of the received signal and whether the signal is an internal data signal or an external data signal (this information may actually be included in the destination information).
[0026]
The operation of the data interface block 100 is honest in that when it receives a data signal from the simulation block or main simulator 40 ', it sends the data signal according to the routing information in the stored list. (In the second embodiment, this routing may include timing information, but the use of timing information will be described separately later for the sake of simplicity.)
[0027]
Next, examples of simulation blocks are listed in detail along with the data inputs and data outputs used by each block. In the table, the external data signal is underlined, and the signal without the underline is an internal signal.
[0028]
[Table 2]
Figure 0003856496
[0029]
For example, a clock signal received as an external input signal from the main simulator 40 'is sent to all simulation blocks according to this table. In contrast, the value of the program counter is generated as an internal output signal by the program counter / simulation block and sent directly to the address register interface block via the data interface block 100, ie, the main simulator 40 '. Not sent to.
[0030]
As a result, only the external signals that would normally be supplied as inputs or outputs of the manufactured semiconductor integrated circuit are exchanged with the main simulator 40 '.
Another feature is that only one veneer 50 'is required to control the interface between the data interface block 100 and the main simulator 40'. It is no longer necessary to apply veneer to each of the simulator blocks 10, 20, 30.
[0031]
FIG. 4 shows a schematic diagram of the structure, but in contrast to FIG. 2, the main simulator 40 'communicates with the simulated microprocessor 110 generally via the veneer 50'. Internal signals associated with the internal operation of the microprocessor 110 need not come and go with the main simulator 40 '.
[0032]
In the second embodiment, timing information is included in the simulation to simulate an event that requires a finite time to complete. For example, a simulation block for simulation, such as a register block, may be able to supply output values instantaneously with respect to simulation time, whereas output values are finite ( Actually, it will take time. Therefore, in order to simulate the operation of the block, the simulation receives a request for the contents of one of the registers at a certain time and instructs the block to produce output data, at which time the request You will then be instructed not to read the output data until the appropriate delay period (with respect to simulation time).
[0033]
Previously, this type of event was scheduled for future execution by passing details to a scheduler that forms part of the main simulator. However, this would force the details of the action to be supplied to the main simulator user.
[0034]
To avoid this problem, in the second embodiment of the present invention, the data interface 100 is a list 108 of events (eg, register accesses described above) that are scheduled to be executed in the future (ie, the “heap”) This is solved by maintaining (not necessarily arranged in order).
[0035]
As the data interface receives details of each such event from the simulation block, the data interface stores details of the specific action to be taken along with the time to take that action. However, the data interface only passes execution time details to the scheduler in the main simulator.
[0036]
The main simulator receives time information from the data interface and schedules non-specific events to be started at that time. At each time, the main simulator sends a non-specific scheduling signal to the data interface. The data interface then examines the heap of wait events and starts an event (one or more) that reads the output value from the register simulation block that is active at that time.
In this way, only the details of the waiting event that must be supplied to the main simulator is the time of execution, and the other details are processed by the data interface.
[0037]
The embodiments of the present invention have been described in detail with reference to the drawings. However, the present invention is not limited to these embodiments, and those skilled in the art will understand the concept of the present invention described in the claims. It should be understood that various changes and modifications can be made without departing.
[Brief description of the drawings]
FIG. 1 is a schematic diagram showing the interaction of simulation blocks in a conventional digital circuit simulator.
FIG. 2 is a schematic diagram of a circuit corresponding to the configuration of FIG.
FIG. 3 is a schematic diagram showing the interaction of simulation blocks in a digital circuit simulator according to an embodiment of the present invention.
4 is a schematic diagram of a circuit corresponding to the configuration of FIG. 3;
[Explanation of symbols]
10, 20, 30 Simulation block 40, 40 'Main simulator 50, 50', 60, 70 Veneer 100 Data interface

Claims (8)

第1のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータと、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数のシミュレーションブロック手段であって、各シミュレーションブロック手段は主シミュレータから送られる外部入力データ、他のシミュレーションブロック手段から送られる内部入力データまたはその両方を受信し、各シミュレーションブロック手段は主シミュレータに出力するための外部出力データ、1個または複数の他のシミュレーションブロック手段に出力するための内部出力データまたはその両方を発生するようになっている複数シミュレーションブロック手段と、
主シミュレータおよびシミュレーションブロックとデータを交換するようになっていて、
(ア) 主シミュレータから送られた外部入力データを1個または複数のシミュレーションブロック手段に供給することと、
(イ) シミュレーションブロックから送られた外部出力データを主シミュレータに供給することと、
(ウ) シミュレーションブロック手段から送られた内部出力データを1個または複数の他のシミュレーションブロック手段に供給することと、を行うようになっているデータインタフェイス手段と、
を含み、前記データインタフェイス手段は、
シミュレーションブロックにより実行される動作と、該動作が実行される時間とを特定するスケジュールデータを、シミュレーションブロックから受信して記憶する手段と、
動作が実行される時間に前記主シミュレータからスケジューリングの呼出しを要求する手段と、
前記主シミュレータから受信したスケジューリング呼出しに応じて、前記動作を開始する手段と、
を含む、ディジタル回路シミュレーション装置。
A main simulator that works in response to simulation instructions written in a first programming language;
A plurality of simulation block means for simulating the data processing operation of each part of the digital circuit, each simulation block means being external input data sent from the main simulator, internal input data sent from other simulation block means, or both And each simulation block means generates a plurality of external output data for output to the main simulator, internal output data for output to one or more other simulation block means, or both. Simulation block means;
It exchanges data with the main simulator and simulation block,
(A) supplying external input data sent from the main simulator to one or more simulation block means;
(B) supplying external output data sent from the simulation block to the main simulator;
(C) data interface means adapted to supply internal output data sent from the simulation block means to one or more other simulation block means;
Only including, the data interface means,
Means for receiving from the simulation block and storing schedule data specifying an operation to be executed by the simulation block and a time at which the operation is executed;
Means for requesting a scheduling call from the main simulator at the time an action is performed;
Means for initiating the operation in response to a scheduling call received from the main simulator;
A digital circuit simulation apparatus.
請求項1記載の装置において、前記ディジタル回路は集積回路である、ディジタル回路シミュレーション装置。  2. The digital circuit simulation apparatus according to claim 1, wherein the digital circuit is an integrated circuit. 請求項2記載の装置において、前記集積回路はマイクロプロセッサである、ディジタル回路シミュレーション装置。  3. The digital circuit simulation device according to claim 2, wherein the integrated circuit is a microprocessor. 請求項3記載の装置において、前記外部入力データは、
(ア) 前記マイクロプロセッサの処理命令を表わすデータと、
(イ) 前記マイクロプロセッサにより処理されるオペランドを表わすデータと、
を含む、ディジタル回路シミュレーション装置。
4. The apparatus according to claim 3, wherein the external input data is
(A) data representing processing instructions of the microprocessor;
(A) data representing an operand processed by the microprocessor;
A digital circuit simulation apparatus.
請求項3記載の装置において、前記外部入力データはクロック信号を表わすデータを含む、ディジタル回路シミュレーション装置。  4. The digital circuit simulation apparatus according to claim 3, wherein the external input data includes data representing a clock signal. 請求項1記載の装置において、前記シミュレーションブロックの動作は前記第1のプログラミング言語と異なる第2のプログラミング言語で記述されたシミュレーション命令により制御される、ディジタル回路シミュレーション装置。  The digital circuit simulation apparatus according to claim 1, wherein the operation of the simulation block is controlled by a simulation instruction written in a second programming language different from the first programming language. 請求項1記載の装置において、前記データインタフェイスはシミュレーションブロック手段から発せられた外部出力データを1個または複数の他の前記シミュレーションブロック手段に供給するようになっている、ディジタル回路シミュレーション装置。  2. A digital circuit simulation apparatus according to claim 1, wherein said data interface supplies external output data emitted from simulation block means to one or more other simulation block means. 第1のプログラミング言語で記述されたシミュレーション命令に応じて働く主シミュレータとデータを交換するようになっていて、ディジタル回路のデータ処理動作をシミュレーションするディジタル回路シミュレーション装置であって、
ディジタル回路のそれぞれの部分のデータ処理動作をシミュレーションする複数のシミュレーションブロック手段であって、各シミュレーションブロック手段は主シミュレータから送られる外部入力データ、他のシミュレーションブロック手段から送られる内部入力データまたはその両方を受信して、主シミュレータに出力するための外部出力データ、1個または複数の他のシミュレーションブロック手段に出力するための内部出力データまたはその両方を発生するようになっている複数シミュレーションブロック手段と、
主シミュレータおよびシミュレーションブロック手段とデータを交換するようになっていて、
(ア) 主シミュレータから送られた外部入力データを1個または複数のシミュレーションブロック手段に供給することと、
(イ) シミュレーションブロック手段から送られた外部出力データを主シミュレータに供給することと、
(ウ) シミュレーションブロック手段から送られた内部出力データを1個または複数の他のシミュレーションブロック手段に供給することと、を行うようになっているデータインタフェイス手段と、
を含み、前記データインタフェイス手段は、
シミュレーションブロックにより実行される動作と、該動作が実行される時間とを特定するスケジュールデータを、シミュレーションブロックから受信して記憶する手段と、
動作が実行される時間に前記主シミュレータからスケジューリングの呼出しを要求する手段と、
前記主シミュレータから受信したスケジューリング呼出しに応じて、前記動作を開始する手段と、
を含む、ディジタル回路シミュレーション装置。
A digital circuit simulation device for exchanging data with a main simulator that operates according to a simulation command described in a first programming language, and for simulating data processing operations of a digital circuit,
A plurality of simulation block means for simulating the data processing operation of each part of the digital circuit, each simulation block means being external input data sent from the main simulator, internal input data sent from other simulation block means, or both A plurality of simulation block means adapted to generate external output data for output to the main simulator, internal output data for output to one or more other simulation block means, or both ,
It is designed to exchange data with the main simulator and simulation block means,
(A) supplying external input data sent from the main simulator to one or more simulation block means;
(A) supplying external output data sent from the simulation block means to the main simulator;
(C) data interface means adapted to supply internal output data sent from the simulation block means to one or more other simulation block means;
The data interface means includes:
Means for receiving from the simulation block and storing schedule data specifying an operation to be executed by the simulation block and a time at which the operation is executed;
Means for requesting a scheduling call from the main simulator at the time an action is performed;
Means for initiating the operation in response to a scheduling call received from the main simulator;
A digital circuit simulation apparatus.
JP12185896A 1995-06-08 1996-05-16 Digital circuit simulator Expired - Lifetime JP3856496B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB95116174 1995-06-08
GB9511617A GB2301911B (en) 1995-06-08 1995-06-08 Simulation of digital circuits

Publications (2)

Publication Number Publication Date
JPH096835A JPH096835A (en) 1997-01-10
JP3856496B2 true JP3856496B2 (en) 2006-12-13

Family

ID=10775732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12185896A Expired - Lifetime JP3856496B2 (en) 1995-06-08 1996-05-16 Digital circuit simulator

Country Status (3)

Country Link
US (1) US5960186A (en)
JP (1) JP3856496B2 (en)
GB (1) GB2301911B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425762B1 (en) * 1998-02-24 2002-07-30 Wind River Systems, Inc. System and method for cosimulation of heterogeneous systems
WO2001054001A1 (en) * 2000-01-18 2001-07-26 Cadence Design Systems, Inc. Adaptable circuit blocks for use in multi-block chip design
WO2002005144A1 (en) 2000-07-03 2002-01-17 Cadence Design Systems, Inc. Circuit component interface
GB0322050D0 (en) * 2003-09-20 2003-10-22 Spiratech Ltd Modelling and simulation method
US7935399B2 (en) 2004-09-02 2011-05-03 Grupo Petrotemex, S.A. De C.V. Low melting polyester polymers
GB0601135D0 (en) * 2006-01-20 2006-03-01 Spiratech Ltd Modelling and simulation method

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62182939A (en) * 1986-02-07 1987-08-11 Hitachi Ltd Logic simulation method for information processor
CA1300265C (en) * 1987-06-22 1992-05-05 William Curtis Newman Block diagram simulator
GB8902982D0 (en) * 1989-02-10 1989-03-30 Plessey Co Plc Machine for circuit design
JPH0464164A (en) * 1990-07-03 1992-02-28 Internatl Business Mach Corp <Ibm> Simulation method and device
GB2248321B (en) * 1990-09-25 1994-08-10 Inst Elektronnykh Upravlyajusc Processor for logic circuit simulation
JPH0546697A (en) * 1991-08-14 1993-02-26 Nec Corp Logical simulator
US5477474A (en) * 1992-10-29 1995-12-19 Altera Corporation Computer logic simulation with dynamic modeling
US5663900A (en) * 1993-09-10 1997-09-02 Vasona Systems, Inc. Electronic simulation and emulation system
US5416842A (en) * 1994-06-10 1995-05-16 Sun Microsystems, Inc. Method and apparatus for key-management scheme for use with internet protocols at site firewalls

Also Published As

Publication number Publication date
GB2301911A (en) 1996-12-18
GB9511617D0 (en) 1995-08-02
JPH096835A (en) 1997-01-10
US5960186A (en) 1999-09-28
GB2301911B (en) 2000-01-12

Similar Documents

Publication Publication Date Title
Pasricha Transaction level modeling of SoC with SystemC 2.0
US5768567A (en) Optimizing hardware and software co-simulator
US5771370A (en) Method and apparatus for optimizing hardware and software co-simulation
Swan An introduction to system level modeling in SystemC 2.0
JP2009026113A (en) Simulation apparatus and program
JPS5975347A (en) Simulation device of logical circuit
JP3856496B2 (en) Digital circuit simulator
Schaumont et al. Hardware reuse at the behavioral level
JPH11505645A (en) Apparatus and method for simulating a digital system based on a processor
JPH10312315A (en) Software and hardware cooperative simulation system
CN1312583C (en) Simulation apparatus, simulation program, and recording medium
Mooney III Hardware/Software co-design of run-time systems
US5737583A (en) Digital circuit simulation
JP2004021907A (en) Simulation system for performance evaluation
Both et al. Hardware-software-codesign of application specific microcontrollers with the ASM environment.
Ecker et al. Using a dataflow abstracted virtual prototype for HdS-design
Theelen et al. A scalable single-chip multi-processor architecture with on-chip RTOS kernel
Overman et al. Developing a SARA building block-the 8080
JP2009223762A (en) Cooperation verification device
Cohen et al. Emulation of computer networks by microprogrammable microcomputers
JPH07121405A (en) Simulation system
Niazi et al. An emulation solution for the segbus platform
Abdi et al. Hardware-dependent software synthesis for many-core embedded systems
Yu et al. Combining Behavioural Real-time Software Modelling with the OSCI TLM-2.0 Communication Standard
KR970049510A (en) Hardware and Software Complex Emulation Devices

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060324

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060721

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060804

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: 20060829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060912

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100922

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110922

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120922

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130922

Year of fee payment: 7

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

EXPY Cancellation because of completion of term