JP2004334468A - クロックスキュー制御設計手段及び装置 - Google Patents
クロックスキュー制御設計手段及び装置 Download PDFInfo
- Publication number
- JP2004334468A JP2004334468A JP2003128700A JP2003128700A JP2004334468A JP 2004334468 A JP2004334468 A JP 2004334468A JP 2003128700 A JP2003128700 A JP 2003128700A JP 2003128700 A JP2003128700 A JP 2003128700A JP 2004334468 A JP2004334468 A JP 2004334468A
- Authority
- JP
- Japan
- Prior art keywords
- flip
- flop
- clock
- clock skew
- timing
- 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.)
- Withdrawn
Links
Images
Landscapes
- Manipulation Of Pulses (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】クロックスキューを均一に抑える必要なく、クロックの位相を制御し、各フリップフロップに最適なクロックスキューを与えることで、タイミング違反のパスのタイミングを改善、及び処理速度の改善を行う。
【解決手段】回路のクロックスキューを解析する処理と、タイミング違反の情報を解析する処理と、各フリップフロップの出力遅延の情報を解析する処理と、セル特性の情報を解析する処理し、クロックスキューの値を最適化する処理と、クロックラインに遅延を追加する処理と、変更された配線パス、論理の情報を出力する処理とで構成される。
【選択図】 図1
【解決手段】回路のクロックスキューを解析する処理と、タイミング違反の情報を解析する処理と、各フリップフロップの出力遅延の情報を解析する処理と、セル特性の情報を解析する処理し、クロックスキューの値を最適化する処理と、クロックラインに遅延を追加する処理と、変更された配線パス、論理の情報を出力する処理とで構成される。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、半導体集積回路の設計手法、およびその設計手法を実現させるための装置に関するものである。
【0002】
【従来の技術】
半導体集積回路のうち論理回路の設計は、大きく、仕様設計、機能設計、論理設計、論理合成、レイアウトの行程順で行われている。
【0003】
仕様設計において、設計する回路、LSIの用途、性能、仕様等の要素について検討した後、機能設計、論理設計において、回路のHDL等を用い機能記述を行い、倫理シミュレータ等を用いて動作検証を行う。
【0004】
次に、論理合成によって論理設計段階で設計された論理回路を具体的なゲート回路にマッピングを行う。レイアウトでは、ゲートレベルにマッピングされた回路データを用いて、物理レイアウトのパターン設計を行う。
【0005】
タイミング違反が生じ、クリティカルパスとなる配線がタイミング制約にあわない場合は、再度配置配線を行うか、バッファセルを挿入しドライブ能力を高くして、タイミングの改善を行う。遅延が大きくタイミング違反が改善出来ない場合は、再度論理を変更し、タイミングの最適化を行う。
【0006】
半導体集積回路内では、フリップフロップ等の順序回路でクロック信号に同期した形で処理を行う。フリップフロップ間における組み合わせ回路で所定の処理を行い、フリップフロップで同期化するため、フリップフロップ間の組み合わせの処理時間は、クロックの動作周波数、フリップフロップの特性等によって制限される。
【0007】
そのため、フリップフロップ間の論理、及び配線遅延が大きくなり、後段のフリップフロップのSETUP制約を満たさない場合は、タイミング違反を招く。
【0008】
フリップフロップに供給されるクロック信号の伝搬遅延は、各フリップフロップによって若干異なり、差がでてしまう。この差によって、各フリップフロップに供給されるクロック信号にクロックスキューとなる位相差が生じてしまう。このクロックスキューは、レイアウト時の各フリップフロップへのクロックラインの配線長、バッファが均一にならないために生じてしまうもので、このクロックスキューが大きすぎると、所望の動作周波数で回路が同期を取れなくなり、正常に動作しなくなるおそれがある。
【0009】
このため、LSIの同チップ内全てのフリップフロップに対して可能な限りクロックスキューを抑え、同一のタイミングでクロック信号が分配されるようにクロックラインの配線、バッファの挿入を行う。
【0010】
クロックスキューを抑える手段としては、主に、レイアウトでのクロックラインの分配時に、メッシュ方式または、ツリー方式をとることが挙げられる。
【0011】
メッシュ方式は、レイアウト時にチップを均一の格子状にクロックラインを配線し、その格子状の配線経路の近辺にバッファを挿入し、さらに、そのバッファを介してフリップフロップに接続するものである。
【0012】
ツリー方式は、各段毎にバッファを並列に接続したものを多段構成し、各バッファ毎にツリー状に配線するものである。ツリー方式の配線方法の一つに、Hツリーが挙げられる。
【0013】
通常、このHツリーによる配線が行われており、これは、クロックスキューを小さくでき、Hの形の配線経路を再帰的に比較縮小しながら繰り返すために、配線経路は対称性があり、配線長が均等にとれ、配線遅延均一に保つことができる。しかし、バッファの段数が多段になればなるほど、クロックの遅延量は大きくなる点と、素子の配置、配線等により完全にクロック信号の配線経路を対称にすることは難しい。そのため、各フリップフロップのクロック信号の配線長を均一に取ることはできず、配線遅延にも差が生じてくる。
【0014】
このような構成を開示している文献として以下に特許文献を示す。
【0015】
【特許文献1】
特開平5−54100号公報
【0016】
【発明が解決しようとしている課題】
上記従来例ではクロックラインの分配配線は、ツリー方式等を用い、クロックスキューを低減するように行われていた。論理合成やレイアウト後にタイミング違反が出た場合、タイミングが収束するように、バッファセルの挿入、配線経路の変更等を行っている。しかし、タイミング違反の遅延量が大きく、レイアウトでタイミングが収束しない場合は、タイミングの制約を満たすことが出来ないため、タイミングの制約の変更、論理の変更、動作周波数の変更などの仕様変更を余儀なくしなければならない。
【0017】
回路規模が増大、高速化がするにつれ、クロックスキューによる影響が大きくなり、スキューバランスを取ることが難しくなり、そのスキューがタイミング違反を招く要因に成っている。スキューを改善するために挿入したバッファセルによって、回路規模が増加したり、他のレイアウト時の配置、配線変更も必要となり、タイミングの収束を困難にしたりしている。
【0018】
また、タイミング違反がなく、タイミング的に余裕のある場合、動作周波数により、回路の処理速度も決まってしまうため、動作周波数を上げるか、パイプラインなどの処理を行う以外に処理速度の向上は難しい。
【0019】
【課題を解決するための手段】
そこで本発明では上記問題を解決するために、各フリップフロップのクロックライン上にクロックスキューを調整するための遅延を設けて、各フリップフロップのクロックスキューの制御を行う。クロックスキューを低減するようにスキューバランスを取るのではなく、逆に、各フリップフロップに適したクロックスキューを求め、先述した各フリップフロップに設けた遅延を用いて、適したクロックスキュー値にする。そのため、各フリップフロップに分配されているクロックラインは、均一にする必要はなく、クロックスキューを低減するための配線、バッファセルの挿入も必要はない。
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合は、前段と後段のフリップフロップに接続されているクロックの位相をずらす。すなわち、後段のフリップフロップに接続されるクロックラインに、遅延を追加し、クロックスキューを増大させることによって、フリップフロップ間でのタイミングを改善する。
【0020】
また、フリップフロップ間で、タイミング制約を十分満たし、タイミング的に余裕のある場合、半導体集積回路全体での処理速度を向上させるために、フリップフロップ間のクロックの位相をずらす。前段のフリップフロップで出力され、組み合わせ回路で処理された後の信号のタイミングが、後段のフリップフロップのSETUPを満たすように、後段のフリップフリップに接続されるクロックの位相をずらすことによって、フリップフロップ間で処理された出力信号のタイミングを早くする。すなわち、後段のフリップフロップでのクロック同期が早ければ、それだけ、処理速度も早くなり、半導体集積回路全体での高速化が図れる。
【0021】
【発明の実施の形態】
以下、本実施の形態について図を用いて説明する。
【0022】
(実施例)
(第1の実施例)
図1は本実施形態における半導体集積回路の設計手順を示したフローチャートである。
【0023】
仕様設計101、機能設計102、論理設計103、論理合成104、レイアウト105は、従来技術と同様の処理及びフローで各設計工程を行う。クロックスキュー制御106は、論理合成104、レイアウト105間でクロックに関する設計を行う行程である。
【0024】
本実施形態におけるクロックスキュー制御106が、本発明の中心となる処理部分で、ここで、クロックの分配、スキューの調整を行う。以下、クロックスキュー制御を中心に本発明の処理を説明していく。
【0025】
第一に、仕様設計101にて、設計対象物の用途、機能、動作、性能等の要因について検討を行い、設計対象物を実現するための仕様を作成する。
【0026】
次に、機能設計102にて、仕様に基づき、機能ごとにブロックに分解し、ブロックの構成に従い、機能を詳細に記述した機能記述を作成する。その機能記述が正常か否かを確認するために、機能シミュレータを用いて機能の動作確認を行う。
【0027】
次に、論理設計103にて、機能設計102にて作成した機能ブロック及び機能記述に基づき、ハードウエアの設計を行う。回路図、HDL(Hardware Description Language)等によりハードウエアをRTLまで回路設計していく。
【0028】
次に、論理合成104にて、論理設計103で作成されたHDLを元にゲートレベルに変換する。
【0029】
次に、レイアウト105にて、論理合成104で得られたゲートレベルの回路データを用いて、物理レイアウトのパターン設計を行う。
【0030】
ここで、レイアウト105にて、タイミング、面積等が仕様の範囲内に収束し違反がない場合は、LVS、負荷容量、EM等の物理設計の行程を経て、マスクの作成の行程へと移る。
【0031】
レイアウト105にて、タイミング、面積等が仕様の範囲内に収束しないで設計違反等が生じた場合は、レイアウト105にて作成されたレイアウトデータは論理合成104に送られ、論理合成104で、再度回路変換の最適化を行う。または、レイアウト105にて作成されたレイアウトデータは、クロックスキュー制御106へ送られ、クロックに関する修正、最適化が行われ、再度、レイアウト105へ送られ、レイアウト105にてパターン設計が行われる。レイアウトデータに関してタイミング、面積等が仕様の範囲内に収束するまで、この行程は繰り返し行われる。
【0032】
また、論理合成104にて、ゲートレベルに変換する際に、タイミング、ゲート規模等の制約内に収束しない場合は、タイミング、面積等の制約違反のままでゲートレベルに変換を行い、ゲートレベルの回路データをクロックスキュー制御106、レイアウト105へ送る。レイアウト105にて、タイミング、面積等の制約違反のまま、仮のレイアウトを行い、仮レイアウトでの回路の各信号の遅延、接続情報等を求め、クロックスキュー制御106へ、レイアウトデータを送る。クロックスキュー制御106は、レイアウト105から得られるレイアウトデータ、仮レイアウトでの回路の各信号の遅延、接続情報から、クロックに関する設計制御を行い、タイミングを制約内に満たすようにクロックラインの最適化を行い、タイミング制約を満たすように回路変更を行う。クロックスキュー制御106にて変更された回路は、レイアウトデータとしてレイアウト105へ送られて、再度レイアウトが行われか、または、論理合成104に送られ再度、論理合成して最適化が行われる。これは、第2の実施例にて、詳細に述べる。
【0033】
クロックスキュー制御106に関しての設計手順の詳細は後述する。
【0034】
次に、本発明を実施するための半導体集積回路の設計箇所について説明する。
【0035】
図2は、半導体集積回路で基本的に用いられる構成を説明したものである。これは、主にフリップフロップ11、12の順序回路とAND回路やOR回路で構成される組み合わせ回路13から成っている。
【0036】
フリップフロップ11の入力信号であるDATA1_INは、フリップフロップ11でクロック(図2中のCLK1)に同期化され、フリップフロップ11より出力される。この出力された信号は、組み合わせ回路13で所望の処理をされた後フリップフロップ12に入力されて、クロック(図2中のCLK2)に同期化され、フリップフロップ12より出力される。
【0037】
フリップフロップ11、12に供給されるクロック(図2中のCLK1、CLK2)は、クロックライン16から供給され、ほぼ同タイミングである。
【0038】
これは、図3に示すように、チップのクロック配線をHツリーにしてクロックスキューを小さくしているためである。ここで、ルートドライブセル301が駆動するツリーの階層を最上位の階層(第一の階層)として、信号の伝搬する方向に第2の階層、第3の階層と順次、下の階層へ移る階層構造をとる。クラスタを直接駆動しているバッファセル301をリーフノードとするツリーの階層を第m階層とする。階層状のツリーにおける分岐点が302になる。
【0039】
しかし、クロックのスキューは小さく抑えることはできても、0ではなく、各フリップフロップに供給されるクロックタイミングには若干の位相差が生じている。これは、図2のクロック遅延14、15にあたるもので、各フリップフロップのクロックは、クロックライン16と同タイミングにはならず、遅延されて位相差がある状態で供給される。
【0040】
図4に、フリップフロップ11、12及び組み合わせ回路13、クロックのタイミング関係を示す。図4中のDATA1_IN、DATA2_INは、それぞれ、図2中のフリップフロップ11の入力信号であるDATA1_IN、フリップフロップ12の入力信号であるDATA2_INのタイミングを示しており、図4中のCLK1、CLK2は、それぞれ、図2中のCLK1、CLK2のタイミングを示している。図4中の203は、CLK1とCLK2間のクロックの位相差を表しており、CLK1とCLK2間でのクロックスキューに対応する。
【0041】
DATA1_INをフリップフロップ11のSETUP(図4中の200)、HOLD条件を満たすタイミングで入力した場合、DATA1_INは、フリップフロップ11でクロックCLK1に同期化され、フリップフロップ11より出力される。この出力された信号は、組み合わせ回路13で所望の処理をされた後フリップフロップ12に入力される。このとき、組み合わせ回路13で処理されて(図4中の201は処理による遅延を表す)、フリップフロップ12に入力される時のタイミングは、フリップフロップ12のSETUP(図4中の202)、HOLDの条件を満たさなければならない。図4では、フリップフロップ12のSETUP202に対して204だけ前にDATA2_INが確定しており、SETUP202は十分満たしているので、フリップフロップ12においてクロックCLK2でDATA2_INは同期化できる。図4の例では、DATA_B3がDATA_A3に、DATA_B2がDATA_A2に、DATA_B1がDATA_A1にそれぞれ対応する。
【0042】
組み合わせ回路13での処理時間が大きすぎ、遅延量が動作周波数に対して大きすぎると、所望の動作周波数内でのSETUP、HOLD等のタイミング制約を満たさない場合が出てくる。この場合には、例えば、フリップフロップ12の入力信号は正常にフリップフロップ12でクロック(CLK2)同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。
【0043】
また、フリップフロップ11とフリップフロップ12に供給されるクロックCLK1、CLK2のクロックスキュー203が大きすぎる場合も、例えば、フリップフロップ12の入力信号は正常にフリップフロップ12でクロック(CLK2)同期化されないで、前のクロックでの信号値を取るか、又は不定値が出力される。
【0044】
次に、クロックスキュー制御106に関しての設計手順について述べる。
【0045】
図5は、クロックスキュー制御106での処理手順を示したフローチャートである。
【0046】
第一に、401にて、レイアウト105よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト105から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【0047】
次に、402にて、レイアウト105よりタイミング違反についての情報を得る。ここでは、レイアウト105から、実配線後でのタイミング違反が出ているフリップフロップ間のパスがあるか否かのデータを取得する。
【0048】
次に、403にて、402で取得したタイミング違反情報から、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、クロックスキュー制御を行って回路を変更する必要はないので、そのままの回路情報を出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、404の処理を行う。
【0049】
次に、404にて、レイアウト105よりタイミング違反のパス情報を得る。ここでは、レイアウト105から、実配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【0050】
次に、405にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップをレイアウト105でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む2つのフリップフロップ(前段のフリップフロップと後段のフリップフロップ)が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【0051】
次に、406にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。図6は、図4でのタイミング関係において、タイミング違反がおきる場合のタイミング例を示している。フリップフロップ11、組み合わせ回路13を通ってきた信号が、211だけ遅延してフリップフロップ12へ入力されているが、フリップフロップ12のSETUP212を214だけ満たしていない。ここでは、このようなタイミング違反をおこしているパスの遅延量にあたる211とクロックスキュー213とSETUP212の値を特定する。
【0052】
次に、407にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。図7は、図4、図6でのタイミング関係において、クロックCLK2の位相をずらすことでタイミング違反を改善した場合のタイミング例を示している。フリップフロップ11、組み合わせ回路13を通ってきた信号が、221だけ遅延してフリップフロップ12へ入力されているが、フリップフロップ12のSETUP222を満たすようにフリップフロップ12のクロックCLK2をずらし、その時のクロックスキュー値を求める。図7の例では、224だけ時間的に余裕がある状態でクロックCLK2の位相をずらしている。クロックCLK2の位相のずれ量の最低値は、SETUPを満たすための222となる。そのため、タイミング制約を満たすためのクロックスキュー値の最適化は222以上となり、余分な遅延を省くためにもレイアウト上可能な限り222に近い値となる。
【0053】
ここで、図8に示すようにフリップフロップ11とフリップフロップ12とのクロックの位相関係が2通り(図8中の(A)と(B))考えられる。(A)の場合に示すクロックの位相関係の場合は、フリップフロップ11のクロックCLK1の方がフリップフロップ12のクロックCLK2よりも231だけ時間的に前にある。この場合は、クロックスキュー値を変えてCLK2の位相を232のように変えて最適化したフリップフロップ12のクロックは、CLK3にあたり、フリップフロップ12のもともとのクロックスキュー231を引いた値である233が、クロックCLK2に追加すべきクロックスキュー値になる。一方、(B)の場合に示すクロックの位相関係の場合は、フリップフロップ11のクロックCLK1の方がフリップフロップ12のクロックCLK2よりも234だけ時間的に前にある。この場合は、クロックスキュー値を変えてCLK2の位相を235のように変えて最適化したフリップフロップ12のクロックは、CLK3にあたり、フリップフロップ12のもともとのクロックスキュー234引いた値である236が、クロックCLK2に追加すべきクロックスキュー値になる。
【0054】
次に、408にて、タイミング違反のパスでのフリップフロップのクロックに、407にて最適化したクロックスキューに対応する遅延情報を追加する。図9にクロックスキューの追加した状態の説明図を示す。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、遅延量が演算できる。そして、その追加する遅延量を示しているのが、20である。
【0055】
次に409にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、410の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、404の処理へ移り、404から408までの処理を同様に繰り返し行っていく。
【0056】
最後に、410にて、レイアウト105へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、408にて求めた追加遅延量20に対するフリップフロップ12のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト105へ出力する。
【0057】
レイアウト105において、410により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、図10にしめすように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。図10の(A)が再配線前の状態を示し、(B)が再配線後の状態を示す。ここで、311に313、312に314に対応する。311から312への配線パスを、配線長が410で求められた配線長の条件を満たすように313から314へ配線長が長くなるように配線を行い、最適化を図る。
【0058】
(第2の実施例)
第2の実施例の特徴は、論理合成時にタイミング制約を満たすことが出来ずにタイミング違反のパスが発生した場合に、論理合成104とレイアウト106、クロックスキュー制御106の処理手段により、タイミング違反を修正し、最適化を図るものである。
【0059】
第2の実施例では、論理合成104、レイアウト105、クロックスキュー制御106に関しての処理手段が、第1の実施例と異なる。そのため、論理合成104、レイアウト105、クロックスキュー制御106に関しての処理について以下に述べる。
【0060】
論理合成104を行う時に、常にタイミング制約を満たす形でHDLからゲートレベルの回路を変換できるわけではなく、制約条件や論理回路により、タイミング、ゲート規模等の制約内に収束しない場合がある。
【0061】
この場合、論理合成104、仮レイアウト、レイアウト105、クロックスキュー制御106による処理で、最適化を図り、タイミング制約を満たすことができる。
【0062】
図11は、本実施例における処理手順を示したフローチャートである。
【0063】
第一に、104にて、論理合成を行う。このとき、タイミングの最適化が収束しない場合でも、タイミング違反を残した形で論理合成を行う。
【0064】
次に、501にて、104で論理合成した結果に対して、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、レイアウト105へ回路のネットリストを出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、仮レイアウト502の処理を行う。
【0065】
次に、502にて、タイミング違反がある状態で、レイアウトを行い、配置、配線後の実負荷の値を求める。これは、タイミング違反が存在するため、論理は変更になり、配置や配線等の情報も変わるが、論理を変更する制御上でのより詳細な配置、配線情報を得るためである。仮レイアウト502のレイアウトの処理は、レイアウト105と同じで、タイミング違反が存在した状態でのレイアウトである点が異なる。仮レイアウト502でレイアウトした後、仮配置配線情報を503へ出力する。
【0066】
次に、503にて、仮レイアウト502より入力された仮配置配線情報から、仮配線遅延とフリップフロップのクロックスキューを求める。
【0067】
次に、504にて、503から求められた仮配線遅延とフリップフロップのクロックスキューから、タイミング違反のパス情報を得る。ここでは、仮レイアウト502から、仮配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【0068】
次に、505にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップを仮レイアウト502からのパスのデータ情報より、論理合成104でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む2つのフリップフロップ(前段のフリップフロップと後段のフリップフロップ)が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【0069】
次に、506にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。第1の実施例と同様に、タイミング違反をおこしているパスの遅延量にあたる211とクロックスキュー213とSETUP212の値を特定する。
【0070】
次に、507にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。第1の実施例と同様に、フリップフロップ11、組み合わせ回路13を通ってきた信号が、221だけ遅延してフリップフロップ12へ入力されている時に、フリップフロップ12のSETUP222を満たすようにフリップフロップ12のクロックCLK2をずらし、その時のクロックスキュー値を求める。
【0071】
次に、508にて、タイミング違反のパスでのフリップフロップのクロックに、507にて最適化したクロックスキューに対応する遅延情報を追加する。
【0072】
次に509にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、510の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、505の処理へ移り、505から508までの処理を同様に繰り返し行っていく。
【0073】
最後に、510にて、変更を行ったパスのクロックスキュー、論理等の情報をレイアウト105又は論理合成104へ出力する。
【0074】
クロックスキュー制御106での処理でタイミング違反のパス修正が十分であり、実配置配線でタイミングが収束する場合には、510からの変更パスの情報から、レイアウト105へ移り、レイアウトを行う。クロックスキュー制御106での変更により、タイミング違反をおこしていた各フリップフロップのクロックと入力タイミングの関係が十分余裕のある場合や、タイミング違反をおこしていた各フリップフロップの入力信号のタイミングがそのフリップフロップのSETUPの制約を十分満たす場合などが、これにあたる。
【0075】
クロックスキュー制御106での処理でタイミング違反のパス修正では、タイミング的に余裕のない場合や、論理変更に伴い、論理の最適化を行いたい場合には、510からの変更パスの情報から、論理合成104へ移り、再度論理合成を行い最適化を図る。クロックスキュー制御106の論理変更により、タイミング違反のパスでの組み合わせ回路13の最適化や、各フリップフロップの最適化、クロックスキューの最適化を図る場合には、これにあたる。再度、論理合成104を行った後は、同様の処理を繰り返して、最適化を図っていく。
【0076】
(第3の実施例)
第3の実施例の特徴は、レイアウト後の各フリップフロップの出力遅延を求め、その出力遅延に応じた、各フリップフロップのクロックスキューを与えることにより、最適な遅延量を配分することで回路の処理速度を上げ、チップの処理高速化を図るものである。
【0077】
第3の実施例では、クロックスキュー制御106に関しての制御手段の詳細、及び改善対象が、第1の実施例と異なる。そのため、クロックスキュー制御106に関しての処理手順の詳細について以下に述べる。
【0078】
図12は、本実施例におけるクロックスキュー制御106の処理手順を示したフローチャートである。
【0079】
第一に、601にて、レイアウト105よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト105から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【0080】
次に、602にて、レイアウト105よりチップ内の各フリップフロップの出力遅延量についての情報を得る。ここでは、レイアウト、セルの特性により、各フリップフロップの出力遅延は、それぞれ異なるため、その、それぞれのフリップフロップに対する出力遅延の情報を取得する。
【0081】
次に、603にて、各フリップフロップのSETUPの特性情報を取得する。ここでは、レイアウト105から、実配置された各フリップフロップをライブラリの特性より、SETUPの特性を抽出してき、602で得られた出力遅延の情報と対応させて情報を出力する。
【0082】
次に、604にて、フリップフロップ内で、出力遅延とSETUPとのタイミング関係に余裕がある場合に、クロックの位相を制御し、後段でのフリップフロップのクロックのタイミングを早めるための処理を行う。その、位相制御したクロックのクロックスキューの値を最適化して、フリップフロップに対応させたクロックスキュー値を出力する。各フリップフロップ全てについて、クロックスキューの最適化を行う。図13は、図4でのタイミング関係において、後段のフリップフロップにあたるフリップフロップ12のクロックCLK2の位相を変えて、フリップフロップ12のSETUP702に、フリップフロップ12の入力信号のタイミングが合うような場合のタイミング例を示している。
【0083】
図13の(A)は、クロックスキュー制御を行う前の、レイアウト105によるクロックスキュー702をもつ場合のタイミングを示している。
【0084】
フリップフロップ11のSETUP700を満たすタイミングで入力されてきた信号DATA_Aをフリップフロップ11にて、クロックCLK1に同期し、組み合わせ回路13を通ってきた信号DATA_Bが、701だけ遅延してフリップフロップ12へ入力される。フリップフロップ12のSETUP703を満たした状態で入力されたDATA_Bは、フリップフロップ12でクロックCLK2に同期して出力され、704だけ遅延してDATA_Cのタイミングで次段のフリップフロップへ入力される。
【0085】
図13の(B)は、クロックスキュー制御を行った場合のタイミングを示している。フリップフロップ11のSETUP700を満たすタイミングで入力されてきた信号DATA_Aをフリップフロップ11にて、クロックCLK1に同期し、組み合わせ回路13を通ってきた信号DATA_Bが、701だけ遅延してフリップフロップ12へ入力される。フリップフロップ12のクロックスキューを制御して、SETUP703を満たすように、クロックスキュー706のタイミングにした場合、入力されたDATA_Bは、フリップフロップ12でクロックCLK2に同期して出力され、704だけ遅延してDATA_Dのタイミングで次段のフリップフロップへ入力される。ここで、705は、入力信号のDATA_Bとフリップフロップ12のSETUP703との差で、これが、タイミングの有余となる。705が0以上で、かつクロックの半周期以下の範囲で変化する。
【0086】
図13の(B)に示すとおり、クロックスキューを制御し、前段のフリップフロップからの信号にタイミング的に余裕があれば、後段のフリップフロップのクロックのタイミングをSETUPの制約を満たすようにすれば、早く出力されることになる。図13では、707に対する時間だけ、(B)の方が処理時間が早いことになる。すなわち、フリップフロップ12に対して、707だけタイミング改善を行っている。
【0087】
次に、605にて、604で最適化されたクロックスキュー値を元に、各フリップフロップのクロックラインへ、各クロックスキューに対応する遅延を追加する。ここでは、604で最適化したクロックスキュー値706とクロックスキュー制御する前のクロックスキュー値702の差分が、追加する遅延のクロックスキュー値になる。追加する遅延量は、図9の説明と同様、20にあたる。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、演算できる。
【0088】
次に606にて、他のパス全てについて、クロックスキュー制御によるタイミング改善が行われたか否かを判断する。もし、全てのパスに対して、これ以上のタイミング改善が見込まれない場合は、607の処理へ移る。他のパスの中で、タイミング改善の余地がある場合には、クロックスキュー制御を行うため、601の処理へ移り、601から605までの処理を同様に繰り返し行い、最適化を図る。
【0089】
最後に、607にて、レイアウト105へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、605にて求めた追加遅延量20に対するフリップフロップ12のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト105へ出力する。
【0090】
レイアウト105において、607により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、第1の実施例と同様、図10に示すように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。
【0091】
(第4の実施例)
図14は、本発明を用いた実施例の画像処理回路の構成を示す。この画像処理回路800は、図15に示すデジタルカラー複写機等の画像処理装置内部に実装されている、プリンタ部902用の画像処理の一部を行うものである。画像処理回路800についての詳細は、後述する。
【0092】
リーダ部901は原稿の画像を読み取り、原稿画像に応じた画像データをプリンタ部902へ出力する。
【0093】
リーダ部901の原稿給送装置910は、原稿を最終頁から順に1枚ずつプラテンガラス912上へ給送し、原稿の読み取り動作終了後、プラテンガラス912上の原稿を排出するものである。原稿がプラテンガラス912上に搬送されると、露光光源であるランプ913を点灯しスキャナユニット914の移動を開始させて、原稿を露光走査する。この時のランプ913の原稿からの反射光は、ミラー915、916、917、及びレンズ918によってCCDイメージセンサ(以下CCD)919へ導かれる。
【0094】
プリンタ部902でレーザ発光部921を駆動し、リーダ部901から出力された画像データに応じたレーザ光をレーザ発光部921で発光させる。このレーザ光は感光ドラム922に照射され、感光ドラム922にはレーザ光に応じた潜像が形成される。この感光ドラム922の潜像の部分には現像器923によって現像剤が付着される。
【0095】
924、925は、給紙用カセットで、出力用紙のサイズ、縦・横、色などの違いによって、複数段のカセットが用意されている。
【0096】
そして、レーザ光の照射開始と同期したタイミングで、カセット924またはカセット925、および手差し用給紙部926のいずれかから記録紙を給紙して転写部927へ搬送し、感光ドラム922に付着された現像剤を記録紙に転写する。現像剤の乗った記録紙は定着部928に搬送され、定着部928の熱と圧力により現像剤は記録紙に定着される。
【0097】
定着部928を通過した記録紙は排出ローラ929によって排出され、ソータ930は排出された記録紙をそれぞれのビンに収納して記録紙の仕分けを行う。なお、ソータ930は仕分けが設定されていない場合は最上ビンに記録紙を収納する。
【0098】
また、両面記録が設定されている場合は、排出ローラ929のところまで記録紙を搬送した後、排出ローラ929の回転方向を逆転させ、フラッパ931によって再給紙搬送路へ導く。多重記録が設定されている場合は、記録紙を排出ローラ929まで搬送しないようにフラッパ931によって再給紙搬送路へ導く。再給紙搬送路へ導かれた記録紙は上述したタイミングで転写部927へ給紙される。
【0099】
仕切り紙の出力するときには、手差し給紙部926にセットし、あらかじめ設定されている設定値とコピー出力のカウント値に合わせて随時仕切り紙を給紙していくこととなる。
【0100】
次に、画像処理回路800について述べる。画像処理回路800は、リーダ部901において読み込まれ処理された画像データをプリンタ部902内のインターフェース910を介して受け取り、最適な画像を満たすように処理を行う際の下地除去を行う回路である。
【0101】
画像処理回路800に入力されるRGBの画像データから、除去すべきRGBの輝度レベルをもとに、予め設定されたRGB用の各パラメータと、入力されたRGBの画像データにより非線形演算を行い、出力用の各RGBのデータを算出するものである。
【0102】
画像処理回路800に入力されるRGBの画像データは、インターフェース941から、フリップフロップ942を通って下地除去演算部943へ送られる。
【0103】
インターフェース942は、リーダ部901からの画像データをデータフォーマット及びタイミングを調整して、下地除去演算部943へ出力するためのものである。
【0104】
また、各制御、設定はCPU940からフリップフロップ944を通り制御部945へ送られ、制御部945から下地除去演算部943のデータ設定や出力タイミングの制御を行う。
【0105】
リーダ部からの入力画像データのR成分、G成分、B成分のデータは、それぞれ、Ri、Gi、Bi、出力画像データのR成分、G成分、B成分のデータをそれぞれ、Ro、Go、Boとすると下地除去演算部943で処理される非線形演算は、式(1)、(2)、(3)で表される。
【0106】
ここで、rcoef、gcoef、bcoefはそれぞれ、R成分、G成分、B成分の演算係数である。
【外1】
【0107】
図16に画像処理回路800の下地除去演算部943のブロック構成を示す。これは、式(1)、(2)、(3)で表される演算を行うためのブロック構成図であり、式(1)、(2)、(3)中のRo、Go、Bo、Ri、Gi、Bi及びrcoef、gcoef、bcoefは、図16のRo、Go、Bo、Ri、Gi、Bi及びrcoef、gcoef、bcoefに対応する。また、sel804は演算の機能を選択するセレクタであり、設定により式(1)、(2)、(3)で表される演算を行うか否かを選択できる。
【0108】
フリップフロップ801とフリップフロップ802の間の演算の処理は、演算の精度等により処理時間がかかる。これは、演算処理が複雑になるために、演算を構成する論理回路803が複雑になるためである。そのため、論理回路803の遅延量が大きくなり、タイミングを満たすことが難しくなり、タイミング違反を招く危険がある。
【0109】
論理回路803の遅延により、フリップフロップ802のSETUPのタイミング制約満たさないと、フリップフロップ802の入力信号は正常にフリップフロップ802でクロック(CLK2)同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。図17は、R成分に関してのフリップフロップ801、フリップフロップ802、論理回路803のタイミングを示す。図17では、Rnのタイミングが、フリップフロップ802のSETUPのタイミング制約を超えているため、Roがフリップフロップ802で正常に同期化されて出力されておらず、1サイクル遅れて出力されている。
【0110】
そこで、実施例1で示した手段を用いて、クロックスキューを制御する事によって、フリップフロップ802でのCLK2のタイミング制御を行い、SETUPのタイミング違反を改善する。クロックスキュー制御106での処理方法は実施例1で示したものと同じであるため割愛する。図18にクロックスキューを制御を行った後のタイミングを示す。Rnのタイミングが、フリップフロップ802のSETUPのタイミング制約を満たしており、フリップフロップ802で同期化され、所望のタイミングでRoが出力される。
【0111】
【発明の効果】
以上説明したように、本発明によれば各フリップフロップに最適なクロックスキューを与えることによって、クロックスキューを低減するようにスキューバランスを取るの必要が無くなり、クロックスキューを低減するための配線、バッファセルの挿入も必要はなく、早期にタイミングを収束させることができ、回路規模も削減できる。
【0112】
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合にも、クロックスキューを制御することによって、フリップフロップ間でのタイミングを容易に改善できる。論理合成時に、すでにタイミング違反が出てしまうパスがあった場合でも、仮レイアウト後にクロックスキューを制御することによって、早期にかつ容易にフリップフロップ間でのタイミングを改善できる。
【0113】
また、フリップフロップ間で、タイミング的に余裕のある場合には、各フリップフロップのクロックスキューを最適化することによって、同期化するタイミングを早め、半導体集積回路全体での処理速度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例における半導体集積回路の設計手順のフローチャート図。
【図2】半導体集積回路で基本的に用いられる構成の説明図。
【図3】Hツリー方式のクロック配線を説明した概略構成図。
【図4】フリップフロップ及び組み合わせ回路のタイミング関係を示したタイミングチャート図。
【図5】本発明の第1の実施例におけるクロックスキュー制御における処理手順を示したフローチャート図。
【図6】本発明の第1の実施例におけるタイミング違反がおきる場合のタイミング例を示したタイミングチャート図。
【図7】本発明の第1の実施例におけるタイミング違反を改善した場合のタイミング例を示したタイミングチャート図。
【図8】本発明の第1の実施例におけるフリップフロップとクロックの位相関係を示した説明図。
【図9】本発明の第1の実施例におけるクロックスキューの追加した状態の構成の説明図。
【図10】本発明の第1、第3の実施例おけるレイアウト上の配線可能領域を迂回するパスの説明図。
【図11】
本発明の第2の本実施例における処理手順を示したフローチャート図。
【図12】
本発明の第3の本実施例におけるクロックスキュー制御の処理手順を示したフ
ローチャート図。
【図13】
本発明の第3の本実施例におけるクロック改善によるフリップフロップとクロ
ックのタイミング例を示したタイミングチャート。
【図14】
本発明の第4の実施例における画像処理回路の概略構成図。
【図15】
本発明の第4の実施例における画像処理装置内部の概略構成図。
【図16】
本発明の第4の実施例における下地除去演算部のブロック構成図。
【図17】
本発明の第4の実施例におけるタイミング違反がおきる場合のタイミング例を
示したタイミングチャート図。
【図18】
本発明の第4の実施例におけるタイミング違反を改善した場合のタイミング例
を示したタイミングチャート図。
【発明の属する技術分野】
本発明は、半導体集積回路の設計手法、およびその設計手法を実現させるための装置に関するものである。
【0002】
【従来の技術】
半導体集積回路のうち論理回路の設計は、大きく、仕様設計、機能設計、論理設計、論理合成、レイアウトの行程順で行われている。
【0003】
仕様設計において、設計する回路、LSIの用途、性能、仕様等の要素について検討した後、機能設計、論理設計において、回路のHDL等を用い機能記述を行い、倫理シミュレータ等を用いて動作検証を行う。
【0004】
次に、論理合成によって論理設計段階で設計された論理回路を具体的なゲート回路にマッピングを行う。レイアウトでは、ゲートレベルにマッピングされた回路データを用いて、物理レイアウトのパターン設計を行う。
【0005】
タイミング違反が生じ、クリティカルパスとなる配線がタイミング制約にあわない場合は、再度配置配線を行うか、バッファセルを挿入しドライブ能力を高くして、タイミングの改善を行う。遅延が大きくタイミング違反が改善出来ない場合は、再度論理を変更し、タイミングの最適化を行う。
【0006】
半導体集積回路内では、フリップフロップ等の順序回路でクロック信号に同期した形で処理を行う。フリップフロップ間における組み合わせ回路で所定の処理を行い、フリップフロップで同期化するため、フリップフロップ間の組み合わせの処理時間は、クロックの動作周波数、フリップフロップの特性等によって制限される。
【0007】
そのため、フリップフロップ間の論理、及び配線遅延が大きくなり、後段のフリップフロップのSETUP制約を満たさない場合は、タイミング違反を招く。
【0008】
フリップフロップに供給されるクロック信号の伝搬遅延は、各フリップフロップによって若干異なり、差がでてしまう。この差によって、各フリップフロップに供給されるクロック信号にクロックスキューとなる位相差が生じてしまう。このクロックスキューは、レイアウト時の各フリップフロップへのクロックラインの配線長、バッファが均一にならないために生じてしまうもので、このクロックスキューが大きすぎると、所望の動作周波数で回路が同期を取れなくなり、正常に動作しなくなるおそれがある。
【0009】
このため、LSIの同チップ内全てのフリップフロップに対して可能な限りクロックスキューを抑え、同一のタイミングでクロック信号が分配されるようにクロックラインの配線、バッファの挿入を行う。
【0010】
クロックスキューを抑える手段としては、主に、レイアウトでのクロックラインの分配時に、メッシュ方式または、ツリー方式をとることが挙げられる。
【0011】
メッシュ方式は、レイアウト時にチップを均一の格子状にクロックラインを配線し、その格子状の配線経路の近辺にバッファを挿入し、さらに、そのバッファを介してフリップフロップに接続するものである。
【0012】
ツリー方式は、各段毎にバッファを並列に接続したものを多段構成し、各バッファ毎にツリー状に配線するものである。ツリー方式の配線方法の一つに、Hツリーが挙げられる。
【0013】
通常、このHツリーによる配線が行われており、これは、クロックスキューを小さくでき、Hの形の配線経路を再帰的に比較縮小しながら繰り返すために、配線経路は対称性があり、配線長が均等にとれ、配線遅延均一に保つことができる。しかし、バッファの段数が多段になればなるほど、クロックの遅延量は大きくなる点と、素子の配置、配線等により完全にクロック信号の配線経路を対称にすることは難しい。そのため、各フリップフロップのクロック信号の配線長を均一に取ることはできず、配線遅延にも差が生じてくる。
【0014】
このような構成を開示している文献として以下に特許文献を示す。
【0015】
【特許文献1】
特開平5−54100号公報
【0016】
【発明が解決しようとしている課題】
上記従来例ではクロックラインの分配配線は、ツリー方式等を用い、クロックスキューを低減するように行われていた。論理合成やレイアウト後にタイミング違反が出た場合、タイミングが収束するように、バッファセルの挿入、配線経路の変更等を行っている。しかし、タイミング違反の遅延量が大きく、レイアウトでタイミングが収束しない場合は、タイミングの制約を満たすことが出来ないため、タイミングの制約の変更、論理の変更、動作周波数の変更などの仕様変更を余儀なくしなければならない。
【0017】
回路規模が増大、高速化がするにつれ、クロックスキューによる影響が大きくなり、スキューバランスを取ることが難しくなり、そのスキューがタイミング違反を招く要因に成っている。スキューを改善するために挿入したバッファセルによって、回路規模が増加したり、他のレイアウト時の配置、配線変更も必要となり、タイミングの収束を困難にしたりしている。
【0018】
また、タイミング違反がなく、タイミング的に余裕のある場合、動作周波数により、回路の処理速度も決まってしまうため、動作周波数を上げるか、パイプラインなどの処理を行う以外に処理速度の向上は難しい。
【0019】
【課題を解決するための手段】
そこで本発明では上記問題を解決するために、各フリップフロップのクロックライン上にクロックスキューを調整するための遅延を設けて、各フリップフロップのクロックスキューの制御を行う。クロックスキューを低減するようにスキューバランスを取るのではなく、逆に、各フリップフロップに適したクロックスキューを求め、先述した各フリップフロップに設けた遅延を用いて、適したクロックスキュー値にする。そのため、各フリップフロップに分配されているクロックラインは、均一にする必要はなく、クロックスキューを低減するための配線、バッファセルの挿入も必要はない。
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合は、前段と後段のフリップフロップに接続されているクロックの位相をずらす。すなわち、後段のフリップフロップに接続されるクロックラインに、遅延を追加し、クロックスキューを増大させることによって、フリップフロップ間でのタイミングを改善する。
【0020】
また、フリップフロップ間で、タイミング制約を十分満たし、タイミング的に余裕のある場合、半導体集積回路全体での処理速度を向上させるために、フリップフロップ間のクロックの位相をずらす。前段のフリップフロップで出力され、組み合わせ回路で処理された後の信号のタイミングが、後段のフリップフロップのSETUPを満たすように、後段のフリップフリップに接続されるクロックの位相をずらすことによって、フリップフロップ間で処理された出力信号のタイミングを早くする。すなわち、後段のフリップフロップでのクロック同期が早ければ、それだけ、処理速度も早くなり、半導体集積回路全体での高速化が図れる。
【0021】
【発明の実施の形態】
以下、本実施の形態について図を用いて説明する。
【0022】
(実施例)
(第1の実施例)
図1は本実施形態における半導体集積回路の設計手順を示したフローチャートである。
【0023】
仕様設計101、機能設計102、論理設計103、論理合成104、レイアウト105は、従来技術と同様の処理及びフローで各設計工程を行う。クロックスキュー制御106は、論理合成104、レイアウト105間でクロックに関する設計を行う行程である。
【0024】
本実施形態におけるクロックスキュー制御106が、本発明の中心となる処理部分で、ここで、クロックの分配、スキューの調整を行う。以下、クロックスキュー制御を中心に本発明の処理を説明していく。
【0025】
第一に、仕様設計101にて、設計対象物の用途、機能、動作、性能等の要因について検討を行い、設計対象物を実現するための仕様を作成する。
【0026】
次に、機能設計102にて、仕様に基づき、機能ごとにブロックに分解し、ブロックの構成に従い、機能を詳細に記述した機能記述を作成する。その機能記述が正常か否かを確認するために、機能シミュレータを用いて機能の動作確認を行う。
【0027】
次に、論理設計103にて、機能設計102にて作成した機能ブロック及び機能記述に基づき、ハードウエアの設計を行う。回路図、HDL(Hardware Description Language)等によりハードウエアをRTLまで回路設計していく。
【0028】
次に、論理合成104にて、論理設計103で作成されたHDLを元にゲートレベルに変換する。
【0029】
次に、レイアウト105にて、論理合成104で得られたゲートレベルの回路データを用いて、物理レイアウトのパターン設計を行う。
【0030】
ここで、レイアウト105にて、タイミング、面積等が仕様の範囲内に収束し違反がない場合は、LVS、負荷容量、EM等の物理設計の行程を経て、マスクの作成の行程へと移る。
【0031】
レイアウト105にて、タイミング、面積等が仕様の範囲内に収束しないで設計違反等が生じた場合は、レイアウト105にて作成されたレイアウトデータは論理合成104に送られ、論理合成104で、再度回路変換の最適化を行う。または、レイアウト105にて作成されたレイアウトデータは、クロックスキュー制御106へ送られ、クロックに関する修正、最適化が行われ、再度、レイアウト105へ送られ、レイアウト105にてパターン設計が行われる。レイアウトデータに関してタイミング、面積等が仕様の範囲内に収束するまで、この行程は繰り返し行われる。
【0032】
また、論理合成104にて、ゲートレベルに変換する際に、タイミング、ゲート規模等の制約内に収束しない場合は、タイミング、面積等の制約違反のままでゲートレベルに変換を行い、ゲートレベルの回路データをクロックスキュー制御106、レイアウト105へ送る。レイアウト105にて、タイミング、面積等の制約違反のまま、仮のレイアウトを行い、仮レイアウトでの回路の各信号の遅延、接続情報等を求め、クロックスキュー制御106へ、レイアウトデータを送る。クロックスキュー制御106は、レイアウト105から得られるレイアウトデータ、仮レイアウトでの回路の各信号の遅延、接続情報から、クロックに関する設計制御を行い、タイミングを制約内に満たすようにクロックラインの最適化を行い、タイミング制約を満たすように回路変更を行う。クロックスキュー制御106にて変更された回路は、レイアウトデータとしてレイアウト105へ送られて、再度レイアウトが行われか、または、論理合成104に送られ再度、論理合成して最適化が行われる。これは、第2の実施例にて、詳細に述べる。
【0033】
クロックスキュー制御106に関しての設計手順の詳細は後述する。
【0034】
次に、本発明を実施するための半導体集積回路の設計箇所について説明する。
【0035】
図2は、半導体集積回路で基本的に用いられる構成を説明したものである。これは、主にフリップフロップ11、12の順序回路とAND回路やOR回路で構成される組み合わせ回路13から成っている。
【0036】
フリップフロップ11の入力信号であるDATA1_INは、フリップフロップ11でクロック(図2中のCLK1)に同期化され、フリップフロップ11より出力される。この出力された信号は、組み合わせ回路13で所望の処理をされた後フリップフロップ12に入力されて、クロック(図2中のCLK2)に同期化され、フリップフロップ12より出力される。
【0037】
フリップフロップ11、12に供給されるクロック(図2中のCLK1、CLK2)は、クロックライン16から供給され、ほぼ同タイミングである。
【0038】
これは、図3に示すように、チップのクロック配線をHツリーにしてクロックスキューを小さくしているためである。ここで、ルートドライブセル301が駆動するツリーの階層を最上位の階層(第一の階層)として、信号の伝搬する方向に第2の階層、第3の階層と順次、下の階層へ移る階層構造をとる。クラスタを直接駆動しているバッファセル301をリーフノードとするツリーの階層を第m階層とする。階層状のツリーにおける分岐点が302になる。
【0039】
しかし、クロックのスキューは小さく抑えることはできても、0ではなく、各フリップフロップに供給されるクロックタイミングには若干の位相差が生じている。これは、図2のクロック遅延14、15にあたるもので、各フリップフロップのクロックは、クロックライン16と同タイミングにはならず、遅延されて位相差がある状態で供給される。
【0040】
図4に、フリップフロップ11、12及び組み合わせ回路13、クロックのタイミング関係を示す。図4中のDATA1_IN、DATA2_INは、それぞれ、図2中のフリップフロップ11の入力信号であるDATA1_IN、フリップフロップ12の入力信号であるDATA2_INのタイミングを示しており、図4中のCLK1、CLK2は、それぞれ、図2中のCLK1、CLK2のタイミングを示している。図4中の203は、CLK1とCLK2間のクロックの位相差を表しており、CLK1とCLK2間でのクロックスキューに対応する。
【0041】
DATA1_INをフリップフロップ11のSETUP(図4中の200)、HOLD条件を満たすタイミングで入力した場合、DATA1_INは、フリップフロップ11でクロックCLK1に同期化され、フリップフロップ11より出力される。この出力された信号は、組み合わせ回路13で所望の処理をされた後フリップフロップ12に入力される。このとき、組み合わせ回路13で処理されて(図4中の201は処理による遅延を表す)、フリップフロップ12に入力される時のタイミングは、フリップフロップ12のSETUP(図4中の202)、HOLDの条件を満たさなければならない。図4では、フリップフロップ12のSETUP202に対して204だけ前にDATA2_INが確定しており、SETUP202は十分満たしているので、フリップフロップ12においてクロックCLK2でDATA2_INは同期化できる。図4の例では、DATA_B3がDATA_A3に、DATA_B2がDATA_A2に、DATA_B1がDATA_A1にそれぞれ対応する。
【0042】
組み合わせ回路13での処理時間が大きすぎ、遅延量が動作周波数に対して大きすぎると、所望の動作周波数内でのSETUP、HOLD等のタイミング制約を満たさない場合が出てくる。この場合には、例えば、フリップフロップ12の入力信号は正常にフリップフロップ12でクロック(CLK2)同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。
【0043】
また、フリップフロップ11とフリップフロップ12に供給されるクロックCLK1、CLK2のクロックスキュー203が大きすぎる場合も、例えば、フリップフロップ12の入力信号は正常にフリップフロップ12でクロック(CLK2)同期化されないで、前のクロックでの信号値を取るか、又は不定値が出力される。
【0044】
次に、クロックスキュー制御106に関しての設計手順について述べる。
【0045】
図5は、クロックスキュー制御106での処理手順を示したフローチャートである。
【0046】
第一に、401にて、レイアウト105よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト105から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【0047】
次に、402にて、レイアウト105よりタイミング違反についての情報を得る。ここでは、レイアウト105から、実配線後でのタイミング違反が出ているフリップフロップ間のパスがあるか否かのデータを取得する。
【0048】
次に、403にて、402で取得したタイミング違反情報から、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、クロックスキュー制御を行って回路を変更する必要はないので、そのままの回路情報を出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、404の処理を行う。
【0049】
次に、404にて、レイアウト105よりタイミング違反のパス情報を得る。ここでは、レイアウト105から、実配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【0050】
次に、405にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップをレイアウト105でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む2つのフリップフロップ(前段のフリップフロップと後段のフリップフロップ)が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【0051】
次に、406にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。図6は、図4でのタイミング関係において、タイミング違反がおきる場合のタイミング例を示している。フリップフロップ11、組み合わせ回路13を通ってきた信号が、211だけ遅延してフリップフロップ12へ入力されているが、フリップフロップ12のSETUP212を214だけ満たしていない。ここでは、このようなタイミング違反をおこしているパスの遅延量にあたる211とクロックスキュー213とSETUP212の値を特定する。
【0052】
次に、407にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。図7は、図4、図6でのタイミング関係において、クロックCLK2の位相をずらすことでタイミング違反を改善した場合のタイミング例を示している。フリップフロップ11、組み合わせ回路13を通ってきた信号が、221だけ遅延してフリップフロップ12へ入力されているが、フリップフロップ12のSETUP222を満たすようにフリップフロップ12のクロックCLK2をずらし、その時のクロックスキュー値を求める。図7の例では、224だけ時間的に余裕がある状態でクロックCLK2の位相をずらしている。クロックCLK2の位相のずれ量の最低値は、SETUPを満たすための222となる。そのため、タイミング制約を満たすためのクロックスキュー値の最適化は222以上となり、余分な遅延を省くためにもレイアウト上可能な限り222に近い値となる。
【0053】
ここで、図8に示すようにフリップフロップ11とフリップフロップ12とのクロックの位相関係が2通り(図8中の(A)と(B))考えられる。(A)の場合に示すクロックの位相関係の場合は、フリップフロップ11のクロックCLK1の方がフリップフロップ12のクロックCLK2よりも231だけ時間的に前にある。この場合は、クロックスキュー値を変えてCLK2の位相を232のように変えて最適化したフリップフロップ12のクロックは、CLK3にあたり、フリップフロップ12のもともとのクロックスキュー231を引いた値である233が、クロックCLK2に追加すべきクロックスキュー値になる。一方、(B)の場合に示すクロックの位相関係の場合は、フリップフロップ11のクロックCLK1の方がフリップフロップ12のクロックCLK2よりも234だけ時間的に前にある。この場合は、クロックスキュー値を変えてCLK2の位相を235のように変えて最適化したフリップフロップ12のクロックは、CLK3にあたり、フリップフロップ12のもともとのクロックスキュー234引いた値である236が、クロックCLK2に追加すべきクロックスキュー値になる。
【0054】
次に、408にて、タイミング違反のパスでのフリップフロップのクロックに、407にて最適化したクロックスキューに対応する遅延情報を追加する。図9にクロックスキューの追加した状態の説明図を示す。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、遅延量が演算できる。そして、その追加する遅延量を示しているのが、20である。
【0055】
次に409にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、410の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、404の処理へ移り、404から408までの処理を同様に繰り返し行っていく。
【0056】
最後に、410にて、レイアウト105へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、408にて求めた追加遅延量20に対するフリップフロップ12のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト105へ出力する。
【0057】
レイアウト105において、410により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、図10にしめすように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。図10の(A)が再配線前の状態を示し、(B)が再配線後の状態を示す。ここで、311に313、312に314に対応する。311から312への配線パスを、配線長が410で求められた配線長の条件を満たすように313から314へ配線長が長くなるように配線を行い、最適化を図る。
【0058】
(第2の実施例)
第2の実施例の特徴は、論理合成時にタイミング制約を満たすことが出来ずにタイミング違反のパスが発生した場合に、論理合成104とレイアウト106、クロックスキュー制御106の処理手段により、タイミング違反を修正し、最適化を図るものである。
【0059】
第2の実施例では、論理合成104、レイアウト105、クロックスキュー制御106に関しての処理手段が、第1の実施例と異なる。そのため、論理合成104、レイアウト105、クロックスキュー制御106に関しての処理について以下に述べる。
【0060】
論理合成104を行う時に、常にタイミング制約を満たす形でHDLからゲートレベルの回路を変換できるわけではなく、制約条件や論理回路により、タイミング、ゲート規模等の制約内に収束しない場合がある。
【0061】
この場合、論理合成104、仮レイアウト、レイアウト105、クロックスキュー制御106による処理で、最適化を図り、タイミング制約を満たすことができる。
【0062】
図11は、本実施例における処理手順を示したフローチャートである。
【0063】
第一に、104にて、論理合成を行う。このとき、タイミングの最適化が収束しない場合でも、タイミング違反を残した形で論理合成を行う。
【0064】
次に、501にて、104で論理合成した結果に対して、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、タイミング違反等がない場合は、レイアウト105へ回路のネットリストを出力する。タイミング違反がある場合には、クロックスキュー制御を行うために、仮レイアウト502の処理を行う。
【0065】
次に、502にて、タイミング違反がある状態で、レイアウトを行い、配置、配線後の実負荷の値を求める。これは、タイミング違反が存在するため、論理は変更になり、配置や配線等の情報も変わるが、論理を変更する制御上でのより詳細な配置、配線情報を得るためである。仮レイアウト502のレイアウトの処理は、レイアウト105と同じで、タイミング違反が存在した状態でのレイアウトである点が異なる。仮レイアウト502でレイアウトした後、仮配置配線情報を503へ出力する。
【0066】
次に、503にて、仮レイアウト502より入力された仮配置配線情報から、仮配線遅延とフリップフロップのクロックスキューを求める。
【0067】
次に、504にて、503から求められた仮配線遅延とフリップフロップのクロックスキューから、タイミング違反のパス情報を得る。ここでは、仮レイアウト502から、仮配線後でのタイミング違反が出ているフリップフロップ間のパスのデータを取得する。
【0068】
次に、505にて、タイミング違反のパスが、回路内のどのフリップフロップ間かの特定を行う。ここでは、タイミング違反の出ているパスのフリップフロップを仮レイアウト502からのパスのデータ情報より、論理合成104でのネットリスト上でどの箇所であるかを特定する。タイミング違反しているパス情報から、そのパスを挟む2つのフリップフロップ(前段のフリップフロップと後段のフリップフロップ)が特定できるので、そのフリップフロップが、ネットリスト上でどのフリップフロップに対応するかを判断する。
【0069】
次に、506にて、タイミング違反のパスにおける遅延量とクロックスキュー値の特定を行う。第1の実施例と同様に、タイミング違反をおこしているパスの遅延量にあたる211とクロックスキュー213とSETUP212の値を特定する。
【0070】
次に、507にて、タイミング違反のパスでの、タイミング制約を満たすようにクロックスキュー値の最適化を行う。第1の実施例と同様に、フリップフロップ11、組み合わせ回路13を通ってきた信号が、221だけ遅延してフリップフロップ12へ入力されている時に、フリップフロップ12のSETUP222を満たすようにフリップフロップ12のクロックCLK2をずらし、その時のクロックスキュー値を求める。
【0071】
次に、508にて、タイミング違反のパスでのフリップフロップのクロックに、507にて最適化したクロックスキューに対応する遅延情報を追加する。
【0072】
次に509にて、他のパス全てについて、タイミング違反をおこしている箇所が存在するか否かを判定する。もし、他のパスにタイミング違反等がない場合は、510の処理を行う。他のパスの中で、タイミング違反がある場合には、クロックスキュー制御を行うため、505の処理へ移り、505から508までの処理を同様に繰り返し行っていく。
【0073】
最後に、510にて、変更を行ったパスのクロックスキュー、論理等の情報をレイアウト105又は論理合成104へ出力する。
【0074】
クロックスキュー制御106での処理でタイミング違反のパス修正が十分であり、実配置配線でタイミングが収束する場合には、510からの変更パスの情報から、レイアウト105へ移り、レイアウトを行う。クロックスキュー制御106での変更により、タイミング違反をおこしていた各フリップフロップのクロックと入力タイミングの関係が十分余裕のある場合や、タイミング違反をおこしていた各フリップフロップの入力信号のタイミングがそのフリップフロップのSETUPの制約を十分満たす場合などが、これにあたる。
【0075】
クロックスキュー制御106での処理でタイミング違反のパス修正では、タイミング的に余裕のない場合や、論理変更に伴い、論理の最適化を行いたい場合には、510からの変更パスの情報から、論理合成104へ移り、再度論理合成を行い最適化を図る。クロックスキュー制御106の論理変更により、タイミング違反のパスでの組み合わせ回路13の最適化や、各フリップフロップの最適化、クロックスキューの最適化を図る場合には、これにあたる。再度、論理合成104を行った後は、同様の処理を繰り返して、最適化を図っていく。
【0076】
(第3の実施例)
第3の実施例の特徴は、レイアウト後の各フリップフロップの出力遅延を求め、その出力遅延に応じた、各フリップフロップのクロックスキューを与えることにより、最適な遅延量を配分することで回路の処理速度を上げ、チップの処理高速化を図るものである。
【0077】
第3の実施例では、クロックスキュー制御106に関しての制御手段の詳細、及び改善対象が、第1の実施例と異なる。そのため、クロックスキュー制御106に関しての処理手順の詳細について以下に述べる。
【0078】
図12は、本実施例におけるクロックスキュー制御106の処理手順を示したフローチャートである。
【0079】
第一に、601にて、レイアウト105よりチップ内の各フリップフロップへ分配されるクロックの情報を得る。ここでは、レイアウト105から、実配線後の実負荷の各フリップフロップに分配されるクロックラインのパス情報、各クロックラインのクロックスキュー値のデータを取得する。
【0080】
次に、602にて、レイアウト105よりチップ内の各フリップフロップの出力遅延量についての情報を得る。ここでは、レイアウト、セルの特性により、各フリップフロップの出力遅延は、それぞれ異なるため、その、それぞれのフリップフロップに対する出力遅延の情報を取得する。
【0081】
次に、603にて、各フリップフロップのSETUPの特性情報を取得する。ここでは、レイアウト105から、実配置された各フリップフロップをライブラリの特性より、SETUPの特性を抽出してき、602で得られた出力遅延の情報と対応させて情報を出力する。
【0082】
次に、604にて、フリップフロップ内で、出力遅延とSETUPとのタイミング関係に余裕がある場合に、クロックの位相を制御し、後段でのフリップフロップのクロックのタイミングを早めるための処理を行う。その、位相制御したクロックのクロックスキューの値を最適化して、フリップフロップに対応させたクロックスキュー値を出力する。各フリップフロップ全てについて、クロックスキューの最適化を行う。図13は、図4でのタイミング関係において、後段のフリップフロップにあたるフリップフロップ12のクロックCLK2の位相を変えて、フリップフロップ12のSETUP702に、フリップフロップ12の入力信号のタイミングが合うような場合のタイミング例を示している。
【0083】
図13の(A)は、クロックスキュー制御を行う前の、レイアウト105によるクロックスキュー702をもつ場合のタイミングを示している。
【0084】
フリップフロップ11のSETUP700を満たすタイミングで入力されてきた信号DATA_Aをフリップフロップ11にて、クロックCLK1に同期し、組み合わせ回路13を通ってきた信号DATA_Bが、701だけ遅延してフリップフロップ12へ入力される。フリップフロップ12のSETUP703を満たした状態で入力されたDATA_Bは、フリップフロップ12でクロックCLK2に同期して出力され、704だけ遅延してDATA_Cのタイミングで次段のフリップフロップへ入力される。
【0085】
図13の(B)は、クロックスキュー制御を行った場合のタイミングを示している。フリップフロップ11のSETUP700を満たすタイミングで入力されてきた信号DATA_Aをフリップフロップ11にて、クロックCLK1に同期し、組み合わせ回路13を通ってきた信号DATA_Bが、701だけ遅延してフリップフロップ12へ入力される。フリップフロップ12のクロックスキューを制御して、SETUP703を満たすように、クロックスキュー706のタイミングにした場合、入力されたDATA_Bは、フリップフロップ12でクロックCLK2に同期して出力され、704だけ遅延してDATA_Dのタイミングで次段のフリップフロップへ入力される。ここで、705は、入力信号のDATA_Bとフリップフロップ12のSETUP703との差で、これが、タイミングの有余となる。705が0以上で、かつクロックの半周期以下の範囲で変化する。
【0086】
図13の(B)に示すとおり、クロックスキューを制御し、前段のフリップフロップからの信号にタイミング的に余裕があれば、後段のフリップフロップのクロックのタイミングをSETUPの制約を満たすようにすれば、早く出力されることになる。図13では、707に対する時間だけ、(B)の方が処理時間が早いことになる。すなわち、フリップフロップ12に対して、707だけタイミング改善を行っている。
【0087】
次に、605にて、604で最適化されたクロックスキュー値を元に、各フリップフロップのクロックラインへ、各クロックスキューに対応する遅延を追加する。ここでは、604で最適化したクロックスキュー値706とクロックスキュー制御する前のクロックスキュー値702の差分が、追加する遅延のクロックスキュー値になる。追加する遅延量は、図9の説明と同様、20にあたる。追加する遅延値はレイアウトの設計ルール、プロセスによりクロックスキュー値から、演算できる。
【0088】
次に606にて、他のパス全てについて、クロックスキュー制御によるタイミング改善が行われたか否かを判断する。もし、全てのパスに対して、これ以上のタイミング改善が見込まれない場合は、607の処理へ移る。他のパスの中で、タイミング改善の余地がある場合には、クロックスキュー制御を行うため、601の処理へ移り、601から605までの処理を同様に繰り返し行い、最適化を図る。
【0089】
最後に、607にて、レイアウト105へ、変更処理を行ったパスについてのパス情報、遅延情報を出力する。ここでは、605にて求めた追加遅延量20に対するフリップフロップ12のクロックの配線パス、配線長を求める。配線長はレイアウト時の設計ルール、プロセス、配線遅延により容易に求められる。ここで求めた配線パス、配線長の情報をレイアウト105へ出力する。
【0090】
レイアウト105において、607により求められた配線パス、配線長の情報に基づき該当する配線パスの再配線を行う。再配線は、第1の実施例と同様、図10に示すように、配線長を満たすように、レイアウト上の配線可能領域を迂回するパスを選んで配線を行う。
【0091】
(第4の実施例)
図14は、本発明を用いた実施例の画像処理回路の構成を示す。この画像処理回路800は、図15に示すデジタルカラー複写機等の画像処理装置内部に実装されている、プリンタ部902用の画像処理の一部を行うものである。画像処理回路800についての詳細は、後述する。
【0092】
リーダ部901は原稿の画像を読み取り、原稿画像に応じた画像データをプリンタ部902へ出力する。
【0093】
リーダ部901の原稿給送装置910は、原稿を最終頁から順に1枚ずつプラテンガラス912上へ給送し、原稿の読み取り動作終了後、プラテンガラス912上の原稿を排出するものである。原稿がプラテンガラス912上に搬送されると、露光光源であるランプ913を点灯しスキャナユニット914の移動を開始させて、原稿を露光走査する。この時のランプ913の原稿からの反射光は、ミラー915、916、917、及びレンズ918によってCCDイメージセンサ(以下CCD)919へ導かれる。
【0094】
プリンタ部902でレーザ発光部921を駆動し、リーダ部901から出力された画像データに応じたレーザ光をレーザ発光部921で発光させる。このレーザ光は感光ドラム922に照射され、感光ドラム922にはレーザ光に応じた潜像が形成される。この感光ドラム922の潜像の部分には現像器923によって現像剤が付着される。
【0095】
924、925は、給紙用カセットで、出力用紙のサイズ、縦・横、色などの違いによって、複数段のカセットが用意されている。
【0096】
そして、レーザ光の照射開始と同期したタイミングで、カセット924またはカセット925、および手差し用給紙部926のいずれかから記録紙を給紙して転写部927へ搬送し、感光ドラム922に付着された現像剤を記録紙に転写する。現像剤の乗った記録紙は定着部928に搬送され、定着部928の熱と圧力により現像剤は記録紙に定着される。
【0097】
定着部928を通過した記録紙は排出ローラ929によって排出され、ソータ930は排出された記録紙をそれぞれのビンに収納して記録紙の仕分けを行う。なお、ソータ930は仕分けが設定されていない場合は最上ビンに記録紙を収納する。
【0098】
また、両面記録が設定されている場合は、排出ローラ929のところまで記録紙を搬送した後、排出ローラ929の回転方向を逆転させ、フラッパ931によって再給紙搬送路へ導く。多重記録が設定されている場合は、記録紙を排出ローラ929まで搬送しないようにフラッパ931によって再給紙搬送路へ導く。再給紙搬送路へ導かれた記録紙は上述したタイミングで転写部927へ給紙される。
【0099】
仕切り紙の出力するときには、手差し給紙部926にセットし、あらかじめ設定されている設定値とコピー出力のカウント値に合わせて随時仕切り紙を給紙していくこととなる。
【0100】
次に、画像処理回路800について述べる。画像処理回路800は、リーダ部901において読み込まれ処理された画像データをプリンタ部902内のインターフェース910を介して受け取り、最適な画像を満たすように処理を行う際の下地除去を行う回路である。
【0101】
画像処理回路800に入力されるRGBの画像データから、除去すべきRGBの輝度レベルをもとに、予め設定されたRGB用の各パラメータと、入力されたRGBの画像データにより非線形演算を行い、出力用の各RGBのデータを算出するものである。
【0102】
画像処理回路800に入力されるRGBの画像データは、インターフェース941から、フリップフロップ942を通って下地除去演算部943へ送られる。
【0103】
インターフェース942は、リーダ部901からの画像データをデータフォーマット及びタイミングを調整して、下地除去演算部943へ出力するためのものである。
【0104】
また、各制御、設定はCPU940からフリップフロップ944を通り制御部945へ送られ、制御部945から下地除去演算部943のデータ設定や出力タイミングの制御を行う。
【0105】
リーダ部からの入力画像データのR成分、G成分、B成分のデータは、それぞれ、Ri、Gi、Bi、出力画像データのR成分、G成分、B成分のデータをそれぞれ、Ro、Go、Boとすると下地除去演算部943で処理される非線形演算は、式(1)、(2)、(3)で表される。
【0106】
ここで、rcoef、gcoef、bcoefはそれぞれ、R成分、G成分、B成分の演算係数である。
【外1】
【0107】
図16に画像処理回路800の下地除去演算部943のブロック構成を示す。これは、式(1)、(2)、(3)で表される演算を行うためのブロック構成図であり、式(1)、(2)、(3)中のRo、Go、Bo、Ri、Gi、Bi及びrcoef、gcoef、bcoefは、図16のRo、Go、Bo、Ri、Gi、Bi及びrcoef、gcoef、bcoefに対応する。また、sel804は演算の機能を選択するセレクタであり、設定により式(1)、(2)、(3)で表される演算を行うか否かを選択できる。
【0108】
フリップフロップ801とフリップフロップ802の間の演算の処理は、演算の精度等により処理時間がかかる。これは、演算処理が複雑になるために、演算を構成する論理回路803が複雑になるためである。そのため、論理回路803の遅延量が大きくなり、タイミングを満たすことが難しくなり、タイミング違反を招く危険がある。
【0109】
論理回路803の遅延により、フリップフロップ802のSETUPのタイミング制約満たさないと、フリップフロップ802の入力信号は正常にフリップフロップ802でクロック(CLK2)同期化されなで、前のクロックでの信号値を取るか、又は不定値が出力される。図17は、R成分に関してのフリップフロップ801、フリップフロップ802、論理回路803のタイミングを示す。図17では、Rnのタイミングが、フリップフロップ802のSETUPのタイミング制約を超えているため、Roがフリップフロップ802で正常に同期化されて出力されておらず、1サイクル遅れて出力されている。
【0110】
そこで、実施例1で示した手段を用いて、クロックスキューを制御する事によって、フリップフロップ802でのCLK2のタイミング制御を行い、SETUPのタイミング違反を改善する。クロックスキュー制御106での処理方法は実施例1で示したものと同じであるため割愛する。図18にクロックスキューを制御を行った後のタイミングを示す。Rnのタイミングが、フリップフロップ802のSETUPのタイミング制約を満たしており、フリップフロップ802で同期化され、所望のタイミングでRoが出力される。
【0111】
【発明の効果】
以上説明したように、本発明によれば各フリップフロップに最適なクロックスキューを与えることによって、クロックスキューを低減するようにスキューバランスを取るの必要が無くなり、クロックスキューを低減するための配線、バッファセルの挿入も必要はなく、早期にタイミングを収束させることができ、回路規模も削減できる。
【0112】
フリップフロップ間で、論理により遅延量が大きくなり、タイミング制約を満たすためのタイミング収束が難しい場合にも、クロックスキューを制御することによって、フリップフロップ間でのタイミングを容易に改善できる。論理合成時に、すでにタイミング違反が出てしまうパスがあった場合でも、仮レイアウト後にクロックスキューを制御することによって、早期にかつ容易にフリップフロップ間でのタイミングを改善できる。
【0113】
また、フリップフロップ間で、タイミング的に余裕のある場合には、各フリップフロップのクロックスキューを最適化することによって、同期化するタイミングを早め、半導体集積回路全体での処理速度を向上させることができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例における半導体集積回路の設計手順のフローチャート図。
【図2】半導体集積回路で基本的に用いられる構成の説明図。
【図3】Hツリー方式のクロック配線を説明した概略構成図。
【図4】フリップフロップ及び組み合わせ回路のタイミング関係を示したタイミングチャート図。
【図5】本発明の第1の実施例におけるクロックスキュー制御における処理手順を示したフローチャート図。
【図6】本発明の第1の実施例におけるタイミング違反がおきる場合のタイミング例を示したタイミングチャート図。
【図7】本発明の第1の実施例におけるタイミング違反を改善した場合のタイミング例を示したタイミングチャート図。
【図8】本発明の第1の実施例におけるフリップフロップとクロックの位相関係を示した説明図。
【図9】本発明の第1の実施例におけるクロックスキューの追加した状態の構成の説明図。
【図10】本発明の第1、第3の実施例おけるレイアウト上の配線可能領域を迂回するパスの説明図。
【図11】
本発明の第2の本実施例における処理手順を示したフローチャート図。
【図12】
本発明の第3の本実施例におけるクロックスキュー制御の処理手順を示したフ
ローチャート図。
【図13】
本発明の第3の本実施例におけるクロック改善によるフリップフロップとクロ
ックのタイミング例を示したタイミングチャート。
【図14】
本発明の第4の実施例における画像処理回路の概略構成図。
【図15】
本発明の第4の実施例における画像処理装置内部の概略構成図。
【図16】
本発明の第4の実施例における下地除去演算部のブロック構成図。
【図17】
本発明の第4の実施例におけるタイミング違反がおきる場合のタイミング例を
示したタイミングチャート図。
【図18】
本発明の第4の実施例におけるタイミング違反を改善した場合のタイミング例
を示したタイミングチャート図。
Claims (12)
- 半導体集積回路において、半導体集積回路を構成する回路のクロックスキューの情報を解析する第1の処理と、
半導体集積回路を構成する回路のタイミング違反の情報を解析する第2の処理と、
半導体集積回路を構成する各フリップフロップの出力遅延の情報を解析する第3の処理と、
半導体集積回路を構成する各フリップフロップのセルの特性情報を解析する第4の処理と、
第1の処理と第2の処理と第3の処理と第4の処理の解析結果に基づき、半導体集積回路を構成する各フリップフロップのクロックスキューの値を最適化する第5の処理と、
第5の処理の最適化結果に基づき、半導体集積回路を構成する各フリップフロップのクロックラインに遅延を追加する第6の処理と、
第6の処理に基づき、半導体集積回路内で変更された配線パス、論理の情報を出力する第7の処理とを備えたことを特徴としたクロックスキュー制御設計手段及び装置。 - 請求項1において、第1の処理は、半導体集積回路を構成する全てのフリップフロップに対して、各フリップフロップに接続されるクロックのクロックスキューを対象にしたものであることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第1の処理におけるクロックスキューの情報は、半導体集積回路を構成する各フリップフロップに接続されるクロックのクロックスキュー値、クロックラインの接続パスの情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第1の処理におけるクロックスキューの情報は、論理合成及びレイアウトの設計工程で得られる情報であることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第2の処理におけるタイミング違反の情報は、論理合成及びレイアウトの設計工程で得られる情報であることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第2の処理におけるタイミング違反の情報は、半導体集積回路を構成する各フリップフロップにおいて、タイミング違反を起こしているフリップフロップの箇所、接続パス、及びタイミング違反値の情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第3の処理における各フリップフロップの出力遅延の情報は、半導体集積回路を構成する各フリップフロップとそれに接続される組み合わせ回路の処理時間、そのフリップフロップと組み合わせ回路の箇所、接続パスの情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第4の処理における各フリップフロップのセルの特性情報は、半導体集積回路を構成する各フリップフロップのSETUP、HOLD等のタイミング特性の情報を含んでいることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第5の処理におけるクロックスキューの最適化は、半導体集積回路を構成する各フリップフロップのクロックスキューの値を、前段のフリップフロップと後段のフリップフロップのクロック位相をタイミングが改善されるように、ずらすことによって行われることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第6の処理におけるクロックラインの追加遅延は、第5の処理において最適化されたクロックスキュー値に基づいた遅延を、半導体集積回路を構成する各フリップフロップに接続されるクロックラインに追加するもので、遅延は、配線遅延、及びバッファ等の論理等を論理合成及びレイアウトの行程で変更を行うことによって、処理されることを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項1において、第7の処理における半導体集積回路内で変更された配線パス、論理の情報は、第6の処理に基づいて変更されるクロックラインの追加遅延量、クロックラインの配線パス、変更の論理情報を含み、論理合成及びレイアウトの行程へ出力することを特徴とするクロックスキュー制御設計手段及び装置。
- 請求項9において、第5の処理におけるクロックスキューの最適化は、タイミング違反が存在する場合には、そのタイミング違反を改善又は、無くす方向で前段と後段のフリップフロップのクロック位相をずらし、タイミングに余裕がある場合には、前段のフリップフロップで処理した出力を後段のフリップフロップで早期に同期化を図り、処理速度の改善を図ることを特徴とするクロックスキュー制御設計手段及び装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003128700A JP2004334468A (ja) | 2003-05-07 | 2003-05-07 | クロックスキュー制御設計手段及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003128700A JP2004334468A (ja) | 2003-05-07 | 2003-05-07 | クロックスキュー制御設計手段及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004334468A true JP2004334468A (ja) | 2004-11-25 |
Family
ID=33504743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003128700A Withdrawn JP2004334468A (ja) | 2003-05-07 | 2003-05-07 | クロックスキュー制御設計手段及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004334468A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010272060A (ja) * | 2009-05-25 | 2010-12-02 | Fujitsu Semiconductor Ltd | 設計支援プログラム、設計支援装置、および設計支援方法 |
JP2012104927A (ja) * | 2010-11-08 | 2012-05-31 | Fuji Xerox Co Ltd | 信号伝送回路、スキュー補正方法及び画像読取装置 |
-
2003
- 2003-05-07 JP JP2003128700A patent/JP2004334468A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010272060A (ja) * | 2009-05-25 | 2010-12-02 | Fujitsu Semiconductor Ltd | 設計支援プログラム、設計支援装置、および設計支援方法 |
US8423931B2 (en) | 2009-05-25 | 2013-04-16 | Fujitsu Semiconductor Limited | Support computer product, apparatus, and method |
JP2012104927A (ja) * | 2010-11-08 | 2012-05-31 | Fuji Xerox Co Ltd | 信号伝送回路、スキュー補正方法及び画像読取装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7434187B2 (en) | Method and apparatus to estimate delay for logic circuit optimization | |
US8205182B1 (en) | Automatic synthesis of clock distribution networks | |
US7509647B2 (en) | Method and apparatus for modeling dataflow systems and realization to hardware | |
JP4923128B2 (ja) | 回路設計およびリタイミングの方法および装置 | |
US7546567B2 (en) | Method and apparatus for generating a variation-tolerant clock-tree for an integrated circuit chip | |
US7809971B2 (en) | Clock distribution circuit, semiconductor integrated circuit and method of designing clock distribution circuit | |
US8302056B2 (en) | Method and system for placement of electronic circuit components in integrated circuit design | |
JP2874628B2 (ja) | 論理回路の最適化装置及びその方法 | |
US7996812B2 (en) | Method of minimizing early-mode violations causing minimum impact to a chip design | |
JP2002500435A (ja) | タイミング閉鎖方法 | |
US7254796B2 (en) | Method for synthesizing domino logic circuits cross reference to related patent application using partition | |
US7917882B2 (en) | Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof | |
US20090064067A1 (en) | Method of balancing path delay of clock tree in integrated circuit (ic) layout | |
JP2003271689A (ja) | 半導体集積回路の設計方法および設計プログラム | |
Osler | Placement driven synthesis case studies on two sets of two chips: hierarchical and flat | |
US8271922B2 (en) | System and method for clock optimization to achieve timing signoff in an electronic circuit and electronic design automation tool incorporating the same | |
US8732639B1 (en) | Method and apparatus for protecting, optimizing, and reporting synchronizers | |
JP2004334468A (ja) | クロックスキュー制御設計手段及び装置 | |
US7557606B1 (en) | Synchronization of data signals and clock signals for programmable logic devices | |
Wong | Techniques for designing high-performance digital circuits using wave pipelining | |
US20160188759A1 (en) | Information processing apparatus, state machine dividing method, and computer-readable recording medium | |
JP4053969B2 (ja) | 半導体集積回路の設計装置および半導体集積回路の設計方法 | |
Lu et al. | Interconnect planning with local area constrained retiming [logic IC layout] | |
WO2015075805A1 (ja) | ソースコード分割方法及びlsi実装装置 | |
JP2009016487A (ja) | 回路設計方法及び回路設計支援装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060801 |