【実施例1】
【0011】
実施例1に係る配線検査装置について説明する。
図1は、実施例1に係る配線検査装置の機能構成の一例を示す図である。
【0012】
[配線検査装置の機能構成]
図1に示すように、配線検査装置10は、入力部11と、出力部12と、記憶部13と、制御部14とを有する。
【0013】
入力部11は、各種情報を制御部14に入力する。例えば、入力部11は、ユーザから、後述の配線検査処理を実行するための指示を受け付けて、受け付けた指示を制御部14に入力する。ここで、ユーザが配線検査処理を実行するための指示を入力部11を介して制御部14に入力するタイミングの一例について説明する。かかるタイミングの一例としては、後述する物理設計フローにおいて、セルの仮配置を行った場合、クロックツリーの生成を行った場合、または、仮配線を行った場合などが挙げられる。すなわち、物理設計フローにおいて、詳細配線を行う前に、本実施例に係る配線検査装置10は、配線検査処理を行うことができる。詳細配線を行う前に配線検査処理を行うことができる理由は、配線検査装置10は、後述するように、配線の形状を示す配線形状データを用いずに、セルの位置関係に基づいて、迂回配線があるか否かを検査することができるためである。入力部11のデバイスの一例としては、マウスやキーボードなどのユーザの操作を受け付けるデバイスなどが挙げられる。
【0014】
出力部12は、各種の情報を出力する。例えば、出力部12は、後述の出力制御部14cの制御により、迂回配線が存在することを示すメッセージを表示する。かかるメッセージの一例としては、「迂回配線があります。配線(XXX)は、迂回配線です」というメッセージが挙げられる。なお、「XXX」は、配線を識別するための識別子、例えば、配線名や位置座標である。また、出力部12は、後述の出力制御部14cの制御により、迂回配線が存在しないことを示すメッセージを表示する。かかるメッセージの一例としては、「迂回配線はありません」というメッセージが挙げられる。出力部12のデバイスの一例としては、液晶ディスプレイなどが挙げられる。
【0015】
記憶部13は、各種情報を記憶する。例えば、記憶部13は、ネットリスト13a及びサイズデータ13bを記憶する。ネットリスト13aは、ゲートレベルのセルの接続情報である。ネットリスト13aには、ネットごとのセルの接続情報が含まれる。なお、ここでいう「ネット」とは、信号を出力する起点となるセルから、信号を受信する終点となるセルまでのつながりを指す。ネットリスト13aは、後述する
図9の物理設計の手順を示すフローチャートの各段階(各ステップ)において生成される。
【0016】
サイズデータ13bは、物理設計領域のサイズを示すデータである。物理設計領域は、回路の物理設計において、各セルが配置される領域である。
【0017】
記憶部13は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部13は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
【0018】
制御部14は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。
図1に示すように、制御部14は、分割部14aと、算出部14bと、出力制御部14cとを有する。
【0019】
分割部14aは、複数のラッチなどのセルを介して信号を受信側のフリップフロップ(Flip Flop)のセルに送信する送信側のフリップフロップのセルと、受信側のフリップフロップのセルと、ラッチなどのセルとが設けられた物理設計領域を次のように分割する。すなわち、分割部14aは、送信側のフリップフロップのセルと受信側のフリップフロップのセルとの間の物理設計領域の部分に境界線を引いて、送信側のフリップフロップのセルを含む領域Aと、受信側のフリップフロップのセルを含む領域Bとに分割する。
【0020】
分割部14aの一態様について説明する。例えば、分割部14aは、入力部11から、後述する配線検査処理を実行する指示が制御部14に入力された場合に、次の処理を行う。すなわち、分割部14aは、サイズデータ13bを記憶部13から取得する。続いて、分割部14aは、サイズデータ13bが示すサイズの物理設計領域に配置された、信号を送信する起点となるフリップフロップのセルの原点の座標を変数Finに設定する。ここで、フリップフロップのセルの原点は、例えば、フリップフロップのセル上のX座標及びY座標の最小の座標が示す点である。また、分割部14aは、サイズデータ13bが示すサイズの物理設計領域に配置された、信号を受信する終点となるフリップフロップのセルの原点の座標を変数Foutに設定する。
【0021】
そして、分割部14aは、信号を送信する起点となるフリップフロップのセルと、信号を受信する終点となるフリップフロップのセルとの中点を通る境界線を物理設計領域上に引く。これにより、分割部14aは、物理設計領域を、起点となるフリップフロップのセルを含む領域Aと、終点となるフリップフロップのセルを含む領域Bとに分割する。
【0022】
図2は、物理設計領域を分割する処理の一例を説明するための図である。
図2の例は、物理設計領域20上に、信号を送信する起点となるフリップフロップのセル21と、信号を受信する終点となるフリップフロップのセル22とが配置された場合を示す。なお、
図2の例は、セル21とセル22との間に配置された複数のラッチなどのセルについて図示が省略された場合を示す。また、
図2の例は、横軸をX軸、縦軸をY軸とした場合を示す。
図2の例は、分割部14aが、セル21の原点21aからの距離と、セル22の原点22aからの距離とが同じになるような境界線24aを引いて、物理設計領域20を、セル21を含む領域Aと、セル22を含む領域Bとに分割した場合を示す。ここで、境界線24aは、Y軸方向における点21aと点22aとの中点23aを通る、X軸と平行な線である。なお、中点23aの位置は、図示した位置に限られず、Y軸方向における点21aと点22aとの中点の位置であれば、任意の位置を採用できる。
【0023】
図3及び
図4は、物理設計領域を分割する処理の他の一例を説明するための図である。
図3の例は、物理設計領域20上に、セル21と、セル22とが配置された場合を示す。なお、
図3の例は、セル21とセル22との間に配置された複数のラッチなどのセルについて図示が省略された場合を示す。また、
図3の例は、横軸をX軸、縦軸をY軸とした場合を示す。
図3の例は、分割部14aが、セル21の原点21aからの距離と、セル22の原点22aからの距離とが同じになるような境界線24bを引いて、物理設計領域20を、セル21を含む領域Aと、セル22を含む領域Bとに分割した場合を示す。ここで、境界線24bは、X軸方向における点21aと点22aとの中点23bを通る、Y軸と平行な線である。なお、中点23bの位置は、図示した位置に限られず、X軸方向における点21aと点22aとの中点の位置であれば、任意の位置を採用できる。
【0024】
また、
図4の例は、物理設計領域20上に、セル21と、セル22とが配置された場合を示す。なお、
図4の例は、セル21とセル22との間に配置された複数のラッチなどのセルについて図示が省略された場合を示す。また、
図4の例は、横軸をX軸、縦軸をY軸とした場合を示す。
図4の例は、分割部14aが、セル21の原点21aからの距離と、セル22の原点22aからの距離とが同じになるような境界線24cを引いて、物理設計領域20を、セル21を含む領域Aと、セル22を含む領域Bとに分割した場合を示す。ここで、境界線24cは、点21aと点22aとを結ぶ線分の中点23cを通る線である。
【0025】
続いて、分割部14aは、変数Nに「0」を設定する。ここで、変数Nの値は、例えば、各セルを接続する配線が、上述した境界線を跨ぐ回数を表す。変数Nの値は、後述の算出部14bにより更新される。
【0026】
そして、分割部14aは、領域Aと領域Bとのうち、変数Finが示す座標(信号を送信する起点となるフリップフロップのセルの原点の座標)を含む領域の識別子を変数Pinに設定する。
図5は、実施例1に係る配線検査装置が実行する処理の一例を説明するための図である。
図5の例は、物理設計領域20上に、セル21と、セル22とが配置された場合を示す。また、
図5の例は、セル21とセル22との間に、4つのラッチなどのセル30a〜30dが配置された場合を示す。また、
図5の例は、横軸をX軸、縦軸をY軸とした場合を示す。
図5の例に示すセル30a〜30dのそれぞれに付された番号は、セル30a〜30dにおいて信号が流れる順番を示す。すなわち、
図5の例は、セル21、セル30a、セル30b、セル30c、セル30d、セル22の順番に信号が流れる場合を示す。
図5の例に示す場合では、領域Aと領域Bとのうち、変数Finが示す座標(セル21の原点21aの座標)を含む領域は、領域Aである。そのため、
図5の例に示す場合では、分割部14aは、原点21aの座標を含む領域Aの識別子「A」を変数Pinに設定する。
【0027】
図1の説明に戻り、算出部14bは、信号を送信する起点となるフリップフロップのセル、信号を受信する終点となるフリップフロップのセル、及び、複数のラッチなどのセルの各セルの物理設計領域上の位置に基づいて、次の処理を行う。すなわち、算出部14bは、境界線を跨ぐような各セルを接続する配線の数を算出する。
【0028】
算出部14bの一態様について説明する。算出部14bは、上述した分割部14aにより領域Aと領域Bとのうち、変数Finが示す座標を含む領域の識別子が変数Pinに設定された場合に、次の処理を行う。すなわち、算出部14bは、複数のセルのうち、未選択のセルを1つ選択する。ここで、算出部14bは、未選択のセルを1つ選択する際に、未選択のセルのうち、信号が流れる方向において最上流側に位置するセルを1つ選択する。そして、算出部14bは、選択したセルの次のセルの原点の座標、すなわち、選択したセルの次に信号が流れるセルの原点の座標を変数Coutに設定する。例えば、
図5の例に示す場合において、セル21を選択した場合に、算出部14bは、選択したセル21の次のセル30aの原点の座標を変数Coutに設定する。
【0029】
そして、算出部14bは、領域Aと領域Bとのうち、変数Coutが示す座標を含む領域の識別子を変数Poutに設定する。例えば、
図5の例に示す場合において、変数Coutが示す座標が、セル30aの原点の座標である場合には、算出部14bは、領域Aと領域Bとのうち、セル30aの原点の座標を含む領域Bの識別子「B」を変数Poutに設定する。
【0030】
続いて、算出部14bは、変数Pinに設定された値と、変数Poutに設定された値とが一致するか否かを判定する。ここで、変数Pinに設定された値と、変数Poutに設定された値とが一致する場合には、選択したセルと、選択したセルの次のセルとが、領域Aまたは領域Bのいずれかの同一の領域上に位置することとなる。また、変数Pinに設定された値と、変数Poutに設定された値とが一致しない場合には、選択したセルと、選択したセルの次のセルとが、領域Aまたは領域Bのいずれかの同一の領域上に位置しないこととなる。例えば、
図5の例に示す場合において、変数Pinに設定された値が「A」、変数Poutに設定された値が「B」である場合には、算出部14bは、変数Pinに設定された値「A」と、変数Poutに設定された値「B」とが一致しないと判定する。すなわち、算出部14bは、選択したセル21と、選択したセル21の次のセル30aとが、領域Aまたは領域Bのいずれかの同一の領域上に位置しないと判定する。
【0031】
変数Pinに設定された値と、変数Poutに設定された値とが一致しない場合には、算出部14bは、変数Nの値を「1」インクリメントして、変数Nの値を更新する。例えば、
図5の例に示す場合において、変数Pinに設定された値「A」と、変数Poutに設定された値「B」とが一致しないと判定した場合には、算出部14bは、変数Nの値を「1」インクリメントする。
【0032】
そして、変数Pinに設定された値と、変数Poutに設定された値とが一致する場合、及び、変数Nの値を「1」インクリメントした場合には、算出部14bは、変数Poutの値を変数Pinに設定する。例えば、
図5の例に示す場合において、変数Nの値を「1」インクリメントし、変数Poutに設定された値が「B」であるときには、算出部14bは、変数Poutに設定された値「B」を、変数Pinに設定して、変数Pinの値を「B」に更新する。
【0033】
そして、算出部14bは、変数Nの値と所定値とを比較し、変数Nの値が所定値以上であるか否かを判定する。ここで、変数Nの値と比較される所定値の一例としては、迂回配線が存在することを検出できるような値、例えば、「2」が採用される。
【0034】
変数Nの値が所定値以上でない場合には、算出部14bは、変数Coutに設定された座標が、変数Foutに設定された座標(信号を受信する終点となるフリップフロップのセルの原点の座標)と一致するか否かを判定する。ここで、変数Coutに設定された座標が、変数Foutに設定された座標と一致する場合には、選択したセルの次のセルは、信号を受信する終点となるフリップフロップのセルである。また、変数Coutに設定された座標が、変数Foutに設定された座標と一致しない場合には、選択したセルの次のセルは、信号を受信する終点となるフリップフロップのセルよりも信号が流れる方向において上流側に位置するセルである。
【0035】
算出部14bは、変数Coutに設定された座標が変数Foutに設定された座標と一致しない場合には、次の処理を行う。すなわち、算出部14bは、未選択のセルを1つ選択する上述した処理から、変数Coutに設定された座標が変数Foutに設定された座標と一致するか否かを判定する上述した処理までの各処理を再び実行する。
【0036】
そして、算出部14bは、変数Coutに設定された座標が変数Foutに設定された座標と一致すると判定するまで、繰り返し、次の処理を行う。すなわち、算出部14bは、未選択のセルを1つ選択する上述した処理から、変数Coutに設定された座標が変数Foutに設定された座標と一致するか否かを判定する上述した処理までの各処理を繰り返し実行する。上述したように、算出部14bは、信号が流れる方向において上流側の方からセルを選択するたびに、選択したセルと選択したセルの次のセルとを接続する配線が境界線を跨ぐか否かを判定し、境界線を跨ぐ場合には、変数Nの値を「1」インクリメントする。そのため、算出部14bは、境界線を跨ぐ配線の数を算出することができる。
【0037】
図1の説明に戻り、出力制御部14cは、算出部14bにより変数Nの値が所定値以上であると判定された場合に、次の処理を行う。すなわち、算出部14bは、迂回配線があると判定し、各セルを接続する配線の中に、迂回配線があることを示すメッセージを出力するように、出力部12を制御する。例えば、出力制御部14cは、「迂回配線があります。配線(XXX)は、迂回配線です」というメッセージを表示するように、出力部12を制御する。
【0038】
また、出力制御部14cは、算出部14bにより変数Coutに設定された座標が変数Foutに設定された座標と一致すると判定された場合に、次の処理を行う。すなわち、出力制御部14cは、迂回配線がないと判定し、各セルを接続する配線の中に、迂回配線がないことを示すメッセージを出力するように、出力部12を制御する。例えば、出力制御部14cは、「迂回配線はありません」というメッセージを表示するように、出力部12を制御する。
【0039】
図6及び
図7は、実施例1に係る配線検査装置が実行する処理の一例を説明するための図である。
図6の例は、物理設計領域20上に、セル21と、セル22とが配置された場合を示す。また、
図6の例は、セル21とセル22との間に、4つのラッチなどのセル30a〜30dが配置された場合を示す。また、
図6の例は、横軸をX軸、縦軸をY軸とした場合を示す。また、
図6の例に示すセル30a〜30dのそれぞれに付された番号は、セル30a〜30dにおいて信号が流れる順番を示す。すなわち、
図6の例は、セル21、セル30a、セル30b、セル30c、セル30d、セル22の順番に信号が流れる場合を示す。
【0040】
また、
図6の例は、セル21とセル30aとが配線40aによって接続された場合を示す。また、
図6の例は、セル30aとセル30bとが配線40bによって接続された場合を示す。また、
図6の例は、セル30bとセル30cとが配線40cによって接続された場合を示す。また、
図6の例は、セル30cとセル30dとが配線40dによって接続された場合を示す。また、
図6の例は、セル30dとセル22とが配線40eによって接続された場合を示す。
【0041】
そして、
図6の例は、配線40a〜40dが、境界線24aを、境界線24a上の5つの箇所50a〜50eで跨ぐ場合を示す。
図6の例に示す場合において、変数Nと比較される上述した所定値が「2」であるとき、上述した分割部14a、算出部14b及び出力制御部14cを有する配線検査装置10は、次の処理を行う。すなわち、配線検査装置10は、5つの箇所50a〜50eのうち、2つの箇所50a、50bにおいて配線40a、40bが境界線24aを跨ぐことを検出した時点で、迂回配線があると判定する。このように、配線検査装置10によれば、物理設計領域20に配置された各セルに接続された配線の中に迂回配線がある場合には、全ての配線について境界線を跨ぐか否かを判定することなく、迂回配線があると判定することができる。したがって、配線検査装置10によれば、全ての配線について境界線を跨ぐか否かを判定する場合よりも、簡易な処理で、迂回配線があると判定することができる。
【0042】
図7の例は、物理設計領域20上に、セル21と、セル22とが配置された場合を示す。また、
図7の例は、セル21とセル22との間に、4つのラッチなどのセル31a〜31dが配置された場合を示す。また、
図7の例は、横軸をX軸、縦軸をY軸とした場合を示す。また、
図7の例に示すセル31a〜31dのそれぞれに付された番号は、セル31a〜31dにおいて信号が流れる順番を示す。すなわち、
図7の例は、セル21、セル31a、セル31b、セル31c、セル31d、セル22の順番に信号が流れる場合を示す。
【0043】
また、
図7の例は、セル21とセル31aとが配線41aによって接続された場合を示す。また、
図7の例は、セル31aとセル31bとが配線41bによって接続された場合を示す。また、
図7の例は、セル31bとセル31cとが配線41cによって接続された場合を示す。また、
図7の例は、セル31cとセル31dとが配線41dによって接続された場合を示す。また、
図7の例は、セル31dとセル22とが配線41eによって接続された場合を示す。
【0044】
そして、
図7の例は、配線41cが、境界線24aを、境界線24a上の1つの箇所51で跨ぐ場合を示す。
図7の例に示す場合において、変数Nと比較される上述した所定値が「2」であるとき、配線検査装置10は、次の処理を行う。すなわち、配線検査装置10は、境界線24aを跨ぐ配線の数が1つであるため、迂回配線がないと判定する。
【0045】
制御部14は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの回路である。
【0046】
[処理の流れ]
次に、本実施例に係る配線検査装置10の処理の流れについて説明する。
図8は、実施例1に係る配線検査処理の手順を示すフローチャートである。実施例1に係る配線検査処理は、例えば、入力部11から、配線検査処理を実行するための指示を制御部14が受け付けたタイミングで、実行される。また、実施例1に係る配線検査処理は、ネットごとに実行される。なお、配線検査処理が実行されるタイミングの一例としては、後述する物理設計フローにおいて、セルの仮配置を行った場合、クロックツリーの生成を行った場合、または、仮配線を行った場合などが挙げられる。
【0047】
図8に示すように、分割部14aは、サイズデータ13bを記憶部13から取得する(S101)。続いて、分割部14aは、サイズデータ13bが示すサイズの物理設計領域に配置された、信号を送信する起点となるフリップフロップのセルの原点の座標を変数Finに設定する(S102)。そして、分割部14aは、サイズデータ13bが示すサイズの物理設計領域に配置された、信号を受信する終点となるフリップフロップのセルの原点の座標を変数Foutに設定する(S103)。
【0048】
そして、分割部14aは、信号を送信する起点となるフリップフロップのセルと、信号を受信する終点となるフリップフロップのセルとの中点を通る境界線を物理設計領域上に引いて、次の処理を行う。すなわち、分割部14aは、物理設計領域を、起点となるフリップフロップのセルを含む領域Aと、終点となるフリップフロップのセルを含む領域Bとに分割する(S104)。続いて、分割部14aは、変数Nに「0」を設定する(S105)。そして、分割部14aは、領域Aと領域Bとのうち、変数Finが示す座標を含む領域の識別子を変数Pinに設定する(S106)。
【0049】
算出部14bは、複数のセルのうち、未選択のセルを1つ選択する。ここで、算出部14bは、未選択のセルを1つ選択する際に、未選択のセルのうち、信号が流れる方向において最上流側に位置するセルを1つ選択する。そして、算出部14bは、選択したセルの次のセルの原点の座標、すなわち、選択したセルの次に信号が流れるセルの原点の座標を変数Coutに設定する(S107)。
【0050】
そして、算出部14bは、領域Aと領域Bとのうち、変数Coutが示す座標を含む領域の識別子を変数Poutに設定する(S108)。続いて、算出部14bは、変数Pinに設定された値と、変数Poutに設定された値とが一致するか否かを判定する(S109)。
【0051】
変数Pinに設定された値と、変数Poutに設定された値とが一致しない場合(S109;No)には、算出部14bは、変数Nの値を「1」インクリメントして、変数Nの値を更新し(S110)、S111へ進む。
【0052】
変数Pinに設定された値と、変数Poutに設定された値とが一致する場合(S109;Yes)には、算出部14bは、変数Poutの値を変数Pinに設定する(S111)。
【0053】
そして、算出部14bは、変数Nの値と所定値とを比較し、変数Nの値が所定値以上であるか否かを判定する(S112)。
【0054】
変数Nの値が所定値以上でない場合(S112;No)には、算出部14bは、変数Coutに設定された座標が、変数Foutに設定された座標と一致するか否かを判定する(S113)。
【0055】
変数Coutに設定された座標が変数Foutに設定された座標と一致しない場合(S113;No)には、算出部14bは、S107に戻る。一方、変数Coutに設定された座標が変数Foutに設定された座標と一致する場合(S113;Yes)には、出力制御部14cは、迂回配線がないと判定し、次の処理を行う。すなわち、出力制御部14cは、迂回配線がないことを示すメッセージを出力するように出力部12を制御し(S114)、処理を終了する。
【0056】
一方、変数Nの値が所定値以上である場合(S112;Yes)には、出力制御部14cは、迂回配線があると判定し、迂回配線があることを示すメッセージを出力するように、出力部12を制御し(S115)、処理を終了する。
【0057】
ここで、配線検査処理が実行されるタイミングについて説明する。
図9は、回路の物理設計の手順を示すフローチャートである。
図9の例に示す物理設計は、回路の論理設計が行われた後にコンピュータが所定の物理設計ツールを実行することによって行われる。
図9の例に示すように、物理設計では、まず、初期設定が行われる(S1)。例えば、S1では、ユーザが指定したLSI(Large Scale Integration)のチップごとに設計ブロックが配置される物理設計領域のサイズ、ライブラリ、論理合成において生成されたネットリストをコンピュータが受け付ける。また、S1では、コンピュータが、ファンアウト、周波数を設定する。そして、物理設計では、コンピュータが、セルを大まかに配置する(S2)。S2では、コンピュータは、ネットリストに含まれるセルを配置する。続いて、物理設計では、コンピュータは、クロックツリーを生成する(S3)。そして、物理設計では、コンピュータは、クロックルートピンから各クロック負荷セルのクロック端子までの仮配線を行う(S4)。続いて、物理設計では、コンピュータは、タイミング解析などを行って、タイミング解析の結果に基づいて、詳細に配線を行う(S5)。そして、物理設計では、コンピュータは、配置されたセルや配線が所定の物理的設計ルールを満たしているかをチェックし、物理的設計ルールを満たしていない場合には修正を行う(S6)。
【0058】
配線後の回路を人間によって目視する従来の方法では、上述した物理設計のS5でタイミング解析を行った結果、異常がある箇所を人間が目視することで、迂回配線があるか否かを検査する。このため、従来の方法では、物理設計において、S6より前の段階で、迂回配線があるか否かを検査することができなかった。一方、本実施例に係る配線検査装置10は、セルの位置情報を用いて迂回配線があるか否かを検査する。このため、配線検査装置10によれば、セルが大まかに配置されるS3以降で、上述した配線検査処理を実行することができる。すなわち、配線検査装置10によれば、S6よりも前の段階で、迂回配線があるか否かを検査することができる。したがって、配線検査装置10によれば、物理設計の早い段階で、迂回配線があるか否かを検査することができる。それゆえ、配線検査装置10によれば、物理設計の初期段階で、迂回配線があるか否かを検査することができるので、工程上のロスを削減することができる。更に、配線検査装置10によれば、物理設計への影響を低減することで再設計のリスクをも低減することができる。
【0059】
上述してきたように、配線検査装置10は、信号を送信する送信側のフリップフロップのセル21と、信号を受信する受信側のフリップフロップのセル22と、ラッチなどのセルとが設けられた物理設計領域20を次のように分割する。すなわち、配線検査装置10は、セル21とセル22との間の物理設計領域20の部分に境界線を引いて、セル21を含む領域Aと、セル22を含む領域Bとに分割する。そして、配線検査装置10は、セル21、セル22、及び、複数のラッチなどのセルの各セルの物理設計領域20上の位置に基づいて、境界線を跨ぐような各セルを接続する配線の数を算出する。そして、配線検査装置10は、算出した配線の数が所定値以上である場合に、迂回配線があると判定し、各セルを接続する配線の中に、迂回配線があることを示すメッセージを出力するように、出力部12を制御する。したがって、配線検査装置10は、時間がかかるような、配線形状を示すデータから配線形状を解析し、解析した配線形状から迂回配線であるか否かを検査する処理を行うことなく、各セルの位置情報から、迂回配線があるか否かを検査することができる。それゆえ、配線検査装置10によれば、簡易に迂回配線の検査を行うことができる。
【0060】
また、配線検査装置10は、セル21とセル22との中間点を通る境界線を物理設計領域20に引いて、物理設計領域20を領域Aと領域Bとに分割する。それゆえ、配線検査装置10は、セル21とセル22との物理設計領域20上の中間部分に位置する迂回配線を検出することができる。
【0061】
また、配線検査装置10は、上述した物理設計におけるS6よりも前の段階で、迂回配線があるか否かを検査することができる。したがって、配線検査装置10によれば、物理設計の早い段階で、迂回配線があるか否かを検査することができる。それゆえ、配線検査装置10によれば、物理設計の初期段階で、迂回配線があるか否かを検査することができるので、工程上のロスを削減することができる。更に、配線検査装置10によれば、物理設計への影響を低減することで再設計のリスクをも低減することができる。
【実施例2】
【0062】
次に、実施例2に係る配線検査装置について説明する。実施例1では、配線検査装置10が、1つの境界線を引く場合について説明した。実施例2では、配線検査装置が、複数の境界線を引いて、境界線ごとに、実施例1に係る配線検査装置10が実行した処理と同様の処理を実行する場合について説明する。
【0063】
図10は、実施例2に係る配線検査装置の機能構成の一例を示す図である。ここで、先の
図1に示す実施例1に係る配線検査装置10と同様の機能構成については、同一の符号を付し、説明を省略する。
【0064】
[配線検査装置の機能構成]
図10の例に示すように、配線検査装置60の制御部64は、実施例1に係る制御部14が有する分割部14a、算出部14b、出力制御部14cに代えて、分割部64a、算出部64b、出力制御部64cを有する。
【0065】
分割部64aは、物理設計領域20を次のように分割する。すなわち、分割部64aは、セル21とセル22との間の物理設計領域20の部分に複数の境界線を引いて、境界線ごとに、セル21を含む領域と、セル22を含む領域とに分割する。分割部64aの一態様について説明する。例えば、分割部64aは、分割部14aと同様に、先の
図2の例に示すように、セル21とセル22とのY軸方向における中点23aを通る、X軸方向に平行な境界線24aを引いて、物理設計領域20を、領域Aと、領域Bとに分割する。これに加えて、分割部64aは、セル21とセル22とのX軸方向における中点を通る、Y軸方向に平行な境界線を引いて、物理設計領域を、セル21を含む領域Cと、セル22を含む領域Dとに分割する。
【0066】
算出部64bは、複数の境界線ごとに、算出部14bが境界線を跨ぐ配線の数を算出した方法と同様の方法で、境界線を跨ぐ配線の数を算出する。
【0067】
出力制御部64cは、算出部64bにより少なくとも1つの境界線において算出された境界線を跨ぐ配線の数が所定値以上である場合には、迂回配線があると判定する。そして、出力制御部64cは、各セルを接続する配線の中に迂回配線があることを示すメッセージを出力するように、出力部12を制御する。
【0068】
制御部64は、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、CPU(Central Processing Unit)、MPU(Micro Processing Unit)などの回路である。
【0069】
[処理の流れ]
次に、本実施例に係る配線検査装置60の処理の流れについて説明する。
図11は、実施例2に係る配線検査処理の手順を示すフローチャートである。実施例2に係る配線検査処理は、実施例1に係る配線検査処理と同様のタイミングで実行される。また、実施例2に係る配線検査処理は、実施例1に係る配線検査処理と同様に、ネットごとに実行される。また、下記の説明では、実施例1に係る配線検査処理と同様のステップの処理については、実施例1と同一のステップの番号を付し、説明を省略する場合がある。ここで、説明が省略されたステップの処理のうち、実施例1において分割部14aによって実行されたステップの処理については、分割部64aが実行し、実施例1において算出部14bによって実行されたステップの処理については、算出部64bが実行する。また、説明が省略されたステップの処理のうち、実施例1において出力制御部14cによって実行されたステップの処理については、出力制御部64cが実行する。
【0070】
図11に示すように、S104において、分割部64aは、先の
図2の例に示すように、セル21とセル22とのY軸方向における中点23aを通る、X軸方向に平行な境界線24aを引いて、物理設計領域20を、領域Aと、領域Bとに分割する。その後、変数Coutに設定された座標が変数Foutに設定された座標と一致する場合(S113;Yes)には、分割部64aは、次の処理を行う。すなわち、分割部64aは、セル21とセル22とのX軸方向における中点を通る、Y軸方向に平行な境界線を引いて、物理設計領域20を、領域Cと、領域Dとに分割する(S201)。続いて、分割部64aは、変数Nに「0」を設定する(S202)。そして、分割部64aは、領域Cと領域Dとのうち、変数Finが示す座標を含む領域の識別子を変数Pinに設定する(S203)。
【0071】
そして、算出部64bは、複数のセルのうち、未選択のセルを1つ選択する。ここで、算出部64bは、未選択のセルを1つ選択する際に、未選択のセルのうち、信号が流れる方向において最上流側に位置するセルを1つ選択する。そして、算出部64bは、選択したセルの次のセルの原点の座標、すなわち、選択したセルの次に信号が流れるセルの原点の座標を変数Coutに設定する(S204)。
【0072】
そして、算出部64bは、領域Cと領域Dとのうち、変数Coutが示す座標を含む領域の識別子を変数Poutに設定する(S205)。続いて、算出部64bは、変数Pinに設定された値と、変数Poutに設定された値とが一致するか否かを判定する(S206)。
【0073】
変数Pinに設定された値と、変数Poutに設定された値とが一致しない場合(S206;No)には、算出部64bは、変数Nの値を「1」インクリメントして、変数Nの値を更新し(S207)、S208へ進む。
【0074】
変数Pinに設定された値と、変数Poutに設定された値とが一致する場合(S206;Yes)には、算出部64bは、変数Poutの値を変数Pinに設定する(S208)。
【0075】
そして、算出部64bは、変数Nの値と所定値とを比較し、変数Nの値が所定値以上であるか否かを判定する(S209)。
【0076】
変数Nの値が所定値以上でない場合(S209;No)には、算出部64bは、変数Coutに設定された座標が、変数Foutに設定された座標と一致するか否かを判定する(S210)。
【0077】
変数Coutに設定された座標が変数Foutに設定された座標と一致しない場合(S210;No)には、算出部64bは、S204に戻る。一方、変数Coutに設定された座標が変数Foutに設定された座標と一致する場合(S210;Yes)には、出力制御部64cは、迂回配線がないと判定し、次の処理を行う。すなわち、出力制御部64cは、迂回配線がないことを示すメッセージを出力するように出力部12を制御し(S211)、処理を終了する。
【0078】
一方、変数Nの値が所定値以上である場合(S209;Yes)には、出力制御部64cは、迂回配線があると判定し、迂回配線があることを示すメッセージを出力するように、出力部12を制御し(S115)、処理を終了する。
【0079】
上述してきたように、配線検査装置60は、信号を送信する送信側のフリップフロップのセル21と、信号を受信する受信側のフリップフロップのセル22と、ラッチなどのセルとが設けられた物理設計領域20を次のように分割する。すなわち、配線検査装置60は、セル21とセル22との間の物理設計領域20の部分に境界線を引いて、セル21を含む領域Aと、セル22を含む領域Bとに分割する。そして、配線検査装置60は、セル21、セル22、及び、複数のラッチなどのセルの各セルの物理設計領域20上の位置に基づいて、境界線を跨ぐような各セルを接続する配線の数を算出する。そして、配線検査装置60は、算出した配線の数が所定値以上である場合に、迂回配線があると判定し、各セルを接続する配線の中に、迂回配線があることを示すメッセージを出力するように、出力部12を制御する。したがって、配線検査装置60は、時間がかかるような、配線形状を示すデータから配線形状を解析し、解析した配線形状から迂回配線であるか否かを検査する処理を行うことなく、各セルの位置情報から、迂回配線があるか否かを検査することができる。それゆえ、配線検査装置60によれば、簡易に迂回配線の検査を行うことができる。
【0080】
また、配線検査装置60は、セル21とセル22との中間点を通る境界線を物理設計領域20に引いて、物理設計領域20を領域Aと領域Bとに分割する。それゆえ、配線検査装置60は、セル21とセル22との物理設計領域20上の中間部分に位置する迂回配線を検出することができる。
【0081】
また、配線検査装置60は、上述した物理設計におけるS6よりも前の段階で、迂回配線があるか否かを検査することができる。したがって、配線検査装置60によれば、物理設計の早い段階で、迂回配線があるか否かを検査することができる。それゆえ、配線検査装置60によれば、物理設計の初期段階で、迂回配線があるか否かを検査することができるので、工程上のロスを削減することができる。更に、配線検査装置60によれば、物理設計への影響を低減することで再設計のリスクをも低減することができる。
【0082】
また、配線検査装置60は、セル21とセル22との間の物理設計領域20の部分に複数の境界線を引いて、境界線ごとに、物理設計領域20を、セル21を含む領域と、セル22を含む領域とに分割する。そして、配線検査装置60は、複数の境界線ごとに、境界線を跨ぐ配線の数を算出する。続いて、配線検査装置60は、少なくとも1つの境界線において算出した境界線を跨ぐ配線の数が所定値以上である場合には、迂回配線があると判定する。そして、配線検査装置60は、各セルを接続する配線の中に迂回配線があることを示すメッセージを出力するように、出力部12を制御する。上述したように、配線検査装置60は、様々な方向に延びる複数の境界線のそれぞれにおいて、境界線を跨ぐ配線の数を算出し、少なくとも1つの境界線において算出した境界線を跨ぐ配線の数が所定値以上である場合には、迂回配線があると判定する。それゆえ、配線検査装置60によれば、精度良く、迂回配線があるか否かの判定を行うことができる。
【0083】
さて、これまで開示の装置に関する各実施例について説明したが、本発明は上述した各実施例以外にも、種々の異なる形態にて実施されてよいものである。例えば、各実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、各実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
【0084】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
【0085】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。
【0086】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【0087】
[配線検査プログラム]
また、上記の各実施例で説明した配線検査装置10,60の各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、
図12を用いて、上記の各実施例で説明した配線検査装置10,60と同様の機能を有する配線検査プログラムを実行するコンピュータの一例を説明する。
図12は、配線検査プログラムを実行するコンピュータを示す図である。
【0088】
図12に示すように、コンピュータ300は、CPU(Central Processing Unit)310、ROM(Read Only Memory)320、HDD(Hard Disk Drive)330、RAM(Random Access Memory)340を有する。これら各機器310〜340は、バス350を介して接続されている。
【0089】
ROM320には、OSなどの基本プログラムが記憶されている。また、HDD330には、上記の実施例で示す分割部14a、算出部14b、出力制御部14cと同様の機能を発揮する配線検査プログラム330aが予め記憶される。または、HDD330に、上記の実施例で示す分割部64a、算出部64b、出力制御部64cと同様の機能を発揮する配線検査プログラム330aが予め記憶される。なお、配線検査プログラム330aについては、適宜分離しても良い。また、HDD330には、ネットリスト、サイズデータが設けられる。ネットリストは、上述したネットリスト13aに対応し、サイズデータは、上述したサイズデータ13bに対応する。
【0090】
そして、CPU310が、配線検査プログラム330aをHDD330から読み出して実行する。
【0091】
そして、CPU310は、ネットリスト、サイズデータを読み出してRAM340に格納する。さらに、CPU310は、RAM340に格納されたネットリスト、サイズデータを用いて、配線検査プログラム330aを実行する。なお、RAM340に格納されるデータは、常に全てのデータがRAM340に格納されなくともよい。処理に用いられるデータがRAM340に格納されれば良い。
【0092】
なお、上記した配線検査プログラム330aについては、必ずしも最初からHDD330に記憶させておく必要はない。
【0093】
例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に配線検査プログラム330aを記憶させておく。そして、コンピュータ300がこれらから配線検査プログラム330aを読み出して実行するようにしてもよい。
【0094】
さらには、公衆回線、インターネット、LAN、WANなどを介してコンピュータ300に接続される「他のコンピュータ(またはサーバ)」などに配線検査プログラム330aを記憶させておく。そして、コンピュータ300がこれらから配線検査プログラム330aを読み出して実行するようにしてもよい。