"実行のためにソフトウェア処理の演算セットを分散する方法であって、第1のマスタ演算スレッドに第1の演算セットを提供するステップと、前記第1の演算セットに関連する第1の処理データを前記第1のマスタ演算スレッドに提供するステップであって、前記第1の処理データが、前記第1の処理データの少なくとも第1の部分と、前記第1の処理データの前記第1の部分と並列である前記第1の処理データの少なくとも第2の部分とを含んでいるステップと、第2のマスタ演算スレッドに第2の演算セットを提供するステップであって、前記第2の演算セットが、前記第1の演算セットと並列であるステップと、前記第2の演算セットに関連する第2の処理データを前記第2のマスタ演算スレッドに提供するステップであって、前記第2の処理データが、少なくとも第1の部分と、前記第2の処理データの前記第1の部分と並列である第2の部分とを含んでいるステップと、前記第2のマスタ演算スレッドが、実行のために、前記第2の演算セットと前記第2の処理データの前記第1の部分とを、第1のスレーブ演算スレッドに提供するステップとを含む方法。前記第2のマスタ演算スレッドが、実行のために、前記第2の演算セットと前記第2の処理データの前記第2の部分とを、第2のスレーブ演算スレッドに提供するステップをさらに含む、請求項1に記載の、実行のために演算セットを分散する方法。前記第2のマスタ演算スレッドが、前記第2の処理データの前記第2の部分を使用して、前記第2の演算セットを実行するステップをさらに含む、請求項1に記載の、実行のために演算セットを分散する方法。前記第2のマスタ演算スレッドが、従属マスタ演算スレッドであり、前記第1のマスタ演算スレッドが、前記第2の演算セットおよび前記第2の処理データを前記第2のマスタ演算スレッドに提供する実行マスタ演算スレッドである、請求項1ないし3のいずれか1項に記載の、実行のために演算セットを分散する方法。第3のマスタ演算スレッドに第3の演算セットを提供するステップであって、前記第3の演算セットが、前記第1および第2の演算セットと並列であるステップと、前記第3の演算セットに関連する第3の処理データを前記第3のマスタ演算スレッドに提供するステップであって、前記第3の処理データが、少なくとも第1の部分と、前記第3の処理データの前記第1の部分と並列である第2の部分とを含んでいるステップとをさらに含む、請求項1ないし4のいずれか1項に記載の、実行のために演算セットを分散する方法。前記第3のマスタ演算スレッドが、実行のために、前記第3の演算セットと前記第3の処理データの前記第1の部分とを、第3のスレーブ演算スレッドに提供するステップをさらに含む、請求項5に記載の、実行のために演算セットを分散する方法。前記第3のマスタ演算スレッドが、実行のために、前記第3の演算セットと前記第3の処理データの前記第2の部分とを、第4のスレーブ演算スレッドに提供することをさらに含む、請求項6に記載の、実行のために演算セットを分散する方法。前記第3のマスタ演算スレッドが、前記第3の処理データの前記第2の部分を使用して、前記第3の演算セットを実行するステップをさらに含む、請求項6に記載の、実行のために演算セットを分散する方法。前記処理データが、マイクロ素子設計データである、請求項1ないし8のいずれか1項に記載の、実行のために演算セットを分散する方法。前記演算セットが、設計ルール確認処理、レイアウト対回路図検証処理、位相シフトマスク処理、光学プロセス修正処理、光学プロセスルール確認処理、および分解能向上技術処理から成る群より選択される処理を実行するためのものである、請求項9に記載の、実行のために演算セットを分散する方法。前記第1の演算セットが、単一の演算を含んでいる、請求項1に記載の、実行のために演算セットを分散する方法。前記第1の演算セットが、複数の演算を含んでいる、請求項1に記載の、実行のために演算セットを分散する方法。前記第1の演算セットが、並行演算を含んでいる、請求項12に記載の、実行のために演算セットを分散する方法。ヌル値を有する処理データを使用して、複数の演算を実行することをさらに含む、請求項1ないし13のいずれか1項に記載の、実行のために演算セットを分散する方法。第1の演算セットと、前記第1の演算セットと並列である第2の演算セットとを含む複数の演算セットを格納している演算記憶ユニットと、第1の処理データと、前記第1の処理データと並列である第2の処理データとを含む処理データと、前記第1の演算セットを前記第1の処理データと関連付け、前記第2の演算セットを前記第2の処理データと関連付ける関係データとを格納している第1のデータ記憶ユニットと、前記第1の処理データを使用して、前記第1の演算セットを処理する第1のマスタ処理ユニットと、前記第2の処理データを使用して、前記第2の演算セットを処理する第2のマスタ処理ユニットとを備え、前記第1の処理データが、少なくとも第1の部分と、前記第1の処理データの前記第1の部分と並列である第2の部分とを含み、前記第1のマスタ処理ユニットが、実行のために、前記第1の処理データの前記第1の部分および前記第1の演算セットを第1のスレーブ処理ユニットに提供することによって、前記第1の演算セットを処理する処理装置。前記第1のスレーブ処理ユニットと、前記第1の処理データの前記第1の部分を格納している第2の記憶ユニットとをさらに備えている、請求項15に記載の装置。前記第1のマスタ処理ユニットが、実行のために、前記第1の処理データの前記第2の部分および前記第1の演算セットを第2のスレーブ処理ユニットに提供することによって、前記第1の演算セットを処理する、請求項15に記載の装置。前記第2の処理データが、少なくとも第1の部分と、前記第2の処理データの前記第1の部分と並列である第2の部分とを含んでおり、前記第2のマスタ処理ユニットが、実行のために、前記第2の処理データの前記第1の部分および前記第2の演算セットを第2のスレーブ処理ユニットに提供することによって、前記第2の演算セットを処理する、請求項15に記載の装置。前記第2のマスタ処理ユニットが、実行のために、前記第2の処理データの前記第2の部分および前記第2の演算セットを第3のスレーブ処理ユニットに提供することによって、前記第2の演算セットを処理する、請求項18に記載の装置。前記第2の処理データと、前記第2の演算セットを前記第2の処理データと関連付ける関係データとを格納している第2のデータ記憶ユニットをさらに備え、前記第1のマスタ処理ユニットが、前記第1のデータ記憶ユニットを使用して前記第1の演算セットを処理し、前記第2のマスタ処理ユニットが、前記第2のデータ記憶ユニットを使用して前記第2の演算セットを処理する、請求項18に記載の装置。したがって、処理のためにネットワーク内の多数のコンピュータの間で処理データをより広範に分散可能であることが望ましい。本発明の各種局面は、ソフトウェアアプリケーション用の処理データを複数のコンピュータの間でさらに効率的に分散するための技術を好適に提供する。以下に詳述するように、この様な技術を実施するツールおよび方法の実施形態は、分析のために、マルチプロセッサコンピュータからネットワーク内の1台以上のシングルプロセッサコンピュータへとマイクロ素子設計データを分散する特殊な用途を有する。本発明の各種実施形態によれば、並列演算セットが識別される。以下に詳述するように、2つの演算セットのうちの一方の演算セットの実行が、他方の演算セットを先に実行することから得られる結果を必要としない場合や、その逆の場合、2つの演算セットは並列である。そして、各並列演算セットが、処理のために、関連する処理データと共にマスタ演算スレッドに与えられる。例えば、第1の演算セットは、第1の演算セットを実行するために使用される第1の処理データと共に、第1のマスタ演算スレッドに与えられる。そして、第2の演算セットは、第2の演算セットを実行するために使用される第2の処理データと共に、第2のマスタ演算スレッドに与えられる。第1の演算セットは、第2の演算セットと並列であるので、第1のマスタ演算スレッドは、第1の演算セットを処理し、第2のマスタ演算スレッドは、第2の演算セットを処理することができる。本発明の各種実施例では、各マスタ演算スレッドは、その後、その演算セットに関連する処理データの並列性に基づいて、その演算セットを1台以上のスレーブコンピュータに与える。例えば、処理データが2つの並列部分を含む場合、第1の部分を第1のスレーブ演算スレッドに与える。そして、マスタ演算スレッドは、処理データの第2の部分を使用して演算セットを実行し、第1のスレーブ演算スレッドは、処理データの第1の部分を使用して演算セットを実行することができる。この様にして、ソフトウェアアプリケーションが使用する処理データおよびソフトウェアアプリケーションが実行する演算の並列性に基づいて、ソフトウェアアプリケーションの実行を多数複数のネットワーク化コンピュータの間でさらに広範に分散することができる。本発明のこれらおよびその他の特徴および局面は、以下の詳細な説明を検討すると明らかになるであろう。序本発明の各種実施形態は、実行のために多数のネットワーク化コンピュータの間で演算を分散するためのツールおよび方法に関する。上記のように、本発明のある実施形態の態様は、少なくとも1台のマルチプロセッサマスタコンピュータおよび複数のシングルプロセッサスレーブコンピュータを含む演算ネットワークでの演算の分散に対する特殊な用途を有する。したがって、本発明の理解をさらに容易にするために、複数のシングルプロセッサスレーブコンピュータにリンクされたマルチプロセッサマスタコンピュータを有するネットワークの例を説明する。典型的な動作環境当業者に理解されるように、本発明の各種実施例に係る演算分散は、通常、1つ以上のプログラム可能な演算装置により実行されるコンピュータ実行可能ソフトウェア命令を使用して実行される。本発明は、ソフトウェア命令を使用して実施されるので、まず、本発明の各種実施形態を使用する、一般的なプログラム可能コンピュータシステムの構成要素および動作について説明する。特に、ホストコンピュータまたはマスタコンピュータおよび1台以上のリモートコンピュータまたはスレーブコンピュータを有するコンピュータネットワークの構成要素および動作について、図1を参照しながら説明する。しかし、この動作環境は、適切な動作環境の一例に過ぎず、本発明の使用や機能の範囲の如何なる限定をも示唆する意図はない。図1において、マスタコンピュータ101は、複数の入出力装置103とメモリ105とを備えたマルチプロセッサコンピュータである。入出力装置103は、ユーザとの入力データや出力データの授受のための任意の装置を備えている。入力装置には、例えば、ユーザから入力を受けるためのキーボード、マイク、スキャナまたはポインティング装置が含まれる。そして、出力装置には、表示モニタ、スピーカ、プリンタまたは触覚フィードバック装置が含まれる。これらの装置およびその接続は、当該技術分野において周知であるので、ここでは詳述しない。同様に、メモリ105も、マスタコンピュータ101によってアクセス可能なコンピュータ読取可能媒体の任意の組み合わせを使用して実現される。コンピュータ読取可能媒体には、例えば、読取/書込メモリRAM、読取専用メモリROM、電子的消去可能/プログラム可能読取専用メモリEEPROMもしくはフラッシュメモリマイクロ回路装置、CD-ROMディスク、デジタルビデオディスクDVD、またはその他の光学的記憶装置などのマイクロ回路メモリ装置が含まれる。コンピュータ読取可能媒体には、磁気カセット、磁気テープ、磁気ディスク、その他の磁気記憶装置、パンチ媒体、ホログラフ記憶装置、その他、所望の情報を格納するために使用可能な媒体が含まれる。以下に詳述するように、マスタコンピュータ101は、本発明の各種実施例に係る1つ以上の演算を行うためのソフトウェアアプリケーションを実行する。したがって、メモリ105は、実行時に1つ以上の演算を行うためのソフトウェアアプリケーションを実行するソフトウェア命令107Aを格納する。また、メモリ105は、ソフトウェアアプリケーションと共に使用されるデータ107Bも格納する。図示の実施形態において、データ107Bには、少なくとも部分的に並列となる演算を実行するためにソフトウェアアプリケーションが使用する処理データが含まれる。また、マスタコンピュータ101は、複数のプロセッサ109と、インタフェース装置111とを備えている。プロセッサ109は、ソフトウェア命令107Aを実行するためにプログラム可能な任意のタイプの処理装置とすることができる。プロセッサ109は、Intel登録商標Pentium登録商標またはXeon商標マイクロプロセッサ、AdvancedMicroDevicesAthlon商標マイクロプロセッサ、またはMotorola68K/Coldfire登録商標マイクロプロセッサなど、市販の一般的なプログラム可能なマイクロプロセッサとすることができる。あるいは、プロセッサ109は、特定の種類の数値演算を最適に実行するように設計されたマイクロプロセッサなど、特注プロセッサとすることもできる。インタフェース装置111、プロセッサ109、メモリ105、および入出力装置103は、バス113によって共に接続されている。インタフェース装置111によって、マスタコンピュータ101は、通信インタフェースを介してリモートスレーブコンピュータ115A、115B、115C...115xと通信することができる。通信インタフェースは、例えば、従来の有線ネットワーク接続や光伝送有線ネットワーク接続を含む任意の適切なタイプのインタフェースとすることができる。通信インタフェースは、無線光接続、無線周波数接続、赤外線接続、音響接続などの無線接続とすることもできる。各種通信インタフェースのプロトコルおよび実施は、当該技術分野において周知であるので、ここでは詳述しない。各スレーブコンピュータ115は、メモリ117と、プロセッサ119と、インタフェース装置121と、オプションとしてさらに1つの入出力装置123とを備え、これらはシステムバス125によって共に接続されている。マスタコンピュータ101と同様に、スレーブコンピュータ115用のオプションの入出力装置123には、キーボード、ポインティング装置、マイク、表示モニタ、スピーカ、およびプリンタなどの従来の入力または出力装置が含まれる。同様に、プロセッサ119は、任意のタイプの従来型または特注のプログラム可能プロセッサ素子とすることができ、メモリ117は、上記のコンピュータ読取可能媒体の任意の組み合わせを使用して実現することができる。インタフェース装置111と同様に、インタフェース装置121によって、スレーブコンピュータ115は、通信インタフェースを介してマスタコンピュータ101と通信することができる。図示の実施例では、マスタコンピュータ101は、マルチプロセッサコンピュータであり、スレーブコンピュータ115は、シングルプロセッサコンピュータである。しかし、本発明の別の実施形態では、シングルプロセッサマスタコンピュータを使用可能である点に留意すべきである。さらに、リモートコンピュータ115のうちの1台以上が、その用途によっては複数のプロセッサを備えていてもよい。また、ホストコンピュータ101用に単一のインタフェース装置111が図示されているが、本発明の別の実施形態では、コンピュータ101が、多数の通信インタフェースを介してリモートコンピュータ115と通信するために、2つ以上の異なるインタフェース装置111を使用可能である点に留意すべきである。並列処理データ上記のように、本発明の各種実施例では、データ107Bの処理データは、ある程度の並列性を有する。マイクロ素子のための設計データなどの処理データは、例えば、マイクロ素子のための設計データなど、階層構造を有するデータとすることができる。マイクロ素子の最も周知のタイプは、一般にマイクロチップまたは集積回路とも呼ばれるマイクロ回路である。マイクロ回路素子は、自動車から電子レンジ、パーソナルコンピュータまで、様々な製品に使用されている。他のタイプのマイクロ素子、例えば、マイクロ電気機械MEM素子としては、光学素子、機械装置および静的記憶素子がある。これらのマイクロ素子は、マイクロ回路素子の現在の重要性と同程度の重要性を有する見込みがある。新規な集積回路の設計には、何百万ものトランジスタ、抵抗器、コンデンサ、またはその他の電気構造を、論理回路、メモリ回路、プログラム可能フィールドアレイ、およびその他の回路素子へと相互接続することが含まれる。コンピュータが、この様な大規模データ構造をより簡単に作成および分析できるようにそして、人間のユーザが、この様なデータ構造をより良く理解できるようにするために、大規模データ構造は、しばしば、通常セルと呼ばれる小規模データ構造へと階層的に構成される。したがって、マイクロプロセッサまたはフラッシュメモリの設計のために、1ビットを格納するメモリ回路を構成するトランジスタの全てを、単一のビットメモリセルとして分類してもよい。各トランジスタを個々に列挙する必要はなく、1ビットメモリ回路を構成するトランジスタのグループを、この様に一括して単一ユニットとして参照し、取り扱うことができる。同様に、より大規模な16ビットメモリレジスタ回路を記述する設計データを、単一セルとして分類することができる。すると、この上位レベルのレジスタセルは、各ビットメモリセルとのデータの授受のための入出力回路など、その他種々の回路を記述する設計データと共に、16のビットメモリセルを含む可能性がある。そして、128kBメモリアレイを記述する設計データは、各レジスタセルとのデータの授受のための入出力回路など、それ自体の種々の回路を記述する設計データと共に、わずか64,000個のレジスタセルの組合せとして簡潔に記述することができる。したがって、セルに分割されたデータ構造は、一般的に、階層構造に配列されたセルを有する。最下位レベルのセルは、データ構造の基本要素のみを含む。そして、中間レベルのセルは、下位レベルのセルのうちの1つ以上のセルを含み、上位レベルのセルは、中間レベルのセルのうちの1つ以上のセルを含んでいてもよい。さらに、データ構造の中には、セルが、そのデータ構造の基本要素に加えて、1つ以上の下位レベルのセルを含む場合もある。データを階層的なセルに分類することによって、大規模データ構造をさらに迅速かつ効率的に処理することができる。例えば、回路設計者は、通常、設計に記述されている各回路の特徴が特定の設計ルールに準拠するよう保証するために、設計を分析する。上記の例では、全128kBメモリアレイの各特徴を分析する必要はなく、設計ルール確認ソフトウェアアプリケーションは、1ビットセルの特徴を分析することができる。そして、確認の結果は、全ての1ビットセルに適用可能である。1ビットセルの1事例が設計ルールに準拠することが確認されると、設計ルール確認ソフトウェアアプリケーションは、レジスタセルの種々の回路それ自体が1つ以上の階層セルで構成されていてもよいの特徴を分析することによって、レジスタセルの分析を完了することができる。そして、この確認の結果は、全てのレジスタセルに適用可能である。レジスタセルの1事例が設計ルールに準拠することが確認されると、設計ルール確認ソフトウェアアプリケーションは、単に、128kBメモリアレイの種々の回路の特徴を分析することによって、全128kBメモリアレイの分析を完了することができる。この様に、大規模データ構造の分析は、データ構造を構成している比較的少数のセルの分析へと圧縮することができる。図2は、処理データがどの様にして種々の階層セルへと構成可能となるかを図式的に示す。この図において、各セルは、A~Jの文字で示すデータ201の一部を含む。データベース内のデータ201は、4つの階層レベル203~209に分割されている。最上位レベル203は、単一のセル211のみを含み、2番目に上位のレベル205は、2つのセル213、215を含む。この構成では、先行のセル213、215が同様に処理されるまで、最上位レベルのセル211内のデータを使用して処理演算を正確に実行することができない。同様に、先行の3番目のレベルのセル217、219が処理されるまで、2番目のレベルのセル213内のデータを処理することができない。この図に示すように、同じセルが、多数の階層レベルに存在する。例えば、セル221が3番目の階層レベル207に存在し、セル223が4番目の階層レベル209に存在するが、セル221、223は、両方とも同じセルデータ図中、文字Fで識別されるを含んでいる。この様に、トランジスタなどの特定の構造に関する設計データは、処理データの様々な階層レベルにおいて繰り返し使用される。処理データのセルの階層は、任意の所望の基準に基づいている点に留意すべきである。例えば、マイクロ素子設計データでは、セルの階層は、大規模構造用のセルが小規模構造用のセルを組み込むように構成される。しかし、本発明の他の実施態様では、セルの階層は、例えば、マイクロ素子の個々の材料層の積層順序など、別の基準に基づいてもよい。したがって、マイクロ素子のある層に存在する構造のための設計データ部分を、第1の階層レベルのセルに割り当ててもよい。そして、マイクロ素子の上層に存在する構造に対応する別の設計データ部分を、第1の階層レベルとは異なる第2の階層レベルのセルに割り当ててもよい。さらに、本発明の各種実施例では、並列性を生成可能である。例えば、設計データが、マイクロ素子設計データである場合、本発明の実施態様の中には、マイクロ素子設計のある領域を任意の領域に分割し、各領域をセルとして使用する場合もある。しばしばビンインジェクションと呼ばれるこの技術を使用して、処理データの並列性の存在を増やすことができる。以上の説明から、設計データの一部は、設計データの他の部分に依存してもよいことが分かる。例えば、レジスタセル用の設計データは、本質的に1ビットメモリセル用の設計データを含む。したがって、1ビットメモリセルに対して設計ルール確認演算を実行するまで、レジスタセルに対して設計ルール確認演算を実行することができない。しかし、マイクロ素子設計データの階層構造は、独立部分も有する。例えば、16ビットコンパレータ用の設計データを含むセルは、レジスタセルから独立している。上位のセルは、コンパレータセルおよびレジスタセルを含むが、一方のセルは、他方のセルを含まない。その代わりに、これら2つの下位のセルにおけるデータは、並列である。これらのセルは並列であるので、両方のセルに対して同じ設計ルール確認演算を衝突なしに同時に実行可能である。したがって、第1の演算スレッドが、レジスタセルに対する設計ルール確認演算を実行する一方、別の第2の演算スレッドが、コンパレータセルに対して同じ設計ルール確認演算を実行することができる。並列演算上記のように、本発明の実施形態は、様々な異なるタイプのソフトウェアアプリケーションと共に使用可能である。しかし、本発明の実施形態の中には、マイクロ回路を表す設計データのシミュレーション、検証、または修正を行うソフトウェアアプリケーションに特に有用なものもある。マイクロ回路素子の設計および製造には、設計フローにおける多数のステップが含まれ、設計フローは、マイクロ回路のタイプ、複雑性、設計チーム、およびマイクロ回路製作所または工場に大きく依存する。幾つかのステップは、全ての設計フローに共通である。まず、通常、ハードウェア設計言語HDLで、設計仕様を論理的にモデル化する。そして、ソフトウェアおよびハードウェアのツールは、ソフトウェアシミュレータおよび/またはハードウェアエミュレータによって、設計フローの様々な段階において設計を検証し、エラーを修正する。論理設計が良好であると考えられると、論理設計は、合成ソフトウェアによって物理的な設計データに変換される。物理的な設計データは、例えば、工場でフォトリソグラフィ工程において所望のマイクロ回路素子を製造するために使用するマスクに書き込む幾何パターンを表す。物理的な設計情報によって、素子の適切な動作のための設計仕様および論理設計を正確に実現することが非常に重要である。さらに、物理的な設計データを使用して、工場で使用するマスクを作製するので、データは、工場の要求に準拠しなければならない。各工場は、その工場のプロセス、装備、および技術に応じた工場独自の物理的設計パラメータを設定する。この様なシミュレーション、および検証ツールの例は、2001年5月8日発行の特許に係るMcSherryらの上記特許文献1、2001年6月19日発行の特許に係るMcSherryらの上記特許文献2、2002年1月15日発行の特許に係るEisenhoferらの上記特許文献3、2002年5月28日発行の特許に係るBozkusらの上記特許文献4、2002年7月2日発行の特許に係るAndersonらの上記特許文献5、および2002年7月23日発行の特許に係るAndersonらの上記特許文献6に記載されており、これらは全てここに引用により組み込まれている。処理データと同様に、ソフトウェアアプリケーションにより実行される演算も、並列性を有する階層構造を有していてもよい。演算並列性を例示するために、マイクロ回路の物理的な設計データのための設計ルール確認プロセスを実施するソフトウェアアプリケーションについて説明する。この種のソフトウェアアプリケーションは、マイクロ回路の幾何学的な特徴を定義する処理データに対して演算を行う。例えば、トランジスタゲートは、ポリシリコン材料の領域と拡散材料の領域とが交わる部分に形成される。したがって、トランジスタゲートを表す設計データは、ポリシリコン材料の層のポリゴンと、拡散材料の層の重なるポリゴンとで構成される。通常、マイクロ回路物理設計データには、2種類の異なるデータ、すなわち、描画層drawnlayer設計データおよび導出層derivedlayer設計データが含まれる。描画層データは、マイクロ回路を形成する材料の層に描かれるポリゴンを記述する。通常、描画層データには、金属層、拡散層、およびポリシリコン層におけるポリゴンが含まれる。そして、導出層は、描画層データと他の導出層データとの組合せで構成される特徴を含む。例えば、上記のトランジスタゲートでは、ゲートを記述する導出層設計データは、ポリシリコン材料層のポリゴンと拡散材料層のポリゴンとが交わる部分から導出される。通常、設計ルール確認ソフトウェアアプリケーションは、2種類の演算、すなわち、設計データ値が設定パラメータに適合するかどうかを確認する確認演算と、導出層データを生成する導出演算とを実行する。例えば、トランジスタゲート設計データは、下記の導出演算によって生成される。gate=diffANDpolyこの演算の結果によって、拡散層ポリゴンとポリシリコン層ポリゴンとの全ての交わる部分が識別される。同様に、拡散層にn型材料をドーピングすることによって形成されるp型トランジスタゲートは、下記の導出演算によって識別される。pgate=nwellANDgateそして、この演算の結果によって、拡散層のポリゴンがn型材料でドーピングされた全てのトランジスタゲートすなわち、拡散層ポリゴンとポリシリコン層ポリゴンとが交わる部分が識別される。そして、確認演算は、データ設計値のためのパラメータまたはパラメータ範囲を定義する。例えば、ユーザは、金属配線ラインが他の配線ラインの1ミクロン以内に無いことを望む場合がある。この種の分析は、下記の確認演算によって実行される。externalmetal<1この演算の結果によって、金属層設計データ内の他のポリゴンに1ミクロンよりも近接している金属層設計データ内の各ポリゴンが識別される。また、上記の演算は、描画層データを使用する一方、確認演算は、導出層データに対しても実行されてもよい。例えば、トランジスタゲートが他のゲートの1ミクロン以内に位置しないことの確認をユーザが望む場合、設計ルール確認プロセスは、下記の確認演算を含む可能性がある。externalgate<1この演算の結果によって、他のゲートから1ミクロン未満の位置に配置されるゲートを表す全てのゲート設計データが識別される。しかし、描画層設計データからゲートを識別する導出演算が実行されるまで、この確認演算を実行できないことを理解すべきである。したがって、演算データは、階層構造を有していてもよい。例えば、図3は、上述の導出演算および確認演算の階層構造を図式的に示す。この図から分かるように、この階層構造の最下位層301は、描画層設計データを含む。導出演算の各種層303は、階層の中間レベルを構成する。そして、階層の最上位層305は、確認演算で構成される。この図から分かるように、演算の中には、他の演算に依存するものがある。例えば、導出演算307すなわち、gate=diffANDpolyは、導出演算309すなわち、pgate=nwellANDgateまたは確認演算311すなわち、externalgate<1の前に実行しなければならない。また、演算の中には他の演算から独立しているものもあることが、この図から分かる。例えば、確認演算313すなわち、externalmetal<1は、演算307~311により使用される導出層設計データまたは描画層設計データのいずれも使用しない。この様に、確認演算313は、演算307~311と並列であり、設計データに衝突を生じることなく、演算307~311のいずれかと同時に実行可能である。同様に、演算309は、演算311と並列である。というのは、一方の演算により生成された出力データは、他方の演算により生成された出力データと衝突しないからである。演算分散ツール図4は、本発明の各種実施例に従って実施可能な演算分散ツール401を示す。この図に示すように、ツール401は、図1に示すタイプのマルチプロセッサコンピュータ101上で実施することができる。しかし、様々なマスタ/スレーブコンピュータネットワークを使用して、分散ツール401の別の実施形態を実施できると理解すべきである。図4に示すように、演算分散ツール401は、複数のマスタ演算ユニット403と、複数のデータ記憶ユニット405とを備えている。各マスタ演算ユニット403は、例えば、マルチプロセッサコンピュータ101のプロセッサ109により実施可能である。また、以下に詳述するように、各マスタ演算ユニット403は、ソフトウェア演算を実行するために演算スレッドを走らせる。図示の実施例では、データ記憶ユニット405は、各マスタ演算ユニット403に関連して設けられている。本発明の実施例の中には、データ記憶ユニット405が、メモリ105など、単一の物理記憶媒体によって実施される仮想データ記憶ユニットである場合もある。しかし、本発明の別の実施例では、データ記憶ユニット405のうちの1つ以上のデータ記憶ユニットが、個別の物理記憶媒体によって実施される場合もある。以下でも詳述するように、データ記憶ユニット405のうちの少なくとも1つは、所望の設計ルール確認を行うために実行すべき演算を含む。また、このデータ記憶ユニット405は、演算を行うための処理データと、各演算を行うために必要な処理データ部分を定義する関係データとを含む。例えば、ツール401を使用して、マイクロ回路設計のための設計ルール確認プロセスを行っている場合、データ記憶ユニット405のうちの少なくとも1つは、マイクロ回路のための描画層設計データおよび導出層設計データを含む。さらに、各演算の実行に必要な設計データの層に各演算を関連付ける関係データをも含む。そして、残りのデータ記憶ユニット405は、それぞれ、各演算の実行に必要な設計データ部分に各演算を関連付ける関係情報を格納する。図示の実施例では、マスタ演算ユニット403は、相互に接続されると共に、インタフェース111を介して複数のスレーブ演算ユニット407とも接続されている。各スレーブ演算ユニット407は、例えば、リモートスレーブコンピュータ115により実施可能である。また、各スレーブ演算ユニット407は、それ自体の専用ローカルメモリ記憶ユニット図示せずを有していてもよい。演算分散方法図5A~図5Cは、本発明の各種実施形態に従って、演算分散ツール401を使用して演算を分散する方法を示す。特に、これらの図は、マイクロ素子設計を分析するために使用される設計ルール確認プロセスのための演算を分散する方法を示す。しかし、図示の方法は、設計ルール確認プロセス以外の様々なタイプのソフトウェアアプリケーションプロセスのために、本発明の別の実施形態に係る様々な分散ツールと共に使用可能であると理解すべきである。例えば、本発明の各種実施態様を使用して、レイアウト対回路図LVS検証ソフトウェアアプリケーション、位相シフトマスクPSMソフトウェアアプリケーション、光学プロセス修正OPCソフトウェアアプリケーション、光学プロセスルール確認ORCソフトウェアアプリケーション、分解能向上技術RETソフトウェアアプリケーション、または、並列性を有する処理データを用いて並列性を有する演算を実行する他のソフトウェアアプリケーションを実行することができる。次に、図5Aを参照して、ステップ501において、各マスタ演算ユニット403は、演算スレッドを始動して、設計ルール確認プロセスの実証インスタンス化を行う。設計ルール確認プロセスは、例えば、Oregon、WilsonvilleのMentorGraphics社から入手可能なCALIBREソフトウェアアプリケーションを使用して実行可能である。以下にさらに詳述するように、マスタ演算ユニット403のうちの1つは、演算を他の従属マスタ演算ユニット403に割り当てる実行マスタ演算ユニット403として機能する。したがって、本発明の実施例の中には、実行マスタ演算ユニット403が、設計ルール確認プロセスの最初の実証化を開始する場合もある。そして、設計ルール確認プロセス、設計データ、および関係データに従って実行される特定の演算は、実行マスタ演算ユニット403により使用されるデータ記憶ユニット405に格納される。実行マスタ演算ユニット403が、あるバージョンの設計ルール確認プロセスを始動すると、各従属マスタ演算ユニット403における演算スレッド上で、あるバージョンの設計ルール確認プロセスが始動する。また、実行マスタ演算ユニット403は、最初に、従属マスタ演算ユニット403により使用されるデータ記憶ユニット405に関係データを提供する。次に、ステップ503において、実行マスタ演算ユニット403は、実行可能な次の独立演算セットを識別する。例えば、実行マスタ演算ユニット403は、図3に示すツリーなど、様々な演算の依存関係を記述するツリーを生成する。すると、実行マスタ演算ユニット403は、ツリーの各ノードを横断して、1そのノードにおける演算が、すでに実行されたかどうか、そして、2そのノードにおける演算が、未だ実行されていない他のノードにおける演算の実行に依存するかどうかを決定することができる。1つ以上の演算が実行されておらず、他の演算の実行を必要としない場合、その演算は、次の独立演算セットであると識別される。通常、独立演算セットは、単一の演算しか含まない。しかし、以下にさらに詳述するように、2つ以上の演算を、さらに効率的に一括実行可能な並行演算とすることができる。したがって、演算セットの中には、2つ以上の並行演算を含むものもある。また、ある例においては、設計データにおける衝突を生じることなく、2つ以上の非並行演算を連続的に実行可能なものもある。本発明の各種実施例では、これらの非並行演算を単一の演算セットに含めることもできる。実行のための次の独立演算セットが識別されると、ステップ505において、実行マスタ演算ユニット403は、利用可能な次のマスタ演算ユニット403上の演算スレッドに、識別された演算セットを提供する。通常、これは、従属マスタ演算ユニット403である。しかし、各従属マスタ演算ユニット403が、以前に割り当てられた演算セットの処理で既に占有されている場合、実行マスタ演算ユニット403は、識別された演算セットをそれ自体に割り当てる。そして、ステップ507において、識別された演算セットを受け取ったマスタ演算ユニット403は、識別された演算セットの実行に必要な設計データ部分を得る。実行マスタ演算ユニット403は、識別された演算セットをそれ自体に割り当てた場合、演算セットの実行に必要な設計データを既に有している。しかし、実行マスタ演算ユニット403が、識別された演算セットを従属マスタ演算ユニット403に割り当てた場合、従属マスタ演算ユニット403は、その関連するデータ記憶ユニット405から必要な設計データを取得検索する必要がある。したがって、従属マスタ演算ユニット403は、関係情報を使用して、設計情報のどの部分を取得する必要があるのかを決定する。例えば、演算セットが、下記の演算で構成されている場合、gate=diffANDpoly従属マスタ演算ユニット403は、関係情報を使用して、拡散描画層設計データおよびポリシリコン描画層設計データのコピーを取得する。しかし、演算セットが、下記の演算で構成されている場合、externalgate<1従属マスタ演算ユニット403は、ゲート導出層設計データしか得る必要がない。次に、ステップ509において、識別された演算セットを受け取ったマスタ演算ユニット403は、識別された演算セットを実行する。演算セットの実行に使用されるステップを図6に示す。まず、ステップ601において、マスタ演算ユニット403は、マスタデータ記憶ユニット405から取得された設計データ部分において並列セルを識別する。例えば、演算セットが下記の演算を含む場合、gate=diffANDpoly取得された拡散層設計データおよびポリシリコン層設計層は、2つ以上の並列セルの一部を含む。すなわち、拡散およびポリシリコン層設計データのある部分が、例えば、メモリレジスタ回路など、あるセルに含まれる拡散材料およびポリシリコン材料のポリゴンを表し、拡散およびポリシリコン層設計データの別の部分が、例えば、加算器回路など、別のセルに含まれる拡散材料およびポリシリコン材料のポリゴンを表す。ステップ603において、マスタ演算ユニット403は、演算セットのコピーを有する設計データセル部分を、利用可能なスレーブ演算ユニット407に実行用に提供する。本発明の実施例の中には、マスタ演算ユニット403が、識別された各セル部分を別のスレーブ演算ユニット407に提供する場合もある。しかし、本発明の他の実施例では、マスタ演算ユニット403が、演算セット自体を実行するために1つのセル部分を保持する場合もある。ステップ605において、マスタ演算ユニット403は、スレーブ演算ユニット407によって得られた実行結果を受け取ってコンパイルする。そして、割り当てられた演算セットを使用して、取得された設計データセル部分の全てが処理されるまで、ステップ601~605が繰り返される。その後、マスタ演算ユニット403は、コンパイルされた実行結果を実行マスタ演算ユニット403に与える。次に、図5Bに戻って、ステップ511において、識別された演算セットを受け取ったマスタ演算ユニット403は、演算セットを実行することによって得られた結果を、実行マスタ演算ユニット403に返す。そして、実行マスタ演算ユニット403は、そのデータ記憶ユニット405の処理データにその結果を付加する。その後、適切な設計データを使用して、各演算の実行が完了するまで、ステップ501~511が繰り返される。この様な事態で、設計ルール確認プロセスのための演算を、スレーブ演算ユニット407の間でより広範に分散することができ、さらに迅速かつ、より効率的な演算実行が可能となる。演算の予備実行ソフトウェアアプリケーションの中には、演算の実行に使用されるアルゴリズムが、その演算のために最適化されるものもある。例えば、下記の演算の実行に使用されるアルゴリズムは、externalmetal<1下記の演算の実行に使用されるアルゴリズムと全く異なっていてもよい。gate=diffANDpolyしかし、演算の中には、同一または類似のアルゴリズムを実行するものもがあってもよい。例えば、下記の演算すなわち、各金属構造が少なくとも0.5ミクロンの幅を有することを確認する演算の実行に使用されるアルゴリズムは、internalmetal<0.5下記の演算の実行に使用されるアルゴリズムと類似または同一であろう。externalmetal<1これらの演算は独立しているので、演算が同時に実行されると、さらに効率的に実行可能である。この様に、これらの演算は、並行演算である。Oregon、WilsonvilleのMentorGraphics社から入手可能なCALIBREソフトウェアアプリケーションなど、各種ソフトウェアアプリケーションが、並行演算が実際に同時に実行されることを保証することを意図して最適化されている。演算セットが識別された時にこの様な最適化が考慮されるように、各種実施態様では、並行演算を識別するために演算の予備実行を行ってもよい。例えば、CALIBREソフトウェアアプリケーションは、無意味な空の演算を削除せず、条件文を許容しないプログラム言語を使用しているので、本発明の各種実施態様では、まず、無意味な空の設計データすなわち、ヌル値を有する設計データを使用して、従来の線形順序で、このソフトウェアアプリケーションのための演算を実行してもよい。無意味な設計データを用いて、全ての演算を非常に迅速に実行する。そして、実際に演算を行った順序を使用して、実行マスタ演算ユニット403が演算セットの識別に使用する演算ツリーを生成することができる。すなわち、ヌル値を用いて実際に演算を行った順序によって、並行演算がグループ化される。そして、実行マスタ演算ユニット403により、並行演算を同じ演算セットにまとめることができる。結論したがって、上記の演算分散方法およびツールは、複数のマスタコンピュータの間、そして、実行のための1台以上のスレーブコンピュータの間で演算を分散するための信頼できる効率的な技術を提供する。しかし、本発明の各種実施形態において、上記の方法の1つ以上のステップを省略してもよいと理解すべきである。あるいは、本発明の実施形態の中には、マスタ演算ユニット、スレーブ演算ユニット、またはその両方ともが利用可能であるかどうかの検討を省略できる場合もある。例えば、この様な本発明の別の実施形態では、実行のために、識別された演算セットを、単に逐次的に割り当てることもできる。さらに、本発明の別の実施形態では、上記の方法のステップを再編成することもできる。例えば、実行マスタ演算ユニットは、実行すべき次の演算セットを識別する前に、利用可能な次のマスタ演算ユニットを識別してもよい。本発明の実施態様に関するさらに他の変型例は、当業者にとって明らかであろう。例えば、図1に示す動作環境は、1対N型の通信インタフェースを使用して、単一のマスタコンピュータ101をスレーブコンピュータ115に接続したものである。しかし、本発明の別の実施形態では、多数のマスタコンピュータ101を使用して、スレーブコンピュータ115に演算を分散してもよい。さらに、通信インタフェースは、あるスレーブコンピュータ115が別のスレーブコンピュータ115に演算を再分散できる、バス形式のインタフェースであってもよい。特に、1台以上の別のスレーブコンピュータに演算を再分散するように本発明の実施形態を実施するために、1台以上のスレーブコンピュータ115が制御機能を備えていてもよい。したがって、マスタコンピュータ101が、小規模セルグループに分割可能なスレーブコンピュータ115に多数のデータセルを分散する場合、スレーブコンピュータ115は、実行のためにセルの一部を別のスレーブコンピュータ115に割り当ててもよい。さらに、本発明の各種実施形態では、マルチ階層のマスタ/スレーブコンピュータを使用することもでき、ある階層のコンピュータが、第2の階層の1台以上のコンピュータに演算を分散し、そして、第2の階層のコンピュータが、第3の階層のコンピュータの間で演算を分散することもできる。さらに、本発明の実施例の中には、全てのスレーブコンピュータを省略する場合もある。本発明のこの様な実施態様では、各演算セットの機能は、マスタ演算ユニット403によって実行可能である。これらおよびその他の変型例は、当業者にとって明らかであろう。以上、好適かつ例示的な実施形態について本発明を説明した。この開示を考察すれば、当業者は、添付の特許請求の範囲の趣旨および範囲内で、その他数々の実施形態、変更、および変形を考え付くであろう。"