JP3954253B2 - Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 - Google Patents
Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 Download PDFInfo
- Publication number
- JP3954253B2 JP3954253B2 JP31072499A JP31072499A JP3954253B2 JP 3954253 B2 JP3954253 B2 JP 3954253B2 JP 31072499 A JP31072499 A JP 31072499A JP 31072499 A JP31072499 A JP 31072499A JP 3954253 B2 JP3954253 B2 JP 3954253B2
- Authority
- JP
- Japan
- Prior art keywords
- lsi
- block
- floor plan
- value
- parent
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【発明の属する技術分野】
本発明は、LSIのフロアプランを決定するLSIフロアプラン決定装置及び方法と、その装置の実現に用いられるプログラムを記録したプログラム記録媒体とに関し、特に、固定形状を持つLSIブロックについても、その配置位置を指定できるようになるLSIのフロアプランを決定できるようにするLSIフロアプラン決定装置及び方法と、その装置の実現に用いられるプログラムを記録したプログラム記録媒体とに関する。
【0002】
最近の回路技術の進歩に伴って、LSI(特にVLSI)の集積度の向上と回路規模の増大には目覚ましいものがある。集積度の向上、回路規模の増大に伴い、1つのLSIチップに含まれるブロックやRAMの個数が増大し、人手でフロアプランをレイアウトすると必ずしも最適なレイアウトが求まらず、しかも時間がかかる。そこで、最適なフロアプランを短い処理時間で求め、そのTATを上上げていく技術の構築が叫ばれている。
【0003】
【従来の技術】
LSIを自動レイアウトする場合、先ず最初に、LSIの持つ機能などを分割して、それを実現するためのチップ面積を求め、それらのチップ面積に応じて、LSIチップを複数の四角形の領域に分割することでLSIのフロアプランを決定するという処理を行う。
【0004】
このLSIのフロアプランの決定方法として、slicing treeによるフロアプランの最適化方法が広く用いられている。
【0005】
slicing treeによるフロアプランでは、階層的に繰り返し分割を行って、個々のLSIブロックの四角形の形状とその位置とを求めることになる。この階層構造は、Polish expressionという文字列で表現されることになる。
【0006】
例えば、図22(a)に示すフロアプランは、縦に分割するカットラインを「*」、横に分割するカットラインを「+」で表すならば、図22(b)に示すように、
16+35*2+74+**
というPolish expressionで表現されることになる。ここで、この「*」や「+」はオペレータ(operator)と呼ばれ、数字の部分はオペランド(operand )と呼ばれている。
【0007】
slicing treeによるフロアプランでは、このPolish expressionを変形することによりslicing treeのツリー構造を変形することで最適化を行う。
【0008】
最適化のアルゴリズムとしては、例えば、Simulated Annealing(以下、SAと略記する)が用いられる。
【0009】
このSAでは、図23に示すように、Polish expressionの初期解S0 と初期温度T0 とを設定し、温度が規定の終了温度Tx に到達するまでの間、設定された各温度Tにおいて、Polish expressionにオペレーションを施すことで、Polish expressionをSからS’に変形することを想定して、そのときのSのコストCost(S) とS’のコストCost(S')とを算出し、それから、
min(1,e-[Cost(S')-Cost(S)]/T )
を算出して、その値が0〜1の間で発生するランダム値よりも大きいときにはSをS’に変形し、小さいときには変形しないことを繰り返していって、その繰り返し回数が規定回数MaxCountに到達するときに、温度TをTx に向けて減少させていくことで、Polish expressionの最適解を求めていくという方法である。
【0010】
Polish expressionの変形のオペレーションとしては、Polish expressionの持つ2つの隣接するオペランドを交換するとか、Polish expressionの中からある部分を取り出して、そこに含まれるオペレータの補集合(「*」→「+」、「+」→「*」に変換する)を取るといったものが用意されている。
【0011】
SAでは、「Cost(S')<Cost(S) 」のときには、
e-[Cost(S')-Cost(S)]/T >1
となるので、
min(1,e-[Cost(S')-Cost(S)]/T )=1
となり、これから、0〜1の間で発生するランダム値よりも必ず大きくなることで、SはS’に必ず変形されることになる。すなわち、コストが小さくなる(高い評価値になる)ときには、SはS’に必ず変形されることになる。
【0012】
これに対して、「Cost(S')>Cost(S) 」のときには、
e-[Cost(S')-Cost(S)]/T =m<1
但し、mは温度Tが高いほど1に近づく
となるので、
min(1,e-[Cost(S')-Cost(S)]/T )<1
となり、これから、0〜1の間で発生するランダム値に応じて、SはS’に変形されたり変形されなかったりする。このとき、温度が高いときほど、SはS’に変形される確率が高くなる。
【0013】
すなわち、SAでは、温度が高い初期の状態にあるときには、コストが悪くなっても、SはS’に変形されていくことがある。このことにより、初期解にとらわれることがなくなり、他の最適化のアルゴリズムに比べて、よりよい解が得られる可能性がある。
【0014】
【発明が解決しようとする課題】
従来技術に従うslicing treeによるLSIのフロアプランでは、Polish expressionの規定する分割形態に従い、各LSIブロックの面積に応じて最終的なカットラインを線引きするというように、各LSIブロックの面積だけを考慮して分割を行っており、その形状については考慮していないことから、形状の規定されたLSIブロックを配置する必要がある場合に、それらのLSIブロックの配置が可能となるフロアプランを生成できないという問題点がある。
【0015】
すなわち、LSIチップには固定形状のRAMなどを実装することがあるが、従来技術に従うslicing treeによるLSIのフロアプランでは、LSIブロックの形状については考慮していないことから、RAMなどのような固定形状のLSIブロックを配置する必要がある場合に、それらのLSIブロックの配置が可能となるフロアプランを生成できないという問題点がある。
【0016】
本発明はかかる事情を鑑みてなされたものであって、固定形状を持つLSIブロックについても、その配置位置を指定できるようになるLSIのフロアプランを決定できるようにする新たなLSIフロアプラン決定装置及び方法の提供と、その装置の実現に用いられるプログラムを記録した新たなプログラム記録媒体の提供とを目的とする。
【0017】
【課題を解決するための手段】
図1に本発明の原理構成を図示する。
【0018】
図中、1は本発明を具備するLSIフロアプラン決定装置であって、固定形状を持つLSIブロックについても、その配置位置を指定できるようになるLSIのフロアプランを決定するものである。
【0019】
本発明のLSIフロアプラン決定装置1は、ブロック情報管理手段10と、ネットリスト管理手段11と、実行手段12と、割付手段13と、決定手段14とを備える。
【0020】
このブロック情報管理手段10は、フロアプランの処理対象となるLSIブロックのIDに対応付けて、そのLSIブロックの面積と、そのLSIブロックが固定形状を有するのか有しないかの情報と、そのLSIブロック内に配線されるネット数などの情報を管理する。ネットリスト管理手段11は、複数のLSIブロックに接続されるネットのIDに対応付けて、そのネットに接続されるLSIブロックのIDを管理する。
【0021】
実行手段12は、固定形状のLSIブロックを省略する形に従いつつ、LSIのフロアプランとなるLSIブロックの配置関係をツリー構造で記述する配置関係記述文の初期解を入力あるいは生成する。
【0022】
割付手段13は、固定形状のLSIブロックに対して、それを内包する親となる非固定形状の親LSIブロックの初期値を割り付ける。
【0023】
決定手段14は、配置関係記述文などを操作し、その評価値を求めて、それに従って配置関係記述文などを変更するのか否かを決定することを繰り返していくことで、LSIのフロアプランを決定する。
【0024】
ここで、本発明のLSIフロアプラン決定装置1の持つ機能は具体的にはプログラムで実現されるものであり、このプログラムは、フロッピィディスクなどに格納されたり、サーバなどのディスクなどに格納され、それらから本発明のLSIフロアプラン決定装置1にインストールされてメモリ上で動作することで、本発明を実現することになる。
【0029】
このように構成される本発明のLSIフロアプラン決定装置1では、実行手段12は、固定形状のLSIブロックを省略する形に従いつつ、LSIのフロアプランとなるLSIブロックの配置関係をツリー構造で記述する配置関係記述文の初期解を入力あるいは生成し、これを受けて、割付手段13は、固定形状のLSIブロックに対して、それを内包する親となる非固定形状の親LSIブロックの初期値を割り付ける。
【0030】
これを受けて、決定手段14は、親LSIブロックを操作対象に含めつつ、配置関係記述文を操作し、その操作前の配置関係記述文の規定するフロアプランのコスト値と、その操作後の配置関係記述文の規定するフロアプランのコスト値とに基づいて、その操作についての評価値を求め、かつ、このコスト値の算出にあたって、親LSIブロックに係るコスト値については、その親LSIブロック自身の持つコスト値とその親LSIブロックが内包する固定形状のLSIブロックの持つコスト値との和に基づいてコスト値を求めることにより、その操作についての評価値を求めて、それに従って配置関係記述文及び/又は親LSIブロックを変更するのか否かを決定することを繰り返していくことで、LSIのフロアプランを決定する。
このとき、決定手段は、フロアプランのコスト値として、LSIブロック間を配線する各ネットの持つブロック間配線長が指定される配線長を越えるのか否かに応じて算出されるペナルティ値の総和を用いることがある。
また、決定手段は、フロアプランのコスト値として、各LSIブロックの持つブロック内配線長の総和と、LSIブロック間を配線する各ネットの持つブロック間配線長の総和との合計値を用いることがある。
また、決定手段は、フロアプランのコスト値として、各LSIブロックの持つブロック内配線長の総和と、LSIブロック間を配線する各ネットの持つブロック間配線長の総和と、該ブロック間配線長が指定される配線長を越えるのか否かに応じて算出されるペナルティ値の総和との合計値を用いることがある。
また、決定手段は、ブロック内配線長を算出するにあたって、LSIブロックの縦横の和とそのLSIブロック内に配線されるネット数との乗算値に応じた値を、各LSIブロックの持つブロック内配線長として算出することがある。
また、決定手段は、ブロック間配線長を算出するにあたって、ネットに接続されるLSIブロックの中心を完全に含む四角形の縦横の和を、LSIブロック間を配線する各ネットの持つブロック間配線長として算出することがあり、このとき、固定形状LSIブロックについては、ブロック中心を用いるのではなくて、実際の端子位置を用いて四角形を特定することがある。
【0031】
このようにして、本発明のLSIフロアプラン決定装置1によれば、固定形状を持つLSIブロックについては、固定形状を持たないLSIブロックにマージする形態で、LSIのフロアプランを決定できるようになる。
【0032】
これにより、固定形状を持つLSIブロックは、固定形状を持たないLSIブロックとマージされることになることで、その固定形状を保持できる可能性が高くなり、従って、固定形状を持つLSIブロックについても、その配置位置を指定できるようになるLSIのフロアプランを決定できるようになる。
【0039】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
【0040】
図2に、本発明のLSIフロアプラン決定装置1の一実施例を図示する。
【0041】
この実施例に従う本発明のLSIフロアプラン決定装置1は、ブロックテーブル20と、ネットリストテーブル21と、SAの最適化アルゴリズムに従ってLSIのフロアプランを決定するLSIフロアプラン決定プログラム22と、LSIフロアプラン決定プログラム22の処理に必要となる初期化処理を実行する初期化処理実行プログラム23とを備える。
【0042】
ここで、LSIフロアプラン決定プログラム22や初期化処理実行プログラム23は、計算機が読み取り可能な半導体メモリなどの適当な記録媒体に格納することができる。
【0043】
本発明の説明に先立って、本発明に関連するLSIフロアプランの決定処理(以下、本発明に関連する第1のLSIフロアプランの決定処理と称する)について説明する。
図3に、本発明に関連する第1のLSIフロアプランの決定処理で用いられるブロックテーブル2のテーブルデータの一例を図示し、図4に、本発明に関連する第1のLSIフロアプランの決定処理で用いられるネットリストテーブル21のテーブルデータの一例を図示する。
【0044】
図3に示すブロックテーブル20は、LSIフロアプラン決定プログラム22の処理対象となるLSIブロックのIDに対応付けて、そのLSIブロックの面積と、そのLSIブロック内に配線されるネット数と、そのLSIブロックが固定形状であるのか否か示すフラグ(固定形状フラグ)と、固定形状のLSIブロックについてはその大きさ(x,y)と、固定形状のLSIブロックについてはその姿勢となる回転コード(どういう向きで固定形状LSIブロックを配置するのかを指示するコード)とを管理する。
【0045】
一方、ネットリストテーブル21は、図4に示すように、複数のLSIブロックに接続されるネットのIDに対応付けて、そのネットに接続されるLSIブロックのIDを管理する。例えば、「1」というネットIDのネットに接続されるLSIブロックは、「1」と「3」と「6」と「7」というLSIブロックであるということを管理するのである。
【0046】
図5に、本発明に関連する第1のLSIフロアプランの決定処理を実現する初期化処理実行プログラム23の実行する処理フローの一例を図示し、図6及び図7に、この決定処理を実現するLSIフロアプラン決定プログラム22の実行する処理フローの一例を図示する。次に、これらの処理フローに従って、本発明に関連する第1のLSIフロアプランの決定処理について説明する。
【0047】
初期化処理実行プログラム23は、起動されると、図5の処理フローに示すように、先ず最初に、ステップ1で、ブロックテーブル20に格納される固定形状のLSIブロックを処理対象として、乱数を使って、それらの固定形状LSIブロックに割り付ける回転コードの初期値を生成して、ブロックテーブル20の対応する回転コードのエントリー域に書き込む。
【0048】
例えば、図3に示すように、「1」という固定形状LSIブロックに対しては、「1」という回転コードの初期値を割り付け、「5」という固定形状LSIブロックに対しては、「3」という回転コードの初期値を割り付けるのである。
【0049】
続いて、ステップ2で、ブロックテーブル20に格納されるLSIブロックのIDを用いて、乱数を使って、LSIフロアプランの初期解となるPolish expressionの初期解を生成する。
【0050】
例えば、図22(b)に示したような、
16+35*2+74+**
というPolish expressionの初期解を生成するのである。
【0051】
このようにして、初期化処理実行プログラム23は、起動されると、LSIフロアプランの初期解となるPolish expressionの初期解を生成するとともに、そのPolish expressionに記述される固定形状LSIブロックに対して、それの姿勢となる回転コードの初期値を割り付けるのである。
【0052】
この初期化処理実行プログラム23の実行する初期化処理を受けて、LSIフロアプラン決定プログラム22は、図6の処理フローに従って、最適なLSIのフロアプランの決定する。
【0053】
すなわち、LSIフロアプラン決定プログラム22は、起動されると、図6の処理フローに示すように、先ず最初に、ステップ1で、SAで定義される初期温度Tを設定する。続いて、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったのか否かを判断して、小さくなったことを判断するときには、Polish expressionの最適解が求まったことに対応して、処理を終了する。
【0054】
一方、温度Tが規定の終了温度Tx よりも大きいことを判断するときには、ステップ3に進んで、カウンタの値Cを0にセットする。続いて、ステップ4で、カウンタ値Cが規定の最大値を越えたのか否かを判断して、越えていないことを判断するときには、ステップ5に進んで、Polish expressionあるいは固定形状LSIブロックに割り付けられる回転コードに対してオペレーションを施す。
【0055】
例えば、図7の処理フローに示すように、0,1,2の値を取る乱数を発生して、その乱数値が0を取るときには、Polish expressionの持つ隣接する2つのオペランド(どのオペランドを選択するのかについては別途乱数などを使って決定する)を交換し、その乱数値が1を取るときには、Polish expressionの持つある部分のオペレータ(どの部分を処理するのかについては別途乱数などを使って決定する)の補集合を取り、その乱数値が2を取るときには、固定形状LSIブロック(どの固定形状LSIブロックを選択するのかについては別途乱数などを使って決定する)に割り付けられる回転コードを変更(どの値に変更するのかについては別途乱数などを使って決定する)するというオペレーションを施すのである。
【0056】
ここで、オペランドを交換する処理や、オペレータの補集合を取る処理や、回転コードを変更する処理は、それぞれその処理を行う関数が用意されていて、それを呼び出すことで実行される。
【0057】
また、図7の処理フローでは、オペランドを交換するか、オペレータの補集合を取るか、回転コードを変更するというオペレーションを施しているが、オペランドを交換するとともに回転コードを変更したり、オペレータの補集合を取るとともに回転コードを変更するといったようなオペレーションを施すことも可能である。
【0058】
続いて、ステップ6で、そのステップ5での操作により変形されたPolish expressionの規定するLSIフロアプランで、固定形状LSIブロックの配置が可能であるのか否かを判断(大きさと回転コードの指定する姿勢とで判断する)して、その配置が不可能であることを判断するときには、ステップ5に戻っていくことで、Polish expressionあるいは固定形状LSIブロックに割り付けられる回転コードに対して次のオペレーションを施していく。
【0059】
すなわち、LSIブロックの面積だけを考慮する従来技術と異なって、本発明に関連する第1のLSIフロアプランの決定処理では、固定形状LSIブロックに対して、その姿勢となる回転コードを割り付ける構成を採っているので、Polish expressionの規定するLSIフロアプランでは、固定形状LSIブロックの配置が不可能となることが起こる。これから、オペレーションを施すことでPolish expressionを変形すると、固定形状LSIブロックの配置が可能であるのか否かを判断して、配置が不可能であると判断するときには、そのPolish expressionについては採用せずに、ステップ5に戻って、次のPolish expressionを生成していくように処理するのである。
【0060】
一方、ステップ6で、固定形状LSIブロックの配置が可能であることを判断するときには、ステップ7に進んで、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出し、それから、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定する。
【0061】
このコストとして、例えば、各LSIブロックの持つブロック内配線長の総和と、LSIブロック間を配線する各ネットの持つブロック間配線長の総和との合計値で定義される配線コストを用いることが可能である。
【0062】
この各LSIブロックの持つブロック内配線長の総和として定義される配線コスト(COST1)は、例えば、
COST1=Σhalf-perimeter-intra-block(i) ×p×block-intra-net(i)
の式に従って算出する。
【0063】
ここで、「half-perimeter-intra-block(i) 」はLSIブロックiの内部に配線される1つのネットの配線長、pは重み、「block-intra-net(i)」はLSIブロックiの内部に配線されるネットの本数(ブロックテーブル20に登録されるブロック内ネット本数)である。
【0064】
「half-perimeter-intra-block(i) 」は、例えば、図8(a)に示すように、Polish expressionの規定するLSIフロアプランで配置されるLSIブロックiの持つ縦の長さと横の長さとの合計値で算出する。言うまでもなく、固定形状LSIブロックについては、ブロックテーブル20に登録される縦の長さと横の長さとの合計値となる。
【0065】
一方、LSIブロック間を配線する各ネットの持つブロック間配線長の総和として定義される配線コスト(COST2)は、例えば、
COST2=Σhalf-perimeter-inter-block(j)
の式に従って算出する。
【0066】
ここで、「half-perimeter-inter-block(j) 」はネットjの配線長であって、例えば、図8(b)に示すように、ネットjと接続されているLSIブロックの中心を完全に含む四角形の持つ縦の長さと横の長さとの合計値で算出する。このとき、ネットjが固定形状LSIブロックの端子と接続される場合には、LSIブロックの中心に代えて、その実際の端子位置を使って上記の四角形を決定していくことが好ましい。なお、各ネットがどのLSIブロックと接続されているのかについては、ネットリストテーブル21を参照することで入手する。
【0067】
更に、配線コストとして、上述した配線コスト(COST1)と配線コスト(COST2)との合計値に加えて、「half-perimeter-inter-block(j) 」で求めたネットjの配線長がユーザの指定する「net-length(j) 」を越えていたら1、越えていなかったら0を割り当てることで定義されるペナルティ値の総和
COST3=Σlength-violation(j) ×q
但し、qは重み
を加えることも可能である。
【0068】
すなわち、ユーザと対話することで、図9に示すような「net-length(j) 」を管理するネットテーブルを作成して、「half-perimeter-inter-block(j) 」で求めたネットjの配線長がこの「net-length(j) 」を越えていたら1、越えていなかったら0を割り当てることで定義されるペナルティ値の総和を配線コストに加えることも可能である。
【0069】
このペナルティ値の総和として定義される配線コスト(COST3)を用いると、タイミングがクリティカルなネットが、指定された配線長に入る場合に高いコストが与えられることで、できるだけ指定された配線長に入るようにと、LSIのフロアプランの最適化が制御されることになる。
【0070】
ここで、ブロック内配線長の総和で定義される配線コスト(COST1)と、ブロック間配線長の総和で定義される配線コスト(COST2)と、ペナルティ値の総和として定義される配線コスト(COST3)との合計値を最終的な配線コストとして用いるではなくて、ペナルティ値の総和として定義される配線コスト(COST3)のみを最終的な配線コストとして用いることも可能である。
【0071】
図6の処理フローの説明に戻るならば、ステップ7で、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出し、それから、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定すると、続いて、ステップ8で、0〜1の間に入る乱数値を発生する。
【0072】
続いて、ステップ9で、その発生した乱数値がステップ7で決定したmin 値よりも小さいのか否かを判断して、小さいことを判断するときには、ステップ10に進んで、オペレーションを施した後のPolish expression(回転コード)を新たなPolish expression(回転コード)とすることで、Polish expression(回転コード)を変更し、一方、大きいことを判断するときには、ステップ10の処理を行うことなく、オペレーションを施す前のPolish expression(回転コード)を有効とすることで、Polish expression(回転コード)を変更しないように処理する。
【0073】
続いて、ステップ11で、カウンタ値Cの値を1つインクリメントしてから、ステップ4に戻っていく。
【0074】
ステップ4ないしステップ11の処理を繰り返していくことで、設定される温度TでPolish expressionの変更を繰り返していくときに、ステップ4で、その繰り返し処理を所定の回数分行ったことを判断すると、ステップ12に進んで、温度Tを所定の温度だけ低くして、ステップ2に戻っていくことで、前回よりも低い温度で、Polish expressionの変更を繰り返していく。
【0075】
そして、この繰り返し処理を実行していくときに、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったことを判断するときには、Polish expressionの最適解が求まったことを判断して、処理を終了する。
【0076】
このようにして、LSIフロアプラン決定プログラム22は、本発明に関連する第1のLSIフロアプランの決定処理を実現する場合には、固定形状のLSIブロックについては、その固定形状がくずれないように制御しつつ、その配置の姿勢も制御しながら、SAの最適化アルゴリズムに従って、LSIフロアプランを決定するように処理するのである。
【0077】
次に、本発明の実施例について説明する。
【0078】
この実施例では、図10に示すように、固定形状LSIブロック(図中の「1」と「5」)を、固定形状を持たないいずれかのLSIブロックに内包させつつ、その親となるLSIブロックについても操作対象としながらSAを実行することで、LSIのフロアプランを決定するように処理する。
【0079】
この実施例に従う場合、固定形状LSIブロックは、決定されたLSIフロアプランの中で、必ずしもその形状が保証される訳ではないが、固定形状を持たないいずれかのLSIブロックとマージされることになるので、そのマージされた大きな面積の中でその形状が保証される可能性は高く、従って、有効なLSIのフロアプランを決定できる可能性は極めて高い。
【0080】
図11に、この実施例で用いられるブロックテーブル20のテーブルデータの一実施例を図示する。
【0081】
この実施例に従うブロックテーブル20は、LSIフロアプラン決定プログラム22の処理対象となるLSIブロックのIDに対応付けて、そのLSIブロックの面積と、そのLSIブロック内に配線されるネット数と、そのLSIブロックが固定形状であるのか否か示すフラグ(固定形状フラグ)と、固定形状のLSIブロックについてはそれが所属する親LSIブロックのIDとを管理する。
【0082】
図12に、この実施例に従う場合の初期化処理実行プログラム23の実行する処理フローの一実施例、図13及び図14に、この実施例に従う場合のLSIフロアプラン決定プログラム22の実行する処理フローの一実施例を図示する。次に、これらの処理フローに従って、この実施例によるLSIフロアプランの決定処理について詳細に説明する。
【0083】
初期化処理実行プログラム23は、起動されると、図12の処理フローに示すように、先ず最初に、ステップ1で、ブロックテーブル20に格納される固定形状のLSIブロックを処理対象として、乱数を使って、それらの固定形状LSIブロックに割り付ける親LSIブロックのIDの初期値(重複しないようにすることが好ましい)を生成して、ブロックテーブル20の対応する親LSIブロックIDのエントリー域に書き込む。
【0084】
例えば、図11に示すように、「1」という固定形状LSIブロックに対しては、「6」という親LSIブロックIDの初期値を割り付け、「5」という固定形状LSIブロックに対しては、「3」という親LSIブロックIDの初期値を割り付けるのである。
【0085】
続いて、ステップ2で、固定形状LSIブロックを処理対象から外しつつ、ブロックテーブル20に格納されるLSIブロックのIDを用いて、乱数を使って、LSIフロアプランの初期解となるPolish expressionの初期解を生成する。例えば、図10に示したLSIフロアプランを規定する
632+*74+*
というPolish expressionの初期解を生成するのである。
【0086】
このとき、「6」というLSIブロックの面積は、「6」というLSIブロック自身の面積と、その配下となる「1」という固定形状LSIブロックの面積との合計値となる。また、「3」というLSIブロックの面積は、「3」というLSIブロック自身の面積と、その配下となる「5」という固定形状LSIブロックの面積の合計値となる。
【0087】
更に、「6」というLSIブロックの持つブロック内ネット本数は、「6」というLSIブロック自身の持つブロック内ネット本数と、その配下となる「1」という固定形状LSIブロックの持つブロック内ネット本数と、「6」と「1」という固定形状LSIブロックとの間を接続するネット本数との合計値となる。また、「3」というLSIブロックの持つブロック内ネット本数は、「3」というLSIブロック自身の持つブロック内ネット本数と、その配下となる「5」という固定形状LSIブロックの持つブロック内ネット本数と、「3」と「5」という固定形状LSIブロックとの間を接続するネット本数との合計値となる。
【0088】
このようにして、初期化処理実行プログラム23は、起動されると、固定形状LSIブロックに対して、それを包含する親LSIブロックのIDを割り付けるとともに、それらの固定形状LSIブロックを処理対象から外しつつ、LSIフロアプランの初期解となるPolish expressionの初期解を生成するのである。
【0089】
この初期化処理実行プログラム23の実行する初期化処理を受けて、LSIフロアプラン決定プログラム22は、図13の処理フローに従って、最適なLSIフロアプランの決定する。
【0090】
すなわち、LSIフロアプラン決定プログラム22は、起動されると、図13の処理フローに示すように、先ず最初に、ステップ1で、SAで定義される初期温度Tを設定する。続いて、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったのか否かを判断して、小さくなったことを判断するときには、Polish expressionの最適解が求まったことに対応して、処理を終了する。
【0091】
一方、温度Tが規定の終了温度Tx よりも大きいことを判断するときには、ステップ3に進んで、カウンタの値Cを0にセットする。続いて、ステップ4で、カウンタ値Cが規定の最大値を越えたのか否かを判断して、越えていないことを判断するときには、ステップ5に進んで、Polish expressionあるいは固定形状LSIブロックが所属する親LSIブロックのIDに対してオペレーションを施す。
【0092】
例えば、図14の処理フローに示すように、0,1,2の値を取る乱数を発生して、その乱数値が0を取るときには、Polish expressionの持つ隣接する2つのオペランド(どのオペランドを選択するのかについては別途乱数などを使って決定する)を交換し、その乱数値が1を取るときには、Polish expressionの持つある部分のオペレータ(どの部分を処理するのかについては別途乱数などを使って決定する)の補集合を取り、その乱数値が2を取るときには、固定形状LSIブロック(どの固定形状LSIブロックを選択するのかについては別途乱数などを使って決定する)に割り付けられる親LSIブロックのID(どの値に変更するのかについては別途乱数などを使って決定する)を変更するというオペレーションを施すのである。
【0093】
ここで、親LSIブロックのIDが変更されるときには、それまで親であったLSIブロックの面積/ブロック内ネット本数と、新たに親となったLSIブロックの面積/ブロック内ネット本数とが変更されることになる。
【0094】
また、オペランドを交換する処理や、オペレータの補集合を取る処理や、親LSIブロックのIDを変更する処理は、それぞれその処理を行う関数が用意されていて、それを呼び出すことで実行される。
【0095】
また、図14の処理フローでは、オペランドを交換するか、オペレータの補集合を取るか、親LSIブロックのIDを変更するというオペレーションを施しているが、オペランドを交換するとともに親LSIブロックのIDを変更したり、オペレータの補集合を取るとともに親LSIブロックのIDを変更するといったようなオペレーションを施すことも可能である。
【0096】
続いて、ステップ6で、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出し、それから、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定する。
【0097】
ここで、このとき用いるコストとしては、例えば、上述したように、LSIブロック内配線長の総和で定義される配線コスト(COST1)と、LSIブロック間配線長の総和で定義される配線コスト(COST2)との合計値を用いる。
【0098】
続いて、ステップ7で、0〜1の間に入る乱数値を発生し、続くステップ8で、その発生した乱数値が決定したmin 値よりも小さいのか否かを判断する。
【0099】
この判断処理により、発生した乱数値が決定したmin 値よりも小さいことを判断するときには、ステップ9に進んで、オペレーションを施した後のPolish expression(親LSIブロックID)を新たなPolish expression(親LSIブロックID)とすることで、Polish expression(親LSIブロックID)を変更し、一方、大きいことを判断するときには、ステップ9の処理を行うことなく、オペレーションを施す前のPolish expression(親LSIブロックID)を有効とすることで、Polish expression(親LSIブロックID)を変更しないように処理する。
【0100】
続いて、ステップ10で、カウンタ値Cの値を1つインクリメントしてから、ステップ4に戻っていく。
【0101】
ステップ4ないしステップ10の処理を繰り返していくことで、設定される温度TでPolish expressionの変更を繰り返していくときに、ステップ4で、その繰り返し処理を所定の回数分行ったことを判断すると、ステップ11に進んで、温度Tを所定の温度だけ低くして、ステップ2に戻っていくことで、前回よりも低い温度で、Polish expressionの変更を繰り返していく。
【0102】
そして、この繰り返し処理を実行していくときに、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったことを判断するときには、Polish expressionの最適解が求まったことを判断して、処理を終了する。
【0103】
このようにして、LSIフロアプラン決定プログラム22は、本発明を実現する場合には、固定形状のLSIブロックについては、固定形状を持たないLSIブロックにマージするように制御しつつ、SAの最適化アルゴリズムに従ってLSIフロアプランを決定するように処理するのである。
【0104】
次に、本発明に関連するLSIフロアプランの他の決定処理(以下、本発明に関連する第2のLSIフロアプランの決定処理と称する)について説明する。
【0105】
本発明に関連する第2のLSIフロアプランの決定処理では、図15に示すように、SAを実行するにあたって、固定形状LSIブロックの固定形状を考慮しない形でLSIのフロアプランを決定し、そのフロアプランのコストを算出するときに、固定形状LSIブロックがパッキングできることになるようにとカットラインをブレークして、その状態でコストを算出していくように処理している。
【0106】
これにより、本発明に関連する第2のLSIフロアプランの決定処理では、固定形状LSIブロックがその固定形状を保持したままパッキングされることに対して高いコストが与えられることで、固定形状LSIブロックができる限りその固定形状を保持したまま配置されることになるようにと、LSIのフロアプランの最適化が制御されることになる。
【0107】
図16に、本発明に関連する第2のLSIフロアプランの決定処理で用いられるブロックテーブル2のテーブルデータの一例を図示する。
【0108】
この図16に示すブロックテーブル20は、LSIフロアプラン決定プログラム22の処理対象となるLSIブロックのIDに対応付けて、そのLSIブロックの面積と、そのLSIブロック内に配線されるネット数と、そのLSIブロックが固定形状であるのか否か示すフラグ(固定形状フラグ)と、固定形状のLSIブロックについてはその大きさ(x,y)と、固定形状のLSIブロックについてはその姿勢となる回転コードと、固定形状のLSIブロックについてはパッキング優先順位と、固定形状のLSIブロックについてはパッキング優先方向とを管理する。
【0109】
このパッキング優先順位は、どういう順番に従って、固定形状LSIブロックのパッキングを実行していくのかを規定している。図16の例で説明するならば、先ず最初に、「1」という固定形状LSIブロックについてパッキングを行い、次に、「5」という固定形状LSIブロックについてパッキングを行うことになる。
【0110】
一方、このパッキング優先方向は、どういう方向を優先してパッキングを実行していくのかを規定している。図16の例で説明するならば、「1」という固定形状LSIブロックについては、「ULRD(上方向→左方向→右方向→下方向)」という順に方向を優先させてパッキングを行い、「5」という固定形状LSIブロックについては、「DLRU(下方向→左方向→右方向→上方向)」という順に方向を優先させてパッキングを行うことになる。
【0111】
図17に、本発明に関連する第2のLSIフロアプランの決定処理を実現する初期化処理実行プログラム23の実行する処理フローの一例を図示し、図18ないし図20に、この決定処理を実現するLSIフロアプラン決定プログラム22の実行する処理フローの一例を図示する。次に、これらの処理フローに従って、本発明に関連する第2のLSIフロアプランの決定処理について説明する。
【0112】
初期化処理実行プログラム23は、起動されると、図17の処理フローに示すように、先ず最初に、ステップ1で、ブロックテーブル20に格納される固定形状のLSIブロックを処理対象として、乱数を使って、それらの固定形状LSIブロックに割り付ける回転コードの初期値を生成して、ブロックテーブル20の対応する回転コードのエントリー域に書き込む。
【0113】
例えば、図16に示すように、「1」という固定形状LSIブロックに対しては、「1」という回転コードの初期値を割り付け、「5」という固定形状LSIブロックに対しては、「3」という回転コードの初期値を割り付けるのである。
【0114】
続いて、ステップ2で、ブロックテーブル20に格納される固定形状のLSIブロックを処理対象として、乱数を使って、それらの固定形状LSIブロックに割り付けるパッキング優先順位の初期値を生成して、ブロックテーブル20の対応するパッキング優先順位のエントリー域に書き込む。
【0115】
例えば、図16に示すように、「1」という固定形状LSIブロックに対しては、第1順位というパッキング優先順位の初期値を割り付け、「5」という固定形状LSIブロックに対しては、第2順位というパッキング優先順位の初期値を割り付けるのである。
【0116】
続いて、ステップ3で、ブロックテーブル20に格納される固定形状のLSIブロックを処理対象として、乱数を使って、それらの固定形状LSIブロックに割り付けるパッキング優先方向の初期値を生成して、ブロックテーブル20の対応するパッキング優先方向のエントリー域に書き込む。
【0117】
例えば、図16に示すように、「1」という固定形状LSIブロックに対しては、「ULRD」というパッキング優先方向の初期値を割り付け、「5」という固定形状LSIブロックに対しては、「DLRU」というパッキング優先方向の初期値を割り付けるのである。
【0118】
続いて、ステップ4で、ブロックテーブル20に格納されるLSIブロックのIDを用いて、乱数を使って、LSIフロアプランの初期解となるPolish expressionの初期解を生成する。
【0119】
例えば、図22(b)に示したような、
16+35*2+74+**
というPolish expressionの初期解を生成するのである。
【0120】
このようにして、初期化処理実行プログラム23は、起動されると、LSIフロアプランの初期解となるPolish expressionの初期解を生成するとともに、そのPolish expressionに記述される固定形状LSIブロックに対して、回転コード/パッキング優先順位/パッキング優先方向の初期値を割り付けるのである。
【0121】
この初期化処理実行プログラム23の実行する初期化処理を受けて、LSIフロアプラン決定プログラム22は、図18の処理フローに従って、最適なLSIのフロアプランを決定する。
【0122】
すなわち、LSIフロアプラン決定プログラム22は、起動されると、図18の処理フローに示すように、先ず最初に、ステップ1で、SAで定義される初期温度Tを設定する。続いて、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったのか否かを判断して、小さくなったことを判断するときには、Polish expressionの最適解が求まったことに対応して、処理を終了する。
【0123】
一方、温度Tが規定の終了温度Tx よりも大きいことを判断するときには、ステップ3に進んで、カウンタの値Cを0にセットする。続いて、ステップ4で、カウンタ値Cが規定の最大値を越えたのか否かを判断して、越えていないことを判断するときには、ステップ5に進んで、Polish expressionあるいは固定形状LSIブロックに割り付けられる回転コードやパッキング優先順位やパッキング優先方向に対してオペレーションを施す。
【0124】
例えば、図19の処理フローに示すように、0,1,2,3,4の値を取る乱数を発生して、その乱数値が0を取るときには、Polish expressionの持つ隣接する2つのオペランド(どのオペランドを選択するのかについては別途乱数などを使って決定する)を交換し、その乱数値が1を取るときには、Polish expressionの持つある部分のオペレータ(どの部分を処理するのかについては別途乱数などを使って決定する)の補集合を取り、その乱数値が2を取るときには、固定形状LSIブロック(どの固定形状LSIブロックを選択するのかについては別途乱数などを使って決定する)に割り付けられる回転コードを変更(どの値に変更するのかについては別途乱数などを使って決定する)し、その乱数値が3を取るときには、固定形状LSIブロック(どの固定形状LSIブロックを選択するのかについては別途乱数などを使って決定する)に割り付けられるパッキング優先順位を変更(どの値に変更するのかについては別途乱数などを使って決定する)し、その乱数値が4を取るときには、固定形状LSIブロック(どの固定形状LSIブロックを選択するのかについては別途乱数などを使って決定する)に割り付けられるパッキング優先方向を変更(どの値に変更するのかについては別途乱数などを使って決定する)するというオペレーションを施すのである。
【0125】
ここで、オペランドを交換する処理や、オペレータの補集合を取る処理や、回転コードを変更する処理や、パッキング優先順位を変更する処理や、パッキング優先方向を変更する処理は、それぞれその処理を行う関数が用意されていて、それを呼び出すことで実行される。
【0126】
また、図19の処理フローでは、オペランドを交換するか、オペレータの補集合を取るか、回転コードを変更するか、パッキング優先順位を変更するか、パッキング優先方向を変更するというオペレーションを施しているが、これらのオペレーションを組み合わせたものを施すことも可能である。
【0127】
続いて、ステップ6で、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出し、それから、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定する。
【0128】
ここで、このとき用いるコストとしては、例えば、上述したように、LSIブロック内配線長の総和で定義される配線コスト(COST1)と、LSIブロック間配線長の総和で定義される配線コスト(COST2)との合計値を用いる。
【0129】
このコストの算出にあたって、固定形状LSIブロックについては、オペレーションを施した後のPolish expressionの規定する領域にパッキングできるのか否かを判定して、パッキングできないときにはLSIブロックを区切るカットラインをブレークさせることでそのパッキングを実現して、その状態でコストを算出していくように処理する。
【0130】
すなわち、ステップ5で、Polish expressionにオペレーションを施した後、ステップ6に進むと、図20の処理フローに示すように、先ず最初に、ステップ60で、全ての固定形状LSIブロックを選択したのか否かを判断して、全ての固定形状LSIブロックを選択していないことを判断するときには、ステップ61に進んで、割り付けられるパッキング優先順位に従って、未選択の固定形状LSIブロックの中から優先順位の最も高いものを1つ選択する。
【0131】
続いて、ステップ62で、その選択した固定形状LSIブロックに割り付けられる回転コード及びパッキング優先方向に従って、オペレーションの施したPolish expressionの規定する領域に、その選択した固定形状LSIブロックをパッキングすることを試みる。
【0132】
続いて、ステップ63で、そのパッキング処理により固定形状LSIブロックがパッキングできたのか否かを判断して、パッキングできないことを判断するときには、ステップ64に進んで、パッキングができるまで、未ブレーク(break)のカットライン(LSIブロックを区画するライン)の内の最下位レベルのものをブレークさせていく。
【0133】
例えば、図15に示す例で説明するならば、「1」という固定形状LSIブロックがPolish expressionの規定する領域にパッキングできないときには、「6」という非固定形状のLSIブロックとの間を区切るカットライン▲1▼をブレークさせていくことで、「1」という固定形状LSIブロックのパッキングを実現するのである。また、「5」という固定形状LSIブロックがPolish expressionの規定する領域にパッキングできないときには、「3」という非固定形状のLSIブロックとの間を区切るカットライン▲2▼をブレークさせていくことで、「5」という固定形状LSIブロックのパッキングを実現するのである。
【0134】
ここで、最下位レベルのカットラインからブレークさせていくのは、Polish expressionの規定するLSIフロアプランの配置形態をできる限り崩さないようにすることに、その理由がある。
【0135】
そして、ステップ64の処理を終了すると、ステップ60に戻る。また、ステップ63でパッキングできたことを判断するときには、ステップ64の処理を行うことなく、そのままステップ60に戻る。
【0136】
一方、ステップ60で、全ての固定形状LSIブロックを選択したことを判断すると、ステップ65に進んで、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出する。
【0137】
そして、この後、図18の処理フローのステップ6では、上述したように、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定する処理を行う。
【0138】
ここで、図15の下段に示す図から分かるように、カットラインをブレークさせると、そのブレークさせたカットラインにより区切られるLSIブロックの形状が四角形でなくなることになるので、その非四角形のLSIブロックについては、例えば適当なアルゴリズムに従って四角形に変形することで、上述した配線コストのCOST1,2を求めたり、例えば非四角形の重心を求めて、その重心を上述した四角形の中心の代わりに用いることで、上述した配線コストのCOST2を求めることなどにより、配線コストを算出していくように処理することになる。
【0139】
図18の処理フローの説明に戻るならば、ステップ6で、オペレーションを施す前のPolish expressionの規定するLSIフロアプランのコストCost(S) と、オペレーションを施した後のPolish expressionの規定するLSIフロアプランのコストCost(S')とを算出し、それから、評価関数値
e-[Cost(S')-Cost(S)]/T
を算出して、
min(1,e-[Cost(S')-Cost(S)]/T )
で定義されるmin 値を決定すると、続いて、ステップ7で、0〜1の間に入る乱数値を発生する。
【0140】
続いて、ステップ8で、その発生した乱数値がステップ6で決定したmin 値よりも小さいのか否かを判断して、小さいことを判断するときには、ステップ9に進んで、オペレーションを施した後のPolish expression(回転コード/パッキング優先順位/パッキング優先方向)を新たなPolish expression(回転コード/パッキング優先順位/パッキング優先方向)とすることで、Polish expression(回転コード/パッキング優先順位/パッキング優先方向)を変更し、一方、大きいことを判断するときには、ステップ10の処理を行うことなく、オペレーションを施す前のPolish expression(回転コード/パッキング優先順位/パッキング優先方向)を有効とすることで、Polish expression(回転コード/パッキング優先順位/パッキング優先方向)を変更しないように処理する。
【0141】
続いて、ステップ10で、カウンタ値Cの値を1つインクリメントしてから、ステップ4に戻っていく。
【0142】
ステップ4ないしステップ10の処理を繰り返していくことで、設定される温度TでPolish expressionの変更を繰り返していくときに、ステップ4で、その繰り返し処理を所定の回数分行ったことを判断すると、ステップ11に進んで、温度Tを所定の温度だけ低くして、ステップ2に戻っていくことで、前回よりも低い温度で、Polish expressionの変更を繰り返していく。
【0143】
そして、この繰り返し処理を実行していくときに、ステップ2で、温度Tが規定の終了温度Tx よりも小さくなったことを判断するときには、Polish expressionの最適解が求まったことを判断して、処理を終了する。
【0144】
このようにして、本発明に関連する第2のLSIフロアプランの決定処理では、LSIフロアプラン決定プログラム22は、SAを実行するにあたって、固定形状LSIブロックの固定形状を考慮しない形でLSIのフロアプランを決定して、そのフロアプランのコストを算出するときに、固定形状LSIブロックがパッキングできることになるようにとカットラインをブレークさせて、その状態でコストを算出していく。
【0145】
これにより、本発明に関連する第2のLSIフロアプランの決定処理では、固定形状LSIブロックがその固定形状を保持したままパッキングされることに対して高いコストが与えられることで、固定形状LSIブロックができる限りその固定形状を保持したまま配置されることになるようにと、LSIのフロアプランの最適化が制御されることになる。
【0146】
この処理を実行していくあたって、LSIフロアプラン決定プログラム22は、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックに対して重点的にオペレーションを施していくことで、固定形状LSIブロックができる限りその固定形状を保持したまま配置されることになるようにと制御する構成を採ることがある。
【0147】
この構成を採る場合には、例えば、図21に示すように、第1回目として、0,1,2,3,4,5の値を取る乱数を発生して、その乱数値が0を取るときには、Polish expressionの持つ隣接する2つのオペランドを交換するというオペレーションを施し、その乱数値が1を取るときには、Polish expressionの持つある部分のオペレータの補集合を取るというオペレーションを施し、その乱数値が2を取るときには、固定形状LSIブロックに割り付けられる回転コードを変更するというオペレーションを施し、その乱数値が3を取るときには、固定形状LSIブロックに割り付けられるパッキング優先順位を変更するというオペレーションを施し、その乱数値が4を取るときには、固定形状LSIブロックに割り付けられるパッキング優先方向を変更するというオペレーションを施すとともに、その乱数値が5を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として設定する処理を行う。
【0148】
そして、第1回目の乱数発生で、乱数値5が発生した場合には、続いて、第2回目として、0,1,2,3,4の値を取る乱数を発生して、その乱数値が0を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として、Polish expressionの持つ隣接する2つのオペランドを交換するというオペレーションを施し、その乱数値が1を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として、Polish expressionの持つある部分のオペレータの補集合を取るというオペレーションを施し、その乱数値が2を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として、固定形状LSIブロックに割り付けられる回転コードを変更するというオペレーションを施し、その乱数値が3を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として、固定形状LSIブロックに割り付けられるパッキング優先順位を変更するというオペレーションを施し、その乱数値が4を取るときには、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックを処理対象として、固定形状LSIブロックに割り付けられるパッキング優先方向を変更するというオペレーションを施す処理を行う。
【0149】
この第1回目に発生する乱数によりオペレーションの施されるLSIブロックは、ブレークさせたカットラインよりも上位のツリーレベルに位置するLSIブロックと、下位のツリーレベルに位置するLSIブロックとの両方であるのに対して、この第2回目に発生する乱数によりオペレーションの施されるLSIブロックは、ブレークさせたカットラインよりも下位のツリーレベルに位置するLSIブロックのみである。
【0150】
これにより、LSIフロアプラン決定プログラム22は、ブレークさせたカットラインよりも下位のツリーレベルのLSIブロックに対して重点的にオペレーションを施していくことができるようになる。
【0151】
図示実施例に従って本発明を説明したが、これに限定されるものではない。例えば、実施例では、最適化のアルゴリズムとしてSAを用いる構成を採ったが、本発明は、その他の最適化アルゴリズムを用いる場合にも、そのまま適用できる。
【0152】
また、実施例では、Polish expressionの初期解を自動生成する構成を採ったが、ユーザにより作成されたPolish expressionの初期解を入力していくようにする構成を採ってもよい。
【0153】
【発明の効果】
以上説明したように、本発明によれば、固定形状を持つLSIブロックについては、固定形状を持たないLSIブロックにマージする形態で、LSIのフロアプランを決定できるようになる。
【0156】
これにより、固定形状を持つLSIブロックは、固定形状を持たないLSIブロックとマージされることになることで、その固定形状を保持できる可能性が高くなり、従って、固定形状を持つLSIブロックについても、その配置位置を指定できるようになるLSIのフロアプランを決定できるようになる。
【0159】
そして、本発明によれば、固定形状を持つLSIブロックの配置位置を指定できるようにするLSIのフロアプランを決定するときにあって、配線長がなるべく短くなる形態で、そのフロアプランを決定できるようになる。
【0160】
そして、本発明によれば、固定形状を持つLSIブロックの配置位置を指定できるようにするLSIのフロアプランを決定するときにあって、タイミングがクリティカルな配線については、その配線が指定された配線長に入る形態で、そのフロアプランを決定できるようになる。
【図面の簡単な説明】
【図1】 本発明の原理構成図である。
【図2】 本発明の一実施例である。
【図3】 ブロックテーブルの一例である。
【図4】 ネットリストテーブルの一例である。
【図5】 初期化処理実行プログラムの処理フローである。
【図6】 LSIフロアプラン決定プログラムの処理フローである。
【図7】 LSIフロアプラン決定プログラムの処理フローである。
【図8】 コスト計算の説明図である。
【図9】 ネットテーブルの説明図である。
【図10】 本発明の実施形態例の説明図である。
【図11】 ブロックテーブルの一実施例である。
【図12】 初期化処理実行プログラムの処理フローである。
【図13】 LSIフロアプラン決定プログラムの処理フローである。
【図14】 LSIフロアプラン決定プログラムの処理フローである。
【図15】 本発明に関連する発明の説明図である。
【図16】 ブロックテーブルの一例である。
【図17】 初期化処理実行プログラムの処理フローである。
【図18】 LSIフロアプラン決定プログラムの処理フローである。
【図19】 LSIフロアプラン決定プログラムの処理フローである。
【図20】 LSIフロアプラン決定プログラムの処理フローである。
【図21】 本発明に関連する発明の説明図である。
【図22】 Polish expressionの説明図である。
【図23】 Simulated Annealingの説明図である。
【符号の説明】
1 LSIフロアプラン決定装置
10 ブロック情報管理手段
11 ネットリスト管理手段
12 実行手段
13 割付手段
14 決定手段
Claims (9)
- 固定形状のLSIブロックを省略する形に従いつつ、LSIのフロアプランとなるLSIブロックの配置関係をツリー構造で記述する配置関係記述文の初期解を入力あるいは生成する実行手段と、
固定形状のLSIブロックに対して、それを内包する親となる非固定形状の親LSIブロックの初期値を割り付ける割付手段と、
上記親LSIブロックを操作対象に含めつつ、上記配置関係記述文を操作し、その操作前の上記配置関係記述文の規定するフロアプランのコスト値と、その操作後の上記配置関係記述文の規定するフロアプランのコスト値とに基づいて、その操作についての評価値を求め、かつ、このコスト値の算出にあたって、上記親LSIブロックに係るコスト値については、その親LSIブロック自身の持つコスト値とその親LSIブロックが内包する固定形状のLSIブロックの持つコスト値との和に基づいてコスト値を求めることにより、その操作についての評価値を求めて、それに従って上記配置関係記述文及び/又は上記親LSIブロックを変更するのか否かを決定することを繰り返していくことで、LSIのフロアプランを決定する決定手段とを備えることを、
特徴とするLSIフロアプラン決定装置。 - 請求項1に記載のLSIフロアプラン決定装置において、
上記決定手段は、上記フロアプランのコスト値として、LSIブロック間を配線する各ネットの持つブロック間配線長が指定される配線長を越えるのか否かに応じて算出されるペナルティ値の総和を用いることを、
特徴とするLSIフロアプラン決定装置。 - 請求項1に記載のLSIフロアプラン決定装置において、
上記決定手段は、上記フロアプランのコスト値として、各LSIブロックの持つブロック内配線長の総和と、LSIブロック間を配線する各ネットの持つブロック間配線長の総和との合計値を用いることを、
特徴とするLSIフロアプラン決定装置。 - 請求項1に記載のLSIフロアプラン決定装置において、
上記決定手段は、上記フロアプランのコスト値として、各LSIブロックの持つブロック内配線長の総和と、LSIブロック間を配線する各ネットの持つブロック間配線長の総和と、該ブロック間配線長が指定される配線長を越えるのか否かに応じて算出されるペナルティ値の総和との合計値を用いることを、
特徴とするLSIフロアプラン決定装置。 - 請求項3又は4に記載のLSIフロアプラン決定装置において、
上記決定手段は、LSIブロックの縦横の和とそのLSIブロック内に配線されるネット数との乗算値に応じた値を、各LSIブロックの持つブロック内配線長として算出することを、
特徴とするLSIフロアプラン決定装置。 - 請求項2ないし4のいずれか1項に記載のLSIフロアプラン決定装置において、
上記決定手段は、ネットに接続されるLSIブロックの中心を完全に含む四角形の縦横の和を、LSIブロック間を配線する各ネットの持つブロック間配線長として算出することを、
特徴とするLSIフロアプラン決定装置。 - 請求項6に記載のLSIフロアプラン決定装置において、
上記決定手段は、固定形状LSIブロックについては、ブロック中心を用いるのではなくて、実際の端子位置を用いて四角形を特定することを、
特徴とするLSIフロアプラン決定装置。 - 実行手段と割付手段と決定手段とを備えるLSIフロアプラン決定装置で実行されるLSIフロアプラン決定方法であって、
上記実行手段が、固定形状のLSIブロックを省略する形に従いつつ、LSIのフロアプランとなるLSIブロックの配置関係をツリー構造で記述する配置関係記述文の初期解を入力あるいは生成し、
上記割付手段が、固定形状のLSIブロックに対して、それを内包する親となる非固定形状の親LSIブロックの初期値を割り付け、
上記決定手段が、上記親LSIブロックを操作対象に含めつつ、上記配置関係記述文を操作し、その操作前の上記配置関係記述文の規定するフロアプランのコスト値と、その操作後の上記配置関係記述文の規定するフロアプランのコスト値とに基づいて、その操作についての評価値を求め、かつ、このコスト値の算出にあたって、上記親LSIブロックに係るコスト値については、その親LSIブロック自身の持つコスト値とその親LSIブロックが内包する固定形状のLSIブロックの持つコスト値との和に基づいてコスト値を求めることにより、その操作についての評価値を求めて、それに従って上記配置関係記述文及び/又は上記親LSIブロックを変更するのか否かを決定することを繰り返していくことで、LSIのフロアプランを決定することを、
特徴とするLSIフロアプラン決定方法。 - 固定形状のLSIブロックを省略する形に従いつつ、LSIのフロアプランとなるLSIブロックの配置関係をツリー構造で記述する配置関係記述文の初期解を入力あるいは生成する実行処理と、
固定形状のLSIブロックに対して、それを内包する親となる非固定形状の親LSIブロックの初期値を割り付ける割付処理と、
上記親LSIブロックを操作対象に含めつつ、上記配置関係記述文を操作し、その操作前の上記配置関係記述文の規定するフロアプランのコスト値と、その操作後の上記配置関係記述文の規定するフロアプランのコスト値とに基づいて、その操作についての評価値を求め、かつ、このコスト値の算出にあたって、上記親LSIブロックに係るコスト値については、その親LSIブロック自身の持つコスト値とその親LSIブロックが内包する固定形状のLSIブロックの持つコスト値との和に基づいてコスト値を求めることにより、その操作についての評価値を求めて、それに従って上記配置関係記述文及び/又は上記親LSIブロックを変更するのか否かを決定することを繰り返していくことで、LSIのフロアプランを決定する決定処理とをコンピュータに実行させるためのプログラムを記録したことを、
特徴とするプログラム記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31072499A JP3954253B2 (ja) | 1999-11-01 | 1999-11-01 | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 |
US09/667,218 US6584603B1 (en) | 1999-11-01 | 2000-09-21 | Apparatus and method for determining a circuit floor plan |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP31072499A JP3954253B2 (ja) | 1999-11-01 | 1999-11-01 | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007061290A Division JP4126323B2 (ja) | 2007-03-12 | 2007-03-12 | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001134621A JP2001134621A (ja) | 2001-05-18 |
JP3954253B2 true JP3954253B2 (ja) | 2007-08-08 |
Family
ID=18008722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP31072499A Expired - Fee Related JP3954253B2 (ja) | 1999-11-01 | 1999-11-01 | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6584603B1 (ja) |
JP (1) | JP3954253B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100723323B1 (ko) * | 2002-12-26 | 2007-05-31 | 가부시키가이샤 리코 | 제품 설계 지원 시스템, 제품 설계 지원 방법 및 제품 설계 지원 프로그램을 기록한 컴퓨터 판독가능한 기록 매체 |
JP4410088B2 (ja) * | 2004-11-29 | 2010-02-03 | 富士通株式会社 | 半導体装置の設計支援方法、プログラム及び装置 |
WO2006120745A1 (ja) * | 2005-05-12 | 2006-11-16 | Renesas Technology Corp. | フロアプラン評価方法、フロアプラン修正方法、プログラム、フロアプラン評価装置、及びフロアプラン作成装置 |
US9940421B1 (en) * | 2010-10-11 | 2018-04-10 | Pulsic Limited | Method for optimizing place-and-routing using a random normalized polish expression |
AU2019200458B2 (en) * | 2018-01-25 | 2022-10-27 | Andrea-Luca Crisci | Method and system for acquiring data files of blocks of land and of building plans and for automatic making of matches thereof |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2543155B2 (ja) * | 1988-04-21 | 1996-10-16 | 松下電器産業株式会社 | ブロック形状最適化方法 |
US5309371A (en) * | 1989-06-28 | 1994-05-03 | Kawasaki Steel Corporation | Method of and apparatus for designing circuit block layout in integrated circuit |
US5493510A (en) * | 1992-11-10 | 1996-02-20 | Kawasaki Steel Corporation | Method of and apparatus for placing blocks in semiconductor integrated circuit |
CA2216775C (en) * | 1996-09-30 | 2002-12-24 | Nippon Telegraph And Telephone Corporation | Circuit design system, image processing method and medium of the circuit design system |
US6317859B1 (en) * | 1999-06-09 | 2001-11-13 | International Business Machines Corporation | Method and system for determining critical area for circuit layouts |
-
1999
- 1999-11-01 JP JP31072499A patent/JP3954253B2/ja not_active Expired - Fee Related
-
2000
- 2000-09-21 US US09/667,218 patent/US6584603B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6584603B1 (en) | 2003-06-24 |
JP2001134621A (ja) | 2001-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sarkar et al. | Routability-driven repeater block planning for interconnect-centric floorplanning | |
Pan et al. | FastRoute 2.0: A high-quality and efficient global router | |
Dai et al. | NCTU-GR: Efficient simulated evolution-based rerouting and congestion-relaxed layer assignment on 3-D global routing | |
US7669160B2 (en) | Methods and systems for placement | |
JP5608079B2 (ja) | アーキテクチャー上の物理的合成 | |
JP4719265B2 (ja) | 確率的相互接続構造設計のためのシステムおよび方法 | |
US9003344B2 (en) | Generating pattern-based estimated RC data with analysis of route information | |
US20090077522A1 (en) | Method and apparatus for routing with independent goals on different layers | |
US7171635B2 (en) | Method and apparatus for routing | |
JPS60130843A (ja) | 接続路を設定する方法 | |
US8365120B2 (en) | Resolving global coupling timing and slew violations for buffer-dominated designs | |
US7003752B2 (en) | Method and apparatus for routing | |
US7010771B2 (en) | Method and apparatus for searching for a global path | |
JP2013025547A (ja) | 演算制御装置及び演算制御方法並びにプログラム、並列プロセッサ | |
US7047513B2 (en) | Method and apparatus for searching for a three-dimensional global path | |
JP3954253B2 (ja) | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 | |
Tsota et al. | Guiding global placement with wire density | |
US9292648B1 (en) | Activity-driven capacitance reduction to reduce dynamic power consumption in an integrated circuit | |
JP4126323B2 (ja) | Lsiフロアプラン決定装置及び方法並びにプログラム記録媒体 | |
JP3006824B2 (ja) | 配線設計方法および配線設計装置 | |
US10372866B2 (en) | Data processing system to implement wiring/silicon blockages via parameterized cells | |
US8832632B1 (en) | Compact routing | |
JP2001160076A (ja) | パス決定方法及び記憶媒体 | |
Taghavi et al. | Congestion minimization in modern placement circuits | |
JP5473557B2 (ja) | 集積回路(ic)のレイアウト図および配線図を作り出すシステムならびにフラット配置済みレイアウトを作り出すための方法およびコンピュータ・プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070109 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070312 |
|
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: 20070424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070426 |
|
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: 20100511 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110511 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120511 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130511 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140511 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |