(57)【特許請求の範囲】
【請求項１】
集積回路レイアウト内への標準セルの自動挿入装置であって、
集積回路内に標準セルをレイアウトして初期レイアウトを生成する配置及びラウティングツールと、
前記初期レイアウト内に標準セルの問題点を修正するのに用いられるスペアセルの予め選択されたクラスタを分散配置するスペアセル分散配置手段とを含むことを特徴とする装置。
【請求項２】
前記初期レイアウトが複数の標準セルトラックを含み、前記スペアセル分散配置手段が、少なくとも１つの前記標準セルトラック内に、他の標準セルトラックに含まれるスペアセルへの接続を提供するための電気的に浮いた接続ポートを確立する縦方向ワイヤターミネータの予め選択されたグループを分散配置することを特徴とする請求項１に記載の装置。
【請求項３】
前記スペアセル分散配置手段が、第１グランドコネクタを前記標準セルの第１サイドに、第２グランドコネクタを前記標準セルの第２サイドへ配置し、前記配置及びラウティングツールによって行われるラウティングトラックのラウティングが、前記第１グランドコネクタと前記第２グランドコネクタとの間になされるようにするためのものであることを特徴とする請求項１に記載の装置。
【請求項４】
前記スペアセルのクラスタがスペアセルの複数のグループを含み、前記スペアセル分散配置手段が前記スペアセルのグループを標準セルの前記初期レイアウト内の予め定められた物理的な位置に分散配置するためのものであることを特徴とする請求項１に記載の装置。
【請求項５】
前記スペアセル分散配置手段が、スペアセルの前記予め選択されたクラスタを、前記集積回路上のスペアセルに対して使用可能なスペースに基づいて分散配置するためのものであることを特徴とする請求項１に記載の装置。
【請求項６】
前記スペアセル分散配置手段が、スペアセルの前記予め選択されたクラスタを、前記集積回路上の標準セルトラックの数に基づいて分散配置するためのものであることを特徴とする請求項１に記載の装置。
【請求項７】
前記スペアセル分散配置手段が、スペアセルの前記予め選択されたクラスタを、標準セルの前記初期レイアウト内の標準セルの数に基づいて選択するためのものであることを特徴とする請求項１に記載の装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に集積回路を設計するための電子的な設計自動化ツールに関する。より詳細には、本発明は、集積回路レイアウトの既存の標準セル領域内にスペアセルを分散配置することを可能とする方法及び電子的設計自動化ツールに関する。
【０００２】
【従来の技術】
超大規模集積回路（ＶＬＳＩ）は、電子的設計自動化ツール（ＥＤＡ）を用いて設計される。このツールは、キャド（ＣＡＤ）とも呼ばれている。通常、回路の設計は、ベリログ（Ｖｅｒｉｌｏｇ）やＶＨＤＬのようなハードウェア記述言語（ＨＤＬ）で回路を記述することから始められる。ＨＤＬによる記述は、コンピュータ言語形式で表されたステートメント（ｓｔａｔｅｍｅｎｔｓ）のセットであり、回路によって実行されるべき機能を規定する。
【０００３】
ＨＤＬによって記述された回路のシミュレーションを行うのに、ＨＤＬ回路シミュレータが用いられる。このＨＤＬ回路シミュレーションの結果に基づいて、ＨＤＬによる記述の修正がなされる。
【０００４】
ＨＤＬ回路シミュレータは、ＨＤＬにより記述された回路のシミュレーションを行うだけでなく、ネットリスト（ｎｅｔｌｉｓｔ）を生成するのにも用いられる。ネットリストは、ＨＤＬによって記述された回路機能を実現するのに必要な構成要素と構成要素間の接続を規定する。
【０００５】
ネットリストが生成された後、ネットリストを半導体回路レイアウトに変換するのに用いられる商業的に入手可能な“シリコンコンパイラ”（“配置及びラウティングツール（ｐｌａｃｅ  ａｎｄ  ｒｏｕｔｅ  ｔｏｏｌ）”とも呼ばれる）は数多くある。半導体回路レイアウトは、シリコンや他の半導体材料中の回路の物理的な実現について規定する。
【０００６】
半導体回路レイアウトは様々な機能領域に分けることができる。通常、大規模で特殊な関数は一つの機能領域に割り当てられる。このような大規模で特殊な関数と関連しないより小さなタスクは、通常、ランダムロジック領域と呼ばれる領域に於いて実現される。ランダムロジック領域では、標準セル（ｓｔａｎｄａｒｄ  ｃｅｌｌ）論理ゲートの選択を利用している。標準セルには、例えば、ＮＡＮＤゲート、フリップフロップ、マルチプレクサなどがある。これらのセルは、シリコン中に実現されたとき標準高さ（ｓｔａｎｄａｒｄ  ｈｅｉｇｈｔ）となるため、標準セルと呼ばれている。これによって、これらのセルを互いに揃えて配置し、標準セルトラック（ｓｔａｎｄａｒｄ  ｃｅｌｌ  ｔｒａｃｋｓ）を形成することができる。これらの標準セルトラックの間に信号ラウティングトラック（ｓｉｇｎａｌ  ｒｏｕｔｉｎｇ  ｔｒａｃｋｓ）を配置し、これらのラウティングトラックと標準セルとの間を金属で接続することによって、標準セルトラックの標準セルに特定のロジックを実行させることができる。
【０００７】
回路の配置及びラウティングが終了すると、様々な公知の技法を用いて半導体回路機能の検証がなされる。回路の検証によって半導体回路の機能上の問題点を知ることができる。標準セル領域（典型的には半導体回路のランダムロジック領域）に問題がある場合、問題点は標準セルトラックの端に標準セルを付け加えることによって解決される。追加された標準セルは、問題点を修正するように他の標準セルに接続することができる。
【０００８】
この方法の問題点は、追加された標準セルが標準セルトラックの端にあるため、追加された標準セルと元の標準セルとの間の信号線が長くなることである。信号線が長いと静電容量の問題が生じる。この方法の別の問題点は、配置及びラウティングツールによる追加標準セルと元の標準セルとの間の適切な信号経路の確立が非常に困難であるということである。
【０００９】
【発明が解決しようとする課題】
本発明の主な目的は、上述したような問題点を解決するため、集積回路レイアウト内に標準セルを自動的に挿入するための改善された装置を提供することである。
【００１０】
【課題を解決するための手段】
本発明は、集積回路の標準セル領域内にスペアセル（ｓｐａｒｅ  ｃｅｌｌｓ）を分散配置するための装置である。最初に、標準セルの初期レイアウトが、配置及びラウティングツールを汎用コンピュータで実行することによって生成される。その後、この初期レイアウトを処理するように、スペアセル分散配置メカニズム（ａ  ｓｐａｒｅ  ｃｅｌｌ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｍｅｃｈａｎｉｓｍ）が汎用コンピュータ上で実行されると同時に、命令ファイル（ａ  ｄｉｒｅｃｔｉｖｅ  ｆｉｌｅ）を処理する。スペアセル分散配置メカニズムは、予め定められた基準（ｃｒｉｔｅｒｉａ）に従って、標準セルの初期レイアウト内に、スペアセルの予め選択されたグループを分散配置する。
【００１１】
本発明の方法は、集積回路に於ける標準セルの初期レイアウトを生成する過程と、予め定められた基準に従って予め選択されたスペアセルのグループを標準セルの初期レイアウト内に分散配置する過程とを含む。
【００１２】
本発明の方法及び装置で用いられる上述した予め定められた基準には、スペアセルトラックの数、スペアセルを付け加える前のブロック内のセルの数、付け加えられるスペアセルに対して使用可能な面積、挿入されるスペアセルの消費電力、及び挿入されるスペアセルの論理機能などが含まれる。
【００１３】
本発明によって、スペア標準セルは、集積回路の標準セル領域内に概ね最適に分散配置される。更に、縦方向のラウティングを容易にし信号経路がより短くなるように、スペアセル分散配置メカニズムによって、縦方向ワイヤターミネータ（ｖｅｒｔｉｃａｌ  ｗｉｒｅ  ｔｅｒｍｉｎａｔｏｒｓ）が標準セル領域内に組み込まれる。更に、スペアセル分散配置メカニズムは、グランドライン及び電源ラインを追加するべく、グランド及び電源コネクタを標準セル領域内に組み込む。挿入されたスペアセルの入力は、グランドラインまたは電源ラインに接続されるが、後に標準セル領域内のロジックの欠陥を修正するときには、再度ラウティングされる。即ち、スペアセルの入力は、スペアセル領域内の様々な信号トラック（ｓｉｇｎａｌ  ｔｒａｃｋｓ）に接続することができる。ラウティングし直すときに、配置及びラウティングツールによって、グランド及び電源ラインを信号トラックに変換してもよい。
【００１４】
セルを標準セル領域全体に渡って分散することによって、本発明では、挿入されるスペアセルが標準セルトラックの端に固まって配置されることにより生じていた従来技術の問題点を避けることができる。即ち、本発明では、ラウティングトラック上の静電容量が過大になることから生じる問題を回避することが出来る。また、本発明では、配置及びラウティングツールのラウティング選択範囲が広がっており、集積回路の標準セル領域内の回路要素のラウティングがより容易になっている。
【００１５】
本発明の特徴及び目的がよりよく理解されるように、添付の図面を参照しつつ、本発明を実施例に基づいて説明する。尚、図面全体を通して、対応する部分には同じ参照符号を付した。
【００１６】
【発明の実施の形態】
図１の左側に本発明の一実施例に基づいた処理過程を示す。最初の処理過程では、標準セルの初期レイアウトが生成される（ブロック２０）。次に、そのレイアウト内にスペア標準セルが分散配置される（ブロック２２）。従来技術に於ける対応する過程では、スペア標準セルは標準セルトラックの端に挿入されていた。上述したように、従来技術の方法では数々の問題が生じる。後述するように、これらの問題は、本発明ではスペア標準セルを標準セルの初期レイアウト内に分散配置することによって避けることができる。注意すべきことは、初期レイアウトが決まる前にスペアセルを集積回路の標準セル領域に分散配置させることはできないということである。なぜなら、使用可能なスペアセルの数は、標準セルトラックの数、様々な標準セルトラックの長さなどの初期レイアウトパラメータから導出されるからである。
【００１７】
次の過程では、標準セルの最終的なレイアウトが生成される（ブロック２４）。その後に、回路のラウティングがなされる（ブロック２６）。即ち、標準セル領域の様々なセルの間の電気的な接続がなされる。
【００１８】
次の過程では、回路機能の検証がなされる（ブロック２８）。回路の論理機能に問題がある場合は、問題点が修正されるようにスペアセルが接続される（ブロック３０）。
【００１９】
図１の左側に示されている処理過程は、それを実行するための対応する装置を参照することによってよりよく理解されよう。その装置を図１の右側に示す。標準セルの初期レイアウトを含む回路レイアウト４６を生成するため、商業的に入手可能な配置及びラウティングツール４０が用いられている。従来技術に従って、配置及びラウティングツール４０は、ネットリスト４２とパラメータファイル４４とを受け取る。ネットリスト４２は回路を規定し、パラメータファイル４４は、例えば、使用可能な標準セルトラック数、ラウティングパラメータ（ｒｏｕｔｉｎｇ  ｐａｒａｍｅｔｅｒｓ）、入力／出力ポート情報、ブロックの基板に占める面積（フットプリント）などの標準セル領域の許容可能な属性を規定する。
【００２０】
回路レイアウト４６は、集積回路の様々な位置とそれらの位置に於ける論理要素（ｌｏｇｉｃａｌ  ｅｌｅｍｅｎｔｓ）を規定する。より詳細に述べると、論理要素を実現するための拡散領域、ポリシリコン領域、金属領域などの物理要素を規定する。
【００２１】
回路レイアウト４６は、本発明のスペアセル分散配置メカニズム４８へ渡される。スペアセル分散配置メカニズム４８は、第２入力として命令ファイル５２を受け取る。命令ファイル５２は、マニュアルで生成しても、命令ファイルジェネレータ５０によって生成してもよい。後述するように、スペアセル分散配置メカニズム４８は、命令ファイルに示された指示に従って、配置及びラウティングツール４０から受け取った物理的なレイアウト（より詳細には標準セルレイアウト）を変更する。この処理の結果、スペア標準セルが半導体回路の標準セル領域内に最適に配置される。更に、分散配置メカニズム４８は、縦方向のラウティングを容易にし、標準セル領域内の経路がより短くなるように、縦方向ワイヤターミネータを生成する。更に、分散配置メカニズム４８は、信号トラックを追加してラウティングの選択範囲を広げるため、標準セル領域内にグランド及び電源コネクタを挿入する。
【００２２】
スペアセル分散配置メカニズム４８による処理が終わると、残りの処理は従来と同様に行うことができる。詳述すると、スペアセルが分散配置された改訂された回路レイアウト５４は、配置及びラウティングツール４０へ送られ、そこで最適化処理がなされ最終的なレイアウトが生成される。この最終レイアウトは更に配置及びラウティングツール４０によって処理され、回路内の経路の接続がなされる。その後、レイアウト／設計比較ツール（ｌａｙｏｕｔ  ｖｅｒｓｕｓ  ｓｃｈｅｍａｔｉｃ  ｔｏｏｌ）５６とロジック検証器（ａ  ｌｏｇｉｃ  ｖｅｒｉｆｉｅｒ）５８とを用いることによって、回路機能の検証が行われる。このレイアウト／設計比較ツール５６は商業的に入手可能な装置であり、回路レイアウトとネットリストという２つの回路表現形態が厳密に対応していることを保証するべくこれらの比較を行うものである。厳密な対応が得られると、ネットリストは商業的に入手可能なロジック検証器５８に渡され、回路ロジックのテストが行われる。スペア標準セル、縦方向ワイヤターミネータ、グランドコネクタなどがラウティングされた回路内に挿入されるとき、同じ要素がネットリスト内に挿入されるように、スペアセル分散配置メカニズム４８に、ネットリストを改訂するための命令セットを含ませてもよい。ネットリストの改訂は、所望に応じてマニュアルで行うこともできる。
【００２３】
ロジック検証器５８を用いて回路機能の検証をした後、ロジックの問題点を修正するべく、必要に応じてスペアセルの接続を行う。この処理がなされるように、配置及びラウティングツール４０に一連のプレースメント命令（ｐｌａｃｅｍｅｎｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ）６０を与えてもよい。別の方法として、本分野では公知であるマニュアル操作によってスペアセルを接続してもよい。
【００２４】
図２は、本発明の方法を実行するのに必要とされる要素を組み込んだ汎用コンピュータを例示している。この図に示されている中央演算装置（ＣＰＵ）９２は、システムバス９４を介して入力／出力デバイス９６と情報のやり取りをする。入力／出力デバイス９６には、キーボード、モニタ、マウス、プリンタ、及び他の本分野で公知の周辺装置が含まれる。メモリ９０は、システムバス９４を介してＣＰＵ９２と情報交換する。ＣＰＵ９２によって処理されるプログラム及びデータ４０乃至６０は、このメモリに格納される。図２に示されているプログラム及びデータ４０乃至６０は、図１に示されているプログラム及びデータに対応している。汎用コンピュータに於けるプログラム及びデータの一般的な処理は従来に於いても知られている。従って、本発明に従って処理される特有のプログラム及びデータに重点を於いて以下に説明する。
【００２５】
図１を参照しつつ行った上記の説明に於いても述べたように、本発明は、スペア標準セルが分散配置された改訂された回路レイアウト５４を得ることを主な目的としている。改訂された回路レイアウト５４には、後に説明するように、縦方向ワイヤターミネータ及びグランドコネクタも含まれる。
【００２６】
改訂された回路レイアウト５４は、本発明のスペアセル分散配置メカニズム４８によって得られる。スペアセル分散配置メカニズム４８は、回路レイアウト４６と命令ファイル５２を処理する。
【００２７】
図３は、回路レイアウト４６の一部を示したものである。より詳細には、この図は回路レイアウト４６の標準セル領域を簡略化して図示したものである。回路レイアウトに対応したグリッドという概念を示すため、図３にはＸ軸６２とＹ軸６４が示されている。このグリッドは、回路レイアウト内の個々のセル６５の物理的な位置を規定するのに用いることができる。個々のセル６５は、標準セルトラック６６Ａ、６６Ｂ、６６Ｃ、及び６６Ｄを形成するように整合配置されている。また、ラウティングトラック６８Ａ、６８Ｂ、６８Ｃが標準セルトラック６６の間に設けられている。
【００２８】
図４は、図３の一部、即ち、標準セルトラック６６Ｂの一部と対応するラウティングトラック６８Ａ及び６８Ｂの一部をより詳細に表したものである。標準セルトラック６６Ｂは、ＡＮＤゲート７０、インバータ７２、ＮＯＲゲート７４、ＮＡＮＤゲート７６、及び加算器７８を含む論理要素のグループを含んでいる。標準セルトラック６６Ｂの論理要素は、それらの一般的なシンボルで示されているが、実際のレイアウトでは、通常これらの要素は、互いにすぐ隣りに配置され、標準高さを有し、種々の半導体領域とインターコネクト（ｉｎｔｅｒｃｏｎｎｅｃｔｓ）のセットとして実現されることを理解されたい。
【００２９】
各ラウティングトラック６８は、電源バス８０、信号トラック８４Ａ、８４Ｂ、．．．、８４Ｎ及びグランドバス８２を含む。理解されるように、これらの要素は同じ金属面上にある必要はない。即ち、異なる金属層上のトラックにアクセスするようにバイアスを用いることもできる。
【００３０】
図４には、信号トラック８４Ａからインバータ７２へ信号を伝える信号トラックコネクタ８６も示されている。インバータ７２の出力は信号トラックコネクタ８８に加えられ、この信号トラックコネクタ８８は信号トラック８４Ｃに接続され終端されている。このような接続を用いて、信号をある論理要素から別の論理要素へ伝えることができる。
【００３１】
図５は、本発明に従って用いることのできる命令ファイル５２の一実施例に関連した処理を表している。命令ファイル５２に関連する処理の最初の過程では、既存の標準セルレイアウト４６内に組み込むことのできる使用可能なスペアセルを決定する（ブロック１００）。後述するように、これらの使用可能なスペアセルは、グループ単位で配置される。次の過程では、セルの接続のセットを宣言する（ブロック１０２）。即ち、新たなスペアセルと既存の標準セルとの間を接続するのに、配置及びラウティングツール４０（図１）が使用することのできる接続点またはポートのセットを宣言する。最後の過程では、これらのセル及び接続を既存のレイアウト内に分散配置する（ブロック１０４）。
【００３２】
命令ファイル５２はマニュアルで生成することも、命令ファイルジェネレータ５０（図１）によって生成することもできる。命令ファイルジェネレータ５０は、命令ファイル５２を確立するのに使用される予め定められた基準が組み込まれたコンピュータプログラムである。命令ファイル５２を確立するための予め定められた基準には、様々な事項が含まれ得る。例えば、予め定められた基準に、スペアセルに対して使用可能なスペースを含ませてもよい。即ち、配置及びラウティングツール４０が回路レイアウト４６を生成した後、追加されるセルに対し使用可能なスペースがどれだけあるか判定するようにするようにしてもよい。例えば、図３では、標準セルトラック６６Ｂ及び６６Ｃは、追加セルをいくつか受け入れることができるが、標準セルトラック６６Ａ及び６６Ｄは、既にＸ軸６２の右端いっぱいまで伸びているため追加セルを受け入れることはできない。
【００３３】
予め定められた基準の一部として用いることのできる別の事項に、半導体の標準セル領域内の標準セルトラック６６の数がある。後述するように、標準セルトラック６６の数を、追加スペアセルの配置技法を得るのに用いることができる。関連する考慮すべき事項として、標準セル領域内の標準セルの数がある。
【００３４】
上述したように、命令ファイル５０は使用可能なスペアセルを規定する。予め定められた基準を用いて、これらの使用可能なスペアセルを決定することができる。使用可能なスペアセルの決定に於ける予め定められた基準として、例えば、論理要素（例えばＮＡＮＤゲートなど）の使用頻度を用いてもよい。命令ファイルジェネレータ５０は、予め定められた基準として、標準セルの電力消費に基づいて動作することもできる。例えば、標準セル領域内に分散配置するのに、低消費電力セルを選択することができる。
【００３５】
上述したように、命令ファイル５２は、セルを既存のレイアウト内に“分散配置（ｄｉｓｔｒｉｂｕｔｅ）”する。この“分散配置”という用語は、標準セルが単に既存の標準セルトラックの端に配置されるわけではないということを意味している。挿入されるスペア標準セルは、標準セルトラック６６内の様々な分散された位置に配置される。
【００３６】
命令ファイル５２に分散配置手順を確立するため命令ファイルジェネレータ５０が使用し得る別の予め定められた基準として、スペア標準セルの挿入に対して使用することのできる標準セルトラック６６内の予め定められた位置を確立することがある。このような予め定められた位置は、例えば、トラック６６の左側（座標値Ｘ＝０）、トラック６６の長さの４分の１の位置、トラック６６の長さの２分の１の位置、及びトラック６６の長さの４分の３の位置などである。
【００３７】
命令ファイルジェネレータ５０によって特定され、命令ファイル５２内に組み込まれる分散配置の基準は、縦方向のラウティングに対する考慮を含んでもよい。即ち、配置及びラウティングツールによって縦方向の接続がなされ、それによって信号経路が短くなるように、終端デバイス（ｔｅｒｍｉｎａｔｉｎｇ  ｄｅｖｉｃｅｓ）を標準セル領域内に分散配置することができる。
【００３８】
スペアセルを分散配置するのに使用することのできる別の予め定められた基準に、クラスタリング（ｃｌｕｓｔｅｒｉｎｇ）がある。即ち、標準セルのグループのクラスタ（集まり）を選択し、そのクラスタを標準セル領域内に挿入するようにしてもよい。より詳細に述べると、クラスタは、セル挿入処理に於いて、標準セルトラックの様々なセットに繰り返し挿入され得る。このような処理及び他の予め定められた基準は、命令ファイル５２の具体的な例を含む以下の説明によってより良く理解されるだろう。
【００３９】
図６は、本発明のスペアセル分散配置メカニズム４８による命令ファイル５２の処理を表すものである。第１過程では、グループ情報の処理がなされる（ブロック１１０）。後述するように、グループ情報は、回路レイアウトの標準セル領域内に挿入される様々な標準セルグループの特性を表す。グループ情報は、挿入される標準セルに限定される必要はなく、以下に示すように、縦方向ワイヤターミネータ、グランドコネクタ、及び電源コネクタを含んでいてもよい。
【００４０】
次の過程では、セル情報の処理がなされる（ブロック１１２）。セル情報の処理は、スペアセルに対する入力及び出力ポートの特定を含む。セル情報の処理は、縦方向ワイヤターミネータ、グランドコネクタ、及び電源コネクタに対するポートの特定も含む。
【００４１】
スペアセル分散配置メカニズム４８に関連する最後の過程では、挿入情報（ｉｎｓｅｒｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）の処理がなされる（ブロック１１４）。挿入情報は、既存の回路レイアウト内へのスペア標準セルの実際の挿入につながる一連の命令（ｄｉｒｅｃｔｉｖｅｓ）を生成する。この処理には、トラックのセットに挿入するためのクラスタを選択する過程が含まれる（ブロック１１５）。次の過程では、クラスタ内の各セルグループに対し、グリッド位置の同定がなされる（ブロック１１６）。図３からもわかるように、Ｘ軸位置とＹ軸位置を用いて、特定のセルの位置を特定することができる。
【００４２】
その次の過程では、同定されたグリッド位置に新たなセルグループが挿入される（ブロック１１８）。挿入情報処理の最後の過程では、残りのセルに対する位置の繰り上げがなされる（ブロック１２０）。例えば、図４に於いて、新たなセルがインバータ７２とＮＯＲゲート７４との間に挿入されるとすると、ＮＯＲゲート７４、ＮＡＮＤゲート７６及び加算器７８に対するＸ軸位置が、それに従って増加される。別の方法として、新たなセルを既存のセルの上に重ねて置き、その後、配置及びラウティングツールによって全てのセルの位置決めを再度行うようにすることもできる。
【００４３】
本発明の概念をより明確に示するため、本発明に従って用いられる命令ファイル５２について説明する。命令ファイルは、図７を参照することによってよりよく理解できる。図７には、標準セルトラック６６Ａ、６６Ｂ、及び６６Ｃが示されている。標準セルトラック６６には、挿入されたスペア標準セル１２２が含まれている。標準セルトラック６６Ｂは、１または複数の縦方向ワイヤターミネータ１２４も含んでいる。縦方向ワイヤターミネータ１２４は、標準セルトラック６６Ｂ内に、電気的に浮いた状態の接続ポートを確立している。ラウティング時、配置及びラウティングツールは、縦方向ワイヤターミネータ１２４Ａとセル１２２Ｂとの間に縦方向接続１２６を生成する。その後、縦方向接続１２６と選択された信号トラック（図７では図を見やすくするため図示されていないが、図４に於いて符号８４によって示されている）との間に電気的な接続がなされる。即ち、縦方向ワイヤ１２６を使って、セル１２２Ｂを、他のセルにつながった他の任意のトラックと接続することができる。この特徴によって、配置及びラウティングツールに広い選択範囲が与えられ、それによって信号経路をより短くすることができる。
【００４４】
図７には、本発明の別の特徴、即ち電源及びグランドコネクタも示されている。この図では、２つのグランドコネクタ１３０Ａ及び１３０Ｂが、標準セルトラック６６Ｃに挿入されている。これらのデバイスをこれらの位置に配置することによって、配置及びラウティングツールによって挿入されたラウティングトラック１３２が生成される。ラウティングトラック１３２は、図７に示されているように、挿入されたスペアセル１２２の入力の結線をするのに用いることができる。後に、スペアセル１２２が他の標準セルとの接続を必要とする場合、配置及びラウティングツールは、従来技術の技法に従ってそのような接続を確立する。
【００４５】
図７には、スペアターミネータの使用についても示されている。スペアターミネータ１４０Ａ及び１４０Ｂは、ラウティングトラック６６Ａの両端に配置されている。後述するように、これにより、配置及びラウティングツールによって信号トラック１４２が追加生成される。この追加された信号トラックを使用して、回路のラウティングをより容易にすることができる。
【００４６】
上述したことは、以下に示す命令ファイル５２の一例を参照することによってよりよく理解される。この命令ファイル５２の最初の部分は、図６のブロック１１０に従って、スペアセル分散配置メカニズム４８によって処理されるグループ情報に関する。
【００４７】
(BLOCK-INFO
(GROUP-INFO
(*Block A*)
(group-cell-info sc a 1 snd03c)
(group-cell-info sc b 1 snr03c)
(group-cell-info sc c 1 san03c)
(group-cell-info sc d 1 sor03c)
(group-cell-info sc e 1 xincmosf)
(group-cell-info sc f 1 sin00c)
(group-cell-info sc g 1 saoi21c)
(group-cell-info sc h 1 soai21c)
(group-cell-info sc i 1 sin00c)
(*Block B*)
(group-cell-info st ivss1 1 spar vss con)
(group-cell-info st ivss2 1 spar vss con)
(group-cell-info st ivss3 1 spar vss con)
(group-cell-info st ivcc1 1 spar vss con)
(group-cell-info st ivcc2 1 spar vss con)
(group-cell-info st ivcc3 1 spar vss con)
(*Block C*)
(group-cell-info st oa 1 spar terminator)
(group-cell-info st ob 1 spar terminator)
(group-cell-info st oc 1 spar terminator)
(group-cell-info st od 1 spar terminator)
(group-cell-info st oe 1 spar terminator)
(group-cell-info st of 1 spar terminator)
(group-cell-info st og 1 spar terminator)
(group-cell-info st oh 1 spar terminator)
(group-cell-info st oi 1 spar terminator)
(*Block D*)
(group-cell-info st row1 1 spar terminator)
(group-cell-info st row2 1 spar terminator)
(group-cell-info st row3 1 spar terminator)
(group-cell-info st row4 1 spar terminator)
(group-cell-info st row5 1 spar terminator)
(group-cell-info st row6 1 spar terminator)
(group-cell-info st row7 1 spar terminator))
【００４８】
この命令ファイルのブロックＡ（Block A）は、標準セルグループのセットsc a乃至sc iを規定している。説明を簡略化するため、各グループは要素を一つしか含んでいない。このことは、各ラインに於いて“１”として示されている。要素を一つだけではなく、３個含むように規定されたグループは、例えば“(group-cell-info sc_a 3 sndo3c sinoob snd03d)”のようになる。
【００４９】
各ラインの最後の項は、集積回路の標準セル領域に挿入される標準セル要素である。例えば、ブロックＡの最初のラインでは、標準セル要素は“snd03c”であり、これは３入力ＮＡＮＤゲートを示す。本発明を説明するという目的に於いては、セルの各タイプの同定は必要ではない。本発明に関連して用いられる配置及びラウティングツール、ロジックシンセサイザまたは他の電子的設計自動化ツールは、規定するセルのタイプを同定するのに、セルのライブラリ（ｌｉｂｒａｒｙ）を使用することができる。
【００５０】
ブロックＢは、グランド及び電源コネクタst_ivss1乃至st_ivcc3を規定している。各グループはコネクタを一つ含む。例えば、st_ivss1は、コネクタspar_vss_conを含んでいる。図７を参照して上述したように、追加トラック１３２のラウティングが行われるように、グランド及び電源コネクタを用いることができる。その後、挿入されたスペアセルの出力を追加トラック１３２に接続することができる。
【００５１】
ブロックＣは、縦方向ワイヤターミネータのセットst_oa乃至st_oiを規定している。各グループはターミネータを一つ含んでいる。ターミネータは、spar_terminatorとして同定される。図７に関連して説明したように、縦方向ワイヤターミネータは、集積回路の標準セル領域に於いて縦方向ラウティング経路１２６が形成されるようにするのに用いられる。
【００５２】
ブロックＤは、配置及びラウティングツールが標準セル領域内に横方向の信号トラックを追加生成するようにするのに用いられるステートメント（ｓｔａｔｅｍｅｎｔｓ）のセットである。追加トラックが挿入されたスペアセルの入力を接地するのに用いられるブロックＢの場合と異なり、ここで追加されるトラックは、概ね信号のラウティングに用いられる。この処理については後に説明する。
【００５３】
理解されるように、本発明によると、縦方向及び横方向ラウティングトラックを追加生成するための技術が提供される。縦方向トラックはブロックＣで規定されるスペアターミネータに関連して提供され、一方横方向トラックはブロックＤで規定されるスペアターミネータに関連して提供される。このような特徴によって、その後配置及びラウティングツールによって行われるラウティング処理がより簡単になっている。
【００５４】
次に続くブロック、即ちブロックＥ乃至Ｈのコードは、図６のブロック１１２に於いてスペアセル分散配置メカニズム４８によって処理されるセル情報に対応している。一般に、セル情報は、特定の入力または出力ポート名を標準セル領域内に挿入されるアイテムに割り当てるのに用いられる。配置及びラウティングツールは、その後、特定されたポート名を用いて適切な接続を行うことができる。
【００５５】
(CELL-INFO
(*Block E*)
(cell-info snd03c sc a 140 4 i1 sn i1 i2 sn i1 i3 sn i1 out sn oa)
(cell-info snr03c sc b 196 4 i1 sn i1 i2 sn i1 i3 sn i1 out sn ob)
(cell-info san03c sc c 168 4 i1 sn i1 i2 sn i1 i3 sn i1 out sn oc)
(cell-info sor03c sc d 168 4 i1 sn i1 i2 sn i1 i3 sn i1 out sn od)
(cell-info xincmosf sc e 168 2 i1 sn i4 out sn oe)
(cell-info sin00c   sc f  56 2 i1 sn i4 out sn of)
(cell-info saoi21c  sc g 168 4 ina1 sn i1 ina2 sn i1 inb1 sn i1 out sn og)
(cell-info soai21c  sc h 140 4 ina1 sn i1 ina2 sn i1 inb1 sn i1 out sn oh)
(cell-info sin00c sc i  56 2 i1 sn i4 out sn oi)
(*Block F*)
(cell-info spar vss con st ivss1 28 1 out sn i1)
(cell-info spar vss con st ivss2 28 1 out sn i2)
(cell-info spar vss con st ivss3 28 1 out sn i3)
(cell-info spar vcc con st ivcc1 28 1 out sn i4)
(cell-info spar vcc con st ivcc2 28 1 out sn i5)
(cell-info spar vcc con st ivcc3 28 1 out sn i6)
(*Block G*)
(cell-info spar terminator st oa 28 1 in sn oa)
(cell-info spar terminator st ob 28 1 in sn ob)
(cell-info spar terminator st oc 28 1 in sn oc)
(cell-info spar terminator st od 28 1 in sn od)
(cell-info spar terminator st oe 28 1 in sn oe)
(cell-info spar terminator st of 28 1 in sn of)
(cell-info spar terminator st og 28 1 in sn og)
(cell-info spar terminator st oh 28 1 in sn oh)
(cell-info spar terminator st oi 28 1 in sn oi)
(*Block H*)
(cell-info spar terminator st row1 28 1 in sn r1)
(cell-info spar terminator st row2 28 1 in sn r2)
(cell-info spar terminator st row3 28 1 in sn r3)
(cell-info spar terminator st row4 28 1 in sn r4)
(cell-info spar terminator st row5 28 1 in sn r5)
(cell-info spar terminator st row6 28 1 in sn r6)
(cell-info spar terminator st row7 28 1 in sn r7))
【００５６】
ブロックＥの最初のラインには、挿入されるべき標準セル（“snd03c”）とそのグループ（“sc_a”）が示されている。また、数値（１４０）は、１０で除算されることによってセルの幅をミクロン単位で表す。更に“４”という数字は、このセルに関連して４つのポートがあることを示している。３つの入力ポートi1、i2、及びi3は、共通の電気接続またはネットsn_i1を有する。この共通電気接続のため、それらは、配置及びラウティングツールにより共通の信号トラックに接続される。出力ポートは、sn_oaとして同定される。ブロックＥの残りのラインも同じフォーマットである。
【００５７】
ブロックＦのコードは、電源及びグランドコネクタのポートを記述している。このコードはブロックＥと同じ形式である。同様に、ブロックＧでは縦方向ワイヤターミネータに対するポートが記述され、ブロックＨではブロックＤのターミネータに対し割り当てられたポートが記述されている。
【００５８】
残りのコードブロックは、集積回路の標準セル領域内への実際のセルの挿入処理に関する。上述したコードブロックは使用可能なセルを効果的に規定し宣言している。以下のコードを用いて、使用可能なセルの実際の配置がなされる。
【００５９】
(INSERT-INFO
(*Block I*)
(insert A 1 sc a 1 0.250)
(insert A 1 sc b 1 0.250)
(insert A 1 sc e 1 0.500)
(insert A 1 st ivcc1 1 0.500)
(insert A 1 sc f 1 0.500)
(insert A 1 sc c 1 0.750)
(insert A 1 sc d 1 0.750)
(insert A 1 st ivss1 1 L)
(insert A 1 st ivss1 1 0.750)
(insert A 1 st row1 1 L)
(insert A 1 st row1 1 R)
(*Block J*)
(insert A 2 sc a 1 0.250)
(insert A 2 st oa 2 0.250)
(insert A 2 sc c 2 0.250)
(insert A 2 sc e 1 0.500)
(insert A 2 st ivcc1 1 0.500)
(insert A 2 sc f 2 0.500)
(insert A 2 sc b 1 0.750)
(insert A 2 st ob 2 0.750)
(insert A 2 sc d 2 0.750)
(insert A 2 st ivss1 1 L)
(insert A 2 st ivss1 1 0.750)
(*Block K*)
(insert A 3 sc a 1 0.250)
(insert A 3 st oa 3 0.250)
(insert A 3 sc c 3 0.250)
(insert A 3 sc e 1 0.500)
(insert A 3 st ivcc1 1 0.500)
(insert A 3 sc f 3 0.500)
(insert A 3 sc b 1 0.750)
(insert A 3 st ob 3 0.750)
(insert A 3 sc d 3 0.750)
(insert A 3 st ivss1 1 L)
(insert A 3 st ivss1 1 0.750)
(*Block L*)
(insert A 4 sc a 2 0.250)
(insert A 4 st oa 4 0.250)
(insert A 4 sc c 3 0.250)
(insert A 4 sc e 2 0.500)
(insert A 4 st ivcc1 2 0.500)
(insert A 4 sc f 3 0.500)
(insert A 4 sc b 2 0.750)
(insert A 4 st ob 4 0.750)
(insert A 4 sc d 3 0.750)
(insert A 4 st ivss1 1 L)
(insert A 4 st ivss1 1 0.750)
(*Block M*)
(insert A 5 sc a 2 0.250)
(insert A 5 st oa 5 0.250)
(insert A 5 sc b 2 0.750)
(insert A 5 st ob 5 0.750)
(insert A 5 sc e 3 0.250)
(insert A 5 st ivcc1 3 0.250)
(insert A 5 sc f 3 0.750)
(insert A 5 sc c 4 0.250)
(insert A 5 sc d 4 0.750)
(insert A 5 st ivss1 1 L)
(insert A 5 st ivss1 1 0.750)
(*Block N*)
(insert A 6 sc a 2 0.250)
(insert A 6 st oa 6 0.250)
(insert A 6 sc b 2 0.750)
(insert A 6 st ob 6 0.750)
(insert A 6 sc e 3 0.500)
(insert A 6 st ivcc1 3 0.500)
(insert A 6 sc f 4 0.500)
(insert A 6 sc c 5 0.250)
(insert A 6 sc d 5 0.750)
(insert A 6 st ivss1 1 L)
(insert A 6 st ivss1 1 0.750)
(*Block O*)
(insert A 7 sc a 2 0.250)
(insert A 7 st oa 7 0.250)
(insert A 7 sc b 2 0.750)
(insert A 7 st ob 7 0.750)
(insert A 7 sc e 4 0.250)
(insert A 7 st ivcc1 4 0.250)
(insert A 7 sc f 4 0.750)
(insert A 7 sc c 6 0.250)
(insert A 7 sc d 6 0.750)
(insert A 7 st ivss1 1 L)
(insert A 7 st ivss1 1 0.750)
(*Block P*)
(insert B 1 sc a 1 0.250)
(insert B 1 sc b 1 0.250)
(insert B 1 sc f 1 0.500)
(insert B 1 st ivcc1 1 0.500)
(insert B 1 sc g 1 0.750)
(insert B 1 sc h 1 0.750)
(insert B 1 st ivss1 1 L)
(insert B 1 st ivss1 1 0.750)
(*Block Q*)
(insert B 2 sc a 1 0.250)
(insert B 2 st oa 2 0.250)
(insert B 2 sc b 2 0.250)
(insert B 2 sc f 2 0.500)
(insert B 2 st ivcc1 2 0.500)
(insert B 2 sc g 1 0.750)
(insert B 2 st og 2 0.750)
(insert B 2 sc h 2 0.750)
(insert B 2 st ivss1 1 L)
(insert B 2 st ivss1 1 0.750)
(*Block R*)
(insert B 3 sc a 1 0.250)
(insert B 3 st oa 3 0.250)
(insert B 3 sc b 3 0.250)
(insert B 3 sc f 3 0.500)
(insert B 3 st ivcc1 3 0.500)
(insert B 3 sc g 1 0.750)
(insert B 3 st og 3 0.750)
(insert B 3 sc h 3 0.750)
(insert B 3 st ivss1 1 L)
(insert B 3 st ivss1 1 0.750)
(*Block S*)
(insert B 4 sc a 2 0.250)
(insert B 4 st oa 4 0.250)
(insert B 4 sc b 3 0.250)
(insert B 4 sc f 3 0.500)
(insert B 4 st ivcc1 3 0.500)
(insert B 4 sc g 2 0.750)
(insert B 4 st og 4 0.750)
(insert B 4 sc h 3 0.750)
(insert B 4 st ivss1 1 L)
(insert B 4 st ivss1 1 0.750)
(*Block T*)
(insert B 5 sc a 2 0.250)
(insert B 5 st oa 5 0.250)
(insert B 5 sc b 4 0.250)
(insert B 5 sc f 3 0.500)
(insert B 5 st ivcc1 3 0.500)
(insert B 5 sc g 4 0.750)
(insert B 5 st og 1 0.750)
(insert B 5 sc h 2 0.750)
(insert B 5 st ivss1 1 L)
(insert B 5 st ivss1 1 0.750)
(*Block U*)
(insert B 6 sc a 2 0.250)
(insert B 6 st oa 6 0.250)
(insert B 6 sc b 5 0.250)
(insert B 6 sc f 4 0.500)
(insert B 6 st ivcc1 4 0.500)
(insert B 6 sc g 2 0.750)
(insert B 6 st og 6 0.750)
(insert B 6 sc h 5 0.750)
(insert B 6 st ivss1 1 L)
(insert B 6 st ivss1 1 0.750)
(*Block V*)
(insert B 7 sc a 2 0.250)
(insert B 7 st oa 7 0.250)
(insert B 7 sc b 6 0.250)
(insert B 7 sc f 4 0.500)
(insert B 7 st ivcc1 4 0.500)
(insert B 7 sc g 2 0.750)
(insert B 7 st og 7 0.750)
(insert B 7 sc h 6 0.750)
(insert B 7 st ivss1 1 L)
(insert B 7 st ivss1 1 0.750)
(*Block W*)
(insert C 1 sc a 1 0.250)
(insert C 1 sc b 1 0.750)
(insert C 1 sc f 1 0.500)
(insert C 1 st ivcc1 1 0.500)
(insert C 1 sc i 1 0.500)
(insert C 1 st ivss1 1 L)
(insert C 1 st ivss1 1 0.750)
(*Block X*)
(insert C 2 sc a 1 0.250)
(insert C 2 st oa 2 0.250)
(insert C 2 st ob 1 0.750)
(insert C 2 sc b 2 0.750)
(insert C 2 sc f 1 0.750)
(insert C 2 st ivcc1 1 0.750)
(insert C 2 sc i 2 0.250)
(insert C 2 st ivss1 1 L)
(insert C 2 st ivss1 1 0.750)
(*Block Y*)
(insert C 3 sc a 2 0.250)
(insert C 3 st oa 3 0.250)
(insert C 3 st ob 1 0.750)
(insert C 3 sc b 2 0.750)
(insert C 3 sc f 1 0.500)
(insert C 3 st ivcc1 1 0.500)
(insert C 3 sc i 3 0.500)
(insert C 3 st ivss1 1 L)
(insert C 3 st ivss1 1 0.750)
(*Block Z*)
(insert C 4 sc a 2 0.250)
(insert C 4 st oa 4 0.250)
(insert C 4 st ob 1 0.750)
(insert C 4 sc b 3 0.750)
(insert C 4 sc f 2 0.750)
(insert C 4 st ivcc1 2 0.750)
(insert C 4 sc i 3 0.250)
(insert C 4 st ivss1 1 L)
(insert C 4 st ivss1 1 0.750)
(*Block Z 1*)
(insert C 5 sc a 3 0.250)
(insert C 5 st oa 5 0.250)
(insert C 5 st ob 1 0.750)
(insert C 5 sc b 3 0.750)
(insert C 5 sc f 1 0.500)
(insert C 5 st ivcc1 1 0.500)
(insert C 5 sc i 4 0.500)
(insert C 5 st ivss1 1 L)
(insert C 5 st ivss1 1 0.750)
(*Block Z 2*)
(insert C 6 sc a 3 0.250)
(insert C 6 st oa 6 0.250)
(insert C 6 st ob 1 0.750)
(insert C 6 sc b 4 0.750)
(insert C 6 sc f 2 0.750)
(insert C 6 st ivcc1 2 0.750)
(insert C 6 sc i 5 0.250)
(insert C 6 st ivss1 1 L)
(insert C 6 st ivss1 1 0.750)
(*Block Z 3*)
(insert C 7 sc a 4 0.250)
(insert C 7 st oa 7 0.250)
(insert C 7 st ob 1 0.750)
(insert C 7 sc b 4 0.750)
(insert C 7 sc f 2 0.500)
(insert C 7 st ivcc1 2 0.500)
(insert C 7 sc i 6 0.500)
(insert C 7 st ivss1 1 L)
(insert C 7 st ivss1 1 0.750))
)
【００６０】
ブロックＪの最初のラインは、“挿入（ｉｎｓｅｒｔ）”コマンドで始まっている。その後に、クラスタを特定する“Ａ”が続いている。クラスタ“Ａ”は、スペアセル領域に繰り返し挿入されるグループの集まり（クラスタ）である。上述したように、この例では、各グループはセルを一つしか含まない。ブロックＪの最初のラインの次の項は、数字“２”である。これは、ブロックＪのクラスタが２つの標準セルトラックまたは行に挿入されることを意味している。次の項は、グループ“sc a”が挿入されることを示している。更に次の項は、そのグループが、２つの標準セルトラックの内、標準セルトラック１に挿入されるということを意味している。このラインの最後の項には、挿入されるグループが位置すべき標準セルトラックに於けるＸ軸位置が、標準セルトラックの全長の何倍かを示す値（０．２５０）として示されている。
【００６１】
ブロックＪの残りのラインも同じフォーマットである。ブロックＪの第２ラインでは、標準セルトラック２に、縦方向ワイヤターミネータを含むグループst oaが挿入されることに注意されたい。ブロックＧの最初のラインは、st oaに対する入力ポートがsn oaであることを示している。ブロックＥの最初のラインは、sn oaがグループsc aに対する出力であることを示している。前の段落で述べたように、グループsc aは、標準セルトラック１に挿入される。これらの要素の間に共通の接続性（ｃｏｎｎｅｃｔｉｖｉｔｙ）を仮定すると、配置及びラウティング時、配置及びラウティングツールは、図７を参照して述べたような縦方向ラウティングトラック１２６を生成する。
【００６２】
ブロックＪの第３ラインでは、グループsc cが規定された位置（標準セルトラック２の長さ×０．２５０）に挿入される。この位置は、一つ前のラインで挿入されるターミネータの位置と同じであることに注意されたい。２以上のグループが同じ位置に割り当てられた場合、最初のグループがその位置に配置され、２つ目の要素は元の位置に近接した位置に配置される。このとき、複数セルを有するグループも単一の位置に挿入され得ることに注意されたい。本例では、一つのセルだけを含むグループに対してのみ位置の割り当てを行っている。しかし、後に続く命令で、同じ位置に別のグループを割り当てることもできる。
【００６３】
ブロックＪの第５ラインでは、電源コネクタst ivcc1が標準セルトラック１内に挿入される。ブロックＦの第４ラインは、このコネクタが出力sn i4を有していることを示している。ブロックＥでは、この出力がセルxincmosf、sin00c及びsin00cの入力に接続されていることに注意されたい。従って、これらのセルの入力ゲートには電源信号が供給され、効果的にその機能がディスエーブルされることになる。この状態は、初期レイアウトの論理エラーを修正する必要がある場合に、配置及びラウティングツールによってそれらのセルの入力が信号トラックに接続されるまで続く。
【００６４】
ブロックＪの最後の２つのラインは、グランドコネクタst ivss1をトラック１の位置Ｌ（Ｘ軸上の左端；Ｘ＝０）と、トラック１の全長の０．７５０倍の位置に配置することを示している。これらのグランドコネクタには、同じ出力sn i1が規定されている。従って、配置及びラウティング時、配置及びラウティングツールはこれらのセルの間に、例えば図７に示したトラック１３２のようなトラックを生成する。生成されたトラックは、他の挿入されたセル、例えばセル１２２Ｆ及び１２２Ｇの入力を接地するのに用いることができる。
【００６５】
ブロックＫ乃至Ｏでは、ブロックＪと同じクラスタに属するグループが挿入されていることに注意されたい。しかしながら、各ブロックで、同じグループが異なる標準セルトラックのセットに挿入されている。例えば、ブロックＫでは、そのようなセットは３つの標準セルトラック（１乃至３）に渡っているが、グループはトラック１とトラック３にしか挿入されていない。ブロックＬでは、グループはトラック１乃至トラック４に挿入されている。ブロックＭでは、グループはトラック１乃至トラック５に挿入されている。ブロックＮでは、グループはトラック１乃至トラック６に挿入されている。ブロックＯでは、グループは７つのトラックに渡っているが、実際はトラック１、２、４、６、及び７にしか挿入されていない。
【００６６】
このように、本発明では、単一のクラスタを用いて、そのクラスタを繰り返し異なる標準セルトラックセットに挿入する。この方法により、十分満足のいくようにスペアセルを分散配置し得る確立された技術が得られている。
【００６７】
グループＡの最初のブロック（ブロックＩ）のクラスタは、グループＡの残りのブロック（ブロックＪ乃至Ｑ）のクラスタと同じでない。この理由は、ブロックＩでは、セルが単一のトラックにのみ挿入され、他のブロックのように複数のトラックに挿入されないためである。従って、この場合は特別に扱われる。
【００６８】
ブロックＩの最後の２つのラインでは、スペアターミネータが挿入される。ブロックＩの下から２つ目のラインでは、スペアターミネータst_row1が、図７に示されたターミネータ１４０Ａのように、トラック１の左端（Ｘ＝０）に挿入される。ブロックＩの最後のラインでは、スペアターミネータst_row1が、図７に示されたターミネータ１４０Ｂのように、トラック１の右端（Ｘが最大となる位置）に挿入される。ブロックＨの第１ラインは、ターミネータst_row1の入力は、sn_r1と規定されることを示している。スペアトラックの両端部で同じ入力（sn_r1）が規定されるため、配置及びラウティングツールは、これらのスペアターミネータの間にトラック１４２を生成する。
【００６９】
ブロックＱから、グループＢとして識別されるクラスタが始まっている。ブロックＱ乃至Ｖのシンタックス（ｓｙｎｔａｘ）及び技法は、上述したブロックと同じである。ブロックＰが、グループＢの最初のブロックであることに注意されたい。ブロックＩの場合と同様に、ブロックＰは単一のトラックにのみセルを挿入する。従って、ブロックＰで使用されるセルは、ブロックＱ乃至Ｖで使用されるセルと一致しない。
【００７０】
ブロックＷ乃至Ｚ＿３は、グループＣとして識別されるクラスタを規定する。これらのブロックのシンタックス及び技法は、既に述べたブロックと同じである。
【００７１】
本発明の挿入ブロックは、次のように用いられる。初期配置された集積回路の標準セル領域が、８ブロックに含まれるグループの数に相当するグループ数を受け入れることが出来ると過程すると、この場合、クラスタ“Ａ”、“Ｂ”、“Ｃ”に順にアクセスすることによってセルを標準セル領域内に挿入することが出来る。詳述すると、その順番は、Ａ、Ｂ、Ｃ、Ａ、Ｂ、Ｃ、Ａ、Ｂとなる。例えば、スペアセル分散配置メカニズム４８が、半導体回路の標準セル領域内の第１トラックから挿入を始めるとすると、ブロックＩを最初に使用することができるだろう。なぜなら、ブロックＩはクラスタＡに属し、かつ単一のトラックについて規定しているからである。挿入処理が第２トラックに移ると、今度は、クラスタＢに属し２つのトラックについて規定しているブロックＱを使用することができるだろう。挿入をトラックの順に行う必要はない。使用されるトラックは、通常、標準セル領域内のトラック数及びこれらのトラックの適切なグループ分けを含む予め定められた基準に基づいて選択される。例えば、１０個のトラックからなるグループを（１，５，７）、（２，３，４，１０）、及び（６，７，８，９）のようにグループ分けしてもよい。このような場合、分散配置メカニズム４８は、最初ブロックＫを、次にブロックＳを、続いてブロックＺをコールする。
【００７２】
トラック数がクラスタ内のグループ数よりも多い場合、２以上のクラスタを用いて多数のトラックにグループを挿入することができる。例えば、上述した例に於いてトラック数が１０の場合、クラスタＡのブロックＯと、クラスタＢのブロックＲを１０個のトラックを満たすように用いることができる。上述したことから理解されるように、本発明の全般的な目的はスペアセルの良好な分散配置を得ることである。当然ながら、この目的を達成するため、いくつかの関連する技法を用いてもよい。
【００７３】
本発明の特定の実施例に対する上記の説明は、例示及び説明を目的とたものである。上記の実施例は、本発明を余すところなく述べ、本発明を記載された形態そのものに限定することを意図したものではなく、上述したことから様々な変形変更が可能であることは明らかであろう。上記実施例は、本発明の原理とその実際的な応用について最もよく説明し、それによって当業者が本発明及び特定の用途に合うように様々な変形を施した実施形態を最適に使用することができるように選択し記載したものである。本発明の範囲は、特許請求の範囲によって画定される。
【図面の簡単な説明】
【図１】図１の左側部分は、本発明の一実施例による方法を例示し、右側部分はその方法を実行するための対応する装置を例示するものである。
【図２】図２は、本発明に従って用いることのできる汎用コンピュータを例示したものである。
【図３】図３は、集積回路の標準セル領域の一部を簡略化して図示したものである。
【図４】図４は、図３の標準セル領域をより詳細に表している。
【図５】図５は、本発明に従って使用される命令ファイルの一実施例に関連する処理命令を表している。
【図６】図６は、本発明のスペアセル分散配置メカニズムの一実施例に関連したプロセスを示している。
【図７】図７は、本発明に従って、元の標準セルトラック内に挿入され分散配置された標準セルを表している。
【符号の説明】
２０  標準セルの初期レイアウト生成過程
２２  レイアウト内へのスペアセルの分散配置過程
２４  標準セルの最終レイアウト生成過程
２６  回路のラウティング過程
２８  回路機能の検証過程
３０  スペアセルの接続過程
４０  配置及びラウティングツール
４２  ネットリスト
４４  パラメータファイル
４６  回路レイアウト（標準セルレイアウト）
４８  スペアセル分散配置メカニズム
５０  命令ファイルジェネレータ
５２  命令ファイル
５４  改訂された回路レイアウト
５６  レイアウト／設計比較ツール
５８  ロジック検証器
６０  プレースメント命令
６２  Ｘ軸
６４  Ｙ軸
６５  セル
６６Ａ〜６６Ｄ  標準セルトラック
６８Ａ〜６８Ｃ  ラウティングトラック
７０  ＡＮＤゲート
７２  インバータ
７４  ＮＯＲゲート
７６  ＮＡＮＤゲート
７８  加算器
８０  電源バス
８２  グランドバス
８４Ａ〜８４Ｃ  信号トラック
８６、８８  信号トラックコネクタ
９０  メモリ
９２  ＣＰＵ
９４  システムバス
９６  入力／出力デバイス
１００  使用可能なスペアセルを確定する過程
１０２  セルの接続のセットを宣言する過程
１０４  既存レイアウト内へのセル及び接続の分散配置過程
１１０  グループ情報の処理過程
１１２  セル情報の処理過程
１１４  挿入情報の処理過程
１１５  挿入のためのクラスタの選択過程
１１６  グリッド位置の同定過程
１１８  新たなセルグループの挿入過程
１２０  残りのセルの位置の繰り上げ過程
１２２Ａ〜１２２Ｇ  スペア標準セル
１２４Ａ、１２４Ｂ  縦方向ワイヤターミネータ
１２６  縦方向接続
１３０Ａ、１３０Ｂ  グランドコネクタ
１３２  ラウティングトラック
１４０Ａ、１４０Ｂ  スペアターミネータ
１４２  信号トラック
【図１】
0003891599.tif 000002
【図２】
0003891599.tif 000003
【図３】
0003891599.tif 000004
【図４】
0003891599.tif 000005
【図５】
0003891599.tif 000006
【図６】
0003891599.tif 000007
【図７】
0003891599.tif 000008