JP2009188093A - 半導体集積回路の設計装置、方法、及び、プログラム - Google Patents

半導体集積回路の設計装置、方法、及び、プログラム Download PDF

Info

Publication number
JP2009188093A
JP2009188093A JP2008025032A JP2008025032A JP2009188093A JP 2009188093 A JP2009188093 A JP 2009188093A JP 2008025032 A JP2008025032 A JP 2008025032A JP 2008025032 A JP2008025032 A JP 2008025032A JP 2009188093 A JP2009188093 A JP 2009188093A
Authority
JP
Japan
Prior art keywords
result
clock
flip
wiring
circuit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008025032A
Other languages
English (en)
Inventor
Takumi Okamoto
匠 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008025032A priority Critical patent/JP2009188093A/ja
Publication of JP2009188093A publication Critical patent/JP2009188093A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】クロックスキューを最小化できる半導体集積回路の設計装置を提供する。
【解決手段】フリップフロップ移動手段104は、論理セル及びフリップフロップの配置結果と、フリップフロップに対してクロック信号を供給するクロック分配回路の配置配線結果とを参照し、フリップフロップを、クロック分配回路における最終段のクロック駆動バッファ周辺に移動する。クロック分配回路再配置配線手段105は、フリップフロップ移動後の論理セル及びフリップフロップの配置結果を参照して、クロック分配回路の再配置・再配線を行う。
【選択図】図1

Description

