JP3629006B2 - Device for determining initial arrangement of integrated circuit - Google Patents

Device for determining initial arrangement of integrated circuit Download PDF

Info

Publication number
JP3629006B2
JP3629006B2 JP2002027379A JP2002027379A JP3629006B2 JP 3629006 B2 JP3629006 B2 JP 3629006B2 JP 2002027379 A JP2002027379 A JP 2002027379A JP 2002027379 A JP2002027379 A JP 2002027379A JP 3629006 B2 JP3629006 B2 JP 3629006B2
Authority
JP
Japan
Prior art keywords
net
cell
block
wiring length
wiring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002027379A
Other languages
Japanese (ja)
Other versions
JP2002304432A (en
Inventor
利行 澁谷
泉 新田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2002027379A priority Critical patent/JP3629006B2/en
Publication of JP2002304432A publication Critical patent/JP2002304432A/en
Application granted granted Critical
Publication of JP3629006B2 publication Critical patent/JP3629006B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Semiconductor Integrated Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、LSI、VLSIおよびULSIなどの集積回路のレイアウト設計におけるセルの自動配置方式に係わり、特に、ミニカット(min−cut)法を用いて集積回路のセル配置を最適化する概略配線長増減予測装置及び集積回路の初期配置決定装置に関する。
【0002】
最近の製造技術の進歩に伴い、集積回路の集積度の向上及び回路規模の増大には目ざましいものがあり、集積回路チップに含まれるセルの数も増加の一途をたどっている。これに伴い、回路の性能を決定する要因は、ゲートの遅延よりも、配線の遅延の比重のほうが高くなってきている。
【0003】
【従来の技術】
集積回路のセルの初期配置決定方法の一手法としてパーティショニングが知られている。このパーティショニングは、与えられた回路をK個(Kは自然数)の部分回路(ブロック)に分割して、各ブロック間をまたがるネットの本数、すなわちカット数を最小化することを目的とした手法である。このパーティショニングの代表的なアルゴリズムとしてミニカット法が知られている。
【0004】
このミニカット法では、チップを水平、垂直に切断するカットラインとその処理順序を定めておき、カットライン1本ずつについて論理二分割を順次行うことによって配置が決定される。このとき、カットラインは全ブロックの境界に定めておけばよい。
【0005】
カットラインの処理順序を決定すると、それぞれのカットラインについてチップ上の領域(ブロックの集合)が定まる。さらに、カットラインの場所によって、分割におけるセル数の条件(セル集合MをM1, に分割するとき、M1, それぞれのセル数の上限)も定まる。論理二分割はカットライン上を通過する配線(ネット)の数を最小にするように行われるが、そのとき、このセル数の条件を満足するような分割でなければならない。
【0006】
このようにミニカット法の基本は、あるブロックに配置されたセルを他のブロックに移動させて、カットラインを横切るネット数を減少させることである。
図27は、従来のミニカット法を説明するフローチャートである。
【0007】
まず、セルの初期配置とカットラインを決定する(S1)。次に、各セル毎にセルゲインgを求める(S2)。該セルゲインgは、あるセルを他のブロックに移動したときに減少するカット数である。
【0008】
続いて、各ブロック毎にセルゲインgを大きい順にソートする(S3)。続いて、最もセルサイズが大きいブロックから、セルゲインgの最も大きいセルを選択し、このセルを他のブロックに移動する(S4)。
【0009】
次に、該移動したセルと、そのセルとネットによる接続関係にあるセルのセルゲインgを更新し、各ブロック毎にセルゲインgをソートしなおす(S5)。そして、セルゲインgが正のセルが存在するか否かを判別し(S6),存在すれば(S6,YES)、再び上記ステップS4〜S5の処理を繰り返す。そして、セルゲインgが正のセルが存在しなくなったと判別すると(S6、NO),処理を終了する。
【0010】
以上の処理により、セルの初期配置が最適化される。
上記ミニカット法を、図32を参照しながらより具体的に説明する。
同図において、破線で示された垂線1がカットラインである。また、編みかけで示したセル2が正のセルゲインgを有するセルであり、編みかけされていないセル3が”0”のセルゲインgを有するセルである。
【0011】
図32(a),(b),(c)に示すセルの配置状態においては、いずれも、編みかけのセル2をカットライン1の向こう側の他方のブロックに移動することにより、カット数を減少することができる。また、実際のセルの移動に際しては、それぞれのブロックにおいて、ブロックの面積とブロック内に含まれるセルの総和の面積との比がバランスがとられるような配慮がなされる。
【0012】
【発明が解決しようとする課題】
上述した従来のミニカット法では、各分割ブロックに含まれるセルの集合間のネットの接続数、すなわち、カット数を最小化する操作を階層的に行うことにより、セルの配置位置を決定し、より最適なセルの配置を求めるようにしている。
【0013】
しかしながら、ミニカット法では、階層的に分割された領域内の情報(セルの総和面積やセル数など)のみを用いてセルの配置を決定しているため、集積回路全体での配線長を制御することができないという問題があった。
【0014】
このため、あるネットの長さが必要以上に長くなってしまい、この結果として、信号の伝播遅延など集積回路全体の性能が低下してしまうという問題があった図33は、ミニカット法における一般的な概略配線の方法を説明する図である。この概略配線では、実際の端子ではなく、分割されたブロックの中心に端子が存在するものと仮定して、配線を実行する。そして、この実行結果を基に、仮想的な配線長(概略配線長)を求めている。同図において、net1,net2,net3がネットであり、1〜6の白丸が仮想的な端子である。しかしながら、この方法では、RAM,ROM、I/Oバッファセルなどのような固定セルに接続されているネットの長さは、実際よりも、短めに算出されてしまう場合がありうる。このため、予め指定されたネットの線長制約を守ってセルの配置を行うためには、より、正確にネットの配線長を予測することが重要になってくる。
【0015】
また、ミニカット法において、階層化が進み、各ブロックがより小さく分割されていくと、沢山のセルを含むブロックでは実際の配線長は長くなり易くなり、概略配線を用いて算出される配線長と実際の配線長との間に差異が生じてくる。すなわち、概略配線情報を基に算出される概略配線長は、実際の配線長よりも短めに算出され易くなる。
【0016】
したがって、この場合においても、指定されたネットの線長制約を守ってセルの配置を行うためには、より、正確にネットの配線長を予測することが重要になってくる。
【0017】
本発明は、ミニカット法において、分割ブロック間の概略配線を行う際、ネットのセルを分割ブロックに移動する際の該ネットの概略配線長の増減を、より正確に予測できるようにすることを目的とする。また、上記のようにして、ネットのセルを分割ブロックに移動する際の該ネットの概略配線長の増減を正確に予測しながら、ネットの指定配線長の制約が守れるようなセルの配置を行うことを目的とする。
【0018】
【課題を解決するための手段】
図1は、本発明(第一の発明)の原理を説明する図である。
この第一の発明は、以下の手段を備える。
【0019】
概略配線手段41は、各セルの端子が各セルが属するブロックの中心に位置するものと仮定して、各ネットにつながっているセル間を配線する。
配線長増減予測手段42は、該概略配線手段41によって得られた概略配線情報を基に、あるブロックをカットラインによって分割する際に、そのブロックに属しているセルを該カットラインに対していずれの側にある分割ブロックに移動すれば、そのセルにつながっているネットの概略配線長が増減するかを予測する。
【0020】
したがって、あるブロックをカットラインによって分割する際に、そのブロックに属しているセルをいずれの分割ブロックに移動すれば、そのセルが接続されているネットの概略配線長が減少または増加しないかを判断することが可能になる。
【0021】
図2は、本発明(第二の発明)の原理を説明する図である。
この第二の発明は、集積回路の領域にカットラインを設定して、該カットラインにより切断される配線数であるカット数が最小となるように該カットラインによって分割された領域間でセルを移動する操作を繰り返しながら該集積回路を構成するセルの初期配置を決定する集積回路の初期配置決定装置を前提とし、以下の手段を備える。
【0022】
概略配線手段51は、各セルの端子が各セルが属するブロックの中心に位置するものと仮定して、各ネットにつながっているセル間を配線する。
配線長算出手段52は、該概略配線手段51によって得られた概略配線情報を基に、各ネットの概略配線長(論理配線長)を求める。
【0023】
ヴァイオレーションネット検出手段53は、該配線長算出手段52によって算出された各ネットの概略配線長を基に、その現在の概略配線長が予め制約された配線長を越えているネットをヴァイオレーションネットとして検出する。
【0024】
配線長増減予測手段54は、該ヴァイオレーションネット検出手段53によって検出されたヴァイオレーションネットに属するブロックがカットラインによって分割される際に、上記概略配線手段51によって得られた概略配線情報を基に、そのブロックに属しているヴァイオレーションネットにつながっているセルを、いずれの分割ブロックに移動すれば該ヴァイオレーションネットの概略配線長が増減するかを予測する。
【0025】
ミニカット法実行手段55は、該配線長減少予測手段54によってその配線長が減少または増加しないと予測された分割ブロックの方に、上記ヴァイオレーションネットにつながっているセルを移動させた後、該セルを固定セルに設定し、その後、上記ブロックに対してミニカット法を実行する。
【0026】
この第二の発明によれば、ヴァイオレーションネットに接続されているセルが属するブロックに対してミニカット法を実行する前に、そのセルを上記ヴァイオレーションネットの配線長が減少または増加しない方の分割ブロックに移動させるので、階層的にミニカット法を実行していく過程で、上記ヴァイオレーションネットの配線長を確実に減少させることが可能になり、この結果として、ヴァイオレーションネットの数を減少させることができる。
図三は、本発明(第三の発明)の原理を説明する図である。
【0027】
この第三の発明は、集積回路の領域にカットラインを設定して、該カットラインにより切断される配線数であるカット数が最小となるように該カットラインによって分割された領域間でセルを移動する操作を繰り返しながら該集積回路を構成するセルの初期配置を決定する集積回路の初期配置決定装置を前提とし、以下の手段を備える。
【0028】
概略配線手段61は、各セルの端子が各セルが属するブロックの中心に位置するものと仮定して、各ネットにつながっているセル間を配線する。
配線長算出手段62は、該概略配線手段61によって得られた概略配線情報を基に、各ネットの概略配線長(論理配線長)を求める。
【0029】
クリティカルネット検出手段63は、該配線長算出手段62によって算出された各ネットの概略配線長を基に、その現在の概略配線長が予め制約された配線長のα%を越えているネットをクリティカルネットとして検出する。
【0030】
ステーブルネット検出手段64は、ミニカット法の実行開始前にカットラインによりカットされていると共に、該実行開始後にも該カットラインによりカットされているネットをステーブルネットとして検出する。
【0031】
セル移動手段65は、上記クリティカルネット検出手段63の検出結果と上記ステーブルネット検出手段64との検出結果とを基に、ステーブルネットとなっており、かつクリティカルネットとともなっているネットにつながっている全てのセルを、同一のブロックに移動させる。
【0032】
ミニカット法実行手段66は、該セル移動手段の処理65により得られたセル配置を初期配置としてミニカット法を実行する。
上記αは、例えば、70≦α≦80の範囲内の値である。
【0033】
上記第三の発明では、ステーブルネットとなっているクリティカルネットについて、そのクリティカルネットに接続されている全てのセルを同一のブロックに移動させてからミニカット法を実行させるので、クリティカルネットがカットされないセルの最終配置が得られ易くなる。したがって、クリティカルネットがヴァイオレーションネットに変化する確率を減少できると共に、階層的にミニカット法を実行していく過程で、クリティカルネットの配線長を、次第に短くしていくことが可能となり、そのネットの配線長を最終的に短くできる。
【0034】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施例を説明する。
本発明の第一の実施例は、ミニカット法において概略配線を行う際、あるネットに固定セルがつながっている場合、その固定セルとその固定セルが属するブロックの中心座標との間の距離を求め、この距離をネットの線長に加味することにより、概略配線長をより正確に求めるものである。
【0035】
図4は、固定セルが存在する集積回路140のセルの配置状態を示す図である。
同図において、水平方向にx軸が、垂直方向にy軸が設定されている。また、同図に示す、x軸、y軸方向の”1”〜”5”の数字は、それぞれ、x軸、y軸方向のブロック座標の値である。
【0036】
上記集積回路140の各ブロックは、ブロックID(block ID;ブロック識別子)によって識別される。このブロック IDは、(x,y)によって表現される。x,yは、それぞれ、ブロックのx軸方向、y軸方向のブロック座標の値である。また、”1”〜”5”の数字が付与された白丸は、集積回路140の概略配線において設定される5個のセル(Cell1〜5)の仮想端子である。また、”6”の数字が付与された黒丸は、固定セルCell6の端子である。さらに、net1、2、3は、ネットを表す。
【0037】
図5は、上記集積回路140において、6個の各セル(Cell1〜6)が、どのネットに接続されているのかを示すネットリストを示す図である。
また、図6は、上記各ネット(net1〜n3)につながれているセルの情報を示すセルリストを示す図である。同図に示すように、net1には、Cell1とCell6がつながれている情報が連結リストによって示されている。これを、
net1={Cell1,Cell6}
で表現する。同様ににして、
net2={Cell2,Cell5}
net3={Cell3,Cell4}
と表現する。
【0038】
また、上記net1,net2,net3を要素(object;オブジェクト)とするリストをnet2cellと表現する。すなわち、
net2cell={net1,net2,net3}
と表現する。
【0039】
さらに、図7は、上記6個の各セル(Cell1〜6)について、どのブロックに属しているか、固定セルであるか否かなどの情報を記憶しているセルテーブル150の構成を示す図である。
【0040】
同図において、Cell ID(セルID)の値「i」は、Celliの識別子となる番号である。また、Cell position(x,y)は、固定セルの座標値である。さらに、fixed Flagは、各セルCelli(i=1〜6)が、固定セルであるか否かを示すフラグであり、「1」であれば固定セルであることを示す。
【0041】
図7に示すセルテーブル150には、セルIDの値が「6」のCell6が、固定セルであり、その座標値が(30、40)であることを示す情報が格納されている。また、Cell6以外のCell1〜5が、固定セルでないことを示す情報も格納されている。
【0042】
図8は、上記集積回路140の各ブロックの中心座標の値を格納しているブロックテーブル(block Table)160の構成を示す図である。
このテーブル160においては、上記各ブロックはブロックIDによって示され、その中心位置(center position)の座標(x,y)が、該ブロックIDに対応して格納されている。すなわち、例えば、ブロックIDが(1、1)であるブロックの中心座標として、(5、5)が格納されている。また、ブロックIDが(3、5)であるブロックの中心座標として、(25、45)が格納されている。
【0043】
図9は、第一実施例において、各ネットの概略配線長を求める処理を説明するフローチャートである。
まず、net2cellから先頭のオブジェクト(object)を取り出し、これを変数netに代入する(S101)。
【0044】
これにより、図6に示すnet2cellの場合、まず、net1が変数netに代入される。
次に、変数netが「NULL」(空)であるか否かを判別し(S102)、「NULL」でなければ(S102、no),該変数netに代入されているネットに対してブロック(block)単位で概略配線を行う。そして、この概略配線により得られた概略配線情報を基に、従来の方法により各ネットの概略配線長を算出する(S103)。
【0045】
この概略配線により、ネットnet1に対して図に示すような概略配線が行われると、図10(a)に示す概略配線のリストが作成される。同図(a)において、grnet1は、ネットnet1の概略配線のリストであり、(i,j){i=1〜5;j=1〜5}は、その概略配線のルーティングに属しているブロックのブロックID(block ID)である。
【0046】
次に、変数netに設定されているネットの概略配線リストから先頭のブロックID(i,j)を取り出し、そのi,jを、それぞれ、変数block.x,block.yに代入する(S104)。
【0047】
続いて、上記概略配線リストに未処理のブロックIDが有るか否か,すなわち、上記概略配線リストから新たなブロックIDを取り出せたか否かを判別する(S105)。そして、未処理のブロックIDを取り出したならば(S105、yes)、該ブロックIDを有するブロックに属するセルが有るか否か調べ、セルが有ればそのセルが固定セル(fixed Cell)であるか否かを判別する(S106)。
【0048】
そして、固定セルであれば(S106、yes)、該固定セルとその固定セルが存在するブロックの中心座標との間の距離を算出し、この距離を既に求められている概略配線長に加算する(S107)。該距離は、例えば、固定セルと上記ブロックの中心座標のx軸方向の距離d (両者のx座標の差の絶対値)と固定セルと上記ブロックの中心座標のy軸方向の距離d (両者のy座標の差の絶対値)との和である(図4参照)。
【0049】
次に、上記概略配線リストから次のブロックID(i,j)を取り出し、そのi,jを、それぞれ、変数block.x,block.yに代入する(S108)。そして、再び、ステップS105に戻る。
【0050】
一方ステップS106でセルが固定セルでないと判別すると(S106,no)、ステップS107の処理は行わず、ステップS108に移る。
上記ステップS105〜S108の処理は、ステップS105で上記概略配線リストから取り出すブロックIDが無いと判別されるまで(S105,no)、繰り返される。
【0051】
以上の処理により、ネットnet1において、ブロックID(3、5)に属する固定セルCell6が検出され、該ブロックID(3、5)を有するブロックの中心座標(25、45)と該固定セルCell6の座標(30、50)との間の距離が上記ステップS107で概略配線に加算される。尚、上記ブロックの中心座標(25、45)は図8のブロックテーブル160から、上記固定セルCell6の座標(30、50)は図7のセルテーブル150から読みだされる。
【0052】
ステップS105で、net2cellから取り出した先頭のネット(object)の概略配線リストの全てのブロックIDについて上記ステップS105〜S108の処理を終了したと判別すると(S105,yes),net2cellから次のobjectを取り出し(S109)、再び、上述したステップS102〜S108の処理を、上記objectとなっているネットに対して行う。
【0053】
これにより、図6に示すnet2cellの場合、次にnet2に対して ステップS103で概略配線が行われ、図10(b)に示す概略配線リストgrnet2が作成される。net2には固定セルがつながっていないので、上記ステップS107の処理は実行されない。したがって、概略配線長は増加しない。
【0054】
また、続いて、ステップS109でnet2cellから次のobjectとしてnet3が取り出され、このnet3に対しても、ステップ103で概略配線が行われる。そして、図10(c)に示す概略配線リストgrnet3が作成される。net3も、net2と同様に固定セルがつながっていないので、上記ステップS107の処理は実行されない。したがって、概略配線長は増加しない。
【0055】
次に、ステップ102で、net2cellから取り出したobjectが「NULL」であると判別され(S102,yes),図9のフローチャートの処理が終了する。
【0056】
次に、本発明の第二の実施例について説明する。
この第二の実施例は、あるネットにおいて、そのネットにつながっているセルが同一のブロック内に複数存在する場合、そのセル数によりそれらのセルがどの程度分散するかを確率的に求め、その分散確率をネットの線長に加味することにより、概略配線長をより正確に求めるものである。
【0057】
図11は、このようなネットを有する集積回路200を示す図である。
同図において、ネットnet3には、ブロックIDが(2、2)のブロックに存在する5個のセルCell3、7、8、9,10がつながっている。
【0058】
この集積回路200のネットリストを図12に、セルリストを図13に示す。また、図14は、上記集積回路200の各セルがどのブロックに属しているかを管理しているセルテーブル210の構成図である。例えば、図12のセルリストと図14のセルテーブル210を参照することにより、ネットnet3に属する5個のセル(Cell3、7、8、9、10)がブロックIDが(2、2)のブロックに属していることを知ることができる。
【0059】
第二実施例では、あるネットが属するブロックにおいて、そのネットに接続していて、かつ、そのブロックに属するセルの数をcellNumと定義する。そして、そのブロックの内部内での上記ネットの配線長wを、
w=Klog(cellNum) (1)
として求める。
【0060】
このとき、Kは任意の定数である。このKの値としては、例えば、ブロックの周囲長をLとした場合、
K=0.7L (2)
とする。
【0061】
図15は、第二実施例において、ネットの概略配線長を求める処理を説明するフローチャートである。
まず、net2cellから先頭のオブジェクト(object)を取り出し、これを変数netに代入する(S201)。
【0062】
次に、変数netが「NULL」(空)であるか否かを判別し(S202)、「NULL」でなければ(S202、no),該変数netに代入されているネットに対してブロック(block)単位で概略配線を行う。そして、この概略配線により得られた概略配線情報を基に、従来の方法により、各ネットの概略配線長を算出する(S203)。
【0063】
次に、変数netに設定されているネットの概略配線リストから先頭のブロックID(i,j)を取り出し、そのi,jを、それぞれ、変数block.x,block.yに代入する(S204)。
【0064】
続いて、上記概略配線リストに未処理のブロックIDが有るか否か,すなわち、上記概略配線リストから新たなブロックIDを取り出せたか否かを判別する(S205)。そして、未処理のブロックIDを取り出したならば(S205、yes)、該ブロックIDを有するブロックに属するセルが有るか否か調べ、セルが有れば、そのセルの個数を求め、これを変数cellNumに代入する(S206)。
【0065】
そして、上記式(1)により上記ブロック内の配線長wを算出する。そして、このwを既に求められている概略配線長に加算する(S207)。
次に、上記概略配線リストから次のブロックID(i,j)を取り出し、そのi,jを、それぞれ、変数block.x,block.yに代入する(S208)。そして、再び、ステップS205に戻る。
【0066】
上記ステップS205〜S208の処理は、ステップS205で上記概略配線リストから取り出すブロックIDが無いと判別されるまで(S205,no)、繰り返される。
【0067】
上記処理により、図11に示す集積回路200のネットnet3の場合、最初のステップS204でブロックIDとして(2、2)が取り出され、block.xに”2”がblock.yに”2”が代入される。そして、ステップS206でブロックIDが(2、2)のブロックに属するネットnet3につながっているセルの個数(=5)が算出される。そして、変数cellNumに”5”が代入される。続いて、ステップS207で上記式(1)の計算が実行され、その計算結果wが、それまでの概略配線長に加えられる。
【0068】
次のステップS204でブロックIDとして(2、3)が取り出され、block.xに”2”がblock.yに”3”が代入される。そして、ステップS206でブロックIDが(2、3)のブロックに属するネットnet3につながっているセルの個数(=1)が算出される。そして、変数cellNumに”1”が代入される。続いて、ステップS207で上記式(1)の計算が実行され、その計算結果w(=0)が、それまでの概略配線長に加えられる。
【0069】
また、図11に示す集積回路200のネットnet1の場合、ブロックIDが(1、1)と(3、5)のブロックについて、上記ステップS207で上記式(1)の計算が実行される。そして、ブロックIDが(1、1)と(3、5)であるブロックのブロック数は”1”であるので、ブロック内配線長wは”0”となり、上記ステップ203で算出した概略配線長は変化しない。したがって、この場合には、従来と同一の概略配線長が得られる。
【0070】
また、図11に示す集積回路200のネットnet2の場合、ブロックIDが(5、1)と(2、4)のブロックについて、上記ステップS207で上記式(1)の計算が実行される。そして、この場合も、ブロックIDが(5、1)と(2、4)であるブロックのブロック数は”1”であるので、上記ネットnet2と同様に、従来と同一の概略配線長が得られる。
【0071】
このように、あるネットの概略配線長を算出する際、そのネットのセルが属するブロックについては、該ブロック内に属するそのネットのセルの個数を基にした該ブロック内でのセルの分散確率を考慮した上記式(1)を用いて、そのブロック内配線長wを算出し、これを、従来の方法で算出した概略配線長に加算するので、同一ブロック内に属する複数のセルが接続されているネットの概略配線長を、従来よりも、正確に算出できる。
【0072】
次に、本発明の第三実施例について説明する。
この第三実施例は、ミニカット法において、あるブロックをカットする際、そのブロックに含まれるセルを、どちらの分割ブロックに配置すれば、どの程度、配線長が増減するかを、概略配線の配線情報を基にして予測するものである。
【0073】
図16は、この第三実施例の手法を説明する模式図である。
同図は、集積回路300において、ネットnet2につながっているセルCell2が属しているブロック302を、カットライン304によってカットしようとする場合を示している。この場合、上記ブロック302をカットライン304によって垂直方向にカットすることにより、該ブロック302は、同図に示す2つの分割ブロック302Lと302Rに分割される。
【0074】
このとき、セルCell2を上記2つの分割ブロック302Lと302Rの配置した場合における配線長の増減を、概略配線情報を基にして予測する。この場合には、セルCell2を分割ブロック302Lの方に配置すれば、概略配線長が減少するようになることが予測される。
【0075】
図17〜図20は、ブロックをカットラインによって垂直方向にカットする際に、そのブロックに属しているセル(以後、sourceセルと呼ぶことにする)をどちらの分割ブロックに配置すれば、概略配線長が増加するかを予測する手法を説明する図である。また、該sourceセルとネットでつながっているセルをtargetセルと呼ぶ。
【0076】
図20は、sourceセル411が上側のブロックに属しているtargetセル421と配線される場合、該sourceセル411が属しているブロック410が垂直方向にカットされる際の、概略配線長の増加を予測する方法を説明する図である。尚、targetセル421は、sourceセル411と直接接続されるセルである。
【0077】
この場合、targetセル421が属するブロック420は、既に分割されており、targetセル421は、分割ブロック420R,420Lのいずれかに属する。また、sourceセル411は、ブロック410が垂直方向にカットされることにより、右側の分割ブロック410Rまたは左側の分割ブロック410Lのいずれかに配置されることになる。
【0078】
同図(a)に示すように、targetセル421に接続されている配線が、該targetセル421の属する分割ブロックのみならず、他方の分割ブロックも通過する場合には、sourceセル411を右側の分割ブロック41Rまたは左側の分割ブロック410Lのいずれに移動させても、概略配線長は増加しない。
【0079】
これに対して、同図(b),(c)に示すように、targetセル421に接続されている配線が、該targetセル421の属する分割ブロック内のみを通過する場合には、sourceセル411をtargetセル421と反対側の分割ブロックに移動すると概略配線長は長さβだけ増加する。
【0080】
また、targetセル421の配線パターンが、同図(a),(b),(c)以外の場合には、概略配線長の増加は”0”である。
次に、図18は、sourceセル411の配線パターンを基に、概略配線長の増加を予測する方法を説明する図である。
【0081】
同図に示すように、sourceセル411に接続されている配線が、右側の分割ブロック410Rまたは左側の分割ブロック410Lのいずれか一方のみを通過している場合、この配線が通過している分割ブロックとは別の分割ブロックに移動すると、概略配線長は長さβだけ増加する。すなわち、この場合、概略配線を、新たに長さβだけ延ばす必要がある。
【0082】
上記以外の場合には、sourceセル411をいずれの分割ブロックの方に移動しても概略配線長は増加しない。例えば、sourceセル411の概略配線がブロック410全体を水平方向に通過している場合には、概略配線長は増加しない。
【0083】
続いて、図19は、sourceセル411が上側のブロックに属し、targetセル421が下側のブロックに属している下側targetセルである場合の、概略配線長の増加を予測する方法を説明する図である。
【0084】
このとき、targetセル421が属するブロック420は、まだ分割されていない。この場合、targetセル421に接続している概略配線のパターンが、ブロック420を、将来、垂直方向にカットした場合に生成される2つの分割ブロック421R,421Lのいずれか一方の分割ブロックのみを通過するようなパターンとなっているとすると、sourceセル411をその分割ブロックとは逆の側の分割ブロックに移動すると、概略配線長がβだけ増加する。このような場合以外は、概略配線長は増加しない。
【0085】
図20は、図19の予測方法をより詳細に説明する図である。
同図(a)に示すように、sourceセル411の属するブロック410を垂直方向に分割する前に、該sourceセル411に接続された概略配線は垂直方向に下側に延びており、下側targetセル421に接続された概略配線は垂直方向の上下と水平方向の右側に延びていたとする。
【0086】
この場合、同図(b)に示すように、上記sourceセル411を左側の分割ブロック410Lの方に移動すると、概略配線長は長さβだけ増加する。一方、同図(c)に示すように、上記sourceセル411を右側の分割ブロック410Rの方に移動した場合には、概略配線長は増加しない。
【0087】
また、同図(d)に示すように、sourceセル411の属するブロック410を垂直方向に分割する前に、該sourceセル411に接続された概略配線は垂直方向下側と水平方向の両側に延びており、下側targetセル421に接続された概略配線は垂直方向の上下と水平方向の右側に延びていたとする。
【0088】
この場合、同図(e)に示すように、上記sourceセル411を左側の分割ブロック410Lの方に移動すると、概略配線長は長さβだけ増加する。一方、同図(f)に示すように、上記sourceセル411を右側の分割ブロック410Rの方に移動した場合には、概略配線長は増加しない。
【0089】
以上は、sourceセル411が属するブロック410が垂直方向にカットされる場合に、sourceセル411とtargetセル421の概略配線パターン情報に基づいて、sourceセル411を分割ブロック411Rまたは分割ブロック411Lのいずれの方に移動すれば、概略配線長が増加または増加しないかを予測する方法について述べたが、sourceセル411とtargetセル421が水平方向に概略配線によって接続される場合についても、基本的に同様の方法によって概略配線長が増加または増加しないかを予測することができる。
【0090】
また、概略配線長が”増加”または”増加しない”の2つの場合のみならず、概略配線長が減少する場合についても予測することが可能である。すなわち、上記図17〜図20に示されている以外のパターンを考慮して、基本的にsourceセル411とtargetセル421の距離が短くなるように、sourceセル411を移動させる位置を決定すればよい。
【0091】
次に、本発明の第四の実施例について説明する。
この第四の実施例は、予め指定された線長制約を守れないネットをviolation net(ヴァイオレーションネット)と定義し、このヴァイオレーションネットにつながっているセルが属するブロックが分割される際に、上記第三の実施例の方法を用いて、該セルを概略配線長が減少する分割ブロックの方に移動させ(概略配線長が減少する分割ブロックに移動できない場合には、概略配線長が増加しない分割ブロックの方に移動させる)、該移動後にそのセルを固定セルとして取り扱うものである。
【0092】
このように固定セルに設定されたヴァイオレーションネットは、ミニカット法の実行時において、移動対象のセルとして取り扱われないため、ヴァイオレーションネットの概略配線長はミニカット法の実行によって増加することはない。そして、階層的に実行される各ミニカット法の実行前に上記の処理をヴァイオレーションネットにつながっているセルに対して施すことにより、そのヴァイオレーションネットの概略配線長を確実に減少させていくことが可能となり、最終的にヴァイオレーションネットを解消することが可能になる。
【0093】
以下、図21に示す集積回路400を例にして説明する。
該集積回路400における3個のネットnet1、2、3に対して、それぞれ、”60”、”60”及び”80”の配線長が、予め線長制約(指定配線長)として指定されているものとする。したがって、ネットnet1は、その論理配線長が”60”を越えた場合ヴァイオレーションネットとなる。同様にして、ネットnet2の場合には”60”、ネットnet3の場合には”80”を越えた場合にバイオレーションネットとなる。上記論理配線長は、例えば、上記概略配線長が該当する。尚、上記論理配線長及び上記概略配線長の長さの単位は、例えば、グリッド(grid)の間隔の長さである。
【0094】
図22は、上記集積回路400の各ネットがヴァイオレーションネットとなっているか否かを管理している管理テーブル450の構成を示す図である。
同図に示すように、この管理テーブル450には、各ネットnet1、2、3に対応して、指定配線長、論理配線長、violation Flag(ヴァイオレーションフラグ)及びcritical Flag(クリティカルフラグ)が格納されている。
【0095】
上記ヴァイオレーションフラグは、対応するネットがヴァイオレーションネットとなった場合に”TRUE”に設定される。また、ヴァイオレーションネットとなっていない場合には”FALSE”に設定される。
【0096】
また、本実施例では、論理配線長が指定配線長のα%を越えたネットを、critical net(クリティカルネット)と定義する。上記αの値としては、例えば、”70”〜”80”の範囲の値が使用される。上記クリティカルフラグは、対応するネットがクリティカルネットとなった場合に”TRUE”に設定され、クリティカルネットとなっていない場合には”FALSE”に設定される。
【0097】
また、上記集積回路400に対して、図23、図24に示すネットリスト、セルリストが作成される。
図22に示す管理テーブル450においては、ネットnet1がヴァイオレーションネットとなっていることがヴァイオレーションフラグにより記憶されている。また、ネットnet3がクリティカルネットとなっていることがクリティカルフラグにより記憶されている。また、ネットnet2は、ヴァイオレーションネットでもクリティカルネットでもないことが、ヴァイオレーションフラグとクリティカルフラグにより記憶されている。
【0098】
図25は、第四実施例におけるミニカット法の実行方法を説明するフローチャートである。
まず、net2cellから先頭のobjectを取り出し、これを変数netに代入する(S401)。
【0099】
続いて、該変数netが「NULL」であるか否かを判別する(S402)。この判別は、net2cellに連結されている全てのネットについてヴァイオレーションネットの判別が終了したか否かを判別する処理である。
【0100】
上記ステップS402で、変数netに設定されているネットがヴァイオレーションネットであるか否かを、上記管理テーブル450を参照することにより判別する(S403)。
【0101】
この判別により、ネットnet1がヴァイオレーションネットであると判別される。
上記ステップ403で、変数netに設定されているネットがヴァイオレーションネットであると判別すると(S403,yes)、そのヴァイオレーションネットにつながっていて、かつ、現在、カット対象となっているブロックに属するセルを、概略配線長が減少する分割ブロックの方に移動させて固定化するクラスター化(cluster化)の処理を行った後、該クラスター化の対象となったセルを固定セルに設定する(S404)。
【0102】
上記固定セルの設定処理は、例えば、各セル毎に用意される特定のフラグを用いて行う。上記処理により、例えば、現在、ブロックIDが(2、5)のブロックがカット対象のブロックである場合、セルCell6に対して上記ステップS404の処理が施され、該セルCell6は、上記ブロックを垂直方向にカットした際に生成される図21に示す分割ブロック425Lの方に移動される。
【0103】
次に、net2cellから次のobjectを取り出し、これを変数netに代入し(S405),再び、ステップS402、S403の処理を行う。
これにより、ステップS403でネットnet2がヴァイオレーションネットでないと判別され(S403,no)、次に、ステップS405の処理に移る。
【0104】
そして、ステップS405でnet2cellからネットnet3が取り出され、該ネットnet3が変数netに代入され、ステップS402に戻る。続いて、ステップ403で該ネットnet3がヴァイオレーションネットでないと判別され(S403,no),ステップS405に移る。
【0105】
このステップS405で、net2cellからはobjectは取り出されず、変数netには「NULL」が設定される。そして、再び、ステップS402に戻り、変数netが「NULL」であると判別され(S402,yes)、ステップ406でミニカット法を実行する。
【0106】
上記ミニカット法は、固定セル以外のセルに対して実行される。したがって、上記ヴァイオレーションネットにつながっていると判別されたネットnet1のセルCell6は、固定セルに設定されたために移動されない。
【0107】
次に、本発明の第五の実施例を説明する。
この第五の実施例は、本出願人が、以前、出願した、特開平7−141415号公報の発明において提案した、ミニカット法実行時のステーブルネット(stable net)に対する取り扱いを、上記クリティカルネットに適用するものである。
【0108】
上記先の発明では、ミニカット法の実行前にカットされていて、かつ該ミニカット法の実行後にもカットされているネットを、ステーブルネットと定義し、このステーブルネットにつながっている全てのセルを、強制的に片方のブロックに移動させることにより、セルの最適な配置を求めるものである。また、このようにして、移動させたセルは、以後、固定セルとみなして、ミニカット法の実行により、再度、移動させられることを禁止させる。
【0109】
第五の実施例では、ステーブルネットの中から、クリティカルネットとなっているネットを優先的に選択し、そのクリティカルネットにつながっている全てのセルを、片方のブロックに移動させる。
【0110】
クリティカルネットは、ヴァイオレーションネットの予備軍であると考えることができ、ミニカット法の実行により該クリティカルネットにつながっているあるセルが他方のブロックに移動することにより、その配線長が増加してヴァイオレーションネットとなってしまう可能性がある。したがって、クリティカルネットとなったネットについては、一つのブロックにまとめて、より配線長が短くなるような操作を施す必要がある。また、ステーブルネットは、ミニカット法の実行後にもカットされたままの状態にある確率が高いことが知られている。したがって、ミニカット法の実行前に与えるセルの初期配置(初期解)において、なるべく、ステーブルネットとなっているクリティカルネットの数を少なくしておくことが、クリティカルネットの配線長を短くする上で望ましい。
【0111】
第五の実施例は、基本的に、以上のような考えに基づくものである。
図26は、ミニカット法を繰り返し実行する際、その各実行前にステーブルネットとなっているクリティカルネットを、非ステーブルネット化する処理を説明するフローチャートである。尚、このフローチャートで、クリティカルネットを検出する際には、上記図21に示す管理テーブル450と同様なテーブルを参照する。
【0112】
ミニカット法の実行が終了すると、まず、集積回路内の全てのセルのムーブドフラグ(moved Flag)を”0”にセットする(S501)。
上記ムーブドフラグは、集積回路内の全てのセルに個別に設けられているフラグであり、対応するセルがミニカット法の実行により、一度、移動させられたか否かを示すフラグである。そして、移動させられていれば”1”に、まだ、移動させられていなければ”0”に設定される。
【0113】
次に、上記ミニカット法の実行前にステーブルネットとして登録されており、かつ、該ミニカット法実行後にもカットされているネットを、ステーブルネットとして選びだし、そのネットをステーブルネットテーブルに登録する(S502)。
【0114】
このステーブルネットテーブルは、上記先の発明の明細書の図13に示すような構成となっており、フラグ(stableNetTable[i].Flag)により、ステーブルネットを管理している。尚,iは、ネットの番号である。このフラグは、対応するステーブルネットが以下に述べるステップS505〜S507の処理を施されたかか否かを記憶するフラグであり、未処理であれば”0”がセットされる。
【0115】
続いて、上記ステーブルネットテーブルのフラグを全て”0”にクリアする(S503)。
すなわち、全てのステーブルネットが未処理であることを、ステーブルネットテーブルに登録する。
【0116】
次に、上記ステーブルネットテーブルのフラグが全て”1”になるまで、以下のステップS505〜S507の処理を繰り返す。
ステップS505では、ステーブルネットテーブルに登録されているフラグが”0”のステーブルネットの中からクリティカルネットを優先的に選択する。複数のクリティカルネットがある場合には、それらの中からランダムにクリティカルネットを選択する。また、クリティカルネットが無くなった場合には、残りのステーブルネットの中からランダムに選択する(S505)。
【0117】
次のステップS506では、上記選択したネットにつながっている全てのセルを、一つのブロックの方に移動させる。この場合、移動するブロックの選択は、例えば、上記先の発明の明細書の図10または図11のフローチャートに示すアルゴリズムによって決定する。すなわち、例えば、上記図10のフローチャートに示すように、上記選択したネットにつながっている全てのセルのムーブドフラグを調べ、該全てのセルのムーブドフラグが”0”であれば、どちらのブロックに移動先するかは、ランダムに選択する。一方、ムーブドフラグが”1”であるセルが片側のブロックのみに集まっているならば、そのブロックの方に他方の側のブロックに属しているセルを移動させる。
【0118】
続くステップS507では、上記セルの移動を行ったステーブルネットについて、ステーブルネットテーブルのフラグを”1”にセットする。また、該ステーブルネットにつながっている全てのセルのムーブドフラグを”1”にセットする。
【0119】
これにより、一つのブロックに全てのセルが移動させられたステーブルネットの全てのセルは固定セルとして取り扱われるので、以後のステップS505〜S506の処理において、移動させられることはないので、一度、移動したステーブルネットの処理が無効となってしまう事態を防止できる。
【0120】
以上述べた図26のフローチャートに示す処理の結果を、初期解(初期配置)としてミニカット法に与えて、該ミニカット法を実行することにより、クリティカルネットがカットされない最終解が得られる易くなり、この結果として、そのクリティカルネットの配線長を短くすることができる。
【0121】
上記第一〜第五の実施例は、組み合わせることも可能である。
すなわち、第一、第三及び第四の実施例を組み合わせる第六の実施例により、ヴァイオレーションネットの概略配線長をより正確に求めることが可能になると共に、ヴァイオレーションネットの数を減少させることができる。
【0122】
また、第一、第二、第三及び第四の実施例を組み合わせる第七の実施例により、ヴァイオレーションネットの概略配線長を、上記第六の実施例よりも、さらに、正確に求めることが可能になると共に、ヴァイオレーションネットの数を減少させることができる。
【0123】
また、さらに、第一、第三、第四及び第五の実施例を組み合わせる第八の実施例により、ヴァイオレーションネットの概略配線長を、より正確に求めることが可能になると共に、クリティカルネットがヴァイオレーションネットに変化する確率を減少させて、よりヴァイオレーションネットの数を減少させることができる。
【0124】
また、さらに、第一、第二、第三、第四及び第五の実施例を組み合わせる第九の実施例により、ヴァイオレーションネットの概略配線長を、上記第八の実施例よりも正確に求めることが可能になると共に、クリティカルネットがヴァイオレーションネットに変化する確率を減少させて、よりヴァイオレーションネットの数を減少させることができる。
【0125】
【発明の効果】
以上、説明したように、本発明によれば、集積回路のセル配置において、分割ブロックに移動する際のネットのセルの概略配線長の増減をより正確に予測することが可能になると共に、指定された配線長を越えるネットの数を減少させることが可能になる。したがって、各ネットの配線長制約を守るようにすることが可能になる。そして、このことにより、配線による遅延を指定された範囲内に抑えることが可能になり、回路の性能を高めることができるようになる。
【図面の簡単な説明】
【図1】本発明の原理を説明する図(その1)である。
【図2】本発明の原理を説明する図(その2)である。
【図3】本発明の原理を説明する図(その3)である。
【図4】集積回路において、固定セルがつながっているネットの配線長を求める方法を説明する図である。
【図5】図4に示す集積回路におけるネットリストを示す図である。
【図6】図4に示す集積回路におけるセルリストを示す図である。
【図7】図4に示す集積回路におけるセルテーブルの構成を示す図である。
【図8】図4に示す集積回路の各ブロックの中心座標の値を格納しているブロックテーブルの構成を示す図である。
【図9】第一実施例における、各ネットの概略配線長を求める処理を説明するフローチャートである。
【図10】図9のフローチャートの概略配線処理で作成される概略配線リストを示す図である。
【図11】あるブロックに、一つのネットにつながっているセルが複数存在する集積回路の例を示す図である。
【図12】図11に示す集積回路のネットリストを示す図である。
【図13】図11に示す集積回路のセルリストを示す図である。
【図14】図11に示す集積回路の各セルがどのブロックに属しているかを管理しているセルテーブルの構成図である。
【図15】第二実施例において、各ネットの概略配線長を求める処理を説明するフローチャートである。
【図16】第三実施例における、概略配線の配線情報を基にした、配線長の増減を予測する手法を説明する模式図である。
【図17】ブロックをカットラインによって垂直方向にカットする際に、そのブロックに属しているセルをどちらの分割ブロックに配置すれば、概略配線長が増加するかを予測する手法を説明する図(その1)である。
【図18】ブロックをカットラインによって垂直方向にカットする際に、そのブロックに属しているセルをどちらの分割ブロックに配置すれば、概略配線長が増加するかを予測する手法を説明する図(その2)である。
【図19】ブロックをカットラインによって垂直方向にカットする際に、そのブロックに属しているセルをどちらの分割ブロックに配置すれば、概略配線長が増加するかを予測する手法を説明する図(その3)である。
【図20】ブロックをカットラインによって垂直方向にカットする際に、そのブロックに属しているセルをどちらの分割ブロックに配置すれば、概略配線長が増加するかを予測する手法を説明する図(その4)である。
【図21】第四実施例の説明に使用する集積回路の構成を示す図である。
【図22】ヴァイオレーションネットとクリティカルネットが登録される管理テーブルの構成を示す図である。
【図23】図21に示す集積回路のネットリストを示す図である。
【図24】図21に示す集積回路のセルリストを示す図である。
【図25】第四実施例におけるヴァイオレーションネットを固定セルとして取り扱う処理を説明するフローチャートである。
【図26】第五実施例におけるクリティカルネットに対する移動処理を説明するフローチャートである。
【図27】ミニカット法を説明するフローチャートである。
【図28】ミニカット法によるセルの移動操作の方法を説明する図である。
【図29】ミニカット法における集積回路の一般的な概略配線データを示す図である。
【符号の説明】
41、51、61 概略配線手段
42、52、62 第一の配線長算出手段
53、63 ヴァイオレーションネット検出手段
54 配線長増減予測手段
55 ミニカット法実行手段
63 クリティカルネット検出手段
64 ステーブルネット検出手段
65 セル移動手段
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an automatic cell placement method in the layout design of integrated circuits such as LSI, VLSI, and ULSI, and in particular, the approximate wiring length for optimizing the cell placement of an integrated circuit using a mini-cut method. The present invention relates to an increase / decrease prediction apparatus and an integrated circuit initial arrangement determination apparatus.
[0002]
With recent advances in manufacturing technology, there is a remarkable increase in the degree of integration of integrated circuits and an increase in circuit scale, and the number of cells included in an integrated circuit chip is steadily increasing. Along with this, the factor that determines the performance of the circuit is that the specific gravity of the wiring delay is higher than the delay of the gate.
[0003]
[Prior art]
Partitioning is known as a method for determining an initial arrangement of cells of an integrated circuit. In this partitioning, a given circuit is divided into K (K is a natural number) partial circuits (blocks) to minimize the number of nets, that is, the number of cuts across the blocks. It is. A mini-cut method is known as a typical algorithm of this partitioning.
[0004]
In this mini-cut method, cut lines for cutting chips horizontally and vertically and their processing order are determined, and the layout is determined by sequentially performing logical two-division for each cut line. At this time, the cut line may be set at the boundary of all blocks.
[0005]
When the processing order of the cut lines is determined, an area (a set of blocks) on the chip is determined for each cut line. Furthermore, depending on the location of the cut line, the condition of the number of cells in the division (cell set M 1, M 2 When dividing into M 1, M 2 The upper limit of the number of cells is also determined. The logical division is performed so as to minimize the number of wirings (nets) passing on the cut line. At that time, the division must satisfy the cell number condition.
[0006]
Thus, the basis of the mini-cut method is to move cells arranged in one block to another block and reduce the number of nets crossing the cut line.
FIG. 27 is a flowchart for explaining a conventional mini-cut method.
[0007]
First, an initial arrangement of cells and a cut line are determined (S1). Next, a cell gain g is obtained for each cell (S2). The cell gain g is the number of cuts that decreases when a certain cell is moved to another block.
[0008]
Subsequently, the cell gain g is sorted in descending order for each block (S3). Subsequently, the cell having the largest cell gain g is selected from the block having the largest cell size, and this cell is moved to another block (S4).
[0009]
Next, the cell gain g of the moved cell and the cell connected to the cell by the net is updated, and the cell gain g is sorted again for each block (S5). Then, it is determined whether or not there is a cell having a positive cell gain g (S6), and if it exists (S6, YES), the processes in steps S4 to S5 are repeated again. When it is determined that there is no longer a cell having a positive cell gain g (S6, NO), the process ends.
[0010]
With the above processing, the initial arrangement of cells is optimized.
The above-described mini-cut method will be described more specifically with reference to FIG.
In the figure, a perpendicular line 1 indicated by a broken line is a cut line. Further, the cell 2 shown by knitting is a cell having a positive cell gain g, and the cell 3 not knitted is a cell having a cell gain g of “0”.
[0011]
In any of the cell arrangement states shown in FIGS. 32A, 32B, and 32C, the number of cuts can be reduced by moving the knitting cell 2 to the other block on the other side of the cut line 1. Can be reduced. In actual cell movement, in each block, consideration is given so that the ratio between the area of the block and the total area of the cells included in the block is balanced.
[0012]
[Problems to be solved by the invention]
In the conventional mini-cut method described above, the number of net connections between a set of cells included in each divided block, i.e., by hierarchically performing an operation to minimize the number of cuts, A more optimal cell arrangement is obtained.
[0013]
However, in the mini-cut method, cell placement is determined using only information in the hierarchically divided areas (cell total area, number of cells, etc.), so the wiring length of the entire integrated circuit is controlled. There was a problem that could not be done.
[0014]
For this reason, the length of a certain net becomes longer than necessary, and as a result, the performance of the entire integrated circuit, such as signal propagation delay, is degraded. FIG. It is a figure explaining the method of a general schematic wiring. In this schematic wiring, wiring is executed on the assumption that a terminal exists at the center of a divided block instead of an actual terminal. Based on this execution result, a virtual wiring length (rough wiring length) is obtained. In the figure, net1, net2, and net3 are nets, and white circles 1 to 6 are virtual terminals. However, in this method, the length of the net connected to a fixed cell such as a RAM, a ROM, or an I / O buffer cell may be calculated shorter than the actual length. For this reason, it is important to predict the wiring length of the net more accurately in order to perform the cell placement while keeping the net line length restriction specified in advance.
[0015]
In addition, in the mini-cut method, as the hierarchization progresses and each block is further divided into smaller blocks, the actual wiring length tends to be longer in a block including many cells, and the wiring length calculated using the schematic wiring And the actual wiring length is different. That is, the approximate wiring length calculated based on the approximate wiring information is easily calculated shorter than the actual wiring length.
[0016]
Therefore, in this case as well, it is important to predict the wiring length of the net more accurately in order to perform cell placement while complying with the specified net line length restriction.
[0017]
In the mini-cut method, the present invention makes it possible to predict more accurately the increase / decrease of the net wiring length of the net when moving net cells to the divided block when performing schematic wiring between the divided blocks. Objective. In addition, as described above, the cells are arranged so that the restrictions on the designated wiring length of the net can be observed while accurately predicting the increase / decrease of the approximate wiring length of the net when moving the cell of the net to the divided block. For the purpose.
[0018]
[Means for Solving the Problems]
FIG. 1 is a diagram for explaining the principle of the present invention (first invention).
The first invention includes the following means.
[0019]
Assuming that the terminal of each cell is located at the center of the block to which each cell belongs, the rough wiring unit 41 performs wiring between cells connected to each net.
The wiring length increase / decrease predicting means 42, when dividing a block by a cut line based on the rough wiring information obtained by the rough wiring means 41, selects a cell belonging to the block with respect to the cut line. If it moves to the divided block on the side of, it is predicted whether the approximate wiring length of the net connected to the cell will increase or decrease.
[0020]
Therefore, when a block is divided by a cut line, it is determined whether the cell that belongs to the block is moved to any divided block, so that the approximate wiring length of the net to which the cell is connected does not decrease or increase It becomes possible to do.
[0021]
FIG. 2 is a diagram for explaining the principle of the present invention (second invention).
In the second invention, a cut line is set in an integrated circuit region, and cells are divided between regions divided by the cut line so that the number of cuts, which is the number of wires cut by the cut line, is minimized. On the premise of an initial arrangement determining device for an integrated circuit that determines the initial arrangement of cells constituting the integrated circuit while repeating the movement operation, the following means are provided.
[0022]
Assuming that the terminal of each cell is located at the center of the block to which each cell belongs, the rough wiring means 51 performs wiring between cells connected to each net.
The wiring length calculation means 52 obtains the approximate wiring length (logical wiring length) of each net based on the approximate wiring information obtained by the approximate routing means 51.
[0023]
Based on the approximate wiring length of each net calculated by the wiring length calculating means 52, the vibration net detecting means 53 determines a net whose current approximate wiring length exceeds a preliminarily constrained wiring length. Detect as.
[0024]
The wiring length increase / decrease prediction means 54 is based on the rough wiring information obtained by the rough wiring means 51 when the block belonging to the vibration net detected by the vibration net detection means 53 is divided by the cut line. It is predicted whether the cell connected to the vibration net belonging to the block will be moved to any divided block to increase or decrease the approximate wiring length of the violation net.
[0025]
The mini-cut method executing means 55 moves the cell connected to the above-mentioned violation net to the divided block where the wiring length is predicted not to be reduced or increased by the wiring length reduction prediction means 54, The cell is set as a fixed cell, and then the mini-cut method is performed on the block.
[0026]
According to the second aspect of the invention, before the mini-cut method is performed on the block to which the cell connected to the vibration net belongs, the cell whose length is not decreased or increased is not increased. Since it is moved to the divided blocks, it is possible to reliably reduce the wiring length of the above-mentioned vibration net in the process of hierarchically executing the mini-cut method, and as a result, the number of the vibration nets is reduced. Can be made.
FIG. 3 is a diagram for explaining the principle of the present invention (third invention).
[0027]
In the third aspect of the invention, a cut line is set in the area of the integrated circuit, and cells are divided between the areas divided by the cut line so that the number of cuts, which is the number of wires cut by the cut line, is minimized. On the premise of an initial arrangement determining device for an integrated circuit that determines the initial arrangement of cells constituting the integrated circuit while repeating the movement operation, the following means are provided.
[0028]
Assuming that the terminal of each cell is located at the center of the block to which each cell belongs, the rough wiring means 61 performs wiring between cells connected to each net.
The wiring length calculating means 62 obtains the approximate wiring length (logical wiring length) of each net based on the approximate wiring information obtained by the approximate routing means 61.
[0029]
The critical net detecting means 63 critically determines a net whose current approximate wiring length exceeds α% of the preliminarily restricted wiring length based on the approximate wiring length of each net calculated by the wiring length calculating means 62. Detect as net.
[0030]
The stable net detecting means 64 detects a net that has been cut by the cut line before the execution of the mini-cut method and has been cut by the cut line after the execution of the mini-cut method as a stable net.
[0031]
The cell moving unit 65 is a stable net based on the detection result of the critical net detection unit 63 and the detection result of the stable net detection unit 64, and is connected to the net that is also a critical net. Move all cells to the same block.
[0032]
The mini-cut method executing means 66 executes the mini-cut method using the cell arrangement obtained by the process 65 of the cell moving means as the initial arrangement.
The α is a value within the range of 70 ≦ α ≦ 80, for example.
[0033]
In the third aspect of the invention, since the critical net that is a stable net is moved to the same block after all cells connected to the critical net are executed, the critical net is cut. It is easy to obtain a final arrangement of cells that are not performed. Therefore, it is possible to reduce the probability that a critical net changes to a violation net, and in the process of hierarchically executing the mini-cut method, it is possible to gradually shorten the critical net wiring length. Finally, the wiring length can be shortened.
[0034]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings.
In the first embodiment of the present invention, when performing schematic wiring in the mini-cut method, if a fixed cell is connected to a certain net, the distance between the fixed cell and the center coordinate of the block to which the fixed cell belongs is determined. By obtaining this distance and adding this distance to the net line length, the approximate wiring length can be obtained more accurately.
[0035]
FIG. 4 is a diagram illustrating a cell arrangement state of the integrated circuit 140 in which fixed cells exist.
In the figure, the x-axis is set in the horizontal direction and the y-axis is set in the vertical direction. In addition, the numbers “1” to “5” in the x-axis and y-axis directions shown in the figure are the values of the block coordinates in the x-axis and y-axis directions, respectively.
[0036]
Each block of the integrated circuit 140 is identified by a block ID (block ID). This block ID is represented by (x, y). x and y are block coordinate values in the x-axis direction and y-axis direction of the block, respectively. White circles to which numbers “1” to “5” are assigned are virtual terminals of five cells (Cells 1 to 5) set in the schematic wiring of the integrated circuit 140. A black circle to which the number “6” is assigned is a terminal of the fixed cell Cell6. Furthermore, nets 1, 2, and 3 represent nets.
[0037]
FIG. 5 is a diagram showing a net list indicating to which net each of the six cells (Cell 1 to 6) is connected in the integrated circuit 140.
FIG. 6 is a diagram showing a cell list indicating information on cells connected to the nets (net1 to n3). As shown in the figure, in net1, information in which Cell1 and Cell6 are connected is indicated by a linked list. this,
net1 = {Cell1, Cell6}
It expresses with. Similarly,
net2 = {Cell2, Cell5}
net3 = {Cell3, Cell4}
It expresses.
[0038]
A list having the net1, net2, and net3 as elements (objects) is expressed as net2cell. That is,
net2cell = {net1, net2, net3}
It expresses.
[0039]
Further, FIG. 7 is a diagram showing the configuration of the cell table 150 that stores information such as which block belongs to each of the six cells (Cells 1 to 6) and whether or not it is a fixed cell. is there.
[0040]
In the figure, the value “i” of Cell ID (cell ID) is a number serving as an identifier of Celli. Cell position (x, y) is a coordinate value of a fixed cell. Furthermore, fixed Flag is a flag indicating whether or not each cell Celli (i = 1 to 6) is a fixed cell, and “1” indicates that it is a fixed cell.
[0041]
In the cell table 150 illustrated in FIG. 7, information indicating that Cell 6 having a cell ID value “6” is a fixed cell and the coordinate value is (30, 40) is stored. Information indicating that Cells 1 to 5 other than Cell 6 are not fixed cells is also stored.
[0042]
FIG. 8 is a diagram showing the configuration of a block table 160 that stores the value of the center coordinate of each block of the integrated circuit 140.
In the table 160, each block is indicated by a block ID, and the coordinates (x, y) of its center position (center position) are stored corresponding to the block ID. That is, for example, (5, 5) is stored as the center coordinates of the block whose block ID is (1, 1). Also, (25, 45) is stored as the center coordinates of the block whose block ID is (3, 5).
[0043]
FIG. 9 is a flowchart for explaining processing for obtaining the approximate wiring length of each net in the first embodiment.
First, the first object (object) is taken out from net2cell, and this is substituted into variable net (S101).
[0044]
Thereby, in the case of net2cell shown in FIG. 6, first, net1 is substituted into the variable net.
Next, it is determined whether or not the variable net is “NULL” (empty) (S102). If it is not “NULL” (S102, no), a block (for the net assigned to the variable net ( Schematic wiring is performed in block units. Then, based on the general wiring information obtained by this general wiring, the general wiring length of each net is calculated by the conventional method (S103).
[0045]
With this schematic wiring, the net net1 4 When the schematic wiring as shown in FIG. 10 is performed, a schematic wiring list shown in FIG. 10A is created. In FIG. 9A, grnet1 is a list of schematic wirings of the net net1, and (i, j) {i = 1 to 5; j = 1 to 5} are blocks belonging to the routing of the schematic wirings. Block ID.
[0046]
Next, the first block ID (i, j) is extracted from the net schematic wiring list set in the variable net, and the i and j are respectively stored in the variable block. x, block. Substitute for y (S104).
[0047]
Subsequently, it is determined whether or not there is an unprocessed block ID in the schematic wiring list, that is, whether or not a new block ID has been extracted from the schematic wiring list (S105). If an unprocessed block ID is extracted (S105, yes), it is checked whether there is a cell belonging to the block having the block ID. If there is a cell, the cell is a fixed cell. Is determined (S106).
[0048]
If it is a fixed cell (S106, yes), the distance between the fixed cell and the center coordinate of the block in which the fixed cell exists is calculated, and this distance is added to the already determined approximate wiring length. (S107). The distance is, for example, the distance d in the x-axis direction between the center coordinates of the fixed cell and the block. x (The absolute value of the difference between the two x coordinates) and the distance d in the y-axis direction between the fixed cell and the center coordinates of the block y (The absolute value of the difference between the two y-coordinates) (see FIG. 4).
[0049]
Next, the next block ID (i, j) is taken out from the schematic wiring list, and the i, j is assigned to the variable block. x, block. Substitute for y (S108). And it returns to step S105 again.
[0050]
On the other hand, if it is determined in step S106 that the cell is not a fixed cell (S106, no), the process proceeds to step S108 without performing the process in step S107.
The processes in steps S105 to S108 are repeated until it is determined in step S105 that there is no block ID extracted from the schematic wiring list (S105, no).
[0051]
Through the above processing, the fixed cell Cell6 belonging to the block ID (3, 5) is detected in the net net1, and the central coordinates (25, 45) of the block having the block ID (3, 5) and the fixed cell Cell6 The distance between the coordinates (30, 50) is added to the schematic wiring in step S107. The center coordinates (25, 45) of the block are read from the block table 160 in FIG. 8, and the coordinates (30, 50) of the fixed cell Cell6 are read from the cell table 150 in FIG.
[0052]
If it is determined in step S105 that the processes in steps S105 to S108 have been completed for all block IDs in the schematic wiring list of the first net extracted from net2cell (S105, yes), the next object is extracted from net2cell. (S109) The processes in steps S102 to S108 described above are performed again on the net that is the object.
[0053]
Thereby, in the case of net2cell shown in FIG. 6, next, schematic wiring is performed on net2 in step S103, and a schematic wiring list grnet2 shown in FIG. 10B is created. Since no fixed cell is connected to net2, the process of step S107 is not executed. Therefore, the approximate wiring length does not increase.
[0054]
Subsequently, net3 is taken out from net2cell as the next object in step S109, and schematic wiring is also performed in step 103 for this net3. Then, a schematic wiring list grnet3 shown in FIG. 10C is created. Since the fixed cell is not connected to net3 as well as net2, the process of step S107 is not executed. Therefore, the approximate wiring length does not increase.
[0055]
Next, in step 102, it is determined that the object extracted from the net2cell is “NULL” (S102, yes), and the processing of the flowchart of FIG. 9 ends.
[0056]
Next, a second embodiment of the present invention will be described.
In the second embodiment, when there are a plurality of cells connected to the net in the same block in a certain net, the probability is determined how much those cells are distributed depending on the number of cells, By adding the distribution probability to the net line length, the approximate wiring length can be obtained more accurately.
[0057]
FIG. 11 is a diagram showing an integrated circuit 200 having such a net.
In the figure, the net net3 is connected to five cells Cell3, 7, 8, 9, and 10 that exist in the block having the block ID (2, 2).
[0058]
The net list of this integrated circuit 200 is shown in FIG. 12, and the cell list is shown in FIG. FIG. 14 is a configuration diagram of a cell table 210 that manages to which block each cell of the integrated circuit 200 belongs. For example, by referring to the cell list of FIG. 12 and the cell table 210 of FIG. 14, five cells (Cell3, 7, 8, 9, 10) belonging to the net net3 are blocks having a block ID (2, 2). You can know that it belongs to.
[0059]
In the second embodiment, in a block to which a certain net belongs, the number of cells connected to the net and belonging to the block is defined as cellNum. And the wiring length w of the net in the inside of the block is
w = Klog (cellNum) (1)
Asking.
[0060]
At this time, K is an arbitrary constant. As the value of K, for example, when the perimeter of the block is L,
K = 0.7L (2)
And
[0061]
FIG. 15 is a flowchart for explaining the process for obtaining the approximate wiring length of the net in the second embodiment.
First, the top object (object) is taken out from net2cell, and this is substituted into variable net (S201).
[0062]
Next, it is determined whether or not the variable net is “NULL” (empty) (S202). If it is not “NULL” (S202, no), a block (for the net assigned to the variable net ( Schematic wiring is performed in block units. Then, based on the general wiring information obtained by this general wiring, the general wiring length of each net is calculated by the conventional method (S203).
[0063]
Next, the first block ID (i, j) is extracted from the net schematic wiring list set in the variable net, and the i and j are respectively stored in the variable block. x, block. Substitute for y (S204).
[0064]
Subsequently, it is determined whether or not there is an unprocessed block ID in the schematic wiring list, that is, whether or not a new block ID has been extracted from the schematic wiring list (S205). Then, if an unprocessed block ID is extracted (S205, yes), it is checked whether there is a cell belonging to the block having the block ID. If there is a cell, the number of cells is obtained and this is set as a variable. Substitute in cellNum (S206).
[0065]
Then, the wiring length w in the block is calculated by the above equation (1). Then, w is added to the already determined approximate wiring length (S207).
Next, the next block ID (i, j) is taken out from the schematic wiring list, and the i, j is assigned to the variable block. x, block. Substitute for y (S208). And it returns to step S205 again.
[0066]
The processes in steps S205 to S208 are repeated until it is determined in step S205 that there is no block ID extracted from the schematic wiring list (S205, no).
[0067]
With the above processing, in the case of the net net3 of the integrated circuit 200 shown in FIG. 11, (2, 2) is extracted as the block ID in the first step S204, and block. x is “2”. “2” is substituted for y. In step S206, the number of cells (= 5) connected to the net net3 belonging to the block having the block ID (2, 2) is calculated. Then, “5” is assigned to the variable cellNum. Subsequently, the calculation of the above formula (1) is executed in step S207, and the calculation result w is added to the approximate wiring length so far.
[0068]
In the next step S204, (2, 3) is extracted as the block ID, and block. x is “2”. “3” is substituted for y. In step S206, the number (= 1) of cells connected to the net net3 belonging to the block having the block ID (2, 3) is calculated. Then, “1” is assigned to the variable cellNum. Subsequently, the calculation of the above formula (1) is executed in step S207, and the calculation result w (= 0) is added to the approximate wiring length so far.
[0069]
In the case of the net net1 of the integrated circuit 200 shown in FIG. 11, the calculation of the equation (1) is executed in step S207 for the blocks having the block IDs (1, 1) and (3, 5). Since the number of blocks with the block IDs (1, 1) and (3, 5) is “1”, the intra-block wiring length w is “0”, and the approximate wiring length calculated in step 203 above. Does not change. Therefore, in this case, the same approximate wiring length as that in the conventional case can be obtained.
[0070]
In the case of the net net2 of the integrated circuit 200 shown in FIG. 11, the calculation of the above equation (1) is executed in step S207 for the blocks having the block IDs (5, 1) and (2, 4). Also in this case, since the number of blocks having the block IDs (5, 1) and (2, 4) is “1”, the same approximate wiring length as that of the conventional net is obtained as in the net 2 described above. It is done.
[0071]
As described above, when calculating the approximate wiring length of a net, for the block to which the cell of the net belongs, the distribution probability of the cell in the block based on the number of cells of the net belonging to the block is calculated. The intra-block wiring length w is calculated using the above-described formula (1), and this is added to the approximate wiring length calculated by the conventional method, so that a plurality of cells belonging to the same block are connected. The approximate wiring length of a net can be calculated more accurately than before.
[0072]
Next, a third embodiment of the present invention will be described.
In this third embodiment, when a block is cut in the mini-cut method, it is determined how much the wiring length increases or decreases when the cells included in the block are arranged in which divided block. The prediction is based on the wiring information.
[0073]
FIG. 16 is a schematic diagram for explaining the method of the third embodiment.
This figure shows a case where the block 302 to which the cell Cell2 connected to the net net2 belongs is cut by the cut line 304 in the integrated circuit 300. In this case, by cutting the block 302 in the vertical direction by the cut line 304, the block 302 is divided into two divided blocks 302L and 302R shown in FIG.
[0074]
At this time, the increase / decrease in the wiring length when the cell Cell2 is arranged in the two divided blocks 302L and 302R is predicted based on the schematic wiring information. In this case, if the cell Cell2 is arranged toward the divided block 302L, it is predicted that the approximate wiring length will decrease.
[0075]
FIGS. 17 to 20 show schematic wirings when cells belonging to a block (hereinafter referred to as source cells) are arranged in which divided block when the block is cut in the vertical direction by a cut line. It is a figure explaining the method of estimating whether length increases. A cell connected to the source cell via the net is called a target cell.
[0076]
FIG. 20 shows that when the source cell 411 is wired with the target cell 421 belonging to the upper block, the approximate wiring length increases when the block 410 to which the source cell 411 belongs is cut in the vertical direction. It is a figure explaining the method to predict. The target cell 421 is a cell directly connected to the source cell 411.
[0077]
In this case, the block 420 to which the target cell 421 belongs has already been divided, and the target cell 421 belongs to one of the divided blocks 420R and 420L. Also, the source cell 411 is arranged in either the right divided block 410R or the left divided block 410L by cutting the block 410 in the vertical direction.
[0078]
If the wiring connected to the target cell 421 passes through not only the divided block to which the target cell 421 belongs, but also the other divided block, as shown in FIG. Divided block 41 0 The approximate wiring length does not increase regardless of whether it is moved to R or the left divided block 410L.
[0079]
On the other hand, when the wiring connected to the target cell 421 passes only within the divided block to which the target cell 421 belongs, as shown in FIGS. Is moved to the divided block opposite to the target cell 421, the approximate wiring length is increased by the length β.
[0080]
When the wiring pattern of the target cell 421 is other than those shown in FIGS. 9A, 9B, and 9C, the increase in the approximate wiring length is “0”.
Next, FIG. 18 is a diagram for explaining a method for predicting an increase in the approximate wiring length based on the wiring pattern of the source cell 411.
[0081]
As shown in the figure, when the wiring connected to the source cell 411 passes through only one of the right divided block 410R and the left divided block 410L, the divided block through which this wiring passes is shown. When moving to another divided block, the approximate wiring length increases by the length β. That is, in this case, it is necessary to newly extend the schematic wiring by the length β.
[0082]
In cases other than the above, the approximate wiring length does not increase even if the source cell 411 is moved toward any divided block. For example, when the schematic wiring of the source cell 411 passes through the entire block 410 in the horizontal direction, the schematic wiring length does not increase.
[0083]
Next, FIG. 19 illustrates a method for predicting an increase in the approximate wiring length when the source cell 411 belongs to the upper block and the target cell 421 is a lower target cell belonging to the lower block. FIG.
[0084]
At this time, the block 420 to which the target cell 421 belongs has not been divided yet. In this case, the schematic wiring pattern connected to the target cell 421 passes only one of the two divided blocks 421R and 421L generated when the block 420 is cut in the vertical direction in the future. If the pattern is such that, when the source cell 411 is moved to a divided block opposite to the divided block, the approximate wiring length increases by β. Except for such a case, the approximate wiring length does not increase.
[0085]
FIG. 20 is a diagram for explaining the prediction method of FIG. 19 in more detail.
As shown in FIG. 2A, before dividing the block 410 to which the source cell 411 belongs in the vertical direction, the schematic wiring connected to the source cell 411 extends downward in the vertical direction, and the lower target It is assumed that the schematic wiring connected to the cell 421 extends up and down in the vertical direction and right side in the horizontal direction.
[0086]
In this case, as shown in FIG. 4B, when the source cell 411 is moved toward the left divided block 410L, the approximate wiring length increases by the length β. On the other hand, as shown in FIG. 5C, when the source cell 411 is moved toward the right divided block 410R, the approximate wiring length does not increase.
[0087]
Further, as shown in FIG. 4D, before the block 410 to which the source cell 411 belongs is divided in the vertical direction, the schematic wiring connected to the source cell 411 extends to the lower side in the vertical direction and both sides in the horizontal direction. It is assumed that the schematic wiring connected to the lower target cell 421 extends up and down in the vertical direction and right side in the horizontal direction.
[0088]
In this case, as shown in FIG. 5E, when the source cell 411 is moved toward the left divided block 410L, the approximate wiring length increases by the length β. On the other hand, as shown in FIG. 5F, when the source cell 411 is moved toward the right divided block 410R, the approximate wiring length does not increase.
[0089]
As described above, when the block 410 to which the source cell 411 belongs is cut in the vertical direction, the source cell 411 is divided into either the divided block 411R or the divided block 411L based on the schematic wiring pattern information of the source cell 411 and the target cell 421. Although the method for predicting whether or not the approximate wiring length increases or does not increase when moving in the direction described above is basically the same when the source cell 411 and the target cell 421 are connected by the approximate wiring in the horizontal direction. It is possible to predict whether the wiring length will increase or not increase depending on the method.
[0090]
It is also possible to predict not only the case where the approximate wiring length is “increased” or “not increased” but also the case where the approximate wiring length is decreased. That is, in consideration of patterns other than those shown in FIGS. 17 to 20, if the position to move the source cell 411 is determined so that the distance between the source cell 411 and the target cell 421 is basically shortened. Good.
[0091]
Next, a fourth embodiment of the present invention will be described.
In the fourth embodiment, a net that does not comply with a pre-specified line length constraint is defined as a violation net, and when a block to which a cell connected to the violation net belongs is divided. Using the method of the third embodiment, the cell is moved toward the divided block where the approximate wiring length decreases (if the cell cannot be moved to the divided block where the approximate wiring length decreases, the approximate wiring length does not increase. The cell is moved as a fixed cell after the movement.
[0092]
Since the vibration net set as a fixed cell in this way is not handled as a cell to be moved when the mini-cut method is executed, the approximate wiring length of the violation net will not increase due to the execution of the mini-cut method. Absent. By applying the above processing to the cells connected to the vibration net before each mini cut method executed hierarchically, the approximate wiring length of the violation net is surely reduced. It becomes possible to finally eliminate the vibration net.
[0093]
Hereinafter, the integrated circuit 400 illustrated in FIG. 21 will be described as an example.
For the three nets net1, 2, and 3 in the integrated circuit 400, the wiring lengths of “60”, “60”, and “80” are designated in advance as line length constraints (designated wiring lengths). Shall. Therefore, the net net1 becomes a violation net when its logical wiring length exceeds “60”. Similarly, a violation net is established when “60” is exceeded for net net2 and “80” is exceeded for net net3. The logical wiring length corresponds to, for example, the schematic wiring length. The unit of the length of the logical wiring length and the approximate wiring length is, for example, the length of the grid interval.
[0094]
FIG. 22 is a diagram showing a configuration of a management table 450 that manages whether or not each net of the integrated circuit 400 is a violation net.
As shown in the figure, the management table 450 stores designated wiring lengths, logical wiring lengths, violation flags (critical flags), and critical flags (critical flags) corresponding to the nets 1, 2, and 3. Has been.
[0095]
The above-mentioned violation flag is set to “TRUE” when the corresponding net becomes a violation net. If it is not a vibration net, it is set to “FALSE”.
[0096]
In this embodiment, a net whose logical wiring length exceeds α% of the designated wiring length is defined as a critical net. As the value of α, for example, a value in the range of “70” to “80” is used. The critical flag is set to “TRUE” when the corresponding net is a critical net, and is set to “FALSE” when the net is not a critical net.
[0097]
Further, the net list and cell list shown in FIGS. 23 and 24 are created for the integrated circuit 400.
In the management table 450 shown in FIG. 22, the fact that the net net1 is a violation net is stored as a violation flag. Further, it is stored by a critical flag that the net net3 is a critical net. Further, the fact that the net net2 is neither a violation net nor a critical net is stored by a violation flag and a critical flag.
[0098]
FIG. 25 is a flowchart for explaining a method of executing the mini-cut method in the fourth embodiment.
First, the first object is extracted from net2cell and is substituted for variable net (S401).
[0099]
Subsequently, it is determined whether or not the variable net is “NULL” (S402). This determination is a process of determining whether or not the determination of the vibration net has been completed for all the nets connected to the net2cell.
[0100]
In step S402, it is determined by referring to the management table 450 whether the net set in the variable net is a violation net (S403).
[0101]
As a result of this determination, it is determined that the net net1 is a violation net.
If it is determined in the above step 403 that the net set in the variable net is a violation net (S403, yes), it belongs to the block that is connected to that net and is currently the cut target. After clustering (clustering) processing is performed in which the cells are moved toward the divided blocks where the approximate wiring length decreases and fixed (clustering), the cells to be clustered are set as fixed cells (S404). ).
[0102]
The fixed cell setting process is performed using, for example, a specific flag prepared for each cell. By the above processing, for example, when the block whose block ID is (2, 5) is the block to be cut, the processing of step S404 is performed on the cell Cell6, and the cell Cell6 It is moved toward the divided block 425L shown in FIG. 21, which is generated when cutting in the direction.
[0103]
Next, the next object is taken out from net2cell and substituted into variable net (S405), and the processes of steps S402 and S403 are performed again.
As a result, it is determined in step S403 that the net net2 is not a vibration net (S403, no), and then the process proceeds to step S405.
[0104]
In step S405, the net net3 is extracted from the net2cell, the net net3 is substituted into the variable net, and the process returns to step S402. Subsequently, in step 403, it is determined that the net net3 is not a vibration net (S403, no), and the process proceeds to step S405.
[0105]
In step S405, the object is not extracted from the net2cell, and “NULL” is set in the variable net. Then, the process returns to step S402 again, it is determined that the variable net is “NULL” (S402, yes), and the mini-cut method is executed in step 406.
[0106]
The mini-cut method is performed on cells other than fixed cells. Therefore, the cell Cell6 of the net 1 determined to be connected to the above-described vibration net is not moved because it is set as a fixed cell.
[0107]
Next, a fifth embodiment of the present invention will be described.
In the fifth embodiment, the handling of a stable net when executing the mini-cut method proposed by the applicant of the invention of the Japanese Patent Application Laid-Open No. 7-141415 previously filed by the present applicant is described above. Applies to the net.
[0108]
In the above-mentioned invention, a net that is cut before execution of the mini-cut method and that is also cut after execution of the mini-cut method is defined as a stable net, and all the nets connected to the stable net are defined. The cell is forcibly moved to one block to obtain the optimum arrangement of the cells. In addition, the cell thus moved is regarded as a fixed cell and is prohibited from being moved again by the execution of the mini-cut method.
[0109]
In the fifth embodiment, a net that is a critical net is preferentially selected from the stable nets, and all cells connected to the critical net are moved to one block.
[0110]
A critical net can be thought of as a reserve arm of a violation net. When a cell connected to the critical net is moved to the other block by executing the mini-cut method, its wiring length increases. There is a possibility of becoming a violation net. Therefore, for the net that has become a critical net, it is necessary to perform an operation for making the wiring length shorter by combining the net into one block. Further, it is known that the stable net has a high probability of being cut even after execution of the mini-cut method. Therefore, in the initial cell placement (initial solution) given before the mini-cut method, reducing the number of critical nets as stable nets as much as possible reduces the wiring length of critical nets. Is desirable.
[0111]
The fifth embodiment is basically based on the above idea.
FIG. 26 is a flowchart for explaining a process of making a critical net that is a stable net before each execution into a non-stable net when the mini-cut method is repeatedly executed. In this flowchart, when a critical net is detected, a table similar to the management table 450 shown in FIG. 21 is referred to.
[0112]
When the execution of the mini-cut method is completed, first, the moved flag (moved Flag) of all the cells in the integrated circuit is set to “0” (S501).
The moved flag is a flag individually provided for all cells in the integrated circuit, and is a flag indicating whether or not the corresponding cell has been moved once by execution of the mini-cut method. Then, it is set to “1” if it has been moved, and “0” if it has not been moved.
[0113]
Next, a net that has been registered as a stable net before execution of the mini-cut method and that has been cut after execution of the mini-cut method is selected as a stable net, and the net is selected as a stable net table. (S502).
[0114]
This stable net table is configured as shown in FIG. 13 of the above-mentioned specification of the invention, and the stable net is managed by a flag (stableNetTable [i] .Flag). Note that i is a net number. This flag is a flag for storing whether or not the corresponding stable net has been subjected to the processes of steps S505 to S507 described below.
[0115]
Subsequently, all the stable net table flags are cleared to “0” (S503).
That is, the fact that all stable nets are unprocessed is registered in the stable net table.
[0116]
Next, the following steps S505 to S507 are repeated until all the flags of the stable net table become “1”.
In step S505, a critical net is preferentially selected from the stable nets whose flag is “0” registered in the stable net table. If there are multiple critical nets, a critical net is selected at random from among them. If there is no more critical net, the remaining stable nets are selected at random (S505).
[0117]
In the next step S506, all the cells connected to the selected net are moved to one block. In this case, the selection of the block to be moved is determined by, for example, the algorithm shown in the flowchart of FIG. 10 or FIG. That is, for example, as shown in the flowchart of FIG. 10, the moved flags of all the cells connected to the selected net are checked, and if the moved flag of all the cells is “0”, which block is moved to Whether to do it is selected at random. On the other hand, if cells whose moved flag is “1” are gathered only in one block, the cells belonging to the other block are moved to that block.
[0118]
In the subsequent step S507, the stable net table flag is set to “1” for the stable net in which the cell has been moved. Also, the moved flag of all cells connected to the stable net is set to “1”.
[0119]
Thereby, since all cells of the stable net in which all the cells are moved to one block are handled as fixed cells, they are not moved in the processing of the subsequent steps S505 to S506. The situation where the process of the moved stable net becomes invalid can be prevented.
[0120]
The result of the processing shown in the flowchart of FIG. 26 described above is given to the mini-cut method as an initial solution (initial arrangement), and by executing the mini-cut method, it becomes easy to obtain a final solution in which the critical net is not cut. As a result, the wiring length of the critical net can be shortened.
[0121]
The first to fifth embodiments can be combined.
That is, the sixth embodiment, which combines the first, third and fourth embodiments, makes it possible to more accurately determine the approximate wiring length of the vibration net and to reduce the number of the vibration nets. Can do.
[0122]
Further, according to the seventh embodiment which combines the first, second, third and fourth embodiments, the approximate wiring length of the vibration net can be obtained more accurately than in the sixth embodiment. As it becomes possible, the number of violation nets can be reduced.
[0123]
Furthermore, the eighth embodiment combining the first, third, fourth and fifth embodiments makes it possible to more accurately determine the approximate wiring length of the vibration net and It is possible to reduce the number of the vibration nets by reducing the probability of changing to the vibration nets.
[0124]
Furthermore, according to the ninth embodiment that combines the first, second, third, fourth, and fifth embodiments, the approximate wiring length of the vibration net can be obtained more accurately than the eighth embodiment. As well as reducing the probability that a critical net will change to a violation net, thereby further reducing the number of violation nets.
[0125]
【The invention's effect】
As described above, according to the present invention, in the cell arrangement of an integrated circuit, it is possible to more accurately predict increase / decrease in the approximate wiring length of a net cell when moving to a divided block, and to specify It is possible to reduce the number of nets exceeding the specified wiring length. Therefore, it is possible to observe the wiring length restriction of each net. As a result, the delay due to wiring can be suppressed within a specified range, and the performance of the circuit can be improved.
[Brief description of the drawings]
FIG. 1 is a diagram (part 1) for explaining the principle of the present invention;
FIG. 2 is a diagram (part 2) for explaining the principle of the present invention;
FIG. 3 is a diagram (part 3) for explaining the principle of the present invention;
FIG. 4 is a diagram for explaining a method of obtaining a wiring length of a net connected to fixed cells in an integrated circuit.
FIG. 5 is a diagram showing a net list in the integrated circuit shown in FIG. 4;
6 is a diagram showing a cell list in the integrated circuit shown in FIG. 4; FIG.
7 is a diagram showing a configuration of a cell table in the integrated circuit shown in FIG. 4;
8 is a diagram showing the configuration of a block table that stores the value of the center coordinate of each block of the integrated circuit shown in FIG. 4;
FIG. 9 is a flowchart illustrating a process for obtaining the approximate wiring length of each net in the first embodiment.
FIG. 10 is a diagram showing a schematic wiring list created by the schematic wiring process of the flowchart of FIG. 9;
FIG. 11 is a diagram illustrating an example of an integrated circuit in which a plurality of cells connected to one net exist in a certain block.
12 is a diagram showing a net list of the integrated circuit shown in FIG. 11. FIG.
FIG. 13 is a diagram showing a cell list of the integrated circuit shown in FIG. 11;
14 is a configuration diagram of a cell table that manages to which block each cell of the integrated circuit shown in FIG. 11 belongs.
FIG. 15 is a flowchart illustrating a process for obtaining the approximate wiring length of each net in the second embodiment.
FIG. 16 is a schematic diagram for explaining a technique for predicting increase / decrease in wiring length based on wiring information of schematic wiring in the third embodiment.
FIG. 17 is a diagram for explaining a method for predicting whether a divided wiring block increases the approximate wiring length when cells belonging to the block are arranged in a vertical direction when the block is cut in the vertical direction. Part 1).
FIG. 18 is a diagram for explaining a method for predicting, when a block is cut in a vertical direction by a cut line, if a cell belonging to the block is arranged in which divided block, an approximate wiring length is increased. Part 2).
FIG. 19 is a diagram for explaining a method for predicting, when a block is cut in a vertical direction by a cut line, if a cell belonging to the block is arranged in which divided block, an approximate wiring length is increased. Part 3).
FIG. 20 is a diagram for explaining a method for predicting whether a divided wiring block increases the approximate wiring length when cells belonging to the block are arranged in a vertical direction when the block is cut in the vertical direction; Part 4).
FIG. 21 is a diagram showing a configuration of an integrated circuit used for explaining a fourth embodiment.
FIG. 22 is a diagram showing a configuration of a management table in which a vibration net and a critical net are registered.
FIG. 23 is a diagram showing a net list of the integrated circuit shown in FIG. 21;
FIG. 24 is a diagram showing a cell list of the integrated circuit shown in FIG. 21;
FIG. 25 is a flowchart for explaining processing for handling a vibration net as a fixed cell in the fourth embodiment;
FIG. 26 is a flowchart for explaining movement processing for a critical net in the fifth embodiment;
FIG. 27 is a flowchart illustrating a mini-cut method.
FIG. 28 is a diagram for explaining a cell moving operation method by a mini-cut method;
FIG. 29 is a diagram showing general schematic wiring data of an integrated circuit in the mini-cut method.
[Explanation of symbols]
41, 51, 61 Outline wiring means
42, 52, 62 First wiring length calculation means
53, 63 Violation net detection means
54 Wiring length increase / decrease prediction means
55 Mini-cut method execution means
63 Critical net detection means
64 Stable net detection means
65 cell moving means

Claims (3)

集積回路にカットラインを設定し、該カットラインにより切断される配線数であるカット数が最小となるように該カットラインによって分割された領域間でセルを移動する操作を階層的に繰り返しながら該集積回路を構成するセルの初期配置を決定する集積回路の初期配置決定装置において、
各セルの端子が各セルが属するブロックの中心に位置するものと仮定して、各ネットにつながっているセル間を配線する概略配線手段と、
上記概略配線手段によって得られた概略配線情報を基に、各ネットの概略配線長(論理配線長)を求める配線長算出手段と、
上記配線長算出手段によって算出された各ネットの概略配線長を基に、その現在の概略配線長が予め制約された配線長を越えているネットをヴァイオレーションネットとして検出するヴァイオレーションネット検出手段と、
上記ヴァイオレーションネット検出手段によって検出されたヴァイオレーションネットに属するブロックカットラインによって分割される際に、上記概略配線手段によって得られた概略配線情報を基に、そのブロックに属しているヴァイオレーションネットにつながっているセルを、該カットラインに対していずれの側にある分割ブロックに移動すれば、該ヴァイオレーションネットの概略配線長が減少するかを予測する配線長増減予測手段と、
上記配線長増減予測手段によってその配線長が減少または増加しないと予測された分割ブロックの方に、上記ヴァイオレーションネットにつながっているセルを移動させた後、該セルを固定セルに設定し、その後、上記ブロックに対してミニカット法を実行するミニカット法実行手段と
を備えたことを特徴とする集積回路の初期配置決定装置。
While setting up a cut line in the integrated circuit and hierarchically repeating the operation of moving cells between the areas divided by the cut line so that the number of cuts, which is the number of wires cut by the cut line, is minimized, In an integrated circuit initial arrangement determining apparatus for determining an initial arrangement of cells constituting an integrated circuit,
Assuming that the terminal of each cell is located at the center of the block to which each cell belongs, schematic wiring means for wiring between cells connected to each net,
Based on the schematic wiring information obtained by the schematic routing means, a wiring length calculating means for calculating a schematic wiring length (logical wiring length) of each net;
Based on the approximate wiring length of each net calculated by the wiring length calculation means, a violation net detecting means for detecting a net whose current approximate wiring length exceeds a preliminarily restricted wiring length as a violation net; ,
When blocks belonging to Vaio configuration nets detected by the Vaio Configuration net detecting means is divided by the cut line, based on the general routing information obtained by the general routing unit, Vaio configuration nets belonging to the block Wiring length increase / decrease predicting means for predicting whether the approximate wiring length of the violation net decreases if the cell connected to is moved to the divided block on which side of the cut line,
After moving the cell connected to the violation net toward the divided block where the wiring length is predicted not to decrease or increase by the wiring length increase / decrease prediction means, set the cell as a fixed cell, and then Mini cut method execution means for executing the mini cut method on the block ;
An initial arrangement determining device for an integrated circuit, comprising:
さらに、上記配線長算出手段によって算出された各ネットの概略配線長を基に、その現在の概略配線長が予め制約された配線長のα%を越えているネットをクリティカルネットとして検出するクリティカルネット検出手段と、
ミニカット法の実行開始前にカットラインによりカットされていると共に、該実行開始後にも該カットラインによりカットされているネットをステーブルネットとして検出するステーブルネット検出手段と、
上記クリティカルネット検出手段の検出結果と上記ステーブルネット検出手段の検出結果とを基に、ステーブルネットとなっており、かつクリティカルネットともなっているネットにつながっている全てのセルを同一のブロックに移動させ、移動した全セルを固定セルに設定するセル移動手段と、
を備え、
上記ミニカット法実行手段は、上記セル移動手段の処理により得られたセル配置を初期配置としてミニカット法を実行することを特徴とする請求項1記載の集積回路の初期配置決定装置。
Further, based on the approximate wiring length of each net calculated by the wiring length calculating means, a critical net that detects a net whose current approximate wiring length exceeds α% of the preliminarily restricted wiring length as a critical net. Detection means;
A stable net detecting means that detects a net that has been cut by the cut line before the start of the mini-cut method and that has been cut by the cut line even after the start of the execution;
Based on the detection result of the critical net detection means and the detection result of the stable net detection means, all cells connected to the net that is a stable net and also a critical net are made into the same block. the moved, the cell moving means to set all the cells moved to the fixed cellular,
With
2. The integrated circuit initial arrangement determining apparatus according to claim 1, wherein the mini-cut method executing means executes the mini-cut method using the cell arrangement obtained by the processing of the cell moving means as an initial arrangement.
上記αは、70≦α≦80の範囲内の値であることを、特徴とする請求項記載の集積回路の初期配置決定装置。 3. The integrated circuit initial arrangement determining apparatus according to claim 2 , wherein α is a value in a range of 70 ≦ α ≦ 80.
JP2002027379A 2002-02-04 2002-02-04 Device for determining initial arrangement of integrated circuit Expired - Fee Related JP3629006B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002027379A JP3629006B2 (en) 2002-02-04 2002-02-04 Device for determining initial arrangement of integrated circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002027379A JP3629006B2 (en) 2002-02-04 2002-02-04 Device for determining initial arrangement of integrated circuit

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP21839495A Division JP3317382B2 (en) 1995-08-28 1995-08-28 Schematic wiring length calculation device and integrated circuit initial arrangement determination device

Publications (2)

Publication Number Publication Date
JP2002304432A JP2002304432A (en) 2002-10-18
JP3629006B2 true JP3629006B2 (en) 2005-03-16

Family

ID=19192406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002027379A Expired - Fee Related JP3629006B2 (en) 2002-02-04 2002-02-04 Device for determining initial arrangement of integrated circuit

Country Status (1)

Country Link
JP (1) JP3629006B2 (en)

Also Published As

Publication number Publication date
JP2002304432A (en) 2002-10-18

Similar Documents

Publication Publication Date Title
JP3219500B2 (en) Automatic wiring method
KR100201979B1 (en) Semiconductor circuit device
EP0145925B1 (en) Iterative method for establishing connections between nodes and the resulting product
JPH05205011A (en) Circuit board and its wiring pattern deciding method
US6857107B2 (en) LSI layout method and apparatus for cell arrangement in which timing is prioritized
CN113591427B (en) Incremental three-dimensional global wiring method considering unit movement and complex wiring constraint
CN111125993B (en) Wiring method meeting minimum Cut number constraint
CN116702694B (en) Printed circuit board two-end wiring method, medium and device based on ant colony algorithm
US7698679B2 (en) Method and apparatus for automatic routing yield optimization
CN111597768A (en) Method, apparatus and computer-readable storage medium for constructing a set of layout patterns
CN111723544A (en) Steiner tree construction method considering barrier internal wiring under X structure
JP3285134B2 (en) Cell placement method and device in integrated circuit
JP3629006B2 (en) Device for determining initial arrangement of integrated circuit
JP3695747B2 (en) Outline wiring length calculation device and integrated circuit initial arrangement determination device
US20030106036A1 (en) Wiring route determining apparatus, group determining apparatus, wiring route determining program storing medium and group determining program storing medium
JP3317382B2 (en) Schematic wiring length calculation device and integrated circuit initial arrangement determination device
US8171444B2 (en) Layout design method, apparatus and storage medium
JP5900540B2 (en) Layout design method and layout design support program
JP3068892B2 (en) Automatic wiring method
JP3548398B2 (en) Schematic route determination method and schematic route determination method
JP3544893B2 (en) LSI placement method and system considering delay constraint
JP2921454B2 (en) Wiring method of integrated circuit
JP2006294707A (en) Semiconductor integrated circuit and method of wiring the same
JP5035003B2 (en) Wiring layout apparatus, wiring layout method, and wiring layout program
Taghavi et al. Congestion minimization in modern placement circuits

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040803

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041209

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071217

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees