(57)【特許請求の範囲】
【請求項１】
半導体装置の各部にクロック信号を分配するためのクロックツリーをコンピュータが合成するクロックツリー合成過程と、
前記クロックツリーにおいてファンアウトが所定値以下であり、かつ、クロックバッファを途中に含み、かつ、総配線長が所定長以上であるクロックラインを前記コンピュータが選択するクロックライン選択過程と、
前記クロックライン選択過程において選択されたクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を前記コンピュータが評価する可能性評価過程と
を具備することを特徴とする半導体装置のレイアウト設計方法。
【請求項２】
半導体装置の各部にクロック信号を分配するためのクロックツリーをコンピュータが合成するクロックツリー合成過程と、
前記クロックツリーにおいてクロックの供給先である各フリップフロップの配置の密集の程度が所定程度以上であり、かつ、各フリップフロップに与えられるクロック間のスキューが所定値以下であるクロックラインを前記コンピュータが選択するクロックライン選択過程と、
前記クロックライン選択過程において選択されたクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を前記コンピュータが評価する可能性評価過程と
を具備することを特徴とする半導体装置のレイアウト設計方法。
【請求項３】
前記クロックツリー合成過程により得られたクロックツリーに基づいて前記半導体装置の仮配線を前記コンピュータが行う仮配線工程を具備し、
前記クロックライン選択過程では、前記仮配線の結果に基づいて、前記クロックラインの選択を前記コンピュータが行うことを特徴とする請求項１または２に記載のレイアウト設計方法。
【請求項４】
前記仮配線過程により得られた仮配線の結果に基づいて、前記クロックツリーについての静的タイミング・アナリシスを前記コンピュータが実行するタイミング解析過程を具備し、
前記可能性評価過程では、前記静的タイミング・アナリシスの結果に基づいて前記評価を前記コンピュータが行うことを特徴とする請求項３に記載のレイアウト設計方法。
【請求項５】
前記可能性評価過程では、前記評価の対象であるクロックバッファからクロックの供給を受ける全てのフリップフロップのセットアップ時間のマージンと、当該フリップフロップから直接にまたは他の回路を介してデータの供給を受け、かつ、前記クロックバッファ以外のクロックバッファを介して当該クロックの供給を受ける他の全てのフリップフロップのホールド時間のマージンとに基づき、前記評価を前記コンピュータが行うことを特徴とする請求項４に記載のレイアウト設計方法。
【請求項６】
前記クロックライン選択過程により選択されたクロックラインの始点となるルートバッファから当該クロックラインの終点となるフリップフロップまでの途中に介在するクロックバッファを前記コンピュータが削除し、当該フリップフロップの近傍にアンカーバッファを前記コンピュータが配置し、前記ルートバッファから前記アンカーバッファを介して当該フリップフロップに至るクロックラインを前記コンピュータがクロックツリー合成により生成するクロックライン変更過程を具備することを特徴とする請求項３〜５のいずれか１の請求項に記載のレイアウト設計方法。
【請求項７】
半導体装置の各部にクロック信号を分配するためのクロックツリーを合成するクロックツリー合成手段と、
前記クロックツリーにおいてファンアウトが所定値以下であり、かつ、クロックバッファを途中に含み、かつ、総配線長が所定長以上であるクロックラインを選択するクロックライン選択手段と、
前記クロックライン選択手段により選択されたクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を評価する可能性評価手段と
を具備することを特徴とする半導体装置のレイアウト設計装置。
【請求項８】
半導体装置の各部にクロック信号を分配するためのクロックツリーを合成するクロックツリー合成手段と、
前記クロックツリーにおいてクロックの供給先である各フリップフロップの配置の密集の程度が所定程度以上であり、かつ、各フリップフロップに与えられるクロック間のスキューが所定値以下であるクロックラインを選択するクロックライン選択手段と、
前記クロックライン選択手段により選択されたクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を評価する可能性評価手段と
を具備することを特徴とする半導体装置のレイアウト設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、クロックツリー合成（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ；以下、ＣＴＳと略す）を利用した半導体装置のレイアウト設計方法およびレイアウト設計装置に関する。
【背景技術】
【０００２】
ＣＴＳは、クロックの供給元からクロックの供給先である各フリップフロップ（以下、Ｆ／Ｆと略す）のクロック端子までの供給経路であるクロックツリーを合成しつつ半導体装置のレイアウトを行う設計工程である。ここで、半導体装置の設計では、各Ｆ／Ｆへ供給されるクロックの遅延時間が均等であり、各Ｆ／Ｆへのクロックエッジの到着時刻の時間差であるスキューが小さいほど、その後の設計工程のタイミング収束期間の短縮化が可能である。また、半導体装置のチップ（以下、単にチップという）の量産では、半導体装置内の各部の遅延量に製造ばらつきによるＯｎ  Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎが発生するが、このＯｎ  Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎへの耐性に関しても、スキューの小さい半導体装置の方が、各部の遅延量がばらついても、そのばらつきを吸収するだけのセットアップ時間とホールド時間のマージンを持つことになる。このため、ＣＴＳでは、クロックの供給元からクロックの各供給先までの遅延時間を調整することにより、スキューの最小化を図っている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１２２７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ＣＴＳでは、半導体装置内の各Ｆ／Ｆに供給されるクロックのスキューを最小化するために、最も遅延量の大きなクロックの経路に合わせて、他のクロックの経路に遅延量を揃えるためのクロックバッファを挿入する。このようにして挿入されるクロックバッファの中には、関係するＦ／Ｆのセットアップ時間およびホールド時間のマージンを確保するために必要なクロックバッファも含まれているが、そうではない余分なクロックバッファも含まれている。このような余分なクロックバッファは、クロックが変化する度に余分な消費電力を発生する。半導体装置のチップの動作時の消費電力では、クロックにより駆動される回路の消費電力が大きな比率を占める。従って、ＣＴＳにより余分なクロックバッファが挿入されると、チップ全体の消費電力が不要にかつ大幅に増加することとなる。また、近年の大規模チップの設計手法では、Ｕｓｅｆｕｌスキューなどの、回路の高速化を行うためのセットアップ時間対策のために、クロックバッファを受け側のＦ／Ｆに追加する手法が普及している。そのため、クロックバッファは一層増加し、チップが消費する電力は更に大きくなる傾向にある。また、ＣＴＳでは、各Ｆ／Ｆに対するクロックエッジの到着タイミングが揃うので、同時に大きな消費電力が発生する問題もある。
【０００５】
本発明は、以上説明した事情に鑑みてなされたものであり、ＣＴＳにより余分に挿入されるクロックバッファを削除し、半導体装置の消費電力の低減を可能にする技術的手段を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明では、ＣＴＳにより得られたクロックツリーの中から次のクロックラインを選択し、選択したクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を評価する。
ａ．ファンアウトが所定値以下であり、かつ、クロックバッファを途中に含み、かつ、総配線長が所定長以上であるクロックライン
ｂ．クロックの供給先である各Ｆ／Ｆの配置の密集の程度が所定程度以上であり、かつ、各Ｆ／Ｆに与えられるクロック間のスキューが所定値以下であるクロックライン
【０００７】
上記ａおよびｂに該当するクロックラインに接続されたクロックバッファの中には、同クロックラインに接続されたＦ／Ｆのセットアップ時間やホールド時間のマージンを確保するために必要でないものが含まれていることが多い。従って、そのような不要なクロックバッファの削除またはサイズ削減を行うことにより半導体装置の消費電力を低減することができる。
【０００８】
なお、特許文献１は、クロックライン上のトランジション制約およびキャパシタンス制約に余裕があるか否かを判別する第１処理と、上記第１処理での判別結果に応じて、上記クロックラインにおけるクロックバッファのサイズダウン又は削除を行う第２処理と、上記第２処理におけるクロックバッファのサイズダウン又は削除によって電力低減が可能であるか否かを判別する第３処理と、上記第３処理での判別結果に応じて上記クロックバッファのサイズ調整を行う第４処理とを実行する演算処理装置を開示している。
【０００９】
しかし、この特許文献１は、クロックバッファの削除またはサイズ低減を検討する対象となるクロックラインをどのようにして選択するかを明らかにしていない。全てのクロックラインを対象にクロックバッファの削除またはサイズ低減を検討するとなると、膨大な時間が必要になって現実的でない。本願発明によれば、短い時間内でクロックバッファの削除またはサイズ低減を検討する対象となるクロックラインを選択することができる。
【図面の簡単な説明】
【００１０】
【図１】この発明の一実施形態である半導体装置のレイアウト設計方法を実行するレイアウト装置１０の構成を示すブロック図である。
【図２】同レイアウト設計方法を実施するための演算処理の内容を示すフローチャートである。
【図３】同実施形態においてクロックバッファの削除またはサイズ低減を検討する対象となるクロックラインの第１の例を示す図である。
【図４】同実施形態においてクロックバッファの削除またはサイズ低減を検討する対象となるクロックラインの第２の例を示す図である。
【図５】一般的に行われるＦ／Ｆのセットアップ時間およびホールド時間のマージンの調査を説明する図である。
【図６】同実施形態において行われるＦ／Ｆのセットアップ時間およびホールド時間のマージンの調査を説明する図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照し、この発明の一実施形態について説明する。
【００１２】
図１は、この発明の一実施形態である半導体装置のレイアウト設計方法を実行するレイアウト装置１０の構成を示すブロック図である。このレイアウト装置１０は、例えばパーソナルコンピュータ等のコンピュータであり、表示装置１１、演算処理装置１２、記憶装置１３、および入力装置１４を含む。
【００１３】
記憶装置１３は、例えば磁気ディスクを記録媒体とするハードディスク装置である。この記憶装置１３には、各種プログラムや、半導体装置のレイアウトに用いられる各種情報が格納される。半導体装置のレイアウトに用いられる各種情報には、ネットリストやライブラリが含まれる。演算処理装置１２は、自動配置配線（Ｐｌａｃｅ  ａｎｄ  Ｒｏｕｔｅ）処理のためのプログラムを実行可能なマイクロコンピュータ、およびその周辺回路を含む。演算処理装置１２での処理には、半導体装置における各部にクロック信号を分配するためのクロックツリーの構築や、このクロックツリー間のクロックスキューの調整が含まれる。上記演算処理装置１２においては、必要に応じて、記憶装置１３内のネットリストやライブラリが参照される。入力装置１４は、キーボードやマウスを含み、半導体装置のレイアウト処理に関する各種情報入力を行うのに用いられる。表示装置１１は、液晶ディスプレイなどであり、半導体装置のレイアウト処理に関する各種情報表示を行うことができる。
【００１４】
本実施形態は、半導体装置の消費電力を低減することを目的とする。この目的を達成するため、本実施形態によるレイアウト設計方法では、ＣＴＳによりスキューを揃えた後の設計工程を見直し、Ｆ／ＦからＦ／Ｆへのデータ転送に必要なセットアップ時間やホールド時間を満たし、遷移時間や最大容量、最大ファンアウトなどのプロセス毎の設計制約を満たし、かつ、製造ばらつきに対する耐性を確保しながら、可能な限り余分なクロックバッファの削除またはサイズダウンを行う。
【００１５】
本実施形態によるレイアウト設計方法では、ＣＴＳの実行後において、合成されたクロックツリーの中から次の２種類のクロックラインを選択し、そのクロックラインに接続されたクロックバッファの削除またはサイズ削減の可能性を検討する。
ａ．クロックツリーにおいてファンアウトが所定値以下であり（例えばファンアウト＝１）、かつ、クロックバッファを途中に含み、かつ、総配線長が所定長以上であるクロックライン
ｂ．クロックの供給先である各Ｆ／Ｆの配置の密集の程度が所定程度以上であり、かつ、各Ｆ／Ｆに与えられるクロック間のスキューが所定値以下であるクロックライン
【００１６】
以下、これらのクロックラインをクロックバッファの削除またはサイズ削減の検討対象とする理由について説明する。
【００１７】
まず、市販されている配置配線ツールを利用してＣＴＳを実施すると、ＣＴＳでは、同じクロック系統に接続されたＦ／Ｆのクロックスキューをできるだけ小さくするために、各Ｆ／Ｆに至る各クロックラインに多数のクロックバッファを挿入して各クロックラインの遅延を一律に調整する。
【００１８】
また、ＣＴＳでは、半導体装置内においてＦ／Ｆがタイミングドリブンで配置されるため、共通のデータパスを構成する複数のＦ／Ｆは、互いに近傍配置される。そして、これらのＦ／Ｆとともに各Ｆ／Ｆにクロックを供給するクロックバッファも密集する傾向がある。
【００１９】
そのため、クロックスキューに着目すると、スキュー値が小さいＦ／Ｆ群が密集して配置され、そこにクロックバッファも集まって挿入される傾向がある。また、スキューの小さいＦ／Ｆ群のクロックバッファは、近傍配置されたＦ／Ｆの周辺に、比較的に短い距離でドライブさせるＣＴＳのクロックラインが発生する場合がある。このようなクロックバッファの群の中には少ない個数のクロックバッファにまとめても問題のないものもある。
【００２０】
また、半導体装置がＲＡＭなどのハードマクロを含んでいる場合や、回路規模が大きくい場合、全てのＦ／Ｆを同じ場所に配置することができないため、複数の場所に分かれたＦ／Ｆ群を構成することがある。ただし、クロックドメインは１つであるため、クロックの供給元が１つのままでＣＴＳによるスキュー調整を行うと、ハードマクロや分かれた場所に配置されたＦ／Ｆ群も含めて、全て同じ遅延値になるように調整を行うようになる。そのため、ハードマクロが搭載されている場合や、密集して配置されるＦ／Ｆ群が複数存在するような場合には、ＣＴＳにより得られるクロックツリーに、ファンアウトが１つで長距離をドライブさせるクロックラインが発生する場合がある。
【００２１】
これらのクロックラインに接続された各クロックバッファの中には、クロックラインに接続されたＦ／Ｆを適切に動作させるために必ずしも必要ではなく、むしろ消費電力を減らすために削除またはサイズ低減を行った方がよいものが含まれている可能性がある。そこで、本実施形態では、この特徴に着目し、選択したクロックラインに接続されたＦ／Ｆについてセットアップ時間やホールド時間に関する要求を満たしつつ、スキュー調整のためのクロックバッファの削除またはサイズ削減を行うのである。
以上が上記ａおよびｂに該当するクロックラインを選択する理由である。
【００２２】
図２は本実施形態における演算処理装置１２が半導体装置のレイアウト設計のために実行する処理の内容を示すフローチャートである。まず、演算処理装置１２は記憶装置１３から設計対象である半導体装置のネットリストを読み込む（ステップＳ１０）。このネットリストは、半導体装置を構成するＦ／Ｆ等の各種の回路間の接続状態を定義した情報である。次に演算処理装置１２は、ネットリストと記憶装置１３内のライブラリを参照し、ネットリストに定義された各回路の半導体チップ内での配置を決定する（ステップＳ２０）。次に演算処理装置１２は、半導体チップ内の各回路の配置情報とネットリストに基づいて、本実施形態に特有の処理である改良型ＣＴＳを実行し、半導体装置内の各Ｆ／Ｆにクロックを分配するクロックツリーを合成する（ステップＳ３０）。なお、この改良型ＣＴＳの詳細については後述する。
【００２３】
次に演算処理装置１２は、改良型ＣＴＳにより得られたクロックツリーを利用して、半導体装置内の配線についての詳細設計を行う（ステップＳ４０）。次に演算処理装置１２は、配線の詳細設計の結果に基づいて、半導体装置の各部の動作のシミュレーションを実行し、遅延調整等により各部の動作タイミングの最適化を行う（ステップＳ５０）。次に演算処理装置１２は、各部の動作タイミングが適正な範囲内のものか否かを判断し（ステップＳ６０）、適正（Ｍｅｔ）である場合は処理を終了し、不適正（Ｖｉｏｌａｔｉｏｎ）である場合には、その症状に応じて、ステップＳ１０〜Ｓ５０のいずれかに戻って処理を繰り返す。
【００２４】
以上が演算処理装置１２が半導体装置のレイアウト設計のために実行する処理の概略である。
【００２５】
次に本実施形態の特有な処理である改良型ＣＴＳ（ステップＳ３０）について説明する。まず、演算処理装置１２は、ステップＳ１０において読み込んだネットリストとステップＳ２０の配置結果に基づいて通常のＣＴＳを実行する（ステップＳ３１）。このＣＴＳでは、クロックの分配先である各Ｆ／Ｆに対して同時刻にクロックエッジが到着するように、クロックラインにクロックバッファを挿入してクロックラインの遅延調整を行う。次に演算処理装置１２は、ＣＴＳにより得られたクロックツリーに基づいて仮配線を行う（ステップＳ３２）。次に演算処理装置１２は、仮配線により得られた各配線の抵抗と容量値を抽出する（ステップＳ３３）。次に演算処理装置１２は、各配線の抵抗および容量値に基づき、クロックツリーについて静的タイミング・アナリシス（ＳＴＡ）を実施する（ステップＳ３４）。次に演算処理装置１２は、クロックツリーに介在するクロックバッファの削除またはサイズ低減の可能性の判断を行う（ステップＳ３５）。このステップＳ３５の処理の詳細は次の通りである。
【００２６】
まず、ステップＳ３５の処理において、演算処理装置１２は、クロックツリーにおいてファンアウトが所定値以下であり（例えばファンアウト＝１）、かつ、クロックバッファを途中に含み、かつ、総配線長が所定長以上であるクロックラインを選択する。
【００２７】
図３はこの処理により選択されるクロックラインの例を示している。このクロックラインは、クロックツリーの分岐後のクロックバッファ（以下、ルートクロックバッファという）４０からクロックバッファ４１、４２、４３を経てＦ／Ｆ５０に至っている。このようなクロックラインに接続される各クロックバッファは、消費電力低減の観点から削除またはサイズ削減を検討する余地がある。
【００２８】
また、ステップＳ３５の処理において、演算処理装置１２は、クロックツリーにおいてクロックの供給先である各Ｆ／Ｆの配置の密集の程度が所定程度以上であり、かつ、各Ｆ／Ｆに与えられるクロック間のスキューが所定値以下であるクロックラインを選択する。
【００２９】
図４には、この処理により選択されるクロックラインが存在する領域Ａ０と、この領域Ａ０の比較例である領域Ａ１が例示されている。これらの領域Ａ０およびＡ１には、Ｆ／Ｆの位置がＸマークにより示されている。領域Ａ１では、各Ｆ／Ｆに到達するクロックのクロックレイテンシー（遅延）が揃っておらず、領域Ａ１内のクロック間のスキュー（すなわち、領域Ａ１内のローカルスキュー）が大きい。これに対し、領域Ａ０では、各Ｆ／Ｆに到達するクロックのクロックレイテンシーが揃っており、ローカルスキューが小さい。ここで、領域Ａ０内のクロックラインに接続された各クロックバッファは、消費電力低減の観点から削除またはサイズ削減を検討する余地がある。
【００３０】
次に、ステップＳ３５の処理において、演算処理装置１２は、以上のようにして選択したクロックラインについて、当該クロックライン上のＦ／Ｆのクロック端子に接続されているクロックバッファの遅延値と該当Ｆ／Ｆの全てのパスのセットアップ時間のマージン、および該当Ｆ／Ｆの次段Ｆ／Ｆの全てのパスのホールド時間のマージン値を調査し、調査結果に基づいて、当該クロックバッファの削除またはサイズ削減の可能性を検討する。
【００３１】
以下、この調査および検討の方法について説明する。まず、図５（ａ）〜（ｃ）を参照し、一般的に行われるＦ／Ｆのセットアップ時間およびホールド時間のマージンの調査について説明する。
【００３２】
図５（ａ）に示す例では、データはＦ／Ｆ１１０→Ｆ／Ｆ１２０→Ｆ／Ｆ１３０というデータパスを通過する。一方、クロックは、クロックバッファ２１０および２１０ａを介してＦ／Ｆ１１０に供給され、クロックバッファ２１０、２２０および２２０ａを介してＦ／Ｆ１２０に供給され、クロックバッファ２１０、２２０、２３０および２３０ａを介してＦ／Ｆ１３０に供給される。この例では、Ｆ／Ｆ１１０のセットアップ時間のマージンが不足している。このため、クロックバッファ２１０ａを削除することができない。また、この例ではＦ／Ｆ１２０のセットアップ時間のマージンも不足している。このため、Ｆ／Ｆ１２０のクロック端子の手前にクロックバッファ２１０ｂを追加する必要がある。
【００３３】
図５（ｂ）に示す例では、図５（ａ）と同様な状況であるが、さらにＦ／Ｆ１３０のホールド時間のマージンが不足している。この例では、Ｆ／Ｆ１２０のセットアップ時間のマージン確保とＦ／Ｆ１３０のホールド時間のマージン確保の両方の理由によりクロックバッファ２２０ａおよび２２０ｂの両方が必要になっている。
【００３４】
図５（ｃ）に示す例では、クロックバッファ２２０ａを削除したとしても、Ｆ／Ｆ１２０のセットアップ時間のマージン不足にならず、Ｆ／Ｆ１３０のホールド時間のマージン不足にならない。このような場合にはクロックバッファ２２０ａを削除することが可能である。
【００３５】
一般的な半導体装置のタイミング設計ではこのようにＦ／Ｆのセットアップ時間およびホールド時間の調査検討が行われる。
【００３６】
次に図６（ａ）および（ｂ）を参照し、より具体的なセットアップ時間およびホールド時間の調査検討について説明する。上述したように、本実施形態では、クロックバッファの削減またはサイズ削減の検討対象として、クロックの供給先である各Ｆ／Ｆの配置の密集の程度が所定程度以上であり、かつ、各Ｆ／Ｆに与えられるクロック間のスキューが所定値以下であるクロックラインを選択する。図６（ａ）はこのようなクロックラインおよびそれに接続されたＦ／Ｆ群の例を示している。この例ではクロックバッファ２１０を通過したクロックがＦ／Ｆ１１１〜１１８に供給され、クロックバッファ２１０および２２０を通過したクロックがＦ／Ｆ１２１〜１２８に供給され、クロックバッファ２１０、２２０および２３０を通過したクロックがＦ／Ｆ１３１〜１３８に供給される。
【００３７】
この例では、クロックバッファ２２０の削除が可能かどうかを次のようにして検討する。まず、クロックバッファ２２０の出力するクロックが供給されるＦ／Ｆ１２１〜１２８のうちＦ／Ｆ１２１をチェック対象とし、このチェック対象Ｆ／Ｆ１２１のデータ入力端子に至る全てのパスについて、クロックバッファ２２０の削除を行った場合にセットアップ時間のマージン不足が生じないか否かを調べる。ここで、クロックバッファ２２０の遅延値よりもセットアップ時間のマージンが大きい場合には、クロックバッファ２２０を削除してもセットアップ時間のマージン不足は生じないと考えられる。
【００３８】
全てのパスについてセットアップ時間のマージン不足が生じない場合、クロックバッファ２２０の次段のクロックバッファ２３０からのクロックの供給を受けるＦ／Ｆ１３１〜１３８について、クロックバッファ２２０の削除を行った場合にホールド時間のマージン不足が生じないか否かを調べる。ここで、クロックバッファ２２０の遅延値よりもホールド時間のマージンが大きい場合には、クロックバッファ２２０を削除してもホールド時間のマージン不足は生じないと考えられる。
【００３９】
Ｆ／Ｆ１３１〜１３８の全てについてホールド時間のマージン不足が生じない場合には、図６（ｂ）に示すようにチェック対象Ｆ／ＦをＦ／Ｆ１２１からＦ／Ｆ１２２に切り換え、上記と同様に、クロックバッファ２２０を削除した場合にセットアップ時間およびホールド時間のマージン不足が発生するか否かを検討する。以下、クロックバッファ２２０からのクロックの供給を受ける他の全てのＦ／Ｆ１２３〜１２８について同様な検討を行う。
【００４０】
この検討の結果、クロックバッファ２２０を削除したとしてもセットアップ時間およびホールド時間のマージン不足が生じないことが判明した場合、クロックバッファ２２０は削除可能である可能性が高い。
【００４１】
そこで、タイミング的な余裕があることが判明した後、配置性の確認、遷移時間や最大容量、最大ファンアウトなどのマージンを持っているかの確認を行う。クロックバッファ２２０を削除すると、配置性、および遷移時間や最大容量、最大ファンアウトなどの、プロセスルールを満たすことが難しい場合には削除は行わず、クロックバッファ２２０のサイズダウンを行うようにする。
以上が図２におけるステップＳ３５の処理の詳細である。
【００４２】
本実施形態では、ステップＳ３５においてクロックツリー内のクロックバッファの削除またはサイズ削減が可能であることが判明した場合、そのクロックバッファの削除またはサイズ削減を行ってステップＳ３１に戻り、ＣＴＳを再度実行する。
【００４３】
ここで、図３を参照し、この再度のＣＴＳの実行例について説明する。この図３に示すクロックラインは、ルートクロックバッファ４０からクロックバッファ４１、４２、４３を経てＦ／Ｆ５０に至っている。このクロックラインに接続されたＦ／Ｆ５０のセットアップ時間およびホールド時間に十分なマージンがあり、クロックバッファ４１、４２、４３の少なくとも一部の削除が可能であるとする。この場合、クロックバッファ４１、４２、４３を削除するとともに、Ｆ／Ｆ５０の近傍に、Ｆ／Ｆ５０のセットアップ時間およびホールド時間のマージンを確保可能な遅延量を持ったアンカークロックバッファ４９を配置し、ＣＴＳを実行することによりルートクロックバッファ４０からアンカークロックバッファ４９を経由してＦ／Ｆ５０に至るクロックラインを生成する。
【００４４】
演算処理装置１２は、このＣＴＳの実行を終えると、上述と同様、ステップＳ３２〜Ｓ３４の処理を実行し、再度、ステップＳ３５において、クロックバッファの削除、サイズ削減の余地があるか否かを判断する。そして、クロックバッファの削除またはサイズ削減の余地がある場合には、そのクロックバッファの削除またはサイズ削減を行うべくステップＳ３１に戻り、余地がない場合にはステップＳ３０の改良型ＣＴＳを終える。
【００４５】
本実施形態では、以上のようにステップＳ３１〜Ｓ３５のフローを繰り返すことにより、求められる制約を満たしながら、クロックバッファの削除またはサイズ削減が可能な候補を見つけ、整っているスキューを崩しながら、低消費電力化に向けた調整を行っていく。もし、半導体装置がテストモードなどを備えていた場合、そのテストモード等でのタイミング解析を実施し、同じ確認を実施する。結果的に、セットアップ時間やホールド時間マージンの確保に無理がある場合、候補となったクロックバッファは削除せず、サイズの変更も行わない。
以上が本実施形態における改良型ＣＴＳの詳細である。
【００４６】
そして、この改良型ＣＴＳを全て終えた後、通常フローに戻り、実配線を行い（ステップＳ４０）、各部の動作タイミングの最適化を実施してＯｎ  Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎに耐えるマージンを持っていることを確認してから（ステップＳ５０、Ｓ６０）、サインオフを行う。最後のサインオフの工程は、低消費電力化のための調整を行うフローの有無によらず、通常のサインオフと全く同じ工程となるため、製品の品質は同等のもの、と判断することができる。
【００４７】
本実施形態によれば、従来のフローと比べ、ＣＴＳ後にクロックバッファの調整を行うフロー（ステップＳ３２〜Ｓ３５）を加えることで、クロックが動く際に動作する回路（クロックバッファ）を極力低駆動のものにするか、その数を減らし、チップのダイナミックな消費電力を抑えることできる。
【００４８】
また、クロックの立上りおよび立下りのスキューを崩した結果、それぞれのクロックエッジがずれることになるため、クロックの同時スイッチング回数が減り、ピーク電力消費を同時に抑える効果も期待することができる。
【００４９】
また、２次的な効果として、ＣＴＳ直後の早い段階で、クロックに関連したセットアップ時間やホールド時間のマージンを把握することができる。これは、モードにより複数のクロックを選択することが可能なマルチモードを持った製品に対して、特に有効性を発揮する。一見、１つのモードだけでは、スキューが揃っているように見えるクロックツリーが、マルチモードの観点から見た場合、実際にはスキューが崩れたクロックツリーとなっているケースが存在する。こういった場合、スキューの崩れたクロックツリーを修正せずに、そのままタイミング収束を行う工程に移ると、その収束性は非常に悪いものとなり、予定していた工期よりも大幅に遅延する危険を伴うことになる。追加したフロー（ステップＳ３２〜Ｓ３５）は、こういった危険を事前に回避することにもなり、かつ、タイミング調整工程の収束性（ステップＳ６０からステップＳ１０〜Ｓ５０への戻り回数）は非常によくなり、設計期間を短縮する効果を得ることが期待できる。
【符号の説明】
【００５０】
１０……レイアウト装置、１１……表示装置、１２……演算処理装置、１３……記憶装置、１４……入力装置。
【図１】
0006589533.tif 000002
【図２】
0006589533.tif 000003
【図３】
0006589533.tif 000004
【図４】
0006589533.tif 000005
【図５】
0006589533.tif 000006
【図６】
0006589533.tif 000007