(57)【特許請求の範囲】
【請求項１】
標的デバイス上にシステムを設計するための方法であって、該方法は、コンピュータによって実行され、該方法は、
該コンピュータが、該標的デバイス上のリソースを該システムの静的論理モジュールと部分再構成可能（ＰＲ）モジュールとに割り当てることと、
該コンピュータが、該割り当てられたリソースを使用して、該静的論理モジュールを設置することおよびルーティングすることのうちの１つを行うことと、
該コンピュータが、該静的論理モジュールの使用されていない割り当てられたリソースを該ＰＲモジュールに再割り当てすることと、
該コンピュータが、該割り当てられたリソースと並列に、該標的デバイス上の該ＰＲモジュールのうちの１つのインスタンスを設置することおよびルーティングすることのうちの１つを行うことと
を含む、方法。
【請求項２】
前記ＰＲモジュールのうちの前記１つの各インスタンスは、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理とインターフェースをとる、請求項１に記載の方法。
【請求項３】
前記割り当てることは、ルーティングリソースをフロアプラン領域から、前記静的論理モジュールおよびＰＲモジュールの各々に割り当てることを含む、請求項１に記載の方法。
【請求項４】
前記設置することおよびルーティングすることのうちの１つは、第１の処理リソースを使用して、ＰＲモジュールの第１のインスタンスを設置することおよびルーティングすることのうちの１つを行うことを、第２の処理リソースを使用して、該ＰＲモジュールの第２のインスタンスを設置することおよびルーティングすることのうちの１つを行うことと並列に行うことを含む、請求項１に記載の方法。
【請求項５】
前記割り当てられたリソースを使用して、前記静的論理モジュールを設置することおよびルーティングすることのうちの１つを行うことは、前記ＰＲモジュールを設置することおよびルーティングすることのうちの１つを行う前に行われる、請求項１に記載の方法。
【請求項６】
使用されていないルーティングリソースを再割り当てることは、
前記ＰＲモジュールのための前記標的デバイス上のフロアプラン領域を拡張することと、ルーティングリソースを該ＰＲモジュールの対応するフロアプラン領域から、該ＰＲモジュールの各々に割り当てることとを含む、請求項１に記載の方法。
【請求項７】
前記拡張することは、各フロアプラン領域の水平境界エッジおよび該フロアプラン領域の各々の垂直境界エッジが、前記標的デバイスの境界または別のＰＲモジュールに対応する境界エッジに達するまで、該水平境界エッジを垂直方向に動かすことと、該垂直境界エッジを水平方向に動かすこととを含む、請求項６に記載の方法。
【請求項８】
前記静的論理モジュールおよびＰＲモジュールは、回路のハードウェア記述言語を含む、請求項１に記載の方法。
【請求項９】
標的デバイス上にシステムを設計するための方法であって、該方法は、コンピュータによって実行され、該方法は、
該コンピュータが、標的デバイス上に静的論理モジュールおよび部分再構成可能な（ＰＲ）モジュールをルーティングすることと、
該コンピュータが、ルーティングリソースに対して競合する静的論理モジュールおよびＰＲモジュールに対して、競合する該ルーティングリソースを該ルーティングから仲裁することと、
該コンピュータが、使用されていないルーティングリソースを、該ルーティングから、競合を有する静的論理モジュールおよびＰＲモジュールに割り当てることと、
該コンピュータが、仲裁され割り当てられた該ルーティングリソースを使用して、競合を有する該静的論理モジュールおよびＰＲモジュールを再ルーティングすることと
を含む、方法。
【請求項１０】
標的デバイス上にＰＲモジュールをルーティングすることは、ＰＲモジュールのインスタンスを直列にルーティングすることを含む、請求項９に記載の方法。
【請求項１１】
前記標的デバイス上にＰＲモジュールをルーティングすることは、ＰＲモジュールの第１のインスタンスを該ＰＲモジュールの第２のインスタンスと並列にルーティングすることを含む、請求項９に記載の方法。
【請求項１２】
前記標的デバイス上に前記ＰＲモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該ＰＲモジュールの第２のインスタンスによって使用されるＰＲモジュールの第１のインスタンスのためのルーティングリソースを優先的に選択することを含む、請求項９に記載の方法。
【請求項１３】
前記静的論理モジュールおよび前記ＰＲモジュールをルーティングすることは、他の静的モジュールまたはＰＲモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびＰＲモジュールによって使用されていない、該静的論理モジュールおよび該ＰＲモジュールのためのルーティングリソースを優先的に選択することを含む、請求項９に記載の方法。
【請求項１４】
競合するルーティングリソースを仲裁することは、タイミング制約またはルーティング制約のうちの１つに応答して、競合状態のルーティングリソースをモジュールに割り当てることを含む、請求項９に記載の方法。
【請求項１５】
前記ＰＲモジュールの各インスタンスは、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、請求項９に記載の方法。
【請求項１６】
非一時的なコンピュータ読み取り可能な媒体であって、該非一時的なコンピュータ読み取り可能な媒体には、一連の命令が格納されており、該一連の命令は、
標的デバイス上に静的論理モジュールをルーティングすることと、
該標的デバイス上の部分再構成可能（ＰＲ）モジュールのインスタンスを並列にルーティングすることと、
該静的論理モジュールおよび該ＰＲモジュールが不当にルーティングされたことを決定したことに応答して、該静的論理モジュールおよび該ＰＲモジュールを並列に再ルーティングすることと
を含む方法を実行することをコンピュータに行わせる、非一時的なコンピュータ読み取り可能な媒体。
【請求項１７】
前記標的デバイス上に前記ＰＲモジュールのインスタンスをルーティングすることは、他のルーティングリソースを選択することよりも、該ＰＲモジュールの第２のインスタンスによって使用される該ＰＲモジュールの第１のインスタンスのためのルーティングリソースを選択することを含む、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項１８】
前記静的論理モジュールおよび前記ＰＲモジュールをルーティングすることは、他の静的モジュールまたはＰＲモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびＰＲモジュールによって使用されていない、該静的論理モジュールおよび該ＰＲモジュールのためのルーティングリソースを選択することを含む、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項１９】
前記ＰＲモジュールの前記インスタンスの各々は、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項２０】
前記再ルーティングすることは、第１の処理リソースを使用して、前記静的論理モジュールをルーティングすることを、第２の処理リソースを使用して、前記ＰＲモジュールのインスタンスをルーティングすることと並列に行うことを含む、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項２１】
前記静的論理モジュールおよび前記ＰＲモジュールが不当に設置されたことを決定したことに応答して、該静的論理モジュールおよび該ＰＲモジュールを並列に再設置することを含む、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項２２】
前記標的デバイス上にＰＲモジュールを設置する前に、静的論理モジュールを設置することをさらに含む、請求項９に記載の方法。
【請求項２３】
前記ＰＲモジュールは、並列に設置される、請求項２２に記載の方法。
【請求項２４】
標的デバイス上に静的論理モジュールを設置することと、
該標的デバイス上にＰＲモジュールのインスタンスを並列に設置することと、
設置における不当性を決定したことに応答して、該静的論理モジュールおよび該ＰＲモジュールを並列に再設置することと
をさらに含む、請求項１６に記載の非一時的なコンピュータ読み取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（分野）
本発明の実施形態は、標的デバイス上にシステムを設計するためのツールに関する。より具体的には、本発明の実施形態は、標的デバイス上に部分再構成（ＰＲ）モジュールを設置し、かつルーティングするための方法および装置に関する。
【背景技術】
【０００２】
（背景）
標的デバイス（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ストラクチャード特定用途向け集積回路（ＡＳＩＣ）、およびＡＳＩＣ）は、１００万個のゲートおよびメガビットの内蔵メモリを含み得る大きなシステムを実装するために使用される。大きなシステムの複雑さは、しばしば、物理的標的デバイス上のシステムに対して設計を生成し、そして最適化するための自動電子設計（ＥＤＡ）の使用を必要とする。コンピュータ支援設計（ＣＡＤ）においてＥＤＡツールによって実装される手順の中で、コンパイルフローは、システムのためのハードウェア記述言語（ＨＤＬ）の生成、並びに標的デバイス上のシステムの統合、設置、およびルーティングである。
【０００３】
部分再構成（ＰＲ）は、コンパイルの間に、プログラマブル標的デバイス上のＰＲモジュールに対して複数のインスタンスを設計することを含む。ＰＲモジュールの各インスタンスは、ＰＲモジュールに対して実装され得る異なる回路記述を表す。選択されたＰＲモジュールは、第１のインスタンスから第２のインスタンスへ再構成され得、その一方で、プログラマブル標的デバイス上の他のＰＲモジュールおよび静的モジュールは、アクティブな動作のままである。
【０００４】
ＰＲは、プログラマブル標的デバイス全体を表す典型的なプログラミングファイルとは異なり、システムの一部分が、標的デバイスのその部分のみを表すＥＤＡツールによって生成されたプログラミングファイルを用いて再構成されることを可能にする。ＰＲはまた、システムが、再プログラミングのためにプログラマブル標的デバイスの電力を下げる必要性なしに、再構成されることを可能にする。ＰＲは、デバイスの影響しない部分に対してとられるダウン時間を必要とすることなしに、再プログラミングを必要とするデバイス上の特徴アップグレードまたは変更、バグ修正、または任意の他の動作のために使用され得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
（要約）
標的デバイス上の部分再構成（ＰＲ）モジュールの設置およびルーティングのための方法および装置が開示される。本発明の第１の実施形態に従って、標的デバイス上のリソースは、システムの特定のＰＲモジュールによって使用されるべきである候補として割り当てられる。この実施形態の局面に従って、ＰＲモジュールのインスタンスが設置およびルーティングされる前に、静的論理モジュールが、設置およびルーティングされ、静的論理モジュールによって使用されていないリソースは、ＰＲモジュールによって使用されるべきである候補として割り当てられる。ＰＲモジュールのインスタンスは、割り当てられたリソースを用いて、標的デバイス上に並列に設置およびルーティングされる。本発明の実施形態に従って、標的デバイス上にＰＲモジュールを並列に設置し、かつルーティングすることは、時間において同時にＰＲモジュールを設置およびルーティングすることを含み得る。
【０００６】
本発明の第２の実施形態に従って、最初の設置およびルーティングは、モジュールによって使用されるべきである候補のセットを発見するために、静的論理モジュールおよびＰＲモジュール上で行われる。最初の設置およびルーティングは、禁止を課すことなしに、リソースが使用されている標的デバイスに、標的デバイス上のリソースとモジュールを自由に適合させる。２以上のモジュールと共に用いるように選択された、競合するリソースが識別され、リソースに対して競合する静的論理モジュールおよびＰＲモジュールに対して仲裁される。最初の一致からの使用されていないリソースは、競合を有する静的論理モジュールおよびＰＲモジュールに割り当てられる。後の設置およびルーティング（再一致させること）は、仲裁され、かつ割り当てられたリソースを用いて、競合を有する静的論理モジュールおよびＰＲモジュール上に行われる。
【０００７】
本発明の第３の実施形態に従って、最初の一致は、静的論理モジュールおよびＰＲモジュール上に行われる。最初の一致は、リソースが使用されている禁止部分を強要することなしに、標的デバイス上のリソースを用いて、静的論理モジュールおよびＰＲモジュールを自由に設置し、かつルーティングする。２以上のモジュールによって使用することによって、競合するリソースが識別される。１つ以上の後の設置およびルーティング（再一致させること）は、このような競合が存在しないまでに、競合を有する静的論理モジュールおよびＰＲモジュール上に行われる。
【０００８】
本発明は、例えば以下の項目を提供する。
（項目１）
標的デバイス上にシステムを設計するための方法であって、該方法は、
該標的デバイス上のリソースを該システムの静的論理モジュールと部分再構成可能（ＰＲ）モジュールとに割り当てることと、
該割り当てられたリソースと並列に、該標的デバイス上の該ＰＲモジュールのうちの１つのインスタンスを設置およびルーティングすることのうちの１つを行うことと
を含む、方法。
（項目２）
上記ＰＲモジュールのうちの上記１つの各インスタンスは、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理とインターフェースをとる、上記項目のいずれかに記載の方法。
（項目３）
上記割り当てることは、ルーティングリソースをフロアプラン領域から、上記静的論理モジュールおよびＰＲモジュールの各々に割り当てることを含む、上記項目のいずれかに記載の方法。
（項目４）
上記ルーティングすることは、ＰＲモジュールの第１のインスタンスをルーティングするために第１の処理リソースを使用することと、該ＰＲモジュールの第２のインスタンスをルーティングするために第２の処理リソースを使用することと並列に行うことを含む、上記項目のいずれかに記載の方法。
（項目５）
上記ＰＲモジュールをルーティングする前に、割り当てられた続くルーティングリソースを用いて、上記静的論理モジュールをルーティングすることをさらに含む、上記項目のいずれかに記載の方法。
（項目６）
上記静的論理モジュールの使用されていないルーティングリソースを上記ＰＲモジュールに割り当てることをさらに含む、上記項目のいずれかに記載の方法。
（項目７）
使用されていないルーティングリソースを割り当てることは、
上記ＰＲモジュールのための上記標的デバイス上のフロアプラン領域を拡張することと、ルーティングリソースを該ＰＲモジュールの対応するフロアプラン領域から、該ＰＲモジュールの各々に割り当てることとを含む、上記項目のいずれかに記載の方法。
（項目８）
上記拡張することは、各フロアプラン領域の水平境界エッジおよび該フロアプラン領域の各々の垂直境界エッジが、上記標的デバイスの境界または別のＰＲモジュールに対応する境界エッジに達するまで、該水平境界エッジを垂直方向に動かすことと、該垂直境界エッジを水平方向に動かすこととを含む、上記項目のいずれかに記載の方法。
（項目９）
上記静的論理モジュールおよびＰＲモジュールは、回路のハードウェア記述言語を含む、上記項目のいずれかに記載の方法。
（項目１０）
標的デバイス上にシステムを設計する方法であって、該方法は、
標的デバイス上に静的論理モジュールおよび部分再構成可能な（ＰＲ）モジュールをルーティングすることと、
ルーティングリソースに対して競合する静的論理モジュールおよびＰＲモジュールに対して、競合する該ルーティングリソースを該ルーティングから仲裁することと、
使用されていないルーティングリソースを、該ルーティングから、競合を有する静的論理モジュールおよびＰＲモジュールに割り当てることと、
仲裁され、かつ割り当てられた該ルーティングリソースを用いて、競合を有する該静的論理モジュールおよびＰＲモジュールを再ルーティングすることと
を含む、方法。
（項目１１）
標的デバイス上にＰＲモジュールをルーティングすることは、ＰＲモジュールのインスタンスを直列にルーティングすることを含む、上記項目のいずれかに記載の方法。
（項目１２）
上記標的デバイス上にＰＲモジュールをルーティングすることは、ＰＲモジュールの第１のインスタンスを該ＰＲモジュールの第２のインスタンスと並列にルーティングすることを含む、上記項目のいずれかに記載の方法。
（項目１３）
上記標的デバイス上に上記ＰＲモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該ＰＲモジュールの第２のインスタンスによって使用されるＰＲモジュールの第１のインスタンスのためのルーティングリソースを優先的に選択することを含む、上記項目のいずれかに記載の方法。
（項目１４）
上記静的論理モジュールおよび上記ＰＲモジュールをルーティングすることは、他の静的モジュールまたはＰＲモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびＰＲモジュールによって使用されていない、該静的論理モジュールおよび該ＰＲモジュールのためのルーティングリソースを優先的に選択することを含む、上記項目のいずれかに記載の方法。
（項目１５）
競合するルーティングリソースを仲裁することは、タイミング制約またはルーティング制約のうちの１つに応じて、競合状態のルーティングリソースをモジュールに割り当てることを含む、上記項目のいずれかに記載の方法。
（項目１６）
上記ＰＲモジュールの各インスタンスは、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、上記項目のいずれかに記載の方法。
（項目１７）
非一時的なコンピュータ読み取り可能な媒体であって、該非一時的なコンピュータ読み取り可能な媒体は、一連の命令が格納されており、該一連の命令は、
標的デバイス上に静的論理モジュールをルーティングすることと、
該標的デバイス上の部分再構成可能（ＰＲ）モジュールのインスタンスを並列にルーティングすることと、
該静的論理モジュールおよび該ＰＲモジュールが不当にルーティングされていることを決定するのに応じて、該静的論理モジュールおよび該ＰＲモジュールを再ルーティングすることと
を含む方法をコンピュータに方法を実行させる、非一時的なコンピュータ読み取り可能な媒体。
（項目１８）
上記標的デバイス上に上記ＰＲモジュールをルーティングすることは、他のルーティングリソースを選択することよりも、該ＰＲモジュールの第２のインスタンスによって使用される該ＰＲモジュールの第１のインスタンスのためのルーティングリソースを選択することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目１９）
上記静的論理モジュールおよび上記ＰＲモジュールをルーティングすることは、他の静的モジュールまたはＰＲモジュールによって使用されるルーティングリソースを選択することよりも、該他の静的論理モジュールおよびＰＲモジュールによって使用されていない、該静的論理モジュールおよび該ＰＲモジュールのためのルーティングリソースを選択することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目２０）
上記ＰＲモジュールの上記インスタンスの各々は、該ＰＲモジュールの異なる回路記述を含み、該異なる回路記述の各々は、同一の静的論理部分とインターフェースをとる、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目２１）
上記再ルーティングすることは、上記静的論理モジュールを並列にルーティングするための第１の処理リソースを使用することと、上記ＰＲモジュールのインスタンスをルーティングするための第２の処理リソースを使用することとを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目２２）
上記静的論理モジュールおよび上記ＰＲモジュールが不当に設置されていることを決定するのに応じて、該静的論理モジュールおよび該ＰＲモジュールを並列に再設置することを含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目２３）
上記標的デバイス上にＰＲモジュールを設置する前に、静的論理モジュールを設置することをさらに含む、上記項目のいずれかに記載の方法。
（項目２４）
上記ＰＲモジュールが、並列に設置される、上記項目のいずれかに記載の方法。
（項目２５）
標的デバイス上に静的論理モジュールを設置することと、
該標的デバイス上にＰＲモジュールのインスタンスを並列に設置することと、
設置における不当性を決定するのに応じて、該静的論理モジュールおよび該ＰＲモジュールを並列に設置することと
をさらに含む、上記項目のいずれかに記載の非一時的なコンピュータ読み取り可能な媒体。
（項目１ａ）
標的デバイス上にシステムを設計するための方法であって、該方法は、
該標的デバイス上のリソースを該システムの静的論理モジュールと部分再構成可能な（ＰＲ）モジュールとに割り当てることと、
該割り当てられたリソースを用いて、該標的デバイス上の該ＰＲモジュールのうちの１つのインスタンスを並列にルーティングすることと
を含む、方法。
（項目１０ａ）
上記割り当てられたリソースを用いて、上記標的デバイス上に上記ＰＲモジュールのうちの１つのインスタンスを並列に設置することをさらに含む、上記項目のいずれかに記載の方法。
（項目１８ａ）
非一時的なコンピュータ読み取り可能な媒体であって、該非一時的なコンピュータ読み取り可能な媒体は、コンピュータに方法を実行させるために、該非一時的なコンピュータ読み取り可能な媒体に格納された一連の命令を含み、該方法は、
標的デバイス上の静的論理モジュールをルーティングすることと、
該標的デバイス上のＰＲモジュールのインスタンスを並列にルーティングすることと、
該静的論理モジュールおよび該ＰＲモジュールが不当にルートされていることを決定するのに応じて、該静的論理モジュールおよび該ＰＲモジュールを再ルーティングすることと
を含む、非一時的なコンピュータ読み取り可能な媒体。
【０００９】
（摘要）
標的デバイス上にシステムを設計するための方法は、標的デバイス上のリソースをシステムの静的論理モジュールおよび部分再構成可能な（ＰＲ）モジュールに割り当てることを含む。ＰＲモジュールのうちの１つのインスタンスは、割り当てられているリソースからのリソースを利用して並列に設置され、ルーティングされる。他の実施形態も開示される。
【００１０】
本発明の特徴および利点は、実施例を通して例示され、しかし、本発明の実施形態の範囲を示される特定の実施形態に限定するように意図されない。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施形態に従う代表的な部分再構成（ＰＲ）設計を例示するダイヤグラムである。
【図２】図２は、本発明の代表的な実施形態に従う、静的リソース割り当て用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。
【図３】図３は、本発明の実施形態に従う、静的リソース割り当てのために使用された設計の代表的なフロアプランを例示する。
【図４】図４は、図３に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
【図５】図５は、本発明の代表的な実施形態に従う、静的リソース割り当ておよび再割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。
【図６】図６は、図５に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
【図７】図７は、本発明の実施形態に従う、静的リソース割り当てのために使用された設計の代表的な修正されたフロアプランを例示する。
【図８】図８は、本発明の代表的な実施形態に従う、自動発見を有する静的リソース割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。
【図９】図９は、図８に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
【図１０】図１０は、本発明の代表的な実施形態に従う、動的リソース割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。
【図１１Ａ】図１１は、図１０に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
【図１１Ｂ】図１１は、図１０に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。
【図１２】図１２は、本発明の実施形態に従う、システム設計者を実装するコンピュータシステムのブロックダイヤグラムを例示する。
【図１３】図１３は、本発明の実施形態に従う代表的な標的デバイスを例示する。
【発明を実施するための形態】
【００１２】
以下の説明において、説明の目的のために、具体的な用語は、本発明の実施形態の完全な理解を提供するために説明される。説明における具体的な詳細が本発明の実施形態を辞実践する必要がない場合もあることは、当業者にとって明白である。他の場合において、周知の回路、デバイス、およびプログラムは、本発明の実施形態を必要なしに曖昧にすることを避けるためにブロックダイヤグラムの形式で示される。
【００１３】
図１は、本発明の実施形態に従う部分再構成（ＰＲ）を使用するシステム１００のための代表的な設計を例示するダイヤグラムである。設計１００は、５つのより低いレベルのモジュール（Ａ〜Ｅ）のインスタンスを作成するトップレベルモジュール１１０を含む。各モジュールは、レジスタ転送レベルに説明される複数の部品を含む。モジュールＡ、ＣおよびＥ、並びにトップレベルモジュール１１０は、静的論理モジュールである。本発明の実施形態に従って、静的論理モジュールは、標的デバイス上にプログラム化された後に、変更しない。モジュールＢおよびＤは、ＰＲモジュールである。ＰＲモジュールＢは、Ｂ１〜Ｂ４とラベル付けされた４つの可能なインスタンスを有する。ＰＲモジュールＤは、Ｄ１〜Ｄ３とラベル付けされた３つの可能なインスタンスを有する。本発明の実施形態に従って、ＰＲモジュールは、複数の可能なインスタンスを含み、ＰＲモジュールの第１のインスタンスは、ＰＲモジュールが標的デバイス上にプログラム化された後に、ＰＲモジュールの第２のインスタンスに変更され得る。ＰＲモジュールの各インスタンスは、ＰＲモジュールのために実装され得る異なるレジスタ転送レベル（ＲＴＬ）を表す。
【００１４】
本発明の実施形態に従って、ＰＲモジュールの各インスタンスは、１つ以上の入力ポートおよび１つ以上の出力ポートを含む。各入力ポートおよび出力ポートは、ＰＲモジュールの境界が論理的に一致であるように、標的デバイス上の同一の静的論理と相互作用する。ＰＲモジュールの各インスタンスの入力ポートは、静的論理の境界において静的論理からデータを受信するために、構成可能なランダムアクセスメモリ（ＣＲＡＭ）によってプログラム化され得る。同様に、ＰＲモジュールの各インスタンスの出力ポートは、静的論理の境界において静的論理からデータを送信するために、ＣＲＡＭによってプログラム化され得る。ＰＲモジュールの境界において静的論理は、レジスタ、ルックアップテーブル（ＬＵＴ）、ワイヤ、または他の部品を用いて実装され得ることが認識される。
【００１５】
図２は、本発明の代表的な実施形態に従って、静的リソース割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。標的デバイスは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、構造化されたＡＳＩＣ、または他のプログラマブルデバイスであり得る。一実施形態において、図２に例示された手順は、コンピュータシステム上に実装されたコンピュータ支援設計（ＣＡＤ）／自動電子設計（ＥＤＡ）ツールによって行われ得る。ステップ２０１において、ハードウェア記述言語（ＨＤＬ）設計定義は、システムを説明するために生成される。ＨＤＬは、レジスタによって提供されるシステムの仕様に応じて生成される。仕様は、設計入力ツールを通じて設計者によって提供され得る。仕様は、システムにおいて、部品および相互接続を説明し得る。本発明の実施形態に従って、仕様の部分の識別は、静的論理モジュールとして実装されるべきであり、ＰＲモジュールはまた、設計者によって提供される。
【００１６】
ステップ２０２において、システムが統合される。統合は、標的デバイスによって実装されるべきであるシステムの倫理設計を生成することを含む。本発明の実施形態に従って、統合は、ＨＤＬ設計定義から静的論理モジュールおよびＰＲモジュールを含むシステムの最適化された論理表示を生成する。統合はまた、最適化された論理設計をマップ化することを含む。マッピングは、どのように標的デバイス上の具体的なリソースを用いて最適化された論理表示の論理ゲートおよび論理要素を実装するのを決定することを含む。本発明の実施形態に従って、ネットリストが、マッピングから生成される。このネットリストは、ＨＤＬから生成された、最適化されたテクノロジーマップ化されたネットリストであり得る。
【００１７】
ステップ２０３において、フロアプランが、システムの設計のために生成される。本発明の実施形態に従って、フロアプランは、標的デバイス上の物理位置（「フロアプラン領域」）をステップ２０２において生成された、統合された論理に示す。本発明の実施形態において、標的デバイス上のフロアプラン領域は、統合から生成された静的モジュールおよびＰＲモジュールの各々に割り当てられ得る。
【００１８】
図３は、図１に例示された設計１００のための代表的なフロアプラン３００を例示する。フロアプラン領域３１０、３１２、３１４、および３１５は、それぞれ、静的モジュールＡ、Ｃ、Ｅおよびトップに割り当てられる。フロアプラン領域３１１は、ＰＲモジュールＢに割り当てられ、従って、暗示的にインスタンスＢ１〜Ｂ４に割り当てられる。フロアプラン領域３１３は、ＰＲモジュールＤに割り当てられ、従って、暗示的にインスタンスＤ１〜Ｄ３に割り当てられる。本発明の実施形態に従って、フロアプラン領域は、任意の寸法または形状を有し、隣接である必要がない。フロアプランは、モジュールに割り当てるためのフロアプラン領域の大きさ、形状、および／または位置について、設計者によって提供される入力に応じてＣＡＤ／ＥＤＡによって生成され得る。代替的に、フロアプランは、単独に統合出力ネットリストの分析によるＣＡＤ／ＥＤＡツールによって生成され得、設計者によって提供される任意の出力に独立し得る。
【００１９】
図２に戻って参照すると、ステップ２０４において、標的デバイス上のルーティングリソースは、静的論理モジュールおよびＰＲモジュールに割り当てられる。本発明の実施形態に従って、モジュールに割り当てられるフロアプラン領域は、静的リソース割り当てのために使用される。この実施形態において、モジュールは、モジュールの割り当てられたフロアプラン領域に配置されるルーティングリソースのみを使用することを可能にされる。静的にルーティングリソースをシステムの静的モジュールおよびＰＲモジュールを割り当て、かつ割り当てることによって、ＰＲモジュールは、静的論理モジュールのルーティングの間または後に、任意の順序でルーティングされ得る。加えて、ＰＲモジュールのインスタンスのルーティングは、並列に行われ得る。複数のコンピュータノードは、並列のコンパイルを容易にするために利用され得る。本発明の実施形態に従って、コンピュータノードは、設置およびルーティングのようなコンパイル手順を行うための処理手順を含む。コンピュータノードは、コンピュータシステムのプロセッサまたはプロセッサコアーによって実装され得る。
【００２０】
ステップ２０５において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびＰＲモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびＰＲモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、最も多くの数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第１のコンパイルの第１のコンピュータノード上に静的論理モジュールの全部と、各ＰＲモジュールの第１のインスタンスとのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第２のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各ＰＲモジュールの残りのインスタンスのコンパイルをスケジュールする。異なるＰＲモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。複数のこのようなモジュールが、それらが同一の時間においてチップにプログラム化されるときに、同一のリソースを利用し得るので、同一のＰＲモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされない場合もある。追加のコンパイルは、コンパイルされていないＰＲモジュールのインスタンスをコンパイルするようにスケジュールされ得る。代替的な実施形態において、１つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【００２１】
図４は、図１に例示された設計１００のために、図３において例示された方法を用いるコンパイルのための代表的なスケジュールを例示する表である。図４に示されるように、設計１００の静的論理モジュールおよびＰＲモジュールは、２つのコンパイルにおいて３つのコンピュータノードＰ１〜Ｐ３を用いてコンパイルされる。コンパイル１の間に、第１のコンピュータノードＰ１は、モジュール、トップ、Ａ、Ｂ１、Ｃ、Ｄ１およびＥをコンパイルする。コンパイル２の間に、第１のコンピュータノードＰ１は、モジュールＢ２およびＤ２をコンパイルし、第２のコンピュータノードＰ２は、モジュールＢ３およびＤ３をコンパイルし、第３のコンピュータノードＰ３は、モジュールＢ４をコンパイルする。
【００２２】
図２に戻って参照すると、２０６において、システムが設置される。本発明の実施形態に従って、設置は、モジュールに割り当てられたフロアプランの領域において、標的デバイス上にマップ化された論理システムを設置することを含む。設置は、機能ブロックの各々のための設置を生成するために、テクノロジーマップ化されたネットリストで働く。本発明の実施形態に従って、設置は、具体的な論理要素のために使用される論理設計上のリソース、および統合の間に決定されたようなシステムを実装するために決定された他の機能ブロックを決定することによって標的デバイス上のシステムを一致させる。設置は、標的デバイス上に存在する論理クラスタリングを形成するために、論理要素を一緒にグループ化することを含むクラスタリングを含み得る。本発明の実施形態に従って、クラスタリングは、設置の早いステージにおいて行われ、設置準備ステージの間に統合の後に発生する。
【００２３】
ステップ２０７において、設置された設計がルーティングされる。本発明の実施形態において、２０４において、モジュールに割り当てられたルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびＰＲモジュールの他の部品の間の相互接続を提供するために使用される。ルーティング可能性の最適化はまた、設置された論理設計上に行われ得る。本発明の実施形態に従って、ルーティング可能性の最適化のゴールは、設定された論理設計において部品を接続するために使用された配線の量を減らすことである。ルーティング可能性の最適化は、ファンアウト分割、論理複製、論理再配線、または他の手順を行うことを含み得る。手順おのうちの１つ以上は、設置された論理設計上に行われ得ることが認識される。
【００２４】
本発明の実施形態に従って、２０６および２０７において説明されたルーティングおよび設置手順が、２０５において生成されたコンパイルスケジュールに従って行われる。この実施形態において、コンピュータノードは、設置のインスタンスおよび１つ以上のコンパイルのための処理手順を実行するために使用される。各コンピュータノードは、特定のコンパイル数の間に、設置し、かつルーティングするための割り当てられた具体的なモジュールである。複数のコンピュータノードを利用することによって、ＰＲモジュールのインスタンスが並列にルーティングされ得る。
【００２５】
２０８において、組み立て手順が行われる。組み立て手順は、説明されたコンパイル手順によって決定された情報を含む複数のデータファイルを生成することを含む。データファイルは、全部の標的デバイスをプログラム化するために使用され得るビットストリーム、または標的デバイスの具体的な部分のみをプログラム化するために使用され得るビットストリームであり得る。本発明の実施形態に従って、図２に例示された手順は、第１のコンピュータシステム上に実行されるＥＤＡツールによって実行され得る。生成されたデータファイルは、システムの設計がさらに処理されることを可能にするために、第２のコンピュータシステムに送信され得る。代替的には、データファイルは、システム設計に従って標的デバイスをプログラム化するために使用され得る第２のコンピュータシステムに送信され得る。システムの設計はまた、ディスプレイデバイスまたは他の媒体上のように他の形で出力され得ることが認識される。標的デバイスは、全部のチップをプログラム化し、または初期化するための情報を含むデータファイルを用いてプログラム化され得、チップの部分は、その部分のみをプログラム化するための情報を含む他のデータファイルを用いて再プログラム化され得る。データファイルを有する標的をプログラム化することによって、標的デバイス上の部品は、システムを実装するために、物理的に転送される。
【００２６】
図５は、本発明の代表的な実施形態に従う、静的リソース割り当ておよび再割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。５０１において、システムのためのＨＤＬ設計が生成される。５０２において、統合がシステム上に行われる。５０３において、フロアプランがシステムに対して生成される。５０４において、ルーティングリソースは、システムの静的論理モジュールおよびＰＲモジュールに割り当てられる。本発明の実施形態に従って、図２に参照して説明された手順２０１〜２０４は、手順５０１〜５０４を実装するために使用される。
【００２７】
５０５において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびＰＲモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびＰＲモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、最も多くの数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第１のコンパイルの第１のコンピュータノード上に、全部の静的論理モジュールのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第２のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各ＰＲモジュールのインスタンスのコンパイルをスケジュールする。異なるＰＲモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。同一のＰＲモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされない場合もある。追加のコンパイルは、コンパイルされていないＰＲモジュールのインスタンスをコンパイルするようにスケジュールされ得る。別の実施形態において、１つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【００２８】
図６は、図１に例示された設計１００のために、図５において例示された方法を用いるコンパイルのための代表的なスケジュールを例示する表である。図６に示されるように、設計１００の静的論理モジュールおよびＰＲモジュールは、２つのコンパイルにおいて４つのコンピュータノードＰ１〜Ｐ４を用いてコンパイルされる。コンパイル１の間に、第１のコンピュータノードＰ１は、静的論理モジュール、トップ、Ａ、ＣおよびＥをコンパイルする。コンパイル２の間に、第１のコンピュータノードＰ１は、ＰＲモジュールＢ１およびＤ１をコンパイルし、第２のコンピュータノードＰ２は、ＰＲモジュールＢ２およびＤ２をコンパイルし、第３のコンピュータノードＰ３は、ＰＲモジュールＢ３およびＤ３をコンパイルし、第４のコンピュータノードＰ４は、ＰＲモジュールＢ４をコンパイルする。
【００２９】
図５に戻って参照すると、５０６および５０７において、システムの静的論理モジュールが設置され、かつルーティングされる。この方式において、図６からのコンパイル１が行われる。本発明の実施形態に従って、図２に参照して説明される手順２０６〜２０７は、静的論理モジュール上に手順５０６〜５０７を実装するために使用され得る。さらに、ＰＲモジュールのインスタンスに対して静的論理モジュールにまたはそれから接続することを必要とされる（「通してルーティングする」）ＰＲモジュールに割り当てられるルーティングリソースは、ＰＲモジュールのインスタンスに再割り当てされる。ＰＲモジュールの割り当てられたフロアプランエリアを通してＰＲモジュールまたは静的モジュールにまたはそれらからルートしなければならない静的モジュールからの接続は、設計ネットリストの分析によって決定され得る。１つのＰＲモジュールから別のＰＲモジュールへの接続は、静的論理境界のみを通して達成され得、それゆえに、接続は、（可能に、ＰＲモジュールに割り当てられたリソースを用いて）静−静的接続として処理され得る。本発明の実施形態に従って、５０６および５０７において説明された設置およびルーティング手順は、５０５において生成されたコンパイルスケジュールの第１の列に従って行われる。
【００３０】
５０８において、修正されたフロアプランが生成される。修正されたフロアプランは、静的論理モジュールに事前に割り当てられたフロアプラン領域のエリアを含むために、ＰＲモジュールに割り当てられたフロアプラン領域を拡張する。本発明の実施形態に従って、ＰＲモジュールに割り当てられた各フロアプラン領域の縁が反復して拡張される手順が利用され得る。この実施形態において、各フロアプラン領域の水平境界のエッジおよび各フロアプラン領域の垂直境界のエッジが、標的デバイスの境界または別のＰＲモジュールに対応する境界エッジに達するまでに、水平境界のエッジが垂直に動かされ、垂直境界のエッジが水平に動かされる。フロアプランを修正するための、ルーティング可能性およびタイミングの問題が予測されるフロアプラン領域を優先的に成長させる手順を含む他の手順が使用され得ることが認識されるべきである。
【００３１】
５０９において、デバイスリソースが再割り当てされる。静的論理モジュールに事前に割り当てられる、使用されていないリソースが、ＰＲモジュールに再割り当てられる。本発明の実施形態に従って、各ＰＲモジュールは、その割り当てられたフロアプラン領域に配置された使用されていないリソースを使用することを可能にされる。リソースをシステムのＰＲモジュールに静的に割り当て、かつ割り当てることによって、ＰＲモジュールは、任意の順序で設置され得、かつルーティングされ得る。加えて、ＰＲモジュールのインスタンスの設置およびルーティングが、並列に行われ得る。複数の処理ノードは、並列のコンパイルを容易にするように利用され得る。本発明の実施形態に従って、処理ノードは、設置およびルーティングのようなコンパイル手順を行うために、処理リソースを含む。
【００３２】
図７は、本発明の実施形態に従う、静的リソース割り当てのために使用された設計の代表的な修正されたフロアプラン７００を例示する。例示されるように、図３に例示されたＰＲモジュールＢに割り当てられたフロアプラン領域３１１は、静的論理モジュールトップおよびＥに事前に割り当てられたフロアプラン領域を含むように拡張される。静的論理モジュールトップおよびＥによって使用されていないリソースは、ＰＲモジュールＢに対して有用である。図３に例示されたＰＲモジュールＤに割り当てられたフロアプラン領域３１３は、静的論理モジュールＡ、Ｃ、Ｅおよびトップに事前に割り当てられたフロアプラン領域を含むように拡張される。静的論理モジュールＡ、Ｃ、Ｅおよびトップによって使用されていないリソースは、ＰＲモジュールＤに対して有用である。
【００３３】
図５に戻って参照すると、５１０および５１１において、システムのＰＲモジュールが設置され、かつルーティングされる。本発明の実施形態に従って、図２に参照して説明される手順２０６〜２０７は、ＰＲモジュール上に手順５１０〜５１１を実装するために使用され得る。本発明の実施形態に従って、５１０および５１１において説明された設置およびルーティング手順は、５０５において生成されたコンパイルスケジュールに従って行われる。この実施形態において、コンピュータノードは、１つ以上のコンパイルのためのルーティングおよび設置の手順のインスタンスを実行するために使用される。各コンピュータノードは、特定のコンパイル数の間に設置し、かつルーティングするための割り当てられた具体的なモジュールである。複数のコンピュータノードを利用することによって、ＰＲモジュールのインスタンスが並列にルーティングされ得る。
【００３４】
５１２において、組み立て手順が行われる。本発明の実施形態に従って、図２に参照して説明された手順２０８は、手順５１２を実装するために使用され得る。
【００３５】
図５に説明された方法は、図２に説明された方法以上のいくつかの利点を提供する。例えば、静的論理モジュールによって使用されていないルーティングリソースを再割り当てることによって、標的デバイス上の使用されていないルーティングリソースがより良く利用され得る。加えて、図５に説明された方法は、ＰＲモジュールが、インターモジュール通信上の限定を減少させる静的論理モジュールを通してルーティングすることを可能にする。図２の方法はまた、この増強を用いて修正され得ることが認識される。
【００３６】
図８は、本発明の代表的な実施形態に従う、自動発見を有する静的リソース割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。８０１において、システムのためのＨＤＬ設計が生成される。８０２において、統合がシステム上に行われる。８０３において、フロアプランがシステムに対して生成される。本発明の実施形態に従って、図２に参照して説明された手順２０１〜２０３は、手順８０１〜８０３を実装するために使用され得る。
【００３７】
８０４において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつ設計の静的論理モジュールおよびＰＲモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびＰＲモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルスケジュールは、第１のコンパイルの第１のコンピュータノード上に静的論理モジュールの全部と、各ＰＲモジュールの第１のインスタンスとのコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第２のコンパイルにおいてコンパイルされるべきである各ＰＲモジュールの次のインスタンスのコンパイルをスケジュールする。異なるＰＲモジュールのインスタンスは、同一のコンパイルの間に単一のコンピュータノードによって一緒にコンパイルされ得る。追加のコンパイルは、コンパイルされていないＰＲモジュールのインスタンスをコンパイルするようにスケジュールされ得る。別の実施形態において、１つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【００３８】
図９は、図１に例示された設計１００のための、図８に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。図９に示されるように、設計１００の静的論理モジュールおよびＰＲモジュールは、４つのコンパイルにおいて単一のコンピュータノードを用いてコンパイルされる。コンパイル１の間に、ノードトップ、Ａ、Ｂ１、Ｃ、Ｄ１およびＥが一緒にコンパイルされる。コンパイル２の間に、ノードＢ２およびＤ２が一緒にコンパイルされる。コンパイル３の間に、ノードＢ３およびＤ３が一緒にコンパイルされる。コンパイル４の間に、ノードＢ４がコンパイルされる。
【００３９】
図８に戻って参照すると、８０５において、システムの静的論理モジュールおよびＰＲモジュールが設置される。本発明の実施形態に従って、図２に参照して説明される手順２０６は、静的論理モジュールおよびＰＲモジュール上に手順８０５を実装するために使用され得る。
【００４０】
８０６において、設置されたシステムがルーティングされる。本発明の実施形態に従って、標的デバイス上のルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびＰＲモジュールの他の部品の間の相互接続を提供するために選択される。この実施形態において、静的論理モジュールおよびＰＲモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。ルーティングのためのこの手順は、モジュールが必要とされるルーティングリソースを発見するために自由にルーティングすることを可能にされるので、「自動発見」と呼ばれ得る。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。ＰＲモジュールの第１のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択するよりも、ＰＲモジュールの第２のインスタンスのために使用されるように優先的に選択される。他の静的論理モジュールおよびＰＲモジュールによって使用されていないルーティングリソースは、より早いコンパイル数において他の静的論理モジュールおよびＰＲモジュールによって既に使用されたルーティングリソースを選択するよりも、優先的に選択される。
【００４１】
本発明の実施形態に従って、８０５および８０６において説明された設置およびルーティングの手順は、８０４において生成されたコンパイルスケジュールに従って行われる。この実施形態において、単一のコンピュータノードは、複数のコンパイルのための設置および処理手順の単一のインスタンスを実行するために使用される。
【００４２】
８０７において、競合する任意のルーティングリソースがあるか否かが決定される。異なるＰＲモジュールのインスタンスまたはＰＲモジュールおよび静的論理モジュールのインスタンスによって使用されるために選択されるルーティングリソースが、競合するように考慮される。同一のルーティングリソースを選択するモジュールが、競合するモジュールであるように考慮される。競合するように決定されるルーティングリソースがない場合に、制御は、８０８へ進む。競合するように決定されるルーティングリソースがある場合に、制御は、８０９へ進む。
【００４３】
８０８において、制御は、手順を終了させる。
【００４４】
８０９において、競合のルーティングリソースが仲裁される。本発明の実施形態に従って、競合するルーティングリソースの各々は、ルーティングリソースを選択した競合するモジュールのうちの１つに割り当てられる。ルーティングリソースは、モジュール、または他の基準に関連付けられたタイミング制約またはルーティング制約に基づいて仲裁され得ることが認識される。代替的には、ルーティングリソースの仲裁が、ランダム指定に基づき得る。
【００４５】
８１０において、使用されていないルーティングリソースが割り当てられる。８０６においてルーティングからの使用されていないルーティングリソースは、競合を有する静的論理モジュールとＰＲモジュールとに割り当てられる。本発明の実施形態に従って、８０６において発見された詳細なルーティングリソースは、モジュールのルーティングのための候補として割り当てられるべきである更新されたセットのリソースを生成するために使用される。その発見されたリソースのための仲裁においてそのリソースを成功させていない信号は、次回のルーティングにおいて代替的な選択肢へのアクセスを有するために、所望の配線の近傍のリソースに割り当てられる。仲裁および割り当てのための特定の手順に対する詳細は、デバイスのルーティング接続性の仕様に対して特定であることと、他の手順が使用され得ることとが認識されるべきである。
【００４６】
８１１において、新しいコンパイルスケジュールが生成される。新しいコンパイルスケジュールは、いつ競合を有する１つ以上のモジュールが再コンパイルされるかを決定する。行われた再コンパイルは、モジュールのルーティング上に競合を有する１つ以上のネットリストの再ルーティングを含み得る。本発明の実施形態に従って、異なるＰＲモジュールのインスタンスは、同一の再コンパイルの間に、単一のコンピュータノードによって一緒に再コンパイルされ得る。
【００４７】
８１２において、競合を有するモジュールは、８０９において仲裁されたルーティングリソースを用いて再ルーティングされ、８１１において生成されたコンパイルスケジュールに従って８１０において割り当てられる。本発明の実施形態に従って、競合を有するモジュールもみが再ルーティングされる。競合を有しないモジュールは、それらのより早いルーティング選択を利用する。仲裁が、競合がなかった静的リソース指定を生成したので、我々は、さらなる競合がないことを保証される。手順は、成功のルートを用いて終了する。仲裁および割り当てが、不完全な静的リソース指定のために、結果としてルートへの失敗を生じ得る別の実施形態において、手順は、変更される必要がある仲裁および割り当ての詳細を用いて、ステップ８０７へ戻り得る。
【００４８】
８０５の優先的順序は、非並列のコンパイルを達成する。代替的な実施形態において、単一のコンピュータノードが直列に設置およびルーティングの単一のインスタンスを実行するために利用されるコンパイルスケジュールを生成することを代わりに、複数のコンピュータノードは、並列に設置およびルーティングの複数のインスタンスを実行するために利用され得る。この実施形態において、ＰＲモジュールの異なるインスタンスは、同一のコンパイルの間に、利用可能なコンピュータノード上に並列にコンパイルされ得る。異なるＰＲモジュールのインスタンスはまた、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。この実施形態において、各ルーティングが他のルーティングの結果の知識なしに行われるので、競合の可能性は、増大する。
【００４９】
図８において説明された方法は、８０３において生成されたフロアプランを用いて設置を行う。本発明の代替的な実施形態において、設置は、設置がフロアプランによって制約されない自動発見方式で行われ得ることが認識される。この実施形態において、設置の競合もルーティングの競合も８０７において識別され得、再設置手順は、新しいスケジュールが８１１において生成された後に行われ得る。
【００５０】
図１０は、本発明の代表的な実施形態に従う、動的リソース割り当てを用いて標的デバイス上のＰＲモジュールを有するシステムを設計するための方法を例示するフローチャートである。この実施形態において、モジュールへのリソースの静的割り当てが行われない。代わりに、設置およびルーティングの動作は、正当の解決上の収束までに動く。１００１において、システムのためのＨＤＬ設計が生成される。１００２において、統合が、システム上に行われる。１００３において、フロアプランが、システムに対して生成される。本発明の代替的な実施形態において、フロアプランが生成されない。本発明の実施形態に従って、図２に参照して説明される手順２０１〜２０３は、手順１００１〜１００３を実装するために使用され得る。
【００５１】
１００４において、コンパイルスケジュールが生成される。コンパイルスケジュールは、いつおよびどのコンピュータノードによって設計の静的論理モジュールおよびＰＲモジュールがコンパイルされるかを決定する。行われたコンパイルは、静的論理モジュールおよびＰＲモジュールの設置およびルーティングを含み得る。本発明の実施形態に従って、コンパイルは、同数の利用可能なコンピュータノードが同数のコンパイルを並列に行うために利用されるようにスケジュールされる。本発明の実施形態に従って、コンパイルスケジュールは、第１のコンパイルの第１のコンピュータノード上に静的論理モジュールの全部のコンパイルを一緒にスケジュールする。次に、コンパイルスケジュールは、第２のコンパイルの利用可能なコンピュータノード上に並列にコンパイルされるべきである各ＰＲモジュールのインスタンスのコンパイルをスケジュールする。異なるＰＲモジュールのインスタンスは、同一のコンパイルの間に同一のコンピュータノードによって一緒にコンパイルされ得る。追加のコンパイルは、コンパイルされていないＰＲモジュールのインスタンスをコンパイルするようにスケジュールされ得る。代替的な実施形態において、１つのコンピュータのみが利用可能であり、スケジューリング手順は、単一のコンピュータノード上にコンパイルされるべきであるコンパイルを連続して順序付ける。
【００５２】
図１１Ａは、図１に例示された設計１００のための、図１０に例示された方法を用いてコンパイルのための代表的なスケジュールを例示する表である。図１１に示されるように、設計１００の静的論理モジュールおよびＰＲモジュールは、２つのコンパイルにおいて４つのコンピュータノードＰ１〜Ｐ４を用いてコンパイルされる。コンパイル１の間に、第１のコンピュータノードＰ１は、モジュール、トップ、Ａ、ＣおよびＥをコンパイルする。コンパイル２の間に、第１のコンピュータノードＰ１は、モジュールＢ１およびＤ１をコンパイルし、第２のコンピュータノードＰ２は、モジュールＢ２およびＤ２をコンパイルし、第３のコンピュータノードＰ３は、モジュールＢ３およびＤ３をコンパイルし、第４のコンピュータノードＰ４は、モジュールＢ４をコンパイルする。
【００５３】
図１０に戻って参照すると、１００５において、システムの静的論理モジュールおよびＰＲモジュールが設置される。本発明の実施形態に従って、図２に参照して説明される手順２０６は、静的論理モジュールおよびＰＲモジュール上に手順１００５を実装するために使用され得る。
【００５４】
１００６において、設置されたシステムがルーティングされる。本発明の実施形態に従って、標的デバイス上のルーティングリソースは、論理ゲート、論理要素、および静的論理モジュールおよびＰＲモジュールの他の部品の間の相互接続を提供するために選択される。この実施形態において、静的論理モジュールおよびＰＲモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。ルーティングのためのこの手順は、モジュールが必要とされるルーティングリソースを発見するために自由にルーティングすることを可能にされるので、「自動発見」と呼ばれ得る。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。ＰＲモジュールの第１のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択するよりも、ＰＲモジュールの第２のインスタンスのために使用されるように優先的に選択される。他の静的論理モジュールおよびＰＲモジュールによって使用されていないルーティングリソースは、他の静的論理モジュールおよびＰＲモジュールによって使用されたルーティングリソースを選択するよりも、優先的に選択される。
【００５５】
本発明の実施形態に従って、１００５および１００６において説明された設置およびルーティングの手順は、１００４において生成されたコンパイルスケジュールに従って行われる。この実施形態において、複数のコンピュータノードは、ＰＲモジュールのインスタンスが並列にコンパイルされることを可能にするために、設置および処理手順の複数のインスタンスを実行する。
【００５６】
１００７において、競合する任意のルーティングリソースがあるか否かが決定される。２つ以上のモジュールによって使用されるために選択されるルーティングリソースが、競合するように考慮される。同一のルーティングリソースを選択するモジュールが、競合するモジュールであるように考慮される。競合するように決定されるルーティングリソースがない場合に、制御は、１００８へ進む。競合するように決定されるルーティングリソースがある場合に、制御は、１００９へ進む。
【００５７】
１００８において、制御は、手順を終了させる。
【００５８】
１００９において、新しいコンパイルスケジュールが生成される。新しいコンパイルスケジュールは、いつおよびどのコンピュータノードによって競合を有する１つ以上のノードが再コンパイルされるべきであるかを決定する。行われた再コンパイルは、競合を有する１つ以上のノードの再ルーティングを含み得る。本発明の実施形態に従って、異なるＰＲモジュールのインスタンスは、同一の再コンパイルの間に単一のコンピュータノードによって一緒に再コンパイルされ得る。
【００５９】
図１１Ｂは、図１に例示された設計１００のための、図１０に例示された方法を用いてコンパイルのための代表的な新しいスケジュールを例示する表である。この実施例において、競合は、静的論理モジュールトップとＰＲモジュールＢ１との間に、静的論理モジュールＡとＰＲモジュールＢ２との間に検出されている。新しいスケジュールは、これらのモジュールの再ルーティングをスケジュールする。コンパイル３の間に、第１のコンピュータノードＰ１は、静的論理モジュールトップとＡ、およびＰＲモジュールＢ１をコンパイルする。コンパイル３の間に、第２のコンピュータノードＰ２は、モジュールＢ２をコンパイルする。
【００６０】
１０１０において、競合を有するモジュールが再ルーティングされる。本発明の実施形態に従って、競合を有する静的論理モジュールおよびＰＲモジュールは、標的デバイス上のどこにもルーティングリソースを用いてルーティングされることを可能にされる。本発明の実施形態に従って、モジュールに対してルーティングリソースを選択する場合に、優先の順序が使用される。ＰＲモジュールの第１のインスタンスに対して選択されたルーティングリソースは、他のルーティングリソースを選択する前に、ＰＲモジュールの第２のインスタンスのために使用されるように選択される。他の静的論理モジュールおよびＰＲモジュールによって使用されていないルーティングリソースは、他の静的論理モジュールおよびＰＲモジュールによって使用されたルーティングリソースを選択する前に、選択される。制御は、１００７へ戻る。手順１００７〜１０１０が反復され、１０１０において説明された選択の優先は、手順が解決上に収束することを可能にするコスト関数で実装され得る。
【００６１】
本発明の代替的な実施形態において、設置はまた、設置がフロアプランによって制約されない自動発見方式で行われ得る。この実施形態において、設置の競合は、１００７においてルーティングの競合を用いて識別され得、再設置手順は、新しいスケジュールが１００９において生成された後に行われ得る。
【００６２】
図２、５、８および１０は、本発明の実施形態を例示するフローチャートである。例示された技術のいくつかは、連続して、並列に、または説明されたことと、説明された手順が繰り返され得ること以外の順序で行われ得る。説明された技術の全部が行われる必要がないことと、追加の技術が加えられ得ることと、例示された技術のいくつかが他の技術を用いて代替され得ることとが認識される。
【００６３】
図１２は、本発明の例の実施形態が存在するコンピュータシステム１２００のブロックダイヤグラムである。コンピュータシステム１２００は、データ信号を処理する１つ以上のプロセッサを含む。示されるように、コンピュータシステム１２００は、第１のプロセッサ１２０１と、第ｎのプロセッサ１２０５とを含み、ｎは、任意数であり得る。プロセッサ１２０１および１２０５は、各チップ上に複数のプロセッサコアーを有する多重コアープロセッサであり得る。プロセッサ１２０１および１２０５は、ＣＰＵバス１２１０またはプロセッサ１２０１および１２０５と、コンピュータシステム１２００の他の部品との間にデータ信号を送信する他のスイッチ構造に連結される。本発明の実施形態に従って、コンピュータシステム１２００のプロセッサまたはプロセッサコアーの各々は、コンピュータノードとして動作し得、その自身のスレッドを実行し得る。各スレッドは、他のスレッドと共に、ソフトウェアプログラムのインスタンスを並列に実行し得る。
【００６４】
コンピュータシステム１２００は、メモリ１２１３を含む。メモリ１２１３は、プロセッサ１２０１および１２０５によって実行され得るデータ信号によって表わされる指令およびコードを格納し得る。ブリッジメモリコントローラ１２１１は、ＣＰＵバス１２１０とメモリ１２１３とに連結される。ブリッジメモリコントローラ１２１１は、プロセッサ１２０１および１２０５と、メモリ１２１３と、コンピュータシステム１２００他の部品との間に信号を向け、ＣＰＵバス１２１０と、メモリ１２１３と、第１のＩＯバス１２２０との間にブリッジする。本発明の実施形態に従って、プロセッサ１２０１および１２０５は、メモリ１２１３に直接に連結され得、ブリッジメモリコントローラ１２１１なしにメモリ１２１３と通信する。
【００６５】
第１のＩＯバス１２２０は、単一のバスまたは複数のバスの組み合わせであり得る。第１のＩＯバス１２２０は、コンピュータシステム１２００の部品の間に通信リンクを提供する。ネットワークコントローラ１２２１は、第１のＩＯバス１２２０に連結される。ネットワークコントローラ１２２１は、コンピュータシステム１２００をコンピュータのネットワーク（示されていない）にリンクし得、機械の中の通信を支持する。ディスプレイデバイスコントローラ１２２２は、第１のＩＯバス１２２０に連結される。ディスプレイデバイスコントローラ１２２２は、コンピュータシステム１２００へのディスプレイデバイス（示されていない）の連結を可能にし、ディスプレイデバイスとコンピュータシステム１２００との間のインターフェースとして動作する。
【００６６】
第２のＩＯバス１２３０は、単一のバスまたは複数のバスの組み合わせであり得る。第２のＩＯバス１２３０は、コンピュータシステム１２００の部品の間の通信リンクを的称する。データ記憶デバイス１２３１が、第２のＩＯバス１２３０に連結される。入力インターフェース１２３２が、第２のＩＯバス１２３０に連結される。入力インターフェース１２３２は、コンピュータシステム１２００への入力デバイスの連結を可能にし、入力デバイスからコンピュータシステム１２００まで連結する。バスブリッジ１２２３は、第１のＩＯバス１２２０と第２のＩＯバス１２３０との間にデータ信号をバッファーし、かつブリッジするように動作する。異なるアーキテクチャを有するコンピュータシステムはまた、コンピュータシステム１２００を実装するために使用され得ることが認識されるべきである。
【００６７】
システム設計者１２４０は、メモリ１２１３に存在し、メモリに存在するプロセッサ１２０１および１２０５またはプロセッサコアーの１つ以上によって実行され得る。システム設計者１２４０は、ＨＤＬを生成し、システムを統合し、フロアプランを生成し、ルーティングリソースを割り当て、コンパイルスケジュール、標的デバイス上にシステムを設置し、標的デバイス上にシステムをルートさせ、フロアプランを修正し、ルーティングリソースを再割り当て、競合を仲裁し、システムを組み立て、そして／または他の手順、例えば、図２、５、８および１０に説明される手順を行うように動作し得る。本発明の実施形態に従って、システム設計者１２４０は、同時に（並列に）複数のスレッドによって実行され得る部分を含むプログラム。
【００６８】
本発明の実施形態は、指令を有するコンピュータ読み取り可能または機械読み取り可能な媒体を含み得るコンピュータプログラム製品、またはソフトウェアとして提供され得る。コンピュータ読み取り可能または機械読み取り可能な媒体上の指令は、コンピュータプログラムまたは他の電子デバイスをプログラム化するように使用され得る。機械読み取り可能な媒体は、フロッピディスケット、光学ディスク、ＣＤ−ＲＯＭ、および磁気光学ディスクまたは電子指令を格納するのに適切な他のタイプの媒体／機械読み取り可能な媒体を含み得、しかしそれらに限定されない。
【００６９】
本明細書に説明された技術は、任意の特定のソフトウェア構成に限定されない。それらは、計算または処理環境において適応性を見つけ得る。本明細書に使用された用語「コンピュータ読み取り可能な媒体」または「機械読み取り可能な媒体」は、コンピュータによって実行のための一連の命令を格納しまたは符号化することが可能であり、コンピュータに本明細書に説明された方法のいずれかを行わせる任意の媒体を含むべきである。さらに、動作をとり、または結果を生じる１つの形または別の形（例えば、プログラム、手順、応用、モジュール、ユニット、論理等）においてソフトウェアの認識は、当分野において共通である。このような表現は、単に処理システムによるソフトウェアの実行が、プロセッサに結果を生成するための動作を行わせることを説明する簡略的方法である。
【００７０】
図１３は、本発明の実施形態に従って標的デバイスを実装するために使用され得るデバイス１３００を例示する。デバイス１３００は、複数の論理アレイブロック（ＬＡＢ）を含むフィールドプログラマブルゲートアレイ（ＦＰＧＡ）である。各ＬＡＢは、複数の論理ブロック、キャリアチェーン、ＬＡＢ制御信号、ルックアップテーブル（ＬＵＴ）チェーン、およびレジスタチェーン接続ラインから形成され得る。論理ブロックは、ユーザー論理機能の効率的実装を提供する小さな論理ユニットである。論理ブロックは、組み合わせセルであり、各組み合わせセルは、単一の出力、およびレジスタを有する。本発明の一実施形態に従って、論理ブロックは、論理要素（ＬＥ）、例えば、Ａｌｔｅｒａ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＳｔｒａｔｉｘデバイスまたはＣｙｃｌｏｎｅデバイスにおいて見つけられるそれら、または組み合わせ論理ブロック（ＣＬＢ）、例えば、Ｘｉｌｉｎｘ  Ｉｎｃ．によって製造されたＶｉｒｔｅｘデバイスにおいて見つけられるそれらに類似して動作し得る。この実施形態において、論理ブロックは、構成可能なレジスタを有する４つの入力ＬＵＴを含み得る。本発明の代替的な実施形態に従って、論理ブロックは、適合性のある論理モジュール（ＡＬＭ）、例えば、Ａｌｔｅｒａ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎによって製造されたＳｔｒａｔｉｘデバイスにおいて見つけられるそれらに類似して動作し得る。ＬＡＢは、デバイス１３００にわたる行および列にグループ化される。ＬＡＢの列が、１３１１〜１３１６として示される。論理ブロックは、追加または代替的な部品を含み得ることが認識されるべきである。
【００７１】
デバイス１３００は、メモリブロックを含む。メモリブロックは、例えば、専用の真デュアルポート、簡単デュアルポート、またはさまざまなビットまでのメモリ、さまざまな周波数までの幅広さを有する単一のポートを提供するデュアルポートランダムアクセスメモリ（ＲＡＭ）ブロックであり得る。メモリブロックは、選択されたＬＡＢの間においてデバイスにわたる列にグループ化され得、またはデバイス１３００内に単独またはペアで配置され得る。メモリブロックの列が、１３２１〜１３２４として示される。
【００７２】
デバイス１３００は、デジタル信号処理（ＤＳＰ）ブロックを含む。ＤＳＰブロックは、加算また減算の特徴を有するさまざまな構成の掛算器を実装するために使用され得る。ＤＳＰブロックは、シフトレジスタ、乗算器、加算器、および累算器を含む。ＤＳＰブロックは、デバイス１３００にわたる列にグループ化され得、１３３１として示される。
【００７３】
デバイス１３００は、複数の入力／出力要素（ＩＯＥ）１３４０を含む。各ＩＯＥは、ＩＯピン（示されていない）デバイス１３００上に与える。ＩＯＥ１３４０は、デバイス１３００の周囲の周りにＬＡＢの行および列の最後に配置される。各ＩＯＥは、双方向ＩＯバッファーと、入力、出力、および出力可能な信号を登録するための複数のレジスタとを含み得る。
【００７４】
デバイス１３００は、標的デバイス上の部品の間に信号をルーティングするために、ルーティングリソース、例えば、ＬＡＢローカル相互接続ライン、列の相互接続ライン（「Ｈタイプ配線」）、および行の相互接続ライン（「Ｖタイプ」配線）（示されていない）を含み得る。
【００７５】
以上の明細書において、本発明の実施形態は、明細書の具体的代表的な実施形態を参照して説明されている。しかしながら、さまざまな修正および変更は、本発明の実施形態のより広い精神および範囲から逸脱することなしに明細書に加えられ得ることが考えられる。従って、明細書および図面は、制限的意味より例示的意味とみなされるべきである。
【符号の説明】
【００７６】
１００  システム
１１０  トップレベルモジュール
Ａ〜Ｅ  モジュール
【図１】
0005937845.tif 000002
【図２】
0005937845.tif 000003
【図３】
0005937845.tif 000004
【図４】
0005937845.tif 000005
【図５】
0005937845.tif 000006
【図８】
0005937845.tif 000007
【図１０】
0005937845.tif 000008
【図１２】
0005937845.tif 000009
【図６】
0005937845.tif 000010
【図７】
0005937845.tif 000011
【図９】
0005937845.tif 000012
【図１１Ａ】
0005937845.tif 000013
【図１１Ｂ】
0005937845.tif 000014
【図１３】
0005937845.tif 000015