以下に添付図面を参照して、本発明にかかる設計支援装置、設計支援方法、および設計支援プログラムの実施の形態を詳細に説明する。
図1は、実施の形態にかかる設計支援装置による一動作例を示す説明図である。設計支援装置100は、LSIのレイアウト設計を支援するコンピュータである。
上述したように、従来、LSIのレイアウト設計において、レイアウトデータに対して、物理設計ルールを遵守しているか否かが判定される。物理設計ルールの一つに密度ルールがある。密度ルールとは、回路をレイアウト可能な領域に配置された回路パターンの澪都度が規定されたルールである。また、LSIの物理形状のパターンのみで密度ルールを遵守させることが困難な場合がある。このような場合、従来、例えば、物理形状のパターンが配置されていない空き領域にダミーパターンを配置することにより、密度ルールを遵守させる技術がある。なお、ダミーパターンを生成する例や密度ルールを遵守しているか否かを判定する例については、図5〜図8を用いて後述する。
しかしながら、従来技術では、ダミーパターンの生成処理においてレイアウト設計の効率が悪い場合があるという問題点がある。例えば、ダミーパターンの生成処理には、設計の対象回路113全体に対して一括でダミーパターンを生成する方法と、階層設計手法において階層別にダミーパターンを生成する方法と、がある。
例えば、設計の対象回路113全体に対して一括でダミーパターンを生成する場合、物理設計ルールには様々な規定があり、物理設計ルールをすべて満たすようにダミーパターンを生成するには処理に時間がかかる。
また、例えば、下位階層から上位階層に向かって設計を行うボトムアップの階層設計手法でレイアウト作業を行う場合、下位階層に密度エラーが発生していないにも関わらず、上位階層において密度エラーが発生する場合がある。このような場合、上位階層における密度エラーを解消するために、下位階層に戻って物理形状のパターンやダミーパターンの修正が行われるなど設計の手戻りが生じる場合がある。なお、下位階層に密度エラーが発生していないのに上位階層において密度エラーが発生する例については、図9および図10を用いて説明する。また、ボトムアップの階層設計手法でレイアウト作業を行う場合において設計の手戻りが発生する例について図3を用いて簡単に説明する。
また、密度ルールには、粗密差ルールが存在する場合がある。粗密差ルールでは、チェックウィンドウ内の密度と、チェックウィンドウの隣接領域の密度と、の密度差がチェックされる。密度が高いパターンの回路と、密度が低いパターンの回路とが隣接していると、粗密差エラーが発生する可能性が高い。しかし、下位階層のレイアウト設計では、上位階層のレイアウト設計においてどのようなパターンの回路が隣接されるか確定していない。このため、上位階層の設計において粗密差エラーにより下位階層の回路のパターンの変更を行うという設計の手戻りが生じる場合がある。
例えば、上位階層における密度エラーを解消するために、下位階層の回路のパターンを修正する場合がある。このような場合に、下位階層のレイアウト作業では、密度エラーが発生した箇所の密度が増減することは確認できるが、上位階層における密度エラーが解消したか否かを確認することはできない。このため、下位階層のレイアウト作業の終了後に、上位階層のレイアウト作業では、再度DRCを行わなければならない。そして、上位階層において密度エラーが解消していない場合、再度下位階層の設計に戻り密度の調整が行われる。このように、ボトムアップの階層設計手法では、密度エラーの解消に繰り返し作業が発生する虞があり、設計工数が増加するという問題点がある。
そこで、本実施の形態では、設計支援装置100は、対象回路内の密度エラー領域にある部分回路のダミーパターンを、対象回路内の部分回路別に用意しておいた形状の異なるダミーパターンに変更して、密度制約を満たすレイアウトデータを生成する。これにより、上位階層の設計において下位階層の部分回路のダミーパターンが調整でき、対象回路の密度調整を容易にできる。したがって、設計の手戻りを抑制することができる。
本実施の形態では、上位階層のレイアウト設計の対象となる回路を対象回路と称し、下位階層のレイアウト設計の対象となる回路を部分回路と称する。図1の例では、上位階層のレイアウト設計対象となる対象回路は、下位階層の部分回路Aから部分回路Fを有する。なお、上位階層および下位階層などの階層例については、図2を用いて説明する。
また、本実施の形態では、物理形状のパターンを回路パターンとも称する。物理形状のパターンとは、例えば、配線を表す配線パターン、拡散領域を表す拡散領域パターン、ポリシリコンを表すポリシリコンパターンなどのパターンである。また、物理形状のパターンとダミーパターンとをマージさせたパターンを回路パターンとも称する。また、回路パターンとダミーパターンとをマージさせたパターンをレイアウトパターンとも称する。
本実施の形態では、上位階層の対象回路の設計において、下位階層の部分回路のレイアウトパターンを対象回路の回路パターンの一部として扱う。そして、上位階層の対象回路のダミーパターンは対象回路のレイアウト設計時に生成されたダミーパターンを示す。例えば、対象回路の回路パターンとは、部分回路のレイアウトパターンと部分回路間を接続する配線パターンとを含む。対象回路のレイアウトパターンは、対象回路の回路パターンと、対象回路のダミーパターンとを含む。
また、配置領域は、レイアウト設計時にパターンを配置可能な領域である。配置領域は、レイアウト領域とも称する。図1の例では、配置領域はレイアウト領域114である。レイアウト領域114には、X軸やY軸のように直交する座標系が定義されてある。
記憶部101は、例えば、設計支援装置100が有するRAM(Random Access Memory)、ROM(Read Only Memory)、ディスク、不揮発性の半導体メモリなどによって実現される。記憶部101は、例えば、第1レイアウトデータ111と、パターンデータ131〜133などのパターンデータと、を記憶する。第1レイアウトデータ111と、パターンデータ131〜133などのパターンデータとは、例えば、GDS(Graphic Data System)形式によって各種パターンが表される。
第1レイアウトデータ111は、対象回路113をレイアウトすることにより得られる。第1レイアウトデータ111は、対象回路113のレイアウト領域114における複数の部分回路A〜Fの各々の部分回路の回路パターンおよび各々の部分回路のダミーパターンと、各々の部分回路間を接続する配線パターンと、を含む対象回路113の回路パターンを示す。具体的には、第1レイアウトデータ111は、例えば、部分回路Aから部分回路Fの各々についてのレイアウトパターンと、部分回路間を接続するための配線パターンと、対象回路113において発生させたダミーパターンと、を合わせたレイアウトパターンを示す。
部分回路Aを示すレイアウトデータは、例えば、部分回路Aの回路パターンを示すレイアウトデータ120と、ダミーパターンを示すパターンデータ130と、をマージすることによって生成される。
また、パターンデータは、第1レイアウトデータ111における部分回路のダミーパターンと異なる形状のダミーパターンを示す。記憶部101には、例えば、部分回路Aから部分回路Fの各々について、標準ダミーパターンと形状の異なるダミーパターンを示すパターンデータを記憶する。ここで、標準ダミーパターンとは、各部分回路のレイアウトデータが示すレイアウトパターンに含まれるダミーパターンである。標準ダミーパターンとは、例えば、標準密度率となるように生成されたダミーパターンである。
形状の異なるダミーパターンとは、例えば、密度が異なることで形状の異なるダミーパターンであってもよいし、密度が同じで形状のみが異なるダミーパターンであってもよい。例えば、密度が異なるようにレイアウトが行われれば、ダミーパターンの形状は異なる。ダミー生成の処理のアルゴリズムが異なると、密度が同じで形状が異なるダミーパターンとなる場合がある。このため、密度が同じで形状が異なるダミーパターンは、例えば、処理アルゴリズムの異なる複数のダミー生成ツールによって生成させることができる。ダミー生成ツールでは、例えば、指定された密度率となるようにダミーパターンを生成させる。密度率は、密度を表す指標である。密度率は、例えば、回路のレイアウト領域に占めるパターンを表す図形の占める面積率である。処理アルゴリズムが異なっていれば、指定された密度率が同じであっても得られるダミーパターンの形状は異なる場合がある。なお、密度が同じとは、完全一致だけでなく、所定割合のみの差である場合も含む。
図1では、部分回路の各々について、標準ダミーパターンと密度率が異なり、かつ互いに密度率が異なるダミーパターンを示すパターンデータが複数用意された例を示す。
部分回路Aを例に挙げると、記憶部101は、密度率m1〜m3の各々について、密度率を示す情報と、回路パターンとマージした場合に密度率となるダミーパターンを示すパターンデータ131〜133とを対応付けて記憶する。これにより、設計支援装置100は、記憶部101を参照して、密度率に応じたダミーパターンを示すパターンデータを検索することができる。
設計支援装置100は、例えば、第1レイアウトデータ111において、複数の部分回路A〜Fのうち、レイアウト領域114の中で対象回路113の回路パターンの密度が制約を満たさない領域に含まれる部分回路を特定する。ここでの制約とは、上述したDRCルールに含まれる密度ルールである。密度ルールには、例えば、密度率の上限値、密度率の下限値などが含まれる。また、密度ルールには、例えば、粗密差の上限値、粗密差の下限値を規定した粗密差ルールなどが含まれる。また、領域は、例えば、DRCツールにより密度ルールを満たしているか否かを判定するためのチェックウィンドウと重なる領域である。チェックウィンドウのサイズは任意に定められてある。DRCツールでは、例えば、対象回路113のレイアウト領域114内にチェックウィンドウを設ける。そして、DRCツールでは、チェックウィンドウ内の密度率が密度ルールを満たすか否かを判定する。DRCツールでは、チェックウィンドウをレイアウト領域114内の原点などから順に移動させてレイアウト領域114全体の密度率がチェックされる。このように、密度エラーが発生した領域はエラー領域とも称する。図1にはエラー領域115を示す。また、設計支援装置100は、エラー領域115に少なくとも一部が含まれる部分回路を特定してもよいし、エラー領域115に完全に含まれる部分回路を特定してもよい。図1の例では、設計支援装置100は、エラー領域115に少なくとも一部が含まれる部分回路Aを特定する。
設計支援装置100は、記憶部101を参照して、特定された部分回路の標準ダミーパターンと形状の異なる特定された部分回路のダミーパターンを示すパターンデータを抽出する。設計支援装置100は、部分回路Aの標準ダミーパターンと形状の異なるダミーパターンを示すパターンデータとして、パターンデータ131〜133を抽出する。
また、設計支援装置100は、密度エラーの種類に応じて、抽出対象のパターンデータを変えてもよい。密度エラーの種類としては、例えば、3種類挙げられる。まず、1つ目に、密度率の上限値に関する制約を満たしていないことが検出される「高密度エラー」がある。2つ目に、密度率の下限値に関する制約を満たしていないことが検出される「低密度エラー」がある。3つ目に、密度率が隣接する領域との密度率の差に関する制約を満たしていないことが検出される「粗密差エラー」がある。密度エラーの種類に応じて抽出する処理の詳細については後述する。ここでは「高密度エラー」を例に挙げて説明する。
密度エラーが「高密度エラー」の場合、設計支援装置100は、エラー領域115の密度が下がるように部分回路Aのダミーパターンを変更する。例えば、「密度率m1>密度率m2>部分回路Aの標準ダミーパターンの密度率>密度率m3」の関係にあるとする。そこで、設計支援装置100は、密度エラーが「高密度エラー」の場合、記憶部101から、部分回路Aの標準ダミーパターンの密度率よりも低い密度率m3に対応付けられたパターンデータ133を抽出する。
設計支援装置100は、第1レイアウトデータ111と抽出されたパターンデータとに基づいて、第2レイアウトデータ112を生成する。第2レイアウトデータ112は、レイアウト領域114における特定された部分回路のダミーパターンが、抽出されたパターンデータが示す部分回路のダミーパターンである対象回路113の回路パターンを示す。具体的には、設計支援装置100は、例えば、第1レイアウトデータ111に含まれる特定された部分回路のダミーパターンを示すパターンデータを、抽出されたパターンデータに置き換えた第2レイアウトデータ112を生成してもよい。
そして、設計支援装置100は、第2レイアウトデータ112において、対象回路113のレイアウトパターンの密度が制約を満たす場合、第2レイアウトデータ112を出力する。出力形式としては、設計支援装置100は、例えば、第1レイアウトデータ111を削除して第2レイアウトデータ112を記憶部101などに記憶させる。
また、第2レイアウトデータ112において、対象回路113のレイアウトパターンの密度が制約を満たすか否かは、例えば、DRCツールなどによって判定することができる。DRCツールは、設計支援装置100上で動作させてもよいし、設計支援装置100がアクセス可能な他の装置上で動作させてもよい。このため、具体的には、設計支援装置100は、例えば、DRCツールに対して、第2レイアウトデータ112を入力としたDRCを実行させる指示を出力する。これにより、設計支援装置100は、対象回路113のレイアウトパターンの密度が制約を満たすか否かの検証結果が得られる。
このように、予め形状の異なるダミーパターンを用意しておくことにより、設計支援装置100は、下位階層の部分回路のレイアウトパターンの密度を容易に調整することができる。したがって、設計支援装置100は、下位階層の部分回路のレイアウト設計作業などへの手戻りを抑制することができる。ひいては、設計支援装置100は、手戻りによる設計時間の長期化を抑制することができる。
また、第2レイアウトデータ112において対象回路113のレイアウトパターンの密度が制約を満たさない領域があると判定され、抽出されたパターンデータが複数ある場合がある。このような場合、設計支援装置100は、対象回路113のレイアウトパターンの密度が制約を満たすようになるまで順に特定された部分回路のパターンデータを置き換えてもよい。また、第2レイアウトデータ112において対象回路113のレイアウトパターンの密度が制約を満たさない領域があると判定され、特定された部分回路が複数ある場合がある。このような場合、設計支援装置100は、対象回路113のレイアウトパターンの密度が制約を満たすようになるまで異なる部分回路のパターンデータを置き換えてもよい。
図2は、LSIの階層構造例を示す説明図である。設計対象となる回路がLSIなどのように大きい場合、レイアウト設計作業は、複数の階層に分割して行われる。図2の例では、全体のLSI200がサブチップ201に分割され、各サブチップ201がいくつかのブロック211に分割されてある。さらに、ブロック211はスタンダードセルやマクロセルなどのセル223が含まれる。
図2では、例えば、LSI200のレイアウト設計作業が、LSI階層、サブチップ階層、ブロック階層、スタンダードセルおよびマクロセルなどのセル階層という4階層の構造別に行われる。本実施の形態では、レイアウト設計の手法として、スタンダードセルやマクロなどの最下位の階層から高階層に向かって順に作業が行われるボトムアップの設計手法が用いられる。
図2の例では、LSI200が4階層の構造によってレイアウトされる例を示すが、これに限らず、2階層や3階層、4階層よりも大きい階層の構造によってレイアウトされてもよい。例えば、階層設計手法を用いる場合、階層別に設計者などが異なる場合がある。このため、従来技術では、上位階層の設計で密度エラーが発生すると、上位階層の設計者が、下位階層の設計者に下位階層の部分回路のレイアウトパターンの再設計を依頼することになり、上位階層の設計者と下位階層の設計者との両方の設計者の手間がかかるという問題点がある。本実施の形態では、下位階層のレイアウト設計への手戻りを抑制することができるため、各設計者の手間を省くことができる。
図2の例では、上位階層がブロック階層であれば、下位階層はスタンダードセルやマクロ階層である。上位階層がサブチップ階層であれば、下位階層はブロック階層、スタンダードセルやマクロ階層である。上位階層がLSI階層であれば、下位階層はサブチップ階層、ブロック階層、スタンダードセルやマクロ階層である。
図3は、従来技術における階層設計手法によるレイアウト設計処理手順例を示すフローチャートである。まず、従来技術では、下位階層設計作業が行われる(ステップS301)。下位設計作業では、回路レイアウトと、回路ライブラリの作成と、標準ダミーパターン生成とのそれぞれの処理が行われる。標準ダミーパターン生成の処理では、例えば、指定された標準密度率を満たすようにダミーパターンが生成される。指定された標準密度率となるダミーパターンが、標準ダミーパターンであり、部分回路のレイアウトデータが示すレイアウトパターンに含まれる。
つぎに、従来技術では、上位階層設計作業が行われる(ステップS302)。ステップS302において、上位階層における回路レイアウトデータが生成された後に、下位階層内で密度エラーが発生したか否かが判定される(ステップS311)。下位階層内で密度エラーが発生したと判定された場合、再度、下位階層設計作業が行われる(ステップS311:Yes)。一方、下位階層内で密度エラーが発生していないと判定された場合(ステップS311:No)、再度、上位階層設計作業は終了する。
このように、従来技術では、例えば、上位階層設計作業によって得られた回路レイアウトデータにおいて、下位階層内で密度エラーが発生した場合、下位階層設計作業に戻って下位階層の部分回路についてのレイアウトが行われる。
図4は、本実施の形態における階層設計手法によるレイアウト設計処理手順例を示すフローチャートである。図4には、図3に示す従来技術におけるレイアウト設計処理手順と本実施の形態におけるレイアウト設計処理を実行させる手順とを比較するために、簡単化したフローを用いる。
まず、設計支援装置100は、下位階層設計作業を行う(ステップS401)。ステップS401において、設計支援装置100は、回路レイアウト生成と、回路ライブラリ作成と、標準ダミーパターン生成との処理をそれぞれ行う。さらに、ステップS401において、設計支援装置100は、密度率の異なる複数のダミーパターンの生成処理を行う。回路レイアウト生成処理とは、例えば、回路パターンを示すレイアウトデータを生成する処理である。つぎに、標準ダミーパターン生成処理とは、標準密度率となるようにダミーパターンを示すパターンデータを生成する処理である。そして、回路ライブラリ作成処理とは、標準密度率と異なる密度率となる複数のダミーパターンを示すパターンデータを生成してパターンデータを回路ライブラリ400にライブラリ化する処理である。ステップS311において、設計支援装置100は、生成したダミーパターンを示すパターンデータと密度率を示す情報とを対応付けて回路ライブラリ400に登録する。
つぎに、設計支援装置100は、上位階層設計作業を行い(ステップS402)、一連の処理を終了する。ステップS402において、設計支援装置100は、上位階層における回路レイアウトデータが生成された後に、下位階層内で密度エラーが発生したか否かを判定する(ステップS411)。下位階層内で密度エラーが発生していないと判定された場合(ステップS411:No)、設計支援装置100は、一連の処理を終了する。
一方、下位階層内で密度エラーが発生したと判定された場合(ステップS411:Yes)、設計支援装置100は、エラー種別、発生階層を特定する(ステップS412)。設計支援装置100は、エラー発生階層ごとに、回路ライブラリから、つぎの差し替え候補となるダミーパターンを検索する(ステップS413)。設計支援装置100は、ダミーパターンを差し替える(ステップS414)。そして、設計支援装置100は、密度チェックを再実行する(ステップS415)。設計支援装置100は、密度エラーが解消したか否かを判定する(ステップS416)。密度エラーが解消していないと判定された場合(ステップS416:No)、設計支援装置100は、ステップS413へ戻る。密度エラーが解消したと判定された場合(ステップS416:Yes)、設計支援装置100は、一連の処理を終了する。
このように、図4では、図3と比較して下位階層設計作業に戻る作業を低減させることができる。したがって、手戻り回数を低減させることができるため、設計時間の短縮化を図ることができる。
ここで、設計支援装置100による詳細な処理の説明を行う前に、図5〜図10を用いて、ダミーパターンの発生および密度エラーのチェック例について簡単に説明する。
図5は、ダミーパターンの発生処理およびマージ処理前の回路パターンの一例を示す説明図である。図5には、所定の配線層の回路パターンを示す。図5においてレイアウト領域の左下が原点である。
図6および図7は、ダミーパターンの発生処理およびマージ処理後の回路レイアウトパターンの一例を示す説明図である。図6および図7には、図5に示した回路パターンに対して、指定された密度率を満たすようにダミーパターンの発生処理によって生成されたダミーパターンをマージした後のレイアウトパターンを示す。ダミーパターンの生成処理の方法は、ダミーパターンの生成処理用のダミー生成ツールなどのアプリケーションを用いればよく、特に限定しない。図6には、指定された密度率が25[%]の場合を例に示す。図7には、指定された密度率が50[%]の場合を例に示す。
また、DRCには、生成されたダミーパターンに対しても設計ルールが存在する。図6および図7において、設計ルールでは、例えば、ダミーパターンの最小サイズが2×1(1[μ]m)マス、最小間隔が1マス(1[μ]m)である。この設計ルールを遵守するようにダミーパターンは生成されてある。
そして、生成されたダミーパターンと回路パターンとがマージされることにより、指定された密度率が満たされたレイアウトパターンを示すレイアウトデータが得られる。
つぎに、図8〜図10を用いてDRCツールによる密度エラーの検出および原点の変化例について説明する。DRCツールでは、回路パターンやレイアウトパターン上にチェックウィンドウを設ける。そして、DRCツールでは、チェックウィンドウを移動させながら、チェックウィンドウ内のパターンが密度制限値の範囲を満たすか否かを確認する。ここでは、密度制限値、ウィンドウサイズ、ウィンドウ移動量はそれぞれ以下の通りである。ウィンドウ移動量が小さいと、チェック回数が多くなる。ウィンドウ移動量が大きいと、チェック回数が少なくなる。
密度制限値:15[%]〜85[%]
ウィンドウサイズ:4[μm2](4×4マスの16マス)
ウィンドウ移動量:2[μm](2マス)
図8は、チェックウィンドウの初期配置例を示す説明図である。DRCツールでは、例えば、初期配置として、原点を基準に4[μm2]のチェックウィンドウが配置される。チェックウィンドウは16マスのため、1マスの面積率は6.25(100÷16)[%]である。
図9の例では、初期配置におけるチェックウィンドウには、合計4マス分の配線パターンとダミーパターンとがある。配線パターンとダミーパターンとの合計の面積率は25(6.25[%]×4)[%]である。初期配置におけるチェックウィンドウ内の配線パターンとダミーパターンとの合計の面積率は密度制限値の範囲に含まれているため、初期配置において密度エラーがないと判定される。
つぎに、DRCツールでは、チェックウィンドウを原点からX軸方向に2[μm]移動させる。そして、移動後の配置においてチェックウィンドウ内のパターンの合計の面積率が密度制限値の範囲に含まれるか否かが判定される。
図9は、密度エラーとチェックウィンドウの一例を示す説明図である。図9に示すように、領域Aは、チェックウィンドウと同じサイズである。領域Aは、配線パターンとダミーパターンとの合計の面積率が0[%]である。しかし、チェックウィンドウは、原点から2[μm]ごとに移動され、チェックウィンドウと領域Aとは重ならない。このため、領域Aの密度エラーは検出されない。
図10は、上位階層において密度エラーが検出される例を示す説明図である。図10には、図9に示した部分回路のレイアウトパターンを用いて、上位階層においてレイアウトが行われた例を示す。
図10の例では、上位階層において、図9に示した部分回路のレイアウトパターンの左側に別の部分回路のレイアウトパターンが配置される。また、上位階層における原点が、上位階層におけるレイアウト領域の原点になる。このため、上位階層における原点は、図9に示した部分回路のレイアウトパターンにおける原点とは異なる。上位階層において、上述したウィンドウサイズやウィンドウ移動量によって密度エラーの判定が行われると、下位階層において密度エラーと判定されなかった領域Aにチェックウィンドウが重なるため、領域Aは密度エラーと判定される。このように、原点が変更されたことにより上位階層によってあらたに密度エラーが検出される場合がある。
(設計支援装置100のハードウェア構成例)
図11は、実施の形態にかかる設計支援装置のハードウェア構成例を示すブロック図である。設計支援装置100は、CPU(Central Processing Unit)1101と、ROM1102と、RAM1103と、ディスクドライブ1104と、ディスク1105と、を有する。設計支援装置100は、I/F(Inter/Face)1106と、キーボード1107と、マウス1108と、ディスプレイ1109と、を有する。また、CPU1101と、ROM1102と、RAM1103と、ディスクドライブ1104と、I/F1106と、キーボード1107と、マウス1108と、ディスプレイ1109とは、バス1100によってそれぞれ接続される。
ここで、CPU1101は、設計支援装置100の全体の制御を司る。ROM1102は、ブートプログラムなどのプログラムを記憶する。RAM1103は、CPU1101のワークエリアとして使用される。ディスクドライブ1104は、CPU1101の制御にしたがってディスク1105に対するデータのリード/ライトを制御する。ディスク1105は、ディスクドライブ1104の制御で書き込まれたデータを記憶する。ディスク1105としては、磁気ディスク、光ディスクなどが挙げられる。
I/F1106は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク1110に接続され、このネットワーク1110を介して他の装置に接続される。そして、I/F1106は、ネットワーク1110と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F1106には、例えばモデムやLANアダプタなどを採用することができる。
キーボード1107やマウス1108は、利用者の操作により、各種データの入力を受け付けるインターフェースである。ディスプレイ1109は、CPU1101の指示により、データを出力するインターフェースである。
また、図示を省略するが、設計支援装置100には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、設計支援装置100には、プリンタなどの出力装置が設けられていてもよい。
また、本実施の形態では、設計支援装置100のハードウェア構成として、パーソナル・コンピュータを例に挙げているが、これに限らず、サーバなどであってもよい。設計支援装置100がサーバである場合、設計支援装置100と、利用者が操作可能な装置やディスプレイ1109などと、がネットワーク1110を介して接続されてもよい。
(各種DB等の記憶内容)
つぎに、設計支援装置100が有する各種DB(Database)等の記憶内容について説明する。各種DB等は、例えば、図11に示した設計支援装置100が有するRAM1103、ROM1102、ディスク1105、フラッシュメモリ等の不揮発性の半導体メモリ(図示省略)などの記憶部により実現される。
まず、図12および図13を用いて、部分回路ごとに密度率の異なる複数のダミーパターンを生成するための設定値ファイルと目標密度率リストの記憶例について説明する。そして、図14には、回路ライブラリ400の例について説明する。
図12は、設定値ファイルおよび目標密度率リストの一記憶例を示す説明図(その1)である。設定値ファイル1200−1は、部分回路ごとに密度率の異なる複数のダミーパターンを生成するための密度率を設定するためのファイルである。設定値ファイル1200−1は、標準密度率を基準(0[%])として、増減率が記述されてある。標準密度率は、ダミーパターンを生成する際の基準となる密度率である。標準密度率は、例えば、密度ルールに規定された制限範囲に基づいて決定される。そして、標準密度率を満たすように部分回路の回路パターンが生成される。図12の設定値ファイル1200−1の例では、標準密度率を「0:50」(「増減率:密度率」)という形式で表している。
目標密度率リスト1201−1は、設定値ファイル1200−1に基づいて生成される目標密度率が記述されたファイルである。具体的には、目標密度率リスト1201−1は、例えば、標準密度率から、設定値ファイル1200−1に記述された各増減値を加算することによって得られる目標密度率をリスト化したファイルである。例えば、標準密度率50[%]−5[%]によって目標密度率「45[%]」が得られる。図12の例では、目標密度率は5[%]の等間隔の値であるが、これに限らず、目標密度率は等間隔でなくてもよい。
図13は、設定値ファイルおよび目標密度率リストの一記憶例を示す説明図(その2)である。図13に示す設定値ファイル1200−2は、標準密度率に近いダミーパターンの数を多くし、標準密度率から遠いダミーパターンの数が多くなるようにするため目標密度率を設定するめのファイルである。図13に示す目標密度率リスト1201−2は、図13に示す設定値ファイル1200−2に基づいて生成された目標密度率をリスト化したファイルである。標準密度率に近い目標密度率の間隔は、49.5[%]、49.4[%]、49・3[%]などのように0.1[%]刻みである。これに対して、標準密度率から遠い目標密度率の間隔は、49.0[%]、47.0[%]のように標準密度率に近い目標密度率の間隔よりも大きい。
また、本実施の形態では、すべての部分回路において同じ設定値ファイル1200を用いるため、すべての部分回路において生成されるレイアウトパターンの密度率が同様であるが、これに限らない。例えば、部分回路ごとに設定値ファイル1200が用意されていてもよいし、特に限定しない。
図14は、回路ライブラリの一記憶例を示す説明図である。回路ライブラリ400は、例えば、部分回路の種類別に、登録情報1401と、登録情報1401に関連付けられた複数のダミーパターンを示すパターンデータ141n−mと、が登録されてある。
ここで、機能および性能が同一の部分回路同士は同一種類とし、機能または性能が異なる部分回路同士は異なる種類とする。なお、機能が同じであっても回路パターンが異なるような部分回路同士は、異なる種類である。例えば、2入力1出力で駆動能力が1のORセルと、2入力1出力で駆動能力が2のORセルとは異なる種類の部分回路である。
また、nは1以上の整数である。nは部分回路の種類の数に応じて決まる。mは1〜xや1〜yなどのように、登録されるダミーパターンの数によって定まる。
図15は、登録情報の一記憶例を示す説明図(その1)である。登録情報1401−Aは、例えば、密度率と、密度率を満たすようにレイアウトされたダミーパターンを示すパターンデータとを対応付ける情報である。図15に示す登録情報1401−Aは、例えば、図12に示す設定値ファイル1200−1に基づいてパターンデータが作成された場合における登録情報である。
登録情報1401−Aは、密度率、データID、パターンデータ名のフィールドを有する。密度率のフィールドには、標準密度率に対する目標密度率の増減値が設定される。データIDのフィールドには、目標密度率を満たすようにレイアウトされたダミーパターンの識別情報が設定される。ダミーパターンの識別情報としては、レイアウト用のCADによって設計されたダミーパターンのトップの図面名が設定される。また、パターンデータ名のフィールドには、ダミーパターンを示すパターンデータのファイルの在り処が設定される。
図16は、登録情報の一記憶例を示す説明図(その2)である。図16に示す登録情報1401−Bは、例えば、図13に示す設定値ファイル1200−2に基づいてパターンデータが作成された場合における登録情報1401である。図16に示す登録情報1401−Bが有するフィールドは、図15に示した登録情報1401−Aが有するフィールドと同じであり、詳細な説明を省略する。
図15や図16に示す登録情報1401には、パターンデータと密度率とが対応付けられてある。これにより、設計支援装置100は、指定の密度率に応じたパターンデータを検索することができる。
図17は、エラーリストの一記憶例を示す説明図である。エラーリスト1700は、DRCツールによって発生したエラーに関する情報を集約したデータベースである。エラーリスト1700は、例えば、密度ルール名、エラー種別、エラー数、密度制限値、エラー座標、エラー領域の密度率、制限値とエラー密度率の差のフィールドを有する。各フィールドに情報が設定されることによりレコードとしてエラー要素1701−1〜1701−6などが記憶される。
密度ルール名のフィールドには、DRCルールに定義されている密度ルールの名前が設定される。エラー種別のフィールドには、密度ルールの種別が設定される。密度ルールの種別としては、「高密度エラー」、「低密度エラー」、「粗密差エラー」のいずれかが設定される。
エラー数のフィールドには、密度ルールによって検出されたエラーの数が設定される。密度制限値のフィールドには、例えば、DRCルールに定義されている密度率の制限値が設定される。密度ルールの種別が「高密度エラー」の場合、密度制限値のフィールドには、密度率の上限値が設定される。密度ルールの種別が「低密度エラー」の場合、密度制限値のフィールドには、密度率の下限値が設定される。密度ルールの種別が「粗密差エラー」の場合、密度制限値のフィールドには、粗密差の上限値および下限値が設定される。例えば、密度ルール「density_01」の場合、密度制限値である上限値は70[%]である。
エラー座標のフィールドには、エラーが検出された領域のレイアウト座標の座標値が設定される。レイアウト領域には、直交するX軸とY軸が定義されてあり、原点が定義されてある。具体的には、エラー座標のフィールドには、レイアウト領域のうちのエラーが検出された領域を示すレイアウト座標として、例えば「{矩形左下のX座標,矩形左下のY座標} {矩形右上のX座標,矩形右上のY座標}」が設定される。例えば、密度ルール「density_01」によって検出されたエラー領域は、「{10,10} {60,60}」によって表される領域である。
エラー領域の密度率のフィールドには、DRCツールによって検出されたエラー領域の密度率が設定される。制限値とエラー密度率の差のフィールドには、制限値とエラー密度率の差分値が設定される。例えば、密度ルール「density_01」によって検出されたエラー領域の密度率は「80」であり、制限値とエラー密度率の差は「10」である。
(設計支援装置100の機能的構成例)
図18は、設計支援装置の機能的構成例を示すブロック図である。設計支援装置100は、第1生成部1801と、第2生成部1802と、検証実行部1803と、判定部1804と、登録部1805と、特定部1806と、抽出部1807と、第3生成部1808と、出力部1809と、記憶部101と、を有する。第1生成部1801から出力部1809までの制御部1800の処理は、例えば、図11に示すCPU1101がアクセス可能なROM1102、RAM1103、ディスク1105などの記憶装置に記憶されたプログラムにコーディングされている。そして、CPU1101が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部1800の処理が実現される。
記憶部101は、RAM1103、ROM1102、ディスク1105、半導体メモリなどによって実現される。記憶部101は、例えば、各種レイアウトデータ、回路ライブラリ400、設定値ファイル1200、目標密度率リスト1201、エラーリスト1700などが記憶される。また、制御部1800の処理結果は、例えば、RAM1103、ROM1102、ディスク1105などの記憶装置に記憶される。
つぎに、制御部1800に含まれる各機能ブロックについて、下位階層のレイアウト設計作業について説明した後に、上位階層のレイアウト設計作業について詳細に説明する。
まず、下位階層のレイアウト設計作業について説明する。
第1生成部1801は、設計の対象回路に含まれる複数の部分回路の各々の部分回路について、各々の部分回路の回路パターンを示すレイアウトデータを生成する。換言すると、第1生成部1801は、下位階層において、各々の部分回路の配置配線処理を行う。より具体的には、第1生成部1801は、例えば、自動配置配線ツールによって部分回路の配置配線処理を行ってもよい。または、第1生成部1801は、例えば、キーボード1107やマウス1108などに対する設計者からの操作入力に応じて部分回路の配置配線処理を行ってもよい。例えばスタンダードセルやマクロセル、ブロック、サブチップなどの部分回路は上位階層において複数回使用される。このため、部分回路は、従来技術と同様に、種類別にレイアウトデータが生成される。
第2生成部1802は、複数の部分回路の各々について、第1生成部1801によって生成されたレイアウトデータに基づいて、ダミーパターンを示すパターンデータを生成する。具体的には、第2生成部1802は、ダミー生成ツールに標準密度率を与えてダミーパターンを示すパターンデータを生成する。標準密度率は、例えば、任意に設定される。標準密度率は、例えば、密度ルールで規定された制限範囲の中間値が設定されてもよい。制限範囲の下限値が30[%]であり、制限範囲の上限値が70[%]であれば、目標密度率に50[%]が設定される。上述したように、標準密度率となるダミーパターンは、標準ダミーパターンとも称する。そして、第2生成部1802は、第1生成部1801によって生成されたレイアウトデータと、標準ダミーパターンを示すパターンデータと、をマージする。マージする処理として、第2生成部1802は、例えば、第1生成部1801によって生成されたレイアウトデータにパターンデータを追加する。標準密度率を満たした部分回路のレイアウトデータが得られる。なお、従来技術と同様に、パターンデータは、配線パターンやポリシリコンパターンなどのようにレイアウト層別に生成される。
つぎに、検証実行部1803は、複数の部分回路の各々の部分回路について、第2生成部1802によって生成されたレイアウトデータに対して、DRC、タイミング検証、電力解析、ノイズ解析などの検証を実行する。具体的には、検証実行部1803は、例えば、DRC、タイミング検証、電力解析、ノイズ解析などの各検証ツールに、第2生成部1802によって生成されたレイアウトデータを与えることにより各検証を行う。各検証ツールは、設計支援装置100上で動作してもよいし、設計支援装置100と通信可能な他の装置上で動作してもよい。例えば、各検証ツールが、設計支援装置100と通信可能な他の装置上で動作する場合、設計支援装置100は、他の装置に、レイアウトデータを入力として検証ツールを実行させる指示を通知する。このようにして、検証実行部1803は、各検証を実行することができる。
判定部1804は、検証実行部1803によって検証された各検証結果が制約を満たしているか否かを判定する。具体的には、判定部1804は、例えば、各検証ツールによる検証においてエラーが発生したか否かを判定する。DRCを例に挙げると、DRCツールによって密度ルールが制約を満たしているか否かが検証されるため、判定部1804は、検証結果に密度エラーが発生したことを示す情報が含まれているか否を判定する。判定部1804によっていずれかの検証にエラーが発生したと判定された場合、ダミーパターンを含まない回路レイアウトパターンを修正するために第1生成部1801の処理が行われる。例えば、DRCにおける制約は上述した物理設計ルールに含まれる。複数の部分回路のすべての検証結果が制約を満たしていると判定された場合、密度の異なるダミーパターンが生成される。
つぎに、第2生成部1802は、複数の部分回路の各々について、第1生成部1801によって生成されたレイアウトデータに基づいて、標準ダミーパターンと形状の異なるダミーパターンを示すパターンデータを生成する。ここでは、形状の異なるダミーパターンを用意するために、目標密度率リスト1201に規定された目標密度率ごとにダミーパターンを生成する例を説明する。具体的には、第2生成部1802は、例えば、目標密度率リスト1201に規定された目標密度率ごとに、目標密度率に応じたパターンデータを生成する。そして、第2生成部1802は、例えば、部分回路の各々について、目標密度率ごとに、第1生成部1801によって生成されたレイアウトデータと、パターンデータと、をマージする。マージする処理は、上述した通り、例えば、第1生成部1801によって生成されたレイアウトデータに生成したパターンデータを追加する処理である。なお、目標密度率ごとのパターンデータは、配線層やポリシリコン層などのようにレイアウト層別に生成される。
検証実行部1803は、複数の部分回路の各々について、目標密度率ごとに、第2生成部1802によって生成されたレイアウトデータに対して、DRC、タイミング検証、電力解析、ノイズ解析などの検証を実行する。検証実行部1803による検証の実行については上述した通りである。
判定部1804は、複数の部分回路の各々について、目標密度率ごとに、各検証結果が制約を満たしているか否かを判定する。
登録部1805は、複数の部分回路の各々について、レイアウトデータの各検証結果が制約を満たしていると判定された目標密度率と、目標密度率について生成されたパターンデータとを対応付けて、記憶部101に記憶された回路ライブラリ400に登録する。具体的には、登録部1805は、パターンデータを記憶部101に記憶させるとともに、部分回路の種類別に、密度率と、データIDと、パターンデータ名と、を登録情報1401に登録する。登録情報1401の詳細例については、上述した図15や図16に示した通りである。
つぎに、上位階層のレイアウト設計作業について説明する。
第1生成部1801は、対象回路の回路パターンを示す第1レイアウトデータを生成する。対象回路の回路パターンは、対象回路のレイアウト領域における複数の部分回路の各々の部分回路の回路パターンおよび各々の部分回路のダミーパターンの位置と、各々の部分回路間を接続する配線パターンと、を含む。第1生成部1801は、例えば、部分回路の各々についてのレイアウトデータに基づいて、第1レイアウトデータを生成する。
具体的には、第1生成部1801は、例えば、配置配線ツールを用いて第1レイアウトデータを生成してもよい。または、第1生成部1801は、例えば、マウス1108やキーボード1107などの入力装置に対する設計者の操作入力に応じて第1レイアウトデータを生成してもよい。そして、第2生成部1802は、第1レイアウトデータが示す対象回路の回路パターンに対して、標準密度率となるようにダミーパターンを示すパターンデータを生成してもよい。第2生成部1802は、第1レイアウトデータに、生成したパターンデータをマージさせる。
つぎに、検証実行部1803は、第1レイアウトデータに対して、DRC、タイミング検証、電力解析、ノイズ解析などの検証を実行する。
そして、判定部1804は、第1レイアウトデータの各検証結果が制約を満たしているか否かを判定する。タイミング検証、電力解析、ノイズ解析などの検証結果が制約を満たしていない場合、配線パターンなどの修正を行う。また、判定部1804は、例えば、DRCツールの検証結果を解析してDRCツールの検証結果に密度エラーが含まれている場合、エラーリスト1700を生成する。エラーリスト1700の一例は、上述した図17に示す。
特定部1806は、第1レイアウトデータにおいて、対象回路に含まれる複数の部分回路のうち、配置領域の中で対象回路の回路パターンの密度が制約を満たさない領域に含まれる部分回路を特定する。ここでの領域は、上述した通りチェックエラーと重複する領域であり、密度エラーが検出された領域である。密度エラーが検出された領域は、エラー領域とも称する。具体的には、特定部1806は、例えば、エラーリスト1700から先頭のエラー要素を取得する。そして、特定部1806は、複数の部分回路から、取得したエラー要素に含まれるエラー座標に基づいてエラー領域に含まれる部分回路を特定する。
特定される部分回路は、エラー領域に少なくとも一部が含まれる部分回路であってもよいし、エラー領域に全部が含まれる部分回路であってもよいし、エラー領域に所定率含まれる部分回路であってもよい。このように、特定される部分回路の条件は、設計者や設計支援装置100の開発者が決定すればよく、特に限定しない。
ここで、特定部1806によって特定された部分回路は、差し替え候補回路とも称する。特定部1806は、例えば、差し替え候補回路のインスタンス名などの名前を要素としてリスト化した階層名リストを作成する。
抽出部1807は、記憶部101から、配置領域における特定部1806によって特定された部分回路のダミーパターンと密度の異なる特定された部分回路のダミーパターンを示すパターンデータを抽出する。具体的には、抽出部1807は、例えば、階層名リストの先頭から要素を取り出す。そして、抽出部1807は、例えば、回路ライブラリ400から、第1レイアウトデータにおける、取り出した要素の差し替え候補回路のパターンデータと異なる密度率のパターンデータを抽出する。
ここで、抽出対象となるパターンデータは、例えば、密度エラーの種類に応じて定まる。密度エラーのエラー種別は、上述したように、「高密度エラー」、「低密度エラー」、「粗密差エラー」の3つがある。
まず、エラー種別が「高密度エラー」の場合について説明する。上述したように、エラー種別が「高密度エラー」の場合、エラー領域の密度率が密度ルールに規定された密度範囲よりも高い。このため、抽出部1807は、エラー領域の密度率が低くなるようにパターンデータを抽出する。具体的には、抽出部1807は、例えば、回路ライブラリ400から、第1レイアウトデータに含まれる差し替え候補回路のダミーパターンの密度率よりも密度率が低いダミーパターンを示すパターンデータを抽出する。
つぎに、エラー種別が「低密度エラー」の場合について説明する。上述したように、エラー種別が「低密度エラー」の場合、エラー領域の密度率が密度ルールに規定された密度範囲よりも低い。このため、抽出部1807は、エラー領域の密度率が高くなるようにパターンデータを抽出する。具体的には、抽出部1807は、例えば、回路ライブラリ400から、第1レイアウトデータに含まれる部分回路のダミーパターンの密度率よりも密度率が高いダミーパターンを示すパターンデータを抽出する。
そして、エラー種別が「粗密差エラー」である場合について説明する。粗密差ルールでは、密度差が規定されてある。粗密差ルールによるDRCでは、ある領域の密度率が、規定の密度差よりも隣接する2つの領域の一方の密度率よりも大きく、ある領域の密度率が、規定の密度差よりも隣接する2つの領域の他方の密度率よりも小さい場合に、2つの領域をエラー領域として検出する。ここで、密度率が低い一方の領域は低密度エラー領域と称する。密度率が高い他方の領域は高密度エラー領域と称する。
このように、エラー種別が「粗密差エラー」である場合、2つの領域がエラー領域として検出される。そこで、抽出部1807は、ある領域と、低密度エラー領域および高密度エラー領域との密度差が規定の密度差以下となるように、低密度エラー領域および高密度エラー領域との各々の差し替え候補回路についてパターンデータを抽出する。なお、粗密差エラーが解消されればよいため、抽出部1807は、低密度エラー領域および高密度エラー領域とのうちの一方のエラー領域の差し替え回路のパターンデータを抽出してもよい。低密度エラー領域の場合、抽出部1807は、第1レイアウトデータにおける差し替え候補回路のダミーパターンの密度率よりも密度率が高いダミーパターンを示すパターンデータを抽出する。また、高密度エラー領域の場合、抽出部1807は、第1レイアウトデータにおける差し替え候補回路のダミーパターンの密度率よりも密度率が低いダミーパターンを示すパターンデータを抽出する。
ここで、抽出部1807によって抽出されたパターンデータを差し替え候補データとも称する。差し替え候補データが示すダミーパターンを、差し替え候補のダミーパターンとも称する。
つぎに、第3生成部1808は、第1レイアウトデータと差し替え候補データとに基づいて、第2レイアウトデータを生成する。第2レイアウトデータは、配置領域における特定された部分回路のダミーパターンが、差し替え候補データのダミーパターンに置き換えられた対象回路の回路パターンを示す。具体的には、第3生成部1808は、第1レイアウトデータに含まれる差し替え候補回路のダミーパターンを示すパターンデータを、差し替え候補データに置き換える。置き換え後の第1レイアウトデータが第2レイアウトデータである。置き換える処理として、第3生成部1808は、第1レイアウトデータに含まれる差し替え候補回路のダミーパターンを示すパターンデータを削除する。そして、第3生成部1808は、第1レイアウトデータに含まれる差し替え候補回路のレイアウトデータに、差し替え候補データをマージする。これにより、既存のパターンデータから差し替え候補データに置き換えることができる。
つぎに、検証実行部1803は、第2レイアウトデータに対して、DRCを実行する。そして、判定部1804は、検証実行部1803によって検証された第2レイアウトデータに対するDRCの検証結果が制約を満たしているか否かを判定する。
出力部1809は、検証実行部1803によって検証された第2レイアウトデータに対するDRCの検証結果が制約を満たしていると判定された場合、第2レイアウトデータを出力する。具体的には、出力部1809は、例えば、第2レイアウトデータを記憶部101に格納する。また、出力部1809は、例えば、第2レイアウトデータが示す回路パターンをレイアウト用のCADによってディスプレイ1109などの表示装置に、対象回路の回路パターンとして表示させてもよい。
ここで、検証実行部1803によって検証された第2レイアウトデータに対する各検証結果が制約を満たしていないと判定された場合について説明する。
抽出部1807によって複数のパターンデータが抽出される場合がある。このような場合、第3生成部1808は、第1レイアウトデータに含まれる差し替え候補回路の差し替え候補データを、複数の差し替え候補データのうち処理の対象となっていない差し替え候補データに置き換えて新たに第2レイアウトデータを生成する。そして、上述したように検証実行部1803が、新たに生成した第2レイアウトデータに対して各検証を実行する。このように、複数の差し替え候補データがある場合、判定部1804によって各検証結果が制約を満たしていると判定されるまで、第3生成部1808と検証実行部1803との処理を繰り返してもよい。
また、特定部1806によってエラー領域に含まれる複数の部分回路が抽出される場合がある。このような場合、抽出部1807は、差し替え候補回路から処理対象となっていない差し替え候補回路のパターンデータの密度率と異なる密度率のパターンデータを抽出する。そして、第3生成部1808と検証実行部1803との処理を再度行う。このように、複数の差し替え候補回路がある場合、判定部1804によって各検証結果が制約を満たしていると判定されるまで、抽出部1807と第3生成部1808と検証実行部1803との処理を繰り返してもよい。
処理対象となる差し替え候補回路と、処理対象となる差し替え候補データと、のいずれを先に変更するかについては、設計支援装置100の開発者や設計者などが任意に決定すればよく、特に限定しない。
また、処理対象となる差し替え候補回路と、処理対象となる差し替え候補データと、の両方について順に変更しても判定部1804によって各検証結果が制約を満たしていると判定されない場合がある。このような場合、ダミーパターンの変更による密度率の増減だけでは、密度ルールを満たすことが難しい状況である。このため、出力部1809は、ダミーパターンの増減だけでは密度エラーを満たせない旨を含むメッセージを、ディスプレイ1109などの表示装置に表示する。これにより、設計支援装置100は、対象回路の回路レイアウト自体を見直すように指示することができる。
また、上述した処理では、下位階層と上位階層との説明において2階層で説明したがこれに限らない。例えば、上位階層がサブチップ階層であれば、下位階層が、ブロック階層、スタンダードセルおよびマクロセル階層などのように下位階層に複数の階層がある場合がある。このような場合、特定部1806は、階層別に、エラー領域に含まれる部分回路を特定する。そして、特定部1806は、上述した階層名リストを作成する際に、階層別に、差し替え候補回路のインスタンス名などの名称をリスト化してもよい。
また、特定部1806による階層名リストを作成する際に並べる順番の決定キーが選択可能であってもよい。例えば、第1レイアウトデータにおける密度率からの変動を小さくしたい場合、特定部1806は、面積の小さな下位階層の差し替え候補回路のダミーパターンを優先して変更できるように階層名リストを作成してもよい。具体的には、特定部1806は、例えば、面積の小さな下位階層の差し替え候補回路の名称から順に並べて階層名リストを作成する。このように、優先して処理対象としたい下位階層があれば、特定部1806は、その下位階層の差し替え候補回路の名称から順に並べて階層名リストを作成する。
また、抽出部1807および第3生成部1808の処理対象となる差し替え候補回路は、階層別に決定されてもよいし、異なる階層から決定されてもよく、特に限定しない。
また、密度エラーの違反値が微小である場合、ダミーパターンの僅かな形状変化だけでエラーが解消する場合がある。そのため、密度率が同じであっても形状が異なるダミーパターンがあればエラーが修正できる可能性が高まる。そこで、例えば、異なる処理アルゴリズムの複数のダミー生成ツールを用意しておき、第2生成部1802は、複数のダミー生成ツールのいずれのダミー生成ツールによって標準密度率についてのダミーパターンを示すパターンデータを生成する。そして、第2生成部1802は、いずれかのダミー生成ツールと異なるダミー生成ツールについて、標準密度率についてのダミーパターンを示すパターンデータを生成する。そして、登録部1805は、異なるダミー生成ツールによって生成したパターンデータを形状の異なるダミーパターンのパターンデータとして、回路ライブラリ400に登録してもよい。また、第2生成部1802は、複数のダミー生成ツールの各々について、目標密度率についてのダミーパターンを示すパターンデータを生成してもよい。そして、登録部1805は、ダミー生成ツールの識別情報と、目標密度率と、パターンデータと、を対応付けて回路ライブラリ400に登録してもよい。
(設計支援装置100が行う処理手順例)
つぎに、設計支援装置100が行う処理手順について説明する。図19および図20を用いて、下位階層の設計処理手順について説明する。図21および図22を用いて、上位階層の設計においてDRCにより密度エラーが発生した場合における設計処理手順について説明する。
図19および図20は、設計支援装置による下位階層の設計処理手順例を示すフローチャートである。まず、設計支援装置100は、下位階層の部分回路の回路パターンを生成する(ステップS1901)。回路パターンを生成するとは、部分回路の回路パターンを示すレイアウトデータを生成することを示す。
つぎに、設計支援装置100は、標準密度率のダミーパターンを生成して回路パターンへマージする(ステップS1902)。ステップS1902によって、部分回路のレイアウトパターンを示すレイアウトデータが得られる。そして、設計支援装置100は、マージ後のレイアウトパターンを示すレイアウトデータに対して、DRC、タイミング検証、電力解析、ノイズ解析などの検証を実行する(ステップS1903)。
設計支援装置100は、各検証結果が制約を満たしているか否かを判断する(ステップS1904)。各検証結果が制約を満たしていないと判断された場合(ステップS1904:No)、設計支援装置100は、回路レイアウトを修正する(ステップS1905)。回路レイアウトを修正するとは、部分回路のレイアウトパターンを示すレイアウトデータを修正することを示す。各検証結果が制約を満たしたと判断された場合(ステップS1904:Yes)、設計支援装置100は、回路レイアウトを出力する(ステップS1906)。回路レイアウトを出力するとは、部分回路のレイアウトパターンを示すレイアウトデータを出力することを示す。ステップS1906において設計支援装置100は、例えば、レイアウトデータを記憶部101などに記憶させる。ステップS1906の後に、設計支援装置100は、図20に示すステップS2001へ移行する。
設計支援装置100は、設定値ファイル1200を読み込む(ステップS2001)。ステップS2001において、設計支援装置100は、読み込んだ設定値ファイル1200と標準密度率とに基づいて目標密度率リスト1201を作成してもよい。
つぎに、目標密度率リスト1201に含まれるすべての目標密度率により追加ダミーパターンの生成が終わったか否かを判断する(ステップS2002)。すべての目標密度率により追加ダミーパターンの生成が終わっていないと判断された場合(ステップS2002:No)、設計支援装置100は、目標密度率リスト1201に含まれる目標密度率のうち処理対象となっていない目標密度率に基づいて追加ダミーパターンを生成して回路レイアウトへマージする(ステップS2003)。ここでの回路レイアウトとは、図19に示すステップS1901またはステップS1905において生成されたダミーパターンをマージ前の回路レイアウトである。
そして、設計支援装置100は、マージ後の回路レイアウトを示すレイアウトデータに対して、各種検証を実行する(ステップS2004)。つぎに、設計支援装置100は、各検証結果が制約を満たしているか否かを判断する(ステップS2005)。各検証結果が制約を満たしていないと判断された場合(ステップS2005:No)、設計支援装置100は、作成したダミーパターンを破棄し(ステップS2006)、ステップS2002へ戻る。各検証結果が制約を満たしていると判断された場合(ステップS2005:Yes)、設計支援装置100は、ダミーパターンの情報を回路ライブラリ400に登録し(ステップS2007)、ステップS2002へ戻る。ステップS2007において、ダミーパターンの情報を回路ライブラリ400に登録するとは、目標密度率と、生成されたダミーパターンを示すパターンデータと、を対応付けて回路ライブラリ400に登録することである。
ステップS2002において、全ての目標密度率により追加ダミーパターンの生成が終わったと判断された場合(ステップS2002:Yes)、設計支援装置100は、一連の処理を終了する。
図19および図20に示した処理は、下位階層における1部分回路に対する処理であり、部分回路の種類別に同様の処理が行われる。
図21および図22は、設計支援装置による上位階層における密度エラーが発生した場合の設計処理手順例を示すフローチャートである。ここでは、上位階層の設計により得られた第1レイアウトデータに対するDRC検証において密度エラーが発生した後の処理について説明する。なお、密度エラー以外のエラーについては、特に発生していないとして説明を行う。
まず、設計支援装置100は、DRC実行結果を解析する(ステップS2101)。ステップS2101において、設計支援装置100は、DRC実行結果から、密度エラーの種別、エラーの数、エラーしたルールの密度制限値、エラー領域の回路レイアウト座標、エラー領域の密度率、密度制限値とエラー領域の密度率との差などの情報を収集する。
そして、設計支援装置100は、解析結果に基づいて、エラーリスト1700を作成する(ステップS2102)。つぎに、設計支援装置100は、密度エラー修正処理を開始する(ステップS2103)。ステップS2103において、設計支援装置100は、エラーリスト1700の先頭から、処理対象となっていない要素を取り出す。ここでの要素はレコードなどである。
設計支援装置100は、取り出した要素に含まれるエラー領域に含まれる下位階層の部分回路を特定する(ステップS2104)。そして、設計支援装置100は、階層名リストを作成し(ステップS2105)、ステップS2201へ移行する。
つぎに、設計支援装置100は、回路ライブラリ400から、パターンデータを抽出する(ステップS2201)。そして、設計支援装置100は、差し替え候補データのダミーパターンのリストを作成する(ステップS2202)。ステップS2202において、設計支援装置100は、例えば、差し替え候補データの名称をリスト化してもよい。
設計支援装置100は、作成したリストから処理対象となっていない差し替え候補データがあるか否かを判断する(ステップS2203)。処理対象となっていない差し替え候補データがあると判断された場合(ステップS2203:Yes)、設計支援装置100は、処理対象となっていない差し替え候補データのうちのいずれかの差し替え候補データに基づいて、ダミーパターンの差し替えを実行する(ステップS2204)。ステップS2204において、設計支援装置100は、第1レイアウトデータに含まれる差し替え候補回路のダミーパターンを、差し替え候補データが示すダミーパターンに置き換えた第2レイアウトデータを生成する。
設計支援装置100は、DRCを実行する(ステップS2205)。設計支援装置100は、該当のエラー領域の密度エラーが解消したか否かを判断する(ステップS2206)。該当のエラー領域の密度エラーが解消していないと判断された場合(ステップS2206:No)、設計支援装置100は、ステップS2203へ戻る。該当のエラー領域の密度エラーが解消したと判断された場合(ステップS2206:Yes)、設計支援装置100は、ステップS2209へ移行する。
ステップS2203において、すべての差し替え候補データが処理対象となったと判断された場合(ステップS2203:No)、設計支援装置100は、階層名リストにつぎの要素があるか否かを判断する(ステップS2207)。階層名リストにつぎの要素があると判断された場合(ステップS2207:Yes)、設計支援装置100は、ステップS2201へ戻る。
階層名リストにつぎの要素がないと判断された場合(ステップS2207:No)、設計支援装置100は、メッセージを出力する(ステップS2208)。そして、設計支援装置100は、エラーリスト1700を更新する(ステップS2209)。ここでエラーリスト1700を更新するとは、エラーリスト1700から処理対象となった要素を削除することを示す。
設計支援装置100は、エラーリスト1700につぎの要素があるか否かを判断する(ステップS2210)。エラーリスト1700につぎの要素があると判断された場合(ステップS2210:Yes)、設計支援装置100は、ステップS2103へ移行する。エラーリスト1700につぎの要素がないと判断された場合(ステップS2210:No)、設計支援装置100は、レイアウトデータを出力し(ステップS2211)、一連の処理を終了する。
また、図21および図22に示した処理は、DRCにおいて密度エラーが検出された場合に自動的に実行が開始されてもよいし、設計者の指示に応じて実行が開始されてもよい。
また、設計の対象となった対象回路は、対象回路を用いる上位階層においては部分回路となる。このため、本実施の形態では、上位階層における対象回路のダミーパターンの生成処理については、説明を省略したが、部分回路のダミーパターンの生成処理と同様に行われる。図21および図22に示した処理は、対象回路のダミーパターンの生成後に行ったDRCにおいて密度エラーが発生した場合に行ってもよい。例えば、対象回路を部分回路として、さらに密度率の異なる複数のダミーパターンを生成してライブライ化してもよい。上位階層がブロック階層であり、下位階層がスタンダードセルおよびマクロ階層の場合に、ブロック階層におけるブロックのレイアウト設計が終了後に、ブロック階層は下位階層になる。そして、ブロックについて複数通りのダミーパターンを生成してライブラリ化し、上位階層であるサブチップ階層におけるサブチップのレイアウト設計が行われる。
以上説明したように、設計支援装置100は、対象回路内の密度エラー領域にある部分回路のダミーパターンを、部分回路別に予め用意した形状の異なるダミーパターンに変更して、密度制約を満たすレイアウトデータを生成する。これにより、設計支援装置100は、上位階層のレイアウト設計において、下位階層の部分回路のレイアウトパターンの形状を調整することができる。したがって、設計支援装置100は、レイアウトパターンの形状を変更させることにより、密度エラーの解消の容易化を図ることができる。設計支援装置100は、容易に対象回路の密度調整をして、下位階層の部分回路のレイアウト設計作業などへの手戻りを抑制することができる。ひいては、設計支援装置100は、手戻りによる設計時間の長期化を抑制することができる。
また、設計支援装置100は、密度率が異なるダミーパターンを複数用意しておき、対象回路内の密度エラー領域にある部分回路のダミーパターンを密度率が異なるダミーパターンに変更してエラーを解消する。これにより、設計支援装置100は、上位階層のレイアウト設計において、下位階層の部分回路のレイアウトパターンの密度を調整することができる。したがって、設計支援装置100は、密度エラーの解消の容易化を図ることができる。
また、設計支援装置100は、エラー領域の密度が高すぎる「高密度エラー」の場合、エラー領域の部分回路のダミーパターンの密度よりも低い密度の部分回路のダミーパターンを抽出する。これにより、設計支援装置100は、エラー領域の密度が低くなるようにエラー領域内の部分回路のダミーパターンを置き換えることができる。したがって、設計支援装置100は、「高密度エラー」の解消の容易化を図ることができる。
また、設計支援装置100は、エラー領域の密度が低すぎる「低密度エラー」の場合、エラー領域の部分回路のダミーパターンの密度よりも高い密度の部分回路のダミーパターンを抽出する。これにより、設計支援装置100は、エラー領域の密度が高くなるようにエラー領域内の部分回路のダミーパターンを置き換えることができる。したがって、設計支援装置100は、「低密度エラー」の解消の容易化を図ることができる。
設計支援装置100は、「粗密差エラー」の場合、エラー領域の密度と隣接領域の密度との比較に応じて、エラー領域内の部分回路のダミーパターンの密度と異なる密度の部分回路のダミーパターンを抽出する。これにより、エラー領域と隣接領域との密度差を小さくすることができる。
なお、本実施の形態で説明した設計支援方法は、予め用意された設計支援プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本設計支援プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、設計支援プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した設計支援装置100は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、例えば、上述した制御部1800の機能をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、設計支援装置100を製造することができる。