(57)【要約】【課題】ＬＳＩのクロック分配装置において、処理の収束を早くし、または、発振現象を抑えることができる技術を提供する。【解決手段】順序セル選択手段と、入力側クリティカルパス選択手段と、出力側クリティカルパス選択手段と、スキュー値計算手段と、スキュー値更新手段とを備え、前記スキュー値計算手段が、入力側クリティカルパス違反値計算手段（ステップＳ８０１）と、出力側クリティカルパス違反値計算手段（ステップＳ８０２）と、スキュー値の差分計算手段（ステップＳ９０１）と、新しいスキュー値計算手段（ステップＳ９０２）とを具備して成り、スキュー値の差分計算手段（ステップＳ９０１）が、前記入力側クリティカルパスの違反値と前記出力側クリティカルパスの違反値との差を２で割り、さらに係数をかける処理を行うことを特徴とする。【選択図】図５
2007293554.tif 000002
【特許請求の範囲】
【請求項１】
順序セルを１つずつ選択する第１手段と、
選択された前記順序セルの入力側クリティカルパスを選択する第２手段と、
選択された前記順序セルの出力側クリティカルパスを選択する第３手段と、
前記入力側クリティカルパス及び前記出力側クリティカルパスに基づいて新しいスキュー値を計算する第４手段と、
前記第４手段の計算結果に基づいてスキュー値を更新する第５手段とを備え、
前記第４手段が、
前記入力側クリティカルパスの違反値を計算する第６手段と、
前記出力側クリティカルパスの違反値を計算する第７手段と、
前記第６及び第７手段の計算結果に基づいてスキュー値の差分を計算する第８手段と、
前記第８手段の計算結果に基づいて前記新しいスキュー値を計算する第９手段とを具備して成り、
前記第８手段が、
前記入力側クリティカルパスの違反値と前記出力側クリティカルパスの違反値との差を２で割り、さらに係数をかける処理を行うことを特徴とするクロック分配装置。
【請求項２】
請求項１記載のクロック分配装置において、
前記第８手段における係数は、１より小さい値又は１より大きい値であることを特徴とするクロック分配装置。
【請求項３】
順序セルを１つずつ選択する第１手段と、
選択された前記順序セルの入力側クリティカルパスを選択する第２手段と、
選択された前記順序セルの出力側クリティカルパスを選択する第３手段と、
前記入力側クリティカルパス及び前記出力側クリティカルパスに基づいて新しいスキュー値を計算する第４手段と、
前記第４手段の計算結果に基づいてスキュー値を更新する第５手段とを備え、
前記第２手段が、
指定された順序セルの入力側のパスを１本ずつ選択する第６手段と、
前記第６手段で選択されたパスのセットアップ違反値を計算する第７手段と、
前記第７手段で計算された違反値を１サイクル長の値で割る第８手段と、
前記第８手段の計算結果とパス情報とを記憶する第９手段と、
前記第９手段から前記違反値の最大のパスを選択する第１０手段とを具備して成り、
前記第３手段が、
指定された順序セルの出力側のパスを１本ずつ選択する第１１手段と、
前記第１１手段で選択されたパスのセットアップ違反値を計算する第１２手段と、
前記第１２手段で計算された違反値を１サイクル長の値で割る第１３手段と、
前記第１３手段の計算結果とパス情報とを記憶する第１４手段と、
前記第１４手段から前記違反値の最大のものを１本選択する第１５手段とを具備して成り、
前記第４手段が、
前記入力側クリティカルパスのセットアップ違反値と１サイクル長の値を取得する第１６手段と、
前記出力側クリティカルパスのセットアップ違反値と１サイクル長の値を取得する第１７手段と、
前記出力側クリティカルパスの１サイクル長に前記入力側クリティカルパスのセットアップ違反値をかけた値から、前記入力側クリティカルパスの１サイクル長に前記出力側クリティカルパスのセットアップ違反値をかけた値を引き、さらに前記入力側クリティカルパスの１サイクル長と前記出力側クリティカルパスの１サイクル長を足した値で割る処理を行い、スキュー値の差分を計算する第１８手段と、
前記第１８手段の計算結果に基づいて前記新しいスキュー値を計算する第１９手段とを具備して成ることを特徴とするクロック分配装置。
【請求項４】
順序セルを１つずつ選択する第１手段と、
選択された前記順序セルの入力側クリティカルパスを選択する第２手段と、
選択された前記順序セルの出力側クリティカルパスを選択する第３手段と、
前記入力側クリティカルパス及び前記出力側クリティカルパスに基づいて新しいスキュー値を計算する第４手段と、
前記第４手段の計算結果に基づいてスキュー値を更新する第５手段とを備え、
前記第４手段が、
前記入力側クリティカルパスの違反値を計算する第６手段と、
前記出力側クリティカルパスの違反値を計算する第７手段と、
前記第６及び第７手段の計算結果に基づいてスキュー値の差分を計算する第８手段と、
前記第８手段の計算結果に基づいて前記新しいスキュー値を計算する第９手段と、
前記新しいスキュー値を指定されている許容範囲内にずらす第１０手段とを具備して成ることを特徴とするクロック分配装置。
【請求項５】
請求項４記載のクロック分配装置において、さらに、
全パスの違反値の最大値を計算する第１１手段と、
前記第１１手段で計算された違反値の最大値を越えない許容範囲のスキュー値の下限値を計算する第１２手段と、
前記第１１手段で計算された違反値の最大値を越えない許容範囲のスキュー値の上限値を計算する第１３手段とを備えることを特徴とするクロック分配装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模集積回路（以下「ＬＳＩ」という）のクロック分配技術に関し、特に、ＬＳＩの同期式論理回路の設計において、順序回路セルへのクロックスキュー値を決定するクロック分配装置に適用して有効な技術に関する。
【背景技術】
【０００２】
本発明者が検討した技術として、例えば、ＬＳＩのクロック分配技術においては、以下の技術が考えられる。
【０００３】
最近の半導体チップにはオンチップメモリが搭載されているものが多く、しかもその規模は大きくなる傾向にある。一般的に、規模が大きくなるとそのアクセススピードは遅くなる。一方、そのメモリがキャッシュとして使われる場合には高速での動作が要求される。チップクロックの動作周波数も早くなる傾向にあるため、メモリのアクセススピードがネックとなって動作周波数を上げられない、という事態に陥る可能性が十分にある。
【０００４】
また、メモリ以外の組み合わせ回路部分については、実装する機能が多くなるにつれ、論理バグが入り込む危険性が高くなっている。危険性をできるだけ低くするために、論理設計者にとって分かりやすく記述する事は重要であると思われる。しかし、その思考過程には、順序セルの前後での論理量のバランスはまず考慮されない。その結果、順序セル間パスのディレイのばらつきが生じ、スピードネックとなる部分とそうでない部分とができる事になる。
【０００５】
上記の、スピードネックとなる部分が偏在する事に対する対策の１つとして、ユースフルスキューの技術がある。ユースフルスキューとは、順序セルへ到達するクロックのタイミングをわざとずらす事によって、順序セル間のタイミング制約を再配分し、動作周波数の向上を目指す技術である。順序セルへ到達するクロックのタイミングを調整して、セットアップタイミングの緩い所ではセットアップ制約を厳しくする代わりに、その分をセットアップタイミングの厳しい所に回して制約を緩める事によって、チップ全体としての動作周波数の低下を救う。
【０００６】
論理合成、レイアウトの市販ツールでは、クロック遅延も含めたタイミングを見ながら、論理合成やレイアウトを行う事ができる。これはつまり、クロック遅延が順序セル毎にばらばらであっても、結果としてタイミング制約を満たしていれば良しとする、という思想である。この処理方法では、結果としてユースフルスキューを使っていると言う事もできるが、これらの市販ツールが生成するクロック論理は、実用できるものではない。過去の製品で試用した経験では、論理合成結果の質が低下する傾向が見られている。
【０００７】
上記のようなＬＳＩのクロック分配に関する技術としては、例えば、特許文献１〜３に記載される技術などが挙げられる。
【０００８】
特許文献１は、最大遅延解析と最小遅延解析を行い、両方のタイミング違反が発生しない範囲の真中付近へ順序セルへのクロック遅延をずらし、クロック周波数の向上を図る、というものである。
【０００９】
特許文献２は、最大遅延解析と最小遅延解析を行い、両方のタイミング違反が発生しない範囲で順序セルへのクロック遅延をずらし、電源ノイズの分散低減を図る、というものである。
【００１０】
特許文献３は、トップスラックの終点の順序セルについて、その前後のタイミング余裕度の真中になる様にスキュー値を調整し、その処理を繰り返し適用する、というものである。
【特許文献１】特開２００３−１６１３０号公報
【特許文献２】特開平１０−３２６３０３号公報
【特許文献３】特開平０５−１９７７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、前記のようなＬＳＩのクロック分配技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
【００１２】
例えば、ある順序セルへのスキュー値の変更は、他の順序セルの制約値に影響を与えるので、スキュー値の変更は、同一の順序セルに対しても複数回適用する場合がある。そのため、ステートマシンの様にフィードバックループがたくさんある論理では、繰り返し回数が多くなってなかなか処理が終了しなかったり、或いは、発振現象が起きて収束しなかったりする場合があり得る。
【００１３】
前記特許文献１〜３では、順序セル前後の違反値が等しくなる点を理想的なスキュー値と定義している。１種類のクロックしかない回路の場合にはこれで問題無いが、同期している２種類以上のクロックがある場合には、違反値が等しくなるポイントは最適なポイントにはならない。タイミング違反値がたとえ同じでも、制約値の異なるパスでは、制約値の小さい方が大きな違反値となる。例えば、１０ｎｓ制約のパスとその半分の５ｎｓ制約のパスがあって、それぞれに１ｎｓずつの制約違反があった場合、１０ｎｓ制約のパスは１１ｎｓ動作となるが、５ｎｓ制約のパスは６ｎｓ動作となり、１１ｎｓの半分よりも大きな値となる。
【００１４】
また、前記特許文献１〜３では、セットアップ制約しか見ていないか、或いは、セットアップ制約とホールド制約を同じ重みで見ている。セットアップ制約しか見ていない場合は、理想的なスキュー値に調整した後では、ホールド制約に大きな違反値が残る事になる。セットアップ制約とホールド制約を同じ重みで見ている場合は、ホールド制約に引っ張られてセットアップ制約の改善があまり進まなかったりする。
【００１５】
そこで、本発明の目的は、ＬＳＩのクロック分配装置において、処理の収束を早くし、または、発振現象を抑えることができる技術を提供することにある。
【００１６】
また、本発明の他の目的は、ＬＳＩのクロック分配装置において、クロックスキュー値を最適値に調整することにより、ＬＳＩの動作周波数を高速化することができる技術を提供することにある。
【００１７】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１９】
すなわち、本発明によるクロック分配装置は、順序セルのスキュー値を変更する際、現在のスキュー値と計算で求められた理想的なスキュー値の差分に、指定された係数を掛けた後、現在のスキュー値に加える処理を実行するものである。
【００２０】
また、本発明によるクロック分配装置は、理想的なスキュー値の計算において、順序セル前後の違反値をそれぞれのクロックサイクル長で割った値が等しくなる点を理想的なスキュー値とする処理を実行するものである。
【００２１】
また、本発明によるクロック分配装置は、最初に、セットアップ制約のみを見て順序セルのスキュー調整を行い、セットアップ制約の最大違反値を取得し、その後、そのセットアップ制約の最大違反値を越えない範囲にスキュー値の範囲を制限しながら、ホールドの制約を見て順序セルのスキュー調整を行う処理を実行するものである。
【発明の効果】
【００２２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００２３】
（１）現在のスキュー値と計算で求められた理想的なスキュー値の差分にかける係数は、１よりも大きい場合は加速係数となり、処理の収束が早くなる。また、係数が１よりも小さい場合は減速係数となり、発振現象を抑える効果がある。
【００２４】
（２）順序セル前後のタイミング違反値をそれぞれのクロックサイクル長で割る事によって、タイミング違反値はクロックサイクル長に対する割合となり、両方のクロックサイクル長が異なる場合は、この値が等しくなる様に順序セルのスキュー値を調整する事によって、動作周波数をさらに高める事ができる。
【００２５】
（３）最初にセットアップ制約のみを見て順序セルのスキュー調整を行う事によって、セットアップ制約での違反値は最小に抑えられ、動作周波数を最高に高める事ができる。その後、セットアップ制約での違反値を越えない範囲で、ホールド制約を見て順序セルのスキュー調整を行う事によって、動作周波数は最高の状態を保ったまま、ホールド制約での違反値をなるべく小さく抑える事ができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２７】
（実施の形態１）
図１は本発明の実施の形態１によるクロック分配装置の構成及び処理を示すブロック図、図２は図１に示す入力側クリティカルパス選択手段１０３の構成及び処理を示すブロック図、図３は図１に示す出力側クリティカルパス選択手段１０４の構成及び処理を示すブロック図、図４は前提技術におけるスキュー値計算手段の処理を示す図、図５は図１に示すスキュー値計算手段１０５の処理を示す図、図６は本実施の形態１において、処理対象となる回路の一例を示す図、図７は図６の回路に対して前提技術の手法でスキュー値を調整した場合の処理過程を示す図、図８は図６の回路に対して本実施の形態１の手法でスキュー値を調整した場合の処理過程を示す図である。
【００２８】
まず、図１により、本実施の形態１によるクロック分配装置の構成の一例を説明する。本実施の形態１のクロック分配装置は、クロックスキュー値を求める装置であり、例えば、記憶装置１０１と、順序セル選択手段１０２と、入力側クリティカルパス選択手段１０３と、出力側クリティカルパス選択手段１０４と、スキュー値計算手段１０５と、スキュー値更新手段１０６などから構成される。
【００２９】
記憶装置１０１は、処理対象とする同期式回路の情報を格納している記憶装置である。順序セル選択手段１０２は、記憶装置１０１から順序セルを１つずつ取り出し、入力側クリティカルパス選択手段１０３と出力側クリティカルパス選択手段１０４に順番に供給するものである。入力側クリティカルパス選択手段１０３は、順序セル選択手段１０２から供給された順序セルに対して、その入力側のパスの中から、最もタイミング制約の厳しいパスを選び出すものである。出力側クリティカルパス選択手段１０４は、順序セル選択手段１０２から供給された順序セルに対して、その出力側のパスの中から、最もタイミング制約の厳しいパスを選び出すものである。スキュー値計算手段１０５は、入力側クリティカルパス選択手段１０３と出力側クリティカルパス選択手段１０４から供給された入力側のクリティカルパスと出力側のクリティカルパスから新しいスキュー値を計算するものである。スキュー値更新手段１０６は、記憶装置１０１に格納されている、順序セル選択手段１０２によって供給される順序セルのスキュー値を、スキュー値計算手段１０５によって計算された新しいスキュー値に置き換えるものである。
【００３０】
なお、本実施の形態１のクロック分配装置は、コンピュータ及び記憶装置などを利用して実現され、ハードウエア又はソフトウエアのどちらで構成してもよい。
【００３１】
図２に示すように、図１の入力側クリティカルパス選択手段１０３は、例えば、入力側パス選択手段２０１と、セットアップ違反値計算手段２０２と、パス情報記憶手段２０４と、パス選択手段２０５などから構成される。
【００３２】
入力側パス選択手段２０１は、指定された順序セルの入力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、セットアップ違反値計算手段２０２に順番に供給するものである。セットアップ違反値計算手段２０２は、入力側パス選択手段２０１から供給されたパスに対して、そのセットアップ制約に対する違反値を計算するものである。パス情報記憶手段２０４は、セットアップ違反値計算手段２０２によって計算されたセットアップ違反値を、そのパスの情報と共に全て記憶するものである。パス選択手段２０５は、パス情報記憶手段２０４に記憶されている情報の中から、セットアップ違反値が最大であるパスを１つ選ぶものである。
【００３３】
図３に示すように、図１の出力側クリティカルパス選択手段１０４は、例えば、出力側パス選択手段３０１と、セットアップ違反値計算手段３０２と、パス情報記憶手段３０４と、パス選択手段３０５などから構成される。
【００３４】
出力側パス選択手段３０１は、指定された順序セルの出力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、セットアップ違反値計算手段３０２に順番に供給するものである。セットアップ違反値計算手段３０２は、出力側パス選択手段３０１から供給されたパスに対して、そのセットアップ制約に対する違反値を計算するものである。パス情報記憶手段３０４は、セットアップ違反値計算手段３０２によって計算されたセットアップ違反値を、そのパスの情報と共に全て記憶するものである。パス選択手段３０５は、パス情報記憶手段３０４に記憶されている情報の中から、セットアップ違反値が最大であるパスを１つ選ぶものである。
【００３５】
図４に示すように、本発明の前提技術におけるスキュー値計算手段１０５の処理は、例えば、次の手順で実行される。
【００３６】
まず、ステップＳ８０１で、入力側クリティカルパス選択手段１０３によって指定された入力側パスのセットアップ違反値を計算する（Ｖ１＝入力側クリティカルパスのセットアップ違反値）。
【００３７】
次に、ステップＳ８０２で、出力側クリティカルパス選択手段１０４によって指定された出力側パスのセットアップ違反値を計算する（Ｖ２＝出力側クリティカルパスのセットアップ違反値）。
【００３８】
次に、ステップＳ８０３で、ステップＳ８０１によって計算された値（Ｖ１）から、ステップＳ８０２によって計算された値（Ｖ２）を引き、さらにそれを２で割る事によって、スキュー値の差分を計算する（スキュー値の差分＝（Ｖ１−Ｖ２）／２）。
【００３９】
次に、ステップＳ８０４で、ステップＳ８０３によって計算された値を、指定された順序セルのスキュー値に足し合わせる（新しいスキュー値＝現在のスキュー値＋スキュー値の差分）。
【００４０】
図５に示すように、本実施の形態１における図１のスキュー値計算手段１０５の処理は、例えば、次の手順で実行される。
【００４１】
まず、ステップＳ８０１で、入力側クリティカルパス選択手段１０３によって指定された入力側パスのセットアップ違反値を計算する（Ｖ１＝入力側クリティカルパスのセットアップ違反値）。
【００４２】
次に、ステップＳ８０２で、出力側クリティカルパス選択手段１０４によって指定された出力側パスのセットアップ違反値を計算する（Ｖ２＝出力側クリティカルパスのセットアップ違反値）。
【００４３】
次に、ステップＳ９０１で、ステップＳ８０１によって計算された値（Ｖ１）から、ステップＳ８０２によって計算された値（Ｖ２）を引き、それを２で割り、さらに指定された係数をかける事によって、スキュー値の差分を計算する（スキュー値の差分＝（Ｖ１−Ｖ２）／２×係数）。
【００４４】
次に、ステップＳ９０２で、ステップＳ９０１によって計算された値を、順序セル選択手段１０２によって指定された順序セルのスキュー値に足し合わせる（新しいスキュー値＝現在のスキュー値＋スキュー値の差分）。
【００４５】
以下、記憶装置１０１に格納されているパス情報が、図６の回路である場合を例にとって、本実施の形態１の効果を説明する。
【００４６】
図６の回路は、入力ポートを１つ、出力ポートを１つ、順序セルを３つ含む回路である。組み合わせ回路６０２は、入力ポート６０１と順序セル６０３の間にあって、初期状態ではセットアップタイミング制約に対して０．１ｎｓの違反が存在している。組み合わせ回路６０４は順序セル６０３と順序セル６０５の間にあって、初期状態ではセットアップタイミング制約に対して０．３ｎｓの違反が存在している。組み合わせ回路６０６は順序セル６０５と順序セル６０７の間にあって、初期状態ではセットアップタイミング制約に対して０．７ｎｓの違反が存在している。組み合わせ回路６０８は順序セル６０７と出力ポート６０９の間にあって、初期状態ではセットアップタイミング制約に対して０ｎｓの違反が存在している。また、クロック入力ポート６１０から各順序セルにクロック（ＣＬＫ）が入力している。
【００４７】
また、各順序セルのクロックスキューの初期値は、全て０ｎｓであるとする。
【００４８】
この回路から、順序セル選択手段１０２によって順序セルを１つずつ取り出してスキュー値の変更を加えていく。その順番は順序セル６０５、順序セル６０７、順序セル６０３の順番とする。処理の順番については特に制約がある訳ではないので、別の順番で処理しても良い。
【００４９】
入力側クリティカルパス選択手段１０３は、まず順序セル６０５を受け取る。入力側パス選択手段２０１は組み合わせ回路６０４を取り出し、セットアップ違反値計算手段２０２はそのパスの違反値を計算する。計算式は次の式であり、下記の違反値を得る。
【００５０】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０．３ｎｓ−０ｎｓ＝０．３ｎｓ
この値は、計算対象となったパスが組み合わせ回路６０４であるという情報と共に、パス情報記憶手段２０４に記憶される。
【００５１】
入力側パス選択手段２０１は、次に、順序セル６０５の入力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、最大のものを選択するパス選択手段２０５が稼動する。
【００５２】
パス選択手段２０５は、パス情報記憶手段２０４の中に記憶されているパスの中から、セットアップ違反値が最大であるものを選択する。本例では組み合わせ回路６０４が、クリティカルパスとして選択され、入力側クリティカルパス選択手段１０３は処理を終了する。
【００５３】
一方、出力側クリティカルパス選択手段１０４も、まず順序セル６０５を受け取る。出力側パス選択手段３０１は組み合わせ回路６０６を取り出し、セットアップ違反値計算手段３０２はそのパスの違反値を計算する。計算式は次の式であり、下記の違反値を得る。
【００５４】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０．７ｎｓ−０ｎｓ＝０．７ｎｓ
この値は、計算対象となったパスが組み合わせ回路６０６であるという情報と共に、パス情報記憶手段３０４に記憶される。
【００５５】
出力側パス選択手段３０１は、次に、順序セル６０５の出力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、最大のものを選択するパス選択手段３０５が稼動する。
【００５６】
パス選択手段３０５は、パス情報記憶手段３０４の中に記憶されているパスの中から、セットアップ違反値が最大であるものを選択する。本例では組み合わせ回路６０６が、クリティカルパスとして選択され、出力側クリティカルパス選択手段１０４は処理を終了する。
【００５７】
次に、スキュー値計算手段１０５が稼動するが、ここが、本実施の形態１の特徴となる部分なので、まずは、前提技術の手法（図４）から説明する。
【００５８】
図４に示すように、ステップＳ８０１で、入力側クリティカルパス選択手段１０３が選択した組み合わせ回路６０４を受け取り、入力側クリティカルパスのセットアップ違反値を計算する。計算式は図２に記載の式と同じであり、０．３ｎｓの違反値が得られる。
【００５９】
ステップＳ８０２で、出力側クリティカルパス選択手段１０４が選択した組み合わせ回路６０６を受け取り、出力側クリティカルパスのセットアップ違反値を計算する。計算式は図３に記載の式と同じであり、０．７ｎｓの違反値が得られる。
【００６０】
ステップＳ８０３で、ステップＳ８０１によって得られた０．３ｎｓの違反値から、ステップＳ８０２によって得られた０．７ｎｓの違反値を引き、それを２で割って、スキュー値の差分−０．２ｎｓが得られる。
【００６１】
ステップＳ８０４で、順序セル選択手段１０２によって選択されている順序セル６０５の現在のスキュー値０ｎｓに、ステップＳ８０３によって計算されたスキュー値の差分−０．２ｎｓを足し合わせ、新しいスキュー値−０．２ｎｓが得られる。これで、スキュー値計算手段１０５は処理を終了する。
【００６２】
スキュー値更新手段１０５は、記憶装置１０１に格納されている、順序セル選択手段１０２によって選択されている順序セル６０５の現在のスキュー値０ｎｓを、スキュー値計算手段１０５によって計算されたスキュー値−０．２ｎｓで置き換える。
【００６３】
以上で、順序セル６０５に対する処理の１回分が終了する。
【００６４】
図７の繰り返し回数１の行が、以上の処理の結果を記した部分である。順序セル６０５のスキュー値が、初期状態の０ｎｓから−０．２ｎｓに変っている。その結果、その両側の組み合わせ回路６０４と組み合わせ回路６０６の違反値が０．５ｎｓと、同じ値になっている。
【００６５】
次に、順序セル選択手段１０２は順序セル６０７を選択し、上記と同じ処理を行う。その結果は図７における繰り返し回数２の行の様になる。さらにその次に、順序セル選択手段１０２は順序セル６０３を選択し、上記と同じ処理を行い、その結果は図７における繰り返し回数３の行の様になる。
【００６６】
以上の様に、各順序セルに対して同様の処理を繰り返し行う。最終的には、図７における繰り返し回数３０の行の結果となり、収束状態に達する。
【００６７】
次に、スキュー値計算手段１０５の、本実施の形態１による処理手順を説明する。
【００６８】
ステップＳ８０１とステップＳ８０２は前提技術の手法と同じであり、それぞれ、０．３ｎｓ、０．７ｎｓの違反値が得られる。
【００６９】
ステップＳ９０１で、ステップＳ８０１によって得られた０．３ｎｓの違反値から、ステップＳ８０２によって得られた０．７ｎｓの違反値を引き、それを２で割り、さらに係数をかけることにより、スキュー値の差分を計算する。ここでは、その係数を１．２とする。その結果、スキュー値の差分−０．２４ｎｓが得られる。
【００７０】
ステップＳ９０２で、順序セル選択手段１０２によって選択されている順序セルの現在のスキュー値０ｎｓに、ステップＳ９０１によって計算されたスキュー値の差分−０．２４ｎｓを足し合わせ、新しいスキュー値−０．２４ｎｓが得られる。
【００７１】
スキュー値更新手段１０６は、記憶装置１０１に格納されている、順序セル選択手段１０２によって選択されている順序セルの現在のスキュー値０ｎｓを、スキュー値計算手段１０５によって計算されたスキュー値−０．２４ｎｓで置き換える。
【００７２】
以上の処理結果は、図８における繰り返し回数１の行に纏めてある。
【００７３】
同様の処理は順序セル６０７、順序セル６０３に対しても行われ、それぞれ、図８における繰り返し回数２の行と繰り返し回数３の行の結果となる。以上の様に、各順序セルに対して同様の処理を繰り返し行い、最終的には、図８における繰り返し回数１８の行で収束状態に達する。
【００７４】
前提技術の手法では繰り返し回数が３０回であったのに対して、本実施の形態１による手法では繰り返し回数が１８回と、大幅に減っている事が分かる。
【００７５】
この様に、前提技術の手法に対して、本実施の形態１による手法では、処理時間を短縮させる事が可能である。これは、スキュー値の差分に係数をかける事によって、スキュー値の変化を加速させ、収束状態に達するまでの繰り返し回数を減らすことができるためである。
【００７６】
すなわち、現在のスキュー値と計算で求められた理想的なスキュー値の差分にかける係数は、１よりも大きい場合は加速係数となり、処理の収束が早くなる。また、係数が１よりも小さい場合は減速係数となり、発振現象を抑える効果がある。
【００７７】
（実施の形態２）
図９は、本発明の実施の形態２によるクロック分配装置において、図１に示す入力側クリティカルパス選択手段１０３の構成及び処理を示すブロック図、図１０は図１に示す出力側クリティカルパス選択手段１０４の構成及び処理を示すブロック図、図１１は図１に示すスキュー値計算手段１０５の処理を示す図、図１２は処理対象となる回路の一例を示す図、図１３は図１２の回路に対して前提技術の手法でスキュー値を調整した場合の処理過程を示す図、図１４は図１２の回路に対して本実施の形態２の手法でスキュー値を調整した場合の処理過程を示す図、図１５は図１に示すスキュー値計算手段１０５の他の処理を示す図である。
【００７８】
本発明の実施の形態２によるクロック分配装置は、前記実施の形態１における図１のクロックスキュー値を求めるクロック分配装置において、入力側クリティカルパス選択手段１０３が図９の構成で処理され、出力側クリティカルパス選択手段１０４が図１０の構成で処理され、スキュー値計算手段１０５が図１１の手順で処理されるものである。
【００７９】
本実施の形態２によるクロック分配装置の構成及び処理は、前記実施の形態１の図１と同じであるので、説明を省略する。
【００８０】
図９に示すように、本実施の形態２における図１の入力側クリティカルパス選択手段１０３は、例えば、入力側パス選択手段２０１と、セットアップ違反値計算手段２０２と、比率計算手段４０１と、パス情報記憶手段４０２と、パス選択手段４０３などから構成される。
【００８１】
入力側パス選択手段２０１は、指定された順序セルの入力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、セットアップ違反値計算手段２０２に順番に供給するものである。セットアップ違反値計算手段２０２は、入力側パス選択手段２０１から供給されたパスに対して、そのセットアップ制約に対する違反値を計算するものである。比率計算手段４０１は、セットアップ違反値計算手段２０２によって計算されたセットアップ違反値をそのパスのクロックサイクル長で割って、違反値の比率を計算するものである。パス情報記憶手段４０２は、比率計算手段４０１によって計算された違反値の比率を、そのパスの情報と共に全て記憶するものである。パス選択手段４０３は、パス情報記憶手段４０２に記憶されている情報の中から、違反値の比率が最大であるパスを１つ選ぶものである。
【００８２】
図１０に示すように、本実施の形態２における図１の出力側クリティカルパス選択手段１０４は、例えば、出力側パス選択手段３０１と、セットアップ違反値計算手段３０２と、比率計算手段５０１と、パス情報記憶手段５０２と、パス選択手段５０３などから構成される。
【００８３】
出力側パス選択手段３０１は、指定された順序セルの出力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、セットアップ違反値計算手段３０２に順番に供給するものである。セットアップ違反値計算手段３０２は、出力側パス選択手段３０１から供給されたパスに対して、そのセットアップ制約に対する違反値を計算するものである。比率計算手段５０１は、セットアップ違反値計算手段３０２によって計算されたセットアップ違反値をそのパスのクロックサイクル長で割って、違反値の比率を計算するものである。パス情報記憶手段５０２は、比率計算手段５０１によって計算された違反値の比率を、そのパスの情報と共に全て記憶するものである。パス選択手段５０３は、パス情報記憶手段５０２に記憶されている情報の中から、違反値の比率が最大であるパスを１つ選ぶものである。
【００８４】
図１１に示すように、本実施の形態２における図１のスキュー値計算手段１０５の処理は、例えば、次の手順で実行される。
【００８５】
まず、ステップＳ１００１で、入力側クリティカルパス選択手段１０３によって指定された入力側パスのセットアップ違反値とクロックサイクル長を計算する（Ｖ１＝入力側クリティカルパスのセットアップ違反値、Ｃ１＝入力側クリティカルパスの１サイクル長の値）。
【００８６】
次に、ステップＳ１００２で、出力側クリティカルパス選択手段１０４によって指定された出力側パスのセットアップ違反値とクロックサイクル長を計算する（Ｖ２＝出力側クリティカルパスのセットアップ違反値、Ｃ２＝出力側クリティカルパスの１サイクル長の値）。
【００８７】
次に、ステップＳ１００３で、ステップＳ１００１によって計算されたセットアップ違反値にステップＳ１００２によって計算されたクロックサイクル長を掛け、それから、ステップＳ１００２によって計算されたセットアップ違反値にステップＳ１００１によって計算されたクロックサイクル長を掛け合わせたものを差し引き、さらにそれを、ステップＳ１００１によって計算されたクロックサイクル長とステップＳ１００２によって計算されたクロックサイクル長を足し合わせたもので割る事によって、スキュー値の差分を計算する（スキュー値の差分＝（Ｃ２×Ｖ１−Ｃ１×Ｖ２）／（Ｃ１＋Ｃ２））。
【００８８】
次に、ステップＳ１００４で、ステップＳ１００３によって計算された値を、順序セル選択手段１０２によって指定された順序セルのスキュー値に足し合わせる（新しいスキュー値＝現在のスキュー値＋スキュー値の差分）。
【００８９】
以下、記憶装置１０１に格納されているパス情報が、図１２の回路である場合を例にとって、本実施の形態２の効果を説明する。
【００９０】
図１２の回路は、入力ポートを１つ、出力ポートを１つ、順序セルを３つ含む回路である。組み合わせ回路７０２は、入力ポート７０１と順序セル７０３の間にあって、初期状態ではセットアップタイミング制約に対して０．１ｎｓの違反が存在している。組み合わせ回路７０４は順序セル７０３と順序セル７０５の間にあって、初期状態ではセットアップタイミング制約に対して０．３ｎｓの違反が存在している。組み合わせ回路７０６は順序セル７０５と順序セル７０７の間にあって、初期状態ではセットアップタイミング制約に対して０．７ｎｓの違反が存在している。組み合わせ回路７０８は順序セル７０７と出力ポート７０９の間にあって、初期状態ではセットアップタイミング制約に対して０ｎｓの違反が存在している。また、クロック入力ポート７１０から順序セル７０３に高い周波数（５ｎｓサイクル）のクロック（ＣＬＫ１）、クロック入力ポート７１１から順序セル７０５，７０７に低い周波数（１０ｎｓサイクル）のクロック（ＣＬＫ２）が入力している。
【００９１】
順序セル７０３に供給されているクロックはＣＬＫ１で１サイクルの長さは５ｎｓ、順序セル７０５と順序セル７０７に供給されているクロックはＣＬＫ２で１サイクルの長さは１０ｎｓである。ＣＬＫ１とＣＬＫ２とは同期していて、ＣＬＫ２のサイクル長は常にＣＬＫ１のサイクル長の２倍でなければいけない。また、入力ポート７０１と出力ポート７０９に割り当てられているクロックはＣＬＫ１とするが、入力ポート７０１から順序セル７０３には、マルチサイクルの指定があって、ＣＬＫ１に対して２サイクル分の緩い制約がかかっているものとする。
【００９２】
その結果、１サイクル長が、組み合わせ回路７０２の部分では１０ｎｓ、組み合わせ回路７０４の部分では５ｎｓ、組み合わせ回路７０６の部分では１０ｎｓ、組み合わせ回路７０８の部分では５ｎｓとなる。
【００９３】
また、各順序セルのクロックスキューの初期値は、全て０ｎｓであるとする。
【００９４】
この回路から、順序セル選択手段１０２によって順序セルを１つずつ取り出してスキュー値の変更を加えていくが、その順番は順序セル７０５、順序セル７０７、順序セル７０３の順番とする。処理の順番については特に制約がある訳ではないので、別の順番で処理しても良い。
【００９５】
本実施の形態２において、入力側クリティカルパス選択手段１０３は、まず順序セル７０５を受け取る。入力側パス選択手段２０１は組み合わせ回路７０４を取り出し、セットアップ違反値計算手段２０２はそのパスの違反値を計算する。計算式は図９に記載の式であり、下記の違反値を得る。
【００９６】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０．３ｎｓ−０ｎｓ＝０．３ｎｓ
比率計算手段４０１は、上記の違反値０．３ｎｓを、組み合わせ回路７０４の１サイクル長５ｎｓで割って、違反値の比率０．０６を得る。
【００９７】
この値は、計算対象となったパスが組み合わせ回路７０４であるという情報と共に、パス情報記憶手段４０２に記憶される。
【００９８】
入力側パス選択手段２０１は次に、順序セル７０５の入力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、パス選択手段４０３が稼動する。
【００９９】
パス選択手段４０３は、パス情報記憶手段４０２の中に記憶されているパスの中から、違反値の比率が最大であるものを選択する。本例では組み合わせ回路７０４が、クリティカルパスとして選択され、入力側クリティカルパス選択手段１０３は処理を終了する。
【０１００】
一方、出力側クリティカルパス選択手段１０４も、まず順序セル７０５を受け取る。出力側パス選択手段３０１は組み合わせ回路７０６を取り出し、セットアップ違反値計算手段３０２はそのパスの違反値を計算する。計算式は図１０に記載の式であり、下記の違反値を得る。
【０１０１】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０．７ｎｓ−０ｎｓ＝０．７ｎｓ
比率計算手段５０１は、上記の違反値０．７ｎｓを、組み合わせ回路７０６の１サイクル長１０ｎｓで割って、違反値の比率０．０７を得る。
【０１０２】
この値は、計算対象となったパスが組み合わせ回路７０６であるという情報と共に、パス情報記憶手段５０２に記憶される。
【０１０３】
出力側パスを選択手段３０１は次に、順序セル７０５の出力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、パス選択手段５０３が稼動する。
【０１０４】
パス選択手段５０３は、パス情報記憶手段５０２の中に記憶されているパスの中から、違反値の比率が最大であるものを選択する。本例では組み合わせ回路７０６が、クリティカルパスとして選択され、出力側クリティカルパス選択手段１０４は処理を終了する。
【０１０５】
次に、スキュー値計算手段１０５が稼動する。
【０１０６】
ステップＳ１００１で、入力側クリティカルパス選択手段１０３が選択した組み合わせ回路７０４を受け取り、その違反値を計算し、１サイクル長を取得する。計算式は図９に記載の式と同じであり、０．３ｎｓの違反値と５ｎｓの１サイクル長が得られる。
【０１０７】
ステップＳ１００２で、出力側クリティカルパス選択手段１０４が選択した組み合わせ回路７０６を受け取り、その違反値を計算し、１サイクル長を取得する。計算式は図１０に記載の式と同じであり、０．７ｎｓの違反値と１０ｎｓの１サイクル長が得られる。
【０１０８】
ステップＳ１００３で、ステップＳ１００１と、ステップＳ１００２とから得られた値を用いて、下記のスキュー値の差分を得る。
【０１０９】
スキュー値の差分＝（出力側クリティカルパスの１サイクル長×入力側クリティカルパスのセットアップ違反値−入力側クリティカルパスの１サイクル長×出力側クリティカルパスのセットアップ違反値）／（入力側クリティカルパスの１サイクル長＋出力側クリティカルパスの１サイクル長）＝（１０ｎｓ×０．３ｎｓ−５ｎｓ×０．７ｎｓ）／（５ｎｓ＋１０ｎｓ）＝−０．０３３ｎｓ
ステップＳ１００４は、順序セル選択手段１０２によって選択されている順序セルの現在のスキュー値０ｎｓに、ステップＳ１００３によって計算されたスキュー値の差分−０．０３３ｎｓを足し合わせ、新しいスキュー値−０．０３３ｎｓが得られる。これで、スキュー値計算手段１０５は処理を終了する。
【０１１０】
スキュー値更新手段１０６は、記憶装置１０１に格納されている、順序セル選択手段１０２によって選択されている順序セルの現在のスキュー値０ｎｓを、スキュー値計算手段１０５によって計算されたスキュー値−０．０３３ｎｓで置き換える。
【０１１１】
以上で、順序セル７０５に対する処理の１回分が終了する。図１４の繰り返し回数１の行が、以上の処理の結果を記した部分である。順序セル７０５のスキュー値が、初期状態の０ｎｓから−０．０３３ｎｓに変っている。その結果、その両側の組み合わせ回路７０４と組み合わせ回路７０６の違反値の比率が０．０６６７と、同じ値になっている。
【０１１２】
この次に、順序セル選択手段１０２は順序セル７０７を選択し、上記と同じ処理を行う。その結果は図１４の繰り返し回数２の行の様になる。さらに、その次に、順序セル選択手段１０２は順序セル７０３を選択し、上記と同じ処理を行い、その結果は図１４の繰り返し回数３の行の様になる。
【０１１３】
以上の様に、各順序セルに対して同様の処理を繰り返し行う。最終的には、図１４の繰り返し回数３６の行の結果となり、収束状態に達する。
【０１１４】
この時の最高動作周波数を計算する。ＣＬＫ１とＣＬＫ２は同期していて、ＣＬＫ２のサイクル長は常にＣＬＫ１のサイクル長の２倍でなければいけないので、１サイクル長の値が５ｎｓである組み合わせ回路部分は計算された周波数をそのままで、１サイクル長の値が１０ｎｓである組み合わせ回路部分は計算された周波数を２倍にした値の中で、最小のものが最高動作周波数となる。図１４の一番下の行に、各組み合わせ回路部分の最高動作周波数を計算していて、その中の最小値である１９２．９２ＭＨｚが、図１２の回路の最高動作周波数となる。
【０１１５】
図１２の回路を前提技術の手法で処理した場合は図１３の様になり、最高動作周波数は１８９．５７ＭＨｚとなる。これと比べると、本実施の形態２による手法では、より高い動作周波数が得られている事が分かる。
【０１１６】
また、本実施の形態２において、スキュー値計算手段１０５は図１５の手順で処理しても良い。これは、前記実施の形態１に本実施の形態２を組み合わせて適用した例である。
【０１１７】
この様に、前提技術の手法に対して本実施の形態２による手法では、最終的に得られる回路の動作周波数を、より高める事が可能である。これは、セットアップ違反値を１サイクル長で割る事によって、１サイクル長が異なるパス同士において、違反値の重みを均等に見ることが可能になるためである。
【０１１８】
すなわち、順序セル前後のタイミング違反値をそれぞれのクロックサイクル長で割る事によって、タイミング違反値はクロックサイクル長に対する割合となり、両方のクロックサイクル長が異なる場合は、この値が等しくなる様に順序セルのスキュー値を調整する事によって、動作周波数をさらに高める事ができる。
【０１１９】
（実施の形態３）
図１６は本発明の実施の形態３によるクロック分配装置の構成及び処理を示すブロック図、図１７は図１６に示すセットアップ違反最大値計算手段１６０２の構成及び処理を示すブロック図、図１８は図１６に示す入力側クリティカルパス選択手段１６０３の構成及び処理を示すブロック図、図１９は図１６に示す出力側クリティカルパス選択手段１６０４の構成及び処理を示すブロック図、図２０は図１６に示すスキュー値許容範囲下限計算手段１６０５の構成及び処理を示すブロック図、図２１は図１６に示すスキュー値許容範囲上限計算手段１６０６の構成及び処理を示すブロック図、図２２は図１６に示すスキュー値計算手段１６０７の処理を示す図、図２３は本実施の形態３において処理対象となる回路の一例を示す図、図２４は図２３の回路に対して本実施の形態３による手法でスキュー値を調整した場合の処理過程を示す図、図２５は図１６に示すスキュー値計算手段１６０７の他の処理を示す図、図２６は図１６に示すセットアップ違反最大値計算手段１６０２の他の構成及び処理を示すブロック図、図２７は図１６に示すスキュー値許容範囲下限計算手段１６０５の他の構成及び処理を示すブロック図、図２８は図１６に示すスキュー値許容範囲上限計算手段１６０６の他の構成及び処理を示すブロック図である。
【０１２０】
まず、図１６により、本実施の形態３によるクロック分配装置の構成の一例を説明する。本実施の形態３のクロック分配装置は、クロックスキュー値を求める装置であり、例えば、記憶装置１０１と、順序セル選択手段１６０１と、セットアップ違反最大値計算手段１６０２と、入力側クリティカルパス選択手段１６０３と、出力側クリティカルパス選択手段１６０４と、スキュー値許容範囲下限計算手段１６０５と、スキュー値許容範囲上限計算手段１６０６と、スキュー値計算手段１６０７と、スキュー値更新手段１６０８などから構成される。
【０１２１】
記憶装置１０１は、処理対象とする同期式回路の情報を格納しているものである。
【０１２２】
順序セル選択手段１６０１は、記憶装置１０１から順序セルを１つずつ取り出し、入力側クリティカルパス選択手段１６０３、出力側クリティカルパス選択手段１６０４、スキュー値許容範囲下限計算手段１６０５、スキュー値許容範囲上限計算手段１６０６に順番に供給するものである。
【０１２３】
セットアップ違反最大値計算手段１６０２は、セットアップタイミング違反値の最大値を計算するものである。
【０１２４】
入力側クリティカルパス選択手段１６０３は、順序セル選択手段１６０１から供給された順序セルに対して、その入力側のパスの中から、最もホールドタイミング制約の厳しいパスを選び出すものである。
【０１２５】
出力側クリティカルパス選択手段１６０４は、順序セル選択手段１６０１から供給された順序セルに対して、その出力側のパスの中から、最もホールドタイミング制約の厳しいパスを選び出すものである。
【０１２６】
スキュー値許容範囲下限計算手段１６０５は、順序セル選択手段１６０１から供給された順序セルの入力側に繋がるパス全てに対してセットアップタイミング制約を調べ、セットアップ違反最大値計算手段１６０２によって与えられた値から増加させないスキュー値の下限を計算するものである。
【０１２７】
スキュー値許容範囲上限計算手段１６０６は、順序セル選択手段１６０１から供給された順序セルの出力側に繋がるパス全てに対してセットアップタイミング制約を調べ、セットアップ違反最大値計算手段１６０２によって与えられた値から増加させないスキュー値の上限を計算するものである。
【０１２８】
スキュー値計算手段１６０７は、入力側クリティカルパス選択手段１６０３と出力側クリティカルパス選択手段１６０４から供給された入力側のクリティカルパスと出力側のクリティカルパスと、スキュー値許容範囲下限計算手段１６０５とスキュー値許容範囲上限計算手段１６０６から供給されたスキュー値の許容範囲の上限と下限の情報とから、新しいスキュー値を計算するものである。
【０１２９】
スキュー値更新手段１６０８は、記憶装置１０１に格納されている、順序セル選択手段１６０１によって供給されている順序セルのスキュー値を、スキュー値計算手段１６０７によって計算された新しいスキュー値に置き換えるものである。
【０１３０】
図１７に示すように、図１６のセットアップ違反最大値計算手段１６０２は、例えば、
パス選択手段２９０１と、セットアップ違反値計算手段２９０２と、違反値記憶手段２９０３と、最大値選択手段２９０４などから構成される。
【０１３１】
パス選択手段２９０１は、全パスについて、記憶装置１０１から１つずつ取り出し、セットアップ違反値計算手段２９０２に順番に供給するものである。セットアップ違反値計算手段２９０２は、パス選択手段２９０１から供給されたパスに対して、そのセットアップ制約に対する違反値を計算するものである。違反値記憶手段２９０３は、セットアップ違反値計算手段２９０２によって計算されたセットアップ違反値を全て記憶するものである。最大値選択手段２９０４は、違反値記憶手段２９０３に記憶されているセットアップ違反値の中の最大の値を１つ選ぶものである。
【０１３２】
図１８に示すように、図１６の入力側クリティカルパス選択手段１６０３は、例えば、入力側パス選択手段２１０１と、ホールド違反値計算手段２１０２と、パス情報記憶手段２１０３と、パス選択手段２１０４などから構成される。
【０１３３】
入力側パス選択手段２１０１は、指定された順序セルの入力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、ホールド違反値計算手段２１０２に順番に供給するものである。ホールド違反値計算手段２１０２は、入力側パス選択手段２１０１から供給されたパスに対して、そのホールド制約に対する違反値を計算するものである。パス情報記憶手段２１０３は、ホールド違反値計算手段２１０２によって計算されたホールド違反値を、そのパスの情報と共に全て記憶するものである。パス選択手段２１０４は、パス情報記憶手段２１０３に記憶されている情報の中から、ホールド違反値が最大であるパスを１つ選ぶものである。
【０１３４】
図１９に示すように、図１６の出力側クリティカルパス選択手段１６０４は、例えば、出力側パス選択手段２２０１と、ホールド違反値計算手段２２０２と、パス情報記憶手段２２０３と、パス選択手段２２０４などから構成される。
【０１３５】
出力側パス選択手段２２０１は、指定された順序セルの出力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、ホールド違反値計算手段２２０２に順番に供給するものである。ホールド違反値計算手段２２０２は、出力側パス選択手段２２０１から供給されたパスに対して、そのホールド制約に対する違反値を計算するものである。パス情報記憶手段２２０３は、ホールド違反値計算手段２２０２によって計算されたホールド違反値を、そのパスの情報と共に全て記憶するものである。パス選択手段２２０４は、パス情報記憶手段２２０３に記憶されている情報の中から、ホールド違反値が最大であるパスを１つ選ぶものである。
【０１３６】
図２０に示すように、図１６のスキュー値許容範囲下限計算手段１６０５は、例えば、入力側パス選択手段１７０１と、終点順序セルクロックスキュー値計算手段１７０２と、スキュー値記憶手段１７０３と、スキュー最大値選択手段１７０４などから構成される。
【０１３７】
入力側パス選択手段１７０１は、指定された順序セルの入力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、終点順序セルクロックスキュー値計算手段１７０２に順番に供給するものである。終点順序セルクロックスキュー値計算手段１７０２は、入力側パス選択手段１７０１から供給されたパスに対して、そのセットアップ違反値（時間値）が指定された値となる様に終点側順序セルのクロックスキュー値を調整した場合のそのスキュー値を計算するものである。スキュー値記憶手段１７０３は、終点順序セルクロックスキュー値計算手段１７０２によって計算されたクロックスキュー値を全て記憶するものである。スキュー最大値選択手段１７０４は、スキュー値記憶手段１７０３に記憶されているクロックスキュー値の中の最大の値を１つ選ぶものである。
【０１３８】
図２１に示すように、図１６のスキュー値許容範囲上限計算手段１６０６は、例えば、出力側パス選択手段１８０１と、始点順序セルクロックスキュー値計算手段１８０２と、スキュー値記憶手段１８０３と、スキュー最小値選択手段１８０４などから構成される。
【０１３９】
出力側パス選択手段１８０１は、指定された順序セルの出力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、始点順序セルクロックスキュー値計算手段１８０２に順番に供給するものである。始点順序セルクロックスキュー値計算手段１８０２は、出力側パス選択手段１８０１から供給されたパスに対して、そのセットアップ違反値（時間値）が指定された値となる様に始点側順序セルのクロックスキュー値を調整した場合のそのスキュー値を計算するものである。スキュー値記憶手段１８０３は、始点順序セルクロックスキュー値計算手段１８０２によって計算されたクロックスキュー値を全て記憶するものである。スキュー最小値選択手段１８０４は、スキュー値記憶手段１８０３に記憶されているクロックスキュー値の中の最小の値を１つ選ぶものである。
【０１４０】
図２２に示すように、本実施の形態３における図１６のスキュー値計算手段１６０７の処理は、例えば、次の手順で実行される。
【０１４１】
まず、ステップＳ１２０１で、入力側クリティカルパス選択手段１６０３によって指定された入力側パスのホールド違反値を計算する（Ｖ１＝入力側クリティカルパスのホールド違反値）。
【０１４２】
次に、ステップＳ１２０２で、出力側クリティカルパス選択手段１６０４によって指定された出力側パスのホールド違反値を計算する（Ｖ２＝出力側クリティカルパスのホールド違反値）。
【０１４３】
次に、ステップＳ１２０３で、ステップＳ１２０２によって計算された値から、ステップＳ１２０１によって計算された値を引き、さらにそれを２で割る事によって、スキュー値の差分を計算する（スキュー値の差分＝（Ｖ２−Ｖ１）／２）。
【０１４４】
次に、ステップＳ１２０４で、ステップＳ１２０３によって計算された値を、順序セル選択手段１６０１によって指定された順序セルのスキュー値に足し合わせる（新しいスキュー値＝現在のスキュー値＋スキュー値の差分）。
【０１４５】
次に、ステップＳ１２０５で、ステップＳ１２０４によって計算された値が、スキュー値許容範囲下限計算手段１６０５とスキュー値許容範囲上限計算手段１６０６によって計算されたスキュー値の許容範囲に入っているか調べ、許容範囲よりも小さかった場合はスキュー値許容範囲下限計算手段１６０５によって計算された値に、大きかった場合はスキュー値許容範囲上限計算手段１６０６によって計算された値に、スキュー値を置き換える。
【０１４６】
以下、記憶装置１０１に格納されているパス情報が、図２３の回路である場合を例にとって、本実施の形態３の効果を説明する。
【０１４７】
図２３の回路は、入力ポートを１つ、出力ポートを１つ、順序セルを３つ含む回路である。組み合わせ回路２７０２は、入力ポート２７０１と順序セル２７０３の間にあって、初期状態ではセットアップタイミング制約に対して０ｎｓの違反、ホールドタイミング制約に対して０．２ｎｓの違反が存在している。組み合わせ回路２７０４は順序セル２７０３と順序セル２７０５の間にあって、初期状態ではセットアップタイミング制約に対して０．４ｎｓの違反、ホールドタイミング制約に対して０ｎｓの違反が存在している。組み合わせ回路２７０６は順序セル２７０５と順序セル２７０７の間にあって、初期状態ではセットアップタイミング制約に対して０．４ｎｓの違反、ホールドタイミング制約に対して０．１ｎｓの違反が存在している。組み合わせ回路２７０８は順序セル２７０７と出力ポート２７０９の間にあって、初期状態ではセットアップタイミング制約に対して０．４ｎｓの違反、ホールドタイミング制約に対して−０．１ｎｓの違反が存在している。また、クロック入力ポート２７１０から各順序セルにクロック（ＣＬＫ）が入力している。
【０１４８】
また、各順序セルのクロックスキューの初期値は、全て０ｎｓであるとする。
【０１４９】
この回路から、順序セル選択手段１６０１によって順序セルを１つずつ取り出してスキュー値の変更を加えていくが、その順番は順序セル２７０５、順序セル２７０７、順序セル２７０３の順番とする。処理の順番については特に制約がある訳ではないので、別の順番で処理しても良い。
【０１５０】
まず、図１６のセットアップ違反最大値計算手段１６０２は、この回路の初期状態におけるセットアップタイミング違反値の最大値を計算する。
【０１５１】
図１７のパス選択手段２９０１は、記憶装置１０１に格納されている回路情報の中から、最初は組み合わせ回路２７０２をセットアップ違反値計算手段２９０２に供給する。
【０１５２】
セットアップ違反値計算手段２９０２は、そのパスの違反値を計算する。計算式は図１７に記載の式であり、下記の違反値を得る。
【０１５３】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０ｎｓ−０ｎｓ＝０ｎｓ
この値は、図１７の違反値記憶手段２９０３に記憶される。
【０１５４】
パス選択手段２９０１は、次に、組み合わせ回路２７０４をセットアップ違反値計算手段２９０２に供給する。
【０１５５】
セットアップ違反値計算手段２９０２は、同様にそのパスの違反値を計算し、下記の違反値を得る。
【０１５６】
セットアップ違反値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−終点順序セルクロックスキュー値＝０ｎｓ＋０．４ｎｓ−０ｎｓ＝０．４ｎｓ
この値は違反値記憶手段２９０３に記憶される。
【０１５７】
同様に、パス選択手段２９０１は、組み合わせ回路２７０６、組み合わせ回路２７０８をセットアップ違反値計算手段２９０２に順番に供給し、それぞれ、０．４ｎｓ、０．４ｎｓの違反値を得て、これらは違反値記憶手段２９０３に記憶される。
【０１５８】
これで全てのパスに対する処理が終わったので、最大値選択手段２９０４が稼動する。最大値選択手段２９０４は、違反値記憶手段２９０３に記憶されている違反値の中から、最大のものとして０．４ｎｓを選択し、図１６のセットアップ違反最大値計算手段１６０２の処理が完了する。
【０１５９】
なお、セットアップ違反最大値計算手段１６０２は、上記の手順の他に、最大値選択手段２９０４が選択した値にさらに係数を掛けても良いし、また、値そのものを外部から入力するものでも良い。
【０１６０】
続いて、図１６の順序セル選択手段１６０１は、まず順序セル２７０５を選択し、入力側クリティカルパス選択手段１６０３に供給する。
【０１６１】
図１８の入力側パス選択手段２１０１は組み合わせ回路２７０４を取り出し、ホールド違反値計算手段２１０２はそのパスの違反値を計算する。計算式は図１８に記載の式であり、下記の違反値を得る。
【０１６２】
ホールド違反値＝−始点順序セルクロックスキュー値＋ホールド制約違反値の初期値＋終点順序セルクロックスキュー値＝−０ｎｓ＋０ｎｓ＋０ｎｓ＝０ｎｓ
この値は、計算対象となったパスが組み合わせ回路２７０４であるという情報と共に、パス情報記憶手段２１０３に記憶される。
【０１６３】
入力側パス選択する手段２１０１は次に、順序セル２７０５の入力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、パス選択手段２１０４が稼動する。
【０１６４】
パス選択する手段２１０４は、パス情報記憶手段２１０３の中に記憶されているパスの中から、ホールド違反値が最大であるものを選択する。本例では組み合わせ回路２７０４が、クリティカルパスとして選択され、入力側クリティカルパス選択手段１６０３は処理を終了する。
【０１６５】
一方、図１６の出力側クリティカルパス選択手段１６０４も、まず順序セル２７０５を受け取る。図１９の出力側パス選択手段２２０１は組み合わせ回路２７０６を取り出し、ホールド違反値計算手段２２０２はそのパスの違反値を計算する。計算式は図１９に記載の式であり、下記の違反値を得る。
【０１６６】
ホールド違反値＝−始点順序セルクロックスキュー値＋ホールド制約違反値の初期値＋終点順序セルクロックスキュー値＝−０ｎｓ＋０．１ｎｓ＋０ｎｓ＝０．１ｎｓ
この値は、計算対象となったパスが組み合わせ回路２７０６であるという情報と共に、パス情報記憶手段２２０３に記憶される。
【０１６７】
出力側パス選択手段２２０１は次に、順序セル２７０５の出力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、パス選択手段２２０４が稼動する。
【０１６８】
パス選択手段２２０４は、パス情報記憶手段２２０３の中に記憶されているパスの中から、ホールド違反値が最大であるものを選択する。本例では組み合わせ回路２７０６が、クリティカルパスとして選択され、出力側クリティカルパス選択手段１６０４は処理を終了する。
【０１６９】
図１６のスキュー値許容範囲下限計算手段１６０５も、まず順序セル２７０５を受け取る。
【０１７０】
図２０の入力側パス選択手段１７０１は組み合わせ回路２７０４を取り出し、終点順序セルクロックスキュー値計算手段１７０２は、セットアップ違反最大値計算手段１６０２から与えられたセットアップ違反値となる、終点順序セルのクロックスキュー値を計算する。その計算式は図２０に記載の式であり、下記のスキュー値を得る。
【０１７１】
終点順序セルクロックスキュー値＝始点順序セルクロックスキュー値＋セットアップ制約違反値の初期値−指定された違反値＝０ｎｓ＋０．４ｎｓ−０．４ｎｓ＝０ｎｓ
この値は、スキュー値記憶手段１７０３に記憶される。
【０１７２】
入力側パス選択手段１７０１は次に、順序セル２７０５の入力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、スキュー最大値選択手段１７０４が稼動する。
【０１７３】
スキュー最大値選択手段１７０４は、スキュー値記憶手段１７０３に記憶されているスキュー値の中から、最大のものを１つ選択する。本例では０ｎｓがスキュー値の許容範囲の下限として選択され、スキュー値許容範囲下限計算手段１６０５は処理を終了する。
【０１７４】
図１６のスキュー値許容範囲上限計算手段１６０６も、まず順序セル２７０５を受け取る。
【０１７５】
図２１の出力側パス選択手段１８０１は組み合わせ回路２７０６を取り出し、始点順序セルクロックスキュー値計算手段１８０２は、セットアップ違反最大値計算手段１６０２から与えられたセットアップ違反値となる、始点点順序セルのクロックスキュー値を計算する。その計算式は図２１に記載の式であり、下記のスキュー値を得る。
【０１７６】
始点順序セルクロックスキュー値＝−セットアップ制約違反値の初期値＋終点順序セルクロックスキュー値＋指定された違反値＝−０．４ｎｓ＋０．０ｎｓ＋０．４ｎｓ＝０ｎｓ
この値は、スキュー値記憶手段１８０３に記憶される。
【０１７７】
出力側パス選択する手段１８０１は次に、順序セル２７０５の出力に繋がる別のパスを選択しようとするが、本例ではその様なパスは存在しないので、この手段は処理を終了し、スキュー最小値選択手段１８０４が稼動する。
【０１７８】
スキュー最小値選択手段１８０４は、スキュー値記憶手段１８０３に記憶されているスキュー値の中から、最小のものを１つ選択する。本例では０ｎｓがスキュー値の許容範囲の上限として選択され、スキュー値許容範囲上限計算手段１６０６は処理を終了する。
【０１７９】
次に、図１６のスキュー値計算手段１６０７が稼動する。
【０１８０】
図２２のステップＳ１２０１で、入力側クリティカルパス選択手段１６０３が選択した組み合わせ回路２７０４を受け取り、その違反値を計算する。計算式は図１８に記載の式と同じであり、０ｎｓの違反値が得られる。
【０１８１】
ステップＳ１２０２で、出力側クリティカルパス選択手段１６０４が選択した組み合わせ回路２７０６を受け取り、その違反値を計算する。計算式は図１９に記載の式と同じであり、０．１ｎｓの違反値が得られる。
【０１８２】
ステップＳ１２０３で、ステップＳ１２０２によって得られた出力側クリティカルパスのホールド違反値０．１ｎｓから、ステップＳ１２０１によって得られた入力側クリティカルパスのホールド違反値０ｎｓを引き、それを２で割って、スキュー値の差分０．０５ｎｓが得られる。
【０１８３】
ステップＳ１２０４では、順序セル選択手段１６０１によって選択されている順序セル２７０５の現在のスキュー値０ｎｓに、ステップＳ１２０３によって計算されたスキュー値の差分０．０５ｎｓを足し合わせ、新しいスキュー値０．０５ｎｓが得られる。
【０１８４】
ステップＳ１２０５では、ステップＳ１２０４で計算した新しいスキュー値０．０５ｎｓを、スキュー値許容範囲下限計算手段１６０５が計算したスキュー値０ｎｓとスキュー値許容範囲上限計算手段１６０６が計算したスキュー値０ｎｓとの間に入っているかを調べる。入っていれば何もしないが、今回の場合は範囲に入っていないので、範囲内である０ｎｓまで、新しいスキュー値を変更する。以上で、図１６のスキュー値計算手段１６０７は処理を終了する。
【０１８５】
図１６のスキュー値更新手段１６０８は、記憶装置１０１に格納されている、順序セル選択手段１６０１によって選択されている順序セル２７０５の現在のスキュー値０ｎｓを、スキュー値計算手段１６０７によって計算されたスキュー値０ｎｓで置き換える。
【０１８６】
以上で、順序セル２７０５に対する処理の１回分が終了する。図２４の繰り返し回数１の行が、以上の処理の結果を記した部分である。順序セル２７０５のスキュー値を０．０５ｎｓに変更しようとしたが、スキュー値の許容範囲が０ｎｓ〜０ｎｓであったために、結局変更できなかった事を示している。
【０１８７】
この次に、図１６の順序セル選択手段１６０１は順序セル２７０７を選択し、上記と同じ処理を行う。その結果は図２４の繰り返し回数２の行の様になる。さらにその次に、順序セル選択手段１６０１は順序セル２７０３を選択し、上記と同じ処理を行い、その結果は図２４の繰り返し回数３の行の様になる。
【０１８８】
繰り返し回数２の行では、スキュー値を−０．１ｎｓに変更しようとしたが、スキュー値の許容範囲が０ｎｓ〜０ｎｓであったために、結局変更できなかった事を示している。繰り返し回数３の行では、スキュー値を−０．１ｎｓに変更しようとして、スキュー値の許容範囲も−０．４ｎｓ〜０ｎｓと許容範囲内であったために、スキュー値を−０．１ｎｓに変更が出来た事を示している。
【０１８９】
以上の様に、各順序セルに対して同様の処理を繰り返し行う。最終的には、図２４の繰り返し回数６の行の結果となり、収束状態に達する。初期状態の時と比べると、初期状態では、セットアップタイミング制約違反値の最大値は０．４ｎｓ、ホールドタイミング制約違反値の最大値は０．２ｎｓであったものが、繰り返し回数６の行の状態では、セットアップタイミング制約違反値の最大値は０．４ｎｓのままで悪化する事無く、ホールドタイミング制約違反値の最大値を０．１ｎｓに改善できている事が分かる。
【０１９０】
また、本実施の形態３において、図１６のスキュー値計算手段１６０７を図２５の手順で処理しても良い。これは、前記実施の形態１と本実施の形態３とを組み合わせて適用した例である。
【０１９１】
例えば、図２５のステップＳ１３０１において、入力側クリティカルパス選択手段１６０３によって指定された入力側パスのホールド違反値を計算する（Ｖ１＝入力側クリティカルパスのホールド違反値）。
【０１９２】
次に、ステップＳ１３０２において、出力側クリティカルパス選択手段１６０４によって指定された出力側パスのホールド違反値を計算する（Ｖ２＝出力側クリティカルパスのホールド違反値）。
【０１９３】
次に、ステップＳ１３０３において、ステップＳ１３０２によって計算された値から、ステップＳ１３０１によって計算された値を引き、それを２で割り、さらに指定された係数をかける事によって、スキュー値の差分を計算する（スキュー値の差分＝（Ｖ２−Ｖ１）／２×係数）。
【０１９４】
次に、ステップＳ１３０４において、ステップＳ１３０３によって計算された値を、順序セル選択手段１６０１によって指定された順序セルのスキュー値に足し合わせる（新しいスキュー値＝現在のスキュー値＋スキュー値の差分）。
【０１９５】
次に、ステップＳ１３０５において、ステップＳ１３０４によって計算された値が、スキュー値許容範囲下限計算手段１６０５とスキュー値許容範囲上限計算手段１６０６によって計算されたスキュー値の許容範囲に入っているか調べ、許容範囲よりも小さかった場合はスキュー値許容範囲下限手段１６０５によって計算された値に、大きかった場合はスキュー値許容範囲上限手段１６０６によって計算された値に、スキュー値を置き換える。
【０１９６】
また、本実施の形態３において、セットアップ違反最大値計算手段１６０２を図２６の手順で、スキュー値許容範囲下限計算手段１６０５を図２７の手順で、スキュー値許容範囲上限計算手段１６０６を図２８の手順で処理しても良い。これは、前記実施の形態２と本実施の形態３とを組み合わせて適用した例である。
【０１９７】
図２６において、比例計算手段３００１は、セットアップ違反値計算手段２９０２によって計算されたセットアップ違反値をそのパスの１サイクル長で割って、違反値の比率を計算する手段である。違反値記憶手段３００２は、比例計算手段３００１によって計算された違反値の比率を全て記憶する手段である。最大値選択手段３００３は、違反値記憶手段３００２に記憶されている違反値の比率の中の最大の値を１つ選ぶ手段である。
【０１９８】
図２７において、入力側パス選択手段１９０１は、指定された順序セルの入力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、指定されたセットアップ違反値となる終点順序セルクロックスキュー値計算手段１９０２に順番に供給する手段である。終点順序セルクロックスキュー値計算手段１９０２は、入力側パス選択手段１９０１から供給されたパスに対して、そのセットアップ違反値（サイクル長に対する比率）が指定された値となる様に終点側順序セルのクロックスキュー値を調整した場合のそのスキュー値を計算する手段である。スキュー値記憶手段１９０３は、終点順序セルクロックスキュー値計算手段１９０２によって計算されたクロックスキュー値を全て記憶する手段である。スキュー最大値選択手段１９０４は、スキュー値記憶手段１９０３に記憶されているクロックスキュー値の中の最大の値を１つ選ぶ手段である。
【０１９９】
図２８において、出力側パス選択手段２００１は、指定された順序セルの出力側に繋がるパスを、記憶装置１０１から１つずつ取り出し、始点順序セルクロックスキュー値計算手段２００２に順番に供給する手段である。始点順序セルクロックスキュー値計算手段２００２は、出力側パス選択手段２００１から供給されたパスに対して、そのセットアップ違反値（サイクル長に対する比率）が指定された値となる様に始点側順序セルのクロックスキュー値を調整した場合のそのスキュー値を計算する手段である。スキュー値記憶手段２００３は、始点順序セルクロックスキュー値計算手段２００２によって計算されたクロックスキュー値を全て記憶する手段である。スキュー最小値選択手段２００４は、スキュー値記憶手段２００３に記憶されているクロックスキュー値の中の最小の値を１つ選ぶ手段である。
【０２００】
また、本実施の形態３において、図１６のセットアップ違反最大値計算手段１６０２を図２６の手順で、スキュー値許容範囲下限計算手段１６０５を図２７の手順で、スキュー値許容範囲上限計算手段１６０６を図２８の手順で、スキュー値計算手段１６０７を図２５の手順で処理しても良い。これは、前記実施の形態１と前記実施の形態２と本実施の形態３とを組み合わせて適用した例である。
【０２０１】
また、本実施の形態３の入力となるパス情報は、前記実施の形態１で説明した前提技術の手法あるいは前記実施の形態１による手法により作成したもの、又は前記実施の形態２で作成したものを使用しても良い。この様な組み合わせで使用する事により、セットアップタイミング制約違反値を最小に抑えながら、ホールドタイミング違反値をなるべく小さく抑える事が可能となる。
【０２０２】
この様に、本実施の形態３による手法では、セットアップタイミング制約違反値を悪化させる事なく、ホールドタイミング制約違反値を改善させる事が可能である。これは、スキュー値変更の許容範囲を設定する事によって、セットアップタイミング制約違反値を悪化させる様なスキュー値の変更を防ぐ事が可能となるためである。
【０２０３】
すなわち、最初にセットアップ制約のみを見て順序セルのスキュー調整を行う事によって、セットアップ制約での違反値は最小に抑えられ、動作周波数を最高に高める事ができる。その後で、セットアップ制約での違反値を越えない範囲で、ホールド制約を見て順序セルのスキュー調整を行う事によって、動作周波数は最高の状態を保ったまま、ホールド制約での違反値をなるべく小さく抑える事ができる。
【０２０４】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【０２０５】
本発明は、ＬＳＩ上の同期式論理回路の設計において利用可能である。
【図面の簡単な説明】
【０２０６】
【図１】本発明の実施の形態１によるクロック分配装置の構成及び処理を示すブロック図である。
【図２】図１に示す入力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図３】図１に示す出力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図４】本発明の前提技術におけるスキュー値計算手段の処理を示す図である。
【図５】図１に示すスキュー値計算手段の処理を示す図である。
【図６】本発明の実施の形態１において、処理対象となる回路の一例を示す図である。
【図７】図６の回路に対して、本発明の前提技術の手法でスキュー値を調整した場合の処理過程を示す図である。
【図８】図６の回路に対して、本発明の実施の形態１の手法でスキュー値を調整した場合の処理過程を示す図である。
【図９】本発明の実施の形態２において、図１に示す入力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図１０】本発明の実施の形態２において、図１に示す出力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図１１】本発明の実施の形態２において、図１に示すスキュー値計算手段の処理を示す図である。
【図１２】本発明の実施の形態２において、処理対象となる回路の一例を示す図である。
【図１３】図１２の回路に対して、前提技術の手法でスキュー値を調整した場合の処理過程を示す図である。
【図１４】図１２の回路に対して、本発明の実施の形態２の手法でスキュー値を調整した場合の処理過程を示す図である。
【図１５】本発明の実施の形態２において、図１に示すスキュー値計算手段の他の処理を示す図である。
【図１６】本発明の実施の形態３によるクロック分配装置の構成及び処理を示すブロック図である。
【図１７】図１６に示すセットアップ違反最大値計算手段の構成及び処理を示すブロック図である。
【図１８】図１６に示す入力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図１９】図１６に示す出力側クリティカルパス選択手段の構成及び処理を示すブロック図である。
【図２０】図１６に示すスキュー値許容範囲下限計算手段の構成及び処理を示すブロック図である。
【図２１】図１６に示すスキュー値許容範囲上限計算手段の構成及び処理を示すブロック図である。
【図２２】図１６に示すスキュー値計算手段の処理を示す図である。
【図２３】本発明の実施の形態３において処理対象となる回路の一例を示す図である。
【図２４】図２３の回路に対して、本実施の形態３による手法でスキュー値を調整した場合の処理過程を示す図である。
【図２５】図１６に示すスキュー値計算手段の他の処理を示す図である。
【図２６】図１６に示すセットアップ違反最大値計算手段の他の構成及び処理を示すブロック図である。
【図２７】図１６に示すスキュー値許容範囲下限計算手段の他の構成及び処理を示すブロック図である。
【図２８】図１６に示すスキュー値許容範囲上限計算手段の他の構成及び処理を示すブロック図である。
【符号の説明】
【０２０７】
１０１  記憶装置
１０２，１６０１  順序セル選択手段
１０３，１６０３  入力側クリティカルパス選択手段
１０４，１６０４  出力側クリティカルパス選択手段
１０５，１６０７  スキュー値計算手段
１０６，１６０８  スキュー値更新手段
２０１，１９０１，１７０１，２１０１  入力側パス選択手段
２０２，３０２，２９０２  セットアップ違反値計算手段
２０４，３０４，４０２，５０２，２１０３，２２０３  パス情報記憶手段
２０５，３０５，４０３，５０３，２９０１，２１０４，２２０４  パス選択手段
３０１，１８０１，２００１，２２０１  出力側パス選択手段
４０１，５０１、３００１  比率計算手段
６０１，７０１，２７０１  入力ポート
６０２，６０４，６０６，６０８，７０２，７０４，７０６，７０８，２７０２，２７０４，２７０６，２７０８  組み合わせ回路
６０３，６０５，６０７，７０３，７０５，７０７，２７０３，２７０５，２７０７  順序セル
６０９，７０９，２７０９  出力ポート
６１０，７１０，７１１，２７１０  クロック入力ポート
１６０２  セットアップ違反最大値計算手段
１６０５  スキュー値許容範囲下限計算手段
１６０６  スキュー値許容範囲上限計算手段
１７０２，１９０２  終点順序セルクロックスキュー値計算手段
１７０３，１８０３，１９０３，２００３  スキュー値記憶手段
１７０４  スキュー最大値選択手段
１８０２，２００２  始点順序セルクロックスキュー値計算手段
１８０４，２００４  スキュー最小値選択手段
１９０４  スキュー最大値選択手段
２１０２，２２０２  ホールド違反値計算手段
２９０３，３００２  違反値記憶手段
２９０４，３００３  最大値選択手段
【図１】
2007293554.tif 000003
【図２】
2007293554.tif 000004
【図３】
2007293554.tif 000005
【図４】
2007293554.tif 000006
【図５】
2007293554.tif 000007
【図６】
2007293554.tif 000008
【図７】
2007293554.tif 000009
【図８】
2007293554.tif 000010
【図９】
2007293554.tif 000011
【図１０】
2007293554.tif 000012
【図１１】
2007293554.tif 000013
【図１２】
2007293554.tif 000014
【図１３】
2007293554.tif 000015
【図１４】
2007293554.tif 000016
【図１５】
2007293554.tif 000017
【図１６】
2007293554.tif 000018
【図１７】
2007293554.tif 000019
【図１８】
2007293554.tif 000020
【図１９】
2007293554.tif 000021
【図２０】
2007293554.tif 000022
【図２１】
2007293554.tif 000023
【図２２】
2007293554.tif 000024
【図２３】
2007293554.tif 000025
【図２４】
2007293554.tif 000026
【図２５】
2007293554.tif 000027
【図２６】
2007293554.tif 000028
【図２７】
2007293554.tif 000029
【図２８】
2007293554.tif 000030