(57)【特許請求の範囲】
【請求項１】
半導体装置における各部にクロック信号を分配するためのクロックツリーを構築するとともに、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整可能なレイアウト装置であって、
ＭＯＳトランジスタ１段で形成された第１セルと、ＭＯＳトランジスタ複数段で形成された第２セルとがライブラリ化されたテーブルと、
上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンを上記クロックツリーに挿入することで、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整可能な演算処理部と、を含み、
上記演算処理部は、上記第１セルの段数を「１」とし、上記第２セルの段数を「ｎ」とし、上記第１セルの１段の遅延誤差を「Ｘ」とし、上記第２セルｎ段の遅延誤差を「Ｙｎ」とし、上記コンビネーションチェーン１個当たりの遅延誤差を「Ｚ」とするとき、（Ｘ＋Ｙｎ）／（ｎ＋１）≦Ｚが成立するように上記コンビネーションチェーン１個当たりの構成を決定し、上記クロックツリー間のクロックスキューの調整に必要とされる数だけ、上記コンビネーションチェーンを互いに直列接続することで上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整することを特徴とするレイアウト装置。
【請求項２】
上記演算処理部は、上記ライブラリ化された上記第１セルの配線容量の下限値に基づいて、レイアウト対象とされる上記第１セルの入力側ネットの配線長を決定する請求項１記載のレイアウト装置。
【請求項３】
上記演算処理部は、レイアウト対象とされる上記第１セルの最短距離配線長から算出される容量が、上記ライブラリ化された上記第１セルの配線容量の下限値よりも大きくなるように、上記第１セルのレイアウト位置を決定する請求項２記載のレイアウト装置。
【請求項４】
上記第１セルはインバータとされ、上記第２セルはバッファとされる請求項３記載のレイアウト装置。
【請求項５】
ＭＯＳトランジスタ１段で形成された第１セルと、ＭＯＳトランジスタ複数段で形成された第２セルとがライブラリ化されたテーブルとを用いて、演算処理を行う演算処理部が、半導体装置における各部にクロック信号を分配するためのクロックツリーを構築するとともに、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整可能なレイアウト方法であって、
上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンを上記クロックツリーに挿入することで、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整する処理を上記演算処理部が実行し、
上記演算処理部は、上記第１セルの段数を「１」とし、上記第２セルの段数を「ｎ」とし、上記第１セルの１段の遅延誤差を「Ｘ」とし、上記第２セルｎ段の遅延誤差を「Ｙｎ」とし、上記コンビネーションチェーン１個当たりの遅延誤差を「Ｚ」とするとき、（Ｘ＋Ｙｎ）／（ｎ＋１）≦Ｚが成立するように上記コンビネーションチェーン１個当たりの構成を決定し、上記クロックツリー間のクロックスキューの調整に必要とされる数だけ、上記コンビネーションチェーンを互いに直列接続することで上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整することを特徴とするレイアウト方法。
【請求項６】
上記演算処理部は、レイアウト対象とされる上記第１セルの最短距離配線長から算出される容量が、上記ライブラリ化された上記第１セルの配線容量の下限値よりも大きくなるように、上記第１セルのレイアウト位置を決定する請求項５記載のレイアウト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スタンダードセルのレイアウト技術、さらにはクロックツリーにおけるクロックスキューを調整するための技術に関する。
【背景技術】
【０００２】
論理ＬＳＩ（Large Scale Integration）を効率よく設計するために、予め、機能毎に、所定の機能を実現するためのパターンを示すスタンダードセル（単に「セル」という）が設計され、設計対象となる回路に含まれる機能に応じて、チップ上に複数のスタンダードセルがレイアウトされる。また、論理ＬＳＩには、クロック信号を分配するためのクロックツリーが構築される。クロックツリーは、クロック分配のための論理構造のひとつとされる。  
【０００３】
特許文献１には、データ接続経路の数に基づいて、半導体集積回路上のフリップフロップが配置された領域の分割を繰り返し、分割された領域のフリップフロップをツリー状に接続する技術が記載されている。
【０００４】
特許文献２には、クロックスキューが閾値以下に収束する回路規模となるように、クロックツリーが有するフリップフロップを複数のグループに分割し、グループの前段に遅延バッファを挿入する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１２３３３６号公報
【特許文献２】特開２００６−１０７２０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
論理ＬＳＩなどの半導体装置においては、クロック信号を分配するためのクロックツリーが構築される。クロックツリーは、クロック分配のための論理構造のひとつであり、半導体装置におけるクロック論理始点からフリップフロップ回路へのクロック到達時間のばらつき（クロックスキュー）をできるだけ小さくするために、複数の遅延素子が介在されることでツリー状に構築される。クロックツリーにおいて、互いに異なるクロック系統間でクロックスキューの調整（レイテンシ合わせ）が必要になる場合がある。このクロックスキューの調整においては、部品レベルで設計された回路の遅延計算が行われる。
【０００７】
部品レベルで設計された回路の遅延計算においては、部品毎に事前に遅延特性を測定しておいたもの(ライブラリ）を使用し、各セル毎の遅延変動要素（スルーレートや負荷容量等）によりセル毎に遅延計算した後、ネットリストに従い加算される。このような遅延計算について本願発明者が検討したところ、以下のような課題が見いだされた。  
【０００８】
セル単位で部品特性を抽出する方法は、回路シミュレーションによる非線形性の遅延変動特性に対して、線形や区分線形（テーブル）でライブラリに表現するため、一定の精度誤差が生じる。この誤差は各セル種や変動要素の度合いにより異なるが、ほとんどのケースで大きな誤差にならない。しかし、インバータや２入力ナンドゲート等のＭＯＳトランジスタ１段のセルは、入力側の遅延誤差が出力側に直接影響するため、遅延計算における遅延誤差が大きくなりやすい。特に複数のインバータが互いに直列接続されたインバータチェーンでは、個々のインバータでの遅延誤差が伝播されることによって誤差が大きくなる。
【０００９】
これに対して、バッファなどのＭＯＳトランジスタ２段のセルは、インバータや２入力ナンドゲート等のＭＯＳトランジスタ１段のセルに比べて遅延誤差は少ない。しかし、バッファなどのＭＯＳトランジスタ２段のセルは、クロック信号のハイレベル期間とローレベル期間のとの比（デューティ）保持の観点で、ＭＯＳトランジスタ１段のセルに比べて劣る。すなわち、インバータなどのＭＯＳトランジスタ１段のセルでは、入力論理に対して出力論理が反転するため、複数のインバータが互いに直列接続されて成るインバータチェーンでは、クロック信号のデューティが変化し難い。これに対して、バッファなどのＭＯＳトランジスタ２段のセルは、入力論理に対して出力論理が反転しないため、複数のバッファが互いに直列接続されて成るバッファチェーンでは、波形立ち上がり及び波形立ち下がりの遅延時間差によってクロック信号のデューティが変化しやすい。
【００１０】
本発明の目的は、クロックツリーにおけるクロックスキューの調整において、精度の確保とデューティ保持とを両立させるための技術を提供することにある。
【００１１】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１２】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１３】
すなわち、レイアウト装置は、半導体装置における各部にクロック信号を分配するためのクロックツリーを構築し、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整することができる。このようなレイアウト装置において、ＭＯＳトランジスタ１段で形成された第１セルと、ＭＯＳトランジスタ複数段で形成された第２セルとがライブラリ化されたテーブルが設けられる。また、上記レイアウト装置には、上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンを上記クロックツリーに挿入することで、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整可能な演算処理部が設けられる。
【発明の効果】
【００１４】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１５】
すなわち、クロックツリーにおけるクロックスキューの調整において、精度の確保とデューティ保持とを両立させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明にかかるレイアウト装置の構成例ブロック図である。
【図２】クロックツリー生成の説明図である。
【図３】クロックツリーにおける主要部の説明図である。
【図４】クロックツリーにおけるクロックスキュー調整の説明図である。
【図５】インバータチェーンによるクロックスキュー調整の説明図である。
【図６】バッファとインバータとのコンビネーションチェーンによるクロックスキュー調整の説明図である。
【図７】インバータと配線遅延とのコンビネーションチェーンによるクロックスキュー調整の説明図である。
【図８】バッファとインバータと配線遅延とのコンビネーションチェーンによるクロックスキュー調整の説明図である。
【図９】複数のクロック間遅延調整用インバータの一般的なレイアウト処理の説明図である。
【図１０】クロック間遅延調整用インバータセルの配置間隔決定の説明図である。
【図１１】遅延テーブルの構成例説明図である。
【図１２】クロックツリー構築処理のフローチャートである。
【図１３】クロックツリー構築処理の別のフローチャートである。
【図１４】クロックツリー構築における始点間レイテンシ合わせ処理のフローチャートである。
【図１５】クロックツリー構築における始点間レイテンシ合わせ処理の別のフローチャートである。
【図１６】クロックツリー構築における始点間レイテンシ合わせ処理の別のフローチャートである。
【図１７】インバータの回路構成と入出力波形の説明図である。
【図１８】バッファの回路構成と入出力波形の説明図である。
【発明を実施するための形態】
【００１７】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１８】
〔１〕本発明の代表的な実施の形態に係るレイアウト装置（１０）は、半導体装置における各部にクロック信号を分配するためのクロックツリーを構築し、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整することができる。このようなレイアウト装置において、ＭＯＳトランジスタ１段で形成された第１セルと、ＭＯＳトランジスタ複数段で形成された第２セルとがライブラリ化されたテーブル（１１１）が設けられる。また、レイアウト装置には、上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンを上記クロックツリーに挿入することで、上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整可能な演算処理部（１２）が設けられる。
【００１９】
上記の構成によれば、上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンによってクロックスキューの調整を行うようにしているので、個々の第１セルでの遅延誤差が伝播されるのを抑制することができ、遅延計算における遅延誤差を低減することができる。これにより、クロックツリーにおけるクロックスキューの調整における精度を向上させることがでできる。
【００２０】
また、上記第１セルと上記第２セルとの組み合わせによるコンビネーションチェーンが用いられることにより、コンビネーションチェーン中に第１セルが介在され、そこで論理が反転されるため、デューティ保持の観点で有利とされる。  
【００２１】
〔２〕上記〔１〕において、上記演算処理部は、上記第１セルの段数を「１」とし、上記第２セルの段数を「ｎ」とし、上記第１セルの１段の遅延誤差を「Ｘ」とし、上記第２セルｎ段の遅延誤差を「Ｙｎ」とし、上記コンビネーションチェーン１個当たりの遅延誤差を「Ｚ」とするとき、（Ｘ＋Ｙｎ）／（ｎ＋１）≦Ｚが成立するように上記コンビネーションチェーン１個当たりの構成を決定するように構成することができる。そして、上記クロックツリー間のクロックスキューの調整に必要とされる数だけ、上記コンビネーションチェーンを互いに直列接続することで上記クロックツリーにおける異なるクロック系統間のクロックスキューを調整するように構成することができる。精度面だけなら、第２セルの段数が多い方が良いが、レイテンシや使い易さを考慮すると、第２セルの段数は小さい方が良い。トレードオフを考えると、上記式が成立するように上記コンビネーションチェーン１個当たりの構成を決定するのが望ましい。
【００２２】
〔３〕上記〔２〕において、上記演算処理部は、上記ライブラリ化された上記第１セルの配線容量の下限値に基づいて、レイアウト対象とされる上記第１セルの入力側ネットの配線長を決定するように構成することができる。
【００２３】
〔４〕上記〔３〕において、上記演算処理部は、レイアウト対象とされる上記第１セルの最短距離配線長から算出される容量が、上記ライブラリ化された上記第１セルの配線容量の下限値よりも大きくなるように、上記第１セルのレイアウト位置を決定することができる。コンビネーションチェーンにおける第１セルの入力側ネットについて配線容量を指定することにより、対応する配線容量が形成されるため、遅延計算における遅延誤差の低減を図ることができる。このとき、チェーンを形成する全てセルに配線遅延を付加するものではないので、配線リソースを多く使用するリスクを回避することができる。
【００２４】
〔５〕上記〔４〕において、上記第１セルをインバータとし、上記第２セルをバッファとすることができる。
【００２５】
〔６〕本発明の代表的な実施の形態に係る別のレイアウト装置（１０）は、ＭＯＳトランジスタ１段で形成された調整用セルがライブラリ化されたテーブル（１１１）と、レイアウト対象とされる上記調整用セルの最短距離配線長から算出される容量が、上記ライブラリ化された上記調整用セルの配線容量の下限値よりも大きくなるように、上記調整用セルのレイアウト位置を決定する演算処理部（１２）とを含んで構成される。
【００２６】
上記の構成によれば、レイアウト対象とされる上記調整用セルの最短距離配線長から算出される容量が、上記ライブラリ化された上記調整用セルの配線容量の下限値よりも大きくなるように、上記調整用セルのレイアウト位置が決定されることによって、上記ライブラリ化された上記調整用セルの配線容量に対応する配線容量が形成されるため、遅延計算における遅延誤差の低減を図ることができる。
【００２７】
〔７〕上記〔６〕において、上記調整用セルをインバータとすることができる。
【００２８】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００２９】
《実施の形態１》
図１には、本発明にかかるレイアウト装置の構成例が示される。
【００３０】
図１に示されるレイアウト装置１０は、表示装置１１、演算処理装置１２、記憶装置１３、及び入力装置１４を含むコンピュータシステムを用いて構成される。記憶装置１３は、例えば磁気ディスクを記録媒体とするハードディスク装置である。この記憶装置１３には、各種プログラムや、半導体装置のレイアウトに用いられる各種情報が格納される。半導体装置のレイアウトに用いられる各種情報には、ネットリストやライブラリが含まれる。このライブラリには、インバータやバッファなどの各種セルの遅延テーブルなども含まれる。演算処理装置１２は、プログラムに従って各種演算処理を実行可能なマイクロコンピュータ、及びその周辺回路を含み、半導体装置のレイアウト処理を行う。このレイアウト処理には、半導体装置における各部にクロック信号を分配するためのクロックツリーの構築や、このクロックツリー間のクロックスキューの調整が含まれる。上記レイアウト装置１２においては、必要に応じて、記憶装置１３内のネットリストやライブラリが参照される。入力装置１４は、キーボードやマウスを含み、半導体装置のレイアウト処理に関する各種情報入力を行うのに用いられる。表示装置１１は、液晶ディスプレイなどとされ、半導体装置のレイアウト処理に関する各種情報表示を行うことができる。
【００３１】
論理ＬＳＩなどの半導体装置においては、クロック信号を分配するためのクロックツリーが構築される。クロックツリーは、クロック分配のための論理構造のひとつであり、例えば図２の（Ａ）のように、半導体装置２００におけるクロック論理始点２０３からフリップフロップ回路２０１へのクロック到達時間のばらつき（クロックスキュー）をできるだけ小さくするために、図２の（Ｂ）のように、複数の遅延素子２０２が介在されることでツリー状に構築される。
【００３２】
図１２には、クロックツリー構築処理の流れが示される。
【００３３】
図１２に示されるクロックツリー構築処理は、演算処理装置１２において、クロックツリー構築処理のための所定のプログラムが実行されることで実現される。
【００３４】
大規模な回路を効率よく形成するため上記ステップ１２０１のセル配置処理では、インバータ、ナンドゲート、ノアゲート、フリップフロップ回路などのセルを用いて、レイアウト対象とされる半導体装置のセル配置処理が行われる（１２０１）。そして、タイミングの最適化処理が行われ（１２０２）、その後、クロックツリー合成処理（ＣＴＳ；Clock Tree Synthesis）が実行される（１２０３）。このクロックツリー合成処理が終了すると、再びタイミングの最適化処理が行われ（１２０８）、その後に配線処理が行われる（１２０９）。
【００３５】
上記ステップ１２０３のクロック構成処理では、先ず、入力装置１４を介して、クロックツリーの始点及び終点が指示されると（１２０４）、各始点毎にクロックツリーが構築される（１２０５）。そして構築されたクロックツリー毎にレイテンシ合わせ処理が行われ（１２０６）、それが終了すると、始点間のレイテンシ合わせ処理が行われる（１２０７）。
【００３６】
尚、図１３に示されるように、上記ステップ１２０６のクロックツリー毎のレイテンシ合わせ処理と、上記ステップ１２０７の始点間レイテンシ合わせ処理との間で、レイテンシ合わせ処理が必要か否かの判別処理（１３０１）を行うようにしても良い。この判別処理で、レイテンシ合わせ処理が必要と判断された場合にのみ、上記ステップ１２０７の始点間レイテンシ合わせ処理を行うようにする。このようにすれば、レイテンシ合わせ処理が実際には不要である場合には、レイテンシ合わせ処理を省略することができるので、処理効率の向上を図ることができる。
【００３７】
次に、上記ステップ１２０７の始点間レイテンシ合わせ処理について詳述する。
【００３８】
クロックツリーにおいて、互いに異なるクロック系統間でクロックスキューの調整（レイテンシ合わせ）が必要になる場合がある。例えば図３に示されるように、クロックツリーにおいて、互いに異なるクロック系統３０２，３０４が設けられ、クロック系統３０２には、分周回路３０１で分周されたクロック信号が供給され、クロック系統３０４には、バッファ３０３を介してクロック信号が供給される場合を考える。クロック系統３０２におけるフリップフロップ回路の数が、クロック系統３０４におけるフリップフロップ回路の数よりも少ない場合、クロック系統３０２とクロック系統３０４との間でクロックレイテンシの差が大きくなる。このため、クロック系統３０２に属するフリップフロップ回路と、クロック系統３０４に属するフリップフロップ回路との間でデータ転送が行われる場合、クロックスキューの調整が必要になる。このクロックスキューの調整のため、図４に示されるように、分周器３０１とクロック系統３０２との間にバッファチェーン４０１を設けたり、図５に示されるように、分周器３０１とクロック系統３０２との間にインバータチェーン５０１を設けることが考えられる。バッファチェーン４０１は、複数のバッファが互いに直列接続されて成る。インバータチェーンは、複数のインバータが互いに直列接続されて成る。
【００３９】
インバータは、例えば図１７の（Ａ）に示されるように、ｐチャネル型ＭＯＳトランジスタ１７０１とｎチャネル型ＭＯＳトランジスタ１７０２とが直列接続されて成る。ｐチャネル型ＭＯＳトランジスタ１７０１のゲート電極と、ｎチャネル型ＭＯＳトランジスタ１７０２のゲート電極とが入力端子（ＩＮ）に共通接続される。ｐチャネル型ＭＯＳトランジスタ１７０１とｎチャネル型ＭＯＳトランジスタ１７０２との直列接続ノードから出力端子（ＯＵＴ）が引き出される。インバータの出力側には、配線容量１７０３が存在する。
【００４０】
バッファは、例えば図１８の（Ａ）に示されるように、ｐチャネル型ＭＯＳトランジスタ１８０１とｎチャネル型ＭＯＳトランジスタ１８０２とが直列接続されて成る第１インバータと、ｐチャネル型ＭＯＳトランジスタ１８０３とｎチャネル型ＭＯＳトランジスタ１８０４とが直列接続されて成る第２インバータとが直列接続されて成る。第２インバータ（１８０３，１８０４）の出力側には配線容量１８０５が存在する。第１インバータ（１８０１，１８０２）の出力側にも配線容量が存在するが、その値は、配線容量１８０５に比べて極めて小さい。これは、セルとしてのバッファにおいては、第１インバータ（１８０１，１８０２）と第２インバータ（１８０３，１８０４）との間の配線が極めて短いためである。
【００４１】
インバータの出力側には、配線容量１７０３が形成されるため、入力端子を介して入力されたクロック信号は、図７の（Ｂ）に示されるように、遅延されて出力される。つまり、配線容量１７０の存在により、出力波形が鈍ってしまう。これに対して、バッファの場合、第１インバータ（１８０１，１８０２）の出力側の配線容量が極小のため、第１インバータ（１８０１，１８０２）の入力波形が整形されてから第２インバータ（１８０３，１８０４）に入力されるため、第２インバータ（１８０３，１８０４）の出力波形は、図１７の（Ａ）に示されるインバータ（１７０１，１７０２）の出力波形に比べて鈍りが少ない。
【００４２】
既述のように、部品レベルで設計された回路の遅延計算は、部品毎に事前に遅延特性を測定しておいたもの(記憶装置１３内のライブラリ）を使用し、各セル毎の遅延変動要素（スルーレートや負荷容量等）によりセル段毎に遅延計算した後、ネットリストに従い加算される。セル単位で部品特性を抽出する方法は、非線形性の遅延変動特性に対して、大規模ＬＳＩを高速一括で遅延計算するため、線形や区分線形（テーブル）でライブラリに表現することから、一定の誤差を生じる。インバータのようなＭＯＳトランジスタ１段のセルは、バッファのようなＭＯＳトランジスタ２段のセルに比べて、遅延誤差が次段に影響するため、誤差が大きくなりやすい。特に複数のインバータが直列接続されたインバータチェーン７０１では、個々のインバータでの遅延誤差が順次に伝播されるため、誤差が大きくなる。  
【００４３】
そこで、上記ステップ１２０７の始点間レイテンシ合わせ処理においては、図６に示されるように、バッファとインバータとのコンビネーションチェーン６０１によってクロックスキューの調整を行うようにする。このコンビネーションチェーン６０１では、インバータの前後にバッファが設けられている。
【００４４】
図１４には、バッファとインバータとのコンビネーションチェーン６０１を用いた始点間レイテンシ合わせ処理の流れが示される。
【００４５】
図１４に示される始点間レイテンシ合わせ処理１２０７においては、入力装置１４を介して、ターゲットとなる遅延値、スキューの設定が行われると（１４０１）、所定のコンビネーションルールに従ってバッファ及びインバータが追加される（１４０２）。そして、上記ステップ１４０２の処理で追加されたバッファ及びインバータが、実際のレイアウトパターン上に配置され（１４０３）、追加されたバッファ及びインバータの遅延値の計算が行われる（１４０４）。そして、上記ステップ１４０４で算出された遅延値と、上記ステップ１４０１で設定されたターゲット遅延値とが等しいか否かの判別が行われる（１４０５）。この判別で、上記ステップ１４０４で算出された遅延値と、上記ステップ１４０１で設定されたターゲット遅延値とが等しくない（ＮＯ）と判断された場合には、再び、上記ステップ１４０２の処理に戻ってバッファ及びインバータが追加された後に、上記ステップ１４０３，１４０４の処理を経て、再び上記ステップ１４０５の判別処理が行われる。上記ステップ１４０５の判別処理において、上記ステップ１４０４で算出された遅延値と、上記ステップ１４０１で設定されたターゲット遅延値とが等しい（ＹＥＳ）と判断された場合には、始点間レイテンシ合わせ処理１２０７が終了される。
【００４６】
ここで、上記ステップ１４０２におけるバッファ及びインバータの追加について詳述する。
【００４７】
プロセスにより多少異なるが、たとえば６５ｎｍ以降のプロセスの場合、インバータ１段の誤差が８％程度、バッファの１段の誤差が２％程度、バッファの遅延値がインバータの２倍程度とおくと、クロックツリーで要求される精度３％以内に収めるためには、バッファ３段、インバータ１段の直列接続構成になる。精度面だけなら、バッファ段数が多い方が良いが、レイテンシや使い易さ（段数が小さい方が使い易い）とのトレードオフを考えると、バッファが３段、インバータが１段の構成になる。このバッファとインバータとの組み合わせは、始点間レイテンシ合わせ処理のパラメータとして演算処理装置１２に入力される。このパラメータは予め設定しておいても良いし、入力装置１４を介して入力しても良い。
【００４８】
一般化すると、インバータの段数「１」とし、バッファの段数を「ｎ」とし、インバータ１段の誤差を「Ｘ」とし、バッファｎ段の誤差を「Ｙｎ」（ただし、Ｘ＞Ｙ）だとし、目的とする誤差（１段分）を「Ｚ」とすると、次式の関係が成立するように、コンビネーションチェーン１個当たりの構成が決定される。
【００４９】
【数１】
0005909073.tif 000002
【００５０】
このようにして、上記ステップ１４０２におけるバッファ及びインバータの追加が行われる。そして、上記ステップ１４０１で設定されたターゲット遅延値とが等しい（ＹＥＳ）と判断されるまで、上記コンビネーションチェーンが追加されることになる。つまり、目標となる遅延をＳｎｓとすると、上記の組み合わせ（インバータ1段、バッファn段）で得られる遅延がＰｎｓのとき、Ｐｎｓ・ｍ＝Ｓｎｓの関係が成立する場合の「ｍ」の値に等しくなる数だけ、上記コンビネーションチェーンが追加形成される。
【００５１】
尚、遅延が僅かに足りない場合において上記コンビネーションチェーンを更に追加すると、遅延量が多すぎてしまうことが考えられる。その場合には、バッファあるいはインバータを単体で追加すると良い。
【００５２】
また、各バッファ、各インバータの駆動能力は異なることが一般的なので、実際にはバッファやインバータの駆動能力的に差異が出てくる。駆動能力別の誤差がバッファ、インバータそれぞれ、Ｘ１，Ｘ２…，Ｘｎ、Ｙ１，Ｙ２…，Ｙｎとなるため（誤差、駆動能力共に１＜２，…，＜ｎの関係）、所望の遅延になるように段数を決定する。この場合、駆動能力の選定は、次の（１）〜（３）の考え方に基づき決定すると良い。  
【００５３】
（１）遅延誤差が最小になるような組み合わせとするため、最大の駆動能力のバッファを使用する。  
【００５４】
（２）電力が最小になるような組み合わせとするため、最小の駆動能力のバッファを使用する。  
【００５５】
（３）上記（１）と（２）とを組み合わせる。すなわち、一定誤差内での電力最小の組み合わせ、もしくは一定電力値内で誤差最小の組み合わせを使用する。
【００５６】
このように本例によれば、図６に示されるように、バッファとインバータとのコンビネーションチェーン６０１によってクロックスキューの調整を行うようにしており、インバータを挟むようにバッファが介在されているので、個々のインバータでの遅延誤差が伝播されるのを抑制することができ、インバータチェーンを用いる場合に比べて、遅延計算における遅延誤差を低減することができる。これにより、クロックツリーにおけるクロックスキューの調整における精度を向上させることがでできる。
【００５７】
また、複数のバッファが互いに直列接続されたバッファチェーンでは、立ち上がり及び立ち下がりの遅延時間の差によってクロック信号のデューティが変化しやすいが、本例では、バッファとインバータとのコンビネーションチェーン６０１が用いられることにより、チェーン中にインバータが介在され、そこで論理が反転されるため、論理反転を生じないバッファチェーンを用いる場合に比べて、デューティ保持の観点で優れている。  
【００５８】
《実施の形態２》
上記ステップ１２０７の始点間レイテンシ合わせ処理において、図７に示されるように、インバータと配線遅延とのコンビネーションチェーン７０１によってクロックスキューの調整を行うことができる。インバータと配線遅延とのコンビネーションチェーン７０１によってクロックスキューの調整を行う場合、パラメータとして、最小容量値（容量の下限値）が、パラメータとして演算処理装置１２に入力される。このパラメータは、予め設定しておいても良いし、入力装置１４を介して入力しても良い。
【００５９】
図１５には、インバータと配線遅延とのコンビネーションチェーン７０１を用いた始点間レイテンシ合わせ処理の流れが示される。
【００６０】
図１５に示される始点間レイテンシ合わせ処理１２０７においては、入力装置１４を介して、ターゲットとなる遅延値、スキューの設定が行われると（１５０１）、インバータが追加される（１５０２）。そして、上記ステップ１５０２の処理で追加されたインバータが、実際のレイアウトパターン上に配置され（１５０３）、追加されたインバータが指定した配線容量値以上になるようにインバータの配置位置が決定される（１５０４）。そして、上記ステップ１５０４での配置位置決定後のコンビネーションチェーン７０１の遅延値と、上記ステップ１５０１で設定されたターゲット遅延値とが等しいか否かの判別が行われる（１５０５）。この判別で、上記ステップ１５０４での配置位置決定後のコンビネーションチェーン７０１の遅延値と、上記ステップ１５０１で設定されたターゲット遅延値とが等しくない（ＮＯ）と判断された場合には、再び、上記ステップ１５０２の処理に戻ってインバータが追加された後に、上記ステップ１５０３，１５０４の処理を経て、再び上記ステップ１５０５の判別処理が行われる。上記ステップ１５０５の判別処理において、上記ステップ１５０４での配置位置決定後のコンビネーションチェーン７０１の遅延値と、上記ステップ１５０１で設定されたターゲット遅延値とが等しい（ＹＥＳ）と判断された場合には、始点間レイテンシ合わせ処理１２０７が終了される。
【００６１】
ここで、上記ステップ１５０４の配置位置決定について詳述する。
【００６２】
図１１には、記憶装置１３内のライブラリ中のセルの遅延テーブルの構成例が示される。図１１に示される遅延テーブル１１１においては、variable_1とindex_1とが関連付けられ、variable_2とindex_2とが関連付けられている。index_1，index_2共にテーブルサイズが６になっている。index_2の実際の値の定義数が多ければそれだけテーブルのサイズが大きくなり、テーブル参照に時間がかかる。図１１の遅延テーブル１１１では、index_2の実際の値は、容量値とされ、「０．００１，０．００１２３３９９，０．００１８９３２２，０．００３７５０４３，０．００８９８２６８，０．０１３７４７３」と定義されている。
【００６３】
例えば図９の（Ａ）に示されるようなインバータチェーンは、バッファ９０１の後段に複数のクロック間遅延調整用インバータが互いに直列接続されて成る。複数のクロック間遅延調整用インバータの一般的なレイアウト処理では、例えば図９の（Ｂ）に示されるように、バッファ９０１の出力側の直近に複数のクロック間遅延調整用インバータが配置される。このため、各クロック間遅延調整用インバータ間の配線も短くなり、各クロック間遅延調整用インバータの出力側の配線容量値は小さくなる。このようなレイアウトにより、各クロック間遅延調整用インバータの出力側の配線容量値が、図１１の遅延テーブル１１１で定義されている容量値（index_2の実際の値）の範囲外となると、遅延誤差が大きくなってしまう。
【００６４】
そこで上記ステップ１５０４の配置位置決定においては、図１１の遅延テーブル１１１で定義されている容量値（index_2の実際の値）の下限値をパラメータとして、クロック間遅延調整用インバータセル間の配置間隔が決定される。例えば図１１の遅延テーブル１１１で定義されている容量値（index_2の実際の値）の下限値は、「０．００１」であるため、演算処理装置１２では、この容量値（index_2の実際の値）の下限値「０．００１」をパラメータとしてセル間の配置間隔が決定される。つまり、図１０の（Ａ）に示されるように、クロック間遅延調整用インバータセル列における配線のうち、最も短い配線（最短距離配線）９０２の長さから算出される容量（配線容量）の値が、上記パラメータとされる容量値（index_2の実際の値）の下限値「０．００１」以上になるように、クロック間遅延調整用インバータセルの配置間隔が決定される。
【００６５】
尚、上記パラメータとされる容量値（index_2の実際の値）の下限値が「０．００２」の場合には、図１０の（Ｂ）に示されるように、クロック間遅延調整用インバータセル列における配線のうち、最も短い配線９０３の長さから算出される容量値が、上記パラメータとされる容量値（index_2の実際の値）の下限値「０．００２」以上になるように、クロック間遅延調整用インバータセルの配置間隔が決定される。このため、上記パラメータとされる容量値（index_2の実際の値）の下限値が「０．００２」の場合のクロック間遅延調整用インバータセルの配置間隔は、上記パラメータとされる容量値（index_2の実際の値）の下限値が「０．００１」の場合のクロック間遅延調整用インバータセルの配置間隔に比べて大きくなる。
【００６６】
このように、クロック間遅延調整用インバータセル列における配線のうち、最も短い配線９０２の長さから算出される容量値が、上記パラメータとされる容量値（index_2の実際の値）の下限値以上になるように、クロック間遅延調整用インバータセルの配置間隔が決定されることにより、各クロック間遅延調整用インバータの入力側や出力側には、図１１の遅延テーブル１１１での定義情報に対応する配線容量が形成されるため、遅延誤差の低減を図ることができる。
【００６７】
《実施の形態３》
実施の形態２のように、インバータと配線遅延とのコンビネーションチェーンや、バッファと配線遅延とのコンビネーションチェーンの場合には、チェーンを形成する全てのインバータ又はバッファに配線遅延を付加する必要があるため、配線リソースを多く使用するリスクがある。そこで、図８に示されるように、実施の形態１のようなバッファとインバータとのコンビネーションチェーン８０１を構築し、このコンビネーションチェーンにおけるインバータの入力側ネット８０２について、実施の形態２のように配線容量を指定すると良い。
【００６８】
図１６には、バッファとインバータと配線遅延とのコンビネーションチェーン７０１を用いた始点間レイテンシ合わせ処理の流れが示される。この場合、パラメータとして、挿入するバッファ・インバータの組み合わせ、及び最小容量値が演算処理装置１２に入力される。
【００６９】
図１６に示される始点間レイテンシ合わせ処理１２０７においては、入力装置１４を介して、ターゲットとなる遅延値、スキューの設定が行われると（１６０１）、所定のコンビネーションルールに従ってバッファ及びインバータが追加される（１６０２）。そして、上記ステップ１６０２の処理で追加されたバッファ及びインバータが、実際のレイアウトパターン上に配置され（１６０３）、追加されたインバータの入力側ネットの配線容量が、指定された配線容量値以上になるようにセルの配置位置が決定される（１６０４）。この配置位置が決定は、実施の形態２の場合と同様に行うことができる。すなわち、追加されたインバータの入力側ネットの配線容量が、パラメータとされる容量値（index_2の実際の値）の下限値以上になるように、セルの配置間隔が決定される。そして、上記ステップ１６０３で追加されたバッファ及びインバータの遅延値が算出され（１６０５）、算出された遅延値と、上記ステップ１４０１で設定されたターゲット遅延値とが等しいか否かの判別が行われる（１６０６）。この判別で、上記ステップ１６０５で算出された遅延値と、上記ステップ１６０１で設定されたターゲット遅延値とが等しくない（ＮＯ）と判断された場合には、再び、上記ステップ１６０２の処理に戻ってバッファ及びインバータが追加された後に、上記ステップ１６０３，１６０４，１６０５の処理を経て、再び上記ステップ１６０６の判別処理が行われる。上記ステップ１６０６の判別処理において、上記ステップ１６０５で算出された遅延値と、上記ステップ１６０１で設定されたターゲット遅延値とが等しい（ＹＥＳ）と判断された場合には、始点間レイテンシ合わせ処理１２０７が終了される。
【００７０】
このように本例によれば、実施の形態１のようにバッファとインバータとのコンビネーションチェーンが構築されるので、個々のインバータでの遅延誤差が伝播されるのを抑制することができ、インバータチェーンを用いる場合に比べて、遅延計算における遅延誤差を低減することができる。また、コンビネーションチェーンにおけるインバータの入力側ネット８０２について、実施の形態２のように配線容量を指定することにより、図１１の遅延テーブル１１１で定義情報に対応する配線容量が形成されるため、遅延計算における遅延誤差の低減を図ることができる。さらに、コンビネーションチェーンにおけるインバータの入力側ネット８０２について、実施の形態２のように配線容量を指定するようにしており、チェーンを形成する全てのインバータ又はバッファに配線遅延を付加するものではないので、配線リソースを多く使用するリスクを回避することができる。
【００７１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７２】
例えば、インバータは、ＭＯＳトランジスタ１段で形成されたセルの一例であり、バッファは、ＭＯＳトランジスタ複数段で形成されたセルの一例である。ＭＯＳトランジスタ１段で形成されたセルとして、上記インバータの他に２入力ナンドゲートを挙げることができる。ＭＯＳトランジスタ複数段で形成されたセルとして、上記バッファの他にマルチプレクサを挙げることができる。
【符号の説明】
【００７３】
１０  レイアウト装置
１１  表示装置
１２  演算処理装置
１３  記憶装置
１４  入力装置
１１１  遅延テーブル
６０１，７０１，８０１  コンビネーションチェーン
【図１】
0005909073.tif 000003
【図２】
0005909073.tif 000004
【図３】
0005909073.tif 000005
【図４】
0005909073.tif 000006
【図５】
0005909073.tif 000007
【図６】
0005909073.tif 000008
【図７】
0005909073.tif 000009
【図８】
0005909073.tif 000010
【図９】
0005909073.tif 000011
【図１０】
0005909073.tif 000012
【図１１】
0005909073.tif 000013
【図１２】
0005909073.tif 000014
【図１３】
0005909073.tif 000015
【図１４】
0005909073.tif 000016
【図１５】
0005909073.tif 000017
【図１６】
0005909073.tif 000018
【図１７】
0005909073.tif 000019
【図１８】
0005909073.tif 000020