本発明は、半導体集積回路の設計装置、方法、及び、プログラムに関し、更に詳しくは、論理素子及び順序回路素子とクロック分配回路とを含む半導体装置を設計する設計装置、方法、及び、プログラムに関する。
同期式半導体集積回路は、演算及び演算の制御を行うための論理素子(以下、論理セル又は論理ゲートとも呼ぶ)と、論理素子群の動作の同期を取るための順序回路素子(フリップフロップ又はFFとも呼ぶ)とを有する。フリップフロップには、クロック分配回路を用いて、周期的に発振するクロック信号が供給される。フリップフロップは、クロック信号の立ち上がり又は立ち下がりエッジに応じて、保持しているデータを論理素子に供給する。論理素子は、供給されたデータを入力として演算及び演算の制御を行い、その結果を、フリップフロップに保存する。このような処理は、周期的に変化するクロック信号の立ち上がり又は立ち下がりエッジに応じて繰り返し行われる。
フリップフロップにクロック信号を分配・供給するクロック分配回路は、クロック駆動バッファとクロック配線とを含む。図10に、クロック分配回路を示す。クロックルートバッファ13に供給されたクロック信号は、クロックルートバッファ13にて2つに分岐され、各クロックバッファ14に供給される。各クロックバッファ14は、クロック配線15を介して、各フリップフロップ12にクロック信号を供給する。
同期式半導体集積回路を、クロック信号を基準にして、正常なタイミングで動作させるためには、クロック信号を同じタイミングで分配する必要がある。理想的なクロック信号分配回路の配置配線は、半導体基板上の何れの場所においても、同一のクロック信号波形が得られることである。しかし、実際には、クロック信号を引き回す配線、接続しているセルの配置などによって、フリップフロップにクロック信号が到着する時刻に差が生じる。フリップフロップ集合の中で、クロック信号が最も早く到着する時刻と、クロック信号が最も遅く到着する時刻との時間の差を、クロックスキュー(クロック信号到着時間差)と呼ぶ。このクロックスキューが大きいと、回路は正常動作しなくなる。クロック分配回路の配置配線は、可能な限りクロックスキューを最小とすることが要求される。
クロックスキューは、主に、設計段階で生じるものである。そのため、クロック分配回路の配置配線では、高精度のクロックスキュー管理が要求される。しかしながら、大規模半導体集積回路の設計では、全てのフリップフロップに、クロックを正確に同時に供給することは困難になりつつある。
クロックスキューを最小化するクロック分配回路の配置配線手法として、特許文献1、特許文献2に記載の手法がある。これら文献では、クロック分配回路を構築していく際に、フリップフロップから順に、ボトムアップ的に2分岐を構成するようにゼロスキュー併合と呼ぶ、常に、その木のスキューが0(この状態をゼロスキューと呼ぶ)となるようにクロックツリーを生成していく。この処理を、フリップフロップ側から順に、クロックルートバッファまで繰り返すことで、クロック分配回路の配置配線(図10)が得られる。
図11に、一般的な半導体集積回路の設計のフローを示す。半導体集積回路の設計では、まず、半導体集積回路を構成する論理セル及びフリップフロップの配置を行う(ステップS1)。次いで、論理セル及びフリップフロップの配置結果に応じて、全てのフリップフロップへの遅延が同じになるように、クロック分配回路を配置・配線する。(ステップS2)。その後、論理セル間の配線設計を行い(ステップS3)、半導体集積回路全体の配置配線設計が完了する。
図12に、論理セル及びフリップフロップの配置後の設計状態を示す。ステップS1で論理セル11及びフリップフロップ12の配置を行うことで、図12に示す設計状態が得られる。図13に、クロック分配回路が配置・配線された設計状態を示す。ステップS2にて、クロック分配回路を配置・配線することで、図12に示す設計状態から、図13に示す設計状態が得られる。図14に、論理セル間を配線した設計状態を示す。ステップS3にて、論理セル11間の配線を行うことで、図13に示す設計状態から、図14に示す設計状態が得られる。
他にも、近年、更なるクロックスキューの最小化を目的として、フリップフロップの配置を制御する方法が開発されている(非特許文献1参照)。非特許文献1では、クロックスキューの最小化を目的として、論理セル及びフリップフロップの配置段階で、後続のクロック分配回路の配置配線でゼロスキューを実現しやすいように、フリップフロップの配置を制御している。
ここで、クロックレイアウトに関する技術として、特許文献3に記載の技術がある。特許文献3では、論理回路の設計領域を、複数の線分により、複数の領域に分割する。設計領域に配置されたセルのうち、フリップフロップを判別し、各領域のフリップフロップの数をカウントして、領域間でのフリップフロップの差が最小となるように、フリップフロップを再配置する。その後、領域の分割線と交差する配線の数が最小となるように、フリップフロップ以外のセルを再配置する。このようにすることで、クロック設計において、バッファの挿入も考慮した混雑度の緩和を図ることが可能となる。
特開2007−123336号公報 特許第3299842号公報 特開2005−258657号公報 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
特許文献1及び特許文献2では、半導体集積回路を構成する論理セル及びフリップフロップを配置した後、その配置結果を固定して、クロック分配回路の配置配線設計が行われる。このため、フリップフロップの位置が、必ずしも、後続のクロック分配配置配線においてゼロスキューを実現するのに適したものになっているとは限らない。特に、フリップフロップの密度がバランスされて配置されていない場合、ゼロスキューを実現することは困難である。
上記問題に対し、論理セル及びフリップフロップの設計段階で、後続のクロック分配回路の配置配線でゼロスキューを実現しやすいように、フリップフロップの配置を制御する方式が提案されている。その場合、ある程度のフリップフリップの密度平均化が可能となり、クロックスキューの最小化が容易となる。しかし、それでも、後続処理として行われるクロック分配回路の配置配線設計を精度よく予測して、論理セル及びフリップフロップの配置を行うことには限度がある。
また、特許文献3では、フリップフロップを、各領域に含まれるフリップフロップ数が平均化されるように移動した後に、クロックバッファの配置を行う。結果として、クロックバッファとフリップフロップとの距離を近づけることができるので、スキューを小さくすることは可能である。しかし、領域間のフリップフロップの移動では、フリップフロップの正確な座標までは決めていないため、クロックバッファとフリップフロップとの間の距離の上限を所定距離以内に収めることを保証できないということが問題となる。
ここで、近年、低消費電力化を目的として、動作する必要がない状態にあるフリップフロップへのクロック信号の供給を一時的に停止する制御を行うクロックゲーティング手法の導入が盛んになっている。図15に、クロックゲーティングセルを含むクロック分配回路の配置配線の例を示す。ここでは、フリップフロップ集合G1(1,3,8,7,10,12)と、フリップフロップ集合G2(2,4,5,11,6,9,13,14)とが、それぞれ同一のクロックゲーティング信号に接続するゲーティングセル(16−1〜16−4)に接続している。
ゲーティングクロックを採用する場合、クロックスキューの最小化は、更に複雑な問題となる。すなわち、クロック分配回路に、低消費電力化のためのゲーティングセルが含まれる場合、クロックバッファへのフリップフロップの割当てには追加制約が生じる。このため、クロックスキューの最小化は、更に困難となる。
本発明は、論理素子と順序回路素子とを含む半導体集積回路の設計にて、クロックスキューの最小化が可能な半導体集積回路の設計装置、方法、及び、プログラムを提供することを目的とする。
上記目的を達成するために、本発明の半導体集積回路の設計方法は、コンピュータを用い、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する方法であって、前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップと、前記コンピュータが、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるステップとを有することを特徴とする。
本発明のプログラムは、コンピュータに、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する処理を実行させるプログラムであって、前記コンピュータに、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる処理と、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させる処理とを実行させることを特徴とする。
本発明の半導体集積回路の設計装置は、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する設計装置であって、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる順序回路素子再配置手段と、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して、前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるクロック分配回路再配置配線手段とを有することを特徴とする。
本発明の半導体集積回路の設計装置、方法、及び、プログラムでは、設計対象の半導体集積回路におけるクロックスキューを最小化できる。
以下、図面を参照し、本発明の実施の形態を詳細に説明する。図1は、本発明の第1実施形態の半導体集積回路の設計装置を示している。設計装置は、チップ情報入力手段101、論理セルとフリップフロップの配置手段102、クロック分配回路配置配線手段103、フリップフロップ移動手段104、クロック分配回路再配置配線手段105、論理セルの配置手段106、及び、論理セル間の配線手段107を有する。設計装置は、制御装置、記憶装置、入力装置、及び、表示装置を有する一般的なコンピュータで構成される。設計装置内の各部は、記憶装置に格納されたプログラムに従って動作する制御装置により、ROM、RAMなどの記憶装置上に構築され、制御される。
チップ情報入力手段101は、設計対象となる半導体集積回路チップのゲートレベルのネットリストに関する情報(チップデータ)を、フリップフロップ間のパス遅延制約情報と共に、記憶装置に記憶する。論理セルとフリップフロップの配置手段102は、チップデータ及びパス遅延制約情報を参照し、ネットリストのセル間接続とフリップフロップ間のタイミング制約とに基づいて、論理セルとフリップフロップとの配置設計を行い、設計結果を記憶装置に記憶する。この配置手段には、既存の配置手段を用いることができる。クロック分配回路配置配線手段103は、論理セル及びフリップフロップの配置設計結果を参照して、各フリップフロップにクロック信号を分配する回路の配置配線設計を行い、設計結果を記憶装置に記憶する。この配置配線手段にも、既存のクロック分配回路配置配線手段を用いることができる。
フリップフロップ移動手段104は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、各フリップフロップを、クロック分配回路にて、フリップフロップに対して最終的にクロック信号を供給する末端のクロック駆動バッファ(最終段クロックバッファ)の周辺に移動する。フリップフロップの移動では、フリップフロップ間の論理のタイミング悪化を最小化するため、最終段クロックバッファのうちで移動距離が最小となる最終段クロックバッファ周辺に、フリップフロップを移動する。その際、フリップフロップ同士の重なりは許容しないが、フリップフロップと論理セルとの重なりは許容する。フリップフロップ移動手段104は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。
クロック分配回路再配置配線手段105は、フリップフロップの移動後の論理セル及びフリップフロップの配置設計結果を参照し、クロック分配回路を再生成する。クロック分配回路の再生成では、クロックバッファの再配置とクロック接続の再配線とを行う。その際、クロック分配回路再配置配線手段105は、再生成前のクロック分配回路の配置配線設計結果を参照して、前回のクロック分配回路の配置配線設計結果を修正することで、クロック分配回路の再生成を行ってもよい。クロック分配回路再配置配線手段105は、クロック分配回路の再配置配線の結果を、クロック分配回路の配置配線設計結果に反映させる。設計装置は、フリップフロップ移動手段104によるフリップフロップの移動と、クロック分配回路再配置配線手段105によるクロック分配回路の再配置・再配線とを繰り返し行い、クロックスキューを最小化する。
論理セルの配置手段106は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照し、フリップフロップの位置を固定して、論理セルの再配置を行う。このとき論理セルの配置手段106は、論理回路動作を変更しない範囲で、バッファ挿入など、論理回路の変形を行う。論理セル同士、及び、論理セルとフリップフロップとの重なりは許容しない。論理回路の変形を含む配置処理は、物理合成とも呼ばれる。この物理合成には、既存の物理合成手段を用いることができる。論理セルの配置手段106は、物理合成結果を、論理セル及びフリップフロップの配置設計結果に反映させる。論理セル間の配線手段107は、論理セル及びフリップフロップの配置設計結果を参照して、論理セル及びフリップフロップ間の配線設計を行い、設計結果を記憶装置に記憶する。この配線手段には、既存の配線手段を用いることができる。
続いて、各手段における動作を詳細に説明する。チップ情報入力手段101には、論理回路(ネットリスト)と、パス制約情報とが入力される。チップ情報入力手段101は、入力された論理回路とパス制約情報とを、論理セルとフリップフロップの配置手段102に出力する。論理セルとフリップフロップの配置手段102は、チップ情報入力手段101に入力された論理回路に対して、論理セル及びフリップフロップの配置設計を行い、結果をクロック分配回路配置配線手段103に出力する。クロック分配回路配置配線手段103は、クロック分配回路の配置配線設計を行い、結果をフリップフロップ移動手段104に出力する。この段階までで、図13に示す設計状態が得られる。この状態では、各フリップフロップへのクロックバッファからの配線の長さに違いがあるため、クロックスキューが生じている。
フリップフロップ移動手段104は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、各フリップフロップを、各フリップフロップが接続しているクロックバッファ周辺に移動する。フリップフロップの移動では、フリップフロップ間の論理のタイミング悪化を最小化するために、移動距離が最小となるようにフリップフロップを移動する。各フリップフロップは、接続するクロックバッファ周辺に配置されるため、接続するクロックバッファからフリップフロップまでの配線が最小化され、結果として、クロックスキューが最小化される。フリップフロップ移動手段104は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。
クロック分配回路再配置配線手段105は、フリップフロップ移動後の論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照し、移動後のフリップフロップ位置に対して、クロック分配回路を再生成し、結果を、クロック分配回路の配置配線設計結果に反映させる。クロック分配回路の再生成では、フリップフロップの位置を固定した後、クロック分配回路の一部又は全てを一旦削除し、移動後のフリップフロップ位置に対して、クロックバッファの再配置及びクロック配線の再配線を行う。このクロック分配回路の再生成は、移動後のフリップフロップ位置に合わせてクロックバッファの配置を行うので、再生成の前後で、クロックバッファの位置が変更されることがある。
図2に、フリップフロップを移動し、クロック分配回路を再生成した状態を示す。図13に示す状態から、フリップフロップ12をクロックバッファ14周辺に移動し、クロック分配回路再配置配線手段105によりクロック分配回路を再生成することで、図2に示す設計状態が得られる。論理セル11については、フリップフロップ移動手段104による移動の対象外なので、図2と図13とで、位置は同じであり、フリップフロップ12と論理セル11とで重なりが生じている。クロックバッファのサイズは、接続するフリップフロップの数に応じて変更される。
なお、フリップフロップのクロックバッファ周辺への移動に際しては、フリップフロップが整列配置されるように、フリップフロップを移動することができる。この場合を、図3に示す。この例では、フリップフロップを、最終段クロックバッファ周辺に、フリップフロップ配置が理想形状となるように、移動している。このようにする場合は、クロック分配回路の再生成により、クロック分配を、理想形状に近い形で行うことができる。
設計装置は、フリップフロップ移動手段104によるフリップフロップ12の移動と、クロック分配回路再配置配線手段105によるクロック分配回路の再配置配線とを、所定の収束条件が満たされるまで、繰り返し行う。繰り返し回数の上限を決めておき、繰り返し回数が上限に達したときは、その段階で繰り返しを終了してもよい。収束条件や繰り返し回数の上限値は、開発者が、外部より設定可能にしておく。
収束条件としては、「クロックバッファとフリップフロップとの間の距離が所定距離以内で、かつ、クロックバッファ1つあたりのフリップフロップの接続数が所定数以下」という条件が考えられる。この場合、フリップフロップの移動、及び、クロック分配回路の再生成により、クロックバッファとフリップフロップとの距離が所定距離以内に収まらないときは、フリップフロップの移動、及び、クロック分配回路をやり直す。フリップフロップの移動とクロック分配回路の再生成とを、収束条件を満たすまで繰り返すことで、クロックバッファとフリップフロップとの間の距離が所定距離以内となることを保証でき、フリップフロップ位置が最適化される。
論理セルの配置手段106は、フリップフロップ移動後の論理セル及びフリップフロップの配置設計結果と、再生成されたクロック分配回路の設計結果とを参照して、論理セルの再配置を行う。この論理セルの再配置は、フリップフロップ位置を固定して行う。図4に、論理セルを再配置した設計状態を示す。図2に示す状態に対して、論理セルの配置手段106が論理セル11を再配置することで、図4に示す設計状態が得られる。論理セルの再配置では、論理セル11同士、及び、論理セル11とフリップフロップ12との重なりは許容しない。フリップフロップ12の移動に伴い、論理セル11の入出力となるフリップフロップ12間の距離が伸びた場合は、必要に応じてバッファの追加を行うなど、論理回路の変更を行う。論理セルの再配置を行うことで、フリップフロップ移動により生じる可能性があるタイミング違反が解消される。
最後に、論理セル間の配線手段107は、論理セル及びフリップフロップ間の配線設計を行う。図5に、配線設計結果を示す。論理セル間の配線手段107は、論理セル11/フリップフロップ12間のセル間配線を設計する。図4に示す設計状態に対して、論理セル及びフリップフロップ間の配線を施すと、図5に示す設計状態が得られる。以上により、対象となる論理回路の配置配線が完了する。
図6に、各設計段階における半導体集積回路のイメージを示す。なお、同図では、説明簡略化のため、クロック分配回路については、最終段のクロックバッファのみを示している。すなわち、図2に示すクロックルートバッファ13や、途中段のクロックバッファ14は省略している。論理セルとフリップフロップの配置手段102は、論理セル及びフリップフロップの配置設計を行い、その結果として、初期配置結果21を出力する。クロック分配回路配置配線手段103は、この初期配置結果21に対して、クロック分配回路の配置・配線を行い、クロック分配回路配置配線結果22を出力する。フリップフロップ移動手段104は、クロック分配回路配置配線結果22に対して、最終段クロックバッファ周辺にフリップフロップを移動し、フリップフロップ移動結果23を出力する。
クロック分配回路再配置配線手段105は、フリップフロップ移動結果23に対して、再度、クロック分配回路を生成し、クロック分配回路再配置配線結果24を出力する。各フリップフロップは、最終段クロックバッファ周辺に移動されているため、フリップフロップが複数のクラスタにまとまっている。この状態に対してクロック分配回路の再生成を行うことで、再生成前に比して、より少ないクロックバッファ数で、クロック分配回路を実現できる。ただし、フリップフロップの移動後にクロック分配回路の再生成を行うことで、クロックバッファとフリップフロップとの間の距離が、フリップフロップ移動及びクロック分配回路の再生成前に比して長くなり、クロックバッファとフリップフロップとの間の距離の上限値よりも長くなることがある。そのような場合には、フリップフロップの移動とクロック分配回路の再生成をやり直して、フリップフロップ位置の最適化を図る。
本実施形態では、論理セル及びフリップフロップの配置設計と、クロック分配回路の配置配線設計とを行った後に、クロックバッファとフリップフロップとの位置関係に基づいて、フリップフロップを、最終段クロックバッファ周辺に移動し、その後、移動後のフリップフロップに対して、クロック駆動回路を再生成する。このようにすることで、クロックバッファから各フリップフロップまでの配線の長さの違いにより、クロックスキューが生じる問題を解消できる。また、フリップフロップの移動とクロック分配回路の配置配線とを繰り返すことで、クロック分配回路の配置配線及びフリップフロップの位置の最適化を共同的に行うことができ、無駄なクロックバッファの削減が可能である。
論理セル及びフリップフロップの配置後に、フリップフリップを移動すると、その移動に伴い、フリップフロップ間論理のタイミング違反が生じる可能性がある。本実施形態では、フリップフロップの移動、及び、クロック分配回路の再生成後に、フリップフロップを固定して、論理セルの再配置を行う。このようにすることで、フリップフロップ間のタイミング違反を解消可能である。つまり、本実施形態では、フリップフロップ間の論理回路遅延を悪化することなく、クロックスキューを最小化できる。
本発明の第2実施形態について説明する。図7は、第2実施形態の設計装置を示している。第1実施形態との相違点は、クロック分配回路が、ゲーティング信号に応じて、フリップフロップに供給するクロック信号を制御する。クロックゲーティングセルを含んでおり、クロック分配回路配置配線手段203、フリップフロップ移動手段204、及び、クロック分配回路再配置配線手段205が、ゲーティングセルに対する処理を行う点である。
クロック分配回路配置配線手段203は、論理セル及びフリップフロップの配置設計結果を参照して、ゲーティングセルを含むクロック分配回路の配置配線設計を行い、設計結果を記憶装置に記憶する。ゲーティングセルは、クロックバッファの機能も兼ねる。
フリップフロップ移動手段204は、フリップフロップの移動に際して、フリップフロップを、ゲーティング信号でクラスタリングする。その後、クラスタリング結果を用いて、各フリップフロップを、各クラスタに対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。なお、ここでいう最終段クロックバッファには、ゲーティングセルも含まれる。クロック分配回路再配置配線手段205は、フリップフロップ移動後の論理セル及びフリップフロップの配置に対して、ゲーティングセルを含むクロック分配回路を再生成する。
続いて、動作の流れについて説明する。チップ情報入力手段101による、論理回路(ネットリスト)及びパス制約情報の入力から、論理セルとフリップフロップの配置手段102による、論理セル及びフリップフロップの配置設計結果の出力までは、第1実施形態と同様である。クロック分配回路配置配線手段203は、ゲーティングセルを含むクロック分配回路の配置配線設計を行い、結果をフリップフロップ移動手段204に出力する。
図8に、ゲーティングセルを含むクロック分配回路の配置配線結果を示す。ゲーティングセル16には、ゲーティング信号とクロック信号とが入力される。ゲーティングセル16−1及び16−3は、ゲーティング信号Aに応じてクロックの停止/供給を行うセルであり、ゲーティングセル16−2及び16−4は、ゲーティング信号Bに応じてクロックの停止/供給を行うセルである。図8を参照すると、ゲーティングセル16からフリップフロップへ向かう配線が交差している箇所がある。これが、クロックスキューの増大を生む原因となっている。
フリップフロップ移動手段204は、論理セル及びフリップフロップの配置設計結果と、クロック分配回路の配置配線設計結果とを参照して、フリップフロップの移動を行う。フリップフロップの移動では、まず、フリップフロップを、ゲーティング信号でクラスタリングする。図8の例では、ゲーティング信号Aとゲーティング信号Bとがあるので、フィリップフロップを、ゲーティング信号Aに対応するクラスタと、ゲーティング信号Bに対応するクラスタとに分ける。すなわち、フリップフロップ“1”〜“14”を、ゲーティング信号Aに対応する集合“1”,“3”,“7”,“8”,“10”,“12”と、ゲーティング信号Bに対応する集合“2”,“4”,“5”,“6”,“9”,“11”,“13”,“14”とに分ける。
クラスタリング後、各フリップフロップを、各クラスタについて、対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。図8では、ゲーティングセル16−1〜16−4が、最終段クロックバッファを構成している。このうち、ゲーティングセル16−1及び16−3は、ゲーティング信号Aのクラスタに対応したゲーティングセルであり、ゲーティングセル16−2及び16−4は、ゲーティング信号Bのクラスタに対応したゲーティングセルである。フリップフロップの移動では、ゲーティング信号Aに対応するクラスタのフリップフロップを、ゲーティングセル16−1又は16−3の周辺に移動し、ゲーティング信号Bに対応するクラスタのフリップフロップを、ゲーティングセル16−2又は16−4周辺に移動する。
フリップフロップ移動手段204は、フリップフロップの移動を、論理セル及びフリップフロップの配置設計結果に反映させる。クロック分配回路再配置配線手段205は、論理セル及びフリップフロップの配置設計結果を参照して、移動後のフリップフロップにクロック信号を供給するクロック分配回路を再生成する。図9に、フリップフロップ移動後のクロック分配回路を示す。例えば、フリップフロップ“7”は、フリップフロップ移動前は、図8に示すように、ゲーティングセル16−3からクロック信号の供給を受けている。このフリップフロップ“7”は、移動により、ゲーティングセル16−1の周辺に位置が変更される。クロック分配回路の再生成により、フリップフロップ“7”にクロック信号を供給するゲーティングセルは、ゲーティングセル16−3からゲーティングセル16−1に変更される(図9)。
図9に示すように、クラスタごとに、対応する最終段クロックバッファ周辺にフリップフロップを移動することで、同一ゲーティングセルに接続するフリップフロップをゲーティングセル周辺に集めることができる。このことは、同一クラスタに属するフリップフロップが領域的に広い範囲に分散することを防止できることを意味する。図8と図9とを比較すると、図9では、配線の交差が少ない。配線の交差を減らすことで、クロックスキューを最小化できる。
フリップフロップ移動手段204によるフリップフロップの移動と、クロック分配回路再配置配線手段205によるクロック分配回路の再生成とを、所定の収束条件を満たすまで、繰り返し行う。その後の、論理セルの配置手段106による論理セルの再配置、及び、論理セル間の配線手段107による論理セル間の配線は、第1実施形態と同様である。
本実施形態では、クロック分配回路がゲーティング素子を含んでおり、フリップフロップの最終段クロックバッファ周辺への移動では、フリップフロップをゲーティング信号でクラスタリングし、同じクラスタに属するフリップフロップを、各クラスタに対応するゲーティング信号が入力される最終段クロックバッファ周辺に移動する。このようにすることで、各フリップフロップを、対応するゲーティング信号が入力されるゲーティングセル周辺に配置することで、ゲーティングセルからフリップフロップまでの配線の長さの違いによるクロックスキューを最小化することができる。その他の効果は、第1実施形態と同様である。
以上、本発明をその好適な実施形態に基づいて説明したが、本発明の半導体集積回路の設計装置、方法、及び、プログラムは、上記実施形態にのみ限定されるものではなく、上記実施形態の構成から種々の修正及び変更を施したものも、本発明の範囲に含まれる。
本発明の第1実施形態の設計装置を示すブロック図。 フリップフロップをクロックバッファ周辺へ移動し、クロック分配回路を再配置配線した結果を示すブロック図。 フリップフロップの移動例を示すブロック図。 論理回路変更を含む論理セルの再配置を行った状態を示すブロック図。 論理セルの再配置後に論理セル間の配線を追加した結果を示すブロック図。 各設計段階における半導体集積回路のイメージを示すブロック図。 本発明の第2実施形態の設計装置を示すブロック図。 ゲーティングセルを含むクロック分配回路の初期配置配線結果を示すブロック図。 フリップフロップをゲーティングセル周辺へ移動し、クロック分配回路を再配置配線した結果を示すブロック図。 クロック分配回路の配置配線例を示すブロック図。 クロック分配回路配置配線を含む半導体集積回路の設計方法を示すフローチャート。 論理セルとフリップフロップの配置を示すブロック図。 クロック分配回路配置配線を追加した状態を示すブロック図。 クロック分配回路配置配線後に論理セル間の配線を追加した状態を示すブロック図。 ゲーティングセルを含むクロック分配回路の配置配線例を示すブロック図。
符号の説明
11:論理セル
12:フリップフロップ
13:クロックルートバッファ
14:クロックバッファ
15:クロック配線
16:ゲーティングセル
21:初期配置結果
22:クロック分配回路配置配線結果
23:フリップフロップ移動結果
24:クロック分配回路再配置配線結果
101:チップ情報入力手段
102:論理セルとフリップフロップの配置手段
103、203:クロック分配回路配置配線手段
104、204:フリップフロップ移動手段
105、205:クロック分配回路再配置配線手段
106:論理セルの配置手段
107:論理セル間の配線手段

