(57)【要約】      （修正有）【課題】半導体集積回路のクロック設計において、異なる２種類のクロック間の「セル遅延と配線遅延の比率α」の差を抑制する。【解決手段】半導体集積回路は、第１クロック（ＣＬＫ１）が供給される第１素子群と、第１クロック（ＣＬＫ１）と異なる第２クロック（ＣＬＫ２）が供給される第２素子群と、を備える。クロック設計方法は、第１クロック（ＣＬＫ１）に関するクロックツリーシンセシスを実施することによって、第１クロックツリー構造１０を作成するステップと、第１クロックツリー構造１０の少なくとも一部を流用することによって、第２素子群に第２クロック（ＣＬＫ２）を供給する第２クロックツリー構造２０を作成するステップと、を含む。【選択図】図２
2013038155.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路のクロック設計方法であって、
前記半導体集積回路は、
第１クロックが供給される第１素子群と、
前記第１クロックと異なる第２クロックが供給される第２素子群と
を備え、
前記クロック設計方法は、
前記第１クロックに関するクロックツリーシンセシスを実施することによって、第１クロックツリー構造を作成するステップと、
前記第１クロックツリー構造の少なくとも一部を流用することによって、前記第２素子群に前記第２クロックを供給する第２クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項２】
請求項１に記載のクロック設計方法であって、
前記第１クロックツリー構造を作成するステップは、
前記第１素子群の位置情報を用いてクロックツリーシンセシスを実施し、前記第１クロックのルートバッファから前記第１素子群へのクロックツリー構造を前記第１クロックツリー構造として作成するステップ
を含む
クロック設計方法。
【請求項３】
請求項２に記載のクロック設計方法であって、
前記第２クロックツリー構造を作成するステップは、
前記第１クロックツリー構造のうち前記ルートバッファから最終段バッファまでの構造をコピーするステップと、
前記コピーされた構造の前記最終段バッファと前記第２素子群との間を配線でつなぐステップと、
前記第２素子群への前記第２クロックの供給に不要な部分を前記コピーされた構造から削除することによって、前記第２クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項４】
請求項１に記載のクロック設計方法であって、
前記第１クロックツリー構造を作成するステップは、
前記第１素子群の分布を反映した複数の代表点を決定するステップと、
前記複数の代表点の位置情報を用いてクロックツリーシンセシスを実施し、前記第１クロックのルートバッファから前記複数の代表点へのクロックツリー構造を前記第１クロックツリー構造として作成するステップと
を含む
クロック設計方法。
【請求項５】
請求項４に記載のクロック設計方法であって、
前記第２クロックツリー構造を作成するステップは、
前記第１クロックツリー構造の末端と前記第２素子群との間を配線でつなぐステップと、
前記第２素子群への前記第２クロックの供給に不要な部分を前記第１クロックツリー構造から削除することによって、前記第２クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項６】
請求項１乃至５のいずれか一項に記載のクロック設計方法であって、
前記第１素子群を包含する最小矩形領域の面積は、前記第２素子群を包含する最小矩形領域の面積よりも大きい
クロック設計方法。
【請求項７】
請求項１乃至６のいずれか一項に記載のクロック設計方法をコンピュータに実行させる
クロック設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のクロック設計技術に関する。
【背景技術】
【０００２】
半導体集積回路のクロック設計において、「クロックツリーシンセシス（ＣＴＳ：Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ）」が広く使用されている（例えば特許文献１参照）。クロックツリーシンセシスによれば、レイアウト領域内に散在する複数の素子（典型的にはフリップフロップ）間のクロックスキューが低減されるように、クロック配線がツリー状に設計される。ＣＴＳによって得られるツリー状のクロック配線構造は、以下、「クロックツリー構造」と参照される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２２２８６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本願発明者は、次の点に初めて着目した。
【０００５】
同一半導体集積回路内で使用される遅延の異なる２種類のクロックを考える。遅延が比較的大きい方が第１クロックであり、遅延が比較的小さい方が第２クロックであるとする。この場合、ＣＴＳにおいて、第１クロックと第２クロックの間で遅延を合わせることが望ましい。市販の自動レイアウトツールの場合、第２クロックの遅延を増加させて第１クロックの遅延に合わせるために、第２クロックの方のクロックツリー構造に多数のバッファが挿入される。場合によっては、第２クロックのクロックツリー構造に挿入されるバッファ段数は１００以上にもなる。
【０００６】
ここで、各クロックツリー構造に関して、「セル遅延と配線遅延の比率α」というパラメータを考える。第２クロックのクロックツリー構造に多数のバッファが挿入されると、第２クロックに関する比率αが大きく変動する。このことは、第１クロックと第２クロックとの間の比率αの差が大きくなることを意味する。比率αが大きく異なる第１クロックと第２クロックとの間でデータ転送がある場合、静的タイミング解析（ＳＴＡ：Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）における検証コーナーを増やす必要がある。ＳＴＡにおける検証コーナーの増加は、設計コストの増加、チップ面積の増加、性能の低下を引き起こす。
【課題を解決するための手段】
【０００７】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００８】
本発明の１つの観点において、半導体集積回路のクロック設計方法が提供される。半導体集積回路は、第１クロック（ＣＬＫ１）が供給される第１素子群（１１）と、第１クロック（ＣＬＫ１）と異なる第２クロック（ＣＬＫ２）が供給される第２素子群（２１）と、を備える。クロック設計方法は、第１クロック（ＣＬＫ１）に関するクロックツリーシンセシスを実施することによって、第１クロックツリー構造（１０）を作成するステップと、第１クロックツリー構造（１０）の少なくとも一部を流用することによって、第２素子群（２１）に第２クロック（ＣＬＫ２）を供給する第２クロックツリー構造（２０）を作成するステップと、を含む。
【０００９】
本発明の他の観点において、上記のクロック設計方法をコンピュータに実行させるクロック設計プログラム（ＰＲＯＧ）が提供される。
【発明の効果】
【００１０】
本発明のクロック設計技術によれば、異なる２種類のクロック間の比率αの差が抑制される。その結果、ＳＴＡにおける検証コーナーの増加が防止される。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施の形態における第１クロックと第２クロックの関係の一例を示す概念図である。
【図２】図２は、本発明の実施の形態に係るクロック設計方法の概要を示す概念図である。
【図３】図３は、本発明の実施の形態における第１クロックと第２クロックの関係の他の例を示す概念図である。
【図４】図４は、本発明の第１の実施の形態に係るクロック設計方法を示すフローチャートである。
【図５】図５は、第１の実施の形態におけるクロック設計方法を説明するための図である。
【図６】図６は、第１の実施の形態におけるクロック設計方法を説明するための図である。
【図７】図７は、第１の実施の形態におけるクロック設計方法を説明するための図である。
【図８】図８は、第１の実施の形態におけるクロック設計方法を説明するための図である。
【図９】図９は、第１の実施の形態におけるクロック設計方法を説明するための図である。
【図１０】図１０は、本発明の第２の実施の形態に係るクロック設計方法を示すフローチャートである。
【図１１】図１１は、第２の実施の形態におけるクロック設計方法を説明するための図である。
【図１２】図１２は、第２の実施の形態におけるクロック設計方法を説明するための図である。
【図１３】図１３は、第２の実施の形態におけるクロック設計方法を説明するための図である。
【図１４】図１４は、第２の実施の形態におけるクロック設計方法を説明するための図である。
【図１５】図１５は、本発明の実施の形態に係るクロック設計システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００１２】
添付図面を参照して、本発明の実施の形態を説明する。
【００１３】
１．概要
本発明の実施の形態では、同一の半導体集積回路（半導体チップ）内で複数種類の異なるクロックが使用される。ここでは、２種類の異なるクロック、第１クロックＣＬＫ１と第２クロックＣＬＫ２を考える。第１クロックＣＬＫ１は、半導体集積回路の第１素子群（典型的にはフリップフロップ）に供給される。第２クロックＣＬＫ２は、半導体集積回路の第２素子群（典型的にはフリップフロップ）に供給される。
【００１４】
図１は、第１クロックＣＬＫ１と第２クロックＣＬＫ２の関係の一例を示す概念図である。第１クロック領域ＲＥＣ１は、第１クロックＣＬＫ１が供給される領域であり、第１素子群を包含する最小の矩形領域として定義される。同様に、第２クロック領域ＲＥＣ２は、第２クロックＣＬＫ２が供給される領域であり、第２素子群を包含する最小の矩形領域として定義される。本実施の形態によれば、第１クロック領域ＲＥＣ１の面積は、第２クロック領域ＲＥＣ２の面積よりも大きい。このことは、典型的には、半導体チップ中の第１素子の数が第２素子の数よりも多く、第１素子群の駆動負荷が第２素子群の駆動負荷よりも重いことを意味する。従って、何の調整も行われなければ、第１クロックＣＬＫ１の遅延は第２クロックＣＬＫ２の遅延よりも大きくなる傾向にある。
【００１５】
図１に示される例では、第２クロック領域ＲＥＣ２は、第１クロック領域ＲＥＣ１に完全に包含されている。例えば、第１クロックＣＬＫ１は、半導体チップ全体に行き渡るシステムクロックであり、第２クロックＣＬＫ２は、メモリ動作等の特殊な用途に使用されるローカルクロックである。
【００１６】
図２を参照して、本実施の形態に係るクロック設計方法の概要を説明する。
【００１７】
ステップＳ１０：
まず、第１クロック領域ＲＥＣ１の第１クロックＣＬＫ１に関してクロックツリーシンセシス（ＣＴＳ）が実施される。これにより、第１クロックＣＬＫ１に関連する第１クロックツリー構造１０が作成される。
【００１８】
ステップＳ２０：
続いて、第２クロック領域ＲＥＣ２の第２素子群に第２クロックＣＬＫ２を供給するための第２クロックツリー構造２０が作成される。ここで、第２クロックツリー構造２０を作成するために、第２素子群に対するＣＴＳは実施されない。その代わりに、上記ステップＳ１０で得られた第１クロックツリー構造１０と同じ構造の少なくとも一部が、第２クロックツリー構造２０として用いられる。具体的には、図２に示されるように、第１クロックツリー構造１０と同じ構造のうち第２クロック領域ＲＥＣ２へのクロック供給に必要な部分が、第２クロックツリー構造２０として採用される。
【００１９】
このように、本実施の形態によれば、第１クロックツリー構造１０の少なくとも一部を流用することにより、第２クロックツリー構造２０が作成される。従って、各クロックツリー構造に関して「セル遅延と配線遅延の比率α」というパラメータを考えたとき、第１クロックＣＬＫ１と第２クロックＣＬＫ２との間の比率αの差が抑制される。その結果、第１クロックＣＬＫ１と第２クロックＣＬＫ２との間でデータ転送がある場合にＳＴＡにおける検証コーナーが増加する、という問題が解消される。ＳＴＡにおける検証コーナーの増加が防止されるため、設計コストの増加、チップ面積の増加、性能の低下といった問題も防止される。
【００２０】
更に、第１クロックツリー構造１０が第２クロックツリー構造２０に流用されるため、結果的に、第１クロックＣＬＫ１の遅延と第２クロックＣＬＫ２の遅延がほぼ一致することになる。すなわち、本実施の形態によれば、異なる２種類のクロック間で、比率αの差を抑制しながら遅延も合わすことが可能となる。
【００２１】
尚、図１の例では、第２クロック領域ＲＥＣ２が第１クロック領域ＲＥＣ１に完全に包含されているが、図３に示されるように、第１クロック領域ＲＥＣ１と第２クロック領域ＲＥＣ２が部分的にオーバーラップしていてもよい。第１クロックツリー構造１０の一部を第２クロックツリー構造２０に流用可能で有る限り、本発明を適用することができる。
【００２２】
以下、本発明の実施の形態を更に詳しく説明する。
【００２３】
２．第１の実施の形態
図４は、本発明の第１の実施の形態に係るクロック設計方法を示すフローチャートである。図５は、クロック設計対象の半導体チップの一例を概念的に示している。その半導体チップは、第１クロックＣＬＫ１が供給される第１素子群１１と、第２クロックＣＬＫ２が供給される第２素子群２１を備えている。図５に示される半導体チップの例を用いて、第１の実施の形態に係るクロック設計方法を説明する。
【００２４】
ステップＳ１０：
第１の実施の形態では、ステップＳ１０は、次のステップＳ１１を含んでいる。
【００２５】
ステップＳ１１：
第１素子群１１の位置情報を参照することにより、第１素子群１１に対するＣＴＳが実施される。その結果、図６に示されるように、第１クロックＣＬＫ１のルートバッファから第１素子群１１（末端）へのクロックツリー構造が作成される。このクロックツリー構造が、第１クロックツリー構造１０として用いられる。
【００２６】
ステップＳ２０：
第１の実施の形態では、ステップＳ２０は、次のステップＳ２１〜Ｓ２３を含んでいる。
【００２７】
ステップＳ２１：
図６で示される第１クロックツリー構造１０のうち、第１クロックＣＬＫ１のルートバッファから最終段バッファ１２までの構造がコピーされる。コピーされた構造は、以下、「コピークロックツリー構造１０’」と参照される。図７に示されるように、コピークロックツリー構造１０’がチップ領域に配置される。この時、コピークロックツリー構造１０’は、第１クロックツリー構造１０から少しずらして配置される。コピークロックツリー構造１０’は、第１クロックツリー構造１０の最終段バッファ１２に相当する最終段バッファ１２’を有している。
【００２８】
ステップＳ２２：
第２クロックＣＬＫ２に関連する第２素子群２１の近傍には、上記のコピークロックツリー構造１０’の最終段バッファ１２’が存在している。図８に示されるように、コピークロックツリー構造１０’の最終段バッファ１２’と第２素子群２１との間が配線２５で接続される。
【００２９】
ステップＳ２３：
最後に、図９に示されるように、第２素子群２１への第２クロックＣＬＫ２の供給に不要な部分（枝）が、コピークロックツリー構造１０’から削除される。削除の結果残った構造が、第２クロックツリー構造２０として用いられる。このように、第１クロックツリー構造１０の一部を流用することにより、第２クロックツリー構造２０が作成される。
【００３０】
３．第２の実施の形態
図１０は、本発明の第２の実施の形態に係るクロック設計方法を示すフローチャートである。既出の図５に示される半導体チップの例を用いて、第２の実施の形態に係るクロック設計方法を説明する。
【００３１】
ステップＳ１０：
第２の実施の形態では、ステップＳ１０は、次のステップＳ１２、Ｓ１３を含んでいる。
【００３２】
ステップＳ１２：
第２の実施の形態では、第１クロックツリー構造１０の作成にあたり、第１素子群１１そのものに対するＣＴＳは実施されない。その代わりに、図１１に示されるような、第１素子群１１の分布を反映した複数の代表点１５が用いられる。そのため、ステップＳ１２では、第１素子群１１の位置情報等を参照することにより、第１素子群１１の分布を反映した複数の代表点１５が決定される。
【００３３】
例えば図１１に示されるように、第１クロック領域ＲＥＣ１が、マトリックス状の複数の分割領域ＤＩＶに分割される。そして、各分割領域ＤＩＶ毎に代表点１５が決定される。例えば、各分割領域ＤＩＶに含まれる第１素子１１の平均位置が、代表点１５として用いられる。あるいは、単純に、各分割領域ＤＩＶの中心位置が、代表点１５として用いられてもよい。
【００３４】
ステップＳ１３：
上記ステップＳ１２で得られた複数の代表点１５の位置情報を参照することにより、複数の代表点１５に対するＣＴＳが実施される。その結果、図１２に示されるように、第１クロックＣＬＫ１のルートバッファから複数の代表点１５（末端）へのクロックツリー構造が作成される。このクロックツリー構造が、第１クロックツリー構造１０として用いられる。
【００３５】
ステップＳ２０：
第２の実施の形態では、ステップＳ２０は、次のステップＳ２４、Ｓ２５を含んでいる。
【００３６】
ステップＳ２４：
第２クロックＣＬＫ２に関連する第２素子群２１の近傍には、上記の第１クロックツリー構造１０の末端（代表点１５）が存在している。図１３に示されるように、第１クロックツリー構造１０の末端（代表点１５）と第２素子群２１との間が配線２５で接続される。
【００３７】
ステップＳ２５：
最後に、図１４に示されるように、第２素子群２１への第２クロックＣＬＫ２の供給に不要な部分（枝）が、第１クロックツリー構造１０から削除される。削除の結果残った構造が、第２クロックツリー構造２０として用いられる。このように、第１クロックツリー構造１０の一部を流用することにより、第２クロックツリー構造２０が作成される。
【００３８】
尚、第２の実施の形態では、第１素子群１１に第１クロックＣＬＫ１を供給するためのクロックツリー構造は、ＣＴＳにより別途作成される。
【００３９】
４．クロック設計システム
以上に説明された本実施の形態に係るクロック設計処理は、コンピュータシステム（クロック設計システム）により実現され得る。図１５は、本実施の形態に係るクロック設計処理を実行するクロック設計システム１００の構成例を示すブロック図である。クロック設計システム１００は、処理装置１０１と記憶装置１０２を備えている。処理装置１０１は、ＣＰＵを含む。記憶装置１０２は、ＲＡＭやＨＤＤを含む。
【００４０】
記憶装置１０２には、位置情報ＬＯＣ、第１クロックツリー構造情報ＣＴ１、第２クロックツリー構造情報ＣＴ２、等が格納される。位置情報ＬＯＣは、半導体チップ内の第１素子群１１、第２素子群１２、代表点１５の位置（図５、図１１参照）を示す情報である。第１クロックツリー構造情報ＣＴ１は、上記ステップＳ１０で作成される第１クロックツリー構造１０の情報である。第２クロックツリー構造情報ＣＴ２は、上記ステップＳ２０で作成される第２クロックツリー構造２０の情報である。
【００４１】
また、記憶装置１０２は、クロック設計プログラムＰＲＯＧが格納される。クロック設計プログラムＰＲＯＧは、本実施の形態に係るクロック設計処理をコンピュータ（処理装置１０１）に実行させるコンピュータプログラムである。クロック設計プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
【００４２】
処理装置１０１は、第１クロックツリー構造作成部１１０、第２クロックツリー構造作成部１２０といった機能ブロックを備えている。これら機能ブロックは、処理装置１０１がクロック設計プログラムＰＲＯＧを実行することにより実現される。各機能ブロックは、記憶装置１０２から必要なデータを読み出し、所定のデータ処理を実行し、作成したデータを記憶装置１０２に格納する。具体的には、第１クロックツリー構造作成部１１０は、上記のステップＳ１０を実行する。つまり、第１クロックツリー構造作成部１１０は、位置情報ＬＯＣを参照して第１クロックツリー構造１０を作成し、第１クロックツリー構造情報ＣＴ１を作成する。また、第２クロックツリー構造作成部１２０は、上記のステップＳ２０を実行する。つまり、第２クロックツリー構造作成部１２０は、位置情報ＬＯＣ及び第１クロックツリー構造情報ＣＴ１を参照して第２クロックツリー構造２０を作成し、第２クロックツリー構造情報ＣＴ２を作成する。
【００４３】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００４４】
１０    第１クロックツリー構造
１１    第１素子群
１２    最終段バッファ
１０’  コピークロックツリー構造
１２’  最終段バッファ
１５    代表点
２０    第２クロックツリー構造
２１    第２素子群
２５    配線
１００    クロック設計システム
１０１    処理装置
１０２    記憶装置
１１０    第１クロックツリー構造作成部
１２０    第２クロックツリー構造作成部
ＣＬＫ１  第１クロック
ＣＬＫ２  第２クロック
ＲＥＣ１  第１クロック領域
ＲＥＣ２  第２クロック領域
ＤＩＶ    分割領域
ＬＯＣ    位置情報
ＣＴ１    第１クロックツリー構造情報
ＣＴ２    第２クロックツリー構造情報
ＰＲＯＧ  クロック設計プログラム
【図１】
2013038155.tif 000003
【図２】
2013038155.tif 000004
【図３】
2013038155.tif 000005
【図４】
2013038155.tif 000006
【図５】
2013038155.tif 000007
【図６】
2013038155.tif 000008
【図７】
2013038155.tif 000009
【図８】
2013038155.tif 000010
【図９】
2013038155.tif 000011
【図１０】
2013038155.tif 000012
【図１１】
2013038155.tif 000013
【図１２】
2013038155.tif 000014
【図１３】
2013038155.tif 000015
【図１４】
2013038155.tif 000016
【図１５】
2013038155.tif 000017