(57)【特許請求の範囲】
【請求項１】
ＩＣレイアウトのデータ表現を生成するためのコンピュータシステムであって、
ａ）メモリと、
ｂ）前記メモリに結合された１以上のプロセッサとを備え、
前記メモリが、命令セットを含み、該命令セットが、前記１以上のプロセッサによって実行されたときに、該プロセッサに下記のステップを実行させるコンピュータシステム。
ｉ）ＩＣレイアウトによって表現される１組のＩＣデバイスを表現するポリゴンに関連付けられたポリゴンデータであって、前記ポリゴンが１以上のワイヤによって表現され、１以上の前記各ワイヤが１以上のワイヤセグメントで表現され、前記各ワイヤセグメントが２つの有向線セグメントによって表現されるものを生成するステップと、
ｉｉ）１以上のワイヤを表現すると共に、前記ポリゴンデータへの少なくとも１つの参照を含むワイヤデータであって、前記各ワイヤが１以上のワイヤセグメントで表現されるものを生成するステップと、
ｉｉｉ）各ワイヤセグメント毎の前記２つの有向線セグメントを表現する有向線セグメントデータを生成するステップ。
【請求項２】
請求項１に記載のコンピュータシステムであって、前記命令セットが、下記を実行するための命令を含むコンピュータシステム。
ａ）各ワイヤ毎の１以上のワイヤセグメントを表現すると共に、前記ワイヤデータへの少なくとも１つの参照を含むワイヤセグメントデータを生成するステップと、
ｂ）前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成するステップと、
ｃ）前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成するステップ。
【請求項３】
請求項２に記載のコンピュータシステムであって、
前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成する前記ステップが、前記ワイヤセグメントデータ内で表現される各ワイヤ毎に、前記ポリゴンデータ内に、そのワイヤを表現する前記ワイヤデータ内のデータへの参照を生成するステップを含み、
前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成する前記ステップが、前記１以上のワイヤ毎に、前記ワイヤデータ内に、前記ワイヤ内に含まれる最初及び最後のワイヤセグメントの双方への参照を生成するステップを含むコンピュータシステム。
【請求項４】
請求項１に記載のコンピュータシステムであって、更に、接続されたワイヤに関連したワイヤセグメントを記述する分岐データを生成するステップを含むコンピュータシステム。
【請求項５】
ＩＣレイアウトのデータ表現を生成するための命令列を備えたコンピュータ読み取り可能な媒体であって、該命令列が、前記１以上のプロセッサによって実行されたときに、該プロセッサに下記のステップを実行させるコンピュータ読み取り可能な媒体。
ａ）ＩＣレイアウトによって表現される１組のＩＣデバイスを表現するポリゴンに関連付けられたポリゴンデータであって、前記ポリゴンが１以上のワイヤによって表現され、１以上の前記各ワイヤが１以上のワイヤセグメントで表現され、前記各ワイヤセグメントが２つの有向線セグメントによって表現されるものを生成するステップと、
ｂ）１以上のワイヤを表現すると共に、前記ポリゴンデータへの少なくとも１つの参照を含むワイヤデータであって、前記各ワイヤが１以上のワイヤセグメントで表現されるものを生成するステップと、
ｃ）各ワイヤセグメント毎の前記２つの有向線セグメントを表現する有向線セグメントデータを生成するステップ。
【請求項６】
請求項５に記載のコンピュータ読み取り可能な媒体であって、前記命令列が、下記を実行するための命令を含むコンピュータ読み取り可能な媒体。
ａ）各ワイヤ毎の１以上のワイヤセグメントを表現すると共に、前記ワイヤデータへの少なくとも１つの参照を含むワイヤセグメントデータを生成するステップと、
ｂ）前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成するステップと、
ｃ）前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成するステップ。
【請求項７】
請求項６に記載のコンピュータ読み取り可能な媒体であって、
前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成する前記ステップが、前記ワイヤセグメントデータ内で表現される各ワイヤ毎に、前記ポリゴンデータ内に、そのワイヤを表現する前記ワイヤデータ内のデータへの参照を生成するステップを含み、
前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成する前記ステップが、前記１以上のワイヤ毎に、前記ワイヤデータ内に、前記ワイヤ内に含まれる最初及び最後のワイヤセグメントの双方への参照を生成するステップを含むコンピュータ読み取り可能な媒体。
【請求項８】
請求項５に記載のコンピュータ読み取り可能な媒体であって、前記命令列が、接続されたワイヤに関連したワイヤセグメントを記述する分岐データを生成するステップを実行する命令を含むコンピュータ読み取り可能な媒体。
【請求項９】
コンピュータによりＩＣレイアウトのデータ表現を生成するための方法であって、下記のステップを備えた方法。
ａ）コンピュータが、ＩＣレイアウトによって表現される１組のＩＣデバイスを表現するポリゴンに関連付けられたポリゴンデータであって、前記ポリゴンが１以上のワイヤによって表現され、１以上の前記各ワイヤが１以上のワイヤセグメントで表現され、前記各ワイヤセグメントが２つの有向線セグメントによって表現されるものを生成するステップと、
ｂ）コンピュータが、１以上のワイヤを表現すると共に、前記ポリゴンデータへの少なくとも１つの参照を含むワイヤデータであって、前記各ワイヤが１以上のワイヤセグメントで表現されるものを生成するステップと、
ｃ）コンピュータが、各ワイヤセグメント毎の前記２つの有向線セグメントを表現する有向線セグメントデータを生成するステップ。
【請求項１０】
請求項９に記載の方法であって、更に、下記のステップを備えた方法。
ａ）コンピュータが、各ワイヤ毎の１以上のワイヤセグメントを表現すると共に、前記ワイヤデータへの少なくとも１つの参照を含むワイヤセグメントデータを生成するステップと、
ｂ）コンピュータが、前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成するステップと、
ｃ）コンピュータが、前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成するステップ。
【請求項１１】
請求項１０に記載の方法であって、
コンピュータが前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照を生成する前記ステップが、前記ワイヤセグメントデータ内で表現される各ワイヤ毎に、前記ポリゴンデータ内に、そのワイヤを表現する前記ワイヤデータ内のデータへの参照を生成するステップを含み、
コンピュータが前記ワイヤデータ内に、前記ワイヤセグメントを参照する少なくとも１つの参照を生成する前記ステップが、前記１以上のワイヤ毎に、前記ワイヤデータ内に、前記ワイヤ内に含まれる最初及び最後のワイヤセグメントの双方への参照を生成するステップを含む方法。
【請求項１２】
請求項９に記載の方法であって、更に、コンピュータが、接続されたワイヤに関連したワイヤセグメントを記述する分岐データを生成するステップを含む方法。
【請求項１３】
請求項９に記載の方法であって、
コンピュータが前記ＩＣレイアウトによって表現される１組のＩＣデバイスを表現するポリゴンに関連付けられたポリゴンデータを生成する前記ステップが、ＩＣレイアウトによって表現される１組のＩＣデバイスを表現する複数のポリゴンに関連付けられたポリゴンデータであって、該複数のポリゴンにおける各ポリゴンが１以上のワイヤによって表現されるものを生成するステップを備え、
前記方法が、更に、コンピュータが下記のステップを実行することにより前記ポリゴンデータの妥当性検査を実行するステップを含む方法。
ａ）コンピュータが、前記複数のポリゴンから検査される第１及び第２のポリゴンを選択するステップと、
ｂ）コンピュータが、前記第１のポリゴンから前記第２のポリゴンへの標準方向を決定するステップと、
ｃ）コンピュータが、前記第１のポリゴンから前記第２のポリゴンへの前記標準方向に基づいて、前記第１のポリゴンと前記第２のポリゴンとの間の間隔が、所定の間隔規則を満たしているか否かを判断するステップ。
【請求項１４】
請求項１３に記載の方法であって、コンピュータが前記第１のポリゴンから前記第２のポリゴンへの標準方向を決定する前記ステップが、下記のステップを含む方法。
ａ）コンピュータが、前記第１のポリゴンの第１の側面から前記第２のポリゴンへの標準方向を決定するステップと、
ｂ）コンピュータが、前記第１のポリゴンの第２の側面から前記第２のポリゴンへの標準方向を決定するステップと、
ｃ）コンピュータが、前記第１のポリゴンの第３の側面から前記第２のポリゴンへの標準方向を決定するステップと、
ｄ）コンピュータが、前記第１のポリゴンから前記第２のポリゴンへの標準方向が決定できないときに、前記第１のポリゴンの第４の側面から前記第２のポリゴンへの標準方向を決定するステップ。
【請求項１５】
請求項１３に記載の方法であって、更に、コンピュータが、前記第１のポリゴンと前記第２のポリゴンとの間の間隔が所定の間隔規則を満足しないとき、前記第２のポリゴンを前記第１のポリゴンに対して、前記第２のポリゴンに近接する前記第１のポリゴンの２つの側面の方向と反対方向に向けて移動し、これによって前記所定の間隔規則を満足するよう前記第１のポリゴンと前記第２のポリゴンとの間に距離を生じさせるステップを実行するステップを含む方法。
【請求項１６】
請求項１５に記載の方法であって、前記方法が、更に、コンピュータが、前記第１のポリゴンの回りに、前記所定の間隔規則を満足する前記第２のポリゴンからの距離を記述する排他ゾーンを規定するステップを含み、
コンピュータが前記第２のポリゴンを前記第１のポリゴンに対して、前記第２のポリゴンに近接する前記第１のポリゴンの２つの側面の方向と反対方向に向けて移動する前記ステップが、更に、前記第２のポリゴンを前記第１のポリゴンに対して、前記第２のポリゴンに近接する前記第１のポリゴンの２つの側面の方向と反対方向に向けて移動し、これによって前記第２のポリゴンを前記排他ゾーンの外へ位置させるステップを含む方法。
【請求項１７】
請求項１３に記載の方法であって、更に、コンピュータが、前記第１のポリゴンと前記第２のポリゴンとの間の間隔が所定の間隔規則を満足しないとき、前記所定の間隔規則が満足されるよう前記第２のポリゴンの大きさを変えるステップを含む方法。
【請求項１８】
請求項１３に記載の方法であって、更に、
コンピュータが、前記第１のポリゴンの第１の側面から前記第１のポリゴンの第２の側面への標準方向に基づいて、前記第１のポリゴンの大きさを決定するステップと、
コンピュータが、前記第１のポリゴンの大きさが、サイズ規則を満足しないとき、該サイズ規則が満足されるよう前記第１のポリゴンの前記第２の側を、前記第１のポリゴンの前記第１の側面に対し移動するステップと、を含む方法。
【請求項１９】
請求項１３に記載の方法であって、
各ワイヤが１以上のワイヤセグメントで表現され、
コンピュータが、前記複数のポリゴンから検査される第１及び第２のポリゴンを選択する前記ステップが、前記複数のワイヤセグメントから検査される第１のワイヤセグメントと第２のワイヤセグメントを選択するステップを含み、
コンピュータが、前記第１のポリゴンから前記第２のポリゴンへの標準方向を決定する前記ステップが、前記第１のワイヤセグメントから前記第２のワイヤセグメントへの前記標準方向を決定するステップを含み、
コンピュータが、前記第１のポリゴンと前記第２のポリゴンとの間の間隔が、所定の間隔規則を満たしているか否かを判断する前記ステップが、前記第１のワイヤセグメントから前記第２のワイヤセグメントへの前記標準方向に基づいて、前記第１のワイヤセグメントと前記第２のワイヤセグメントとの間の間隔が、前記所定の間隔規則を満たしているか否かを判断するステップを含む方法。
【請求項２０】
請求項９に記載の方法であって、更に、コンピュータが、第１及び第２の端点により規定される左面を有する第１のワイヤセグメントと、第１及び第２の端点により規定される左面を有する第２のワイヤセグメントとに基づいて、ポリゴン出力データを生成するステップであって、前記第１のワイヤセグメントの前記左面の前記第１の端点が、前記第２のワイヤセグメントの前記左面の第１及び第２の端点の双方と同一線上にあり、かつ前記第１のワイヤセグメントの前記左面の前記第２の端点が、前記第２のワイヤセグメントの前記左面の第１の端点と同一線上にあるときに、コンピュータが、前記第１のワイヤセグメントの前記左面の前記第１の端点により規定される第１の端点と、前記第２のワイヤセグメントの前記左面の前記第２の端点により規定される第２の端点とを有する第１の左ポリゴン面を確立するステップを実行することにより、前記ポリゴン出力データを生成するものを備えた方法。
【請求項２１】
請求項９に記載の方法であって、更に、コンピュータが、第１及び第２の端点により規定される左面を有する第１のワイヤセグメントと、第１及び第２の端点により規定される左面を有する第２のワイヤセグメントとに基づいて、ポリゴン出力データを生成するステップであって、前記第１のワイヤセグメントの前記左面の前記第２の端点が、前記第２のワイヤセグメントの前記左面の第１の端点と一致しているときに、コンピュータが、前記第１のワイヤセグメントの前記左面の前記第１の端点により規定される第１の端点と、前記第１のワイヤセグメントの前記左面の前記第２の端点により規定される第２の端点とを有する第１の左ポリゴン面、並びに前記第１のワイヤセグメントの前記左面の前記第２の端点により規定される第１の端点と、前記第２のワイヤセグメントの前記左面の前記第２の端点により規定される第２の端点とを有する第２の左ポリゴン面を確立するステップを実行することにより、前記ポリゴン出力データを生成するものを備えた方法。
【発明の詳細な説明】
【０００１】
【発明の属する分野】
本発明は、集積回路（ＩＣ）の設計に関し、特に、集積回路レイアウト内でポリゴンを表現するための方法及び装置に関する。
【０００２】
【発明の背景】
集積回路設計の世界では、”レイアウト”は、一般にポリゴンの形で表現される幾何学的パターンであり、これによってＩＣの製造において半導体デバイスや該デバイス間の電気接続を作るために用いられる、異なる種類の部材の大きさや配置が記述される。例えば、ＩＣ上の拡散開口は、製造設備において”拡散層構造”と解釈される１以上のポリゴンによって、レイアウト内に表現し得る。部材の他の層や、接点やビアなどの形状は、同様にＩＣレイアウト内に表現し得る。ＩＣレイアウト内のポリゴンは、特定の種類の部材の最小サイズや、異なる種類の部材間の最小間隔要求を規定する設計ルールを満足しなければならない。この設計ルールはまた、接点のような他の層の形状のためのサイズ及び間隔の要求を記述する。
【０００３】
時として、ＩＣレイアウトはコンピュータ支援設計（ＣＡＤ）システムを用いて手書きされる。このアプローチは、比較的少数のデバイスを持つＩＣレイアウトを設計するのに適当である。しかしながら、近年の製造技術は、単一のシリコン基板上に数百万のトランジスタを配置することを可能にする。数百万のトランジスタを含むＩＣレイアウトを手書きすることは、例え、描く必要のある個々のトランジスタの数を減らすために標準的なセルを用いるにしても、膨大な時間を必要とするので現実的でない。このため、さまざまなコンピュータをベースとしたＩＣレイアウト設計ツールが開発され、ＩＣレイアウトの生成を自動化している。２種類のレイアウト設計ツールは、リーフセル小型化ツール（leaf cell compaction tools）及びリーフセル合成ツール（leaf cell synthesis tools）を含む。ＩＣレイアウトの世界では、用語”リーフセル”は、ＮＡＮＤ論理演算やビット情報の記憶などの特定の機能を協働して実行する、通常、２つから数百のトランジスタのグループを参照する。
【０００４】
リーフセル小型化ツールは、既存のＩＣレイアウトのサイズを削るために用いられる。殆どのリーフセル小型化ツールは、ポリゴンの余分な間隔をなくすことによって垂直又は水平方向の何れかにおいて、レイアウトを小型化する。”完全な”小型化は、ときとして水平方向におけるレイアウトの最初の圧縮の後、垂直方向におけるレイアウトの圧縮を与える。しかしながら、殆どのリーフセル小型化ツールは、またＩＣレイアウト内のポリゴン点の統一を、それが特定の製造プロセスの設計ルールに適合するまで、調整する機能があり、これは現在の設計ルールから新しい設計ルールへ既存のレイアウトを移植するために役立つ。リーフセル小型化ツールのこのような利益にも拘らず、小型化が一般に一次元処理であるため、小型化されたレイアウトでさえ、比較される手書きセルよりも大きい。また、小型化ツールは、設計ルールにおける非線形の変化（例えば、接点の周りを覆う比例して増加する金属）が、しばしばそれらの新しい設計ルールでレイアウトを描くときに、レイアウト設計者に異なる判断をさせるにも拘らず、既存のレイアウト構造を持続する。
【０００５】
リーフセル小型化ツールとは対照的に、リーフセル合成ツールは、トランジスタのサイズ及びトランジスタ間の電気接続を記述するトランジスタレベルのネットリストに基づいて、新しいリーフセルレイアウトを生成する能力を持っている。レイアウト合成システムは、既存のレイアウト構造を維持する必要がないので、トランジスタの並び替え、他の列へのトランジスタの配置、資源を有効にするルートの再配置などによって、設計ルールや回路要求の完全な利益を享受できる。多くのレイアウト合成システムは、レイアウトの生成における最後のステップとして、小型化を使用するが、これは既存のレイアウトを小型化するだけのものよりも更に小型のレイアウトを生成することができる。
【０００６】
殆どのＩＣレイアウト設計ツールは、レイアウトに含まれるポリゴンの内部表現を生成する。ＩＣレイアウト内にポリゴンを表現するための２つのアプローチは、一般ポリゴンアプローチ、及び線又はパスアプローチを含む。
【０００７】
一般ポリゴンアプローチは、ＩＣレイアウト内に含まれるポリゴンを構成するために用いられる矩形又は台形を表現する点の単一リストを用いる。各矩形又は台形は、同じ向きの並行の側面を備え、これは４つの点で規定される。複雑なポリゴンは、互いに隣接した複数の台形を配置することにより表現される。一般ポリゴンアプローチは、融通性があり、あらゆるレイアウト構成を表現するための自由度がある。台形には、好適な方向や”巻き方向”はない。従って、台形が特定の角について参照されず、台形の側面が、例えば電流に関して順序付けられていない。しかしながら、その融通性という性質は、一般ポリゴンアプローチをソフトウェアに実装することを困難にする。殆どの合成ソフトウェアは、単一のポリゴン内に含むことができる点の数を制限しているため、極めて多くの台形を含んでいる複雑なポリゴンは、より小さいポリゴンに細分化されなければならない。ポリゴンを多数の台形や矩形に細分化する必要性は、その目的を曖昧にし、抵抗やトランジスタデバイスのサイズなどの有用な属性を決定することを困難にする。また、ポリゴン内の比較的単純な変更は、台形表現の大規模な再構築に終わる可能性がある。多くのツールは、台形から作られる直交しない構造を操作するのに必要とされるアルゴリズムが複雑なので、矩形のみを用いる。最も単純と言えども全てのポリゴンを表現するためには、極めて多数の台形又は矩形が必要とされる。結局、一般ポリゴンアプローチの実装は、ポリゴン間の使用されない間隔を含む、総設計間隔を表現し、これは、ポリゴンの総数を増やし、レイアウトを表現するためのより多くのデータを必要とする。
【０００８】
線又はパスアプローチは、中央線及びこの中央線に沿う各点毎のポリゴンの幅を用いてポリゴンを表現する。このアプローチの単純構造は、合成ツールへ容易に実装でき、拡散アイランド間のルーティングを単純にする。また、この幅及び抵抗のパスは、簡単に計算できる。殆どのレイアウト構造は、線の連鎖や線の相互の配置をすることなく表現でき、このアプローチは、多くのルーティングツールで用いられている。しかしながら、パスアプローチは、ポリゴンが並行な側面を持つことを必要とし、それが、八角形状の接点、不規則な形状の拡散アイランド、幅が変化する線などの、より複雑な形状にとって不適当なものとなる。
【０００９】
ＩＣレイアウト合成ツールにおけるポリゴンを表現する必要性、及び既存のアプローチにおける制限の観点から、ＩＣレイアウトにおけるポリゴンを表現する他のアプローチが求められている。
【００１０】
【本発明の概要】
本発明の一側面によれば、ＩＣレイアウトのデータ表現を生成するためのアプローチが提供される。このコンピュータシステムは、メモリ及び該メモリに接続された１以上のプロセッサを備える。前記メモリは、１組の命令を含み、これが前記１以上のプロセッサで実行されたときに、該１以上のプロセッサに複数のステップを実行させる。第１に、ＩＣレイアウトにより表現される１組のＩＣデバイスを表現するポリゴンに関連づけられたポリゴンデータが生成され、この中で前記ポリゴンが１以上のワイヤによって表現される。次に、１以上のワイヤを表現し、前記ポリゴンデータへの少なくとも１つの参照を含むワイヤデータを生成し、この中で各ワイヤが１以上のワイヤセグメントによって表現される。そして、各ワイヤ毎の１以上のワイヤセグメントを表現すると共に、前記ワイヤデータへの少なくとも１つの参照を含むワイヤセグメントデータが生成される。前記ポリゴンデータ内に、前記ワイヤデータを参照する少なくとも１つの参照が生成される。最後に、前記ワイヤデータ内に、前記ワイヤセグメントデータを参照する少なくとも１つの参照が生成される。
【００１１】
本発明の他の側面によれば、ポリゴンデータの有効性検査を実行するためのアプローチが提供される。最初に、１以上のポリゴンから、検査のために第１のポリゴン及び第２のポリゴンが選択される。次に、前記第１のポリゴンから前記第２のポリゴンへの標準方向が決定される。最後に、前記第１のポリゴンから前記第２のポリゴンへの標準方向に基づいて、前記第１のポリゴンと前記第２のポリゴンの間の間隔が、所定の間隔規則を満たしているかどうかの判断がなされる。前記第１のポリゴンと前記第２のポリゴンの間の前記間隔が、所定の間隔規則を満たしていないときには、前記第２のポリゴンを、前記第１のポリゴンに対し、前記第２のポリゴンに近接する前記第１のポリゴンの２側面の方向と反対方向に行くよう移動する。
【００１２】
【好適な実施例の詳細な説明】
ＩＣレイアウトにおいてポリゴンを表現するための新規な方法について説明する。以下の説明では、本発明の完全な理解が得られるよう、解説のために特定の詳細について述べる。しかし、本発明がそうした特定の詳細によらなくても実施できることは理解されるであろう。他の例では、本発明を不必要に曖昧にすることを避けるため公知の構造および装置はブロック図の形式で示している。
【００１３】
[機能概要]
概略、本発明によれば、ＩＣレイアウトのポリゴンは、各々が１個以上のワイヤセグメントによって表現される１個以上のワイヤによって表現される。各ワイヤセグメントは一対の有向ワイヤより形成される。ワイヤ、ワイヤセグメントおよび有向ワイヤを表現するデータを維持するために新規なデータ構造階層が付与される。このデータ構造階層は、ＩＣレイアウトの妥当性検査を実行するためにＩＣレイアウト合成において使用される。
【００１４】
[詳細な説明]
１）標準配向
図１に示すように、標準配向は、所定の配向キー１００に関するＩＣレイアウトジオメトリの方向を一般に示す。本発明の１変更例によれば、ＩＣレイアウトジオメトリは、８個の標準配向のいずれかで方向づけられ、各標準配向は４５°の倍数を表現する。標準配向は、配向キー１００の上方に始まり、時計回りに進み、（上）、（右上）、（右）、（右下）、（下）、（左下）、（左）および（左上）を含む。
【００１５】
標準配向は方向づけられるＩＣレイアウトジオメトリに加え、ＩＣレイアウト特徴間の関係も標準配向によって記述される。例えば、図２に示すように、ワイヤ２００は端点２０２および２０４によって規定される。本発明の実施例によれば、ワイヤ２００の標準配向は端点２０２に対する端点２０４の位置にもとづく。従って、ワイヤ２００は、方向矢２０５によって指示される通り、（右上）方向で配向または方向づけられる。ワイヤが指向し得る方向にいかなる制限もない。例えば、端点２０４が端点２０２の左下にある場合、ワイヤ２００の標準配向は（左下）になるであろう。さらに、点２０６がワイヤ２００の左側（左）に位置し、点２０８がワイヤ２００の上方右側（右上）に位置する。この手法は、ワイヤ２００と点２０６との間の間隔が、後述する通り１組の所定の間隔判定規則を満たすかどうかを判断するために有効である。
【００１６】
前述のように、ＩＣレイアウトポリゴンは１個以上のワイヤによって表現され、各ワイヤは１個以上のワイヤセグメントによって表現される。本発明の実施例によれば、各ワイヤセグメントは４個の辺、２個の側面（左および右）および２個の端面（第１および第２）を有する。側面は、ほぼ同じ方向に向いているが、平行であるまたは一致した端点を有する必要はない一対の有向縁によって表現される。本発明の一実施例によれば、左右の側面はそれぞれ、相互に対して角度４５°の倍数でなければならないが、端面は相互に対して任意の角度であってよい。一般に、端面はワイヤの露出端では４５°の倍数であるが、「内部の」端面は任意の角度であってよい。ワイヤに関しては、ワイヤセグメントは、図１に関して前述したように任意の方向で指向することができる。本発明の一実施例によれば、ワイヤセグメントの全部の点は、各面が非ゼロの長さおよび所定の方向を有するために一致しなくてもよい。
【００１７】
図３は、ワイヤセグメント３０２および、本発明の実施例に従ってワイヤセグメント３０２と４５°の角度で結合されたワイヤセグメント３０４から構成されたワイヤ３００を示している。ワイヤセグメント３０２は、ワイヤセグメント３０２の右側面を構成する第１の有向縁３０６およびワイヤセグメント３０２の左側面を構成する第２の有向縁３０８より構成される。ワイヤセグメント３０２は第１の端面３１０および第２の端面３１２も備える。両方の有向縁３０６および３０８は（下）方向を指向している。従って、ワイヤセグメント３０２も（下）方向を指向する。
【００１８】
ワイヤセグメント３０４は、第１の有向縁３１４および第２の有向縁３１６より構成される。両方の有向縁３１４および３１６は、（右下）方向に向いており、従って、ワイヤセグメント３０４を（右下）方向に向けている。ワイヤセグメント３０４は、ワイヤセグメント３０２の第２の端面と一致する第１の端面３１２および、第２の端面３１８を含む。
【００１９】
２）データ構造
本発明の実施例によれば、図４Ａ〜Ｇに例示するようにＩＣレイアウトにおいてポリゴンを表現するための新規のデータ構造アーキテクチャが提供される。本発明の一実施例によれば、ＩＣレイアウトの各ポリゴンは、１個以上のワイヤによって表現される。各ワイヤは、各々が一対の有向ワイヤによって表現される１個以上のワイヤセグメントによって表現される。各ワイヤセグメントはそれが含まれるワイヤを参照し、各ワイヤはそれが含まれるポリゴンを参照する。従って、単一のワイヤセグメントの参照が与えられると、全体のポリゴンが位置づけられ、操作することができる。
【００２０】
図４Ａは、本発明の実施例に従った点データ構造４００の場合を例示する。点データ構造４００は、ＩＣレイアウトにおけるある点に関するＸ座標およびＹ座標（Ｘ座標、Ｙ座標）を指定することによって、ＩＣレイアウトにおける点の位置を指定する。
【００２１】
図４Ｂは、有向ワイヤデータ構造４１０の内容を例示する。有向ワイヤデータ構造４１０は、対応する有向ワイヤの第１の端点（ＥＮＤ１）および第２の端点（ＥＮＤ２）を指定する。有向ワイヤデータ構造４１０はまた、有向ワイヤの方向（方向）も指定する。前述の通り、有向ワイヤは、図１に図示の通り、８つの所定の方向のうちのいずれか１つに方向づけることができる。
【００２２】
有向ワイヤデータ構造４１０は、直交フラグ（直交）および八分角フラグ（八分角）も指定する。直交フラグは、有向ワイヤが９０°の倍数である角度で方向づけられているか否かを指示するブールフラグであり、八分角フラグは、有向ワイヤが４５°の倍数である角度で方向づけられているか否かを指定するブールフラグである。本発明の一実施例によれば、直交フラグまたは八分角フラグのいずれも設定されていない場合、その有向ワイヤは、「半端な」角度、すなわち４５°または９０°以外の角度で方向づけられており、それは場合によっては、有向ワイヤの座標を計算するために浮動小数点算術を要する。
【００２３】
図４Ｃは、ワイヤセグメントの左縁（左縁）および右縁（右縁）を指定するワイヤセグメントデータ構造４２０の内容を例示する。左縁および右縁はそれぞれ、有向ワイヤデータ構造４１０を参照する。ワイヤセグメントデータ構造４２０はまた、そのワイヤにおける次のワイヤセグメント（次のワイヤセグメント）および前のワイヤセグメント（前のワイヤセグメント）に対する参照も含み、二重にリンクされたリストを形成する。ワイヤにおける第１のワイヤセグメントのワイヤセグメントデータ構造は、そのワイヤセグメントが前のワイヤセグメントを参照しないことを指示するために所定の値を指定する。本発明の一実施例によれば、ＮＵＬＬ値が所定の値として使用される。同様に、ワイヤの最後のワイヤセグメントのワイヤセグメントデータ構造は、そのワイヤセグメントが次のワイヤセグメントを参照しないことを指示するために所定の値を指定する。ワイヤデータ構造４２０の実施例を二重リンクリストの文脈において説明したが、二重リンクリストは必要ではない。
【００２４】
ワイヤセグメントデータ構造４２０は、そのワイヤを含む親ワイヤ（親ワイヤ）に対する参照および、現在のワイヤセグメントの露出端面が別のワイヤの側面と接触し分岐を形成する場合に関係する分岐データ構造に対する参照（分岐）も含んでいる。分岐データ構造の内容は後述する。分岐データ構造は、記憶域を節約するために、分岐を持たないワイヤセグメントには割り当てられない。
【００２５】
図４Ｄは、ワイヤデータ構造４３０の内容を例示する。ワイヤデータ構造４３０は、親ポリゴン（親ポリゴン）および、そのワイヤを識別する分岐番号（分岐番号）に対する参照を指定する。ワイヤデータ構造４３０はまた、そのワイヤのワイヤセグメントの全部を包囲する境界ボックス（ＢＢＸ）も指定する。境界ボックスは、ワイヤが領域クエリーによって返されたとしても、そのワイヤセグメントのいずれもクエリー点に十分に近くなければ、そのワイヤのいずれのセグメントも検査を要さないように、迅速な領域クエリー検査を可能にする。本発明の一実施例によれば、境界ボックス（ＢＢＸ）は、境界ボックスの左、下、右および上の座標に対応する４個の整数として実装される。
【００２６】
ワイヤデータ構造４３０はまた、ワイヤにおける最初のワイヤセグメント（最初のワイヤセグメント）および最後のワイヤセグメント（最後のワイヤセグメント）に対する参照とともに、第１の端に接続されたワイヤ（第１の端に接続されたワイヤ）および第２の端に接続されたワイヤ（第２の端に接続されたワイヤ）に対する参照も含む。
【００２７】
図４Ｅは、ワイヤデータ構造４３０に関する前述と同様、境界ボックス（ＢＢＸ）および、ポリゴンのメンバーワイヤの全部を分岐番号によって指定する分岐番号の配列（分岐番号の配列）を指定するポリゴンデータ構造４４０の内容を例示している。本発明の一実施例によれば、ポリゴンデータ構造４４０はまた、そのポリゴンの対応するプロセスレイヤ（レイヤ）および、ポリゴンを一意に識別するために使用されるポリゴン番号（ポリゴン番号）に対する参照も含む。例えば、この情報は、特定のプロセスレイヤについてポリゴンの全部を指定するリストとともに使用することができる。
【００２８】
図４Ｆは、本発明の実施例に従ってポリゴンにおいて分岐が形成される際に使用される分岐データ構造４５０の内容を例示する。分岐は、ワイヤセグメントの露出端面が別のワイヤの側面と接触する時に形成される。分岐データ構造４５０は、親ワイヤセグメント（親ワイヤセグメント）に対する参照とともに、そのワイヤセグメントの第１の端（ＥＮＤ１分岐）および第２の端（ＥＮＤ２分岐）とそれぞれ接続する他のワイヤセグメントに対する参照を指定する。分岐構造４５０はまた、あるワイヤセグメントからの最初および最後の左方分岐（最初の左方分岐、最後の左方分岐）および最初および最後の右方分岐（最初の右方分岐、最後の右方分岐）も含む。すなわち、これらのデータ構造要素は、特定のワイヤセグメントが、その側方のいずれかで当該ワイヤセグメントと交差する他のワイヤセグメントを有する場合に側方分岐構造を参照する。本発明の実施例によれば、任意の数の分岐がワイヤセグメントの側面に接続することができるが、ワイヤの端面は１個の他のワイヤセグメントのみと接続することができる。
【００２９】
図４Ｇは、親ワイヤセグメントに接続する分岐の一部であるワイヤセグメント（他のワイヤセグメント）および、他のワイヤセグメントが接続する親ワイヤセグメントにおける線セグメント（親線セグメント）に対する参照を指定する側方分岐構造４６０の内容を例示している。側方分岐構造４６０はまた、他方のワイヤセグメントが親ワイヤセグメントの左側に付属するか否かをブールフラグ（左縁上）にもとづいて指定する。側方分岐構造４６０はまた、次の側方分岐および（次の側方分岐）および前の側方分岐（前の側方分岐）データ構造とともに、他方のワイヤセグメントが付属する親ワイヤセグメントの位置を指定する第１の側点（第１の側点）および第２の側点（第２の側点）に対する参照を含む。側点は側方分岐リストをソートする際に役立ち、第１の側点は親ワイヤのＥＮＤ１のほうにより近い。
【００３０】
次に、上述のデータ構造を、図５および、本発明の実施例に従って３個のワイヤ、ワイヤＡ、ワイヤＢおよびワイヤＣより構成されるポリゴン５００に関して説明する。各ワイヤ、ワイヤＡ、ワイヤＢおよびワイヤＣは、ワイヤセグメントＡ、ワイヤセグメントＢおよびワイヤセグメントＣとして識別されるワイヤセグメントより構成される。
【００３１】
ワイヤセグメントＡは、両者とも方向矢によって指示される通り（上）方向に向いている２つの有向ワイヤａ１およびａ２より構成されている。ワイヤセグメントＢは、両者とも（左）方向に向いている有向ワイヤｂ１およびｂ２より構成されている。ワイヤＢは、点ｄ１およびｄ２により定義された位置において有向ワイヤａ１でワイヤＡと結合される。ワイヤセグメントＣは、両者とも（右）方向に向いている有向ワイヤｃ１およびｃ２より構成されている。ワイヤＣは、点ｅ１およびｅ２によって定義された位置で有向ワイヤａ１でワイヤＡと結合する。境界ボックスＢＢＸA、ＢＢＸBおよびＢＢＸCは、それぞれ、ワイヤＡ、ワイヤＢおよびワイヤＣの内容を定義し、境界ボックスＢＢＸPはポリゴン５００の内容を定義する。
【００３２】
本発明の一実施例によれば、ポリゴンにおけるワイヤの全部は論理的関係を共有する。例えば、あるポリゴンの場合、ワイヤの全部が物理的に隣接し、電気的特性を共有することができる。別のポリゴンの場合、ワイヤは物理的関係は共有できないが、１群の接点の場合のように電気的に接続され得る。他方、１組のワイヤを、それらのワイヤに単一のポリゴンを共有させるという便宜のために、１個のポリゴンに論理的に分類することもできる。例えば、物理的または電気的に関係しないとはいえ、拡散アイランドのポリシリコンゲートの全部を、その拡散アイランドのポリシリコンゲートの全部を一緒に操作するという便益のために、単一のポリゴンに包含させることができよう。
【００３３】
本発明の実施例に従ってポリゴン５００を表現するために生成されたデータ構造のセットを、図６Ａ〜６Ｅに例示する。図６Ａはポリゴン５００のポリゴンデータ構造６００を示す。ポリゴンデータ構造６００は、ポリゴン５００が３個のワイヤ、すなわちワイヤＡ、ワイヤＢおよびワイヤＣを含むことを指定する。ポリゴンデータ構造６００はまた、ポリゴン５００が拡散層ジオメトリを表現し、ポリゴン番号１を有することも指定している。
【００３４】
ワイヤデータ構造６１０はワイヤＡについて生成される。同様に、ワイヤデータ構造６２０および６３０がワイヤＢおよびワイヤＣについてそれぞれ生成される。ワイヤセグメントデータ構造６４０はワイヤセグメントＡについて生成される。ワイヤセグメントデータ構造６５０はワイヤセグメントＢについて生成される。最後に、ワイヤセグメントＣについてセグメントデータ構造６６０が生成される。同様に、分岐データ構造６６０、６７０および６８０が各ワイヤセグメントについて生成される。さらに、ワイヤＢおよびワイヤＣがワイヤＡの有向縁ａ１に沿ってワイヤＡと接続するので、ワイヤセグメントＡについて２つの側方分岐データ構造６９０および６９５が生成される。
【００３５】
図７は、本発明の実施例に従って２個のワイヤ７０２および７０４より構成されたポリゴン７００を例示する。ワイヤ７０２および７０４は、各々が１対の有向ワイヤより構成された１組の有向ワイヤより構成されている。有向ワイヤの方向は矢７０６により示される。
【００３６】
ポリゴン７００は、ワイヤセグメントによって構成された数種の異なる形式のＩＣレイアウトジオメトリを含んでおり、本発明の一実施例によれば、ポリシリコンまたは金属層ジオメトリのいずれかを表現する。接点エンクロージャ７０８は、屈曲経路７１０を介してワイヤ７０４と接続される。ワイヤ７０４は、３個のワイヤセグメント７１４、７１５および７１６より構成される八角形の接点エンクロージャ７１２を含む。本発明の実施例によれば、またワイヤセグメント７１４および７１６により図示された通り、ワイヤセグメントを構成するために使用された有向ワイヤは、必ずしも平行でなくてもまたは、隣接セグメントと一致する端点を有していなくてもよい。本発明のこの態様は、ワイヤセグメントによって広範なＩＣレイアウトジオメトリを構成可能にする。
【００３７】
図８は、本発明の実施例に従ってワイヤセグメントより構成されたＩＣレイアウト拡散アイランド８００を例示している。拡散アイランド８００は、拡散ジオメトリを表現する拡散領域８０２を含む。拡散アイランド８００は、ポリシリコンジオメトリを表現するポリシリコン領域８０４も含む。さらに拡散アイランド８００は一連の接点８０６も含む。最後に、拡散アイランド８００は、接点８１０を有するウエルタイ８０８を含む。
【００３８】
拡散アイランド８００は３個のポリゴンによって表現されている。拡散アイランド８００の不規則な形状にもかかわらず、１個のポリゴンは、拡散領域８０２の全部を含み、ワイヤセグメント８１２、ワイヤセグメント８１４およびワイヤセグメント８１６より構成される。別のポリゴンは、ポリシリコン領域８０４の全部を含み、各ポリシリコンゲートについて１個ずつ、４個のワイヤより構成される。さらに別のポリゴンは、ウエルタイ８０８に含まれた接点８１０だけでなく全部の接点８０６を含んでいる。接点８０６は、それらの共通の電気的特性により単一のポリゴンにおいて定義することができ、あるいはまた別個のポリゴンとして定義してもよい。例えば、ポリシリコンゲートが側面に複数の接点を有する場合、その側面の接点は、１個の接点領域につき１個のワイヤ（長方形／八角形など）により１個のポリゴンとして示すことができる。
【００３９】
３）ＩＣレイアウト合成におけるデータ構造の使用
本発明の実施例によれば、上述のデータ構造は、ポリゴン幅、間隔および接点エンクロージャといったレイアウトの一定の特性が所定の設計規則を満たしていることを確認するために、ＩＣレイアウト合成において使用される。前述の標準配向の概念は、そのレイアウトにおいて要求される完全な検査の数を最少限にするために役立つので、この種の検証の重要な面である。ＩＣレイアウトの検証の文脈において、完全な検査とは、例えば、別の物体の最も近いポリゴンの側面だけを検査するのと異なり、そのＩＣレイアウトに含まれる別の物体に対するポリゴンの全部の側面を検査するプロセスをいう。
【００４０】
ａ．ワイヤから点への標準配向を決定する
本発明の実施例によれば、有向ワイヤから任意の点への標準配向を決定するために、最高３回の半平面検査が使用される。第１の半平面検査は、任意の点が有向ワイヤの左側、右側または上方にあるかどうかを判定する。第２の半平面検査は任意の点が有向ワイヤの第１の端点の上方または下方にあるかどうかを判定する。第３の半平面検査は任意の点が有向ワイヤの第２の端点の上方または下方にあるかどうかを判定する。３回の半平面検査の結果を評価することによって、有向ワイヤに対する任意の点の位置に起因するあらゆる曖昧さも解決される。
【００４１】
各半平面検査は、有向ワイヤに対する任意の点の点乗積を計算することを伴う。半平面の境界を表現するワイヤは、反時計回りに９０°回転され、任意の点は新しいワイヤに射影される。その時、点乗積の符号は、任意の点が半平面境界の左側（＋１）、境界上（０）または境界の右側（−１）にあるかを決定する。３つの半平面境界はそれぞれ、元のワイヤ、第１の端点を通り９０°回転されたワイヤおよび第２の端点を通り９０°回転されたワイヤである。
【００４２】
図９Ａは、例えば、第１の端点９０２および第２の端点９０４によって定義される有向ワイヤ９００を示す。有向ワイヤ９００の周囲の領域は、図１の配向キー１００に対応する。詳細には、領域９０６は、有向ワイヤ９００に関して上（上）である領域を定義する。領域９０８は、有向ワイヤ９００の右上（右上）である領域を定義する。領域９１０は、有向ワイヤ９００に関して右（右）である領域を定義する。領域９１２は、有向ワイヤ９００の右下（右下）である領域を定義する。領域９１４は、有向ワイヤ９００に関して下（下）である領域を定義する。領域９１６は、有向ワイヤ９００の左下（左下）である領域を定義する。領域９１８は、有向ワイヤ９００の左側である領域を定義する。最後に、領域９２０は、有向ワイヤ９００の左上（左上）である領域を定義する。
【００４３】
任意の点９２５と有向ワイヤ９００との標準配向を決定するために、３回の半平面検査が使用される。第１の半平面検査は、点９２５が有向ワイヤ９００の左側、右側または上方にあるかどうかを判定する。図９Ａに示す通り、点９２５は有向ワイヤ９００の左側にある。これは、第１の半平面検査の完了時点で、点９２５が領域９１６、９１８または９２０に位置づけられることになる。
【００４４】
第２の半平面検査は、点９２５が有向ワイヤ９００の端点９０２の上方または下方にあるかどうかを判定する。第２の半平面検査の結果は、点９２５が第１の端点９０２の上方にあることを指示し、点９２５が領域９１６に位置づけられず、領域９１８または領域９２０のいずれか一方に位置づけられなければならないことを意味する。第３の半平面検査は、点９２５が第２の端点９０４の上方または下方にあるかどうかを判定した。図示の通り、第２の半平面検査は、点９２５が第２の端点９０４の下方にあることを指示し、点９２５が領域９１８または有向ワイヤ９００の左側に位置づけられなければならないことを意味する。
【００４５】
ｂ．ワイヤセグメントから点への標準配向を決定する
ＩＣレイアウト検証において間隔検査を実行するために、ポリゴン間の距離を決定し、適用される設計規則により要求される最小距離と比較しなければならない。一般に、間隔検査はポリゴンと別のポリゴンの選択された点との間で実行される。
【００４６】
本発明の実施例によれば、たかだかポリゴンの２面だけが点に関して検査されればよいように、ワイヤセグメントから点への標準配向を決定する方法が提供される。セグメントの面から任意の点への標準配向の最高４回の検査が実行され、ワイヤセグメントから点への標準配向を決定し、点がワイヤセグメントの内側または外側に位置づけられるかに起因するあらゆる曖昧さを解決する。
【００４７】
図９Ｂは、左側面９５６、右側面９５８、第１の端面９６０および第２の端面９６２によって定義されているワイヤセグメント９５２を例示する。ワイヤセグメント９５２の周囲の領域は、図１の配向キー１００に対応している。詳細には、領域９６４は、ワイヤセグメント９５２に関して上（上）である領域を定義する。領域９６６は、ワイヤセグメント９５２に関して右上（右上）である領域を定義する。領域９６８は、ワイヤセグメント９０２に関して右（右）である領域を定義する。領域９２０は、ワイヤセグメント９５２に関して右下（右下）である領域を定義する。領域９７２は、ワイヤセグメント９５２に関して下（下）である領域を定義する。領域９７４は、ワイヤセグメント９５２に関して左下（左下）である領域を定義する。最後に、領域９７６は、ワイヤセグメント９５２に関して左（左）である領域を定義する。領域９７８は、ワイヤセグメント９５２に関して左上（左上）である領域を定義する。
【００４８】
例えば、ワイヤセグメント９５２から点９８０への標準配向を決定しなければならないと仮定する。左側面９５６に関する点９８０の第１の標準配向検査は、点９８０が左側面９５６の左側、右側または上方にあるかを決定するために実行される。この場合、第１の標準配向検査は点９８０が左側面９５６の右側にあることを指示する。従って、第１の標準配向検査の結果にもとづき、点９８０は、領域９６４、９６６、９６８、９７０および９７２またはワイヤセグメント９５２の内部に位置づけられるはずである。
【００４９】
右側面９５８に関する点９８０の第２の標準配向検査は、点９８０が右側面９５８の左側、右側または上方にあるかを決定するために実行される。この場合、第２の標準配向検査は、点９８０が右側面９５８の左側にあることを指示する。従って、実行された第１および第２の標準配向検査の結果にもとづき、点９８０は、領域９６４および９７２またはワイヤセグメント９５２の内部に位置づけられるはずである。
【００５０】
第１の端面９６０に関する点９８０の第３の標準配向検査は、点９８０が第１の端面９６０の左側、右側または上方にあるかを決定するために実行される。この場合、第３の標準配向検査は、点９８０が第１の端面９６０の左側にあることを指示する。従って、これら３回の標準配向検査の結果にもとづき、点９８０は領域９７２に、つまりワイヤセグメント９５２に関して（下）に位置づけられるはずである。
【００５１】
上記の特定のシナリオの場合、ワイヤセグメントから点への標準配向を疑わしくなく決定するためにわずか３回の標準配向検査を要した。しかし、場合によっては、ワイヤセグメントと点との間の標準配向を明確に決定するために第４の標準配向検査が要求されることもある。例えば、第１の端面９６０に関する点９８０の第３の標準配向検査により点９８０が第１の端面９６０の右側にあると指示された場合、点９７０が領域９６４に位置づけられるか、または、ワイヤセグメント９５２の内部または上方に位置づけられるかを決定するために、第２の端面９６２に関する点９８０の第４の標準配向検査が要求される。
【００５２】
ワイヤセグメントの面から任意の点９８０への標準配向は、領域９６４、９６６、９６８、９７０、９７２、９７４、９７６および９７８が、任意の点９８０からワイヤセグメント９５２までの距離が増加した時に狭くならないように保証するために使用される。これは、２つの隣接する面の間の角度が９０°より大きい場合には常に生じ得る。
【００５３】
ｃ．間隔検査
本発明の実施例によれば、ワイヤセグメントおよび標準配向によって構成されたポリゴン間の間隔検査を実行するための手法が提供される。図１０は、拡散アイランド１００２および拡散アイランド１００４を含むＩＣレイアウト１０００を例示している。拡散アイランド１００２は、拡散ジオメトリを表現し、単一のワイヤセグメントより構成されるポリゴン１００５を含む。同様に、拡散アイランド１００４は、拡散ジオメトリを表現し、単一のワイヤセグメントより構成されるポリゴン１００９を含む。
【００５４】
本発明の実施例によれば、ワイヤセグメントの平行で重なり合う縁の間の間隔検査の実行は、ワイヤ間の直交距離を、適用設計規則により要求される最小間隔と比較することによって実現される。例えば、ポリゴン１００５とポリゴン１００９との間の間隔検査の実行は、有向ワイヤａ上の点ａ１およびａ２と有向ワイヤｂ上の点ｂ１およびｂ２との間の直交距離を計算し、計算された距離を設計規則によって指定された最小間隔と比較することを含む。計算された距離が設計規則により指定の最小間隔を満たしていない場合、１００５または１００９のいずれか一方を移動しなければならない。例えば、ポリゴン１００５とポリゴン１００９との間の間隔が設計規則により指定の最小間隔を満たしていない場合、ポリゴン１００５とポリゴン１００９との間の間隔を増大させるためにポリゴン１００５を下方へ移動させることができる。あるいはまた、ポリゴン１００９を上方へ移動させてもよい。
【００５５】
重なり合っていないワイヤ間の間隔を計算するために、２ワイヤ間の直近の角が使用され、直交距離の代わりに、非直交距離またはマンハッタン距離が使用される。用語「マンハッタン距離」は、各単位がＸ方向について１単位かつＹ方向について１単位である距離をいう。その場合、結果として得られる方向ベクトルは、（左上）、（右上）、（右下）または（左下）のいずれかである。間隔が、設計規則によって指定された最小間隔を満たしていない場合、ポリゴンのうちの一方は、角の１個の２つの対向する面と反対の方向に移動される。
【００５６】
例えば、図１０において拡散−ポリシリコン間隔検査がポリゴン１００９の点ｂ１とポリゴン１０１０の点ｃ１との間で実行されると仮定する。点ｂ１と点ｃ１との間の距離が設計規則により指定の最小間隔を満たしていない場合、ポリゴン１０１０は、ポリゴン１０１０の一方の直近の面１０１４が上に向いており、他方の直近の面１０１４が右を向いているので、（左下）方向に移動される。同様に、ポリゴン１００９は、（右上）方向に移動され得る。
【００５７】
間隔の違反が識別され、設計規則を満たすためにポリゴンの一方が移動されるべき方向が決定されると、最小間隔要求条件を満たすためにポリゴンが移動されるべき距離が決定される。本発明の実施例によれば、間隔要求条件を満たすようにレイアウトジオメトリを再配置するための距離を決定する新規の手法が提供される。この手法は概略、設計規則により要求される最小間隔を満たすためにそのレイアウトジオメトリと他のレイアウトジオメトリとの間に維持されなければならない最小分離を定義するためにレイアウトジオメトリの周囲に「排他ゾーン」を構成することを含む。この手法はいかなる特定のデータ構造アーキテクチャにも依存しない。他のジオメトリの一部である点が排他ゾーン内にある場合、間隔違反が存在する。
【００５８】
図１１に示す通り、ワイヤセグメント１１００は、点１１０５で会合する２個の有向ワイヤ１１０２および１１０４より少なくとも部分的に構成される。排他ゾーンを構成するために、２本の線１１０６および１１０８は、有向ワイヤ１１０２および１１０４から離間されて有向ワイヤ１１０２および１１０４の方向ベクトルに沿って構成され、設計規則を満たしている。線１１０６および１１０８は、有向ワイヤ１１０２および１１０４の方向に直角な方向で点１１０５から外方へ移動することによって形成される。有向ワイヤ１１０２および１１０４が互いに直角であれば、線１１０６および１１０８を接続する第３の線１１１０が構成される。線１１０６、１１０８および１１１０はワイヤセグメント１１００の周囲の排他ゾーン１１１２を形成する。有向ワイヤ１１０２および１１０４が直角であれば、有向ワイヤ１１０２および１１０４に関する線１１０６および１１０８の配置は、デカルト幅、間隔またはエンクロージャ値にもとづく。第３の線１１１０の配置は、設計規則による指定に従ったマンハッタン幅、間隔またはエンクロージャにもとづく。マンハッタン幅、間隔またはエンクロージャ規則がデカルト規則に対して増加すると、線１１１０はワイヤセグメント１１００から外方へ移動するのに対して、線１１０６および１１０８は適所にとどまる。限界として、線１１１０は線１１０６および１１０８の交差まで移動することができる。
【００５９】
他方、有向ワイヤ１１０２および１１０４が非直交であれば、有向ワイヤ１１０２および１１０４に関する線１１０６および１１０８の配置は、必要なデカルト距離を得るのに必要なマンハッタン距離を得るために、２の平方根で割りその次の整数値に丸められたデカルト幅、間隔またはエンクロージャ値にもとづく。
【００６０】
本発明の実施例に従った間隔要求条件を満たすためにワイヤセグメントを再配置する手法は、図１２の流れ図によって以下に説明する。工程１２００の開始後、工程１２０２において、２本の線１１０６および１１０８が、ワイヤセグメントを構成する２つの方向ベクトルに沿って構成される。工程１２０４で、有向ワイヤ１１０２および１１０４が直角であるか否かに関する判断がなされる。肯定であれば、工程１２０６において、有向ワイヤ１１０２および１１０４が直交であるか否かに関する判断がなされる。有向ワイヤ１１０２および１１０４の両方が直角かつ直交である場合、工程１２０８で、マンハッタン距離が使用され、２本の構成された線に関して第３の線１１１０を配置する。
【００６１】
他方、工程１２０４において、有向ワイヤ１１０２および１１０４が直角ではないと判断された場合、排他ゾーンは有向ワイヤ１１０６および１１０８より成り、プロセスは工程１２１４で完了する。しかし、工程１２０６で、有向ワイヤ１１０２および１１０４が直交ではないと判断された場合、工程１２１０において、第１の２本の構成された線に関する第３の線１１１０の位置は、設計規則により指定の（２の平方根とマンハッタン距離との積を丸めた）最小デカルト距離にもとづく。
【００６２】
その後、工程１２１２において、有向ワイヤ１１０２と１１０４との間に第３の線１１１０が構成され配置される。プロセスは工程１２１４で完了する。この手法は、ポリゴン幅および接点エンクロージャを検査および訂正するためにも使用することができる。
【００６３】
ｄ．ポリゴン出力を生成する
本発明の実施例によれば、上述のデータ構造階層にもとづくポリゴン出力を生成する機能が提供される。この手法は、各ワイヤセグメントについて１個のポリゴンを生成する代替的手法よりも少数のポリゴンを生じる。少ないポリゴンを生成することによって、設計規則検査、回路抽出およびマスク製作といった分析プログラムを実行させるために要する時間を短縮する。ＣＡＤパッケージの文脈では、少ないポリゴンは、画面上にポリゴンが少なくなるのでレイアウトを見やすくすることにもなる。概略、この手法は、ポリゴンの数を低減するために後に結合される点の共線集合を識別するために、各ワイヤのワイヤセグメントデータ構造を評価することを伴う。本発明の一実施例によれば、隣接するワイヤセグメントの左側面が評価された後、同じ隣接するワイヤセグメントの右側面が評価される。
【００６４】
例えば、図１３Ａは、本発明の実施例に従って、３個の隣接するワイヤセグメント１３０２、１３０４および１３０６より構成されるワイヤ１３００を例示している。ワイヤセグメント１３０２の左側面は、端点ａ１およびａ２により定義される有向ワイヤａにより定義されている。ワイヤセグメント１３０４の左側面は、端点ｂ１およびｂ２により定義される有向ワイヤｂにより定義されている。ワイヤセグメント１３０６の左側面は、端点ｃ１およびｃ２により定義される有向ワイヤｃにより定義されている。本発明の実施例に従ってワイヤ１３００のポリゴン表現を生成するために、ワイヤセグメント１３０２、１３０４および１３０６の左右の側面に沿った点の共線集合が結合される。有向ワイヤａは有向ワイヤｂと共線的であるので、点ａ２およびｂ１は削除でき、それにより有向ワイヤ１３０２および１３０４に沿って単一の左側面を効果的に生成する。同様に、点ｂ２およびｃ１は一致するので、それらは単一の点で置換できる。図１３Ｂは、点の共線集合が本発明の実施例に従って結合された後の図１３Ａのワイヤ１３００のポリゴン表現１３０８を例示する。
【００６５】
いくつかのポリゴン操作プロセスは、ポリゴンあたりのポリゴン点の最大数を規定している。この場合、この手法に従ってトレースできるセグメントの数は、許容ポリゴンの最大数を４で割った数に制限される。あるワイヤについて、ワイヤセグメントの数がこの数を超えた場合、そのワイヤを表現するために付加的なポリゴンが使用される。
【００６６】
[ハードウェア概要]
図１４は、本発明の実施例を実施できるコンピュータシステム１４００を例示するブロック図である。コンピュータシステム１４００は、バス１４０２または、情報を通信するための他の通信機構および、情報を処理するためのバス１４０２と結合されたプロセッサ１４０４を含む。コンピュータシステム１４００はまた、情報およびプロセッサ１４０４により実行される命令を記憶するためのバス１４０２に結合された、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置といったメインメモリ１４０６も含む。メインメモリ１４０６は、プロセッサ１４０４により実行される命令の実行において一時変数または他の中間的情報を記憶するためにも使用され得る。コンピュータシステム１４００はさらに、プロセッサ１４０４のための静的情報および命令を記憶するためのバス１４０２に結合されたリードオンリメモリ（ＲＯＭ）１４０８または他の静的記憶装置を含む。磁気ディスクまたは光ディスクといった記憶装置１４１０が備わっており、情報および命令を記憶するためにバス１４０２に結合されている。
【００６７】
コンピュータシステム１４００は、バス１４０２を介して、コンピュータユーザーに情報を表示するための陰極線管（ＣＲＴ）といったディスプレイ１４１２と結合することができる。英数字キーおよび他のキーを備える入力装置１４１４は、情報およびコマンド選択をプロセッサ１４０４に通信するためにバス１４０２に結合されている。別の形式のユーザー入力装置は、指示情報およびコマンド選択をプロセッサ１４０４に通信し、ディスプレイ１４１２でのカーソル移動を制御するための、マウス、トラックボールまたはカーソル指示キーといったカーソル制御装置１４１６である。この入力装置は一般に、第１の軸（例えばｘ）および第２の軸（例えばｙ）の２軸における２自由度を有し、装置が平面における位置を指定できるようにする。
【００６８】
本発明は、ＩＣレイアウトにおけるポリゴンを表現するためのコンピュータシステム１４００の使用に関連する。本発明の一実施例によれば、ＩＣレイアウトにおけるポリゴンの表現は、メインメモリ１４０６に含まれた命令シーケンスを実行するプロセッサ１４０４に応答してコンピュータシステム１４００によって提供される。そうした命令は、記憶装置１４１０といった別のコンピュータ可読媒体からメインメモリ１４０６に読み込むことができる。しかし、このコンピュータ可読媒体は記憶装置１４１０といった装置に限定されるものではない。例えば、コンピュータ可読媒体には、フロッピィディスク、フレキシブルディスク、ハードディスク、磁気テープまたは他のあらゆる磁気媒体、ＣＤ−ＲＯＭ、他のあらゆる光学媒体、穿孔カード、紙テープ、穴のパターンを備える他のあらゆる物理的媒体、ＲＡＭ、ＰＲＯＭ、ＦＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のあらゆるメモリチップまたはカートリッジ、後述する搬送波、または、コンピュータが読み取ることができる他のあらゆる媒体が含まれる。
【００６９】
メインメモリ１４０６に含まれた命令シーケンスの実行は、プロセッサ１４０４に前述のプロセス工程を実行させる。代替実施例では、本発明を実施するためにソフトウエア命令の代わりにまたはそれらとの組合せにおいて、ハードワイヤード回路を使用することができる。従って、本発明の実施例は、ハードウェア回路およびソフトウェアのいずれかの特定の組合せに限定されるものではない。
【００７０】
また、コンピュータシステム１４００は、バス１４０１に結合された通信インタフェース１４１８も含む。通信インタフェース１４１８は、ローカルネットワーク１４２２に接続されているネットワークリンク１４２０と双方向データ通信結合を可能にする。例えば、通信インタフェース１４１８は、対応する形式の電話回線とのデータ通信接続を行う統合サービスディジタルネットワーク（ＩＳＤＮ）カードまたはモデムとしてよい。別の例として、通信インタフェース１４１８は、互換性のあるＬＡＮとのデータ通信接続を行うローカルエリアネットワーク（ＬＡＮ）カードとすることができる。ワイアレスリンクも実施できよう。そうしたいずれの実施においても、通信インタフェース１４１８は、各種情報を表現するディジタルデータストリームを搬送する電気的、電磁気的または光学的信号を送信および受信する。
【００７１】
ネットワークリンク１４２０は一般に、１個以上のネットワークを介して他のデータ装置とのデータ通信を可能にする。例えば、ネットワークリンク１４２０は、ローカルネットワーク１４２２を介して、ホストコンピュータ１４２４またはインターネットサービスプロバイダー（ＩＳＰ）１４２６により操作されるデータ装置との接続を行うことができる。ＩＳＰ  １４２６はさらに、現在「インターネット」１４２８と普通に称される世界規模のパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク１４２２およびインターネット１４２８は両方とも、ディジタルデータストリームを搬送する電気的、電磁気的または光学的信号を使用する。各種ネットワークを通る信号、ネットワークリンク１４２０上および通信インタフェース１４１８を通る信号は、コンピュータシステム１４００との間で情報を搬送しており、情報を転送する搬送波の例示的な形態である。
【００７２】
コンピュータシステム１４００は、単数または複数のネットワーク、ネットワークリンク１４２０および通信インタフェース１４１によって、プログラムコードを含む、メッセージを送信し、データを受信できる。インターネットの例では、サーバー１４３０は、インターネット１４２８、ＩＳＰ  １４２６、ローカルネットワーク１４２２および通信インタフェース１４１８を介して、アプリケーションプログラムの要求されたコードを送信することができよう。本発明によれば、そのようなダウンロードされた１つのアプリケーションが本書に説明したＩＣレイアウトにおけるポリゴンの表現を可能にする。
【００７３】
受信されたコードは、受信された時点でプロセッサ１４０４によって実行されるか、かつ／または、後の実行のために記憶装置１４１０または他の不揮発性記憶装置に記憶することができる。このようにして、コンピュータシステム１４００は、搬送波の形態でアプリケーションコードを取得することができる。
【００７４】
本発明の実施例を例示のためにトランジスタを含むＩＣレイアウトの文脈において説明したが、本発明は、抵抗、コンデンサ、論理ゲートまたは他のあらゆる種類のＩＣデバイスといった、あらゆる種類の集積回路構成要素またはデバイスを含むＩＣレイアウトに適用可能である。
【００７５】
本発明は、ＩＣレイアウトにおけるポリゴンを表現するための従来の手法にまさるいくつかの利益を提供する。第一に、最も複雑なジオメトリでさえ、八角形接点エンクロージャおよび不規則形拡散アイランドを含むワイヤセグメントによって表現可能である。また、ワイヤセグメントによるポリゴンの表現は、間隔およびエンクロージャ検査といったジオメトリ分析を容易にする。ワイヤセグメントは、露出したポリゴンの縁のほとんどが既知であり、幅、間隔およびエンクロージャ検査は露出したポリゴンの縁に適用される場合にのみ妥当であるので、ジオメトリ分析にとって都合がよい。台形のデータベースにおける水平縁の多くは実際上ポリゴンにとって内部的であり、分析ソフトウェアは、外部の縁を見つけるために相当な努力を費やさなければならない。ワイヤセグメントはまた、多くの普通のレイアウト形状を直接表現することができ、（排他ゾーンといった）より複雑な規則を容易に実施可能にする。例えば、ポリシリコンゲートは、ゲートポリゴンがある角度でトラバースしている際に、その幅が大きくならなければならないという要求条件を有するかもしれない。ゲートポリゴンがワイヤセグメントにより直接構成されるので、ワイヤ方向を検査し、それらの角度が非直交である時にそれらの分離が大きくなるようにすることによって、この規則をセグメント単位で強制することは容易である。ワイヤセグメント手法はまた、ワイヤセグメントの使用によりワイヤの抵抗が迅速に計算できるので、抵抗検査といった比較的容易な電気分析を助成する。ワイヤセグメント手法は、ワイヤセグメントがデータ構造において容易に表現されるので、コンピュータソフトウェアにおける実装にも好適である。ワイヤセグメントの利点は、それらが普通に使用されるレイアウト構造に形式上より近似であることであり、従って、それらの構造を表現するために少数しか必要とせず、わずか１個または２個のデータ構造を検査すればオブジェクトの形状が明らかにならないことはほとんどない。台形および長方形の場合、ポリゴン形状に対するわずかな変更が、台形データ構造をポリゴンの他の側面に関して全体にわたる修正を生じさせ、ポリゴンを単位として作業することを困難にすることもあり得る。
【００７６】
上述の明細書において、本発明をその特定の実施例に関して説明した。しかし、本発明の広範な精神および範囲を逸脱することなく、多様な修正および変形が行い得ることは明白であろう。従って、その明細書および図面は、限定的な意味ではなく、例示的な意味において考慮されなければならない。
【図面の簡単な説明】
発明の実施形態が、添付の図の中で、制限されることなく一例として描かれ、その中の参照符号は、同種の部材を参照する。
【図１】図１は、本発明の一実施形態による標準方向を描いている。
【図２】図２は、本発明の一実施形態による有向線セグメント及び隣接する点を描いている。
【図３】図３は、本発明の一実施形態によるワイヤを描いている。
【図４Ａ】図４Ａは、本発明の一実施形態による点データ構造を描いている。
【図４Ｂ】図４Ｂは、本発明の一実施形態による有向線セグメントデータ構造を描いている。
【図４Ｃ】図４Ｃは、本発明の一実施形態によるワイヤセグメントデータ構造を描いている。
【図４Ｄ】図４Ｄは、本発明の一実施形態による線データ構造を描いている。
【図４Ｅ】図４Ｅは、本発明の一実施形態によるポリゴンデータ構造を描いている。
【図４Ｆ】図４Ｆは、本発明の一実施形態による分岐データ構造を描いている。
【図４Ｇ】図４Ｇは、本発明の一実施形態による側面分岐データ構造を描いている。
【図５】図５は、本発明の一実施形態によるワイヤセグメントから構築されるポリゴンを描いている。
【図６Ａ】図６Ａは、本発明の一実施形態による図５のポリゴンに関連した１組のデータ構造を描いている。
【図６Ｂ】図６Ｂは、本発明の一実施形態による図５のポリゴンに関連した１組のデータ構造を描いている。
【図６Ｃ】図６Ｃは、本発明の一実施形態による図５のポリゴンに関連した１組のデータ構造を描いている。
【図６Ｄ】図６Ｄは、本発明の一実施形態による図５のポリゴンに関連した１組のデータ構造を描いている。
【図６Ｅ】図６Ｅは、本発明の一実施形態による図５のポリゴンに関連した１組のデータ構造を描いている。
【図７】図７は、本発明の一実施形態によるワイヤセグメントから構築される第２のポリゴンを描いている。
【図８】図８は、本発明の一実施形態によるワイヤセグメントから構築される拡散領域を描いている。
【図９Ａ】図９Ａは、本発明の一実施形態による有向線及び指向キーを描いている。
【図９Ｂ】図９Ｂは、本発明の一実施形態によるワイヤセグメント及び指向キーを描いている。
【図１０】図１０は、本発明の一実施形態によるワイヤセグメントを用いて構築されたＩＣレイアウトの一部を描いている。
【図１１】図１１は、本発明の一実施形態によるポリゴンの間隔を決定するための排他ゾーンの使用を描いている。
【図１２】図１２は、本発明の一実施形態によるポリゴン間の間隔検査を実行するための方法を描いたフローチャートを示しており、
【図１３Ａ】図１３Ａは、本発明の一実施形態によるワイヤセグメントを用いて構築されたワイヤを描いている。
【図１３Ｂ】図１３Ｂは、本発明の一実施形態による図１３Ａのワイヤのポリゴン表現を描いている。
【図１４】図１４は、本発明の一実施形態が実装されるコンピュータシステムのブロック図を描いている。
【図１】
0003710710.tif 000002
【図２】
0003710710.tif 000003
【図３】
0003710710.tif 000004
【図４Ａ】
0003710710.tif 000005
【図４Ｂ】
0003710710.tif 000006
【図４Ｃ】
0003710710.tif 000007
【図４Ｄ】
0003710710.tif 000008
【図４Ｅ】
0003710710.tif 000009
【図４Ｆ】
0003710710.tif 000010
【図４Ｇ】
0003710710.tif 000011
【図５】
0003710710.tif 000012
【図６Ａ】
0003710710.tif 000013
【図６Ｂ】
0003710710.tif 000014
【図６Ｃ】
0003710710.tif 000015
【図６Ｄ】
0003710710.tif 000016
【図６Ｅ】
0003710710.tif 000017
【図７】
0003710710.tif 000018
【図８】
0003710710.tif 000019
【図９Ａ】
0003710710.tif 000020
【図９Ｂ】
0003710710.tif 000021
【図１０】
0003710710.tif 000022
【図１１】
0003710710.tif 000023
【図１２】
0003710710.tif 000024
【図１３Ａ】
0003710710.tif 000025
【図１３Ｂ】
0003710710.tif 000026
【図１４】
0003710710.tif 000027