Claims (9)

  1. コンピュータを用い、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する方法であって、
    前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップと、
    前記コンピュータが、前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるステップとを有する半導体集積回路の設計方法。
  2. 前記コンピュータが、前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップと、前記再配置配線結果をクロック分配回路の配置配線結果に反映させるステップとを、所定の収束条件を満たすまで繰り返し実行する、請求項1に記載の半導体集積回路の設計方法。
  3. 前記再配置配線結果をクロック分配回路の配置配線結果に反映させるステップでは、前記クロック分配回路の配置配線結果を参照して、前記クロック駆動バッファ及びクロック配線の少なくとも一部を削除し、前記クロック駆動バッファ及びクロック配線の再配置配線を行う、請求項1又は2に記載の半導体集積回路の設計方法。
  4. 前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップに先行して、
    前記コンピュータが、設計対象の半導体集積回路の設計情報を参照して、前記論理素子及び順序回路素子の配置を決定し、論理素子及び順序回路素子の配置結果を生成するステップと、
    前記コンピュータが、前記論理素子及び順序回路素子の配置結果を参照して、クロック分配回路の配置配線を決定し、クロック分配回路の配置配線結果を生成するステップとを更に有する、請求項1〜3の何れか一に記載の半導体集積回路の設計方法。
  5. 前記クロック分配回路が、クロックゲーティング信号に応答して前記順序回路素子へのクロック信号の供給を停止するクロックゲーティング回路を更に含み、前記順序回路素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップでは、前記順序回路素子をゲーティング信号でクラスタリングし、同じクラスタに属する順序回路素子を、各クラスタに対応するゲーティング信号が入力される最終段のクロック駆動バッファ周辺に再配置する、請求項1〜4の何れか一に記載の半導体集積回路の設計方法。
  6. 再配置配線結果をクロック分配回路の配置配線結果に反映させるステップに後続して、前記コンピュータが、前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照して、前記論理素子の再配置を行い、論理素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させるステップを更に有する、請求項1〜5の何れか一に記載の半導体集積回路の設計方法。
  7. 前記論理素子の再配置結果を前記論理素子及び順序回路素子の配置結果に反映させるステップでは、前記順序回路素子の位置を固定し、前記順序回路素子間の論理素子の位置を再配置する、請求項6に記載の半導体集積回路の設計方法。
  8. コンピュータに、論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する処理を実行させるプログラムであって、前記コンピュータに、
    前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、順序回路素子の再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる処理と、
    前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させる処理とを実行させるプログラム。
  9. 論理素子及び順序回路素子と、クロック駆動バッファを含み、前記順序回路素子にクロック信号を供給するクロック分配回路とを含む半導体集積回路を設計する設計装置であって、
    前記論理素子及び順序回路素子の配置結果と、前記クロック分配回路の配置配線結果とを参照し、前記順序回路素子を、順序回路素子にクロック信号を供給する最終段のクロック駆動バッファ周辺に移動する再配置を行い、再配置結果を、前記論理素子及び順序回路素子の配置結果に反映させる順序回路素子再配置手段と、
    前記順序回路素子が再配置された論理素子及び順序回路素子の配置結果を参照して、前記クロック分配回路の再配置配線を行い、再配置配線結果を、クロック分配回路の配置配線結果に反映させるクロック分配回路再配置配線手段とを有する半導体集積回路の設計装置。
