JP5533564B2 - クロックツリー生成装置及びクロックツリー生成方法 - Google Patents

クロックツリー生成装置及びクロックツリー生成方法 Download PDF

Info

Publication number
JP5533564B2
JP5533564B2 JP2010242588A JP2010242588A JP5533564B2 JP 5533564 B2 JP5533564 B2 JP 5533564B2 JP 2010242588 A JP2010242588 A JP 2010242588A JP 2010242588 A JP2010242588 A JP 2010242588A JP 5533564 B2 JP5533564 B2 JP 5533564B2
Authority
JP
Japan
Prior art keywords
clock
flip
cell
driven
clock tree
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.)
Expired - Fee Related
Application number
JP2010242588A
Other languages
English (en)
Other versions
JP2012094065A (ja
Inventor
靖二 鴫原
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.)
Fujitsu Semiconductor Ltd
Original Assignee
Fujitsu Semiconductor Ltd
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 Fujitsu Semiconductor Ltd filed Critical Fujitsu Semiconductor Ltd
Priority to JP2010242588A priority Critical patent/JP5533564B2/ja
Publication of JP2012094065A publication Critical patent/JP2012094065A/ja
Application granted granted Critical
Publication of JP5533564B2 publication Critical patent/JP5533564B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、クロックツリーを生成するクロックツリー生成装置及びクロックツリー生成方法に関する。
従来から、大規模半導体集積回路内でのスキューを低減させる手法の1つとして、クロックツリーが用いられている。基本的には、クロックツリーでは、クロックバッファをツリー上に構成し、ツリー末端の負荷バランスをとることにより、スキューを低減させている。
例えば、クロックツリーを複数のサブツリーに分割してバッファを挿入し、分割された複数のサブツリーの遅延調整を行う技術が提案されている(特許文献1参照)。その他にも、複数のクロックドメイン間のクロックタイミングの差異を調整するクロックタイミング調整方法が提案されている(特許文献2参照)。
特開2006−134215号公報 特開2008−136030号公報
しかしながら、上記したような従来のクロックツリー生成方法では、クロックパスの遅延(以下、単に「クロック遅延」とも呼ぶ。)やスキューが大きいために、タイミングエラーが発生し易かった。
開示の集積回路は、クロックツリーを生成する処理を行う装置である。取得手段は、クロックツリーの情報と、前記クロックツリーに含まれる複数のフリップフロップを駆動する複数のクロックの情報とを取得する。フリップフロップ数特定手段は、取得手段によって取得された複数のクロックの情報に基づいて、複数のフリップフロップの中から、複数のクロックのそれぞれにより駆動されるフリップフロップの数をそれぞれ特定する。クロック特定手段は、フリップフロップ数特定手段によって特定された複数のクロックのそれぞれにより駆動されるフリップフロップの数に基づいて、複数のクロックの中から、駆動するフリップフロップの数が最も少ないクロックを特定する。分割手段は、クロック特定手段によって特定されたクロックで駆動されるフリップフロップに基づいて、クロックツリーを分割する。
開示の装置によれば、クロック遅延などを容易に調整することができるため、タイミングエラーを適切に収束させることが可能となる。
本実施形態に係るクロックツリー生成装置を構成するコンピューのハードウェア構成例を示すブロック図である。 第1比較例に係るクロックツリーシンセシスを説明するための図を示す。 第2比較例に係るクロックツリーシンセシスを説明するための図を示す。 第2比較例に係る回路を別の表現により示した図である。 チップ内バラツキを考慮する場合の基本的手法を説明するための図を示す。 チップ内バラツキを考慮した場合の回路の動作例を示す。 チップ内バラツキへの対応策を説明するための図を示す。 本実施形態に係るクロックツリー生成方法を適用した回路例を示す。 本実施形態に係るクロックツリー生成方法を適用した他の回路例を示す。 本実施形態に係るクロックツリー生成方法を適用した他の回路例を、別の表現により示した図である。 本実施形態に係るクロックツリー生成処理の全体処理を示すフローチャートである。 第1分岐点抽出処理の具体例を示す図である。 第2分岐点抽出処理の具体例を示す図である。 第1分岐点抽出処理を示すフローチャートである。 第2分岐点抽出処理を示すフローチャートである。
以下、実施形態の一例について図面を参照しつつ説明する。
[クロックツリー生成装置]
まず、本実施形態に係るクロックツリー生成装置のハードウェア構成について説明する。図1は、本実施形態に係るクロックツリー生成装置を構成するコンピュータ910のハードウェア構成例を示すブロック図である。
バス914には、CPU911と、RAM912と、ROM913と、可換媒体記憶装置915と、外部インターフェース916とが接続されている。
CPU911は、データの処理及び演算を行うと共に、バス914を介して接続された上記の構成ユニットを制御するものである。ROM913には、予めブートプログラムが記憶されており、このブートプログラムをCPU911が実行することにより、コンピュータ910が起動する。図示しないハードディスクなどにコンピュータプログラムが記憶されており、そのコンピュータプログラムがRAM912にコピーされ、CPU911により実行される。CPU911は、コンピュータプログラムを実行することにより、後述するクロックツリー生成に係る処理を行う。
なお、本発明における取得手段、フリップフロップ数特定手段、クロック特定手段、及び分割手段、並びにバッファ挿入手段は、CPU911が、ROM913などに記憶されたプログラム(クロックツリー生成プログラム)を実行することで実現される。
可換媒体記憶装置915は、CD−ROMやフロッピーディスクなどの媒体924を動作させる装置である。外部インターフェース916は、コンピュータ910内部と外部とを接続するインターフェースであり、ネットワークに対してコンピュータプログラム及びRTL設計データ等を入出力することができる。ディスプレイ920は、コンピュータ910からの出力表示を行い、キーボード921及びマウス922はコンピュータ910への情報入力に使用される。モデム923は、LANや電話線などを通じてネットワークと接続する。
本実施形態は、コンピュータ910がプログラムを実行することによって実現することができる。また、プログラムをコンピュータ910に供給するための手段、例えばかかるプログラムを記録したCD−ROM等のコンピュータ読み取り可能な記録媒体又はかかるプログラムを伝送するインターネット等の伝送媒体も本発明の実施形態として適用することができる。また、上記のプログラムを記録したコンピュータ読み取り可能な記録媒体等のコンピュータプログラムプロダクトも本発明の実施形態として適用することができる。上記のプログラム、記録媒体、伝送媒体及びコンピュータプログラムプロダクトは、本発明の範疇に含まれる。記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
[比較例の問題点]
本実施形態を説明する前に、従来から行われている比較例の問題点などについて説明する。
図2は、第1比較例に係るクロックツリーシンセシス(以下、「CTS(Clock Tree Synthesys)」と表記する。)を説明するための図を示す。CTSは、回路内に供給されるクロック供給ラインに発生するスキュー(クロック遅延差分を意味する。以下同様とする。)を低減させるための手法である。
第1比較例では、CTS実行時は、マスターのクロックがルートとして用いられる。具体的には、図2において、バッファ101がクロックルートセルとなる。「クロックルートセル」とは、複数のセルを駆動するためのクロックを発生するセルに相当する。また、分周クロック生成用の分周FF102はスルー指定されることで、バッファと同じ扱いとなる。この場合、バッファ101からのクロックは、クロックツリー103(クロックツリー104も含むものとする。)を介して、複数のフリップフロップ(以下、単に「FF」とも表記する。)から構成されたFF群105まで伝搬される。なお、FF群は実際にはFF以外の構成要素も有する。本明細書では、このようなFF以外の構成要素と複数のFFとを有する集合体を「FF群」と呼ぶこととする。
基本的にはFFはバッファよりも遅延時間が大きいため、第1比較例では、バッファ101からFF群105までのパスディレイ(即ちインサーションディレイ。本明細書では、クロックルートセルからFF群内のFFセルまでのパスディレイを「インサーションディレイ」と呼ぶ。)が増加する傾向にある。そのため、クロックパスの遅延(クロック遅延)が大きくなる。よって、第1比較例では、チップ内バラツキを考慮した際に発生するスキューにより、タイミングエラーが発生し易いと言える。また、第1比較例では、バッファ101からのクロックで駆動されるFF数が多いため、言い換えるとクロックツリー103に含まれるFF数が多いため、クロックツリー103が大きくなる傾向にある。これにより、最も遅延の大きいクロックパスに合わせてスキュー調整が行われるため、回路全体のインサーションディレイが大きくなると言える。
図3は、第2比較例に係るクロックツリーシンセシスを説明するための図を示す。第2比較例では、クロックツリーシンセシスのルートが分割される。具体的には、破線117で示すようなバッファ111から分周FF112までの接続によって、クロックツリー113とクロックツリー114とに分割される。この場合、バッファ111及び分周FF112がクロックルートセルとなり、バッファ111からのクロックでFF群115が駆動され、分周FF112からのクロックでFF群116が駆動される。
図4は、図3に示した回路を別の表現により示した図である。なお、図3と同一の符号を付した構成要素については同一の意味を有するものとして、その説明を省略する。図4において、FF115aはFF群115を構成するFF(言い換えるとクロックツリー113に含まれるFF)の1つであり、FF116a、116bはそれぞれFF群116を構成するFF(言い換えるとクロックツリー114に含まれるFF)の1つである。また、FF115aとFF116aとは組合回路119aを介してデータの授受を行い、FF116aとFF116bとは組合回路119bを介してデータの授受を行う。なお、バッファ111はマスタークロックを生成し、バッファ118はクロックルートセルとなる。
第2比較例のようにルートを分割することで、第1比較例と比較して、ルート単位の駆動FF数が減少するため、クロックパスの遅延が減少する傾向にある。また、第2比較例に係るクロックツリー113、114は、第1比較例に係るクロックツリー103と比較して、駆動FF数が少ないため、インサーションディレイが小さくなる。更に、第2比較例では、分周FF112の遅延時間がキャンセルされる。しかしながら、第2比較例では、クロックツリー113とクロックツリー114との間のスキューが大きいため、異なるクロック間でのデータの受け渡し時に、タイミングエラーが発生し易いと言える。言い換えると、クロックツリー113とクロックツリー114との間のスキューにより、クロックタイミングの調整を行いにくいと言える。
次に、図5及び図6を参照して、チップ内バラツキについて具体的に説明する。
図5は、チップ内バラツキを考慮する場合の基本的手法を説明するための図を示す。図5に示す回路では、FF121とFF122とが組合回路123を介してデータの授受を行い、FF121、122は、それぞれ分岐点124で分岐された経路125a、126からクロックが供給される。基本的には、チップ内バラツキを考慮する場合、分岐点124から先のPTV条件(Process、Temperature、Voltage)を変えて、遅延が求められる。この場合、分岐点124を起点とする経路125a、125b(以下、単に「経路125」と表記する。)と経路126とでは、PTV条件が異なる。
ここで、回路がターゲット周波数で動作するためには、「セットアップ制約」及び「ホールド制約」の2種類のタイミング制約を満たすことが望ましい。一般的に、送り側のFF121から出力された信号が、受け側のFF122に到達するタイミングは、現クロックの後、つぎのクロックの前になければならない。信号の到達が現在のクロックよりも後に届くことを保証するのが「ホールド制約」であり、次のクロックよりも前に届くことを保証するのが「セットアップ制約」である。
基本的には、セットアップ制約についての解析を行う場合には、経路125については最も遅いPTV条件に設定され、経路126については最も早いPTV条件に設定される。これに対して、ホールド制約についての解析を行う場合には、経路125については最も早いPTV条件に設定され、経路126については最も遅いPTV条件に設定される。なお、分岐点124の位置がFF121、122に物理的に近いほど、チップ内バラツキの影響を受けにくくなる。
図6は、図5に示したFF121、122の動作例を示す。図6(a)〜(c)は、それぞれ、横軸に時間を示しており、上から順に、マスタークロックの信号の立ち上がり、FF121のクロック端子での信号の立ち上がり、FF122のクロック端子での信号の立ち上がりを示している。図6(a)は、チップ内バラツキを考慮しない場合の動作例を示している。これより、クロックパスの遅延にチップ内バラツキ成分が混じっていないため、FF121、122のクロック端子での信号の立ち上がりエッジが揃っていることがわかる。
図6(b)及び図6(c)は、チップ内バラツキを考慮した場合の動作例を示している。具体的には、図6(b)は、セットアップ制約についての解析時の動作例を示している。この場合、クロックパスの遅延にチップ内バラツキ成分が混じるため、セットアップ制約を満たすことが厳しくなる方向に、FF121、122のクロック端子での信号の立ち上がりエッジが揃わなくなる傾向にある。一方、図6(c)は、ホールド制約についての解析時の動作例を示している。この場合、クロックパスの遅延にチップ内バラツキ成分が混じるため、ホールド制約を満たすことが厳しくなる方向に、FF121、122のクロック端子での信号の立ち上がりエッジが揃わなくなる傾向にある。
次に、図7を参照して、一般的なチップ内バラツキへの対応策について説明する。図7に示す回路は、バッファ131をクロックルートセルとし、分岐点141において分割された階層132、133を有する。階層132、133は、それぞれ、FF群138、139にクロックを伝搬するクロックツリー136、137を有する。
一般的には、分岐点がFFに近いほどチップ内バラツキの影響を受けにくくなるため、これを考慮して、階層132、133のそれぞれのクロック入力端子にバッファ134、135が挿入される。これにより、クロックの分岐点142、143が末端のFF群138、139を構成するFFに近くになるため、チップ内バラツキに起因するタイミングエラーが発生しにくくなる。具体的には、例えば図7中の実線矢印で示すような同じ階層内での経路については、分岐点142、143がFFに近くなるため、このような効果が得られると言える。しかしながら、例えば図7中の破線矢印で示すような異なる階層を跨ぐ経路については、分岐点142、143がFFから遠いため、このような効果はほとんど得られないと言える。
[本実施形態に係るクロックツリー生成方法]
次に、本実施形態に係るクロックツリー生成方法について具体的に説明する。
本実施形態では、クロックツリー生成の対象となっている回路(具体的にはLSI。以下同様とする。)について、駆動しているFF数が少ないクロック(クロック周波数を意味する。以下同様とする。)により駆動されるFFを抽出し、抽出されたFFとデータの授受を行うFFに基づいてクロックツリーを分割する。つまり、抽出されたFFにデータを出力するFF(以下、適宜「始点側FF」と呼ぶ。)、及び抽出されたFFからデータが入力されるFF(以下、適宜「終点側FF」と呼ぶ。)に基づいて、CTSのルートを分割する。具体的には、始点側FF及び終点側FFのそれぞれから接続先のFFを走査することで、クロックツリーを分割する位置を決定する。このような本実施形態によれば、クロック遅延を調整し易くなるため、タイミングエラーを適切に収束させることが可能となる。
更に、本実施形態では、上記のようにクロックツリーを分割する位置にバッファを挿入する。言い換えると、バッファを挿入することで、CTSのルートを分割する。これにより、スキューを調整し易くなるため、タイミングエラーの収束性を効果的に向上させることが可能となる。
図8は、本実施形態に係るクロックツリー生成方法を適用した回路例を示す。図8に示す回路は、主に、5つのFF151〜155及び3つの組合回路156a〜156cを有する。FF152はクロック161で駆動され、FF151、153、154、155はクロック162に応じたクロックで駆動される。つまり、FF151、153、154、155は、同一のクロック系のFFである。
この場合、クロック161は、駆動しているFF数が少ないクロックに相当し、FF152は、駆動しているFF数が少ないクロック161により駆動されるFFに相当する。なお、駆動しているFF数が少ないクロック161としては、例えば高速クロックや、かなり低い周波数のクロックなどが挙げられる。また、FF151、153は、駆動しているFF数が少ないクロックにより駆動されるFF152とデータの授受を行っているFFに相当する。具体的には、FF151は始点側FFに相当し、FF153は終点側FFに相当する。一方、FF154、155は、駆動しているFF数が少ないクロックにより駆動されるFF152とデータの授受を行っていないFFに相当する。
このような回路に本実施形態を適用した場合、FF152とデータの授受を行っているFF151、153の前にバッファ157が挿入される。つまり、FF151及びFF153のクロック端子の前にバッファ157が個別に挿入される。この場合、バッファ157はクロックルートセルとなる。一方、バッファ157の挿入に伴って、FF152とデータの授受を行っていないFF154、155の前にもバッファ158が挿入される。具体的には、バッファ157を挿入した位置と同様の位置に、つまりFF154及びFF155のクロック端子の前に、バッファ158が個別に挿入される。この場合、バッファ158はクロックルートセルとなる。このようにFF152とデータの授受を行っていないFF154、155の前にもバッファ158を挿入しているのは、新たにクロックルートセルとなるバッファ157と同じレベルのクロックルートセルを設けることが望ましいからである。
図9は、本実施形態に係るクロックツリー生成方法を適用した他の回路例を示す。具体的には、図4に示した回路に、本実施形態に係るクロックツリー生成方法を適用した例を示す。なお、図3及び図4と同一の符号を付した構成要素については同一の意味を有するものとして、その説明を省略する。
図9に示す回路では、FF115aは、駆動しているFF数が少ないクロックにより駆動されるFFに相当する。また、FF116aは、駆動しているFF数が少ないクロックにより駆動されるFF115aとデータの授受を行っているFFに相当する。具体的には、FF116aは、終点側FFに相当する。一方、FF116bは、駆動しているFF数が少ないクロックにより駆動されるFF115aとデータの授受を行っていないFFに相当する。
このような回路に本実施形態を適用した場合、FF115aとデータの授受を行っているFF116aの前にバッファ171が挿入される。一方、バッファ171の挿入に伴って、FF115aとデータの授受を行っていないFF116bの前にもバッファ172が挿入される(その理由は、前述した通りである。)。この場合、バッファ171、172は、それぞれクロックルートセルとなる。このようにバッファ171、172を挿入することで、前述したクロックツリー114(図3及び図4参照)は、クロックツリー174、175に分割される。クロックツリー174、175は、それぞれFF116a、116bを含む。
図10は、図9に示した回路を別の表現により示した図である。なお、図9と同一の符号を付した構成要素については同一の意味を有するものとして、その説明を省略する。図10に示すように、バッファ171、172を挿入することで、クロックツリー114がクロックツリー174、175に分割される、つまりCTSのルートが分割される。具体的には、前述したFF群116が、クロックツリー174、175によってクロックがそれぞれ伝搬されるFF群116x、116yに分割される。上記したFF116a、116bは、それぞれFF群116x、116yに含まれる。
図9及び図10に示したようにバッファ171、172を挿入することで、例えば、FF115aとデータの授受を行うFF116aは、同一クロック系のFF116bから独立してスキュー調整を行うことができる。したがって、クロックツリー113のクロックルートセルであるバッファ118と、挿入したバッファ171、172とのスキュー調整を容易に行うことができる。言い換えると、第2比較例と比較して、クロックツリー113とクロックツリー174との間のスキューがより小さくなる。そのため、例えばFF115aとFF116aとの間のスキューに起因するタイミングエラーの収束性を効果的に向上させることが可能となる。つまり、例えばFF115aとFF116aとの間のスキューを容易に調整することができるため、この間のタイミングエラーが発生しにくくなるので、FF115aとFF116aとの間のタイミング調整を容易に行うことが可能となる。
更に、図9及び図10に示したように分周FF112の近傍にバッファ171、172を配置してCTSのルートを分割することで、バッファ171、172からクロックツリー174、175末端のFFまでの遅延時間を小さくすることができる。よって、第2比較例と比較して、クロックツリー174、175に関して、インサーションディレイをより小さくすることができる。
[本実施形態に係るクロックツリー生成処理]
次に、本実施形態に係るクロックツリー生成処理の具体例について説明する。
図11は、本実施形態に係るクロックツリー生成処理の全体処理を示すフローチャートである。このフローは、前述したコンピュータ910内のCPU911によって実行される。
まず、ステップS101では、CPU911は、クロックツリーの生成対象となっている回路(LSI)についてのネットリスト及びクロック定義を読み込む。ネットリストは、回路における端子間の接続情報のデータなどに相当し、少なくとも当該回路のクロックツリーに関する情報を含んでいる。クロック定義は、回路が用いている複数のクロックの情報、つまりクロックツリーを構成する複数のFFが用いている複数のクロックに関する情報を含んでいる。そして、処理はステップS102に進む。
ステップS102では、CPU911は、ステップS101で取得されたネットリスト及びクロック定義に基づいて、クロックツリーの生成対象となっている回路が用いている複数のクロックごとに、それぞれのクロックで駆動されるFFの数を特定する。言い換えると、CPU911は、回路で用いられているクロック周波数ごとにFF数を調べる。具体的には、CPU911は、クロックとFF数との関係を対応付けると共に、FF数が少ない順にクロックをソートする。そして、処理はステップS103に進む。
ステップS103では、CPU911は、ステップS102で特定されたFF数に基づいて、回路が用いている全てのクロックの中で、駆動しているFF数が少ないクロックを特定する。この場合、CPU911は、少なくとも、駆動しているFF数が最も少ないクロックを特定する。具体的には、CPU911は、上記のようにFF数が少ない順にソートされたクロックに基づいて、回路が用いている全てのクロックの中で、駆動しているFF数が少ない上位のクロックを特定する。つまり、CPU911は、FF数が少ないクロックを上から順に所定数(1以上の数)だけ特定する。なお、特定するクロックの数は、予め定めた定数を用いても良いし、回路が用いているクロックの数に応じた変数を用いても良い。1つの例では、CPU911は、駆動しているFF数が最も少ないクロック、駆動しているFF数が2番目に少ないクロック、及び駆動しているFF数が3番目に少ないクロックを特定する。以上のステップS103の処理が終了すると、処理はステップS104に進む。
ステップS104では、CPU911は、ステップS103で特定されたクロックで駆動されるFFを抽出する。つまり、CPU911は、駆動しているFF数が少ないクロックにより駆動されるFFを抽出する。そして、処理はステップS105に進む。
ステップS105では、CPU911は、ステップS104で抽出されたFFを始点とする終点側FFを抽出する。つまり、CPU911は、ステップS104で抽出されたFFからデータが入力される終点側FFを抽出する。そして、処理はステップS106に進む。
ステップS106では、CPU911は、ステップS104で抽出されたFFを終点とする始点側FFを抽出する。つまり、CPU911は、ステップS104で抽出されたFFにデータを出力する始点側FFを抽出する。そして、処理はステップS107に進む。
なお、終点側FF及び始点側FFを抽出する場合に、ステップS104で抽出されたFFと異なるクロックで駆動されていることを条件に用いても良い。具体的には、ステップS104で抽出されたFFとデータの授受を行うFFが、当該抽出されたFFと同一のクロックで駆動されている場合には、そのようなFFを終点側FF又は始点側FFとして抽出しなくても良い。
ステップS107では、CPU911は、ステップS105及びS106で抽出された終点側FF及び始点側FFのそれぞれのクロック分岐点を抽出する処理(以下、「分岐点抽出処理」と呼ぶ。)を行う。そして、処理はステップS108に進む。
ここで、図12乃至図15を参照して、ステップS107における分岐点抽出処理について具体的に説明する。
分岐点抽出処理の概要について、簡単に説明する。分岐点抽出処理は、2段階の処理によって行われる。以下では、最初に行われる処理を「第1分岐点抽出処理」と呼び、第1分岐点抽出処理の後に行われる処理を「第2分岐点抽出処理」と呼ぶ。
第1分岐点抽出処理では、まず、CPU911は、ステップS105及びS106で抽出された終点側FF及び始点側FFのそれぞれについて、終点側FF及び始点側FFのクロック端子を駆動するセル(以下、適宜「第1セル」と呼ぶ。)を抽出する。そして、CPU911は、抽出された第1セルが駆動するFFの中に終点側FF及び始点側FF以外のFFが存在する場合には、第1セルを複製して、複製されたセル(以下、適宜「第2セル」と呼ぶ。)によって終点側FF及び始点側FFが駆動されるように接続変更を行う。これに対して、CPU911は、第1セルが駆動するFFの中に終点側FF及び始点側FF以外のFFが存在しない場合には、第1セルを複製せずに、第1セルを分岐点として抽出する。CPU911は、このような第1分岐点抽出処理を、ステップS105及びS106で抽出された終点側FF及び始点側FFの全てに対して実行する。
次に、第2分岐点抽出処理では、CPU911は、第1分岐点抽出処理で複製された第2セルについて、当該第2セルを駆動するセル(以下、適宜「第3セル」と呼ぶ。)を抽出する。そして、CPU911は、抽出された第3セルが駆動するセル(以下、適宜「第4セル」と呼ぶ。)を更に抽出する。次に、CPU911は、第4セルの中に第1分岐点抽出処理で複製された第2セル以外のセルが存在する場合には、第3セルを複製して、複製されたセル(以下、適宜「第5セル」と呼ぶ。)によって第2セルが駆動されるように接続変更を行う。これに対して、CPU911は、第4セルの中に第2セル以外のセルが存在しない場合には、第3セルを複製せずに、当該第3セルを分岐点として抽出する。CPU911は、このような第2分岐点抽出処理を、第1分岐点抽出処理で複製された第2セルの全てに対して実行する。
なお、CPU911は、抽出された第3セルがクロックルートセルであった場合には、第2分岐点抽出処理を終了する。つまり、CPU911は、第2分岐点抽出処理を行っている際にクロックルートセルに到達した場合には、第2分岐点抽出処理を終了する。
なお、上記したセル(第1セル〜第5セルなど)としては、例えばゲーティッドクロックバッファや組合回路やセレクタやFFや分周FFなどが挙げられる。
図12は、第1分岐点抽出処理の具体例を示す図である。図12(a)に示す例では、FF201は終点側FF又は始点側FFであり、FF202は終点側FF及び始点側FFでないFFである。この例では、FF201、202のそれぞれのクロック端子は、セル203に接続されている。よって、セル203は、終点側FF又は始点側FFであるFF201のクロック端子を駆動する第1セルに相当する。この場合、セル203が駆動するFFの中に終点側FF及び始点側FF以外のFF202が存在する。そのため、図12(b)に示すように、セル203が複製されてセル203a(第2セル)が生成されると共に、当該セル203aによってFF201が駆動されるようにFF201の接続変更が行われる。具体的には、FF201のクロック端子が、セル203からセル203aへ接続変更される。
図13は、第2分岐点抽出処理の具体例を示す図である。図13において、図12と同一の符号を付した構成要素については同一の意味を有するものとして、その説明を省略する。
図13(a)に示す例では、セル203は第1セルであり、セル203aは第1分岐点抽出処理で複製された第2セルである。この例では、セル203、203aのそれぞれのクロック端子は、セル204に接続されている。よって、セル204は、複製された第2セルを駆動する第3セルに相当する。この場合、セル204が駆動するセルの中に第2セル以外のセル203が存在する。そのため、図13(b)に示すように、セル204が複製されてセル204a(第5セル)が生成されると共に、当該セル204aによってセル203aが駆動されるようにセル203aの接続変更が行われる。具体的には、セル203aのクロック端子が、セル204からセル204aへ接続変更される。
一方で、図13(c)に示す例では、セル203、203aのそれぞれのクロック端子は、クロックルートセルであるセル205(FF)に接続されている。この例では、抽出された第3セルがクロックルートセルである場合に相当する。そのため、クロックルートセルに到達したとして、第2分岐点抽出処理が終了される。つまり、分岐点抽出処理が終了される。
次に、第1分岐点抽出処理及び第2分岐点抽出処理の具体的なフローチャートについて説明する。
図14は、第1分岐点抽出処理を示すフローチャートである。このフローも、CPU911によって実行される。
まず、ステップS201では、CPU911は、上記のステップS105、S106で抽出された終点側FF又は始点側FFのクロック端子を駆動する第1セルを抽出する。そして、処理はステップS202に進む。ステップS202では、CPU911は、ステップS201で抽出された第1セルが駆動するFFを抽出する。そして、処理はステップS203に進む。
ステップS203では、CPU911は、第1セルが駆動するFFの中に終点側FF及び始点側FF以外のFFが存在するか否かを判定する。
終点側FF及び始点側FF以外のFFが存在する場合(ステップS203;Yes)、処理はステップS204に進む。ステップS204では、CPU911は、第1セルを複製し、第2セルを生成する。そして、処理はステップS205に進む。ステップS205では、CPU911は、複製された第2セルで終点側FF又は始点側FFを駆動する。つまり、CPU911は、第2セルによって終点側FF又は始点側FFが駆動されるように、終点側FF又は始点側FFの接続変更を行う。そして、処理はステップS206に進む。ステップS206では、CPU911は、ステップS205で接続変更された終点側FF又は始点側FFを処理対象から除外する。つまり、当該終点側FF又は当該始点側FFに対する第1分岐点抽出処理が終了したものとして、当該終点側FF又は当該始点側FFを第1分岐点抽出処理の処理対象から除外する。そして、処理はステップS208に進む。
一方、第1セルが駆動するFFの中に終点側FF及び始点側FF以外のFFが存在しない場合(ステップS203;No)、処理はステップS207に進む。ステップS207では、CPU911は、第1セルを複製せずに、第1セルを分岐点として抽出する。そして、処理はステップS208に進む。
ステップS208では、CPU911は、ステップS105及びS106で抽出された終点側FF及び始点側FFの全てに対する処理が終了したか否かを判定する。終点側FF及び始点側FFの全てに対する処理が終了している場合(ステップS208;Yes)、処理は終了する。これに対して、終点側FF及び始点側FFの全てに対する処理が終了していない場合(ステップS208;No)、処理はステップS201に戻る。こうすることで、CPU911は、終点側FF及び始点側FFの全てに対する処理が終了するまで、上記したステップS201〜S207の処理を繰り返し行う。
図15は、第2分岐点抽出処理を示すフローチャートである。このフローも、CPU911によって実行される。
まず、ステップS301では、CPU911は、第1分岐点抽出処理で複製された第2セルを駆動する第3セルを抽出する。そして、処理はステップS302に進む。ステップS302では、CPU911は、クロックルートセルに到達したか否かを判定する。言い換えると、CPU911は、ステップS301で抽出された第3セルがクロックルートセルであるか否かを判定する。クロックルートセルに到達した場合(ステップS302;Yes)、処理は終了する。これに対して、クロックルートセルに到達していない場合(ステップS302;No)、処理はステップS303に進む。
ステップS303では、CPU911は、ステップS301で抽出された第3セルが駆動する第4セルを更に抽出する。そして、処理はステップS304に進む。ステップS304では、CPU911は、第4セルの中に第2セル以外のセルが存在するか否かを判定する。
第4セルの中に第2セル以外のセルが存在する場合(ステップS304;Yes)、処理はステップS305に進む。ステップS305では、CPU911は、第3セルを複製して第5セルを生成し、当該第5セルによって第2セルが駆動されるように当該第2セルの接続変更を行う。そして、処理はステップS307に進む。
一方、第4セルの中に第2セル以外のセルが存在しない場合(ステップS304;No)、処理はステップS306に進む。ステップS306では、CPU911は、第3セルを複製せずに、当該第3セルを分岐点として抽出する。そして、処理はステップS307に進む。
ステップS307では、CPU911は、第1分岐点抽出処理で複製された第2セルの全てに対する処理が終了したか否かを判定する。第2セルの全てに対する処理が終了している場合(ステップS307;Yes)、処理は終了する。これに対して、第2セルの全てに対する処理が終了していない場合(ステップS307;No)、処理はステップS301に戻る。こうすることで、CPU911は、第2セルの全てに対する処理が終了するまで、上記したステップS301〜S306の処理を繰り返し行う。
次に、図11に戻って、ステップS108以降の処理の説明を行う。
ステップS108では、CPU911は、上記した分岐点抽出処理で抽出された分岐点に基づいてクロックツリーを分割する。具体的には、CPU911は、分岐点にセルが存在しない場合、当該分岐点にバッファを挿入する。これと同時に、CPU911は、挿入したバッファの固有名を記憶させる。一方で、CPU911は、分岐点にセルが存在する場合には、当該セルをクロックルートセルとして指定すると共に、当該セルの固有名を記憶させる。そして、処理はステップS109に進む。
ステップS109では、CPU911は、分岐点ごとにCTSを実行する。そして、処理はステップS110に進む。ステップS110では、CPU911は、回路全体のCTSを実行する。この場合、CPU911は、分岐点として抽出されたセルについてはスキュー調整の対象外として、CTSを実行する。そして、処理は終了する。
ここで、ステップS109及びS110の処理を、図10に示した回路に適用した場合を例に挙げる。この場合、CPU911は、クロックツリー113、174、175ごとにCTSを実行する。例えば、CPU911は、クロックツリー113→クロックツリー174→クロックツリー175といった順にCTSを実行する。具体的には、CPU911は、クロックツリー113、174、175のうちの1つについてCTSを実行している際には、クロックツリー113、174、175のうちの残りの2つについてはスキュー調整の対象外とする。つまり、CPU911は、クロックツリー113、174、175のうちの残りの2つについてはスキュー調整を行わない。但し、CPU911は、例えばクロックネットの属性追加などのスキュー調整以外の処理については実行する。つまり、CPU911は、クロックツリー113、174、175のうちの残りの2つについても、スキュー調整以外の処理は実行する。CPU911は、このような処理をクロックツリー113、174、175ごとに実行していくことで、クロックツリー113、174、175の全てに対するCTSを完了させる。
また、CPU911は、セットアップエラー及びホールドエラーの状況に基づいて、クロックツリー113、174、175間の遅延調整を行う。CPU911は、タイミングエラーが発生している場合、タイミングエラーの発生箇所から、クロックツリー113、174、175内のFFを抽出し、当該FFに対してタイミングエラーの発生分に応じたバッファを挿入する。
[変形例]
上記では、クロックツリーを分割すると共にバッファを挿入する実施形態を示したが、この代わりに、バッファを挿入せずに、クロックツリーの分割のみを行うこととしても良い。これによっても、クロック遅延などを容易に調整することができるため、タイミングエラーを適切に収束させることが可能となる。
111、118、171、172 バッファ
112 分周FF
113、174、175 クロックツリー
115、116x、116y FF群
115a、116a、116b、151〜155 FF(フリップフロップ)
157、158 バッファ
161、162 クロック

