特許第6728345号(P6728345)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザイリンクス インコーポレイテッドの特許一覧

<>
  • 特許6728345-対話型マルチステップ物理合成 図000002
  • 特許6728345-対話型マルチステップ物理合成 図000003
  • 特許6728345-対話型マルチステップ物理合成 図000004
  • 特許6728345-対話型マルチステップ物理合成 図000005
  • 特許6728345-対話型マルチステップ物理合成 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6728345
(24)【登録日】2020年7月3日
(45)【発行日】2020年7月22日
(54)【発明の名称】対話型マルチステップ物理合成
(51)【国際特許分類】
   G06F 30/394 20200101AFI20200713BHJP
   G06F 30/32 20200101ALI20200713BHJP
   G06F 30/39 20200101ALI20200713BHJP
【FI】
   G06F17/50 658E
   G06F17/50 656A
   G06F17/50 658U
【請求項の数】13
【全頁数】18
(21)【出願番号】特願2018-516677(P2018-516677)
(86)(22)【出願日】2016年9月1日
(65)【公表番号】特表2018-531457(P2018-531457A)
(43)【公表日】2018年10月25日
(86)【国際出願番号】US2016049990
(87)【国際公開番号】WO2017058457
(87)【国際公開日】20170406
【審査請求日】2019年8月30日
(31)【優先権主張番号】14/873,072
(32)【優先日】2015年10月1日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】アガーウォール,ラジャット
(72)【発明者】
【氏名】ワン,ジーヨン
(72)【発明者】
【氏名】ルゥ,ルイビン
(72)【発明者】
【氏名】ダス,サビアサチ
【審査官】 堀井 啓明
(56)【参考文献】
【文献】 特開平10−011491(JP,A)
【文献】 特開2000−068381(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F30/00−30/398
(57)【特許請求の範囲】
【請求項1】
プロセッサ上で動作を実行するステップを含む方法であって、
前記動作は、
前記プロセッサに結合されたメモリに記憶された回路設計のための第1のネットリストを生成するステップと、
ターゲットIC上での前記第1のネットリストの配置を決定することにより、第1の配置設計を作成するステップと、
前記第1の配置設計に対して最適化のセットを行なうステップと、
前記最適化のセットの最適化毎に、行なわれた物理合成最適化の種類、および前記最適化によって修正されたモジュールインスタンスの名称を指定することによって、最適化履歴ファイルに前記最適化のセットを記録するステップと、
前記指定された物理合成最適化の種類に従って前記指定されたモジュールインスタンスを修正することによって、前記最適化履歴ファイルにおいて指定された1つ以上の最適化を前記第1のネットリストに対して行なうことにより、前記第1のネットリストとは異なる第2のネットリストを作成するステップと、
前記ターゲットIC上での前記第2のネットリストの配置を決定することにより、前記第1の配置設計とは異なる第2の配置設計を作成するステップと、
前記第2の配置設計のネットをルーティングすることにより、配置およびルーティングされた回路設計を作成するステップとを含む、方法。
【請求項2】
前記第2のネットリストの配置を決定するステップよりも前に前記1つ以上の最適化を行なうことにより、前記第2のネットリストの前記配置および前記第2の配置設計における前記ネットのルーティングを行なうために必要な処理リソースは、前記第1のネットリストの配置および前記第1の配置設計における前記ネットのルーティングを行なうために必要な処理リソースと比較して少なくなる、請求項1に記載の方法。
【請求項3】
前記最適化履歴ファイルにおいて指定された最適化を前記第1のネットリストに対して行なうステップは、
前記最適化履歴ファイルにおける優先度の高い最適化のセットと、前記最適化履歴ファイルにおける優先度の低い最適化のセットとを決定するステップと、
前記優先度の高い最適化のセットに含まれる最適化のみを行なうステップと、
前記第2のネットリストの前記配置の後に、前記優先度の低い最適化のセットを配置された前記第2のネットリストに対して行なうステップとを含む、請求項1に記載の方法。
【請求項4】
前記最適化履歴ファイルはさらに、1つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットIC上での前記第2のネットリストの前記配置を決定するステップは、前記第2のネットリストの他の回路モジュールを配置する前に、前記1つ以上のタイミングクリティカル回路モジュールを配置する、請求項1に記載の方法。
【請求項5】
前記最適化履歴ファイルはさらに、1つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットIC上での前記第2のネットリストの前記配置を決定するステップは、前記第2のネットリストの他の回路モジュールを配置する前に、前記1つ以上のタイミングクリティカル回路モジュールを配置する、請求項1に記載の方法。
【請求項6】
前記最適化履歴ファイルにおいて指定された前記1つ以上の最適化は、デジタル信号プロセッサ(DSP)レジスタ最適化、BRAMレジスタ最適化、シフトレジスタ最適化、強制ネット複製、ファンアウト最適化、置換最適化、再配線/ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および/またはホールドタイム修正最適化、またはこれらの組合せを含む、請求項1に記載の方法。
【請求項7】
前記ターゲットICのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップと、
前記ターゲットICに結合された不揮発性メモリに前記構成データのセットを記憶するステップとをさらに含み、
前記ターゲットICは、電源を投入されると、前記不揮発性メモリ内の前記構成データのセットで前記ターゲットICの前記プログラマブルリソースをプログラムするように構成され、
前記最適化履歴ファイルは、ツールコマンド言語スクリプトで前記最適化のセットを指定する、請求項1に記載の方法。
【請求項8】
システムであって、
プロセッサと、
前記プロセッサに結合されたメモリ装置とを備え、前記メモリ装置は、前記プロセッサによって実行された場合に前記プロセッサに動作を行なわせる命令を有するように構成されており、前記動作は、
前記メモリ装置に記憶された回路設計のための第1のネットリストを生成するステップと、
ターゲットIC上での前記第1のネットリストの配置を決定することにより、第1の配置設計を作成するステップと、
前記第1の配置設計に対して最適化のセットを行なうステップと、
前記最適化のセットの最適化毎に、行なわれた物理合成最適化の種類、および前記最適化によって修正されたモジュールインスタンスの名称を指定することによって、最適化履歴ファイルに前記最適化のセットを記録するステップと、
前記指定された物理合成最適化の種類に従って前記指定されたモジュールインスタンスを修正することによって、前記最適化履歴ファイルにおいて指定された1つ以上の最適化を前記第1のネットリストに対して行なうことにより、前記第1のネットリストとは異なる第2のネットリストを作成するステップと、
前記ターゲットIC上での前記第2のネットリストの配置を決定することにより、前記第1の配置設計とは異なる第2の配置設計を作成するステップと、
前記第2の配置設計のネットをルーティングすることにより、配置およびルーティングされた回路設計を作成するステップとを含む、システム。
【請求項9】
前記第2のネットリストの配置を決定するステップよりも前に前記1つ以上の最適化を行なうことにより、前記第2のネットリストの前記配置および前記第2の配置設計における前記ネットのルーティングを行なうために必要な処理リソースは、前記第1のネットリストの配置および前記第1の配置設計における前記ネットのルーティングを行なうために必要な処理リソースと比較して少なくなる、請求項に記載のシステム。
【請求項10】
前記ターゲットICのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップと、
前記ターゲットICに結合された不揮発性メモリに前記構成データのセットを記憶するステップとをさらに含み、
前記ターゲットICは、電源を投入されると、前記不揮発性メモリ内の前記構成データのセットで前記ターゲットICの前記プログラマブルリソースをプログラムするように構成されている、請求項1に記載の方法。
【請求項11】
前記最適化履歴ファイルはさらに、1つ以上のタイミングクリティカル回路モジュールを特定し、
前記ターゲットIC上での前記第2のネットリストの前記配置を決定するステップにおいて、前記プロセッサは、前記第2のネットリストの他の回路モジュールを配置する前に前記1つ以上のタイミングクリティカル回路モジュールを配置する、請求項に記載のシステム。
【請求項12】
前記プロセッサによって行なわれた前記1つ以上の最適化は、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、DSPレジスタ最適化、BRAMレジスタ最適化、シフトレジスタ最適化、再配線/ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、ホールドタイム修正最適化、またはこれらの組合せを含む、請求項に記載のシステム。
【請求項13】
前記ターゲットICをさらに備え、
前記命令はさらに、前記プロセッサに、
前記ターゲットICのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、前記配置およびルーティングされた回路設計を実装するステップを行なわせ、
前記最適化履歴ファイルは、ツールコマンド言語スクリプトで前記最適化のセットを指定する、請求項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、概して、プログラマブル集積回路におけるリソースの配置、ルーティング、およびタイミングクロージャに関する。
【背景技術】
【0002】
背景
プログラマブル論理デバイス(PLD)は、ユーザ構成可能入力に従ってデジタル論理演算を実装するために使用される集積回路(IC)である。PLDの例えば、複合プログラマブル論理デバイス(CPLD)およびフィールドプログラマブルゲートアレイ(FPGA)が挙げられる。多くの場合、CPLDは、積和論理を用いたプログラマブル論理アレイ(PLA)アーキテクチャに基づくいくつかの機能ブロックを含む。構成可能インターコネクトマトリックスは、機能ブロック間で信号を伝達する。
【0003】
FPGAの例えば、構成可能論理ブロック(CLB)のアレイおよびプログラマブル入出力ブロック(IOB)のリングまたはカラムが挙げられる。CLBおよびIOBは、プログラマブルインターコネクト構造(ルーティングリソース)によって相互接続される。CLB、IOB、およびインターコネクト構造は、典型的には、構成データのストリーム(ビットストリーム)を、CLB、IOB、およびインターコネクト構造の構成方法を定義する内部構成メモリセル内にロードすることによって、プログラムされる。構成ビットストリームは、外部メモリ(通常は、外部集積回路メモリであるEEPROM、EPROM、およびPROMなど)から読込まれ得るが、他の種類のメモリが使用されてもよい。個別のメモリセルの集合的な状態がFPGAの機能を決定する。特定の種類のFPGAは、ルックアップテーブル(LUT)ベースのCLBを用いる。構成メモリは、CLBへの入力によって制御される複数のマルチプレクサに入力値を提供する。
【0004】
ASICまたはFPGAなどの集積回路のための従来の設計プロセスは、回路設計の作成から始まる。回路設計の機能は、さまざまなプログラマブル言語(例えば、VHDL、ABEL、またはVerilog)、または図式化されたキャプチャプログラムを用いて表現され得る。設計は論理的に合成され、ターゲット集積回路デバイスによってサポートされる論理ネットワークリスト(「ネットリスト」)が生成される。ネットリストは、ターゲットデバイス(例えば、ターゲットプログラマブルIC)において利用可能なプリミティブコンポーネントにマップされる。
【0005】
論理合成に続いて、ネットリストのコンポーネントがターゲットデバイスへの実装のために配置される。配置の際、マップされた設計の各コンポーネントは、対応のプリミティブコンポーネントのインスタンスが存在し得るチップ上の物理位置に割当てられる。配置プログラムの目的は、接続した設計物を互いに物理的に近接して配置することである。これにより、チップ上の空間が節約されるとともに、コンポーネント間の所望の相互接続がルータによって首尾よく完成される可能性が高まる。また、接続したコンポーネントを互いに近接して配置することによって、一般的に回路の性能も向上する。なぜなら、インターコネクトパスが長い場合、それに付随してキャパシタンスおよび抵抗が過剰になり、結果として遅延が大きくなるからである。
【0006】
設計のコンポーネント間の特定の接続は、配置されたコンポーネントのターゲットデバイスにおいてルーティングされる。ルーティングにより、配置設計のコンポーネントのピン間で信号を伝導するために用いられる物理配線リソースが指定される。ルーティングでは、設計において指定された接続毎に、接続を完成させるのに必要な配線を割当てなければならない。本明細書で使用するとき、あるコンポーネントの出力ピンを別のコンポーネントの入力ピンに接続する際に配線リソースを選択して割当てることを、「信号をルーティングする」と表現する。ある領域内のほとんどまたは全ての配線リソースを使用して信号がルーティングされた場合、この領域は一般的に「混雑している」と表現される。これにより、当該領域内の残りの配線リソースの競合が生じ、または、当該領域内の追加の信号のルーティングが困難または不可能になる。プレイスアンドルート(place-and-route)手続きは、設計のタイミング、消費電力、使用ルーティングリソース、およびそれらの任意の組合せの最適化を含む場合がある。いくつかの場合には、タイミングベースの設計の評価も提供される。
【発明の概要】
【課題を解決するための手段】
【0007】
概要
さまざまな実装例が、回路設計の論理合成、配置、最適化、およびルーティングのための効率的な方法に向けられる。本発明の一実施形態において、回路設計のための第1のネットリストが生成される。ターゲットIC上への実装のために第1のネットリストの配置が決定され、第1の配置設計が作成される。第1の配置設計に対して最適化のセットが行なわれる。最適化のセットの最適化毎に、最適化が最適化履歴ファイルに記録される。最適化履歴ファイルにおいて指定された1つ以上の最適化が第1のネットリストに対して行なわれ、第1のネットリストとは異なる第2のネットリストが作成される。ターゲットIC上への実装のために第2のネットリストの配置が決定され、第1の配置設計とは異なる第2の配置設計が作成される。第2の配置設計のネットがルーティングされ、配置およびルーティングされた回路設計が作成される。
【0008】
オプションとして、第2のネットリストの配置を決定するステップよりも前に1つ以上の最適化を行なうことにより、第2のネットリストの配置および第2の配置設計におけるネットのルーティングを行なうために必要な処理リソースは、第1のネットリストの配置および第1の配置設計におけるネットのルーティングを行なうために必要な処理リソースと比較して少なくなり得る。
【0009】
オプションとして、最適化履歴ファイルにおいて指定された最適化を第1のネットリストに対して行なうステップは、最適化履歴ファイルにおける優先度の高い最適化のセットと、最適化履歴ファイルにおける優先度の低い最適化のセットとを決定するステップと、優先度の高い最適化のセットに含まれる最適化のみを行なうステップとを含む。
【0010】
オプションとして、方法はさらに、第2のネットリストの配置の後に、優先度の低い最適化のセットを第2の配置ネットリストに対して行なうステップを含んでもよい。
【0011】
オプションとして、最適化履歴ファイルはさらに、1つ以上のタイミングクリティカル回路モジュールを特定し、ターゲットIC上での第2のネットリストの配置を決定するステップは、第2のネットリストの他の回路モジュールを配置する前に、1つ以上のタイミングクリティカル回路モジュールを配置する。
【0012】
オプションとして、方法はさらに、最適化履歴ファイルに記録された最適化のために、第2のネットリストにおいて回路モジュールを特定するステップと、特定されたモジュールインスタンスに対して最適化を行なうステップとを含んでもよい。
【0013】
オプションとして、最適化履歴ファイルにおいて指定された1つ以上の最適化は、デジタル信号プロセッサ(DSP)レジスタ最適化、BRAMレジスタ最適化、シフトレジスタ最適化、またはこれらの組合せを含んでもよい。
【0014】
オプションとして、最適化履歴ファイルにおいて指定された1つ以上の最適化は、回路設計の回路モジュールを複数のサブモジュールに分解するステップを含んでもよく、第2のネットリストの配置を決定するステップは、複数のサブモジュールの各々の配置を独立して決定してもよい。
【0015】
オプションとして、最適化履歴ファイルにおいて指定された1つ以上の最適化は、強制ネット複製、ファンアウト最適化、置換最適化、またはこれらの組合せを含んでもよい。
【0016】
オプションとして、最適化履歴ファイルにおいて指定された1つ以上の最適化は、再配線/ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および/またはホールドタイム修正最適化、またはこれらの組合せを含んでもよい。
【0017】
オプションとして、方法はさらに、ターゲットICのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、配置およびルーティングされた回路設計を実装するステップと、ターゲットICに結合された不揮発性メモリに構成データのセットを記憶するステップとを含んでもよい。ターゲットICは、電源を投入されると、不揮発性メモリ内の構成データのセットでターゲットICのプログラマブルリソースをプログラムするように構成されてもよい。
【0018】
オプションとして、最適化履歴ファイルは、ツールコマンド言語スクリプトで最適化のセットを指定する。
【0019】
また、回路設計の論理合成、配置、最適化、およびルーティングのためのシステムが開示される。一実装例において、システムは、プロセッサと、プロセッサに結合されたメモリ装置とを備える。メモリ装置は、プロセッサによって実行された場合に、メモリに記憶された回路設計のための第1のネットリストを生成し、ターゲットICへの実装のための第1のネットリストの配置を決定し、第1の配置設計を作成するステップをプロセッサに行なわせる命令を有するように構成されている。命令はさらに、第1の配置設計に対する最適化のセットをプロセッサに行なわせる。また、プロセッサは、最適化の各々を最適化履歴ファイルに記録する。命令はさらに、ターゲットIC上への実装のために第2のネットリストの配置を決定することにより、第2の配置設計を作成するステップをプロセッサに行なわせる。第2の配置設計は、第1の配置設計とは異なる。第2の配置設計のネットがルーティングされることにより、配置およびルーティングされた回路設計が作成される。
【0020】
オプションとして、第2のネットリストの配置を決定するステップよりも前に1つ以上の最適化を行なうことにより、第2のネットリストの配置および第2の配置設計におけるネットのルーティングを行なうために必要な処理リソースは、第1のネットリストの配置および第1の配置設計におけるネットのルーティングを行なうために必要な処理リソースと比較して少なくなり得る。
【0021】
オプションとして、最適化履歴ファイルにおいて指定された最適化を第1のネットリストに対して行なうステップにおいて、プロセッサは、最適化履歴ファイルにおける優先度の高い最適化のセットと、最適化履歴ファイルにおける優先度の低い最適化のセットとを決定してもよい。また、プロセッサは、優先度の高い最適化のセットに含まれる最適化のみを行なってもよく、命令はさらに、第2のネットリストの配置の後に、優先度の低い最適化のセットを第2の配置ネットリストに対して行なうステップをプロセッサに行なわせてもよい。
【0022】
オプションとして、最適化履歴ファイルはさらに、1つ以上のタイミングクリティカル回路モジュールを特定してもよい。ターゲットIC上での第2のネットリストの配置を決定するステップにおいて、プロセッサは、第2のネットリストの他の回路モジュールを配置する前に、1つ以上のタイミングクリティカル回路モジュールを配置してもよい。
【0023】
オプションとして、命令はさらに、最適化履歴ファイルに記録された最適化のために、第2のネットリストにおいてモジュールインスタンスを特定するステップと、特定されたモジュールインスタンスに対して最適化を行なうステップとをプロセッサに行なわせてもよい。
【0024】
オプションとして、プロセッサによって行なわれた1つ以上の最適化は、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、DSPレジスタ最適化、BRAMレジスタ最適化、シフトレジスタ最適化、再配線/ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、ホールドタイム修正最適化、またはこれらの組合せを含んでもよい。
【0025】
オプションとして、最適化履歴ファイルは、ツールコマンド言語スクリプトで最適化のセットを指定する。
【0026】
オプションとして、システムはさらに、ターゲットICを備える。命令はさらに、ターゲットICのプログラマブルリソースをプログラムするように構成された構成データのセットを生成することにより、配置およびルーティングされた回路設計を実装するステップをプロセッサに行なわせてもよい。
【0027】
以下の詳細な説明および特許請求の範囲において他のさまざまな実施形態が示されることが理解されるであろう。
【0028】
以下の詳細な説明を検討し、かつ図面を参照すれば、本発明のさまざまな局面および利点が明らかになるであろう。
【図面の簡単な説明】
【0029】
図1】1つ以上の実装例に合致する、回路設計の初期配置および物理合成最適化に関する処理例のフローチャートである。
図2】1つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する処理例のフローチャートである。
図3】1つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する別の処理例のフローチャートである。
図4】本発明のいくつかの実施形態に係る、論理合成、物理合成最適化、配置、およびルーティングを行なうように構成され得るコンピューティング装置のブロック図である。
図5】本発明のさまざまな実施形態に係る、ターゲットデバイスとして配置およびルーティングのために使用され得るプログラマブル集積回路のブロック図である。
【発明を実施するための形態】
【0030】
詳細な説明
回路設計のルーティングにおいて、設計のタイミング要件を満たすルーティング解決策が見つかるまでに多数の異なる配線が試され得る。最適でない配置が原因で、ルーティング時間が延びる場合がある。現在の配置およびルーティングの技術において、物理合成最適化は配置の後に行なわれ、続いて、最適化された設計のルーティングが行なわれる。物理合成最適化は、例えば、タイミング、ノイズマージン、ダイ面積、および/または電力使用量を改善するために行なわれ得る。物理合成最適化は、回路設計の物理要素を、異なる、しかし論理的には同一の、設計要件を満たす物理要素に変換する。
【0031】
物理合成最適化の際に回路設計に対してなされた変更により、修正された回路設計では配置が最適ではなくなる場合がある。物理合成最適化は配置の後に行なわれるため、配置においては最適化に起因する変更が考慮されない。結果として、ルーティングソフトウェアは、回路モジュールの配置を修正せずに信号をルーティングすることによってタイミング要件を満たそうとして、信号のルーティングおよび再ルーティングに大量のコンピューティングリソース(例えば、処理時間および/またはプロセッサ回路)を消耗する可能性がある。
【0032】
さらに、いくつかの最適化が行なわれた場合に、混雑に起因して有効なルーティング解決策を決定することが不可能な場合がある。例えば、いくつかの処理によって最適化が実施され、変更が評価されることにより、ルーティング解決策が可能であるか否かが推定され得る。ルーティング解決策が不可能であると推定された場合には、変更は行なわれない。そうではない場合には変更が行なわれ、当該処理は追加の最適化を続行し得る。いくつかの最適化を実行できないことに起因して、配置およびルーティングされた回路設計の効率/性能(例えば、ダイ面積、消費電力、または動作周波数)が制約される場合がある。
【0033】
配置の前に物理合成最適化を行なうことによって上述の制約を克服する方法およびシステムが開示される。実装例では、回路設計のための第1のネットリストが生成される。回路設計の第1のネットリストのための一時的な初期配置が決定される。初期配置を用いて、物理合成最適化が、配置されたネットリストに対して行なわれ、最適化履歴ファイルに記録される。初期配置は一時的なものにすぎないので、ルーティングの実行可能性を推定するために最適化を評価する必要はない。初期配置について信号をルーティングすることを試みるのではなく、記録された物理合成最適化が第1の非配置ネットリストに対して行なわれ、第2のネットリストが作成される。次いで、第2のネットリストが配置されることにより、最適化を考慮した改善配置が提供される。参照を容易にするために、最適化の後に行なわれる配置を最適化認識配置と呼ぶ場合がある。最適化認識配置の後に設計のネットがルーティングされ、配置およびルーティングされた回路設計が作成される。
【0034】
改善配置の結果、配置の後に最適化変更を実施する従来の方策と比較して少ないルーティングの試みで、タイミング要件を満たす信号ルーティングが決定され得る。したがって、より少ないコンピューティングリソース(例えば、処理時間、メモリ、および/またはプロセッサ回路の数)によってルーティング解決策を決定することができる。
【0035】
また、配置の前に最適化を行なうことによって、従来の後配置最適化では不可能であった最適化の実行が可能になる。例えば、前述のように従来の方策では、評価によってルーティング解決策が不可能であると推定された場合、最適化変更が行なわれない場合がある。しかしながら、最適化の後に配置が行なわれる場合、最適化変更によってルーティングが容易になるように要素を適所に配置することができる。このように、行なわれ得る可能な最適化の数が増加する。結果として、さまざまな性能測定基準(例えば、ダイ面積、消費電力、および/または動作周波数)が、後配置最適化方策と比較して改善され得る。実装された設計で達成される改善の種類は、行なわれる最適化の種類によって決まる。例えば、最適化技術が電力関連の改善に焦点を当てる場合、より消費電力の少ない配置およびルーティングされた設計が達成され得る。これに対して、最適化技術がタイミングおよび動作周波数に焦点を当てる場合、より高いクロック周波数で動作する配置およびルーティングされた設計が達成され得る。
【0036】
ここで図に戻って、図1は回路設計の初期配置および物理合成最適化に関する処理例のフローチャートである。ブロック104において論理合成が行なわれ、回路設計102のための第1のネットリスト106(ネットリスト1.0)が生成される。ネットリスト106は、回路設計の要素をターゲットプログラマブルIC上の利用可能なプリミティブコンポーネントにマップする。ブロック108において、第1のネットリスト106がプログラマブルIC上への実装のために配置され、第1の配置設計110が作成される。ブロック112において、第1の配置設計に対して物理合成最適化が行なわれる。
【0037】
物理合成最適化は、例えば、ファンアウト最適化、クリティカルセル最適化、強制ネット複製、置換最適化、DSPレジスタ最適化、BRAMレジスタ最適化、シフトレジスタ最適化、再配線/ルックアップテーブル最適化、リタイミング最適化、クリティカルピン最適化、および/またはホールドタイム修正最適化を含むさまざまな最適化技術を含み得る。ファンアウト最適化は、多数の負荷を駆動する大きなファンアウトネットのためのドライバを複製する。いくつかの実装例では、ファンアウトネットの最適化は、近接に基づいてネットにより駆動される負荷をクラスタ化し得る。各負荷クラスタを駆動するためにネットドライバ回路が複製され、挿入される。クリティカルセル最適化として知られる同様の最適化は、タイミング要件を満たしていない信号パスにおける負荷のより近くに、ドライバ回路を追加する。例えば、特定のセルに関する負荷が遥か離れて配置されている場合、新たなドライバが負荷クラスタのより近くに配置され、当該セルが複製され得る。この最適化が起こるために、ファンアウトが大きいことは要件ではない。強制ネット複製によって、タイミングスラックに関係なく、タイミング制約パスにおけるネットドライバが強制的に複製される。
【0038】
レジスタ最適化は、レジスタを移動させることにより、クリティカルパスのタイミングを改善し得る。例えば、DSPレジスタ最適化は、移動によってクリティカルパス上の遅延が改善するであろう場合、DSPセルと、ターゲットプログラマブルIC上の別の物理要素(例えば、別のDSPセル)との間でレジスタを移動させ得る。例えば、第1のDSPは、第2のDSPの入力に結合された出力を有するレジスタを含み得る。レジスタと第2のDSPとの間のパスのタイミングがクリティカルである場合、レジスタは、第2のDSP近傍か、または第2のDSP内部にまで移動し得る(使用されていないレジスタが利用可能である場合)。BRAMレジスタ最適化として知られる同様の最適化は、BRAMセルと、ターゲットプログラマブルIC上の他の要素との間でレジスタを移動させ得る。シフトレジスタ最適化は、シフトレジスタの始端または終端から別の位置(例えば、シフトレジスタの入力に接続されたソース、またはシフトレジスタの出力に接続された負荷の近傍)へレジスタを移動する。
【0039】
リタイミングと呼ばれる別の最適化は、組合わせ論理を横断してレジスタを移動させることによって、クリティカルパスの遅延を改善する。置換最適化は、クリティカルセルを、特定のパラメータを最適化するように構成された論理的に同等のセルで置換し得る。例えば回路設計におけるデフォルト高速フーリエ変換(FFT)は、例えば、より高速の処理速度、より小さい実装面積、または低減された消費電力などのために最適化されたFFTで置換されてもよい。再配線最適化は、LUTの接続をスワップすることによって、クリティカル信号の論理レベルの数を減少させる。LUT計算式は、設計機能を維持するように修正される。ホールド修正最適化は、ホールドクリティカルパス上の遅延を増大させることにより、ホールド違反の大きなスラックを改善することを試みる。
【0040】
ブロック114において、物理合成最適化が最適化履歴ファイル116に記録される。いくつかの実装例では、最適化は、実行時に最適化を行なうツールコマンド言語(TCL)スクリプトとして、最適化履歴ファイルにおいて指定され得る。前述のように、物理合成最適化の結果として行なわれた変更によって、第1の配置が最適ではなくなる場合がある。ブロック118では、最適化履歴ファイル116を用いて最適化認識配置およびルーティングが行なわれる。いくつかの実装例では、タイミング分析によって取得されたデータ(例えば、信号毎の最短パスタイミング)が最適化履歴ファイルに記憶されてもよい。このデータを用いて、第1の配置ではタイミングがクリティカルであったモジュールインスタンスを特定してもよい。ブロック118において最適化認識配置が行なわれる際に、特定されたモジュールインスタンスがタイミングクリティカルパスのルーティング距離を短縮するように配置されてもよい。
【0041】
図2は、1つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する処理例のフローチャートである。ブロック202において、最適化履歴ファイル116上で示された物理合成最適化が第1の非配置ネットリスト106に対して行なわれ、第2のネットリスト204が作成される。
【0042】
ブロック206において、第2のネットリスト204がターゲットプログラマブルIC上への実装のために配置され、第2の配置設計208が作成される。ブロック208における配置よりも前に最適化が行なわれるため、配置は最適化変更を考慮に入れることが可能であり、第1の配置設計110と比較して改善された配置(例えば、空間、タイミング、または動作速度に関して)を提供することが可能である。いくつかの実装例では、ブロック208において行なわれる配置は、物理最適化処理時に決定される性能評価を利用してもよい。例えば、物理合成処理は、タイミングクリティカル回路を最適化のターゲットとして特定してもよい。タイミングクリティカル回路は、低い、または負のタイミングスラックを有する回路である。ブロック208において行なわれる配置では、まず、タイミングクリティカル回路がプログラマブルリソースのために非クリティカル回路と競合することなく互いに近接して配置され得るように、タイミングクリティカル回路が配置される。
【0043】
ブロック210において、回路設計のネットは、配置設計の要素間でルーティングされる。さまざまな特性に関してルーティングの最適化を試みる多数のさまざまなルーティングアルゴリズムを用いて、信号がルーティングされ得る。1つのルーティングアルゴリズムでは、各信号のタイミング遅延特性を最小限にするように信号がルーティングされる。これは、遅延モードルーティングと呼ばれる。別のルーティングアルゴリズムでは、使用されるルーティングリソースの数を最小限にするように信号がルーティングされる。これは、リソースモードルーティングと呼ばれる。一般的に、遅延モード最適化はリソースモード最適化よりも長い実行時間を要する。遅延モード最適化では、伝搬遅延パラメータを決定するために、異なる可能なパスが分析またはシミュレートされる。ルーティングアルゴリズムは、タイミング遅延が元のタイミング遅延以下である解決策を求める。しかしながら、解決策が見つかると、ルーティングアルゴリズムは、信号のタイミングをさらに最適化しようとして無駄に処理を行なうことはしない。いくつかの実装例では、クリティカル信号は遅延モードルーティングを用いてルーティングされ、非クリティカル信号はリソースモードルーティングを用いてルーティングされてもよい。ブロック212において、配置およびルーティングされた回路設計が記憶される。
【0044】
開発処理全体を通じて、回路設計は数回修正される場合がある。設計全体の配置およびルーティングを行なうためには膨大な時間が必要であるため、設計のほんの小さな部分が変更された際に、物理合成最適化、配置、およびルーティングの処理全体を繰返すことは回避するのが望ましい。いくつかの実装例では、前の回路設計の配置およびルーティング時に記録された最適化履歴ファイルを再利用することにより、回路設計の後のバージョンのための予備配置最適化を導いてもよい。これにより、処理において、図1で行なわれる初期配置および最適化をスキップすることが可能になる。
【0045】
いくつかの実装例では、最適化履歴ファイルにおける各最適化は、最適化の種類および最適化によって修正されたモジュールインスタンスの名称を指定してもよい。いくつかのシナリオでは、ブロック202において行なわれる最適化処理は、最適化履歴ファイルにおいて示されるモジュールインスタンス名称に基づいて修正されるモジュールを、第2のネットリスト204において特定してもよい。しかしながら、いくつかの例では、第2のネットリスト204におけるモジュールインスタンス名称は、モジュール履歴ファイルにおいて示されるモジュールインスタンス名称とは異なる場合がある。例えば、最適化履歴ファイルが再利用され、回路設計の後のバージョンのためにネットリストの予備配置最適化が導かれた場合、ネットリストにおけるモジュールインスタンスの名称は、最適化履歴ファイルにおけるモジュールインスタンスの名称と一致しない場合がある。例えば、モジュールが設計者によって更新された場合、設計ソフトウェアはモジュールインスタンスの名称をわずかに変更する場合がある。記録された最適化に関するモジュールインスタンスを名称に基づいて特定することができない場合、より複雑なシグニチャ(signature)ベースの方策が用いられてもよい。例えば、インスタンスの名称、インスタンスの種類(LUT5、FDRE、DSP48E2など)、および接続するネットの名称に基づくものである。
【0046】
いくつかの実装例では、処理は、配置を繰返す前に、最適化履歴ファイルにおける最適化のサブセットのみを行なってもよい。図3は、1つ以上の実装例に合致する、回路設計の最適化認識配置およびルーティングに関する別の処理例のフローチャートである。この例では、物理合成最適化の実行が予備配置段階と後配置段階とに分割される。物理合成最適化を予備配置段階と後配置段階とに分割することによって、ネットリストの配置を、最重要の特定の測定基準(例えば、タイミング/クロック速度、ダイ空間、または消費電力)を優先させるように行なうことができる。例えば、処理速度が最重要である場合、タイミング最適化が、最適化履歴ファイルにおいて優先度がより高いものとして示され得る。他の非タイミング最適化は、最適化履歴ファイルにおいて優先度がより低いものとして示され得る。
【0047】
ブロック302では、最適化履歴ファイル116において示された優先度の高い物理合成最適化のセットが第1のネットリスト106に対して行なわれ、第2のネットリスト304が作成される。ブロック306では、第2のネットリスト304がターゲットプログラマブルIC上への実装のために配置され、第2の配置設計308が作成される。配置に続いて、ブロック310では、最適化履歴ファイルにおいて示された優先度の低い物理合成最適化のセットが行なわれる。いくつかの実装例では、最適化履歴ファイル116において示されていない新たな物理最適化がブロック312において行なわれてもよい。行なわれた任意の新たな最適化が最適化履歴ファイルに追加され、更新された最適化履歴ファイル314が作成される。ブロック316では、第2の配置設計に関して信号ネットがルーティングされる。ブロック318では、配置およびルーティングされた回路設計が記憶される。
【0048】
図4は、本明細書に記載された、論理合成処理、物理合成最適化処理、配置処理、およびルーティング処理を行なうように構成され得るコンピューティング装置のブロック図である。プログラムコードを有するように構成される1つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本発明のさまざまな実施形態の処理およびデータ構造のホスティングならびにアルゴリズムの実装に好適であることを、当業者ならば理解するであろう。プロセッサ実行可能フォーマットに符号化された本発明の処理を含むコンピュータコードは、磁気的もしくは光学的ディスクもしくはテープ、電子ストレージデバイス、またはネットワークを介したアプリケーションサービスなどの、さまざまな非一時的なコンピュータ読取可能記憶媒体または送達チャネルなどにより、記憶および提供され得る。
【0049】
プロセッサコンピューティング装置400は、ホストバス412に結合された1つ以上のプロセッサ402、クロック信号発生器404、メモリユニット406、ストレージユニット408、および入出力制御ユニット410を含む。装置400は回路基板上の別個のコンポーネントによって実装されてもよいし、または集積回路内部に実装されてもよい。集積回路内部に実装される場合、プロセッサコンピューティング装置は、他にはマイクロコントローラとして知られる。
【0050】
コンピューティング装置のアーキテクチャは、当業者ならば認識するように、実装要件によって決まる。プロセッサ402は、1つ以上の汎用プロセッサであってもよいし、または、1つ以上の汎用プロセッサと好適なコプロセッサとの組合せであってもよいし、または、1つ以上の特殊プロセッサ(例えば、RISC、CISC、パイプライン型など)であってもよい。
【0051】
メモリ装置406は、典型的には、複数レベルのキャッシュメモリおよびメインメモリを含む。ストレージ装置408は、例えば、磁気ディスク(図示せず)、フラッシュ、EPROM、または他の不揮発性データストレージによって提供されるローカルおよび/またはリモートの永続的ストレージを含み得る。ストレージユニットは、読取可能、または読取可能/書込可能であってもよい。さらに、メモリ406およびストレージ408は、単一の装置に一体化されてもよい。
【0052】
プロセッサ装置402は、ストレージ装置408および/またはメモリ装置406内のソフトウェアを実行し、ストレージ装置408および/またはメモリ装置406からデータを読出すとともにこれらにデータを記憶し、入出力制御装置410を介して外部デバイスと通信する。これらの機能は、クロック信号発生器404によって同期される。コンピューティング装置のリソースは、オペレーティングシステム(図示せず)またはハードウェア制御ユニット(図示せず)によって管理され得る。プログラムコードを有するように構成される1つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本発明のさまざまな実施形態の処理およびデータ構造のホスティングに好適であることを、当業者ならば理解するであろう。
【0053】
図5は、本発明のさまざまな実施形態に係る、配置およびルーティングのためにターゲットデバイスとして用いられ得るプログラマブル集積回路のブロック図である。プログラマブルICは、システムオンチップ(SOC)と呼ばれることもあり、プロセッササブシステム510とプログラマブル論理サブシステム530とを含む。プロセッササブシステム510は、ユーザプログラムの実行によってユーザ設計のソフトウェア部分を実装するようにプログラムされ得る。プログラムは、構成データストリームの一部として指定されてもよく、またはオンチップもしくはオフチップのデータストレージデバイスから検索されてもよい。プロセッササブシステム510は、1つ以上のソフトウェアプログラムを実行するためのさまざまな回路512、514、516、および518を含み得る。回路512、514、516、および518は、例えば、1つ以上のプロセッサコア、浮動小数点演算装置(FPU)、割込み処理ユニット、オンチップメモリ、メモリキャッシュ、および/またはキャッシュコヒーレントインターコネクトを含み得る。
【0054】
プログラマブルIC502のプログラマブル論理サブシステム530は、ユーザ設計のハードウェア部分を実装するようにプログラムされ得る。例えば、プログラマブル論理サブシステムは、構成データストリームにおいて指定された回路のセットを実装するようにプログラムされ得る複数のプログラマブルリソース532を含み得る。プログラマブルリソース532は、プログラマブルインターコネクト回路、プログラマブル論理回路、および構成メモリセルを含む。プログラマブル論理は、例えば、関数発生器、レジスタ、および演算論理などを含み得るプログラマブル要素を用いて、ユーザ設計の論理を実装する。プログラマブルインターコネクト回路は、プログラマブルインターコネクトポイント(PIP)によって相互接続されたさまざまな長さの多数のインターコネクトラインを含み得る。
【0055】
プログラマブルリソース532は、プログラマブルインターコネクト回路およびプログラマブル論理回路の構成の仕方を規定する構成メモリセル内に構成データストリームをロードすることによって、プログラムされ得る。個別のメモリセルの集合的な状態がプログラマブルリソース532の機能を決定する。構成データは、メモリ(例えば外部PROM)から読出し可能であり、または外部デバイスによりプログラマブルIC502に書込可能である。いくつかの実装例では、構成データは、プログラマブル論理サブシステム530に含まれる構成コントローラ534により、構成メモリセル内にロードされてもよい。いくつかの他の実装例では、構成データは、プロセッササブシステム510によって実行される起動処理により、構成メモリセル内にロードされてもよい。
【0056】
プログラマブルIC502は、プロセッササブシステム510をプログラマブル論理サブシステム530に実装される回路と相互接続するためのさまざまな回路を含み得る。この例において、プログラマブルIC502は、プロセッササブシステム510およびプログラマブル論理サブシステム530のさまざまなデータポート間でデータ信号のルーティングを可能にするコアスイッチ526を含む。また、コアスイッチ526は、プログラマブル論理サブシステムまたは処理サブシステム510および530と、プログラマブルICの他のさまざまな回路(例えば内部データバス)との間でデータ信号をルーティングしてもよい。代替的または追加的に、プロセッササブシステム510は、プログラマブル論理サブシステムに直接接続するためのインターフェースを含んでもよい(コアスイッチ526をバイパスする)。このようなインターフェースは、例えばARMによって公開されたAMBA AXIプロトコル仕様(AXI)を用いて実装されてもよい。
【0057】
いくつかの実装例では、プロセッササブシステム510およびプログラマブル論理サブシステム530は、メモリコントローラ521を介してオンチップメモリ522またはオフチップメモリ(図示せず)のメモリ位置に対して読出しまたは書込を行なってもよい。メモリコントローラ521は、1つ以上のさまざまな種類のメモリ回路と通信するように実装され得る。メモリ回路は、16ビット、32ビット、またはECCを含む16ビットなどの、デュアルデータレート(DDR)2、DDR3、低電力(LP:Low Power)DDR2といった種類のメモリを含むが、これらに限定されない。メモリコントローラ521が通信可能なさまざまな種類のメモリの列挙は例示のために提示されたにすぎず、限定としてまたは網羅的なものとして意図されたものではない。図5に示すように、プログラマブルIC502は、サブシステム510および530によって使用される仮想メモリアドレスを、特定のメモリ位置にアクセスするためにメモリコントローラ521によって使用される物理メモリアドレスに変換するために、メモリ管理ユニット520およびトランスレーション・ルックアサイド・バッファ524を含んでもよい。
【0058】
プログラマブルICは、外部回路とデータを通信するための入出力(I/O)サブシステム550を含んでもよい。I/Oサブシステム550は、例えば、フラッシュメモリタイプのI/Oデバイス、高性能I/Oデバイス、低性能インターフェース、デバッギングI/Oデバイス、および/またはRAM I/Oデバイスを含むさまざまな種類のI/Oデバイスまたはインターフェースを含み得る。
【0059】
I/Oサブシステム550は、560Aおよび560Bとして図示される1つ以上のフラッシュメモリインターフェース560を含んでもよい。例えば、フラッシュメモリインターフェース560のうちの1つ以上は、4ビット通信用に構成されたクワッドシリアルペリフェラルインターフェース(QSPI:Quad-Serial Peripheral Interface)として実装されてもよい。フラッシュメモリインターフェース560のうちの1つ以上は、パラレル8ビットNOR/SRAMタイプのインターフェースとして実装されてもよい。フラッシュメモリインターフェース560のうちの1つ以上は、8ビットおよび/または16ビット通信用に構成されたNANDインターフェースとして実装されてもよい。記載した特定のインターフェースは、限定ではなく例示のために提示されたものであることを理解すべきである。異なるビット幅を有する他のインターフェースを用いることも可能である。
【0060】
I/Oサブシステム550は、フラッシュメモリインターフェース560よりも高いレベルの性能を呈する1つ以上のインターフェース562を含み得る。インターフェース562A〜562Cは、それぞれDMAコントローラ564A〜564Cに結合され得る。例えば、インターフェース562のうちの1つ以上は、ユニバーサルシリアルバス(USB)タイプのインターフェースとして実装されてもよい。インターフェース562のうちの1つ以上は、ギガビットイーサネット(登録商標)タイプのインターフェースとして実装されてもよい。インターフェース562のうちの1つ以上は、セキュアデジタル(SD)タイプのインターフェースとして実装されてもよい。
【0061】
I/Oサブシステム550は、インターフェース562よりも低いレベルの性能を呈する1つ以上のインターフェース566、例えばインターフェース566A〜566Dなどを含んでもよい。例えば、インターフェース566のうちの1つ以上は、汎用I/O(GPIO)タイプのインターフェースとして実装されてもよい。インターフェース566のうちの1つ以上は、汎用非同期送受信機(UART)タイプのインターフェースとして実装されてもよい。インターフェース566のうちの1つ以上は、シリアルペリフェラルインターフェース(SPI)バスタイプのインターフェースの形で実装されてもよい。インターフェース566のうちの1つ以上は、コントローラエリアネットワーク(CAN)タイプのインターフェース、および/またはICタイプのインターフェースの形で実装されてもよい。また、インターフェース566のうちの1つ以上は、タイマータイプのインターフェースの形で実装されてもよい。
【0062】
I/Oサブシステム550は、プロセッサJTAG(PJTAG)インターフェース568Aおよびトレースインターフェース568Bなどの、1つ以上のデバッグインターフェース568を含み得る。PJTAGインターフェース568Aは、プログラマブルIC502に外部デバッグインターフェースを提供し得る。トレースインターフェース568Bは、プロセッササブシステム510またはプログラマブル論理サブシステム530から、デバッグ(例えばトレース)情報を受信するためのポートを提供し得る。
【0063】
図示のように、インターフェース560、562、566、および568の各々はマルチプレクサ570に結合され得る。マルチプレクサ570は、直接ルーティングされ得る、またはプログラマブルIC502の外部ピンに結合され得る複数の出力を提供する(例えば、プログラマブルIC502がその内部に配置されるパッケージのボール)。例えば、プログラマブルIC502のI/Oピンは、インターフェース560、562、566、および568の間で共有され得る。ユーザは、構成データストリームによってマルチプレクサ570を設定することにより、インターフェース560〜568のうちのいずれを使用するか、ひいては、マルチプレクサ570を介してそれらのうちのいずれをプログラマブルIC502のI/Oピンに結合するかを選択することができる。I/Oサブシステム550は、インターフェース562〜568をプログラマブル論理サブシステムのプログラマブル論理回路に接続するためのファブリックマルチプレクサI/O(FMIO)インターフェース(図示せず)を含んでもよい。追加的または代替的に、プログラマブル論理サブシステム530は、プログラマブル論理に1つ以上のI/O回路を実装するように構成されてもよい。いくつかの実装例では、プログラマブルIC502は、電源および/または安全管理のためのさまざまな回路を有するサブシステム540を含んでもよい。例えば、サブシステム540は、プログラマブルIC502のさまざまなサブシステムに電力を供給するために用いられる1つ以上の電圧領域を監視および維持するように構成された電源管理ユニット546を含んでもよい。いくつかの実装例では、電源管理ユニット546は、アイドル状態である個々のサブシステムの電源を停止してもよい。これにより、使用中のサブシステムの電源を停止することなく、消費電力を低減することができる。
【0064】
サブシステム540は、正常な動作を確保するために、サブシステムのステータスを監視するための安全回路を含んでもよい。例えば、サブシステム540は、さまざまなサブシステムのステータスを監視するように構成された1つ以上のリアルタイムプロセッサ542(例えば、ステータスレジスタ544で示される)を含んでもよい。リアルタイムプロセッサ542は、エラーの検出に応答して複数のタスクを行なうように構成され得る。例えば、いくつかのエラーに対して、リアルタイムプロセッサ542は、エラーの検出に応答してアラートを生成し得る。別の例として、リアルタイムプロセッサ542は、サブシステムを正常な動作に復帰させることを試みるために、サブシステムをリセットしてもよい。サブシステム540は、さまざまなサブシステムを相互接続するために使用され得るスイッチネットワーク548を含む。例えば、スイッチネットワーク548は、さまざまなサブシステム510、530、および540をI/Oサブシステム550のさまざまなインターフェースに接続するように構成されてもよい。いくつかの適用例では、スイッチネットワーク548を用いて、監視対象のサブシステムからリアルタイムプロセッサ542を分離してもよい。このような分離は、リアルタイムプロセッサ542が他のサブシステムで発生するエラーの影響を受けないことを保証するために、ある適用規格(例えば、IEC−61508 SIL3規格またはISO−26262規格)で必要とされ得る。
【0065】
プログラムコードを有するように構成される1つ以上のプロセッサおよびメモリ装置を含むさまざまな代替のコンピューティング装置が、本明細書に開示の処理およびデータ構造のホスティングに好適であることを、当業者ならば理解するであろう。さらに、処理は、磁気的もしくは光学的ディスクもしくはテープ、電子ストレージデバイス、またはネットワークを介したアプリケーションサービスなどの、さまざまなコンピュータ読取可能記憶媒体または送達チャネルなどにより、記憶および提供され得る。
【0066】
本発明は、さまざまな回路設計の配置およびルーティングのためのシステムに適用可能であると考えられる。さらに、本発明のシステムおよび方法を適用可能な好適なターゲットプログラマブルICとしてFPGAおよび他のPLDを説明したが、本発明はそれらに限定されない。明細書を考慮するとともに本明細書に開示の本発明を実施することにより、本発明の他の局面および実施形態が当業者に明らかになるであろう。明細書および図示の実施形態は例として考慮されるにすぎず、本発明の真の範囲および精神は以下の特許請求の範囲およびその均等物で示されることが意図される。
図1
図2
図3
図4
図5