JPH04225475A - ロジック・シミュレーション・マシン及び処理方法 - Google Patents

ロジック・シミュレーション・マシン及び処理方法

Info

Publication number
JPH04225475A
JPH04225475A JP3048821A JP4882191A JPH04225475A JP H04225475 A JPH04225475 A JP H04225475A JP 3048821 A JP3048821 A JP 3048821A JP 4882191 A JP4882191 A JP 4882191A JP H04225475 A JPH04225475 A JP H04225475A
Authority
JP
Japan
Prior art keywords
simulation
processors
processor
logic
machine
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.)
Granted
Application number
JP3048821A
Other languages
English (en)
Other versions
JPH0690714B2 (ja
Inventor
Mark David Sweet
マーク・デイヴィッド・スウィート
Charles Gordon Wright
チャールズ・ゴードン・ライト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH04225475A publication Critical patent/JPH04225475A/ja
Publication of JPH0690714B2 publication Critical patent/JPH0690714B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、デジタル・ロジック
のシミュレーションを行うパラレル・コンピュータであ
るロジック・シミュレーション・マシン、ロジック・シ
ミュレーションの並列処理方法、及びロジック・シミュ
レーション・マシン用ロジック・モデルのコンパイル方
法に関する。
【0002】
【従来の技術】超大規模集積回路などのロジック技術に
より、価格性能比と信頼性が大幅に向上している。しか
しこの技術には、障害診断が先行技術よりも難しく、ロ
ジック設計エラーの訂正に必要なエンジニアリングの練
り直しサイクルがかなり長くなるという欠点がある。こ
のような欠点により、設計上のエラーや省略にかかる経
済的なペナルティはかなりのものになり、モデルを実用
化する前に、設計をくまなく検証するという目標が重要
視される。
【0003】設計検証方法の1つに、汎用コンピュータ
によるロジック・シミュレーションがある。また、ロジ
ック・シミュレーションに最適化された特定用途向けコ
ンピュータの採用も設計検証に用いられる。一般に特定
用途向けコンピュータにはマルチ・プロセサ・アーキテ
クチャが用いられる。このアーキテクチャでは、シミュ
レーション・プロセサと呼ばれる複数のプロセサを相互
に接続することで、シミュレーション性能を高めること
ができる。特定用途向けコンピュータは、ロード機能を
提供しシミュレーション結果を解析するために用いられ
るホスト・コンピュータと併用することもできる。こう
した特定用途向けコンピュータはロジック・シミュレー
ション・マシンと呼ばれる。この発明は、ロジック・シ
ミュレーション・マシンに関係する。
【0004】従来の技術によるロジック・シミュレーシ
ョン・マシンは、Cocke らによる米国特許第43
06286号明細書(1981年12月15日付)にみ
られる。このロジック・シミュレーション・マシンは、
複数のプロセサ間スイッチによって相互に接続された複
数の基本パラレル・プロセサから成る。プロセサ間スイ
ッチは、ロジック・シミュレーション・マシンのコンピ
ューティング・エンジンである基本プロセサ(各々、ロ
ジック・モデルの一部の各ゲートを並列にシミュレート
する)相互間の通信のみならず、基本プロセサと制御プ
ロセサとの間の通信も可能にする。制御プロセサは、こ
れが接続されたホスト・コンピュータを通して、ロジッ
ク・シミュレーション・マシンの総合制御/入出力ファ
シリティを提供する。
【0005】
【発明が解決しようとする課題】Cocke らによる
特許のロジック・シミュレーション・マシンは並列処理
が可能であるが、基本プロセサは、相互に且つホスト・
コンピュータと通信するためにプロセサ間スイッチを要
する。 ロジック・シミュレーション・マシンとホストをつなぐ
プロセサ間スイッチがなければ、基本プロセサをホスト
・コンピュータのI/Oバスに直結することはできない
。各基本プロセサには、そのプロセサによってシミュレ
ートされた1組のゲートだけの現在状態情報が格納され
る。ある基本プロセサがあるゲートをシミュレートし、
そのゲートの入力が、別のプロセサによってシミュレー
トされたゲートの出力への端子を含む場合、当該ゲート
の状態情報は、プロセサ間スイッチを通して転送される
。従来技術のマシンでは、シミュレーション対象のロジ
ック・モデルをコンパイルするのに時間がかかる。 これは、スイッチ・ベースのアーキテクチャでは、論理
上の区切りの認識や転送のスケジューリングが難しいか
らである。また、基本プロセサの構成が変わると、シミ
ュレーション対象のロジック・モデルを、変更された構
成に合わせるためにも再コンパイルしなければならない
。さらに、従来の技術では、基本プロセサに並列に接続
され、シミュレーションを高速化するためにゲート評価
以外のタスクを実行する補助プロセサには触れられてい
ない。
【0006】この発明の目的は、並列処理におけるシミ
ュレーションの高速化を実現するロジック・シミュレー
ション・マシン及びロジック・シミュレーションの方法
を提供することにある。
【0007】この発明の目的には、複数のパラレル・シ
ミュレーション・プロセサが、プロセサ間スイッチを使
用せず、シミュレーション・バス手段を通して相互に直
接通信するロジック・シミュレーション・マシン及びロ
ジック・シミュレーションの方法を提供することも含ま
れる。
【0008】この発明の目的には、シミュレーション対
象のロジック・モデルをコンパイルする際に従来のマシ
ンが関与する、論理上の区切りの認識やシミュレーショ
ン・プロセサ間の転送のスケジューリングという困難な
ジョブがなくなるように、シミュレートされたモデル全
体の現在状態情報の完全なコピーが各シミュレーション
・プロセサによって維持される、ロジック・シミュレー
ション・マシン及びロジック・シミュレーションの方法
を提供することも含まれる。
【0009】この発明の目的には、ロジック・シミュレ
ーション・マシンをホスト・コンピュータまたはワーク
ステーションに簡単にインストールできるように、ホス
ト・コンピュータまたはワークステーションのI/Oバ
ス手段を通してシミュレーション・プロセサをホスト・
コンピュータまたはワークステーションに、プロセサ間
スイッチを用いずに直に接続できるロジック・シミュレ
ーション・マシン及びロジック・シミュレーションの方
法を提供することも含まれる。
【0010】この発明の目的には、ユーザが複数のシミ
ュレーション・プロセサの構成を簡単に変更でき、いつ
でも所望の性能が得られるように、複数のシミュレーシ
ョン・プロセサの構成がホスト・コンピュータから見て
トランスペアレントに保たれるロジック・シミュレーシ
ョン・マシン及びロジック・シミュレーションの方法を
提供することも含まれる。
【0011】この発明の目的には、シミュレーション・
プロセサの構成の変更にかかわらず、同じロジック・モ
デルを使用できる、ロジック・シミュレーション・マシ
ンによってシミュレートされるモデルのコンパイル方法
を提供することも含まれる。
【0012】この発明の目的には、ホスト機能を実行で
きる補助プロセサをシミュレーション・プロセサに並列
に接続でき、シミュレーションを高速化できる、ロジッ
ク・シミュレーション・マシン及びロジック・シミュレ
ーションの方法を提供することも含まれる。
【0013】
【課題を解決するための手段】この発明の目的から提供
されるロジック・シミュレーション・マシンは、ロジッ
ク・シミュレーションを並列に実行する複数のシミュレ
ーション・プロセサと、シミュレーション・プロセサを
相互に接続するシミュレーション・バス手段を含み、シ
ミュレーション・バス手段に含まれる複数のデータ・ラ
インが、各シミュレーション・プロセサに割り当てられ
る。これにより、各シミュレーション・プロセサは、割
り当てられたデータ・ラインに情報を並列に送出できる
【0014】また、この発明に従って、ロジック・シミ
ュレーションのための並列処理の方法が提供される。こ
れは、各々第1メモリ・ユニット、第2メモリ・ユニッ
ト、及び論理関数テーブルを含む複数のシミュレーショ
ン・プロセサを、複数のデータ・ラインを含むシミュレ
ーション・バス手段に接続するステップと、データ・ラ
インを各シミュレーション・プロセサに割り当てるステ
ップと、各シミュレーション・プロセサの動作の指定に
必要な命令を、各シミュレーション・プロセサの第1メ
モリ・ユニットに格納するステップと、シミュレーショ
ン対象のモデル全体の初期状態を各シミュレーション・
プロセサの第2メモリ・ユニットに格納するステップと
、第1メモリ・ユニットからの命令を基に第2メモリ・
ユニットをアドレスして、各シミュレーション・プロセ
サに格納された状態を出力するステップと、出力された
命令と出力された状態の結果を各シミュレーション・プ
ロセサの論理関数テーブルで計算するステップと、論理
関数テーブルからの結果を、各シミュレーション・プロ
セサに割り当てられたデータ・ラインに送出してすべて
のシミュレーション・プロセサに転送するステップと、
シミュレートされたモデル全体の同じ現在状態がシミュ
レーション・プロセサのすべての第2メモリ・ユニット
に格納されるように、各シミュレーション・プロセサの
データ・ラインの結果で第2メモリ・ユニットを更新す
るステップとを含む。
【0015】さらに、この発明に従って、複数のシミュ
レーション・プロセサを含むロジック・シミュレーショ
ン・マシンによってシミュレートされるモデルをコンパ
イルする方法が提供される。シミュレーション・プロセ
サの数は、1、2、4、8、16、及びMより成るグル
ープから選択され(Mはグループの最大数でM=2n 
、nは整数)、ユーザは、所望の性能に応じて、いつで
もグループの他の数に変更できる。この方法は、ブロッ
ク記述命令が第1シミュレーション・プロセサから始ま
り、M番目のプロセサに進み、第1プロセサに戻って、
このシーケンスが命令リストで繰り返されるように、シ
ミュレーションの前にシミュレーション・プロセサに送
られる命令リスト内の各シミュレーション・プロセサに
、シミュレーション対象のモデルのブロック記述命令を
割り当てるステップと、M個1組の同一制御命令を、命
令リストのk  ×  M(kは整数)から始まるロケ
ーションに挿入するステップとを含む。
【0016】
【実施例】図1、図2とあわせて、この発明の実施例に
従ったロジック・シミュレーション・マシン1について
説明する。マシン1は、シミュレーション・バス手段3
を通して相互に並列に接続された複数のシミュレーショ
ン・プロセサ2を含む。図1、図2に示したシミュレー
ション・プロセサ2は4個であるが、シミュレーション
・バス手段3に接続されるシミュレーション・プロセサ
2の数は16であり、この例では、説明の便宜上、最大
構成は16プロセサである。ただしこの実施例では、1
、2、4、8、16より成るグループから任意選択した
数のシミュレーション・プロセサを使用できる。
【0017】シミュレーション・バス手段3は、データ
・ライン3A、制御ライン3B、及び構成ライン3Cの
3部から成る。各シミュレーション・プロセサ2は、ゲ
ートの評価時に、データ・ライン3Aを通して、シミュ
レーション結果を転送し、すべてのシミュレーション・
プロセサ2からシミュレーション結果を受け取って、各
々の現在状態のコピーを更新する。ホスト・コンピュー
タ5は、データ・ライン3Aを通して、ゲートが評価さ
れないときに、シミュレーション・プロセサ2へパケッ
ト・データを転送する。データ・ライン3A上の現在の
内容は、制御ライン3Bを通して指示され、バス3のア
ービトレーション(調停)が行われる。構成ライン3C
を通して、一意のコードが各シミュレーション・プロセ
サ2に転送され、シミュレーション・プロセサの構成が
通知される。シミュレーション・バス手段3にはさらに
、スロット手段0、1、2、...、15、及びnが含
まれる。シミュレーション・プロセサ2は各々、スロッ
ト手段0、1、2、...、15に装着され、シミュレ
ーション・バス手段3に接続される。シミュレーション
・バス手段3の各スロット手段0、1、2...、15
は、構成ライン3Cに関連するハード・ワイヤード手段
3Dを備える。構成ライン3Cの数は、ロジック・シミ
ュレーション・マシン1がシミュレーション・プロセサ
2をどれだけ収容できるかによる。この実施例では、ラ
イン3Cは4本あり、16のシミュレーション・プロセ
サの各々に異なる4ビット・バイナリ・データを転送す
る。スロット手段0のハード・ワイヤード手段3Dは、
制御ライン3Cによって、スロット手段0に装着された
シミュレーション・プロセサ2に、4ビット・バイナリ
・ゼロのデータ、0000が入力されるように、すべて
の構成ライン3CをOFFにセットする。スロット手段
1のハード・ワイヤード手段3Dは、そのスロット手段
に装着されたシミュレーション・プロセサ2に、構成ラ
イン3Cによってバイナリ・データ0001が入力され
るように、最下位ビット・ラインをONに、他の3つの
ラインをOFFにセットする。スロット手段2のハード
・ワイヤード手段3Dは、そのスロット手段に装着され
たシミュレーション・プロセサ2に、構成ライン3Cに
よってバイナリ・データ0010が入力されるように、
第2最下位ビット・ラインをONに、他の3つのライン
をOFFにセットする。以下同様である。スロット手段
15のハード・ワイヤード手段3Dは、そのスロット手
段に装着されたシミュレーション・プロセサ2に、構成
ライン3Cによってバイナリ・データ1111が入力さ
れるように、すべてのラインをONにセットする。
【0018】全イベント・トレース(AET)ギャザラ
である補助プロセサ4は、バス手段3のスロット手段n
に装着すれば、シミュレーション・バス手段3に、シミ
ュレーション・プロセサ2と並列に接続される。
【0019】データ・ライン3Aの数は、ロジック・シ
ミュレーション・マシン1が収容できるシミュレーショ
ン・プロセサ2の数と、各シミュレーション・プロセサ
2が演算結果を示すのに必要なビット数に依存する。こ
の例の場合、マシン1は、最大16のシミュレーション
・プロセサ2を収容でき、各シミュレーション・プロセ
サ2は2ビットの結果を算出する。したがって、データ
・ライン3Aの数は16×2=32である。シミュレー
ション・プロセサ2の各々には、そのプロセサによって
算出された結果をすべてのシミュレーション・プロセサ
2に転送するために、2つのデータ・ライン3Aが割り
当てられるが、これは、そのプロセサ2がどのスロット
手段を占有するかによる(後述)。データ・ライン3A
はまた、シミュレーションの前には、ホスト・コンピュ
ータ5によって、データと命令を各シミュレーション・
プロセサ2とAETギャザラ4にロードするために使用
でき、シミュレーションの間は、シミュレーション・プ
ロセサ2によって算出された結果を、シミュレーション
・プロセサ2の1つに提供されたホスト・インタフェー
スを通して受信するためにも使用できる(後述)。
【0020】ホスト・コンピュータ5は従来のエンジニ
アリング・ワークステーションでよい。ホスト・コンピ
ュータ5には、中央処理ユニット51、メイン・メモリ
52、ディスク・ファイル(直接アクセス・ストレージ
・デバイス)53、キーボード54、ディスプレイ55
、及びホストI/Oバス手段56が含まれる。各シミュ
レーション・プロセサ2及び補助プロセサ4は、I/O
バス手段56を通して、I/Oバス手段56のスロット
手段(図示なし)に装着されて、ホスト・コンピュータ
5に接続される。シミュレーション・プロセサ2の数が
、ホスト・コンピュータ5内に備えられるI/Oスロッ
ト手段の数を超える場合は、追加のシミュレーション・
プロセサをホスト・コンピュータ5につなぐ延長ハウジ
ングを使用すればよい。
【0021】シミュレーション・プロセサ2と補助プロ
セサ4は四角いカード上に装着される。ホストI/Oバ
ス手段56のスロット(図示なし)のコネクタ(図示な
し)は、このカードの一端に備え付けられ、そこにシミ
ュレーション・プロセサ2または補助プロセサ4が装着
される。シミュレーション・バス手段3のスロット手段
0、1、...、15、またはnのコネクタ(図示なし
)は、カードのもう一端に備え付けられる。シミュレー
ション・プロセサ2と補助プロセサ4は、カードの一端
のコネクタ(図示なし)をホストI/Oバス56のスロ
ット(図示なし)に直接差し込むことによってホスト5
に装着される。シミュレーション・バス手段3は、スロ
ット手段0ないしnを、カードの反対側のコネクタ(図
示なし)に差し込むことによってシミュレーション・プ
ロセサ2と補助プロセサ4に接続される。
【0022】次に図3により、シミュレーション・バス
手段3のスロット手段0に装着されるシミュレーション
・プロセサ2の構成について説明する。他のシミュレー
ション・プロセサ2も同じ構成であるが、ホスト・イン
タフェース21が異なる。各シミュレーション・プロセ
サ2には7つの基本要素がある。ブロック記述アレイ(
BDA)22などの第1メモリ・ユニット、現在状態ア
レイ23などの第2メモリ・ユニット、論理関数テーブ
ル24、出力手段25、バス駆動手段80、プログラム
・カウンタ26、及び制御ロジック手段27である。
【0023】ブロック記述アレイ22は、シミュレーシ
ョン・プロセサ2の命令メモリであり、そのシミュレー
ションの動作を指定するのに必要な情報をすべて格納す
る。図4にブロック記述アレイ22の内容を示す。アレ
イ22の1アドレスに格納された命令は、OPコード(
命令コード)フィールド(16ビット)と、A1、A2
、A3、A4の各フィールド(この例では各々24ビッ
ト)を含む。命令の種類は、図5に示すようにOPコー
ド・フィールドによって決まる2種類がある。OPコー
ドの第1ビット位置がバイナリ1である、ゲートを評価
するためのブロック記述命令と、OPコード・フィール
ドの第1ビット位置がバイナリ0である、当該シミュレ
ーション・プロセサの動作を制御するための制御命令で
ある。
【0024】ブロック記述命令については、1つの命令
ワードが、シミュレートされるモデル内の各ロジック・
ブロックまたはゲートに対応する。命令ワードのアドレ
スは、ブロックまたはゲートの識別子をあらわす。命令
には、AND、ORなどゲートの論理関数を指定するO
Pコード・フィールドと、ゲートの入力端子または入力
オペランドを指定する4つのフィールドA1、A2、A
3、A4が含まれる。したがってブロック記述命令は、
1出力、4入力の1ゲートに対応する。ゲートの論理関
数は、論理関数テーブル24へのインデクスである、O
Pコード内の8ビット関数ポインタ、FFFFFFFF
によって決まる。入力と出力の反転は、OPコードの反
転ビットI1、I2、I3、I4、I0によって、論理
関数テーブル24とは独立して行える。フィールドA1
、A2、A3、A4は、4つの入力オペランドが格納さ
れる現在状態アレイ23のアドレスをあらわす。ブロッ
ク記述アレイ22内のブロック記述命令のアドレスは、
算出結果が格納される現在状態アレイ23内のその出力
アドレスを意味する。ブロック記述アレイ22のサイズ
は、シミュレーション・プロセサ2に求められる容量に
よる。この例の場合、アレイ22は、最大512Kのブ
ロック記述命令を格納できる。
【0025】図6に、図4のアドレスZに示したブロッ
ク記述命令を説明するために、シミュレーション・プロ
セサ2によってシミュレートされるゲートの例を示す。 ANDゲートは符号Zで示した。これは、ゲートのブロ
ック記述命令が格納されるブロック記述アレイ22内の
アドレスに対応する。ゲートのAND関数ポインタと反
転関数は、命令のOPコード・フィールドに格納される
。このゲートの入力端子V、W、X、Yは、命令のフィ
ールドA1、A2、A3、A4に格納される。現在状態
アレイ23は、ゲートZの入力オペランドを、フィール
ドA1、A2、A3、A4によって指示されたアドレス
V、W、X、Yに格納する。
【0026】制御命令については、OPコード・フィー
ルドが、シミュレーション・プロセサによって実行され
る制御関数を指定する。ホールトは、図5に示すとおり
、ホストのインタラクションを待つためにシミュレーシ
ョンを停止させるという意味である。ブランチは、フィ
ールドA2、A3によって指示されたアドレスに格納さ
れた命令へ行くことを意味する。ブロードキャストは、
シミュレーション・バス3に接続されたホスト5や補助
プロセサ4によって使用されるように、シミュレーショ
ン・バス手段3へデータのパケットを送るという意味で
ある。
【0027】図7により現在状態アレイ23について説
明する。現在状態アレイ23は、シミュレートされたモ
デル全体の現在状態の完全なコピーを格納するメモリで
ある。各ブロックまたはゲートの状態は2ビットで指定
される。可能な状態は論理0(00)、論理1(01)
、未定義(10)、及びハイ・インピーダンス(11)
である。現在状態アレイ23は、シミュレートされたマ
シンのすべてのブロックまたはゲートのこのような現在
状態を格納する。この例では、シミュレートされたマシ
ンに可能なブロックまたはゲートの大きさは512Kで
あるので、シミュレートされたマシンの状態は1Mビッ
トで格納される。現在状態アレイ23には、少なくとも
1Mビットの容量がなくてはならない。ただし、この例
の場合、現在状態アレイ23は、最大性能を達成するた
めにこれより大きくなっている。所与のブロックまたは
ゲートについて計算を行う際またはブロードキャスト・
コマンドによるブロードキャスト動作の際、現在状態ア
レイ23の内容は、4つのフィールドA1、A2、A3
、A4によって同時にアドレスされる。4つの異なるブ
ロックまたはゲートの現在状態は、同時に読み取るのが
望ましい。したがって、アレイ23は4回コピーされる
。アレイ23の読み取りでは、4つの異なるアドレスを
同時に読み取れる。アレイ23の書き込みでは、常に、
4つの全アレイの同じアドレスが書き込まれる。すなわ
ち、現在状態アレイ23が読み取られるときは、マルチ
プレクサ(MUX)62が、アドレス選択を通して、制
御ロジック手段27によって制御され、アドレスA1、
A2、A3、A4が各アレイに出力される。次に、各ア
レイが、2ビット・オペランドをオペランド反転ロジッ
ク手段(INV)63に出力する。出力されたオペラン
ドの各々は、論理関数テーブル24における演算の前に
、手段63のOPコードの反転ビットによって反転でき
る。現在状態アレイ23が書き込まれるときは、マルチ
プレクサ62が、アドレス選択を通して、制御ロジック
手段27によって制御され、1アドレスA0が出力され
る。次に同じデータが4つのアレイの同じアドレスA0
に書き込まれる。もちろんこれは、1つのアレイとタイ
ム・スライスによっても行えるが、約4倍の性能向上が
犠牲になる。さらに、図7に示した例では、別に4つの
アレイが追加される。ユニット・ディレイ・シミュレー
ションの場合、シミュレートされたマシンの状態は、“
マスタ/スレーブ”構成でセーブする必要がある。すな
わち、マシンの次の状態は、これがマシンの現在状態に
なる前に、もれなく計算する必要がある。これを実現す
る最も簡単な方法は、2つのメモリ(A、B)をピンポ
ン構成で使用することである。Aに現在状態が格納され
ているときは、次の状態のセーブにBが用いられる。B
に現在状態が格納されているときは、次の状態のセーブ
にAが用いられる。
【0028】図8により論理関数テーブル24について
説明する。論理関数テーブル24は、プログラマブル・
ロジック・ブロックであり、このブロックの主要素は、
65K  ×  2ビットのスタティックRAMメモリ
65である(OPコード・フィールドの8ビット関数ポ
インタと、オペランド反転ロジック63からの4つの2
ビット入力オペランドによって指示される)。論理関数
テーブル24は2ビット出力を生成する。この出力は、
評価されたゲートの次の状態である。RAM65は、マ
ルチプレクサ67を通してホスト・コンピュータ5から
もアクセス可能である。マルチプレクサ67は、シミュ
レーションが始まる前に1組の論理関数をRAM65に
ロードする必要がある。論理関数テーブル24は、基本
的には、与えられたゲート関数と4つの入力オペランド
に対して2ビット出力を生成するルックアップ・テーブ
ルである。論理関数テーブル24の出力は、出力反転ロ
ジック手段(インバータ)66を介して出力手段25へ
供給される。テーブル24からの出力は、出力手段25
を通してデータ・ライン3Aの割当ラインに送出する前
に、OPコードの反転ビットによって、出力反転ロジッ
ク手段66において反転できる。オペランド反転ロジッ
ク63からの出力はバス駆動手段80へも供給される。 ブロードキャスト・コマンドが、制御ロジック27によ
って実行されると、バス駆動手段80は、オペランド反
転ロジック63を通して、現在状態アレイ23からのコ
マンドのフィールドA1ないしA4によって指示された
4つの現在状態を受け取り、制御ロジック27の制御下
で、データ・ライン0ないし7、8ないし15、16な
いし23、または24ないし31にデータを送出する。 現在状態アレイ27のデータは、シミュレーション・プ
ロセサ2からブロードキャスト・コマンドによってホス
ト5へ送られ、ホスト内で用いられる。ブロードキャス
ト・コマンドは、米国特許出願07/502088(1
990年3月30日出願)の主題になっている。
【0029】図9により出力手段25について説明する
。出力手段25は、16のANDゲートE0、E1、.
..、E15、16のゲートL0、L1、...、L1
5(出力はデータ・ライン3Aの偶数ライン0、2、.
..、30につながる)、及び16のゲートH0、H1
、...、H15(出力はデータ・ライン3Aの奇数ラ
イン1、3、...、31につながる)から成る。ハー
ド・ワイヤード手段3Dと制御ロジック手段27につな
がる構成ライン3Cは、ANDゲートE0、E1、..
.、E15の入力に接続される。ライン3Cからゲート
E0への入力はすべて、ライン3Cの4ビット・バイナ
リ・データ0000だけによってゲートE0が活動化さ
れるように反転される。ライン3Cの最下位ビット・ラ
インからの入力は、ゲートE1に直結し、ライン3Cか
らゲートE1への他の3つの入力は、4ビット・バイナ
リ・データ0001だけによってゲートE1が活動化さ
れるように反転される。以下同様である。ライン3Cか
らの入力はすべて、ライン3Cの4ビット・バイナリ・
データ1111だけによってゲートE15が活動化され
るように、ゲートE15に直結される。制御ロジック2
7からの動作モード・シグナルは、ANDゲートE0、
E1、...、E15の各々の入力にも接続され、シミ
ュレーション・プロセサ2の動作モード時にANDゲー
トが活動化される。ANDゲートE0、E1、...、
E15の出力は、ゲートL0とH0、L1とH1、..
.、L15とH15の各端子を付勢するように接続され
る。出力反転ロジック手段66からの出力の下位ビット
・ラインは、ゲートL0、L1、...、L15の入力
に接続される。出力反転ロジック手段66からの出力の
上位ビット・ラインは、ゲートH0、H1、...、H
15の入力に接続される。よって、スロット手段0、1
、2、...、15に装着されたシミュレーション・プ
ロセサ2は、その演算結果を、出力手段25を通してデ
ータ・ライン3Aのライン0と1、2と3、4と5、.
..、及び30と31に送出する。したがって、各シミ
ュレーション・プロセサ2には、その結果を送出するた
めに、シミュレーション・バス3のどのスロット手段を
プロセサ2が占有しているかに応じて、データ・ライン
3Aのうち2つが割り当てられる。
【0030】図3に戻るが、制御ロジック手段27は、
シミュレーション・バス手段3に接続されたすべてのシ
ミュレーション・プロセサ2が各々の動作を同期して実
行するように、クロック手段68を制御する。制御ロジ
ック手段27は、プログラム・カウンタ26が、ブロッ
ク記述アレイ22から命令を出力するアドレス、及び算
出結果をすべてのシミュレーション・プロセサ2から現
在状態アレイ23に書き込むアドレスを生成するように
、プログラム・カウンタ26を制御する。制御ロジック
手段27は、ブランチ、ブロードキャスト、ホールトな
どの制御命令を制御する。制御ロジック手段27はまた
、シミュレーションの前に、ホスト・コンピュータ5か
ら、ブロック記述アレイ22に命令を、現在状態アレイ
23に初期状態をロードするために、シミュレーション
・プロセサ2を制御する。
【0031】また、スロット0を占有するシミュレーシ
ョン・プロセサ2は、ホスト5とシミュレーション・プ
ロセサ2との間でデータと命令を転送するためのホスト
・インタフェース21を含む。ホスト・インタフェース
21は、シミュレーション・バス手段3とホストI/O
バス手段56との間でデータを一時格納するFIFO(
ファーストイン・ファーストアウト)バッファである。 パケット・データがホスト・インタフェース21を通し
てホストから入ると、各シミュレーション・プロセサ2
は、そのデータをシミュレーション・バス手段3から取
り出す。パケット・データがホストへ送られると、ホス
ト・インタフェース21の制御ロジックは、制御ライン
3Bの内容によって、データ・ライン3Aのデータが、
ホストを対象としているかどうかを判定し、データをホ
スト5へ転送する。ホスト・インタフェース手段21で
は、ユーザが、ブロック記述アレイ22と現在状態アレ
イ23を、シミュレーションの初めに初期化し、シミュ
レーションの終わりに結果をテストできる。またシミュ
レーションの間に、現在状態アレイ23の内容を読み取
って変更を加え、シミュレーション能力を高めることも
できる。ホスト・インタフェースは、米国特許出願07
/502147(1990年3月30日出願)の主題に
なっている。
【0032】ここで図10、図11により、この実施例
のロジック・シミュレーション・マシン1によってシミ
ュレートされるモデルのコンパイル方法について説明す
る。この方法は、シミュレート対象のモデルの命令を、
その前にホスト・コンピュータ5からシミュレーション
・プロセサ2にロードされる命令リストにおいて、”ラ
ウンド・ロビン”方式で各シミュレーション・プロセサ
に割り当てるステップから成る。命令リストでは、ブロ
ック命令が第1シミュレーション・プロセサからスター
トして16番目のプロセサに進み、第1プロセサに戻っ
てこのシーケンスが繰り返される。この方法ではまた、
プロセサに対する同一の16の制御命令の組が、ブロッ
ク記述命令と同じシーケンスで、命令リストのk  ×
16(kは整数)で始まるロケーションに挿入される。 16はグループ(1、2、4、8、16)の最大数であ
り、ユーザはこのグループから、所要性能に応じて、ロ
ジック・シミュレーション・マシン1に装着するシミュ
レーション・プロセサ2の個数を選択できる。図10、
図11では、各シミュレーション・プロセサに対するブ
ロック記述命令が、第1プロセサを先頭に、16番目の
プロセサまで進み、それから第1プロセサに戻ってこの
シーケンスを繰り返すように配置され、同じ16の制御
命令の組は、0FF0(ブロードキャスト)及びFFF
0(ホールト)を先頭にして各ロケーションに置かれる
。1サイクルにおける16の命令はすべて、最大構成の
シミュレーション・プロセサ2によって同時に実行され
るものである。したがって、同じサイクルのブロック記
述命令はすべて、同じランクでなければならない。新し
いロジック・ランクから始まるブロック記述命令は、p
×  16(pは整数)からスタートしなければならず
、パイプライン動作が採用される場合は、命令がフェッ
チされるときと、その出力が可能になるときの間の、パ
イプライン動作による遅延時間を吸収するために、新し
いランクの最初のブロックの前にデッド・サイクルが挿
入される。もし演算結果の書き戻しを遅らせる場合、す
なわち演算結果がj番目のサイクルごとに現在状態アレ
イに書き戻される場合、新しいロジック・ランクは、j
  ×  q  ×  16(j及びqは整数)のロケ
ーションから始めなくてはならない。
【0033】図1、図2、及び図3に戻り、ロジック・
マシン1の動作について説明する。ホスト・コンピュー
タ5は、電源投入時にシミュレーション・プロセサ2を
占有して、シミュレーションの前に命令とデータをシミ
ュレーション・プロセサ2にロードし、シミュレーショ
ンの間とそれ以降またはそのいずれかの時間に結果を評
価し、ユーザとのインタフェースをとる。ホスト・コン
ピュータ5は、I/Oバス手段56を通して各シミュレ
ーション・プロセサ2を直接占有する。ホストは、占有
後に、I/Oスロットに装着されたシミュレーション・
プロセサの数をカウントし、その数をシミュレーション
・プロセサ2に通知する。ただしホストは、占有後は、
シミュレーション・プロセサ2の構成に関わる必要はな
い(後述)。占有後、ホスト・コンピュータ5は、I/
Oスロットを介した電力供給を除き、シミュレーション
・バス手段3のスロット0に装着されたシミュレーショ
ン・プロセサ2に備えられたホスト・インタフェースだ
けを通して、シミュレーション・プロセサ2と通信する
【0034】ホスト・コンピュータ5は、マシン1の各
シミュレーション・プロセサ2のブロック記述アレイ2
2に命令をロードするとき、I/Oバス56とホスト・
インタフェース21を通して、図10、図11の命令リ
ストの命令を上から下へシミュレーション・バス手段3
に送る。各シミュレーション・プロセサ2は、図10、
図11のリストの下位4ビット・バイナリ・アドレスが
同じ命令を、そのプロセサが占有するスロット手段に対
応する構成ライン3C上のバイナリ・データとして順に
受け取る。すなわちスロット手段0、1、2、...、
15に装着されたシミュレーション・プロセサ2は、下
位4ビット・バイナリ・アドレスが0000、0001
、0010、...、1111の命令を受け取り、ブロ
ック記述アレイ22に、第1アドレスから連続して格納
する。したがって、図12に示すように、スロット手段
0、1、...、15に装着されたシミュレーション・
プロセサ2は、ゲート0、16、32、...、ゲート
1、17、33、...、及びゲート15、31、47
、...に対するブロック記述命令を、各々のブロック
記述アレイ22に連続的に格納し、同じ制御命令を、ブ
ロック記述アレイ22の同じアドレスに格納する。
【0035】ここでまた図1、図2、及び図3に戻るが
、ホスト・コンピュータ5は、マシン1によってシミュ
レートされたモデル全体の同じ初期状態を、各シミュレ
ーション・プロセサ2の現在状態アレイ23にロードす
る。このマシン1の場合、各シミュレーション・プロセ
サ2の現在状態アレイ23は、シミュレーションの間に
、シミュレートされたモデル全体の現在状態の完全なコ
ピーを維持する(後述)。ホスト・コンピュータはまた
、同じ関数データを、論理関数テーブル24にロードす
る。
【0036】シミュレーションには動作と停止の2つの
モードがある。動作モードでは、各シミュレーション・
プロセサ2がそのブロック記述アレイ22を連続的にた
どり、ブロック記述アレイ22に組み込まれるか、また
はホスト・コンピュータ5から送られ得るコマンドを受
け取るまで、各ゲートの次の状態を評価する。停止モー
ドでは、シミュレーションは行われず、現在状態アレイ
23とブロック記述アレイ22を含むロジック・シミュ
レーション・マシン1全体の状態は、ホスト・コンピュ
ータ5による検査と訂正に使用できる。
【0037】動作モードのとき、このロジック・シミュ
レーション・マシン1では、16のシミュレーション・
プロセサ2が1つのシミュレーション・モデルを処理し
、シミュレーションを高速化できる。並列構成の場合、
各シミュレーション・プロセサ2は1サイクルに1ゲー
トを評価する。サイクルの終わりに、各シミュレーショ
ン・プロセサ2が、その結果を、データ・ライン3Aの
割当ラインに並列に送出し、すべてのシミュレーション
・プロセサ2が、データ・ライン3Aからの結果で各々
の現在状態アレイ23を更新する。
【0038】動作モードのサイクルごとに、シミュレー
ション・バス手段3に装着された各シミュレーション・
プロセサ2において、ブロック記述アレイ22からホー
ルト・コマンドが検出されるか、またはホスト・コンピ
ュータ5がシミュレーションを停止するまで、以下のス
テップが同期して実行される。
【0039】制御ロジック手段27は、プログラム・カ
ウンタ26を開始アドレスから順次にインクリメントし
、ブロック記述アレイ22から命令を順次に出力する。 ブロック記述アレイ22が、プログラム・カウンタ26
によってアドレスされると、アレイ22は、対応するア
ドレスに格納された命令を出力する。命令のOPコード
・フィールドはラッチ61によってラッチされる。 このOPコード・フィールドは、それがブロック記述命
令であるか、または制御命令であるかを示す。ブロック
記述命令であれば、OPコード・フィールドには、評価
されたゲートの関数が記述される。フィールドA1ない
しA4は、評価されたゲートの4つの入力端子を指定し
、入力端子の現在状態が格納された現在状態アレイ23
内のアドレスに対応する。
【0040】アドレスA1ないしA4は、マルチプレク
サ62を通してアレイ23に引き渡される。評価された
ゲートに対する入力オペランドである4つの2ビットの
現在状態は、フィールドA1ないしA4によって指定さ
れたアドレスから同時にフェッチされる。これらの入力
オペランドは、論理関数テーブル24における演算の前
に、OPコードによって指示されていればオペランドが
反転されるように、オペランド反転ロジック手段63に
送られる。
【0041】評価されたゲートに対する入力オペランド
は論理関数テーブル24に送られる。この情報は、ラッ
チ61からの、ゲートの関数を記述したOPコード・フ
ィールドの関数ポインタとともに、論理関数テーブル2
4へのポインタとして用いられる。論理関数テーブル2
4は、基本的にはルックアップ・テーブルであり、その
入力が現在与えられていれば、ゲートに対して正規の2
ビット出力値を生成する。
【0042】論理関数テーブル24の出力は、OPコー
ドによって指示されていれば出力が反転されるように、
出力反転ロジック66に送られる。出力反転ロジック手
段66からの結果は、出力手段25に供給され、マシン
1の現在状態アレイ23をすべてその結果で更新するた
めに、データ・ライン3Aの割当ラインに送出される。
【0043】たとえば、図6のANDゲートは次のよう
に評価される。スロット0に装着されたシミュレーショ
ン・プロセサのプログラム・カウンタ26が、アドレス
Zを生成して、ゲートのブロック記述命令をブロック記
述アレイ22からフェッチする。ブロック記述命令のフ
ィールドA1ないしA4によって指示されたとおり、4
つのオペランドH(0、1)、H(0、1)、L(0、
0)、L(0、0)が、現在状態アレイ23のアドレス
V、W、X、Yからフェッチされる。第1及び第2の入
力オペランドH(0、1)、H(0、1)は、OPコー
ドによって、オペランド反転ロジック63でL(0、0
)、L(0、0)に反転される。4つのL(0、0)入
力オペランド全部とAND関数を指定する関数ポインタ
がテーブル24に入力される。テーブル24は結果のL
(0、0)を出力する。この結果は、出力反転ロジック
手段66においてOPコードによってH(0、1)に反
転される。出力H(0、1)は、出力手段25に供給さ
れ、すべてのシミュレーション・プロセサ2に転送され
て、各々の現在状態アレイ23が更新される。
【0044】先にも述べたように、スロット0、1、2
、...、15のプロセサ2は、データ・ライン3Aの
割当ライン0と1、2と3、4と5、...、及び30
と31に2ビットの結果を送出する。これにより、この
サイクルで算出されたすべての結果がデータ・ライン3
Aに並列に現れる。データ・ライン3A上の結果は、制
御ロジック手段27によって受け取られ、各シミュレー
ション・サイクルの終わりに、各プロセサ2の現在状態
アレイ23内の隣接した16のアドレスに、シミュレー
ション・サイクル数と当該構成のシミュレーション・プ
ロセサ数との積(この例では16)によって指示された
アドレスを先頭として書き戻される。たとえば、第1シ
ミュレーション・サイクルの終わりでは、すべてのシミ
ュレーション・プロセサの現在状態アレイ23のアドレ
ス0ないし15が、データ・ライン3A上の結果で更新
される。第2シミュレーション・サイクルの終わりでは
、現在状態アレイ23のアドレス16ないし31が、ラ
イン3A上の結果で更新される。第3シミュレーション
・サイクルの終わりではアドレス32ないし47となり
、以下同様である。こうして、各シミュレーション・プ
ロセサ2の現在状態アレイ23は、各シミュレーション
・サイクルですべてのプロセサ2によって算出された結
果で更新され、マシン1で評価されたモデルの現在状態
の完全なコピーを維持する。ホスト・コンピュータ5は
、シミュレーションの間には、ブロードキャスト・コマ
ンドによって、データ・ライン3Aとホスト・インタフ
ェース21を通して、シミュレーションの後には、スロ
ット0に装着されたプロセサ2の現在状態アレイ23か
ら結果を受け取ることができる。
【0045】シミュレーション・プロセサ2がブランチ
、ブロードキャスト、ホールトなどの制御命令を実行す
るとき、すべてのシミュレーション・プロセサ2におい
て、同一の制御命令が同時に実行され、シミュレーショ
ンの同期が正しくとられる。たとえばブランチは、1度
に、すべてのシミュレーション・プロセサ2にわたって
同一のものとして解釈される。
【0046】この実施例の場合、複数のシミュレーショ
ン・プロセサ2が、シミュレーション・モデルを並列に
処理してシミュレーションを高速化するため、ほぼ直線
的な高速化が実現する。すなわち、シミュレーション・
プロセサは、その数が約2倍になれば、約2倍高速に動
作する。高速化に非直線性が生じる原因は、更新の必要
なことだけである。データを現在状態アレイに書き戻す
のにかなり時間がかかるからである。この例では16の
シミュレーション・プロセサ2がシミュレーション・バ
ス手段3に接続されるが、シミュレーション・プロセサ
は、所要性能に応じて、1、2、4、8、16から成る
グループから任意の個数を選択して、シミュレーション
・バス手段3に接続することができる。シミュレーショ
ン・プロセサ2の構成は、ホスト・コンピュータ5から
見てトランスペアレントに保たれ、図10、図11に示
した最大構成を対象に形成された同じモデルを、構成の
変更とは無関係に使用できる。これは、制御ロジック2
7と構成ライン3Cが、構成をシミュレーション・プロ
セサに通知して、それら自体が構成変更に関わるからで
ある。また、ホスト・コンピュータ5は、シミュレーシ
ョン・プロセサ2を占有した後、シミュレーション・バ
ス手段3のスロット0に装着されたプロセサ2のホスト
・インタフェース21を介して、ロジック・シミュレー
ション・マシン1と通信する。そこで、シミュレーショ
ン・プロセサ2のグループは、ホスト・コンピュータ5
から見ると、複数のタスク(シミュレーション・モデル
の形成、このモデルのシミュレータへのロード、シミュ
レーションの実行、及び結果のフェッチと解析)に関係
する1つのエンティティとなる。
【0047】もし16のシミュレーション・プロセサで
はなく4つのシミュレーション・プロセサ2がシミュレ
ーション・バス手段3に接続されれば、4つのシミュレ
ーション・プロセサ2は、スロット0、1、2、3に装
着され、各々、構成ライン3Cから一意のデータを受け
取る。各シミュレーション・プロセサ2のブロック記述
アレイ22に図10、図11のモデルがロードされる際
、各シミュレーション・プロセサ2は、構成ライン3C
上の一意のデータの下位2ビット・データと同じ図10
、図11のリストの下位2ビット・バイナリ・アドレス
を持つ命令を順に受け取る。つまり、図13に示すよう
に、スロット0、1、2、3のプロセサ2は、下位2ビ
ット・バイナリ・アドレスが00、01、10、11の
命令を受け取ってブロック記述アレイ22に連続して格
納する。この構成では1シミュレーション・サイクルで
4つのゲートが評価される。4つのプロセサ2によって
評価された4つのゲートの結果は、4サイクルの第1サ
イクルの終わりでは、データ・ライン3Aのライン0な
いし7に並列に送出され、4サイクルの第2サイクルの
終わりでは、ライン8ないし15に、4サイクルの第3
サイクルの終わりではライン16ないし23に、そして
4サイクルの第4サイクルの終わりではライン24ない
し31に送出される。これは、制御ロジック27から、
第1サイクルでは(0、0)を、第2サイクルでは(0
、1)を、第3サイクルでは(1、0)を、第4サイク
ルでは(1、1)を、図9の構成ライン3Cの最上位ビ
ット及び第2最上位ビットのラインに送出することによ
って行われる。第4サイクルの終わりでは、すべてのデ
ータ・ライン3Aに結果が得られ、その結果は、現在状
態アレイ23の隣接する16のアドレスに、4サイクル
の第1シミュレーション・サイクル数とシミュレーショ
ン・プロセサ数の積、すなわち4によって指示されたア
ドレスを先頭にして書き戻される。つまり、4サイクル
の終わりでは、すべてのデータ・ライン3Aがプロセサ
2からの結果で一杯となり、各シミュレーション・プロ
セサ2の現在状態アレイ23は、データ・ライン3B上
の結果で更新される。この構成では、同じ16のゲート
を評価するのに4シミュレーション・サイクルが必要で
、図1、図2の構成では1シミュレーション・サイクル
である。図13のような4プロセサ構成では、各ブロッ
ク記述アレイ22の隣接した4つのアドレスに同一の制
御命令が4つ置かれる。プロセサ2の各制御ロジック手
段27は、4つの同一の制御命令のうち第1のブランチ
制御命令またはホールト制御命令を実行し、他の3つの
同一かつ冗長な制御命令は無視する。4つのブランチ・
コマンドまたはホールト・コマンドの内容が同じだから
である。ただし、すべてのブロードキャスト命令がプロ
セサ2によって実行される。これは、16のブロードキ
ャスト・コマンドは各々、アレイ23からホスト5にデ
ータを転送するための、フィールドA1ないしA4のオ
ペランドが異なるからである。
【0048】マシン1は、シミュレーション・プロセサ
数をソフトウェアに対してトランスペアレントにする。 つまり、アーキテクチャとしては16のブロック記述命
令が常に同時に実行される。これには、実際にはシミュ
レーション・プロセサ数に応じて1、2、4、8、また
は16のサイクルがかかるが、違いはソフトウェアから
は見えない。ホスト・コンピュータが、ロードその他の
ために、シミュレーション・プロセサのブロック記述ア
レイをアクセスするとき、ホスト・コンピュータが認識
するのは1組の命令にすぎない。シミュレーション・プ
ロセサのハードウェアは、ホストのアクセスを、複数の
カード上の異なるアレイへ向けることができるが、ホス
トはこれを認識しない。シミュレートされるロジック・
モデルが、最大構成のロジック・シミュレーション・マ
シンを対象に形成される場合、このモデルは、何ら変更
を加えることなく、より小規模な構成で動作する。この
考え方から、同じモデルを多くのハードウェア構成で使
用できる。ホストは、構成を認識する必要はなく、構成
にかかわらず、すべてのホスト・データをI/Oバスに
送信するだけでよい。この意味は大きい。それは特に、
この例のアーキテクチャによれば、ユーザが、所要性能
を得るために、ロジック・シミュレーション・マシンを
いつでも再構成できるからである。
【0049】シミュレーション・プロセサ2は、シミュ
レーションの際に、通常はゲート・ロジックだけをシミ
ュレートするために用いられ、メモリやアレイのモデリ
ング、デバイス動作などの機能は、ホスト・コンピュー
タ5によって実行される。ただし図1、図2のマシン1
では、ホスト・コンピュータ5との間のデータはすべて
シミュレーション・バス手段3に送られ、ホストは、バ
ス3上のもう1つのデバイスでしかなくなる。これは、
シミュレーション・バス手段3に、シミュレーション・
プロセサ2と並列に装着されたハードウェアのアクセラ
レータまたは補助プロセサによって、シミュレーション
・バス3のトラフィックを模倣することによって、どの
ようなホスト機能も実行できることを意味する。トレー
ス収集、メモリやアレイのシミュレーション、及びデバ
イス動作が、ハードウェアのアクセラレータまたは補助
プロセサの対象となることは明らかである。このような
操作の場合は、ホストがシミュレーション・スループッ
トを減速し得る。実際に、こうしたホストの負担を軽減
するために、ユーザ・インタフェースを除くすべての機
能を補助プロセサに移植することもできる。
【0050】全イベント・トレース(AET)ギャザラ
4は、このような補助プロセサの一例である。AETは
、シミュレーションの間にすべてのファシリティに生じ
たことの記録である。通常、従来の技術によるAETデ
ータは、各シミュレーション・サイクルの終わりに、ホ
スト・コンピュータ5が、トレースされるすべてのノー
ドを評価することによって収集される。こうした対象ノ
ードだけをホストに送信するブロードキャスト・コマン
ドは効率的ではあるが、2つの制約が残る。第1に、ト
レースされるノードは、変化しなかったものも含めてす
べてホスト・コンピュータに送られる。第2に、シミュ
レーション・サイクルごとにデータを評価するのでホス
トにかなりの時間がかかる。AETギャザラ4は、AE
Tデータをシミュレーションと平行して生成し、ホスト
・タスクを軽減する。
【0051】図14によりAETギャザラ4について説
明する。AETギャザラ4のコンポーネントはシミュレ
ーション・プロセサ2のものと同じで、シミュレーショ
ン・バス手段3をモニタすることによって、シミュレー
トされたモデル全体の現在状態の完全なコピーを維持す
る現在状態アレイ41と、シミュレーション・プロセサ
2と同期がとられるプログラム・カウンタ42である。 AETギャザラ4はこのほか、独自の制御ロジック手段
43と変化記録アレイ44を備え、シミュレートされた
モデルの変化だけを格納する。
【0052】制御ロジック43は、各シミュレーション
・サイクルの初めに、変化記録アレイ44にマーカを置
いてサイクル開始点を指示する。シミュレーションが進
むと、制御ロジック43は、シミュレーション・バス手
段3をモニタして、現在状態の完全なコピーを現在状態
アレイ41に維持する。制御ロジック43は、各ノード
・アドレスの新しい値をそれらが生成されたときに、現
在状態アレイ41にある古い値と比較することによって
、ノードの変化を検出する。変化が検出されると、制御
ロジック43は、ノード・アドレスと新しいノード値を
変化記録アレイ44に格納する。
【0053】図15、図16、図17によりAETギャ
ザラ4の動作について説明する。図15は、ロジック・
シミュレーション・マシン1のシミュレーション・プロ
セサ2によってシミュレートされる設計モデル(2ビッ
ト・カウンタ)を示す。評価されるノードはZ0、Z1
、Z2、Z3の4つである。図16は、各シミュレーシ
ョン・サイクルの終わりでの現在状態アレイ41内の全
ノードの状態を示す。このモデルのノードはすべて1回
評価されたものである。図17は、3シミュレーション
・サイクルの後の変化記録アレイ44の内容を示す。 変化のあったノードと新しい値だけが変化記録アレイ4
4に格納される。
【0054】どのファシリティのどのサブセットも、マ
スクとして用いられる別個の(シャドー)アレイのサイ
ズを現在状態アレイ41と等しくしておくことによって
トレース可能である。ビットは、トレースされるノード
に対するシャドー・アレイに置かなければならない。
【0055】AETギャザラ4は、受動的な補助プロセ
サであり、シミュレーション・バス手段3をモニタする
だけである。ギャザラ4がシミュレーションに影響を与
える唯一の機会は、シミュレーションを中止して、変化
記録アレイ44をホストにダンプするときである。これ
はまずめったに起こらないし、ホストの転送幅がシミュ
レーションとAETダンプの両方を処理できるほどであ
れば回避できる。AETギャザラ4は、最小の情報(変
化のみ)を記録するので、変化記録アレイ44が充分に
大きく、トレース対象のファシリティの数が妥当であれ
ば、AETダンプが必要になる前にほとんどのシミュレ
ーションを完了できる。AETギャザラ4は、シミュレ
ーション・プロセサ及びホスト・コンピュータのタスク
を減速することなく、シミュレーション・バス手段3を
モニタすることによって、AETを生成するほか、AE
Tギャザラ4により、どのノードがトレース対象である
かを示すマスクを格納するためにシャドー・アレイを使
用することで、ファシリティのどのサブセットも収集で
きる。AETギャザラは、米国特許出願07/5021
48(1990年3月30日出願)の主題になっている
【0056】図1、図2に示した実施例の場合、シミュ
レーション・バス手段に接続されるシミュレーション・
プロセサの数は2n であり、最大数は16である。た
だし、この発明は、シミュレーション・プロセサの数を
2n に制限するものではなく、最大数を16に制限す
るものではない。この発明では、任意個数のシミュレー
ション・プロセサをシミュレーション・バス手段に接続
でき、それにより、バス手段のデータ・ラインを各シミ
ュレーション・プロセサに割り当てて、結果をデータ・
ラインに並列に送出して、シミュレートされたモデル全
体の現在状態の完全なコピーを維持することができる。
【0057】各シミュレーション・プロセサは、本発明
のロジック・シミュレーション・マシン及びシミュレー
ション方法に従って、Cocke らの特許と同様、1
組のロジック・ゲートをシミュレートするが、各シミュ
レーション・プロセサが、プロセサ間スイッチの代わり
に、シミュレートされたマシン状態の完全なコピーを維
持することと、シミュレートされたマシン状態の更新内
容がブロードキャストされるシミュレーション・バス手
段が提供されることが異なる。この情報は、各シミュレ
ーション・プロセサによって、それが保持する、シミュ
レートされたマシン状態のコピーを更新するために用い
られる。シミュレーション・バス手段は、各シミュレー
ション・プロセサについて計算された結果を有する個別
データ・ラインを含む。したがってシミュレーション・
バス手段は、全体として、すべてのシミュレーション・
プロセサの計算結果をすべて保持する。s個のプロセサ
があり、各プロセサの計算結果がt個のラインの状態で
あらわれるマシンの場合、シミュレーション・バス手段
のデータ・ラインはs  ×  t個である。
【0058】各プロセサで、シミュレートされたマシン
状態の完全なコピーを実現するコストは、従来の技術で
採用された機構に比べれば大きいが、このデメリットを
相殺するファクタは多数ある。第1に、メモリのコスト
がこの数年大幅に低下している。第2に、プロセサ間ス
イッチは複雑かつ高価であり、このマシンには必要でな
い。第3に、このマシンには、従来のスイッチ・ベース
のマシンで、シミュレートされるロジック・モデルのコ
ンパイルとスケジューリングを行う難しさはない。これ
により、シミュレータを実際に使用する際の費用を大幅
に削減できる。最後に、アーキテクチャにより、補助プ
ロセサをシミュレーション・バス手段につなぐだけで、
他の補助プロセサのマシン状態をコピーでき、これらの
プロセサがシミュレーション・プロセスに参加できる。 補助プロセサは、シミュレーションを高速化するために
、メモリ・アレイのシミュレーション、シミュレーショ
ンについてのトレース情報の収集などのタスクにも使用
できよう。
【0059】この発明を従来の技術と区別するもう1つ
の特徴は、ホスト・コンピュータと接続する方法である
。シミュレーション・プロセサはすべて、ホスト・コン
ピュータのI/Oバスに直に装着することを前提として
いる。また1組のシミュレーション・プロセサが、ホス
ト・コンピュータからは1つのエンティティに見え、ホ
スト・コンピュータがシミュレーション・プロセサを、
その数にかかわらず同じように動作させることを前提と
している。これには、シミュレーション・モデルのコン
パイル、モデルのシミュレータへのロード、シミュレー
ションの実行など多くのタスクが含まれる。
【0060】さらに、ホスト・コンピュータとシミュレ
ーション・プロセサのインタラクションの特徴として、
ホスト・コンピュータは、ある構成では、シミュレーシ
ョンの一部を実行する。この例で最も一般的なのは、ア
レイのモデリングとトレース情報の収集である。
【0061】
【発明の効果】この発明によれば、並列処理におけるシ
ミュレーションの高速化を実現するロジック・シミュレ
ーション・マシン及びロジック・シミュレーションの方
法が提供される。
【図面の簡単な説明】
【図1】この発明の実施例に従ったロジック・シミュレ
ーション・マシンと、マシンが接続されるホスト・コン
ピュータのブロック図である。
【図2】この発明の実施例に従ったロジック・シミュレ
ーション・マシンと、マシンが接続されるホスト・コン
ピュータのブロック図であり、図1のA−A線より右側
の部分を示す図である。
【図3】図1、図2のスロット0に装着されたシミュレ
ーション・プロセサのブロック図である。
【図4】図3のシミュレーション・プロセサのブロック
記述アレイの内容を示す図である。
【図5】図4のブロック記述アレイに格納された命令の
OPコード・フィールドを示す図である。
【図6】ブロック記述命令と、図3に示したシミュレー
ション・プロセサの動作を説明するために用いるロジッ
ク回路モデルを簡略化したブロック図である。
【図7】図3のシミュレーション・プロセサの現在状態
アレイのブロック図である。
【図8】図3のシミュレーション・プロセサの一部のブ
ロック図である。
【図9】論理関数テーブルからの結果をシミュレーショ
ン・バスの割当データ・ラインに送出するための、図3
のシミュレーション・プロセサの出力手段のブロック図
である。
【図10】この発明に従って、図1、図2のロジック・
シミュレーション・マシンにロードされ、ロジック・シ
ミュレーション・マシンによってシミュレートされるモ
デルのコンパイル方法を示す図である。
【図11】この発明に従って、図1、図2のロジック・
シミュレーション・マシンにロードされ、ロジック・シ
ミュレーション・マシンによってシミュレートされるモ
デルのコンパイル方法を示す図であり、図10のA−A
線より下側の部分を示す図である。
【図12】マシン動作を説明するために、図1、図2の
マシンのシミュレーション・プロセサのブロック記述ア
レイを簡略化した図である。
【図13】この発明の、別構成のロジック・シミュレー
ション・マシンのブロック記述アレイを簡略化した図で
ある。
【図14】シミュレーションと平行して全イベント・ト
レース(AET)を生成するために、シミュレーション
・プロセサと並列にシミュレーション・バス手段に接続
されたAETギャザラのブロック図である。
【図15】図14のAETギャザラの動作を説明する、
図1、図2のマシンによってシミュレートされる2ビッ
ト・カウンタの図である。
【図16】各シミュレーション・サイクルにおける図1
5のカウンタのノードの現在状態を説明するテーブルの
図である。
【図17】図14のAETギャザラの動作を説明する、
変化記録アレイの内容を示すテーブルの図である。

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】ロジック・シミュレーションを並列に実行
    する複数のシミュレーション・プロセサと、上記シミュ
    レーション・プロセサを相互に接続し、該シミュレーシ
    ョン・プロセサの各々から情報を並列に転送するために
    、該各シミュレーション・プロセサに割り当てられる複
    数のデータ・ラインを含むシミュレーション・バス手段
    とを含む、ロジック・シミュレーション・マシン。
  2. 【請求項2】請求項1に記載のロジック・シミュレーシ
    ョン・マシンであって、上記各シミュレーション・プロ
    セサが、上記データ・ラインからの情報を用いた更新に
    よって、シミュレートされたモデルの現在状態の完全な
    コピーを維持するメモリ手段を含む、ロジック・シミュ
    レーション・マシン。
  3. 【請求項3】請求項1に記載のロジック・シミュレーシ
    ョン・マシンであって、シミュレーションを加速するた
    めの情報を受け取るために、上記シミュレーション・バ
    ス手段に補助プロセサが接続された、ロジック・シミュ
    レーション・マシン。
  4. 【請求項4】請求項1に記載のロジック・シミュレーシ
    ョン・マシンであって、上記シミュレーション・プロセ
    サとホスト・コンピュータとの通信のために上記シミュ
    レーション・バス手段にホスト・インタフェースが接続
    された、ロジック・シミュレーション・マシン。
  5. 【請求項5】請求項4に記載のロジック・シミュレーシ
    ョン・マシンであって、上記シミュレーション・プロセ
    サが、上記ホスト・コンピュータのI/Oバス手段を通
    して該ホスト・コンピュータに接続された、ロジック・
    シミュレーション・マシン。
  6. 【請求項6】複数のシミュレーション・プロセサと、該
    シミュレーション・プロセサ相互間で情報を転送するた
    めの複数のデータ・ラインを備えるシミュレーション・
    バス手段とを含むロジック・シミュレーションの並列処
    理方法であって、上記シミュレーション・プロセサの各
    々に上記データ・ラインを割り当てるステップと、上記
    各シミュレーション・プロセサからの情報を、上記シミ
    ュレーション・バス手段の割当データ・ラインに並列に
    送出するステップとを含む、ロジック・シミュレーショ
    ンの並列処理方法。
  7. 【請求項7】請求項6に記載の並列処理方法であって、
    上記各シミュレーション・プロセサにメモリ・ユニット
    が含まれ、シミュレートされるモデル全体の初期状態の
    コピーを上記各シミュレーション・プロセサのメモリ・
    ユニットに格納するステップと、上記各シミュレーショ
    ン・プロセサのデータ・ラインの情報をもって、上記メ
    モリ・ユニットに格納されたコピーを更新するステップ
    とを含む、ロジック・シミュレーションの並列処理方法
  8. 【請求項8】請求項6に記載の並列処理方法であって、
    シミュレーションを高速化するために、上記シミュレー
    ション・バス手段に補助プロセサが接続され、上記各シ
    ミュレーション・プロセサから、上記シミュレーション
    ・バス手段のデータ・ラインを通して上記補助プロセサ
    に情報を送る、ロジック・シミュレーションの並列処理
    方法。
  9. 【請求項9】シミュレーションの並列処理を行う、複数
    のシミュレーション・プロセサを含むロジック・シミュ
    レーション・マシンであって、上記シミュレーション・
    プロセサの各々からの情報を並列に転送するために、該
    各シミュレーション・プロセサに割り当てられる複数の
    データ・ラインを有するシミュレーション・バス手段と
    、上記シミュレーション・プロセサから情報を受け取る
    ために上記データ・ラインに接続された補助プロセサと
    を含む、ロジック・シミュレーション・マシン。
  10. 【請求項10】請求項9に記載のロジック・シミュレー
    ション・マシンであって、上記シミュレーション・プロ
    セサにおいて用いるために、上記シミュレーション・バ
    ス手段に情報を供給する手段が上記補助プロセサに含ま
    れる、ロジック・シミュレーション・マシン。
  11. 【請求項11】シミュレーション・プロセサの動作の指
    定に必要な命令を格納する第1メモリ手段と、シミュレ
    ートされたモデル全体の現在状態を格納する第2メモリ
    手段と、上記命令と上記現在状態から結果を算定するた
    めに、上記第1及び第2のメモリ手段に接続された論理
    関数テーブルとが、各シミュレーション・プロセサに含
    まれ、 a)ロジック・シミュレーションを並列に実行する複数
    の上記シミュレーション・プロセサと、b)上記シミュ
    レーション・プロセサのすべての上記第2メモリ手段に
    、シミュレートされたモデル全体の同じ現在状態が維持
    されるように、算定結果をすべての該シミュレーション
    ・プロセサに転送するために、該シミュレーション・プ
    ロセサの各々に割り当てられる複数のデータ・ラインを
    含み、上記シミュレーション・プロセサを相互に接続す
    るシミュレーション・バス手段とを含む、ロジック・シ
    ミュレーション・マシン。
  12. 【請求項12】請求項11に記載のロジック・シミュレ
    ーション・マシンであって、上記シミュレーション・バ
    ス手段が、該シミュレーション・バス手段と接続される
    ように上記シミュレーション・プロセサが装着された複
    数のスロット手段と、該シミュレーション・プロセサが
    どのスロット手段を占有しているかを該シミュレーショ
    ン・プロセサの各々に通知するために該スロット手段に
    関連づけられた複数の構成ラインとを含む、ロジック・
    シミュレーション・マシン。
  13. 【請求項13】請求項12に記載のロジック・シミュレ
    ーション・マシンであって、上記シミュレーション・プ
    ロセサが上記どのスロット手段を占有しているかに応じ
    て、該シミュレーション・プロセサに割り当てられた上
    記データ・ラインに上記論理関数テーブルからの結果を
    供給するための出力手段が該シミュレーション・プロセ
    サに含まれる、ロジック・シミュレーション・マシン。
  14. 【請求項14】請求項11に記載のロジック・シミュレ
    ーション・マシンであって、上記シミュレーション・プ
    ロセサの数が、1、2、4、8、16、及び2n (n
    は整数)より成るグループから選択される、ロジック・
    シミュレーション・マシン。
  15. 【請求項15】請求項11に記載のロジック・シミュレ
    ーション・マシンであって、シミュレーションの前に上
    記シミュレーション・プロセサを初期化し、シミュレー
    ションの後に該シミュレーション・プロセサから結果を
    受け取って解析するために、上記シミュレーション・バ
    ス手段にホスト・インタフェースを通してホスト・コン
    ピュータが接続された、ロジック・シミュレーション・
    マシン。
  16. 【請求項16】各シミュレーション・プロセサが、第1
    メモリ手段、第2メモリ手段、及び論理関数テーブルを
    含み、シミュレーション・バス手段が複数のデータ・ラ
    インを有する、複数の該シミュレーション・プロセサを
    含む、ロジック・シミュレーションの並列処理方法であ
    って、1組の上記データ・ラインを上記シミュレーショ
    ン・プロセサの各々に割り当てるステップと、上記各シ
    ミュレーション・プロセサの動作の指定に必要な命令を
    、該各シミュレーション・プロセサの上記第1メモリ手
    段に格納するステップと、シミュレーション対象のモデ
    ル全体の初期状態を、上記各シミュレーション・プロセ
    サの上記第2メモリ手段に格納するステップと、上記各
    シミュレーション・プロセサに格納された命令を出力す
    るために、上記第1メモリ手段をアドレスするステップ
    と、上記各シミュレーション・プロセサに格納された状
    態を出力するために、上記第1メモリ手段からの命令に
    基づいて上記第2メモリ手段をアドレスするステップと
    、上記各シミュレーション・プロセサの上記論理関数テ
    ーブルにおいて、出力された命令と出力された状態から
    結果を算定するステップと、上記各シミュレーション・
    プロセサにおいて、上記論理関数テーブルからの上記結
    果を、該各シミュレーション・プロセサに割り当てられ
    た上記データ・ラインに並列に送出するステップと、上
    記シミュレーション・プロセサのすべての上記第2メモ
    リ手段に、シミュレートされたモデル全体の同じ現在状
    態が格納されるように、該シミュレーション・プロセサ
    の各々の上記データ・ラインからの結果をもって上記第
    2メモリ手段を更新するステップとを含む、ロジック・
    シミュレーションの並列処理方法。
  17. 【請求項17】請求項16に記載の並列処理方法であっ
    て、上記シミュレーション・バス手段が、複数の構成ラ
    インと、該構成ラインに関連づけられた複数のスロット
    手段とを含み、上記シミュレーション・バス手段に接続
    するために、上記各シミュレーション・プロセサを上記
    スロット手段に装着するステップと、上記シミュレーシ
    ョン・プロセサがどのスロット手段を占有しているかを
    、上記構成ラインを通して該シミュレーション・プロセ
    サの各々に通知するステップとを含む、ロジック・シミ
    ュレーションの並列処理方法。
  18. 【請求項18】請求項16に記載の並列処理方法であっ
    て、上記シミュレーション・プロセサの数が、1、2、
    4、8、16、及び2n (nは整数)より成るグルー
    プから選択される、ロジック・シミュレーションの並列
    処理方法。
  19. 【請求項19】請求項16に記載の並列処理方法であっ
    て、シミュレーション・バス手段を、ホスト・インタフ
    ェースを通してホスト・インタフェースに接続するステ
    ップと、シミュレーションの前に上記ホスト・コンピュ
    ータによって上記シミュレーション・プロセサを初期化
    するステップと、シミュレーションの後に解析するため
    に、上記シミュレーション・プロセサから上記ホスト・
    コンピュータへ結果を送信するステップとを含む、ロジ
    ック・シミュレーションの並列処理方法。
  20. 【請求項20】ロジック・シミュレーションを並列に実
    行するために相互に接続されたN個のシミュレーション
    ・プロセサを含むロジック・シミュレーション・マシン
    による、シミュレーション対象のモデルのコンパイル方
    法であって、Nが1、2、4、8、16、またはMより
    成るグループから選択されるとき、Mが該グループの最
    大数、M=2n であり、nが整数のとき、シミュレー
    ションの前に上記シミュレーション・プロセサにロード
    される命令リストにおいて、ブロック記述命令が第1シ
    ミュレーション・プロセサから始まり、M番目のプロセ
    サに進み、該第1シミュレーション・プロセサに戻って
    このシーケンスが再び繰り返され、上記モデルのブロッ
    ク記述命令を該シミュレーション・プロセサの各々に割
    り当てるステップと、M個1組の同一制御命令を、上記
    命令リストのk  ×  M(kは整数)から始まるロ
    ケーションに挿入するステップとを含む、モデルのコン
    パイル方法。
