(57)【要約】【課題】セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる半導体設計装置を提供する。【解決手段】ＳＴＡ部５は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出する。ＨＳＬＤ部６は、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。ＰＡＳ部７は、ＨＳＬＤ部６によるレイテンシ制御の結果、クロックレイテンシ分布においてシンク数に閾値以上のピークが残る場合、ＨＳＬＤ部６による再計算後のタイミング情報により、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシをスムージングする。【選択図】図２０
2012014585.tif 000002
【特許請求の範囲】
【請求項１】
論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置であって、
フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、
前記算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第１のクロックレイテンシ調整部とを備えた、半導体設計装置。
【請求項２】
前記スラック解析部は、さらに、前記クロックレイテンシの現在の設計値に基づいて、前記フリップフロップのホールド時間のマージンであるホールドスラックを算出し、
前記第１のクロックレイテンシ調整部は、前記セットアップスラックと前記フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項１記載の半導体設計装置。
【請求項３】
前記フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第１のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項２記載の半導体設計装置。
【請求項４】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第１のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項３記載の半導体設計装置。
【請求項５】
前記第１のクロックレイテンシ調整部は、複数個のフリップフロップのクロックレイテンシを調整する場合に、前記複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序を付けて、
前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項１記載の半導体設計装置。
【請求項６】
前記フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第１のクロックレイテンシ調整部は、前記セットアップスラックと、前記フリップフロップの後段の複数個のフリップフロップのホールドスラックの最小値のうちの小さい方の値をフリップフロップのマージンとし、前記複数個のフリップフロップのマージンの最大値を最大のクロックレイテンシとし、
前記第１のクロックレイテンシ調整部は、前記最大のクロックレイテンシからフリップフロップのマージンを減算することによって、前記フリップフロップの相対的なクロックレイテンシを算出する、請求項５記載の半導体設計装置。
【請求項７】
前記第１のクロックレイテンシ調整部は、前記フリップフロップへのデータパス遅延が、クロックの周期よりも長い場合でも、前記セットアップスラックに基づいて、前記フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項１記載の半導体設計装置。
【請求項８】
前記半導体設計装置は、さらに、
前記第１のクロックレイテンシ調整部によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第１の値に集中する場合に、前記第１の値のクロックレイテンシを有する複数個のフロップフロップを選択し、前記選択した各フリップフロップのクロックレイテンシの現在の設計値と、前記第１のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップのセットアップスラックに基づいて、タイミング違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する第２のクロックレイテンシ調整部と備えた、請求項１に記載の半導体設計装置。
【請求項９】
前記第２のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第１のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項８記載の半導体設計装置。
【請求項１０】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合において、
前記第２のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第１のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値に基づいて、セットアップ違反およびホールド違反を起こさない範囲で、前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項９記載の半導体設計装置。
【請求項１１】
前記選択した各フリップフロップの後段のフリップフロップが複数個ある場合に、
前記第２のクロックレイテンシ調整部は、前記選択した各フリップフロップのセットアップスラックと、前記第１のクロックレイテンシ調整部によるクロックレイテンシの調整によって変化した前記選択した各フリップフロップの後段のフリップフロップのホールドスラックの最小値のうちの小さい方の値だけ前記選択した各フリップフロップのクロックレイテンシを前記現在の設計値よりも早める方向に調整する、請求項１０記載の半導体設計装置。
【請求項１２】
前記第２のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップを前記セットアップスラックの大きい方から順番に順序付けて、
前記第２のクロックレイテンシ調整部は、前記選択した複数個のフリップフロップのうち、前記セットアップスラックの大きいフリップフロップから順番に前記クロックレイテンシを調整し、各フリップフロップの前記クロックレイテンシを調整するごとに前記セットアップスラックおよび前記ホールドスラックを再計算する、請求項８記載の半導体設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体設計装置に関する。
【背景技術】
【０００２】
近年のＬＳＩ（large-scale integration）設計は同期設計が主流である。同期設計ではすべてのレジスタがフリップフロップで構成され、クロックに同期して動作する。高速化のため、各フリップフロップに供給されるクロックはスキューが抑えられており、同位相で供給されるため、クロックの立ち上がりエッジおよび立下りエッジに電力消費が集中する。電力消費の集中によって、電源のダイナミックドロップやＥＭＩ（Electro Magnetic Interference）ノイズの増大を引き起こし、チップの信頼性を低下させるという問題があった。
【０００３】
このような問題に対して、たとえば、特許文献１（特開２００４−１９２２０１号公報）に記載されている装置では、クロックを遅延する複数の遅延回路の異なるノードから、複数のクロックのうちの１つを選択するセレクタを介してフリップフロップへクロックを出力する。セレクタの選択は擬似乱数で制御することによって、電力消費のタイミングを分散させることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１９２２０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の装置は、フリップフロップへ供給されるクロックは擬似乱数によって選択するものであり、擬似乱数発生のための面積オーバーヘッドが大きく、かつ、十分なクロック分散ができない。
【０００６】
それゆえに、本発明の目的は、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる半導体設計装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明の一実施形態は、論理合成によって設計されたフリップフロップのクロックレイテンシを調整する半導体設計装置である。この半導体設計装置は、フリップフロップのクロックレイテンシの現在の設計値に基づいて、フリップフロップのセットアップ時間のマージンであるセットアップスラックを算出するスラック解析部と、算出したセットアップスラックに基づいて、タイミング違反を起こさない範囲で、フリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する第１のクロックレイテンシ調整部とを備える。
【発明の効果】
【０００８】
本発明の一実施形態によれば、セットアップ違反やホールド違反を発生させずに、電力を消費するタイミングを分散させることができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の半導体集積回路の半導体設計装置の構成を表わす図である。
【図２】セットアップスラックＳＳおよびホールドスラックＨＳを説明するための図である。
【図３】第１の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図４】図３のステップＳ９０３の処理手順を表わすフローチャートである。
【図５】図３のステップＳ９０４のＨＳＬＤの処理手順を表わすフローチャートである。
【図６】ＨＳＬＤを適用前のクロックレイテンシの例を表わす図である。
【図７】前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。
【図８】本実施の形態のＨＳＬＤを適用後のクロック位相の例を表わす図である。
【図９】本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【図１０】本実施の形態のＨＳＬＤを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【図１１】従来手法で生成されるクロックツリーの例を表わす図である。
【図１２】図１１のクロックツリーに基づくタイミングチャートを表わす図である。
【図１３】本実施の形態で生成されるクロックツリーの例を表わす図である。
【図１４】図１３のクロックツリーに基づくタイミングチャートを表わす図である。
【図１５】図９のＤｅｓｉｇｎ２について、本実施の形態のＨＳＬＤを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【図１６】ＨＳＬＤを適用前のクロックレイテンシＤＣの頻度分布（ヒストグラム）を表わす図である。
【図１７】ＨＳＬＤを適用後のクロックレイテンシＤＣの頻度分布（ヒストグラム）を表わす図である。
【図１８】ＨＳＬＤ適用後にセットアップスラックが残存している例を表わす図である。
【図１９】図１７のピークＰ１に対するＨＳＬＤ後のセットアップスラックＳＳの頻度分布を表わす図である。
【図２０】第２の実施の形態の半導体設計装置の構成を表わす図である。
【図２１】第２の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【図２２】図２１のステップＳ２０２のＰＡＳの処理手順を表わすフローチャートである。
【図２３】図９に示すＤｅｓｉｇｎ２について、第１の実施形態のＨＳＬＤを適用した場合の電力消費と、第１の実施形態のＨＳＬＤに加えて第２の実施形態のＰＡＳを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照して説明する。
［第１の実施形態］
本発明の第１の実施形態は、タイミング解析手法によって、スラック（データパス遅延に対するクロックレイテンシのタイミング余裕）を算出し、算出したスラックに基づいてタイミング違反を発生させない範囲で各フリップフロップ（Ｄラッチ）に供給されるクロック位相を分散させることによって、電力を消費するタイミングを分散させる。
【００１１】
（半導体設計装置の構成）
図１は、第１の実施の形態の半導体設計装置の構成を表わす図である。
【００１２】
図１を参照して、この半導体設計装置１は、論理合成部２と、レイアウト設計部３と、設計データ記憶部４と、ＳＴＡ（Static Timing Analysis）部と、ＨＳＬＤ（Hold-driven Slack-based Latency Distribution）部６とを備える。
【００１３】
論理合成部２は、クロックツリーに関する初期ネットリストを生成して、設計データ記憶部４に記憶する。
【００１４】
レイアウト設計部３は、ネットリストに基づいて、初期レイアウトデータを生成して設計データ記憶部４に記憶する。また、レイアウト設計部３は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部４に記憶する。また、レイアウト設計部３は、ＨＳＬＤ部６によって新たに算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する。
【００１５】
設計データ記憶部４は、論理合成部２で作成されたネットリストと、レイアウト設計部３で作成されたレイアウトデータを記憶する。
【００１６】
ＳＴＡ部５は、設計データ記憶部４に記憶されているデータパス遅延と、初期クロックレイテンシと、セットアップ制約と、ホールド制約に基づいて、セットアップスラックＳＳおよびホールドスラックＨＳを算出する。
【００１７】
ここで、データパス遅延とは、フリップフロップへのデータパスでのデータの伝送遅延であり、以下の３通りがある。
【００１８】
（１）  プライマリ入力から初段のフリップフロップＦＦのデータ入力ピンまでのデータパス遅延、
（２）  フリップフロップＦＦ間(ＦＦへのクロックが立ち上がって（または立ち下って）からフリップフロップＦＦのデータ出力ピンを経由して次段のフリップフロップＦＦのデータ入力ピンまで)のデータパス遅延、
（３）  フリップフロップＦＦへのクロックが立ち上がって（または立ち下って）からプライマリ出力（出力ピン）までのデータパス遅延。
【００１９】
クロックレイテンシとは、クロックツリーの起点（origin）からクロックＣＬＫが、クロックパスを経て、フリップフロップＦＦへ入力されるまでの時間である。
【００２０】
フリップフロップＦiのセットアップ制約とは、フリップフロップＦiに入力されるデータが、フリップフロップＦiに入力されるクロックＣＬＫよりもどれだけ早く到達しておかなければならないかを示す値である。
【００２１】
フリップフロップＦiのホールド制約とは、フリップフロップＦiにクロックＣＬＫが入力された後、フリップフロップＦiに入力されるデータがどれだけの時間、値を維持しておかなければならないかを示す値である。
【００２２】
ここで、セットアップスラックＳＳとは、セットアップ制約で規定されたタイミングに対するマージン値である。フリップフロップＦiのセットアップスラックＳＳiが正の場合には、フリップフロップＦiに入力されるデータのデータパス遅延とフリップフロップＦiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。そして、最大でセットアップスラックＳＳiだけフリップフロップＦiに入力されるクロックＣＬＫの位相を早くしたとしても、フリップフロップＦiに入力されるデータのデータパス遅延とクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしている。一方、セットアップスラックＳＳiが負の場合には、フリップフロップＦiに入力されるデータのデータパス遅延とフリップフロップＦiのクロックレイテンシのタイミング関係は、セットアップ制約のタイミング条件を満たしていない（セットアップ違反）。
【００２３】
ホールドスラックＨＳとは、ホールド制約で規定されたタイミングに対するマージン値である。フリップフロップＦiのホールドスラックＨＳiが正の場合には、フリップフロップＦiに入力されるデータとフリップフロップＦiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。そして、最大でホールドスラックＨＳiだけフリップフロップＦiに入力されるクロックＣＬＫの位相を遅くしたとしても、フリップフロップＦiに入力されるデータとフリップフロップＦiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしている。一方、ホールドスラックＨＳiが負の場合には、フリップフロップＦiに入力されるデータとフリップフロップＦiのクロックレイテンシのタイミング関係は、ホールド制約のタイミング条件を満たしていない（ホールド違反）。
【００２４】
図２は、セットアップスラックＳＳおよびホールドスラックＨＳを説明するための図である。
【００２５】
ここでは、フリップフロップＦi、Ｆj、Ｆkがシリアルに接続されていると仮定する。クロックＣＬＫの周期Ｐとする。
【００２６】
フリップフロップＦi、Ｆj、ＦkのクロックレイテンシをＤＣi、ＤＣj、ＤＣkとする。
フリップフロップＦjへの最大のデータパス遅延をｍａｘ(ＤＬj)、最小のデータパス遅延をｍｉｎ(ＤＬj)とする。フリップフロップＦkへの最大のデータパス遅延をｍａｘ(ＤＬk)、最小のデータパス遅延をｍｉｎ(ＤＬk)とする。
【００２７】
フリップフロップＦjのセットアップ制約およびホールド制約をそれぞれＴＳj、ＴＨjとする。フリップフロップＦkのセットアップ制約およびホールド制約をそれぞれＴＳk、ＴＨkとする。
【００２８】
フリップフロップＦjおよびＦkのセットアップスラックＳＳj、ＳＳkおよびホールドスラックＨＳj、ＨＳkは下記の式で表すことができる。
【００２９】
ＳＳj＝Ｐ−ＤＣi−ｍａｘ(ＤＬj)−ＴＳj＋ＤＣj  ・・・（１）
ＨＳj＝ＤＣi＋ｍｉｎ(ＤＬj)−ＤＣj−ＴＨj            （２）
ＳＳk＝Ｐ−ＤＣj−ｍａｘ(ＤＬk)−ＴＳk＋ＤＣk        （３）
ＨＳk＝ＤＣj＋ｍｉｎ(ＤＬk)−ＤＣk−ＴＨk            （４）
したがって、ＳＴＡ部５は、図２の場合には、式（１）〜（４）に従って、セットアップスラックＳＳj、ＳＳk、およびホールドスラックＨＳj、ＨＳkを算出する。
【００３０】
（ＨＳＬＤ）
ＨＳＬＤ部６は、ＳＴＡ部５で算出したセットアップスラックとホールドスラックに基づいて、フリップフロップのクロックレイテンシを調整する。ＨＳＬＤ部６は、フリップフロップのクロックレインテンシを調整するときには、そのフリップフロップのセットアップスラックとそのフリップフロップの後段のフリップフロップのホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、そのフリップフロップのクロックレイテンシを現在の設計値よりも早める方向に調整する。ＨＳＬＤ部６の詳細な処理内容については後述する。
【００３１】
（動作手順）
図３は、第１の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【００３２】
まず、論理合成部２は、フリップフロップと組合せ回路で構成するＲＴＬ（Register Transfer Level）記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト（初期クロックレイテンシ、セットアップ制約、ホールド制約、およびデータパス遅延のデータを含む）を生成して、設計データ記憶部４に記憶する（ステップＳ９０１）。
【００３３】
次に、レイアウト設計部３は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部４に記憶する（ステップＳ９０２）。
【００３４】
次に、ＳＴＡ部５は、初期ネットリストに含まれるデータを利用して、フリップフロップＦＦのセットアップスラックとホールドスラックを算出する（ステップＳ９０３）。
【００３５】
次に、ＨＳＬＤ部６は、ステップＳ９０３で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップＦＦに対する新たなクロックレイテンシを算出する（ステップＳ９０４）。
【００３６】
次に、レイアウト設計部３は、新たに算出されたクロックレイテンシに基づいて、ステップＳ９０１で生成されたクロックツリーを、スキュー付きのクロックツリーに再構築することによってネットリストを更新する（ステップＳ９０５）。
【００３７】
さらに、レイアウト設計部３は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部４に記憶する（ステップＳ９０６）。
【００３８】
（ＳＴＡの手順）
図４は、図３のステップＳ９０３のセットアップスラックおよびホールドスラックの算出処理の手順を表わす図である。
【００３９】
図４を参照して、まず、ＳＴＡ部５は、ネットリスト内のすべてのフリップフロップ（Ｎ個あるとする）を任意の順序に番号を付ける（ステップＳ３０１）。
【００４０】
次に、ＳＴＡ部５は、変数ｉを「１」に設定する（ステップＳ３０２）。
次に、ＳＴＡ部５は、次の式に従って、第ｉ番目のフリップフロップＦiのセットアップスラックＳＳiを算出する。
【００４１】
ＳＳi＝Ｐ−ＤＣp(i)−ｍａｘ(ＤＬi)−ＴＳi＋ＤＣi  ・・・（５）
ここで、ＰはクロックＣＬＫの周期である。ｍａｘ(ＤＬi)は、フリップフロップＦiへの最大のデータパス遅延である。ＴＳiはフリップフロップＦiのセットアップ制約である。ＤＣiはフリップフロップＦiの初期クロックレイテンシである。ＤＣp(i)は、フリップフロップＦiへデータを出力する１つ前段のフリップフロップＦp(i)の初期クロックレイテンシである。ただし、フリップフロップＦiが他のフリップフロップからデータを受けない場合（つまり、プライマリ入力からデータを受ける場合）には、ＳＴＡ部５は、ＤＣp(i)を「０」として式（５）を計算する（ステップＳ３０３）。
【００４２】
次に、ＳＴＡ部５は、次の式に従って、第ｉ番目のフリップフロップのホールドスラックＨＳiを算出する。
【００４３】
ＨＳi＝ＤＣp(i)＋ｍｉｎ(ＤＬi)−ＤＣi−ＴＨi  ・・・（６）
ここで、ｍｉｎ(ＤＬi)は、フリップフロップＦiへの最小のデータパス遅延である。ＴＨiはフリップフロップＦiのホールド制約である。ＤＣiはフリップフロップＦiの初期クロックレイテンシである。ＤＣp(i)は、フリップフロップＦiへデータを出力する１つ前段のフリップフロップＦp(i)の初期クロックレイテンシである。ただし、フリップフロップＦiが他のフリップフロップからデータを受けない場合（つまり、プライマリ入力からデータを受ける場合）には、ＳＴＡ部５は、ＤＣp(i)を「０」として式（６）を計算する（ステップＳ３０４）。
【００４４】
ＳＴＡ部５は、ｉがＮでない場合には（ステップＳ３０５でＮＯ）、ｉを１だけインクリメントして（ステップＳ３０６）、ステップＳ３０３からの処理を繰り返す。ＳＴＡ部５は、ｉがＮの場合には（ステップＳ３０５でＹＥＳ）、処理を終了する。
【００４５】
（ＨＳＬＤの手順）
図５は、図３のステップＳ９０４のＨＳＬＤの処理手順を表わすフローチャートである。
【００４６】
図５を参照して、ＨＳＬＤ部６は、ネットリスト内のすべてのフリップフロップ（Ｎ個とする）をそれらのセットアップスラックＳＳが大きい方から順番に順序づける。ここでは、ｊ＝１〜Ｎの順番が付けられたとする（ステップＳ１０２）。
【００４７】
次に、ＨＳＬＤ部６は、変数ｊを１に設定する（ステップＳ１０３）。
次に、ＨＳＬＤ部６は、ステップＳ１０２で順序付けられた第ｊ番目のフリップフロップＦ（Ｆt(j)とする）を特定し、フリップフロップＦt(j)のセットアップスラックＳＳt(j)を特定する。ここでは、たとえば、ｊ＝１のときに、第１番目のフリップフロップがＦ5の場合には、セットアップスラックＳＳ5が特定されることになる（ステップＳ１０４）。
【００４８】
次に、ＨＳＬＤ部６は、フリップフロップＦt(j)からデータを受ける１段後ろのフリップフロップ（フリップフロップＦt(j)の後段のフリップフロップ）を選択する。ここでは、Ｍ(j)個のフリップフロップが選択されたとする。ＨＳＬＤ部６は、選択したＭ(j)個のフリップフロップのホールドスラックの中の最小値ＨＳ＿ＭＮ(j)を特定する。これは、フリップフロップＦt(j)のクロックレイテンシを早くすることによって、フリップフロップＦt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。ここでは、たとえば、最小値ＨＳ＿ＭＮ(j)としてＨＳ9が特定されたとする。なお、ＨＳＬＤ部６は、フリップフロップＦt(j)の後段のフリップフロップが存在しない場合には、最小値ＨＳ＿ＭＮ(j)として十分に大きな値に設定する（ステップＳ１０５）。
【００４９】
次に、ＨＳＬＤ部６は、セットアップスラックＳＳt(j)とホールドスラックＨＳ＿ＭＮ(j)のうちの小さい方をマージンＭt(j)として特定する。つまり、セットアップスラックＳＳt(j)がホールドスラックの最小値ＨＳ＿ＭＮ(j)よりも小さいときには、セットアップスラックＳＳt(j)だけクロックレイテンシＤＣt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンＭt(j)をＳＳt(j)にする。一方、セットアップスラックＳＳt(j)がホールドスラックの最小値ＨＳ＿ＭＮ(j)よりも大きいときには、セットアップスラックＳＳt(j)だけクロックレイテンシＤＣt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、ＨＳＬＤ部６は、マージンＭt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるＨＳ＿ＭＮ(j)とする。たとえば、ＳＳ5＜ＨＳ9の場合には、ＳＳ5がＭ5として特定される。このようにセットアップ違反およびホールド違反が生じない範囲でマージン（クロックレイテンシを早める量）を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである（ステップＳ１０６）。
【００５０】
次に、ＨＳＬＤ部６は、セットアップスラックおよびホールドスラックを再計算する。すなわち、ＨＳＬＤ部６は、フリップフロップＦt(j)のセットアップスラックＳＳt(j)を現在の値からＭt(j)だけ減算した値に更新する。ＨＳＬＤ部６は、フリップフロップＦt(j)のホールドスラックＨＳt(j)を現在の値からＭt(j)だけ加算した値に更新する。ＨＳＬＤ部６は、フリップフロップＦt(j)の後段のＭ(j)個のフリップフロップのセットアップスラックＳＳを現在の値からＭt(j)だけ加算した値に更新する。ＨＳＬＤ部６は、フリップフロップＦt(j)の後段のＭ(j)個のフリップフロップのホールドスラックＨＳを現在の値からＭt(j)だけ減算した値に更新する（ステップＳ１０７）。
【００５１】
ＨＳＬＤ部６は、ｊがＮでない場合（ステップＳ１０８でＮＯ）、ｊを１だけインクリメントして（ステップＳ１０９）、ステップＳ１０４からの処理を繰り返す。ＨＳＬＤ部６は、ｊがＮの場合（ステップＳ１０８でＹＥＳ）、マージンＭt(1)〜Ｍt(L)の中の最大値を最大クロックレイテンシＭＡＸ＿ＣＬとして特定する（ステップＳ１１０）。
【００５２】
次に、ＨＳＬＤ部６は、変数ｊを１に設定する（ステップＳ１１０）。
次に、ＨＳＬＤ部６は、最大クロックレイテンシＭＡＸ＿ＣＬからマージンＭt(j)を減算することによって相対クロックレイテンシＤＣt(j)′を算出する。このように相対クロックレイテンシを求めることで、その後のクロックツリーの作成、およびクロックツリーに基づく遅延素子の配置設計がより容易になる（ステップＳ１１２）。
【００５３】
ＨＳＬＤ部６は、ｊがＮでない場合（ステップＳ１１３でＮＯ）、ｊを１だけインクリメントして（ステップＳ１１４）、ステップＳ１１２からの処理を繰り返す。ＨＳＬＤ部６は、ｊがＮの場合（ステップＳ１１３でＹＥＳ）、処理を終了する。
【００５４】
なお、上記のステップＳ１０７のセットアップスラックＳＳおよびホールドスラックＨＳの再計算は、オプショナルであり、論理合成部２で作成された初期のクロックレイテンシの分散具合によっては、実行しなくてもよい場合がある。
【００５５】
（処理結果の例１）
図６は、ＨＳＬＤを適用前のクロックレイテンシの例を表わす図である。
【００５６】
図６を参照して、この例は、５つのフリップフロップＦ１〜Ｆ５のクロックレイテンシを表わす。
【００５７】
各フリップフロップＦ１〜Ｆ５をタイミングエンドポイントとした時のセットアップスラック値が示されている。ここでは、周期を「１０ｎｓ」、フリップフロップＦ１〜Ｆ５内の伝播遅延やタイミングチェック値、クロックスキューを「０ｎｓ」と仮定している。
【００５８】
ＨＳＬＤ適用前の設計では、各フリップフロップＦ１〜Ｆ５のクロック端子へ位相ばらつきを抑えたクロック信号を供給するため、クロックツリーの起点（origin）に「５ｎｓ」の遅延素子を配置して、この遅延素子からの信号が各フリップフロップＦ１〜Ｆ５へ供給される。
【００５９】
ここで、ピーク電力を低減するためには、図６に示されているセットアップスラック分だけタイミングに余裕があることを考慮して、前段のフリップフロップへのクロックの位相をセットアップスラック分だけ遅らせる方法が考えられる。
【００６０】
図７は、前段のクロックの位相をセットアップスラック分だけ遅らせる手法でのクロック位相の例を表わす図である。本事例にHSLDを適用した場合には、Ｆ３→Ｆ５→Ｆ２→Ｆ４→Ｆ１の順に評価される。この評価順はそれぞれのクロックレイテンシ決定後の再計算後も変わらない。
【００６１】
図７に示すように、フリップフロップＦ２、Ｆ３、Ｆ４、Ｆ５のセットアップスラックＳＳは、それぞれ「２ｎｓ」、「６ｎｓ」、「１ｎｓ」、「３ｎｓ」であるから、フリップフロップＦ１、Ｆ２、Ｆ３、Ｆ４へのクロックの位相をそれぞれ「２ｎｓ」、「６ｎｓ」、「１ｎｓ」、「３ｎｓ」遅らせている。
【００６２】
しかしながら、たとえば、フリップフロップＦ２をタイミングのスタートポイントとするタイミングパスはＦ３だけとは限らない。フリップフロップＦ３のセットアップスラック「６ｎｓ」を利用して、フリップフロップＦ２のクロック位相を「６ｎｓ」遅らせた場合に、もし、フリップフロップＦ３がフリップフロップＦ２以外にもタイミングスタートポイントを持っていれば、フリップフロップＦ３のセットアップスラックは「０ｎｓ」にはならないどころか、フリップフロップＦ２を「６ｎｓ」遅らせたために、別のエンドポイントがタイミング違反となってしまう。つまり、あるフリップフロップＦＦをエンドポイントとするセットアップスラックを利用して、そのフリップフロップＦＦに関連する別のフリップフロップＦＦのクロックレイテンシを調整することは困難である。
【００６３】
これに対して、本実施の形態では、ピーク電力を低減するために、セットアップスラックを有するフリップフロップの前段のフリップフロップへのクロックの位相をセットアップスラック分遅らせるのではなく、セットアップスラックを有するフリップフロップ自体のクロックの位相を早めるものである。
【００６４】
図８は、本実施の形態のＨＳＬＤを適用後のクロック位相の例を表わす図である。
図８では、図５のステップＳ１０６において、セットアップスラックＳＳt(j)がホールドスラックの最小値ＨＳ＿ＭＮ(j)よりも小さい場合を想定したものである。
【００６５】
また、図５のステップＳ１０７のセットアップスラックＳＳおよびホールドスラックＨＳの再計算は実行していない。
【００６６】
図６より、最大クロックレイテンシＭＡＸ_ＣＬは「６ｎｓ」である。これから、各セットアップスラック値減算することで、フリップフロップＦ１、Ｆ２、Ｆ３、Ｆ４、Ｆ５への相対クロックレイテンシは、それぞれ「６ｎｓ」、「４ｎｓ」、「０ｎｓ」、「５ｎｓ」、「３ｎｓ」となる。
【００６７】
本実施の形態では、このようにして求めた相対クロックレイテンシをクロックパスに割り当てる。図６に示すように、フリップフロップＦ１、Ｆ２、Ｆ３、Ｆ４へのクロックパスには、それぞれ、「６ｎｓ」、「４ｎｓ」、「０ｎｓ」、「５ｎｓ」の遅延素子が設けられる。
【００６８】
（性能評価）
図９は、本実施の形態の性能を評価するために用いたデザインの例を説明するための図である。
【００６９】
ここで、各デザインともパス数は８本とし、横軸はデータパス遅延[ｎｓ]とし、縦軸は当該データパス遅延を持つデータパス数とする。
【００７０】
Ｄｅｓｉｇｎ１〜Ｄｅｓｉｇｎ３は、次のようなタイミング分布をもつデザインであると仮定する。
【００７１】
Ｄｅｓｉｇｎ１では、データパス遅延が「４〜５ｎｓ」、「５〜６ｎｓ」、「６〜７ｎｓ」、「７〜８ｎｓ」のデータパス数は、それぞれ１本である。データパス遅延が「８〜９ｎｓ」、「９〜１０ｎｓ」のデータパス数がそれぞれ２本である。
【００７２】
Ｄｅｓｉｇｎ２では、８本のデータパスの全てのデータパス遅延が「７〜８ｎｓ」に集中している。
【００７３】
Ｄｅｓｉｇｎ３では、８本のデータバスの全てのパス遅延が「９〜１０ｎｓ」に集中している。
【００７４】
図１０は、Ｄｅｓｉｇｎ１について、本実施の形態のＨＳＬＤを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【００７５】
図１０において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がＨＳＬＤを適用しない場合（従来手法）の電力消費、破線がＨＳＬＤを適用した場合（第１の実施の形態手法）の電力消費である。
【００７６】
図１０に示すように、従来手法では、ピーク電力が「１２」であるのに対して、第１の実施の形態手法では、ピーク電力が「５.８」に抑えられている。つまり、本実施の形態手法では、従来手法よりも、ピーク電力を「５２％」削減できている。
【００７７】
この理由は、本実施の形態では、各フリップフロップＦＦへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費が分散されたからである。
【００７８】
本実施の形態では、このようにピーク電力を低減することができるので、ＩＲドロップやＥＭＩ等のノイズを低減することができ、製品の信頼性を向上させることができる。
【００７９】
（処理結果の例２）
次に、上記の手法を用いることで、副次的に得られる効果について記載する。
【００８０】
図１１は、従来手法で生成されるクロックツリーの例を表わす図である。
従来手法では、各フリップフロップＦＦのクロック端子にクロックツリーが施されていることが多い。ここでクロックツリーのスキューは「０」と仮定し、その「０」を満足し、かつファンアウト分割を実現するためにクロックは「１ｎｓ」のレイテンシを要すると仮定する。
【００８１】
図１２は、図１１のクロックツリーに基づくタイミングチャートを表わす図である。
図１２に示すように、フリップフロップＦ２からフリップフロップＦ３へのデータパス遅延は「１１ｎｓ」である。フリップフロップＦ３へ入力されるクロックの立上がりエッジまでに、フリップフロップＦ３へデータが到着せずに、セットアップ違反を引き起こしている。
【００８２】
図１３は、本実施の形態で生成されるクロックツリーの例を表わす図である。
図１３に示すように、セットアップスラックに基づいて、クロック位相をチューニングするため、前後のクロックパスにセットアップスラックがあれば、負のセットアップスラック(すなわちタイミング違反)を吸収することができる。
【００８３】
図１４は、図１３のクロックツリーに基づくタイミングチャートを表わす図である。
図１４に示すように、フリップフロップＦ１、Ｆ２、Ｆ３、Ｆ４の相対クロックレイテンシ(位相遅延)はそれぞれ「２ｎｓ」、「０ｎｓ」、「１ｎｓ」、「２ｎｓ」となる。一方、フリップフロップＦ２からフリップフロップＦ３へのデータパス遅延は、「１１ｎｓ」であり、クロック周期「１０ｎｓ」を超えている。しかし、次段のフリップフロップＦ３からフリップフロップＦ４へのデータパス遅延が「９ｎｓ」であるため、フリップフロップＦ３のクロック位相を「１ｎｓ」だけ遅らせることができる。したがって、従来手法のようなセットアップ違反は発生しない。
【００８４】
（まとめ）
以上のように、第１の実施形態によれば、各フリップフロップへ到達するクロックの位相をセットアップスラックおよびホールドスラックに応じて可変にしているので、電力消費のタイミングを分散することができる。第１の実施形態では、このように電力消費のタイミングを分散させることができるので、ＩＲドロップやＥＭＩ等のノイズを低減することができ、半導体装置の信頼性を向上させることができる。
【００８５】
［第２の実施形態］
図１５は、図９のＤｅｓｉｇｎ２について、本実施の形態のＨＳＬＤを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【００８６】
ＤｅＳｉｇｎ２は、８本すべてのデータパスのセットアップスラックは「３ｎｓ」であり、一点に集中している。このような場合に、第１の実施形態のように、セットアップスラックをそのまま位相遅延としてしまうと、クロック位相が、同一の値だけシフトされるだけであって、分散されない。その結果、図１５に示すようにピーク電力を削減する効果が得られない。
【００８７】
図１６は、ＨＳＬＤを適用前のクロックレイテンシＤＣの頻度分布（ヒストグラム）を表わす図である。図１７は、ＨＳＬＤ適用後のクロックレイテンシＤＣの頻度分布（ヒストグラム）を表わす図である。
【００８８】
図１７に示すように、ＨＤＬＳを適用することによって、頻度のピーク値は低減されているが、Ｐ１、Ｐ２のようなピークが依然として残っていることがある。
【００８９】
ＨＳＬＤによるクロックレイテンシを分散させた結果、図１８に示すように、実際には関連するクロックパスの関係によって、セットアップスラックがまだ残っているクロックパスが多い。たとえば、フリップフロップＦ４へのクロックパスは、「６ｎｓ」のセットアップスラックを有している。
【００９０】
図１９は、図１７のピークＰ１に対するＨＳＬＤ後のセットアップスラックＳＳの頻度分布を表わす図である。
【００９１】
図１９に示すように、「０.１ｎｓ」から「２.４ｎｓ」まで一様に分布していることがわかる。このように、同一のクロックレイテンシを保有するクロックパスのセットアップスラックは、ＨＳＬＤ後にバラつくことが多い。第２の実施形態では、このような性質を利用して、ＨＳＬＤ適用後に残存するピークをさらに分散させる（つまりスムージングする）。
【００９２】
（半導体設計装置の構成）
図２０は、第２の実施の形態の半導体設計装置の構成を表わす図である。
【００９３】
図２０を参照して、この半導体設計装置１０は、さらにＰＡＳ（Peak Aware Smoothing）部７を有する。
【００９４】
ＰＡＳ部７は、ＨＳＬＤ部６によるクロックレイテンシの調整の後、クロックレイテンシの頻度分布が第１の値に集中する場合に、第１の値のクロックレイテンシを有する複数個のフリップフロップを選択する。ＰＡＳ部７は、選択した各フリップフロップのクロックレイテンシの現在の設計値（すなわち、ＨＳＬＤ部６によって算出された相対クロックレイテンシＤＣt(j)′）と、ＨＳＬＤ部６によるクロックレイテンシの調整によって変化した選択した各フリップフロップのセットアップスラックとホールドスラックに基づいて、セットアップ違反およびホールド違反を起こさない範囲で、選択した各フリップフロップののクロックレイテンシを現在の設計値よりも早める方向に調整する。
【００９５】
（動作手順）
図２１は、第２の実施形態の半導体設計装置による設計手順を表わすフローチャートである。
【００９６】
まず、論理合成部２は、フリップフロップと組合せ回路で構成するＲＴＬ（Register Transfer Level）記述から、クロックソースから末端の回路素子群までのクロックツリーに関する初期ネットリスト（初期クロックレイテンシ、セットアップ制約、ホールド制約、データパス遅延のデータを含む）を生成して、設計データ記憶部４に記憶する（ステップＳ９０１）。
【００９７】
次に、レイアウト設計部３は、ネットリストに基づいて、各ゲートを隙間無く並べ(Place)、ゲートの端子と端子を接続する(Route)ことによって、初期レイアウトデータを生成して設計データ記憶部４に記憶する（ステップＳ９０２）。
【００９８】
次に、ＳＴＡ部５は、初期ネットリストに含まれるデータを利用して、フリップフロップＦＦに対するセットアップスラックとホールドスラックを算出する（ステップＳ９０３）。
【００９９】
次に、ＨＳＬＤ部６は、ステップＳ９０３で算出されたセットアップスラックとホールドスラックに基づいて、各フリップフロップＦＦに対する新たなクロックレイテンシを算出する（ステップＳ９０４）。
【０１００】
次に、ＰＡＳ部７は、ステップＳ９０４で算出された新たなクロックレイテンシの頻度分布を生成する。ＰＡＳ部７は、クロックレイテンシの分布にピークがないかどうか、つまりどこかに集中していないかどうかを調べる。具体的には、ＰＡＳ部７は、クロックレイテンシの頻度が所定の閾値以上となるようなクロックレイテンシがある場合に、ピークがあると判断する。ＰＡＳ部７は、クロックレイテンシの分布にピークが存在する場合には（ステップＳ８０１でＹＥＳ）、図５のステップＳ１０７で再計算されたセットアップスラックとホールドスラックに基づいて、ピークのクロックレイテンシを有するフリップフロップＦＦに対する新たなクロックレイテンシを再び算出する（ステップＳ８０２）。
【０１０１】
次に、レイアウト設計部３は、再び算出されたクロックレイテンシに基づいて、クロックツリーを再構築し、ネットリストを更新する（ステップＳ９０５）。
【０１０２】
さらに、レイアウト設計部３は、更新されたネットリストに基づいて、レイアウトデータを更新して設計データ記憶部４に記憶する（ステップＳ９０６）。
【０１０３】
（ＰＡＳ）
図２２は、図２１のステップＳ２０２のＰＡＳの処理手順を表わすフローチャートである。
【０１０４】
図２２を参照して、ＰＡＳ部７は、ピークとして特定されたクロックレイテンシＤＣを有する全てのフリップフロップを選択する。ここでは、Ｓ個のフリップフロップが選択されたとする（ステップＳ２０１）。
【０１０５】
次に、ＰＡＳ部７は、選択したＳ個のフリップフロップを、それらのセットアップスラックＳＳが大きい方から順番に順序づける。ここでは、ｊ＝１〜Ｓの順番が付けられたとする（ステップＳ２０２）。
【０１０６】
次に、ＰＡＳ部７は、変数ｊを１に設定する（ステップＳ２０３）。
次に、ＰＡＳ部７は、ステップＳ２０２で順序付けられた第ｊ番目のフリップフロップＦ（Ｆt(j)とする）を特定し、フリップフロップＦt(j)のセットアップスラックＳＳt(j)を特定する（ステップＳ２０４）。
【０１０７】
次に、ＰＡＳ部７は、フリップフロップＦt(j)からデータを受ける１段後ろのフリップフロップ（フリップフロップＦt(j)の後段のフリップフロップ）を選択する。ここでは、Ｍ(j)個のフリップフロップが選択されたとする。ＰＡＳ部７は、選択したＭ(j)個のフリップフロップのホールドスラックの中の最小値ＨＳ＿ＭＮ(j)を特定する。これは、フリップフロップＦt(j)のクロックレイテンシを早くすることによって、フリップフロップＦt(j)の後段のフリップフロップのうち、最もホールド違反が生じやすいものを特定するためである。なお、ＰＡＳ部７は、フリップフロップＦt(j)の後段のフリップフロップが存在しない場合には、最小値ＨＳ＿ＭＮ(j)として十分に大きな値に設定する（ステップＳ２０５）。
【０１０８】
次に、ＰＡＳ部７は、セットアップスラックＳＳt(j)とホールドスラックの最小値ＨＳ＿ＭＮ(j)のうちの小さい方をマージンＭt(j)として特定する。つまり、セットアップスラックＳＳt(j)がホールドスラックの最小値ＨＳ＿ＭＮ(j)よりも小さいときには、セットアップスラックＳＳt(j)だけクロックレイテンシＤＣt(j)を早めても、後段のフリップフロップにおいて、ホールド違反が生じないからマージンＭt(j)をＳＳt(j)にする。一方、セットアップスラックＳＳt(j)がホールドスラックの最小値ＨＳ＿ＭＮ(j)よりも大きいときには、セットアップスラックＳＳt(j)だけクロックレイテンシＤＣt(j)を早めると、後段のフリップフロップにおいて、ホールド違反が生じる。したがって、ＰＡＳ部７は、マージンＭt(j)を後段のフリップフロップにおいてホールド違反が生じない限界値であるＨＳ＿ＭＮ(j)とする。このようにセットアップ違反およびホールド違反が生じない範囲でマージン（クロックレイテンシを早める量）を最大にとることにしたのは、このようにすることでクロックレイテンシが分散されやすいからである（ステップＳ２０６）。
【０１０９】
次に、ＰＡＳ部７は、ＨＳＬＤ部６によって算出された相対クロックレイテンシＤＣt(j)′がマージンＭt(j)以上のときには（ステップＳ２０７でＹＥＳ）、相対クロックレイテンシの更新値ＤＣt(j)"をＤＣt(j)′からマージンＭt(j)だけ減算した値とする（ステップＳ２０８）。一方、ＰＡＳ部７は、ＨＳＬＤ部６によって算出された相対クロックレイテンシＤＣt(j)′がマージンＭt(j)未満のときには（ステップＳ２０７でＮＯ）、相対クロックレイテンシの更新値ＤＣt(j)"を「０」にする（ステップＳ２０９）。
【０１１０】
次に、ＰＡＳ部７は、セットアップスラックおよびホールドスラックを再計算する。すなわち、ＰＡＳ部７は、フリップフロップＦt(j)のセットアップスラックＳＳt(j)を現在の値からＭt(j)だけ減算した値に更新する。ＰＡＳ部７は、フリップフロップＦt(j)のホールドスラックＨＳtを現在の値からＭt(j)だけ加算した値に更新する。ＰＡＳ部７は、フリップフロップＦt(j)の後段のＭ(j)個のフリップフロップのセットアップスラックＳＳを現在の値からＭt(j)だけ加算した値に更新する。ＰＡＳ部７は、フリップフロップＦt(j)の後段のＭ(j)個のフリップフロップのホールドスラックＨＳを現在の値からＭt(j)だけ減算した値に更新する。
【０１１１】
ＰＡＳ部７は、ｊがＳでない場合（ステップＳ２１１でＮＯ）、ｊを１だけインクリメントして（ステップＳ２１２）、ステップＳ２０４からの処理を繰り返す。ＰＡＳ部７は、ｊがＳの場合（ステップＳ２１１でＹＥＳ）、処理を終了する。
【０１１２】
（性能評価）
図２３は、図９に示すＤｅｓｉｇｎ２について、第１の実施形態のＨＳＬＤを適用した場合の電力消費と、第１の実施形態のＨＳＬＤに加えて第２の実施形態のＰＡＳを適用した場合の電力消費と、ＨＳＬＤを適用しない従来の場合の電力消費とを比較した図である。
【０１１３】
図２３において、横軸が時間、縦軸が各時間当たりの消費電力を表わす。また、実線がＨＳＬＤを適用しない場合（従来手法）の電力消費、１点鎖線がＨＳＬＤを適用した場合（第１の実施の形態手法）の電力消費、２点鎖線がＨＳＬＤを適用した後、さらにＰＡＳを適用した場合（第２の実施の形態手法）の電力消費を表わす。
【０１１４】
図２３に示すように、従来手法では、ピーク電力が「１２」であるのに対して、第１の実施の形態手法では、ピーク電力が「５.８」であり、第２の実施形態では、ピーク電力が「５．４」である。つまり、第２の実施の形態手法では、従来手法よりも、ピーク電力を「５５％」削減できている。
【０１１５】
この理由は、たとえば、第１の実施形態では、「３ｎｓ」のタイミング余裕があったとしても、すべてのクロックパスのクロックレイテンシが「３ｎｓ」シフトされるのに対して、第２の実施形態では、第１の実施形態で集中した「３ｎｓ」のクロックレイテンシを第１の実施形態で生じたタイミング余裕によって、分散させるからである。
【０１１６】
（まとめ）
以上のように、第２の実施形態によれば、第１の実施形態によってもクロックレイテンシのピークが残っている場合に、第１の実施形態によって生じたセットアップスラックとホールドスラックに応じて、このピークのクロックレイテンシを分散させることができる。これによって、電力消費のタイミングを分散することができ、ＩＲドロップやＥＭＩ等のノイズを低減することができるので、半導体装置の信頼性を向上させることができる。
【０１１７】
（変形例）
本発明は、上記の実施形態に限定されるものではなく、たとえば以下のような変形例も含む。
【０１１８】
（１）  クロックレイテンシの調整量
本発明の実施形態では、セットアップ違反およびホールド違反を生じない範囲で、最大量だけクロックレインテンシを早めたが、これに限定するものではない。たとえば、セットアップ違反およびホールド違反を生じない範囲で、最大量から所定量減じた値、あるいはランダムな量だけクロックレイテンシを早めることとしてもよい。
【０１１９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２０】
１，１０  設計装置、２  論理合成部、３  レイアウト設計部、４  設計データ記憶部、５  ＳＴＡ部、６  ＨＳＬＤ部、７  ＰＡＳ部。
【図１】
2012014585.tif 000003
【図２】
2012014585.tif 000004
【図３】
2012014585.tif 000005
【図４】
2012014585.tif 000006
【図５】
2012014585.tif 000007
【図６】
2012014585.tif 000008
【図７】
2012014585.tif 000009
【図８】
2012014585.tif 000010
【図９】
2012014585.tif 000011
【図１０】
2012014585.tif 000012
【図１１】
2012014585.tif 000013
【図１２】
2012014585.tif 000014
【図１３】
2012014585.tif 000015
【図１４】
2012014585.tif 000016
【図１５】
2012014585.tif 000017
【図１６】
2012014585.tif 000018
【図１７】
2012014585.tif 000019
【図１８】
2012014585.tif 000020
【図１９】
2012014585.tif 000021
【図２０】
2012014585.tif 000022
【図２１】
2012014585.tif 000023
【図２２】
2012014585.tif 000024
【図２３】
2012014585.tif 000025