JP2008305333A - モジュール配置方法、モジュール配置プログラム、及びlsi設計装置 - Google Patents

モジュール配置方法、モジュール配置プログラム、及びlsi設計装置 Download PDF

Info

Publication number
JP2008305333A
JP2008305333A JP2007154221A JP2007154221A JP2008305333A JP 2008305333 A JP2008305333 A JP 2008305333A JP 2007154221 A JP2007154221 A JP 2007154221A JP 2007154221 A JP2007154221 A JP 2007154221A JP 2008305333 A JP2008305333 A JP 2008305333A
Authority
JP
Japan
Prior art keywords
module
modules
unit
connectivity
units
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.)
Withdrawn
Application number
JP2007154221A
Other languages
English (en)
Inventor
Kimihiro Sawada
公大 澤田
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 Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor 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 Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2007154221A priority Critical patent/JP2008305333A/ja
Publication of JP2008305333A publication Critical patent/JP2008305333A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】本発明の課題は、半導体集積回路を構成するモジュールを配置する際、外部端子位置との接続性に基づくモジュールへの割当領域の決定後、更にその割当領域の重心を求めて接続端子としたモジュール間の接続性に基づいてモジュールを配置することを目的とする。
【解決手段】上記課題は、LSIチップを構成する複数のモジュールを配置するモジュール配置方法であって、コンピュータが、モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行することを特徴とするモジュール配置方法により達成される。
【選択図】図1

Description

