【解決手段】プロセッサ2は、複数層で形成される半導体装置に含まれる複数の素子を回路ブロック14へ配置する前に、各素子に対し、複数層のうち密度検証の単位となる検証領域10内での面密度の許容範囲が決められている層の検証領域10を設定する。そしてプロセッサ2は、各素子の素子領域11によって検証領域10が占有されているときには素子領域11を分割し、層の面密度と許容範囲に基づき、層の配置の可否が指定される密度保障領域12を設定する。さらに、プロセッサ2が、密度保障領域12を、素子領域11aの辺の延長方向に拡張した密度保障領域12aを生成し、各素子に対応した密度保障領域12aと素子領域11aとを合わせた、素子領域13,13a〜13nを回路ブロック14内に配置し、回路ブロック14内に配置される素子領域13,13a〜13nの面積に基づき、回路ブロック14の面積を算出する。
プロセッサが、複数層で形成される半導体装置に含まれる複数の素子を回路ブロックへ配置する前に、前記複数の素子のそれぞれに対し、前記複数層のうち密度検証の単位となる検証領域内での面密度の許容範囲が決められている第1の層の前記検証領域を設定し、
前記プロセッサが、前記複数の素子のそれぞれの第1の素子領域によって前記検証領域が占有されているときには前記第1の素子領域を分割して第2の素子領域を生成し、
前記プロセッサが、前記第1の層の前記面密度と前記許容範囲に基づき、前記検証領域内であり前記第1の素子領域外または前記第2の素子領域外に、前記第1の層の配置の可否が指定される第1の密度保障領域を設定し、
前記プロセッサが、前記第1の密度保障領域を、前記第1の素子領域または前記第2の素子領域の第1の辺の延長方向に拡張した第2の密度保障領域を生成し、
前記プロセッサが、前記複数の素子のそれぞれに対応した前記第2の密度保障領域と前記第1の素子領域または前記第2の素子領域とを合わせた、複数の第3の素子領域を前記回路ブロック内に配置し、
前記プロセッサが、前記回路ブロック内に配置される前記複数の第3の素子領域の面積に基づき、前記回路ブロックの面積を算出する、
ことを特徴とする設計方法。
前記プロセッサが、前記複数の第3の素子領域の前記回路ブロック内への配置の際、前記複数の第3の素子領域のうち、隣接する第4の素子領域と第5の素子領域のそれぞれの前記第2の密度保障領域を重ね合わせる重ね合わせ処理を行うことを特徴とする請求項1に記載の設計方法。
前記プロセッサが、前記第2の密度保障領域に、前記半導体装置の配線が配置される配線領域を設定することを特徴とする請求項1乃至3の何れか一項に記載の設計方法。
前記プロセッサが、前記第2の密度保障領域に対して前記第1の素子領域または前記第2の素子領域を挟んで対向した位置に、前記許容範囲に基づき前記面密度を調整する第3の密度保障領域を生成する、ことを特徴とする請求項1乃至4の何れか一項に記載の設計方法。
複数層で形成される半導体装置に含まれる複数の素子を回路ブロックへ配置する前に、前記複数の素子のそれぞれに対し、前記複数層のうち密度検証の単位となる検証領域内での面密度の許容範囲が決められている第1の層の前記検証領域を設定する検証領域設定部と、
前記複数の素子のそれぞれの第1の素子領域によって前記検証領域が占有されているときには前記第1の素子領域を分割して第2の素子領域を生成する分割部と、
前記第1の層の前記面密度と前記許容範囲に基づき、前記検証領域内であり前記第1の素子領域外または前記第2の素子領域外に、前記第1の層の配置の可否が指定される第1の密度保障領域を設定する密度保障領域設定部と、
前記第1の密度保障領域を、前記第1の素子領域または前記第2の素子領域の第1の辺の延長方向に拡張した第2の密度保障領域を生成する密度保障領域拡張部と、
前記複数の素子のそれぞれに対応した前記第2の密度保障領域と前記第1の素子領域または前記第2の素子領域とを合わせた、複数の第3の素子領域を前記回路ブロック内に配置する配置部と、
前記回路ブロック内に配置される前記複数の第3の素子領域の面積に基づき、前記回路ブロックの面積を算出する面積算出部と、
を有することを特徴とする設計装置。
複数層で形成される半導体装置に含まれる複数の素子を回路ブロックへ配置する前に、前記複数の素子のそれぞれに対し、前記複数層のうち密度検証の単位となる検証領域内での面密度の許容範囲が決められている第1の層の前記検証領域を設定し、
前記複数の素子のそれぞれの第1の素子領域によって前記検証領域が占有されているときには前記第1の素子領域を分割して第2の素子領域を生成し、
前記第1の層の前記面密度と前記許容範囲に基づき、前記検証領域内であり前記第1の素子領域外または前記第2の素子領域外に、前記第1の層の配置の可否が指定される第1の密度保障領域を設定し、
前記第1の密度保障領域を、前記第1の素子領域または前記第2の素子領域の第1の辺の延長方向に拡張した第2の密度保障領域を生成し、
前記複数の素子のそれぞれに対応した前記第2の密度保障領域と前記第1の素子領域または前記第2の素子領域とを合わせた、複数の第3の素子領域を前記回路ブロック内に配置し、
前記回路ブロック内に配置される前記複数の第3の素子領域の面積に基づき、前記回路ブロックの面積を算出する、
処理をコンピュータに実行させるプログラム。
【発明を実施するための形態】
【0012】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
(第1の実施の形態)
図1は、第1の実施の形態の設計方法の一例を示す図である。
【0013】
また、
図2は、第1の実施の形態の設計装置の一例の機能ブロック図である。
設計装置1は、たとえば、コンピュータであり、プロセッサ2と記憶部3を有している。プロセッサ2は、記憶部3に記憶されているデータ及びプログラムに基づき、
図2に示すような、検証領域設定部2a、分割部2b、密度保障領域設定部2c、密度保障領域拡張部2d、配置部2e、面積算出部2fの機能を実現する。記憶部3は、プロセッサ2が実行するプログラムや、半導体装置の設計データなどの各種データを記憶する。
【0014】
以下、上記のような設計装置1を用いた設計方法の一例を、
図1、
図2を用いて説明する。
ステップS1:検証領域設定部2aは、複数層(拡散層やポリシリコン層など)で形成される半導体装置に含まれる複数の素子を回路ブロックへ配置する前に(フロアプランの段階で)、複数の素子のそれぞれに対して密度検証の単位となる検証領域を設定する。この検証領域は、複数層のうち、検証領域内での面密度の許容範囲が決められている層についてのものである。検証領域は、層ごとに異なる大きさであってもよい。
【0015】
ステップS2,S3:分割部2bは、複数の素子のそれぞれの素子領域で検証領域が占有されているか否かを判定し、素子領域で検証領域が占有されているときには、その素子領域を分割する。
【0016】
図1には、検証領域10と、素子領域11の例が示されている。検証領域10は、たとえば、不純物拡散層(以下単に拡散層という)の密度検証を行う際の単位となる領域であり、所定の大きさの正方形の領域である。素子領域11は、たとえば、抵抗素子の素子領域である。4つの長方形の斜線部がポリシリコン抵抗を示している。
【0017】
図1の例では、検証領域10は、素子領域11で占有されているため、素子領域11はy方向に分割された8つのポリシリコン抵抗がx方向に並べられた素子領域11aが生成されている。分割によって、検証領域10内に、ポリシリコン抵抗から設計制約を満たす距離だけ離して拡散層を配置できる領域が確保される。
【0018】
ステップS3の処理後、または、検証領域が素子領域で占有されていないときにはステップS4の処理が行われる。
ステップS4:密度保障領域設定部2cは、検証領域内であり素子領域外に、上記の複数層のうち検証領域内での面密度の許容範囲が決められている層の面密度と許容範囲に基づき、その層の配置の可否が指定される密度保障領域を設定する。
【0019】
図1の例では、検証領域10には拡散層が含まれていないため、密度保障領域設定部2cは、拡散層の配置を可とすることが指定される密度保障領域12を、拡散層の面密度が許容範囲内になるような大きさで設定する。
【0020】
なお、素子が拡散層を含むものであり(たとえば、トランジスタ)、面密度がすでに許容範囲内であるときには、拡散層の配置を否とする(禁止する)ことが指定される密度保障領域が設定される(後述の
図12参照)。
【0021】
ステップS5:密度保障領域拡張部2dは、ステップS4の処理で設定された密度保障領域を、素子領域の1辺の延長方向に拡張し、あらたな密度保障領域を生成する。
図1の例では、密度保障領域12は、素子領域11aの上辺の延長方向(x方向)に拡張され、密度保障領域12aが生成されている。なお、
図1の例では、密度保障領域12aのx方向の長さは、素子領域11aのx方向の長さと等しい。
【0022】
このように密度保障領域12を拡張することで、素子や配線の配置が行われた後に行われる密度検証の際に、検証領域10がその拡張方向にずれて設定された際に、検証領域10内での素子の密度は基準密度を満たす。
【0023】
また、
図1の例では、密度保障領域12aに対して、素子領域11aを挟んで対向する密度保障領域12bが設けられている。これにより、密度検証の際に、検証領域10が、素子領域11の他の辺の延長方向(
図1ではy方向)にずれて設定された際にも、検証領域10内での素子の密度は基準密度を満たす。
【0024】
ステップS6:配置部2eは、複数の素子のそれぞれについて、拡張後の密度保障領域と素子領域とを合わせてあらたな素子領域としたものを回路ブロック内に配置する。
図1に示すように、複数の素子のそれぞれに対応した、素子領域13,13a,13b,13c,13d,…,13nが回路ブロック14内に配置される。
【0025】
なお、素子領域13〜13nの配置の際、隣接する素子領域間では、それぞれの密度保障領域に指定された層の配置の可否によっては、密度保障領域同士を重ねてもよい。この点については後述する。
【0026】
ステップS7:面積算出部2fは、回路ブロック14内に配置される素子領域13〜13nの面積に基づき回路ブロック14の面積を算出する。また、面積算出部2fは、設計対象の半導体装置に含まれる各回路ブロックの面積の算出結果に基づき、半導体装置の面積を見積もる。
【0027】
なお、配線領域を考慮した配置及び面積算出については後述する。
以上のように、本実施の形態の設計方法及び設計装置1では、フロアプランの段階で、検証領域10内での層の面密度が許容範囲内となるよう、層の配置の可否が指定された密度保障領域の設定が行われ、密度保障領域を含む素子領域に基づき面積算出が行われる。
【0028】
素子配置後の密度検証でエラーが生じると、レイアウト修正により回路ブロックの面積が見積面積よりも増加する可能性があり、その増加を抑制するためにさらなるレイアウト修正が行われる可能性がある。
【0029】
この状況は、アナログ回路のように、使用される素子(抵抗素子、容量素子、トランジスタなど)のサイズが大きく、連続して配置される場合に発生しやすい。特に拡散層やポリシリコン層の面密度が高くなりやすい。
【0030】
しかし、本実施の形態の設計方法及び設計装置1では、上記の構成により密度検証時のエラーの発生が抑制されるため、エラー発生時に行われるレイアウト修正による見積面積からの増加を抑えられる。そのため、その面積増加を抑制するためのさらなるレイアウト修正などによる半導体装置の設計工数の増加を抑制できる。
【0031】
(第2の実施の形態)
以下、第2の実施の形態の設計方法及び設計装置の一例を示す。
図3は、第2の実施の形態の設計装置の一例を示す図である。
【0032】
設計装置は、たとえば、コンピュータ20であり、プロセッサ21によって装置全体が制御されている。プロセッサ21には、バス29を介してRAM(Random Access Memory)22と複数の周辺機器が接続されている。プロセッサ21は、マルチプロセッサであってもよい。プロセッサ21は、たとえばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ21は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0033】
RAM22は、コンピュータ20の主記憶装置として使用される。RAM22には、プロセッサ21に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM22には、プロセッサ21による処理に必要な各種データが格納される。
【0034】
バス29に接続されている周辺機器としては、HDD(Hard Disk Drive)23、グラフィック処理装置24、入力インタフェース25、光学ドライブ装置26、機器接続インタフェース27及びネットワークインタフェース28がある。
【0035】
HDD23は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。HDD23は、コンピュータ20の補助記憶装置として使用される。HDD23には、OSのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【0036】
グラフィック処理装置24には、モニタ24aが接続されている。グラフィック処理装置24は、プロセッサ21からの命令にしたがって、画像をモニタ24aの画面に表示させる。モニタ24aとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
【0037】
入力インタフェース25には、キーボード25aとマウス25bとが接続されている。入力インタフェース25は、キーボード25aやマウス25bから送られてくる信号をプロセッサ21に送信する。なお、マウス25bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0038】
光学ドライブ装置26は、レーザ光などを利用して、光ディスク26aに記録されたデータの読み取りを行う。光ディスク26aは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク26aには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
【0039】
機器接続インタフェース27は、コンピュータ20に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース27には、メモリ装置27aやメモリリーダライタ27bを接続することができる。メモリ装置27aは、機器接続インタフェース27との通信機能を搭載した記録媒体である。メモリリーダライタ27bは、メモリカード27cへのデータの書き込み、またはメモリカード27cからのデータの読み出しを行う装置である。メモリカード27cは、カード型の記録媒体である。
【0040】
ネットワークインタフェース28は、ネットワーク28aに接続されている。ネットワークインタフェース28は、ネットワーク28aを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【0041】
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、
図1に示した第1の実施の形態の設計装置1も、
図3に示したコンピュータ20と同様のハードウェアにより実現することができる。
【0042】
コンピュータ20は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。コンピュータ20に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、コンピュータ20に実行させるプログラムをHDD23に格納しておくことができる。プロセッサ21は、HDD23内のプログラムの少なくとも一部をRAM22にロードし、プログラムを実行する。またコンピュータ20に実行させるプログラムを、光ディスク26a、メモリ装置27a、メモリカード27cなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ21からの制御により、HDD23にインストールされた後、実行可能となる。またプロセッサ21が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0043】
(設計方法の一例)
図4は、第2の実施の形態の設計方法の各処理で参照または生成されるデータ群の一例を示す図である。
【0044】
データ群30は、ネットリスト31、素子生成基準情報32、密度基準情報33、生成素子/素子領域情報34、素子配置情報35、オーバーラップテーブル36を含む。
ネットリスト31は、設計対象の半導体装置に含まれるトランジスタや抵抗素子などの素子の接続情報や、各素子のサイズパラメータなどの素子情報を含む。
【0045】
素子生成基準情報32は、素子の生成に関する設計基準の情報を含む。
密度基準情報33は、密度検証の単位となる検証領域の大きさや、層の面密度の許容範囲の情報を含む。
【0046】
生成素子/素子領域情報34は、生成された素子や素子領域に関する情報を含む。
素子配置情報35は、素子領域の回路ブロックへの配置に関する情報を含む。
オーバーラップテーブル36は、密度保障領域の重ね合わせの可否や重ね合わせの程度を示す情報を含む。
【0047】
データ群30は、たとえば、HDD23に格納される。
図5は、第2の実施の形態の設計方法の一例の処理の流れを示すフローチャートである。
【0048】
コンピュータ20において、プロセッサ21は、HDD23に格納されたプログラムを読み出してRAM22上に展開して、たとえば、
図5に示すような各ステップの処理を実行する。
【0049】
ステップS10:プロセッサ21は、ネットリスト31と素子生成基準情報32に基づき、複数の素子を生成する。
図6は、素子の生成例を示す図である。
【0050】
図6では、ネットリスト31に記述されているサイズパラメータ(ゲート幅やゲート長など)と、素子生成基準情報32に基づく大きさの拡散領域41及びゲート電極40a,40bを有するトランジスタTr1が生成されている例が示されている。なお、トランジスタTr1は、MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)である。
【0051】
また、抵抗R1,R2,R3、トランジスタ(MOSFET)Tr2,Tr3,Tr4を含む回路で、抵抗R1がポリシリコン抵抗42a,42b、抵抗R2がポリシリコン抵抗43a,43bで生成されている例が示されている。
【0052】
ステップS11:プロセッサ21は、素子生成基準情報32を参照して、近接配置することが指定されている複数の素子については、1つの素子として合成する。同じ種類の素子でも、チップ上で離れた場所に配置されると、プロセスばらつきにより、異なる特性となる可能性があるためである。
【0053】
図7は、近接配置素子の合成の例を示す図である。
図7では、
図6に示した抵抗R1,R2を1つの素子として合成した例が示されている。抵抗R1,R2は、異なるインスタンス名(素子ごとに固有の名称)が割り当てられているが、プロセッサ21は、たとえば、それらを1つのインスタンス名とし、1つの素子として扱う。
【0054】
なお、プロセッサ21は、複数のトランジスタなどについても同様に、1つのインスタンス名とするようにしてもよい。
以上の処理によって生成された素子の情報は、
図4に示した生成素子/素子領域情報34として、たとえば、HDD23に記憶される。
【0055】
ステップS12:プロセッサ21は、密度基準情報33に基づき、複数の素子のそれぞれに対して、半導体装置の複数層のうち密度検証の単位となる検証領域内での面密度の許容範囲が決められている層の検証領域を設定する。
【0056】
ステップS13:プロセッサ21は、密度基準情報33と生成素子/素子領域情報34とに基づき、検証領域に含まれる素子の素子領域で、検証領域が占有されているか否かを判定する。素子領域で検証領域が占有されているときには、ステップS14の処理が行われ、占有されていないときには、ステップS15の処理が行われる。
【0057】
ステップS14:プロセッサ21は、検証領域を占有している素子領域を分割し、検証領域内に素子領域に占有されていない領域を設定する。分割した素子や素子領域の情報は、生成素子/素子領域情報34として、たとえば、HDD23に記憶される。
【0058】
ステップS15:プロセッサ21は、検証領域内の素子領域に占有されていない領域(素子領域外)に、密度保障領域を設定する。
ステップS16:プロセッサ21は、密度保障領域を、素子領域の1辺の延長方向に拡張したあらたな密度保障領域を生成する。生成された密度保障領域の情報は、たとえば、HDD23に記憶される。
【0059】
以下、ステップS12〜S16の処理の例を、抵抗素子に拡散層の検証領域が設定されたときと、トランジスタ(MOSFET)に拡散層の検証領域が設定されたときについて説明する。
【0060】
(抵抗素子への検証領域設定時の処理例)
図8は、抵抗素子の素子領域と検証領域の例が示されている。
検証領域50は、たとえば、所定の大きさの正方形の領域であり、密度検証の単位となる領域である。検証領域50の大きさは、たとえば、より微細な加工を行う製造プロセスが用いられるほど(製造上の制約が厳しくなるほど)小さく設定される。
【0061】
素子領域51aは、
図7に示した抵抗素子の素子領域である。
図8の例では、検証領域50は、左下の頂点が、素子領域51aの左下の頂点と一致するように設定されている。
図8の例では、素子領域51aにより検証領域50が占有されているため、ステップS14の処理が行われる。
【0062】
図9は、抵抗素子の素子領域の分割と密度保障領域の設定例を示す図である。
図8に示した素子領域51aは、
図9に示すように、y方向に半分の大きさに分割され、8つのポリシリコン抵抗42a1,42b1,43a1,43b1,42a2,42b2,43a2,43b2がx方向に並べられた素子領域51bが生成されている。また、分割によって検証領域50内に生じる素子領域51bに占有されていない領域に、密度保障領域53が設定されている。
【0063】
密度保障領域53は、拡散層(面密度を許容範囲内とするためのダミーの拡散層(半導体装置の機能には影響を与えない拡散層))の配置を可とすることが指定されたものである。そのため、密度保障領域は、拡散層とポリシリコン抵抗とを近づけられる距離(設計制約に基づく距離)だけ、素子領域51bから離れて設定されている。
【0064】
密度保障領域53の大きさは、拡散層が密度保障領域53に配置されたときに、検証領域50内での面密度が許容範囲内になるように設定される。たとえば、検証領域50内での拡散層の面密度の許容範囲の下限が大きいほど、密度保障領域53の大きさは大きく、許容範囲の下限が小さいほど、密度保障領域53の大きさは小さく設定される。
【0065】
図10は、密度保障領域を拡張した例を示す図である。
図10の密度保障領域53aは、
図9に示した密度保障領域53が、素子領域51bの上辺の延長方向(x方向)に拡張されたものである。
【0066】
また、
図10の例では、密度保障領域53aに対して、素子領域51bを挟んで対向する密度保障領域53bが生成されている。
以上のようにして生成された密度保障領域53a,53bと、素子領域51bを合わせた領域を、素子領域54とする。
【0067】
(トランジスタへの検証領域設定時の処理例)
図11は、トランジスタの素子領域と検証領域の例が示されている。
図11には、
図8などに示した検証領域50と同様の検証領域60が示されている。
【0068】
素子領域61は、拡散層63とゲート電極層62a,62bを含むトランジスタの素子領域である。
図11の例では、検証領域60は、左下の頂点が、拡散層63の左下の頂点と一致するように設定されている。
【0069】
図11の例では、素子領域61により検証領域60が占有されていないため、ステップS14の処理は行われない。ただ、検証領域60内に含まれる拡散層63の面密度が許容範囲を超えるときには、たとえば、プロセッサ21は、トランジスタ幅を分割して、検証領域60内における拡散層の面密度を少なくし、許容範囲内に収まるようにすればよい。
【0070】
図12は、密度保障領域の設定例を示す図である。
図12に示すように、検証領域60内で素子領域61に占有されていない領域に、密度保障領域64が設定されている。
【0071】
密度保障領域64は、拡散層の配置を否とする(禁止とする)ことが指定されたものである。密度保障領域64には拡散層が配置されないため、密度保障領域64は、
図12に示すように、素子領域61に接していてもよい。
【0072】
密度保障領域64の大きさは、密度保障領域64内に拡散層を配置しないことで、検証領域50内での面密度が許容範囲内になるように設定される。たとえば、検証領域60内での拡散層63の面密度が、許容範囲の上限に近いほど、密度保障領域64の大きさは大きく、許容範囲の上限まで余裕があるほど、密度保障領域64の大きさは小さく設定される。
【0073】
図13は、密度保障領域を拡張した例を示す図である。
図13の密度保障領域64aは、
図12に示した密度保障領域64が、素子領域61の上辺の延長方向(x方向)に拡張されたものである。
【0074】
また、
図13の例では、密度保障領域64aに対して、素子領域61を挟んで対向する密度保障領域64bが生成されている。
以上のようにして生成された密度保障領域64a,64bと、素子領域61を合わせた領域を、素子領域65とする。
【0075】
なお、拡散層以外の層、たとえば、ポリシリコン層(ポリシリコン抵抗やゲート電極に用いられる層)などについても検証領域内での面密度が許容範囲内に収まるように密度保障領域が設定されていてもよい。その場合、各層についての密度保障領域が設定されることになるが、素子領域(密度保障領域を含めたもの)の大きさは、最も大きくなる密度保障領域に基づき決まる。
【0076】
次に、
図5のステップS17以降の処理を説明する。
ステップS17:プロセッサ21は、ネットリスト31や生成素子/素子領域情報34に基づき、複数の素子のそれぞれについて、拡張後の密度保障領域と素子領域とを合わせてあらたな素子領域としたものを回路ブロック内に配置する。
【0077】
素子領域の回路ブロック内への配置は、たとえば、以下のようにして行われる。
(素子領域の回路ブロック内への配置例)
プロセッサ21は、まず、複数の素子のそれぞれについて、拡張後の密度保障領域と素子領域とを合わせてあらたな素子領域としたものを、たとえば、大きい順に配列する。
【0078】
図14は、素子領域の配列例を示す図である。
図14には、各素子について生成された素子領域70,71,72,73,74,75,76,77,78,79,80,81,82,83,84(密度保障領域を含むもの)が、左から大きい順に配列されている。
【0079】
素子領域70〜84を配置する回路ブロックの幅をW1とすると、素子領域70〜84は、たとえば、3段で配置される。すなわち、素子領域70〜72による段と、素子領域73〜77による段と、素子領域78〜84による段である。
【0080】
プロセッサ21は、さらに各段の素子領域70〜84の位置を揃える。
図15は、各段の素子領域の位置を揃えた例を示す図である。
図15に示すように、たとえば、素子領域73〜77による段では、素子領域73〜77内の素子領域73a,74a,75a,76a,77aの上辺が揃えられている。
【0081】
このように各段において位置揃えを行うと、各段の素子領域70〜84の概略の外形は、以下のようになる。
図16は、各段の素子領域の概略の外形の一例を示す図である。
【0082】
領域90は、素子領域70〜72による段の概略の外形を示し、領域91は、素子領域73〜77による段の概略の外形を示し、領域92は、素子領域78〜84による段の概略の外形を示している。
【0083】
プロセッサ21は、回路ブロック内に素子領域70〜84を効率よく配置して、回路ブロックの面積を小さくできるように、上記の領域90〜92を用いて、回路ブロックへの配置の位置決めを行う。
【0084】
図17は、回路ブロックへの素子領域の配置の位置決め例を示す図である。
図17に示すように、回路ブロック100内で、
図16に示した領域92は180度回転されており、領域92の斜辺が、領域91の斜辺と対向するように配置されている。
【0085】
領域90〜92を用いた位置決めが終わると、プロセッサ21は、その位置決め結果に基づき、素子領域70〜84を回路ブロック100内に配置する。
図18は、素子領域の回路ブロックへの配置例を示す図である。
【0086】
回路ブロック100内に、
図17に示した位置決め結果に基づき、各段の素子領域70〜84が配置されている。配置結果は、素子配置情報35として、たとえば、HDD23に記憶される。
【0087】
ステップS18:プロセッサ21は、密度基準情報33に基づき、オーバーラップテーブル36を作成する。
オーバーラップテーブル36は、たとえば、以下の手順で作成される。
【0088】
(オーバーラップテーブル作成手順の例)
プロセッサ21は、検証領域内での拡散層の面密度の許容範囲の下限と、検証領域の大きさに基づき、拡散層の配置を可とすることが指定される密度保障領域の基準の大きさを決定する。
【0089】
図19は、検証領域内での拡散層の配置を可とすることが指定される密度保障領域の設定例を示す図である。
検証領域110の大きさが10μm×10μmであり、検証領域110内での拡散層の面密度の許容範囲の下限が20%であるとする。このとき、拡散層の配置を可とすることが指定される密度保障領域111aは、x方向の長さを10μmとすると、y方向の長さは2μm以上あればよい。
【0090】
さらに、プロセッサ21は、検証領域内での拡散層の面密度の許容範囲の上限と、検証領域の大きさに基づき、拡散層の配置を否とすることが指定される密度保障領域の基準の大きさを決定する。
【0091】
図20は、検証領域内での拡散層の配置を否とすることが指定される密度保障領域の設定例を示す図である。
図19と同様、検証領域110の大きさが10μm×10μmであり、検証領域110内での拡散層の面密度の許容範囲の上限が70%であるとする。このとき、拡散層の配置を否とすることが指定される密度保障領域111bは、x方向の長さを10μmとすると、y方向の長さは3μm以上あればよい。
【0092】
図21は、隣接する素子領域の配置例を示す図である。
ポリシリコン抵抗による素子領域120,121には、拡散層の配置を可とすることが指定される密度保障領域120a,121aが設定されている。各密度保障領域120a,121aの幅は、10μm×10μmの検証領域110内で20%の面密度の許容範囲の下限を満たすように2μmとなっている。
【0093】
しかしながら、上記のように検証領域110内で20%の面密度の許容範囲の下限を満たす密度保障領域の幅は、検証領域110内で、2μmであればよいため、
図21の密度保障領域120a,121aは、重ね合わせられる。
【0094】
図22は、密度保障領域の重ね合わせの一例を示す図である。
図22では、
図21に示した密度保障領域120a,121aが重ね合わされて2μmの幅の密度保障領域122が形成されている。
【0095】
なお、拡散層の配置を否とすることが指定される密度保障領域と、拡散層の配置を可とすることが指定される密度保障領域との重ね合わせは不可である。また、拡散層の配置を否とすることが指定される密度保障領域同士の重ね合わせは可である。
図20に示したような条件では、検証領域110内での密度保障領域の幅は3μm以上あればよいため、各密度保障領域の幅の合計が3μmを超える部分は重ね合わせられる。
【0096】
また、異なる層に関して設定された密度保障領域同士も、条件によっては重ね合わせが可である。ただし、ポリシリコン層(ダミーのポリシリコン層)の配置を可とすることが指定される密度保障領域と、拡散層の配置を可とすることが指定される密度保障領域との重ね合わせは、半導体装置の製造プロセスの都合上、不可である。
【0097】
オーバーラップテーブル36は、上記の点をテーブル情報としてまとめたものであり、たとえば、以下のようなものとなる。
図23は、オーバーラップテーブルの一例を示す図である。
【0098】
図23に示されているオーバーラップテーブル36には、拡散層とポリシリコン層についての2種類の密度保障領域(拡散層またはポリシリコン層の配置を可とするものと、否とするもの)の重ね合わせが可か不可であるかが示されている。また、
図23のオーバーラップテーブル36は、
図19、
図20で示した条件(ポリシリコン層の場合も)で設定された密度保障領域に関するものである。
【0099】
オーバーラップテーブル36の“2”は、
図21、
図22で示したように、拡散層(ポリシリコン層の場合も)の配置を可とすることが指定される密度保障領域同士において2μmを超える部分については重ね合わせが可であることを示している。
【0100】
また、オーバーラップテーブル36の“3”は、前述したように、拡散層(ポリシリコン層の場合も)の配置を否とすることが指定される密度保障領域同士において3μmを超える部分については重ね合わせが可であることを示している。
【0101】
作成されたオーバーラップテーブル36は、たとえば、HDD23に記憶される。
なお、オーバーラップテーブル36は、
図5に示した各処理の開始前に予め作成され、たとえば、HDD23に記憶されていてもよい。
【0102】
ステップS19:プロセッサ21は、上記のようなオーバーラップテーブル36を参照して、回路ブロック内に配置した素子領域の位置を調整する。
図24は、素子領域の位置を調整した例を示す図である。
【0103】
図24には、
図18に示した素子領域の配置を調整した例が示されている。また、1,2段目に配列された素子領域が、トランジスタによるものであり、3段目に配列された素子領域が、ポリシリコン抵抗によるものであるときの調整例が示されている。
【0104】
1,2段目に配列された素子領域が、トランジスタによるものであるとき、その素子領域における密度保障領域には、拡散層の配置を否とすることが指定されている。したがって、1,2段目の素子領域の密度保障領域は、
図23に示したオーバーラップテーブル36によると、3μmを超える部分については重ね合わせできる。このため、
図24に示すように、たとえば、隣接する1段目の素子領域70と2段目の素子領域73などにおいて、それぞれの密度保障領域70b,73bは、重ね合わされている。
【0105】
3段目に配列された素子領域が、ポリシリコン抵抗によるものであるとき、その素子領域における密度保障領域には、拡散層の配置を可とすることが指定されている。したがって、2,3段目の素子領域の密度保障領域は、
図23に示したオーバーラップテーブル36によると、重ね合わせは不可である。このため、
図24に示すように、たとえば、隣接する2段目の素子領域77と3段目の素子領域78などにおいて、それぞれの密度保障領域77b,78bは、重ね合わされていない。しかし、回路ブロック100の面積を小さくするために、接触するまで近づけられている。
【0106】
位置調整後の素子領域の配置情報は、素子配置情報35として、たとえば、HDD23に記憶される。
ステップS20:プロセッサ21は、ネットリスト31と、素子配置情報35に基づき、配線領域を設定する。配線領域を設定する方法はいくつかあるが、プロセッサ21は、自動配線を行い、その結果に基づき配線領域を求めてもよい。
【0107】
密度保障領域が、メタル層(配線層)以外の配置の可否が指定されているものであるとき、密度保障領域を配線領域として利用できる。
図25は、配線領域の設定例を示す図である。
【0108】
図25には、
図24に示した位置調整後の素子領域の密度保障領域を利用して、プロセッサ21が、配線領域130,131,132,133を設定した例が示されている。
配線領域130〜133では、配線を配置するためには足りないときには、配線領域を追加することになる。
【0109】
図26は、配線領域の追加例を示す図である。
図26の例では、
図25に示した1段目と2段目の素子領域の密度保障領域を重ねていた部分を離すことで配線領域131を拡張した配線領域131aが設定されている。これにより、配線131bを配置する配線領域131aが確保できる。
【0110】
配線領域の追加により、素子領域の位置が調整されたときには、素子配置情報35が更新される。
ステップS21:プロセッサ21は、素子配置情報35に基づき、回路ブロックの面積を算出する。
【0111】
以下、上記の設計方法を用いた回路ブロックの面積見積もり例を説明する。
(面積見積もり例)
まず、比較例として、拡散層の面密度を考慮しないで面積見積もりを行う例を示す。
【0112】
図27は、拡散層の面密度を考慮しない場合のトランジスタの素子領域の配置例である。
図27には、たとえば、設計時において、モニタ24a上に表示される画面140の例が示されている。素子領域141は、トランジスタが配置される素子領域であり、x方向及びy方向の長さは10μmとなっている。同様の素子領域が、計10個、2段に分けて設計制約を満たすように所定の間隔で配置されている。
【0113】
図27の例では、これら素子領域群によるx方向の長さは、53.71μm、y方向の長さは、20.94μmとなっており、面積は約1124.7μm
2と見積もられる。
しかしながら、密度検証の際の検証領域の大きさが、10μm×10μmであるとき、上記のような素子領域141は、検証領域を占有してしまう。たとえば、拡散層の検証領域内での面密度の許容範囲の上限が70%であるとすると、拡散層を多く含む上記のような素子領域141を用いた場合、その上限を超えてしまう可能性がある。その場合、拡散層を配置しない領域を設けるなどのレイアウト修正が行われ、面積が上記の見積もり面積よりも増加し、その増加分を減らすためのさらなるレイアウト修正が行われることになり、工数が増加する。
【0114】
これに対し、本実施の形態の設計方法では、前述したように素子領域が検証領域を占有するときには、その素子領域は分割され、密度保障領域が設定される。
図28は、素子領域の分割と密度保障領域の設定例を示す図である。
【0115】
画面140aには、
図27に示したような10個の素子領域がy方向に半分に分割され、20個の素子領域としてx方向に20個分配列された例が示されている。たとえば、素子領域141aのy方向の長さは5μm、x方向の長さは10μmである。
【0116】
また、素子領域141aには、密度保障領域142a,142bが設定されている(他の素子領域についても同様)。この密度保障領域142a,142bは、検証領域143内での拡散層の面密度の許容範囲の上限を超えないように、拡散層の配置を否とすることが指定されているものである。拡散層の検証領域内での面密度の許容範囲の上限が70%であるとすると、密度保障領域142a,142bのy方向の長さは、3μm以上あればよい。
【0117】
図29は、分割した素子領域を複数段で配列した例を示す図である。
図29では、想定される回路ブロックの幅に収まるように、
図28に示したような分割した素子領域を5段で配列した例が示されている。上下に隣接する素子領域に設定されている密度保障領域は重ね合わされている。たとえば、素子領域144aと素子領域145aとの間の密度保障領域146は、素子領域144a,145aのそれぞれについて設定された密度保障領域を重ね合わせたものである。
【0118】
図29の例では、密度保障領域を含めた素子領域群によるx方向の長さは、53.71μm、y方向の長さは、31μmとなっており、面積は約1665.0μm
2と見積もられる。
【0119】
このように、面積は、
図27に示した拡散層の面密度を考慮しない場合のトランジスタの素子領域の配置例の場合よりも大きく見積もられる。しかしながら、上記のような密度保障領域を含めた配置及び面積算出が行われるため、素子やダミー拡散層などの配置後の密度検証の際、エラーの発生が抑制される。そのため、発生したエラーに対処するためのレイアウト修正や、そのレイアウト修正に伴う面積増加を抑制するためのさらなるレイアウト修正などによる半導体装置の設計工数の増加を抑制できる。
【0120】
また、隣接する素子領域の密度保障領域を重ね合わせることや、密度保障領域を配線領域として使用することにより、回路ブロック及びその回路ブロックを含む半導体装置の面積が小さくなる。また、重ね合わせの際には、重ね合わせの可否や重ね合わせの程度を示すオーバーラップテーブルを用いることで、高速に素子領域の配置を決定できる。
【0121】
以上、実施の形態に基づき、本発明の設計方法、設計装置及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。