Claims (4)

  1. クロックツリー情報と、前記クロックツリーに含まれる複数のフリップフロップを駆動する複数のクロック情報とを取得する取得手段と、
    前記取得手段によって取得された前記複数のクロックの情報に基づいて、前記複数のフリップフロップの中から、前記複数のクロックのそれぞれにより駆動されるフリップフロップの数をそれぞれ特定するフリップフロップ数特定手段と、
    前記フリップフロップ数特定手段によって特定された前記複数のクロックのそれぞれにより駆動されるフリップフロップの数に基づいて、前記複数のクロックの中から、駆動するフリップフロップの数が最も少ないクロックを特定するクロック特定手段と、
    前記クロック特定手段によって特定されたクロックで駆動されるフリップフロップに基づいて、前記クロックツリーを分割する分割手段と、を備えることを特徴とするクロックツリー生成装置。
  2. 前記分割手段によって前記クロックツリーが分割された位置にバッファを挿入するバッファ挿入手段を更に備えることを特徴とする請求項1に記載のクロックツリー生成装置。
  3. 前記分割手段は、前記クロック特定手段によって特定されたクロックで駆動されるフリップフロップにデータを出力する第1のフリップフロップと、前記クロック特定手段によって特定されたクロックで駆動されるフリップフロップからデータが入力される第2のフリップフロップとを抽出し、前記第1のフリップフロップ及び第2のフリップフロップのそれぞれ接続される第3のフリップフロップを走査前記走査の結果に基づいて前記クロックツリーを分割する位置を決定することを特徴とする請求項1又は2に記載のクロックツリー生成装置。
  4. クロックツリー情報と、前記クロックツリーに含まれる複数のフリップフロップを駆動する複数のクロック情報とを取得
    前記複数のクロックの情報に基づいて前記複数のフリップフロップの中から、前記複数のクロックのそれぞれにより駆動されるフリップフロップの数をそれぞれ特定
    前記複数のクロックのそれぞれにより駆動されるフリップフロップの数に基づいて、前記複数のクロックの中から、駆動するフリップフロップの数が最も少ないクロックを特定
    駆動するフリップフロップの数が最も少ないクロックで駆動されるフリップフロップに基づいて、前記クロックツリーを分割する
    処理をコンピュータに実行させることを特徴とするクロックツリー生成方法。