JP2008025032A 2008-02-05 2008-02-05 半導体集積回路の設計装置、方法、及び、プログラム Pending JP2009188093A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008025032A JP2009188093A (ja) 2008-02-05 2008-02-05 半導体集積回路の設計装置、方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008025032A JP2009188093A (ja) 2008-02-05 2008-02-05 半導体集積回路の設計装置、方法、及び、プログラム

Publications (1)

Publication Number Publication Date
JP2009188093A true JP2009188093A (ja) 2009-08-20

Family

ID=41071064

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008025032A Pending JP2009188093A (ja) 2008-02-05 2008-02-05 半導体集積回路の設計装置、方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP2009188093A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014102640A (ja) * 2012-11-19 2014-06-05 Fujitsu Semiconductor Ltd 回路設計方法、回路設計プログラムおよび回路設計装置
WO2023007695A1 (ja) * 2021-07-30 2023-02-02 株式会社ソシオネクスト Ad変換装置、半導体集積回路装置、及びad変換装置の設計方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014102640A (ja) * 2012-11-19 2014-06-05 Fujitsu Semiconductor Ltd 回路設計方法、回路設計プログラムおよび回路設計装置
WO2023007695A1 (ja) * 2021-07-30 2023-02-02 株式会社ソシオネクスト Ad変換装置、半導体集積回路装置、及びad変換装置の設計方法

Similar Documents

Publication Publication Date Title
US11480993B2 (en) Methods for optimizing circuit performance via configurable clock skews
US8495552B1 (en) Structured latch and local-clock-buffer planning
US10586004B2 (en) Method and apparatus for utilizing estimations for register retiming in a design compilation flow
TWI767304B (zh) 用於編譯針對同步處理器之程式之方法及系統
US7831945B2 (en) Manufacturing a clock distribution network in an integrated circuit
US8689170B2 (en) Changing the location of a buffer bay in a netlist
Kabir et al. Holistic Chiplet–Package Co-Optimization for Agile Custom 2.5-D Design
US8499268B2 (en) Method of supporting layout design of semiconductor integrated circuit
JP2009188093A (ja) 半導体集積回路の設計装置、方法、及び、プログラム
US6487707B1 (en) Layout design system of semiconductor ic device, layout design method of semiconductor ic device and computer-readable recording medium on which programs for allowing computer to execute respective means in the system or respective steps in the method are recorded
US20130239078A1 (en) Optimizing timing critical paths by modulating systemic process variation
US9330220B1 (en) Clock region partitioning and clock routing
US7146480B2 (en) Configurable memory system
JP4053969B2 (ja) 半導体集積回路の設計装置および半導体集積回路の設計方法
Chen et al. Simultaneous placement with clustering and duplication
JP2012150631A (ja) 半導体集積回路の設計方法および設計装置
Madhuri et al. Performance Analysis on Skew Optimized Clock Tree Synthesis
JP5321185B2 (ja) 半導体集積回路の設計方法、設計装置および、コンピュータプログラム
US11836000B1 (en) Automatic global clock tree synthesis
Shih et al. Symmetrical buffered clock-tree synthesis with supply-voltage alignment
US11526642B1 (en) Clock network power estimation for logical designs
JP2011210053A (ja) 半導体集積回路の設計方法、設計装置およびプログラム
JP2006319162A (ja) クロックツリー作成方法およびクロックツリー作成プログラム
WO2024040100A1 (en) Clock timing in replicated arrays
JP4335023B2 (ja) レイアウト推定方法及びレイアウト推定装置

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20100224