(57)【特許請求の範囲】
【請求項１】
ハードウエアデザインをエミュレートするための装置であって、
データアレイと、
複数のプロセッサと、
を含み、
各プロセッサは、エミュレーションサイクル中に異なる機能を実行し、前記複数のプロセッサのうちデータフェッチプロセッサのみが前記データアレイからデータを検索するよう構成され、前記複数のプロセッサのうちデータ記憶プロセッサのみがデータアレイにデータを書き込むよう構成されている、
ことを特徴とする装置。
【請求項２】
データフェッチ命令メモリ及びデータ記憶命令メモリを更に含むことを特徴とする請求項１に記載の装置。
【請求項３】
計算プロセッサを更に含むことを特徴とする請求項２に記載の装置。
【請求項４】
計算命令メモリを更に含むことを特徴とする請求項３に記載の装置。
【請求項５】
前記データフェッチプロセッサ及び前記データ記憶プロセッサ間の通信のためのクラスター内クロスバーを更に含むことを特徴とする請求項１に記載の装置。
【請求項６】
前記クラスター内クロスバーは、少なくとも１つのマルチプレクサから成ることを特徴とする請求項５に記載の装置。
【請求項７】
前記データフェッチプロセッサ、前記データ記憶プロセッサ、及び前記計算プロセッサ間の通信のためのクラスター内クロスバーを更に含むことを特徴とする請求項３に記載の装置。
【請求項８】
前記クラスター内クロスバーは、少なくとも１つのマルチプレクサから成ることを特徴とする請求項７に記載の装置。
【請求項９】
前記データフェッチ命令メモリ、前記データ記憶命令メモリ、及び前記データアレイにタイミングを提供するためのシーケンサを更に含むことを特徴とする請求項２に記載の装置。
【請求項１０】
前記データフェッチ命令メモリ、前記データ記憶命令メモリ、前記データアレイ、及び前記計算命令メモリにタイミングを提供するためのシーケンサを更に含むことを特徴とする請求項４に記載の装置。
【請求項１１】
前記クラスター内クロスバーは、少なくとも１つの外部ハードウエアデバイスへの通信のための外部接続、及び別のクラスター間クロスバーへのクラスター間クロスバー接続を更に含むことを特徴とする請求項５に記載の装置。
【請求項１２】
前記外部接続に提供するデータを選択するための外部通信コントローラを更に含むことを特徴とする請求項１１に記載の装置。
【請求項１３】
前記クラスター間クロスバー接続に提供するデータを選択するためのクラスター間メモリを更に含むことを特徴とする請求項１１に記載の装置。
【請求項１４】
前記クラスター内クロスバーは、少なくとも１つの外部ハードウエアデバイスへの通信のための外部接続、及び別のクラスター間クロスバーへのクラスター間クロスバー接続を更に含むことを特徴とする請求項７に記載の装置。
【請求項１５】
前記外部接続に提供するデータを選択するための外部通信コントローラを更に含むことを特徴とする請求項１４に記載の装置。
【請求項１６】
前記クラスター間クロスバー接続に提供するデータを選択するためのクラスター間メモリを更に含むことを特徴とする請求項１４に記載の装置。
【請求項１７】
ハードウエアデザインをエミュレートする方法であって、
データアレイ及び複数のプロセッサを使用する段階、
を含み、
各プロセッサは、
前記複数のプロセッサのうちデータフェッチプロセッサのみを使用して前記データアレイからデータを検索するとともに、前記複数のプロセッサのうちデータ記憶プロセッサのみを使用してデータアレイにデータを書き込む段階、
前記データフェッチプロセッサ、計算プロセッサ、及び前記データ記憶プロセッサのうちの少なくとも１つを使用して前記検索したデータを評価し、出力ビットを生成する段階、
前記出力ビットをクラスター内クロスバーに供給する段階、及び
前記データ記憶プロセッサを使用して前記出力ビットを前記データアレイに記憶する段階、
を含むエミュレーションサイクル中に、異なる機能を実行する、
ことを特徴とする方法。
【請求項１８】
前記データフェッチプロセッサは、命令ワードを使用し、該命令ワードは、データを前記データアレイから検索するデータフェッチメモリによって供給された該データアレイから該データにアクセスするための読取アドレスを収容していることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記データ記憶プロセッサは、命令ワードを使用し、該命令ワードは、前記出力ビットを前記データアレイに記憶するデータ記憶メモリによって供給された前記クラスター内クロスバーからデータにアクセスするための読取アドレスを収容していることを特徴とする請求項１８に記載の方法。
【請求項２０】
ハードウエアデザインを編集する方法であって、
ハードウエアデザインを命令のシーケンスに変換する段階、
データアレイ及び複数のプロセッサを与える段階、
前記複数のプロセッサのうちデータフェッチプロセッサのみが前記データアレイからデータを検索するよう構成するとともに、前記複数のプロセッサのうちデータ記憶プロセッサのみがデータアレイにデータを書き込むよう構成する段階、及び
エミュレーションサイクル中に各々が異なる機能を実行する複数のプロセッサを含むプロセッサの異種クラスターに、前記命令のシーケンス内の各命令を割り当てる段階、
を含むことを特徴とする方法。
【請求項２１】
前記プロセッサの異種クラスターによって実行される命令サイクルに、前記命令のシーケンス内の各命令を割り当てる段階を更に含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
前記プロセッサの異種クラスター内のプロセッサに、前記命令のシーケンス内の各命令を割り当てる段階を更に含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
プロセッサによって実行された時に該プロセッサに方法を実行させるコンピュータ可読媒体上に記憶された複数の命令を含むことを特徴とする請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般的に、プロセッサベースのハードウエアエミュレーションシステム、及びより具体的には、異種プロセッサベースのハードウエアエミュレーションシステムに関する。
【背景技術】
【０００２】
ハードウエアエミュレータは、ハードウエアデザインを検証するのに使用されるプログラマブル装置である。ハードウエアデザイン検証の一般的な方法は、ハードウエアの集積回路を物理的に製造する前にデザインをエミュレートするプロセッサベースのハードウエアエミュレータを使用することである。これらのプロセッサベースのエミュレータは、入力から開始して出力まで進行し、組み合わせ論理レベルを順に評価するものである。論理レベルの組全体を通る各パスは、サイクルとして公知であり、各個々の論理レベルの評価は、エミュレーションステップとして公知である。
【０００３】
例示的なハードウエアエミュレータは、本明細書においてその全内容が引用により組み込まれている「エミュレーションエンジンにおけるクラスター化プロセッサ」という名称の本出願人に譲渡された米国特許第６，６１８，６９８号に説明されている。ハードウエアエミュレータは、エンジニア及びハードウエア設計者が、最初にハードウエアを物理的に製作する必要なく、集積回路、集積回路の基板全体、又はシステム全体の作動を試験及び検証することを可能にする。
集積回路の複雑さ及びそこに存在する論理ゲートの数は、過去数十年に有意に増大している。ハードウエアエミュレータは、集積回路の複雑さが増大するのに合わせて効率を改善する必要がある。ハードウエアエミュレータが集積回路をエミュレートすることができる速度は、エミュレータの効率の最も重要な指標の１つであり、並びにエミュレータ市場におけるエミュレータの最も重要な販売要素の１つでもある。
【０００４】
従来のハードウエアエミュレータは、同一のプロセッサから成っている。プロセッサは、一般的に、クラスターとして公知のプロセッサの群に配置される。従来のハードウエアエミュレータでは、各プロセッサは、同一の組の機能、すなわち、メモリからのデータの検索、データの評価、及び処理結果のメモリへの再書き込みを実行する。プロセッサは、命令ワードを通じてメモリをアドレス指定する。命令ワードは、特別の命令メモリに記憶され、データを評価するための読取アドレスと、プロセッサにデータを評価する方法を指示するブール関数表とを含んでいる。プロセッサは、次に、生成した結果を命令アドレスによって示された同じメモリロケーションに再度記憶する。
【０００５】
従来のハードウエアエミュレータに必要なメモリの量は、ハードウエアエミュレータに存在するプロセッサの数に直接依存する。具体的には、ハードウエアエミュレータは、少なくともプロセッサの数に命令メモリの深さを乗じたものに等しいメモリを収容すべきである。命令ワードは、プロセッサがメモリ内のあらゆるロケーションをアドレス指定することができるようにいくつかのアドレスフィールドを含むべきである。また、各命令実行サイクル中に、各プロセッサは、メモリに対してエネルギを消費する多くの読取及び書込アクセスを実行する必要がある。
【０００６】
【特許文献１】米国特許第６，６１８，６９８号
【特許文献２】米国特許第５，５５１，０１３号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
すなわち、従来のハードウエアエミュレータよりも多くのプロセッサを収容するが、実質的により多くのメモリを必要としないハードウエアエミュレータに対する必要性が当業技術に存在する。
【課題を解決するための手段】
【０００８】
本発明は、一般的に、プロセッサベースの改良型エミュレーションエンジンに関する。ハードウエアデザインをエミュレートするための装置は、プロセッサの少なくとも１つの異種クラスターを形成する複数のクラスターを含み、クラスター内の各プロセッサは、エミュレーションサイクル中に異なる機能を実行する。この装置によって実行される方法は、データフェッチプロセッサを使用してデータアレイからデータを検索する段階、検索したデータをデータフェッチプロセッサを使用して評価し、出力ビットを生成する段階、出力ビットをクラスター内クロスバーに供給する段階、及びデータ記憶プロセッサを使用して出力ビットをデータアレイに記憶する段階を含む。
従って、本発明の上述の特徴を詳細に理解することができる方法で、上述のように簡単にまとめた本発明のより具体的な説明を添付図面にその一部を示す実施形態を参照して行うことができる。しかし、添付図面は、本発明の典型的な実施形態のみを示し、従って、本発明が他の同等に有効な実施形態を受け入れる場合があるので、その範囲を制限するように考えないものとすることに注意されたい。
【発明を実施するための最良の形態】
【０００９】
本発明は、プロセッサの異種クラスターを使用してエミュレーションエンジンの効率を増大する改良型方法及び装置である。例示的なエミュレーションエンジンは、本明細書においてその全内容が引用により組み込まれている「エミュレーションエンジンにおけるクラスター化プロセッサ」という名称の米国特許第６，６１８，６９８号、及び「ハードウエアエミュレーションのためのマルチプロセッサ」という名称の米国特許第５，５５１，０１３号に開示されている。
【００１０】
図１は、エミュレーションシステム１００の概観を示している。システムは、コンピュータワークステーション１０５、エミュレーション基板１２０、及びターゲットシステム１３０を含む。コンピュータワークステーション１０５は、エミュレーション基板１２０にエミュレーションサポート機能を提供する。
コンピュータワークステーション１０５は、少なくとも１つの中央演算処理装置（ＣＰＵ）１０６、サポート回路１０８，及びメモリ１１０を含む。ＣＰＵ１０６は、１つ又はそれよりも多くの従来の利用可能なマイクロプロセッサ及び／又はマイクロコントローラを含む場合がある。サポート回路１０８は、ＣＰＵ１０６の作動をサポートするのに使用する公知の回路である。これらの回路は、電源、クロック、入力／出力インタフェース回路、及びキャッシュなどを含む。
【００１１】
メモリ１１０は、ランダムアクセスメモリ、ＲＯＭ、取り外し可能ディスクメモリ、フラッシュメモリ、光学記憶装置、及びこれらの種類のメモリの様々な組合せを含むことができる。メモリ１１０は、主メモリと呼ばれることがあり、部分的にキャッシュメモリ又はバッファメモリとして使用することができる。メモリ１１０は、オペレーティングシステム（ＯＳ）１１２、コンパイラ１１４，及びエミュレーションサポートソフトウエア１１６のような様々な形式のソフトウエア及びファイルを記憶する。
コンパイラ１１４は、ハードウエアデザイン、例えば、ＶＨＤＬ又はＶｅｒｉｌｏｇに説明されているハードウエアをエミュレーション基板１２０によって評価することができる一連の命令に変換する。
【００１２】
コンピュータワークステーション１０５は、ユーザが、エミュレーション基板１２０とインタフェースで接続し、エミュレーション処理を制御し、解析のためにエミュレーション結果を収集することを可能にする。エミュレーション基板１２０は、個々のエミュレーションチップ１２２1〜１２２64（まとめて１２２）から成っている。コンピュータワークステーション１０５の制御下で、プログラミング情報及びデータは、エミュレーション基板１２０に読み込まれる。
【００１３】
エミュレーションサポートソフトウエア１１６から受け取ったプログラミングに応答して、エミュレーション基板１２０は、ターゲットシステム１３０の一部分１２５をエミュレートする。ターゲットシステム１３０の部分１２５は、集積回路、メモリ、プロセッサ、又はプログラミング言語にエミュレートすることができるあらゆるオブジェクト又はデバイスとすることができる。一般的なエミュレーションプログラミング言語は、Ｖｅｒｉｌｏｇ及びＶＨＤＬを含む。
【００１４】
図２は、エミュレーション基板１２０によって利用されるエミュレーションチップ１２２の展開図である。エミュレーションチップ１２２は、クラスター間クロスバー２１０を通じて互いに通信することができるプロセッサの異種クラスター２０２1〜２０２6（まとめて２０２）を含む。プロセッサの各異種クラスター２０２は、少なくとも１つの入力２０６及び少なくとも１つの出力２０８を有する。入力２０６及び出力２０８は、プロセッサの異種クラスター２０２が、クラスター間クロスバー２１０を通じてプロセッサの他の異種クラスター２０２、外部コネクタ２１２及び２１４を通じて他のエミュレーションチップ、及び外部ハードウエア２１６と通信することを可能にする。外部ハードウエア２１６は、ＶＬＳＩ回路、デバッガ、メモリ、又はエミュレーションチップ１２２が利益を受けることができるハードウエア及びソフトウエアのあらゆる組合せとすることができる。エミュレーションチップ１２２は、他のエミュレーションチップからデータを受け取るための入力コネクタ２１２1〜２１２4（まとめて２１２）と、他のエミュレーションチップにデータを供給するためのチップパッドとして公知の出力コネクタ２１４1〜２１４4（まとめて２１４）とを有する。
【００１５】
図３は、図２に示すプロセッサの異種クラスターのうちの１つ２０２3のブロック図である。クラスター２０２3は、クラスター２０２内のプロセッサ３０２／３０４／３０６の各々が異なる機能を実行するので異種と定義される。各プロセッサ３０２／３０４／３０６は、クラスター２０２内でデータの検索、評価、及び記憶の独特な役割を果たしている。例えば、データフェッチプロセッサ３０２のみが、データアレイ３１４からデータを検索することができ、データ記憶プロセッサ３０６のみが、データアレイ３１４に処理済みデータを書き込むことができる。
【００１６】
クラスター２０２は、少なくとも１つのデータフェッチプロセッサ３０２及びそれに関連するデータフェッチ命令メモリ３０８、少なくとも１つのデータ記憶プロセッサ３０４及びそれに関連するデータ記憶命令メモリ３１０、クラスター内クロスバー３００、データアレイ３１４、シーケンサ３２８、外部通信コントローラ３２２，及びクラスター間メモリ３２０を含む。クラスター２０２はまた、計算プロセッサ３０６及びそれに関連する計算命令メモリ３１２を含む。以下に説明するように、計算プロセッサ３０６及びそれに関連するメモリ３１２は、任意的な構成要素である。
【００１７】
シーケンサ３２８は、データアレイ３１４、データフェッチ命令メモリ３０８、データ記憶命令メモリ３１０、計算命令メモリ３１２、クラスター間メモリ３２０、及び外部通信コントローラ３２２に接続される。シーケンサ３２８は、クラスター２０２にタイミング情報を提供し、データアレイ３１４に連続書込アドレスを提供し、かつデータフェッチ命令メモリ３０８、データ記憶命令メモリ３１０、及び計算命令メモリ３１２に命令ワードを順に出力させる（図４〜６に示す）。命令ワードは、そのそれぞれのプロセッサの作動を制御し、すなわち、データフェッチ命令メモリ３０８によって生成された命令ワードは、データフェッチプロセッサ３０２の作動を制御し、データ記憶命令メモリ３１０によって生成された命令ワードは、データ記憶プロセッサ３０４の作動を制御し、計算命令メモリによって生成された命令ワードは、計算プロセッサ３０６の作動を制御する。シーケンサ３２８はまた、クラスター間メモリ３２０及び外部通信コントローラ３２２に連続命令アドレスを提供することにより、クラスター間メモリ３２０及び外部通信コントローラ３２２の作動を制御する。命令メモリ３０８／３１０／３１２は、そのそれぞれのプロセッサ３０２／３０４／３０６にシーケンサ３２８の制御下で連続的かつ反復的に提供された命令ワードを記憶する。シーケンサ３２８の各増分は、ステップ値をゼロから所定の最大値まで前進させ、エミュレートされたデザインに対する１つのデザイン経路クロックサイクルに対応する。
【００１８】
プロセッサ３０２／３０４／３０６は、エミュレーションエンジン１２０の基本的構成要素である。プロセッサの主要機能は、Ｎ入力論理機能（ここで、Ｎは整数）を実行してシーケンサ３２８の各ステップ中に機能ビット出力を生成するように協働することである。各論理機能に対する入力は、以前の演算から記憶されたビットを含む様々なソースから。又は別の１つ又はそれよりも多くのプロセッサから選択することができる。得られる機能ビット出力は、エミュレートされたデザインの論理ゲート出力、エミュレートされたデザインのレジスタ出力、合成された中間論理状態、又はエミュレーション処理のために発生された制御ビットのうちのいずれか１つに対応することができる。従来のエミュレーションエンジンでは、プロセッサの各々は、互いに同一であり、同一機能を実行することができる。本発明では、プロセッサ３０２／３０４／３０６の各々は、エミュレーションエンジン１２０の作動において独特な役割を果たしている。すなわち、エミュレーションエンジン１２０を形成するクラスター２０２は、異種と考えられる。
【００１９】
データフェッチプロセッサ３０２は、その関連するデータフェッチプロセッサメモリ３０８から命令ワードを受け取る。命令ワードは、データアレイ３１４内のロケーションに対する読取アドレスを含む。データフェッチプロセッサ３０２は、命令ワードによって提供された読取アドレスを使用してデータアレイ３１４からデータを検索する。命令ワードはまた、データアレイ３１４から検索したデータを評価するための操作命令を含む。データフェッチプロセッサ３０２は、命令ワードに従ってデータを評価し、出力ビットを生成する。データフェッチプロセッサ３０２は、クラスター内クロスバー３００に出力ビットを書き込む。
【００２０】
データ記憶プロセッサ３０４は、その関連のデータ記憶プロセッサメモリ３１０から命令ワードを受け取る。命令ワードは、データ記憶プロセッサ３０４が、クラスター内クロスバー３００からデータを選択することを可能にする。命令ワードはまた、クラスター内クロスバー３００から検索したデータを評価するための操作命令を含む。データ記憶プロセッサ３０４は、命令ワードに従ってデータを評価し、出力ビットを生成する。データ記憶プロセッサ３０４は、クラスター内クロスバー３００及びデータアレイ３１４に出力ビットを再度書き込む。出力ビットは、シーケンサ３２８によって提供された書込アドレスでデータアレイ３１４に記憶される。本発明の別の実施形態では、出力ビットは、データ記憶プロセッサ命令ワード内のフィールドによって指定された書込アドレスでデータアレイ３１４に記憶される。
【００２１】
計算プロセッサ３０６は、その関連の計算命令メモリ３１２から命令ワードを受け取る。命令ワードは、計算プロセッサ３０６がクラスター内クロスバー３００からデータを選択することを可能にする。命令ワードはまた、クラスター内クロスバー３００から検索されたデータを評価するための操作命令を含む。計算プロセッサ３０６は、命令ワードに従ってデータを評価し、出力ビットを生成する。計算プロセッサ３０６は、出力ビットをクラスター内クロスバー３００に再度書き込む。
【００２２】
計算プロセッサ３０６及びそれに関連する計算命令メモリ３１２は、任意的であり、本発明の機能には必要ではない。計算プロセッサ３０６は、データアレイ３１４をアドレス指定することができず、処理済みデータをデータアレイ３１４に書き込むこともできない。計算プロセッサ３０６は、クラスター内クロスバー３００をアドレス指定することができるだけである。従って、計算プロセッサ３０６及びそれに関連する計算命令メモリ３１２は、プロセッサの異種クラスター２０２の作動には必要ではない。しかし、計算プロセッサ３０６は、クラスター２０２が１つの命令サイクルで評価することができるデータの量を増加させる。
【００２３】
クラスター内クロスバー３００は、プロセッサ３０２／３０４／３０６が互いに通信することを可能にする。プロセッサ３０２／３０４／３０６は、データを評価し、出力ビットをクラスター内クロスバー３００に書き込む。プロセッサ３０２／３０４／３０６は、データアレイ３１４からデータを検索する必要なくクラスター内クロスバー３００からデータを検索することができる。本発明の一実施形態では、クラスター内クロスバー３００は、少なくとも１つのマルチプレクサから成っている。クラスター内クロスバー３００は、外部入力２０６5及びクラスター２０２を外部ハードウエア２１６に接続する外部出力２０８5と、外部入力２０６6及びクラスター間クロスバー２１０に接続する外部出力２０８6とを有する。
【００２４】
クラスター間メモリ３２０は、クラスター間クロスバー２１０から及びクラスター内クロスバー３００からデータを選択するのに使用する制御ビットを記憶する。シーケンサ３２８は、クラスター間メモリ３２０に「制御ビット」をクラスター内クロスバー３００に出力させる。出力ビットは、クラスター間メモリ３２０によって提供された「制御ビット」を使用して選択され、外部出力２０８6を通じてクラスター間クロスバー２１０に書き込まれる。外部入力２０６6を通じてクラスター内クロスバー３００内に取得されたデータを選択するために、制御ビットの別の組が、クラスター間クロスバー２１０に提供される。
【００２５】
外部通信コントローラ３２２は、クラスター内クロスバー３００からデータを選択するのに使用される「制御ビット」を記憶する。シーケンサ３２８は、外部通信コントローラ３２２に「制御ビット」をクラスター内クロスバー３００に出力させる。出力ビットは、外部通信コントローラ３２２によって提供された「制御ビット」を使用して選択され、外部出力２０８を通じて外部ハードウエア２１６に書き込まれる。制御ビットの別の組は、外部ハードウエア２１６から外部入力２０６5を通じてクラスター内クロスバー３００内へのデータの取得を可能にする。
【００２６】
プロセッサの異種クラスター２０２の作動及びタイミングは、シーケンサ３２８によって制御される。ゼロからシーケンサ３２８の最大値までのシーケンサ３２８の各増分は、エミュレーションステップとして公知である。各エミュレーションステップ中に、シーケンサ３２８により、命令メモリ３０８／３１０／３１２は、命令ワード（図４〜６に示す）をそれらの関連のプロセッサ３０２／３０４／３０６にそれぞれ提供する。各エミュレーションステップは、データが、データフェッチプロセッサ３０２によってデータアレイ３１４から検索され、データフェッチプロセッサ３０２によって評価され、次にデータ記憶プロセッサ３０４によってデータアレイ３１４内に再度記憶されることをもたらす。
【００２７】
図４は、データフェッチ命令ワード４００の一実施形態を表している。データフェッチ命令ワード４００は、データフェッチメモリ３０８に記憶される。一実施形態では、データフェッチ命令ワード４００は、ブール表関数フィールド４０２及び複数のアドレスフィールド４０４1〜４０４4（まとめて４０４）を含む。ブール表関数フィールド４０２の大きさは、２のアドレスフィールドの個数乗によって判断される。この実施形態では、４つのアドレスフィールド４０４1〜４０４4があり、従って、ブール関数表フィールド４０２は、１６ビットを含む。各アドレスフィールド４０４は、１２ビットを有する。従って、データフェッチ命令ワード４００の全長は、６４ビットである。当業者は、データフェッチ命令ワード４００の長さは、ブール関数表フィールド４０２の大きさ及びアドレスフィールド４０４の大きさに依存することを認めるであろう。データフェッチ命令ワード４００は、６４ビットよりも小さいか又は大きくてもよい。
データフェッチプロセッサ３０２は、データフェッチ命令ワード４００を使用してデータアレイ３１４からデータを検索する。アドレスフィールド４０４は、データアレイ３１４のための読取アドレスを提供する。データフェッチプロセッサ３０２は、データアレイ３１４によって供給されたデータをブール関数表フィールド４０２を用いて評価し、出力ビットを生成する。
【００２８】
図５は、データ記憶命令ワード５００の一実施形態を表している。データ記憶命令ワード５００は、データ記憶メモリ３１０に記憶される。データ記憶命令ワード５００は、ブール表関数フィールド５０２及び複数の計算オペランドアドレスフィールド５０４1〜５０４4（まとめて５０４）を含む。データ記憶命令ワード５００内のブール表関数フィールド５０２は、データフェッチ命令ワード４００内のブール表関数フィールド４０２と同じ情報を含む。計算オペランドアドレスフィールド５０４は、全データアレイ３１４ではなくクラスター内クロスバー（ＩＣＣＢ）３００をアドレス指定することだけが必要であるから、データフェッチ命令ワード４００内のアドレスフィールド４０４の大きさよりも小さい。
データ記憶プロセッサ３０４は、データ記憶命令ワード５００を使用してＩＣＣＢ３００からデータを検索する。アドレスフィールド５０４は、ＩＣＣＢ３００のための読取アドレスを提供する。データ記憶プロセッサ３０４は、ＩＣＣＢ３００によって供給されたデータをブール関数表フィールド５０２を用いて評価し、出力ビットを生成する。
【００２９】
図６は、計算命令ワード６００の一実施形態を表している。計算命令ワード６００は、計算メモリ３１２に記憶される。計算命令ワード６００は、ブール表関数フィールド６０２及び複数の計算オペランドアドレスフィールド６０４1〜６０４4（まとめて６０４）を含む。計算命令ワード６００内のブール表関数フィールド６０２は、データフェッチ命令ワード４００内のブール表関数フィールド４０２と同じ情報を含む。計算オペランドアドレスフィールド６０４は、全データアレイ３１４ではなくクラスター内クロスバー（ＩＣＣＢ）３００をアドレス指定することのみが必要であるから、データフェッチ命令ワード４００内のアドレスフィールド４０４の大きさよりも小さい。
計算プロセッサ３０６は、計算命令ワード６００を使用してＩＣＣＢ３００からデータを検索する。アドレスフィールド６０４は、ＩＣＣＢ３００のための読取アドレスを提供する。計算プロセッサ３０６は、ＩＣＣＢ３００によって供給されたデータをブール関数表フィールド６０２を用いて評価し、出力ビットを生成する。
【００３０】
図７は、本発明の一実施形態によるプロセッサの異種クラスター２０２の作動を詳述する方法７００の流れ図である。方法７００は、ブロック７０２で始まり、ブロック７０４に進む。ブロック７０４では、シーケンサ３２８により、データフェッチメモリ３０８が、データフェッチ命令ワード４００をその関連のデータフェッチプロセッサ３０２に出力する。ブロック７０６では、データフェッチプロセッサ３０２は、データフェッチ命令ワード４００によって供給された読取アドレス４０４1〜４０４4を使用してデータアレイ３１４からデータを読み取る。ブロック７０８では、データフェッチプロセッサ３０２は、データフェッチ命令ワード４００の一部であるブール関数表４０２を用いてデータを評価する。
【００３１】
ブロック７１０では、データフェッチプロセッサ３０２は、データ評価の結果であるデータビットを生成し、そのビットをクラスター内クロスバー（ＩＣＣＢ）３００上に置く。ブロック７１２では、シーケンサ３２８により、データ記憶メモリ３１０が、データ記憶命令ワード５００をデータ記憶プロセッサ３０４に出力する。ブロック７１４では、データ記憶プロセッサ３０４は、データ記憶命令ワード５００によって供給された読取アドレス５０４1〜５０４4を使用してＩＣＣＢ３００からデータを読み取る。ブロック７１６では、データ記憶プロセッサ３０４は、データ記憶命令ワード５００の一部であるブール関数表５０２を使用してデータを評価する。ブロック７１８では、データ記憶プロセッサ３０４は、データ評価の結果であるデータビットを生成し、それをデータアレイ３１４に書き込む。本発明の一実施形態では、データビットは、シーケンサ３２８によって生成された、データフェッチプロセッサ３０２が命令ワードを検索するアドレスと同じアドレスに書き込まれる。本方法は、ブロック７２０で終了する。
【００３２】
図８は、クラスター間通信ワード８００の一実施形態を表している。クラスター間通信ワード８００は、クラスター間メモリ３２０に記憶される。クラスター間通信ワード８００は、取得制御フィールド８０２及び送信制御フィールド８０４を含む。送信制御フィールド８０４は、ＩＣＣＢ３００をアドレス指定し、クラスター間クロスバー２１０に送信されるデータを選択する。本発明の一実施形態では、クラスター間クロスバー２１０は、少なくとも１つのマルチプレクサから成っている。取得制御フィールド８０２は、ＩＣＣＢ３００内に取得されるべきデータのビットのクラスター間クロスバー内部の選択を行うのに使用される。このビットは、クラスター間クロスバー２１０を通じてエミュレーションエンジン１２０内のプロセッサの別の異種クラスター２０２のＩＣＣＢ３００によって提供される。
【００３３】
図９は、外部接続性ワード９００の一実施形態を表している。外部接続性ワード９００は、外部接続性メモリ３２２に記憶される。外部接続性ワード９００は、取得制御フィールド９０２及び送信制御フィールド９０４を含む。一実施形態では、取得制御フィールド９０２は、１ビットのみであり、データを外部ハードウエア２１６から選択することを可能にする。送信制御フィールド９０４を使用してデータを選択し、出力ビットを生成する。この出力ビットは、次に、外部ハードウエア２１６に送信される。
【００３４】
図１０は、本発明の一実施形態によりコンパイラ（１１４として図１に示す）によって利用される処理１０００の流れ図である。コンパイラ１１４は、検証を受けているデザイン（ハードウエアデザイン）を命令メモリ３０８／３１０／３１２／３２０／３２２に記憶してプロセッサ３０２／３０４／３０６によって評価することができる命令に変形する。
処理１０００は、ブロック１００２で始まり、ハードウエアデザインを命令のシーケンスに変換する一連の段階を通して進行する。ブロック１００４では、コンパイラは、様々な算術及び論理オプランドをブール関数に変形する技術マッピングを使用する。ブール関数に存在するオプランドの数は、固定値を越えることはできない。一般的に、ブール関数に存在するオプランドの数は、各プロセッサ上の入力ポートの数に等しい。一実施形態では、ブール関数は、各プロセッサ上に存在する４つの入力ポートに適合するように最大で４つのオプランドを有する。
【００３５】
分割ブロック１００６では、技術マッピング段階１００４で生成されたブール関数は、プロセッサの異種クラスター２０２に割り当てられる。コンパイラは、全ての利用可能なプロセッサの異種クラスター２０２の間にブール関数を均等に分配するように試み、また、プロセッサの異種クラスター２０２間の通信の量を最小にするように試みる。命令計画ブロック１００８では、プロセッサの各異種クラスター２０２に割り当てられたブール関数は、更に、クラスターの様々な命令サイクルに割り当てられる。コンパイラは、ブール関数間の因果関係が、これらのオペレーションが計画された命令サイクルのシーケンスに一致することを保証すべきである。例えば、ブール関数Ａが、ブール関数Ｂの評価に依存する場合、ブール関数Ｂは、関数Ａが評価される前に命令サイクルにおいて評価されるべきである。コンパイラは、評価システム１００の性能が、必要な命令サイクルの数に反比例するので、モデル全体を実行するのに必要な命令サイクルの全体数を最小にするように試みる。
【００３６】
タイミング駆動クラスター内配置及び経路指定ブロック１０１０では、同じクラスター内の同じ命令サイクルに割り当てられたブール関数は、更に、クラスター２０２を構成するプロセッサ３０２／３０４／３０６に割り当てられる。コンパイラは、クラスター２０２内の各プロセッサ３０２／３０４／３０６が、固有の目的に対して機能することを知っている。データフェッチプロセッサ３０２のみが、データアレイ３１４からデータを検索することができる。データ記憶プロセッサ３０４のみが、データアレイ３１４にデータを書き込むことができる。データフェッチプロセッサ３０２は、それらの入力をブール関数の識別された組の外部から受け取る機能を実施することができ、一方、データ記憶プロセッサ３０４は、出力値がブール関数の識別された組の外部で使用される機能を実施することができる。
モデル記憶ブロック１０１２は、エミュレーションシステム内に命令をダウンロードするのに便利に使用することができる媒体上に持続形式で記憶されたブロック１００４〜１０１０でコンパイラによって計算された命令のシーケンスをもたらす。様々な種類の媒体上へのそのような記憶の方法は、当業者に公知である。処理１０００は、ブロック１０１４で終了する。
【００３７】
コンパイラは、１つの命令サイクル時間内に、データがデータフェッチプロセッサ３０２によってデータアレイ３１４から検索され、評価され、次に、データ記憶プロセッサ３０４によってデータアレイ３１４に再度記憶されることを保証すべきである。コンパイラは、命令をクラスター２０２内の特定のプロセッサ３０２／３０４／３０６に割り当てる時に、プロセッサの異種クラスター２０２を通る信号の全伝播遅延を考慮すべきである。命令を実行するための時間は、特定のプロセッサ３０２／３０４／３０６による評価時間、並びに信号がクラスター内クロスバー３００上で受ける遅延を含む。命令を実行するための全時間は、１つのエミュレーションステップに対して割り当てられた全時間を超えることはできない。段階１００８においてこの制限を満足するコンパイラの機能は、段階１００４〜１００６で識別された論理ゲートの組の構成に強く依存するので、本発明の一部の実施形態では、これらの段階は、場合によっては望ましい結果が達成されるまでいくつかの反復を通して、協働的に実行される。
本発明の代替的な実施形態として、命令サイクル時間は、クラスター２０２を通して伝播遅延を最小にするのにコンパイラが達成することができると考えられる最良の結果によって判断することができる。別の代替案として、エミュレーションシステム１００は、コンパイラよって計算された結果に鑑みて、異なるサイクル時間を異なる命令に割り当てることができる。
【００３８】
本発明の恩典は、エミュレーション基板上に存在するメモリの量の実質的な増大なしに、エミュレーション基板上に存在するプロセッサの数を増加させることができることである。エミュレーション基板上のプロセッサの一部分のみが、メモリへの直接アクセスを必要とする。メモリの大きさは、メモリから読み取ることができるプロセッサの数に直接依存する。ある一定のプロセッサのみがメモリから読み取ることができるプロセッサの異種クラスターは、メモリの全量が相応に増大する必要がないので、エミュレーション基板上のプロセッサの全体的な増加を可能にする。
以上は本発明の実施形態に関したものであるが、本発明の他の及び更に別の実施形態を本発明の基本的範囲から逸脱することなく考案することができ、本発明の範囲は、特許請求の範囲によって判断されるものとする。
【図面の簡単な説明】
【００３９】
【図１】ハードウエアエミュレーションシステムの全体的概観図である。
【図２】ハードウエアエミュレーションチップのブロック図である。
【図３】プロセッサの異種クラスターのブロック図である。
【図４】データフェッチ命令ワードの図である。
【図５】データ記憶命令ワードの図である。
【図６】計算命令ワードの図である。
【図７】本発明の一実施形態によって利用することができる方法の流れ図である。
【図８】クラスター間通信命令ワードの図である。
【図９】外部接続性命令ワードの図である。
【図１０】本発明の一実施形態によりコンパイラによって利用される処理の流れ図である。
【符号の説明】
【００４０】
１００  エミュレーションシステム
１０５  コンピュータワークステーション
１２０  エミュレーション基板
１３０  ターゲットシステム
【図１】
0005136974.tif 000002
【図２】
0005136974.tif 000003
【図３】
0005136974.tif 000004
【図４】
0005136974.tif 000005
【図５】
0005136974.tif 000006
【図６】
0005136974.tif 000007
【図７】
0005136974.tif 000008
【図８】
0005136974.tif 000009
【図９】
0005136974.tif 000010
【図１０】
0005136974.tif 000011