JP2010242588A 2010-10-28 2010-10-28 クロックツリー生成装置及びクロックツリー生成方法 Expired - Fee Related JP5533564B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010242588A JP5533564B2 (ja) 2010-10-28 2010-10-28 クロックツリー生成装置及びクロックツリー生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010242588A JP5533564B2 (ja) 2010-10-28 2010-10-28 クロックツリー生成装置及びクロックツリー生成方法

Publications (2)

Publication Number Publication Date
JP2012094065A JP2012094065A (ja) 2012-05-17
JP5533564B2 true JP5533564B2 (ja) 2014-06-25

Family

ID=46387296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010242588A Expired - Fee Related JP5533564B2 (ja) 2010-10-28 2010-10-28 クロックツリー生成装置及びクロックツリー生成方法

Country Status (1)

Country Link
JP (1) JP5533564B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9053281B2 (en) * 2013-03-21 2015-06-09 Synopsys, Inc. Dual-structure clock tree synthesis (CTS)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000353745A (ja) * 1999-06-11 2000-12-19 Nec Ic Microcomput Syst Ltd 複数クロック間のクロックスキュー低減方法及び装置
JP2006024851A (ja) * 2004-07-09 2006-01-26 Toshiba Corp 半導体集積回路の設計方法及びその装置
JP4231837B2 (ja) * 2004-11-09 2009-03-04 富士通株式会社 クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体

