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

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

Info

Publication number
JPH0690714B2
JPH0690714B2 JP3048821A JP4882191A JPH0690714B2 JP H0690714 B2 JPH0690714 B2 JP H0690714B2 JP 3048821 A JP3048821 A JP 3048821A JP 4882191 A JP4882191 A JP 4882191A JP H0690714 B2 JPH0690714 B2 JP H0690714B2
Authority
JP
Japan
Prior art keywords
simulation
processor
logic
processors
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.)
Expired - Lifetime
Application number
JP3048821A
Other languages
English (en)
Other versions
JPH04225475A (ja
Inventor
マーク・デイヴィッド・スウィート
チャールズ・ゴードン・ライト
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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、デジタル・ロジック
のシミュレーションを行うパラレル・コンピュータであ
るロジック・シミュレーション・マシン、ロジック・シ
ミュレーションの並列処理方法、及びロジック・シミュ
レーション・マシン用ロジック・モデルのコンパイル方
法に関する。
【0002】
【従来の技術】超大規模集積回路などのロジック技術に
より、価格性能比と信頼性が大幅に向上している。しか
しこの技術には、障害診断が先行技術よりも難しく、ロ
ジック設計エラーの訂正に必要なエンジニアリングの練
り直しサイクルがかなり長くなるという欠点がある。こ
のような欠点により、設計上のエラーや省略にかかる経
済的なペナルティはかなりのものになり、モデルを実用
化する前に、設計をくまなく検証するという目標が重要
視される。
【0003】設計検証方法の1つに、汎用コンピュータ
によるロジック・シミュレーションがある。また、ロジ
ック・シミュレーションに最適化された特定用途向けコ
ンピュータの採用も設計検証に用いられる。一般に特定
用途向けコンピュータにはマルチ・プロセサ・アーキテ
クチャが用いられる。このアーキテクチャでは、シミュ
レーション・プロセサと呼ばれる複数のプロセサを相互
に接続することで、シミュレーション性能を高めること
ができる。特定用途向けコンピュータは、ロード機能を
提供しシミュレーション結果を解析するために用いられ
るホスト・コンピュータと併用することもできる。こう
した特定用途向けコンピュータはロジック・シミュレー
ション・マシンと呼ばれる。この発明は、ロジック・シ
ミュレーション・マシンに関係する。
【0004】従来の技術によるロジック・シミュレーシ
ョン・マシンは、Cocke らによる米国特許第43062
86号明細書(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...、1
5は、構成ライン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に、構成ライン3
Cによってバイナリ・データ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、ディスプレイ5
5、及びホスト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、A
2、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とは独立して行える。フィールドA
1、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(0
1)、未定義(10)、及びハイ・インピーダンス(1
1)である。現在状態アレイ23は、シミュレートされ
たマシンのすべてのブロックまたはゲートのこのような
現在状態を格納する。この例では、シミュレートされた
マシンに可能なブロックまたはゲートの大きさは512
Kであるので、シミュレートされたマシンの状態は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において反転できる。オペランド反転ロジック6
3からの出力はバス駆動手段80へも供給される。ブロ
ードキャスト・コマンドが、制御ロジック27によって
実行されると、バス駆動手段80は、オペランド反転ロ
ジック63を通して、現在状態アレイ23からのコマン
ドのフィールドA1ないしA4によって指示された4つ
の現在状態を受け取り、制御ロジック27の制御下で、
データ・ライン0ないし7、8ないし15、16ないし
23、または24ないし31にデータを送出する。現在
状態アレイ27のデータは、シミュレーション・プロセ
サ2からブロードキャスト・コマンドによってホスト5
へ送られ、ホスト内で用いられる。ブロードキャスト・
コマンドは、米国特許出願07/502088(199
0年3月30日出願)の主題になっている。
【0029】図9により出力手段25について説明す
る。出力手段25は、16のANDゲートE0、E
1、...、E15、16のゲートL0、L
1、...、L15(出力はデータ・ライン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に直結さ
れる。制御ロジック27からの動作モード・シグナル
は、ANDゲートE0、E1、...、E15の各々の
入力にも接続され、シミュレーション・プロセサ2の動
作モード時にANDゲートが活動化される。ANDゲー
トE0、E1、...、E15の出力は、ゲートL0と
H0、L1とH1、...、L15とH15の各端子を
付勢するように接続される。出力反転ロジック手段66
からの出力の下位ビット・ラインは、ゲートL0、L
1、...、L15の入力に接続される。出力反転ロジ
ック手段66からの出力の上位ビット・ラインは、ゲー
トH0、H1、...、H15の入力に接続される。よ
って、スロット手段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へ転送する。ホスト・インタフェース手段2
1では、ユーザが、ブロック記述アレイ22と現在状態
アレイ23を、シミュレーションの初めに初期化し、シ
ミュレーションの終わりに結果をテストできる。またシ
ミュレーションの間に、現在状態アレイ23の内容を読
み取って変更を加え、シミュレーション能力を高めるこ
ともできる。ホスト・インタフェースは、米国特許出願
07/502147(1990年3月30日出願)の主
題になっている。
【0032】ここで図10、図11により、この実施例
のロジック・シミュレーション・マシン1によってシミ
ュレートされるモデルのコンパイル方法について説明す
る。この方法は、シミュレート対象のモデルの命令を、
その前にホスト・コンピュータ5からシミュレーション
・プロセサ2にロードされる命令リストにおいて、”ラ
ウンド・ロビン”方式で各シミュレーション・プロセサ
に割り当てるステップから成る。命令リストでは、ブロ
ック命令が第1シミュレーション・プロセサからスター
トして16番目のプロセサに進み、第1プロセサに戻っ
てこのシーケンスが繰り返される。この方法ではまた、
プロセサに対する同一の16の制御命令の組が、ブロッ
ク記述命令と同じシーケンスで、命令リストのk ×1
6(kは整数)で始まるロケーションに挿入される。1
6はグループ(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、000
1、0010、...、1111の命令を受け取り、ブ
ロック記述アレイ22に、第1アドレスから連続して格
納する。したがって、図12に示すように、スロット手
段0、1、...、15に装着されたシミュレーション
・プロセサ2は、ゲート0、16、32、...、ゲー
ト1、17、33、...、及びゲート15、31、4
7、...に対するブロック記述命令を、各々のブロッ
ク記述アレイ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が、その結果を、データ・ライン3
Aの割当ラインに並列に送出し、すべてのシミュレーシ
ョン・プロセサ2が、データ・ライン3Aからの結果で
各々の現在状態アレイ23を更新する。
【0038】動作モードのサイクルごとに、シミュレー
ション・バス手段3に装着された各シミュレーション・
プロセサ2において、ブロック記述アレイ22からホー
ルト・コマンドが検出されるか、またはホスト・コンピ
ュータ5がシミュレーションを停止するまで、以下のス
テップが同期して実行される。
【0039】制御ロジック手段27は、プログラム・カ
ウンタ26を開始アドレスから順次にインクリメント
し、ブロック記述アレイ22から命令を順次に出力す
る。ブロック記述アレイ22が、プログラム・カウンタ
26によってアドレスされると、アレイ22は、対応す
るアドレスに格納された命令を出力する。命令のOPコ
ード・フィールドはラッチ61によってラッチされる。
このOPコード・フィールドは、それがブロック記述命
令であるか、または制御命令であるかを示す。ブロック
記述命令であれば、OPコード・フィールドには、評価
されたゲートの関数が記述される。フィールドA1ない
しA4は、評価されたゲートの4つの入力端子を指定
し、入力端子の現在状態が格納された現在状態アレイ2
3内のアドレスに対応する。
【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、...、及び3
0と31に2ビットの結果を送出する。これにより、こ
のサイクルで算出されたすべての結果がデータ・ライン
3Aに並列に現れる。データ・ライン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は、構成ライン3
C上の一意のデータの下位2ビット・データと同じ図1
0、図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は、データ・ライン3
B上の結果で更新される。この構成では、同じ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は、A
ETデータをシミュレーションと平行して生成し、ホス
ト・タスクを軽減する。
【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、Z
1、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である。ただ
し、この発明は、シミュレーション・プロセサの数を2
n に制限するものではなく、最大数を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ギャザラの動作を説明する、
変化記録アレイの内容を示すテーブルの図である。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平1−207838(JP,A) 特開 昭63−316140(JP,A)

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 2000-02-10

Publications (2)

Publication Number Publication Date
JPH04225475A JPH04225475A (ja) 1992-08-14
JPH0690714B2 true 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
JPH04225475A (ja) 1992-08-14
EP0450837A3 (en) 1993-02-03

Similar Documents

Publication Publication Date Title
US5327361A (en) Events trace gatherer for a logic simulation machine
US5548785A (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
JP2989518B2 (ja) 多重プロセッサ・エミュレーション・システム
CA1246743A (en) Array for simulating computer functions for large computer systems
Jones et al. The Cm* multiprocessor project: A research review
EP0665998A1 (en) Microprocessor-based fpga
JPH0764853A (ja) Simdマルチプロセッサ用の可変正確度間接的アドレス方法およびそれを行う装置
JP3896177B2 (ja) エミュレーションシステム
JPS58501560A (ja) マイクロプロセツサ
JP2004519041A (ja) 効率的なデータロード及びアンロードのために統合されるパケット基準のプロトコル論理を用いるハードウェア支援設計検証システム
GB2073923A (en) Branching in computer control store
CA1182579A (en) Bus sourcing and shifter control of a central processing unit
JPH0690714B2 (ja) ロジック・シミュレーション・マシン及び処理方法
JPS6141017B2 (ja)
US10409624B1 (en) Data array compaction in an emulation system
JP3212709B2 (ja) ロジックシミュレーション装置
Denneau et al. Design and implementation of a software simulation engine
EP0449579A2 (en) A logic simulation machine
EP0483965A2 (en) Logic simulation
EP1187043A2 (en) Gate addressing system for logic simulation machine
US20080270748A1 (en) Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
JP3424430B2 (ja) プロセッサ
EP0231948A2 (en) Simulation system