(57)【特許請求の範囲】
【請求項１】
共通の周期のクロックで動作し、レイアウト上複数の機能ブロックで構成されるＡＳＩＣのクロック位相調整システムにおいて、
クロックツリーをその機能ブロックの数またはそれ以下の数で複数に分けて構成するとともに、前記複数に分割されたブロック間における信号接続部分の入力側又は出力側に、クロックの極性切り替えを含む位相調整手段を設け、そして、前記極性切り替えをマイコン供給してなることを特徴とするクロック位相調整システム。
【請求項２】
共通の周期のクロックで動作し、レイアウト上複数の機能ブロックで構成されるＡＳＩＣのクロックツリー設計方法において、
クロックツリーをその機能ブロックの数またはそれ以下の数で複数に分けるとともに、複数に分割されたブロック間における信号接続部分の入力側又は出力側で、クロックの極性切り替えを含む位相調整を行い、そして、前記極性切り替えをマイコン供給として、クロックツリーの段数を削減することを特徴とするクロックツリー設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＡＳＩＣ全般（ＩＣ、ＬＳＩ、ＶＬＳＩ全て含む）に適用されるクロック位相調整システム及びクロックツリー設計方法に関する。特に大規模なＡＳＩＣを設計する場合、クロックツリー合成が行われるが、遅延（絶対遅延時間）やスキュー（相対遅延時間のばらつき）などタイミングについて改善に関するものである。
【０００２】
【従来の技術】
従来の半導体集積回路の同期設計されるクロックツリー設計方法について説明する。
【０００３】
図７は、従来技術でクロックツリーを発生させた場合のブロック図である。入力クロックバッファ１１から末端のブロック１２、１３、１４までの遅延時間は最小に抑えるようにしており、遅延時間は仮配線容量から求めている。そして末端ブロック１２、１３、１４の夫々に対応してクロックドライバセル１５が挿入されてクロックツリーが構成される。ここでは、１本のクロックツリーの根元（図６において入力バッファ１１出力）からのクロックツリーを構築しているため、クロックツリー段数（クロックバッファのシリーズ段数）は３段になっている。
【０００４】
クロックツリー全体の絶対遅延はクロックバッファ３個分のセル遅延と配線遅延の合計となるので、単純にクロックバッファ１個あたりのセル遅延をＴｃｋｂｕｆ，  １本あたりの配線遅延をＴｗｉｒｅとすると、
Ｔｄｅｌａｙ  ＝  ３＊Ｔｃｋｂｕｆ  ＋  ３＊Ｔｗｉｒｅ                            （式１）
で表されたものとなる。
【０００５】
【発明が解決しようとする課題】
しかしながら、前述した従来の技術では、クロックツリー合成ツール自体に性能の限界があるため、例え、１系統のクロックであっても、回路規模が大きくなると、末端での絶対時間が大きくなったり、スキューが大きくなっていた。
【０００６】
また、内部ＰＬＬを使って位相ロックする場合、末端までスキューを改善する事は複数の内部ＰＬＬを使えば不可能では無いが、内部ＰＬＬ自体の回路規模が大きくなったり、専用電源の供給が必要なため端子数が増加したりすると言う課題がある。
【０００７】
また、最近は消費電力削減のためにパワーマネジメントを行えるようにクロックツリーを複数に分けてクロックを停止できるようにする構成が多用されてきているが、この場合もクロックの根本は同じでもクロックツリーが異なるため、クロックツリー間の信号が行き来を行う際のクロックスキューが発生し、このスキュー調整のためのレイアウト修正時間がかかったという問題があった。
【０００８】
本発明は、上記課題を解決するためになされたものである。
【０００９】
【課題を解決するための手段】
本発明は、共通の周期のクロックで動作し、レイアウト上複数の機能ブロックで構成されるＡＳＩＣのクロック位相調整システムにおいて、クロックツリーをその機能ブロックの数またはそれ以下の数で複数に分けて構成するとともに、前記複数に分割されたブロック間における信号接続部分の入力側又は出力側に、クロックの極性切り替えを含む位相調整手段を設け、そして、前記極性切り替えをマイコン供給してなるクロック位相調整システムである。
【００１０】
また、本発明は、共通の周期のクロックで動作し、レイアウト上複数の機能ブロックで構成されるＡＳＩＣのクロックツリー設計方法において、クロックツリーをその機能ブロックの数またはそれ以下の数で複数に分けるとともに、複数に分割されたブロック間における信号接続部分の入力側又は出力側で、クロックの極性切り替えを含む位相調整を行い、そして、前記極性切り替えをマイコン供給として、クロックツリーの段数を削減するクロックツリー設計方法である。
【００１４】
【発明の実施の形態】
図１は本発明の実施例を示す、機能ブロックごとに分けて各ブロックごとにクロックツリーを発生させた場合の構成図である。
【００１５】
図２は、入力側のＦＦのクロック極性を切り替えられるようにした位相調整回路図である。
【００１６】
図３は図２の動作を説明するタイムチャートである。
【００１７】
図４は、出力側のＦＦのクロック極性を切り替えられるようにした位相調整回路図である。
【００１８】
図５は、マイコンによるパラメータ調整によりクロック極性を切り替えられるようにしたシステム構成図であり、本発明の応用例である。
【００１９】
図６は、パワーマネジメントを盛り込んだクロックツリー構成図である。
【００２０】
以下本発明の実施例について図を用いて具体的に説明する。
【００２１】
図１は、図７の従来例のブロック図を、本発明であるブロックの個数に応じてクロックツリーを分けたものである。すなわち、クロックツリーをその機能ブロックの数またはそれ以下の数で複数に分けており、ここでは、この機能ブロック別の分割により、入力クロックバッファ１１から末端のブロック１２、１３、１４の間に挿入されるクロックドライバセル１５を２段として、クロックツリーの段数による絶対遅延時間及び相対遅延時間（スキュー）を抑えている。
【００２２】
一般的に、機能ブロック内では複数のフリップフロップ（ＦＦ）の入出力が（間に論理ゲートの有無の差はあるが）複雑に接続しあっている。この場合、当然、各ＦＦのＳｅｔｕｐ及びＨｏｌｄ時間を満たすようにクロックツリー合成が行われる。逆に言えば、その機能ブロックが正しくクロック同期で動作するためには、少なくとも、機能ブロック内のＦＦに供給されるクロックに相対遅延ばらつき（ス
キュー）が押さえられている必要がある。
【００２３】
問題は、機能ブロック間でデータが行き来する場合（ブロック間配線）である。つまり、ブロック間配線が全く無い設計では、ブロック内部に供給されるクロックにスキューが無ければそのブロックは正しくクロック同期で動作する。しかし、ブロック間配線がある場合、単純に言えば同じクロックツリーで駆動されれば良いが、通常は、各ブロック毎にＦＦの個数は異なるので、それらに対応してクロックツリー合成すると遅延の遅いほうに合わせるようになり、全体のクロックツリー段数が増え、絶対遅延の増加と共に相対遅延ばらつき（スキュー）が劣化する傾向となる。
【００２４】
クロックツリーを機能ブロック毎に分けることにより上記の問題点を避け、絶対遅延とスキューを最小限に押さえるようにクロックツリー合成を行うことができる。
【００２５】
上記実施例でのクロックツリー全体の絶対遅延Ｔｄｅｌａｙは、従来技術同様の計算方式で求めると、
Ｔｄｅｌａｙ  ＝  ２＊Ｔｃｋｂｕｆ  ＋  ２＊Ｔｗｉｒｅ                （式２）
となる。ここで、Ｔｃｋｂｕｆは、クロックバッファ１個あたりのセル遅延時間、  Ｔｗｉｒｅは、１本あたりの配線遅延である。
【００２６】
また、相対遅延（クロックスキュー）Ｔｓｋｅｗは、一般的に末端のクロックバッファ数とクロックツリー全体の絶対遅延に比例する傾向にあるので、
Ｔｓｋｅｗ  ＝  Ｋｄ＊Ｔｄｅｌａｙ  ＋  Ｋｂｕｆ＊Ｎｂｕｆ          （式３）
となる。ここで、ＫｄはＴｄｅｌａｙに対する比例係数、Ｋｂｕｆは末端のクロックバッファ数Ｎｂｕｆに対する比例係数である。
【００２７】
従い、式１及び式２から判るように、絶対遅延と相対遅延は１クロックツリーあたりの段数を少なくするようにクロックツリーを分けた方が小さく抑えられる。
【００２８】
図１では説明を簡単にするために、各クロックツリー間の絶対時間に差がないものとして説明した。しかし、実際には、各ブロックのフリップフロップ（ＦＦ）回路の個数が異なるため、クロックツリー段数や末端のクロックバッファ数が異なることにより、各クロックツリー間での絶対遅延に差が生じることがある。
【００２９】
図２、図３は、図１においてブロック間配線がある場合、各クロックツリー間で生じる絶対遅延のばらつきを収するための調整回路を説明するものである。
【００３０】
図２は、入力側のＦＦのクロック極性を切り替えられるようにしたものである。
【００３１】
図２において、例えば、フリップフロップＦＦ０１が図１のＢＬＯＣＫ１の最終段で、ＦＦ０１からのデータがＢＬＯＣＫ２に入力されるブロック間配線の場合、ＢＬＯＣＫ２の初段にクロック２の極性選択付きのＦＦ０２を配置し、ＦＦ０１からのデータをＦＦ０２に入力している。
【００３２】
この場合、クロックツリー１から供給されるクロック１とクロックツリー２から供給されるクロック２は、どちらの絶対遅延が短いかによって、極性選択は左右されるが、レイアウト後の実配線遅延が判明した段階で、正しく動作する極性を決定する。これにより、レイアウト前のタイミング調整を簡略化できる。
【００３３】
クロック１とクロック２の絶対遅延（Ｔｄｅｌａｙ１，Ｔｄｅｌａｙ２）の差が半サイクル近くあり、かつＴｄｅｌａｙ１＞Ｔｄｅｌａｙ２の場合、クロック２は立ち上がりで受ければ良いことになる（図３（ａ）参照）。同様に、Ｔｄｅｌａｙ１＜Ｔｄｅｌａｙ２の場合、クロック２は立下りで受ければ良いことになる（図３（ｂ）参照）。また、Ｔｄｅｌａｙ１とＴｄｅｌａｙ２の差が少なく、Ｔｄｅｌａｙ１＞Ｔｄｅｌａｙ２又はＴｄｅｌａｙ１＜Ｔｄｅｌａｙ２がはっきりしない場合、クロック２は立下りで受ければ良いことになる（図３（ｃ）参照）。
【００３４】
また、外部から入力する場合も受けるクロック位相が選択でき、最適化が可能である。例えば、外部の信号と内部の信号をセレクタで選択した後、クロック位相調整回路を通すことで、どちらかに合った位相調整を行うことができる。
【００３５】
図４のように出力で位相を変えた場合についても同様である。
【００３６】
図４において、例えば、ＦＦ０３が図１のＢＬＯＣＫ１の最終段で、ＦＦ０３からのデータがＢＬＯＣＫ２に入力されるブロック間配線の場合、ＦＦ０３からの出力をクロック１の反転クロックで駆動するＦＦ０４を配置し、極性選択信号により、ＦＦ０３からのデータかＦＦ０４からのデータかの何れかを選択したデータをＢＬＯＣＫ１の出力データとしてＢＬＯＣＫ２の初段のＦＦ０５に入力している。なお、ここでＢＬＯＣＫ２のＦＦ０５はクロック２の立ち上がり駆動である。
【００３７】
クロック１とクロック２の絶対遅延（Ｔｄｅｌａｙ１，Ｔｄｅｌａｙ２）の差が半サイクル近くあり、かつ、Ｔｄｅｌａｙ１＞Ｔｄｅｌａｙ２の場合、ＢＲＯＣＫ１は、クロック１の立上りで出力すれば良いことになる。同様にＴｄｅｌａｙ１＜Ｔｄｅｌａｙ２の場合、ＢＲＯＣＫ１は、クロック１の立下りで出力すれば良いことになる。また、Ｔｄｅｌａｙ１とＴｄｅｌａｙ２の差が少なく、Ｔｄｅｌａｙ１＞Ｔｄｅｌａｙ２又はＴｄｅｌａｙ１＜Ｔｄｅｌａｙ２がはっきりしない場合は、ＢＬＯＣＫ１クロック１の立下りで出力すれば良いことになる。尚、外部に出力する場合も、クロック位相選択ができ最適化が可能である。
【００３８】
図５は、マイコンからのパラメータ指示により、クロック位相調整が可能となるようにしたシステムブロックを示している。なお、図５では位相調整回路５をＢＬＯＣＫ１またはＢＬＯＣＫ２から分けて書いているが、実際には、図２または図４で示したように、各ブロックＢＬＯＣＫ１又はＢＬＯＣＫ２に吸収して構成される。
【００３９】
マイコン１から８ビットのアドレスデータバス、パラメータクロック、アドレス／データモード制御、リード／ライト制御、チップセレクタ等からなるパラメータ制御信号を、マイコンインタフェース２に入力する。マイコンインタフェース２は各制御信号に応じて、アドレスデータバスからアドレスとデータを切りだす。アドレスデコーダ３は、マイコンインタフェース２で得られたアドレスをデコードし、規定のアドレスに一致したときのみ、データラッチ回路４でマイコンインタフェース２で得られたデータを保持する。
【００４０】
そのデータが、極性信号として位相調整回路５に供給され位相切り替えが可能となる。
【００４１】
また、パワーマネジメントを行う場合は、この図６（パワーマネジメントを盛り込んだクロックツリー構成図を示す）と図５を組み合わせる事になる。また、その際の位相調整回路５は図２または図４の何れかが使用される。
【００４２】
なお、図２と図４はＡＳＩＣ内部ブロック間データのクロック乗換を行う際の位相調整回路として説明しているが、本発明はこれに限定するものでなく、外部のデジタルＩＣとのインタフェースにも使用できることは言うまでもない。例えば、図２の場合は、クロック１で動作しているＦＦが外部のデジタルＩＣに相当し、また図４の場合は、クロック２で動作しているＦＦが外部デジタルＩＣに相当する。
【００４３】
【発明の効果】
本発明により、クロックツリーの段数を減らすことにより、クロックツリー合成の結果を改善し、絶対遅延時間の減少とスキューの発生を押さえることが可能となる。
【００４４】
また、クロックツリーが分割されるが、ブロック間の接続で、入力または出力のＦＦのクロック極性がコントロールできるため、最適の状態に設定できる。
【００４５】
さらに、マイコンなどからのパラメータ調整で設定でき、レイアウト後の配線遅延の結果によって、極性設定が可能になるため、タイミングシミュレーション完了までの開発時間を大幅に削減することができ、そのコストメリットは非常に大きい。
【図面の簡単な説明】
【図１】機能ブロックごとに分けて各ブロックごとにクロックツリーを発生させた場合の構成図である。
【図２】入力側のＦＦのクロック極性を切り替えられるようにした位相調整回路図である。
【図３】図２の動作を説明するタイムチャートである。
【図４】出力側のＦＦのクロック極性を切り替えられるようにした位相調整回路図である。
【図５】マイコンによるパラメータ調整によりクロック極性を切り替えられるようにしたシステム構成図である。
【図６】パワーマネジメントを盛り込んだクロックツリー構成図である。
【図７】従来の１クロックツリー構造を示す構成図である。
【符号の説明】
０１〜０５  フリップフロップ
１  マイコン
２  マイコンインタフェース
３  アドレスデコーダ
４  データラッチ回路
５  位相調整回路
【図１】
0003614758.tif 000002
【図２】
0003614758.tif 000003
【図３】
0003614758.tif 000004
【図４】
0003614758.tif 000005
【図５】
0003614758.tif 000006
【図６】
0003614758.tif 000007
【図７】
0003614758.tif 000008