JP3048821A 1990-03-30 1991-02-22 ロジック・シミュレーション・マシン及び処理方法 Expired - Lifetime JPH0690714B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US50208990A 1990-03-30 1990-03-30
US502089 1990-03-30

Publications (2)

Publication Number Publication Date
JPH04225475A true JPH04225475A (ja) 1992-08-14
JPH0690714B2 JPH0690714B2 (ja) 1994-11-14

Family

ID=23996291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3048821A Expired - Lifetime JPH0690714B2 (ja) 1990-03-30 1991-02-22 ロジック・シミュレーション・マシン及び処理方法

Country Status (2)

Country Link
EP (1) EP0450837A3 (ja)
JP (1) JPH0690714B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IE73651B1 (en) * 1994-09-30 1997-06-18 S3 Research & Dev Limited Design and testing of electronic systems
US5649164A (en) * 1994-12-30 1997-07-15 International Business Machines Corporation Sets and holds in virtual time logic simulation for parallel processors

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914612A (en) * 1988-03-31 1990-04-03 International Business Machines Corporation Massively distributed simulation engine

Also Published As

Publication number Publication date
EP0450837A2 (en) 1991-10-09
EP0450837A3 (en) 1993-02-03
JPH0690714B2 (ja) 1994-11-14

Similar Documents

