(57)【要約】【課題】実際のデバイス上でのクロックスキューの増大を抑制し、オンチップばらつき耐性を強くする。【解決手段】所定数のフリップ・フロップ（FF）を含む領域G1〜G8を２つの群に群分けする。このとき、境界線の横切るデータ接続経路の数が最小となるようにする。ここでは、データ接続経路A1、A2を横切るようにすると、境界線が横切るデータ接続経路数が２で最小となる。さらに、領域G1〜G4、領域G5〜G8を群分けした後に、クロックツリー合成（CTS）を行う。このようにしてクロック構成を行うことにより、実際のデバイス上でのクロックスキューの増大を抑制し、オンチップばらつき耐性を強くすることができる。【選択図】図１
2007123336.tif 000002
【特許請求の範囲】
【請求項１】
所定数の素子を有する複数の領域と、前記複数の領域の間でデータ転送する接続経路とを有する回路領域を、所定回数分割する第１工程と、
前記第１工程で分割された各領域の前記素子をツリー状に接続するようにクロックドライバを挿入してクロックツリーを合成する第２工程とを含み、
前記回路領域を分割するとき、境界線が横切る前記接続経路の数を最小とすることを特徴とする半導体集積回路のクロック構成方法。
【請求項２】
前記回路領域を分割するとき、前記境界線は、経路長が長い前記接続経路、又は論理段数の多い前記接続経路を優先的に横切ることを特徴とする請求項１に記載の半導体集積回路のクロック構成方法。
【請求項３】
前記回路領域を分割するとき、分割された後の領域に含まれる前記素子は、その領域の重心位置から所定距離以下の位置とすることを特徴とする請求項１又は２に記載の半導体集積回路のクロック構成方法。
【請求項４】
前記回路領域を分割するとき、前記境界線は、セットアップ余裕が所定値以下である前記接続経路を横切らないことを特徴とする請求項１に記載の半導体集積回路のクロック構成方法。
【請求項５】
請求項１ないし請求項４のいずれかに記載の半導体集積回路のクロック構成方法を、コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路のクロック構成方法およびそのプログラムに関し、特に、オンチップばらつき耐性に優れたクロック構成方法およびそのプログラムに関するものである。
【背景技術】
【０００２】
大規模半導体集積回路（LSI）のすべての順序素子に、クロックを正確に同時に供給することは困難である。通常、異なる箇所に供給されるクロックには時間差が生じる。この時間差は、クロックスキューと呼ばれている。LSIの高密度化、高集積化に伴い、各部に与えられるクロックスキューを小さくする必要がある。クロックスキューは、主に設計段階で生ずるものである。そのため、クロックを構成する際には、高精度のクロックスキュー管理が要求される。
【０００３】
特許文献１には、以下のようなレイアウト方法が開示されている。まず、ブロックおよびブロック間配線チャネルの大きさ、形状等を正確に見積もり、ブロック配置を決定する。次に、ブロック内の配置配線を行ない、クロック外部端子からブロック内部のクロック端子までのクロックスキューを低減させる。さらに、クロック発生源からクロック外部端子までのクロックスキューが、所定範囲内に収まるように配線のレイアウトを行う。
【０００４】
図５は、従来のクロック構成方法によりクロックツリーを合成した例である。回路領域１の領域G1〜G8に、FF（フリップ・フロップ）が４個ずつ配置されている。領域G1〜G4と領域G5〜G8が、境界線２により分離されている。さらに領域G1、G2と領域G3、G4が境界線３ａにより分離され、領域G5、G6と領域G7、G8が境界線３ｂにより分離されている。
【０００５】
G1〜G8の各領域には、それぞれクロックドライバ４が設けられ、各領域のFFに接続されている。領域G1-G2間、G3-G4間、G5-G6間、G7-G8間には、それぞれ上位のクロックドライバ５が設けられ、各領域のクロックドライバ４を接続している。境界線３ａ、３ｂには、さらに上位のクロックドライバ６が設けられ、クロックドライバ５を接続している。また、領域間のデータ転送を行うためのデータ接続経路A1〜A4、B1〜B3、C1〜C3が存在している。
【０００６】
ここで、クロックドライバには、クロックバッファ（図示しない）が接続されている。クロックバッファから見たFFのクロック端子への遅延値が一定となるように、遅延調整が行われている。具体的には、クロックバッファの配置調整や、早い方のパスへの遅延素子の挿入がなされている。これらの配置調整、遅延素子の挿入を行うツールが理想的に動作すれば、クロックの起点から末端の全てのFFへ至る遅延は等しくなり、クロックスキューをゼロとすることができる。
【０００７】
上述した方法は、オンチップばらつきを考慮しないで、クロックスキューをゼロとするクロック構成手法である。しかし、現実にはオンチップばらつきが存在する。このため、データ接続経路が異なる場合、想定した遅延値と実際のデバイス上での遅延値には差が生じ、実際のクロックスキューはゼロにはならない。
【０００８】
図５の領域G2-G5間（データ接続経路A1）でデータ転送を行う場合のクロックツリーの構造を図６に示す。領域G2-G5間でデータ転送が行われる場合、クロック信号は、クロックドライバ４、５、６を通過する。ここで、オンチップばらつきを考慮しない状態のクロックドライバ１段あたりの遅延値を１ｎｓ、オンチップばらつきによる遅延ばらつきが±１０％でランダムに生じると仮定する。オンチップばらつきを考慮しない場合の遅延値は、３ｎｓである。オンチップばらつき±１０％を考慮すると、データ接続経路Ａ１の遅延値は２．７〜３．３ｎｓの範囲となり、最大６００ｐｓ（０．６ｎｓ）のスキューが生じ得る。
【０００９】
図５の領域G1-G3間（データ接続経路B1）でデータ転送を行う場合のクロックツリーの構造を図７に示す。領域G1-G3間でデータ転送が行われる場合、クロック信号は、クロックドライバ４、５を通過する。上記と同様の仮定を行うと、オンチップばらつきを考慮しない場合は、遅延値は２ｎｓである。オンチップばらつき±１０％を考慮すると、データ接続経路B1の遅延値は１．８〜２．２ｎｓの範囲となり、最大４００ｐｓ（０．４ｎｓ）のスキューが生じ得る。同様に、図５のC1〜C3のいずれかのデータ接続経路でデータ転送を行う場合は、クロック信号は１段のクロックドライバを通過する。このため、これらのデータ接続経路での遅延値は０．９〜１．１ｎｓの範囲となり、最大で２００ｐｓ（０．２ｎｓ）のスキューが生じ得る。
【００１０】
図５に示した領域G1〜G8は、どのように分割されても、上述したスキューが生じ得る。しかし、仮にオンチップばらつきを考慮して大きなスキューが生じるとしても、その領域間にデータ転送が存在しないのであれば、実用上は差支えがない。逆に、オンチップばらつきにより大きなスキューが生じ得る領域間にデータ転送が存在するならば、オンチップばらつきを考慮し、ホールドエラーやセットアップエラーが生じないように対策を行う必要がある。
【００１１】
【特許文献１】特開平８−１２９５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述したように、従来のクロック構成方法では、オンチップばらつきを考慮しないでクロックスキューがゼロとなるように、クロックが構成される。このため、仮にクロックスキューがゼロになったとしても、オンチップばらつきを考慮すると、実際のデバイス上では、クロックスキューが増大するという問題があった。
【００１３】
本発明は上記課題を解決するためになされたもので、実際のデバイス上でのクロックスキューの増大を抑制し、オンチップばらつき耐性に優れたクロック構成方法およびそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る半導体集積回路のクロック構成方法は、所定数の素子を有する複数の領域と、前記複数の領域の間でデータ転送する接続経路とを有する回路領域を、所定回数分割する第１工程と、前記第１工程で分割された各領域の前記素子をツリー状に接続するようにクロックドライバを挿入してクロックツリーを合成する第２工程とを含み、前記回路領域を分割するとき、境界線が横切る前記接続経路の数を最小とすることを特徴とする。
【００１５】
本発明のその他の特徴は、以下において詳細に説明する。
【発明の効果】
【００１６】
本発明によれば、実際のデバイス上でのクロックスキューの増大を抑制し、オンチップばらつき耐性に優れたクロック構成方法およびそのプログラムを得ることができる。
【発明を実施するための最良の形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、各図において同一または相当する部分には同一符号を付して、その説明を簡略化ないし省略する。
【００１８】
実施の形態１．
本実施の形態に係る半導体集積回路のクロック構成方法について説明する。ここでは、回路領域の分割（群分け）を行った後に、クロックツリー合成（Clock Tree Synthesis；以下、「CTS」という）を行うクロック構成方法について説明する。
【００１９】
まず、回路領域の群分けを行う方法について説明する。図１に示すように、回路領域１には、フリップ・フロップ(以下、「FF」という)が多数存在している。領域を群分けする基準は、FF数を等分としても良いし、面積を等分としても良い。ここでは、FFの数を等分として領域を分割し、群分けしていく例を示す。
【００２０】
図１に示すように、領域G1〜G8の各領域は、４個のFFを有している。領域G1〜G8の間には、特定の領域間でデータの転送を行うための接続経路(以下、「データ接続経路」という)が存在する。領域G1-G5間、G4-G8間には、それぞれデータ接続経路A1、A2が存在する。また、領域G2-G4間、G5-G7間、G6-G7間、G6-G8間には、それぞれデータ接続経路B1、B2、B3、B4が存在する。さらに、領域G1-G2間、G3-G4間、G5-G6間、G7-G8間には、それぞれデータ接続経路C1、C2、C3、C4が存在する。
【００２１】
ここで、回路領域１の領域G1〜G8を、境界線２により、領域G1〜G4と、領域G5〜G8とに分割する群分けを行う。さらに領域G1〜G4を、境界線３ａにより、領域G1、G2と領域G3、G4とに分割する群分けを行う。また領域G5〜G8を、境界線３ｂにより領域G5、G6と領域G7、G8とに分割する群分けを行う。（これらの境界線は、回路領域１上に実際に存在する線ではなく、仮想の線である）
【００２２】
上記群分けを行う際には、グラフ理論を用いて、各境界線の横切るデータ接続経路の数が最小となるようにする。G1〜G8を２つの群に群分けするとき、データ接続経路A1、A2を横切るようにすると、境界線の横切るデータ接続経路数は２で最小となる。この結果、G1〜G4とG5〜G8は、境界線２により２群に群分けされる。なお、上述したグラフ理論は公知であるため、ここでは説明を省略する。
【００２３】
領域G1〜G4を２つの群に群分けするとき、データ接続経路B1を横切るようにすると、境界線の横切るデータ接続経路数は１で最小となる。この結果、領域G1、G2と領域G3、G4は、境界線３ａにより２群に群分けされる。領域G5〜G8を２つの群に群分けするときは、どのように分けても、境界線の横切るデータ接続経路数は３である。このような場合には、境界線３ｂが、経路長の長いデータ接続経路を優先的に横切るように分ける。つまり、境界線が、接続間距離の長いデータ接続経路をより多く横切るようにする。ここでは、領域G5〜G8の相互間のデータ接続経路のうち、領域G6-G8間の接続間距離が最も長い。従って、データ接続経路B4を横切るようにし、領域G6-G8間を群間配線とする。この結果、領域G5、G6と領域G7、G8は、境界線３ｂにより２群に群分けされる。
【００２４】
上述した領域G5〜G8を２つの群に群分けする際には、「境界線が、接続間距離の長いデータ接続経路をより多く横切る」という判断指標を用いた。このような判断指標に置き換えて、「境界線が横切る接続間距離の和を最大化する」としても良い。または、「境界線が横切る接続間距離が所定値以下となる配線数を最小化する」としても良い。または、「境界線が横切る接続間距離が所定値以下となる配線数の和を最大化する」としても良い。または、上述した指標の「接続間距離の長い」を「データライン上の論理段数（セル数）の多い」に置き換えても良い。
【００２５】
次に、群分けを行った回路領域１に対してCTSを実行する。すなわち、回路領域１のFFをツリー状に接続するようにクロックドライバを挿入し、クロックツリーを合成する。この結果、図示しないが、領域G1〜G8の各領域において、各FFは、１つのクロックドライバに接続される。例えば、G1の領域内にある４つのFFは、１つのクロックドライバに接続される。領域G1-G2間には上位のクロックドライバが挿入され、両領域のクロックドライバを接続する。同様に、領域G3-G4間、G5-G6間、G7-G8間にもクロックドライバが挿入され、それぞれの領域のクロックドライバを接続する。さらに、境界線３ａ上にクロックドライバが挿入され、領域G1-G2間のクロックドライバと、領域G3-G4間のクロックドライバとを接続する。同様に、境界線３ｂ上にクロックドライバが挿入され、領域G5-G6間のクロックドライバと、領域G7-G8間のクロックドライバとを接続する。このようにして、クロックツリーが合成される。
【００２６】
上記クロックツリーの合成により、図１の領域G1-G5間（データ接続経路A1）に合成されたクロックツリーの構造を図２に示す。データ接続経路A1でデータ転送が行われる場合、クロック信号は、３段のクロックドライバ４、５、６を通過する。ここで、クロックドライバ１段当たりに生じ得るオンチップばらつきが２００ｐｓと仮定すると、データ接続経路A1には、最大６００ｐｓのクロックスキューが生じ得る。図１の領域G4-G8間（データ接続経路A2）についても同様に、最大６００ｐｓのクロックスキューが生じ得る。
【００２７】
図１の領域G2-G4間（データ接続経路B1）に合成されたクロックツリーの構造を図３に示す。データ接続経路B1でデータ転送が行われる場合、クロック信号は、２段のクロックドライバ４、５を通過する。このため、上記と同様の仮定を行うと、データ接続経路B1には、最大４００ｐｓのクロックスキューが生じ得る。領域G5-G7間（データ接続経路B2）、領域G6-G7間（データ接続経路B3）、領域G6-G8間（データ接続経路B4）、についても同様に、最大４００ｐｓのクロックスキューが生じ得る。
【００２８】
また、図示しないが、図１の領域G1-G2間（データ接続経路C1）、領域G3-G4間（データ接続経路C2）、領域G5-G6間（データ接続経路C3）、領域G7-G8間（データ接続経路C4）でデータ転送が行われる場合、クロック信号は、１段のクロックドライバを通過する。このため、上記と同様の仮定を行うと、上記データ接続経路には、最大２００ｐｓのクロックスキューが生じ得る。
【００２９】
つまりデータ接続経路A1、A2は、回路領域１の中では、オンチップばらつき耐性が弱い。本実施の形態では、回路領域１を群分けする際には、境界線の横切るデータ接続経路数が最小となるようにした。これにより、オンチップばらつき耐性が弱いデータ接続経路を、従来技術（図５参照）と比較して減少させることができる。具体的には、従来技術では、最大６００ｐｓのクロックスキューが生じ得るデータ接続経路が４つであったのに対し、本実施の形態（図１参照）では、このデータ接続経路を２つに減少させることができる。これにより、実際のデバイス上でのクロックスキューの増大を抑制し、オンチップばらつき耐性を強くすることができる。
【００３０】
また、図１に示した領域G5、G6と領域G7、G8の群分けでは、境界線３ｂがデータ接続経路B4を横切るようにした。このとき、データ接続経路B4は、B2、B3と比較して接続間距離が長いため、データ転送遅延も大きくなる。そのため、多少のクロックスキューが生じてもホールドエラーが生じない。従って、オンチップばらつきによる対策を最小限にとどめることができる。
【００３１】
実施の形態２．
本実施の形態に係る半導体集積回路のクロック構成方法について説明する。ここでは、実施の形態１と異なる点を中心に説明する。実施の形態１に示した群分けの方法では、境界線の横切るデータ接続経路数が最小となるようにした。この方法により群分けを行った場合、図４に示すように、領域G1〜G4と領域G5〜G8が分割される場合が想定される。
【００３２】
この場合、境界線２が横切るデータ接続経路数は２となり、最小である。しかし領域G5〜G8は、回路領域１の周囲に大きく広がる。このため、図４の状態でCTSを実行すると、クロック遅延が増加する。クロック遅延の増加はオンチップばらつき耐性を劣化させるため、このような分割は好ましくない。
【００３３】
このため、本実施の形態では、実施の形態１に示した群分けを行う際に、領域の重心位置から一定距離より大きく離れたFFは同一領域に含まないという制約を与えるようにする。つまり、群分けされて分割された後の領域に含まれるFFは、その領域の重心位置から所定距離以下の位置とするという制約を与えるようにする。あるいは、最も遠い２つのFF間の距離を一定以下とするという制約を与えるようにしても良い。このような制約を設けることにより、クロック遅延の増加を防ぎ、オンチップばらつき耐性の劣化を防止することができる。
【００３４】
また、実施の形態１に示した群分けでは、接続間距離が長い（又は論理段数が多い）データ接続経路を、境界線が優先的に横切るようにし、群間配線とする例を示した。しかし、このデータ接続経路がクリティカルパスで、セットアップタイミングに余裕がないパスである場合は、群間配線にするとオンチップばらつきの影響を受けてエラーパスとなる可能性もある。このため、セットアップに余裕がないと予め判断されるパスは、群間配線に割り付けない制約を加えるようにしても良い。つまり、実施の形態１で示した群分けを行う際の境界線は、セットアップ余裕が所定値以下であるデータ接続経路を横切らないという制約を与えるようにする。これにより、オンチップばらつきによるエラーパスの発生を効果的に防止することができる。
【００３５】
実施の形態１、２では、群分けの際に、群間の接続配線数を最小とする解を最優先とし、同じ解が複数存在する場合は、他の要素で優先度を判断するという手法を説明した。しかし、この優先順位が異なっても、同等の効果を得ることができる。また、全ての要素を関数値化し、重み付け評価関数により一度に判断する方法も一般によく知られており、本発明に適用することが可能である。
【００３６】
また、実施の形態１、２では、回路領域の分割（群分け）を行った後に、CTSを行うクロック構成方法を述べた。これらの方法をプログラム制御可能なハードウェア（コンピュータ等）に実行させるためのプログラムとして作成し、このプログラムを実行させることにより、上記クロック構成方法と同様の効果を得ることができる。
【図面の簡単な説明】
【００３７】
【図１】実施の形態１のクロック構成方法を説明する図。
【図２】実施の形態１のクロック構成方法により合成されたクロックツリーの図。
【図３】実施の形態１のクロック構成方法により合成されたクロックツリーの図。
【図４】実施の形態２のクロック構成方法を説明する図。
【図５】従来技術のクロック構成方法を説明する図。
【図６】従来のクロック構成方法により合成されたクロックツリーの図。
【図７】従来のクロック構成方法により合成されたクロックツリーの図。
【符号の説明】
【００３８】
１  回路領域、２、３ａ、３ｂ  境界線、４〜６  クロックドライバ、G1〜G8  領域、A1〜A4、B1〜B4、C1〜C4  データ接続経路。
【図１】
2007123336.tif 000003
【図２】
2007123336.tif 000004
【図３】
2007123336.tif 000005
【図４】
2007123336.tif 000006
【図５】
2007123336.tif 000007
【図６】
2007123336.tif 000008
【図７】
2007123336.tif 000009