(58)【調査した分野】(Int.Cl.,DB名)
前記PRモジュールのうちの前記1つの各インスタンスは、該PRモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理とインターフェースをとる、請求項1に記載の方法。
前記割り当てることは、ルーティングリソースをフロアプラン領域から、前記静的論理モジュールおよびPRモジュールの各々に割り当てることを含む、請求項1に記載の方法。
前記拡張することは、各フロアプラン領域の水平境界エッジおよび該フロアプラン領域の各々の垂直境界エッジが、前記標的デバイスの境界または別のPRモジュールに対応する境界エッジに達するまで、該水平境界エッジを垂直方向に動かすことと、該垂直境界エッジを水平方向に動かすこととを含む、請求項6に記載の方法。
前記標的デバイス上にPRモジュールをルーティングすることは、PRモジュールの第1のインスタンスを該PRモジュールの第2のインスタンスと並列にルーティングすることを含む、請求項9に記載の方法。
前記標的デバイス上に前記PRモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該PRモジュールの第2のインスタンスによって使用されるPRモジュールの第1のインスタンスのためのルーティングリソースを優先的に選択することを含む、請求項9に記載の方法。
前記静的論理モジュールおよび前記PRモジュールをルーティングすることは、他の静的モジュールまたはPRモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびPRモジュールによって使用されていない、該静的論理モジュールおよび該PRモジュールのためのルーティングリソースを優先的に選択することを含む、請求項9に記載の方法。
前記静的論理モジュールおよび前記PRモジュールをルーティングすることは、他の静的モジュールまたはPRモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびPRモジュールによって使用されていない、該静的論理モジュールおよび該PRモジュールのためのルーティングリソースを選択することを含む、請求項16に記載の非一時的なコンピュータ読み取り可能な媒体。
前記PRモジュールの前記インスタンスの各々は、該PRモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、請求項16に記載の非一時的なコンピュータ読み取り可能な媒体。
【発明の概要】
【課題を解決するための手段】
【0005】
(要約)
標的デバイス上の部分再構成(PR)モジュールの設置およびルーティングのための方法および装置が開示される。本発明の第1の実施形態に従って、標的デバイス上のリソースは、システムの特定のPRモジュールによって使用されるべきである候補として割り当てられる。この実施形態の局面に従って、PRモジュールのインスタンスが設置およびルーティングされる前に、静的論理モジュールが、設置およびルーティングされ、静的論理モジュールによって使用されていないリソースは、PRモジュールによって使用されるべきである候補として割り当てられる。PRモジュールのインスタンスは、割り当てられたリソースを用いて、標的デバイス上に並列に設置およびルーティングされる。本発明の実施形態に従って、標的デバイス上にPRモジュールを並列に設置し、かつルーティングすることは、時間において同時にPRモジュールを設置およびルーティングすることを含み得る。
【0006】
本発明の第2の実施形態に従って、最初の設置およびルーティングは、モジュールによって使用されるべきである候補のセットを発見するために、静的論理モジュールおよびPRモジュール上で行われる。最初の設置およびルーティングは、禁止を課すことなしに、リソースが使用されている標的デバイスに、標的デバイス上のリソースとモジュールを自由に適合させる。2以上のモジュールと共に用いるように選択された、競合するリソースが識別され、リソースに対して競合する静的論理モジュールおよびPRモジュールに対して仲裁される。最初の一致からの使用されていないリソースは、競合を有する静的論理モジュールおよびPRモジュールに割り当てられる。後の設置およびルーティング(再一致させること)は、仲裁され、かつ割り当てられたリソースを用いて、競合を有する静的論理モジュールおよびPRモジュール上に行われる。
【0007】
本発明の第3の実施形態に従って、最初の一致は、静的論理モジュールおよびPRモジュール上に行われる。最初の一致は、リソースが使用されている禁止部分を強要することなしに、標的デバイス上のリソースを用いて、静的論理モジュールおよびPRモジュールを自由に設置し、かつルーティングする。2以上のモジュールによって使用することによって、競合するリソースが識別される。1つ以上の後の設置およびルーティング(再一致させること)は、このような競合が存在しないまでに、競合を有する静的論理モジュールおよびPRモジュール上に行われる。
【0008】
本発明は、例えば以下の項目を提供する。
(項目1)
標的デバイス上にシステムを設計するための方法であって、該方法は、
該標的デバイス上のリソースを該システムの静的論理モジュールと部分再構成可能(PR)モジュールとに割り当てることと、
該割り当てられたリソースと並列に、該標的デバイス上の該PRモジュールのうちの1つのインスタンスを設置およびルーティングすることのうちの1つを行うことと
を含む、方法。
(項目2)
上記PRモジュールのうちの上記1つの各インスタンスは、該PRモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理とインターフェースをとる、上記項目のいずれかに記載の方法。
(項目3)
上記割り当てることは、ルーティングリソースをフロアプラン領域から、上記静的論理モジュールおよびPRモジュールの各々に割り当てることを含む、上記項目のいずれかに記載の方法。
(項目4)
上記ルーティングすることは、PRモジュールの第1のインスタンスをルーティングするために第1の処理リソースを使用することと、該PRモジュールの第2のインスタンスをルーティングするために第2の処理リソースを使用することと並列に行うことを含む、上記項目のいずれかに記載の方法。
(項目5)
上記PRモジュールをルーティングする前に、割り当てられた続くルーティングリソースを用いて、上記静的論理モジュールをルーティングすることをさらに含む、上記項目のいずれかに記載の方法。
(項目6)
上記静的論理モジュールの使用されていないルーティングリソースを上記PRモジュールに割り当てることをさらに含む、上記項目のいずれかに記載の方法。
(項目7)
使用されていないルーティングリソースを割り当てることは、
上記PRモジュールのための上記標的デバイス上のフロアプラン領域を拡張することと、ルーティングリソースを該PRモジュールの対応するフロアプラン領域から、該PRモジュールの各々に割り当てることとを含む、上記項目のいずれかに記載の方法。
(項目8)
上記拡張することは、各フロアプラン領域の水平境界エッジおよび該フロアプラン領域の各々の垂直境界エッジが、上記標的デバイスの境界または別のPRモジュールに対応する境界エッジに達するまで、該水平境界エッジを垂直方向に動かすことと、該垂直境界エッジを水平方向に動かすこととを含む、上記項目のいずれかに記載の方法。
(項目9)
上記静的論理モジュールおよびPRモジュールは、回路のハードウェア記述言語を含む、上記項目のいずれかに記載の方法。
(項目10)
標的デバイス上にシステムを設計する方法であって、該方法は、
標的デバイス上に静的論理モジュールおよび部分再構成可能な(PR)モジュールをルーティングすることと、
ルーティングリソースに対して競合する静的論理モジュールおよびPRモジュールに対して、競合する該ルーティングリソースを該ルーティングから仲裁することと、
使用されていないルーティングリソースを、該ルーティングから、競合を有する静的論理モジュールおよびPRモジュールに割り当てることと、
仲裁され、かつ割り当てられた該ルーティングリソースを用いて、競合を有する該静的論理モジュールおよびPRモジュールを再ルーティングすることと
を含む、方法。
(項目11)
標的デバイス上にPRモジュールをルーティングすることは、PRモジュールのインスタンスを直列にルーティングすることを含む、上記項目のいずれかに記載の方法。
(項目12)
上記標的デバイス上にPRモジュールをルーティングすることは、PRモジュールの第1のインスタンスを該PRモジュールの第2のインスタンスと並列にルーティングすることを含む、上記項目のいずれかに記載の方法。
(項目13)
上記標的デバイス上に上記PRモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該PRモジュールの第2のインスタンスによって使用されるPRモジュールの第1のインスタンスのためのルーティングリソースを優先的に選択することを含む、上記項目のいずれかに記載の方法。
(項目14)
上記静的論理モジュールおよび上記PRモジュールをルーティングすることは、他の静的モジュールまたはPRモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびPRモジュールによって使用されていない、該静的論理モジュールおよび該PRモジュールのためのルーティングリソースを優先的に選択することを含む、上記項目のいずれかに記載の方法。
(項目15)
競合するルーティングリソースを仲裁することは、タイミング制約またはルーティング制約のうちの1つに応じて、競合状態のルーティングリソースをモジュールに割り当てることを含む、上記項目のいずれかに記載の方法。
(項目16)
上記PRモジュールの各インスタンスは、該PRモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、上記項目のいずれかに記載の方法。
(項目17)
非一時的なコンピュータ読み取り可能な媒体であって、該非一時的なコンピュータ読み取り可能な媒体は、一連の命令が格納されており、該一連の命令は、
標的デバイス上に静的論理モジュールをルーティングすることと、
該標的デバイス上の部分再構成可能(PR)モジュールのインスタンスを並列にルーティングすることと、
該静的論理モジュールおよび該PRモジュールが不当にルーティングされていることを決定するのに応じて、該静的論理モジュールおよび該PRモジュールを再ルーティングすることと
を含む方法をコンピュータに方法を実行させる、非一時的なコンピュータ読み取り可能な媒体。
(項目18)
上記標的デバイス上に上記PRモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該PRモジュールの第2のインスタンスによって使用される該PRモジュールの第1のインスタンスのためのルーティングリソースを選択することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目19)
上記静的論理モジュールおよび上記PRモジュールをルーティングすることは、他の静的モジュールまたはPRモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびPRモジュールによって使用されていない、該静的論理モジュールおよび該PRモジュールのためのルーティングリソースを選択することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目20)
上記PRモジュールの上記インスタンスの各々は、該PRモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目21)
上記再ルーティングすることは、上記静的論理モジュールを並列にルーティングするための第1の処理リソースを使用することと、上記PRモジュールのインスタンスをルーティングするための第2の処理リソースを使用することとを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目22)
上記静的論理モジュールおよび上記PRモジュールが不当に設置されていることを決定するのに応じて、該静的論理モジュールおよび該PRモジュールを並列に再設置することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目23)
上記標的デバイス上にPRモジュールを設置する前に、静的論理モジュールを設置することをさらに含む、上記項目のいずれかに記載の方法。
(項目24)
上記PRモジュールが、並列に設置される、上記項目のいずれかに記載の方法。
(項目25)
標的デバイス上に静的論理モジュールを設置することと、
該標的デバイス上にPRモジュールのインスタンスを並列に設置することと、
設置における不当性を決定するのに応じて、該静的論理モジュールおよび該PRモジュールを並列に設置することと
をさらに含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
(項目1a)
標的デバイス上にシステムを設計するための方法であって、該方法は、
該標的デバイス上のリソースを該システムの静的論理モジュールと部分再構成可能な(PR)モジュールとに割り当てることと、
該割り当てられたリソースを用いて、該標的デバイス上の該PRモジュールのうちの1つのインスタンスを並列にルーティングすることと
を含む、方法。
(項目10a)
上記割り当てられたリソースを用いて、上記標的デバイス上に上記PRモジュールのうちの1つのインスタンスを並列に設置することをさらに含む、上記項目のいずれかに記載の方法。
(項目18a)
非一時的なコンピュータ読み取り可能な媒体であって、該非一時的なコンピュータ読み取り可能な媒体は、コンピュータに方法を実行させるために、該非一時的なコンピュータ読み取り可能な媒体に格納された一連の命令を含み、該方法は、
標的デバイス上の静的論理モジュールをルーティングすることと、
該標的デバイス上のPRモジュールのインスタンスを並列にルーティングすることと、
該静的論理モジュールおよび該PRモジュールが不当にルートされていることを決定するのに応じて、該静的論理モジュールおよび該PRモジュールを再ルーティングすることと
を含む、非一時的なコンピュータ読み取り可能な媒体。
【0009】
(摘要)
標的デバイス上にシステムを設計するための方法は、標的デバイス上のリソースをシステムの静的論理モジュールおよび部分再構成可能な(PR)モジュールに割り当てることを含む。PRモジュールのうちの1つのインスタンスは、割り当てられているリソースからのリソースを利用して並列に設置され、ルーティングされる。他の実施形態も開示される。
【0010】
本発明の特徴および利点は、実施例を通して例示され、しかし、本発明の実施形態の範囲を示される特定の実施形態に限定するように意図されない。
【発明を実施するための形態】
【0012】
以下の説明において、説明の目的のために、具体的な用語は、本発明の実施形態の完全な理解を提供するために説明される。説明における具体的な詳細が本発明の実施形態を辞実践する必要がない場合もあることは、当業者にとって明白である。他の場合において、周知の回路、デバイス、およびプログラムは、本発明の実施形態を必要なしに曖昧にすることを避けるためにブロックダイヤグラムの形式で示される。
【0013】
図1は、本発明の実施形態に従う部分再構成(PR)を使用するシステム100のための代表的な設計を例示するダイヤグラムである。設計100は、5つのより低いレベルのモジュール(A〜E)のインスタンスを作成するトップレベルモジュール110を含む。各モジュールは、レジスタ転送レベルに説明される複数の部品を含む。モジュールA、CおよびE、並びにトップレベルモジュール110は、静的論理モジュールである。本発明の実施形態に従って、静的論理モジュールは、標的デバイス上にプログラム化された後に、変更しない。モジュールBおよびDは、PRモジュールである。PRモジュールBは、B1〜B4とラベル付けされた4つの可能なインスタンスを有する。PRモジュールDは、D1〜D3とラベル付けされた3つの可能なインスタンスを有する。本発明の実施形態に従って、PRモジュールは、複数の可能なインスタンスを含み、PRモジュールの第1のインスタンスは、PRモジュールが標的デバイス上にプログラム化された後に、PRモジュールの第2のインスタンスに変更され得る。PRモジュールの各インスタンスは、PRモジュールのために実装され得る異なるレジスタ転送レベル(RTL)を表す。
【0014】
本発明の実施形態に従って、PRモジュールの各インスタンスは、1つ以上の入力ポートおよび1つ以上の出力ポートを含む。各入力ポートおよび出力ポートは、PRモジュールの境界が論理的に一致であるように、標的デバイス上の同一の静的論理と相互作用する。PRモジュールの各インスタンスの入力ポートは、静的論理の境界において静的論理からデータを受信するために、構成可能なランダムアクセスメモリ(CRAM)によってプログラム化され得る。同様に、PRモジュールの各インスタンスの出力ポートは、静的論理の境界において静的論理からデータを送信するために、CRAMによってプログラム化され得る。PRモジュールの境界において静的論理は、レジスタ、ルックアップテーブル(LUT)、ワイヤ、または他の部品を用いて実装され得ることが認識される。
【0015】
図2は、本発明の代表的な実施形態に従って、静的リソース割り当てを用いて標的デバイス上のPRモジュールを有するシステムを設計するための方法を例示するフローチャートである。標的デバイスは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、構造化されたASIC、または他のプログラマブルデバイスであり得る。一実施形態において、
図2に例示された手順は、コンピュータシステム上に実装されたコンピュータ支援設計(CAD)/自動電子設計(EDA)ツールによって行われ得る。ステップ201において、ハードウェア記述言語(HDL)設計定義は、システムを説明するために生成される。HDLは、レジスタによって提供されるシステムの仕様に応じて生成される。仕様は、設計入力ツールを通じて設計者によって提供され得る。仕様は、システムにおいて、部品および相互接続を説明し得る。本発明の実施形態に従って、仕様の部分の識別は、静的論理モジュールとして実装されるべきであり、PRモジュールはまた、設計者によって提供される。
【0016】
ステップ202において、システムが統合される。統合は、標的デバイスによって実装されるべきであるシステムの倫理設計を生成することを含む。本発明の実施形態に従って、統合は、HDL設計定義から静的論理モジュールおよびPRモジュールを含むシステムの最適化された論理表示を生成する。統合はまた、最適化された論理設計をマップ化することを含む。マッピングは、どのように標的デバイス上の具体的なリソースを用いて最適化された論理表示の論理ゲートおよび論理要素を実装するのを決定することを含む。本発明の実施形態に従って、ネットリストが、マッピングから生成される。このネットリストは、HDLから生成された、最適化されたテクノロジーマップ化されたネットリストであり得る。
【0017】
ステップ203において、フロアプランが、システムの設計のために生成される。本発明の実施形態に従って、フロアプランは、標的デバイス上の物理位置(「フロアプラン領域」)をステップ202において生成された、統合された論理に示す。本発明の実施形態において、標的デバイス上のフロアプラン領域は、統合から生成された静的モジュールおよびPRモジュールの各々に割り当てられ得る。
【0018】
図3は、
図1に例示された設計100のための代表的なフロアプラン300を例示する。フロアプラン領域310、312、314、および315は、それぞれ、静的モジュールA、C、Eおよびトップに割り当てられる。フロアプラン領域311は、PRモジュールBに割り当てられ、従って、暗示的にインスタンスB1〜B4に割り当てられる。フロアプラン領域313は、PRモジュールDに割り当てられ、従って、暗示的にインスタンスD1〜D3に割り当てられる。本発明の実施形態に従って、フロアプラン領域は、任意の寸法または形状を有し、隣接である必要がない。フロアプランは、モジュールに割り当てるためのフロアプラン領域の大きさ、形状、および/または位置について、設計者によって提供される入力に応じてCAD/EDAによって生成され得る。代替的に、フロアプランは、単独に統合出力ネットリストの分析によるCAD/EDAツールによって生成され得、設計者によって提供される任意の出力に独立し得る。
【0019】
図2に戻って参照すると、ステップ204において、標的デバイス上のルーティングリソースは、静的論理モジュールおよびPRモジュールに割り当てられる。本発明の実施形態に従って、モジュールに割り当てられるフロアプラン領域は、静的リソース割り当てのために使用される。この実施形態において、モジュールは、モジュールの割り当てられたフロアプラン領域に配置されるルーティングリソースのみを使用することを可能にされる。静的にルーティングリソースをシステムの静的モジュールおよびPRモジュールを割り当て、かつ割り当てることによって、PRモジュールは、静的論理モジュールのルーティングの間または後に、任意の順序でルーティングされ得る。加えて、PRモジュールのインスタンスのルーティングは、並列に行われ得る。複数のコンピュータノードは、並列のコンパイルを容易にするために利用され得る。本発明の実施形態に従って、コンピュータノードは、設置およびルーティングのようなコンパイル手順を行うための処理手順を含む。コンピュータノードは、コンピュータシステムのプロセッサまたはプロセッサコアーによって実装され得る。
【0020】
ステップ205において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびPRモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびPRモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、最も多くの数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第1のコンパイルの第1のコンピュータノード上に静的論理モジュールの全部と、各PRモジュールの第1のインスタンスとのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第2のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各PRモジュールの残りのインスタンスのコンパイルをスケジュールする。異なるPRモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。複数のこのようなモジュールが、それらが同一の時間においてチップにプログラム化されるときに、同一のリソースを利用し得るので、同一のPRモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされない場合もある。追加のコンパイルは、コンパイルされていないPRモジュールのインスタンスをコンパイルするようにスケジュールされ得る。代替的な実施形態において、1つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【0021】
図4は、
図1に例示された設計100のために、
図3において例示された方法を用いるコンパイルのための代表的なスケジュールを例示する表である。
図4に示されるように、設計100の静的論理モジュールおよびPRモジュールは、2つのコンパイルにおいて3つのコンピュータノードP1〜P3を用いてコンパイルされる。コンパイル1の間に、第1のコンピュータノードP1は、モジュール、トップ、A、B1、C、D1およびEをコンパイルする。コンパイル2の間に、第1のコンピュータノードP1は、モジュールB2およびD2をコンパイルし、第2のコンピュータノードP2は、モジュールB3およびD3をコンパイルし、第3のコンピュータノードP3は、モジュールB4をコンパイルする。
【0022】
図2に戻って参照すると、206において、システムが設置される。本発明の実施形態に従って、設置は、モジュールに割り当てられたフロアプランの領域において、標的デバイス上にマップ化された論理システムを設置することを含む。設置は、機能ブロックの各々のための設置を生成するために、テクノロジーマップ化されたネットリストで働く。本発明の実施形態に従って、設置は、具体的な論理要素のために使用される論理設計上のリソース、および統合の間に決定されたようなシステムを実装するために決定された他の機能ブロックを決定することによって標的デバイス上のシステムを一致させる。設置は、標的デバイス上に存在する論理クラスタリングを形成するために、論理要素を一緒にグループ化することを含むクラスタリングを含み得る。本発明の実施形態に従って、クラスタリングは、設置の早いステージにおいて行われ、設置準備ステージの間に統合の後に発生する。
【0023】
ステップ207において、設置された設計がルーティングされる。本発明の実施形態において、204において、モジュールに割り当てられたルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびPRモジュールの他の部品の間の相互接続を提供するために使用される。ルーティング可能性の最適化はまた、設置された論理設計上に行われ得る。本発明の実施形態に従って、ルーティング可能性の最適化のゴールは、設定された論理設計において部品を接続するために使用された配線の量を減らすことである。ルーティング可能性の最適化は、ファンアウト分割、論理複製、論理再配線、または他の手順を行うことを含み得る。手順おのうちの1つ以上は、設置された論理設計上に行われ得ることが認識される。
【0024】
本発明の実施形態に従って、206および207において説明されたルーティングおよび設置手順が、205において生成されたコンパイルスケジュールに従って行われる。この実施形態において、コンピュータノードは、設置のインスタンスおよび1つ以上のコンパイルのための処理手順を実行するために使用される。各コンピュータノードは、特定のコンパイル数の間に、設置し、かつルーティングするための割り当てられた具体的なモジュールである。複数のコンピュータノードを利用することによって、PRモジュールのインスタンスが並列にルーティングされ得る。
【0025】
208において、組み立て手順が行われる。組み立て手順は、説明されたコンパイル手順によって決定された情報を含む複数のデータファイルを生成することを含む。データファイルは、全部の標的デバイスをプログラム化するために使用され得るビットストリーム、または標的デバイスの具体的な部分のみをプログラム化するために使用され得るビットストリームであり得る。本発明の実施形態に従って、
図2に例示された手順は、第1のコンピュータシステム上に実行されるEDAツールによって実行され得る。生成されたデータファイルは、システムの設計がさらに処理されることを可能にするために、第2のコンピュータシステムに送信され得る。代替的には、データファイルは、システム設計に従って標的デバイスをプログラム化するために使用され得る第2のコンピュータシステムに送信され得る。システムの設計はまた、ディスプレイデバイスまたは他の媒体上のように他の形で出力され得ることが認識される。標的デバイスは、全部のチップをプログラム化し、または初期化するための情報を含むデータファイルを用いてプログラム化され得、チップの部分は、その部分のみをプログラム化するための情報を含む他のデータファイルを用いて再プログラム化され得る。データファイルを有する標的をプログラム化することによって、標的デバイス上の部品は、システムを実装するために、物理的に転送される。
【0026】
図5は、本発明の代表的な実施形態に従う、静的リソース割り当ておよび再割り当てを用いて標的デバイス上のPRモジュールを有するシステムを設計するための方法を例示するフローチャートである。501において、システムのためのHDL設計が生成される。502において、統合がシステム上に行われる。503において、フロアプランがシステムに対して生成される。504において、ルーティングリソースは、システムの静的論理モジュールおよびPRモジュールに割り当てられる。本発明の実施形態に従って、
図2に参照して説明された手順201〜204は、手順501〜504を実装するために使用される。
【0027】
505において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびPRモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびPRモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、最も多くの数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第1のコンパイルの第1のコンピュータノード上に、全部の静的論理モジュールのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第2のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各PRモジュールのインスタンスのコンパイルをスケジュールする。異なるPRモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。同一のPRモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされない場合もある。追加のコンパイルは、コンパイルされていないPRモジュールのインスタンスをコンパイルするようにスケジュールされ得る。別の実施形態において、1つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【0028】
図6は、
図1に例示された設計100のために、
図5において例示された方法を用いるコンパイルのための代表的なスケジュールを例示する表である。
図6に示されるように、設計100の静的論理モジュールおよびPRモジュールは、2つのコンパイルにおいて4つのコンピュータノードP1〜P4を用いてコンパイルされる。コンパイル1の間に、第1のコンピュータノードP1は、静的論理モジュール、トップ、A、CおよびEをコンパイルする。コンパイル2の間に、第1のコンピュータノードP1は、PRモジュールB1およびD1をコンパイルし、第2のコンピュータノードP2は、PRモジュールB2およびD2をコンパイルし、第3のコンピュータノードP3は、PRモジュールB3およびD3をコンパイルし、第4のコンピュータノードP4は、PRモジュールB4をコンパイルする。
【0029】
図5に戻って参照すると、506および507において、システムの静的論理モジュールが設置され、かつルーティングされる。この方式において、
図6からのコンパイル1が行われる。本発明の実施形態に従って、
図2に参照して説明される手順206〜207は、静的論理モジュール上に手順506〜507を実装するために使用され得る。さらに、PRモジュールのインスタンスに対して静的論理モジュールにまたはそれから接続することを必要とされる(「通してルーティングする」)PRモジュールに割り当てられるルーティングリソースは、PRモジュールのインスタンスに再割り当てされる。PRモジュールの割り当てられたフロアプランエリアを通してPRモジュールまたは静的モジュールにまたはそれらからルートしなければならない静的モジュールからの接続は、設計ネットリストの分析によって決定され得る。1つのPRモジュールから別のPRモジュールへの接続は、静的論理境界のみを通して達成され得、それゆえに、接続は、(可能に、PRモジュールに割り当てられたリソースを用いて)静−静的接続として処理され得る。本発明の実施形態に従って、506および507において説明された設置およびルーティング手順は、505において生成されたコンパイルスケジュールの第1の列に従って行われる。
【0030】
508において、修正されたフロアプランが生成される。修正されたフロアプランは、静的論理モジュールに事前に割り当てられたフロアプラン領域のエリアを含むために、PRモジュールに割り当てられたフロアプラン領域を拡張する。本発明の実施形態に従って、PRモジュールに割り当てられた各フロアプラン領域の縁が反復して拡張される手順が利用され得る。この実施形態において、各フロアプラン領域の水平境界のエッジおよび各フロアプラン領域の垂直境界のエッジが、標的デバイスの境界または別のPRモジュールに対応する境界エッジに達するまでに、水平境界のエッジが垂直に動かされ、垂直境界のエッジが水平に動かされる。フロアプランを修正するための、ルーティング可能性およびタイミングの問題が予測されるフロアプラン領域を優先的に成長させる手順を含む他の手順が使用され得ることが認識されるべきである。
【0031】
509において、デバイスリソースが再割り当てされる。静的論理モジュールに事前に割り当てられる、使用されていないリソースが、PRモジュールに再割り当てられる。本発明の実施形態に従って、各PRモジュールは、その割り当てられたフロアプラン領域に配置された使用されていないリソースを使用することを可能にされる。リソースをシステムのPRモジュールに静的に割り当て、かつ割り当てることによって、PRモジュールは、任意の順序で設置され得、かつルーティングされ得る。加えて、PRモジュールのインスタンスの設置およびルーティングが、並列に行われ得る。複数の処理ノードは、並列のコンパイルを容易にするように利用され得る。本発明の実施形態に従って、処理ノードは、設置およびルーティングのようなコンパイル手順を行うために、処理リソースを含む。
【0032】
図7は、本発明の実施形態に従う、静的リソース割り当てのために使用された設計の代表的な修正されたフロアプラン700を例示する。例示されるように、
図3に例示されたPRモジュールBに割り当てられたフロアプラン領域311は、静的論理モジュールトップおよびEに事前に割り当てられたフロアプラン領域を含むように拡張される。静的論理モジュールトップおよびEによって使用されていないリソースは、PRモジュールBに対して有用である。
図3に例示されたPRモジュールDに割り当てられたフロアプラン領域313は、静的論理モジュールA、C、Eおよびトップに事前に割り当てられたフロアプラン領域を含むように拡張される。静的論理モジュールA、C、Eおよびトップによって使用されていないリソースは、PRモジュールDに対して有用である。
【0033】
図5に戻って参照すると、510および511において、システムのPRモジュールが設置され、かつルーティングされる。本発明の実施形態に従って、
図2に参照して説明される手順206〜207は、PRモジュール上に手順510〜511を実装するために使用され得る。本発明の実施形態に従って、510および511において説明された設置およびルーティング手順は、505において生成されたコンパイルスケジュールに従って行われる。この実施形態において、コンピュータノードは、1つ以上のコンパイルのためのルーティングおよび設置の手順のインスタンスを実行するために使用される。各コンピュータノードは、特定のコンパイル数の間に設置し、かつルーティングするための割り当てられた具体的なモジュールである。複数のコンピュータノードを利用することによって、PRモジュールのインスタンスが並列にルーティングされ得る。
【0034】
512において、組み立て手順が行われる。本発明の実施形態に従って、
図2に参照して説明された手順208は、手順512を実装するために使用され得る。
【0035】
図5に説明された方法は、
図2に説明された方法以上のいくつかの利点を提供する。例えば、静的論理モジュールによって使用されていないルーティングリソースを再割り当てることによって、標的デバイス上の使用されていないルーティングリソースがより良く利用され得る。加えて、
図5に説明された方法は、PRモジュールが、インターモジュール通信上の限定を減少させる静的論理モジュールを通してルーティングすることを可能にする。
図2の方法はまた、この増強を用いて修正され得ることが認識される。
【0036】
図8は、本発明の代表的な実施形態に従う、自動発見を有する静的リソース割り当てを用いて標的デバイス上のPRモジュールを有するシステムを設計するための方法を例示するフローチャートである。801において、システムのためのHDL設計が生成される。802において、統合がシステム上に行われる。803において、フロアプランがシステムに対して生成される。本発明の実施形態に従って、
図2に参照して説明された手順201〜203は、手順801〜803を実装するために使用され得る。
【0037】
804において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつ設計の静的論理モジュールおよびPRモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびPRモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルスケジュールは、第1のコンパイルの第1のコンピュータノード上に静的論理モジュールの全部と、各PRモジュールの第1のインスタンスとのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第2のコンパイルにおいてコンパイルされるべきである各PRモジュールの次のインスタンスのコンパイルをスケジュールする。異なるPRモジュールのインスタンスは、同一のコンパイルの間に単一のコンピュータノードによって一緒にコンパイルされ得る。追加のコンパイルは、コンパイルされていないPRモジュールのインスタンスをコンパイルするようにスケジュールされ得る。別の実施形態において、1つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【0038】
図9は、
図1に例示された設計100のための、
図8に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
図9に示されるように、設計100の静的論理モジュールおよびPRモジュールは、4つのコンパイルにおいて単一のコンピュータノードを用いてコンパイルされる。コンパイル1の間に、ノードトップ、A、B1、C、D1およびEが一緒にコンパイルされる。コンパイル2の間に、ノードB2およびD2が一緒にコンパイルされる。コンパイル3の間に、ノードB3およびD3が一緒にコンパイルされる。コンパイル4の間に、ノードB4がコンパイルされる。
【0039】
図8に戻って参照すると、805において、システムの静的論理モジュールおよびPRモジュールが設置される。本発明の実施形態に従って、
図2に参照して説明される手順206は、静的論理モジュールおよびPRモジュール上に手順805を実装するために使用され得る。
【0040】
806において、設置されたシステムがルーティングされる。本発明の実施形態に従って、標的デバイス上のルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびPRモジュールの他の部品の間の相互接続を提供するために選択される。この実施形態において、静的論理モジュールおよびPRモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。ルーティングのためのこの手順は、モジュールが必要とされるルーティングリソースを発見するために自由にルーティングすることを可能にされるので、「自動発見」と呼ばれ得る。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。PRモジュールの第1のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択するよりも、PRモジュールの第2のインスタンスのために使用されるように優先的に選択される。他の静的論理モジュールおよびPRモジュールによって使用されていないルーティングリソースは、より早いコンパイル数において他の静的論理モジュールおよびPRモジュールによって既に使用されたルーティングリソースを選択するよりも、優先的に選択される。
【0041】
本発明の実施形態に従って、805および806において説明された設置およびルーティングの手順は、804において生成されたコンパイルスケジュールに従って行われる。この実施形態において、単一のコンピュータノードは、複数のコンパイルのための設置および処理手順の単一のインスタンスを実行するために使用される。
【0042】
807において、競合する任意のルーティングリソースがあるか否かが決定される。異なるPRモジュールのインスタンスまたはPRモジュールおよび静的論理モジュールのインスタンスによって使用されるために選択されるルーティングリソースが、競合するように考慮される。同一のルーティングリソースを選択するモジュールが、競合するモジュールであるように考慮される。競合するように決定されるルーティングリソースがない場合に、制御は、808へ進む。競合するように決定されるルーティングリソースがある場合に、制御は、809へ進む。
【0043】
808において、制御は、手順を終了させる。
【0044】
809において、競合のルーティングリソースが仲裁される。本発明の実施形態に従って、競合するルーティングリソースの各々は、ルーティングリソースを選択した競合するモジュールのうちの1つに割り当てられる。ルーティングリソースは、モジュール、または他の基準に関連付けられたタイミング制約またはルーティング制約に基づいて仲裁され得ることが認識される。代替的には、ルーティングリソースの仲裁が、ランダム指定に基づき得る。
【0045】
810において、使用されていないルーティングリソースが割り当てられる。806においてルーティングからの使用されていないルーティングリソースは、競合を有する静的論理モジュールとPRモジュールとに割り当てられる。本発明の実施形態に従って、806において発見された詳細なルーティングリソースは、モジュールのルーティングのための候補として割り当てられるべきである更新されたセットのリソースを生成するために使用される。その発見されたリソースのための仲裁においてそのリソースを成功させていない信号は、次回のルーティングにおいて代替的な選択肢へのアクセスを有するために、所望の配線の近傍のリソースに割り当てられる。仲裁および割り当てのための特定の手順に対する詳細は、デバイスのルーティング接続性の仕様に対して特定であることと、他の手順が使用され得ることとが認識されるべきである。
【0046】
811において、新しいコンパイルスケジュールが生成される。新しいコンパイルスケジュールは、いつ競合を有する1つ以上のモジュールが再コンパイルされるかを決定する。行われた再コンパイルは、モジュールのルーティング上に競合を有する1つ以上のネットリストの再ルーティングを含み得る。本発明の実施形態に従って、異なるPRモジュールのインスタンスは、同一の再コンパイルの間に、単一のコンピュータノードによって一緒に再コンパイルされ得る。
【0047】
812において、競合を有するモジュールは、809において仲裁されたルーティングリソースを用いて再ルーティングされ、811において生成されたコンパイルスケジュールに従って810において割り当てられる。本発明の実施形態に従って、競合を有するモジュールもみが再ルーティングされる。競合を有しないモジュールは、それらのより早いルーティング選択を利用する。仲裁が、競合がなかった静的リソース指定を生成したので、我々は、さらなる競合がないことを保証される。手順は、成功のルートを用いて終了する。仲裁および割り当てが、不完全な静的リソース指定のために、結果としてルートへの失敗を生じ得る別の実施形態において、手順は、変更される必要がある仲裁および割り当ての詳細を用いて、ステップ807へ戻り得る。
【0048】
805の優先的順序は、非並列のコンパイルを達成する。代替的な実施形態において、単一のコンピュータノードが直列に設置およびルーティングの単一のインスタンスを実行するために利用されるコンパイルスケジュールを生成することを代わりに、複数のコンピュータノードは、並列に設置およびルーティングの複数のインスタンスを実行するために利用され得る。この実施形態において、PRモジュールの異なるインスタンスは、同一のコンパイルの間に、利用可能なコンピュータノード上に並列にコンパイルされ得る。異なるPRモジュールのインスタンスはまた、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。この実施形態において、各ルーティングが他のルーティングの結果の知識なしに行われるので、競合の可能性は、増大する。
【0049】
図8において説明された方法は、803において生成されたフロアプランを用いて設置を行う。本発明の代替的な実施形態において、設置は、設置がフロアプランによって制約されない自動発見方式で行われ得ることが認識される。この実施形態において、設置の競合もルーティングの競合も807において識別され得、再設置手順は、新しいスケジュールが811において生成された後に行われ得る。
【0050】
図10は、本発明の代表的な実施形態に従う、動的リソース割り当てを用いて標的デバイス上のPRモジュールを有するシステムを設計するための方法を例示するフローチャートである。この実施形態において、モジュールへのリソースの静的割り当てが行われない。代わりに、設置およびルーティングの動作は、正当の解決上の収束までに動く。1001において、システムのためのHDL設計が生成される。1002において、統合が、システム上に行われる。1003において、フロアプランが、システムに対して生成される。本発明の代替的な実施形態において、フロアプランが生成されない。本発明の実施形態に従って、
図2に参照して説明される手順201〜203は、手順1001〜1003を実装するために使用され得る。
【0051】
1004において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびPRモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびPRモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、同数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第1のコンパイルの第1のコンピュータノード上に静的論理モジュールの全部のコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第2のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各PRモジュールのインスタンスのコンパイルをスケジュールする。異なるPRモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。追加のコンパイルは、コンパイルされていないPRモジュールのインスタンスをコンパイルするようにスケジュールされ得る。代替的な実施形態において、1つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【0052】
図11Aは、
図1に例示された設計100のための、
図10に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
図11に示されるように、設計100の静的論理モジュールおよびPRモジュールは、2つのコンパイルにおいて4つのコンピュータノードP1〜P4を用いてコンパイルされる。コンパイル1の間に、第1のコンピュータノードP1は、モジュール、トップ、A、CおよびEをコンパイルする。コンパイル2の間に、第1のコンピュータノードP1は、モジュールB1およびD1をコンパイルし、第2のコンピュータノードP2は、モジュールB2およびD2をコンパイルし、第3のコンピュータノードP3は、モジュールB3およびD3をコンパイルし、第4のコンピュータノードP4は、モジュールB4をコンパイルする。
【0053】
図10に戻って参照すると、1005において、システムの静的論理モジュールおよびPRモジュールが設置される。本発明の実施形態に従って、
図2に参照して説明される手順206は、静的論理モジュールおよびPRモジュール上に手順1005を実装するために使用され得る。
【0054】
1006において、設置されたシステムがルーティングされる。本発明の実施形態に従って、標的デバイス上のルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびPRモジュールの他の部品の間の相互接続を提供するために選択される。この実施形態において、静的論理モジュールおよびPRモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。ルーティングのためのこの手順は、モジュールが必要とされるルーティングリソースを発見するために自由にルーティングすることを可能にされるので、「自動発見」と呼ばれ得る。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。PRモジュールの第1のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択するよりも、PRモジュールの第2のインスタンスのために使用されるように優先的に選択される。他の静的論理モジュールおよびPRモジュールによって使用されていないルーティングリソースは、他の静的論理モジュールおよびPRモジュールによって使用されたルーティングリソースを選択するよりも、優先的に選択される。
【0055】
本発明の実施形態に従って、1005および1006において説明された設置およびルーティングの手順は、1004において生成されたコンパイルスケジュールに従って行われる。この実施形態において、複数のコンピュータノードは、PRモジュールのインスタンスが並列にコンパイルされることを可能にするために、設置および処理手順の複数のインスタンスを実行する。
【0056】
1007において、競合する任意のルーティングリソースがあるか否かが決定される。2つ以上のモジュールによって使用されるために選択されるルーティングリソースが、競合するように考慮される。同一のルーティングリソースを選択するモジュールが、競合するモジュールであるように考慮される。競合するように決定されるルーティングリソースがない場合に、制御は、1008へ進む。競合するように決定されるルーティングリソースがある場合に、制御は、1009へ進む。
【0057】
1008において、制御は、手順を終了させる。
【0058】
1009において、新しいコンパイルスケジュールが生成される。新しいコンパイルスケジュールは、いつおよびどのコンピュータノードによって競合を有する1つ以上のノードが再コンパイルされるべきであるかを決定する。行われた再コンパイルは、競合を有する1つ以上のノードの再ルーティングを含み得る。本発明の実施形態に従って、異なるPRモジュールのインスタンスは、同一の再コンパイルの間に単一のコンピュータノードによって一緒に再コンパイルされ得る。
【0059】
図11Bは、
図1に例示された設計100のための、
図10に例示された方法を用いてコンパイルのための代表的な新しいスケジュールを例示する表である。この実施例において、競合は、静的論理モジュールトップとPRモジュールB1との間に、静的論理モジュールAとPRモジュールB2との間に検出されている。新しいスケジュールは、これらのモジュールの再ルーティングをスケジュールする。コンパイル3の間に、第1のコンピュータノードP1は、静的論理モジュールトップとA、およびPRモジュールB1をコンパイルする。コンパイル3の間に、第2のコンピュータノードP2は、モジュールB2をコンパイルする。
【0060】
1010において、競合を有するモジュールが再ルーティングされる。本発明の実施形態に従って、競合を有する静的論理モジュールおよびPRモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。PRモジュールの第1のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択する前に、PRモジュールの第2のインスタンスのために使用されるように選択される。他の静的論理モジュールおよびPRモジュールによって使用されていないルーティングリソースは、他の静的論理モジュールおよびPRモジュールによって使用されたルーティングリソースを選択する前に、選択される。制御は、1007へ戻る。手順1007〜1010が反復され、1010において説明された選択の優先は、手順が解決上に収束することを可能にするコスト関数で実装され得る。
【0061】
本発明の代替的な実施形態において、設置はまた、設置がフロアプランによって制約されない自動発見方式で行われ得る。この実施形態において、設置の競合は、1007においてルーティングの競合を用いて識別され得、再設置手順は、新しいスケジュールが1009において生成された後に行われ得る。
【0062】
図2、5、8および10は、本発明の実施形態を例示するフローチャートである。例示された技術のいくつかは、連続して、並列に、または説明されたことと、説明された手順が繰り返され得ること以外の順序で行われ得る。説明された技術の全部が行われる必要がないことと、追加の技術が加えられ得ることと、例示された技術のいくつかが他の技術を用いて代替され得ることとが認識される。
【0063】
図12は、本発明の例の実施形態が存在するコンピュータシステム1200のブロックダイヤグラムである。コンピュータシステム1200は、データ信号を処理する1つ以上のプロセッサを含む。示されるように、コンピュータシステム1200は、第1のプロセッサ1201と、第nのプロセッサ1205とを含み、nは、任意数であり得る。プロセッサ1201および1205は、各チップ上に複数のプロセッサコアーを有する多重コアープロセッサであり得る。プロセッサ1201および1205は、CPUバス1210またはプロセッサ1201および1205と、コンピュータシステム1200の他の部品との間にデータ信号を送信する他のスイッチ構造に連結される。本発明の実施形態に従って、コンピュータシステム1200のプロセッサまたはプロセッサコアーの各々は、コンピュータノードとして動作し得、その自身のスレッドを実行し得る。各スレッドは、他のスレッドと共に、ソフトウェアプログラムのインスタンスを並列に実行し得る。
【0064】
コンピュータシステム1200は、メモリ1213を含む。メモリ1213は、プロセッサ1201および1205によって実行され得るデータ信号によって表わされる指令およびコードを格納し得る。ブリッジメモリコントローラ1211は、CPUバス1210とメモリ1213とに連結される。ブリッジメモリコントローラ1211は、プロセッサ1201および1205と、メモリ1213と、コンピュータシステム1200他の部品との間に信号を向け、CPUバス1210と、メモリ1213と、第1のIOバス1220との間にブリッジする。本発明の実施形態に従って、プロセッサ1201および1205は、メモリ1213に直接に連結され得、ブリッジメモリコントローラ1211なしにメモリ1213と通信する。
【0065】
第1のIOバス1220は、単一のバスまたは複数のバスの組み合わせであり得る。第1のIOバス1220は、コンピュータシステム1200の部品の間に通信リンクを提供する。ネットワークコントローラ1221は、第1のIOバス1220に連結される。ネットワークコントローラ1221は、コンピュータシステム1200をコンピュータのネットワーク(示されていない)にリンクし得、機械の中の通信を支持する。ディスプレイデバイスコントローラ1222は、第1のIOバス1220に連結される。ディスプレイデバイスコントローラ1222は、コンピュータシステム1200へのディスプレイデバイス(示されていない)の連結を可能にし、ディスプレイデバイスとコンピュータシステム1200との間のインターフェースとして動作する。
【0066】
第2のIOバス1230は、単一のバスまたは複数のバスの組み合わせであり得る。第2のIOバス1230は、コンピュータシステム1200の部品の間の通信リンクを的称する。データ記憶デバイス1231が、第2のIOバス1230に連結される。入力インターフェース1232が、第2のIOバス1230に連結される。入力インターフェース1232は、コンピュータシステム1200への入力デバイスの連結を可能にし、入力デバイスからコンピュータシステム1200まで連結する。バスブリッジ1223は、第1のIOバス1220と第2のIOバス1230との間にデータ信号をバッファーし、かつブリッジするように動作する。異なるアーキテクチャを有するコンピュータシステムはまた、コンピュータシステム1200を実装するために使用され得ることが認識されるべきである。
【0067】
システム設計者1240は、メモリ1213に存在し、メモリに存在するプロセッサ1201および1205またはプロセッサコアーの1つ以上によって実行され得る。システム設計者1240は、HDLを生成し、システムを統合し、フロアプランを生成し、ルーティングリソースを割り当て、コンパイルスケジュール、標的デバイス上にシステムを設置し、標的デバイス上にシステムをルートさせ、フロアプランを修正し、ルーティングリソースを再割り当て、競合を仲裁し、システムを組み立て、そして/または他の手順、例えば、
図2、5、8および10に説明される手順を行うように動作し得る。本発明の実施形態に従って、システム設計者1240は、同時に(並列に)複数のスレッドによって実行され得る部分を含むプログラム。
【0068】
本発明の実施形態は、指令を有するコンピュータ読み取り可能または機械読み取り可能な媒体を含み得るコンピュータプログラム製品、またはソフトウェアとして提供され得る。コンピュータ読み取り可能または機械読み取り可能な媒体上の指令は、コンピュータプログラムまたは他の電子デバイスをプログラム化するように使用され得る。機械読み取り可能な媒体は、フロッピディスケット、光学ディスク、CD−ROM、および磁気光学ディスクまたは電子指令を格納するのに適切な他のタイプの媒体/機械読み取り可能な媒体を含み得、しかしそれらに限定されない。
【0069】
本明細書に説明された技術は、任意の特定のソフトウェア構成に限定されない。それらは、計算または処理環境において適応性を見つけ得る。本明細書に使用された用語「コンピュータ読み取り可能な媒体」または「機械読み取り可能な媒体」は、コンピュータによって実行のための一連の命令を格納しまたは符号化することが可能であり、コンピュータに本明細書に説明された方法のいずれかを行わせる任意の媒体を含むべきである。さらに、動作をとり、または結果を生じる1つの形または別の形(例えば、プログラム、手順、応用、モジュール、ユニット、論理等)においてソフトウェアの認識は、当分野において共通である。このような表現は、単に処理システムによるソフトウェアの実行が、プロセッサに結果を生成するための動作を行わせることを説明する簡略的方法である。
【0070】
図13は、本発明の実施形態に従って標的デバイスを実装するために使用され得るデバイス1300を例示する。デバイス1300は、複数の論理アレイブロック(LAB)を含むフィールドプログラマブルゲートアレイ(FPGA)である。各LABは、複数の論理ブロック、キャリアチェーン、LAB制御信号、ルックアップテーブル(LUT)チェーン、およびレジスタチェーン接続ラインから形成され得る。論理ブロックは、ユーザー論理機能の効率的実装を提供する小さな論理ユニットである。論理ブロックは、組み合わせセルであり、各組み合わせセルは、単一の出力、およびレジスタを有する。本発明の一実施形態に従って、論理ブロックは、論理要素(LE)、例えば、Altera(登録商標)Corporationによって製造されたStratixデバイスまたはCycloneデバイスにおいて見つけられるそれら、または組み合わせ論理ブロック(CLB)、例えば、Xilinx Inc.によって製造されたVirtexデバイスにおいて見つけられるそれらに類似して動作し得る。この実施形態において、論理ブロックは、構成可能なレジスタを有する4つの入力LUTを含み得る。本発明の代替的な実施形態に従って、論理ブロックは、適合性のある論理モジュール(ALM)、例えば、Altera(登録商標)Corporationによって製造されたStratixデバイスにおいて見つけられるそれらに類似して動作し得る。LABは、デバイス1300にわたる行および列にグループ化される。LABの列が、1311〜1316として示される。論理ブロックは、追加または代替的な部品を含み得ることが認識されるべきである。
【0071】
デバイス1300は、メモリブロックを含む。メモリブロックは、例えば、専用の真デュアルポート、簡単デュアルポート、またはさまざまなビットまでのメモリ、さまざまな周波数までの幅広さを有する単一のポートを提供するデュアルポートランダムアクセスメモリ(RAM)ブロックであり得る。メモリブロックは、選択されたLABの間においてデバイスにわたる列にグループ化され得、またはデバイス1300内に単独またはペアで配置され得る。メモリブロックの列が、1321〜1324として示される。
【0072】
デバイス1300は、デジタル信号処理(DSP)ブロックを含む。DSPブロックは、加算また減算の特徴を有するさまざまな構成の掛算器を実装するために使用され得る。DSPブロックは、シフトレジスタ、乗算器、加算器、および累算器を含む。DSPブロックは、デバイス1300にわたる列にグループ化され得、1331として示される。
【0073】
デバイス1300は、複数の入力/出力要素(IOE)1340を含む。各IOEは、IOピン(示されていない)デバイス1300上に与える。IOE1340は、デバイス1300の周囲の周りにLABの行および列の最後に配置される。各IOEは、双方向IOバッファーと、入力、出力、および出力可能な信号を登録するための複数のレジスタとを含み得る。
【0074】
デバイス1300は、標的デバイス上の部品の間に信号をルーティングするために、ルーティングリソース、例えば、LABローカル相互接続ライン、列の相互接続ライン(「Hタイプ配線」)、および行の相互接続ライン(「Vタイプ」配線)(示されていない)を含み得る。
【0075】
以上の明細書において、本発明の実施形態は、明細書の具体的代表的な実施形態を参照して説明されている。しかしながら、さまざまな修正および変更は、本発明の実施形態のより広い精神および範囲から逸脱することなしに明細書に加えられ得ることが考えられる。従って、明細書および図面は、制限的意味より例示的意味とみなされるべきである。