(57)【要約】      （修正有）【課題】クロックツリー方式によるクロックタイミングの設計において、ＯＣＶを考慮しつつ、タイミング収束の問題を解決する半導体設計支援方法を提供する。【解決手段】本発明は、半導体集積回路モデルのレイアウト領域における論理的機能を実現するセルの配置に関するフロアプランファイル１２２ｂ、該セル間の論理的な接続関係を定義した論理接続情報ファイル１２２ａ、及び所定のクロックに基づいて駆動される該セルのタイミング制約条件を定義したタイミング制約条件ファイル１２２ｃに基づいて、該レイアウト領域における各セルの物理レイアウトを決定することと、該論理接続情報ファイル及び該タイミング制約条件ファイルに基づいて、該物理レイアウトが決定された該複数のセル間におけるトゥルーパスを特定することと、該物理レイアウト及び該トゥルーパスに基づいて、該レイアウト領域にクロックツリーを構成する。【選択図】図１
2017123010.tif 000002
【特許請求の範囲】
【請求項１】
クロックツリーを用いた半導体集積回路のレイアウト設計を支援する半導体設計支援装置において実行される方法であって、
半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを受け付けることと、
前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定することと、
前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定することと、
前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成することと、を含み、
前記クロックツリーを構成することは、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線することを含み、前記クロックラインを配線することは、前記クロックラインの分岐ノードを決定することを含み、前記クロックラインの分岐ノードを決定することは、前記分岐ノードの上流側にバッファを配置することを含む、
方法。
【請求項２】
特定された前記トゥルーパスに基づいて、前記物理レイアウトが決定された前記複数のセルのいくつかを選択し、該選択したいくつかのセルごとにクラスタを形成することをさらに含む、請求項１記載の方法。
【請求項３】
前記クラスタを形成することは、前記タイミング制約条件ファイルに規定されたスラック値が小さい前記セルを選択することを含む、請求項２記載の方法。
【請求項４】
前記クラスタを形成することは、前記複数のセルのうち、近接する前記セル同士を選択することを含む、請求項３記載の方法。
【請求項５】
前記クラスタを形成することは、一の前記セルと他の前記セルとの間のスラック値の差が所定の閾値以下でない場合に、前記一のセルと前記他のセルとを異なるクラスタに属するようにクラスタリングすることを含む、請求項３又は４記載の方法。
【請求項６】
前記クラスタを形成することは、前記クラスタにおける前記セルの個数が所定数以下になるようにクラスタリングすることを含む、請求項２乃至５のいずれか記載の方法。
【請求項７】
前記分岐ノードを決定することは、形成された前記クラスタにおける前記セル間の前記クロックライン上に分岐ノードを形成することを含む、請求項２乃至６のいずれか記載の方法。
【請求項８】
前記分岐ノードを決定することは、形成された前記クラスタ間の前記クロックライン上に分岐ノードを形成することを含む、請求項７記載の方法。
【請求項９】
前記分岐ノードを決定することは、前記クロックソースからのマンハッタン距離、前記セル間のマンハッタン距離、前記クロックラインが有する配線容量、及びバッファの駆動能力の少なくとも１つに基づいて決定される、請求項８記載の方法。
【請求項１０】
前記クラスタを形成することは、前記クラスタ間に形成された分岐ノードを頂点とする新たなクラスタを形成することを含む、請求項８に記載の方法。
【請求項１１】
クロックツリーを用いた半導体集積回路のレイアウト設計を支援する半導体設計支援装置であって、
半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを記憶する記憶部と、
前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定する物理レイアウト生成部と、
前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定するトゥルーパス特定部と、
前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成するクロックツリー生成部と、を含み、
前記クロックツリー生成部は、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線し、前記クロックラインの分岐ノードを決定し、前記分岐ノードの上流側にバッファを配置する、
半導体設計支援装置。
【請求項１２】
クロックツリーを用いた半導体集積回路のレイアウト設計を支援するための設計支援プログラムであって、前記設計支援プログラムは、半導体設計支援装置のプロセッサに、
半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを受け付ける機能と、
前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定する機能と、
前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定する機能と、
前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成する機能と、を実現させ、
前記クロックツリーを構成させる機能は、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線する機能を含み、前記クロックラインを配線する機能は、前記クロックラインの分岐ノードを決定する機能を含み、前記クロックラインの分岐ノードを決定する機能は、前記分岐ノードの上流側にバッファを配置する機能を含む、
設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計技術に関し、特に、クロックツリー合成を用いた、半導体集積回路のレイアウト設計を支援する半導体設計支援装置及びこれを用いた半導体設計支援方法に関する。
【背景技術】
【０００２】
半導体集積回路の設計においては、典型的には、設計者は、まず、例えばＨＤＬ（Hardware Description Language）等を用いて機能設計を行い、論理合成ツールを用いて論理設計を行った後、回路設計を行う。該回路設計では、設計者は、レイアウト設計を行いながら、タイミング解析を行い、半導体集積回路モデルを最適化していく。このような半導体集積回路の設計には、各種の設計支援ツールを実装したＣＡＤシステムやＥＤＡシステムと呼ばれる半導体設計支援装置が用いられる。
【０００３】
半導体集積回路の大規模化、高速化及び低消費電力化の実現には、半導体集積回路の設計において、クロックタイミングを適切に設計することが重要であり、とりわけ、クロックツリー方式では、クロックツリーの設計（クロックツリー合成（ＣＴＳ：Clock Tree Synthesis））が鍵となる。クロックツリーは、ＰＬＬ（Phased Locked Loop）回路等のクロックソースから素子（セル）等の各クロックリーフ（リーフセル）に向けてツリー状に構成されたクロックライン上に、セルを駆動するためのバッファ（クロックドライバと呼ばれることもある。）を配置した構造データである。クロックツリー合成では、一般に、クロックソースからリーフセルに向けて論理的な接続関係を規定した後、該論理的な接続関係に従ってリーフセルの物理的位置を決定し、クロックラインをツリー状に分配させながらバッファを配置することによって、クロックツリーを構築していく。
【０００４】
例えば、下記特許文献１は、クロックツリー合成を用いた半導体集積回路のレイアウト方法を開示する。かかる半導体集積回路のレイアウト方法は、内部論理領域に機能ブロックを配置する工程と、各機能ブロックへのクロック配線をＣＴＳ対象ネットとＣＴＳ対象ネット以外のＣＴＳ対象外ネットとに区分する工程と、ＣＴＳ対象ネットを配置する工程とを有し、さらに、ＣＴＳ対象ネットの配線長データをメモリに待避させる工程と、配線長データの待避後にＣＴＳ対象外ネットを配置する工程と、配線混雑に関するデータを抽出する工程と、配線混雑部データ及びメモリから読み出した配線長データに基づいて、ＣＴＳ対象ネットを配線混雑部分から迂回させつつ配置する工程とを有している。
【０００５】
また、下記特許文献２は、異なるクロックツリー間の回路間をつなぐデータ転送パスが存在しても、ＯＣＶ（On Chip Variation）に影響されずにクロックを分配するクロック分配回路に関する技術を開示する。具体的には、特許文献２は、回路図データと機能ブロックデータと設計ルールデータとに基づいて、半導体装置の配置配線領域に、第１クロック信号で動作する第１順序回路と第２クロック信号で動作する第２順序回路と、第１ＰＬＬ回路と、第２ＰＬＬ回路とを配置するステップと、第１ＰＬＬ回路から出力される第１クロック信号を第１順序回路に分配する第１クロック分配網と、第２ＰＬＬ回路から出力される第２クロック信号を第２順序回路に分配する第２クロック分配網とを形成するステップと、第１順序回路と第２順序回路との間に第１データ転送パスがある場合、第１クロック分配網の第１ＰＬＬ回路から第１順序回路までのクロック分配パスが有する複数の分岐ノードのうち第１ＰＬＬ回路側の最初の分岐ノードを除いたものから第１分岐ノードを選択し、第１分岐ノードから第１ＰＬＬ回路にフィードバックパスを形成するステップとを有するクロック分配回路の形成方法を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００-４８０５１号公報
【特許文献２】特開２００７-３３６００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
クロックタイミングの設計においては、タイミング収束の問題が重要であり、特に、チップ（半導体集積回路）上の物理的な位置やセル間距離等に依存して発生する遅延変動や電圧変動といった「チップ上のばらつき」（ＯＣＶ：On chip Variation）（以下「オンチップバリエーション」という。）も考慮する必要がある。オンチップバリエーションを考慮することで、実製品及びその使用環境により近い状態になるよう、設計パラメータの値を調整し、タイミング検証を行うことができるようになる。
【０００８】
クロックツリー合成では、得られるクロックツリーにおいて、セル間の論理的接続関係及び物理的距離が比較的小さな範囲に収まっている場合には、オンチップバリエーションの影響は軽微であり、クロックスキューは小さく、タイミング収束条件も比較的容易に充足させることができた。しかしながら、物理的距離が離れたリーフセル間にトゥルーパス（True Path）の接続関係がある場合、オンチップバリエーションを考慮すると、タイミング収束の問題が飛躍的に増大し、タイミング収束を図ることが困難であった。とりわけ、従前のクロックツリー合成では、セル間の論理的な接続関係に従ってセルの物理的配置が決定され、そこからクロックツリーを構築していたため、セルの論理的接続関係と物理的配置関係とが整合していない場合、タイミング収束を図ることが極めて困難な状況にあった。
【０００９】
そこで、本発明は、クロックツリー方式によるクロックタイミングの設計において、オンチップバリエーションを考慮しつつ、タイミング収束の問題を容易に解決することを目的とする。
【００１０】
より具体的には、本発明は、クロックツリー合成において、セルの論理的接続関係と物理的配置関係との整合性を考慮しながら、最適なクロックツリーを構築し、これによって、半導体集積回路のタイミング収束の問題を容易に解決する半導体設計支援装置及び半導体設計支援方法を提供することを目的とする。
【００１１】
また、本発明は、クロックツリー合成において、クロックライン上に配置されるべきバッファの個数を必要最小限に抑えることで、消費電力を抑えた半導体集積回路の設計を可能にする半導体設計支援装置及び半導体設計支援方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するための本発明は、以下に示す発明特定事項乃至は技術的特徴を含んで構成される。
【００１３】
ある観点に従う本発明は、クロックツリーを用いた半導体集積回路のレイアウト設計を支援する半導体設計支援装置において実行される方法であり得る。該方法は、半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを受け付けることと、前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定することと、前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定することと、前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成することと、を含む。
【００１４】
ここで、前記クロックツリーを構成することは、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線することを含み、前記クロックラインを配線することは、前記クロックラインの分岐ノードを決定することを含み得る。また、前記クロックラインの分岐ノードを決定することは、前記分岐ノードの上流側にバッファを配置することを含む。
【００１５】
前記方法は、特定された前記トゥルーパスに基づいて、前記物理レイアウトが決定された前記複数のセルのいくつかを選択し、該選択したいくつかのセルごとにクラスタを形成することをさらに含み得る。
【００１６】
前記クラスタを形成することは、前記タイミング制約条件ファイルに規定されたスラック値が小さい前記セルを選択することを含み得る。
【００１７】
また、前記クラスタを形成することは、前記複数のセルのうち、近接する前記セル同士を選択することを含み得る。
【００１８】
また、前記クラスタを形成することは、一の前記セルと他の前記セルとの間のスラック値の差が所定の閾値以下でない場合に、前記一のセルと前記他のセルとを異なるクラスタに属するようにクラスタリングすることを含み得る。
【００１９】
また、前記クラスタを形成することは、前記クラスタにおける前記セルの個数が所定数以下になるようにクラスタリングすることを含み得る。
【００２０】
前記分岐ノードを決定することは、形成された前記クラスタにおける前記セル間の前記クロックライン上に分岐ノードを形成することを含み得る。
【００２１】
また、前記分岐ノードを決定することは、形成された前記クラスタ間の前記クロックライン上に分岐ノードを形成することを含み得る。
【００２２】
また、前記分岐ノードを決定することは、前記クロックソースからのマンハッタン距離、前記セル間のマンハッタン距離、前記クロックラインが有する配線容量、及びバッファの駆動能力の少なくとも１つに基づいて決定され得る。
【００２３】
さらに、前記クラスタを形成することは、前記クラスタ間に形成された分岐ノードを頂点とする新たなクラスタを形成することを含み得る。
【００２４】
また、別の観点に従う本発明は、クロックツリーを用いた半導体集積回路のレイアウト設計を支援する半導体設計支援装置であり得る。該半導体設計支援装置は、半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを記憶する記憶部と、前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定する物理レイアウト生成部と、前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定するトゥルーパス特定部と、前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成するクロックツリー生成部とを含み得る。前記クロックツリー生成部は、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線し、前記クロックラインの分岐ノードを決定し、前記分岐ノードの上流側にバッファを配置するように構成され得る。
【００２５】
さらに、別の観点に従う本発明は、クロックツリーを用いた半導体集積回路のレイアウト設計を支援するための設計支援プログラムであり得る。すなわち、前記設計支援プログラムは、半導体設計支援装置のプロセッサに、半導体集積回路モデルに対するレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルの配置に関するフロアプランファイル、前記半導体集積回路モデルにおける前記セル間の論理的な接続関係を定義した論理接続情報ファイル、及び所定のクロックに基づいて駆動される前記セルのタイミング制約条件を定義したタイミング制約条件ファイルを受け付ける機能と、前記フロアプランファイル、前記論理接続情報ファイル、及び前記タイミング制約条件ファイルに基づいて、前記レイアウト領域における複数の前記セルのそれぞれの物理レイアウトを決定する機能と、前記論理接続情報ファイル及び前記タイミング制約条件ファイルに基づいて、前記物理レイアウトが決定された前記複数のセル間におけるトゥルーパスを特定する機能と、前記物理レイアウト及び前記トゥルーパスに基づいて、前記レイアウト領域にクロックツリーを構成する機能と、を実現させ得る。前記クロックツリーを構成させる機能は、上流のクロックソースから下流の前記セルに向かって延在するクロックラインを配線する機能を含み得る。また、前記クロックラインを配線する機能は、前記クロックラインの分岐ノードを決定する機能を含み得る。さらに、前記クロックラインの分岐ノードを決定する機能は、前記分岐ノードの上流側にバッファを配置する機能を含み得る。
【００２６】
さらに、本発明は、前記プログラムを記録した記録媒体としても把握し得る。
【発明の効果】
【００２７】
本発明によれば、クロックツリー方式によるクロックタイミングの設計において、オンチップバリエーションを考慮しつつも、タイミング収束の問題を容易に解決することができるようになる。
【００２８】
また、本発明によれば、クロックツリーのクロックライン上に配置されるバッファの数を必要最小限度に抑えることができるため、消費電力を低く抑えることができるようになる。
【００２９】
なお、本明細書等において、手段（部）とは、単に物理的手段を意味するものではなく、その手段が有する機能をソフトウェアによって実現する場合も含む。また、１つの手段が有する機能が２つ以上の物理的手段により実現されても良いし、２つ以上の手段の機能が１つの物理的手段により実現されても良い。
【００３０】
本発明の他の技術的特徴、目的、及び作用効果乃至は利点は、添付した図面を参照して説明される以下の実施形態により明らかにされる。
【図面の簡単な説明】
【００３１】
【図１】本発明の一実施形態に係る半導体設計支援装置を説明するためのブロックダイアグラムである。
【図２】本発明の一実施形態に係る半導体設計支援装置の設計支援処理部におけるクロックツリー合成機能を説明するためのブロックダイアグラムである。
【図３】本発明の一実施形態に係る半導体設計支援装置による設計支援処理を説明するフローチャートである。
【図４】図３に示したクロックツリー合成の詳細を示すフローチャートである。
【図５】図４に示したクロックツリー合成におけるクラスタリング処理の詳細を示すフローチャートである。
【図６】図４に示したクロックツリー合成におけるクロックラインの配線処理の詳細を示すフローチャートである。
【図７】本発明の一実施形態に係る半導体設計支援装置による設計支援処理における半導体集積回路モデルを仮想的に表現した概略図である。
【図８】本発明の一実施形態に係る半導体設計支援装置による設計支援処理における半導体集積回路モデルを仮想的に表現した概略図である。
【図９】本発明の一実施形態に係る半導体設計支援装置による設計支援処理における半導体集積回路モデルを仮想的に表現した概略図である。
【図１０】本発明の一実施形態に係る半導体設計支援装置による設計支援処理における半導体集積回路モデルを仮想的に表現した概略図である。
【図１１】本発明の一実施形態に係る半導体設計支援装置による設計支援処理における半導体集積回路モデルを仮想的に表現した概略図である。
【発明を実施するための形態】
【００３２】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。本発明は、その趣旨を逸脱しない範囲で種々変形（例えば各実施形態を組み合わせる等）して実施することができる。また、以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【００３３】
図１は、本発明の一実施形態に係る半導体設計支援装置を説明するためのブロックダイアグラムである。同図に示すように、本実施形態の半導体設計支援装置１００は、例えば、設計支援処理部１１０と、記憶部１２０と、ユーザインターフェース部１３０とを含んで構成される。半導体設計支援装置１００は、典型的には、コンピューティングデバイスであり、プロセッサの制御の下、所定の設計支援プログラムを実行することにより、半導体設計支援のための各種の機能を実現した装置である。このような装置は、一般に、ＣＡＤシステムやＥＤＡシステムと呼ばれ得る。
【００３４】
設計支援処理部１１０は、例えば、設計支援プログラムが実行されることにより具現化される各種の設計支援ツール１１１を提供し、所定の処理を実行する。設計支援ツール１１１は、例えば、論理合成ツール１１１ａ、フロアプランナ１１１ｂ、クロックツリー合成ツール１１１ｃ、及びタイミング解析ツール１１１ｄ、レイアウト設計ツール１１１ｅ等を含む。これらの設計支援ツール１１１ａ〜１１１ｄは、全体として１つの設計支援ツール１１１として構成されても良いし、それぞれが独立に構成され、適宜、相互に連携して実行するように構成されても良い。
【００３５】
記憶部１２０は、例えば、設計支援プログラム１２１及び各種の設計データファイル１２２等を記憶する。記憶部１２０は、例えば、プロセッサの一次記憶装置としてのメモリ及び／又は二次記憶装置としてのストレージデバイスにより実現される。
【００３６】
設計支援プログラム１２１は、設計支援ツール１１１を実現するためのプログラムであり、例えば、１つのプログラムモジュールから構成されても良いし、複数のプログラムモジュールから構成されても良い。設計データファイル１２２は、例えば、論理接続情報ファイル１２２ａ、フロアプランファイル１２２ｂ、及びタイミング制約条件ファイル１２２ｃ等を含む。論理接続情報ファイル１２２ａは、設計しようとする半導体集積回路におけるゲートレベルでのセル間の論理的な接続情報を定義する論理回路データファイルであり、例えば、ＲＴＬコードやネットリスト等が知られている。フロアプランファイル１２２ｂは、半導体集積回路上のレイアウト領域における所定の論理的機能を実現する少なくとも１以上のセルを含むブロックの配置に関するデータファイルである。タイミング制約条件ファイル１２２ｃは、所定のクロックに基づいて駆動されるセルの時間的な制約条件を定義したデータファイルであり、セルのタイミングスラックに関する記述（スラック値等）を含む。設計データファイル１２２のいくつかは、例えば、上述した関連する設計支援ツール１１１により動的に生成され、利用に供され得る。
【００３７】
ユーザインターフェース部１３０は、各種の設計支援ツール１１１を使用する設計者（ユーザ）にインタラクティブな操作環境を提供する。ユーザインターフェース部１３０は、典型的には、ディスプレイやキーボード及びマウス等のハードウェアとオペレーティングシステムやデバイスドライバ等のソフトウェアとの協働により実現される。
【００３８】
このような半導体設計支援装置１００は、例えば、プロセッサの制御の下、所定の設計支援プログラム１２１を実行し、ユーザによるインタラクティブな操作を介して、レイアウト設計、検証を行い、所望の半導体集積回路を作成することができる。
【００３９】
図２は、本発明の一実施形態に係る半導体設計支援装置１００の設計支援処理部１１０におけるクロックツリー合成を説明するためのブロックダイアグラムである。本例では、クロックツリー合成は、クロックツリー合成ツール１１１ｃによって提供される機能である。
【００４０】
同図に示すように、クロックツリー合成ツール１１１ｃは、例えば、物理レイアウト生成部２１０と、トゥルーパス特定部２２０と、クラスタリング部２３０と、クロックツリー生成部２４０といった機能構成要素により説明され得る。
【００４１】
物理レイアウト生成部２１０は、記憶部１２０上の論理接続情報ファイル１２２ａ、フロアプランファイル１２２ｂ、及びタイミング制約条件ファイル１２２ｃに基づいて、設計しようとする半導体集積回路のレイアウト領域における複数のセル及びセル間を接続するデータラインの物理的位置を決定し、物理レイアウトを生成し、これを保持する。物理レイアウトは、記憶部１２０に物理レイアウト情報ファイル１２２ｄとして一時的に格納されても良い。
【００４２】
トゥルーパス特定部２２０は、生成された物理レイアウトにおけるセル間のトゥルーパス（True Path）を特定する。トゥルーパスは、セル間において動作タイミング乃至はデータの依存関係を考慮する必要があるデータラインである。なお、セル間において動作タイミング乃至はデータの依存関係を考慮する必要がないデータラインは、フォルスパス（False Path）と呼ばれる。トゥルーパス特定部２２０は、物理レイアウトにおいて配置されたセル間のデータラインのそれぞれについて、記憶部１２０上の論理接続情報ファイル１２２ａ及びタイミング制約条件ファイル１２２ｃに基づいて、トゥルーパスであるか否かを判定し、トゥルーパスであるデータラインを特定する。
【００４３】
クラスタリング部２３０は、生成された物理レイアウトにおいて、関連性を有するセル同士を抽出し、これらによるクラスタを形成する。より具体的には、クラスタリング部２３０は、生成された物理レイアウトにおいて、下流側（すなわち、末端側のリーフに相当するセル）から上流側（すなわち、クロックソース）に向かって順に個々のセルを着目し、セルのスラック値を考慮しながら、近傍のセル同士を選択することによってクラスタを形成する。このことからわかるように、本例のようなクラスタリングでは、セルの論理的な階層関係が必ずしも考慮される必要はない。最初のクロックツリー合成が行われる前は、スラック値は、例えば、設計者が見積もった初期値が用いられ得る。クラスタリング部２３０は、典型的には、スラック値が小さいセルからクラスタリングを開始し得る。また、クラスタリング部２３０は、セル同士のスラック値の差が所定の閾値よりも大きいと判断する場合、該セルがそれぞれ異なるクラスタに属するように、クラスタリングを行う。これは、異なるクラスタに属するセル同士のタイミング制約条件にマージンを与えることで、タイミング解析の結果において、タイミング充足する可能性を高めるためである。また、クラスタリング部２３０は、各クラスタに含まれるべきセルの個数が所定数以下になるようにクラスタリングを行う。ここでいう所定数は、例えば、使用され得るバッファの最大駆動能力、設計ルールや設計ノウハウ等によって予め選択され得る。
【００４４】
クロックツリー生成部２４０は、生成された物理レイアウト内に、既に配置されているセルに対するクロックラインを配線すると共に、バッファが配置されるべき位置を決定しながら分岐ノードを形成し、該分岐ノードにバッファを配置することによって、クロックツリー合成（ＣＴＳ）を実行する。
【００４５】
具体的には、クロックツリー生成部２４０は、まず、クロックソースからクラスタにおける各セルに至るまで、例えばマンハッタン距離を考慮して、クロックラインを仮配線すると共に、該クラスタ内のセルに対してバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する。マンハッタン距離は、ＸＹ座標空間における各座標の差の絶対値の総和を２点間の距離とする距離概念として知られている。続いて、クロックツリー生成部２４０は、物理レイアウト上で近接するクラスタ間に対するバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する。つまり、これは、クラスタレベルでのクロックラインの配線及び分岐ノードの決定である。さらに、クロックツリー生成部２４０は、直前に決定したバッファに関連する分岐ノードを頂点とする、より上位レベルのクラスタを形成し、同様に、近接する該クラスタに対するバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する。上位レベルのクラスタを形成するため、クロックツリー生成部２４０は、例えば、クラスタリング部２３０を呼び出して、そのようなクラスタリングを実行させても良い。以降同様に、クロックツリー生成部２４０は、リーフからクロックソースに至るまで、クロックラインの配線及びバッファの配置の決定を繰り返し、クロックツリーを構築していく。
【００４６】
上述した分岐ノードの決定乃至はバッファの配置は、例えば、マンハッタン距離（例えば、クロックソースからのマンハッタン距離の最小値及び／又はクラスタ内におけるセル間のマンハッタン距離の最小値）、クロックラインの配線容量、及びバッファの駆動能力の少なくとも１つに依存して決定される。また、クラスタの形成には、典型的には、使用されるバッファの最大駆動能力が考慮されるため、これに依存して、バッファの配置が決定される。
【００４７】
クロックツリー生成部２４０は、クロックツリー合成により生成されたクロックツリーをクロックツリーファイル１２２ｅとして記憶部１２０に出力する。生成されたクロックツリーファイルは、例えば、タイミング解析ツール１１１ｄに参照され、タイミング解析が行われる。
【００４８】
タイミング解析ツール１１１ｄは、例えば静的タイミング解析（Static Timing Analysis：ＳＴＡ）を用いて、生成されたクロックツリーにおけるセルのスラック値を算出する。スラック値は、典型的には、タイミング制約条件が充足されるか否かを示す正又は負の値である。
【００４９】
以上のようにして、半導体設計支援装置１００のクロックツリー合成ツール１１１ｃは、物理レイアウトを決定した上で、セル間のトゥルーパスに従って、クロックラインの配線及び分岐ノードを決定することによって、クロックツリーを生成する。この場合、クロックツリー合成ツール１１１ｃは、リーフ側からソース側に向かって順に分岐ノードを決定していく。これにより、半導体設計支援装置１００は、クロックツリーにおけるタイミング収束を効率的に行うことができ、ＯＣＶに起因するタイミング収束の困難性を効率的に緩和することができる。
【００５０】
なお、タイミング制約条件を充足しないスラック値がある場合には、半導体設計支援装置１００は、算出されたスラック値を用いて、クロックツリー合成ツール１１１ｃに、再度、クロックツリーを合成させるよう、制御し得る。
【００５１】
図３は、本発明の一実施形態に係る半導体設計支援装置１００による設計支援処理を説明するフローチャートである。
【００５２】
同図を参照して、まず、半導体設計支援装置１００は、設計しようとする半導体集積回路についての各種の設計データファイル１２２、例えば、論理接続情報ファイル１２２ａ、フロアプランファイル１２２ｂ、及びタイミング制約条件ファイル１２２ｃを準備する（Ｓ３０１）。例えば、半導体設計支援装置１００は、論理合成ツール１１１ａを稼働させ、論理接続情報ファイル１２２ａを生成し、これをフロアプランナ１１１ｂに入力することによりフロアプランファイル１２２ｂを生成し、これをさらに論理合成ツール１１１ａにフィードバックすることにより、所望の論理接続情報ファイル１２２ａ及びフロアプランファイル１２２ｂを作成する。或いは、これらの設計データファイル１２２は、外部の設計支援ツールによって予め生成され、半導体設計支援装置１００に読み込まれても良い。
【００５３】
半導体設計支援装置１００は、次に、クロックツリー合成ツール１１１ｃ、論理接続情報ファイル１２２ａ、フロアプランファイル１２２ｂ、及びタイミング制約条件ファイル１２２ｃに基づいて、半導体集積回路のレイアウト領域において、複数のセル及びセル間を接続するデータラインの物理的位置を生成し、例えば図７に示すようなフロアプランを生成する（Ｓ３０２）。ここで、図７は、半導体集積回路としての生成されたフロアプランを仮想的に表現した概略図である。同図において、フロアプラン７００は、レイアウト領域７１０内に物理的なブロックサイズを考慮して配置乃至は配列された、ＰＬＬ回路７１１、各種のセル、すなわち、ＩＰコア７１２、メモリ７１３、及び順序回路セル７１４を含む。なお、同図に示すフロアプラン７００は、単一レイヤーで構成されているが、複数レイヤーで構成されても良い。
【００５４】
図３に戻り、半導体設計支援装置１００は、次に、生成したフロアプラン７００に基づいて、クロックツリー合成を行い、クロックツリーファイルを生成する（Ｓ３０３）。クロックツリー合成では、物理レイアウトに関する情報及びセル間のトゥルーパスに関する情報が参照される。クロックツリー合成の詳細は、後述する。
【００５５】
半導体設計支援装置１００は、次に、生成されたクロックツリーファイルに対してタイミング解析を行い（Ｓ３０４）、該クロックツリーファイルのタイミング制約条件を判定する（Ｓ３０５）。タイミング解析は、例えば静的タイミング解析が行われ、スラック値が計算される。
【００５６】
半導体設計支援装置１００は、タイミング解析の結果、タイミング制約条件を充足しないと判定する場合（Ｓ３０５のＮｏ）、例えば、ユーザインターフェース部１３０を介して、ユーザにその旨を通知し、ユーザの操作に従って、さらなるクロックツリー合成を行う（Ｓ３０３）。このように、クロックツリー合成は、生成されたクロックツリーについて、タイミング解析の結果がタイミング制約条件を充足するまで、繰り返される。
【００５７】
図４〜図６は、本発明の一実施形態に係る半導体設計支援装置１００による設計支援処理を説明するフローチャートであり、具体的には、図３に示したクロックツリー合成（Ｓ３０３）の詳細を示している。また、図８〜図１１は、クロックツリー合成の各工程における半導体集積回路を仮想的に表現した概略図である。
【００５８】
すなわち、図４に示すように、クロックツリー合成では、半導体設計支援装置１００は、まず、論理接続情報ファイル１２２ａ、フロアプランファイル１２２ｂ及びタイミング制約条件ファイル１２２ｃに基づいて、生成されたフロアプラン７００において配置されたセル間のデータラインのそれぞれについて、トゥルーパスであるか否かを判定し、トゥルーパスであるデータラインを特定する（Ｓ４０１）。
【００５９】
次に、半導体設計支援装置１００は、物理レイアウトにおいて、関連性を有するセルを抽出し、クラスタリングを行う（Ｓ４０２）。
【００６０】
すなわち、半導体設計支援装置１００は、まず、フロアプラン７００において、末端のリーフのセルに着目し、スラック値が小さいセルをクラスタリングの候補として１つ選択する（図５のＳ５０１）。続いて、半導体設計支援装置１００は、選択したセルに近接する相手のセルを１つ選択する（Ｓ５０２）。
【００６１】
次に、半導体設計支援装置１００は、選択したセル同士のスラック値の差が所定の閾値以下であるか否かを判断する（Ｓ５０３）。半導体設計支援装置１００は、選択したセル同士のスラック値の差が所定の閾値以下でないと判断する場合（Ｓ５０３のＮｏ）、当該セル同士を別々のクラスタにクラスタリングするため、該相手のセルを現在のクラスタリング候補から除外して（Ｓ５０４）、半導体設計支援装置１００は、近接する全てのリーフセルについてクラスタリングを行ったか否かを判断し（Ｓ５０７）、末端のリーフにおいて、近接する全てのリーフセルについてクラスタリングを行っていないと判断する場合には（Ｓ５０７のＮｏ）、次の近接するセルを選択するために、Ｓ５０１に戻る。
【００６２】
一方、半導体設計支援装置１００は、選択したセル同士のスラック値の差が所定の閾値以下であると判断する場合（Ｓ５０３のＹｅｓ）、続いて、クラスタ内のセルの個数が所定数以下であるか否かを判断する（Ｓ５０５）。半導体設計支援装置１００は、クラスタ内のセルの個数が所定数以下であると判断する場合（Ｓ５０５のＹｅｓ）、選択したセルをクラスタに含めるようクラスタリングする（Ｓ５０６）。一方、半導体設計支援装置１００は、クラスタ内のセルの個数が所定数以下でないと判断する場合（Ｓ５０５のＮｏ）、該相手のセルを現在のクラスタリング候補から除外する（Ｓ５０４）。半導体設計支援装置１００は、近接する全てのリーフセルについてクラスタリングを行ったか否かを判断し（Ｓ５０７）、近接する全てのリーフセルについてクラスタリングを行っていないと判断する場合には（Ｓ５０７のＮｏ）、次のクラスタを形成するために、Ｓ５０１の処理に戻る。
【００６３】
このようにして、生成されたフロアプランを前提にして、生成しようとするクロックツリーにおけるリーフのセルに基づく最初のクラスタ（最下位レベルのクラスタ）が形成されることになる。
【００６４】
例えば、図８は、フロアプランにおけるレイアウト領域の一部に配置された順序回路セル群ＦＦ１〜ＦＦ７の例を示している。同図において、セルＦＦ同士を結ぶ点線ＴＰは、トゥルーパスの関係を有することを示し、いくつかのセルＦＦを囲む二点鎖線は、形成されたクラスタＣ１〜Ｃ３を示している。なお、ここでいうトゥルーパスは、データラインで接続パスであって、クロックツリーにおけるクロックラインの接続パスとは異なる。同図では、例えば、セルＦＦ２とセルＦＦ６との間は、トゥルーパスを有する関係にあるが、スラック値の差が所定の閾値以上であったため、これらのセルは、異なるクラスタにクラスタリングされていることが示されている。また、セルＦＦ３とセルＦＦ４とは、近接するセル同士であるが、トゥルーパスの関係を有しないため、異なるクラスタにクラスタリングされている。なお、簡略化のため、図示していないが、ＩＰコア７１２やメモリ７１３もまたセルとして、クロックツリー合成の対象であり、同様に、トゥルーパスの関係を有し得る。
【００６５】
図４に戻り、半導体設計支援装置１００は、生成されたクラスタ内に、セルに対するクロックラインを配線すると共にバッファを配置することによって、クロックツリーを漸次に構築していく（Ｓ４０３）。
【００６６】
この工程では、半導体設計支援装置１００は、まず、クロックソースから最下位レベルのクラスタにおける各セルに至るまで、例えばマンハッタン距離を考慮して、クロックラインを仮配線する（図６のＳ６０１）。続いて、半導体設計支援装置１００は、クラスタ内の例えば２つのセルに対するバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する（Ｓ６０２）。バッファの配置は、例えば、マンハッタン距離（例えば、クロックソースからのマンハッタン距離の最小値及び／又はクラスタ内におけるセル間のマンハッタン距離の最小値）、クロックラインの配線容量、及びバッファの駆動能力の少なくとも１つに依存して決定される。
【００６７】
次に、半導体設計支援装置１００は、クラスタのそれぞれにおいてクロックラインの配線及びバッファの配置を決定したか否かを判断し（Ｓ６０３）、全てのクラスタにおいてクロックラインの配線及びバッファの配置を決定するまで、上記の処理を繰り返す。例えば、図９は、クラスタリングされた図８に示したようなクラスタにおけるクロックラインの配線及びバッファの配置を示している。すなわち、同図では、クラスタＣ１〜Ｃ３における分岐ノードＮ１〜Ｎ４及び分岐ノードＮ１〜Ｎ４の上流側にそれぞれ配置されたバッファＢＵＦ１〜ＢＵＦ４が示されている。
【００６８】
続いて、半導体設計支援装置１００は、物理レイアウト上で近接するクラスタ間に対するバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する（Ｓ６０４）。
【００６９】
例えば、図１０は、図９に示した近接するクラスタ間に対するクロックラインの配線及びバッファの配置を示している。すなわち、同図では、一例として、クラスタＣ１とクラスタＣ２とに対して形成された分岐ノードＮ１１及びその上流側に配置されたバッファＢＵＦ１１が示されている。
【００７０】
半導体設計支援装置１００は、次に、形成した分岐ノードがクロックソースまで到達したか否かを判断する（Ｓ６０５）。半導体設計支援装置１００は、形成した分岐ノードがクロックソースまで到達したと判断する場合には（Ｓ６０５のＹｅｓ）、クロックラインの配線及びバッファの配置によるクロックツリーの構築を終了する。
【００７１】
一方、半導体設計支援装置１００は、形成した分岐ノードがクロックソースまで到達していないと判断する場合には（Ｓ６０５のＮｏ）、直前に決定したバッファに関連する分岐ノードを頂点とする新たな上位レベルのクラスタを形成する（Ｓ６０６）。続いて、半導体設計支援装置１００は、近接する該形成したクラスタに対するバッファを配置すべき最適位置を見つけ出して、そこに分岐ノードを形成して、クロックラインの配線及びバッファの配置を決定する（Ｓ６０６）。例えば、図１１は、図１０に示した上位レベルのクラスタ間に対するクロックラインの配線及びバッファの配置を示している。すなわち、同図では、一例として、クラスタＣ１１とクラスタＣ１２とに対して形成された分岐ノードＮ２１及びその上流側に配置されたバッファＢＵＦ２１が示されている。
【００７２】
半導体設計支援装置１００は、以降同様に、より上位レベルのクラスタを形成しながら、クロックソースに至るまで、クロックラインの配線及びバッファの配置の決定を繰り返す。
【００７３】
このように、本例のクロックツリー合成では、生成された物理レイアウトを前提にして、セル間のトゥルーパスを考慮し、リーフ側からクロックラインの配線及びバッファの配置が順次に決定され、クロックツリーが構築されることになる。この場合、クロックツリー合成ツール１１１ｃは、リーフ側からソース側に向かって順に分岐ノードを決定していく。これにより、半導体設計支援装置１００は、クロックツリーにおけるタイミング収束を効率的に行うことができ、ＯＣＶに起因するタイミング収束の困難性を効率的に緩和することができる。
【００７４】
図３に戻り、半導体設計支援装置１００は、クロックツリーファイル１２２ｅを構築すると、上述したように、タイミング解析ツール１１１ｄを稼働させ、タイミング解析を実行する（Ｓ３０４）。タイミング解析の結果、例えば、該クロックツリーにおける各セルのスラック値が得られる。タイミング制約条件を充足しないスラック値がある場合（Ｓ３０５のＮｏ）、クロックツリー合成ツール１１１ｃにより、再度、クロックツリーが合成され得る。
【００７５】
例えば、半導体設計支援装置１００は、各クラスタごとに、得られた各セルの最小のセットアップ・スラック値及び最小のホールド・スラック値に基づき、タイミング・ウィンドウを求める。続いて、半導体設計支援装置１００は、求めたタイミング・ウィンドウにおいて、論理接続情報ファイル１２２ａにおけるトゥルーパスに関する情報に基づいて、該セル間のクロックタイミングを所定値だけ変更して調整する。例えば、半導体設計支援装置１００は、セットアップ・タイミング及びホールド・タイミングのそれぞれの制約が同時に充足するように、データパスの遅延を調整し、及び／又は前段の順序回路セルのクロック遅延を調整する。さらに、半導体設計支援装置１００は、クロックラインの配線の引き回し位置を変更し、及び／又は分岐ノードの位置を変更し、或いは該分岐ノードからのバッファの位置を僅かにシフトさせ、クロックの遅延量を変更する。このようにして、半導体設計支援装置１００は、設計しようとする半導体集積回路のタイミング制約条件が充足されるよう、クロックツリーの再合成において、各種のパラメータの調整を行う。なお、このようなクロックツリーの再合成において、従前のＰ＆Ｒといった自動配置配線ツールや他のツールの使用を排除するものではない。
【００７６】
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
【００７７】
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
【００７８】
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ（技術的事項）を、適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。
【産業上の利用可能性】
【００７９】
本発明は、半導体集積回路の設計分野に広く利用することができる。
【符号の説明】
【００８０】
１００…半導体設計支援装置
１１０…設計支援処理部
１１１…設計支援ツール
１１１ａ…論理合成ツール
１１１ｂ…フロアプランナ
１１１ｃ…クロックツリー合成ツール
１１１ｄ…タイミング解析ツール
１１１ｅ…レイアウト設計ツール
１２０…記憶部
１２１…設計支援プログラムファイル
１２２…設計データファイル
１２２ａ…論理接続情報ファイル
１２２ｂ…フロアプランファイル
１２２ｃ…タイミング制約条件ファイル
１２２ｄ…物理レイアウト情報ファイル
１２２ｅ…クロックツリーファイル
１３０…ユーザインターフェース部
７００…フロアプラン
７１０…レイアウト領域
７１１…ＰＬＬ
７１２…ＩＰコア
７１３…メモリ
７１４…順序回路セル
【図１】
2017123010.tif 000003
【図２】
2017123010.tif 000004
【図３】
2017123010.tif 000005
【図４】
2017123010.tif 000006
【図５】
2017123010.tif 000007
【図６】
2017123010.tif 000008
【図７】
2017123010.tif 000009
【図８】
2017123010.tif 000010
【図９】
2017123010.tif 000011
【図１０】
2017123010.tif 000012
【図１１】
2017123010.tif 000013