説明

クロック設計方法、クロック設計プログラム

【課題】半導体集積回路のクロック設計において、異なる2種類のクロック間の「セル遅延と配線遅延の比率α」の差を抑制する。
【解決手段】半導体集積回路は、第1クロック(CLK1)が供給される第1素子群と、第1クロック(CLK1)と異なる第2クロック(CLK2)が供給される第2素子群と、を備える。クロック設計方法は、第1クロック(CLK1)に関するクロックツリーシンセシスを実施することによって、第1クロックツリー構造10を作成するステップと、第1クロックツリー構造10の少なくとも一部を流用することによって、第2素子群に第2クロック(CLK2)を供給する第2クロックツリー構造20を作成するステップと、を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路のクロック設計技術に関する。
【背景技術】
【0002】
半導体集積回路のクロック設計において、「クロックツリーシンセシス(CTS:Clock Tree Synthesis)」が広く使用されている(例えば特許文献1参照)。クロックツリーシンセシスによれば、レイアウト領域内に散在する複数の素子(典型的にはフリップフロップ)間のクロックスキューが低減されるように、クロック配線がツリー状に設計される。CTSによって得られるツリー状のクロック配線構造は、以下、「クロックツリー構造」と参照される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002−222864号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願発明者は、次の点に初めて着目した。
【0005】
同一半導体集積回路内で使用される遅延の異なる2種類のクロックを考える。遅延が比較的大きい方が第1クロックであり、遅延が比較的小さい方が第2クロックであるとする。この場合、CTSにおいて、第1クロックと第2クロックの間で遅延を合わせることが望ましい。市販の自動レイアウトツールの場合、第2クロックの遅延を増加させて第1クロックの遅延に合わせるために、第2クロックの方のクロックツリー構造に多数のバッファが挿入される。場合によっては、第2クロックのクロックツリー構造に挿入されるバッファ段数は100以上にもなる。
【0006】
ここで、各クロックツリー構造に関して、「セル遅延と配線遅延の比率α」というパラメータを考える。第2クロックのクロックツリー構造に多数のバッファが挿入されると、第2クロックに関する比率αが大きく変動する。このことは、第1クロックと第2クロックとの間の比率αの差が大きくなることを意味する。比率αが大きく異なる第1クロックと第2クロックとの間でデータ転送がある場合、静的タイミング解析(STA:Static Timing Analysis)における検証コーナーを増やす必要がある。STAにおける検証コーナーの増加は、設計コストの増加、チップ面積の増加、性能の低下を引き起こす。
【課題を解決するための手段】
【0007】
以下に、[発明を実施するための形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
【0008】
本発明の1つの観点において、半導体集積回路のクロック設計方法が提供される。半導体集積回路は、第1クロック(CLK1)が供給される第1素子群(11)と、第1クロック(CLK1)と異なる第2クロック(CLK2)が供給される第2素子群(21)と、を備える。クロック設計方法は、第1クロック(CLK1)に関するクロックツリーシンセシスを実施することによって、第1クロックツリー構造(10)を作成するステップと、第1クロックツリー構造(10)の少なくとも一部を流用することによって、第2素子群(21)に第2クロック(CLK2)を供給する第2クロックツリー構造(20)を作成するステップと、を含む。
【0009】
本発明の他の観点において、上記のクロック設計方法をコンピュータに実行させるクロック設計プログラム(PROG)が提供される。
【発明の効果】
【0010】
本発明のクロック設計技術によれば、異なる2種類のクロック間の比率αの差が抑制される。その結果、STAにおける検証コーナーの増加が防止される。
【図面の簡単な説明】
【0011】
【図1】図1は、本発明の実施の形態における第1クロックと第2クロックの関係の一例を示す概念図である。
【図2】図2は、本発明の実施の形態に係るクロック設計方法の概要を示す概念図である。
【図3】図3は、本発明の実施の形態における第1クロックと第2クロックの関係の他の例を示す概念図である。
【図4】図4は、本発明の第1の実施の形態に係るクロック設計方法を示すフローチャートである。
【図5】図5は、第1の実施の形態におけるクロック設計方法を説明するための図である。
【図6】図6は、第1の実施の形態におけるクロック設計方法を説明するための図である。
【図7】図7は、第1の実施の形態におけるクロック設計方法を説明するための図である。
【図8】図8は、第1の実施の形態におけるクロック設計方法を説明するための図である。
【図9】図9は、第1の実施の形態におけるクロック設計方法を説明するための図である。
【図10】図10は、本発明の第2の実施の形態に係るクロック設計方法を示すフローチャートである。
【図11】図11は、第2の実施の形態におけるクロック設計方法を説明するための図である。
【図12】図12は、第2の実施の形態におけるクロック設計方法を説明するための図である。
【図13】図13は、第2の実施の形態におけるクロック設計方法を説明するための図である。
【図14】図14は、第2の実施の形態におけるクロック設計方法を説明するための図である。
【図15】図15は、本発明の実施の形態に係るクロック設計システムの構成例を示すブロック図である。
【発明を実施するための形態】
【0012】
添付図面を参照して、本発明の実施の形態を説明する。
【0013】
1.概要
本発明の実施の形態では、同一の半導体集積回路(半導体チップ)内で複数種類の異なるクロックが使用される。ここでは、2種類の異なるクロック、第1クロックCLK1と第2クロックCLK2を考える。第1クロックCLK1は、半導体集積回路の第1素子群(典型的にはフリップフロップ)に供給される。第2クロックCLK2は、半導体集積回路の第2素子群(典型的にはフリップフロップ)に供給される。
【0014】
図1は、第1クロックCLK1と第2クロックCLK2の関係の一例を示す概念図である。第1クロック領域REC1は、第1クロックCLK1が供給される領域であり、第1素子群を包含する最小の矩形領域として定義される。同様に、第2クロック領域REC2は、第2クロックCLK2が供給される領域であり、第2素子群を包含する最小の矩形領域として定義される。本実施の形態によれば、第1クロック領域REC1の面積は、第2クロック領域REC2の面積よりも大きい。このことは、典型的には、半導体チップ中の第1素子の数が第2素子の数よりも多く、第1素子群の駆動負荷が第2素子群の駆動負荷よりも重いことを意味する。従って、何の調整も行われなければ、第1クロックCLK1の遅延は第2クロックCLK2の遅延よりも大きくなる傾向にある。
【0015】
図1に示される例では、第2クロック領域REC2は、第1クロック領域REC1に完全に包含されている。例えば、第1クロックCLK1は、半導体チップ全体に行き渡るシステムクロックであり、第2クロックCLK2は、メモリ動作等の特殊な用途に使用されるローカルクロックである。
【0016】
図2を参照して、本実施の形態に係るクロック設計方法の概要を説明する。
【0017】
ステップS10:
まず、第1クロック領域REC1の第1クロックCLK1に関してクロックツリーシンセシス(CTS)が実施される。これにより、第1クロックCLK1に関連する第1クロックツリー構造10が作成される。
【0018】
ステップS20:
続いて、第2クロック領域REC2の第2素子群に第2クロックCLK2を供給するための第2クロックツリー構造20が作成される。ここで、第2クロックツリー構造20を作成するために、第2素子群に対するCTSは実施されない。その代わりに、上記ステップS10で得られた第1クロックツリー構造10と同じ構造の少なくとも一部が、第2クロックツリー構造20として用いられる。具体的には、図2に示されるように、第1クロックツリー構造10と同じ構造のうち第2クロック領域REC2へのクロック供給に必要な部分が、第2クロックツリー構造20として採用される。
【0019】
このように、本実施の形態によれば、第1クロックツリー構造10の少なくとも一部を流用することにより、第2クロックツリー構造20が作成される。従って、各クロックツリー構造に関して「セル遅延と配線遅延の比率α」というパラメータを考えたとき、第1クロックCLK1と第2クロックCLK2との間の比率αの差が抑制される。その結果、第1クロックCLK1と第2クロックCLK2との間でデータ転送がある場合にSTAにおける検証コーナーが増加する、という問題が解消される。STAにおける検証コーナーの増加が防止されるため、設計コストの増加、チップ面積の増加、性能の低下といった問題も防止される。
【0020】
更に、第1クロックツリー構造10が第2クロックツリー構造20に流用されるため、結果的に、第1クロックCLK1の遅延と第2クロックCLK2の遅延がほぼ一致することになる。すなわち、本実施の形態によれば、異なる2種類のクロック間で、比率αの差を抑制しながら遅延も合わすことが可能となる。
【0021】
尚、図1の例では、第2クロック領域REC2が第1クロック領域REC1に完全に包含されているが、図3に示されるように、第1クロック領域REC1と第2クロック領域REC2が部分的にオーバーラップしていてもよい。第1クロックツリー構造10の一部を第2クロックツリー構造20に流用可能で有る限り、本発明を適用することができる。
【0022】
以下、本発明の実施の形態を更に詳しく説明する。
【0023】
2.第1の実施の形態
図4は、本発明の第1の実施の形態に係るクロック設計方法を示すフローチャートである。図5は、クロック設計対象の半導体チップの一例を概念的に示している。その半導体チップは、第1クロックCLK1が供給される第1素子群11と、第2クロックCLK2が供給される第2素子群21を備えている。図5に示される半導体チップの例を用いて、第1の実施の形態に係るクロック設計方法を説明する。
【0024】
ステップS10:
第1の実施の形態では、ステップS10は、次のステップS11を含んでいる。
【0025】
ステップS11:
第1素子群11の位置情報を参照することにより、第1素子群11に対するCTSが実施される。その結果、図6に示されるように、第1クロックCLK1のルートバッファから第1素子群11(末端)へのクロックツリー構造が作成される。このクロックツリー構造が、第1クロックツリー構造10として用いられる。
【0026】
ステップS20:
第1の実施の形態では、ステップS20は、次のステップS21〜S23を含んでいる。
【0027】
ステップS21:
図6で示される第1クロックツリー構造10のうち、第1クロックCLK1のルートバッファから最終段バッファ12までの構造がコピーされる。コピーされた構造は、以下、「コピークロックツリー構造10’」と参照される。図7に示されるように、コピークロックツリー構造10’がチップ領域に配置される。この時、コピークロックツリー構造10’は、第1クロックツリー構造10から少しずらして配置される。コピークロックツリー構造10’は、第1クロックツリー構造10の最終段バッファ12に相当する最終段バッファ12’を有している。
【0028】
ステップS22:
第2クロックCLK2に関連する第2素子群21の近傍には、上記のコピークロックツリー構造10’の最終段バッファ12’が存在している。図8に示されるように、コピークロックツリー構造10’の最終段バッファ12’と第2素子群21との間が配線25で接続される。
【0029】
ステップS23:
最後に、図9に示されるように、第2素子群21への第2クロックCLK2の供給に不要な部分(枝)が、コピークロックツリー構造10’から削除される。削除の結果残った構造が、第2クロックツリー構造20として用いられる。このように、第1クロックツリー構造10の一部を流用することにより、第2クロックツリー構造20が作成される。
【0030】
3.第2の実施の形態
図10は、本発明の第2の実施の形態に係るクロック設計方法を示すフローチャートである。既出の図5に示される半導体チップの例を用いて、第2の実施の形態に係るクロック設計方法を説明する。
【0031】
ステップS10:
第2の実施の形態では、ステップS10は、次のステップS12、S13を含んでいる。
【0032】
ステップS12:
第2の実施の形態では、第1クロックツリー構造10の作成にあたり、第1素子群11そのものに対するCTSは実施されない。その代わりに、図11に示されるような、第1素子群11の分布を反映した複数の代表点15が用いられる。そのため、ステップS12では、第1素子群11の位置情報等を参照することにより、第1素子群11の分布を反映した複数の代表点15が決定される。
【0033】
例えば図11に示されるように、第1クロック領域REC1が、マトリックス状の複数の分割領域DIVに分割される。そして、各分割領域DIV毎に代表点15が決定される。例えば、各分割領域DIVに含まれる第1素子11の平均位置が、代表点15として用いられる。あるいは、単純に、各分割領域DIVの中心位置が、代表点15として用いられてもよい。
【0034】
ステップS13:
上記ステップS12で得られた複数の代表点15の位置情報を参照することにより、複数の代表点15に対するCTSが実施される。その結果、図12に示されるように、第1クロックCLK1のルートバッファから複数の代表点15(末端)へのクロックツリー構造が作成される。このクロックツリー構造が、第1クロックツリー構造10として用いられる。
【0035】
ステップS20:
第2の実施の形態では、ステップS20は、次のステップS24、S25を含んでいる。
【0036】
ステップS24:
第2クロックCLK2に関連する第2素子群21の近傍には、上記の第1クロックツリー構造10の末端(代表点15)が存在している。図13に示されるように、第1クロックツリー構造10の末端(代表点15)と第2素子群21との間が配線25で接続される。
【0037】
ステップS25:
最後に、図14に示されるように、第2素子群21への第2クロックCLK2の供給に不要な部分(枝)が、第1クロックツリー構造10から削除される。削除の結果残った構造が、第2クロックツリー構造20として用いられる。このように、第1クロックツリー構造10の一部を流用することにより、第2クロックツリー構造20が作成される。
【0038】
尚、第2の実施の形態では、第1素子群11に第1クロックCLK1を供給するためのクロックツリー構造は、CTSにより別途作成される。
【0039】
4.クロック設計システム
以上に説明された本実施の形態に係るクロック設計処理は、コンピュータシステム(クロック設計システム)により実現され得る。図15は、本実施の形態に係るクロック設計処理を実行するクロック設計システム100の構成例を示すブロック図である。クロック設計システム100は、処理装置101と記憶装置102を備えている。処理装置101は、CPUを含む。記憶装置102は、RAMやHDDを含む。
【0040】
記憶装置102には、位置情報LOC、第1クロックツリー構造情報CT1、第2クロックツリー構造情報CT2、等が格納される。位置情報LOCは、半導体チップ内の第1素子群11、第2素子群12、代表点15の位置(図5、図11参照)を示す情報である。第1クロックツリー構造情報CT1は、上記ステップS10で作成される第1クロックツリー構造10の情報である。第2クロックツリー構造情報CT2は、上記ステップS20で作成される第2クロックツリー構造20の情報である。
【0041】
また、記憶装置102は、クロック設計プログラムPROGが格納される。クロック設計プログラムPROGは、本実施の形態に係るクロック設計処理をコンピュータ(処理装置101)に実行させるコンピュータプログラムである。クロック設計プログラムPROGは、コンピュータ読み取り可能な記録媒体に記録されていてもよい。
【0042】
処理装置101は、第1クロックツリー構造作成部110、第2クロックツリー構造作成部120といった機能ブロックを備えている。これら機能ブロックは、処理装置101がクロック設計プログラムPROGを実行することにより実現される。各機能ブロックは、記憶装置102から必要なデータを読み出し、所定のデータ処理を実行し、作成したデータを記憶装置102に格納する。具体的には、第1クロックツリー構造作成部110は、上記のステップS10を実行する。つまり、第1クロックツリー構造作成部110は、位置情報LOCを参照して第1クロックツリー構造10を作成し、第1クロックツリー構造情報CT1を作成する。また、第2クロックツリー構造作成部120は、上記のステップS20を実行する。つまり、第2クロックツリー構造作成部120は、位置情報LOC及び第1クロックツリー構造情報CT1を参照して第2クロックツリー構造20を作成し、第2クロックツリー構造情報CT2を作成する。
【0043】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【0044】
10 第1クロックツリー構造
11 第1素子群
12 最終段バッファ
10’ コピークロックツリー構造
12’ 最終段バッファ
15 代表点
20 第2クロックツリー構造
21 第2素子群
25 配線
100 クロック設計システム
101 処理装置
102 記憶装置
110 第1クロックツリー構造作成部
120 第2クロックツリー構造作成部
CLK1 第1クロック
CLK2 第2クロック
REC1 第1クロック領域
REC2 第2クロック領域
DIV 分割領域
LOC 位置情報
CT1 第1クロックツリー構造情報
CT2 第2クロックツリー構造情報
PROG クロック設計プログラム

【特許請求の範囲】
【請求項1】
半導体集積回路のクロック設計方法であって、
前記半導体集積回路は、
第1クロックが供給される第1素子群と、
前記第1クロックと異なる第2クロックが供給される第2素子群と
を備え、
前記クロック設計方法は、
前記第1クロックに関するクロックツリーシンセシスを実施することによって、第1クロックツリー構造を作成するステップと、
前記第1クロックツリー構造の少なくとも一部を流用することによって、前記第2素子群に前記第2クロックを供給する第2クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項2】
請求項1に記載のクロック設計方法であって、
前記第1クロックツリー構造を作成するステップは、
前記第1素子群の位置情報を用いてクロックツリーシンセシスを実施し、前記第1クロックのルートバッファから前記第1素子群へのクロックツリー構造を前記第1クロックツリー構造として作成するステップ
を含む
クロック設計方法。
【請求項3】
請求項2に記載のクロック設計方法であって、
前記第2クロックツリー構造を作成するステップは、
前記第1クロックツリー構造のうち前記ルートバッファから最終段バッファまでの構造をコピーするステップと、
前記コピーされた構造の前記最終段バッファと前記第2素子群との間を配線でつなぐステップと、
前記第2素子群への前記第2クロックの供給に不要な部分を前記コピーされた構造から削除することによって、前記第2クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項4】
請求項1に記載のクロック設計方法であって、
前記第1クロックツリー構造を作成するステップは、
前記第1素子群の分布を反映した複数の代表点を決定するステップと、
前記複数の代表点の位置情報を用いてクロックツリーシンセシスを実施し、前記第1クロックのルートバッファから前記複数の代表点へのクロックツリー構造を前記第1クロックツリー構造として作成するステップと
を含む
クロック設計方法。
【請求項5】
請求項4に記載のクロック設計方法であって、
前記第2クロックツリー構造を作成するステップは、
前記第1クロックツリー構造の末端と前記第2素子群との間を配線でつなぐステップと、
前記第2素子群への前記第2クロックの供給に不要な部分を前記第1クロックツリー構造から削除することによって、前記第2クロックツリー構造を作成するステップと
を含む
クロック設計方法。
【請求項6】
請求項1乃至5のいずれか一項に記載のクロック設計方法であって、
前記第1素子群を包含する最小矩形領域の面積は、前記第2素子群を包含する最小矩形領域の面積よりも大きい
クロック設計方法。
【請求項7】
請求項1乃至6のいずれか一項に記載のクロック設計方法をコンピュータに実行させる
クロック設計プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2013−38155(P2013−38155A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−171679(P2011−171679)
【出願日】平成23年8月5日(2011.8.5)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】