Also Published As

Publication number Publication date
JP2012094065A (ja) 2012-05-17

Similar Documents

Publication Publication Date Title
Huang et al. OpenTimer: A high-performance timing analysis tool
US7546567B2 (en) Method and apparatus for generating a variation-tolerant clock-tree for an integrated circuit chip
US7406672B2 (en) Method and apparatus for constructing and optimizing a skew of a clock tree
US20050278681A1 (en) Method for synthesizing domino logic circuits
JP2007027841A (ja) 半導体集積回路の設計装置と方法並びにプログラム
JP2006048525A (ja) シミュレーション方法
JP2010277230A (ja) 半導体集積回路の設計装置
JP2004013720A (ja) 論理回路のタイミング制約モデル生成方法、論理回路のタイミング制約モデル生成プログラム、およびタイミング制約モデルを用いるタイミングドリブンレイアウト方法
US9965581B1 (en) Fanout optimization to facilitate timing improvement in circuit designs
JP4437741B2 (ja) 半導体集積回路の設計装置、半導体集積回路および半導体集積回路の設計プログラム
US9449127B1 (en) System for verifying timing constraints of IC design
JP5533564B2 (ja) クロックツリー生成装置及びクロックツリー生成方法
Quinton et al. Practical asynchronous interconnect network design
US7082579B2 (en) Gated clock generating circuit and method of modifying the circuit
JP4231837B2 (ja) クロックツリー生成装置、クロックツリー生成方法、クロックツリー生成プログラムおよび記録媒体
Hassoun et al. Optimal path routing in single-and multiple-clock domain systems
JP2009187344A (ja) 非同期論理回路検証装置およびその方法、並びにプログラム
JP4587754B2 (ja) クロック合成方法、半導体装置及びプログラム
JP7354815B2 (ja) 検証支援装置、検証支援方法および検証支援プログラム
JP5321185B2 (ja) 半導体集積回路の設計方法、設計装置および、コンピュータプログラム
US20240311541A1 (en) Pre-placement clocking identification and resolution for circuit designs
JP2013037596A (ja) 非同期インターフェース検証装置、非同期インターフェース検証方法及びそのプログラム
JP3116915B2 (ja) クロックネットのレイアウト設計変更方式
JP5531479B2 (ja) 回路設計方法、及び回路設計プログラム
JP2011210053A (ja) 半導体集積回路の設計方法、設計装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140129

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5533564

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees