(57)【特許請求の範囲】
【請求項１】
複数のフリップフロップ回路と前記複数のフリップフロップ回路間に適宜接続された組み合わせ回路とを含む半導体装置のレイアウト設計に際して、
コンピュータシステムが、前記半導体装置のネットリストを参照して、各ブロック毎の目的関数の値が均一となるように前記複数のフリップフロップ回路および前記組み合わせ回路をＮ個のブロックに振り分ける第１ステップを実行し、
前記各ブロック毎の目的関数は、自身のブロックに含まれる回路に対するタイミング情報を反映した第１変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項２】
請求項１記載の半導体装置の設計方法において、
前記タイミング情報には、前記複数のフリップフロップ回路毎のクロック周波数の情報が含まれていることを特徴とする半導体装置の設計方法。
【請求項３】
請求項１記載の半導体装置の設計方法において、
前記タイミング情報には、前記複数のフリップフロップ回路間の前記組み合わせ回路を介したタイミングパスに対して静的タイミング検証を行った結果の情報が含まれていることを特徴とする半導体装置の設計方法。
【請求項４】
請求項１記載の半導体装置の設計方法において、
前記各ブロック毎の目的関数は、更に、前記自身のブロックに含まれるフリップフロップ回路を対象として、同一のクロックでトリガされる前記フリップフロップ回路の数を反映した第２変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項５】
請求項４記載の半導体装置の設計方法において、
前記各ブロック毎の目的関数は、更に、前記自身のブロックに含まれる回路内の各セルに対する消費電力の大きさを反映した第３変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項６】
請求項１記載の半導体装置の設計方法において、
前記コンピュータシステムは、更に、前記第１ステップによって生成された前記Ｎ個のブロックを単位としてフロアプランを行う第２ステップを実行することを特徴とする半導体装置の設計方法。
【請求項７】
請求項１記載の半導体装置の設計方法において、
前記コンピュータシステムは、更に、前記第１ステップによって生成された前記Ｎ個のブロックを並列処理単位として、複数のＣＰＵを用いて並列に自動レイアウト処理を行う第３ステップを実行することを特徴とする半導体装置の設計方法。
【請求項８】
複数のフリップフロップ回路と前記複数のフリップフロップ回路間に適宜接続された組み合わせ回路とを含む半導体装置のレイアウト設計に際して、
コンピュータシステムが、前記半導体装置のネットリストを参照して、
前記複数のフリップフロップ回路の中からＭ個のフリップフロップ回路を選択し、前記Ｍ個のフリップフロップ回路をシードとして設定する第１ステップと、
前記Ｍ個のシードのそれぞれを起点として、各シード毎に前段または後段に位置するフリップフロップ回路を段階的に取り込みながら、各シードを目的関数の値が均一となるように並行して拡大させ、拡大の過程で第１条件を満たしたシードをサブグラフとし、前記サブグラフになっていない残存シードの数が第１の割合に減少するまで前記各シードの拡大を継続する第２ステップと、
前記残存シードの数と前記サブグラフの数の合計値が第２の割合に減少するまで前記サブグラフを統合する第３ステップと、
前記残存シードおよび前記サブグラフにおける前記目的関数の値と、前記残存シードにも前記サブグラフにも属していない回路におけるタイミングパス数とに基づいてトータルコストを算出する第４ステップと、
前記トータルコストが悪化するまで前記第２ステップ〜前記第４ステップを繰り返す第５ステップとを実行し、
前記目的関数は、前記各シードの拡大範囲内に含まれる回路に対するタイミング情報を反映した第１変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項９】
請求項８記載の半導体装置の設計方法において、
前記第２ステップは、前記ネットリストの論理階層をフラットにした状態で行われ、
前記第１条件は、他のシードの拡大範囲に接することで、それ以上の拡大ができなくなった場合に成立することを特徴とする半導体装置の設計方法。
【請求項１０】
請求項８記載の半導体装置の設計方法において、
前記第２ステップは、前記ネットリストの論理階層を維持した状態で行われ、
前記第１条件は、論理階層の境界に接することで、それ以上の拡大ができなくなった場合に成立することを特徴とする半導体装置の設計方法。
【請求項１１】
請求項８記載の半導体装置の設計方法において、
前記タイミング情報には、前記複数のフリップフロップ回路毎のクロック周波数の情報が含まれていることを特徴とする半導体装置の設計方法。
【請求項１２】
請求項８記載の半導体装置の設計方法において、
前記タイミング情報には、前記複数のフリップフロップ回路間の前記組み合わせ回路を介したタイミングパスに対して静的タイミング検証を行った結果の情報が含まれていることを特徴とする半導体装置の設計方法。
【請求項１３】
請求項８記載の半導体装置の設計方法において、
前記目的関数は、更に、前記各シードの拡大範囲内に含まれるフリップフロップ回路を対象として、同一のクロックでトリガされる前記フリップフロップ回路の数を反映した第２変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項１４】
請求項１３記載の半導体装置の設計方法において、
前記目的関数は、更に、前記各シードの拡大範囲内に含まれる回路内の各セルに対する消費電力の大きさを反映した第３変数を含んでいることを特徴とする半導体装置の設計方法。
【請求項１５】
請求項８記載の半導体装置の設計方法において、
前記コンピュータシステムは、前記第１ステップにおいて、前記ネットリストの論理階層を下層方向に向けて探索しながら前記Ｍ個と同程度の数で構成される下位下層ブロックを検出し、この検出した下位下層ブロックのそれぞれの中から前記シードを設定することを特徴とする半導体装置の設計方法。
【請求項１６】
請求項１５記載の半導体装置の設計方法において、
前記コンピュータシステムは、前記下位下層ブロックのそれぞれの中から前記シードを設定する際に、前記下位下層ブロックのそれぞれの中から前記下位下層ブロックの外部に向けて入力または出力を行うフリップフロップ回路を識別し、このフリップフロップ回路から最も多い段数を経て接続されるフリップフロップ回路を前記シードとして設定することを特徴とする半導体装置の設計方法。
【請求項１７】
請求項８記載の半導体装置の設計方法において、
前記コンピュータシステムは、更に、前記第５ステップの結果を用いて前記トータルコストが最良となる前記残存シードおよび前記サブグラフを認識し、この最良となる前記残存シードおよび前記サブグラフをそれぞれブロック単位としてフロアプランを行う第６ステップを実行することを特徴とする半導体装置の設計方法。
【請求項１８】
請求項８記載の半導体装置の設計方法において、
前記コンピュータシステムは、更に、前記第５ステップの結果を用いて前記トータルコストが最良となる前記残存シードおよび前記サブグラフを認識し、この最良となる前記残存シードおよび前記サブグラフをそれぞれ並列処理単位として、複数のＣＰＵを用いて並列に自動レイアウト処理を行う第７ステップを実行することを特徴とする半導体装置の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の設計方法に関し、特に、全体のレイアウトを分割して自動レイアウトする際の分割方式として適用して有効な技術に関する。
【背景技術】
【０００２】
例えば、特許文献１には、概略配線処理の後に配線領域を分割し、各分割配線領域の詳細配線処理を並列で行う際に、この各分割配線領域の詳細配線処理時間を均等化する方法が示されている。具体的には、概略格子毎の配線負荷が算出され、プロセッサ数と同数に設定した複数の種を起点として、それぞれの周囲から、統合した際の詳細配線負荷増分が少なくなる概略格子を逐次選択して統合していく処理が行われる。また、概略格子毎の配線負荷は、対象とする概略格子内に含まれる配線数、配線禁止量、ならびに格子形状の歪み率に基づいて定められる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−３４８７８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば、大規模な半導体チップの実装方法として、階層レイアウト手法が知られている。図２９は、一般的な階層レイアウト手法の一例を説明するものであり、（ａ）はその処理の流れを示すフロー図、（ｂ）は入力となる設計データの論理階層図、（ｃ）は出力となるレイアウトを示す概略図である。まず、入力として図２９（ｂ）に示すような、論理階層構造のネットリストデータが与えられる。図２９（ｂ）の例では、回路全体となる最上位階層ＴＯＰが３個のブロックＢＬＫ＿Ａ〜ＢＬＫ＿Ｃからなる下位下層に分割され、ＢＬＫ＿Ｃが更に２個のブロックＢＬＫ＿Ｄ，ＢＬＫ＿Ｅからなる下位下層に分割されている。ここで、各ブロックは、機能的な単位の固まりとなっている。
【０００５】
このような入力データを用いてレイアウト設計を行う場合、通常、まず仮配置（フロアプラン）により、図２９（ｂ）の論理構造に基づいて各ブロックの概略的な配置や各ブロック間の概略的な配線が行われる（Ｓ２９０１）。その後、この各ブロックを分割単位とした並列処理によって、各ブロック内の概略的な回路配置や回路間配線が定められる（Ｓ２９０２，Ｓ２９０３）。次いで、回路全体に対して適宜配置調整や最適化が行われた後（Ｓ２９０４）、クロック設計が行われる（Ｓ２９０５）。その後、再度、各ブロックを分割単位とした並列処理によって、各ブロック内の詳細な回路配置や回路間配線が定められ、更に各ブロック間の詳細な配線も定められる（Ｓ２９０６，Ｓ２９０７）。その結果、図２９（ｃ）に示すように、図２９（ｂ）の論理階層構造に対応したレイアウトが得られることになる。
【０００６】
このように、階層レイアウト手法では、通常、論理階層すなわち半導体チップ内での機能的な単位を区切りとするブロックに基づいてデータ分割が行われ、分割された各データを並列処理単位としてコンピュータシステムによる自動レイアウトが行われる。しかしながら、この場合、半導体チップ全体から見ると、各ブロック毎の論理的なサイズ（セル数およびネット数）が不均一となる可能性が高く、それぞれの処理データ量も不均一となり、全体的なレイアウト処理時間の増大を招く恐れがある。
【０００７】
一方、例えば、次の（Ａ）、（Ｂ）を指標としてブロック単位への分割を行うことが考えられる。（Ａ）各ブロックが均一なゲート数（セル面積）ならびにブロック面積となるように分割する。（Ｂ）各ブロックのインタフェースピンが同じ数となるように分割する。このような分割を行い、各ブロックを均一な処理データ量にすることにより、各ブロック毎のレイアウト処理時間の均一化と全体的なレイアウト処理時間の短縮が期待される。しかしながら、この場合においても、各ブロック毎のタイミング収束の難易度などが異なるため、全体的なレイアウト処理時間の増大を招く恐れがある。すなわち、各ブロックは、半導体チップ全体のタイミング制約（ＳＤＣ）をブロック単位に分割（ｂｕｄｇｅｔ）したタイミング制約に基づいて、この制約を満たすようにレイアウトが定められるが、例えば各ブロック毎の動作周波数が異なると、タイミング制約の難易度も異なり、最上位階層での最適化に要する時間を含めて全体的なレイアウト処理時間の予測が困難となる。
【０００８】
図２５（ａ）は、一般的なマイクロコンピュータの構成例を示すブロック図であり、（ｂ）は（ａ）の論理階層例を示す図、（ｃ）は（ａ）の論理規模の一例を示す図である。図２５（ａ）に示すマイクロコンピュータは、演算処理ブロックＣＰＵ、ＤＭＡ（Direct Memory Access）制御ブロックＤＭＡＣ、揮発性メモリブロックＲＡＭ、不揮発性メモリブロックＲＯＭ、タイマブロックＴＭＲ、アナログ・ディジタル変換ブロックＡ／Ｄ、外部ポート制御ブロックＩ／Ｏと、２本のバスＢＳｈ，ＢＳｌを備えている。ＢＳｈは１００ＭＨｚで動作し、ＢＳｌは５０ＭＨｚで動作する。ＣＰＵ，ＴＭＲ，Ａ／Ｄは、ＢＳｌにのみ接続され、それ以外は、ＢＳｈとＢＳｌの両方に接続され、モード設定に応じて１００ＭＨｚ動作と５０ＭＨｚ動作が可能なように構成されている。
【０００９】
このようなマイクロコンピュータは、論理的（機能的）には、例えば図２５（ｂ）のように分類され、この分類に基づいてネットリスト（回路図データ）などが管理される。ここでは、最上位階層ＴＯＰが、ＣＰＵ、Ｉ／Ｏ、メモリＭＥＭ、ＤＭＡＣ、周辺モジュールＰＥＲＩからなる下位下層に分割され、ＭＥＭがＲＡＭとＲＯＭからなる下位下層に分割され、ＰＥＲＩがＴＭＲとＡ／Ｄからなる下位下層に分割されている。ＴＯＰ自体には、例えば、ＢＳｈ，ＢＳｌ等が含まれる。各ブロックの論理規模は、図２５（ｃ）に示すように、例えばＣＰＵが最も大きい２００ｋゲートであり、ＲＡＭ，ＲＯＭのそれぞれが最も小さい２０ｋゲートとなっている。ただし、ＲＡＭ，ＲＯＭの論理規模は、ハードマクロ（すなわち、各メモリコア部分ＲＡＭ＿ＣＲ，ＲＯＭ＿ＣＲ）を除くランダムゲート部（制御回路）の論理規模を示している。
【００１０】
図２６（ａ）は、図２５（ａ）のマイクロコンピュータのフロアプラン例を示す概略図であり、（ｂ）は（ａ）の各ブロックに対して自動レイアウト処理を行った際の処理時間の一例を示す図である。図２６（ａ）に示すように、マイクロコンピュータ内の各ブロックの面積は、基本的には、図２５（ｃ）に示した論理規模に対応した大きさとなる。イタリックで示したブロックは最大周波数１００ＭＨｚで動作し、その他は５０ＭＨｚである。ここで、論理規模の観点からはＣＰＵに対するレイアウト処理時間が最も長くなることが予想されるが、実際には、図２６（ｂ）に示すにように、論理規模がＣＰＵの半分以下（８０ｋゲート）であるＤＭＡＣのレイアウト処理時間が最も長く、ＣＰＵの２倍程度を要している。これは、ＤＭＡＣの動作周波数が高いため、特にタイミング違反が生じないレイアウトを探索するのに時間を要しているためである。なお、ＴＭＲやＡ／Ｄは、論理規模が小さく周波数も低いため、そのレイアウト処理時間はＤＭＡＣの１／４未満となっている。
【００１１】
このように各ブロック毎のレイアウト処理時間がばらつくと、全体的なレイアウト処理時間も増大し、設計期間の増大を招いてしまう。そこで、例えば、特許文献１のように、半導体チップ全体をＣＰＵ数と同数に分割し、かつ各分割ブロック毎の配線数等が均一となるようにその分割境界を設定する方式が考えられる。しかしながら、この方式では、前述したように、配線数のみならず当該配線の動作周波数等によっても処理時間の不均一化が生じるため、最適な分割が行われない恐れがある。さらに、この方式は、詳細配線におけるレイアウト処理時間の均一化を目的としたものであるが、別の観点として半導体装置のレイアウト設計を全体から見渡した場合に、この詳細配線における処理時間の均一化のみではレイアウト設計を十分に最適化することができない。
【００１２】
すなわち、特許文献１を代表とする従来のレイアウト方式は、予め概略的なレイアウトが決まった状態で、その概略的なレイアウトを例えばＣＰＵ数と同数に分割した後に詳細なレイアウトを行うことで、全体的なレイアウト処理時間を短縮するというものである。しかしながら、そもそも、その概略的なレイアウト自体が、半導体装置の設計を全体から見渡した場合に最適であるとは限らない。具体的には、例えば特許文献１のような方式は、図２６（ａ）のように、各ブロックの配置が定まっており、かつ各ブロック内の回路配置もある程度定まっていることを前提として、その後の詳細配線の処理時間が均一となる分割境界線を定めることが目的である。ただし、その前提となる各ブロック内の概略的な回路配置や、さらには各ブロックの配置自体が不均一であれば、仮にレイアウト処理時間のみが均一化されても、設計全体から見た場合の最適化は図れない。例えば、この不均一性に伴う問題として、電力が大きい回路が集中することによる局所的な電源電圧降下や、同時に動作する回路が集中することによる同時切り替えノイズの増加等が挙げられる。
【００１３】
また、近年では、図２７に示すように、３次元スタックによる積層レイアウトが行われる場合がある。図２７（ａ）は、積層チップの構成例を示す概略図であり、（ｂ）は（ａ）の論理階層例を示す図である。図２７（ａ）においては、２個の半導体チップＣＰ１，ＣＰ２が積層搭載され、各半導体チップが複数のビア（ＴＳＶ：Through Silicon Via）によって接続されている。ＣＰ１には複数の回路ブロックＢＬＫ＿Ａ，ＢＬＫ＿Ｂが実装され、ＣＰ２にも複数の回路ブロックＢＬＫ＿Ｃ，ＢＬＫ＿Ｄが実装され、これらの回路ブロックが一体となって一つの半導体装置が構成される。
【００１４】
このような積層レイアウトを行う場合、通常、各回路ブロックＢＬＫ＿Ａ〜ＢＬＫ＿Ｄを機能単位とし、例えば、類似した機能が１個の半導体チップに含まれるように各半導体チップに各回路ブロックが適宜振り分けられる。図２８は、図２７の積層チップのレイアウト結果から得られる指標の一例を示すものであり、（ａ）は各チップ毎のレイアウト処理時間を示す説明図、（ｂ）は各チップ毎の消費電力を示す説明図である。図２８（ａ）では、ＢＬＫ＿Ａ，ＢＬＫ＿ＢがＢＬＫ＿Ｃ，ＢＬＫ＿Ｄに比べて論理規模が大きく、あるいはレイアウトの複雑度が高く、これに伴いＣＰ１とＣＰ２のレイアウト処理時間が大きく乖離している。また、図２８（ｂ）では、ＢＬＫ＿Ｄが他の回路ブロックに比べて消費電力が非常に大きく、これに伴いＣＰ１とＣＰ２の消費電力が大きく乖離している。
【００１５】
ここで、半導体装置の設計を全体として見た場合、各半導体チップ毎のレイアウト処理時間が均一となり、加えて、消費電力やノイズ等も均一化されることが望ましい。特に、積層レイアウトの場合には、設計が進んだ段階で不均一に伴う不具合が発生すると、設計戻りに伴う損失が大きいため、早い段階で均一なレイアウト設計を実現する必要がある。この不均一性の問題は、勿論、積層レイアウトに限らず一つの半導体チップに対するレイアウトでも同様であり、一つの半導体チップ内において、各回路ブロック毎のレイアウト処理時間が均一となり、加えて、消費電力やノイズ等も均一化されることが望ましい。ただし、実際には、トレードオフの関係も存在するため、その最適解を得る仕組みが必要となる。
【００１６】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、最適なレイアウト設計を実現可能な半導体装置の設計方法を提供することにある。本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１７】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【００１８】
本実施の形態による半導体装置の設計方法は、タイミング収束を加味したレイアウト処理時間の長さや、電力の大きさや、ノイズの大きさ等の関数であり、レイアウトの総合的な複雑度を表す目的関数を定義し、コンピュータシステムによって、各ブロック毎の目的関数の値が所定の基準値を目処に均一となるように最上位階層での全体回路をＮ個のブロックに割り当てるものとなっている。
【００１９】
これによって、レイアウト処理時間ならびに品質を含めて総合的に均一化された複数の分割ブロックが得られる。したがって、この結果に基づいて各分割ブロックを並列処理でレイアウトすることで、レイアウト処理時間の短縮が可能となり、更に、この結果に基づいてフロアプランならびに複数の半導体チップへの振り分けを行うことで、半導体装置の品質やレイアウト処理時間を含めて最適化が図れる。このようなことから、総合的な観点でレイアウト設計の最適化が実現可能になる。
【００２０】
また、本実施の形態による半導体装置の設計方法は、更に、前述した基準値に、Ｎ個のブロック以外の回路となる最上位階層に残存した回路の複雑度（例えばタイミングパス数）を反映してトータルコストを算出し、この基準値を増加させつつＮの値を段階的に減少させながら、各Ｎの値毎のトータルコストを算出するものとなっている。これによって、トータルコストが最良となるＮの値ならびにそれに伴う各ブロックの境界が得られる。すなわち、分割ブロックの数自体に関しても最適な解を探索することが可能となる。
【００２１】
また、前述した半導体装置の設計方法は、より具体的には、回路全体のネットリストおよびタイミング情報、また場合によってはフロアプラン情報も入力とし、まず、回路全体の中からフリップフロップ回路となる複数のシードを設定する。次いで、第１段階のトレース処理として、複数のシード毎に、各シードの有効範囲を、目的関数の値が各シードの有効範囲の間で均一となるように段階的に拡大させていく。この拡大の際には、複数のシード毎に、自身の前段または後段に接続されたフリップフロップを順次に取り込む形で拡大させていく。そして、この拡大の過程で第１条件に達したシードをサブグラフとし、サブグラフに達していない残存シードの数が第１の割合に減少するまでトレース処理を継続する。続いて、第１段階のマージ処理として、残存シードの数とサブグラフの数の合計値が第２の割合に減少するまでサブグラフを適宜統合する。次いで、残存シードのそれぞれとサブグラフのそれぞれを分割単位として、この分割単位で分割を行った際のトータルコストを、残存シードにもサブフラグにも属していない回路のタイミングパス数等を加味して算出する。以降、このトータルコストが前段階のトータルコストより改善する限り、第１段階と同様にして、第２段階のトレース処理およびマージ処理、第３段階のトレース処理およびマージ処理、…を繰り返す。
【００２２】
このように、予め複数のシードを設定し、各シードの有効範囲を除々に拡大させつつサブグラフ化したシードを適宜統合し、これによって全体としての分割数を段階的に減らしながらトータルコストの改善有無を検証することで、最適な分割数を効率的に求めることが可能となる。なお、前述した第１条件に達したシードとは、当該シードの有効範囲の外周全てが他のシードの有効範囲と接触し、それ以上拡大することができなくなったシードや、あるいは、ネットリストが階層ブロックで管理されている場合において、当該シードの有効範囲の外周全てが、当該シードが属する階層ブロックの境界に達したシードである。
【発明の効果】
【００２３】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、レイアウト設計の最適化が実現可能になる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態１による半導体装置の設計方法において、その処理内容の一例を示すフロー図である。
【図２】図１のフローに伴う処理対象の推移の一例を表す模式図である。
【図３】（ａ）〜（ｃ）は、図１の設計方法を用いることによる効果の一例を示す概念図である。
【図４】図１の設計方法において、そのシードの選択方法の一例を説明する図である。
【図５】図１の設計方法において、そのシードの選択方法の一例を説明する図である。
【図６】図１の設計方法において、そのトレース時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【図７】図１の設計方法において、そのトレース時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【図８】図１の設計方法において、そのトレース時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【図９】図１の設計方法において、そのトレース時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【図１０】図１の設計方法において、そのトレース時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【図１１】図１の設計方法において、設計対象となる半導体装置が複数モードを持つ場合での目的関数の算出方法の一例を示す説明図である。
【図１２】図１の設計方法において、そのトレース時のノードの拡大方法の概要を示す説明図である。
【図１３】図１の設計方法において、そのトレース時のノードの拡大方法の概要を示す他の説明図である。
【図１４】図１２および図１３におけるノードの拡大の過程でノードが接した場合の処理方法の一例を示す概念図であり、（ａ）はフラット階層の場合、（ｂ）は論理階層保持の場合を示すものである。
【図１５】図１２および図１３におけるノードの拡大の過程でノードが接した場合の境界の決め方の一例を示す説明図である。
【図１６】図１の設計方法において、そのトレース過程での目的関数の変化の一例を示す概念図である。
【図１７】図１の設計方法において、そのトレース時に生成するトレースグラフの一例を示す概念図である。
【図１８】図１の設計方法において、そのマージ時に生成するマージグラフの一例を示す概念図である。
【図１９】図１の設計方法において、そのトータルコスト計算に関する説明図である。
【図２０】本発明の実施の形態３による半導体装置の設計方法において、その処理内容の一例を示すフロー図である。
【図２１】図２０のフローに伴う処理対象の推移の一例を表す模式図である。
【図２２】図２１の推移に伴うマージグラフおよびトレースグラフの一例を表す説明図である。
【図２３】図２０のフローに伴う処理対象の他の推移の一例を表す模式図である。
【図２４】図２３に続く模式図である。
【図２５】（ａ）は、一般的なマイクロコンピュータの構成例を示すブロック図であり、（ｂ）は（ａ）の論理階層例を示す図、（ｃ）は（ａ）の論理規模の一例を示す図である。
【図２６】（ａ）は、図２５（ａ）のマイクロコンピュータのフロアプラン例を示す概略図であり、（ｂ）は（ａ）の各ブロックに対して自動レイアウト処理を行った際の処理時間の一例を示す図である。
【図２７】（ａ）は、積層チップの構成例を示す概略図であり、（ｂ）は（ａ）の論理階層例を示す図である。
【図２８】図２７の積層チップのレイアウト結果から得られる指標の一例を示すものであり、（ａ）は各チップ毎のレイアウト処理時間を示す説明図、（ｂ）は各チップ毎の消費電力を示す説明図である。
【図２９】一般的な階層レイアウト手法の一例を説明するものであり、（ａ）はその処理の流れを示すフロー図、（ｂ）は入力となる設計データの論理階層図、（ｃ）は出力となるレイアウトを示す概略図である。
【発明を実施するための形態】
【００２５】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００２６】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００２７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２８】
（実施の形態１）
図１は、本発明の実施の形態１による半導体装置の設計方法において、その処理内容の一例を示すフロー図である。図１に示す半導体装置の設計方法は、ハードディスク等の記憶部に保持された入力データＩＮＤを受けて、コンピュータシステムによるプログラム処理を実行することで実現される。入力データＩＮＤには、ネットリストＮＬや、ネットリスト内に含まれる各セルのセル情報ＳＬや、タイミング情報ＴＭや、場合によってはフロアプラン情報ＦＰが含まれる。
【００２９】
図１において、コンピュータシステムは、まず、ネットリストＮＬを参照し、その中からＰ個のシードを選択する（Ｓ１０１）。各シードは、フリップフロップである。次いで、基準値ＮＩ＝Ｐとした後（Ｓ１０２）、トレースを行う（Ｓ１０３）。トレースでは、ネットリストＮＬを参照し、各シードを起点としてそれぞれ前段または後段に接続されたフリップフロップを取り込むことで各シードの有効範囲（ノードと称す）を段階的に並行して拡大させる。この際には、ネットリストＮＬ、セル情報ＳＬ、タイミング情報ＴＭに基づいて目的関数を逐次計算しながら、各ノード毎の目的関数の値が均一となるように各ノードを拡大させる。目的関数は、詳細は後述するが、レイアウト処理時間の長さ、電力の大きさ、ノイズの大きさ等の関数であり、レイアウトの総合的な複雑度を表すものである。続いて、このトレースの過程でノード同士が接触した場合、このノード同士の統合可否を判定する。例えば、ネットリストＮＬや場合によってはフロアプラン情報ＦＰからノード同士の関係が密であると判断され、また、統合した場合でも統合後の目的関数の値がその他のノードとある程度の均一性を保てる場合には統合（マージ）を行う（Ｓ１０４）。
【００３０】
次いで、コンピュータシステムは、マージが行われた後のノード数ＮがＮＩ×Ｊよりも少なくなったかを判定する（Ｓ１０５）。Ｊは、０＜Ｊ＜１の中から予めユーザによって設定された定数である。Ｓ１０５の条件を満たさない場合には、再度、Ｓ１０３のトレースに移行する。一方、Ｓ１０５の条件を満たした場合には、基準値ＮＩ＝Ｎとした後（Ｓ１０６）、トータルコストを計算する（Ｓ１０７）。このトータルコストの値が改善している間はＳ１０３に戻ってループ処理を繰り返し、トータルコストの値が悪化した場合にはループを抜け、前回ループ時のノード数Ｎを最適な分割数として定める（Ｓ１０８，Ｓ１０９）。
【００３１】
ここで、トータルコストは、各ノードを並列処理でレイアウトするものとして、各ノードの代表的な目的関数の値（例えば最大値または平均値等）に、各ノードに属していない回路部分（すなわち、最上位階層（トップ）に残存している回路）のコスト（タイミングパス数等）を加味して定められる。具体的には、例えば、式（１）で計算される。なお、式（１）におけるαは、ノード数Ｎに依存するオーバーヘッド係数であり、ノード数Ｎが大きいほど大きくなる。
【００３２】
トータルコスト＝ｍａｘ（各ノードの目的関数の値）×α＋トップコスト      （１）
図２は、図１のフローに伴う処理対象の推移の一例を表す模式図である。図２に示すように、まず、初期状態として、回路全体の中から均一的にＰ個（ここでは１６個）のシードＳＥＤが選択され、図１のＳ１０３〜Ｓ１０８に対応する１回目のループ処理（トレースおよびマージ）が行われる。この１回目のマージによって、ノードＮＤＥの数は、初期状態の１６個から１３個に減少する。以降同様にして、２回目のループ処理によってＮＤＥ数が１０個に減少し、３回目のループ処理によってＮＤＥ数が７個に減少する。各ループ処理では、マージ後の状態に対するトータルコストが計算され、例えば、３回目のループ処理によってトータルコストが悪化した場合には、４回目以降のループ処理は行われず、２回目のループ処理におけるノード数（１０個）が最適な分割数となり、各ノードＮＤＥの境界が最適な分割ブロックの境界となる。
【００３３】
このように、本実施の形態１による半導体装置の設計方法は、レイアウトの総合的な複雑度が均一となり、かつ全体的なレイアウト処理時間が短くなる分割条件（分割数ならびに各分割ブロックの境界）を探索するものとなっている。ここでは、トレースを行うことで各分割ブロックの複雑度を均一に保ちつつ段階的に引き上げながら、これと並行してマージを行うことで分割数を段階的に引き下げ、各段階におけるトータルコストの算出によって全体的なレイアウト処理時間を検証している。
【００３４】
図３（ａ）〜（ｃ）は、図１の設計方法を用いることによる効果の一例を示す概念図である。まず、図３（ｂ）に示すように、論理階層に基づくブロックＢＬＫ＿Ａ〜ＢＬＫ＿Ｅを単位としてレイアウト設計を行った場合、各ブロックを、レイアウト処理時間、電力の大きさ、ノイズの大きさ、あるいは製造歩留まりを踏まえた総合的な指標で評価すると、大きなばらつきが生じる恐れがあった。一方、図１の設計方法を用いると、この総合的な指標が均一となる分割条件を得ることが可能となる。したがって、図３（ａ）に示すように、この分割条件に基づいたブロックＢＬＫ＿Ｆ〜ＢＬＫ＿Ｉを単位としてレイアウト設計を行うことで、全体的なレイアウト処理時間が短縮できると共に、さらに、電力、ノイズ、製造歩留まりが均一化されることから、半導体装置の品質を向上させることが可能となる。具体的には、当該ブロックを単位として図２９（ａ）における仮配置（フロアプラン）（Ｓ２９０１）やその後のデータ分割（Ｓ２９０２，Ｓ２９０６）を行う。
【００３５】
また、図３（ｃ）に示すように、図１に基づいたブロックＢＬＫ＿Ｆ〜ＢＬＫ＿Ｉを単位として各チップＣＰ１，ＣＰ２に分割することで、積層チップ全体のレイアウト処理時間が短縮できると共に、さらに、電力、ノイズ、製造歩留まりが均一化されることから、積層チップの品質を向上させることが可能となる。なお、このようなチップ分割を行う場合、図１の設計方法により最適解として得られる分割数は様々となるが、各分割ブロックは前述した総合的な指標が均一であるため、半導体チップのサイズ等を加味して各分割ブロックを各チップに適宜振り分ければよい。
【００３６】
以下、図１のフローの詳細について説明する。
【００３７】
図４および図５は、図１の設計方法において、そのシードの選択方法（Ｓ１０１）の一例を説明する図である。まず、選択するシード数（フリップフロップ数）は、ある程度多い数とし、特に限定はされないが、例えば回路全体に含まれるフリップフロップ数の１／５０程度（例えば全フリップフロップが３５０Ｋ個の場合は７Ｋ個）とする。さらに、各シードは、回路全体の中から均一的に選ばれることが望ましい。そこで、コンピュータシステムは、図４に示すように、ネットリストＮＬの論理階層を下位方向に探索していき、必要なシード数に見合った階層を定める。
【００３８】
すなわち、ネットリストの論理階層は、通常、最上位階層ＴＯＰが大きな機能単位となる複数のブロックＢＬＫ０［０］〜ＢＬＫ０［ｎ］からなる下位階層を備え、その各下位階層が、更に、比較的大きな機能単位となる複数のブロックからなる下位階層を備え、これが所定の階層分で継続する構造となっている。ここでは、例えば、ＢＬＫ０［１］を下層に辿っていくと、ブロックＢＬＫｉ［０］〜ＢＬＫｉ［ｍ］が存在する。また、下層に位置する各ブロック（例えばＢＬＫｉ［１］）は、小さい機能単位となる複数のモジュール（例えばＭＤ０［０］〜ＭＤ０［ｌ］）からなる下位階層を備え、その各下位階層が、更に、複数のモジュールからなる下位階層を備え、これが所定の階層分で継続する構造となっている。ここでは、例えば、ＭＤ０［１］を下層に辿っていくと、モジュールＭＤｊ［０］〜ＭＤｊ［ｋ］が存在する。そして、最下層のモジュール（例えばＭＤｊ［１］）が、複数のフリップフロップ（例えばＦＦ［０］〜ＦＦ［ｘ］）を含んで構成される。
【００３９】
したがって、コンピュータシステムは、例えば、ある同一階層に位置するモジュール数がシード数と同等であれば、その各モジュール内から一つずつシードを選択すればよい。また、過不足分は、例えば、一部のモジュールからシードを選択しなかったり、あるいは、特に回路規模が大きい一つのモジュール内から数個のシードを選択することなどで対応すればよい。これによって、回路全体の中から均一的にシードを選択することが可能となる。
【００４０】
さらに、この各モジュールからシードを選択する際にも、可能な限り各モジュールの中心付近に位置すると推定されるフリップフロップをシードとして選択することが望ましい。そこで、コンピュータシステムは、図５（ａ）に示すように、ネットリストＮＬを参照して、シードの選択対象となったモジュールにおける境界部分（すなわちモジュール外との入出力を行うフリップフロップ）を検出し、この境界部分から最も離れたフリップフロップをシードとして選択する。具体的には、境界部分に位置する各フリップフロップとの間のステージ数（フリップフロップ段数）（ここではＳＧ１〜ＳＧ６の合計値）が最も大きくなるフリップフロップを探索し、それをシードとすればよい。なお、仮に一つのモジュールから数個のシードを選択する場合には、図５（ｂ）に示すように、その各シード間のステージ数（ここではＳＧ７〜ＳＧ９）も大きくなるように各シードを選択する。
【００４１】
このようにしてシードの選択が行われた後は、各シードを起点としたトレースが行われる。このトレースに際して、コンピュータシステムは、予め定義された目的関数に基づいて、各シードの有効範囲となる各ノード毎に、この目的関数の値が均一となるように各ノードを並行して拡大させる。ここで、目的関数Ｇは、前述したように、レイアウト処理時間の長さ（言い換えればレイアウト収束性の難易度）を表すコスト（ＲＴ）、電力の大きさを表すコスト（ＰＷ）、ノイズの大きさを表すコスト（ＮＳ）、製造性（製造歩留まり）を表すコスト（ＹＥ）を変数とする関数であり、例えば式（２）となる。式（２）において、β１〜β４は各変数に対する重み付けを行う係数であり、ユーザによって任意設定が可能な値である。
【００４２】
Ｇ＝β１×ＲＴ＋β２×ＰＷ＋β３×ＮＳ＋β４×ＹＥ      （２）
以下、目的関数Ｇの詳細について説明する。
【００４３】
［Ａ］電力コスト（ＰＷ）および製造性コスト（ＹＥ）
電力コスト（ＰＷ）は、部分的な電力集中により電源電圧降下が発生する可能性を表す指標であり、ここでは、この値が大きい程問題が生じるものとする。このＰＷの値は、例えば、セル情報ＳＬから各セルの消費電力を取得し、ネットリストＮＬから対象とするノード内に含まれるセルを認識し、そのセルの消費電力の和によって定められる。ここで、セルの活性化率の情報があれば、それも加味する。また、ネットリストＮＬから各セルのファンアウトを認識し、このファンアウトに伴う配線容量を重みとして加える。次に、製造性コスト（ＹＥ）の値は、例えば、セル情報ＳＬから各セルの製造歩留まり（Ｙｉｅｌｄ）を取得し、ネットリストＮＬから対象とするノード内に含まれるセルを認識し、そのセルの歩留まりの和によって定められる。ここでは、この値が大きい程問題が生じるものとする。
【００４４】
［Ｂ］レイアウト処理時間のコスト（ＲＴ）
レイアウト処理時間のコスト（ＲＴ）は、例えば、［１］Ｐｉｎ／Ｎｅｔ、［２］フリップフロップに到達するクロック速度の和（ＣＫＳＵＭ）、［３］エンドポイント数（ＥＰ）、［４］タイミングスラックの和（ＴＰＳ）からなる４つの変数の関数によって定められる。図６〜図１０は、図１の設計方法において、そのトレース（Ｓ１０３）時に使用する目的関数に含まれるレイアウト処理コストの内容を説明する図である。
【００４５】
まず、［１］Ｐｉｎ／Ｎｅｔは、ネットリストＮＬを参照して、対象とするノードに含まれるピン数とネット数（配線数）を検出することで得られ、通常、この値が大きいほどレイアウトの複雑度（難易度）が高く、これに伴いレイアウト処理時間が増大する。例えば、図６（ａ）には、Ｐｉｎ／Ｎｅｔが２．０の場合の回路例が示されており、図６（ｂ）には、Ｐｉｎ／Ｎｅｔが３．０の場合の回路例が示されている。なお、この複雑度は、当該ノードの面積値によっても変化し、面積が大きいほど複雑度は下がる。したがって、仮にフロアプラン後のレイアウト設計に本実施の形態の設計方法を用いる場合は、フロアプラン情報ＦＰによって概算面積値が判明するため、面積値を反映してＰｉｎ／Ｎｅｔを補正した（Ｐｉｎ／Ｎｅｔ）’を算出する。図６（ｃ）の例では、面積に反比例する関数ｆにＰｉｎ／Ｎｅｔを乗算することで、Ｐｉｎ／Ｎｅｔは共に２．０であるが、（Ｐｉｎ／Ｎｅｔ）’は、面積値が１００の場合に３．０となり、３００の場合に１．０となる。
【００４６】
次に、［２］フリップフロップに到達するクロック速度の和（ＣＫＳＵＭ）は、ネットリストＮＬならびにタイミング情報ＴＭを参照して、対象とするノードに含まれるフリップフロップのクロック情報を認識することで得られる。このクロック速度の和が大きいほど、タイミング収束の難易度が高いと考えられ、これに伴いレイアウト処理時間が増大することになる。図７には、組み合わせ回路ＬＯＧを介して適宜接続された５個のフリップフロップＦＦ１〜ＦＦ５が示されており、ＦＦ１〜ＦＦ３には、１５０ＭＨｚのクロックＣＬＫ１と１００ＭＨｚのクロックＣＬＫ２が選択的に供給され、ＦＦ４，ＦＦ５には、ＣＬＫ２と５０ＭＨｚのクロックＣＬＫ３が選択的に供給されている。このような回路の場合、クロック速度の和（ＣＫＳＵＭ）は、ＣＬＫ１（１５０ＭＨｚ）が３個のＦＦに、ＣＬＫ２（１００ＭＨｚ）が５個のＦＦに、ＣＬＫ３（５０ＭＨｚ）が２個のＦＦに供給されるため、ＣＫＳＵＭ＝１５０×３＋１００×５＋５０×２＝１０５０となる。
【００４７】
なお、クロック速度の和（ＣＫＳＵＭ）に伴う難易度は、より厳密には、図７の例における各組み合わせ回路ＬＯＧの論理段数によって変化するため、より望ましくは、ネットリストＮＬからこの論理段数を検出し、これをＣＫＳＵＭに反映させるとよい。この場合、各ＦＦに供給される周波数ごとのタイミングパスにおいて、各タイミングパスの論理段数の上限を関数とする。すなわち、図７において、ＦＦ１〜ＦＦ５に到達するクロック毎の論理段数が例えば下記の（括弧）内の値であったとする。例えばＣＬＫ１＝ＦＦ１（１０）とは、ＦＦ１がＣＬＫ１で動作する場合、１０段の論理段数からなる組み合わせ回路ＬＯＧを介して信号が入力されることを意味する。
ＣＬＫ１＝ＦＦ１（１０），ＦＦ２（１５），ＦＦ３（１５）
ＣＬＫ２＝ＦＦ１（２５），ＦＦ２（３０），ＦＦ３（３０），ＦＦ４（４０），ＦＦ５（４０）
ＣＬＫ３＝ＦＦ４（４０），ＦＦ５（４０）
このような論理段数を反映させた場合、基準の論理段数の際に値が１となり、基準の論理段数より多いほど値が１より増大し、基準の論理段数に満たない場合は値が１より小さくなる関数ｆを用いて、クロック速度の和（ＣＫＳＵＭ）’は、例えば以下のように計算される。
１５０ＭＨｚ×（ｆ（１０）＋ｆ（１５）＋ｆ（１５）＝３．４）＝５１０
１００ＭＨｚ×（ｆ（２５）＋ｆ（３０）＋ｆ（３０）＋ｆ（４０）＋ｆ（４０）＝５．３）＝５１５
５０ＭＨｚ×（ｆ（４０）＋ｆ（４０）＝０．８）＝４０
（ＣＫＳＵＭ）’＝５１０＋５１５＋４０＝１０６５
続いて、［３］エンドポイント数（ＥＰ）は、ネットリストＮＬを参照して、対象とするノードに含まれる各フリップフロップ毎のエンドポイント数を認識することで得られる。このエンドポイント数（ＥＰ）が大きいほど、レイアウトの難易度が高いと考えられ、これに伴いレイアウト処理時間が増大することになる。図８には、組み合わせ回路ＬＯＧを介して適宜接続された５個のフリップフロップＦＦ１〜ＦＦ５と、同様にＬＯＧを介して適宜接続された３個のフリップフロップＦＦ６〜ＦＦ８が示されている。ＦＦ１は、ＦＦ２〜ＦＦ５となる４個のエンドポイントを持ち、ＦＦ６は、ＦＦ７，ＦＦ８となる２個のエンドポイントを持っている。したがって、例えばＦＦ１とＦＦ６に着目した場合、エンドポイント数（ＥＰ）は、例えばその平均値を求めて３となる。
【００４８】
次いで、［４］タイミングスラックの和（ＴＰＳ）は、ネットリストＮＬならびにタイミング情報ＴＭを参照して、対象とするノードに含まれる各タイミングパスと、各タイミングパスに対するＳＴＡ（静的タイミング検証）の結果を認識することで得られる。ＳＴＡの結果は、予め回路設計段階で得られ、タイミング情報ＴＭとして保存されている。このタイミングスラックの和（ＴＰＳ）が大きいほど、タイミング収束の難易度が高く、これに伴いレイアウト処理時間が増大することになる。
【００４９】
図９には、５個のフリップフロップＦＦ１〜ＦＦ５が示されている。ＦＦ１とＦＦ５間には、組み合わせ回路ＬＯＧを介してタイミングパスＰＨ＿Ａが存在し、同様に、ＦＦ１とＦＦ２間、ＦＦ１とＦＦ３間、ＦＦ１とＦＦ４間にも、それぞれ、タイミングパスＰＨ＿Ｂ、ＰＨ＿Ｃ、ＰＨ＿Ｄが存在している。ここでＳＴＡ（静的タイミング検証）により、ＰＨ＿Ａ、ＰＨ＿Ｂ、ＰＨ＿Ｃ、ＰＨ＿Ｄの伝送時間が例えば１２ｎｓ、１１．５ｎｓ、１１ｎｓ、８ｎｓであったとする。各タイミングパスのターゲットを１０ｎｓ周期（１００ＭＨｚ）とした場合、ＰＨ＿Ａ、ＰＨ＿Ｂ、ＰＨ＿Ｃ、ＰＨ＿Ｄのタイミングスラック値は、それぞれ、＋２ｎｓ、＋１．５ｎｓ、＋１．０ｎｓ、−２．０ｎｓとなる。したがって、タイミングスラックの和（ＴＰＳ）は、これらを合計して＋２．５ｎｓとなる。
【００５０】
以上のような、［１］Ｐｉｎ／Ｎｅｔ、［２］クロック速度の和（ＣＫＳＵＭ）、［３］エンドポイント数（ＥＰ）、［４］タイミングスラックの和（ＴＰＳ）からなる４つの変数の関数によってレイアウト処理時間のコスト（ＲＴ）が算出される。具体的には、例えば式（３）のように、各変数がγ１〜γ４によって重み付けされ、ＲＴが算出される。
【００５１】
ＲＴ＝γ１×（Ｐｉｎ／Ｎｅｔ）＋γ２×ＣＫＳＵＭ＋γ３×ＥＰ＋γ４×ＴＰＳ      （３）
［Ｃ］ノイズコスト（ＮＳ）
ノイズコスト（ＮＳ）は、部分的な同時切り替えノイズの発生によりチップ性能が劣化する可能性を表す指標であり、ここでは、この値が大きい程問題が生じるものとする。このＮＳの値は、例えば、ネットリストＮＬを参照して、同一のクロックでトリガされるフリップフロップの数を検出することで算出される。また、その中でも特に、同一のクロックゲーティングセルのファンアウトとなっているフリップフロップの数を検出することで算出される。
【００５２】
図１０には、クロック生成回路ＰＬＬからのクロックＣＬＫが直接供給されるフリップフロップ群ＦＦ＿Ｇ３と、クロックゲーティングセルＣＧ１を介して供給されるフリップフロップ群ＦＦ＿Ｇ１と、クロックゲーティングセルＣＧ２を介して供給されるフリップフロップ群ＦＦ＿Ｇ２が示されている。ＣＧ１は、イネーブル信号ＥＮ１に応じてＣＬＫの供給・遮断を制御し、ＣＧ２は、イネーブル信号ＥＮ２に応じてＣＬＫの供給・遮断を制御する。このように、ＣＧ１のファンアウトになっているＦＦ＿Ｇ１や、ＣＧ２のファンアウトになっているＦＦ＿Ｇ２は、各グループ内の各フリップフロップが、通常、配置的に近接して置かれるためスキューが小さくなり、同時切り替えノイズが大きくなる。したがって、同一クロックでトリガされるフリップフロップの中でも特にクロックゲーティングセルのファンアウトとなっているフリップフロップ数に対して重み付けを行ってノイズコスト（ＮＳ）を算出することが望ましい。
【００５３】
以上、［Ａ］〜［Ｃ］のようにして、式（２）に示した目的関数Ｇが算出される。ここで、設計対象とする半導体装置が、例えば、複数モードのタイミング制約を持っていたとする。すなわち、例えば、設計対象となる半導体装置が、ある周波数で動作するモードと他の周波数で動作するモードを持つような場合である。図１１は、図１の設計方法において、設計対象となる半導体装置が複数モードを持つ場合での目的関数の算出方法の一例を示す説明図である。
【００５４】
図１１に示すように、ここでは２種類のモード（モード１、モード２）を持つものとし、あるノードＮＤＥにおけるフォルスパスの箇所がモード毎に異なるものとし、当該ノードＮＤＥの目的関数Ｇの値は、モード１の場合に１００であり、モード２の場合に２００であったとする。この場合、ＮＤＥの目的関数Ｇの値は、例えばこの２つのモードの目的関数の合計値とする。このように各モードの合計値に基づいてトレースを行うことで、複数のモードを加味した上で総合的にレイアウトの均一化を図ることができ、レイアウト設計の最適化が図れる。なお、ここでは、合計値を用いたが、平均値等を用いても同様の効果が得られる。
【００５５】
以上にようにして算出した目的関数Ｇを用いて、コンピュータシステムは、各ノード毎の目的関数Ｇの値が均一となるように、各ノードを並行して拡大させていく。図１２は、図１の設計方法において、そのトレース（Ｓ１０３）時のノードの拡大方法の概要を示す説明図である。図１２に示すように図１のＳ１０１で選択した各シードを起点として、それぞれのロジックコーンをトレースし（すなわち前段または後段に接続されるフリップフロップを１段ずつ取り込んでいき）、各シードの有効範囲となるノードに含まれる論理を段階的に増やしていく。
【００５６】
図１３は、図１の設計方法において、そのトレース（Ｓ１０３）時のノードの拡大方法の概要を示す他の説明図である。図１３に示すように、前述したロジックコーンのトレースは、データパスＤＰのみを対象とし、リセットラインおよびスキャンイネーブルライン等は、ファンアウトが膨大となるケースが考えられるため対象外とする。また、トレースには、後段のフリップフロップＦＦに向けた順方向トレースと、前段のＦＦに向けた逆方向トレースの２種類が存在する。あるノードＮＤＥから１段分のＦＦをトレースした結果、複数のＦＦがピックアップされるが、他のノードに含まれていないＦＦのみ当該ノードに組み入れる。
【００５７】
ここで、図１２および図１３に示したトレースは、基本的には他のノードに接した時点で終了となるが、論理階層を持たないフラット階層でトレースを行う場合と、論理階層を維持したままトレースを行う場合とで終了条件が異なる。すなわち、トレースを行う場合、レイアウト品質のみに着目すると、フラット階層から分割ブロックを定めることが望ましいが、レイアウト後の可読性等を考慮すると、論理階層を維持したまま分割ブロックを定める方が望ましい場合もある。本実施の形態による設計方法は、このいずれの場合にも適用でき、論理階層を維持する場合に適用する際には、更に２通りのケースがある。
【００５８】
一つ目のケースは、論理階層を完全に維持する場合であり、この場合は、論理階層に応じてフロアプランが行われたレイアウトデータに対してレイアウト処理時間の短縮のみを目的として図１のフローを適用する。その結果、レイアウト処理時間の短縮を可能とするデータの分割単位が得られる。二つ目のケースは、論理階層を可能な限り維持しつつも、適宜、その枠組みを最適化する場合であり、この場合は、フロアプランの前段階で図１のフローを適用する。そして、その結果に基づいてフロアプランを行うことで、レイアウト処理時間の短縮に加えて、半導体装置の品質向上が図れる。すなわち、この場合は、図１のフローにより、論理階層の下位階層を起点として上位階層に向けて、その最適な束ね方が段階的に探索されることになる。この際には、論理階層の枠組みを可能な限り維持し、かつ各分割ブロックの均一性が保てるような処理が行われ、その結果、論理階層における下位階層の枠組みは保たれ、上位階層に向かう程、枠組みの組み替えが発生することになる。
【００５９】
図１４は、図１２および図１３におけるノードの拡大の過程でノードが接した場合の処理方法の一例を示す概念図であり、（ａ）はフラット階層の場合、（ｂ）は論理階層保持の場合を示すものである。図１４（ａ）に示すように、フラット階層の場合、各ノードＮＤＥは、他のノードと接した際には探索方向を変えてトレースを継続する。そして、例えば、複数の隣接ノードに囲まれ、いずれの方向にもトレースを行えなくなった場合には、隣接ノードのいずれかとのマージを待つ。一方、図１４（ｂ）に示すように、論理階層保持の場合、各ノードＮＤＥは、各論理階層の境界ＢＤに達した時点で、上位階層に移動するか、あるいは、隣接ノードとのマージを待つかを判断する。
【００６０】
図１５は、図１２および図１３におけるノードの拡大の過程でノードが接した場合の境界の決め方の一例を示す説明図である。図１５に示すように、例えば、ノードＢに含まれるフリップフロップＦＦの出力が組み合わせ回路ＬＯＧｂを介した後に各所で分岐し、ノードＡに含まれる各ＦＦに入力されるような回路において、ノードの拡大（トレース）の過程でノードＡとノードＢが接した場合、ノードＢに最も近い分岐点と組み合わせ回路ＬＯＧｂの間に境界（境界ピンＰＮ）を設定する。このような箇所に境界を設定することで、その後の自動レイアウトが容易となる。
【００６１】
図１６は、図１の設計方法において、そのトレース（Ｓ１０３）過程での目的関数の変化の一例を示す概念図である。図１６に示すように、まず、各ノードＡ〜Ｅを一定の範囲で並行して拡大させたのち、各ノードの目的関数Ｇの値を算出する。次いで、目的関数が最低となったノード（ここではノードＣ）を対象に、当該ノードを一定の範囲で拡大させたのち、当該ノードの目的関数の値を算出する。これによって、ノードＣの目的関数の値が各ノードＡ〜Ｅの中で最低で無くなった場合には、最低となったノードを対象として、同様に拡大を行ったのち目的関数の値を算出し、また、依然として最低であった場合には、ノードＣの拡大を再度行ったのち目的関数の値を算出する。このような処理を繰り返すことで、結果として、各ノードの目的関数の値を均一化しながら、各ノードを適宜拡大させることが可能となる。
【００６２】
図１７は、図１の設計方法において、そのトレース（Ｓ１０３）時に生成するトレースグラフの一例を示す概念図である。図１のトレース（Ｓ１０３）において、コンピュータシステムは、例えば図１７に示すようなトレースグラフを逐次生成しながらトレースを行う。図１７に示すトレースグラフでは、前述したノードＮＤＥが○印で表され、各ノード間における組み合わせ回路ならびにフリップフロップを介した接続有無がエッジＥＧで表され、各ノードの目的関数の値が各ノード内の数字として表されている。各ノードのトレース方向は、このトレースグラフに基づいて定められ、例えば目的関数の値の小さい（又は大きい）ノードが存在する方向に定められる。
【００６３】
例えば、図１７においては、目的関数Ｇの値が小さいノードが存在する方向に向けたトレースの例が示されており、まず、Ｇの値が最小となる「２」のノードを、その周辺の中でＧの値が最小となる「３」のノードが存在する方向に向けてトレースする。そして、トレースの過程で「３」のノードと接した場合、この２つのノード間のエッジが消滅し、以降、この「３」の方向に向けたトレースが行われなくなる。そして、このエッジが消滅した状態で再び前述した「２」のノードにおけるＧの値を算出した結果、例えば、Ｇの値が「５」になったとする。この場合、次の段階では、現時点で目的関数Ｇの値が最小となる「３」のノードを、その周辺の中でＧの値が最小となる「６」のノードが存在する方向に向けてトレースする。
【００６４】
図１８は、図１の設計方法において、そのマージ（Ｓ１０４）時に生成するマージグラフの一例を示す概念図である。図１のマージ（Ｓ１０４）において、コンピュータシステムは、例えば図１８に示すようなマージグラフを逐次生成しながらマージを行う。図１８に示すマージグラフでは、トレースの過程で隣接したノードＮＤＥが○印で表され、この隣接したノード間がエッジＥＧで接続されている。また、各ノードの目的関数の値が各ノード内の数字で表され、各ノード間の接続における相関の程度（エッジコスト）がエッジＥＧ上の数字で表される。エッジコストは、対応するノード間の論理的結合度が強いほど（すなわち、ネットリストＮＬから得られるノード間の論理接続本数が多いほど）数字が小さく、また、フロアプラン情報ＦＰがある場合には、対応するノード間の物理的な位置が近いほど数字が小さい。
【００６５】
マージは、このエッジコストの数字が小さい（すなわち対象となるノード同士の相関が高い）箇所を優先して行われる。図１８の例では、最小値となる「２」を持つエッジＥＧ［１］が優先してマージされ、目的関数Ｇの値が「５」のノードＮＤＥ［１］とＧの値が「４」のノードＮＤＥ［２］とが１個のノードＮＤＥ［３］として統合される。その結果、ノードＮＤＥ［３］のＧの値は、例えば「９」となる。この場合、ＮＤＥ［３］のＧの値は、一時的には、他のノードのＧの値と比較して大きくなるが、その後、他のノードに対してもマージが行われる（例えばエッジＥＧ［２］のマージが行われる）ことで、各ノードの目的関数Ｇの値は、段階的に均一化されることになる。ただし、仮に、他のノードではなくノードＮＤＥ［３］が更なるマージ対象となると、目的関数Ｇの均一化が困難になり得るため、例えば、マージにより他のノードと比較して大きな乖離（例えば、最小ノードと最大ノードで３倍以上の開き等）が生じることが見込まれる場合には、当該マージを行わないなどの制約を設けることが望ましい。
【００６６】
図１９は、図１の設計方法において、そのトータルコスト計算（Ｓ１０７）に関する説明図である。図１９では、例えば３個のノードＮＤＥａ，ＮＤＥｂ，ＮＤＥｃと、それ以外の回路部となる最上位階層ＴＯＰによって半導体装置全体が構成されている。前述した図１のトータルコスト計算（Ｓ１０７）では、式（１）に示したように、各ノードの目的関数の中の最大値等とトップコストとの合計によってトータルコストが算出される。トップコストは、例えば、最上位階層ＴＯＰに含まれる回路のタイミングパス数等に基づいて算出される。トップコストは、各ノードの拡大が進むほど小さくなる。また、例えばノードＮＤＥａとＮＤＥｂのマージが行われると、マージ後のノードにおける目的関数の値は大きくなるが、トップコストは、変わらないか或いは小さくなる。
【００６７】
以上のように、本実施の形態１による半導体装置の設計方法を用いることで、処理時間ならびに品質を含めて総合的に均一化された複数の分割ブロックが得られ、更に、その各分割ブロックの範囲ならびに分割ブロックの数自体に関しても最適な解を探索することが可能となる。したがって、この結果に基づいて各分割ブロックを並列処理でレイアウトすることで、レイアウト処理時間の短縮が可能となり、更に、この結果に基づいてフロアプランならびに複数の半導体チップへの振り分けを行うことで、半導体装置の品質やレイアウト処理時間を含めて最適化が図れる。このようなことから、総合的な観点でレイアウト設計の最適化が実現可能になる。
【００６８】
（実施の形態２）
本実施の形態２では、それぞれ処理能力が異なる複数のコンピュータシステムを用いて並列的に自動レイアウトを行う際に、前述した実施の形態１の設計方法を適用する場合について説明する。前述した実施の形態１では、各ノードの目的関数の値（レイアウト処理時間を含む）が均一となるように分割を行ったが、分散処理対象のハードウェアのスペックが異なれば、これに応じて各ノードの目的関数の値に対して所定の比率を持たせた方がより処理時間が短縮できる場合がある。そこで、本実施の形態２による半導体装置の設計方法では、分散処理対象のハードウェアのスペック（ＣＰＵ、メモリ）を考慮して、適切な分割を実施し、それぞれのハードウェアに処理を割り当てる。
【００６９】
例えば、自動レイアウトを行うコンピュータシステムのハードウェアスペックが以下のようであったとする。
ＣＰＵ１：ｃｐｕｆ＝１００ＭＨｚ  Ｍｅｍｏｒｙ＝４ＧＢ
ＣＰＵ２：ｃｐｕｆ＝２００ＭＨｚ  Ｍｅｍｏｒｙ＝８ＧＢ
ＣＰＵ３：ｃｐｕｆ＝３００ＭＨｚ  Ｍｅｍｏｒｙ＝１６ＧＢ
ＣＰＵ４：ｃｐｕｆ＝４００ＭＨｚ  Ｍｅｍｏｒｙ＝３２ＧＢ
この場合、ＣＰＵスペックから見て、各ＣＰＵの処理能力の比率は、例えばＣＰＵ１：ＣＰＵ２：ＣＰＵ３：ＣＰＵ４＝１：２：３：４となる。この場合、例えばＣＰＵ４はＣＰＵ１の４倍の処理能力を備えるため、同じレイアウト処理時間内で目的関数の値が４倍のノードを処理することができる。したがって、本実施の形態２による半導体装置の設計方法では、第１の方法として、実施の形態１で説明した図１のフローにおいてトレース（Ｓ１０３）およびマージ（Ｓ１０４）を行う際に、各ノードの目的関数の値を、４個を単位として１：２：３：４の比率を保ちながら増大させていけばよい。例えば、ノードが８個の状態では、各ノードの目的関数の値の比率を、１：２：３：４：１：２：３：４等とすればよい。
【００７０】
あるいは、第２の方法として、実施の形態１の場合と同様に、各ノードの目的関数の値が均一となるように制御し、最終的に、各ＣＰＵに対して割り当てるノード数を変更してもよい。例えば、最終解として得られたノード数が１０個の場合、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４に対してそれぞれ１個、２個、３個、４個のノードを割り当てればよい。なお、事前にリソースが定まっていれば問題ないが、ＬＳＦ（Load Sharing Facility）等の管理ソフトウェアでリソースを共有しているような場合には動的に使用可能なリソースが変動するため、スペック均一や指定ブロック数により対処する。
【００７１】
以上、本実施の形態２による半導体装置の設計方法を用いることで、実施の形態１で述べた各種効果に加えて、更に、複数のコンピュータシステムで自動レイアウトを行う際に各ハードウェアスペックが異なっている場合にも、レイアウト処理時間の短縮が実現可能になる。
【００７２】
（実施の形態３）
本実施の形態３では、実施の形態１で述べた図１の設計方法の更なる詳細について説明する。図２０は、本発明の実施の形態３による半導体装置の設計方法において、その処理内容の一例を示すフロー図である。図２０において、コンピュータシステムは、まず、図１のＳ１０１と同様にＭ個のシードを選択し（Ｓ２００１）、初期条件として、残りのシード数（未サブグラフ化シード数）ＸにＭを代入し、サブグラフ数Ｓに０を代入し、ノード数ＮにＸ＋Ｓを代入する（Ｓ２００２）。次いで、基準値ＸＩ＝Ｍとした後（Ｓ２００３）、トレースを行う。
【００７３】
トレースにおいて、コンピュータシステムは、トレースグラフ生成（Ｓ２００４）、目的関数計算（Ｓ２００５）、ノードの拡大（Ｓ２００６）をループ単位として、残りのシード数ＸがＸ≦ＸＩ×Ｋとなるまで当該ループ処理を繰り返す（Ｓ２００７）。Ｋの値は、０＜Ｋ＜１で定めた任意の値である。すなわち、実施の形態１と同様に、各ノードの目的関数の値が均一となるように各ノードを拡大させながら、所定の条件に達したノードをサブグラフとし、サブグラフ化していない残りのシード数が所定の割合に減少するまでノードの拡大を継続する。すなわち、トレースが進むほど、サブグラフ数Ｓは増加し、その増加した分、残りのシード数Ｘが減少することになる。ここで、サブグラフとは、ノードの拡大の過程で外周全てが他のノード等に接し、それ以上の拡大ができなくなったノードを指す。コンピュータシステムは、残りのシード数が所定の割合に減少するとループを抜け、基準値ＸＩをその時点の残りのシード数Ｘで更新する（Ｓ２００８）。
【００７４】
次いで、コンピュータシステムは、基準値ＮＩ＝Ｘ＋Ｓとした後（Ｓ２００９）、マージを行う。マージにおいて、コンピュータシステムは、マージグラフ生成（Ｓ２０１０）、エッジコスト計算（Ｓ２０１１）、サブグラフのマージ（Ｓ２０１２）をループ単位として、ノード数ＮがＮ≦ＮＩ×Ｊとなるまで当該ループ処理を繰り返す（Ｓ２０１３）。Ｊの値は、Ｋ＜Ｊ＜１で定めた任意の値である。すなわち、ここでは、前述したトレースによって生成された複数のサブグラフの内、隣接するサブグラフを対象としてマージを行う。このマージによってサブグラフ数が減少し、その減少した分だけ、ノード数Ｎ（サブグラフ数Ｓと残りのシード数Ｘの和）も減少することになる。コンピュータシステムは、ノード数Ｎが所定の割合に減少するとループを抜ける。
【００７５】
ループを抜けると、コンピュータシステムは、実施の形態１の場合と同様に、前述した式（１）を用いてトータルコストを計算する（Ｓ２０１４）。ここで、トータルコストが前回算出されたトータルコストよりも大きくなった場合（すなわちトータルコストが悪化した場合）には、前回算出したトータルコストを最適解とし、この際のノード数Ｎを最適な分割数とし、各ノードの境界を最適な分割境界とする（Ｓ２０１６）。一方、トータルコストが前回算出されたトータルコストよりも小さくなった場合（すなわちトータルコストが改善した場合）には、Ｓ２００４に戻り再度トレースを行う。このトレースに際しては、現時点での残りのシード数Ｘが基準値ＸＩとされており、この残りのシードを対象にサブグラフ化が進み、これに伴い残りのシード数が所定の割合に減少するまでトレースが継続される。それ以降も同様に、現時点でのノード数を基準値ＮＩとして、ノード数が所定の割合に減少するまでサブグラフがマージされる。これによって、図２０の符号Ｓ２００に示すように、残りのシード数Ｘと、ノード数Ｎを段階的に減らしながら処理が進むことになる。
【００７６】
図２１は、図２０のフローに伴う処理対象の推移の一例を表す模式図である。ここでは、例えば、前述したＫの値を０．５、Ｊの値を０．７とし、初期状態として１６個のシードを選択して処理を行った場合を示している。図２１では、それぞれ組み合わせ回路（図示せず）を介して適宜接続された複数のフリップフロップＦＦからなる回路が模式的に示され、初期状態においては、複数のＦＦの中から均一的に１６個のシードＳＥＤが選択されている。その後、１回目のトレースが行われると、各シードを起点とする各ノードＮＤＥが段階的に拡大していき、拡大が限界に達したノードがサブグラフＳＧＨとなっていく。この際、各ノードＮＤＥの拡大の速度は、実施の形態１で述べたように、各ノードに含まれる回路の総合的な複雑度に応じて様々に異なる。この１回目のトレースは、残りのシード数Ｘがトレース前の１６個からその０．５倍程度となる８個になるまで継続され、これに伴い８個のサブグラフＳＧＨが生成される。
【００７７】
次いで、サブグラフＳＧＨを対象に１回目のマージが行われ、このマージは、ノード数Ｎがマージ前の１６個からその０．７倍程度となる１１個に減少するまで行われる。すなわち、ノード数Ｎは、残りのシード数Ｘとサブグラフ数Ｓの合計であり、残りのシード数Ｘは変えられないため、結果的に、サブグラフ数Ｓが８個から３個に減少するまでマージが行われる。以降、同様にして、２回目のトレースは、残りのシード数Ｘがトレース前の０．５倍程度となる４個となるまで行われ、その後、２回目のマージは、ノード数Ｎがマージ前の０．７倍程度となる７個となるまで行われる。以降のトレースおよびマージも同様となる。
【００７８】
図２２は、図２１の推移に伴うマージグラフおよびトレースグラフの一例を表す説明図である。ここでは、一例として、図２１における１回目のトレースの後に生成されるマージグラフと、１回目のマージの後に生成されるトレースグラフとが示されている。マージグラフは、図１８で説明したようにマージ対象となるノード（ここではサブグラフＳＧＨ）を丸印で表し、そのノード間の接続関係をエッジで表したものであり、図２２では省略しているが、各ノードは目的関数の値を持ち、各エッジはエッジコストを持っている。ここでは、エッジコストに基づいて、双方向矢印で示したマージがそれぞれ行われ、その結果、図２２に示したマージ（１回目）の状態になる。
【００７９】
一方、トレースグラフは、図１７で説明したようにトレース対象となるノードＮＤＥを丸印で表し、そのノード間の接続有無をエッジで表したものであり、図２２では省略しているが、各ノードは目的関数の値を持っている。また、図１７で説明したように、ノードが接した場合にはエッジが切断されるため、ノードＮＤＥの一種となるサブグラフＳＧＨは、エッジを持たない。ここでは、各ノードの目的関数の値に基づいて、矢印で示した方向に向けてそれぞれトレースが行われ、その結果、図２２に示したトレース（２回目）の状態になる。
【００８０】
図２３は、図２０のフローに伴う処理対象の他の推移の一例を表す模式図であり、図２４は、図２３に続く模式図である。図２１は、処理対象がフラット階層である場合の遷移の一例を示したものであったが、図２３および図２４は、処理対象が論理階層を保持する場合の遷移の一例を示したものとなっている。ここでは、例えば、前述したＫの値を０．５、Ｊの値を０．７５とし、初期状態として２７個のシードを選択して処理を行った場合を示している。論理階層は、例えば、最上位階層ＴＯＰが３個のブロックＢＬＫを持ち、各ブロックＢＬＫが、更に３個のサブブロックＳＢＬＫを持ち、各サブブロックＳＢＬＫが、更に３個のモジュールＭＤを持つものとし、シードＳＥＤは、各ＭＤの中から一つずつ選択されている。
【００８１】
その後、１回目のトレースが行われると、各シードを起点とする各ノードＮＤＥが段階的に拡大していき、拡大が限界に達したノードがサブグラフＳＧＨとなっていく。ここで、論理階層保持の場合では、図２１に示したフラット階層の場合と異なり、各ノードの外周が各論理階層（ブロックＢＬＫ、サブブロックＳＢＬＫ、モジュールＭＤ）の境界ＢＤに達した際に拡大の限界に達することとなる。また、各ノードＮＤＥの拡大の速度は、実施の形態１で述べたように、各ノードに含まれる回路の総合的な複雑度に応じて様々に異なる。この１回目のトレースは、残りのシード数Ｘがトレース前の２７個からその０．５倍程度となる１３個になるまで継続され、これに伴い１４個のサブグラフＳＧＨが生成される。
【００８２】
次いで、サブグラフＳＧＨを対象に１回目のマージが行われ、このマージは、ノード数Ｎがマージ前の２７個からその０．７５倍程度となる２０個に減少するまで行われる。すなわち、ノード数Ｎは、残りのシード数Ｘとサブグラフ数Ｓの合計であり、残りのシード数Ｘは変えられないため、結果的に、サブグラフ数Ｓが１４個から７個に減少するまでマージが行われる。この例では、３個のサブグラフＳＧＨ（モジュールＭＤ）が１個のＳＧＨとして統合されたり、２個のＳＧＨ（モジュールＭＤ）が１個のＳＧＨとして統合されたり等が行われている。
【００８３】
続いて、２回目のトレースは、残りのシード数Ｘがトレース前の０．５倍程度となる６個となるまで行われる。この際には、例えば、前述した３個のモジュールＭＤを統合した１個のサブグラフＳＧＨは、上位階層（サブブロックＳＢＬＫ）に移動した上でトレースが継続される。その後、２回目のマージは、ノード数がマージ前の０．７５倍程度となる１５個となるまで行われる。この例では、１回目のマージと同様のモジュールＭＤ階層での統合に加えて、例えば、２個のサブグラフＳＧＨ（サブブロックＳＢＬＫ）が１個のＳＧＨとして統合されるといったサブブロックＳＢＬＫ階層での統合等が行われている。以降も同様にして、図２４に示すように、３回目、４回目、…のトレースおよびマージが順次行われ、それに応じて、段階的にノード数Ｎが減少すると共に上位階層でのマージが進んでいく。
【００８４】
以上のように、フラット階層と論理階層保持のいずれの場合においても、ノード数Ｎを段階的に減らしながら、その都度トータルコストが算出され、最終的には、トータルコストが最良であったノード数が最適な分割数となり、その各ノードの境界が最適な分割境界となる。したがって、この分割単位に基づいて並列処理により自動レイアウトを行うことで、その処理時間の短縮が図れる。さらに、この分割単位に基づいてフロアプランやチップ分割等を行うことで、前述したレイアウト処理時間や半導体装置の品質も含めてレイアウト設計の総合的な最適化が図れる。
【００８５】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【００８６】
本実施の形態による半導体装置の設計方法は、特に、マイクロコンピュータ等を代表に異なる機能を備えた回路ブロックが混在した半導体装置のレイアウト設計方法に適用して有益な技術であり、これに限らず、各種半導体装置のレイアウト設計方法として広く適用可能である。
【符号の説明】
【００８７】
Ａ／Ｄ  アナログ・ディジタル変換ブロック
ＢＤ  論理階層の境界
ＢＬＫ  ブロック
ＢＳ  バス
ＣＬＫ  クロック
ＣＰ  チップ
ＣＰＵ  演算処理ブロック
ＤＭＡＣ  ＤＭＡ制御ブロック
ＤＰ  データパス
ＥＧ  エッジ
ＥＮ  イネーブル信号
ＦＦ  フリップフロップ
ＦＰ  フロアプラン情報
Ｉ／Ｏ  外部ポート制御ブロック
ＩＮＤ  入力データ
ＬＯＧ  組み合わせ回路
ＭＤ  モジュール
ＭＥＭ  メモリ
ＮＤＥ  ノード
ＮＬ  ネットリスト
ＰＥＲＩ  周辺モジュール
ＰＨ  タイミングパス
ＰＬＬ  クロック生成回路
ＰＮ  ピン
ＲＡＭ  揮発性メモリブロック
ＲＯＭ  不揮発性メモリブロック
ＳＢＬＫ  サブブロック
ＳＥＤ  シード
ＳＧ  ステージ数
ＳＧＨ  サブグラフ
ＳＬ  セル情報
ＴＭ  タイミング情報
ＴＭＲ  タイマブロック
ＴＯＰ  最上位階層
ＴＳＶ  ビア
【図１】
0005401256.tif 000002
【図２】
0005401256.tif 000003
【図３】
0005401256.tif 000004
【図４】
0005401256.tif 000005
【図５】
0005401256.tif 000006
【図６】
0005401256.tif 000007
【図７】
0005401256.tif 000008
【図８】
0005401256.tif 000009
【図９】
0005401256.tif 000010
【図１０】
0005401256.tif 000011
【図１１】
0005401256.tif 000012
【図１２】
0005401256.tif 000013
【図１３】
0005401256.tif 000014
【図１４】
0005401256.tif 000015
【図１５】
0005401256.tif 000016
【図１６】
0005401256.tif 000017
【図１７】
0005401256.tif 000018
【図１８】
0005401256.tif 000019
【図１９】
0005401256.tif 000020
【図２０】
0005401256.tif 000021
【図２１】
0005401256.tif 000022
【図２２】
0005401256.tif 000023
【図２３】
0005401256.tif 000024
【図２４】
0005401256.tif 000025
【図２５】
0005401256.tif 000026
【図２６】
0005401256.tif 000027
【図２７】
0005401256.tif 000028
【図２８】
0005401256.tif 000029
【図２９】
0005401256.tif 000030