本発明は、半導体集積回路を構成するモジュールを配置する際、外部端子位置との接続性に基づくモジュールへの割当領域の決定後、更にその割当領域の重心を求めて接続端子としたモジュール間の接続性に基づいてモジュールを配置するモジュール配置方法、モジュール配置プログラム、及びLSI設計装置に関する。
近年、半導体集積回路のセル配置設計においては、スタンダードセル配置方法が採用されている。そして、セル配置の代表的なアルゴリズムとしては、ミニマムカット法が広く知られている。この方法は、セルの二次元座標配置に対してカットラインを設定してセル郡に分割し、セル郡の配置位置の変更を繰り返しながら、カットラインを横切る接続ネットが最小となるような配置を探索するものである。
また、予めモジュール毎に端子の位置を決定することなく、かつ隣接するモジュール以外の全モジュールとの接続も考慮に入れて、論理セルを配置する方法が提案されている(例えば、特許文献1参照)。
更に、LSI設計におけるブロックのピン位置を決定する段階で、ブロック位置を考慮した配線経路の配線長が最小で不当な配線の回り込みが発生しないピン位置配置最適化方法なども提案されている(例えば、特許文献2参照)。
特開平8−236633号公報 特開2002−100678号公報
しかしながら、上記従来の方法では、集積回路を構成するセル数が多くまたモジュールの階層が深くなると、膨大な配置位置の変更を繰り返す必要があり、処理負荷等がかかるといった問題があった。
よって、本発明の目的は、半導体集積回路を構成するモジュールを配置する際、外部端子位置との接続性に基づくモジュールへの割当領域の決定後、更にその割当領域の重心を求めて接続端子としたモジュール間の接続性に基づいてモジュールを配置するモジュール配置方法、モジュール配置プログラム、及びLSI設計装置を提供することである。
本発明に係るモジュール配置方法は、LSIチップを構成する複数のモジュールを配置するモジュール配置方法であって、コンピュータが、モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行するように構成される。
上記課題を解決するための手段として、本発明は、上記半モジュール配置方法による処理手順をコンピュータに実行させるモジュール配置方法プログラム、該プログラムを記憶した記憶媒体、モジュール配置方法を実現するLSI設計装置とすることもできる。
本願発明は、外部端子位置の接続性を考慮して各モジュールへの領域を割り当て、その割当領域から算出された重心を用いてモジュール間の接続性を考慮し、各モジュールの配置位置(モジュール位置)を決定するため、不要な繰り返し処理を抑止した新たなモジュール配置処理を実現することができる。
以下、本発明の実施の形態を図面に基づいて説明する。
本発明に係る半導体集積回路を構成するモジュールの配置処理を図1で説明する。図1は、本発明に係るモジュール配置処理を説明するためのフローチャート図である。図1において、LSIチップ上に配置されるモジュールの外部端子位置への接続性に基づいて、各モジュールのモジュール割当領域を決定する(Step1)。
各モジュール領域において、外部端子位置とステップS1で決定したモジュール割当領域の重心とに基づいて、そのモジュール割当領域に配置されるモジュールのモジュール位置を決定する(Step2)。
次に、モジュール毎に、そのモジュール割当領域内の下層毎にそのモジュールを構成する階層モジュールを配置する階層モジュール位置を決定する(Step3)。
そして、各モジュールに属するセルの配置位置を決定する(Step4)。
以下に、このモジュール配置処理について、Step1から4毎に詳述する。
本実施例では、LSIチップ3がモジュールA、B及びCで構成される場合を例として説明する。この実施例において、モジュールAとモジュールCとの間に接続性があり、モジュールBが独立している場合において、上述したモジュール配置処理が、モジュール間の接続性を考慮しつつ効果的なモジュール配置を行うことを以下に説明する。
以下図中、LSIチップ3はモジュールを配置するLSIチップの領域を表し、▼1から▼9はモジュールが接続される外部端子を表し、その周辺に記されているアルファベットA、B及びCは外部端子▼1から▼9に直接接続されるモジュール名(以下、モジュールA、B及びCという)を表す。
Step1:外部端子位置の接続性に基づいくモジュール割当領域の決定
図2は、Step1における各モジュールの外部端子とLSIチップ上の位置との相関について説明するための図である。図2(A)では、予め定められたLSI仕様を示すLSI仕様データに基づく、LSIチップ3と、LSIチップ3上に配置される各モジュールA、B及びCの外部端子▼1から▼9とが示される。また、各外部端子▼1から▼9には、接続されるモジュール名が対応付けされている。
次に、図2(B)に示すように、LSIチップ3の領域を格子状の所定のユニット(単位面積)で区切る。この実施例において、ユニットの合計は64であり、各モジュールA、B及びCで必要とされるユニット数は、
モジュールA: 20
モジュールB: 30
モジュールC: 14
であるとする。
例えば、スタンダードセル方式による部品回路の形状、サイズ等を示すライブラリと、各モジュールA、B及びCにおける部品回路の構成を示すネットリストとを用いて、各モジュールA、B及びCが必要とする領域を算出し、その算出された各領域がLSI仕様データで指定されるLSIチップ3の領域に占める割合から必要となるユニット数を算出することができる。
そして、モジュールA、B及びC毎に、接続される外部端子とLSIチップ3上の位置との相関を求める。図2(C)では、モジュールAの場合にユニットPを相関を求める位置として示している。モジュールAに接続される外部端子▼3、▼6及び▼7とユニットPとの相関SAは、各外部端子▼3、▼6及び▼7とユニットPとの間の距離rに比例した式(1A)で表されるような関数f(r)を用いて算出する。
SA=f(P~▼3)+f(P~▼6)+f(P~▼7) ・・・・・・・・・・・・・・・・・・・・(1A)
モジュールAに対して、各64ユニットの相関SAを算出する。同様に、モジュールB及びCに対しても、各64ユニットに対して下記式(1B)及び(1C)に従って相関SB及び相関SCを算出する。
SB=f(P~▼1)+f(P~▼2)+f(P~▼8)+f(P~▼9) ・・・・・・・・・・・・・・・・(1B)
SC=f(P~▼4)+f(P~▼5) ・・・・・・・・・・・・・・・・・・・・・・・・・(1C)
相関SA、相関SB、及び相関SCの算出結果に基づいてモジュールA、B及びC毎の占有ユニットを決定する方法について図3で説明する。
図3(A)では、モジュールAの場合の相関SAの分布を示している。LSIチップ3に相関SAの強度が示され、例えば、色の最も濃いユニットはモジュールAに接続される外部端子▼3、▼6及び▼7との相関が最も強いことを示し、色の最も薄いユニットはモジュールAに接続される外部端子▼3、▼6及び▼7との相関が最も弱いことを示している。
相関が最も強いユニットを中心としてモジュールAを配置すれば、外部端子▼3、▼6及び▼7からモジュールAへの総配線長を短くすることができる。
同様に、上式(1B)及び(1C)による相関SB及び相関SCの分布に基づいて、相関が最も強いユニットを特定する。図3(B)では、モジュールAを配置するために中心となるユニットにはAが記され、モジュールBを配置するために中心となるユニットにはBが記され、モジュールCを配置するために中心となるユニットにはCが記されている。これら相関が最も強いユニットをそれぞれ占有ユニットA、B及びCとする。
次に、モジュール毎に対応する占有ユニットの周囲のユニットに対して得点付けを行う方法について図4で説明する。図4(A)では、モジュールAにおいて、占有ユニットAの周囲のユニットに対して、所定強度範囲毎に得点付けがなされた結果が示されている。他モジュールB及びCの占有ユニットB及びCを除く周囲のユニットに対して得点付けされる。図4(B)では、モジュールBにおいて、占有ユニットBの周囲のユニットに対して、所定強度範囲毎に得点付けがなされた結果が示されている。他モジュールA及びCの占有ユニットA及びCを除く周囲のユニットに対して得点付けされる。図4(C)では、モジュールCにおいて、占有ユニットCの周囲のユニットに対して、所定強度範囲毎に得点付けがなされた結果が示されている。他モジュールA及びBの占有ユニットA及びBを除く周囲のユニットに対して得点付けされる。
得点付けは、各占有ユニットA、B及びCの上下左右に位置するユニットに対して最高得点(本例では5点)を与え、最高得点を有するユニットの上下左右に位置する得点付けされていないユニットに対して2位の得点(本例では4点)を与え、2位の得点を有するユニットの上下左右に位置する得点付けされていないユニットに対して3位の得点(本例では3点)を与え、3位の得点を有するユニットの上下左右に位置する得点付けされていないユニットに対して4位の得点(本例では2点)を与える。4位未満のユニットは未占有ユニットとし、得点付けを行わない。ここでは、得点付けのレベルを5段階とし、最高得点から2点まで得点付けを行っている。得点付けのレベルを5段階に限定するものではない。
更に、モジュールA、B及びC毎に、未占有ユニット数に対する周囲ユニットの得点の総和から1ユニット当りの平均点を算出する。未占有ユニット数とは、各モジュールA、B及びCを割り当てるのに必要なユニット数からそれぞれの占有ユニットA、B及びCを除いたユニット数である。
1ユニット当りの平均点=周囲ユニットの得点の総和/未占有ユニット数 ・・・・(2)
上述した処理によって得られた情報は、例えば、図5に示す得点表21として記憶領域に格納される。図5は、Step1における得点表の例を示す図である。図5に示す得点表21では、モジュールA、B及びC毎に、必要とするユニット数を満たす最終割り当てユニット(数)と、最高得点「5」、2位の得点「4」、3位の得点「3」、4位の得点「2」、未占有ユニット(数)、得点合計、1ユニット当りの平均点などの値が対応付けて記憶される。
モジュールAに対して、最終割り当ては20ユニット、最高得点「5」は2ユニット、2位の得点「4」は4ユニット、3位の得点「3」は6ユニット、4位の得点「2」は7ユニット、得点合計は58点、1ユニット当りの平均点は3.053点であることが示されている。
モジュールBに対して、最終割り当ては30ユニット、最高得点「5」は4ユニット、2位の得点「4」は7ユニット、3位の得点「3」は9ユニット、4位の得点「2」は9ユニット、得点合計は29点、1ユニット当りの平均点は3.207点であることが示されている。
モジュールCに対して、最終割り当ては14ユニット、最高得点「5」は2ユニット、2位の得点「4」は3ユニット、3位の得点「3」は4ユニット、4位の得点「2」は4ユニット、得点合計は13点、1ユニット当りの平均点は3.231点であることが示されている。
次に、必要となるユニット数に達するまでのユニットの割り当て方法について説明する。図6は、ユニットの割り当て方法を説明するための図である。図5に示す得点表21から、1ユニット当りの平均点が最も低いモジュールに対して、追加で1ユニットを占有させ(割り当て)る。本例の場合、モジュールAの1ユニット当りの平均点が最も低いので、モジュールAに対して1ユニットを追加で割り当てる。この時、得点の最も高いユニットの中から相関値の最も高いユニットを割り当てて占有ユニットを増やす。この1ユニットの割り当てと同時に、周囲ユニットの得点付けを再度行って得点表21を更新する。
図6(A)では、モジュールAに対して2ユニットが占有ユニットAとなり、得点付けられた周囲ユニットが示される。図6(B)では、占有ユニットAが更に割り当てられた後に更新された得点表21が示され、モジュールAに対して、各得点が付されたユニット数と、未占有ユニット数と、得点合計、1ユニット当りの平均点とが更新されたことを示している。すなわち、モジュールAに対して、最高得点「5」は2から3ユニットへ、2位の得点「4」は4から5ユニットへ、3位の得点「3」は6から7ユニットへ、4位の得点「2」は7から3ユニットへ、得点合計は58から62点、1ユニット当りの平均点は3.053から3.444点へと更新されている。
図6(B)に示す更新された得点表21から、モジュールBが1ユニット当たりの平均点が最も低いことが判るため、モジュールBに対して追加で1ユニットを配分して占有ユニットBとする。この時、得点の最も高いユニットの中から相関値の最も高いユニットを割り当てて占有ユニットを増やす。この1ユニットの割り当てと同時に、周囲ユニットの得点付けを再度行って得点表21を更新する。
このように、必要となるユニット数に達するまでの占有ユニットを割り当てる処理を繰り返すことによって、図6(C)に示すようにモジュールA、B及びCへとユニットが割り当てられて、モジュールAの割当領域A31と、モジュールBの割当領域B32と、モジュールCの割当領域C33とが決定する。
上述したStep1での処理についてフローチャートで説明する。図7は、Step1での処理を説明するためのフローチャート図である。図7において、第一階層目のモジュール数を変数M1に設定して(ステップS11)、M1個の第一階層目のモジュールに1、2、3...M1と番号付けする(ステップS12)。そして、モジュール毎の処理を行うために変数iにモジュール番号「1」を初期設定する(ステップS13)。
全モジュールについてステップS14からS17までの処理を繰り返すループ1−1を行なう。全モジュールについて処理が終了したらステップS18へと進む。
ループ1−1において、モジュールiと接続する外部端子とユニットとの相関を算出する(ステップS14)。そして、最も相関の高いユニットをモジュールiの占有ユニットとし(ステップS15)、占有ユニットの周囲のユニットに対して得点付けを実施する(ステップS16)。変数iを1インクリメントする(ステップS17)。
各モジュールについて1つの占有ユニットが決定し、その周囲ユニットへの得点付けが終了すると、ループ1−1を抜けて、得点表21を記憶領域に作成する(ステップS18)。
そして、未占有ユニットがなくなるまでモジュールiへのユニット割り当てを実行するループ1−2を行なう。未占有ユニットが全て割り当てられたらStep1の処理を終了する。
ループ1−2において、得点表21を参照して、1ユニット当りの平均点が最も低いモジュールを処理対象とし(ステップS19)、得点の最も高いユニットのうち、相関値の最も高いユニットをそのモジュールの占有ユニットとする(ステップS20)。そして、占有ユニットの周囲のユニットに対して得点付けを実施して、得点表21を更新する(ステップS21)。
Step2:外部端子位置とモジュール割当領域の重心とに基づくモジュール位置の決定
図8は、Step2における各モジュールの外部端子及び重心とLSIチップ上の位置との相関について説明するための図である。先ず、Step1で求めたモジュールAの割当領域A31、モジュールBの割当領域B32、モジュールCの割当領域C33の夫々に対して重心▼gA、▼gB、▼gCを算出する。図8(A)中、▼gA、▼gB、▼gCで示される位置が各割当領域A31、割当領域B32、割当領域C33における重心の位置を示す。
これら重心gA、gB、gCを接続端子とみなし、Step1と同様の方法で、相関の強いユニットを求める。モジュールAと、モジュールCとの間に接続がある場合、モジュールAに接続される端子と、ユニットPとの相関は図8(B)のように求められる。このとき、モジュールAとモジュールCとの間の接続ネット数がNである場合、モジュールAに接続される外部端子及び重心gCとユニットPとの相関SA'は、外部端子及び重心gCとユニットPとの間の距離に反比例した式(3A)で表されるような関数f(r)を用いて算出する。
SA'=f(P~▼3)+f(P~▼6)+f(P~▼7)+h(N)・f(P~▼gA)+i(N)・f(P~▼gC) ・・・・(3A)
ここで、関数h(N)及び関数i(N)は、接続ネット数に比例する関数である。
モジュールAとモジュールCとが接続される本例において、モジュールAの接続性を考慮する場合、LSIチップ3上の任意のユニットPは、重心▼gAと重心▼gCとに接続されることが考慮される。また、ユニットPは、重心▼gCよりもモジュールA自身の重心▼gAに対して接続性が強いと考えたほうが良いため、ユニットPから重心▼gAへの距離がユニットPから重心▼gCへの距離と等しい場合(以下に示す等式(4A))、ユニットPから重心▼gAへ相関がより強くなるように(以下に示す不等式(5A))、関数h(N)及び関数i(N)によって調整される。
P〜▼gA = P〜▼gC・・・・・・・・・・・・・・・・・・・・・・・・(4A)
h(N)・f(P~▼gA) > i(N)・f(P~▼gC) ・・・・・・・・・・・・・・・・・・・(5A)
モジュールAに対して、各64ユニットの相関SA'を算出する。その結果を図9に示す。図9は、Step2におけるモジュールAの場合の相関分布を示す図である。図9において、LSIチップ3に相関SA'の強度が示され、例えば、色の最も濃いユニットはモジュールAに接続される外部端子▼3、▼6、▼7、及び重心▼gA、▼gCとの相関が最も強いことを示し、色の最も薄いユニットはモジュールAに接続される外部端子▼3、▼6、▼7、及び重心▼gA、▼gCとの相関が最も弱いことを示している。
同様に、モジュールCに対して、各64ユニットに対して下記式(3C)に従って相関SC'を算出する。
SC'=f(P~▼4)+f(P~▼5) +h(N)・f(P~▼gC)+i(N)・f(P~▼gA) ・・・・・・・・(3C)
ここで、関数h(N)及び関数i(N)は、接続ネット数に比例する関数である。
モジュールCの場合、ユニットPは、重心▼gAよりもモジュールC自身の重心▼gCに対して接続性が強いと考える方が好ましいため、ユニットPから重心▼gCへの距離がユニットPから重心▼gAへの距離と等しい場合(以下に示す等式(4C))、ユニットPから重心▼gCへ相関がより強くなるように(以下に示す不等式(5C))、関数h(N)及び関数i(N)によって調整される。
P〜▼gC = P〜▼gA・・・・・・・・・・・・・・・・・・・・・・・・(4C)
h(N)・f(P~▼gC) > i(N)・f(P~▼gA) ・・・・・・・・・・・・・・・・・・・(5C)
そして、モジュールAにもモジュールCにも接続性がなく独立しているモジュールBの場合、接続ネット数は存在しないため、モジュールBに接続される外部端子及び重心gBとユニットPとの相関SB'は、Step1での相関SBを算出するための式(1B)となる。
次に、Step1と同様に、端子位置との相関が最も高いユニットを求め、それを中心に周囲のユニットの得点付けをし、モジュールA、B、Cの占有ユニットを増やす処理を行って割当領域を決定する。Step2では、決定した割当領域がモジュールA、B、Cを配置するためのモジュール位置となる。Step2による結果が図10に示される。図10は、Step2において決定されたモジュール位置の例を示す図である。
図10において、Step2による結果は、モジュールAに対してモジュールA位置41、モジュールBに対してモジュールB位置42、モジュールCに対してモジュールC位置43が割り当てられたことを示している。図6(C)に示されるStep1による結果と比べると、モジュールAとモジュールCとの接続性が高まるように、モジュールA位置41、モジュールB位置42、モジュールC位置43が決定される。
上述したStep2での処理についてフローチャートで説明する。図11は、Step2での処理を説明するためのフローチャート図である。図11において、第一階層目のモジュール数を変数M1に設定して(ステップS31)、M1個の第一階層目のモジュールに1、2、3...M1と番号付けする(ステップS32)。Step1において割り当てられたユニット郡の重心を算出する(ステップS33)。そして、モジュール毎の処理を行うために変数iにモジュール番号「1」を初期設定する(ステップS34)。
全モジュールについてステップS35からS38までの処理を繰り返すループ2−1を実行する。全モジュールについて処理が終了したらステップS39へと進む。
ループ2−1において、モジュールiと接続する外部端子および他モジュールの重心と、ユニットとの相関を算出する(ステップS35)。そして、最も相関の高いユニットをモジュールiの占有ユニットとし(ステップS36)、占有ユニットの周囲のユニットに対して得点付けを実施する(ステップS37)。変数iを1インクリメントする(ステップS38)。
各モジュール1、2、3...M1について1つの占有ユニットが決定し、その周囲ユニットへの得点付けが終了すると、ループ2−1を抜けて、得点表21を記憶領域に作成する(ステップS39)。
そして、未占有ユニットがなくなるまでモジュールiへのユニット割り当てを実行するループ2−2を行なう。未占有ユニットが全て割り当てられたらStep2の処理を終了する。
ループ2−2において、得点表21を参照して、1ユニット当りの平均点が最も低いモジュールを処理対象とし(ステップS40)、得点の最も高いユニットのうち、相関値の最も高いユニットをそのモジュールの占有ユニットとする(ステップS41)。そして、占有ユニットの周囲のユニットに対して得点付けを実施して、得点表21を更新する(ステップS42)。
Step3:階層モジュール位置の決定
各モジュールA、B、Cを構成する階層モジュールに対してユニットを割り当てる。例えば、モジュールAが、第二階層目の3つのモジュールA1、A2、A3で構成され、それぞれの第二階層目でのユニット使用数と、接続する端子とが以下の通りであるとする。
モジュール名 ユニット使用数 接続する端子
A1 1 ▼gC
A2 16 なし
A3 3 ▼3、▼6、▼7
Step2で決定したモジュールAのモジュール位置の範囲内で、外部端子▼3、▼6、▼7と、接続する第一階層目のモジュールCの重心▼gCの位置とに基づいて、Step2と同様に第二階層目のモジュールA1、A2、A3にユニットを割り当てる。
ただし、本例では、モジュールA2は、外部端子にも他モジュールにも接続されないため、モジュールA2へのユニットの割り当ては、モジュールA1及びモジュールA3へのユニットの割り当てが完了後に、空いているユニットを割り当てる。同様にして、モジュールB及びCの第二階層目のモジュールについてもユニットを割り当てる。
外部端子、及び他の上層のモジュールとの接続が無いモジュールが2つ以上存在する場合には、同層モジュール間の接続性のみを考慮してユニットの割り当てを実施する。具体的には、外部端子、及び上層モジュールとの接続のあるモジュールに対してユニットを割り当てた後、その割り当てたユニット郡の重心をモジュールの接続端子として、Step2と同等の手段を実施するものである。
モジュールBは第二階層目の2つのモジュールB1、B2で構成され、また、モジュールCは第二階層目の2つのモジュールC1、C2で構成される場合の、全ての第二階層目のモジュールの位置が決定した状態を図12に示す。図12は、Step3において決定された第二階層目のモジュール位置の例を示す図である。
図12において、Step3による結果は、第一階層目のモジュールAに割り当てられた領域において、モジュールA1に対してモジュールA1位置51と、モジュールA2に対してモジュールA2位置52と、モジュールA3に対してモジュールA3位置53とが割り当てられたことを示している。また、第一階層目のモジュールBに割り当てられた領域において、モジュールB1に対してモジュールB1位置61と、モジュールB2に対してモジュールB2位置62とが割り当てられたことを示している。更に、第一階層目のモジュールCに割り当てられた領域において、モジュールC1に対してモジュールC1位置71と、モジュールC2に対してモジュールC2位置72とが割り当てられたことを示している。
次に、第二階層目のモジュールの重心を接続端子とみなしてユニットの割り当てを行う際、第一階層目のモジュールA、B、Cに割り当てたユニット郡の境界をそのまま保存して処理を行うか、又は、この境界を破棄して処理を行うかを選択することができる。
同様に、第三階層目のモジュールにたいしても、このStep3と同様にユニットの割り当てを実施し、最下層のモジュールのモジュール位置が決定するまで処理を繰り返す。
上述したStep3での処理についてフローチャートで説明する。図13及び図14は、Step3での処理を説明するためのフローチャート図である。図13及び図14において、階層番号を示す変数nに1を初期設定する(ステップS51)。
全階層についてステップS51からS79までの処理を繰り返すループ3−1を実行する。全階層について処理が終了したら、このStep3の処理を終了する。
ループ3−1において、第n階層目のモジュール数を変数Mnに設定し(ステップS52)、Mn個の第n階層目のモジュールに1、2、3...M1と番号付けする(ステップS53)。そして、第n階層目のモジュール毎の処理を行うために変数iにモジュール番号「1」を初期設定する(ステップS54)。
第n階層目の全モジュールについてステップS55からS66までの処理を繰り返すループ3−2を実行する。第n階層目の全モジュールについて処理が終了したらステップS67へと進む。
ループ3−2において、モジュールiに属する第n+1階層目のモジュール数を変数Mn+1に設定し(ステップS55)、モジュールiに属する第n+1階層目のモジュールに1、2、3...M1と番号付けする(ステップS56)。そして、第n+1階層目のモジュール毎の処理を行うために変数jにモジュール番号「1」を初期設定する(ステップS57)。
第n+1階層目の全モジュールについてステップS58からS66までの処理を繰り返すループ3−3を実行する。第n+1階層目の全モジュールについて処理が終了したらステップS62へと進む。
ループ3−3において、モジュールjが接続する外部端子、及び接続する第n階層目の他モジュールの重心とユニットとの相関を算出する(ステップS58)。そして、最も相関の高いユニットをモジュールjの占有ユニットとし(ステップS59)、占有ユニットの周囲のユニットに対して得点付けを実施する(ステップS60)。変数jを1インクリメントする(ステップS61)。
各モジュール1、2、3...M1について1つの占有ユニットが決定し、その周囲ユニットへの得点付けが終了すると、ループ3−3を抜けて、得点表21を記憶領域に作成する(ステップS62)。
そして、未占有ユニットがなくなるまで第n+1階層目のモジュールiへのユニット割り当てを実行するループ3−4を行なう。未占有ユニットが全て割り当てられたらステップS66へと進む。
ループ3−4において、得点表21を参照して、1ユニット当りの平均点が最も低いモジュールを処理対象とし(ステップS63)、得点の最も高いユニットのうち、相関値の最も高いユニットをそのモジュールの占有ユニットとする(ステップS64)。そして、占有ユニットの周囲のユニットに対して得点付けを実施して、得点表21を更新する(ステップS65)。
そして、未占有ユニットが全て割り当てられたら、ループ3−4を抜けて、変数iを1インクリメントする(ステップS66)。
更に、第n階層目の各モジュールに属する第n+1階層目の全モジュールについて処理が終了したら、ループ3−2を抜けて、現時点での第n+1階層目のユニットの割り当て状態を領域DATAに保存して(ステップS67)、変数iに1を初期設定する(ステップS68)。
第n+1階層目の他モジュールの重心との接続性を考慮するために、第n+1階層目の全モジュールについてステップS69からS78までの処理を繰り返すループ3−5を実行する。第n階層目の全モジュールについて処理が終了したらステップS79へと進む。
ループ3−5において、変数jに1を初期設定し(ステップS69)、第n+1階層目のモジュールjに対して、外部端子及びその下層の第n+1階層目の他モジュールの重心との接続性を考慮したユニットの割り当てるためにステップS70からS73までの処理を繰り返すループ3−6を実行する。第n+1階層目の全モジュールについて処理が終了したらステップS74へと進む。
ループ3−6において、ステップS67で保存された領域DATAに記憶されているユニットの割り当て状態から、モジュールjに接続する外部端子、及び接続する第n+1階層目の他モジュールの重心とユニットとの相関を算出し(ステップS70)、最も相関の高いユニットをモジュールjの占有ユニットとする(ステップS71)。
そして、占有ユニットの周囲のユニットに対して得点付けを実施し(ステップS72)、変数jを1インクリメントする(ステップS73)。
第n+1階層目の全モジュールについて同層の他モジュールの重心との接続性を考慮した占有ユニットを決定したらループ3−6を抜けて、得点表21を記憶領域に作成する(ステップS74)。
そして、未占有ユニットがなくなるまで第n+1階層目のモジュールiへのユニット割り当てを実行するループ3−7を行なう。未占有ユニットが全て割り当てられたらステップS78へと進む。
ループ3−7において、得点表21を参照して、1ユニット当りの平均点が最も低いモジュールを処理対象とし(ステップS75)、得点の最も高いユニットのうち、相関値の最も高いユニットをそのモジュールの占有ユニットとする(ステップS76)。そして、占有ユニットの周囲のユニットに対して得点付けを実施して、得点表21を更新する(ステップS77)。
そして、未占有ユニットが全て割り当てられたら、ループ3−7を抜けて、変数iを1インクリメントする(ステップS78)。
更に、第n+1階層目の各モジュールについてモジュール位置が決定したら、ループ3−5を抜けて、変数nを1インクリメントする(ステップS79)。最下層のモジュールへの処理が終了すると、ループ3−1を抜けて、このStep3の処理を終了する。
上述した半導体集積回路を構成するモジュールの新たな配置方法を実現するLSI設計装置は、例えば図15に示されるように構成される。図15は、本発明の一実施例に係るLSI設計装置の構成例を示す図である。図15において、LSI設計装置100は、コンピュータ装置であって、制御部7と、一時記憶部7cと、表示装置8と、入出力装置9と、ドライバ10と、記憶部20とで構成される。
制御部7は、中央処理装置7aとメインプログラム記憶部7bとを備え、LSI設計装置100全体を制御し、上述したモジュール配置処理を実行する。一時記憶部7cは、制御部7で処理されたデータ又は処理に必要となるデータなどを一時的に記憶する記憶部である。表示装置8は、制御部7の制御のもとに必要な各種情報を表示する。入出力装置9は、利用者からの指示に応じて各種情報の入出力を制御する。ドライバ10は、例えば、CD−ROM(Compact Disk Read-Only Memory)等の記憶媒体11から本発明に係るモジュール配置プログラム30を読み込む。読み込まれたモジュール配置プログラム30は、記憶部20に格納される。記憶部20は、本発明に係るモジュール配置処理で使用される得点表21と、ユニット割り当て状態を示すDATA20(上述される領域DATAに相当する)と、制御部7によって実行されるモジュール配置プログラム30とを格納する。
尚、モジュール配置プログラム30を格納する媒体としてCD−ROMに限定するものではなく、コンピュータが読み取り可能な媒体であればよい。LSI設計装置100が通信制御装置を備えている場合、本発明に係る処理を実現するモジュール配置プログラム30は、その通信制御装置によってネットワークを介してダウンロードし、記憶部20にインストールするようにしても良い。また、LSI設計装置100が外部との接続を行うUSB(Universal Serial Bus)等のインタフェースを有する場合には、USB接続によって外部記憶媒体からモジュール配置プログラム30を読み込んでもよい。
上述したように、本発明では、第一に、チップ上を格子状に区切ることでチップが単位ユニットで構成される状態を考え、チップ上の任意のユニットから任意の一階層目のモジュールに接続する外部端子までの距離を引数として、任意の一階層目モジュールに関してのチップ上の任意ユニットにおける接続性を算出する。
第二に、任意の一階層目のモジュールに対して算出した接続性のうち、最も接続性の高いユニットを、その任意モジュールの占有ユニットとして割り当て、その占有ユニットの近傍のユニットを判定基準にもとづいて、順次その任意の一階層目のモジュールに割り当てる。
第三に、この判定基準は、複数の一階層目のモジュールが存在する場合においても、それぞれの一階層目のモジュールに割り当てるユニットの重複が発生しない。
第四に、複数の一階層目のモジュールそれぞれに対してチップ上のユニットが割り当てられた状態において、各一階層目のモジュールを形成するユニット郡の重心を接続端子とみなし、このモジュールの重心との接続情報を加えて上述した同様の処理を実施し、任意の一階層目のモジュールに対して再度ユニットの割り当てを行なう。
第五に、上記第四での処理の後、一階層目のモジュールを形成するユニット郡の重心を求め直して、再度上記第四での処理の実施を選択できる。
第六に、任意の二階層目のモジュールに接続する「外部端子」、及び接続する「この任意の二階層目のモジュールの属さない一階層目のモジュールに対して、モジュールの重心との接続情報を加えた配置処理によって割り当てられたユニット郡の重心」までの距離を引数として、この任意の二階層目のモジュールに関しての任意ユニットにおける接続性を算出する。
第七に、第六での処理において任意の二階層目のモジュールに対して算出した接続性のうち、最も接続性の高いユニットを、その任意の二階層目のモジュールの占有ユニットとして割り当て、その占有ユニットの近傍のユニットを判定基準にもとづいて、順次その任意の二階層目のモジュールに割り当てる。
第八に、この第七での処理における判定基準は、複数の二階層目のモジュールが存在する場合においても、それぞれのモジュールに割り当てるユニットの重複が発生しない。
第九に、二階層目のモジュールに割り当てられるユニットは、上記第四での処理で割り当てられた、その二階層目のモジュールが属する一階層目のユニットの範囲内である。
第十に、複数の一階層目のモジュールが存在する場合、夫々のモジュールに対して、上記第六での処理及び第七での処理を並列して実施する。
第十一に、複数の一階層目のモジュールに属する二階層目のモジュール全てに対してチップ上のユニットが割り当てられた状態において、各二階層目のモジュールを形成するユニット郡の重心を接続端子とみなし、この二階層目のモジュールの重心との接続情報を加えて、上記第六での処理及び第七での処理を実施し、任意の二階層目のモジュールに対して再度ユニットの割り当てを行う。
第十二に、第十一での処理後、二階層目のモジュールを形成するユニット郡の重心を求め直して、この二階層目のモジュールの重心との接続情報を加えて、上記第六での処理及び第七での処理の実施を選択することができる。
第十三に、三階層目以降のモジュールに対しても、上記第六から第十二での処理によってユニットの割り当てを実施する。
第十四に、セルに対しても、セルをモジュールと見なすことで、上記第六から第十二での処理によってユニットの割り当てを実施する。
第十五に、上記十四での処理において、セルに対してのユニットの割り当ての実施の際には、モジュールの割り当ての考慮時よりも1ユニットの面積を小さくして実施する。
上述より、本発明は、外部端子位置の接続性を考慮して各モジュールへの領域を割り当て、その割当領域から算出された重心を用いてモジュール間の接続性を考慮し、各モジュールの配置位置(モジュール位置)を決定するため、不要な繰り返し処理を抑止した新たなモジュール配置処理を実現することができる。
以上の説明に関し、更に以下の項を開示する。
(付記1)
LSIチップを構成する複数のモジュールを配置するモジュール配置方法であって、コンピュータが、
モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、
各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行することを特徴とするモジュール配置方法。
(付記2)
前記コンピュータが、更に、
各モジュールの下層にて該モジュールを構成する階層モジュールに対して、接続する前記外部端子位置、及び接続する上層の他モジュールの重心と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各階層モジュールへ割り当てる階層割当領域を決定する階層割当領域決定手順と、
前記階層割当領域に係るデータを用いて、接続する記外部端子位置、及び接続する下層の他モジュールの重心と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて階層モジュール位置を決定する階層モジュール位置決定手順とを、
階層毎に実行することを特徴とする付記1記載のモジュール配置方法。
(付記3)
前記コンピュータが、更に、
前記モジュール及び前記階層モジュール夫々に属する各セルに対して、該セルと最下層の階層モジュールとの接続性の相関値を算出し、その算出結果に基づいて該セルの配置を決定するセル配置決定手順を実行することを特徴とする付記2記載のモジュール配置方法。
(付記4)
前記セル配置決定手順は、
前記階層モジュール位置決定手順によって決定された最下層の階層モジュールに割り当てられた前記階層モジュール位置の領域内で、該最下層の階層モジュールに属するセルの配置を決定することを特徴とする付記3記載のモジュール配置方法。
(付記5)
前記セル配置決定手順は、
前記階層モジュール位置の領域より所定単位小さい領域内で前記最下層の階層モジュールに属するセルの配置を決定することを特徴とする付記4記載のモジュール配置方法。
(付記6)
LSIチップを構成する複数のモジュールを配置するLSI設計装置としてコンピュータを機能させるためのモジュール配置プログラムであって、該プログラムに、
モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、
各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行させることを特徴とするモジュール配置プログラム。
(付記7)
LSIチップを構成する複数のモジュールを配置するLSI設計装置であって、
モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手段と、
各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手段とを有することを特徴とするLSI設計装置。
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
本発明に係るモジュール配置処理を説明するためのフローチャート図である。 Step1における各モジュールの外部端子とLSIチップ上の位置との相関について説明するための図である。 Step1におけるモジュール毎の占有ユニットを決定する方法を説明するための図である。 Step1における占有ユニット周辺のユニットに対して得点付けを行う方法を説明するための図である。 Step1における得点表の例を示す図である。 Step1におけるユニットの割り当て方法を説明するための図である。 Step1での処理を説明するためのフローチャート図である。 Step2における各モジュールの外部端子及び重心とLSIチップ上の位置との相関について説明するための図である。 Step2におけるモジュールAの場合の相関分布を示す図である。 Step2において決定されたモジュール位置の例を示す図である。 Step2での処理を説明するためのフローチャート図である。 Step3において決定された第二階層目のモジュール位置の例を示す図である。 Step3での処理を説明するためのフローチャート図である。 Step3での処理を説明するためのフローチャート図(続き)である。 本発明の一実施例に係るLSI設計装置の構成例を示す図である。
符号の説明
7 制御部
7a 中央処理装置
7b メインプログラム記憶部
7c 一時記憶部
8 表示装置
9 入出力装置
10 ドライバ
11 記憶媒体
20 記憶部
21 得点表
22 ユニット割り当て状態(DATA)
30 モジュール配置プログラム

