(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、図面にしたがって本発明の実施の形態について説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。尚、図面が異なっても対応する部分には同一の符号を付し、その説明を省略する。
【0012】
(1)パターン補正装置
図1は、実施の形態のパターン補正方法を実行するパターン補正装置2の構成図である。
【0013】
パターン補正装置2は
図1に示すように、マスターマシン4と、マスターマシン4の命令に従ってOPC処理を実行するスレーブマシン6と、マスターマシン4とスレーブマシン6を接続するネットワーク8とを有する。マスターマシン4およびスレーブマシン6は、コンピュータである。
【0014】
パターン補正装置2は、マスターマシン4によりレイアウトパターン(フォトマスク全体のパターン)を複数の領域に分割し、分割された領域をスレーブマシン6に並列処理させる。
【0015】
―マスターマシン―
図2は、マスターマシン4の構成図である。
【0016】
マスターマシン4は、例えばCPU(Central Processing Unit)10と、ROM(Read Only Memory)12と、RAM(Random Access Memory)14と、ハードディスクを有するHDD(Hard Disk Drive)16とを有する。HDD16は、コンピュータにより読取可能な記録媒体である。
【0017】
さらにマスターマシン4は、ネットワークインターフェース18と、キーボードやマウスなどの入力機器20と、表示装置22と、バス24とを有する。バス24には、上記各装置(CPU等)が接続される。
【0018】
RAM14は、CPU10が直接アクセスできる主記憶装置(メインメモリ)である。HDD16は、補助記憶装置である。マスターマシン4は、DVDD(Digital Versatile Disc Driver)などの他の補助記憶装置を有してもよい。DVDDには、DVD−R(Digital Versatile Disk Recordable)などの記録媒体が装着される。
【0019】
CPU10はHDD16を制御するとともに、HDD16に記録されたプログラムをRAM14にロードし、ロードされたプログラムを実行する。RAM14にはプログラム以外にも、CPU10がプログラムを実行する際の途中データが一時的に記録される。
【0020】
ROM12には、CPU10が実行する基本的なプログラム等が記録されている。
【0021】
HDD16には、実施の形態のパターン補正方法をCPU10に実行させるレイアウトパターン補正プログラム26が記録されている。レイアウトパターン補正プログラムは、CPU10が実行可能なプログラムである。
【0022】
―スレーブマシン―
スレーブマシン6の構成は、
図2に示すマスターマシン4の構成と略同じである。ただしスレーブマシン6のHDDには、マスターマシン4の命令に応答してOPC処理を実行するOPCプログラムが記録されている。
【0023】
マスターマシン4とスレーブマシン6を有するコンピュータ群は、マスターマシン4のCPU10がレイアウトパターン補正プログラム26を実行するとともにスレーブマシンのCPUがOPCプログラムを実行することで、パターン補正装置になる。
【0024】
(2)パターン補正方法
図3〜5は、実施の形態のレイアウトパターン補正方法のフローチャートの一例である。
【0025】
(i)前工程(S2〜S4)
マスターマシン4は、まずフォトマスクのパターン(以下、レイアウトパターンと呼ぶ)を取得する。取得されるレイアウトパターンは、集積回路の形成に用いられる複数のフォトマスクそれぞれのパターンを有している。
【0026】
具体的にはマスターマシン4は
図3に示すように、ネットワーク8を介して集積回路の形成に用いられるフォトマスクの図形データ(以下、レイアウトデータと呼ぶ)を取得する(S2)。取得されたレイアウトデータは、例えばHDD16に記録される。
【0027】
レイアウトデータは、例えばフォトマスクに含まれる各パターンの「形状」を表す形状情報と各パターンの「座標」と各パターンが含まれる「レイヤー」を表すレイヤー情報とを有する。「レイヤー」は、集積回路の形成に用いられる複数のフォトマスクを識別する識別子である。
【0028】
「形状」は例えば、多角形である。「座標」は例えば、各パターンの頂点座標である。レイヤーの識別子は例えば、層番号と型番号である。レイアウトデータのフォーマットは例えば、GDS II(Graphic Design System II)またはOASIS(Open Artwork System Interchange Standard)である。
【0029】
マスターマシン4はさらに、ネットワーク8を介して該レイアウトデータに対応するネットリストを取得する(S2)。取得されたネットリストは、例えばHDD16に記録される。
【0030】
マスターマシン4はさらに、ネットワーク8を介して上記レイアウトデータに対応するネーミングルールを取得する(S2)。取得されたネーミングルールは、例えばHDD16に記録される。
【0031】
マスターマシン4はさらに、OPC処理するレイヤーの識別情報を取得する(S2)。具体的には例えばレイヤー名(例えば、「第1金属層」)がマスクパターンの設計者により、入力機器20によりマスターマシン4に入力される。入力された識別情報は、例えば上記識別子に変換されHDD16に記録される。
【0032】
以後「レイアウトパターン」とは、取得されたレイヤー識別情報に対応するフォトマスク全体のパターンを意味する。「レイアウトデータ」とは、このレイアウトパターンのデータである。
【0033】
さらにマスターマシン4は
図3に示すように、ネットワーク8に接続された各コンピュータに問い合わせてOPC処理の実行が可能な装置の識別情報(ホスト名など)を取得する(S4)。取得された識別情報は例えば、HDD16に記録される。OPC処理の実行が可能なコンピュータの識別情報は、予めHDD16に記録されていてもよい。取得された識別情報に対応するコンピュータは、スレーブマシン6として利用される。
【0034】
(ii)機能ブロック領域の検出(S6)
図6は、集積回路のレイアウトパターン28を説明する図である。
【0035】
ASIC(Application Specific Integrated Circuit)など集積回路は、一定の機能を有する機能ブロック(例えば、SRAM(Static Random Access Memory)やCPUなど)を含んでいる。このような集積回路のレイアウトパターン28は
図6に示すように、機能ブロックに対応する機能ブロック領域30を含んでいる。
【0036】
マスターマシン4は、集積回路のレイアウトパターン28から機能ブロックに対応する機能ブロック領域30を検出する(S6)。
【0037】
具体的には例えばマスターマシン4はまず、レイアウトパターン28に対応するネットリスト(結線情報)からセル名を検出する。
【0038】
図7は、ネットリストの構成を示す図である。集積回路は、集積回路に含まれる各ゲート(論理ゲートやバッファなど)の端子(ピン)が
どのように接続されているかを示す結線情報により表される。
【0039】
ネットリストには
図7に示すように、各機能ブロックの結線情報32が記録されている。ネットリストはさらに、ネット名34とセル名36とを有している。ネット名34は、機能ブロックの整理番号である。セル名36は、機能ブロックのネットリスト上の名称である。ネット名34およびセル名36は、結線情報32に対応している。
【0040】
機能ブロック領域30(
図6参照)内の各パターンのデータ(形状情報、座標、レイヤー情報;以後、パターンデータと呼ぶ)は、ネットリストのセル名36が対応付けられている。
【0041】
マスターマシン4はまず、ステップS2で取得したネットリストからセル名36を検出する。マスターマシン4はネットリストから検出したセル名36をキーとして、ステップS2で取得したレイアウトデータを検索して、各機能ブロック領域30内のパターンに対応するパターンデータを検出する。マスターマシン4は検出したパターンデータに基づいて、各機能ブロック領域30の位置座標(例えば、対角する頂点の座標)を算出する。
【0042】
図8は、ネーミングルール38を説明する図である。ネーミングルール38は、セル名36とデバイスパターン40の対応関係を示すデータである。デバイスパターン38は、機能ブロックの名称(以下、機能ブロック名と呼ぶ)である。デバイスパターン40から、機能ブロックの機能や最小線幅などを知ることができる。
【0043】
マスターマシン4はステップS2で取得したネーミングルール38を検索して、ネットリストから検出したセル名36に対応するデバイスパターン40を検出する。
【0044】
マスターマシン4は、算出した機能ブロック領域30の位置座標と検出したデバイスパターン40とを有する機能ブロック領域30の位置データを生成する。
図9は、機能ブロック領域30の位置データ42を説明するテーブルである。
【0045】
機能ブロック領域30の位置データ42は例えば
図9に示すように、機能ブロック名44(すなわち、デバイスパターン40)を有する複数のデータ(例えば、レコード)を有する。該データはそれぞれ、機能ブロック名44と、機能ブロック名44に対応する機能ブロック領域30の左下頂点の位置座標46と、該機能ブロック名44に対応する機能ブロック領域30の右上頂点の位置座標48とを有する。座標の単位は、例えばμmである。
【0046】
機能ブロック領域30の位置データ42を参照することで、機能ブロック領域30の位置と機能ブロック30の最小線幅などを知ることができる。
【0047】
(iii)分割工程(S8〜S12)
図10〜13は、レイアウトパターンの分割工程を説明する図である。
【0048】
図6に示すように、集積回路のレイアウトパターン28は多くの場合、複数の機能ブロック領域30を有している。第1機能ブロック領域30a〜第3機能ブロック領域30cは、例えばSRAMに対応する領域である。第4機能ブロック領域30dは、例えばロジック回路に対応する領域である。第5機能ブロック領域30eは、例えば入出力回路に対応する領域である。
【0049】
図10(a)には、第1機能ブロック領域30a内の一部分が示されている。
図10(b)には、第5機能ブロック領域30e内の一部分が示されている。
図10(a)及び(b)に示すように、第1機能ブロック領域30a内のパターン50の線幅と第5機能ブロック領域30eのパターン52の線幅は異なる。第2機能ブロック領域30b〜第4機能ブロック領域30d内のパターンの線幅も、他のブロック内の線幅とは異なる。
【0050】
―単位サイズの決定(S8)―
機能ブロックの最小線幅は、その機能および世代(例えば、65nm世代)に応じて固有の値を有する。マスターマシン4は、機能ブロック領域30を分割する単位エリアのサイズを、機能ブロック領域30ごとに決定する(S8)。マスターマシン4はさらに、機能ブロック領域30の外側の領域(以下、機能ブロック外領域と呼ぶ)を分割する単位エリアのサイズを決定する(S8)。最小線幅に基づいて単位エリアのサイズを決定することにより、単位エリアに含まれるパターンのデータ量を概ねねらい値に揃えることができる。それにより、コンピュータでOPC処理する際に必要となるメモリ量がある程度予測することができ、後述する再測定(S20)および単位サイズの再設定の手間を抑制することができる。
【0051】
単位エリアは、一定のサイズを有する領域である。単位エリアのサイズとは例えば、単位エリアが矩形領域の場合、各辺の一定の長さである。単位エリアのサイズは以後、単位サイズと呼ばれる。
【0052】
単位サイズは例えば、各機能ブロック(機能ブロック領域30に対応する機能ブロック)の最小線幅の数倍(例えば、4〜10倍)の辺長である。マスターマシン4は、決定した単位サイズを有する単位サイズデータを生成する。
図11は、単位サイズデータ54を説明するテーブルである。
【0053】
単位サイズデータ54は
図11に示すように、機能ブロック名44または機能ブロック外領域の名称56に対応するブロック名58と該ブロック名58に対応する領域の単位サイズ60とをそれぞれ有する複数のデータ(例えば、レコード)を有する。単位サイズの単位は、例えばμmである。例えば「SRAM1」の単位サイズは、縦6.5μm、横6.5μmである。
【0054】
各機能ブロック領域の最小線幅は、例えば入力機器20からマスターマシン4に入力される。具体的には例えばマスターマシン4は、ステップS6で検出した機能ブロック名44を表示装置22に表示する。するとマスクパターンの設計者は、機能ブロック名44から判明する各機能ブロックの最小線幅をマスターマシン4に入力する。
【0055】
―処理対象ブロックの決定(S10)―
マスターマシン4は単位サイズデータ54(
図11)を参照して例えば、OPC処理が行われていない機能ブロック領域30のうち単位サイズ60が最も小さいものを、OPC処理を行うブロック(以下、処理対処ブロックと呼ぶ)に決定する(S10)。
図11に示す例では、マスターマシン4はブロック名「SRAM1」に対応する第1機能ブロック30a(
図6)を選択する。
【0056】
単位サイズ60が最も小さい機能ブロック領域を処理対象ブロックに選択することで、メモリ不足によりOPC処理に障害をきたさないかを早期に検知することができる。
【0057】
―機能ブロックの分割(S12)―
次にマスターマシン4は
図12に示すように、選択された機能ブロック領域30を単位エリア62に分割する(S12)。単位エリア62は上述したように、単位サイズ60を有する領域である。
【0058】
さらにマスターマシン4は、分割された単位エリア62の位置などを表すデータ64(以下、単位エリアデータと呼ぶ)を生成する。
図13は、単位エリアデータ64を説明するテーブルである。
図13に示すように単位エリアデータ64は例えば、単位エリア62の対角する頂点の座標66と処理状況68とメモリ使用量70とをそれぞれ有する複数のデータ(例えば、レコード)を有している。
【0059】
頂点座標66は例えば、単位エリア62の左下の頂点座標と単位エリア62の右上の頂点座標である。処理状況68は、各単位エリア62のOPC処理が開始済み(すなわち、各単位エリア62のOPC処理をスレーブマシン6に命令済み)であるか否かを示す。OPC処理が終了している場合も、「OPC処理は開始済み」である。
【0060】
処理状況68の初期値は、未処理である。メモリ使用量70は、各単位エリア62のOPC処理に使われるメモリ量である。メモリ使用量70の初期値は、ヌル・データである。
【0061】
(iv)同時処理数の決定工程(S14〜S26)
図14及び15は、同時処理数の決定工程を説明する図である。
【0062】
―メモリ使用量の測定(S14)―
マスターマシン4は
図14に示すように、機能ブロック領域30から分割された複数の単位エリア62から、複数のエリア72(以下、サンプルエリアと呼ぶ)を選択する。サンプルエリア72の数は例えば、ステップS4で識別子を取得したスレーブマシン6と同数である。サンプルエリア72の数は、スレーブマシン6の数より少なくてもよい。
【0063】
マスターマシン4は、ステップS4で取得した識別子に対応するスレーブマシン6それぞれに、サンプルエリア72のOPC処理を行わせる。各スレーブマシン6は、異なるサンプルエリア72をOPC処理する。尚、あるエリア(領域)をOPC処理するとは、該エリア内のパターンをOPC処理することを意味する。
【0064】
各スレーブマシン6は、OPC処理に使用されたメモリ使用量をマスターマシン4に送信する。メモリ使用量は、例えば各スレーブマシン6のOS(Operating System)により検出される。各スレーブマシン6はさらに、OPC処理されたサンプルエリア72のパターンデータをマスターマシン4に送信する。
【0065】
各スレーブマシン6のOPC処理プログラムは、略同じものである。したがって各スレーブマシン6のメモリ使用量は、処理対象ブロックが同じであれば略同じである。
【0066】
マスターマシン4は各サンプルエリア72のメモリ使用量を受信すると、単位エリアデータ64(
図13参照)のメモリ使用量70を受信したメモリ使用量で書き換える。具体的にはマスターマシン4は、OPC処理された各サンプルエリア72の頂点座標66に対応するメモリ使用量70の初期値(ヌルデータ)を、該各サンプルエリア72をOPC処理したスレーブマシン6のメモリ使用量で置き換える。
【0067】
マスターマシン4はさらに、
図15に示すように、単位エリアデータ64の処理状況68を変更する。具体的にはマスターマシン4は、(OPC処理が行われた)各サンプルエリア72に対応する処理状
況68を、OPC処理の開始済みを意味する「完了」に変更する。
【0068】
マスターマシン4はさらに、OPC処理された各サンプルエリア72のパターンデータを有するレイアウトデータ(以下、OPCデータと呼ぶ)を生成する。OPCデータのフォーマットは例えば、GDS IIまたはOASISである。OPCデータのフォーマットは、GDS IIまたはOASISへの変換が可能な他のフォーマットであってもよい。
【0069】
このような手順によりマスターマシン4は、選択された複数のエリア(サンプルエリア72)それぞれにおけるOPC処理のメモリ使用量(主記憶装置におけるメモリ使用量)を測定する(S14)。なお後述するように、マスターマシン4は単位サイ
ズを縮小して、メモリ使用量を再測定することがある。
【0070】
サンプルエリア72の一部(例えば、半数)は、パターン密度が高くなり易い機能ブロック領域30の中央部から選択されることが好ましい。
【0071】
メモリ使用量は、全てのサンプルエリア72について測定されることが好ましい。しかし所定の時間内に全ての測定が終了しない場合には、マスターマシン4は全サンプルエリアのうちの一定数(例えば、7〜8割)の測定が終了した時点で、ステップ14を終了してもよい。
【0072】
―最大メモリ使用量の検出(S16)―
マスターマシン4は、ステップS14でメモリ使用量が記録された単位エリアデータ64(
図15)を参照して、ステップS14で測定されたメモリ使用量のうち最大のメモリ使用量(以下、最大メモリ使用量と呼ぶ)を検出する(S16)。
【0073】
―判断(S18)―
マスターマシン4は、各スレーブマシン6のOPC処理に使用可能なメモリ容量(以下、使用可能メモリ量と呼ぶ)が最大メモリ使用量以上であるか判断する(S18)。
【0074】
使用可能メモリ量は例えば、スレーブマシン6の空きメモリ量に一定の係数(例えば、0.8)を掛け算して得られるメモリ量である。空きメモリ量とは、アプリケーションプログラムを実行していないスレーブマシン6で使用されていないメモリの量である。使用可能メモリ量は、予測値である。
【0075】
―再測定(S20)―
各スレーブマシン6の使用可能メモリ量にステップS16で検出した最大メモリ使用量より小さいものが存在する場合、マスターマシン4は単位サイズ60(
図11)を縮小する(S20)。その後マスターマシン4はステップS12に戻り、メモリ使用量を再測定する(S12〜S16)。
【0076】
―処理命令先マシンの決定(S22)―
各スレーブマシン6の使用可能メモリ量が全て最大メモリ使用量以上の場合、マスターマシン4は、各スレーブマシン6にOPC処理の実行が可能か問い合わせる。
【0077】
スレーブマシン6はOPC処理の実行が可能な場合、OPC処理の実行が可能であることをマスターマシン4に回答する。スレーブマシン6はさらに、回答時点での空きメモリ量をマスターマシン4に報告する。スレーブマシン6は、先に命令されたOPC処理の実行中などの理由で新たなOPC処理の実行が困難な場合、新たなOPC処理の実行が困難であることをマスターマシン4に回答する。
【0078】
マスターマシン4は例えば、OPC処理の実行が可能であると最初に回答したスレーブマシン6を、OPC処理の命令先に決定する(S22)。マスターマシン4はさらに、OPC処理の実行が可能と回答したスレーブマシンの数(以下、並列数と呼ぶ)をカウントし記録する。
【0079】
―同時処理数の算出(S24)―
マスターマシン4は、OPC処理の実行が可能と回答した各スレーブマシン6が報告した空きメモリ量から、該報告時点での該スレーブマシン6の使用可能メモリ量M1(ステップS18参照)を算出する。マスターマシン4はさらに、算出した使用可能メモリ量M1をステップS16で検出した最大メモリ使用量M2で割り算して、各スレーブマシン6の同時処理数C(=M1/M2)を算出する(S24)。割り算の結果が整数でない場合には、少数点以下は切り捨てられる。スレーブマシン6が多コアマシンの場合、同時処理数Cは、使用可能メモリ量M1を最大メモリ使用量M2とコア数で割り算した数である。
【0080】
算出された同時処理数Cは、各スレーブマシン6がメモリ不足を起こさずに同時にOPC処理できる単位エリア62の最大数である。
【0081】
―同時処理数の検査(S26)―
同時処理数Cが1以上の場合、同時処理数と同数の単位エリア62を有する領域(以下、処理エリアと呼ぶ)をスレーブマシン6がOPC処理しても、メモリ不足が起きる可能性は低い。しかし同時処理数が1より小さい場合には、メモリ不足が起きる可能性が高い。そこでマスターマシン4は、ステップS22で処理命令先に決定したスレーブマシン6の同時使用量が1以上か否かを判断する(S26)。
【0082】
同時使用量が1より小さい場合には、マスターマシン4はステップS22に戻り、別の処理命令先を決定する。同時使用量が1以上の場合には、マスターマシン4はステップS28に進む。
【0083】
(v)OPC処理(S28、S30、S34)
―処理エリアの決定(S28、S30)―
マスターマシン4は、OPC処理が開始されていない単位エリア62の数がステップ24で算出した同時処理数Cのうちの最も大きい値Cmaxに並列数nを掛け算して得られる数値(=Cmax×n;以下、最大並列処理数と呼ぶ)より多いか判断する(S28)。OPC処理は、マスターマシン4がスレーブマシン6にOPC処理を命令した時点で開始する。
【0084】
この時マスターマシン4は、単位エリアデータ64(
図15)を参照して、OPC処理が開始していない単位エリア62(処理状況58が「未処理」の単位エリア)の数を検出する。
【0085】
OPC処理が開始していない単位エリア62の数が最大並列処理数(=Cmax×n)より多いと判断した場合、マスターマシン4はスレーブマシン6にOPC処理させる処理エリアを決定する。
図16は、処理エリアの決定方法を説明する図である。
【0086】
図16には、単位エリア62に分割された機能ブロック領域30が示されている。ハッチングされている単位エリア62は、OPC処理が開始済みである。ハッチングされていない単位エリア62は、OPC処理が開始されていない。
【0087】
マスターマシン4は
図16に示すように、OPC処理が開始されていない単位エリア(OPC処理済みのものも含む)から一または複数のエリアを選択し、選択された単位エリア62を有する領域を処理エリア74に決定する(S30)。この時マスターマシン4は、単位エリアデータ64(
図15参照)の処理状況68を参照して、OPC処理が開始されていない単位エリア(処理状況58が「未処理」の単位エリア)の一部または全部を処理エリア74に含める領域に決定する。
【0088】
処理エリア74に含まる単位エリア62の数は、ステップS22でOPC処理の命令先を決定したスレーブマシン6の同時処理数Cである。同時処理数Cは多くの場合、2以上である。
【0089】
OPC処理されていない単位エリア62の数が同時処理数Cより少ない場合、処理エリア74に含まれる単位エリア62の数は同時処理数Cより小さくする。
【0090】
すなわち処理エリア74に含まれる単位エリア62の数は、同時処理数C以下に制限される。一方、処理エリア74の形状は一定の形状に制限されない。例えば、処理エリア74の形状はL字形であってもよい。
【0091】
尚、ステップ32は後述する「(vi)平準化処理」で説明する。
【0092】
―OPC処理(S34)―
マスターマシン4は、ステップS22で処理命令先に決定されたスレーブマシン6に、ステップS30で決定した処理エリア74のOPC処理を命令する。
【0093】
マスターマシン4はOPC処理を命令すると、単位エリアデータ64(
図15参照)のうち上記処理エリア74に含まれる単位エリア62の処理状況68を「未処理」から「完了」に変更する。
【0094】
OPC処理を命令されたスレーブマシン6は、上記処理エリア74のOPC処理を行う。スレーブマシン6はOPC処理が終わると、OPC処理の結果をマスターマシン4に送信する。マスターマシン4に送信される「OPC処理の結果」は、OPC処理されたパターンのパターンデータ(以下、OPC処理されたパターンデータと呼ぶ)である。
【0095】
マスターマシン4はOPC処理されたパターンデータを受信すると、受信したパターンデータをOPCデータに追加する。OPCデータは、ステップS14で説明したように、OPC処理されたパターンデータを有するレイアウトデータである。
【0096】
―未処理エリアのOPC処理(S36)―
マスターマシン4はステップS34でスレーブマシン6にOPC処理を命令するとOPC処理の結果を待たずに、ステップS10で選択した機能ブロック30にOPC処理が開始されてない単位エリア62が存在するか判断する。この時マスターマシン4は、単位エリアデータ64の処理状況68(
図15)を参照する。
【0097】
OPC処理が開始していない単位エリア62が存在すると判断した場合、マスターマシン4はステップS22に戻って、ステップS22〜ステップS36を再度実行する。これにより、複数の処理エリア74がそれぞれ、複数のスレーブマシン6により並列してOPC処理
される。
【0098】
マスターマシン4はステップS36で、複数のスレーブマシン6のうちOPC処理を実行していない(すなわち、実行中でない)第1スレーブマシン6にOPCを命令した後にOPC処理が開始されていない単位エリアが存在するか否か判断する。マスターマシン4は、OPC処理が開始されていない単位エリアが存在すると判断するとステップS22に戻って、複数のコンピュータ6のうちOPC処理を実行していない第2コンピュータにOPC処理が開始されていない単位エリアのOPCを命令する。
【0099】
(vi)平準化処理(S32)
ステップS28においてOPC処理が開始されていない単位エリア62の数が最大並列処理数(=Cmax×n)以下と判断した場合、処理エリア74に含まれる単位エリア62の数を1に決定する。すなわち単位エリア62を、OPCの処理対象に決定する。
【0100】
これにより後述するように、各スレーブマシン6で処理される単位エリア62の数が平準化される。
【0101】
(vii)未処理ブロックのOPC処理(S38)
ステップS36でOPC処理が開始されていない単位エリア62が存在しないと判断した場合、マスターマシン4は全てのOPC処理が終了するまで待機する。
【0102】
全てのOPC処理が終了すると、マスターマシン4はOPC処理が済んだ機能ブロック領域30のブロック名58を記録する。マスターマシン4はさらに、OPC処理が済んでいない機能ブロック30が存在するか判断する(S38)。
【0103】
OPC処理が済んでいない機能ブロック30が存在すると判断した場合には、マスターマシン4はステップS10に戻って、OPC処理が済んでいない機能ブロック30に対してステップS10〜ステップS36を再度実行する。
【0104】
(viii)機能ブロック外領域のOPC処理(S40)
OPC処理が済んでいない機能ブロック30が存在しないと判断した場合、マスターマシン4はさらに、機能ブロック外領域のOPC処理が終わっているか判断する(S40)。
【0105】
機能ブロック外領域のOPC処理が終わっていないと判断した場合、マスターマシン4はステップS10に戻って、機能ブロック外領域に対してステップS10〜ステップS38を再度実行する。この時マスターマシン4およびスレーブマシン6は、機能ブロック外領域を機能ブロック領域とみなして各ステップを実行する。
【0106】
(ix)後処理(S42)
機能ブロック外領域のOPC処理が終わっていると判断した場合、マスターマシン4は、OPC処理されたパターンを合成する(S42)。これにより、OPC処理されたマスクパターンが形成される。具体的には例えばマスターマシン4は、OPCデータに含まれるパターンデータをOR処理により合成する。
【0107】
マスターマシン4はさらに、OPC処理されたマスクパターンを出力する。出力されるマスクパターンのフォーマ
ットは、例えばGDS IIまたはOASISである。
【0108】
(3)単位エリアごとのOPC処理
スレーブマシン6が一度にOPC処理できるパターン数は、コンピュータのメモリ容量によって制限される。そこでマスターマシン4は機能ブロック領域および機能ブロック外領域を単位エリア62に分割し、該単位エリア62を有する処理エリア74(
図16)をOPC処理する。
【0109】
単位エリア62は、全てのスレーブマシン6がメモリ不足を起こさずにOPC処理できる領域である。単位エリア62は、ブロック領域(機能ブロック領域および機能ブロック外領域)ごとに異なる。
【0110】
そこで各ブロック領域の単位エリア62のうち最も小さい単位エリア62でレイアウトパターンを分割し、該分割により得られる領域(OPCエリア)内のパターンをOPC処理することも考えられる。この場合OPCエリアが予め決定されていれば、S6〜S32は省略される。しかし、OPCエリアの決定は容易ではない。さらに上記のように最も小さいOPCエリアをOPC処理する方法には、レイアウトパターン全体のOPC処理時間が長くなるという問題がある。
【0111】
図17は、OPCエリア76が小さい場合の問題を説明する図である。OPC処理では、OPCエリア76内のマスクパターン78の像が近接するマスクパターン80から受ける影響が補正される。このためOPC処理は、OPCエリア76より広い領域82内の全てのパターンに対して行われる。しかしOPC処理されたパターンのうちOPCエリア76内のパターンだけが利用され、OPCエリア76の外側でOPC処理されたパターンのデータは捨てられる。
【0112】
したがってレイアウトパターン全体のOPC処理にかかる時間(以下、全OPC処理時間と呼ぶ)は、OPCエリア76が小さくなりレイアウトパターンの分割数が増えるほど増加する。このためOPCエリア76が小さくなるほど、全OPC処理時間は長くなる。
【0113】
さらに分割された領域がマスターマシン4とスレーブマシン6の間で送受信される回数も、OPCエリア76が小さくなりレイアウトパターンの分割数が増えるほど多くなる。このため、全OPC処理時間はさらに長くなる。
【0114】
一方
図3〜16を参照して説明したレイアウトパターンの補正方法によれば、各スレーブマシン6によりOPC処理される領域(処理エリア74)が広くなるので、全OPC処理時間は短くなる。さらに分割された領域がマスターマシン4とスレーブマシン6の間で送受信される回数が少なくなるので、全OPC処理時間はさらに短くなる。
【0115】
(4)平準化処理
図18及び19は、平準化処理(S32)を説明する図である。
【0116】
図18には、ステップS22〜36により処理エリア74が順次OPC処理される過程が示されている。横軸は、各スレーブマシン6の名称である。縦軸は、各スレーブマシンSL1〜SL5により処理される単位エリア62の数(処理数)である。
【0117】
今、スレーブマシンSL1の同時処理数を1とする。スレーブマシンSL2の同時処理数を2とする。スレーブマシンSL3の同時処理数を3とする。スレーブマシンSL4の同時処理数を4とする。スレーブマシンSL5の同時処理数を5とする。単位エリア62の総数は25とする。
【0118】
ステップS22〜S36により処理エリア74が順次スレーブマシンSL1〜SL5に割り当てられ、複数のスレーブマシン6が複数の処理エリア74を並列してOPC処理する。
図18に示す例では、一巡目の割り当て(処理命令)により各スレーブマシンSL1〜SL5が処理する単位エリア62の数84は、各スレーブマシンSL1〜SL5の同時処理数である。
【0119】
二巡目の割り当てにより各スレーブマシンSL1〜SL5が処理する単位エリア62の数86は、スレーブマシンSL1では同時処理数(=1)である。スレーブマシンSL2〜スレーブマシンSL5では零である。これは、スレーブマシンSL1に処理エリア74が割り当てられる時点で、スレーブマシンSL2〜スレーブマシンSL5は一巡目で割り当てられたOPC処理が済んでいないためである(S22)。
【0120】
三巡目の割り当てにより各スレーブマシンSL1〜SL5が処理する単位エリア62の数88は、スレーブマシンSL1とスレーブマシンSL2では同時処理数である。スレーブマシンSL3〜スレーブマシンSL5では零である。
【0121】
この時の最大同時処理数Cmaxは、スレーブマシンSL1の同時処理数(=1)とスレーブマシンSL2の同時処理数C(=2)のうち最も大きい同時処理数(=2)である。並列数nは2である。したがって最大並列処理数(=Cmax×n)は、4(=2×2)である。OPC処理が開始されていない単位エリア62の数は、9である。
【0122】
故に、OPC処理が開始されていない単位エリア62の数(=9)は、最大並列処理数(=4)より大きい。このためスレーブマシンSL1とスレーブマシンSL2には、同時処理数と同数の単位エリア62を含む処理エリア74が割り当てられる(S30)。
【0123】
四巡目の割り当てでは、スレーブマシンSL1とスレーブマシンSL3に単位エリア62が割り当てられる。この時の最大同時処理数Cmaxは、スレーブマシンSL1の同時処理数C(=1)とスレーブマシンSL3の同時処理数C(=3)のうち最も大きい同時処理数Cmax(=3)である。並列数nは2である。したがって最大並列処理数(=Cmax×n)は、6(=3×2)である。OPC処理が開始されていない単位エリア62の数は、6である。
【0124】
故に、OPC処理が開始されていない単位エリア62の数(=6)は、最大並列処理数(=6)以下である。このためスレーブマシンSL1とスレーブマシンSL3には、単位エリアが割り当てられる(S32)。
【0125】
五巡目の割り当てでも、OPC処理が開始されていない単位エリア62の数は、最大並列処理数以下になる。したがってスレーブマシンSL1〜SL4に、単位エリアが割り当てられる。このため
図18に示すように、各スレーブマシンSL1〜SL5の処理数は平準化される。各スレーブマシン6の同時処理数および単位エリア62の総数は、
図18の例と同じである。
【0126】
図19には、平準化処理(S32)が行われない場合の例が示されている。横軸は、各スレーブマシン6の名称である。縦軸は、各スレーブマシン6により処理される単位エリア62の数(処理数)である。
【0127】
三巡目の割り当てまでは各スレーブマシンの処理数は、平準化処理を行う場合と同じである。しかし
図19に示す例では、四順目以降も各スレーブマシンの処理数は同時処理数と同数である。このため
図19に示すように、各スレーブマシンの処理数にバラつきが生じる。その結果、全OPC処理時間が長くなる。
【0128】
各割り当てサイクルでOPC処理が開始(命令)される単位エリア62の数は最大でも、最大並列処理数(=Cmax×n)である。したがって
図18に示すように、OPC処理が開始(命令)されていない単位エリア62の数が最大並列処理数以下になった時点でOPC処理する領域を単位エリアにすれば、各スレーブマシンの処理数に生じるバラつきは小さくなる。
【0129】
以上の例では、OPC処理が開始されていない単位エリア62の数が最大並列処理数(=Cmax×n)以下の場合に、平準化処理が行われる。しかしOPC処理が開始されていない単位エリア62の数が最大並列処理数以外の一定数以下の場合に、平準化処理が行われてもよい。
【0130】
例えば、OPC処理が開始されていない単位エリア62の数が同時処理数のうち2番に大きい同時処理数に並列数nをかけた数以下の場合に、平準化処理が行われてもよい。この場合でも、スレーブマシンの処理数に生じるバラつきは、平準化処理を行わない場合より小さくなる。
【0131】
以上の例ではマスターマシン4は、OPC処理を行わない。しかしマスターマシン4が、スレーブマシン6とともにOPC処理を行ってもよい。
【0132】
以上の実施の形態に関し、更に以下の付記を開示する。
【0133】
(付記1)
集積回路のレイアウトパターンから機能ブロックに対応する機能ブロック領域を検出する工程と、
前記機能ブロック領域のパターン密度に基づいて、前記機能ブロック領域を分割するサイズを決定する工程と、
前記機能ブロック領域を、決定された前記サイズに分割して単位エリアを生成する工程と、
前記単位エリアをコンピュータにOPC処理させる工程と
を有するレイアウトパターンの補正方法。
【0134】
(付記2)
付記1に記載のレイアウトパターンの補正方法において、
前記パターン密度は、前記機能ブロック領域に含まれるパターンの最小線幅に基づいて決定されることを特徴とするレイアウトパターンの補正方法。
【0135】
(付記3)
付記1に記載のレイアウトパターンの補正方法において、
前記コンピュータに前記OPC処理させる工程では前記コンピュータを複数用意し、前記複数のコンピュータのうち前記OPC処理を実行していない第1コンピュータに前記OPCを命令した後に前記OPC処理が開始されていない前記単位エリアが存在する場合には、前記複数のコンピュータのうち前記OPC処理を実行していない第2コンピュータに前記OPC処理が開始されていない前記単位エリアの前記OPCを命令する
ことを特徴とするレイアウトパターンの補正方法。
【0136】
(付記4)
付記1乃至3いずれか一項に記載のレイアウトパターンの補正方法において、さらに、
前記コンピュータに前記OPC処理させる工程の前に、複数の前記単位エリアから複数のエリアを選択し、選択された前記複数のエリアそれぞれにおけるOPC処理のメモリ使用量を測定する工程を有し、
前記コンピュータに前記OPC処理させる工程では、前記OPC処理が開始されていない前記単位エリアから一または複数の単位エリアを選択し、選択された前記各単位エリアを含む処理エリアを前記コンピュータにOPC処理させ、
前記処理エリアに含まれる前記単位エリアの数は、前記各コンピュータのOPC処理に使用可能なメモリ容量を測定された前記メモリ使用量のうちの最大のメモリ使用量で割り算して得られる同時処理数であることを
特徴とするレイアウトパターンの補正方法。
【0137】
(付記5)
付記4のいずれか1項に記載のレイアウトパターンの補正方法において、
前記コンピュータに前記OPC処理させる工程では、複数の前記処理エリアを複数の前記コンピュータに並列してOPC処理させ、
前記各処理エリアに含まる前記単位エリアの数は、
前記OPC処理が開始されていない前記単位エリアが一定数より多く存在する場合に、前記各処理エリアを前記OPC処理する前記コンピュータが処理可能な最も大きい数であり、
前記OPC処理が開始されていない前記単位エリアが前記一定数以下の場合には、1であることを
特徴とするレイアウトパターンの補正方法。
【0138】
(付記6)
付記5に記載のレイアウトパターンの補正方法において、
前記一定数は、前記各処理エリアをOPC処理する前記コンピュータごとに得られる前記同時処理数のうち最も大きい値に前記コンピュータの数を乗じた数であることを
特徴とするレイアウトパターンの補正方法。
【0139】
(付記7)
付記4に記載のレイアウトパターンの補正方法において、
前
記OPC処理のメモリ使用量を測定する工程では、前記複数のエリアの少な
くとも一部を、前記機能ブロック領域の中央部から選択することを
特徴とするレイアウトパターンの補正方法。