JP2009527858A - 可変入力プリミティブを有するハードウェアエミュレータ - Google Patents
可変入力プリミティブを有するハードウェアエミュレータ Download PDFInfo
- Publication number
- JP2009527858A JP2009527858A JP2008556391A JP2008556391A JP2009527858A JP 2009527858 A JP2009527858 A JP 2009527858A JP 2008556391 A JP2008556391 A JP 2008556391A JP 2008556391 A JP2008556391 A JP 2008556391A JP 2009527858 A JP2009527858 A JP 2009527858A
- Authority
- JP
- Japan
- Prior art keywords
- primitive
- data
- vip
- function
- input
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
第1の入力幅を有する関数を評価するための第1のプリミティブと、第1のプリミティブに結合された第2のプリミティブであって、第2の入力幅を有する関数を評価するための第2のプリミティブと、を有し、第1の入力幅が第2の入力幅に等しくないハードウェアエミュレータである。第1のプリミティブ又は第2のプリミティブの何れかの一方の使用は、評価される関数に応じて選択される。
【選択図】 図3
【選択図】 図3
Description
[0001]本発明の実施形態は、広く、ロジックゲートで構成されたシステムをエミュレートするハードウェアエミュレータに関するものであり、より詳細には、可変入力プリミティブを有するハードウェアエミュレータに関するものである。
[0002]ハードウェアエミュレータは、ハードウェア設計の検証に用いられるプログラマブル装置である。ハードウェア設計検証の一般的な方法は、プロセッサベースのハードウェアエミュレータを使用して、設計をエミュレートする。これらプロセッサベースのエミュレータは、組み合わせロジックレベルを、入力から始めて出力へ向かって、順次に評価する。ロジックレベルの全セットを通る各経路はサイクルとして知られており、各個別のロジックレベルの評価はエミュレーションステップとして知られている。
[0003]典型的なハードウェアエミュレータは、同一出願人による米国特許であって、“Clustered Processors in an Emulation Engine”と題する米国特許第6,618,698号に記載されている。この米国特許は、その全体を参照することによって、本明細書に援用されている。ハードウェアエミュレータによって、エンジニア及びハードウェア設計者が、最初にハードウェアを物理的に製造することなく、集積回路、集積回路のボード全体、又は、システム全体の動作を試験し検証することが可能になる。
[0004]集積回路内に存在するロジックゲートの複雑さ及び個数は、過去数年の間に著しく増大している。ハードウェアエミュレータは、集積回路の複雑さの増大に遅れをとらないように効率を高めることが必要である。ハードウェアエミュレータが集積回路をエミュレートする際の速度及びロジックゲート効率は、エミュレータの効率の最も重要なベンチマークのうちの一つであり、また、エミュレータ市場におけるエミュレータの最も重要な販売要因の一つである。
[0005]ハードウェアエミュレータは、複数のプロセッサを備えており、これらプロセッサは、一般的に、プロセッサモジュールの一部となっており、プロセッサモジュールはプロセッサ及び関連する補助回路を備えている。プロセッサモジュールは、クラスタと呼ばれるプロセッサモジュールのグループに編成され、プロセッサモジュールのクラスタは、ハードウェアエミュレータのコア要素を形成するエミュレーションエンジンを集合的に構成する。各プロセスサイクル中に、各プロセッサは、集積回路内のロジックゲートの関数を模倣して、ロジックゲートをエミュレートすることができる。プロセッサは、集積回路内に存在するロジックゲートが多数の結果を並列に計算する方法と同様に、結果を並列に計算するように構成されている。これは集積回路内に現れるロジックと類似したロジックの連鎖を作成する。ロジックの連鎖では、プロセッサ間の効率的な通信が重要である。
[0006]プロセッサは、少量の入力データ、典型的には、4ビットの入力データを受信し、「プリミティブ」を利用して、エミュレートされているハードウェアのロジックゲートによって実行されるであろうロジック関数をエミュレートする。評価として知られているプロセスでは、プリミティブは、エミュレートされているゲートによって実行される関数をエミュレートするために、入力データを出力ビットに変換する。得られるビットは、エミュレートされている一以上のゲートによって生成されるであろう出力である。このように、プリミティブは、ゲートによって実行される関数を評価するために使用される。このような評価を容易にするために、プリミティブは、ルックアップテーブルを備えており、当該ルックアップテーブルは、評価されている関数の考え得る結果(出力ビット値)の全てをもつロジックテーブルを含んでいる。ロジックテーブルは全ての考え得る入力データの組み合わせを全ての考え得るビット値にマッピングする。4入力プリミティブは、関数の全ての考え得る有効な結果を生じることを可能とするよう、16ビットの出力データを含むロジックテーブルを備えている。4ビットの入力ビットが、本質的に、特定の4ビットの入力ビットのセットに対する関数の出力を形成するデータビットを含むルックアップテーブル内の場所を選択するアドレスとして使用される。入力ビットから出力ビットへの適切なマッピングを設定することにより(すなわち、適切なテーブル値をロードすることにより)、ロジックテーブルは4ビット以下の入力ビットを使用するあらゆる関数の有効な結果を提供する。
[0007]エミュレートされるゲートがより多数(例えば、5ビット以上)の入力ビットを有するある種のエミュレータでは、5ビット以上の入力データを有するプリミティブをプロセッサに利用させることが望ましい。一つの解決策は、多入力ゲートの関数を多数のレベルの4入力プリミティブに分解することである。各レベルは、全ゲート関数の一部分を実行し、各レベルの出力は、多入力ゲートの最終的な出力を得るために、他のレベルを表す他のプリミティブの出力と合成される。このようなゲートの多重レベル評価を容易にするために、入力データは多数の部分に分割され、別個のプリミティブが各部分を処理する。データ部分のそれぞれの評価はエミュレーションサイクルの単一ステップの間に行われる。各データ部分を評価するためにより多くのプリミティブが必要とされるほど、所与のゲートの最終的な出力を計算するためにより多くのステップが必要とされる。さらに、プリミティブの個数が増加するのにつれて、プリミティブ用に必要なチップ面積が増加する。例えば、Nビット×Nビットの乗算器は2×Nビットの積を必要とする。N=2の場合には、4入力プリミティブだけが必要とされる。しかしながら、N=4の場合には、全部で248個の4入力プリミティブが評価される必要がある。N=8の場合には、16個の16入力プリミティブが積を与えるために評価されるであろう。16入力プリミティブのそれぞれは、8095個の4入力プリミティブを必要とする。完全な積は129520個の4入力プリミティブを必要とする。したがって、このような解決策は、エミュレーションステップの使用においてもチップ面積の使用においても非効率的である。
[0008]従来技術で使用されている第2の解決策では、より大規模なプリミティブを使用して、多入力ゲートをエミュレートすることができる。より大規模なプリミティブは、より高速な計算を実行することを可能とする。これは、評価すべきロジックのレベルがより少ないからである。すなわち、単一のプリミティブが多数のロジックのレベルを表現できるからである。しかしながら、プリミティブによって使用されるルックアップテーブルのサイズ(すなわち、ロジックテーブルを記憶するハードウェア)は、プリミティブの入力サイズに指数関数的に関係しているので、より大規模なプリミティブは、ルックアップテーブルを収容するために想到に大きなチップ面積を必要とする。したがって、結局のところ、実際に実現可能なハードウェアエミュレータチップのサイズが、大規模プリミティブの使用を制限する。
[0009]したがって、多入力ゲートエミュレーションを容易にするためにハードウェアエミュレータにおけるプリミティブの利用を改良する方法及び装置が当技術分野において必要とされている。
[0010]本発明は、第1の入力幅を有する関数を評価するための第1のプリミティブと、第1のプリミティブに結合された第2のプリミティブであって、第2の入力幅を有する関数を評価するための第2のプリミティブとを有し、第1の入力幅が第2の入力幅に等しくないハードウェアエミュレータである。第1のプリミティブ又は第2のプリミティブの何れかの一方の使用は、評価される関数に応じて選択される。したがって、関数を評価するために使用されるロジックテーブルをエミュレーションのコントロールワードの中に組み込むことが非現実的である場合には、本発明は、第2のプリミティブを使用し、この場合には、ロジックテーブルがコントロールワードから分離して記憶される。第2のプリミティブは、可変入力幅、すなわち、エミュレーションステップ間で変化し得る入力幅を有する関数を評価してもよい。
[0011]上記の本発明の特徴が詳細に理解され得るように、上に簡単に要約した本発明のより具体的な説明を、実施形態を参照して行う。これら実施形態のうち一部は、添付の図面に示されている。しかしながら、添付の図面は本発明の典型的な実施形態のみを例示しており、本発明はその他の同等に効果的な実施形態を認め得るものであるので、添付図面は本発明の範囲を制限していると考えるべきではないことに注意すべきである。
[0016]本発明は、可変入力プリミティブを有するハードウェアエミュレータである。ハードウェアエミュレータで使用される典型的なエミュレーションエンジンは、米国特許第6,618,698号、“Clustered Processors in an Emulation Engine”、及び、米国特許第5,551,013号、“Multiprocessor for Hardware Emulation”に開示されている。これら特許は、その全体を参照することによって本明細書に援用されている。これら特許に記載されているようなエミュレーションエンジンは、本発明の可変入力プリミティブの使用による恩恵を受けることが可能である。
[0017]図1はハードウェアエミュレータシステム100の概略図である。システム100は、コンピュータワークステーション105と、エミュレーションサポート機構110と、(エミュレーションシステム120と称されることもある)エミュレーションエンジン120と、ターゲットシステム130と、を備えている。コンピュータワークステーション105は、エミュレーションサポート機構110に結合されている。コンピュータワークステーション105は、エミュレーションエンジン120とのインターフェイスをユーザに提供しており、ユーザがエミュレーションプロセスを制御し、解析のためにエミュレーション結果を収集することを可能とする。エミュレーションサポート機構110は、ワークステーションインターフェース、プログラムコンパイル、パワーシーケンシング、プログラムローディング、及び、データキャプチャを行う。プログラミング情報及びデータは、サポート機構110からエミュレーションエンジン120へロードされる。
[0018]エミュレーションサポート機構110から受信されたプログラミングに応答して、エミュレーションエンジン120は、複数のエミュレーション集積回路140(エミュレーションチップ)を利用して、ターゲットシステム130の一部分125をエミュレートする。ターゲットシステム130の一部分125は、集積回路、メモリ、プロセッサ、又は、プログラミング言語でエミュレートされ得る任意のオブジェクト若しくは装置であってもよい。よく知られているエミュレーション言語には、Verilog及びVHDLがある。
[0019]図2は、エミュレーションチップ140のブロック図である。エミュレーションチップ140は、プロセッサモジュール230をもつクラスタ220を備えている。エミュレーションチップ140は、複数の入力及び出力、集合的に210n(ここで、nは整数である)を介して、ターゲットシステム(図1の130)及びエミュレーションサポート機構(図1の110)と通信する。各クラスタ220は、複数のプロセッサモジュール230n(ここで、nは整数である)と、複数のクラスタ入力250及びクラスタ出力240とを備えている。プロセッサモジュール230nは、一般的に互いに同じものである。各クラスタ220の出力240は、相互接続260を介してエミュレーションエンジン200内の他のクラスタ220の入力250へ直接的に接続している。
[0020]クラスタ220n内の各プロセッサモジュール230nには、特定の逐次的なコントロールワードのセットがロードされる。これらのコントロールワードは、プロセッサにロジックゲートをエミュレートさせるために、プロセッサモジュール230nを有するコンポーネントに連続的に供給される。このエミュレーションは、各プロセッサに、特定の時点に特定の入力データのセットに対して特定の関数(プリミティブ)を実行させることにより行われる。入力データは、プロセッサモジュール内、クラスタ中の他のプロセッサモジュール内、又は、他のクラスタ内で生成されてもよい。関数の出力は、出力を生成したプロセッサモジュール、クラスタ内の他のプロセッサモジュール、又は、他のクラスタによる使用のために、プロセッサモジュール230nに記憶される。プロセッサモジュール230nを繰り返し利用することによって、ハードウェアロジックで行われるデータ処理が、プロセッサモジュールによってエミュレートされる。プロセッサモジュール230n内のプロセッサの性能を高めるため、本発明は、後述するように、可変入力プリミティブを備える。
[0021]図3は、プロセッサモジュール230のブロック図である。プロセッサモジュール230は、コントロールストアメモリ301と、データアレイ310と、プロセッサ320と、命令アドレスシーケンサ385と、VIP/プロセッサ選択マルチプレクサ325と、可変入力プリミティブ(VIP)390と、を備えている。VIP390は、可変入力プリミティブ(VIP)レジスタ340と、VIPアドレスレジスタ350と、VIPロードレジスタコントロールロジック360と、アドレススイッチ370と、VIPマルチプレクサ380と、を備えている。VIP390は、プロセッサ320をサポートし、プロセッサモジュール230が多(例えば、6ビット幅より大きい)入力ゲートを評価することを可能とするように構成されている。より詳細には、プロセッサ320及びデータアレイ310は、協働して、「少」入力ゲート、例えば、4ビット入力の関数を評価する。しかしながら、必要に応じて、VIP390が、プロセッサ320の能力を増強して、プロセッサモジュール230が「より大規模」な、例えば、6ビットより多い入力幅を有する関数を評価することも可能とする。多入力関数は、多入力ゲート、又は、多数の入力を有する関数を協働して実行する少入力ゲートの組み合わせの何れかを表している。VIP390を使用すると、少入力ゲートの組み合わせを、当該組み合わせ中のゲート毎に少入力プリミティブを使用して評価を実行するよりも少ないプロセッサエミュレーションステップを使用して評価することができる。
[0022]エミュレータの初期化時には、エミュレーションプログラムがコントロールストアメモリ301にロードされる。エミュレーションプログラムは、一連の(多量の)コントロールストアワード302を備える。動作時には、エミュレーションステップ毎に、新しいコントロールストアワード302がメモリ301から供給され、ロジックゲートの関数を表現する出力を生成するためにプロセッサモジュール230のコンポーネントによって使用される。これらのロジック関数は、命令アドレスシーケンサ385によって生成されたタイミングに従って実行される。メモリ301からのコントロールストアワード302は、データアレイ読み出しアドレスをデータアレイ310へ供給して、4入力ビットをプロセッサ320に提供し、将来の使用のためデータアレイ310に記憶されているデータビットの選択を容易とするよう選択ビットをVIP/プロセッサセレクタマルチプレクサ325に提供し、制御情報をVIP390に提供する。各コントロールストアワード302が実行されるとき、特定のデータがデータアレイ310からプロセッサ320へ供給される。VIP390は、プロセッサモジュール230が、プロセッサ幅(例えば、4ビット)より広い入力データ幅を有するゲートをエミュレートすることを可能とする。コントロールストアワード302は、従来型のゲート幅(4ビットプリミティブ)を対象にしたワードと、(例えば、4ビットプリミティブより大きい)幅広いゲート幅をエミュレートすることが意図されているワードとを含み得る。本明細書では、従来型の処理用のコントロールストアワード302を従来型のワード306と称し、VIP処理に使用されるコントロールストアワード302をVIPワード304と称する。従来型のワード306は、関数を評価するためにプロセッサによって使用されるロジックテーブルを含み、VIPワードに関連付けられているロジックテーブルは非常に大きいのでVIPワード自体の中に収められない。したがって、VIP処理のためのロジックテーブルはVIPワードから分離したメモリに記憶される。プロセッサモジュール230は、可変入力処理を必要に応じて実行して従来型の入力ゲート又は幅の広い入力ゲートの何れかをエミュレートするよう、何れのタイプのコントロールストアワードをもシームレスに利用する。
[0023]4ビット関数を評価するために、プロセッサ320は、16ビットルックアップテーブル(すなわち、4ビット選択アドレスを有する16ビットマルチプレクサ)として動作する。データビットをルックアップテーブルに投入するために使用されるロジックテーブルは、従来型のワード306の中に含まれている。VIPワード304が使用される場合には、VIP390が、プロセッサ320が取り扱える幅より広い幅を有する関数を評価するために、有効状態にされる。例えば、VIPワード304は、128ビットロジックテーブルを選択してVIP390にロードするために8ビットを使用し、ロジックテーブル(すなわち、7ビット選択アドレスを有する128ビットマルチプレクサ)から特定の出力ビットを選択するために7ビットを使用することにより、15ビット関数が評価され得るようにする。
[0024]一般的に、従来型のワードは、評価の際にプロセッサ230によって使用される16ビットロジックテーブルを含んでいる。エミュレーションサイクルのステップ中に、従来型のワードは、ロジックテーブルをプロセッサに提供し、データアレイ310から4入力ビットをアドレス指定する。選択された入力データを使用して、プロセッサ320は、マルチプレクサ325を介して記憶のためにデータアレイ310へ送られる1ビット出力を生成する。処理に利用可能なデータアレイ310内の入力データは、プロセッサ320、VIP390、クラスタ内の他のプロセッサ、及び、その他のクラスタからのデータを含む。データアレイは、バス312に結合されており、当該バス312は、データアレイを他のクラスタ及びプロセッサに接続して、データがプロセッサ及びクラスタの間で共有され得るようにする。
[0025]幅の広い関数を処理するために、特定の幅の広いロジックテーブルがコントロールストアメモリ301(又は、プロセッサモジュール230内の他のメモリ)に記憶される。ロジックテーブルは、コントロールワードスタックによって使用されていないメモリ301の一部分に記憶される。コントロールストアワード(CSW)としてVIPワード304が出現した時に、VIP390は有効状態にされ、特定のVIPロジックテーブル308が多入力ゲートの評価を容易にするためにVIP390にロードされる。VIPワード314からの情報とデータアレイ310からの選択された入力データとの双方を使用して、VIP390は、データアレイ310に記憶するためにマルチプレクサ325を介して結合されている1ビット出力を発生する。
[0026]より詳細には、「多」入力ゲート(又は少入力ゲートの組み合わせ)が評価される場合には、CSWは、VIPマルチプレクサ380に結合されるVIPワード304を含んでいる。VIPワード304は、特別に設計された命令語であり、必要に応じて、VIP390を有効状態とし、幅の広い入力ゲートの関数を評価するためにVIP390に情報を提供する。VIPワード304に応答して、データアレイ310は、入力データをVIPマルチプレクサレジスタ340及びVIPアドレスレジスタ350に提供する。入力データは、クラスタ内の他のプロセッサ、他のクラスタ、VIP390の前の出力、又は、プロセッサ320の前の出力からのデータを含んでいてもよい。命令アドレスシーケンサ385は、タイミング情報及び逐次読み出し/書き込みアドレスをデータアレイ310及びVIP390内のアドレススイッチ370に提供する。
[0027]アドレススイッチ370は、命令アドレスシーケンサ385からのアドレス又はVIPアドレスレジスタ350からのアドレスの何れかを選択する。命令シーケンス内の次のコントロールワードを選択するため、シーケンサ385は、スイッチ370を介してアドレスをコントロールストアメモリ301に供給する。アドレス指定されたコントロールワードは、VIPワード304であるならば、VIPマルチプレクサレジスタ340及びVIPアドレスレジスタ350を選択し、VIPロードレジスタコントロールロジック360の制御下でレジスタ340及び350にロードする情報を選択するために、アドレッシング情報を含む。レジスタ350は、結合されたアドレスを、アドレススイッチ370を介して、コントロールストアメモリ301へ提供する。このアドレスは、VIPマルチプレクサ380にロードするVIPロジックテーブル308を選択する。テーブルは、32ビット、64ビット、128ビット、又は、コントロールストアメモリ301によって記憶することができる任意のビット長を含むことができる。一旦ロードされると、選択されたVIPマルチプレクサレジスタ340は、VIP390の出力としてVIPロジックテーブル308の1ビットを選択するために、多ビット選択値を供給する。128ビットロジックテーブルの場合、選択値は7ビットである。その結果、15ビット関数は、適切な128ビットロジックテーブルを選択するために8ビット(上位ビット)を使用し、テーブルからの出力ビットを選択するために7ビット(下位ビット)を使用して評価され得る。
[0028]ゲートの集合をエミュレートするためにVIP390を使用する場合には、単一のVIPワード304が、関数を開始し得る。この関数は、別の場合には、実行のために多数の従来型のワードを必要とするものである。したがって、多数の従来型のコントロールワードに代えてVIPワードを使用することにより、コントロールストアメモリ内のメモリ空間は追加のVIPロジックテーブルを記憶するために利用可能となる。しかしながら、コントロールストアメモリ301は、ロジックテーブルを記憶するためにプロセッサモジュール内で利用可能な唯一のメモリではない。別の実施形態では、VIPロジックテーブルは、コントロールストアメモリ301内の未使用空間内ではなく、リードオンリーメモリ(ROM)に記憶されてもよい。更に別の実施形態として、データアレイ310内の未使用メモリ空間が、VIPロジックテーブルを記憶するために使用されてもよい。
[0029]より詳細には、VIPロードレジスタコントロールロジック360は、「有効化」ビットをVIPマルチプレクサレジスタ340、VIPアドレスレジスタ350、及び、アドレススイッチ370に提供することによりVIP動作を制御する。一般的に、VIPワード304中の単一ビットが、スイッチ370を有効状態にすること、及び、VIP/プロセッサセレクタマルチプレクサ325のVIP入力を選択することを制御する。VIPロードレジスタコントロールロジック360は、VIPマルチプレクサレジスタ340及びVIPアドレスレジスタ350を、それらがデータアレイ310によって提供されたデータを記憶すべきときに、有効状態にする。適切な時点、すなわち、レジスタへのロードが行われた後の次のステップで、VIPロードレジスタコントロールロジック360はまた、コントロールストアメモリ301へ読み出しアドレスを提供して、エミュレートされている多入力ゲート関数に対応する特定のVIPロジックテーブル308にアクセスするために、アドレススイッチ370を有効状態にする。この関数は、その後に、そのステップ中にエミュレートされる。或いは、一旦レジスタへのロードが行われると、別のVIPワードを使用して、後のステップでエミュレーションを可能にしてもよい。
[0030]別の実施形態では、VIPロードレジスタコントロールロジック360は、有効化ビットを、クラスタ内の全部のVIPレジスタ340/350へ(例えば、4セットの有効化ビットを四つのプロセッサモジュールへ)供給してもよい。
[0031]VIPマルチプレクサ380は、コントロールストアメモリ301からVIPロジックテーブル308を受信する。テーブルは、M×Nアレイの関数値であってもよい。ここで、M及びNは整数である。特定の一実施形態では、ロジックテーブルは1×Nアレイである。この場合、Nは、評価されている関数の考えられる結果の個数である。選択されたテーブルは、VIPマルチプレクサ380の入力に与えられる。データアレイ310からのデータ及びVIPワード304の一部分が、VIPマルチプレクサレジスタ340に結合される。この組み合わせは、128ビットテーブルから1ビットを選択する選択値を形成する。VIPマルチプレクサ380によって選択された1ビット出力は、VIP/プロセッサセレクタマルチプレクサ325に結合される。VIP/プロセッサセレクタマルチプレクサ325は、プロセッサ320の出力とVIPマルチプレクサ380の出力との間で選択を行い、次いで、選択された出力をデータアレイ310に書き込む。VIP動作中には、VIP出力ビットがデータアレイ310に書き込まれ、従来型の動作中には、プロセッサビットがデータアレイ310に書き込まれる。
[0032]このようにして、VIPマルチプレクサ380は、VIPロジックテーブル308から1ビット出力を選択する。このVIPロジックテーブル308は、128個のあり得る出力結果を含み、当該128個の出力結果は、7ビット選択値を使用して選択される。したがって、15ビット幅の入力を有するゲートの関数を、7ビット選択値と、メモリ内のテーブルに対する8ビットアドレスと、128ビットロジックテーブルとを使用して評価することができる。15入力プリミティブロジックテーブルを記憶するために使用されるコントロールストアメモリ内の記憶域を使用して、その他の種々の小さいサイズをもつ複数のテーブルを記憶してよもよい。
[0033]図4は、図3に示したVIPを使用する方法である。図4は、図3と共に、プロセッサモジュール230のエミュレーション能力を向上するための本発明を使用する方法を説明している。何れか一つのエミュレーションステップの間に、任意の数の以下のブロックが実行されてもよい。本発明の一実施形態では、ブロック404、406、408、410及び411をエミュレーションサイクルのあるステップで実行して、情報をVIPへロードし、ブロック412、414、416、418、420及び422をエミュレーションサイクルの第2のステップで実行して、関数を評価する。
[0034]方法400はブロック402で開始し、ブロック403へ進み、当該ブロック403で、方法400は、命令がVIPワードであるか否かを問い合わせる。その命令がVIPワードでないならば、方法400はブロック405へ進み、当該ブロック405において、当該命令は、上述したように、従来型のプリミティブを使用して従来通りに処理される。その命令がVIPワードであるならば、方法はブロック404へ進み、当該ブロック404において、コントロールストアメモリ301がVIPワードをVIPロードレジスタコントロールロジック360へ提供する。そのVIPワードは、多入力ゲート関数の評価を開始するために、VIPロードレジスタコントロールロジック360を有効状態にする。
[0035]ブロック406では、VIPロードレジスタコントロールロジック360が、有効化ビットを、VIPマルチプレクサレジスタ340及びVIPアドレスレジスタ350へ供給する。この有効化ビットは、データアレイ310からデータ、例えば、4ビットのデータを受信するよう、VIPマルチプレクサレジスタ340及びVIPアドレスレジスタ350を有効状態にする。ブロック408では、データアレイ310が、データをマルチプレクサレジスタ340及びVIPアドレスレジスタ350に結合する。データアレイ310に記憶されているデータは、プロセッサ310によって処理されたデータ、他のプロセッサによって処理されたデータ、他のクラスタによって処理されたデータ、及び、VIPマルチプレクサ380からの出力データを含む。評価に使用されるデータは、コントロールストアメモリ内の命令に応答して実行される評価を容易にするよう、選択される。
[0036]ブロック410では、VIPロードレジスタコントロールロジック380が、VIPアドレスレジスタ350からのアドレスをメモリ301へ結合するよう、アドレススイッチ370を有効化する。ブロック411では、VIPが、処理のために設定される。ブロック412では、アドレススイッチ370が、アドレスを使用して、コントロールストアメモリ301からVIPロジックテーブルを選択する。ブロック414では、選択されたVIPロジックテーブルが、VIPマルチプレクサ380に提供される。ブロック416では、VIPマルチプレクサレジスタ340に記憶されているデータが、VIPマルチプレクサ380に与えられたVIPロジックテーブルから1ビット出力を選択するために、使用される。ブロック418では、VIPロジックテーブルから選択された1ビット出力が、VIP/セレクタマルチプレクサ325へ提供される。ブロック420では、VIP/セレクタマルチプレクサ325が、データアレイ310へ結合すべきVIP出力を選択する。ブロック422では、選択された出力が、データアレイ310に書き込まれる。この方法400は、ブロック424で終了する。
[0037]可変入力動作は、データの評価を完了するために、2ステップ以上のエミュレーションステップを必要とする。しかしながら、可変入力動作は、より大量のデータを評価することに関して、従来型のプロセッサ動作より効率的である。例えば、可変入力動作は、最小限の2ステップのエミュレーションステップで128ビットデータワードを評価することが可能であり、一方、従来型のプロセッサ動作は、同じ量のデータをエミュレートするために最少で15ステップのエミュレーションステップを必要とするであろう。評価中に、関数を評価するためにプロセッサ320の使用を必要としない数ステップが存在する(すなわち、プロセッサが使用されないステップが存在する)。この状況が発生する場合には、データアレイ310の出力は、VIPレジスタ340/350へリダイレクトされる。データビットの全てを記憶するために必要とされるステップ数は、幅の広い評価を4(すなわち、データアレイ出力の数)で分割した際のビット数に依存する。例えば、15ビット関数がVIPを使用して評価されている場合には、VIPレジスタ340/350に記憶されるデータアレイ310から必要とされるビットの全てをリダイレクトするために、4ステップが必要となる。或いは、データビットを供給するためにクラスタ内の他のプロセッサを使用することにより、レジスタ340/350へのロードを行うために使用されるステップ数を削減することができる。例えば、クラスタ内に4個のプロセッサがあり、4ビットのデータビットが各プロセッサに関連付けられている各データアレイから供給される場合には、VIPレジスタ340/350へのロードを1ステップで行うことができる。
[0038]必要なビットの全てがVIPレジスタ340/350に記憶されると、命令304は、「次のステップでのVIP動作」を示す。この命令は、コントロールストアメモリ301へ送信される次のアドレスとしてVIPアドレスレジスタ値を選択するようにアドレススイッチ370を始動させる。この8ビットアドレスは、1ビットを選択して15ビット評価を完了するために読み出される必要があるロジックテーブルの128ビットスライスを含んでいるワードの位置に過ぎない。VIPマルチプレクサレジスタ340内の全てのビットが、「次のステップでのVIP動作」がVIPワード304によって示される前に、必ずしもロードされなくても構わないことに注意されたい。VIPマルチプレクサレジスタ340へのロードは、VIPワード304の一部を使用して行われてもよい。「次のステップでのVIP動作」がVIPワード304によって示される前に、VIPアドレスレジスタ350には、ロードが行われなければならず、また、当該VIPアドレスレジスタ350が、有効でなければならない。
[0039]次のステップでは、ロジックテーブルがコントロールストアメモリ301のVIPロジックテーブル308から読み出される。この値はVIPマルチプレクサ380へ送信され、当該VIPマルチプレクサ380は、VIPマルチプレクサレジスタ値を使用して、ロジックテーブルから1ビットを選択する。このビットは、VIP/プロセッサセレクタマルチプレクサ325へ送信される。このセレクタマルチプレクサ325はまた、「次のステップでのVIP動作」インジケータを受信している。このインジケータを使用して、セレクタマルチプレクサ325は、マルチプレクサ380の出力がシーケンサ385によってアドレス指定されたデータアレイ310内の場所に記憶されるように、命令する。
[0040]したがって、全部で、一以上のステップがVIPレジスタ340/350へのロードを行うために使用される。ロード時には、信号が、次のステップがVIP動作であることを示す。次のステップ中に、VIP評価が完了し、データアレイに記憶される。
[0041]同じVIP動作が後続のエミュレーションのステップで使用される場合には、その特定のVIP動作が他のステップによって再使用されてもよい。例えば、VIP動作は、VIPレジスタへ再ロードすることなく、繰り返され、そのエミュレーションの後のステップによる引き続く使用のために、VIP動作出力ビットを記憶してもよい。このような再使用は、VIP動作のためのレジスタロードステップを回避し、最終的にエミュレーションサイクルの長さを短縮する。
[0042]エミュレーションサイクルの効率は、データの評価を完了するために任意のプロセッサによって必要とされるエミュレーションステップの最大個数に直接的に関係している。例えば、プロセッサのクラスタが8台のプロセッサを含む場合を考える。少数のプロセッサが、データの評価を完了するために512回のエミュレーションステップを必要とすることがあり、一方、残りのプロセッサはデータの評価を完了するために256回のエミュレーションステップだけを必要とすることがある。エミュレーションサイクルは、全てのプロセッサがデータの評価を完了するまで、すなわち、512回のエミュレーションステップの後まで完了しない。256回のエミュレーションステップ後に、データを評価するために256回のエミュレーションステップだけを必要とするクラスタ内のプロセッサは、残りのエミュレーションサイクルの間、待機状態に留まる。したがって、エミュレーションサイクル中の512回のエミュレーションステップのうちの256回は、7台のプロセッサによって利用されない。最悪ケースの経路におけるステップの個数を削減することは、すなわち、ステップの個数を256以下に削減することは、エミュレーション性能を改善する。さらに、プロセッサのクラスタ中の各プロセッサがエミュレーションサイクル中のほぼ同じ時点でデータの評価を完了することを可能にさせることによって、データを評価する効率が高まる。従来の解決策は、各プロセッサがエミュレーションエンジン内の他のプロセッサとほぼ同じ時点でデータの評価を完了し得るように、各プロセッサに加えられる負荷をバランスさせることを伴うものである。しかし、ある種のタイプのデータは、プロセッサによるデータの評価を完了するために、集約的な処理とより多数のエミュレーションステップとを必要とする。従来型のプロセッサ動作は、4ビット入力から1ビット出力を生成する。すなわち、従来型のプロセッサは、1回のエミュレーションステップ当たりに4ビットのデータを評価する能力しかない。可変入力動作は、従来型のプロセッサ動作より多くのデータのビットを、より少ないエミュレーションステップ中に評価する能力がある。したがって、可変入力動作はエミュレーションエンジンの効率を高める。
[0043]上記の説明は本発明の実施形態を対象としているが、本発明のその他の実施形態及び更なる実施形態を、本発明の基本的な範囲から逸脱することなく、考案することが可能である。本発明の範囲は、特許請求の範囲によって規定されるものである。
Claims (15)
- ハードウェアをエミュレートする方法であって、
第1の入力幅を有する第1のプリミティブを使用して少なくとも1個のゲートの関数を評価するために第1のコントロールワードを実行するステップと、
前記第1の入力幅に等しくない第2の入力幅を有する第2のプリミティブを使用して少なくとも1個のゲートの関数を評価するために第2のコントロールワードを実行するステップと、
の間で選択を行うセレクタ機構を備える方法。 - 前記第1の入力幅が前記第2の入力幅より小さい、請求項1に記載の方法。
- スイッチを使用してコントロールストアメモリから前記第1のコントロールワード及び前記第2のコントロールワードにアクセスするステップを更に含む、請求項1に記載の方法。
- 前記第2のコントロールワードを実行するステップが、
第1の量のデータを第1のレジスタへ供給するステップと、
第2の量のデータを第2のレジスタへ供給するステップと、
メモリからロジックテーブルを選択するために前記第1のレジスタに記憶された前記第1の量のデータを使用するステップと、
前記第2のレジスタに記憶された前記第2の量のデータを使用して前記ロジックテーブルからデータビットを選択するステップと、
を含み、
前記第1の量のデータ及び前記第2の量のデータが、データアレイによって少なくとも部分的に供給され、
前記第1の量のデータ及び前記第2の量のデータが、前記第1のコントロールワード又は前記第2のコントロールワードによって前記データアレイから部分的に選択される、
請求項1に記載の方法。 - 前記ロジックテーブルが、コントロールストアメモリ、データアレイ、又は、リードオンリーメモリのうちの少なくとも一つに記憶される、請求項1に記載の方法。
- 前記第1の入力幅が4ビットであり、前記第2の入力幅が4ビットより大きい、請求項1に記載の方法。
- 前記第2の入力幅が可変である、請求項1に記載の方法。
- 前記第1のプリミティブが第1の出力ビットを発生し、前記第2のプリミティブが第2の出力ビットを発生し、
前記第1のコントロールワードに応答してデータアレイに記憶するために前記第1の出力ビットを選択し、前記第2のコントロールワードに応答してデータアレイに記憶するために前記第2の出力ビットを選択するステップと、
前記第2の出力ビットを生成するために前記第2のプリミティブを再使用するステップと、
を更に含む、請求項1に記載の方法。 - 前記第2のプリミティブが、二つのエミュレーションステップを使用して実行され、
第1のエミュレーションステップが、データを前記第2のプリミティブにロードし、第2のエミュレーションステップが前記関数を評価する、
請求項1に記載の方法。 - 第1の入力幅を有する関数を評価するための第1のプリミティブと、
前記第1のプリミティブに結合された第2のプリミティブであって、前記第1の入力幅に等しくない第2の入力幅を有する関数を評価するための第2のプリミティブと、
を備えるプロセッサモジュールを有するハードウェアエミュレータ。 - 前記第1のプリミティブ又は前記第2のプリミティブを選択的に作動させるために順次に実行されるコントロールワードを記憶するメモリを更に備える、請求項10に記載のハードウェアエミュレータ。
- 前記第2のプリミティブが、
ロジックテーブルからビットを選択するマルチプレクサと、
前記ロジックテーブルからの出力ビットを選択するために前記マルチプレクサに対する選択アドレスを発生する第1のレジスタと、
メモリ内での前記ロジックテーブルの位置に対するアドレスを発生する第2のレジスタと、
を備える、請求項10に記載のハードウェアエミュレータ。 - 前記ロジックテーブルが、前記第2のプリミティブによって評価される前記関数の前記第1の幅に応じた可変サイズを有する、請求項12に記載のハードウェアエミュレータ。
- 前記ロジックテーブルが、コントロールストアメモリ、データアレイ、又は、リードオンリーメモリのうちの少なくとも一つに記憶されている、請求項10に記載のハードウェアエミュレータ。
- プロセッサモジュールを有する複数のクラスタを備え、
各プロセッサモジュールが、
第1の入力幅を有する関数を評価するための第1のプリミティブと、
前記第1のプリミティブに結合された第2のプリミティブであって、前記第1の入力幅に等しくない第2の入力幅を有する関数を評価するための第2のプリミティブと、
前記第1のプリミティブ又は前記第2のプリミティブを選択的に作動させるために順次に実行されるコントロールワードを記憶するメモリと、
前記第1のプリミティブが第1の関数を評価しているときに前記第1のプリミティブからの第1の出力を記憶し、前記第2のプリミティブが第2の関数を評価しているときに前記第2のプリミティブからの第2の出力を記憶するデータアレイと、
を有する、ハードウェアエミュレーションシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/358,527 US8090568B2 (en) | 2006-02-21 | 2006-02-21 | Hardware emulator having a variable input primitive |
PCT/US2007/004435 WO2007098172A2 (en) | 2006-02-21 | 2007-02-21 | Hardware emulator having a variable input primitive |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009527858A true JP2009527858A (ja) | 2009-07-30 |
Family
ID=38429403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008556391A Pending JP2009527858A (ja) | 2006-02-21 | 2007-02-21 | 可変入力プリミティブを有するハードウェアエミュレータ |
Country Status (4)
Country | Link |
---|---|
US (1) | US8090568B2 (ja) |
EP (1) | EP1987427A4 (ja) |
JP (1) | JP2009527858A (ja) |
WO (1) | WO2007098172A2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725304B1 (en) * | 2006-05-22 | 2010-05-25 | Cadence Design Systems, Inc. | Method and apparatus for coupling data between discrete processor based emulation integrated chips |
US8959010B1 (en) | 2011-12-08 | 2015-02-17 | Cadence Design Systems, Inc. | Emulation system with improved reliability of interconnect and a method for programming such interconnect |
US8743735B1 (en) | 2012-01-18 | 2014-06-03 | Cadence Design Systems, Inc. | Emulation system for verifying a network device |
US9372947B1 (en) | 2014-09-29 | 2016-06-21 | Cadence Design Systems, Inc. | Compacting trace data generated by emulation processors during emulation of a circuit design |
US10133836B1 (en) | 2016-09-21 | 2018-11-20 | Cadence Design Systems, Inc. | Systems and methods for on-the-fly temperature and leakage power estimation in electronic circuit designs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773066A (ja) * | 1993-06-24 | 1995-03-17 | Pie Design Syst Inc | メモリ回路構成法および装置 |
JPH10247150A (ja) * | 1997-03-05 | 1998-09-14 | Hitachi Ltd | データ処理システム |
JP2001249824A (ja) * | 2000-03-02 | 2001-09-14 | Hitachi Ltd | 論理エミュレーションプロセッサおよびそのモジュールユニット |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
US5426378A (en) * | 1994-04-20 | 1995-06-20 | Xilinx, Inc. | Programmable logic device which stores more than one configuration and means for switching configurations |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US6590415B2 (en) * | 1997-10-09 | 2003-07-08 | Lattice Semiconductor Corporation | Methods for configuring FPGA's having variable grain components for providing time-shared access to interconnect resources |
US6051030A (en) * | 1998-03-31 | 2000-04-18 | International Business Machines Corporation | Emulation module having planar array organization |
US6618698B1 (en) * | 1999-08-12 | 2003-09-09 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
TWI259381B (en) * | 2001-05-29 | 2006-08-01 | Glovic Electronics Corp | Integrated device of simulation circuit and processor |
US7337103B2 (en) * | 2004-01-15 | 2008-02-26 | International Business Machines Corporation | Method and apparatus for the automatic correction of faulty wires in a logic simulation hardware emulator / accelerator |
-
2006
- 2006-02-21 US US11/358,527 patent/US8090568B2/en not_active Expired - Fee Related
-
2007
- 2007-02-21 WO PCT/US2007/004435 patent/WO2007098172A2/en active Application Filing
- 2007-02-21 JP JP2008556391A patent/JP2009527858A/ja active Pending
- 2007-02-21 EP EP07751209A patent/EP1987427A4/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0773066A (ja) * | 1993-06-24 | 1995-03-17 | Pie Design Syst Inc | メモリ回路構成法および装置 |
JPH10247150A (ja) * | 1997-03-05 | 1998-09-14 | Hitachi Ltd | データ処理システム |
JP2001249824A (ja) * | 2000-03-02 | 2001-09-14 | Hitachi Ltd | 論理エミュレーションプロセッサおよびそのモジュールユニット |
Also Published As
Publication number | Publication date |
---|---|
WO2007098172A2 (en) | 2007-08-30 |
US20070198241A1 (en) | 2007-08-23 |
US8090568B2 (en) | 2012-01-03 |
EP1987427A4 (en) | 2010-01-20 |
WO2007098172A3 (en) | 2007-12-06 |
EP1987427A2 (en) | 2008-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3995751B2 (ja) | メモリをエミュレートするためのシステム及び方法 | |
US6588006B1 (en) | Programmable ASIC | |
US7260794B2 (en) | Logic multiprocessor for FPGA implementation | |
US5925124A (en) | Dynamic conversion between different instruction codes by recombination of instruction elements | |
US7444276B2 (en) | Hardware acceleration system for logic simulation using shift register as local cache | |
US7120903B2 (en) | Data processing apparatus and method for generating the data of an object program for a parallel operation apparatus | |
US7904288B1 (en) | Hardware emulator having a variable input emulation group | |
JP2021507383A (ja) | ニューラルネットワークプロセッサに対する統合メモリ構造 | |
US9069918B2 (en) | System and method implementing full-rate writes for simulation acceleration | |
US9171111B1 (en) | Hardware emulation method and system using a port time shift register | |
CN1313957C (zh) | 使用综合用于有效数据加载和下载的基于分组的协议的逻辑的硬件辅助的设计验证系统 | |
EP1845462B1 (en) | Hardware emulations system for integrated circuits having a heterogeneous cluster of processors | |
US8706469B2 (en) | Method and apparatus for increasing the efficiency of an emulation engine | |
US7827023B2 (en) | Method and apparatus for increasing the efficiency of an emulation engine | |
JP2009527858A (ja) | 可変入力プリミティブを有するハードウェアエミュレータ | |
CN111916120B (zh) | 带宽提升的堆叠存储器 | |
US8027828B2 (en) | Method and apparatus for synchronizing processors in a hardware emulation system | |
US7606698B1 (en) | Method and apparatus for sharing data between discrete clusters of processors | |
US7725304B1 (en) | Method and apparatus for coupling data between discrete processor based emulation integrated chips | |
US11704535B1 (en) | Hardware architecture for a neural network accelerator | |
CN111694513A (zh) | 包括循环指令存储器队列的存储器器件和方法 | |
US8607029B2 (en) | Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network | |
US6901359B1 (en) | High speed software driven emulator comprised of a plurality of emulation processors with a method to allow high speed bulk read/write operation synchronous DRAM while refreshing the memory | |
JP2006268873A (ja) | 機能シミュレーションのためのハードウェア・アクセラレーション・システム | |
US6542945B1 (en) | Instant configuration of a digital device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120228 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120501 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120717 |