Claims (5)

  1. LSIチップを構成する複数のモジュールを配置するモジュール配置方法であって、コンピュータが、
    モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、
    各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行することを特徴とするモジュール配置方法。
  2. 前記コンピュータが、更に、
    各モジュールの下層にて該モジュールを構成する階層モジュールに対して、接続する前記外部端子位置、及び接続する上層の他モジュールの重心と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各階層モジュールへ割り当てる階層割当領域を決定する階層割当領域決定手順と、
    前記階層割当領域に係るデータを用いて、接続する記外部端子位置、及び接続する下層の他モジュールの重心と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて階層モジュール位置を決定する階層モジュール位置決定手順とを、
    階層毎に実行することを特徴とする請求項1記載のモジュール配置方法。
  3. 前記コンピュータが、更に、
    前記モジュール及び前記階層モジュール夫々に属する各セルに対して、該セルと最下層の階層モジュールとの接続性の相関値を算出し、その算出結果に基づいて該セルの配置を決定するセル配置決定手順を実行することを特徴とする請求項2記載のモジュール配置方法。
  4. LSIチップを構成する複数のモジュールを配置するLSI設計装置としてコンピュータを機能させるためのプログラムであって、該プログラムに、
    モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手順と、
    各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手順とを実行させることを特徴とするプログラム。
  5. LSIチップを構成する複数のモジュールを配置するLSI設計装置であって、
    モジュール毎の外部端子位置と前記LSIチップ上の任意の領域との接続性の相関値を算出し、その算出結果に基づいて各モジュールへ割り当てる割当領域を決定する割当領域決定手段と、
    各モジュールへ割り当てられた前記割当領域から算出される各重心を接続端子としてモジュール間の接続性を含めた相関値を算出し、その算出結果に基づいてモジュール位置を決定するモジュール位置決定手段とを有することを特徴とするLSI設計装置。
