(57)【特許請求の範囲】
【請求項１】
半導体集積回路の階層設計方法であって、
階層ブロック集合をチップ上に配置した後、階層ブロック各々の階層ブロック端子位置を決定し、その後、前記階層ブロック内のレイアウト設計、及び、前記階層ブロック間を接続する配線経路のレイアウト設計を行い、
前記階層ブロック端子位置を決定する際、同一機能を持つ複数の前記階層ブロックの前記階層ブロック内における前記階層ブロック端子位置は同一となるようにし、
前記階層ブロック内のレイアウト設計においては、同一機能を持つ複数の前記階層ブロックに対して共通のレイアウトパタンを併用することを特徴とする半導体集積回路の階層設計方法。
【請求項２】
請求項１に記載の半導体集積回路の階層設計方法において、
前記階層ブロック間のレイアウト設計を行った後、各種類の前記階層ブロック内のレイアウト設計を行い、チップ全体のレイアウト設計を完了することを特徴とする半導体集積回路の階層設計方法。
【請求項３】
請求項１に記載の半導体集積回路の階層設計方法において、
各種類の前記階層ブロック内のレイアウト設計を行った後、前記階層ブロック間のレイアウト設計を行い、チップ全体のレイアウト設計を完了することを特徴とする半導体集積回路の階層設計方法。
【請求項４】
請求項１に記載の半導体集積回路の階層設計方法において、
前記階層ブロック端子位置を決定するとき、
まず、前記階層ブロック端子の初期位置に、各前記階層ブロック内の中心座標または各前記階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定し、前記階層ブロック端子の前記初期位置間を接続する階層ブロック間の仮配線を行い、前記仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択することにより、前記階層ブロック端子の座標を決定することを特徴とする半導体集積回路の階層設計方法。
【請求項５】
請求項４に記載の半導体集積回路の階層設計方法において、
前記階層ブロック内のレイアウト設計を行うとき、
まず、前記同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに前記階層ブロック端子の仮位置を決定し、次に、前記階層ブロック端子の前記仮位置の座標から、前記同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、前記仮配線の経路が前記重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、前記階層ブロック端子の仮位置を更新し、前記仮配線の経路の生成と前記階層ブロック端子の前記仮位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返すことにより、最終的な端子位置を決定することにより、前記同一機能を持つ階層ブロック集合の端子座標を決定することを特徴とする半導体集積回路の階層設計方法。
【請求項６】
半導体集積回路の階層設計装置であって、
階層ブロック集合をチップ上に配置する手段と、
前記階層ブロック集合をチップ上に配置した後、同一機能を持つ複数の階層ブロックの前記階層ブロック内における階層ブロック端子位置が同一となるように、前記階層ブロック各々の階層ブロック端子位置を決定する手段と、
前記階層ブロック各々の階層ブロック端子位置が決定された後、前記階層ブロック内のレイアウトを設計し、同一機能を持つ前記複数の階層ブロックに対しては、一種類のレイアウト設計のみを行う手段と、
を備えることを特徴とする半導体集積回路の階層設計装置。
【請求項７】
請求項６に記載の半導体集積回路の階層設計装置において、
前記階層ブロック内のレイアウトを設計する手段は、前記階層ブロック各々の階層ブロック端子位置が決定された後、前記階層ブロック間のレイアウト設計を行い、その後、各種類の前記階層ブロック内のレイアウト設計を行い、チップ全体のレイアウト設計を完了する半導体集積回路の階層設計装置。
【請求項８】
請求項６に記載の半導体集積回路の階層設計装置において、
前記階層ブロック内のレイアウトを設計する手段は、前記階層ブロック各々の階層ブロック端子位置が決定された後、各種類の前記階層ブロック内のレイアウト設計を行い、その後、前記階層ブロック間のレイアウト設計を行い、チップ全体のレイアウト設計を完了する半導体集積回路の階層設計装置。
【請求項９】
請求項６に記載の半導体集積回路の階層設計装置において、
前記階層ブロック端子位置を決定する手段は、
前記階層ブロック端子の初期位置に、各前記階層ブロック内の中心座標または各前記階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する手段と、
前記階層ブロック端子の前記初期位置間を接続する階層ブロック間の仮配線を行う手段と、
前記仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択する手段と、を含み、前記階層ブロック端子の座標を決定することを特徴とする半導体集積回路の階層設計装置。
【請求項１０】
請求項９に記載の半導体集積回路の階層設計装置において、
前記階層ブロック内のレイアウト設計を行う手段は、
前記同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに前記階層ブロック端子の仮位置を決定する手段と、
前記階層ブロック端子の前記仮位置の座標から、前記同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、前記仮配線の経路が前記重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、前記階層ブロック端子位置を更新する手段と、
前記更新する手段に、前記仮配線の経路の生成および前記階層ブロック端子位置の更新を、前記同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返させる手段と、を含み、前記同一機能を持つ階層ブロック集合の端子座標を決定することを特徴とする半導体集積回路の階層設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法および装置に関し、特に、階層的な設計を行う方法および装置に関する。
【背景技術】
【０００２】
従来、この種の階層設計では、設計対象の回路を複数の部分回路（以後、ブロック、階層ブロックとも呼ぶ）に分割し、各ブロックを設計した後、全てのブロックをひとつに統合することにより全体の設計を完成させる方法が採用されている。階層設計手法には、このような分割統治設計を行うことにより、一括処理、一括最適化が困難な大規模集積回路の設計を、小メモリ、短時間で効率よく行うことができるという効果がある。上記のような従来の階層設計装置の例が、特許文献１および特許文献２（特開２００４−１９２２２７号公報および特開２００４−３０２８１９号公報）に記載されている。【０００３】
階層設計における、問題を分割して解くための処理について図８を参照して説明する。
図８に示す例では、ゲート８−０６を備える階層ブロック１（８−０１）および階層ブロック２（８−０２）についての階層設計を行う場合の処理について示すものであり、各階層ブロックの境界端子８−０３（階層ブロック端子）の生成と位置決定が必要となる。これは階層ブロック内レイアウト（８−０４）と階層ブロック間レイアウト（８−０５）を独立に行うことを可能にするための処理である。階層ブロック端子配置装置の例が、特許文献３、特許文献４、特許文献５、および特許文献６（特開２０００−６７１０２号公報、特開２００１−２１０７１７号公報、特開２００２−２１５７０４号公報、および特表２００５−５１７２２３号公報）に記載されている。【０００４】
さて、大規模回路の設計は、設計効率化のため、同一機能を持つブロックをチップ内の複数箇所で繰り返し用いて実現されることが多い。同一機能を持つ複数のブロックを、設計のどの段階で、個別の異なる設計対象として扱うことにするかは、設計手法によって様々であるが、従来の階層設計手法では、主に以下の２つに分類される。【０００５】
１．ボトムアップ階層設計手法：ブロック内のレイアウト設計まで、一種類の設計を適用し、ブロックをチップ上に配置する段階で、ブロックが利用されている各箇所に共通レイアウトパタンを複製する。すなわち、複数の同一機能ブロックに対して、前もって設計した共通のレイアウトパタンを使用する。この時、ブロック端子位置はブロック内部の配置配線設計を考慮して決定される。【０００６】
２．トップダウン階層設計手法：機能あるいは論理設計の段階まで、一種類の設計を適用し、ブロック内レイアウト設計の段階で、同一機能ブロックを複製し、それぞれに対して個別に設計を行う。すなわち、複数の同一機能ブロックに対して、各々、異なるレイアウトパタンを使用する。この時、ブロック端子位置は、チップ上にブロックを配置した後、ブロック周囲の状況を考慮して、決定される。【０００７】
ボトムアップ階層設計手法について図９を参照して説明する。ここで、Ａ１とＡ２、Ｂ１とＢ２が、それぞれ同一機能ブロックの集合である。【０００８】
ボトムアップ階層設計手法では、第１段階９−０３として、まず、ブロック９−０１（階層ブロック）毎に内部のレイアウト設計を行う。この内部のレイアウト設計には、ブロック境界端子（階層ブロック端子）９−０２位置の決定、ブロック内の配置配線決定が含まれ、内部のレイアウト設計が完了したブロックを設計済みブロックとする。この時、ブロック内レイアウト設計を行うのは、Ａ、Ｂ、Ｃ、Ｄの４つのブロックである。また、各ブロック９−０１の入出力境界端子位置はブロック９−０１内部の配置配線設計が最適化されるように決定される。【０００９】
次に、第２段階９−０４として、同一機能ブロックを複製し(この例では、ＡをＡ１、Ａ２、ＢをＢ１、Ｂ２として複製する)、設計済みブロックをチップ上に配置し（位置や回転方向の決定を含む）、その間のブロック間配線９−０５を行う。【００１０】
最後に、第３段階９−０６として、第１段階９−０３と第２段階９−０４の結果を統合し、チップレイアウトを完了する。【００１１】
次に、トップダウン階層設計手法について図１０を参照して説明する。図９と同様に、Ａ１とＡ２、Ｂ１とＢ２が、それぞれ同一機能ブロック集合である。【００１２】
トップダウン階層設計手法では、まず、第１段階１０−０３として、ブロック間設計を行う。これは、チップ上のブロック１０−０１の位置を決めた後、ブロック１０−０１（階層ブロック）間の配線が最適となるように各ブロックの入出力境界端子（階層ブロック端子）１０−０２の位置を決定し、ブロック間の配線設計を行う。【００１３】
次に、第２段階１０−０４としてブロック毎の設計を行う。これはブロック入出力境界端子固定の条件の下、各ブロック内のレイアウト設計を行う。この時、Ａ１とＡ２、Ｂ１とＢ２で、それぞれ入出力端子位置が異なるため、同一機能ブロック集合に対して同一のレイアウトパタンを利用することができない。このため、ブロック内レイアウト設計を行うのは、Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ、Ｄの６つのブロックとなる。【００１４】
最後に、第３段階１０−０５として、第１段階１０−０３と第２段階１０−０４の結果を統合し、チップレイアウトを完了する。
【特許文献１】特開２００４−１９２２２７号公報
【特許文献２】特開２００４−３０２８１９号公報
【特許文献３】特開２０００−６７１０２号公報
【特許文献４】特開２００１−２１０７１７号公報
【特許文献５】特開２００２−２１５７０４号公報
【特許文献６】特表２００５−５１７２２３号公報
【発明の開示】
【００１５】
従来のボトムアップ階層設計手法には、複数の同一機能ブロックに対して、一種類のレイアウト設計を行えば良く、設計の手間が減るという利点はあるが、チップ上で各ブロックが使用される周囲の状況は各々異なるため、ブロック間の配線、タイミング設計に問題が生じる可能性がある。ブロックの境界端子位置を、各ブロックが１チップ上に集積された時の位置関係を考慮して決めることが不可能なため、例えば、図９を参照した説明における第２段階９−０４でのブロック間配線長が増大し、配線が困難になってしまう、あるいは、配線遅延が大きくなってしまうという問題がある。
【００１６】
従来のトップダウン階層設計手法には、チップ上のブロック周囲の状況を考慮して各ブロック個別に設計を行えるため柔軟性は高いが、同一機能のブロックが１チップ上で複数使用されている場合、それぞれ個別に設計を行わなければならず、設計効率が悪いという課題がある。例えば、図１０を参照した説明における第２段階１０−０４でのブロック内レイアウトを、複製されたブロックを含む全てのブロック（図１０の例では、Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ、Ｄの６つのブロック）に対して行う必要がある。
【００１７】
以上に述べたように、従来の階層設計方法には、本来一括して最適化すべき問題が分割されることにより、結果の全体的な最適性が失われてしまうという課題、あるいは、同一機能を持つブロックが１チップ上で複数使用されている場合、同一機能を持つ複数のブロックのブロック内レイアウト設計をそれぞれ個別に行う必要があり、設計効率が悪いという課題がある。
【００１８】
本発明は上述したような従来の技術が有する問題点に鑑みてなされたものであって、同一機能を持つブロックが複数使用されている半導体集積回路の設計において、使用メモリが少なく、かつ、設計期間を短縮できるという階層設計の利点を損なうことなく、問題分割により結果の全体最適性が失われてしまうという階層設計の問題点を解決する階層設計方法および装置を提供することを目的とする。
【００１９】
本発明の半導体集積回路の階層設計方法は、
階層ブロック集合をチップ上に配置した後、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子配置を行い、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行い、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了することを特徴とする。
【００２０】
チップ全体のレイアウト設計手順としては、まず、階層ブロック間のレイアウト設計を行い、次に、各種類の階層ブロック内のレイアウト設計を行う、あるいは、まず、各種類の階層ブロック内のレイアウト設計を行い、次に、階層ブロック間のレイアウト設計を行う、の２つの手順のいずれかを適用することができる。
【００２１】
ここで、階層ブロック端子の座標を決定する方法として、まず、階層ブロック端子の初期位置に各階層ブロック内の中心座標または各階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定し、階層ブロック端子の初期位置間を接続する階層ブロック間の仮配線を行い、仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子と決定する方法を適用することができる。
【００２２】
上記同一機能を持つ階層ブロック集合の端子座標を、以下の方法により決定することができる。まず、同一機能を持つ階層ブロック集合の同一端子座標を一致させるという制約を考慮せずに階層ブロック端子の仮位置を決定し、階層ブロック端子の仮位置の座標から、同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求める。次に、仮配線の経路が重心座標に近い位置でブロック境界を横切るように再度仮配線の経路を求め、階層ブロック端子位置を更新する。仮配線の経路の生成とブロック端子位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返し、最終的な端子位置を得ることができる。
【００２３】
本発明の半導体集積回路の階層設計装置は、階層ブロック集合をチップ上に配置する手段と、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行う手段と、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行う手段と、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する手段と、を備えることを特徴とする。
【００２４】
チップ全体のレイアウト設計を完了する手段としては、まず、階層ブロック間のレイアウト設計を行い、次に、各種類の階層ブロック内のレイアウト設計を行う手段、あるいは、まず、各種類の階層ブロック内のレイアウト設計を行い、次に、階層ブロック間のレイアウト設計を行う手段、のいずれかを備えることができる。
【００２５】
ここで、階層ブロック端子を配置する手段は、階層ブロック端子の初期位置に各階層ブロック内の中心座標または各階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する手段と、階層ブロック端子の初期位置間を接続する階層ブロック間の仮配線を行う手段と、仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択する手段と、を含み、階層ブロック端子の座標を決定することができる。
【００２６】
上記階層ブロック内のレイアウト設計を行う手段は、同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに階層ブロック端子の仮位置を決定する手段と、階層ブロック端子の仮位置の座標から、同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、仮配線の経路が重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、階層ブロック端子位置を更新する手段と、更新する手段に、仮配線の経路の生成および階層ブロック端子位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返させる手段と、を含み、同一機能を持つ階層ブロック集合の端子座標を決定することができる。
【００２７】
上記のように構成される本発明は、以下に記載する効果を奏する。
同一機能を持つ階層ブロック集合に対して、共通のブロック内レイアウト設計を一種類のみ行えば良いため、設計の効率化を実現できるという効果がある。かつ、同一機能を持つ階層ブロック集合に対する共通のブロック内レイアウト設計パタンを、各機能ブロックの周囲の接続およびレイアウト状況全体を考慮して生成するため、ブロック間の配線、タイミング設計収束性に問題が生じる可能性を少なくできるという効果がある。
【図面の簡単な説明】
【００２８】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００２９】
【図１】本発明の実施形態に係る半導体集積回路の階層設計装置の一実施例の構成を示すブロック図である。
【図２】図１の半導体集積回路の階層設計装置の動作を示す図である。
【図３】本発明の実施形態に係る半導体集積回路の階層設計装置の他の実施例の構成を示すブロック図である。
【図４】図３の半導体集積回路の階層設計装置の動作を示す図である。
【図５】本発明の実施形態に係る半導体集積回路の階層設計装置の階層ブロック端子配置手段の構成を示すブロック図である。
【図６】図５の階層ブロック端子配置手段の動作を示す図である。
【図７】図５の階層ブロック端子配置手段において、同一機能ブロックの同一端子の位置を一致させるための処理を示す図である。
【図８】従来の階層設計装置におけるブロック境界端子の生成と位置決定を示す図である。
【図９】従来手法のひとつであるボトムアップ階層設計手法を示す図である。
【図１０】従来手法のひとつであるトップダウン階層設計手法を示す図である。
【発明を実施するための最良の形態】
【００３０】
（第一の実施の形態）
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図１は、本発明の実施の形態に係る半導体集積回路の階層設計装置の一実施例の構成をその動作とともに示す図である。【００３１】
本発明の実施形態の半導体集積回路の階層設計装置１は、階層ブロック集合をチップ上に配置する手段（階層ブロック配置手段１−０２）と、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行う手段（階層ブロック端子配置手段１−０３）と、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行う手段（同一機能ブロック集合の端子位置制約充足性判定手段１−０４、階層ブロック内レイアウト手段１−０６）と、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する手段（階層ブロック間レイアウト手段１−０５、階層ブロック内レイアウト手段１−０６、チップレイアウト組み上げ手段１−０７）と、を備える。さらに、本実施形態の半導体集積回路の階層設計装置１において、階層ブロック間のレイアウト設計を行った後、各種類の階層ブロック内のレイアウト設計を行い、チップ全体のレイアウト設計を完了する手段（階層ブロック間レイアウト手段１−０５、階層ブロック内レイアウト手段１−０６、チップレイアウト組み上げ手段１−０７）を備える。【００３２】
本実施形態の半導体集積回路の階層設計装置１は、図１に示されるように、チップ情報入力手段１−０１と、階層ブロック配置手段１−０２と、階層ブロック端子配置手段１−０３と、同一機能ブロック集合の端子位置制約充足性判定手段１−０４と、階層ブロック間レイアウト手段１−０５と、階層ブロック内レイアウト手段１−０６と、チップレイアウト組み上げ手段１−０７と、から構成されている。なお、本実施例の半導体集積回路の階層設計装置１および以下の各実施例の半導体集積回路の階層設計装置は、制御装置、記憶装置、入力装置および表示装置からなる一般的なコンピュータにより構成されるものである。これらの各部については図示しない。上記の各手段は、記憶装置に格納されたプログラムにより動作する制御装置により、ＲＯＭ、ＲＡＭなどの記憶装置上に構築されて制御される。【００３３】
上記の各手段はそれぞれ、概略、以下のように動作する。
チップ情報入力手段１−０１は、設計対象となるチップのゲートレベルネットリストとその階層構成に関する情報を記憶装置に入力する。
階層ブロック配置手段１−０２は、ゲートレベルネットリストをその階層構成情報に従ってまとめた階層ブロック集合をチップ上に配置する。
階層ブロック端子配置手段１−０３は、階層ブロックの端子をブロック境界に配置する。【００３４】
同一機能ブロック集合の端子位置制約充足性判定手段１−０４は、同一機能を持つ複数の階層ブロック集合に対して、同一の階層ブロック端子が、全ての同種の階層ブロック上で同一位置に配置されているか否かの判定を行う。その結果、同一の階層ブロック端子が同一位置に配置されていないと判定された場合、再度、階層ブロック端子配置手段１−０３が端子配置を行う。この処理を同種の階層ブロックの端子位置が一致するまで繰り返す。同種の階層ブロックの端子位置が一致した後、次の階層ブロック間レイアウト手段１−０５が階層ブロック間レイアウトを行う。【００３５】
階層ブロック間レイアウト手段１−０５は、階層ブロック端子位置を固定とし、階層ブロック端子間を接続する配線経路を生成する。
階層ブロック内レイアウト手段１−０６は、階層ブロック端子位置を固定とし、各種類の階層ブロック内の配置および配線を行う。
チップレイアウト組み上げ手段１−０７は、階層ブロック間レイアウトと階層ブロック内レイアウトを統合し、チップレイアウト設計を完了する。【００３６】
本実施形態の半導体集積回路の階層設計装置１の動作を図２に示す。
本実施形態の半導体集積回路の階層設計方法は、階層ブロック集合をチップ上に配置した後（２−０１）、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行い（２−０２）、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行い、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する。さらに、本実施形態の半導体集積回路の階層設計方法において、階層ブロック間のレイアウト設計を行った（２−０３）後、各種類の階層ブロック内のレイアウト設計を行い（２−０５）、チップ全体のレイアウト設計を完了する（２−０６）。【００３７】
図２において、Ａ１とＡ２、Ｂ１とＢ２が、それぞれ同一機能を持つ階層ブロック集合である。まず、第１段階（２−０３）として、階層ブロック配置手段１−０２が、階層ブロック集合Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ、Ｄをチップ上に配置する（２−０１）。次に、階層ブロック端子配置手段１−０３が、ブロック間の配線性、タイミングを考慮し、各階層ブロックの端子の位置を決定する（２−０２）。この時、同一機能ブロック集合の端子位置制約充足性判定手段１−０４により、同一機能を持つ複数の階層ブロック集合に対して、同一の階層ブロック端子が、全ての同種の階層ブロック上で同一位置に配置されているか否かの判定が行われる。その結果、同一の階層ブロック端子が同一位置に配置されていないと判定された場合、再度、階層ブロック端子配置手段１−０３により端子配置が行われる。このようにして、Ａ１とＡ２、Ｂ１とＢ２のブロック端子については、同一端子の位置が一致するまでブロック端子配置を繰り返す。次に、階層ブロック間レイアウト手段１−０５が、上記で求めたブロック端子位置を固定し、ブロック間を接続する配線経路を生成する（２−０４）。【００３８】
次に、第２段階として、階層ブロック内レイアウト手段１−０６が、ブロック内レイアウトを行う（２−０５）。この時、同一機能を持つＡ１とＡ２、Ｂ１とＢ２に対しては、それぞれ一種類の共通レイアウト設計パタン、Ａ、Ｂを生成すれば良い。Ａ１、Ａ２、Ｂ１、Ｂ２、４種類のレイアウト設計パタンを生成する必要がないのは、第１段階の階層ブロック間レイアウト（２−０３）において、Ａ１とＡ２、Ｂ１とＢ２のブロック端子位置が一致するようにブロック端子位置が決定されているためである。最後に、第３段階として、チップレイアウト組み上げ手段１−０７が、ブロック間レイアウトとブロック内レイアウトを統合し、チップ設計を完了する（２−０６）。この時、ブロック内レイアウトパタンＡはＡ１、Ａ２に、ブロック内レイアウトパタンＢはＢ１、Ｂ２にそれぞれ複製されてチップ上に統合される。【００３９】
（第二の実施の形態）
図３は、本発明に係る半導体集積回路の階層設計装置の別の実施例の構成をその動作とともに示す図である。
各手段の動作内容は図１の実施例と同様であるが、階層ブロック間レイアウトと階層ブロック内レイアウトの適用順序が異なる。本実施形態の半導体集積回路の階層設計装置３は、階層ブロック集合をチップ上に配置する手段（階層ブロック配置手段３−０２）と、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行う手段（階層ブロック端子配置手段３−０３）と、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行う手段（同一機能ブロック集合の端子位置制約充足性判定手段３−０４、階層ブロック内レイアウト手段３−０５）と、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する手段（階層ブロック内レイアウト手段３−０５、チップレイアウト組み上げ手段３−０６、階層ブロック間レイアウト手段３−０７）と、を備える。さらに、本実施形態の半導体集積回路の階層設計装置３において、各種類の階層ブロック内のレイアウト設計を行った後、階層ブロック間のレイアウト設計を行い、チップ全体のレイアウト設計を完了する手段（階層ブロック内レイアウト手段３−０５、チップレイアウト組み上げ手段３−０６、階層ブロック間レイアウト手段３−０７）を備える。【００４０】
すなわち、図３では、まず、各種類の階層ブロック内レイアウトを行い（階層ブロック内レイアウト手段３−０５）、チップレイアウトの組み上げを行った（チップレイアウト組み上げ手段３−０６）後、階層ブロック間レイアウトを行う（階層ブロック間レイアウト手段３−０７）。【００４１】
図３の半導体集積回路の階層設計装置３の動作を図４に示す。
本実施形態の半導体集積回路の階層設計方法は、階層ブロック集合をチップ上に配置した後（４−０１）、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行い（４−０２）、同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行い、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する。さらに本実施形態の半導体集積回路の階層設計方法において、各種類の階層ブロック内のレイアウト設計を行った（４−０５）後、階層ブロック間のレイアウト設計を行い（４−０６）、チップ全体のレイアウト設計を完了する（４−０７）。【００４２】
図４において、Ａ１とＡ２、Ｂ１とＢ２が、それぞれ同一機能を持つ階層ブロックである。まず、第１段階（４−０３）として、階層ブロック配置手段３−０２が、階層ブロック集合Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ、Ｄをチップ上に配置する（４−０１）。次に、階層ブロック端子配置手段３−０３が、ブロック間の配線性、タイミングを考慮し、各階層ブロックの端子の位置を決定する（４−０２）。この時、同一機能ブロック集合の端子位置制約充足性判定手段３−０４により、同一機能を持つ複数の階層ブロック集合に対して、同一の階層ブロック端子が、全ての同種の階層ブロック上で同一位置に配置されているか否かの判定が行われる。その結果、同一の階層ブロック端子が同一位置に配置されていないと判定された場合、再度、階層ブロック端子配置手段３−０３により端子配置が行われる。このようにして、Ａ１とＡ２、Ｂ１とＢ２のブロック端子については、同一端子の位置が一致するまでブロック端子配置を繰り返す。なお、この段階では、階層ブロック間結線要求（４−０４）に対応する階層ブロック間配線は生成しない。階層ブロック間配線の生成は、階層ブロック間結線要求（４−０４）に従って、階層ブロック間レイアウト手段３−０７により、最終段階で行なわれる。【００４３】
次に、第２段階として、階層ブロック内レイアウト手段３−０５が、ブロック内レイアウトを行う（４−０５）。この時、同一機能を持つＡ１とＡ２、Ｂ１とＢ２に対しては、それぞれ一種類の共通レイアウト設計パタン、Ａ、Ｂを生成すれば良い。Ａ１、Ａ２、Ｂ１、Ｂ２、４種類のレイアウト設計パタンを生成する必要がないのは、階層ブロック間レイアウト（４−０３）において、Ａ１とＡ２、Ｂ１とＢ２のブロック端子位置が一致するようにブロック端子位置が決定されているためである。次に、第３段階として、チップレイアウト組み上げ手段３−０６が、ブロック内レイアウトをチップ上に展開する（４−０６）。この時、ブロックレイアウトＡはＡ１、Ａ２に、ブロック内レイアウトパタンＢはＢ１、Ｂ２にそれぞれ複製されてチップ上に展開される。最後に階層ブロック間レイアウト手段３−０７が、ブロック間を接続する配線経路を生成して（４−０７）チップ設計を完了する。【００４４】
（第三の実施の形態）
次に、図５、図６、および図７を参照して、階層ブロック端子配置手段５の一実施例を説明する。これは図１の階層ブロック端子配置手段１−０３および同一機能ブロック集合の端子位置制約充足性判定手段１−０４、ならびに、図３の階層ブロック端子配置手段３−０３および同一機能ブロック集合の端子位置制約充足性判定手段３−０４を詳細に説明するものである。【００４５】
本実施形態の半導体集積回路の階層設計装置において、階層ブロック端子を配置する手段は、（階層ブロック端子配置手段１−０３、３−０３）は、階層ブロック端子の初期位置に、各階層ブロック内の中心座標または各階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する手段（初期端子位置生成手段５−０２）と、階層ブロック端子の初期位置間を接続する階層ブロック間の仮配線を行う手段（経路探索手段５−０５）と、仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択する手段（階層ブロック端子位置仮決定手段５−０６）と、を含み、階層ブロック端子の座標を決定する。【００４６】
さらに、本実施形態の半導体集積回路の階層設計装置において、階層ブロック内のレイアウト設計を行う手段（同一機能ブロック集合の端子位置制約充足性判定手段１−０４、３−０４、階層ブロック内レイアウト手段１−０６、３−０５）は、同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに階層ブロック端子の仮位置を決定する手段（不図示）と、階層ブロック端子の仮位置の座標から、同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、仮配線の経路が重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、階層ブロック端子位置を更新する手段（不図示）と、更新する手段に、仮配線の経路の生成および階層ブロック端子位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返させる手段（不図示）と、を含み、同一機能を持つ階層ブロック集合の端子座標を決定する。【００４７】
階層ブロック端子配置手段５は、図５に示されるように、配線格子生成手段５−０１と、初期端子位置生成手段５−０２と、端子目標位置設定手段５−０３と、経路探索コスト設定手段５−０４と、経路探索手段５−０５と、階層ブロック端子位置仮決定手段５−０６と、同一機能ブロック集合の端子位置制約充足性判定手段５−０７と、から構成されている。【００４８】
上記の各手段はそれぞれ、概略、以下のように動作する。
配線格子生成手段５−０１は、配線経路を探索するための配線格子を、チップ全体を覆うように生成する。
初期端子位置生成手段５−０２は、初期端子位置に、各階層ブロック内の中心座標または階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する。【００４９】
端子目標位置設定手段５−０３は、同一機能を持つ階層ブロックの同一端子の配置位置についての目標位置を設定する。図５の処理は、同一機能を持つ階層ブロックの同一端子の位置が一致するまで繰り返されるが、端子目標位置は前回の端子配置結果を基に設定される。前回の端子配置結果がない状態では、端子目標位置は設定されない。【００５０】
経路探索コスト設定手段５−０４は、以降の手段により求めた端子位置が端子目標位置設定手段５−０３で求めた端子目標位置と異なる場合に、端子目標位置と端子位置との距離に応じて与えるペナルティを設定する。図５の処理は、同一機能ブロックの同一端子の位置が一致するまで繰り返されるが、この繰り返しが増えるほど、また、端子目標位置と端子位置との差が大きい程、ペナルティに大きな値が設定されるようにする。【００５１】
経路探索手段５−０５は、まず、初期端子位置を５−０２で求めた位置から最も近い格子交点に移動し、配線格子上で端子間の経路を探索する。この時、同一機能を持つ階層ブロックの同一端子に接続するネットに対する経路探索においては、経路探索コスト設定手段５−０４で設定したペナルティを考慮し、端子目標位置設定手段５−０３で設定した端子目標位置に近い位置で、配線経路がブロック境界と交差するように、経路探索を行う。【００５２】
階層ブロック端子位置仮決定手段５−０６は、経路探索手段５−０５で求めた経路がブロック境界と交差する点をブロック端子位置として仮決定する。【００５３】
同一機能ブロック集合の端子位置制約充足性判定手段５−０７は、階層ブロック端子位置仮決定手段５−０６で求めた端子位置について、同一機能を持つ複数の階層ブロックに対して、同一ブロック端子が、全ての同種の階層ブロック上で同一位置に配置されているか否かの判定を行う。その結果、同一ブロック端子が同一位置に配置されていないと判定された場合、再度、端子目標位置と経路探索コストを設定し、ブロック間経路探索により、ブロック端子位置を決定する。経路探索コストは、同一機能ブロックの同一端子の位置を一致させるための前述のペナルティと、経路長を最小化するための経路長コストからなる。経路長コストは経路長が大きくなるほど大きく設定される。この処理を、同種の階層ブロックの端子位置が一致するまで繰り返す。同種の階層ブロックの端子位置が一致した時点で端子配置処理を終了する。【００５４】
以上の動作を図６および図７に示す。
本実施形態の半導体集積回路の階層設計方法において、階層ブロック端子を配置するとき、まず、階層ブロック端子の初期位置６−０２に、各階層ブロック内の中心座標または各階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定し、階層ブロック端子の初期位置（６−０２）間を接続する階層ブロック間の仮配線（階層ブロック間仮配線６−０４）を行い、仮配線（階層ブロック間仮配線６−０４）の経路と階層ブロック境界が交差する点を階層ブロック端子位置６−０５として選択することにより、階層ブロック端子の座標（ブロック最終端子位置６−０７）を決定する。【００５５】
本実施形態の半導体集積回路の階層設計方法において、階層ブロック内のレイアウト設計を行うとき、まず、同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに階層ブロック端子の仮位置（階層ブロック端子位置６−０５）を決定し、次に、階層ブロック端子の仮位置（階層ブロック端子位置６−０５）の座標から、同一機能を持つ階層ブロック集合の同一端子集合の重心座標（端子重心７−０７）を求め、仮配線（階層ブロック間仮配線６−０４）の経路が重心座標に近い位置で階層ブロック境界を横切るように再度仮配線（階層ブロック間再配線結果６−０６）の経路を求め、階層ブロック端子の仮位置を更新し、仮配線の経路の生成と階層ブロック端子の仮位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返すことにより、最終的な端子位置（ブロック最終端子位置６−０７）を決定することにより、同一機能を持つ階層ブロック集合の端子座標を決定する。【００５６】
まず、図６（ａ）に示すように、配線格子生成手段５−０１が、チップ全体を覆う配線格子６−０３を設定する。そして、初期端子位置生成手段５−０２が、階層ブロック端子の初期位置に、各階層ブロック内の中心座標または各階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する（６−０２）。次に、図６（ａ）の階層ブロック間結線要求（６−０１）に従って、配線格子（６−０３）上で、図６（ｂ）に示すように、経路探索手段５−０５が、階層ブロック端子の初期位置間を接続する仮配線（階層ブロック間仮配線６−０４）の経路を求める。そして、階層ブロック端子位置仮決定手段５−０６が、得られた仮配線の経路と階層ブロック境界が交差する点に階層ブロック端子仮位置（６−０５）を設定する。この時、最初の経路探索では、同一機能を持つ階層ブロックのブロック端子位置に関する制約は特に設定しない。【００５７】
次に、この結果に対して、同一機能ブロック集合の端子位置制約充足性判定手段５−０７が、同一機能を持つ複数の階層ブロックの同一ブロック端子が、全ての同種の階層ブロック上で同一位置に配置されているか否かを調べる。一致していない場合は、端子目標位置設定手段５−０３が、端子目標位置を設定し、再度、経路探索手段５−０５が、探索経路を行う。図６（ｂ）の例では、同一機能を持つ階層ブロック集合Ａ１とＡ２の端子位置、Ｂ１とＢ２の端子位置が、それぞれ一致しているか否かを調べ、一致していないため、端子目標位置設定手段５−０３が、Ａ１、Ａ２、Ｂ１、Ｂ２の目標端子位置を設定し、再度、経路探索手段５−０５が、経路探索を行う。この時の目標端子位置としては、図７に示すように、Ｂ１の端子位置（７−０１）とＢ２の端子位置（７−０３）の重心座標Ｔ0（端子重心７−０７）を求め、Ｔ0から最も近いブロック境界上の座標Ｔ0’（端子目標位置７−０８）を設定する。図中、７−０２はＢ１からの配線を示し、７−０４はＢ２からの配線を示す。【００５８】
２回目以降の経路探索では、経路がブロック境界を横切る位置と、上記のようにして求めた端子目標位置の差をペナルティとして、経路探索を行う。このペナルティとして、経路探索回数が増える程、また、端子目標位置と端子位置との差が大きい程、大きな値を設定する。これにより、図５の経路探索繰り返しの中で、同一機能を持つ階層ブロックの同一ブロック端子の位置は徐々に一致するように移動する。最終的に図６（ｃ）に示すように、ブロックＡ１とＡ２、ブロックＢ１とＢ２の端子位置が一致して処理が終了する。【００５９】
以上、実施例を参照して本願発明を説明したが、本願発明は上記実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【００６０】
また、本発明の実施の形態として、以下の態様も採用することができる。
（１）  半導体集積回路の階層設計方法であって、
階層ブロック集合をチップ上に配置した後、同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行い、前記同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行い、得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了することを特徴とする半導体集積回路の階層設計方法。
（２）  上記（１）に記載の半導体集積回路の階層設計方法において、
階層ブロック間のレイアウト設計を行った後、前記各種類の階層ブロック内のレイアウト設計を行い、チップ全体のレイアウト設計を完了することを特徴とする半導体集積回路の階層設計方法。
（３）  上記（１）に記載の半導体集積回路の階層設計方法において、
前記各種類の階層ブロック内のレイアウト設計を行った後、階層ブロック間のレイアウト設計を行い、チップ全体のレイアウト設計を完了することを特徴とする半導体集積回路の階層設計方法。
（４）  上記（１）に記載の半導体集積回路の階層設計方法において、
前記階層ブロック端子の座標を決定する方法として、まず、前記階層ブロック端子の初期位置に、各前記階層ブロック内の中心座標または各前記階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定し、前記階層ブロック端子の前記初期位置間を接続する階層ブロック間の仮配線を行い、前記仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択することを特徴とする半導体集積回路の階層設計方法。
（５）  上記（４）に記載の半導体集積回路の階層設計方法において、
前記同一機能を持つ階層ブロック集合の端子座標を決定する方法として、まず、前記同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに前記階層ブロック端子の仮位置を決定し、次に、前記階層ブロック端子の前記仮位置の座標から、前記同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、前記仮配線の経路が前記重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、前記階層ブロック端子の仮位置を更新し、前記仮配線の経路の生成と前記階層ブロック端子の前記仮位置の更新を、同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返すことにより、最終的な端子位置を決定することを特徴とする半導体集積回路の階層設計方法。
（６）  半導体集積回路の階層設計装置であって、
階層ブロック集合をチップ上に配置する手段と、
同一機能を持つ階層ブロック集合に対して、同一の階層ブロック端子の座標が一致するように、階層ブロック端子の配置を行う手段と、
前記同一機能を持つ階層ブロック集合に対しては、一種類の階層ブロック内のレイアウト設計のみを行い、各種類の階層ブロック内のレイアウト設計を行う手段と、
得られたレイアウトパタンを複製することにより、チップ全体のレイアウト設計を完了する手段と、を有することを特徴とする半導体集積回路の階層設計装置。
（７）  上記（６）に記載の半導体集積回路の階層設計装置において、
階層ブロック間のレイアウト設計を行った後、前記各種類の階層ブロック内のレイアウト設計を行い、チップ全体のレイアウト設計を完了する手段を有することを特徴とする半導体集積回路の階層設計装置。
（８）  上記（６）に記載の半導体集積回路の階層設計装置において、
前記各種類の階層ブロック内のレイアウト設計を行った後、階層ブロック間のレイアウト設計を行い、チップ全体のレイアウト設計を完了する手段を有することを特徴とする半導体集積回路の階層設計装置。
（９）  上記（６）に記載の半導体集積回路の階層設計装置において、
前記階層ブロック端子の座標を決定する手段として、
前記階層ブロック端子の初期位置に、各前記階層ブロック内の中心座標または各前記階層ブロック内の論理ゲートの仮配置結果を基に算出した座標を設定する手段と、
前記階層ブロック端子の前記初期位置間を接続する階層ブロック間の仮配線を行う手段と、
前記仮配線の経路と階層ブロック境界が交差する点を階層ブロック端子位置として選択する手段と、を有することを特徴とする半導体集積回路の階層設計装置。
（１０）  上記（９）に記載の半導体集積回路の階層設計装置において、
前記同一機能を持つ階層ブロック集合の端子座標を決定する手段として、
前記同一機能を持つ階層ブロック集合の同一端子の座標を一致させるという制約を考慮せずに前記階層ブロック端子の仮位置を決定する手段と、
前記階層ブロック端子の前記仮位置の座標から、前記同一機能を持つ階層ブロック集合の同一端子集合の重心座標を求め、前記仮配線の経路が前記重心座標に近い位置で階層ブロック境界を横切るように再度仮配線の経路を求め、前記階層ブロック端子位置を更新する手段と、
前記仮配線の経路を決定する手段および前記階層ブロック端子位置を更新する手段に、前記同一機能を持つ階層ブロック集合の同一端子の座標が一致するまで繰り返させる手段と、を有することを特徴とする半導体集積回路の階層設計装置。【００６１】
この出願は、２００６年７月６日に出願された日本出願特願２００６−１８６５５０号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
0005365192.tif 000002
【図２】
0005365192.tif 000003
【図３】
0005365192.tif 000004
【図４】
0005365192.tif 000005
【図５】
0005365192.tif 000006
【図６】
0005365192.tif 000007
【図７】
0005365192.tif 000008
【図８】
0005365192.tif 000009
【図９】
0005365192.tif 000010
【図１０】
0005365192.tif 000011