(57)【特許請求の範囲】
【請求項１】
プロセッサ上で動作を実行するステップを含む方法であって、
前記動作は、
前記プロセッサに結合されたメモリに記憶された回路設計のための第１のネットリストを生成するステップと、
ターゲットＩＣ上での前記第１のネットリストの配置を決定することにより、第１の配置設計を作成するステップと、
前記第１の配置設計に対して最適化のセットを行なうステップと、
前記最適化のセットの最適化毎に、行なわれた物理合成最適化の種類、および前記最適化によって修正されたモジュールインスタンスの名称を指定することによって、最適化履歴ファイルに前記最適化のセットを記録するステップと、
前記指定された物理合成最適化の種類に従って前記指定されたモジュールインスタンスを修正することによって、前記最適化履歴ファイルにおいて指定された１つ以上の最適化を前記第１のネットリストに対して行なうことにより、前記第１のネットリストとは異なる第２のネットリストを作成するステップと、
前記ターゲットＩＣ上での前記第２のネットリストの配置を決定することにより、前記第１の配置設計とは異なる第２の配置設計を作成するステップと、
前記第２の配置設計のネットをルーティングすることにより、配置およびルーティングされた回路設計を作成するステップとを含む、方法。
【請求項２】
前記第２のネットリストの配置を決定するステップよりも前に前記１つ以上の最適化を行なうことにより、前記第２のネットリストの前記配置および前記第２の配置設計における前記ネットのルーティングを行なうために必要な処理リソースは、前記第１のネットリストの配置および前記第１の配置設計における前記ネットのルーティングを行なうために必要な処理リソースと比較して少なくなる、請求項１に記載の方法。
【請求項３】
前記最適化履歴ファイルにおいて指定された最適化を前記第１のネットリストに対して行なうステップは、
前記最適化履歴ファイルにおける優先度の高い最適化のセットと、前記最適化履歴ファイルにおける優先度の低い最適化のセットとを決定するステップと、
前記優先度の高い最適化のセットに含まれる最適化のみを行なうステップと、
前記第２のネットリストの前記配置の後に、前記優先度の低い最適化のセットを配置された前記第２のネットリストに対して行なうステップとを含む、請求項１に記載の方法。
【請求項４】
前記最適化履歴ファイルはさらに、１つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットＩＣ上での前記第２のネットリストの前記配置を決定するステップは、前記第２のネットリストの他の回路モジュールを配置する前に、前記１つ以上のタイミングクリティカル回路モジュールを配置する、請求項１に記載の方法。
【請求項５】
前記最適化履歴ファイルはさらに、１つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットＩＣ上での前記第２のネットリストの前記配置を決定するステップは、前記第２のネットリストの他の回路モジュールを配置する前に、前記１つ以上のタイミングクリティカル回路モジュールを配置する、請求項１に記載の方法。
【請求項６】
前記最適化履歴ファイルにおいて指定された前記１つ以上の最適化は、デジタル信号プロセッサ（ＤＳＰ）レジスタ最適化、ＢＲＡＭレジスタ最適化、シフトレジスタ最適化、強制ネット複製、ファンアウト最適化、置換最適化、再配線／ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および／またはホールドタイム修正最適化、またはこれらの組合せを含む、請求項１に記載の方法。
【請求項７】
前記ターゲットＩＣのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップと、
前記ターゲットＩＣに結合された不揮発性メモリに前記構成データのセットを記憶するステップとをさらに含み、
前記ターゲットＩＣは、電源を投入されると、前記不揮発性メモリ内の前記構成データのセットで前記ターゲットＩＣの前記プログラマブルリソースをプログラムするように構成され、
前記最適化履歴ファイルは、ツールコマンド言語スクリプトで前記最適化のセットを指定する、請求項１に記載の方法。
【請求項８】
システムであって、
プロセッサと、
前記プロセッサに結合されたメモリ装置とを備え、前記メモリ装置は、前記プロセッサによって実行された場合に前記プロセッサに動作を行なわせる命令を有するように構成されており、前記動作は、
前記メモリ装置に記憶された回路設計のための第１のネットリストを生成するステップと、
ターゲットＩＣ上での前記第１のネットリストの配置を決定することにより、第１の配置設計を作成するステップと、
前記第１の配置設計に対して最適化のセットを行なうステップと、
前記最適化のセットの最適化毎に、行なわれた物理合成最適化の種類、および前記最適化によって修正されたモジュールインスタンスの名称を指定することによって、最適化履歴ファイルに前記最適化のセットを記録するステップと、
前記指定された物理合成最適化の種類に従って前記指定されたモジュールインスタンスを修正することによって、前記最適化履歴ファイルにおいて指定された１つ以上の最適化を前記第１のネットリストに対して行なうことにより、前記第１のネットリストとは異なる第２のネットリストを作成するステップと、
前記ターゲットＩＣ上での前記第２のネットリストの配置を決定することにより、前記第１の配置設計とは異なる第２の配置設計を作成するステップと、
前記第２の配置設計のネットをルーティングすることにより、配置およびルーティングされた回路設計を作成するステップとを含む、システム。
【請求項９】
前記第２のネットリストの配置を決定するステップよりも前に前記１つ以上の最適化を行なうことにより、前記第２のネットリストの前記配置および前記第２の配置設計における前記ネットのルーティングを行なうために必要な処理リソースは、前記第１のネットリストの配置および前記第１の配置設計における前記ネットのルーティングを行なうために必要な処理リソースと比較して少なくなる、請求項８に記載のシステム。
【請求項１０】
前記ターゲットＩＣのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップと、
前記ターゲットＩＣに結合された不揮発性メモリに前記構成データのセットを記憶するステップとをさらに含み、
前記ターゲットＩＣは、電源を投入されると、前記不揮発性メモリ内の前記構成データのセットで前記ターゲットＩＣの前記プログラマブルリソースをプログラムするように構成されている、請求項１に記載の方法。
【請求項１１】
前記最適化履歴ファイルはさらに、１つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットＩＣ上での前記第２のネットリストの前記配置を決定するステップにおいて、前記プロセッサは、前記第２のネットリストの他の回路モジュールを配置する前に前記１つ以上のタイミングクリティカル回路モジュールを配置する、請求項８に記載のシステム。
【請求項１２】
前記プロセッサによって行なわれた前記１つ以上の最適化は、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、ＤＳＰレジスタ最適化、ＢＲＡＭレジスタ最適化、シフトレジスタ最適化、再配線／ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、ホールドタイム修正最適化、またはこれらの組合せを含む、請求項８に記載のシステム。
【請求項１３】
前記ターゲットＩＣをさらに備え、
前記命令はさらに、前記プロセッサに、
前記ターゲットＩＣのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップを行なわせ、
前記最適化履歴ファイルは、ツールコマンド言語スクリプトで前記最適化のセットを指定する、請求項８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示は、概して、プログラマブル集積回路におけるリソースの配置、ルーティング、およびタイミングクロージャに関する。
【背景技術】
【０００２】
背景
プログラマブル論理デバイス（ＰＬＤ）は、ユーザ構成可能入力に従ってデジタル論理演算を実装するために使用される集積回路（ＩＣ）である。ＰＬＤの例えば、複合プログラマブル論理デバイス（ＣＰＬＤ）およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ）が挙げられる。多くの場合、ＣＰＬＤは、積和論理を用いたプログラマブル論理アレイ（ＰＬＡ）アーキテクチャに基づくいくつかの機能ブロックを含む。構成可能インターコネクトマトリックスは、機能ブロック間で信号を伝達する。
【０００３】
ＦＰＧＡの例えば、構成可能論理ブロック（ＣＬＢ）のアレイおよびプログラマブル入出力ブロック（ＩＯＢ）のリングまたはカラムが挙げられる。ＣＬＢおよびＩＯＢは、プログラマブルインターコネクト構造（ルーティングリソース）によって相互接続される。ＣＬＢ、ＩＯＢ、およびインターコネクト構造は、典型的には、構成データのストリーム（ビットストリーム）を、ＣＬＢ、ＩＯＢ、およびインターコネクト構造の構成方法を定義する内部構成メモリセル内にロードすることによって、プログラムされる。構成ビットストリームは、外部メモリ（通常は、外部集積回路メモリであるＥＥＰＲＯＭ、ＥＰＲＯＭ、およびＰＲＯＭなど）から読込まれ得るが、他の種類のメモリが使用されてもよい。個別のメモリセルの集合的な状態がＦＰＧＡの機能を決定する。特定の種類のＦＰＧＡは、ルックアップテーブル（ＬＵＴ）ベースのＣＬＢを用いる。構成メモリは、ＣＬＢへの入力によって制御される複数のマルチプレクサに入力値を提供する。
【０００４】
ＡＳＩＣまたはＦＰＧＡなどの集積回路のための従来の設計プロセスは、回路設計の作成から始まる。回路設計の機能は、さまざまなプログラマブル言語（例えば、ＶＨＤＬ、ＡＢＥＬ、またはＶｅｒｉｌｏｇ）、または図式化されたキャプチャプログラムを用いて表現され得る。設計は論理的に合成され、ターゲット集積回路デバイスによってサポートされる論理ネットワークリスト（「ネットリスト」）が生成される。ネットリストは、ターゲットデバイス（例えば、ターゲットプログラマブルＩＣ）において利用可能なプリミティブコンポーネントにマップされる。
【０００５】
論理合成に続いて、ネットリストのコンポーネントがターゲットデバイスへの実装のために配置される。配置の際、マップされた設計の各コンポーネントは、対応のプリミティブコンポーネントのインスタンスが存在し得るチップ上の物理位置に割当てられる。配置プログラムの目的は、接続した設計物を互いに物理的に近接して配置することである。これにより、チップ上の空間が節約されるとともに、コンポーネント間の所望の相互接続がルータによって首尾よく完成される可能性が高まる。また、接続したコンポーネントを互いに近接して配置することによって、一般的に回路の性能も向上する。なぜなら、インターコネクトパスが長い場合、それに付随してキャパシタンスおよび抵抗が過剰になり、結果として遅延が大きくなるからである。
【０００６】
設計のコンポーネント間の特定の接続は、配置されたコンポーネントのターゲットデバイスにおいてルーティングされる。ルーティングにより、配置設計のコンポーネントのピン間で信号を伝導するために用いられる物理配線リソースが指定される。ルーティングでは、設計において指定された接続毎に、接続を完成させるのに必要な配線を割当てなければならない。本明細書で使用するとき、あるコンポーネントの出力ピンを別のコンポーネントの入力ピンに接続する際に配線リソースを選択して割当てることを、「信号をルーティングする」と表現する。ある領域内のほとんどまたは全ての配線リソースを使用して信号がルーティングされた場合、この領域は一般的に「混雑している」と表現される。これにより、当該領域内の残りの配線リソースの競合が生じ、または、当該領域内の追加の信号のルーティングが困難または不可能になる。プレイスアンドルート（place-and-route）手続きは、設計のタイミング、消費電力、使用ルーティングリソース、およびそれらの任意の組合せの最適化を含む場合がある。いくつかの場合には、タイミングベースの設計の評価も提供される。
【発明の概要】
【課題を解決するための手段】
【０００７】
概要
さまざまな実装例が、回路設計の論理合成、配置、最適化、およびルーティングのための効率的な方法に向けられる。本発明の一実施形態において、回路設計のための第１のネットリストが生成される。ターゲットＩＣ上への実装のために第１のネットリストの配置が決定され、第１の配置設計が作成される。第１の配置設計に対して最適化のセットが行なわれる。最適化のセットの最適化毎に、最適化が最適化履歴ファイルに記録される。最適化履歴ファイルにおいて指定された１つ以上の最適化が第１のネットリストに対して行なわれ、第１のネットリストとは異なる第２のネットリストが作成される。ターゲットＩＣ上への実装のために第２のネットリストの配置が決定され、第１の配置設計とは異なる第２の配置設計が作成される。第２の配置設計のネットがルーティングされ、配置およびルーティングされた回路設計が作成される。
【０００８】
オプションとして、第２のネットリストの配置を決定するステップよりも前に１つ以上の最適化を行なうことにより、第２のネットリストの配置および第２の配置設計におけるネットのルーティングを行なうために必要な処理リソースは、第１のネットリストの配置および第１の配置設計におけるネットのルーティングを行なうために必要な処理リソースと比較して少なくなり得る。
【０００９】
オプションとして、最適化履歴ファイルにおいて指定された最適化を第１のネットリストに対して行なうステップは、最適化履歴ファイルにおける優先度の高い最適化のセットと、最適化履歴ファイルにおける優先度の低い最適化のセットとを決定するステップと、優先度の高い最適化のセットに含まれる最適化のみを行なうステップとを含む。
【００１０】
オプションとして、方法はさらに、第２のネットリストの配置の後に、優先度の低い最適化のセットを第２の配置ネットリストに対して行なうステップを含んでもよい。
【００１１】
オプションとして、最適化履歴ファイルはさらに、１つ以上のタイミングクリティカル回路モジュールを特定し、ターゲットＩＣ上での第２のネットリストの配置を決定するステップは、第２のネットリストの他の回路モジュールを配置する前に、１つ以上のタイミングクリティカル回路モジュールを配置する。
【００１２】
オプションとして、方法はさらに、最適化履歴ファイルに記録された最適化のために、第２のネットリストにおいて回路モジュールを特定するステップと、特定されたモジュールインスタンスに対して最適化を行なうステップとを含んでもよい。
【００１３】
オプションとして、最適化履歴ファイルにおいて指定された１つ以上の最適化は、デジタル信号プロセッサ（ＤＳＰ）レジスタ最適化、ＢＲＡＭレジスタ最適化、シフトレジスタ最適化、またはこれらの組合せを含んでもよい。
【００１４】
オプションとして、最適化履歴ファイルにおいて指定された１つ以上の最適化は、回路設計の回路モジュールを複数のサブモジュールに分解するステップを含んでもよく、第２のネットリストの配置を決定するステップは、複数のサブモジュールの各々の配置を独立して決定してもよい。
【００１５】
オプションとして、最適化履歴ファイルにおいて指定された１つ以上の最適化は、強制ネット複製、ファンアウト最適化、置換最適化、またはこれらの組合せを含んでもよい。
【００１６】
オプションとして、最適化履歴ファイルにおいて指定された１つ以上の最適化は、再配線／ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および／またはホールドタイム修正最適化、またはこれらの組合せを含んでもよい。
【００１７】
オプションとして、方法はさらに、ターゲットＩＣのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、配置およびルーティングされた回路設計を実装するステップと、ターゲットＩＣに結合された不揮発性メモリに構成データのセットを記憶するステップとを含んでもよい。ターゲットＩＣは、電源を投入されると、不揮発性メモリ内の構成データのセットでターゲットＩＣのプログラマブルリソースをプログラムするように構成されてもよい。
【００１８】
オプションとして、最適化履歴ファイルは、ツールコマンド言語スクリプトで最適化のセットを指定する。
【００１９】
また、回路設計の論理合成、配置、最適化、およびルーティングのためのシステムが開示される。一実装例において、システムは、プロセッサと、プロセッサに結合されたメモリ装置とを備える。メモリ装置は、プロセッサによって実行された場合に、メモリに記憶された回路設計のための第１のネットリストを生成し、ターゲットＩＣへの実装のための第１のネットリストの配置を決定し、第１の配置設計を作成するステップをプロセッサに行なわせる命令を有するように構成されている。命令はさらに、第１の配置設計に対する最適化のセットをプロセッサに行なわせる。また、プロセッサは、最適化の各々を最適化履歴ファイルに記録する。命令はさらに、ターゲットＩＣ上への実装のために第２のネットリストの配置を決定することにより、第２の配置設計を作成するステップをプロセッサに行なわせる。第２の配置設計は、第１の配置設計とは異なる。第２の配置設計のネットがルーティングされることにより、配置およびルーティングされた回路設計が作成される。
【００２０】
オプションとして、第２のネットリストの配置を決定するステップよりも前に１つ以上の最適化を行なうことにより、第２のネットリストの配置および第２の配置設計におけるネットのルーティングを行なうために必要な処理リソースは、第１のネットリストの配置および第１の配置設計におけるネットのルーティングを行なうために必要な処理リソースと比較して少なくなり得る。
【００２１】
オプションとして、最適化履歴ファイルにおいて指定された最適化を第１のネットリストに対して行なうステップにおいて、プロセッサは、最適化履歴ファイルにおける優先度の高い最適化のセットと、最適化履歴ファイルにおける優先度の低い最適化のセットとを決定してもよい。また、プロセッサは、優先度の高い最適化のセットに含まれる最適化のみを行なってもよく、命令はさらに、第２のネットリストの配置の後に、優先度の低い最適化のセットを第２の配置ネットリストに対して行なうステップをプロセッサに行なわせてもよい。
【００２２】
オプションとして、最適化履歴ファイルはさらに、１つ以上のタイミングクリティカル回路モジュールを特定してもよい。ターゲットＩＣ上での第２のネットリストの配置を決定するステップにおいて、プロセッサは、第２のネットリストの他の回路モジュールを配置する前に、１つ以上のタイミングクリティカル回路モジュールを配置してもよい。
【００２３】
オプションとして、命令はさらに、最適化履歴ファイルに記録された最適化のために、第２のネットリストにおいてモジュールインスタンスを特定するステップと、特定されたモジュールインスタンスに対して最適化を行なうステップとをプロセッサに行なわせてもよい。
【００２４】
オプションとして、プロセッサによって行なわれた１つ以上の最適化は、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、ＤＳＰレジスタ最適化、ＢＲＡＭレジスタ最適化、シフトレジスタ最適化、再配線／ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、ホールドタイム修正最適化、またはこれらの組合せを含んでもよい。
【００２５】
オプションとして、最適化履歴ファイルは、ツールコマンド言語スクリプトで最適化のセットを指定する。
【００２６】
オプションとして、システムはさらに、ターゲットＩＣを備える。命令はさらに、ターゲットＩＣのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、配置およびルーティングされた回路設計を実装するステップをプロセッサに行なわせてもよい。
【００２７】
以下の詳細な説明および特許請求の範囲において他のさまざまな実施形態が示されることが理解されるであろう。
【００２８】
以下の詳細な説明を検討し、かつ図面を参照すれば、本発明のさまざまな局面および利点が明らかになるであろう。
【図面の簡単な説明】
【００２９】
【図１】１つ以上の実装例に合致する、回路設計の初期配置および物理合成最適化に関する処理例のフローチャートである。
【図２】１つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する処理例のフローチャートである。
【図３】１つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する別の処理例のフローチャートである。
【図４】本発明のいくつかの実施形態に係る、論理合成、物理合成最適化、配置、およびルーティングを行なうように構成され得るコンピューティング装置のブロック図である。
【図５】本発明のさまざまな実施形態に係る、ターゲットデバイスとして配置およびルーティングのために使用され得るプログラマブル集積回路のブロック図である。
【発明を実施するための形態】
【００３０】
詳細な説明
回路設計のルーティングにおいて、設計のタイミング要件を満たすルーティング解決策が見つかるまでに多数の異なる配線が試され得る。最適でない配置が原因で、ルーティング時間が延びる場合がある。現在の配置およびルーティングの技術において、物理合成最適化は配置の後に行なわれ、続いて、最適化された設計のルーティングが行なわれる。物理合成最適化は、例えば、タイミング、ノイズマージン、ダイ面積、および／または電力使用量を改善するために行なわれ得る。物理合成最適化は、回路設計の物理要素を、異なる、しかし論理的には同一の、設計要件を満たす物理要素に変換する。
【００３１】
物理合成最適化の際に回路設計に対してなされた変更により、修正された回路設計では配置が最適ではなくなる場合がある。物理合成最適化は配置の後に行なわれるため、配置においては最適化に起因する変更が考慮されない。結果として、ルーティングソフトウェアは、回路モジュールの配置を修正せずに信号をルーティングすることによってタイミング要件を満たそうとして、信号のルーティングおよび再ルーティングに大量のコンピューティングリソース（例えば、処理時間および／またはプロセッサ回路）を消耗する可能性がある。
【００３２】
さらに、いくつかの最適化が行なわれた場合に、混雑に起因して有効なルーティング解決策を決定することが不可能な場合がある。例えば、いくつかの処理によって最適化が実施され、変更が評価されることにより、ルーティング解決策が可能であるか否かが推定され得る。ルーティング解決策が不可能であると推定された場合には、変更は行なわれない。そうではない場合には変更が行なわれ、当該処理は追加の最適化を続行し得る。いくつかの最適化を実行できないことに起因して、配置およびルーティングされた回路設計の効率／性能（例えば、ダイ面積、消費電力、または動作周波数）が制約される場合がある。
【００３３】
配置の前に物理合成最適化を行なうことによって上述の制約を克服する方法およびシステムが開示される。実装例では、回路設計のための第１のネットリストが生成される。回路設計の第１のネットリストのための一時的な初期配置が決定される。初期配置を用いて、物理合成最適化が、配置されたネットリストに対して行なわれ、最適化履歴ファイルに記録される。初期配置は一時的なものにすぎないので、ルーティングの実行可能性を推定するために最適化を評価する必要はない。初期配置について信号をルーティングすることを試みるのではなく、記録された物理合成最適化が第１の非配置ネットリストに対して行なわれ、第２のネットリストが作成される。次いで、第２のネットリストが配置されることにより、最適化を考慮した改善配置が提供される。参照を容易にするために、最適化の後に行なわれる配置を最適化認識配置と呼ぶ場合がある。最適化認識配置の後に設計のネットがルーティングされ、配置およびルーティングされた回路設計が作成される。
【００３４】
改善配置の結果、配置の後に最適化変更を実施する従来の方策と比較して少ないルーティングの試みで、タイミング要件を満たす信号ルーティングが決定され得る。したがって、より少ないコンピューティングリソース（例えば、処理時間、メモリ、および／またはプロセッサ回路の数）によってルーティング解決策を決定することができる。
【００３５】
また、配置の前に最適化を行なうことによって、従来の後配置最適化では不可能であった最適化の実行が可能になる。例えば、前述のように従来の方策では、評価によってルーティング解決策が不可能であると推定された場合、最適化変更が行なわれない場合がある。しかしながら、最適化の後に配置が行なわれる場合、最適化変更によってルーティングが容易になるように要素を適所に配置することができる。このように、行なわれ得る可能な最適化の数が増加する。結果として、さまざまな性能測定基準（例えば、ダイ面積、消費電力、および／または動作周波数）が、後配置最適化方策と比較して改善され得る。実装された設計で達成される改善の種類は、行なわれる最適化の種類によって決まる。例えば、最適化技術が電力関連の改善に焦点を当てる場合、より消費電力の少ない配置およびルーティングされた設計が達成され得る。これに対して、最適化技術がタイミングおよび動作周波数に焦点を当てる場合、より高いクロック周波数で動作する配置およびルーティングされた設計が達成され得る。
【００３６】
ここで図に戻って、図１は回路設計の初期配置および物理合成最適化に関する処理例のフローチャートである。ブロック１０４において論理合成が行なわれ、回路設計１０２のための第１のネットリスト１０６（ネットリスト１．０）が生成される。ネットリスト１０６は、回路設計の要素をターゲットプログラマブルＩＣ上の利用可能なプリミティブコンポーネントにマップする。ブロック１０８において、第１のネットリスト１０６がプログラマブルＩＣ上への実装のために配置され、第１の配置設計１１０が作成される。ブロック１１２において、第１の配置設計に対して物理合成最適化が行なわれる。
【００３７】
物理合成最適化は、例えば、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、ＤＳＰレジスタ最適化、ＢＲＡＭレジスタ最適化、シフトレジスタ最適化、再配線／ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および／またはホールドタイム修正最適化を含むさまざまな最適化技術を含み得る。ファンアウト最適化は、多数の負荷を駆動する大きなファンアウトネットのためのドライバを複製する。いくつかの実装例では、ファンアウトネットの最適化は、近接に基づいてネットにより駆動される負荷をクラスタ化し得る。各負荷クラスタを駆動するためにネットドライバ回路が複製され、挿入される。クリティカルセル最適化として知られる同様の最適化は、タイミング要件を満たしていない信号パスにおける負荷のより近くに、ドライバ回路を追加する。例えば、特定のセルに関する負荷が遥か離れて配置されている場合、新たなドライバが負荷クラスタのより近くに配置され、当該セルが複製され得る。この最適化が起こるために、ファンアウトが大きいことは要件ではない。強制ネット複製によって、タイミングスラックに関係なく、タイミング制約パスにおけるネットドライバが強制的に複製される。
【００３８】
レジスタ最適化は、レジスタを移動させることにより、クリティカルパスのタイミングを改善し得る。例えば、ＤＳＰレジスタ最適化は、移動によってクリティカルパス上の遅延が改善するであろう場合、ＤＳＰセルと、ターゲットプログラマブルＩＣ上の別の物理要素（例えば、別のＤＳＰセル）との間でレジスタを移動させ得る。例えば、第１のＤＳＰは、第２のＤＳＰの入力に結合された出力を有するレジスタを含み得る。レジスタと第２のＤＳＰとの間のパスのタイミングがクリティカルである場合、レジスタは、第２のＤＳＰ近傍か、または第２のＤＳＰ内部にまで移動し得る（使用されていないレジスタが利用可能である場合）。ＢＲＡＭレジスタ最適化として知られる同様の最適化は、ＢＲＡＭセルと、ターゲットプログラマブルＩＣ上の他の要素との間でレジスタを移動させ得る。シフトレジスタ最適化は、シフトレジスタの始端または終端から別の位置（例えば、シフトレジスタの入力に接続されたソース、またはシフトレジスタの出力に接続された負荷の近傍）へレジスタを移動する。
【００３９】
リタイミングと呼ばれる別の最適化は、組合わせ論理を横断してレジスタを移動させることによって、クリティカルパスの遅延を改善する。置換最適化は、クリティカルセルを、特定のパラメータを最適化するように構成された論理的に同等のセルで置換し得る。例えば回路設計におけるデフォルト高速フーリエ変換（ＦＦＴ）は、例えば、より高速の処理速度、より小さい実装面積、または低減された消費電力などのために最適化されたＦＦＴで置換されてもよい。再配線最適化は、ＬＵＴの接続をスワップすることによって、クリティカル信号の論理レベルの数を減少させる。ＬＵＴ計算式は、設計機能を維持するように修正される。ホールド修正最適化は、ホールドクリティカルパス上の遅延を増大させることにより、ホールド違反の大きなスラックを改善することを試みる。
【００４０】
ブロック１１４において、物理合成最適化が最適化履歴ファイル１１６に記録される。いくつかの実装例では、最適化は、実行時に最適化を行なうツールコマンド言語（ＴＣＬ）スクリプトとして、最適化履歴ファイルにおいて指定され得る。前述のように、物理合成最適化の結果として行なわれた変更によって、第１の配置が最適ではなくなる場合がある。ブロック１１８では、最適化履歴ファイル１１６を用いて最適化認識配置およびルーティングが行なわれる。いくつかの実装例では、タイミング分析によって取得されたデータ（例えば、信号毎の最短パスタイミング）が最適化履歴ファイルに記憶されてもよい。このデータを用いて、第１の配置ではタイミングがクリティカルであったモジュールインスタンスを特定してもよい。ブロック１１８において最適化認識配置が行なわれる際に、特定されたモジュールインスタンスがタイミングクリティカルパスのルーティング距離を短縮するように配置されてもよい。
【００４１】
図２は、１つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する処理例のフローチャートである。ブロック２０２において、最適化履歴ファイル１１６上で示された物理合成最適化が第１の非配置ネットリスト１０６に対して行なわれ、第２のネットリスト２０４が作成される。
【００４２】
ブロック２０６において、第２のネットリスト２０４がターゲットプログラマブルＩＣ上への実装のために配置され、第２の配置設計２０８が作成される。ブロック２０８における配置よりも前に最適化が行なわれるため、配置は最適化変更を考慮に入れることが可能であり、第１の配置設計１１０と比較して改善された配置（例えば、空間、タイミング、または動作速度に関して）を提供することが可能である。いくつかの実装例では、ブロック２０８において行なわれる配置は、物理最適化処理時に決定される性能評価を利用してもよい。例えば、物理合成処理は、タイミングクリティカル回路を最適化のターゲットとして特定してもよい。タイミングクリティカル回路は、低い、または負のタイミングスラックを有する回路である。ブロック２０８において行なわれる配置では、まず、タイミングクリティカル回路がプログラマブルリソースのために非クリティカル回路と競合することなく互いに近接して配置され得るように、タイミングクリティカル回路が配置される。
【００４３】
ブロック２１０において、回路設計のネットは、配置設計の要素間でルーティングされる。さまざまな特性に関してルーティングの最適化を試みる多数のさまざまなルーティングアルゴリズムを用いて、信号がルーティングされ得る。１つのルーティングアルゴリズムでは、各信号のタイミング遅延特性を最小限にするように信号がルーティングされる。これは、遅延モードルーティングと呼ばれる。別のルーティングアルゴリズムでは、使用されるルーティングリソースの数を最小限にするように信号がルーティングされる。これは、リソースモードルーティングと呼ばれる。一般的に、遅延モード最適化はリソースモード最適化よりも長い実行時間を要する。遅延モード最適化では、伝搬遅延パラメータを決定するために、異なる可能なパスが分析またはシミュレートされる。ルーティングアルゴリズムは、タイミング遅延が元のタイミング遅延以下である解決策を求める。しかしながら、解決策が見つかると、ルーティングアルゴリズムは、信号のタイミングをさらに最適化しようとして無駄に処理を行なうことはしない。いくつかの実装例では、クリティカル信号は遅延モードルーティングを用いてルーティングされ、非クリティカル信号はリソースモードルーティングを用いてルーティングされてもよい。ブロック２１２において、配置およびルーティングされた回路設計が記憶される。
【００４４】
開発処理全体を通じて、回路設計は数回修正される場合がある。設計全体の配置およびルーティングを行なうためには膨大な時間が必要であるため、設計のほんの小さな部分が変更された際に、物理合成最適化、配置、およびルーティングの処理全体を繰返すことは回避するのが望ましい。いくつかの実装例では、前の回路設計の配置およびルーティング時に記録された最適化履歴ファイルを再利用することにより、回路設計の後のバージョンのための予備配置最適化を導いてもよい。これにより、処理において、図１で行なわれる初期配置および最適化をスキップすることが可能になる。
【００４５】
いくつかの実装例では、最適化履歴ファイルにおける各最適化は、最適化の種類および最適化によって修正されたモジュールインスタンスの名称を指定してもよい。いくつかのシナリオでは、ブロック２０２において行なわれる最適化処理は、最適化履歴ファイルにおいて示されるモジュールインスタンス名称に基づいて修正されるモジュールを、第２のネットリスト２０４において特定してもよい。しかしながら、いくつかの例では、第２のネットリスト２０４におけるモジュールインスタンス名称は、モジュール履歴ファイルにおいて示されるモジュールインスタンス名称とは異なる場合がある。例えば、最適化履歴ファイルが再利用され、回路設計の後のバージョンのためにネットリストの予備配置最適化が導かれた場合、ネットリストにおけるモジュールインスタンスの名称は、最適化履歴ファイルにおけるモジュールインスタンスの名称と一致しない場合がある。例えば、モジュールが設計者によって更新された場合、設計ソフトウェアはモジュールインスタンスの名称をわずかに変更する場合がある。記録された最適化に関するモジュールインスタンスを名称に基づいて特定することができない場合、より複雑なシグニチャ（signature）ベースの方策が用いられてもよい。例えば、インスタンスの名称、インスタンスの種類（ＬＵＴ５、ＦＤＲＥ、ＤＳＰ４８Ｅ２など）、および接続するネットの名称に基づくものである。
【００４６】
いくつかの実装例では、処理は、配置を繰返す前に、最適化履歴ファイルにおける最適化のサブセットのみを行なってもよい。図３は、１つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する別の処理例のフローチャートである。この例では、物理合成最適化の実行が予備配置段階と後配置段階とに分割される。物理合成最適化を予備配置段階と後配置段階とに分割することによって、ネットリストの配置を、最重要の特定の測定基準（例えば、タイミング／クロック速度、ダイ空間、または消費電力）を優先させるように行なうことができる。例えば、処理速度が最重要である場合、タイミング最適化が、最適化履歴ファイルにおいて優先度がより高いものとして示され得る。他の非タイミング最適化は、最適化履歴ファイルにおいて優先度がより低いものとして示され得る。
【００４７】
ブロック３０２では、最適化履歴ファイル１１６において示された優先度の高い物理合成最適化のセットが第１のネットリスト１０６に対して行なわれ、第２のネットリスト３０４が作成される。ブロック３０６では、第２のネットリスト３０４がターゲットプログラマブルＩＣ上への実装のために配置され、第２の配置設計３０８が作成される。配置に続いて、ブロック３１０では、最適化履歴ファイルにおいて示された優先度の低い物理合成最適化のセットが行なわれる。いくつかの実装例では、最適化履歴ファイル１１６において示されていない新たな物理最適化がブロック３１２において行なわれてもよい。行なわれた任意の新たな最適化が最適化履歴ファイルに追加され、更新された最適化履歴ファイル３１４が作成される。ブロック３１６では、第２の配置設計に関して信号ネットがルーティングされる。ブロック３１８では、配置およびルーティングされた回路設計が記憶される。
【００４８】
図４は、本明細書に記載された、論理合成処理、物理合成最適化処理、配置処理、およびルーティング処理を行なうように構成され得るコンピューティング装置のブロック図である。プログラムコードを有するように構成される１つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本発明のさまざまな実施形態の処理およびデータ構造のホスティングならびにアルゴリズムの実装に好適であることを、当業者ならば理解するであろう。プロセッサ実行可能フォーマットに符号化された本発明の処理を含むコンピュータコードは、磁気的もしくは光学的ディスクもしくはテープ、電子ストレージデバイス、またはネットワークを介したアプリケーションサービスなどの、さまざまな非一時的なコンピュータ読取可能記憶媒体または送達チャネルなどにより、記憶および提供され得る。
【００４９】
プロセッサコンピューティング装置４００は、ホストバス４１２に結合された１つ以上のプロセッサ４０２、クロック信号発生器４０４、メモリユニット４０６、ストレージユニット４０８、および入出力制御ユニット４１０を含む。装置４００は回路基板上の別個のコンポーネントによって実装されてもよいし、または集積回路内部に実装されてもよい。集積回路内部に実装される場合、プロセッサコンピューティング装置は、他にはマイクロコントローラとして知られる。
【００５０】
コンピューティング装置のアーキテクチャは、当業者ならば認識するように、実装要件によって決まる。プロセッサ４０２は、１つ以上の汎用プロセッサであってもよいし、または、１つ以上の汎用プロセッサと好適なコプロセッサとの組合せであってもよいし、または、１つ以上の特殊プロセッサ（例えば、ＲＩＳＣ、ＣＩＳＣ、パイプライン型など）であってもよい。
【００５１】
メモリ装置４０６は、典型的には、複数レベルのキャッシュメモリおよびメインメモリを含む。ストレージ装置４０８は、例えば、磁気ディスク（図示せず）、フラッシュ、ＥＰＲＯＭ、または他の不揮発性データストレージによって提供されるローカルおよび／またはリモートの永続的ストレージを含み得る。ストレージユニットは、読取可能、または読取可能／書込可能であってもよい。さらに、メモリ４０６およびストレージ４０８は、単一の装置に一体化されてもよい。
【００５２】
プロセッサ装置４０２は、ストレージ装置４０８および／またはメモリ装置４０６内のソフトウェアを実行し、ストレージ装置４０８および／またはメモリ装置４０６からデータを読出すとともにこれらにデータを記憶し、入出力制御装置４１０を介して外部デバイスと通信する。これらの機能は、クロック信号発生器４０４によって同期される。コンピューティング装置のリソースは、オペレーティングシステム（図示せず）またはハードウェア制御ユニット（図示せず）によって管理され得る。プログラムコードを有するように構成される１つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本発明のさまざまな実施形態の処理およびデータ構造のホスティングに好適であることを、当業者ならば理解するであろう。
【００５３】
図５は、本発明のさまざまな実施形態に係る、配置およびルーティングのためにターゲットデバイスとして用いられ得るプログラマブル集積回路のブロック図である。プログラマブルＩＣは、システムオンチップ（ＳＯＣ）と呼ばれることもあり、プロセッササブシステム５１０とプログラマブル論理サブシステム５３０とを含む。プロセッササブシステム５１０は、ユーザプログラムの実行によってユーザ設計のソフトウェア部分を実装するようにプログラムされ得る。プログラムは、構成データストリームの一部として指定されてもよく、またはオンチップもしくはオフチップのデータストレージデバイスから検索されてもよい。プロセッササブシステム５１０は、１つ以上のソフトウェアプログラムを実行するためのさまざまな回路５１２、５１４、５１６、および５１８を含み得る。回路５１２、５１４、５１６、および５１８は、例えば、１つ以上のプロセッサコア、浮動小数点演算装置（ＦＰＵ）、割込み処理ユニット、オンチップメモリ、メモリキャッシュ、および／またはキャッシュコヒーレントインターコネクトを含み得る。
【００５４】
プログラマブルＩＣ５０２のプログラマブル論理サブシステム５３０は、ユーザ設計のハードウェア部分を実装するようにプログラムされ得る。例えば、プログラマブル論理サブシステムは、構成データストリームにおいて指定された回路のセットを実装するようにプログラムされ得る複数のプログラマブルリソース５３２を含み得る。プログラマブルリソース５３２は、プログラマブルインターコネクト回路、プログラマブル論理回路、および構成メモリセルを含む。プログラマブル論理は、例えば、関数発生器、レジスタ、および演算論理などを含み得るプログラマブル要素を用いて、ユーザ設計の論理を実装する。プログラマブルインターコネクト回路は、プログラマブルインターコネクトポイント（ＰＩＰ）によって相互接続されたさまざまな長さの多数のインターコネクトラインを含み得る。
【００５５】
プログラマブルリソース５３２は、プログラマブルインターコネクト回路およびプログラマブル論理回路の構成の仕方を規定する構成メモリセル内に構成データストリームをロードすることによって、プログラムされ得る。個別のメモリセルの集合的な状態がプログラマブルリソース５３２の機能を決定する。構成データは、メモリ（例えば外部ＰＲＯＭ）から読出し可能であり、または外部デバイスによりプログラマブルＩＣ５０２に書込可能である。いくつかの実装例では、構成データは、プログラマブル論理サブシステム５３０に含まれる構成コントローラ５３４により、構成メモリセル内にロードされてもよい。いくつかの他の実装例では、構成データは、プロセッササブシステム５１０によって実行される起動処理により、構成メモリセル内にロードされてもよい。
【００５６】
プログラマブルＩＣ５０２は、プロセッササブシステム５１０をプログラマブル論理サブシステム５３０に実装される回路と相互接続するためのさまざまな回路を含み得る。この例において、プログラマブルＩＣ５０２は、プロセッササブシステム５１０およびプログラマブル論理サブシステム５３０のさまざまなデータポート間でデータ信号のルーティングを可能にするコアスイッチ５２６を含む。また、コアスイッチ５２６は、プログラマブル論理サブシステムまたは処理サブシステム５１０および５３０と、プログラマブルＩＣの他のさまざまな回路（例えば内部データバス）との間でデータ信号をルーティングしてもよい。代替的または追加的に、プロセッササブシステム５１０は、プログラマブル論理サブシステムに直接接続するためのインターフェースを含んでもよい（コアスイッチ５２６をバイパスする）。このようなインターフェースは、例えばＡＲＭによって公開されたＡＭＢＡ  ＡＸＩプロトコル仕様（ＡＸＩ）を用いて実装されてもよい。
【００５７】
いくつかの実装例では、プロセッササブシステム５１０およびプログラマブル論理サブシステム５３０は、メモリコントローラ５２１を介してオンチップメモリ５２２またはオフチップメモリ（図示せず）のメモリ位置に対して読出しまたは書込を行なってもよい。メモリコントローラ５２１は、１つ以上のさまざまな種類のメモリ回路と通信するように実装され得る。メモリ回路は、１６ビット、３２ビット、またはＥＣＣを含む１６ビットなどの、デュアルデータレート（ＤＤＲ）２、ＤＤＲ３、低電力（ＬＰ：Low Power）ＤＤＲ２といった種類のメモリを含むが、これらに限定されない。メモリコントローラ５２１が通信可能なさまざまな種類のメモリの列挙は例示のために提示されたにすぎず、限定としてまたは網羅的なものとして意図されたものではない。図５に示すように、プログラマブルＩＣ５０２は、サブシステム５１０および５３０によって使用される仮想メモリアドレスを、特定のメモリ位置にアクセスするためにメモリコントローラ５２１によって使用される物理メモリアドレスに変換するために、メモリ管理ユニット５２０およびトランスレーション・ルックアサイド・バッファ５２４を含んでもよい。
【００５８】
プログラマブルＩＣは、外部回路とデータを通信するための入出力（Ｉ／Ｏ）サブシステム５５０を含んでもよい。Ｉ／Ｏサブシステム５５０は、例えば、フラッシュメモリタイプのＩ／Ｏデバイス、高性能Ｉ／Ｏデバイス、低性能インターフェース、デバッギングＩ／Ｏデバイス、および／またはＲＡＭ  Ｉ／Ｏデバイスを含むさまざまな種類のＩ／Ｏデバイスまたはインターフェースを含み得る。
【００５９】
Ｉ／Ｏサブシステム５５０は、５６０Ａおよび５６０Ｂとして図示される１つ以上のフラッシュメモリインターフェース５６０を含んでもよい。例えば、フラッシュメモリインターフェース５６０のうちの１つ以上は、４ビット通信用に構成されたクワッドシリアルペリフェラルインターフェース（ＱＳＰＩ：Quad-Serial Peripheral Interface）として実装されてもよい。フラッシュメモリインターフェース５６０のうちの１つ以上は、パラレル８ビットＮＯＲ／ＳＲＡＭタイプのインターフェースとして実装されてもよい。フラッシュメモリインターフェース５６０のうちの１つ以上は、８ビットおよび／または１６ビット通信用に構成されたＮＡＮＤインターフェースとして実装されてもよい。記載した特定のインターフェースは、限定ではなく例示のために提示されたものであることを理解すべきである。異なるビット幅を有する他のインターフェースを用いることも可能である。
【００６０】
Ｉ／Ｏサブシステム５５０は、フラッシュメモリインターフェース５６０よりも高いレベルの性能を呈する１つ以上のインターフェース５６２を含み得る。インターフェース５６２Ａ〜５６２Ｃは、それぞれＤＭＡコントローラ５６４Ａ〜５６４Ｃに結合され得る。例えば、インターフェース５６２のうちの１つ以上は、ユニバーサルシリアルバス（ＵＳＢ）タイプのインターフェースとして実装されてもよい。インターフェース５６２のうちの１つ以上は、ギガビットイーサネット（登録商標）タイプのインターフェースとして実装されてもよい。インターフェース５６２のうちの１つ以上は、セキュアデジタル（ＳＤ）タイプのインターフェースとして実装されてもよい。
【００６１】
Ｉ／Ｏサブシステム５５０は、インターフェース５６２よりも低いレベルの性能を呈する１つ以上のインターフェース５６６、例えばインターフェース５６６Ａ〜５６６Ｄなどを含んでもよい。例えば、インターフェース５６６のうちの１つ以上は、汎用Ｉ／Ｏ（ＧＰＩＯ）タイプのインターフェースとして実装されてもよい。インターフェース５６６のうちの１つ以上は、汎用非同期送受信機（ＵＡＲＴ）タイプのインターフェースとして実装されてもよい。インターフェース５６６のうちの１つ以上は、シリアルペリフェラルインターフェース（ＳＰＩ）バスタイプのインターフェースの形で実装されてもよい。インターフェース５６６のうちの１つ以上は、コントローラエリアネットワーク（ＣＡＮ）タイプのインターフェース、および／またはI２Ｃタイプのインターフェースの形で実装されてもよい。また、インターフェース５６６のうちの１つ以上は、タイマータイプのインターフェースの形で実装されてもよい。
【００６２】
Ｉ／Ｏサブシステム５５０は、プロセッサＪＴＡＧ（ＰＪＴＡＧ）インターフェース５６８Ａおよびトレースインターフェース５６８Ｂなどの、１つ以上のデバッグインターフェース５６８を含み得る。ＰＪＴＡＧインターフェース５６８Ａは、プログラマブルＩＣ５０２に外部デバッグインターフェースを提供し得る。トレースインターフェース５６８Ｂは、プロセッササブシステム５１０またはプログラマブル論理サブシステム５３０から、デバッグ（例えばトレース）情報を受信するためのポートを提供し得る。
【００６３】
図示のように、インターフェース５６０、５６２、５６６、および５６８の各々はマルチプレクサ５７０に結合され得る。マルチプレクサ５７０は、直接ルーティングされ得る、またはプログラマブルＩＣ５０２の外部ピンに結合され得る複数の出力を提供する（例えば、プログラマブルＩＣ５０２がその内部に配置されるパッケージのボール）。例えば、プログラマブルＩＣ５０２のＩ／Ｏピンは、インターフェース５６０、５６２、５６６、および５６８の間で共有され得る。ユーザは、構成データストリームによってマルチプレクサ５７０を設定することにより、インターフェース５６０〜５６８のうちのいずれを使用するか、ひいては、マルチプレクサ５７０を介してそれらのうちのいずれをプログラマブルＩＣ５０２のＩ／Ｏピンに結合するかを選択することができる。Ｉ／Ｏサブシステム５５０は、インターフェース５６２〜５６８をプログラマブル論理サブシステムのプログラマブル論理回路に接続するためのファブリックマルチプレクサＩ／Ｏ（ＦＭＩＯ）インターフェース（図示せず）を含んでもよい。追加的または代替的に、プログラマブル論理サブシステム５３０は、プログラマブル論理に１つ以上のＩ／Ｏ回路を実装するように構成されてもよい。いくつかの実装例では、プログラマブルＩＣ５０２は、電源および／または安全管理のためのさまざまな回路を有するサブシステム５４０を含んでもよい。例えば、サブシステム５４０は、プログラマブルＩＣ５０２のさまざまなサブシステムに電力を供給するために用いられる１つ以上の電圧領域を監視および維持するように構成された電源管理ユニット５４６を含んでもよい。いくつかの実装例では、電源管理ユニット５４６は、アイドル状態である個々のサブシステムの電源を停止してもよい。これにより、使用中のサブシステムの電源を停止することなく、消費電力を低減することができる。
【００６４】
サブシステム５４０は、正常な動作を確保するために、サブシステムのステータスを監視するための安全回路を含んでもよい。例えば、サブシステム５４０は、さまざまなサブシステムのステータスを監視するように構成された１つ以上のリアルタイムプロセッサ５４２（例えば、ステータスレジスタ５４４で示される）を含んでもよい。リアルタイムプロセッサ５４２は、エラーの検出に応答して複数のタスクを行なうように構成され得る。例えば、いくつかのエラーに対して、リアルタイムプロセッサ５４２は、エラーの検出に応答してアラートを生成し得る。別の例として、リアルタイムプロセッサ５４２は、サブシステムを正常な動作に復帰させることを試みるために、サブシステムをリセットしてもよい。サブシステム５４０は、さまざまなサブシステムを相互接続するために使用され得るスイッチネットワーク５４８を含む。例えば、スイッチネットワーク５４８は、さまざまなサブシステム５１０、５３０、および５４０をＩ／Ｏサブシステム５５０のさまざまなインターフェースに接続するように構成されてもよい。いくつかの適用例では、スイッチネットワーク５４８を用いて、監視対象のサブシステムからリアルタイムプロセッサ５４２を分離してもよい。このような分離は、リアルタイムプロセッサ５４２が他のサブシステムで発生するエラーの影響を受けないことを保証するために、ある適用規格（例えば、ＩＥＣ−６１５０８  ＳＩＬ３規格またはＩＳＯ−２６２６２規格）で必要とされ得る。
【００６５】
プログラムコードを有するように構成される１つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本明細書に開示の処理およびデータ構造のホスティングに好適であることを、当業者ならば理解するであろう。さらに、処理は、磁気的もしくは光学的ディスクもしくはテープ、電子ストレージデバイス、またはネットワークを介したアプリケーションサービスなどの、さまざまなコンピュータ読取可能記憶媒体または送達チャネルなどにより、記憶および提供され得る。
【００６６】
本発明は、さまざまな回路設計の配置およびルーティングのためのシステムに適用可能であると考えられる。さらに、本発明のシステムおよび方法を適用可能な好適なターゲットプログラマブルＩＣとしてＦＰＧＡおよび他のＰＬＤを説明したが、本発明はそれらに限定されない。明細書を考慮するとともに本明細書に開示の本発明を実施することにより、本発明の他の局面および実施形態が当業者に明らかになるであろう。明細書および図示の実施形態は例として考慮されるにすぎず、本発明の真の範囲および精神は以下の特許請求の範囲およびその均等物で示されることが意図される。
【図１】
0006728345.tif 000002
【図２】
0006728345.tif 000003
【図３】
0006728345.tif 000004
【図４】
0006728345.tif 000005
【図５】
0006728345.tif 000006