(57)【要約】【課題】ピーク電流を抑えつつ、クロックツリーの生成のやり直しを減らし、設計ＴＡＴを短縮すること。【解決手段】本発明の第１の態様にかかる半導体集積回路の回路設計方法は、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し、算出されたクロック分配遅延時間に応じて、複数の順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けし、グループごとに設定された基準遅延時間となるように、グループごとに当該グループに組み分けされた順序回路に対するクロックのクロックツリーを生成する。【選択図】図４
2011129053.tif 000002
【特許請求の範囲】
【請求項１】
一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し、
前記算出されたクロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けし、
前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成する、
半導体集積回路の回路設計方法。
【請求項２】
前記クロックツリーを生成する前に、前記複数のグループのそれぞれに対して設定された前記クロック分配遅延時間により前記クロックが分配されたとして遅延検証を実行し、当該遅延検証の結果、遅延エラーが発生したパスに対応する順序回路を前記複数のグループのうちの別グループに入れ替えを行うことを特徴とする請求項１に記載の回路設計方法。
【請求項３】
前記別グループに入れ替えを行う場合に、前記順序回路が組み分けられたグループの基準遅延時間より大きい基準遅延時間が設定されたグループを前記別グループとして入れ替えを行うことを特徴とする請求項２に記載の回路設計方法。
【請求項４】
前記グループに組み分けられた前記順序回路の数が所定数以上である場合、当該組み分けられた前記順序回路の一部を前記別のグループへ入れ替えを行うことを特徴とする請求項２又は３に記載の回路設計方法。
【請求項５】
前記別グループへ入れ替えを行う場合に、当該別グループに組み分けられた前記順序回路の数が、入れ替え元のグループに残される前記順序回路の数を上回らないように入れ替えを行うことを特徴とする請求項２乃至４のいずれか１項に記載の回路設計方法。
【請求項６】
前記別グループへ入れ替えを行う場合に、前記順序回路が組み分けられたグループの基準遅延時間より、所定値分大きい基準遅延時間が設定されたグループを前記別グループとして入れ替えを行うことを特徴とする請求項３に記載の回路設計方法。
【請求項７】
前記基準遅延時間は、前記グループごとに定義された遅延時間の範囲の内、上限値であることを特徴とする請求項１乃至６のいずれか１項に記載の回路設計方法。
【請求項８】
前記算出されたクロック分配遅延時間の最大値と所定の間隔値とを用いて、前記遅延時間の範囲を定義することを特徴とする請求項１乃至７のいずれか１項に記載の回路設計方法。
【請求項９】
前記算出されたクロック分配遅延時間の最大値から所定の間隔値を単位として、少なくとも前記算出されたクロック分配遅延時間の最小値を含む範囲までを前記遅延時間の範囲として定義することを特徴とする請求項１乃至８のいずれか１項に記載の回路設計方法。
【請求項１０】
前記所定の間隔値は、前記クロックツリーを生成する場合にタイミングエラーが発生しない最大のクロックスキュー値以下であることを特徴とする請求項８又は９に記載の回路設計方法。
【請求項１１】
前記所定の間隔値は、前記複数の順序回路内の貫通電流が流れ終わるクロック分配遅延時間以上であることを特徴とする請求項１０に記載の回路設計方法。
【請求項１２】
一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出する算出部と、
前記算出されたクロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けする組み分け部と、
前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成するクロックツリー生成部と、
を備える半導体集積回路の設計装置。
【請求項１３】
前記組み分け部は、前記複数のグループのそれぞれに対して設定された前記クロック分配遅延時間により前記クロックが分配されたとして遅延検証を実行し、当該遅延検証の結果、遅延エラーが発生したパスに対応する順序回路を前記複数のグループのうちの別グループに入れ替えを行うことを特徴とする請求項１２に記載の設計装置。
【請求項１４】
前記組み分け部は、前記順序回路が組み分けされたグループの基準遅延時間より大きい基準遅延時間が設定されたグループを前記別グループとして入れ替えを行うことを特徴とする請求項１３に記載の設計装置。
【請求項１５】
前記組み分け部は、前記グループに組み分けされた前記順序回路の数が所定数以上である場合、当該組み分けされた前記順序回路の一部を前記別のグループへ入れ替えを行うことを特徴とする請求項１３又は１４に記載の設計装置。
【請求項１６】
前記組み分け部は、前記別グループに組み分けされた前記順序回路の数が、入れ替え元のグループに残される前記順序回路の数を上回らないように入れ替えを行うことを特徴とする請求項１３乃至１５のいずれか１項に記載の設計装置。
【請求項１７】
前記組み分け部は、前記順序回路が組み分けされたグループの基準遅延時間より、所定値分大きい基準遅延時間が設定されたグループを前記別グループとして入れ替えを行うことを特徴とする請求項１４に記載の設計装置。
【請求項１８】
前記設計装置は、前記算出されたクロック分配遅延時間の最大値と所定の間隔値とを用いて、前記遅延時間の範囲を定義して、前記複数のグループを生成するグループ生成部をさらに備え、
前記組み分け部は、前記グループ生成部により生成された前記複数のグループに組み分けすることを特徴とする請求項１２乃至１７のいずれか１項に記載の設計装置。
【請求項１９】
一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し、
前記算出された前記クロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けし、
前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成する、
処理をコンピュータに実行させる半導体集積回路の回路設計プログラム。
【請求項２０】
前記クロックツリーを生成する前に、前記複数のグループのそれぞれに対して設定された前記クロック分配遅延値時間により前記クロックが分配されたとして遅延検証を実行し、当該遅延検証の結果、遅延エラーが発生したパスに対応する順序回路を前記複数のグループのうちの別グループに入れ替えを行うことを特徴とする請求項１９に記載の回路設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の回路設計方法、設計装置及び回路設計プログラムに関し、特に、ＣＬＯＣＫ  ＴＲＥＥ  ＳＹＮＴＨＥＳＩＳ（以下、ＣＴＳと称す）を構築するためのレイアウト手法に関する。
【背景技術】
【０００２】
半導体集積回路のクロック同期設計は、クロック信号と呼ばれる一定の周期でＨｉｇｈ−Ｌｏｗを繰り返す信号（以下、同期クロックと称す）を各フリップフロップ、ラッチなどの順序回路（以下、レジスタと称す）に入力し、データ信号などレジスタに入力された他の信号をクロック信号の周期に合わせて遅延させ、その周期を超えない範囲でレジスタ間に論理回路を構成する設計技術である。
【０００３】
クロック同期設計において、同期クロックに接続されている各レジスタのトランジスタは、同一のタイミングでスイッチングを繰り返し、そのスイッチングのたびに電源からグランドに貫通電流が流れる。近年の半導体集積回路の１チップに搭載されるレジスタ数の増大に伴い、そのトランジスタが同時にスイッチングした際に流れる貫通電流のピーク値は大きくなる一方で、これにより瞬時的に大きな電圧降下が発生する。この電圧降下により、ＥＭＩ（Electro-Magnetic Interference）ノイズが発生する。更に、電圧降下がトランジスタの論理閾値を下回ると、回路が誤動作する可能性が高くなる。レジスタのスイッチングタイミングは、クロックの入力タイミングにより制御されている。その為、クロックラインのクロック入力タイミングを調整しているＣＴＳ構成でのピーク電流低減手法が重要となっている。
【０００４】
特許文献１は、ＣＴＳで構成したクロックツリーに対して、スキューを付けることができる場所及び量を検証し、ピーク電流が流れるタイミングを時間軸上で分散させることにより、ＥＭＩノイズのピークを低減することができる同期回路の設計方法を提供することを目的としている。
【０００５】
図２３は、特許文献１にかかる半導体集積回路の回路設計方法の流れを示すフローチャートである。以下、図２３のフローチャートに従って、ＡＳＩＣ（Application Specific Integrated Circuit：特定用途向けＩＣ（Integrated Circuit））であるＬＳＩ（Large Scale Integration）の設計方法を説明する。
【０００６】
（１）第１次配置配線（１ｓｔ  Ｐ＆Ｒ  ：  Ｐｌａｃｅ  ａｎｄ  Ｒｏｕｔｅ）
先ず、ネットリストを含む所与の条件を入力して、自動配置配線ツールを用いてＬＳＩの配置配線を実施する（図２３のステップＳＴ１）。この際、クロックツリージェネレータ（ＣＴＧｅｎ）を用いてＣＴＳを実施し、さらにネットリストの最適化を実施する。
【０００７】
（２）次に、クロックツリーのスキュー解析を実施する（図２３のステップＳＴ２）。図２４は、特許文献１にかかる一次配置配線により得られたクロックツリーの模式図である。図２４に示すように、クロックツリーは分岐されており、分岐の前後にはバッファ（三角形で示す）が挿入されている。クロックツリーの各末端部の四角形は最終段のレジスタを示す。レジスタ間を接続する線は、データ線である。スキュー解析は、スタティックタイミングアナライザ（以下、ＳＴＡと称す）ツールを用いて行なわれる。ＳＴＡツールは、クロックが複数の信号線の経路を通ることによって発生する到達時間の差（スキュー）を解析する。ここで、クロック信号がレジスタに到達する前に、データ信号を確定及び保持しておかなければならない最小限の時間を「Ｓｅｔｕｐタイム」という。また、タイミング信号がレジスタに到達した後に、データ信号を保持しておかなければならない時間を「（入力）Ｈｏｌｄタイム」という。同期回路では、ＩＣの全回路にて「Ｓｅｔｕｐタイム」及び「Ｈｏｌｄタイム」を満たさなければならない。さもないと、ＩＣ内部でデータ信号を正しく処理できないからである。図２３のステップＳＴ２では、ＳＴＡツールは、クロックソースから末端部の最終段のレジスタまでのスキューを解析することにより、Ｓｅｔｕｐタイム及びＨｏｌｄタイムを満たしているか否か及びそれに対するマージンがどれだけあるかを解析する。
【０００８】
（３）モジュール分割の検討（図２３のステップＳＴ３）
単位時間あたりのＩＣ内部の消費電流の変化が最大となる時に、ＥＭＩノイズはピークに達する。このＥＭＩノイズのピークを低減する方法としては、消費電流が過渡的に変化するタイミングが、ＬＳＩ中にてモジュール分割した各モジュールにて同時期に集中することを緩和して、ＥＭＩノイズのピークを下げることが考えられる。このためのモジュール分割が図２３のステップＳＴ３である。例えば、図２４において、破線で囲んだモジュールＩ，ＩＩ，ＩＩＩ及びＩＶに属するレジスタまでのスキューが、Ｓｅｔｕｐタイム及びＨｏｌｄタイムに対してマージンが大きいことが分かったとする。また、破線で囲んでいない他のモジュールは、Ｓｅｔｕｐタイム及びＨｏｌｄタイムを満たしているが、マージンが大きくなかったとする。この場合、破線で囲んだモジュールＩ，ＩＩ，ＩＩＩ及びＩＶが分割モジュールの候補として決定される。
【０００９】
（４）クロックスキュー設定回路の挿入（図２３のステップＳＴ４）
図２５は、特許文献１にかかるクロックスキュー設定回路の一例であるクロックスキュー設定回路１０を示す回路図である。クロックスキュー設定回路１０は、配置配線後に、分割モジュール候補のモジュールＩ，ＩＩ，ＩＩＩ及びＩＶの直前（図２４のａ、ｂ、ｃ及びｄ）に挿入される。クロックスキュー設定回路１０は、例えば、２つのバッファ１２及び１４と、３つのセレクタ２０，２２及び２４とを有する。２つのバッファ１２及び１４と、３つのセレクタ２０，２２及び２４とは、それぞれクロック信号ＣＬＫを遅延させる。図２５中のクロック信号Ａ、Ｂ、Ｃ及びＤのうち、クロック信号Ａ、Ｂ及びＣは、クロックＣＬＫがバッファ１２にて遅延されたものである。但し、クロック信号Ａは、セレクタ２４のみを通過して出力される。クロック信号Ｂは、セレクタ２２及び２４を通過して出力される。クロック信号Ｃは、セレクタ２０，２２及び２４を通過して出力される。また、クロック信号Ｄは、クロック信号Ｃと同じく３つのセレクタ２０，２２及び２４を通過して出力される。クロック信号Ｄは、バッファ１２に加えてバッファ１４でも遅延されている。従って、最終段のセレクタ２４より出力されるクロック信号Ａ、Ｂ、Ｃ及びＤの遅延量の大きさは、Ａ＜Ｂ＜Ｃ＜Ｄとなる。つまり、クロック信号Ｄの遅延量が最も大きく、クロック信号Ａの遅延量が最も小さくなる。３つのセレクタ２０，２２及び２４を切り換える制御信号Ｓ１，Ｓ２及びＳ３は、２つのロジック信号Ｍ１及びＭ２の論理に基づき、それらが入力される３つのロジック回路３０，３２及び３４より出力される。
【００１０】
（５）二次配置配線（２ｎｄＰ＆Ｒ：図２３のステップＳＴ５）
上述したクロックスキュー設定回路１０の挿入と配線を二次配置配線により実施する。なお、既にステップＳＴ１において一次配置配線は終了しているため、ステップＳＴ５における二次配置配線は、一次配置配線での開きスペースを利用して手作業にて実施される。
【００１１】
（６）クロックツリーのスキュー再解析（図２３での二度目のステップＳＴ２）
ステップＳＴ５における二次配置配線後に、上述したステップＳＴ２と同様にして、ＳＴＡツールを用いて、二度目のスキュー解析を実施する。これにより、クロックソースから末端までのスキューを解析して、各クロックツリーにてＳｅｔｕｐタイム及びＨｏｌｄタイムを満たしていることを確認する。確認できた場合、当該処理を終了し（図２３のステップＳＴ６）、不具合が確認された場合、ステップＳＴ３乃至ＳＴ５及びステップＳＴ２を再度実施する。
【００１２】
図２６は、関連技術にかかる実施形態の設計方法によって時間軸上で分散された各モジュールのＥＭＩノイズを示す特性図である。上述したような特許文献１の設計方法によれば、図２６に示すようにモジュール毎にレジスタでのデータ切換えタイミングがずれる。しかも、回路規模に応じてピークの大きなＥＭＩノイズは、時間軸で分散されるため、大きなＥＭＩノイズピーク同士が重なり合うことなく、ＩＣ全体としてのＥＭＩノイズのピークを小さくすることができる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−１７３８９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ＥＭＩノイズは、同期クロック内のレジスタに同時にクロックが入ることによる瞬時的なピーク電流増大による電圧降下により発生しやすい。つまり、同期クロック内のピーク電流を低減できれば、ＥＭＩノイズも低減出来る。
【００１５】
しかしながら、特許文献１は、ステップＳＴ２で一度クロックツリーを構成した後、ステップＳＴ４でクロックツリーを再構成しなくてはならないため、設計ＴＡＴ（Turn Around Time）が増大するという問題がある。
【００１６】
具体的には、特許文献１では、まず、図２３のステップＳＴ２において、一度クロックツリーを構築する。次に、構築したクロックツリーを元に、ステップＳＴ２において、クロックスキューとＳｅｔｕｐタイム及びＨｏｌｄタイムのマージンを計測する。ステップＳＴ３において、ステップＳＴ２で計測したＳｅｔｕｐタイム及びＨｏｌｄタイムのマージンを確認する。そして、半導体集積回路内の各モジュールにて同時期に消費電流が集中することを緩和し、ＥＭＩノイズのピークを下げるためのモジュール分割を行う。次に、ステップＳＴ４において、ステップＳＴ３でモジュール分割したクロックツリーのグループ化した各モジュールに対し、図２５に一例を表すクロックスキュー設定回路１０を挿入し、クロックツリーの再構築を行う。
【００１７】
ステップＳＴ４でのクロックツリーの再構築には、少なくとも、クロックスキュー設定回路１０をネットリストに挿入し、レイアウト上で配置する時間や、回路挿入後クロックラインの配線を行う時間が必要である。そのため、設計ＴＡＴが増大する問題が生じる。特に、近年は、半導体集積回路の高性能化及び多機能化に伴い、半導体集積回路の規模が大きい製品が増えている。そのため、大規模な製品であればあるほど、設計ＴＡＴも比例して増大する。
【課題を解決するための手段】
【００１８】
本発明の第１の態様にかかる半導体集積回路の回路設計方法は、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し、前記算出されたクロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けし、前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成する。
【００１９】
本発明の第２の態様にかかる半導体集積回路の設計装置は、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出する算出部と、前記算出されたクロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けする組み分け部と、前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成するクロックツリー生成部と、を備える。
【００２０】
本発明の第３の態様にかかる半導体集積回路の回路設計プログラムは、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し、前記算出された前記クロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループに組み分けし、前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成する、処理をコンピュータに実行させる
【００２１】
上述したように、本発明の第１乃至第３の態様により、複数の順序回路におけるクロック分配遅延時間を、複数のグループのいずれかの基準遅延時間とすることにより、レジスタごとにＣＴＳを行う際の入力タイミングを分散させることができる。そのため、全ての順序回路のクロック分配遅延時間を同一の最大値としてクロックツリーの生成を行うことに比べ、ピーク電流を抑えつつ、クロックツリーの生成のやり直しを減らすことができる。
【発明の効果】
【００２２】
本発明により、ピーク電流を抑えつつ、クロックツリーの生成のやり直しを減らす半導体集積回路の回路設計方法、設計装置及び回路設計プログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態１にかかる回路設計装置の構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる回路設計装置のハードウェア構成の一例を示すブロック図である。
【図３】本発明の実施の形態１にかかる回路設計を行うための回路設計システムの構成の一例を示すブロック図である。
【図４】本発明の実施の形態１にかかる回路設計処理の流れを示すフローチャートである。
【図５】本発明の実施の形態１にかかる遅延グループの生成に関する処理の流れを示すフローチャートである。
【図６】本発明の実施の形態１にかかる回路設計対象の複数のレジスタを１つの半導体集積回路上に配置する例を示す図である。
【図７】本発明の実施の形態１にかかる配置座標の例を示す図である。
【図８】本発明の実施の形態１にかかる単位長あたり遅延情報の例を示す図である。
【図９】本発明の実施の形態１にかかる理想クロック遅延値の例を示す図である。
【図１０】本発明の実施の形態１にかかる遅延グループ名称と基準遅延時間の例を示す図である。
【図１１】本発明の実施の形態１にかかるレジスタを分類する際の遅延グループの条件の例を示す図である。
【図１２】本発明の実施の形態１にかかる遅延グループへレジスタを分類した結果である遅延グループ情報の例を示す図である。
【図１３】本発明の実施の形態１にかかる遅延グループに属するレジスタの再分類処理の流れを示すフローチャートである。
【図１４】本発明の実施の形態１にかかるタイミング解析の結果の例を示す図である。
【図１５】本発明の実施の形態１にかかるSetupエラー修正後に遅延グループへレジスタを再分類した結果である遅延グループ情報の例を示す図である。
【図１６】本発明の実施の形態１にかかるSetupエラー修正後のタイミング解析の結果の例を示す図である。
【図１７】本発明の実施の形態１にかかるHoldエラー修正後に遅延グループへレジスタを再分類した結果である遅延グループ情報の例を示す図である。
【図１８】本発明の実施の形態１にかかるHoldエラー修正後のタイミング解析の結果の例を示す図である。
【図１９】本発明の実施の形態１にかかるタイミングマージンリストの例を示す図である。
【図２０】本発明の実施の形態１にかかる遅延グループのレジスタ個数の最適化後の遅延グループ情報の例を示す図である。
【図２１】関連技術により生成した場合のクロックツリーのイメージ図である。
【図２２】本発明の実施の形態１により生成した場合のクロックツリーのイメージ図である。
【図２３】関連技術にかかる半導体集積回路の回路設計方法の流れを示すフローチャートである。
【図２４】関連技術にかかる一次配置配線により得られたクロックツリーの模式図である。
【図２５】関連技術にかかるクロックスキュー設定回路の一例を示す回路図である。
【図２６】関連技術にかかる実施形態の設計方法によって時間軸上で分散された各モジュールのＥＭＩノイズを示す特性図である。
【発明を実施するための形態】
【００２４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００２５】
＜発明の実施の形態１＞
図１は、本発明の実施の形態１にかかる回路設計装置１００の構成を示すブロック図である。回路設計装置１００は、半導体集積回路の設計装置である。回路設計装置１００は、理想値算出部１１０と、遅延グループ生成部１２０と、分類部１３０と、クロックツリー生成部１４０とを備える。ここで、回路設計装置１００は、複数の順序回路の配置情報に基づき、クロック分配のルートからクロック分配先である各順序回路までのクロック分配パスの遅延時間（以下、クロック分配遅延時間と称す）を、理想値算出部１１０、遅延グループ生成部１２０及び分類部１３０により算出及び特定し、特定されたクロック分配遅延時間に基づきクロックツリー生成部１４０によりＣＴＳを実行させるものである。
【００２６】
理想値算出部１１０は、複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間の理想値（以下、理想クロック遅延値と称す）を算出する。言い換えると、理想値算出部１１０は、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出する算出部といえる。遅延グループ生成部１２０は、算出された理想クロック遅延値の最大値と所定の間隔値とを用いて、遅延時間の範囲を定義した複数の遅延グループを生成する。なお、この遅延グループについてはその詳細を後述する。分類部１３０は、順序回路の理想クロック遅延値が該当する遅延時間の範囲が定義された遅延グループを特定し、当該特定された遅延グループに当該順序回路を分類する。言い換えると、分類部１３０は、理想値算出部１１０により算出されたクロック分配遅延時間に応じて、複数の順序回路を、複数の遅延グループに組み分けする組み分け部といえる。クロックツリー生成部１４０は、順序回路が分類された遅延グループにおける遅延時間の範囲の上限値である基準遅延時間を、当該順序回路のクロック分配遅延時間としてクロックツリーを生成する。言い換えると、クロックツリー生成部１４０は、遅延グループごとに設定された基準遅延時間となるように、遅延グループごとに当該遅延グループに組み分けされた順序回路に対するクロックのクロックツリーを生成するといえる。これにより、ピーク電流を抑えつつ、設計ＴＡＴを短縮する半導体集積回路のレイアウト設計を行うことができる。
【００２７】
図２は、本発明の実施の形態１にかかる回路設計装置１００のハードウェア構成の一例を示すブロック図である。図２では、回路設計装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＡＭ（Random Access Memory）１０２と、ＲＯＭ（Read Only Memory）１０３と、ＩＦ（InterFace）部１０４と、ハードディスク１０５とを備える。また、ハードディスク１０５は、不揮発性記憶装置であり、ＯＳ（Operating System）１１１、回路設計プログラム１１２、レイアウトデータ１１３、理想クロック遅延値１１４、間隔値１１５、遅延グループ情報１１６、特定クロック遅延値１１７を格納する。つまり、回路設計プログラム１１２は、図１の理想値算出部１１０、遅延グループ生成部１２０、分類部１３０及びクロックツリー生成部１４０を実現する処理が実装されたプログラムである。レイアウトデータ１１３は、設計対象である順序回路の配置情報である座標等を含むものである。理想クロック遅延値１１４は、他の順序回路の影響を受けずに、順序回路が単独で配置情報に基づき配置されたという理想的な状態として算出されるクロック分配遅延時間である。間隔値１１５は、複数の理想クロック遅延値１１４を分類するための基準となる遅延時間の範囲の幅を示す値である。遅延グループ情報１１６は、理想クロック遅延値１１４と間隔値１１５とを用いて定義される遅延グループに関する情報であり、遅延グループに分類された順序回路の識別情報を含むものである。特定クロック遅延値１１７は、ＣＴＳを実行するために用いる各順序回路のクロック分配遅延時間である。
【００２８】
尚、ＯＳ１１１、回路設計プログラム１１２、レイアウトデータ１１３及び間隔値１１５は、予めハードディスク１０５に格納されているものとする。理想クロック遅延値１１４、遅延グループ情報１１６及び特定クロック遅延値１１７は、回路設計プログラム１１２が実行されることにより算出され、ハードディスク１０５に格納されるものである。また、レイアウトデータ１１３、理想クロック遅延値１１４、間隔値１１５、遅延グループ情報１１６及び特定クロック遅延値１１７の具体例は、後述する。さらに、レイアウトデータ１１３、理想クロック遅延値１１４、間隔値１１５、遅延グループ情報１１６及び特定クロック遅延値１１７は、必ずしもハードディスク１０５内に格納される必要はなく、ＲＡＭ１０２内に格納されてもよい。
【００２９】
ＣＰＵ１０１は、回路設計装置１００における各種処理、ＲＡＭ１０２、ＲＯＭ１０３、ＩＦ部１０４及びハードディスク１０５へのアクセス等を制御する制御手段である。ＩＦ部１０４は、回路設計装置１００の外部とのデータの入出力を行う。回路設計装置１００は、ＣＰＵ１０１が、ＲＡＭ１０２、ＲＯＭ１０３又はハードディスク１０５に格納されたＯＳ１１１、回路設計プログラム１１２等を読み込み、実行する。これにより、理想値算出部１１０、遅延グループ生成部１２０、分類部１３０及びクロックツリー生成部１４０として機能する。
【００３０】
尚、本発明の実施の形態１は、図２に示した回路設計装置１００のような単一のコンピュータ装置に限定されない。例えば、本発明の実施の形態１は、図３に示す回路設計システム１００ａにより実現することもできる。図３は、本発明の実施の形態１にかかる回路設計を行うための回路設計システム１００ａの構成の一例を示すブロック図である。回路設計システム１００ａは、ネットワーク４２を介して接続されるサーバ装置４１とクライアント端末４３とを備えるコンピュータシステムである。ネットワーク４２は、インターネット、イントラネット、公衆網、専用線等の通信ネットワークである。
【００３１】
サーバ装置４１は、記憶装置４１１を含むコンピュータ装置である。尚、サーバ装置４１のその他の構成及び動作は、公知なものであるため、図示及び詳細な説明を省略する。記憶装置４１１は、少なくとも回路設計プログラム４１２、レイアウトデータ４１３及び間隔値４１４等を格納する。記憶装置４１１は、例えば、ハードディスクドライブ、フラッシュメモリ等の記憶媒体又は不揮発性の記憶装置でもよいし、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置であってもよい。サーバ装置４１は、ネットワーク４２を介してクライアント端末４３と接続される。サーバ装置４１は、クライアント端末４３からの要求に応じて、記憶装置４１１に格納された回路設計プログラム４１２、レイアウトデータ４１３及び間隔値４１４等を、ネットワーク４２を介して提供する。
【００３２】
クライアント端末４３は、サーバ装置４１から提供される回路設計プログラム４１２を読み込み、上述した本発明の実施の形態１にかかる回路設計装置１００として動作するコンピュータ装置である。クライアント端末４３は、例えば、エンジニアリングワークステーション等である。クライアント端末４３のハードウェア構成は、例えば、図２に示したものであってもよい。その際、ハードディスク１０５には、サーバ装置４１から提供される回路設計プログラム４１２、レイアウトデータ４１３及び間隔値４１４が回路設計プログラム１１２、レイアウトデータ１１３及び間隔値１１５として格納される。そして、クライアント端末４３は、回路設計プログラム４１２を実行することにより、理想クロック遅延値１１４、遅延グループ情報１１６及び特定クロック遅延値１１７を算出する。
【００３３】
図４は、本発明の実施の形態１にかかる回路設計処理の流れを示すフローチャートである。すなわち、図４は、本発明の実施の形態１にかかる半導体集積回路のレイアウト設計手法を示す。尚、以下の説明においては、上述した回路設計装置１００が、ハードディスク１０５から回路設計プログラム１１２を読込、回路設計処理を開始するものとする。但し、図３に示したクライアント端末４３が、ネットワーク４２を介してサーバ装置４１の記憶装置４１１から回路設計プログラム４１２をダウンロードしても構わない。いずれにしても、本発明の実施の形態１にかかる回路設計処理の以下の処理ステップは、ハードウェアであるコンピュータ装置とソフトウェアである回路設計プログラムとの協働にて実施される工程である。そして、処理ステップに入力するデータや出力されるデータ等は、適宜、ハードディスク１０５又は回路設計プログラム４１２とのやり取りが行われるものとする。ここで、回路設計プログラム１１２は、本発明の実施の形態１にかかるレイアウト工程を処理するプログラムであり、ステップＳ２０及びＳ３０で使用する式や計算プログラム等を含む。
【００３４】
本実施例では、配置配線工程（Ｓ１０）実施後、同一のクロックが分配される各順序回路のグループ化を行う（Ｓ２０）。その後、遅延検証（SDA:Static Delay Analysis）（Ｓ３０）し，最後にＣＴＳを実施する（Ｓ４０）。
【００３５】
ここで、順序回路は、たとえば、レジスタ、フリップフロップ、ラッチ、マクロなどである。尚、本実施例では、順序回路の一例としてレジスタを対象として記載するが、本実施例は、これに限定されない。ステップＳ２０では、上述したクロック分配遅延時間に応じて、各順序回路を、複数のグループに分類、すなわち、組み分けすることがなされる。本明細書ではこのグループを遅延グループと称する。
【００３６】
このとき、各遅延グループには、遅延時間の範囲が設定されており、クロック分配遅延時間がこの遅延時間の範囲に含まれる順序回路が、１つのグループに割り振られる。また、各遅延グループの遅延時間の範囲は互いに重複せず、また、全ての順序回路が必ず１つのグループに属するように構成される。
【００３７】
尚、本実施例は、各遅延グループの遅延時間の範囲の設定方法として好適な一例として以下に記載するように最大のクロック分配遅延時間と所定の固定値（間隔値）とを利用した場合について記載する。
【００３８】
また、ステップＳ１０における配置配線工程に含まれる配線処理では、本実施例におけるクロック分配配線（ＣＴＳによる配線）は含まれない。そして、ステップＳ１０における配線処理は、ステップＳ２０後に行われても良い。さらには、仮の配線情報による遅延検証精度がある程度確保されれば、ＣＴＳ後にステップＳ１０における配線処理が行われても良い。
【００３９】
まず、回路設計装置１００は、機能マクロやレジスタなどの順序回路のレイアウトの配置処理及び配線処理を含む配置配線工程（以下、Ｐ＆Ｒと称す）を実行する（Ｓ１０）。具体的には、回路設計装置１００は、レイアウトデータＦ１を入力し、自動配置配線ツール等を用いて、ＬＳＩの配置配線を実施する。そして、回路設計装置１００は、データライン遅延値Ｆ２、Ｐ＆Ｒ後レイアウトデータＦ９、ネットリストＦ６及び遅延情報ファイル（以下、ＳＤＦと称す）Ｆ７を出力する。ここで、データライン遅延値Ｆ２は、同期クロックに接続される各レジスタのデータラインの遅延値データである。ネットリストＦ６は、レイアウトデータＦ１に基づき配置されたネットリストである。ＳＤＦＦ７は、ステップＳ３０で用いられるＳＴＡツールに必要となる遅延情報である。Ｐ＆Ｒ後レイアウトデータＦ９は、ステップＳ１０におけるＰ＆Ｒの処理結果であるレイアウトデータである。
【００４０】
次に、回路設計装置１００は、各レジスタの遅延グループを生成する（Ｓ２０）。すなわち、回路設計装置１００は、データライン遅延値Ｆ２、単位長（単位配線長）あたりの遅延値情報Ｆ３、間隔値Ｆ４を入力し、遅延グループを生成し、遅延グループ情報Ｆ５を出力する。ここで、単位長あたりの遅延値情報Ｆ３とは、１チップレイアウト上で波形鈍りが発生しないようバッファを挿入しながら配線を行った場合の単位長あたりの配線遅延である。但し、単位長あたりの遅延値情報Ｆ３は、半導体設計のプロセスにて異なり、設計ライブラリに含まれている場合や、モデルレイアウトを作成し算出する事が出来るデータである。本発明の実施の形態１では、単位長あたりの遅延値情報Ｆ３は、予めハードディスク１０５等に格納済みとする。また、間隔値Ｆ４は、上述した間隔値１１５である。
【００４１】
ステップＳ２０において、具体的には、まず、回路設計装置１００は、ステップＳ１０のＰ＆Ｒにより配置した各レジスタの配置情報を基に理想クロック遅延値を算出する。そして、回路設計装置１００は、算出した各レジスタの理想クロック遅延値の最大値を基準に最小値を含む範囲までを一定の遅延間隔で少なくとも２つ以上の分割を行う。そして、回路設計装置１００は、分割された遅延間隔の範囲の最大値をクロック分配遅延時間として持つグループである遅延グループを作成する。続いて、回路設計装置１００は、各レジスタを生成した遅延グループのいずれかに分類する。その後、回路設計装置１００は、分類結果である遅延グループ情報Ｆ５を出力する。
【００４２】
図５は、本発明の実施の形態１にかかるステップＳ２０の遅延グループの生成に関する処理の流れを示すフローチャートである。また、図６は、本発明の実施の形態１にかかる回路設計対象の複数のレジスタを１つの半導体集積回路上に配置する例を示す図である。図６に示すチップ００１は、縦７［ｍｍ］、横７［ｍｍ］の半導体集積回路である。チップ００１には、ＰＬＬ（Phase Locked Loop）００２、ルートバッファ００３、９個のレジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉが配置されるものとする。ＰＬＬ００２は、クロック周波数１００［ＭＨｚ］を出力する電子回路である。ルートバッファ００３は、ＣＴＳの基点となるバッファである。レジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉは、ＰＬＬ００２〜出力される同期クロックを入力するレジスタである。
【００４３】
図５に戻り、まず、回路設計装置１００は、各レジスタの距離を算出する（Ｓ２０１）。具体的には、回路設計装置１００の理想値算出部１１０は、ルートバッファ００３をＣＴＳの基点として、レジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉの配置座標から各レジスタまでのクロック配線距離（以下、理想クロック配線距離と称す）を算出する。図７は、本発明の実施の形態１にかかるレジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉの配置座標の例を示す図である。
【００４４】
ステップＳ２０１において、理想値算出部１１０は、各レジスタの配置座標に基づき、例えば、以下の式（１０）を用いて、各レジスタの理想クロック配線距離を算出する。
【００４５】
ここでは、クロック分配のルート（ＣＴＳ基点）と各クロック分配ターゲット（対象レジスタ）とのマンハッタン長（配線距離）をそれぞれの座標を用いて算出する。すなわち、
【００４６】
理想クロック配線距離［ｍｍ］＝｜｛（対象レジスタＸ座標）−（ＣＴＳ基点Ｘ座標）｝｜＋｜｛（対象レジスタＹ座標）−（ＣＴＳ基点Ｙ座標）｝｜      ・・・式（１０）
【００４７】
また、図７の配置座標に式（１０）を適用することにより算出された理想クロック配線距離を以下の式（１１）乃至式（１９）に示す。
レジスタＲＥＧ＿Ａまでの理想クロック配線距離
＝｜｛（２．１０）−（１．００）｝｜＋｜｛（１．２０）−（１．００）｝｜
＝１．３０［ｍｍ］      ・・・式（１１）
レジスタＲＥＧ＿Ｂまでの理想クロック配線距離
＝｜｛（１．１０）−（１．００）｝｜＋｜｛（２．００）−（１．００）｝｜
＝１．１０［ｍｍ］      ・・・式（１２）
レジスタＲＥＧ＿Ｃまでの理想クロック配線距離
＝｜｛（５．６０）−（１．００）｝｜＋｜｛（１．３０）−（１．００）｝｜
＝４．９０［ｍｍ］      ・・・式（１３）
レジスタＲＥＧ＿Ｄまでの理想クロック配線距離
＝｛（４．２０）−（１．００）｝｜＋｜｛（２．８０）−（１．００）｝｜
＝５．００［ｍｍ］      ・・・式（１４）
レジスタＲＥＧ＿Ｅまでの理想クロック配線距離
＝｜｛（２．４０）−（１．００）｝｜＋｜｛（３．１０）−（１．００）｝｜
＝３．５０［ｍｍ］      ・・・式（１５）
レジスタＲＥＧ＿Ｆまでの理想クロック配線距離
＝｜｛（２．００）−（１．００）｝｜＋｜｛（４．５０）−（１．００）｝｜
＝４．５０［ｍｍ］      ・・・式（１６）
レジスタＲＥＧ＿Ｇまでの理想クロック配線距離
＝｜｛（１．２０）−（１．００）｝｜＋｜｛（５．４０）−（１．００）｝｜
＝４．６０［ｍｍ］      ・・・式（１７）
レジスタＲＥＧ＿Ｈまでの理想クロック配線距離
＝｜｛（４．２０）−（１．００）｝｜＋｜｛（４．４０）−（１．００）｝｜
＝６．６０［ｍｍ］      ・・・式（１８）
レジスタＲＥＧ＿Ｉまでの理想クロック配線距離
＝｜｛（６．００）−（１．００）｝｜＋｜｛（６．００）−（１．００）｝｜
＝１０．００［ｍｍ］      ・・・式（１９）
【００４８】
次に、回路設計装置１００は、各レジスタの理想クロック遅延値１１４を算出する（Ｓ２０２）。すなわち、回路設計装置１００の理想値算出部１１０は、単位長あたりの遅延値情報Ｆ３を入力し、ステップＳ２０１において算出した各理想クロック配線距離で発生する理想クロック遅延値１１４を算出する。
【００４９】
図８は、本発明の実施の形態１にかかる単位長あたりの遅延値情報Ｆ３の例を示す図である。図８は、配線距離１［ｍｍ］を単位長として、単位長に対して発生する遅延値を表す。図８は、単位長である配線距離１［ｍｍ］に対して、２００［ｐｓ］の遅延が発生することを示している。
【００５０】
ステップＳ２０２において、理想値算出部１１０は、単位長あたりの遅延値情報Ｆ３に基づき、例えば、以下の式（２０）を用いて、各レジスタの理想クロック遅延値を算出する。
理想クロック遅延値［ｐｓ］＝理想クロック配線距離［ｍｍ］＊  単位長あたりの配線遅延［ｐｓ］      ・・・式（２０）
【００５１】
また、図８の配置座標に式（２０）を適用することにより算出された理想クロック遅延値を以下の式（２１）乃至式（２９）に示す。
レジスタＲＥＧ＿Ａの理想クロック遅延値
＝１．３０［ｍｍ］＊  ２００［ｐｓ］
＝２６０［ｐｓ］      ・・・式（２１）
レジスタＲＥＧ＿Ｂの理想クロック遅延値
＝１．１０［ｍｍ］＊  ２００［ｐｓ］
＝２２０［ｐｓ］      ・・・式（２２）
レジスタＲＥＧ＿Ｃの理想クロック遅延値
＝４．９０［ｍｍ］＊  ２００［ｐｓ］
＝９８０［ｐｓ］      ・・・式（２３）
レジスタＲＥＧ＿Ｄの理想クロック遅延値
＝５．００［ｍｍ］＊  ２００［ｐｓ］
＝１０００［ｐｓ］      ・・・式（２４）
レジスタＲＥＧ＿Ｅの理想クロック遅延値
＝３．５０［ｍｍ］＊  ２００［ｐｓ］
＝７００［ｐｓ］      ・・・式（２５）
レジスタＲＥＧ＿Ｆの理想クロック遅延値
＝４．５０［ｍｍ］＊  ２００［ｐｓ］
＝９００［ｐｓ］      ・・・式（２６）
レジスタＲＥＧ＿Ｇの理想クロック遅延値
＝４．６０［ｍｍ］＊  ２００［ｐｓ］
＝９２０［ｐｓ］      ・・・式（２７）
レジスタＲＥＧ＿Ｈの理想クロック遅延値
＝６．６０［ｍｍ］＊  ２００［ｐｓ］
＝１３２０［ｐｓ］      ・・・式（２８）
レジスタＲＥＧ＿Ｉの理想クロック遅延値
＝１０．００［ｍｍ］＊  ２００［ｐｓ］
＝２０００［ｐｓ］      ・・・式（２９）
【００５２】
図９は、上述した理想クロック遅延値の算出結果をまとめた図である。
【００５３】
図５に戻り、回路設計装置１００は、遅延グループを生成する（Ｓ２０３）。すなわち、回路設計装置１００の遅延グループ生成部１２０は、データライン遅延値Ｆ２及び間隔値Ｆ４を入力し、遅延グループを生成する。言い換えると、遅延グループ生成部１２０は、ステップＳ２０２により算出された理想クロック遅延値の最大値と所定の間隔値である間隔値１１５とを用いて、遅延時間の範囲を定義した複数の遅延グループを生成する。尚、以下では、間隔値１１５を遅延グループ間隔値と呼ぶ。ここで、同期クロックに接続されている各レジスタ間でＣＴＳを構成する上で、仮にその値分クロックスキューが生じた場合でもタイミングエラーが発生しない最大のずれ幅をクロックスキューマージン値と呼ぶ。そして、遅延グループ間隔値は、クロックスキューマージン値以下で、少なくとも理想クロック遅延値の最大値と最小値との間を２つ以上にグループが分割するための値である。また、遅延グループ間隔値は、クロックツリー生成部１４０においてタイミングエラーが発生しない最大のクロックスキュー値以下であることが望ましい。これにより、遅延時間の範囲を適切にすることで、クロックツリーの生成のやり直しを防ぎ、回路設計を効率的に行える。タイミング解析を効率的に行える。
【００５４】
例えば、遅延グループ生成部１２０は、各レジスタの理想クロック遅延値の内、最大値を選択し、最大値から一定の遅延間隔値を順次、減算する。ここで、減算された結果である各値を基準遅延時間と呼ぶ。また、遅延グループ生成部１２０は、各レジスタの理想クロック遅延値の内、最小値に比べて基準遅延時間が小さくなるまで減算を行う。そして、遅延グループ生成部１２０は、理想クロック遅延値の最大値と算出した各基準遅延時間とを大小関係により隣接する値の間を上記遅延時間の範囲を定義して遅延グループとする。言い換えると、遅延グループ生成部１２０は、理想クロック遅延値の最大値以下の時間を遅延グループ間隔値の単位で分割する。そして、遅延グループ生成部１２０は、少なくとも最小値を含む範囲まで分割を行う。
【００５５】
つまり、遅延グループ生成部１２０は、遅延時間の範囲を、算出された理想クロック遅延値の最大値から所定の間隔値を単位として、少なくとも算出された理想クロック遅延値の最小値を含む範囲まで定義する。これにより、クロック分配遅延時間が分類される最小限の遅延グループを生成することで、回路設計処理を効率化できる。
【００５６】
遅延グループ生成部１２０は、同期クロックに繋がる各レジスタ間のデータラインの遅延値の内、最小値を選択し、クロックの動作周期から前記最小の遅延値を引いた値をクロックスキューマージン値とする。本発明の実施の形態１では、レジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉのクロックラインは、全てＰＬＬ００２に接続されている。ＰＬＬ００２の動作周波数が１００［ＭＨｚ］であることから、動作周期は１００００［ｐｓ］となる。また、ステップＳ１０後に出力したデータライン遅延値Ｆ２より、レジスタＲＥＧ＿Ａ〜ＲＥＧ＿Ｉのデータラインの遅延値の最小値を求めた結果が８８００［ｐｓ］である。そのため、クロックスキューマージン値は１２００［ｐｓ］となる。これにより、本発明の実施の形態１では、２つ以上にグループを分割するには、遅延グループ間隔値は１２００［ｐｓ］以下であれば良いこととなる。
【００５７】
よりピーク電流低減効果が得るためには、この遅延グループ間隔値は、クロック印加後各レジスタ内の貫通電流が流れ終わるまでの時間に相当する遅延値を設定することが効果的である。したがって、クロックスキューマージン値および各レジスタ内の貫通電流が流れ終わる遅延値とを勘案して、遅延グループ間隔値を設定すれば、よりピーク電流低減効果を高くすることが出来かつ、クロックツリーの生成のやり直しを防ぎ、回路設計を効率的に行える。
【００５８】
したがって、クロック印加後各レジスタ内の貫通電流が流れ終わるまでの時間が仮に２００ｐｓであった場合、遅延グループ間隔値は２００ｐｓとするとよい。以下本発明の実施の形態１では、ステップＳ２０３にて入力する遅延グループ間隔値を２００［ｐｓ］として設定した場合について説明する。
【００５９】
なお、クロック印加後各レジスタ内の貫通電流が流れ終わるまでの時間に基づいて設定された遅延グループ間隔値のことをピーク電流低減間隔値ということもできる。
【００６０】
また、理想クロック遅延値の内、最大値は、レジスタＲＥＧ＿Ｉの２０００［ｐｓ］、最小値は、レジスタＲＥＧ＿Ｂの２２０［ｐｓ］となる。そのため、遅延グループ生成部１２０は、グループ２００〜グループ２０００に対して、２００［ｐｓ］〜２０００［ｐｓ］まで、遅延グループ間隔値である２００［ｐｓ］ごとに分割した遅延グループを作成する。また、遅延グループは、分割された遅延時間の範囲における最大値を基準遅延時間として持つグループである。ここで、図１０は、本発明の実施の形態１にかかる遅延グループ名称と基準遅延時間の例を示す図である。図１０に示すように、グループ２００は２００［ｐｓ］、グループ４００は４００［ｐｓ］（以下、グループ２０００まで）の基準遅延時間を持つこととなる。
【００６１】
図５に戻り、続いて、回路設計装置１００の分類部１３０は、ステップＳ２０２において算出した各レジスタの理想クロック遅延値を基に、ステップＳ２０３において生成した遅延グループのいずれかに各レジスタを分類する（Ｓ２０４）。
【００６２】
ここで、各レジスタを遅延グループへ分類するための分類条件を、以下の式（３０）に示す。
遅延グループの持つ遅延値［ｐｓ］−遅延グループ間隔値［ｐｓ］＜レジスタの理想クロック遅延値［ｐｓ］≦遅延グループの持つ遅延値［ｐｓ］      ・・・式（３０）
【００６３】
例えば、分類部１３０は、各レジスタの理想クロック遅延値が分類条件を満たすか否かを判定し、分類条件を満たす遅延グループへレジスタを割り当てる。具体的には、分類部１３０は、遅延グループ情報Ｆ５内の分類条件を満たす遅延グループの領域へ分類対象のレジスタを識別する情報を格納する。
【００６４】
図１１は、本発明の実施の形態１にかかるレジスタを分類する際の遅延グループの条件の例を示す図である。例えば、グループ２００には、０［ｐｓ］＜レジスタの理想クロック遅延値［ｐｓ］≦２００［ｐｓ］に該当するレジスタを分類する。また、グループ４００には、２００［ｐｓ］＜レジスタの理想クロック遅延値［ｐｓ］≦４００［ｐｓ］に該当するレジスタを分類する。同様に、ステップＳ２０３にて作成したグループ２０００まで、各遅延グループへ該当するレジスタを分類する。
【００６５】
図１２は、本発明の実施の形態１にかかる遅延グループへレジスタを分類した結果である遅延グループ情報の例を示す図である。例えば、レジスタＲＥＧ＿Ａ及びＲＥＧ＿Ｂが、遅延グループ４００に分類される。同様に、レジスタＲＥＧ＿Ｅが遅延グループ８００に、レジスタＲＥＧ＿Ｃ、ＲＥＧ＿Ｄ、ＲＥＧ＿Ｆ及びＲＥＧ＿Ｇがグループ１０００に、レジスタＲＥＧ＿Ｈがグループ１４００に、レジスタＲＥＧ＿Ｉがグループ２０００に分類されたことを示している。遅延グループ情報Ｆ５は、図１２に表す様な、遅延グループとその遅延グループに分類されたレジスタ名、遅延グループが持つＣＴＳ基点からレジスタまでのクロック分配遅延時間の対応を表したものである。
【００６６】
ステップＳ２０４において、分類部１３０は、遅延グループ情報Ｆ５を出力する。その後、ステップＳ２０を終了し、ステップＳ３０へ進む。
【００６７】
図４に戻り、回路設計装置１００は、各レジスタのタイミングエラーを修正する（Ｓ３０）。具体的には、回路設計装置１００の分類部１３０は、遅延グループ情報Ｆ５、ネットリストＦ６及びＳＤＦＦ７を入力し、タイミング解析等を行い、タイミング解析の結果に応じて、遅延グループ情報Ｆ５に設定された遅延グループに分類されたレジスタを他の遅延グループへ分類し直す。言い換えると、分類部１３０は、レジスタが分類された遅延グループにおける基準遅延時間を、当該レジスタのクロック分配遅延時間としてタイミング解析を行い、タイミングエラーが発生するレジスタを他の遅延グループへ分類する。これにより、Ｓｅｔｕｐタイムの規格違反（以下、Ｓｅｔｕｐエラーと称す）及びＨｏｌｄタイムの規格違反（以下、Ｈｏｌｄエラーと称す）を改善することができる。
【００６８】
さらに、分類部１３０は、一つの遅延グループに多くのレジスタが分類された場合、他の遅延グループにレジスタを分散する処理を行う。つまり、分類部１３０は、レジスタが分類された遅延グループに所定数以上のレジスタが分類されている場合、当該遅延グループに分類されているレジスタの一部を他の遅延グループへ分類する。これにより、ジッタノイズ軽減による設計を容易に行うことができる。
【００６９】
特に、分類部１３０は、他の遅延グループへ分類する場合に、レジスタが分類された遅延グループの基準遅延時間に比べて、基準遅延時間が遅延グループ間隔値分大きい他の遅延グループへ分類する。これにより、基準遅延時間の増加を間隔値単位で最小にすることで、タイミング解析を効率的に行うことができる。
【００７０】
ステップＳ３０において、Ｓｅｔｕｐエラー修正、Ｈｏｌｄエラー修正及びレジスタを分散する処理を実行後、更新した遅延グループ情報Ｆ５を出力し、ステップＳ４０へ進む。
【００７１】
ここで、Ｓｅｔｕｐタイムとは、レジスタがクロック信号などデータの取り込みを保持するタイミングを知らせる信号に合わせてデータ信号を確定、保持しておかなければならない最小限の時間である。また、Ｈｏｌｄタイムとは、レジスタがクロック信号などデータの取り込みを支持するタイミングを知らせる信号に合わせてタイミング信号を与えた後もデータ信号を保持しておかなければならない時間である。また、Ｓｅｔｕｐタイムの規格とは、クロック周波数、データラインの遅延などの条件に対して、Ｓｅｔｕｐタイムが満足する規格を示す。また、Ｈｏｌｄタイムの規格とは、クロック周波数、データラインの遅延などの条件に対して、Ｈｏｌｄタイムが満足する規格を示す。
【００７２】
図１３は、本発明の実施の形態１にかかる遅延グループに属するレジスタの再分類処理の流れを示すフローチャートである。まず、回路設計装置１００は、タイミング解析を行う（Ｓ３０１）。具体的には、まず、回路設計装置１００の分類部１３０は、遅延グループ情報Ｆ５、ネットリストＦ６及びＳＤＦＦ７を入力する。そして、分類部１３０は、遅延グループ情報Ｆ５を参照し、各レジスタが分類されている遅延グループにおける基準遅延時間を、各レジスタのクロック分配遅延時間として設定する。これにより、分類部１３０は、タイミング解析を実行し、タイミング解析の結果としてタイミングリストＦ８を出力する。尚、本発明の実施の形態１にかかるタイミング解析の処理は、ＳＴＡツール等を用いても構わない。
【００７３】
例えば、分類部１３０は、タイミング解析の結果であるタイミングレポートから、各レジスタに対するＳｅｔｕｐタイムの規格マージン値（以下、ＳｅｔｕｐＷＳ値と称す）及びＨｏｌｄタイムの規格マージン値（以下、ＨｏｌｄＷＳ値と称す）を抽出する。そして、分類部１３０は、ＳｅｔｕｐＷＳ値とＨｏｌｄＷＳ値とを、受け側レジスタ基点と送り側レジスタ基点とで集計する。そして、分類部１３０は、当該集計結果を必要に応じて組み合わせて、タイミングリストＦ８とする。ここで、受け側レジスタ基点は、レジスタ間同士のエンドポイントに相当する。また、送り側レジスタ基点は、レジスタ間同士のスタートポイントに相当する。
【００７４】
以下、ステップＳ３０２及びＳ３０３では、ＳｅｔｕｐＷＳ値を受け側レジスタ基点、ＨｏｌｄＷＳ値を送り側レジスタ基点として集計したタイミングリストＦ８を使用する。また、ステップＳ３０５では、ＳｅｔｕｐＷＳ値を送り側レジスタ基点、ＨｏｌｄＷＳ値を受け側レジスタ基点として集計したタイミングリストＦ８を使用する。
【００７５】
次に、分類部１３０は、ステップＳ３０１で出力したタイミングリストＦ８から、Ｓｅｔｕｐエラーの有無を判定する（Ｓ３０２）。ステップＳ３０２において、Ｓｅｔｕｐエラーが無いと判定した場合、ステップＳ３０３のＨｏｌｄエラー判定へ進む。Ｓｅｔｕｐエラーが有ると判定した場合、ステップＳ３０４へ進み、分類部１３０は、遅延グループの再設定を行うことにより、Ｓｅｔｕｐエラーを修正する。
【００７６】
図１４は、本発明の実施の形態１にかかるタイミング解析の結果の例を示す図である。ここで、ステップＳ３０２においては、ステップＳ３０１により出力されるタイミング解析の結果から、ＳｅｔｕｐＷＳ値を受け側レジスタ基点で、ＨｏｌｄＷＳ値を送り側レジスタ基点で集計した結果を組み合わせたものである。図１４のＳｅｔｕｐＷＳ値を参照すると、レジスタＲＥＧ＿Ａで−３００［ｐｓ］、レジスタＲＥＧ＿Ｄで−１００［ｐｓ］、レジスタＲＥＧ＿Ｅで−３００［ｐｓ］のＳｅｔｕｐエラーが存在することがわかる。そのため、ステップＳ３０２において、分類部１３０は、Ｓｅｔｕｐエラーが有ると判定し、ステップＳ３０４へ進む。
【００７７】
分類部１３０は、Ｓｅｔｕｐエラー、Ｈｏｌｄエラーを修正する為に、該当レジスタについて、当該レジスタが分類されている遅延グループから基準遅延時間が大きな遅延グループに入れ替えを実施する。そして、入れ替え後に、分類部１３０は、遅延グループ情報Ｆ５を更新する（Ｓ３０４）。このとき、分類部１３０は、レジスタが組み分けられたグループの基準遅延時間より大きい基準遅延時間が設定されたグループへ入れ替えを行う。
【００７８】
本発明の実施の形態１では、ステップＳ３０４にて、図１４に示したタイミング解析の結果のＳｅｔｕｐエラー箇所を修正する。具体的には、分類部１３０は、該当レジスタが分類されている遅延グループから、Ｓｅｔｕｐエラーが解消出来るクロック分配遅延時間分大きな基準遅延時間を有する遅延グループに入れ替える。
【００７９】
図１５は、本発明の実施の形態１にかかるＳｅｔｕｐエラー修正後に遅延グループへレジスタを再分類した結果である遅延グループ情報Ｆ５の例を示す図である。つまり、レジスタＲＥＧ＿Ａを、グループ４００からグループ８００へ移動させる。また、レジスタＲＥＧ＿Ｄを、グループ１０００からグループ１２００へ移動させる。また、レジスタＲＥＧ＿Ｅを、グループ８００からグループ１２００へ移動させる。このようにレジスタを入れ替える事により、レジスタＲＥＧ＿Ａは、クロック遅延が＋４００［ｐｓ］、レジスタＲＥＧ＿Ｄは、クロック遅延が＋２００［ｐｓ］、レジスタＲＥＧ＿Ｅは、クロック遅延が＋４００［ｐｓ］追加された事と同じになる。
【００８０】
ステップＳ３０４にて、クロック遅延を遅らせることによりタイミング修正を行う理由は、各レジスタのクロック分配遅延時間に基づくタイミング解析の結果を用いて、クロックツリーを構成した場合、各レジスタのクロックラインにおけるクロック分配遅延時間は、各レジスタが分類されている遅延グループにおける基準遅延時間より早い遅延で構成することは難しいためである。
【００８１】
これより、ステップＳ３０２及びＳ３０３で使用するタイミングリストＦ８は、タイミング修正時にクロック遅延を遅らせる値が明確になるように、各レジスタのＳｅｔｕｐＷＳ値を受け側レジスタ基点で、ＨｏｌｄＷＳ値は送り側レジスタ基点で集計したものを組み合わせて使用する。
【００８２】
続いて、ステップＳ３０１に戻って、分類部１３０は、ステップＳ３０４により更新された遅延グループ情報Ｆ５を使用し、タイミング解析を実行する。そして、分類部１３０は、タイミングリストＦ８を更新する。
【００８３】
図１６は、本発明の実施の形態１にかかるＳｅｔｕｐエラー修正後のタイミング解析の結果の例を示す図である。図１６は、レジスタＲＥＧ＿ＡのＳｅｔｕｐＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＢのＳｅｔｕｐＷＳ値が２０００［ｐｓ］、レジスタＲＥＧ＿ＣのＳｅｔｕｐＷＳ値が１４００［ｐｓ］、レジスタＲＥＧ＿ＤのＳｅｔｕｐＷＳ値が４００［ｐｓ］、レジスタＲＥＧ＿ＥのＳｅｔｕｐＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＦのＳｅｔｕｐＷＳ値が７００［ｐｓ］、レジスタＲＥＧ＿ＧのＳｅｔｕｐＷＳ値が６００［ｐｓ］、レジスタＲＥＧ＿ＨのＳｅｔｕｐＷＳ値が５００［ｐｓ］、レジスタＲＥＧ＿ＩのＳｅｔｕｐＷＳ値が８００［ｐｓ］であることを示す。そのため、ステップＳ３０２において、分類部１３０は、Ｓｅｔｕｐエラーが無いと判定し、ステップＳ３０３のＨｏｌｄエラー有無の判定へ進む。
【００８４】
なお、Ｓｅｔｕｐエラーを修正するために遅延グループに分類されているレジスタを入れ替えることにより、修正対象箇所とは別のレジスタ間のパスにてＳｅｔｕｐエラーが発生した場合がある。その場合、再度、Ｓｅｔｕｐエラーが発生したレジスタのＳｅｔｕｐエラー修正値に相当する遅延グループと入れ替えてタイミング解析を実行し、Ｓｅｔｕｐエラーが消えるまで、遅延グループ間でレジスタの入れ替えを行い、タイミング確認を繰り返す。
【００８５】
次に、分類部１３０は、Ｈｏｌｄエラーの有無を判定する（Ｓ３０３）。Ｈｏｌｄエラーが無いと判定した場合、ステップＳ３０５の各レジスタの個数分布確認へ進む。Ｈｏｌｄエラーが有ると判定した場合、ステップＳ３０４へ進む。そして、Ｓｅｔｕｐエラーを修正した時と同様に、各レジスタが分類されている遅延グループを入れ替える。これにより、Ｈｏｌｄエラーを修正する。
【００８６】
本発明の実施の形態１では、ステップＳ３０３にて、Ｈｏｌｄエラーの有無の判定のために使用するタイミングリストＦ８の値は、図１６に示す値である。ここで、ステップＳ３０３においては、ステップＳ３０１により出力されるタイミング解析の結果から、ＳｅｔｕｐＷＳ値を受け側レジスタ基点で、ＨｏｌｄＷＳ値を送り側レジスタ基点で集計した結果を組み合わせたものである。図１６のＨｏｌｄＷＳ値を参照すると、レジスタＲＥＧ＿Ｂで−３００［ｐｓ］、レジスタＲＥＧ＿Ｃで−１００［ｐｓ］、レジスタＲＥＧ＿Ｆで−１００［ｐｓ］、レジスタＲＥＧ＿Ｇで−１００［ｐｓ］、レジスタＲＥＧ＿Ｈで−１００［ｐｓ］のＨｏｌｄエラーが存在することがわかる。そのため、ステップＳ３０３において、分類部１３０は、Ｈｏｌｄエラーが有ると判定し、ステップＳ３０４に進む。
【００８７】
ステップＳ３０４では、分類部１３０は、Ｈｏｌｄエラーを修正するために各遅延グループに分類されている各レジスタの入れ替えを実施する。そして、入れ替え後に、分類部１３０は、遅延グループＦ００５を更新する。
【００８８】
図１７は、本発明の実施の形態１にかかるＨｏｌｄエラー修正後に遅延グループへレジスタを再分類した結果である遅延グループ情報Ｆ５の例を示す図である。つまり、レジスタＲＥＧ＿Ｂを、グループ４００からグループ８００へ移動させる。また、レジスタＲＥＧ＿Ｃを、グループ１０００からグループ１２００へ移動させる。また、レジスタＲＥＧ＿Ｆを、グループ１０００からグループ１２００へ移動させる。また、レジスタＲＥＧ＿Ｇを、グループ１０００からグループ１２００へ移動させる。また、レジスタＲＥＧ＿Ｈを、グループ１４００からグループ１６００へ移動させる。このようにレジスタを入れ替える事により、レジスタＲＥＧ＿Ｂは、クロック遅延が＋４００［ｐｓ］、レジスタＲＥＧ＿Ｃは、クロック遅延が＋２００［ｐｓ］、レジスタＲＥＧ＿Ｆは、クロック遅延が＋２００［ｐｓ］、レジスタＲＥＧ＿Ｇは、クロック遅延が＋２００［ｐｓ］、レジスタＲＥＧ＿Ｈは、クロック遅延が＋２００［ｐｓ］追加された事と同じになる。
【００８９】
続いて、ステップＳ３０１に戻って、分類部１３０は、ステップＳ３０４により更新された遅延グループ情報Ｆ５を使用し、タイミング解析を実行する。そして、分類部１３０は、タイミングリストＦ８を更新する。
【００９０】
図１８は、本発明の実施の形態１にかかるＨｏｌｄエラー修正後のタイミング解析の結果の例を示す図である。図１８は、レジスタＲＥＧ＿ＡのＨｏｌｄＷＳ値が２００［ｐｓ］、レジスタＲＥＧ＿ＢのＨｏｌｄＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＣのＨｏｌｄＷＳ値が３００［ｐｓ］、レジスタＲＥＧ＿ＤのＨｏｌｄＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＥのＨｏｌｄＷＳ値が８００［ｐｓ］、レジスタＲＥＧ＿ＦのＨｏｌｄＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＧのＨｏｌｄＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＨのＨｏｌｄＷＳ値が１００［ｐｓ］、レジスタＲＥＧ＿ＩのＨｏｌｄＷＳ値が５００［ｐｓ］であることを示す。そのため、ステップＳ３０３において、Ｈｏｌｄエラーが無いと判定し、ステップＳ３０５の各レジスタの個数分布確認へ進む。
【００９１】
なお、Ｈｏｌｄエラーを修正するために遅延グループに分類されているレジスタを入れ替えることにより、修正対象箇所とは別のレジスタ間のパスにてＨｏｌｄエラーが発生する場合がある。その場合、再度、Ｈｏｌｄエラーが発生したレジスタのＨｏｌｄエラー修正値に相当する遅延グループと入れ替えてタイミング解析を実行し、Ｈｏｌｄエラーが消えるまで、遅延グループ間でレジスタの入れ替えを行い、タイミング確認を繰り返す。
【００９２】
また、更に、Ｈｏｌｄエラーを修正するために遅延グループに分類されているレジスタを入れ替えることにより、修正対象箇所とは別のレジスタ間のパスにてＳｅｔｕｐエラーが発生する場合がある。その場合、ステップＳ３０１、Ｓ３０２及びＳ３０４を通り、Ｓｅｔｕｐエラーを修正した後、更新したステップＳ３０１のタイミングリストＦ８の値を参照し、ステップＳ３０３にて、再度、Ｈｏｌｄエラーの有無の確認を行う。
【００９３】
ステップＳ３０１乃至Ｓ３０４を繰り返すことにより、Ｓｅｔｕｐエラー、Ｈｏｌｄエラーの修正を完了した遅延グループ情報Ｆ５と、タイミングリストＦ８に更新する。
【００９４】
次に、分類部１３０は、遅延グループ情報Ｆ５を参照し、各遅延グループに分類されているレジスタの個数を確認する（Ｓ３０５）。そして、分類部１３０は、レジスタが最も多く分類されている遅延グループを特定する。次に、分類部１３０は、タイミングリストＦ８を参照し、レジスタが最も多く分類されている遅延グループのレジスタに対するタイミングマージンを確認する。そして、分類部１３０は、タイミングマージンの多い順に選択する。つまり、分類部１３０は、遅延が一段階大きい遅延グループにレジスタを入れ替えた場合でもタイミングエラーが発生しないレジスタを選択する。選択後、ステップＳ３０６へ進む。
【００９５】
続いて、分類部１３０は、遅延が一段階大きな遅延グループへのレジスタの入れ替えが可能かを判定する（Ｓ３０６）。具体的には、分類部１３０は、ステップＳ３０５にて選択されたレジスタが１個以上存在する場合、かつ、次の場合に入れ替え可能と判定する。それは、入れ替え元の遅延グループから遅延が一段階大きな遅延グループである入れ替え先の遅延グループへ入れ替えた際に、入れ替え先の遅延グループのレジスタ個数と入れ替え元の遅延グループのレジスタ個数が同数、又は入れ替え先の遅延グループのレジスタ個数と入れ替え元の遅延グループのレジスタ個数以下になる場合である。そして、入れ替え可能と判定した場合、ステップＳ３０７へ進む。
【００９６】
そして、ステップＳ３０６にて、遅延が一段階大きな遅延グループへ入れ替えが可能となった場合に、分類部１３０は、遅延グループの再設定を実行する（Ｓ３０７）。すなわち、分類部１３０は、ステップＳ３０６にて遅延が一段階大きい遅延グループにレジスタを入れ替えた場合でもタイミングエラーが発生しないと判断されたレジスタを、遅延が一段階大きい遅延グループへ入れ替える。そして、分類部１３０は、遅延グループ情報Ｆ５を更新する。遅延グループ情報Ｆ５を更新後、ステップＳ４０へ進む。
【００９７】
遅延グループに分類されたレジスタの他の遅延グループへの入れ替えは、入れ替え元の遅延グループから遅延が一段階大きな遅延グループである入れ替え先の遅延グループへ入れ替えた場合、入れ替え先の遅延グループのレジスタ個数と、入れ替え元の遅延グループのレジスタ個数が同数または、入れ替え先の遅延グループのレジスタ個数と、入れ替え元の遅延グループのレジスタ個数以下になる条件で、タイミングマージンの多いレジスタから入れ替える。
【００９８】
つまり、分類部１３０は、他の遅延グループへ分類した場合に、当該他の遅延グループのレジスタの個数が入れ替え元の遅延グループのレジスタの個数を上回らないようにするとよい。これにより、適切な個数を分類することができる。
【００９９】
レジスタの入れ替え後、分類部１３０は、遅延グループ情報Ｆ５を更新し、ステップＳ４０へ進む。
【０１００】
ここで、本発明の実施の形態１のステップＳ３０５、Ｓ３０６及びＳ３０７の流れを、具体例を用いて詳細に説明する。まず、ステップＳ３０５にて、使用する遅延グループ情報Ｆ５は、図１７で示すものである。図１７においてレジスタが最も多く分類されている遅延グループは、グループ１２００である。グループ１２００に分類されているレジスタは、ＲＥＧ＿Ｃ、ＲＥＧ＿Ｄ、ＲＥＧ＿Ｅ、ＲＥＧ＿Ｆ及びＲＥＧ＿Ｇである。
【０１０１】
図１９は、本発明の実施の形態１にかかるタイミングマージンリストの例を示す図である。図１９は、ステップＳ３０５で使用するタイミングリストＦ８である。ステップＳ３０５では、ステップＳ３０１で実行したタイミング解析の結果を、ＳｅｔｕｐＷＳ値を送り側レジスタ基点で、ＨｏｌｄＷＳ値を受け側レジスタ基点で集計した結果を組み合わせたものを使用する。これは、遅延グループに分類されているレジスタを、遅延が一段階大きい遅延グループへ入れ替えた場合のタイミングマージン値を明確にするためである。分類部１３０は、タイミングリストＦ８から、遅延が一段階大きい遅延グループにレジスタを入れ替えた場合でもタイミングエラーが発生しないレジスタを、タイミングマージンの多い順に選択する。
【０１０２】
グループ１２００は、図１７でのレジスタが最も多く分類されている遅延グループである。そして、図１９において、グループ１２００に分類されるレジスタのタイミングマージン値は、レジスタＲＥＧ＿Ｃで、ＳｅｔｕｐＷＳ値１３００［ｐｓ］、ＨｏｌｄＷＳ値５００［ｐｓ］、レジスタＲＥＧ＿Ｄで、ＳｅｔｕｐＷＳ値８００［ｐｓ］、ＨｏｌｄＷＳ値２００［ｐｓ］、レジスタＲＥＧ＿Ｅで、ＳｅｔｕｐＷＳ値６００［ｐｓ］、ＨｏｌｄＷＳ値８００［ｐｓ］、レジスタＲＥＧ＿Ｆで、ＳｅｔｕｐＷＳ値６００［ｐｓ］、ＨｏｌｄＷＳ値６００［ｐｓ］、レジスタＲＥＧ＿Ｇで、ＳｅｔｕｐＷＳ値７００［ｐｓ］、ＨｏｌｄＷＳ値４００［ｐｓ］である。
【０１０３】
次に、分類部１３０は、遅延が一段階大きい遅延グループにレジスタを入れ替えた場合でもタイミングエラーが発生しないレジスタを、タイミングマージンの多い順に選択する。具体的には、まず、分類部１３０は、ＳｅｔｕｐＷＳ値及びＨｏｌｄＷＳ値共に、遅延グループ間隔値である２００［ｐｓ］引いた値を算出する。その後、分類部１３０は、当該引いた値であるタイミングマージンが０より大きいレジスタを選択する。そして、分類部１３０は、選択したレジスタについてＳｅｔｕｐＷＳ値とＨｏｌｄＷＳ値とを足した値を算出する。そして、分類部１３０は、当該足した値であるタイミングマージンが多い順にレジスタを選択する。選択した結果は、タイミングマージン値の大きい順に、レジスタＲＥＧ＿ＣのＳｅｔｕｐＷＳ値１１００［ｐｓ］、ＨｏｌｄＷＳ値３００［ｐｓ］、レジスタＲＥＧ＿ＥのＳｅｔｕｐＷＳ値４００［ｐｓ］、ＨｏｌｄＷＳ値６００［ｐｓ］、レジスタＲＥＧ＿ＦのＳｅｔｕｐＷＳ値４００［ｐｓ］、ＨｏｌｄＷＳ値４００［ｐｓ］、レジスタＲＥＧ＿ＧのＳｅｔｕｐＷＳ値５００［ｐｓ］、ＨｏｌｄＷＳ値２００［ｐｓ］、レジスタＲＥＧ＿ＤのＳｅｔｕｐＷＳ値６００［ｐｓ］、ＨｏｌｄＷＳ値０［ｐｓ］となる。
【０１０４】
次に、分類部１３０は、遅延が一段階大きな遅延グループへのレジスタの入れ替えが可能かを判定する（Ｓ３０６）。ここでは、ステップＳ３０５にて、レジスタＲＥＧ＿Ｃ、ＲＥＧ＿Ｅ、ＲＥＧ＿Ｆ、ＲＥＧ＿Ｇ及びＲＥＧ＿Ｄが、遅延が一段階大きい遅延グループへ入れ替えが可能なレジスタとして選択されている。そのため、分類部１３０は、入れ替え可能なレジスタが存在すると判定し、ステップＳ３０７へ進む。
【０１０５】
次に、ステップＳ３０５にて、レジスタが最も多く分類されている遅延グループはグループ１２００と特定したため、分類部１３０は、遅延が一段階大きい遅延グループであるグループ１４００へレジスタを入れ替える（Ｓ３０７）。
【０１０６】
ここで、入れ替えるレジスタは、ステップＳ３０５で選択したレジスタの内、次の条件を満たす必要がある。つまり、入れ替え先のグループ１４００のレジスタ個数と、入れ替え元のグループ１２００のレジスタ個数が同数、又は、入れ替え先のグループ１４００のレジスタ個数と、入れ替え元のグループ１２００のレジスタ個数以下になる条件である。そして、分類部１３０は、当該条件を満たす場合に、タイミングマージンが多い順にレジスタを選択する。その結果、レジスタＲＥＧ＿Ｃ、レジスタＲＥＧ＿Ｅの２個が選択される。
【０１０７】
図２０は、本発明の実施の形態１にかかる遅延グループのレジスタ個数の最適化後の遅延グループ情報の例を示す図である。つまり、図２０は、ステップＳ３０７にてレジスタを入れ替えた後の遅延グループ情報Ｆ５を表す。具体的には、グループ１２００に、レジスタＲＥＧ＿Ｄ、ＲＥＧ＿Ｆ及びＲＥＧ＿Ｇ、グループ１４００に、レジスタＲＥＧ＿Ｃ及びＲＥＧ＿Ｅと入れ替えを行った結果である。
【０１０８】
以上がステップＳ３０５、Ｓ３０６及びＳ３０７の流れの具体例である。
【０１０９】
なお、ステップ３０５、３０６及び３０７の処理により、ピーク電流の低減効果を高めることができる。同一の遅延グループに分類されているレジスタは、その遅延グループにおけるクロック遅延であるため、同時にクロックが入力される。つまり、同一の遅延グループに多くのレジスタが分類されている場合、同時に動作するレジスタが多くなる為、ピーク電流が増える。そのため、同一の遅延グループに多く分類しているレジスタを相対的に分類されているレジスタの少ない他の遅延グループへ入れ替えることにより、ピーク電流の低減効果を高めることが出来る。
【０１１０】
図４に戻り、回路設計装置１００は、クロックツリーを生成する（Ｓ４０）。すなわち、回路設計装置１００のクロックツリー生成部１４０は、遅延グループ情報Ｆ５及びＰ＆Ｒ後レイアウトデータＦ９を入力し、クロックツリーを生成する。このとき、クロックツリー生成部１４０は、遅延グループ情報Ｆ５に格納されたレジスタが分類された遅延グループにおける基準遅延時間を、ＣＴＳ基点から当該レジスタまでの特定クロック遅延値１１７として特定し、特定クロック遅延値１１７を用いてクロックツリーを生成する。
【０１１１】
尚、ステップＳ３０において、ステップＳ３０４又はＳ３０７による遅延グループの再設定が行われた場合、クロックツリー生成部１４０は、最後に更新された遅延グループ情報Ｆ５を使用する。
【０１１２】
このように、クロックツリー生成部１４０は、遅延グループ情報Ｆ５のＣＴＳ基点からレジスタまでのクロック分配遅延時間を入力として、遅延グループ毎にクロックツリーを構成する。これにより、ピーク電流を低減出来るクロックスキューを持ったクロックツリーが構成出来る。ステップＳ４０終了後、当該回路設計処理を終了する。
【０１１３】
本発明の実施の形態１は、一定の遅延間隔毎の基準遅延時間を持った２つ以上の遅延グループにレジスタを分類する。その後、遅延グループに分類されたレジスタは、遅延グループにおける基準遅延時間をクロック分配遅延時間としてクロックツリーを構成する。これにより、ＣＴＳ基点からレジスタまでのクロック分配遅延時間が一定の遅延間隔毎に分散し、同時に動作するレジスタが減る為、ピーク電流を低減するクロックツリーが構成できる。
【０１１４】
さらに、遅延グループが持つ一定の基準遅延時間を用いてタイミング解析を実施し、タイミングエラーが発生したパスを有するレジスタをタイミング解析の結果から遅延調整量を確認し、分類されている当該遅延グループから遅延調整量に該当する他の遅延グループへ入れ替える。これにより、クロックツリーを構成する際に、タイミングエラーが無く、且つ、ピーク電流を低減できる各レジスタまでのクロック遅延が算出できる。算出されたクロック分配遅延時間を使用しクロックツリーを構成するため、特許文献１のようにクロックスキュー設定回路１０を挿入し、クロックツリーを再構成する工程を必要としない。よって、設計ＴＡＴを増大することなくピーク電流を抑えたＣＴＳを構築することが出来る。
【０１１５】
第１の効果として、ピーク電流を低減するＣＴＳ構成において、特許文献１に比べＣＴＳ後のクロック分類回路の再調整処理が不要な為、設計ＴＡＴが短縮できる。その理由としては、まず、遅延グループ生成部１２０は、クロック分配遅延時間をレジスタの配置位置と使用プロセスの単位長あたりの遅延値情報Ｆ３、ピーク電流を低減するのに必要な間隔値Ｆ４を元に、ピーク電流が低減できるＣＴＳルートからレジスタまで到達する遅延時間のグループを作成する。そして、分類部１３０は、複数の遅延グループ各々に対して設定されたＣＴＳルートから各レジスタまで到達するクロック分配遅延時間でクロック信号が分類されたとしてタイミング解析を実行する。さらに、分類部１３０は、回路設計装置１００は、タイミングエラーが発生したパスに対応するレジスタを複数の遅延グループの内の他の遅延グループに入れ替えることにより、タイミングエラーを修正する。その後、クロックツリー生成部１４０は、入れ替え後のレジスタが分類された遅延グループにおける基準遅延時間を元にＣＴＳを実行するためである。
【０１１６】
第２の効果として、消費電力低減効果がある。その理由としては、特許文献１では、一度、クロック分配遅延時間の遅いレジスタにクロック遅延を合わせ、クロックツリーを構成した後、モジュールをグループ化し、複数の組み合わせ回路で構成されたクロックスキュー設定回路１０を挿入しクロックツリーの再構築しているためである。
【０１１７】
図２１は、特許文献１により生成した場合のクロックツリーのイメージ図である。ここで、００４はクロックバッファ、００５はレジスタを意味する。この為、クロックツリーにクロックスキュー合わせの為に必要なバッファ以上の余分な回路であるクロックスキュー設定回路１０が入り、その余分に入った回路により消費電力が増加する。
【０１１８】
一方、本発明の実施の形態１では、最初から最適なクロック分配遅延時間を算出するため、クロックスキューを合わせるクロックツリー構成より全体遅延が遅くならない。この為、クロックラインの回路規模を抑えることが出来、消費電力を低減する事が出来る。図２２は、本発明の実施の形態１により生成した場合のクロックツリーのイメージ図である。図２２に示すように、クロックバッファ００４、レジスタ００５を持ったクロックツリー構成となり、クロックスキュー設定回路１０は必要されない。
【０１１９】
第３の効果として、ジッタノイズ軽減による設計の容易化がある。その理由としては、第２の効果で述べた通り、クロックスキューを合わせるクロックツリー構成より全体遅延が遅くならないため、バッファインバータの段数を抑えることが出来る。その結果、バッファインバータにかかるジッタノイズ成分も軽減でき、Ｓｅｔｕｐタイム及びＨｏｌｄタイム調整をする上で、余分な設計のマージンを軽減できる。
【０１２０】
以上述べたように、本実施例は、少なくとも配置処理（Ｓ１０の前半）実施後に、クロック分配のルートから各順序回路までのクロック分配遅延時間を見積もり、各順序回路のグループ化を行う（Ｓ２０)。その後、遅延検証（Ｓ３０）し、遅延検証の結果エラーとなった検証パスに対応した順序回路を別のグループに移して、遅延エラーをなくした後に、各遅延グループに対してＣＴＳを実施する（Ｓ４０）。
【０１２１】
つまり、一のクロックルートからクロックが分配される複数の順序回路の配置情報に基づき、当該複数の順序回路のそれぞれのクロック分配遅延時間を算出し(Ｓ１０、Ｓ２０１，Ｓ２０２)、算出された前記クロック分配遅延時間に応じて、複数の前記順序回路を、予め遅延時間の範囲を定義した複数のグループ（遅延グループ）に、組み分けし（Ｓ２０３、Ｓ２０４)、前記グループごとに設定された基準遅延時間となるように、前記グループごとに当該グループに組み分けされた順序回路に対する前記クロックのクロックツリーを生成する（Ｓ４０）ものである。
【０１２２】
このようにすることによって、グループごとにクロック分配遅延時間差をつけることが出来、ピーク電流を下げることが可能となる。それと共に、ＣＴＳ実行前にクロック分配遅延時間を見積もっているため、ＣＴＳのやり直しを防ぐことが可能となる。
【０１２３】
そして、クロックツリーを生成する前に、この複数のグループ各々に対して設定された前記クロック分配遅延時間でクロック信号が分配されたとして遅延検証（ＳＴＡ）を実行し、遅延検証の結果、遅延エラーが発生したパスに対応する順序回路を前記複数のグループのうちの別グループに入れ替えを行うことによって、遅延エラーの対処が出来る（Ｓ３０)。ここで遅延検証および遅延エラーの修正は、配置処理（Ｓ１０の前半）からＣＴＳ実施（Ｓ４０）前のいずれかのポイントで行えばよい。
【０１２４】
＜その他の発明の実施の形態＞
尚、上述した図４では、ステップＳ２０の後にステップＳ３０を実行する例を示したが、本発明の実施の形態１はこれに限定されない。例えば、図５のステップＳ２０３にて、遅延グループ生成部１２０は、遅延グループ間隔値で分割した遅延グループを作成する。そして、ステップＳ２０４にて、分類部１３０は、各レジスタを遅延グループのいずれかへ分類する。その後、クロックツリー生成部１４０は、各遅延グループの持つ基準遅延時間を各レジスタのクロック分配遅延時間としてクロックツリーを構成するようにしてもよい。これにより、各レジスタのクロック分配遅延時間が、分類された遅延グループにより異なる為、同時に動作するレジスタが減り、ピーク電流を低減するクロックツリーが構成できる。
【０１２５】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【０１２６】
例えば、本実施例は、各遅延グループの遅延時間の範囲の設定方法として最大のクロック分配遅延時間と所定の固定値（間隔値）とを利用した場合について記載した。これに代えて、具体的に各遅延グループの遅延範囲を個々に設定しても良い。また、各グループの遅延範囲の間隔（幅）は互いに異なってもよい。一方、最大のクロック分配遅延時間を有する分配ターゲットが含まれる遅延グループの遅延時間の範囲の上限が、必ずしも最大のクロック分配遅延時間である必要はない。
【０１２７】
尚、本発明の実施の形態１にかかる回路設計装置１００において、遅延グループ生成部１２０は、必ずしも必要はない。その場合、予め遅延時間の範囲を定義した複数のグループを遅延グループとしてもよい。
【符号の説明】
【０１２８】
００１  チップ
００２  ＰＬＬ
００３  ルートバッファ
００４  クロックバッファ
００５  レジスタ
１００  回路設計装置
１００ａ  回路設計システム
１１０  理想値算出部
１２０  遅延グループ生成部
１３０  分類部
１４０  クロックツリー生成部
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  ＩＦ部
１０５  ハードディスク
１１１  ＯＳ
１１２  回路設計プログラム
１１３  レイアウトデータ
１１４  理想クロック遅延値
１１５  間隔値
１１６  遅延グループ情報
１１７  特定クロック遅延値
１０  クロックスキュー設定回路
１２  バッファ
１４  バッファ
２０  セレクタ
２２  セレクタ
２４  セレクタ
３０  ロジック回路
３２  ロジック回路
３４  ロジック回路
４１  サーバ装置
４１１  記憶装置
４１２  回路設計プログラム
４１３  レイアウトデータ
４１４  間隔値
４２  ネットワーク
４３  クライアント端末
２００  グループ
４００  グループ
６００  グループ
８００  グループ
１０００  グループ
１２００  グループ
１４００  グループ
１６００  グループ
１８００  グループ
２０００  グループ
Ｉ      モジュール
ＩＩ    モジュール
ＩＩＩ  モジュール
ＩＶ    モジュール
Ａ  クロック信号
Ｂ  クロック信号
Ｃ  クロック信号
Ｄ  クロック信号
ＣＬＫ  クロック信号
Ｆ１  レイアウトデータ
Ｆ２  データライン遅延値
Ｆ３  単位長あたりの遅延値情報
Ｆ４  間隔値
Ｆ５  遅延グループ情報
Ｆ６  ネットリスト
Ｆ７  ＳＤＦ
Ｆ８  タイミングリスト
Ｆ９  Ｐ＆Ｒ後レイアウトデータ
Ｍ１  ロジック信号
Ｍ２  ロジック信号
ＲＥＧ＿Ａ  レジスタ
ＲＥＧ＿Ｂ  レジスタ
ＲＥＧ＿Ｃ  レジスタ
ＲＥＧ＿Ｄ  レジスタ
ＲＥＧ＿Ｅ  レジスタ
ＲＥＧ＿Ｆ  レジスタ
ＲＥＧ＿Ｇ  レジスタ
ＲＥＧ＿Ｈ  レジスタ
ＲＥＧ＿Ｉ  レジスタ
Ｓ１  制御信号
Ｓ２  制御信号
Ｓ３  制御信号
Ｘ  クロック信号
【図１】
2011129053.tif 000003
【図２】
2011129053.tif 000004
【図３】
2011129053.tif 000005
【図４】
2011129053.tif 000006
【図５】
2011129053.tif 000007
【図６】
2011129053.tif 000008
【図７】
2011129053.tif 000009
【図８】
2011129053.tif 000010
【図９】
2011129053.tif 000011
【図１０】
2011129053.tif 000012
【図１１】
2011129053.tif 000013
【図１２】
2011129053.tif 000014
【図１３】
2011129053.tif 000015
【図１４】
2011129053.tif 000016
【図１５】
2011129053.tif 000017
【図１６】
2011129053.tif 000018
【図１７】
2011129053.tif 000019
【図１８】
2011129053.tif 000020
【図１９】
2011129053.tif 000021
【図２０】
2011129053.tif 000022
【図２１】
2011129053.tif 000023
【図２２】
2011129053.tif 000024
【図２３】
2011129053.tif 000025
【図２４】
2011129053.tif 000026
【図２５】
2011129053.tif 000027
【図２６】
2011129053.tif 000028