(57)【要約】【課題】クロックスキューを最小化できる半導体集積回路の設計装置を提供する。【解決手段】フリップフロップ移動手段１０４は、論理セル及びフリップフロップの配置結果と、フリップフロップに対してクロック信号を供給するクロック分配回路の配置配線結果とを参照し、フリップフロップを、クロック分配回路における最終段のクロック駆動バッファ周辺に移動する。クロック分配回路再配置配線手段１０５は、フリップフロップ移動後の論理セル及びフリップフロップの配置結果を参照して、クロック分配回路の再配置・再配線を行う。【選択図】図１
2009188093.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを用い、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する方法であって、
前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップと、
前記コンピュータが、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるステップとを有する半導体集積回路の設計方法。
【請求項２】
前記コンピュータが、前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップと、前記再配置配線結果をクロック分配回路の配置配線結果に反映させるステップとを、所定の収束条件を満たすまで繰り返し実行する、請求項１に記載の半導体集積回路の設計方法。
【請求項３】
前記再配置配線結果をクロック分配回路の配置配線結果に反映させるステップでは、前記クロック分配回路の配置配線結果を参照して、前記クロック駆動バッファ及びクロック配線の少なくとも一部を削除し、前記クロック駆動バッファ及びクロック配線の再配置配線を行う、請求項１又は２に記載の半導体集積回路の設計方法。
【請求項４】
前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップに先行して、
前記コンピュータが、設計対象の半導体集積回路の設計情報を参照して、前記論理素子及び順序回路素子の配置を決定し、論理素子及び順序回路素子の配置結果を生成するステップと、
前記コンピュータが、前記論理素子及び順序回路素子の配置結果を参照して、クロック分配回路の配置配線を決定し、クロック分配回路の配置配線結果を生成するステップとを更に有する、請求項１〜３の何れか一に記載の半導体集積回路の設計方法。
【請求項５】
前記クロック分配回路が、クロックゲーティング信号に応答して前記順序回路素子へのクロック信号の供給を停止するクロックゲーティング回路を更に含み、前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップでは、前記順序回路素子をゲーティング信号でクラスタリングし、同じクラスタに属する順序回路素子を、各クラスタに対応するゲーティング信号が入力される最終段のクロック駆動バッファ周辺に再配置する、請求項１〜４の何れか一に記載の半導体集積回路の設計方法。
【請求項６】
再配置配線結果をクロック分配回路の配置配線結果に反映させるステップに後続して、前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照して、前記論理素子の再配置を行い、論理素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップを更に有する、請求項１〜５の何れか一に記載の半導体集積回路の設計方法。
【請求項７】
前記論理素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップでは、前記順序回路素子の位置を固定し、前記順序回路素子間の論理素子の位置を再配置する、請求項６に記載の半導体集積回路の設計方法。
【請求項８】
コンピュータに、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する処理を実行させるプログラムであって、前記コンピュータに、
前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる処理と、
前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させる処理とを実行させるプログラム。
【請求項９】
論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する設計装置であって、
前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる順序回路素子再配置手段と、
前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して、前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるクロック分配回路再配置配線手段とを有する半導体集積回路の設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計装置、方法、及び、プログラムに関し、更に詳しくは、論理素子及び順序回路素子とクロック分配回路とを含む半導体装置を設計する設計装置、方法、及び、プログラムに関する。
【背景技術】
【０００２】
同期式半導体集積回路は、演算及び演算の制御を行うための論理素子（以下、論理セル又は論理ゲートとも呼ぶ）と、論理素子群の動作の同期を取るための順序回路素子（フリップフロップ又はＦＦとも呼ぶ）とを有する。フリップフロップには、クロック分配回路を用いて、周期的に発振するクロック信号が供給される。フリップフロップは、クロック信号の立ち上がり又は立ち下がりエッジに応じて、保持しているデータを論理素子に供給する。論理素子は、供給されたデータを入力として演算及び演算の制御を行い、その結果を、フリップフロップに保存する。このような処理は、周期的に変化するクロック信号の立ち上がり又は立ち下がりエッジに応じて繰り返し行われる。
【０００３】
フリップフロップにクロック信号を分配・供給するクロック分配回路は、クロック駆動バッファとクロック配線とを含む。図１０に、クロック分配回路を示す。クロックルートバッファ１３に供給されたクロック信号は、クロックルートバッファ１３にて２つに分岐され、各クロックバッファ１４に供給される。各クロックバッファ１４は、クロック配線１５を介して、各フリップフロップ１２にクロック信号を供給する。
【０００４】
同期式半導体集積回路を、クロック信号を基準にして、正常なタイミングで動作させるためには、クロック信号を同じタイミングで分配する必要がある。理想的なクロック信号分配回路の配置配線は、半導体基板上の何れの場所においても、同一のクロック信号波形が得られることである。しかし、実際には、クロック信号を引き回す配線、接続しているセルの配置などによって、フリップフロップにクロック信号が到着する時刻に差が生じる。フリップフロップ集合の中で、クロック信号が最も早く到着する時刻と、クロック信号が最も遅く到着する時刻との時間の差を、クロックスキュー（クロック信号到着時間差）と呼ぶ。このクロックスキューが大きいと、回路は正常動作しなくなる。クロック分配回路の配置配線は、可能な限りクロックスキューを最小とすることが要求される。
【０００５】
クロックスキューは、主に、設計段階で生じるものである。そのため、クロック分配回路の配置配線では、高精度のクロックスキュー管理が要求される。しかしながら、大規模半導体集積回路の設計では、全てのフリップフロップに、クロックを正確に同時に供給することは困難になりつつある。
【０００６】
クロックスキューを最小化するクロック分配回路の配置配線手法として、特許文献１、特許文献２に記載の手法がある。これら文献では、クロック分配回路を構築していく際に、フリップフロップから順に、ボトムアップ的に２分岐を構成するようにゼロスキュー併合と呼ぶ、常に、その木のスキューが０（この状態をゼロスキューと呼ぶ）となるようにクロックツリーを生成していく。この処理を、フリップフロップ側から順に、クロックルートバッファまで繰り返すことで、クロック分配回路の配置配線（図１０）が得られる。
【０００７】
図１１に、一般的な半導体集積回路の設計のフローを示す。半導体集積回路の設計では、まず、半導体集積回路を構成する論理セル及びフリップフロップの配置を行う（ステップＳ１）。次いで、論理セル及びフリップフロップの配置結果に応じて、全てのフリップフロップへの遅延が同じになるように、クロック分配回路を配置・配線する。（ステップＳ２）。その後、論理セル間の配線設計を行い（ステップＳ３）、半導体集積回路全体の配置配線設計が完了する。
【０００８】
図１２に、論理セル及びフリップフロップの配置後の設計状態を示す。ステップＳ１で論理セル１１及びフリップフロップ１２の配置を行うことで、図１２に示す設計状態が得られる。図１３に、クロック分配回路が配置・配線された設計状態を示す。ステップＳ２にて、クロック分配回路を配置・配線することで、図１２に示す設計状態から、図１３に示す設計状態が得られる。図１４に、論理セル間を配線した設計状態を示す。ステップＳ３にて、論理セル１１間の配線を行うことで、図１３に示す設計状態から、図１４に示す設計状態が得られる。
【０００９】
他にも、近年、更なるクロックスキューの最小化を目的として、フリップフロップの配置を制御する方法が開発されている（非特許文献１参照）。非特許文献１では、クロックスキューの最小化を目的として、論理セル及びフリップフロップの配置段階で、後続のクロック分配回路の配置配線でゼロスキューを実現しやすいように、フリップフロップの配置を制御している。
【００１０】
ここで、クロックレイアウトに関する技術として、特許文献３に記載の技術がある。特許文献３では、論理回路の設計領域を、複数の線分により、複数の領域に分割する。設計領域に配置されたセルのうち、フリップフロップを判別し、各領域のフリップフロップの数をカウントして、領域間でのフリップフロップの差が最小となるように、フリップフロップを再配置する。その後、領域の分割線と交差する配線の数が最小となるように、フリップフロップ以外のセルを再配置する。このようにすることで、クロック設計において、バッファの挿入も考慮した混雑度の緩和を図ることが可能となる。
【００１１】
【特許文献１】特開２００７−１２３３３６号公報
【特許文献２】特許第３２９９８４２号公報
【特許文献３】特開２００５−２５８６５７号公報
【非特許文献１】Yongqian Lu, C. N. Sze, Xianlong Hong, Qiang Zhou, Yici Cai, Liang Huang, and Jiang Hu, “Navigating registers in placement for clock network minimization”, in Proc. Design Automation Conf., pp.176-181,2005
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１及び特許文献２では、半導体集積回路を構成する論理セル及びフリップフロップを配置した後、その配置結果を固定して、クロック分配回路の配置配線設計が行われる。このため、フリップフロップの位置が、必ずしも、後続のクロック分配配置配線においてゼロスキューを実現するのに適したものになっているとは限らない。特に、フリップフロップの密度がバランスされて配置されていない場合、ゼロスキューを実現することは困難である。
【００１３】
上記問題に対し、論理セル及びフリップフロップの設計段階で、後続のクロック分配回路の配置配線でゼロスキューを実現しやすいように、フリップフロップの配置を制御する方式が提案されている。その場合、ある程度のフリップフリップの密度平均化が可能となり、クロックスキューの最小化が容易となる。しかし、それでも、後続処理として行われるクロック分配回路の配置配線設計を精度よく予測して、論理セル及びフリップフロップの配置を行うことには限度がある。
【００１４】
また、特許文献３では、フリップフロップを、各領域に含まれるフリップフロップ数が平均化されるように移動した後に、クロックバッファの配置を行う。結果として、クロックバッファとフリップフロップとの距離を近づけることができるので、スキューを小さくすることは可能である。しかし、領域間のフリップフロップの移動では、フリップフロップの正確な座標までは決めていないため、クロックバッファとフリップフロップとの間の距離の上限を所定距離以内に収めることを保証できないということが問題となる。
【００１５】
ここで、近年、低消費電力化を目的として、動作する必要がない状態にあるフリップフロップへのクロック信号の供給を一時的に停止する制御を行うクロックゲーティング手法の導入が盛んになっている。図１５に、クロックゲーティングセルを含むクロック分配回路の配置配線の例を示す。ここでは、フリップフロップ集合Ｇ１（１，３，８，７，１０，１２）と、フリップフロップ集合Ｇ２（２，４，５，１１，６，９，１３，１４）とが、それぞれ同一のクロックゲーティング信号に接続するゲーティングセル（１６−１〜１６−４）に接続している。
【００１６】
ゲーティングクロックを採用する場合、クロックスキューの最小化は、更に複雑な問題となる。すなわち、クロック分配回路に、低消費電力化のためのゲーティングセルが含まれる場合、クロックバッファへのフリップフロップの割当てには追加制約が生じる。このため、クロックスキューの最小化は、更に困難となる。
【００１７】
本発明は、論理素子と順序回路素子とを含む半導体集積回路の設計にて、クロックスキューの最小化が可能な半導体集積回路の設計装置、方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するために、本発明の半導体集積回路の設計方法は、コンピュータを用い、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する方法であって、前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップと、前記コンピュータが、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるステップとを有することを特徴とする。
【００１９】
本発明のプログラムは、コンピュータに、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する処理を実行させるプログラムであって、前記コンピュータに、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる処理と、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させる処理とを実行させることを特徴とする。
【００２０】
本発明の半導体集積回路の設計装置は、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する設計装置であって、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる順序回路素子再配置手段と、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して、前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるクロック分配回路再配置配線手段とを有することを特徴とする。
【発明の効果】
【００２１】
本発明の半導体集積回路の設計装置、方法、及び、プログラムでは、設計対象の半導体集積回路におけるクロックスキューを最小化できる。
【発明を実施するための最良の形態】
【００２２】
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図１は、本発明の第１実施形態の半導体集積回路の設計装置を示している。設計装置は、チップ情報入力手段１０１、論理セルとフリップフロップの配置手段１０２、クロック分配回路配置配線手段１０３、フリップフロップ移動手段１０４、クロック分配回路再配置配線手段１０５、論理セルの配置手段１０６、及び、論理セル間の配線手段１０７を有する。設計装置は、制御装置、記憶装置、入力装置、及び、表示装置を有する一般的なコンピュータで構成される。設計装置内の各部は、記憶装置に格納されたプログラムに従って動作する制御装置により、ＲＯＭ、ＲＡＭなどの記憶装置上に構築され、制御される。
【００２３】
チップ情報入力手段１０１は、設計対象となる半導体集積回路チップのゲートレベルのネットリストに関する情報（チップデータ）を、フリップフロップ間のパス遅延制約情報と共に、記憶装置に記憶する。論理セルとフリップフロップの配置手段１０２は、チップデータ及びパス遅延制約情報を参照し、ネットリストのセル間接続とフリップフロップ間のタイミング制約とに基づいて、論理セルとフリップフロップとの配置設計を行い、設計結果を記憶装置に記憶する。この配置手段には、既存の配置手段を用いることができる。クロック分配回路配置配線手段１０３は、論理セル及びフリップフロップの配置設計結果を参照して、各フリップフロップにクロック信号を分配する回路の配置配線設計を行い、設計結果を記憶装置に記憶する。この配置配線手段にも、既存のクロック分配回路配置配線手段を用いることができる。
【００２４】
フリップフロップ移動手段１０４は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、各フリップフロップを、クロック分配回路にて、フリップフロップに対して最終的にクロック信号を供給する末端のクロック駆動バッファ（最終段クロックバッファ）の周辺に移動する。フリップフロップの移動では、フリップフロップ間の論理のタイミング悪化を最小化するため、最終段クロックバッファのうちで移動距離が最小となる最終段クロックバッファ周辺に、フリップフロップを移動する。その際、フリップフロップ同士の重なりは許容しないが、フリップフロップと論理セルとの重なりは許容する。フリップフロップ移動手段１０４は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。
【００２５】
クロック分配回路再配置配線手段１０５は、フリップフロップの移動後の論理セル及びフリップフロップの配置設計結果を参照し、クロック分配回路を再生成する。クロック分配回路の再生成では、クロックバッファの再配置とクロック接続の再配線とを行う。その際、クロック分配回路再配置配線手段１０５は、再生成前のクロック分配回路の配置配線設計結果を参照して、前回のクロック分配回路の配置配線設計結果を修正することで、クロック分配回路の再生成を行ってもよい。クロック分配回路再配置配線手段１０５は、クロック分配回路の再配置配線の結果を、クロック分配回路の配置配線設計結果に反映させる。設計装置は、フリップフロップ移動手段１０４によるフリップフロップの移動と、クロック分配回路再配置配線手段１０５によるクロック分配回路の再配置・再配線とを繰り返し行い、クロックスキューを最小化する。
【００２６】
論理セルの配置手段１０６は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照し、フリップフロップの位置を固定して、論理セルの再配置を行う。このとき論理セルの配置手段１０６は、論理回路動作を変更しない範囲で、バッファ挿入など、論理回路の変形を行う。論理セル同士、及び、論理セルとフリップフロップとの重なりは許容しない。論理回路の変形を含む配置処理は、物理合成とも呼ばれる。この物理合成には、既存の物理合成手段を用いることができる。論理セルの配置手段１０６は、物理合成結果を、論理セル及びフリップフロップの配置設計結果に反映させる。論理セル間の配線手段１０７は、論理セル及びフリップフロップの配置設計結果を参照して、論理セル及びフリップフロップ間の配線設計を行い、設計結果を記憶装置に記憶する。この配線手段には、既存の配線手段を用いることができる。
【００２７】
続いて、各手段における動作を詳細に説明する。チップ情報入力手段１０１には、論理回路（ネットリスト）と、パス制約情報とが入力される。チップ情報入力手段１０１は、入力された論理回路とパス制約情報とを、論理セルとフリップフロップの配置手段１０２に出力する。論理セルとフリップフロップの配置手段１０２は、チップ情報入力手段１０１に入力された論理回路に対して、論理セル及びフリップフロップの配置設計を行い、結果をクロック分配回路配置配線手段１０３に出力する。クロック分配回路配置配線手段１０３は、クロック分配回路の配置配線設計を行い、結果をフリップフロップ移動手段１０４に出力する。この段階までで、図１３に示す設計状態が得られる。この状態では、各フリップフロップへのクロックバッファからの配線の長さに違いがあるため、クロックスキューが生じている。
【００２８】
フリップフロップ移動手段１０４は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、各フリップフロップを、各フリップフロップが接続しているクロックバッファ周辺に移動する。フリップフロップの移動では、フリップフロップ間の論理のタイミング悪化を最小化するために、移動距離が最小となるようにフリップフロップを移動する。各フリップフロップは、接続するクロックバッファ周辺に配置されるため、接続するクロックバッファからフリップフロップまでの配線が最小化され、結果として、クロックスキューが最小化される。フリップフロップ移動手段１０４は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。
【００２９】
クロック分配回路再配置配線手段１０５は、フリップフロップ移動後の論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照し、移動後のフリップフロップ位置に対して、クロック分配回路を再生成し、結果を、クロック分配回路の配置配線設計結果に反映させる。クロック分配回路の再生成では、フリップフロップの位置を固定した後、クロック分配回路の一部又は全てを一旦削除し、移動後のフリップフロップ位置に対して、クロックバッファの再配置及びクロック配線の再配線を行う。このクロック分配回路の再生成は、移動後のフリップフロップ位置に合わせてクロックバッファの配置を行うので、再生成の前後で、クロックバッファの位置が変更されることがある。
【００３０】
図２に、フリップフロップを移動し、クロック分配回路を再生成した状態を示す。図１３に示す状態から、フリップフロップ１２をクロックバッファ１４周辺に移動し、クロック分配回路再配置配線手段１０５によりクロック分配回路を再生成することで、図２に示す設計状態が得られる。論理セル１１については、フリップフロップ移動手段１０４による移動の対象外なので、図２と図１３とで、位置は同じであり、フリップフロップ１２と論理セル１１とで重なりが生じている。クロックバッファのサイズは、接続するフリップフロップの数に応じて変更される。
【００３１】
なお、フリップフロップのクロックバッファ周辺への移動に際しては、フリップフロップが整列配置されるように、フリップフロップを移動することができる。この場合を、図３に示す。この例では、フリップフロップを、最終段クロックバッファ周辺に、フリップフロップ配置が理想形状となるように、移動している。このようにする場合は、クロック分配回路の再生成により、クロック分配を、理想形状に近い形で行うことができる。
【００３２】
設計装置は、フリップフロップ移動手段１０４によるフリップフロップ１２の移動と、クロック分配回路再配置配線手段１０５によるクロック分配回路の再配置配線とを、所定の収束条件が満たされるまで、繰り返し行う。繰り返し回数の上限を決めておき、繰り返し回数が上限に達したときは、その段階で繰り返しを終了してもよい。収束条件や繰り返し回数の上限値は、開発者が、外部より設定可能にしておく。
【００３３】
収束条件としては、「クロックバッファとフリップフロップとの間の距離が所定距離以内で、かつ、クロックバッファ１つあたりのフリップフロップの接続数が所定数以下」という条件が考えられる。この場合、フリップフロップの移動、及び、クロック分配回路の再生成により、クロックバッファとフリップフロップとの距離が所定距離以内に収まらないときは、フリップフロップの移動、及び、クロック分配回路をやり直す。フリップフロップの移動とクロック分配回路の再生成とを、収束条件を満たすまで繰り返すことで、クロックバッファとフリップフロップとの間の距離が所定距離以内となることを保証でき、フリップフロップ位置が最適化される。
【００３４】
論理セルの配置手段１０６は、フリップフロップ移動後の論理セル及びフリップフロップの配置設計結果と、再生成されたクロック分配回路の設計結果とを参照して、論理セルの再配置を行う。この論理セルの再配置は、フリップフロップ位置を固定して行う。図４に、論理セルを再配置した設計状態を示す。図２に示す状態に対して、論理セルの配置手段１０６が論理セル１１を再配置することで、図４に示す設計状態が得られる。論理セルの再配置では、論理セル１１同士、及び、論理セル１１とフリップフロップ１２との重なりは許容しない。フリップフロップ１２の移動に伴い、論理セル１１の入出力となるフリップフロップ１２間の距離が伸びた場合は、必要に応じてバッファの追加を行うなど、論理回路の変更を行う。論理セルの再配置を行うことで、フリップフロップ移動により生じる可能性があるタイミング違反が解消される。
【００３５】
最後に、論理セル間の配線手段１０７は、論理セル及びフリップフロップ間の配線設計を行う。図５に、配線設計結果を示す。論理セル間の配線手段１０７は、論理セル１１／フリップフロップ１２間のセル間配線を設計する。図４に示す設計状態に対して、論理セル及びフリップフロップ間の配線を施すと、図５に示す設計状態が得られる。以上により、対象となる論理回路の配置配線が完了する。
【００３６】
図６に、各設計段階における半導体集積回路のイメージを示す。なお、同図では、説明簡略化のため、クロック分配回路については、最終段のクロックバッファのみを示している。すなわち、図２に示すクロックルートバッファ１３や、途中段のクロックバッファ１４は省略している。論理セルとフリップフロップの配置手段１０２は、論理セル及びフリップフロップの配置設計を行い、その結果として、初期配置結果２１を出力する。クロック分配回路配置配線手段１０３は、この初期配置結果２１に対して、クロック分配回路の配置・配線を行い、クロック分配回路配置配線結果２２を出力する。フリップフロップ移動手段１０４は、クロック分配回路配置配線結果２２に対して、最終段クロックバッファ周辺にフリップフロップを移動し、フリップフロップ移動結果２３を出力する。
【００３７】
クロック分配回路再配置配線手段１０５は、フリップフロップ移動結果２３に対して、再度、クロック分配回路を生成し、クロック分配回路再配置配線結果２４を出力する。各フリップフロップは、最終段クロックバッファ周辺に移動されているため、フリップフロップが複数のクラスタにまとまっている。この状態に対してクロック分配回路の再生成を行うことで、再生成前に比して、より少ないクロックバッファ数で、クロック分配回路を実現できる。ただし、フリップフロップの移動後にクロック分配回路の再生成を行うことで、クロックバッファとフリップフロップとの間の距離が、フリップフロップ移動及びクロック分配回路の再生成前に比して長くなり、クロックバッファとフリップフロップとの間の距離の上限値よりも長くなることがある。そのような場合には、フリップフロップの移動とクロック分配回路の再生成をやり直して、フリップフロップ位置の最適化を図る。
【００３８】
本実施形態では、論理セル及びフリップフロップの配置設計と、クロック分配回路の配置配線設計とを行った後に、クロックバッファとフリップフロップとの位置関係に基づいて、フリップフロップを、最終段クロックバッファ周辺に移動し、その後、移動後のフリップフロップに対して、クロック駆動回路を再生成する。このようにすることで、クロックバッファから各フリップフロップまでの配線の長さの違いにより、クロックスキューが生じる問題を解消できる。また、フリップフロップの移動とクロック分配回路の配置配線とを繰り返すことで、クロック分配回路の配置配線及びフリップフロップの位置の最適化を共同的に行うことができ、無駄なクロックバッファの削減が可能である。
【００３９】
論理セル及びフリップフロップの配置後に、フリップフリップを移動すると、その移動に伴い、フリップフロップ間論理のタイミング違反が生じる可能性がある。本実施形態では、フリップフロップの移動、及び、クロック分配回路の再生成後に、フリップフロップを固定して、論理セルの再配置を行う。このようにすることで、フリップフロップ間のタイミング違反を解消可能である。つまり、本実施形態では、フリップフロップ間の論理回路遅延を悪化することなく、クロックスキューを最小化できる。
【００４０】
本発明の第２実施形態について説明する。図７は、第２実施形態の設計装置を示している。第１実施形態との相違点は、クロック分配回路が、ゲーティング信号に応じて、フリップフロップに供給するクロック信号を制御する。クロックゲーティングセルを含んでおり、クロック分配回路配置配線手段２０３、フリップフロップ移動手段２０４、及び、クロック分配回路再配置配線手段２０５が、ゲーティングセルに対する処理を行う点である。
【００４１】
クロック分配回路配置配線手段２０３は、論理セル及びフリップフロップの配置設計結果を参照して、ゲーティングセルを含むクロック分配回路の配置配線設計を行い、設計結果を記憶装置に記憶する。ゲーティングセルは、クロックバッファの機能も兼ねる。
【００４２】
フリップフロップ移動手段２０４は、フリップフロップの移動に際して、フリップフロップを、ゲーティング信号でクラスタリングする。その後、クラスタリング結果を用いて、各フリップフロップを、各クラスタに対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。なお、ここでいう最終段クロックバッファには、ゲーティングセルも含まれる。クロック分配回路再配置配線手段２０５は、フリップフロップ移動後の論理セル及びフリップフロップの配置に対して、ゲーティングセルを含むクロック分配回路を再生成する。
【００４３】
続いて、動作の流れについて説明する。チップ情報入力手段１０１による、論理回路（ネットリスト）及びパス制約情報の入力から、論理セルとフリップフロップの配置手段１０２による、論理セル及びフリップフロップの配置設計結果の出力までは、第１実施形態と同様である。クロック分配回路配置配線手段２０３は、ゲーティングセルを含むクロック分配回路の配置配線設計を行い、結果をフリップフロップ移動手段２０４に出力する。
【００４４】
図８に、ゲーティングセルを含むクロック分配回路の配置配線結果を示す。ゲーティングセル１６には、ゲーティング信号とクロック信号とが入力される。ゲーティングセル１６−１及び１６−３は、ゲーティング信号Ａに応じてクロックの停止／供給を行うセルであり、ゲーティングセル１６−２及び１６−４は、ゲーティング信号Ｂに応じてクロックの停止／供給を行うセルである。図８を参照すると、ゲーティングセル１６からフリップフロップへ向かう配線が交差している箇所がある。これが、クロックスキューの増大を生む原因となっている。
【００４５】
フリップフロップ移動手段２０４は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、フリップフロップの移動を行う。フリップフロップの移動では、まず、フリップフロップを、ゲーティング信号でクラスタリングする。図８の例では、ゲーティング信号Ａとゲーティング信号Ｂとがあるので、フィリップフロップを、ゲーティング信号Ａに対応するクラスタと、ゲーティング信号Ｂに対応するクラスタとに分ける。すなわち、フリップフロップ“１”〜“１４”を、ゲーティング信号Ａに対応する集合“１”，“３”，“７”，“８”，“１０”，“１２”と、ゲーティング信号Ｂに対応する集合“２”，“４”，“５”，“６”，“９”，“１１”，“１３”，“１４”とに分ける。
【００４６】
クラスタリング後、各フリップフロップを、各クラスタについて、対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。図８では、ゲーティングセル１６−１〜１６−４が、最終段クロックバッファを構成している。このうち、ゲーティングセル１６−１及び１６−３は、ゲーティング信号Ａのクラスタに対応したゲーティングセルであり、ゲーティングセル１６−２及び１６−４は、ゲーティング信号Ｂのクラスタに対応したゲーティングセルである。フリップフロップの移動では、ゲーティング信号Ａに対応するクラスタのフリップフロップを、ゲーティングセル１６−１又は１６−３の周辺に移動し、ゲーティング信号Ｂに対応するクラスタのフリップフロップを、ゲーティングセル１６−２又は１６−４周辺に移動する。
【００４７】
フリップフロップ移動手段２０４は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。クロック分配回路再配置配線手段２０５は、論理セル及びフリップフロップの配置設計結果を参照して、移動後のフリップフロップにクロック信号を供給するクロック分配回路を再生成する。図９に、フリップフロップ移動後のクロック分配回路を示す。例えば、フリップフロップ“７”は、フリップフロップ移動前は、図８に示すように、ゲーティングセル１６−３からクロック信号の供給を受けている。このフリップフロップ“７”は、移動により、ゲーティングセル１６−１の周辺に位置が変更される。クロック分配回路の再生成により、フリップフロップ“７”にクロック信号を供給するゲーティングセルは、ゲーティングセル１６−３からゲーティングセル１６−１に変更される（図９）。
【００４８】
図９に示すように、クラスタごとに、対応する最終段クロックバッファ周辺にフリップフロップを移動することで、同一ゲーティングセルに接続するフリップフロップをゲーティングセル周辺に集めることができる。このことは、同一クラスタに属するフリップフロップが領域的に広い範囲に分散することを防止できることを意味する。図８と図９とを比較すると、図９では、配線の交差が少ない。配線の交差を減らすことで、クロックスキューを最小化できる。
【００４９】
フリップフロップ移動手段２０４によるフリップフロップの移動と、クロック分配回路再配置配線手段２０５によるクロック分配回路の再生成とを、所定の収束条件を満たすまで、繰り返し行う。その後の、論理セルの配置手段１０６による論理セルの再配置、及び、論理セル間の配線手段１０７による論理セル間の配線は、第１実施形態と同様である。
【００５０】
本実施形態では、クロック分配回路がゲーティング素子を含んでおり、フリップフロップの最終段クロックバッファ周辺への移動では、フリップフロップをゲーティング信号でクラスタリングし、同じクラスタに属するフリップフロップを、各クラスタに対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。このようにすることで、各フリップフロップを、対応するゲーティング信号が入力されるゲーティングセル周辺に配置することで、ゲーティングセルからフリップフロップまでの配線の長さの違いによるクロックスキューを最小化することができる。その他の効果は、第１実施形態と同様である。
【００５１】
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の半導体集積回路の設計装置、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
【図面の簡単な説明】
【００５２】
【図１】本発明の第１実施形態の設計装置を示すブロック図。
【図２】フリップフロップをクロックバッファ周辺へ移動し、クロック分配回路を再配置配線した結果を示すブロック図。
【図３】フリップフロップの移動例を示すブロック図。
【図４】論理回路変更を含む論理セルの再配置を行った状態を示すブロック図。
【図５】論理セルの再配置後に論理セル間の配線を追加した結果を示すブロック図。
【図６】各設計段階における半導体集積回路のイメージを示すブロック図。
【図７】本発明の第２実施形態の設計装置を示すブロック図。
【図８】ゲーティングセルを含むクロック分配回路の初期配置配線結果を示すブロック図。
【図９】フリップフロップをゲーティングセル周辺へ移動し、クロック分配回路を再配置配線した結果を示すブロック図。
【図１０】クロック分配回路の配置配線例を示すブロック図。
【図１１】クロック分配回路配置配線を含む半導体集積回路の設計方法を示すフローチャート。
【図１２】論理セルとフリップフロップの配置を示すブロック図。
【図１３】クロック分配回路配置配線を追加した状態を示すブロック図。
【図１４】クロック分配回路配置配線後に論理セル間の配線を追加した状態を示すブロック図。
【図１５】ゲーティングセルを含むクロック分配回路の配置配線例を示すブロック図。
【符号の説明】
【００５３】
１１：論理セル
１２：フリップフロップ
１３：クロックルートバッファ
１４：クロックバッファ
１５：クロック配線
１６：ゲーティングセル
２１：初期配置結果
２２：クロック分配回路配置配線結果
２３：フリップフロップ移動結果
２４：クロック分配回路再配置配線結果
１０１：チップ情報入力手段
１０２：論理セルとフリップフロップの配置手段
１０３、２０３：クロック分配回路配置配線手段
１０４、２０４：フリップフロップ移動手段
１０５、２０５：クロック分配回路再配置配線手段
１０６：論理セルの配置手段
１０７：論理セル間の配線手段
【図１】
2009188093.tif 000003
【図２】
2009188093.tif 000004
【図３】
2009188093.tif 000005
【図４】
2009188093.tif 000006
【図５】
2009188093.tif 000007
【図６】
2009188093.tif 000008
【図７】
2009188093.tif 000009
【図８】
2009188093.tif 000010
【図９】
2009188093.tif 000011
【図１０】
2009188093.tif 000012
【図１１】
2009188093.tif 000013
【図１２】
2009188093.tif 000014
【図１３】
2009188093.tif 000015
【図１４】
2009188093.tif 000016
【図１５】
2009188093.tif 000017