(57)【要約】【課題】ＬＳＩに搭載された複数のマクロ間のクロックスキューを低減する設計方法を提案する。【解決手段】本発明の半導体集積回路設計方法は、複数の下層回路を含む集積回路の回路情報に基づいて、下層回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識し、抽出したクロックポイントのうち、第１下層回路からクロックポイントを選択し、第２下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、選択された２つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、２つのクロックポイントを共通化する。【選択図】図１
2013045253.tif 000002
【特許請求の範囲】
【請求項１】
複数の下層回路を含む集積回路の回路情報に基づいて、当該下層回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出する第１工程と、
抽出したクロックポイントを出力とする論理回路の回路構成を認識する第２工程と、
抽出したクロックポイントのうち、第１下層回路からクロックポイントを選択し、第２下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較する第３工程と、
比較結果が一致した場合、前記選択された２つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、前記２つのクロックポイントを共通化する第４工程とを有する、半導体集積回路設計方法。
【請求項２】
前記第４工程においてクロックポイントを共通化した場合は、前記回路情報を変更し、
変更した回路情報を用いて、前記第１工程乃至第４工程を繰り返し行う、請求項１に記載の半導体集積回路設計方法。
【請求項３】
前記第３工程において前記比較結果が不一致である場合は、前記回路情報を変更せず、前記第３工程及び第４工程を繰り返す、請求項１又は２に記載の半導体集積回路設計方法。
【請求項４】
前記第３工程は、前記論理回路のデータ入力、クロック入力、セット・リセット入力の端子のうち少なくとも１つを比較することにより、前記論理回路の回路構成を比較する、請求項１乃至３のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項５】
前記第３工程において前記比較結果が不一致の場合には、前記第３工程において比較された２つのクロックポイントに対し、比較されたクロックポイントと、その前段のクロックポイントの論理が同じであるか否かを比較する第５工程と、
前記第５工程において、比較されたクロックポイントと、その前段のクロックポイントの論理が同じでないと判断した場合、前記第３工程で比較した論理回路と、前段のクロックポイントを出力する論理回路の論理が一致するか比較する第６工程と、
前記第６工程の比較結果が一致した場合は、前記第４工程によって比較結果が一致した２つのクロックポイントを共通化する、請求項１乃至４のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項６】
前記第５工程において、比較されたクロックポイントと、その前段のクロックポイントの論理が同じであると判断した場合、前段に延長するクロックポイントが無くなるまで前記第３工程乃至第６工程を繰り返す、請求項５に記載の半導体集積回路設計方法。
【請求項７】
前記第３工程又は第６工程で前記比較結果が一致した場合に、クロック間にデータの受け渡しがあるかの判断を行う第７工程を有し、
前記第７工程で受け渡しがあると判断した場合、前記第４工程において、クロック間にデータの受け渡しがあると判断された箇所の回路修正を行う請求項１乃至６のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項８】
前記第６工程において論理が一致しないと判断された場合に、予め指定された前段に延長する段数に達するまで、前記第４工程に戻って処理を繰り返す、請求項６に記載の半導体集積回路設計方法。
【請求項９】
前記クロックポイントは、フリップフロップにクロックを供給するクロックライン上にある論理回路のＣＴＳバッファ以外の論理回路の出力である、請求項１乃至８のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項１０】
前記第２工程において、前記論理回路の構成の認識は、当該論理回路の論理と、当該論理回路の入力をトレースバックすることにより行う、請求項１乃至９のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項１１】
前記第３工程における前記論理回路の比較は、前記第２工程で認識された回路の認識結果を用いる、請求項１乃至１０のうちいずれか１項に記載の半導体集積回路設計方法。
【請求項１２】
請求項１乃至１１のうちいずれか１項に記載の方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計方法に関し、特に、クロックを供給する配線（クロックライン）の設計方法に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）には多機能を備えることが要求されており、複数の機能マクロが搭載されている。搭載される複数の機能マクロは、設計期間を短縮するために、個々のマクロ内でタイミング設計が行われる。そして、タイミング設計された機能マクロを、そのまま流用してＬＳＩに搭載することが多い。一般的に、各マクロにクロックを供給するクロック経路に、バッファ等の遅延を挿入することで、最大のクロック遅延に合わせ込むようにすることで、ＬＳＩに搭載された複数のマクロ間のクロックスキューを合わせている。
【０００３】
しかし、近年のＬＳＩ設計の規模拡大により、多数のバッファ挿入によるレイアウトへの影響も大きくなっている。更に、プロセスの微細化に伴って、ＬＳＩ製造時に生じるマスクパターンと実際の形状のずれなどのプロセスばらつきによる遅延への影響が大きくなっており、クロックスキューを遅延で調整することも難しくなってきている。
よって、複数のマクロを搭載するＬＳＩにおいて、マクロ間のクロックスキュー調整を容易に実現できる技術が求められている。
【０００４】
特許文献１には、複数の下位階層マクロが、１つのＰＬＬ回路を共用する構成の半導体集積回路の設計方法が開示されている。この特許文献１に開示された回路では、ＰＬＬ回路を、下位階層マクロ内に組み込むことにより、それぞれの下位階層マクロ内における遅延調整処理を容易化し、かつ、プロセスや配線のばらつきを抑制してクロックスキューの低減を可能としている。
【０００５】
図１２は、特許文献１に開示された半導体集積回路（ＬＳＩ）１００のブロック図である。半導体集積回路１００の周辺部には、Ｉ／Ｏ回路２０が配置されている。また、半導体集積回路１００の内部回路領域には、４つの下位階層マクロ１、２、３、４が配置されている。各下位階層マクロ１〜４は、ここでは負荷回路として構成されており、複数のＦＦ（フリップフロップ）回路１２を含む構成とされている。
【０００６】
各下位階層マクロ１〜４には、下位階層ＣＴＳ（Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ）ルートバッファ７、８、９、１０と、適宜数のＣＴＳルートバッファ１１が組み込まれている。これらのルートバッファにより、各下位階層マクロ１〜４でのクロック伝播遅延が調整されている。そして、下位階層マクロ１〜４で共用化されるＰＬＬ回路５は、下位階層マクロ１〜４のうちいずれかのマクロ（特許文献１の実施形態１では、下位階層マクロ１）に組み込まれている。
【０００７】
ＰＬＬ回路５は、Ｉ／Ｏ回路２０から基準クロックを入力する。ＰＬＬ回路５は、上位階層１４に組み込まれている上位階層ＣＴＳルートバッファ６及び配線１３を介して、各下位階層マクロ１〜４に出力する。また、ＰＬＬ回路５のＰＬＬループを構成するために、ＰＬＬ回路５が組み込まれている下位階層マクロ１内のＣＴＳバッファ１１の出力側、換言すればＦＦ回路１２の入力端側から、ＰＬＬ回路５にフィードバック入力されている。すなわち、ＰＬＬ回路５の出力は、上位階層ＣＴＳルートバッファ６、下位階層マクロ１内のＣＴＳルートバッファ７、同マクロ内のＣＴＳバッファ１１を介してＰＬＬ回路５にフィードバック入力され、これによってＰＬＬループが構成されている。
【０００８】
このような構成の回路では、回路設計が階層的に行われる。すなわち、回路を上位階層、下位階層に分割し、それぞれの階層内で閉じた形で設計が行われる。したがって、クロック伝播遅延の調整工程についても、上位階層での調整工程と、下位階層での調整工程に分けて行われる。
【０００９】
図１２に示されるような回路の設計では、下位階層マクロ１〜４内でバッファ挿入、配線長の調整等の処理を行ない、下位階層ＣＴＳルートバッファ７〜１０からＦＦ回路１２までのクロック伝播遅延を合わせ、その遅延値を抽出する。すなわち、まず、下位階層マクロ１において、下位階層ＣＴＳルートバッファ７からＦＦ回路１２（ここではＰＬＬ回路５であってもよい）までの間の配線１５上に、適宜の個数のＣＴＳバッファ１１を挿入し、あるいは配線長１５の調整によりクロック伝播遅延を合わせる。
【００１０】
そして、このクロック伝播遅延の調整後に、下位階層ＣＴＳルートバッファ７からＦＦ回路１２までのクロック伝播遅延値を抽出する。同様に、他の下位階層マクロ２〜４内においても、下位階層ＣＴＳルートバッファ８〜１０から各下位階層内のＦＦ回路１２までの配線１５におけるクロック伝播遅延を合わせ、その遅延値を抽出する。これにより、４つの下位階層マクロ１〜４は、全て下位階層ＣＴＳルート７〜１０からＦＦ回路１２までのクロック伝播遅延が一致するように調整される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００２−２３８８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、特許文献１に開示された半導体集積回路の設計方法は、下位階層の末端のフリップフロップまでのクロックスキューを低減するものではあるが、複数の同一構成のマクロを搭載する半導体集積回路を設計対象としており、必ずしもスキューを十分に低減することはできない。すなわち、実際には、ＬＳＩに搭載するマクロは、同一又は類似の回路構成を有しているとは限らない。そのため、特許文献１に開示された技術では、プロセスばらつきなどによってクロックスキューが大きくなる可能性が高くなるという問題点を有する。
【００１３】
図１３は、特許文献１に開示された技術の問題点を説明するために今回作成された図である。具体的には、図１３に示された回路は、図１２の下位階層マクロ３及び下位階層マクロ４に相当する下位階層マクロ３３及び下位階層マクロ３４を備えている。ここで、図１３の下位階層マクロ３３では、図１２のＣＴＳルートバッファ９が分周回路２０１に置き換えられている。なお、その他の構成については、図１２の下位階層マクロ３の構成とほぼ同じである。
【００１４】
一方、図１３の下位階層マクロ３４は、図１２のＣＴＳルートバッファ９が分周回路２０１に置き換えられ、更にフリップフロップ１２の数が増えている。下位階層マクロ３３及び下位階層マクロ３４には、従来技術を用いた遅延調整が実施されており、増加したフリップフロップ１２の数にともない、遅延調整を行うＣＴＳバッファ１１の数も増えている。さらに、図１３に示された回路では、下位階層マクロ３３のフリップフロップ１２（ＦＦ１）から下位階層マクロ３４のフリップフロップ１２（ＦＦ２）へパス１３を介したデータの受け渡しがあるものとする。
【００１５】
このように、下位階層マクロ３３と下位階層マクロ３４の構成が大きく異なる場合には、それぞれのマクロのフリップフロップ１２（ＦＦ１）とフリップフロップ１２（ＦＦ２）のクロックスキューは、図１２に比べて大きくなるのは必然である。より具体的には、図１２では、下位階層マクロ３と下位階層マクロ４は回路構成が同じなので、クロックスキューもほぼ同じと言えるが、図１３においては、下位階層マクロ３４は、下位階層マクロ３３のほぼ２倍のクロックスキューが発生する。
【００１６】
更に、クロックスキューが大きくなることで、プロセスばらつきの影響が大きくなり、Ｓｅｔｕｐ、Ｈｏｌｄのタイミングウィンドウが狭くなってしまう。そのため、特許文献１に開示された技術では、タイミング収束が難しくなる。
近年の半導体集積回路は、微細化や高速化が進んでおり、上述の影響は更に大きくなってきている。
【００１７】
また、このようなクロックスキューの問題は、１つのマクロ内においても発生する。すなわち、１つのマクロ内において、クロックスキューが大きくなれば、プロセスばらつきの影響が大きくなり、Ｓｅｔｕｐ、Ｈｏｌｄのタイミングウィンドウが狭くなる。
【課題を解決するための手段】
【００１８】
本発明に係る半導体集積回路設計方法は、設計対象となる集積回路の回路情報に基づいて、当該集積回路に含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識し、抽出したクロックポイントから２つのクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、前記選択された２つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とすることにより、前記２つのクロックポイントを共通化する、ことを特徴とする。
【００１９】
このように、フリップフロップにクロックを供給する論理回路が一致した場合に、論理回路を共通化することにより、フリップフロップ間のクロックスキューを低減する事が可能となり、半導体集積回路の品質を向上させることができる。
【発明の効果】
【００２０】
本発明に係る半導体集積回路設計方法によれば、マクロ毎に設けられたフリップフロップ間のクロックスキューを低減することにより、半導体集積回路の品質を向上させることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明の実施例１に係る半導体集積回路設計方法の処理手順（アルゴリズム）を示すフローチャートである。
【図２】本発明の実施例１に係る半導体集積回路設計方法の設計対象となる回路（ＬＳＩ）の一例を示す図であり、本発明の実施例１に係る半導体集積回路設計方法を適用する前の、クロックライン構成を示す図である。
【図３】本発明の実施例１に係る半導体集積回路設計方法を適用した後の、クロックライン構成を示す図である。
【図４】本発明の実施例２の処理手順（アルゴリズム）を示すフローチャートである。
【図５】本発明の実施例２に係る半導体集積回路設計方法を適用する前の、クロックラインの回路図である。
【図６】本発明の実施例２に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図７】本発明の実施例３に係る半導体集積回路設計方法の処理手順（アルゴリズム）を示すフローチャートである。
【図８】本発明の実施例３に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図９】本発明の実施例４に係る半導体集積回路設計方法の処理手順（アルゴリズム）を示すフローチャートである。
【図１０】本発明の実施例４に係る半導体集積回路設計方法を適用した後の、クロックラインの回路図である。
【図１１】本発明を実施するためのコンピュータシステム構成の一例を示す図である。
【図１２】特許文献１の半導体集積回路（ＬＳＩ）１００のブロック図である。
【図１３】特許文献１に開示された技術を用いて遅延調整を実施したクロックラインの回路図である。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本発明の最良な実施例について説明する。
実施例１．
【００２３】
本発明の実施例１に係る半導体集積回路設計方法は、クロックを供給する配線（クロックライン）の設計方法に関するものであり、例えば、図１１に示すコンピュータシステムによって実現することができる。
【００２４】
図１１は、本発明の実施例による半導体集積回路の設計方法を実施するためのコンピュータシステム構成の一例を示す図である。このコンピュータシステム３００は、サーバ３０１と複数のコンピュータ装置３０６を備えている。サーバ３０１とコンピュータ装置３０６とは、ネットワーク３０５を介して通信することができる。ネットワーク３０５は、例えば、移動体通信網や、専用線網や、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ)といった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークとして構成することができる。
【００２５】
サーバ３０１は、処理部３０２、記録媒体３０３、入出力インターフェースである入出力部３０４を備えている。処理部３０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって構成される
【００２６】
記録媒体３０３は、実施例１に係る半導体集積回路設計方法を実現するための実行プログラムや、解析データ、入力情報、対応後の出力情報といったデータを記憶する。記録媒体３０３は、ハードディスクやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶装置で構成することができる。
【００２７】
処理部３０２は、記録媒体３０３に記憶されたサーバ３０１の機能を実現するための実行プログラムを読み込んで実行することで、サーバ３０１の機能を実現する。なお、各実行プログラムやデータは、サーバ３０１の管理者により、キーボードやマウスや、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）といった入出力部３０４を用いて外部から記録媒体３０３へ記憶される。
【００２８】
上述の構成により、サーバ３０１は、実行プログラムやデータを、ネットワーク３０５を介してコンピュータ装置３０６へ提供することが可能である。
【００２９】
一方、コンピュータ装置３０６は、通信部３０７、記録媒体３０８、処理部３０９、入出力インターフェースである入出力部３１０を備えている。処理部３０９は、ＣＰＵによって構成される。コンピュータ装置３０６は、実施例１に係る半導体集積回路設計方法を実現するための生成システムを実行する。コンピュータ装置３０６は、例えば、パーソナルコンピュータのような一般的な汎用コンピュータとして構成することができる。
【００３０】
コンピュータ装置３０６は、通信部３０７を備え、ネットワーク３０５を介してサーバ３０１と通信が可能である。コンピュータ装置３０６は、ネットワーク３０５を介してサーバ３０１へ接続して、実施例１に係る半導体集積回路設計方法を実現するための実行プログラムやデータを取得し、記憶部３０８へ記憶する。
【００３１】
処理部３０９は、記憶部３０８に記憶されたコンピュータ装置３０６の機能を実現するための実行プログラムを読み込んで、実行することによりコンピュータ装置３０６の機能を実現する。
【００３２】
入出力部３１０は、コンピュータ装置３０６の使用者の操作を受け付ける入出力インターフェースである。入出力部３０１は、例えば、キーボードやマウスや、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）によって構成される。コンピュータ装置３０６は、上述の構成により、サーバ３０１から取得された実行プログラムを読み込んで実行し、本実施例１に係る半導体集積回路設計方法を実現する。
【００３３】
なお、上記の説明では、本実施例１に係る半導体集積回路設計方法の実行プログラムは、サーバ３０１の記録媒体３０３に記憶されているが、本発明は、これに限られるものではない。例えば、実行プログラムは、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）やフラッシュメモリを搭載したＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリといった持ち運び可能な記憶媒体に記録するように構成してもよい。この場合、実行プログラムは、これらの持ち運び可能な記憶媒体から、コンピュータ装置３０６の備えるＣＤドライブや、ＵＳＢポート等を介して導入すればよい。
【００３４】
次に、実施例１に係る半導体集積設計方法について説明する。図１は、本発明の実施例１に係る半導体集積回路設計方法の処理手順を示すフローチャートである。これから説明する各処理ステップは、図１１に示すコンピュータシステム３００において実施される処理ステップであり、各処理ステップに入力するデータや、出力されるデータ等は記憶媒体３０３、３０８に記憶されるものとする。
【００３５】
続いて、本発明の実施例１に係る半導体集積回路設計方法の処理手順を説明する前に、本実施例１に係る半導体集積回路設計方法の設計対象となる半導体集積回路について説明する。図２は、実施例１に係る半導体集積回路設計方法の設計対象となる回路（ＬＳＩ）の一例を示す図である。
【００３６】
図２に示すように、このＬＳＩは、ＬＳＩに搭載される機能を実現するための複数のマクロＭ１〜Ｍ４を有している。マクロＭ１〜Ｍ３には、メインクロックＣＬＫを、分周回路Ａ２０１にて２分周したクロックポイントＣ５より、ＣＴＳルートバッファ２００を経由してクロックが供給されている。マクロＭ４には、メインクロックＣＬＫを分周回路Ｂ２０１にて２分周したクロックポイントＣ６より、ＣＴＳルートバッファ２００を経由してクロックが供給されている。
【００３７】
マクロＭ１は、分周回路２０１にて２分周したクロックＣ１を、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ１）へ供給する。
マクロＭ２は、マクロ１と同じ構成であり、分周回路２０１にて２分周したクロックＣ２を、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ２）へ供給する。
マクロＭ３は、分周回路２０５にて４分周したクロックＣ３を、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ３）へ供給する。
マクロＭ４は、分周回路２０１にて２分周したクロックＣ４を、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ４）へ供給する。
【００３８】
また、マクロＭ１とマクロＭ２には、データの受け渡しがある。具体的には、マクロＭ１のクロックポイントＣ１からクロック供給されるフリップフロック２０２（ＦＦ１）の出力データが、マクロＭ２のクロックポイントＣ２からクロック供給されるフリップフロック２０２（ＦＦ２）に入力されている。
【００３９】
続いて、本発明の実施例１に係る半導体集積回路設計方法の処理手順を説明する。
（ステップＳ１）：はじめに、設計対象となるＬＳＩの回路情報の読み込み、ＬＳＩに含まれる各マクロ内のフリップフロップをすべて認識する。
（ステップＳ２）：ステップＳ１で読み込んだ回路（図２）のすべてのクロックポイントを抽出する。そして、抽出したクロックポイントを出力とする論理回路の構成を認識する。
【００４０】
ここで、クロックポイントとは、フリップフロップに入力するクロックラインに存在するバッファ及びＣＴＳバッファ（インバータ偶数段構成を含む）を除いた全ての論理回路の出力であり、クロックの供給源となる外部からのクロック入力端子、又はクロック生成回路（ＰＬＬ）等から、フリップフロップのクロック入力端子までの経路に存在するものとする。
【００４１】
例えば、図２では、読み込んだ回路に存在する全てのフリップフロップ２０２のクロック入力の端子を基点にトレースバックを行い、クロックポイントＣ１〜Ｃ６を抽出する。
【００４２】
なお、抽出したクロックポイントを出力する論理回路の構成を認識する処理は、各クロック分周回路２０１のデータ入力、クロック入力、セット・リセット入力の端子を基点にトレースバックすることで認識することができる。
【００４３】
（ステップＳ３）：ステップＳ１で読み込んだ回路（図２）のクロックラインの共通化が可能であるかの判定（共通化判定）を行う。具体的には、ステップＳ３０１及びＳ３０２の処理を実行する。
【００４４】
（ステップＳ３０１）：ステップＳ２で抽出したクロックポイントから、共通化判定の対象として２つのクロックポイントを任意に選択する。具体的には、異なるマクロＭ１〜Ｍ４のそれぞれから、クロックポイントを１つずつ選択する。
【００４５】
例えば、図２では、クロックポイントＣ１〜Ｃ６が抽出されているが、この中からクロックポイントＣ１とＣ２や、クロックポイントＣ１とＣ３などのクロックポイントを２つ選択する。
【００４６】
（ステップＳ３０２）：ステップＳ３０１にて選択した２つのクロックポイントを出力する論理回路の回路構成を比較する。ここでの回路構成の比較は、ステップＳ２で認識した回路構成を比較することによって行う。この比較結果によってクロックポイントを共通化できるか否か判定を行う。例えば、論理回路の各入力端子（データ入力、クロック入力、セット・リセット入力など）の全てのトレースバック結果を比較することにより、回路構成を比較する。
【００４７】
比較した結果が一致した場合、すなわち、２つのクロックポイントを出力する論理回路が一致した場合は、ステップＳ４へ遷移する。一方、比較結果が一致していない場合、すなわち、２つのクロックポイントを出力する論理回路が一致していない場合は、ステップＳ５へ遷移する。
【００４８】
例えば、選択した２つのクロックポイントがＣ１とＣ２であった場合は、クロックポイントＣ１を出力する分周回路２０１と、クロックポイントＣ２を出力する分周回路２０１の回路構成を比較し、一致したと判断する。このとき、ステップＳ２においてそれぞれの分周回路２０１は、２分周回路であり、且つそれぞれの各入力端子（データ入力、クロック入力、セット・リセット入力など）の全てのトレースバック結果が一致していると判断する。
【００４９】
また、例えば、選択した２つのクロックポイントがＣ１とＣ３であった場合は、クロックポイントＣ１を出力する分周回路２０１と、クロックポイントＣ３を出力する分周回路２０５の回路構成を比較し、一致していないと判断する。具体的には、分周回路２０１は２分周回路であり、分周回路２０５は４分周回路であるため、両者は一致しないと判断する。
【００５０】
また、例えば、選択した２つのクロックポイントがＣ１とＣ４であった場合は、クロックポイントＣ１を出力する分周回路２０１と、クロックポイントＣ４を出力する分周回路２０１の回路構成を比較し、一致していないと判断する。このとき、それぞれの分周回路２０１は２分周回路であるが、それぞれの各入力端子（データ入力、クロック入力、セット・リセット入力など）の全てのトレースバック結果を比較した際に、クロック入力となる前段のクロックポイントが、それぞれＣ５とＣ６であるため、異なると判断する。
【００５１】
（ステップＳ４）：ステップＳ３０２の比較結果が一致した場合、クロックラインを共通化し、回路情報の修正を実施する。
【００５２】
回路情報の修正が終了したら、ステップＳ１に戻り、この修正した回路情報の再読み込みを行って、ステップＳ１〜ステップＳ３までの一連の処理を再実行する。
【００５３】
例えば、２つのクロックポイントがＣ１とＣ２が選択され、マクロＭ１の分周回路２０１と、マクロＭ２の分周回路２０１の回路構成を比較し、その結果が一致と判断された場合は、マクロＭ２の分周回路を削除し、マクロＭ１の分周回路からマクロＭ１のフリップフロップ２０２（ＦＦ１）とマクロＭ２のフリップフロップ２０１（ＦＦ２）の両方へクロックを供給する。
【００５４】
このとき、マクロＭ１及びＭ２の２つのＣＴＳバッファ２０３の出力は、クロックポイントとして抽出されておらず、新たなクロックポイントは、共通化された分周回路の出力に配置する。
【００５５】
（ステップＳ５）：ステップＳ３０２で論理回路の構成を比較した結果が不一致であった場合に、比較しうるクロックポイントが他にあるかの判断を実施する。比較するクロックポイントがある場合は、再度ステップＳ３の処理に遷移し、ステップＳ３〜Ｓ５を繰り返す。一方、比較するクロックポイントがない場合は、処理を終了する。
【００５６】
例えば、ステップＳ２にて抽出されたクロックポイントＣ１〜Ｃ６の任意の２つを選択する全ての組み合わせにて共通化判定を実施する。
【００５７】
図３は、図２の回路に対して上述した半導体集積回路設計方法を適用した結果の回路図である。
マクロＭ１１、Ｍ２１、Ｍ３１、Ｍ４１は、それぞれ図２のマクロＭ１、Ｍ２、Ｍ３、Ｍ４に相当するものである。
【００５８】
マクロＭ１１、Ｍ３１には、メインクロックＣＬＫを分周回路Ａ２０１にて２分周し、ＣＴＳルートバッファ２００を経由したクロックが供給される。
マクロＭ１１は、分周回路２０１にて２分周したクロックを、ＣＴＳバッファ２０３を経由してフリップフロップ２０２へ供給する。
マクロＭ２１及びマクロＭ４１は、マクロＭ１１のＣＴＳバッファ２０３から出力するクロックをフリップフロップ２０２供給する。
マクロＭ３１は、分周回路２０５にて４分周したクロックを、ＣＴＳバッファ２０３を経由してフリップフロップ２０２へ供給する。
【００５９】
また、マクロＭ１１とマクロＭ２１にはデータの受け渡しがあり、マクロＭ１１のフリップフロック２０２（ＦＦ１）の出力データがマクロＭ２１のフリップフロック２０２（ＦＦ２）に入力されている。
【００６０】
図３に示すように、ステップＳ２０１において抽出された図２のクロックポイントＣ１〜Ｃ６に対し、クロックポイントＣ１とＣ２が一致、Ｃ１（またはＣ２）とＣ４が一致、Ｃ５とＣ６が一致したと判断され、それ以外の２つのクロックポイントの組み合わせは全て不一致と判断される。この結果、クロックポイントＣ１とＣ２とＣ４が共通化され、クロックポイントＣ５とＣ６が共通化されることで、回路修正が実施されている。
【００６１】
次に、本実施例１に係る半導体集積回路設計方法の効果について説明する。上記のように、本発明の実施例１に係る半導体集積回路設計方法は、複数のマクロＭ１〜Ｍ４を含む集積回路の回路情報に基づいて、マクロに含まれるフリップフロップにクロックを供給する論理回路の出力をクロックポイントとして抽出し、抽出したクロックポイントを出力とする論理回路の回路構成を認識する。
【００６２】
そして、抽出したクロックポイントのうち、第１下層回路からクロックポイントを選択し、第２下層回路からクロックポイントを選択し、それぞれのクロックポイントを出力とする論理回路の回路構成を比較し、比較結果が一致した場合、選択された２つクロックポイントを出力する論理回路の一方を削除すると共に、削除した一方のクロックポイントを他方の論理回路の出力とし、２つのクロックポイントを共通化する。
【００６３】
すなわち、実施例１に係る方法は、ＬＳＩに含まれる複数のマクロ１〜４が異なる構成を有していたとしても、また、図２に示すようにマクロＭ１のフリップフロップ２０２（ＦＦ１）とマクロＭ２のフリップフロップ２０２（ＦＦ２）にてクロック間のデータの受け渡しのある回路を含んでいる場合であっても、一律に、当該ＬＳＩに搭載する全てのクロックラインを対象として共通化できる論理回路を検索する。これにより、従来技術に比べて容易にタイミング調整を行うことができる。具体的には、図３に示すように、クロック分周回路２０１の出力であるクロックポイントＣ１、Ｃ２、Ｃ４を共通化することで、マクロＭ１１とマクロＭ２１とマクロＭ４１のクロックスキューを削減することができる。
【００６４】
また、回路の共通化にともなって、マクロＭ２とマクロＭ４の分周回路２０１と、上位階層の分周回路Ｂ２０１が削減されるため、回路規模が削減され、消費電力も削減されるという効果も得ることができる。
実施例２．
【００６５】
次に、本発明の実施例２に係る半導体集積回路設計方法について説明する。実施例２は、図１の実施例１のフローチャートのステップＳ３を、図４のステップＳ３１に置き換えたものである。ステップＳ３１は、ステップＳ３に対し、ステップＳ３０２での共通化判定にて一致していないと判定された後に、一致判定の対象となったクロックポイントに前段のクロックポイントも加えて論理が一致しているか否か判断を行う処理手順（ステップＳ３０３、Ｓ３０４）が追加されている。
【００６６】
次に、実施例２に係る半導体集積回路設計方法について説明する。実施例２に係る半導体集積回路設計方法のフローチャートを図４に示す。ステップＳ３０３〜ステップ３０４以外の処理ステップは実施例１と同様であるため、その説明を省略する。ここで、実施例２に係る半導体集積回路設計方法について説明する前に、実施例２による設計対象の回路について説明する。
【００６７】
図５に示すように、この設計対象となる回路のマクロＭ５には、メインクロックＣＬＫを分周回路Ａ２０５にて４分周したクロックポイントＣ１１よりＣＴＳルートバッファ２００を経由したクロックが供給されている。また、マクロＭ６にはメインクロックＣＬＫを分周回路Ｂ２０１にて２分周したクロックポイントＣ１２よりＣＴＳルートバッファ２００を経由したクロックが供給されている。
【００６８】
マクロＭ５は、分周回路２０１にて２分周したクロックを、さらに分周回路２０１にて２分周し、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ５）へ供給する。
マクロＭ６は、分周回路２０５にて４分周したクロックを、さらに分周回路２０１にて２分周し、ＣＴＳバッファ２０３を経由してフリップフロップ２０２（ＦＦ６）へ供給する。
【００６９】
また、マクロＭ５とマクロＭ６にはデータの受け渡しがあり、マクロＭ５のクロックポイントＣ８からクロック供給されるフリップフロック２０２（ＦＦ５）の出力データが、マクロＭ６のクロックポイントＣ１０からクロック供給されるフリップフロック２０２（ＦＦ６）に入力されている。
【００７０】
続いて、図４を用いて、本発明の実施例２に係る半導体集積回路設計方法について説明する。
（ステップＳ３０３）：ステップＳ３０２で比較した結果が不一致であった場合に、２つのクロックポイントを出力する論理回路から、それぞれの前段のクロックポイントが同じであるか、又は同じクロックの供給元（外部端子やＰＬＬの出力など）であるかを判断する。換言すれば、ステップＳ３０２において比較した論理回路の出力であるクロックポイントと、その前段のクロックポイントが同じクロックポイントである、又は、同じ供給元であるかを、２つのクロックポイントのそれぞれにおいて比較する。
【００７１】
ステップＳ３０３において、前段のクロックポイントと同じクロックポイントである、又は、同じ供給元であると判断された場合はステップＳ５へ遷移する（Ｓ３０３においてＹｅｓ）。一方、異なるクロックポイントである、又は、異なる供給元であると判断された場合は（Ｓ３０３においてＮｏ）、ステップＳ３０４へ遷移する。
【００７２】
例えば、図５では、選択した２つのクロックポイントがＣ８とＣ１０であった場合は、ステップＳ３０２において論理回路が一致していないと判断される（Ｓ３０２で不一致）。
次にステップＳ３０３では、クロックポイントＣ８の前段のクロックポイントはＣ７であり、クロックポイントＣ１０の前段のクロックポイントはＣ９であるため、それぞれの前段は異なるクロックポイントであると判断し（Ｓ３０３でＮｏ）、ステップＳ３０４へ遷移する。
【００７３】
（ステップＳ３０４）：ステップＳ３０２にて比較した論理回路と、前段のクロックポイントを出力する論理回路を、それぞれのクロックライン毎に後段の論理回路に前段の論理回路を含めて論理一致するかの比較と、前段のクロックポイントを出力する論理回路の回路構成の比較を行う。
比較した結果が一致した場合は、ステップＳ４へ、一致していない場合はステップＳ３０３へ戻って、更に前段のクロックポイントに対しステップＳ３０３の処理を再実施する。
【００７４】
ここで、例えば図５では、ステップＳ３０３にて前段が異なるクロックポイントＣ７とＣ９と判断されたため、クロックポイントＣ８を出力とする分周回路２０１にクロックポイントＣ７を出力とする分周回路２０１を含めた論理と、クロックポイントＣ１０を出力とする分周回路２０１にクロックポイントＣ９を出力とする分周回路２０５を含めた論理を比較し、且つこの前段のクロックポイントを出力する２つの論理回路のそれぞれの回路構成を比較し、論理が異なると判断する。
【００７５】
よって、ステップＳ３０３へ戻る。
（ステップＳ３０３（２回目））：上記ステップＳ３０４での比較結果が異なると判断されたため、前段のクロックポイントＣ７とＣ９のそれぞれの更に前段のクロックポイントが同じであるか、又は同じクロックの供給元（外部端子やＰＬＬの出力など）であるかを判断する。ステップＳ３０３において、同じクロックポイントである、又は同じ供給元であると判断されたらステップＳ５へ遷移し、異なると判断されたら、ステップＳ３０４へ遷移する。
【００７６】
ここで、例えば図５では、クロックポイントＣ７の前段のクロックポイントはＣ１１であり、クロックポイントＣ９の前段のクロックポイントはＣ１２であるため、異なると判断し、ステップＳ３０４へ遷移する。
【００７７】
（ステップＳ３０４（２回目））：上記ステップＳ３０３（２回目）で、クロックポイントＣ７とＣ９の前段のクロックポイントＣ１１とＣ１２が異なると判断される（Ｓ３０４において不一致）。そのため、ステップＳ３０３に遷移する。そして、クロックポイントＣ８を出力とする分周回路２０１、クロックポイントＣ７を出力とする分周回路２０１、及びクロックポイントＣ１１を出力とする分周回路Ａ２０５の３つの論理を含めた論理と、クロックポイントＣ１０を出力とする分周回路２０１、クロックポイントＣ９を出力とする分周回路２０５、及びクロックポイントＣ１２を出力とする分周回路Ｂ２０１の３つの論理を含めた論理を比較する。そして、クロックポイントＣ１１を出力する分周回路Ａ２０５と、クロックポイントＣ１２を出力とする分周回路Ｂ２０１の回路構成を比較し、同じ論理であると判断する。
【００７８】
よって、ステップＳ４に遷移し回路修正を行う。
このとき、実施例２のステップＳ４で以下のように回路修正を行う。実施例２にて回路修正された結果を図６に示す。図６は、クロックポイントＣ１２、Ｃ９、Ｃ１０のそれぞれを出力とする分周回路を削除し、メインクロックＣＬＫをクロックポイントＣ１１、Ｃ７、Ｃ８のそれぞれを出力とする分周回路を経由して、フリップフロップ２０２（ＦＦ５）とフリップフロップ２０２（ＦＦ６）へ供給する。
【００７９】
すなわち、実施例２は、最初のクロックポイントの比較において論理回路が一致していないと判断されても、その前段のクロックポイントを含めた論理比較を行う事で一致と判断し、共通化判定することができる。また、前段のクロックポイントがなくなるまでこの処理を繰り返す事で、共通化判定できる範囲を広くする事ができる。
【００８０】
実施例２では、任意に選択した２つクロックポイントのみで共通化判定を行うのではなく、図４に示すようにステップＳ３０３〜ステップＳ３０４の処理を追加し、一致しなければこの追加ステップを繰り返す。これにより、それぞれのクロックラインにおいて複数のクロックポイントを用いて共通化判定を行う事が可能となるため、共通化できるクロックポイントを増やす事が可能となり、更にタイミング調整を容易に実施する事ができる。また、共通化するクロックポイントが増える事で、更に回路規模が削減され、消費電力も削減される。
【００８１】
実施例３．
次に、本発明の実施例３に係る半導体集積回路設計方法について説明する。図７は、本発明の実施例３に係る半導体集積回路設計方法を示すフローチャートである。なお、ステップＳ３０８以外の処理ステップは実施例２と同様であり、説明を省略する。実施例３では、図４の実施例２のフローチャートのステップＳ３１が、図７のステップＳ３２に置き換えられている。ステップＳ３２では、ステップＳ３１に対し、ステップＳ３０２もしくはステップＳ３０４での共通化判定にて一致したと判定された後に、マクロ間にデータの請け渡しがあるかの判断を行なうステップＳ３０８が追加されている。
【００８２】
（ステップＳ３０８）：クロック間のデータの受け渡しがあるかを判断し、Ｙｅｓの場合のみクロックラインの共通化の回路修正を行う。
すなわち、実施例３では、クロック間のデータの受け渡しがある箇所にのみクロックラインの共通化を実施することになる。
【００８３】
ここで、図２に示す回路に対して、実施例３に係る半導体集積回路設計方法を適用した場合の、修正後の回路を図８に示す。
【００８４】
図８において、マクロＭ１２にはメインクロックＣＬＫを分周回路Ａ２０１にて２分周したクロックポイントＣ５よりＣＴＳルートバッファ２００を経由したクロックが供給されており、マクロＭ１２のクロックラインにおいて、分周回路２０１にて２分周されたクロックがクロックポイントＣ１より供給されＣＴＳバッファ２０３を経由し複数のフリップフロック２０２へ接続されている。
【００８５】
マクロＭ１２のＣＴＳリーフポイント２０４より分岐したクロックがＭ２２のすべてのフリップフロップへ供給されている。マクロＭ３２、Ｍ４２については図２のマクロＭ３、Ｍ４と同じである。
【００８６】
よって、クロック間のデータの受け渡しのないマクロについてはクロックライン共通化の対象外となり、実施対象となる回路の範囲が狭くなるので、実施例２よりも実行時間が短縮されることとなる。
【００８７】
また、本実施例３は、実施例２に対してステップＳ３０８を追加した手順としているが、実施例１に対してステップＳ３０８を追加した場合であっても、同様の効果を得ることができる。
【００８８】
実施例４．
実施例４は、図４の実施例２のフローチャートのステップＳ３１を、図９のステップＳ３３に置き換えたものである。ステップＳ３３では、ステップＳ３１に対し、ステップＳ３０２での共通化判定にて不一致と判定された場合に、前段のクロックポイントまで含めて論理一致を判定する前に、予め、一致判定を延長する前段の段数を指定しておき、その指定の段数に達したかを判断するステップＳ３０９が追加されている。
【００８９】
実施例４に係る半導体集積回路設計方法のフローチャートを図９に示す。ステップＳ３０９以外の処理ステップは実施例２と同様であるため、その説明を省略する。
（ステップＳ３０９）：指定の段数に達したかを判断し、Ｙｅｓの場合はステップＳ５へ遷移し、Ｎｏの場合はステップＳ３０３へ遷移して、指定の段数に達するまで一致判定を繰り返す。
【００９０】
このように、実施例４では、クロックラインを共通化する段数（範囲）を指定できるように構成されている。ここで、指定段数＝１とし、図２に示されるＬＳＩに対して、実施例４に係る設計方法を適用した後の回路を図１０に示す。
【００９１】
図１０において、マクロＭ１３にはメインクロックＣＬＫを分周回路Ａ２０１にて２分周したクロックポイントＣ５よりＣＴＳルートバッファ２００を経由したクロックが供給されている。また、マクロＭ１３内のクロックラインにおいて、分周回路２０１にて２分周されたクロックがクロックポイントＣ１より供給され、ＣＴＳバッファ２０３を経由し複数のフリップフロック２０２へ接続されている。
【００９２】
マクロＭ１３のＣＴＳリーフポイント２０４より分岐したクロックがＭ２３とマクロＭ３３のすべてのフリップフロップへ供給されている。なお、マクロＭ４３については、図２のマクロＭ４から回路の変更はない。
【００９３】
実施例４は、予めクロック間のデータの受け渡し箇所が明確であり、必要とするクロックライン共通化の箇所や段数が明確である場合に用いることができる。それにより実施例２のステップＳ３０３〜Ｓ３０４を繰り返す際に、無駄な判定処理の回数を抑える事ができる。これにより、設計に要する時間を短縮することができる。
【００９４】
なお、本発明は上記の実施例に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００９５】
たとえば、上述の実施例は、マクロ間のクロックラインを共通化するよう構成されていたが、マクロ内においても、同様の処理を実施することで、マクロ内のクロックラインを共通化するように構成してもよい。これにより、マクロ内のフリップフロップ間のクロックスキューを低減する事が可能となり、半導体集積回路の品質をさらに向上させることができる。
【００９６】
たとえば、本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００９７】
３、４、Ｍ１〜Ｍ６、Ｍ１１〜Ｍ１３，Ｍ２１〜Ｍ２３、Ｍ３１〜Ｍ３３、Ｍ４１〜Ｍ４３、Ｍ５１、Ｍ６１：  下位階層ソフトマクロ
６、２００：  ＣＴＳルートバッファ
１１、２０３：  ＣＴＳバッファ
１２、２０２：  フリップフロップ
１３：  データパス
２０１、Ａ２０１、Ｂ２０１：  クロック２分周回路
２０４：  ＣＴＳリーフポイント
２０５、Ａ２０５：  クロック４分周回路
Ｃ１〜Ｃ１２：  クロックポイント
３００：  コンピュータシステム
３０１：  サーバ
３０２、３０９：  ＣＰＵ
３０３、３０８：  記録媒体
３０４、３１０：  入出力インターフェース
３０５：  ネットワーク
３０６：  コンピュータ装置
３０７：  通信部
３０８：  記録媒体
【図１】
2013045253.tif 000003
【図２】
2013045253.tif 000004
【図３】
2013045253.tif 000005
【図４】
2013045253.tif 000006
【図５】
2013045253.tif 000007
【図６】
2013045253.tif 000008
【図７】
2013045253.tif 000009
【図８】
2013045253.tif 000010
【図９】
2013045253.tif 000011
【図１０】
2013045253.tif 000012
【図１１】
2013045253.tif 000013
【図１２】
2013045253.tif 000014
【図１３】
2013045253.tif 000015