(57)【要約】【課題】製造ばらつきによるクロックスキュー発生を補償するための遅延調整素子の挿入により、半導体集積回路の面積、電力が増大する。【解決手段】データライン３０６における遅延時間τＬが相対的に小さい場合には、フリップフロップ対（３０４，３０５）からクロック合流点３０７までのクロック遅延時間τＣが短くなるように、データライン３０６の入出力フリップフロップ対（３０４，３０５）を選択する。これにより、製造ばらつきを考慮したホールドエラー回避のために挿入すべき遅延調整素子３０９の数を減らすことができ、チップ面積、消費電力を削減することができる。【選択図】  図３
2005004496.tif 000002
【特許請求の範囲】
【請求項１】
データラインで接続される送り側および受け側の同期回路セルとクロックドライバのレイアウト配置と、前記両同期回路セルとクロックドライバを接続する配線経路とを決定するレイアウト方法であって、
前記両同期回路セル間のデータライン遅延時間に応じて、前記レイアウト配置と前記配線経路の決定を行うことを特徴とする半導体集積回路のレイアウト方法。
【請求項２】
前記レイアウト配置と前記配線経路の決定を、前記データライン遅延時間が相対的に小さいことを優先して、前記同期回路セル対に対するクロック分岐点からのクロック遅延時間τＣがより小さくなる条件で行うことを特徴とする請求項１に記載の半導体集積回路のレイアウト方法。
【請求項３】
さらに、前記データラインと前記同期回路セル対との接続関係を論理接続情報に反映することを特徴とする請求項１または請求項２に記載の半導体集積回路のレイアウト方法。
【請求項４】
データラインで接続される送り側および受け側の同期回路セルとクロックドライバのレイアウト配置と、前記両同期回路セルとクロックドライバを接続する配線経路とを決定してあらかじめレイアウトを行い、前記レイアウトされている複数の同期回路セルの中から前記データラインに接続すべき同期回路セル対を選択するに、当該データラインの遅延時間に応じて選択することを特徴とする半導体集積回路のレイアウト方法。
【請求項５】
前記データラインに接続すべき同期回路セル対の選択を、前記データライン遅延時間が相対的に小さいことを優先して、前記同期回路セル対に対するクロック分岐点からのクロック遅延時間τＣがより小さくなる条件で行うことを特徴とする請求項４に記載の半導体集積回路のレイアウト方法。
【請求項６】
クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路のレイアウト方法であって、
セル群が配置配線されたレイアウトデータにおいて、同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行うことを特徴とする半導体集積回路のレイアウト方法。
【請求項７】
クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路のレイアウト方法であって、
セル群が配置配線されたレイアウトデータにおいて、同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、クロックツリーを構成する配線を再配線することを特徴とする半導体集積回路のレイアウト方法。
【請求項８】
前記再配線を、前記データライン遅延時間が相対的に小さいことを優先して、前記同期回路セル対に対するクロック分岐点からのクロック遅延時間τＣがより小さくなる条件で行うことを特徴とする請求項７に記載の半導体集積回路のレイアウト方法。
【請求項９】
クロックツリーを伴う半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出するステップと、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行うステップと、
前記優先順位の高い順に同期回路セル対を互いに近傍に配置するステップと、
前記優先順位の高いものほどクロック分岐点が前記同期回路セル対の近傍になるようにクロックドライバを配置した上で配線を行うステップと、
配置配線後にタイミング検証を行うステップと、
タイミング検証の結果、ホールドエラーのある箇所に遅延調整素子を挿入するステップとを含むことを特徴とする半導体集積回路のレイアウト方法。
【請求項１０】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出するステップと、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行うステップと、
前記優先順位の高い順に同期回路セル対を前記クロックツリーの中から選択するステップとを含むことを特徴とする半導体集積回路のレイアウト方法。
【請求項１１】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出するステップと、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行うステップと、
同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行うステップとを含むことを特徴とする半導体集積回路のレイアウト方法。
【請求項１２】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出するステップと、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行うステップと、
同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、クロックツリーを構成する配線を再配線するステップとを含むことを特徴とする半導体集積回路のレイアウト方法。
【請求項１３】
クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出する手段と、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行う手段と、
前記優先順位の高い順に同期回路セル対を互いに近傍に配置する手段と、
前記優先順位の高いものほどクロック分岐点が前記同期回路セル対の近傍になるようにクロックドライバを配置した上で配線を行う手段と、
配置配線後にタイミング検証を行う手段と、
タイミング検証の結果、ホールドエラーのある箇所に遅延調整素子を挿入する手段とを含むことを特徴とする半導体集積回路のレイアウト装置。
【請求項１４】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出する手段と、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行う手段と、
前記優先順位の高い順に同期回路セル対を前記クロックツリーの中から選択する手段とを含むことを特徴とする半導体集積回路のレイアウト装置。
【請求項１５】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出する手段と、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行う手段と、
同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行う手段とを含むことを特徴とする半導体集積回路のレイアウト装置。
【請求項１６】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間を算出する手段と、
前記算出した各データラインの遅延時間について、その遅延時間の小さいものから順に優先順位付けを行う手段と、
同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）
が最小になるように、クロックツリーを構成する配線を再配線する手段とを含むことを特徴とする半導体集積回路のレイアウト装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のレイアウト方法およびレイアウト装置に関し、特に、製造ばらつきによるクロックスキューの発生を考慮したレイアウトの技術に関する。
【０００２】
【従来の技術】
クロック信号を複数の同期回路セルに分配するクロックツリー方式は、クロックドライバから各同期回路セル（例えばフリップフロップ）のクロック入力端子までの遅延時間がほぼ等しくなるようにバッファツリーを構成し、クロックのスキューを抑える設計方法である。
【０００３】
しかしながら、上記手法では、チップ内の製造プロセスばらつきを考慮したタイミング設計がなされておらず、製造段階でタイミング不良品を除去するため、製造歩留まりが低下するという問題があった。
【０００４】
そこで、従来の半導体集積回路のレイアウト方法は、プロセスばらつき等で生じるクロックスキューによる誤動作回避のために、図７に示すフローのようにして対応している。
【０００５】
ステップ７０１において、フリップフロップおよびその他の論理セルを配置する。ステップ７０２において、クロックドライバを付加しつつ、フリップフロップとクロック信号線を接続する（ＣＴＳ：Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ；クロック配線処理）。ステップ７０３において、その他の論理セルとフリップフロップとを接続する。これにより、クロックツリーが形成される。
【０００６】
ステップ７０４のタイミング検証においては、その後のレイアウトデータに対し、データラインの送り側および受け側となるフリップフロップ対を考察の対象とする。それぞれのフリップフロップのクロック端子からクロックツリーを遡り、その合流点までの遅延を考慮する。この遅延に対し、製造ばらつきが原因で生じるスキューを考慮して、ホールド／セットアップエラーの有無を検証する。合流点までのクロック遅延が大きければ大きいほど、製造ばらつきにより生じるクロックスキューの絶対時間が大きくなる。このことを考慮して、タイミング検証を行う。タイミング検証により、ホールドエラーが検出された場合には、ステップ７０５において、データライン上に遅延調整素子を付加する。これにより、タイミング補償を行う。セットアップエラーについては、データラインをより高速化する等の手段で補償する（例えば、特許文献１参照）。
【０００７】
このレイアウト方法によれば、製造ばらつきを考慮した設計になっているため、製造歩留りが低下することはないとされている。
【０００８】
この従来のレイアウト方法は、チップ全体の配置配線設計済みのレイアウトデータに対するタイミング検証結果に応じて不具合箇所を補正する手法である。
【０００９】
【特許文献１】
特開平１０−３０１９８２号公報（第３頁、第１−４図）
【００１０】
【発明が解決しようとする課題】
しかしながら、上記従来のレイアウト方法では、製造ばらつきによるタイミングエラー箇所が非常に多く検出される可能性がある。特に、ホールドエラーに関しては、検出されたエラーへの対応方法は、データラインへの遅延調整素子の挿入である。そのため、多くのエラーに対応する結果、レイアウト上の空きスペースに遅延調整素子を多数配置しなければならない場合には、チップ面積や消費電力の増大を招くことになる。また、空きスペースが十分に無い場合には、再配置配線が必要となり、設計完成の遅れを招くことになる。
【００１１】
また、フリップフロップのクロック端子からクロックの合流点までの遅延が大きいほど、製造ばらつきによるスキューは大きくなることが想定される。このため、一箇所につき多数の遅延調整素子が必要になり、チップ面積、消費電力が大幅に増大する可能性がある。
【００１２】
本発明は、このような事情に鑑みて創作したものであり、データラインとその送り側および受け側となる同期回路セル対の配置および接続について、製造ばらつきを考慮した最適化を図る上で、挿入すべき遅延調整素子の数の削減を図り、チップ面積や消費電力を削減することを目的としている。
【００１３】
【課題を解決するための手段】
上記の課題を解決するために、本発明は次のような手段を講じる。
【００１４】
第１の解決手段は、レイアウト前に遅延調整素子数削減の対策を講じる。第１の解決手段として、本発明による半導体集積回路のレイアウト方法は、データラインで接続される送り側および受け側の同期回路セルとクロックドライバのレイアウト配置と、前記両同期回路セルとクロックドライバを接続する配線経路とを決定するレイアウト方法であって、前記レイアウト配置と前記配線経路とを決定するに、前記両同期回路セル間のデータライン遅延時間τＬに応じて決定することを特徴としている。
【００１５】
そして、上記の場合の好ましい態様としては、前記レイアウト配置と前記配線経路の決定を、前記データライン遅延時間τＬが相対的に小さいことを優先して、前記同期回路セル対に対するクロック分岐点からのクロック遅延時間τＣがより小さくなる条件で行うことである。さらに、前記データラインと前記同期回路セル対との接続関係を論理接続情報に反映することが好ましい。
【００１６】
これは、同期回路セル対のそれぞれについてデータライン遅延時間τＬが決まり、その大小関係による優先順位を決め、優先順位の高いものから始めて（データライン遅延時間τＬの小さいものを優先して）、クロック分岐点までのクロック信号線の形態を決め、そのような組み合わせとしてクロックツリーを構築する。端的には、データライン遅延時間τＬが小さいほどクロック遅延時間τＣがより小さくなるようにクロック分岐点を選択するものである。
【００１７】
上記構成の本発明を別の角度から記述すると、次のようにいうことができる。それは、次のような内容の複数のステップを含むものとして構成されている半導体集積回路のレイアウト方法である。
【００１８】
クロックツリーを伴う半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出するステップと、
前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行うステップと、
前記優先順位の高い順に同期回路セル対を互いに近傍に配置するステップと、
前記優先順位の高いものほどクロック分岐点が前記同期回路セル対の近傍になるようにクロックドライバを配置した上で配線を行うステップと、
配置配線後にタイミング検証を行うステップと、
タイミング検証の結果、ホールドエラーのある箇所に遅延調整素子を挿入するステップとである。
【００１９】
上記のレイアウト方法の発明は、半導体集積回路のレイアウト装置として、次のように展開することが可能である。
【００２０】
すなわち、クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出する手段と、前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行う手段と、前記優先順位の高い順に同期回路セル対を互いに近傍に配置する手段と、前記優先順位の高いものほどクロック分岐点が前記同期回路セル対の近傍になるようにクロックドライバを配置した上で配線を行う手段と、配置配線後にタイミング検証を行う手段と、タイミング検証の結果、ホールドエラーのある箇所に遅延調整素子を挿入する手段とを備えたレイアウト装置である。
【００２１】
高集積化された半導体集積回路では、すべての同期回路セル対についてクロック遅延時間τＣを削減することは困難であるが、データライン遅延時間τＬが十分に大きければ、たとえ大きなクロックスキューが発生しても、ホールドエラーの発生を抑制できる。したがって、クロック遅延時間τＣが大きくても、データライン上に遅延調整素子を挿入する必要はない。一方、データライン遅延時間τＬが相対的に小さい場合には、そのデータラインの同期回路セル対に対するクロック遅延時間τＣを、データライン遅延時間τＬの小ささに応じて小さくすれば、ホールドエラー発生の抑制の度合いが高まることになる。すなわち、
ｉｆ〔τＬ→小〕ｔｈｅｎ〔τＣ→小〕  …………（＊１）
のように模式化して考えることができる。このように、データライン遅延時間τＬに応じてレイアウト配置と配線経路の決定を行うことにより、製造ばらつきを考慮したホールドエラー回避のための遅延調整素子の数を減らすことができ、チップ面積、消費電力を削減することができる。
【００２２】
第２の解決手段は、レイアウト後に遅延調整素子数削減の対策を講じる。第２の解決手段として、本発明による半導体集積回路のレイアウト方法は、データラインで接続される送り側および受け側の同期回路セルとクロックドライバのレイアウト配置と、前記両同期回路セルとクロックドライバを接続する配線経路とを決定してあらかじめレイアウトを行い、前記レイアウトされている複数の同期回路セルの中から前記データラインに接続すべき同期回路セル対を選択するに、当該データラインの遅延時間τＬに応じて選択することを特徴としている。
【００２３】
これは、同期回路セル群およびクロックドライバの配置配線が決まりレイアウトがあらかじめなされている状態において、データライン遅延時間τＬの大小関係による優先順位を決め、優先順位の高いものから始めて（データライン遅延時間τＬの小さいものを優先して）、同期回路セル対の位置を決める。
【００２４】
そして、上記の場合の好ましい態様としては、前記データラインに接続すべき同期回路セル対の選択を、前記データライン遅延時間τＬが相対的に小さいことを優先して、前記同期回路セル対に対するクロック遅延時間τＣがより小さくなる条件で行うことである。端的には、データライン遅延時間τＬが小さいほどクロック遅延時間τＣがより小さい位置にある同期回路セル対を選択するものである。
【００２５】
上記構成の本発明を別の角度から記述すると、次のようにいうことができる。それは、次のような内容の複数のステップを含むものとして構成されている半導体集積回路のレイアウト方法である。
【００２６】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出するステップと、
前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行うステップと、
前記優先順位の高い順に同期回路セル対を前記クロックツリーの中から選択するステップとである。
【００２７】
上記のレイアウト方法の発明は、半導体集積回路のレイアウト装置として、次のように展開することが可能である。
【００２８】
すなわち、同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出する手段と、前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行う手段と、前記優先順位の高い順に同期回路セル対を前記クロックツリーの中から選択する手段とを備えたレイアウト装置である。
【００２９】
これも、
ｉｆ〔τＬ→小〕ｔｈｅｎ〔τＣ→小〕  …………（＊１）
の原則に従っている。このように、データライン遅延時間τＬに応じて同期回路セル対を選択することにより、製造ばらつきを考慮したホールドエラー回避のための遅延調整素子の数を減らすことができ、チップ面積、消費電力を削減することができる。
【００３０】
第３の解決手段として、本発明による半導体集積回路のレイアウト方法は、クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路のレイアウト方法であって、セル群が配置配線されたレイアウトデータにおいて、同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行うことを特徴としている。
【００３１】
上記構成の本発明を別の角度から記述すると、次のようにいうことができる。それは、次のような内容の複数のステップを含むものとして構成されている半導体集積回路のレイアウト方法である。
【００３２】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出するステップと、
前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行うステップと、
同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行うステップとである。
【００３３】
上記のレイアウト方法の発明は、半導体集積回路のレイアウト装置として、次のように展開することが可能である。
【００３４】
すなわち、同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出する手段と、前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行う手段と、同期回路セル間のデータライン遅延時間をτＬ、製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、同期回路セル対の再割り当てとデータラインへの再接続を行う手段とを備えたレイアウト装置である。
【００３５】
使用する同期回路セルの種類によっては、同期回路セルの出力遅延時間τＯ、ホールド時間τＨが異なるため、データライン遅延時間τＬと製造ばらつきによって生じ得るクロック分岐点から送り側および受け側同期回路セル対へのクロック遅延時間差τＳだけによる手法では十分に最適化されていない場合がある。そこで、データライン遅延時間τＬとクロック遅延時間差τＳに加えて、送り側同期回路セルの出力遅延時間τＯと受け側同期回路セルのホールド時間τＨも加味して対応する。これにより、各データラインに割り当てた同期回路セル対をさらに最適化し、遅延調整素子の削減効果を向上する。
【００３６】
第４の解決手段として、本発明による半導体集積回路のレイアウト方法は、クロック信号を複数の同期回路セルに分配するためのクロックツリーを備えた半導体集積回路のレイアウト方法であって、セル群が配置配線されたレイアウトデータにおいて、同期回路セル間のデータライン遅延時間をτＬ、クロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、クロックツリーを構成する配線を再配線することを特徴としている。
【００３７】
上記構成の本発明を別の角度から記述すると、次のようにいうことができる。それは、次のような内容の複数のステップを含むものとして構成されている半導体集積回路のレイアウト方法である。
【００３８】
同期回路セル、クロックドライバを配置配線してクロックツリーを形成するステップと、
半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出するステップと、
前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行うステップと、
同期回路セル間のデータライン遅延時間をτＬ、クロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、クロックツリーを構成する配線を再配線するステップとである。
【００３９】
上記のレイアウト方法の発明は、半導体集積回路のレイアウト装置として、次のように展開することが可能である。
【００４０】
すなわち、同期回路セル、クロックドライバを配置配線してクロックツリーを形成する手段と、半導体集積回路の論理接続情報においてデータラインで接続される同期回路セル対を検索し、各同期回路セル対間のデータラインの遅延時間τＬを算出する手段と、前記算出した各データラインの遅延時間τＬについて、その遅延時間τＬの小さいものから順に優先順位付けを行う手段と、同期回路セル間のデータライン遅延時間をτＬ、クロック遅延時間差をτＳ、送り側同期回路セルの出力遅延時間をτＯ、受け側同期回路セルのホールド時間をτＨ、全同期回路セル対についての遅延調整時間和をＳとして、
Ｓ＝Σ（τＳ−τＬ＋τＨ−τＯ）  …………（＊２）
が最小になるように、クロックツリーを構成する配線を再配線する手段とを備えたレイアウト装置である。
【００４１】
データライン遅延時間τＬの小さいデータラインが多数存在し、クロック分岐点からの遅延時間τＣが小さい同期回路セル対が少数しかない場合には、遅延時間τＬの小さいデータラインに対しクロック遅延時間τＣの大きい同期回路セル対が割り当てられている場合が起こり得る。このような場合に、クロックツリーを構成する配線を繋ぎ替えることで、クロック分岐点からの遅延時間τＣが小さい同期回路セル対を増やすことが可能となり、ホールドエラー回避のためのデータラインへ挿入すべき遅延調整素子の数をさらに削減することができる。
【００４２】
上記において、前記再配線を、前記データライン遅延時間τＬが相対的に小さいことを優先して、前記同期回路セル対に対するクロック遅延時間τＣがより小さくなる条件で行うことは、好ましい態様である。挿入すべき遅延調整素子の数のさらなる削減を可能とする。
【００４３】
【発明の実施の形態】
以下、本発明にかかわる半導体集積回路のレイアウト方法・装置の実施の形態を説明する。
【００４４】
本発明は、製造ばらつきによるホールドエラーの発生を抑えるために挿入する遅延調整素子数を削減し、面積、消費電力および設計時間を削減するレイアウト手法にかかわるものである。そこで、まず、ホールドエラーの発生条件を考察する。以下では、同期回路セルとしてフリップフロップを例に挙げる。送り側フリップフロップの出力遅延時間をτＯ、フリップフロップ間のデータライン遅延時間をτＬ、クロックスキューをτＳ、受け側フリップフロップのホールド時間をτＨとして、
τＯ＋τＬ＜τＳ＋τＨ  ………（式１）
がホールドエラーの発生条件である。（式１）において、フリップフロップの出力遅延τＯ、ホールド時間τＨを一定とする。そして、
τＯ−τＨ＝Ｔ０  ………（式２）
として、
τＳ−τＬ＞Ｔ０  ………（式３）
書き換えると、
τＳ＞τＬ＋Ｔ０  ………（式４）
これがホールドエラーの発生条件である。
【００４５】
製造ばらつきを考慮した場合にホールドエラーが発生しやすい状況は、以下の２つの場合である。
【００４６】
一つは、フリップフロップ間のデータライン遅延時間τＬが相対的に小さい場合である。（式４）によると、この場合は、わずかなクロックスキューτＳによってもホールドエラーが発生しやすくなる。データライン遅延時間τＬが小さいほど（式４）が成立しやすくなるからである。
【００４７】
もう一つは、クロックスキューτＳが大きい場合である。クロックスキューτＳが大きいほど（式４）が成立しやすくなるからである。
【００４８】
設計段階でクロックスキューτＳはゼロになるように設計されている。それでも、製造のばらつきによってはクロックスキューは発生し得る。製造ばらつきによってクロックスキューτＳが大きくなる条件は、フリップフロップ対のそれぞれのクロック端子からクロック信号線を遡った合流点（クロック分岐点）までのクロック遅延時間τＣが一定以上に大きくなることである。これは、製造ばらつき率が同じであっても、クロック分岐点からフリップフロップまでのクロック遅延時間τＣが相対的に大きい場合の方が、製造ばらつきによって生じるクロックスキューτＳの絶対時間が大きくなるためである。
【００４９】
以上のことから、ホールドエラー抑制の条件は、次のようになる。（式４）を否定すると、
τＳ≦τＬ＋Ｔ０  ………（式５）
ということになる。
【００５０】
そこで、フリップフロップ対に挟まれているデータライン遅延時間τＬを大きくするか、または、できる限りクロックスキューτＳを削減すればよいことになる。データライン遅延時間τＬが大きいほど（式５）が成立しやすくなるからである。また、クロックスキューτＳが小さいほど、（式５）が成立しやすくなる。
【００５１】
フリップフロップ対について、クロック分岐点からの遅延時間τＣはクロックスキューτＳに相関する。そこで、（式５）のクロックスキューτＳに代えて、クロック分岐点からフリップフロップまでのクロック遅延時間τＣを用い、Ｔ０に代えてＴ０′を用いて表現すると、
τＣ≦ｋ・τＬ＋Ｔ０′  ………（式６）
となる（∵τＳ≒ｋ・τＣ）。これもホールドエラー抑制の条件である。フリップフロップ対に挟まれているデータライン遅延時間τＬを大きくするか、または、できる限りクロック遅延時間τＣを削減すればよいことになる。クロック遅延時間τＣが小さいほど（式６）が成立しやすくなるからである。
【００５２】
高集積化されたＬＳＩでは、クロック遅延時間τＣを削減することは非常に困難である。しかしながら、例えば、データライン遅延時間τＬが十分に大きければ、たとえ大きなクロックスキューτＳが発生しても、（式５）より、ホールドエラーの発生を抑制できる。つまり、このような箇所に対しては、（式６）より、クロック分岐点からの遅延時間τＣが大きくても、データライン上に遅延調整素子を挿入する必要はない。
【００５３】
したがって、挿入する遅延調整素子数を削減するためには、データライン遅延時間τＬが相対的に小さい場合に、そのデータラインの入出力フリップフロップ対に入力されるクロック信号のクロック分岐点からの遅延時間τＣを充分に小さくすればよいことになる。
【００５４】
なお、データライン遅延時間τＬが大きい場合には、対応可能な箇所のクロック遅延時間τＣを削減しておけば、これは、セットアップ時間に対するマージンとなる。
【００５５】
以下、本発明の実施の形態を具体的レベルで説明する。
【００５６】
（実施の形態１）
実施の形態１は、レイアウト前に遅延調整素子数削減の対策を講じるものである。図１は、本発明の実施の形態１における半導体集積回路のレイアウト方法を説明するフローチャートである。
【００５７】
まず、ステップ１０１において、集積回路の論理接続情報から全てのフリップフロップ対を検索し、各々のフリップフロップ対の間に存在する組み合わせ回路によって構成されているデータライン遅延時間τＬを算出する。論理接続情報は論理合成によって生成される場合が多いが、その場合は、論理合成の結果からデータライン遅延時間τＬを簡単に求めることができる。
【００５８】
次に、ステップ１０２において、ステップ１０１によって求めた各々のデータライン遅延時間τＬに基づき、データライン遅延時間τＬの小さい順に、次ステップ１０３の処理の優先度が高くなるよう順位付けを行う。データライン遅延時間τＬの小さいものを優先するというのは、（式４）から明かなように、ホールドエラーが発生しやすいものを選んでいるということである。
【００５９】
ステップ１０３において、ステップ１０２で決定された優先順位に基づいて、フリップフロップの配置を行う。この際、優先順位が高くホールドエラーを起こしやすい順にデータラインの入出力フリップフロップ対を互いに近傍に配置するようにする。
【００６０】
ステップ１０４において、後工程でブロック内の自動配線を行う際の入力データとなる論理接続情報に対し、接続すべきデータラインとフリップフロップ対に関する情報を反映させる。
【００６１】
さらにステップ１０５において、ステップ１０３で配置されたフリップフロップ対へのクロック分配のためのクロック分岐点がフリップフロップ対の近傍になるようにクロックドライバを配置する。すなわち、クロック分岐点からフリップフロップ対までのクロック遅延時間τＣが短くなるようにクロックドライバを配置する。通常は、クロックドライバをフリップフロップ対の近傍に配置することで、上記の目的を実現することができる。
【００６２】
ステップ１０６において、フリップフロップ、クロックドライバ以外の論理セルを配置する。そして、ステップ１０７において、必要なクロックドライバを適宜追加しながら、クロックツリーを生成する（ＣＴＳ：Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ；クロック配線処理）。
【００６３】
さらにステップ１０８において、ステップ１０４で生成した論理接続情報に基づいて、論理セル、フリップフロップを配線する。
【００６４】
全ての配線接続が完了した後、ステップ１０９において、ステップ１０８までに生成したレイアウトデータに対し、製造ばらつきを考慮したタイミング検証を実施する。そして、ステップ１１０において、検証結果に基づいて、ホールドエラー回避のための遅延調整素子を挿入する。
【００６５】
次に、上述したレイアウト設計手法を用いて、フリップフロップ、クロックドライバ、その他の論理セルを配置配線した例について図示する。
【００６６】
図２（ａ）は、従来のレイアウト設計手法によりクロックツリーとフリップフロップおよびデータラインを設計した場合の回路図の一部を示した模式図、図２（ｂ）は、タイミング検証結果に基づき、従来の設計に対してタイミング補正をかけた後の回路図の一部を示した模式図である。また図３は、図１のフローチャートに従って、フリップフロップ、クロックドライバを配置し、クロックツリーを生成した場合の回路図の一部を示した模式図である。これらの図においては、フリップフロップ間のデータラインの遅延時間τＬの大きさが矩形面積に比例するように表現されている。
【００６７】
図２では、フリップフロップ２０１，２０２間のデータライン２０３の遅延時間τＬが大きいことから遅延調整素子が不要となる。図２（ｂ）では、フリップフロップ２０１，２０２間に遅延調整素子は挿入されていない。
【００６８】
一方、フリップフロップ２０４，２０５に関しては、データライン２０６の遅延時間τＬが小さく、また、入出力フリップフロップ対（２０４，２０５）のクロック分岐点２０７は比較的離れていて、クロック遅延時間τＣが大きくなっている。つまり、分岐後のクロック段数が大きくなっている。そのため、クロック信号の製造ばらつきによるクロックスキューτＳが大きくなる可能性がある。遅延時間τＬが小さく、かつクロックスキューτＳが大きいときは、（式５）が成立しにくく、したがって、タイミング補償のために、図２（ｂ）に示すように、フリップフロップ２０４，２０５間に多くの遅延調整素子２０８の挿入が必要になる。これは、本発明以前の対応に相当する。
【００６９】
一方、本発明の実施の形態１を適用する場合には、図３に示すように、フリップフロップ３０１，３０２間のデータライン３０３の遅延時間τＬは大きく、フリップフロップ３０４，３０５のデータライン３０６の遅延時間τＬは小さい。したがって、図１のステップ１０２〜１０５の論理に従うと、遅延時間τＬのより小さい方のフリップフロップ３０４，３０５が優先され、入出力フリップフロップ対（３０４，３０５）は、クロック分岐点３０７に対して近接配置される。これに対して、遅延時間τＬのより大きい方の入出力フリップフロップ対（３０１，３０２）は、より遠いクロック分岐点３０８に接続されるように配置される。
【００７０】
フリップフロップ３０１，３０２間のデータライン３０３については、その遅延時間τＬが大きいことから遅延調整素子は不要である。
【００７１】
一方、フリップフロップ３０４，３０５のデータライン３０６に関しては、その遅延時間τＬは小さく、ホールドエラーの発生する可能性はあるが、入出力フリップフロップ対（３０４，３０５）のクロック分岐点３０７は近接していて、クロック遅延時間τＣが小さくなっている。つまり、分岐後のクロック段数が小さくなっている。そのため、クロック信号の製造ばらつきによるクロックスキューτＳは小さい。遅延時間τＬは小さいが、クロック遅延時間τＣも小さいので、（式６）の成立のしにくさは、その度合いが低く、タイミング補償のために遅延調整素子３０９の挿入を必要とするが、その挿入数は少なく抑えることが可能となる。
【００７２】
（実施の形態２）
本実施の形態２は、すでにクロックツリーが構成されている場合に遅延調整素子の挿入数を削減するものである。
【００７３】
図４は、本発明の実施の形態２について、半導体集積回路の設計方法の処理フローを説明するフローチャートである。
【００７４】
ステップ４０１において、フリップフロップ、その他の論理セルを配置し、ステップ４０２において、クロックドライバを付加しながらフリップフロップ、クロックドライバを配線し、クロックツリーを構成する。
【００７５】
ステップ４０３において、集積回路の論理接続情報から全てのフリップフロップ対を検索し、各々のフリップフロップ対の間に存在する組み合わせ回路によるデータライン遅延時間τＬを算出する。論理接続情報は論理合成によって生成される場合が多く、その場合は、データライン遅延時間τＬを論理合成の結果より簡単に求めることができる。
【００７６】
次に、ステップ４０４において、ステップ４０３によって求めた各々のデータライン遅延時間τＬに基づき、データライン遅延時間τＬの小さい順に、次ステップ４０５の処理の優先度が高くなるよう順位付けを行う。これは、実施の形態１の場合と同様に、（式６）に基づいて、ホールドエラーが発生しやすいのはデータライン遅延時間τＬがより小さい、という論理を適用するためである。
【００７７】
ステップ４０５において、ステップ４０４で決定された優先順位に基づいて、各データラインの入出力フリップフロップをクロックツリーの中から選択する。この際、優先順位が高くホールドエラーを起こしやすい順に、クロック分岐点からのクロック遅延が小さいフリップフロップ対を選択する。つまり、その選択したフリップフロップ対を、当該のデータラインの入出力フリップフロップ対とする。
【００７８】
図５にステップ４０５の適用による効果を表す模式図を示す。３つのデータライン５０１，５０２，５０３それぞれの遅延時間τＬについて、データライン５０１，５０２，５０３の順に遅延時間τＬが小さいとする。すると、ステップ４０５の処理においては、遅延時間τＬが一番小さいデータライン５０１の優先度が最も高い。これにより、データライン５０１の入出力フリップフロップ対としては、クロック分岐点５０４からのクロック遅延時間τＣが小さいフリップフロップ対（５０７，５０８）が優先的に割り当てられる。
【００７９】
次に優先順位の高いデータライン５０２には、フリップフロップ対（５０９，５０７）が割り当てられ、最も優先順の低いデータライン５０３には、クロック分岐点５０６からのクロック遅延時間τＣが大きいフリップフロップ対（５１０，５１１）が割り当てられる。
【００８０】
このようにステップ４０５を適用するのは、ホールドエラーを抑えるための遅延調整素子数を削減するためである。
【００８１】
次いで、ステップ４０６において、後工程でブロックの自動配線を行う際の入力データとなる論理接続情報に対し、各データラインとレイアウト上のフリップフロップ対の接続関係情報を反映させる。
【００８２】
ステップ４０７において、ステップ４０５で各データラインに割り当てたフリップフロップ対をさらに最適化し、遅延調整素子を削減する。例えば、使用するフリップフロップの種類によっては、フリップフロップの出力遅延時間、ホールド時間が異なるため、ステップ４０５の手法のみでは十分に最適化されていない場合がある。
【００８３】
ステップ４０７において、ホールドエラー発生条件を示した（式１）を用い、データライン毎に、
τＤ＝τＳ−τＬ＋τＨ−τＯ  ………（式７）
を算出する。これは、（式１）の右辺から左辺を減算したものに相当する。この算出結果が各データラインに必要な遅延調整時間τＤとなる。
【００８４】
τＤ＞０  ………（式８）
がホールドエラーの発生条件になる。
【００８５】
（式７）において、クロックスキューτＳに代えてクロック分岐点からのクロック遅延時間τＣで捉える場合には、遅延調整時間をτＤ′として、
τＤ′＝ｋ・τＣ−τＬ＋τＨ−τＯ  ………（式９）
となる。また、（式８）に代えて、
τＤ′＞０  ………（式１０）
となる。
【００８６】
この遅延調整時間τＤ′を全データラインについて算出した結果の和Ｓ、すなわち、
Ｓ＝ΣτＤ′＝Σ（ｋ・τＣ−τＬ＋τＨ−τＯ）  ………（式１１）
が最小になるように、各データラインの入出力フリップフロップ対の再割り当てを行う。但し、各データラインでの算出結果が負になった場合は、遅延調整素子の挿入が不要なため、加算対象とはしない。
【００８７】
次いで、ステップ４０８において、その他の論理セルをステップ４０６で生成した論理接続情報に基づいて配線した後、さらにステップ４０９において、クロックツリーの構成を最適化する。これにより、遅延調整素子を削減する。
【００８８】
例えば、データライン遅延時間τＬの小さいデータラインが多数存在し、クロック分岐点からの遅延時間τＣが小さい入出力フリップフロップ対が少数しかない場合には、ステップ４０７までの工程で、データライン遅延時間τＬの小さいデータラインに対し、クロック遅延時間τＣの大きい入出力フリップフロップ対が割り当てられている場合が存在することになり、この場合には、ホールドエラー回避のため、データラインへの遅延調整素子の挿入が必要となる。
【００８９】
しかしながら、クロックツリーを構成する配線を繋ぎ替えることで、クロック分岐点からの遅延時間τＣが小さい入出力フリップフロップ対を増やすことができる。
【００９０】
図６にステップ４０９の適用による、クロックツリーの構成の差と、その効果を表す模式図を示す。
【００９１】
図６（ａ）において、データライン６０１〜６０５の遅延時間τＬが小さく遅延調整素子を挿入する必要があるとする。フリップフロップ対（６０６，６０７）、（６０８，６０９）、（６１１，６１２）は、クロック分岐点６１８，６１９，６２２からのクロック遅延時間τＣが小さく、製造ばらつきによるクロックスキューτＳは、遅延調整素子一つ分に相当するとする。この場合、データライン６０１，６０３，６０５には、遅延調整素子６１３，６１５，６１７をそれぞれ一つずつ挿入すればよい。
【００９２】
フリップフロップ対（６０７，６０８）、（６１０，６１１）は、クロック分岐点６２０，６２３からのクロック遅延時間τＣが大きく、製造ばらつきによるクロックスキューτＳは、遅延調整素子二つ分に相当するとする。この場合、データライン６０２，６０４には、二つずつの遅延調整素子６１４ａ，６１６ａのように挿入する必要がある。
【００９３】
一方、ステップ４０９によりクロックツリーを構成する配線を繋ぎ替えると、図６（ｂ）のようになる。フリップフロップ対（６０７，６０８）のクロック分岐点をフリップフロップ対（６０６，６０７）と同じクロック分岐点６１８に繋ぎ替え、フリップフロップ対（６１０，６１１）のクロック分岐点をフリップフロップ対（６１１，６１２）と同じクロック分岐点６２２に繋ぎ替えている。これにより、各フリップフロップ対のクロック分岐点からの遅延時間τＣを小さくすることができる。その結果、製造ばらつきによるクロックスキューτＳも小さくなるため、データライン６０２，６０４には、一つ分相当の遅延調整素子６１４，６１６を挿入するだけでよく、挿入すべき遅延調整素子数を削減することができる。
【００９４】
なお、上記では、ステップ４０５，４０７，４０９を一連のフローチャートで説明したが、それぞれのステップを単独で実施しても遅延調整素子の削減効果がある。
【００９５】
また、実施の形態１で説明した方法によって生成したクロックツリーに対しても、ステップ４０５，４０７，４０９を適用することで、遅延調整素子の削減が可能であることはもちろんである。
【００９６】
【発明の効果】
以上説明したように本発明は、データライン遅延時間が相対的に小さい場合には同期回路セルからクロックの合流点までのクロック遅延時間が短くなるように構成することにより、製造ばらつきを考慮したホールドエラー回避のために挿入すべき遅延調整素子の数を減らすことができ、チップ面積、消費電力を削減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１における半導体集積回路のレイアウト方法を説明するフローチャート
【図２】従来のレイアウト設計手法によりクロックツリーとフリップフロップおよびデータラインを設計した場合の回路図の一部を示した模式図
【図３】本発明の実施の形態１における半導体集積回路のレイアウト方法に従って、フリップフロップ、クロックドライバを配置し、クロックツリーを生成した場合の回路図の一部を示した模式図
【図４】本発明の実施の形態２における半導体集積回路のレイアウト方法を説明するフローチャート
【図５】本発明の実施の形態２における半導体集積回路のレイアウト方法の適用による効果を表した模式図
【図６】本発明の実施の形態２における半導体集積回路のレイアウト方法の適用によるクロックツリーの構成差と、その効果を表した模式図
【図７】従来の半導体集積回路設計方法の処理フローを示すフローチャート
【符号の説明】
２０１，２０２，２０４，２０５  フリップフロップ
２０３，２０６  データライン
２０７  クロック分岐点
２０８  遅延調整素子
３０１，３０２，３０４，３０５  フリップフロップ
３０３，３０６  データライン
３０７，３０８  クロック分岐点
３０９  遅延調整素子
５０１〜５０３  データライン
５０４〜５０６  クロック分岐点
５０７〜５１１  フリップフロップ
【図１】
2005004496.tif 000003
【図２】
2005004496.tif 000004
【図３】
2005004496.tif 000005
【図４】
2005004496.tif 000006
【図５】
2005004496.tif 000007
【図６】
2005004496.tif 000008
【図７】
2005004496.tif 000009