(57)【要約】【課題】クロックスキューを均一に抑える必要なく、クロックの位相を制御し、各フリップフロップに最適なクロックスキューを与えることで、タイミング違反のパスのタイミングを改善、及び処理速度の改善を行う。【解決手段】回路のクロックスキューを解析する処理と、タイミング違反の情報を解析する処理と、各フリップフロップの出力遅延の情報を解析する処理と、セル特性の情報を解析する処理し、クロックスキューの値を最適化する処理と、クロックラインに遅延を追加する処理と、変更された配線パス、論理の情報を出力する処理とで構成される。【選択図】        図１
2004334468.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路において、半導体集積回路を構成する回路のクロックスキューの情報を解析する第１の処理と、
半導体集積回路を構成する回路のタイミング違反の情報を解析する第２の処理と、
半導体集積回路を構成する各フリップフロップの出力遅延の情報を解析する第３の処理と、
半導体集積回路を構成する各フリップフロップのセルの特性情報を解析する第４の処理と、
第１の処理と第２の処理と第３の処理と第４の処理の解析結果に基づき、半導体集積回路を構成する各フリップフロップのクロックスキューの値を最適化する第５の処理と、
第５の処理の最適化結果に基づき、半導体集積回路を構成する各フリップフロップのクロックラインに遅延を追加する第６の処理と、
第６の処理に基づき、半導体集積回路内で変更された配線パス、論理の情報を出力する第７の処理とを備えたことを特徴としたクロックスキュー制御設計手段及び装置。
【請求項２】
請求項１において、第１の処理は、半導体集積回路を構成する全てのフリップフロップに対して、各フリップフロップに接続されるクロックのクロックスキューを対象にしたものであることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項３】
請求項１において、第１の処理におけるクロックスキューの情報は、半導体集積回路を構成する各フリップフロップに接続されるクロックのクロックスキュー値、クロックラインの接続パスの情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項４】
請求項１において、第１の処理におけるクロックスキューの情報は、論理合成及びレイアウトの設計工程で得られる情報であることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項５】
請求項１において、第２の処理におけるタイミング違反の情報は、論理合成及びレイアウトの設計工程で得られる情報であることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項６】
請求項１において、第２の処理におけるタイミング違反の情報は、半導体集積回路を構成する各フリップフロップにおいて、タイミング違反を起こしているフリップフロップの箇所、接続パス、及びタイミング違反値の情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項７】
請求項１において、第３の処理における各フリップフロップの出力遅延の情報は、半導体集積回路を構成する各フリップフロップとそれに接続される組み合わせ回路の処理時間、そのフリップフロップと組み合わせ回路の箇所、接続パスの情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項８】
請求項１において、第４の処理における各フリップフロップのセルの特性情報は、半導体集積回路を構成する各フリップフロップのＳＥＴＵＰ、ＨＯＬＤ等のタイミング特性の情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項９】
請求項１において、第５の処理におけるクロックスキューの最適化は、半導体集積回路を構成する各フリップフロップのクロックスキューの値を、前段のフリップフロップと後段のフリップフロップのクロック位相をタイミングが改善されるように、ずらすことによって行われることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項１０】
請求項１において、第６の処理におけるクロックラインの追加遅延は、第５の処理において最適化されたクロックスキュー値に基づいた遅延を、半導体集積回路を構成する各フリップフロップに接続されるクロックラインに追加するもので、遅延は、配線遅延、及びバッファ等の論理等を論理合成及びレイアウトの行程で変更を行うことによって、処理されることを特徴とするクロックスキュー制御設計手段及び装置。
【請求項１１】
請求項１において、第７の処理における半導体集積回路内で変更された配線パス、論理の情報は、第６の処理に基づいて変更されるクロックラインの追加遅延量、クロックラインの配線パス、変更の論理情報を含み、論理合成及びレイアウトの行程へ出力することを特徴とするクロックスキュー制御設計手段及び装置。
【請求項１２】
請求項９において、第５の処理におけるクロックスキューの最適化は、タイミング違反が存在する場合には、そのタイミング違反を改善又は、無くす方向で前段と後段のフリップフロップのクロック位相をずらし、タイミングに余裕がある場合には、前段のフリップフロップで処理した出力を後段のフリップフロップで早期に同期化を図り、処理速度の改善を図ることを特徴とするクロックスキュー制御設計手段及び装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の設計手法、およびその設計手法を実現させるための装置に関するものである。
【０００２】
【従来の技術】
半導体集積回路のうち論理回路の設計は、大きく、仕様設計、機能設計、論理設計、論理合成、レイアウトの行程順で行われている。
【０００３】
仕様設計において、設計する回路、ＬＳＩの用途、性能、仕様等の要素について検討した後、機能設計、論理設計において、回路のＨＤＬ等を用い機能記述を行い、倫理シミュレータ等を用いて動作検証を行う。
【０００４】
次に、論理合成によって論理設計段階で設計された論理回路を具体的なゲート回路にマッピングを行う。レイアウトでは、ゲートレベルにマッピングされた回路データを用いて、物理レイアウトのパターン設計を行う。
【０００５】
タイミング違反が生じ、クリティカルパスとなる配線がタイミング制約にあわない場合は、再度配置配線を行うか、バッファセルを挿入しドライブ能力を高くして、タイミングの改善を行う。遅延が大きくタイミング違反が改善出来ない場合は、再度論理を変更し、タイミングの最適化を行う。
【０００６】
半導体集積回路内では、フリップフロップ等の順序回路でクロック信号に同期した形で処理を行う。フリップフロップ間における組み合わせ回路で所定の処理を行い、フリップフロップで同期化するため、フリップフロップ間の組み合わせの処理時間は、クロックの動作周波数、フリップフロップの特性等によって制限される。
【０００７】
そのため、フリップフロップ間の論理、及び配線遅延が大きくなり、後段のフリップフロップのＳＥＴＵＰ制約を満たさない場合は、タイミング違反を招く。
【０００８】
フリップフロップに供給されるクロック信号の伝搬遅延は、各フリップフロップによって若干異なり、差がでてしまう。この差によって、各フリップフロップに供給されるクロック信号にクロックスキューとなる位相差が生じてしまう。このクロックスキューは、レイアウト時の各フリップフロップへのクロックラインの配線長、バッファが均一にならないために生じてしまうもので、このクロックスキューが大きすぎると、所望の動作周波数で回路が同期を取れなくなり、正常に動作しなくなるおそれがある。
【０００９】
このため、ＬＳＩの同チップ内全てのフリップフロップに対して可能な限りクロックスキューを抑え、同一のタイミングでクロック信号が分配されるようにクロックラインの配線、バッファの挿入を行う。
【００１０】
クロックスキューを抑える手段としては、主に、レイアウトでのクロックラインの分配時に、メッシュ方式または、ツリー方式をとることが挙げられる。
【００１１】
メッシュ方式は、レイアウト時にチップを均一の格子状にクロックラインを配線し、その格子状の配線経路の近辺にバッファを挿入し、さらに、そのバッファを介してフリップフロップに接続するものである。
【００１２】
ツリー方式は、各段毎にバッファを並列に接続したものを多段構成し、各バッファ毎にツリー状に配線するものである。ツリー方式の配線方法の一つに、Ｈツリーが挙げられる。
【００１３】
通常、このＨツリーによる配線が行われており、これは、クロックスキューを小さくでき、Ｈの形の配線経路を再帰的に比較縮小しながら繰り返すために、配線経路は対称性があり、配線長が均等にとれ、配線遅延均一に保つことができる。しかし、バッファの段数が多段になればなるほど、クロックの遅延量は大きくなる点と、素子の配置、配線等により完全にクロック信号の配線経路を対称にすることは難しい。そのため、各フリップフロップのクロック信号の配線長を均一に取ることはできず、配線遅延にも差が生じてくる。
【００１４】
このような構成を開示している文献として以下に特許文献を示す。
【００１５】
【特許文献１】
特開平５−５４１００号公報
【００１６】
【発明が解決しようとしている課題】
上記従来例ではクロックラインの分配配線は、ツリー方式等を用い、クロックスキューを低減するように行われていた。論理合成やレイアウト後にタイミング違反が出た場合、タイミングが収束するように、バッファセルの挿入、配線経路の変更等を行っている。しかし、タイミング違反の遅延量が大きく、レイアウトでタイミングが収束しない場合は、タイミングの制約を満たすことが出来ないため、タイミングの制約の変更、論理の変更、動作周波数の変更などの仕様変更を余儀なくしなければならない。
【００１７】
回路規模が増大、高速化がするにつれ、クロックスキューによる影響が大きくなり、スキューバランスを取ることが難しくなり、そのスキューがタイミング違反を招く要因に成っている。スキューを改善するために挿入したバッファセルによって、回路規模が増加したり、他のレイアウト時の配置、配線変更も必要となり、タイミングの収束を困難にしたりしている。
【００１８】
また、タイミング違反がなく、タイミング的に余裕のある場合、動作周波数により、回路の処理速度も決まってしまうため、動作周波数を上げるか、パイプラインなどの処理を行う以外に処理速度の向上は難しい。
【００１９】
【課題を解決するための手段】
そこで本発明では上記問題を解決するために、各フリップフロップのクロックライン上にクロックスキューを調整するための遅延を設けて、各フリップフロップのクロックスキューの制御を行う。クロックスキューを低減するようにスキューバランスを取るのではなく、逆に、各フリップフロップに適したクロックスキューを求め、先述した各フリップフロップに設けた遅延を用いて、適したクロックスキュー値にする。そのため、各フリップフロップに分配されているクロックラインは、均一にする必要はなく、クロックスキューを低減するための配線、バッファセルの挿入も必要はない。
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合は、前段と後段のフリップフロップに接続されているクロックの位相をずらす。すなわち、後段のフリップフロップに接続されるクロックラインに、遅延を追加し、クロックスキューを増大させることによって、フリップフロップ間でのタイミングを改善する。
【００２０】
また、フリップフロップ間で、タイミング制約を十分満たし、タイミング的に余裕のある場合、半導体集積回路全体での処理速度を向上させるために、フリップフロップ間のクロックの位相をずらす。前段のフリップフロップで出力され、組み合わせ回路で処理された後の信号のタイミングが、後段のフリップフロップのＳＥＴＵＰを満たすように、後段のフリップフリップに接続されるクロックの位相をずらすことによって、フリップフロップ間で処理された出力信号のタイミングを早くする。すなわち、後段のフリップフロップでのクロック同期が早ければ、それだけ、処理速度も早くなり、半導体集積回路全体での高速化が図れる。
【００２１】
【発明の実施の形態】
以下、本実施の形態について図を用いて説明する。
【００２２】
（実施例）
（第１の実施例）
図１は本実施形態における半導体集積回路の設計手順を示したフローチャートである。
【００２３】
仕様設計１０１、機能設計１０２、論理設計１０３、論理合成１０４、レイアウト１０５は、従来技術と同様の処理及びフローで各設計工程を行う。クロックスキュー制御１０６は、論理合成１０４、レイアウト１０５間でクロックに関する設計を行う行程である。
【００２４】
本実施形態におけるクロックスキュー制御１０６が、本発明の中心となる処理部分で、ここで、クロックの分配、スキューの調整を行う。以下、クロックスキュー制御を中心に本発明の処理を説明していく。
【００２５】
第一に、仕様設計１０１にて、設計対象物の用途、機能、動作、性能等の要因について検討を行い、設計対象物を実現するための仕様を作成する。
【００２６】
次に、機能設計１０２にて、仕様に基づき、機能ごとにブロックに分解し、ブロックの構成に従い、機能を詳細に記述した機能記述を作成する。その機能記述が正常か否かを確認するために、機能シミュレータを用いて機能の動作確認を行う。
【００２７】
次に、論理設計１０３にて、機能設計１０２にて作成した機能ブロック及び機能記述に基づき、ハードウエアの設計を行う。回路図、ＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）等によりハードウエアをＲＴＬまで回路設計していく。
【００２８】
次に、論理合成１０４にて、論理設計１０３で作成されたＨＤＬを元にゲートレベルに変換する。
【００２９】
次に、レイアウト１０５にて、論理合成１０４で得られたゲートレベルの回路データを用いて、物理レイアウトのパターン設計を行う。
【００３０】
ここで、レイアウト１０５にて、タイミング、面積等が仕様の範囲内に収束し違反がない場合は、ＬＶＳ、負荷容量、ＥＭ等の物理設計の行程を経て、マスクの作成の行程へと移る。
【００３１】
レイアウト１０５にて、タイミング、面積等が仕様の範囲内に収束しないで設計違反等が生じた場合は、レイアウト１０５にて作成されたレイアウトデータは論理合成１０４に送られ、論理合成１０４で、再度回路変換の最適化を行う。または、レイアウト１０５にて作成されたレイアウトデータは、クロックスキュー制御１０６へ送られ、クロックに関する修正、最適化が行われ、再度、レイアウト１０５へ送られ、レイアウト１０５にてパターン設計が行われる。レイアウトデータに関してタイミング、面積等が仕様の範囲内に収束するまで、この行程は繰り返し行われる。
【００３２】
また、論理合成１０４にて、ゲートレベルに変換する際に、タイミング、ゲート規模等の制約内に収束しない場合は、タイミング、面積等の制約違反のままでゲートレベルに変換を行い、ゲートレベルの回路データをクロックスキュー制御１０６、レイアウト１０５へ送る。レイアウト１０５にて、タイミング、面積等の制約違反のまま、仮のレイアウトを行い、仮レイアウトでの回路の各信号の遅延、接続情報等を求め、クロックスキュー制御１０６へ、レイアウトデータを送る。クロックスキュー制御１０６は、レイアウト１０５から得られるレイアウトデータ、仮レイアウトでの回路の各信号の遅延、接続情報から、クロックに関する設計制御を行い、タイミングを制約内に満たすようにクロックラインの最適化を行い、タイミング制約を満たすように回路変更を行う。クロックスキュー制御１０６にて変更された回路は、レイアウトデータとしてレイアウト１０５へ送られて、再度レイアウトが行われか、または、論理合成１０４に送られ再度、論理合成して最適化が行われる。これは、第２の実施例にて、詳細に述べる。
【００３３】
クロックスキュー制御１０６に関しての設計手順の詳細は後述する。
【００３４】
次に、本発明を実施するための半導体集積回路の設計箇所について説明する。
【００３５】
図２は、半導体集積回路で基本的に用いられる構成を説明したものである。これは、主にフリップフロップ１１、１２の順序回路とＡＮＤ回路やＯＲ回路で構成される組み合わせ回路１３から成っている。
【００３６】
フリップフロップ１１の入力信号であるＤＡＴＡ１＿ＩＮは、フリップフロップ１１でクロック（図２中のＣＬＫ１）に同期化され、フリップフロップ１１より出力される。この出力された信号は、組み合わせ回路１３で所望の処理をされた後フリップフロップ１２に入力されて、クロック（図２中のＣＬＫ２）に同期化され、フリップフロップ１２より出力される。
【００３７】
フリップフロップ１１、１２に供給されるクロック（図２中のＣＬＫ１、ＣＬＫ２）は、クロックライン１６から供給され、ほぼ同タイミングである。
【００３８】
これは、図３に示すように、チップのクロック配線をＨツリーにしてクロックスキューを小さくしているためである。ここで、ルートドライブセル３０１が駆動するツリーの階層を最上位の階層（第一の階層）として、信号の伝搬する方向に第２の階層、第３の階層と順次、下の階層へ移る階層構造をとる。クラスタを直接駆動しているバッファセル３０１をリーフノードとするツリーの階層を第ｍ階層とする。階層状のツリーにおける分岐点が３０２になる。
【００３９】
しかし、クロックのスキューは小さく抑えることはできても、０ではなく、各フリップフロップに供給されるクロックタイミングには若干の位相差が生じている。これは、図２のクロック遅延１４、１５にあたるもので、各フリップフロップのクロックは、クロックライン１６と同タイミングにはならず、遅延されて位相差がある状態で供給される。
【００４０】
図４に、フリップフロップ１１、１２及び組み合わせ回路１３、クロックのタイミング関係を示す。図４中のＤＡＴＡ１＿ＩＮ、ＤＡＴＡ２＿ＩＮは、それぞれ、図２中のフリップフロップ１１の入力信号であるＤＡＴＡ１＿ＩＮ、フリップフロップ１２の入力信号であるＤＡＴＡ２＿ＩＮのタイミングを示しており、図４中のＣＬＫ１、ＣＬＫ２は、それぞれ、図２中のＣＬＫ１、ＣＬＫ２のタイミングを示している。図４中の２０３は、ＣＬＫ１とＣＬＫ２間のクロックの位相差を表しており、ＣＬＫ１とＣＬＫ２間でのクロックスキューに対応する。
【００４１】
ＤＡＴＡ１＿ＩＮをフリップフロップ１１のＳＥＴＵＰ（図４中の２００）、ＨＯＬＤ条件を満たすタイミングで入力した場合、ＤＡＴＡ１＿ＩＮは、フリップフロップ１１でクロックＣＬＫ１に同期化され、フリップフロップ１１より出力される。この出力された信号は、組み合わせ回路１３で所望の処理をされた後フリップフロップ１２に入力される。このとき、組み合わせ回路１３で処理されて（図４中の２０１は処理による遅延を表す）、フリップフロップ１２に入力される時のタイミングは、フリップフロップ１２のＳＥＴＵＰ（図４中の２０２）、ＨＯＬＤの条件を満たさなければならない。図４では、フリップフロップ１２のＳＥＴＵＰ２０２に対して２０４だけ前にＤＡＴＡ２＿ＩＮが確定しており、ＳＥＴＵＰ２０２は十分満たしているので、フリップフロップ１２においてクロックＣＬＫ２でＤＡＴＡ２＿ＩＮは同期化できる。図４の例では、ＤＡＴＡ＿Ｂ３がＤＡＴＡ＿Ａ３に、ＤＡＴＡ＿Ｂ２がＤＡＴＡ＿Ａ２に、ＤＡＴＡ＿Ｂ１がＤＡＴＡ＿Ａ１にそれぞれ対応する。
【００４２】
組み合わせ回路１３での処理時間が大きすぎ、遅延量が動作周波数に対して大きすぎると、所望の動作周波数内でのＳＥＴＵＰ、ＨＯＬＤ等のタイミング制約を満たさない場合が出てくる。この場合には、例えば、フリップフロップ１２の入力信号は正常にフリップフロップ１２でクロック（ＣＬＫ２）同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。
【００４３】
また、フリップフロップ１１とフリップフロップ１２に供給されるクロックＣＬＫ１、ＣＬＫ２のクロックスキュー２０３が大きすぎる場合も、例えば、フリップフロップ１２の入力信号は正常にフリップフロップ１２でクロック（ＣＬＫ２）同期化されないで、前のクロックでの信号値を取るか、又は不定値が出力される。
【００４４】
次に、クロックスキュー制御１０６に関しての設計手順について述べる。
【００４５】
図５は、クロックスキュー制御１０６での処理手順を示したフローチャートである。
【００４６】
第一に、４０１にて、レイアウト１０５よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト１０５から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【００４７】
次に、４０２にて、レイアウト１０５よりタイミング違反についての情報を得る。ここでは、レイアウト１０５から、実配線後でのタイミング違反が出ているフリップフロップ間のパスがあるか否かのデータを取得する。
【００４８】
次に、４０３にて、４０２で取得したタイミング違反情報から、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、クロックスキュー制御を行って回路を変更する必要はないので、そのままの回路情報を出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、４０４の処理を行う。
【００４９】
次に、４０４にて、レイアウト１０５よりタイミング違反のパス情報を得る。ここでは、レイアウト１０５から、実配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【００５０】
次に、４０５にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップをレイアウト１０５でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む２つのフリップフロップ（前段のフリップフロップと後段のフリップフロップ）が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【００５１】
次に、４０６にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。図６は、図４でのタイミング関係において、タイミング違反がおきる場合のタイミング例を示している。フリップフロップ１１、組み合わせ回路１３を通ってきた信号が、２１１だけ遅延してフリップフロップ１２へ入力されているが、フリップフロップ１２のＳＥＴＵＰ２１２を２１４だけ満たしていない。ここでは、このようなタイミング違反をおこしているパスの遅延量にあたる２１１とクロックスキュー２１３とＳＥＴＵＰ２１２の値を特定する。
【００５２】
次に、４０７にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。図７は、図４、図６でのタイミング関係において、クロックＣＬＫ２の位相をずらすことでタイミング違反を改善した場合のタイミング例を示している。フリップフロップ１１、組み合わせ回路１３を通ってきた信号が、２２１だけ遅延してフリップフロップ１２へ入力されているが、フリップフロップ１２のＳＥＴＵＰ２２２を満たすようにフリップフロップ１２のクロックＣＬＫ２をずらし、その時のクロックスキュー値を求める。図７の例では、２２４だけ時間的に余裕がある状態でクロックＣＬＫ２の位相をずらしている。クロックＣＬＫ２の位相のずれ量の最低値は、ＳＥＴＵＰを満たすための２２２となる。そのため、タイミング制約を満たすためのクロックスキュー値の最適化は２２２以上となり、余分な遅延を省くためにもレイアウト上可能な限り２２２に近い値となる。
【００５３】
ここで、図８に示すようにフリップフロップ１１とフリップフロップ１２とのクロックの位相関係が２通り（図８中の（Ａ）と（Ｂ））考えられる。（Ａ）の場合に示すクロックの位相関係の場合は、フリップフロップ１１のクロックＣＬＫ１の方がフリップフロップ１２のクロックＣＬＫ２よりも２３１だけ時間的に前にある。この場合は、クロックスキュー値を変えてＣＬＫ２の位相を２３２のように変えて最適化したフリップフロップ１２のクロックは、ＣＬＫ３にあたり、フリップフロップ１２のもともとのクロックスキュー２３１を引いた値である２３３が、クロックＣＬＫ２に追加すべきクロックスキュー値になる。一方、（Ｂ）の場合に示すクロックの位相関係の場合は、フリップフロップ１１のクロックＣＬＫ１の方がフリップフロップ１２のクロックＣＬＫ２よりも２３４だけ時間的に前にある。この場合は、クロックスキュー値を変えてＣＬＫ２の位相を２３５のように変えて最適化したフリップフロップ１２のクロックは、ＣＬＫ３にあたり、フリップフロップ１２のもともとのクロックスキュー２３４引いた値である２３６が、クロックＣＬＫ２に追加すべきクロックスキュー値になる。
【００５４】
次に、４０８にて、タイミング違反のパスでのフリップフロップのクロックに、４０７にて最適化したクロックスキューに対応する遅延情報を追加する。図９にクロックスキューの追加した状態の説明図を示す。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、遅延量が演算できる。そして、その追加する遅延量を示しているのが、２０である。
【００５５】
次に４０９にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、４１０の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、４０４の処理へ移り、４０４から４０８までの処理を同様に繰り返し行っていく。
【００５６】
最後に、４１０にて、レイアウト１０５へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、４０８にて求めた追加遅延量２０に対するフリップフロップ１２のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト１０５へ出力する。
【００５７】
レイアウト１０５において、４１０により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、図１０にしめすように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。図１０の（Ａ）が再配線前の状態を示し、（Ｂ）が再配線後の状態を示す。ここで、３１１に３１３、３１２に３１４に対応する。３１１から３１２への配線パスを、配線長が４１０で求められた配線長の条件を満たすように３１３から３１４へ配線長が長くなるように配線を行い、最適化を図る。
【００５８】
（第２の実施例）
第２の実施例の特徴は、論理合成時にタイミング制約を満たすことが出来ずにタイミング違反のパスが発生した場合に、論理合成１０４とレイアウト１０６、クロックスキュー制御１０６の処理手段により、タイミング違反を修正し、最適化を図るものである。
【００５９】
第２の実施例では、論理合成１０４、レイアウト１０５、クロックスキュー制御１０６に関しての処理手段が、第１の実施例と異なる。そのため、論理合成１０４、レイアウト１０５、クロックスキュー制御１０６に関しての処理について以下に述べる。
【００６０】
論理合成１０４を行う時に、常にタイミング制約を満たす形でＨＤＬからゲートレベルの回路を変換できるわけではなく、制約条件や論理回路により、タイミング、ゲート規模等の制約内に収束しない場合がある。
【００６１】
この場合、論理合成１０４、仮レイアウト、レイアウト１０５、クロックスキュー制御１０６による処理で、最適化を図り、タイミング制約を満たすことができる。
【００６２】
図１１は、本実施例における処理手順を示したフローチャートである。
【００６３】
第一に、１０４にて、論理合成を行う。このとき、タイミングの最適化が収束しない場合でも、タイミング違反を残した形で論理合成を行う。
【００６４】
次に、５０１にて、１０４で論理合成した結果に対して、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、レイアウト１０５へ回路のネットリストを出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、仮レイアウト５０２の処理を行う。
【００６５】
次に、５０２にて、タイミング違反がある状態で、レイアウトを行い、配置、配線後の実負荷の値を求める。これは、タイミング違反が存在するため、論理は変更になり、配置や配線等の情報も変わるが、論理を変更する制御上でのより詳細な配置、配線情報を得るためである。仮レイアウト５０２のレイアウトの処理は、レイアウト１０５と同じで、タイミング違反が存在した状態でのレイアウトである点が異なる。仮レイアウト５０２でレイアウトした後、仮配置配線情報を５０３へ出力する。
【００６６】
次に、５０３にて、仮レイアウト５０２より入力された仮配置配線情報から、仮配線遅延とフリップフロップのクロックスキューを求める。
【００６７】
次に、５０４にて、５０３から求められた仮配線遅延とフリップフロップのクロックスキューから、タイミング違反のパス情報を得る。ここでは、仮レイアウト５０２から、仮配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【００６８】
次に、５０５にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップを仮レイアウト５０２からのパスのデータ情報より、論理合成１０４でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む２つのフリップフロップ（前段のフリップフロップと後段のフリップフロップ）が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【００６９】
次に、５０６にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。第１の実施例と同様に、タイミング違反をおこしているパスの遅延量にあたる２１１とクロックスキュー２１３とＳＥＴＵＰ２１２の値を特定する。
【００７０】
次に、５０７にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。第１の実施例と同様に、フリップフロップ１１、組み合わせ回路１３を通ってきた信号が、２２１だけ遅延してフリップフロップ１２へ入力されている時に、フリップフロップ１２のＳＥＴＵＰ２２２を満たすようにフリップフロップ１２のクロックＣＬＫ２をずらし、その時のクロックスキュー値を求める。
【００７１】
次に、５０８にて、タイミング違反のパスでのフリップフロップのクロックに、５０７にて最適化したクロックスキューに対応する遅延情報を追加する。
【００７２】
次に５０９にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、５１０の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、５０５の処理へ移り、５０５から５０８までの処理を同様に繰り返し行っていく。
【００７３】
最後に、５１０にて、変更を行ったパスのクロックスキュー、論理等の情報をレイアウト１０５又は論理合成１０４へ出力する。
【００７４】
クロックスキュー制御１０６での処理でタイミング違反のパス修正が十分であり、実配置配線でタイミングが収束する場合には、５１０からの変更パスの情報から、レイアウト１０５へ移り、レイアウトを行う。クロックスキュー制御１０６での変更により、タイミング違反をおこしていた各フリップフロップのクロックと入力タイミングの関係が十分余裕のある場合や、タイミング違反をおこしていた各フリップフロップの入力信号のタイミングがそのフリップフロップのＳＥＴＵＰの制約を十分満たす場合などが、これにあたる。
【００７５】
クロックスキュー制御１０６での処理でタイミング違反のパス修正では、タイミング的に余裕のない場合や、論理変更に伴い、論理の最適化を行いたい場合には、５１０からの変更パスの情報から、論理合成１０４へ移り、再度論理合成を行い最適化を図る。クロックスキュー制御１０６の論理変更により、タイミング違反のパスでの組み合わせ回路１３の最適化や、各フリップフロップの最適化、クロックスキューの最適化を図る場合には、これにあたる。再度、論理合成１０４を行った後は、同様の処理を繰り返して、最適化を図っていく。
【００７６】
（第３の実施例）
第３の実施例の特徴は、レイアウト後の各フリップフロップの出力遅延を求め、その出力遅延に応じた、各フリップフロップのクロックスキューを与えることにより、最適な遅延量を配分することで回路の処理速度を上げ、チップの処理高速化を図るものである。
【００７７】
第３の実施例では、クロックスキュー制御１０６に関しての制御手段の詳細、及び改善対象が、第１の実施例と異なる。そのため、クロックスキュー制御１０６に関しての処理手順の詳細について以下に述べる。
【００７８】
図１２は、本実施例におけるクロックスキュー制御１０６の処理手順を示したフローチャートである。
【００７９】
第一に、６０１にて、レイアウト１０５よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト１０５から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【００８０】
次に、６０２にて、レイアウト１０５よりチップ内の各フリップフロップの出力遅延量についての情報を得る。ここでは、レイアウト、セルの特性により、各フリップフロップの出力遅延は、それぞれ異なるため、その、それぞれのフリップフロップに対する出力遅延の情報を取得する。
【００８１】
次に、６０３にて、各フリップフロップのＳＥＴＵＰの特性情報を取得する。ここでは、レイアウト１０５から、実配置された各フリップフロップをライブラリの特性より、ＳＥＴＵＰの特性を抽出してき、６０２で得られた出力遅延の情報と対応させて情報を出力する。
【００８２】
次に、６０４にて、フリップフロップ内で、出力遅延とＳＥＴＵＰとのタイミング関係に余裕がある場合に、クロックの位相を制御し、後段でのフリップフロップのクロックのタイミングを早めるための処理を行う。その、位相制御したクロックのクロックスキューの値を最適化して、フリップフロップに対応させたクロックスキュー値を出力する。各フリップフロップ全てについて、クロックスキューの最適化を行う。図１３は、図４でのタイミング関係において、後段のフリップフロップにあたるフリップフロップ１２のクロックＣＬＫ２の位相を変えて、フリップフロップ１２のＳＥＴＵＰ７０２に、フリップフロップ１２の入力信号のタイミングが合うような場合のタイミング例を示している。
【００８３】
図１３の（Ａ）は、クロックスキュー制御を行う前の、レイアウト１０５によるクロックスキュー７０２をもつ場合のタイミングを示している。
【００８４】
フリップフロップ１１のＳＥＴＵＰ７００を満たすタイミングで入力されてきた信号ＤＡＴＡ＿Ａをフリップフロップ１１にて、クロックＣＬＫ１に同期し、組み合わせ回路１３を通ってきた信号ＤＡＴＡ＿Ｂが、７０１だけ遅延してフリップフロップ１２へ入力される。フリップフロップ１２のＳＥＴＵＰ７０３を満たした状態で入力されたＤＡＴＡ＿Ｂは、フリップフロップ１２でクロックＣＬＫ２に同期して出力され、７０４だけ遅延してＤＡＴＡ＿Ｃのタイミングで次段のフリップフロップへ入力される。
【００８５】
図１３の（Ｂ）は、クロックスキュー制御を行った場合のタイミングを示している。フリップフロップ１１のＳＥＴＵＰ７００を満たすタイミングで入力されてきた信号ＤＡＴＡ＿Ａをフリップフロップ１１にて、クロックＣＬＫ１に同期し、組み合わせ回路１３を通ってきた信号ＤＡＴＡ＿Ｂが、７０１だけ遅延してフリップフロップ１２へ入力される。フリップフロップ１２のクロックスキューを制御して、ＳＥＴＵＰ７０３を満たすように、クロックスキュー７０６のタイミングにした場合、入力されたＤＡＴＡ＿Ｂは、フリップフロップ１２でクロックＣＬＫ２に同期して出力され、７０４だけ遅延してＤＡＴＡ＿Ｄのタイミングで次段のフリップフロップへ入力される。ここで、７０５は、入力信号のＤＡＴＡ＿Ｂとフリップフロップ１２のＳＥＴＵＰ７０３との差で、これが、タイミングの有余となる。７０５が０以上で、かつクロックの半周期以下の範囲で変化する。
【００８６】
図１３の（Ｂ）に示すとおり、クロックスキューを制御し、前段のフリップフロップからの信号にタイミング的に余裕があれば、後段のフリップフロップのクロックのタイミングをＳＥＴＵＰの制約を満たすようにすれば、早く出力されることになる。図１３では、７０７に対する時間だけ、（Ｂ）の方が処理時間が早いことになる。すなわち、フリップフロップ１２に対して、７０７だけタイミング改善を行っている。
【００８７】
次に、６０５にて、６０４で最適化されたクロックスキュー値を元に、各フリップフロップのクロックラインへ、各クロックスキューに対応する遅延を追加する。ここでは、６０４で最適化したクロックスキュー値７０６とクロックスキュー制御する前のクロックスキュー値７０２の差分が、追加する遅延のクロックスキュー値になる。追加する遅延量は、図９の説明と同様、２０にあたる。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、演算できる。
【００８８】
次に６０６にて、他のパス全てについて、クロックスキュー制御によるタイミング改善が行われたか否かを判断する。もし、全てのパスに対して、これ以上のタイミング改善が見込まれない場合は、６０７の処理へ移る。他のパスの中で、タイミング改善の余地がある場合には、クロックスキュー制御を行うため、６０１の処理へ移り、６０１から６０５までの処理を同様に繰り返し行い、最適化を図る。
【００８９】
最後に、６０７にて、レイアウト１０５へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、６０５にて求めた追加遅延量２０に対するフリップフロップ１２のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト１０５へ出力する。
【００９０】
レイアウト１０５において、６０７により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、第１の実施例と同様、図１０に示すように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。
【００９１】
（第４の実施例）
図１４は、本発明を用いた実施例の画像処理回路の構成を示す。この画像処理回路８００は、図１５に示すデジタルカラー複写機等の画像処理装置内部に実装されている、プリンタ部９０２用の画像処理の一部を行うものである。画像処理回路８００についての詳細は、後述する。
【００９２】
リーダ部９０１は原稿の画像を読み取り、原稿画像に応じた画像データをプリンタ部９０２へ出力する。
【００９３】
リーダ部９０１の原稿給送装置９１０は、原稿を最終頁から順に１枚ずつプラテンガラス９１２上へ給送し、原稿の読み取り動作終了後、プラテンガラス９１２上の原稿を排出するものである。原稿がプラテンガラス９１２上に搬送されると、露光光源であるランプ９１３を点灯しスキャナユニット９１４の移動を開始させて、原稿を露光走査する。この時のランプ９１３の原稿からの反射光は、ミラー９１５、９１６、９１７、及びレンズ９１８によってＣＣＤイメージセンサ（以下ＣＣＤ）９１９へ導かれる。
【００９４】
プリンタ部９０２でレーザ発光部９２１を駆動し、リーダ部９０１から出力された画像データに応じたレーザ光をレーザ発光部９２１で発光させる。このレーザ光は感光ドラム９２２に照射され、感光ドラム９２２にはレーザ光に応じた潜像が形成される。この感光ドラム９２２の潜像の部分には現像器９２３によって現像剤が付着される。
【００９５】
９２４、９２５は、給紙用カセットで、出力用紙のサイズ、縦・横、色などの違いによって、複数段のカセットが用意されている。
【００９６】
そして、レーザ光の照射開始と同期したタイミングで、カセット９２４またはカセット９２５、および手差し用給紙部９２６のいずれかから記録紙を給紙して転写部９２７へ搬送し、感光ドラム９２２に付着された現像剤を記録紙に転写する。現像剤の乗った記録紙は定着部９２８に搬送され、定着部９２８の熱と圧力により現像剤は記録紙に定着される。
【００９７】
定着部９２８を通過した記録紙は排出ローラ９２９によって排出され、ソータ９３０は排出された記録紙をそれぞれのビンに収納して記録紙の仕分けを行う。なお、ソータ９３０は仕分けが設定されていない場合は最上ビンに記録紙を収納する。
【００９８】
また、両面記録が設定されている場合は、排出ローラ９２９のところまで記録紙を搬送した後、排出ローラ９２９の回転方向を逆転させ、フラッパ９３１によって再給紙搬送路へ導く。多重記録が設定されている場合は、記録紙を排出ローラ９２９まで搬送しないようにフラッパ９３１によって再給紙搬送路へ導く。再給紙搬送路へ導かれた記録紙は上述したタイミングで転写部９２７へ給紙される。
【００９９】
仕切り紙の出力するときには、手差し給紙部９２６にセットし、あらかじめ設定されている設定値とコピー出力のカウント値に合わせて随時仕切り紙を給紙していくこととなる。
【０１００】
次に、画像処理回路８００について述べる。画像処理回路８００は、リーダ部９０１において読み込まれ処理された画像データをプリンタ部９０２内のインターフェース９１０を介して受け取り、最適な画像を満たすように処理を行う際の下地除去を行う回路である。
【０１０１】
画像処理回路８００に入力されるＲＧＢの画像データから、除去すべきＲＧＢの輝度レベルをもとに、予め設定されたＲＧＢ用の各パラメータと、入力されたＲＧＢの画像データにより非線形演算を行い、出力用の各ＲＧＢのデータを算出するものである。
【０１０２】
画像処理回路８００に入力されるＲＧＢの画像データは、インターフェース９４１から、フリップフロップ９４２を通って下地除去演算部９４３へ送られる。
【０１０３】
インターフェース９４２は、リーダ部９０１からの画像データをデータフォーマット及びタイミングを調整して、下地除去演算部９４３へ出力するためのものである。
【０１０４】
また、各制御、設定はＣＰＵ９４０からフリップフロップ９４４を通り制御部９４５へ送られ、制御部９４５から下地除去演算部９４３のデータ設定や出力タイミングの制御を行う。
【０１０５】
リーダ部からの入力画像データのＲ成分、Ｇ成分、Ｂ成分のデータは、それぞれ、Ｒｉ、Ｇｉ、Ｂｉ、出力画像データのＲ成分、Ｇ成分、Ｂ成分のデータをそれぞれ、Ｒｏ、Ｇｏ、Ｂｏとすると下地除去演算部９４３で処理される非線形演算は、式（１）、（２）、（３）で表される。
【０１０６】
ここで、ｒｃｏｅｆ、ｇｃｏｅｆ、ｂｃｏｅｆはそれぞれ、Ｒ成分、Ｇ成分、Ｂ成分の演算係数である。
【外１】
2004334468.tif 000003
【０１０７】
図１６に画像処理回路８００の下地除去演算部９４３のブロック構成を示す。これは、式（１）、（２）、（３）で表される演算を行うためのブロック構成図であり、式（１）、（２）、（３）中のＲｏ、Ｇｏ、Ｂｏ、Ｒｉ、Ｇｉ、Ｂｉ及びｒｃｏｅｆ、ｇｃｏｅｆ、ｂｃｏｅｆは、図１６のＲｏ、Ｇｏ、Ｂｏ、Ｒｉ、Ｇｉ、Ｂｉ及びｒｃｏｅｆ、ｇｃｏｅｆ、ｂｃｏｅｆに対応する。また、ｓｅｌ８０４は演算の機能を選択するセレクタであり、設定により式（１）、（２）、（３）で表される演算を行うか否かを選択できる。
【０１０８】
フリップフロップ８０１とフリップフロップ８０２の間の演算の処理は、演算の精度等により処理時間がかかる。これは、演算処理が複雑になるために、演算を構成する論理回路８０３が複雑になるためである。そのため、論理回路８０３の遅延量が大きくなり、タイミングを満たすことが難しくなり、タイミング違反を招く危険がある。
【０１０９】
論理回路８０３の遅延により、フリップフロップ８０２のＳＥＴＵＰのタイミング制約満たさないと、フリップフロップ８０２の入力信号は正常にフリップフロップ８０２でクロック（ＣＬＫ２）同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。図１７は、Ｒ成分に関してのフリップフロップ８０１、フリップフロップ８０２、論理回路８０３のタイミングを示す。図１７では、Ｒｎのタイミングが、フリップフロップ８０２のＳＥＴＵＰのタイミング制約を超えているため、Ｒｏがフリップフロップ８０２で正常に同期化されて出力されておらず、１サイクル遅れて出力されている。
【０１１０】
そこで、実施例１で示した手段を用いて、クロックスキューを制御する事によって、フリップフロップ８０２でのＣＬＫ２のタイミング制御を行い、ＳＥＴＵＰのタイミング違反を改善する。クロックスキュー制御１０６での処理方法は実施例１で示したものと同じであるため割愛する。図１８にクロックスキューを制御を行った後のタイミングを示す。Ｒｎのタイミングが、フリップフロップ８０２のＳＥＴＵＰのタイミング制約を満たしており、フリップフロップ８０２で同期化され、所望のタイミングでＲｏが出力される。
【０１１１】
【発明の効果】
以上説明したように、本発明によれば各フリップフロップに最適なクロックスキューを与えることによって、クロックスキューを低減するようにスキューバランスを取るの必要が無くなり、クロックスキューを低減するための配線、バッファセルの挿入も必要はなく、早期にタイミングを収束させることができ、回路規模も削減できる。
【０１１２】
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合にも、クロックスキューを制御することによって、フリップフロップ間でのタイミングを容易に改善できる。論理合成時に、すでにタイミング違反が出てしまうパスがあった場合でも、仮レイアウト後にクロックスキューを制御することによって、早期にかつ容易にフリップフロップ間でのタイミングを改善できる。
【０１１３】
また、フリップフロップ間で、タイミング的に余裕のある場合には、各フリップフロップのクロックスキューを最適化することによって、同期化するタイミングを早め、半導体集積回路全体での処理速度を向上させることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例における半導体集積回路の設計手順のフローチャート図。
【図２】半導体集積回路で基本的に用いられる構成の説明図。
【図３】Ｈツリー方式のクロック配線を説明した概略構成図。
【図４】フリップフロップ及び組み合わせ回路のタイミング関係を示したタイミングチャート図。
【図５】本発明の第１の実施例におけるクロックスキュー制御における処理手順を示したフローチャート図。
【図６】本発明の第１の実施例におけるタイミング違反がおきる場合のタイミング例を示したタイミングチャート図。
【図７】本発明の第１の実施例におけるタイミング違反を改善した場合のタイミング例を示したタイミングチャート図。
【図８】本発明の第１の実施例におけるフリップフロップとクロックの位相関係を示した説明図。
【図９】本発明の第１の実施例におけるクロックスキューの追加した状態の構成の説明図。
【図１０】本発明の第１、第３の実施例おけるレイアウト上の配線可能領域を迂回するパスの説明図。
【図１１】
本発明の第２の本実施例における処理手順を示したフローチャート図。
【図１２】
本発明の第３の本実施例におけるクロックスキュー制御の処理手順を示したフ
ローチャート図。
【図１３】
本発明の第３の本実施例におけるクロック改善によるフリップフロップとクロ
ックのタイミング例を示したタイミングチャート。
【図１４】
本発明の第４の実施例における画像処理回路の概略構成図。
【図１５】
本発明の第４の実施例における画像処理装置内部の概略構成図。
【図１６】
本発明の第４の実施例における下地除去演算部のブロック構成図。
【図１７】
本発明の第４の実施例におけるタイミング違反がおきる場合のタイミング例を
示したタイミングチャート図。
【図１８】
本発明の第４の実施例におけるタイミング違反を改善した場合のタイミング例
を示したタイミングチャート図。
【図１】
2004334468.tif 000004
【図２】
2004334468.tif 000005
【図３】
2004334468.tif 000006
【図４】
2004334468.tif 000007
【図５】
2004334468.tif 000008
【図６】
2004334468.tif 000009
【図７】
2004334468.tif 000010
【図８】
2004334468.tif 000011
【図９】
2004334468.tif 000012
【図１０】
2004334468.tif 000013
【図１１】
2004334468.tif 000014
【図１２】
2004334468.tif 000015
【図１３】
2004334468.tif 000016
【図１４】
2004334468.tif 000017
【図１５】
2004334468.tif 000018
【図１６】
2004334468.tif 000019
【図１７】
2004334468.tif 000020
【図１８】
2004334468.tif 000021