JP2007154221A 2007-06-11 2007-06-11 モジュール配置方法、モジュール配置プログラム、及びlsi設計装置 Withdrawn JP2008305333A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007154221A JP2008305333A (ja) 2007-06-11 2007-06-11 モジュール配置方法、モジュール配置プログラム、及びlsi設計装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007154221A JP2008305333A (ja) 2007-06-11 2007-06-11 モジュール配置方法、モジュール配置プログラム、及びlsi設計装置

Publications (1)

Publication Number Publication Date
JP2008305333A true JP2008305333A (ja) 2008-12-18

Family

ID=40233972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007154221A Withdrawn JP2008305333A (ja) 2007-06-11 2007-06-11 モジュール配置方法、モジュール配置プログラム、及びlsi設計装置

Country Status (1)

Country Link
JP (1) JP2008305333A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010160598A (ja) * 2009-01-07 2010-07-22 Nec Corp 集積回路設計装置、設計方法およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010160598A (ja) * 2009-01-07 2010-07-22 Nec Corp 集積回路設計装置、設計方法およびプログラム

Similar Documents

Publication Publication Date Title
CN110795908B (zh) 偏差驱动的总线感知总体布线方法
CN102754102B (zh) 三维集成电路的设计支持装置及设计支持方法
JPS60130843A (ja) 接続路を設定する方法
JPH077427B2 (ja) ノードの相互接続方法
US20050076319A1 (en) Pin assignment in block-based integrated circuit design methodologies
JP2016110205A (ja) 半導体装置の設計方法及びプログラム
US6532581B1 (en) Method for designing layout of semiconductor device, storage medium having stored thereon program for executing the layout designing method, and semiconductor device
CN106682306B (zh) 一种快速fpga布线方法
CN107209793B (zh) 具有用于3d集成电路的折叠块及复制引脚的知识产权块设计
US9928334B2 (en) Redistribution layer routing for integrated fan-out wafer-level chip-scale packages
CN113919266B (zh) 可编程器件的时钟规划方法、装置、电子设备及存储介质
US9760669B2 (en) Congestion mitigation by wire ordering
JP2008305333A (ja) モジュール配置方法、モジュール配置プログラム、及びlsi設計装置
US8010925B2 (en) Method and system for placement of electric circuit components in integrated circuit design
CN112183007A (zh) 一种多个fpga的设计分割方法
US9275183B2 (en) Apparatus and method for aiding in designing electronic circuits
US6938232B2 (en) Floorplanning apparatus deciding floor plan using logic seeds associated with hierarchical blocks
JPH0844883A (ja) 自動レイアウト装置
Hentschke et al. 3D-vias aware quadratic placement for 3D VLSI circuits
US7904869B2 (en) Method of area compaction for integrated circuit layout design
Lin et al. An Effective Netlist Planning Approach for Double-sided Signal Routing
JP3761661B2 (ja) フロアプラン方法及びその装置
KR20040014158A (ko) 레이아웃 데이터의 보존 방법, 레이아웃 데이터 변환장치, 및 도형 검증 장치
Ho et al. Layer minimization in escape routing for staggered-pin-array PCBs
US8832632B1 (en) Compact routing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100303

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20101208