Publication Publication Date Title
US5327361A (en) Events trace gatherer for a logic simulation machine
US5721953A (en) Interface for logic simulation using parallel bus for concurrent transfers and having FIFO buffers for sending data to receiving units when ready
US4787061A (en) Dual delay mode pipelined logic simulator
EP0021404B1 (en) Computing system for the simulation of logic operations
EP0096176B1 (en) Method of logic simulation and logic simulation machine
CA1246743A (en) Array for simulating computer functions for large computer systems
EP0022622A1 (en) Programmable controller
EP0665998A1 (en) Microprocessor-based fpga
JPS60218138A (ja) 事象駆動形アルゴリズムを実行するコンピユータ装置
JP3896177B2 (ja) エミュレーションシステム
JPS58501560A (ja) マイクロプロセツサ
JP2004519041A (ja) 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
CN100530103C (zh) 一种模拟器及方法
CA1182579A (en) Bus sourcing and shifter control of a central processing unit
JPS6141017B2 (ja)
JPH04225475A (ja) ロジック・シミュレーション・マシン及び処理方法
US10409624B1 (en) Data array compaction in an emulation system
EP0449579A2 (en) A logic simulation machine
US5245549A (en) Gate addressing system for logic simulation machine
Denneau et al. Design and implementation of a software simulation engine
EP0483965A2 (en) Logic simulation
EP0231948A2 (en) Simulation system
JPS6244843A (ja) シミユレ−タ
Grozdanov 162 Advances in Parallel Algorithms I. Dimov and O. Tonev (Eds.) IOS Press, 1994