(57)【特許請求の範囲】
【請求項１】
複数のクロックモードを具備する半導体集積回路の設計方法において、
クロックパス解析手段が、前記半導体集積回路のレイアウトデータの入力を受け、当該レイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと、
前記クロックパス解析手段が、検出した前記各クロックパス上に存在するすべての素子のディレイ量を、記憶手段に記憶された、前記レイアウトデータに使用される回路データのデータベースから収集するステップと、
ディレイ調整位置設定手段が、検出された前記各クロックパス上におけるディレイ調整位置を設定するステップと、
ディレイ値演算手段が、設定された前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集された前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと、
回路修正手段が、算出された前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する前記データベースに基づく遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと、
を含み、
前記ディレイ調整位置を設定するステップでは、前記ディレイ調整位置は、検出された前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定されることを特徴とする半導体集積回路の設計方法。
【請求項２】
前記ディレイ調整位置を設定するステップでは、検出された前記クロックパス上における前記入力端子の直前の位置の上流に、複数の前記クロックパスが合流する素子である第２の合流素子がさらに存在する場合、前記入力端子の直前の位置から前記第２の合流素子までの経路に前記クロックパスの分岐点がないときは、前記ディレイ調整位置として設定しないことを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項３】
前記ディレイ調整位置におけるディレイ値の算出ステップでは、検出された前記各クロックパス上で収集されたすべての前記素子におけるディレイ量と前記変数との和を所定の範囲内とするような線形式が作成されて、演算されることを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項４】
複数のクロックモードを具備する半導体集積回路の設計方法において、
クロックパス解析手段が、前記半導体集積回路のレイアウトデータの入力を受け、当該レイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと、
前記クロックパス解析手段が、検出した前記各クロックパス上に存在するすべての素子のディレイ量を、記憶手段に記憶された、前記レイアウトデータに使用される回路データのデータベースから収集するとともに、前記各クロックパス上に存在する全ての配線ラインのディレイ量を当該配線ラインのパラメータを基に収集するステップと、
ディレイ調整位置設定手段が、検出された前記各クロックパス上におけるディレイ調整位置を設定するステップと、
ディレイ値演算手段が、設定された前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集された前記素子および前記配線ラインの各ディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと、
回路修正手段が、算出された前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する前記データベースに基づく遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと、
を含み、
前記ディレイ調整位置を設定するステップでは、前記ディレイ調整位置は、検出された前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定されることを特徴とする半導体集積回路の設計方法。
【請求項５】
複数のクロックモードを具備する半導体集積回路を設計するための設計プログラムにおいて、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと、
検出した前記各クロックパス上に存在するすべての素子のディレイ量を収集するステップと、
検出した前記各クロックパス上におけるディレイ調整位置を設定するステップと、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと、
を含み、
前記ディレイ調整位置を設定するステップでは、前記ディレイ調整位置は、検出した前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定される、
処理をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラム。
【請求項６】
前記ディレイ調整位置を設定するステップでは、検出した前記クロックパス上における前記入力端子の直前の位置の上流に、複数の前記クロックパスが合流する素子である第２の合流素子がさらに存在する場合、前記入力端子の直前の位置から前記第２の合流素子までの経路に前記クロックパスの分岐点がないときは、前記ディレイ調整位置として設定しないことを特徴とする請求項５記載の半導体集積回路の設計プログラム。
【請求項７】
前記ディレイ調整位置におけるディレイ値の算出ステップでは、検出した前記各クロックパス上で収集したすべての前記素子におけるディレイ量と前記変数との和を所定の範囲内とするような線形式が作成されて、演算されることを特徴とする請求項５記載の半導体集積回路の設計プログラム。
【請求項８】
複数のクロックモードを具備する半導体集積回路を設計するための設計プログラムにおいて、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと、
検出した前記各クロックパス上に存在するすべての素子および配線ラインの各ディレイ量を収集するステップと、
検出した前記各クロックパス上におけるディレイ調整位置を設定するステップと、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子および前記配線ラインの各ディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと、
を含み、
前記ディレイ調整位置を設定するステップでは、前記ディレイ調整位置は、検出した前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定される、
処理をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のクロックモードを具備する半導体集積回路の設計方法、および設計プログラムに関し、特に、各クロックモードにおける複数のクロックパスにおけるクロックスキューを最適化することが可能な半導体集積回路の設計方法および設計プログラムに関する。
【０００２】
【従来の技術】
近年、ＬＳＩの集積度が高められ、微細化されていくのに伴って、１つのＬＳＩによる処理規模が大きくなり、従来と比較してより複雑で高機能なＬＳＩを実現することが可能となっている。このような高機能なＬＳＩでは、従来と比較してより複雑なクロック信号が使用されている場合が多い。例えば、通常使用のためのクロック信号と、テスト用のクロック信号のように、複数のクロックモードを具備するＬＳＩが存在している。あるいは、消費電力を抑制するための手法として、フリップフロップがデータを更新しない間、クロック信号の供給を止めるゲーテッドクロック回路等が使用されている。
【０００３】
【発明が解決しようとする課題】
しかし、このようにクロック信号が複雑に使用されると、パス上のゲートの段数や負荷の増加等によりクロックスキューが増大する恐れがあり、その結果、回路内のフリップフロップ回路等で正常なクロックタイミングが得られない場合がある。特に、複数のクロックモードを具備する回路の場合は、すべてのクロック信号に対して、クロックスキューに対するタイミング補正を行う必要が生じる。
【０００４】
複数のクロックモードを具備する回路の設計時には、従来では通常、いずれかのクロックモードで最適化してレイアウトを行っている。このため、クロックモードを変えて動作させると、新たにタイミングエラーが発生したパスが現れる可能性がある。高機能なＬＳＩの場合、すべてのクロックモードにおいてクロックタイミングを合わせ込むことが非常に難しい場合がある。従来ではこのような場合、設計者がマニュアルでクロックモードごとのスキュー調整を行っていたため、非常に多くの工数を要していた。
【０００５】
ここで、図１０は、複数のクロックモードを具備するＬＳＩの回路構成例を示す図である。
図１０では、ＬＳＩの入力端の一部の回路構成例を示している。この回路では、通常使用のためのクロック信号ＣＬＫと、回路の動作テストの際に使用されるテストクロック信号ＴＣＫの２つが供給されている。クロック信号ＣＬＫは、セルＣ７１を介して分岐され、一方はセレクタＳ７２の入力端子Ａ７２に、他方はＯＲゲートＧ７３を経てセレクタＳ７４の入力端子Ａ７４に供給される。また、テストクロック信号ＴＣＫは、セルＣ７５を介して分岐され、一方はセレクタＳ７２の入力端子Ｂ７２に、他方はセレクタＳ７４の入力端子Ｂ７４に供給される。
【０００６】
セレクタＳ７２およびＳ７４の双方には、セルＣ７６を介してテスト信号ＴＳＴが供給され、このテスト信号ＴＳＴによりクロック信号ＣＬＫとテストクロック信号ＴＣＫの出力が切り換えられ、クロックモードの切り換えが行われる。
【０００７】
セレクタＳ７２の出力端子Ｘ７２からの出力信号は、セルＣ７７およびＣ７８を介して分岐され、フリップフロップ回路ＦＦ７９およびＦＦ８０の各クロック入力に入力される。また、セレクタＳ７４からの出力信号は、セルＣ８１を介して分岐され、フリップフロップ回路ＦＦ８２およびＦＦ８３の各クロック入力に入力される。フリップフロップ回路ＦＦ８０からの出力信号は、フリップフロップ回路ＦＦ８３のデータ入力に入力され、また、フリップフロップ回路ＦＦ８２の出力信号は、フリップフロップ回路ＦＦ７９のデータ入力に入力される。
【０００８】
また、クロック信号ＣＬＫが入力されるＯＲゲートＧ７３には、他方の入力端子Ｂ７３に制御信号ＥＮが入力され、これによりゲーテッドクロック回路が構成される。すなわち、通常動作時において、Ｈレベルの制御信号ＥＮが入力されると、フリップフロップ回路ＦＦ８２およびＦＦ８３へのクロック信号ＣＬＫの出力がＨレベルに保持されて、フリップフロップ回路ＦＦ８２およびＦＦ８３からの出力データの更新が停止される。
【０００９】
ここで、クロック信号ＣＬＫについて、入力からセルＣ７１、セレクタＳ７２、セルＣ７７およびＣ７８を経てフリップフロップ回路ＦＦ７９およびＦＦ８０に達する信号経路を、クロックパスＣＰ７１０とする。また、入力からセルＣ７１、ＯＲゲートＧ７３、セレクタＳ７４、セルＣ８１を経てフリップフロップ回路ＦＦ８２およびＦＦ８３に達する信号経路を、クロックパスＣＰ７２０とする。さらに、テストクロック信号ＴＣＫについて、入力からセルＣ７５、セレクタＳ７２、セルＣ７７およびＣ７８を経てフリップフロップ回路ＦＦ７９およびＦＦ８０に達する信号経路を、クロックパスＣＰ８１０とする。また、入力からセルＣ７５、セレクタＳ７４、セルＣ８１を経てフリップフロップ回路ＦＦ８２およびＦＦ８３に達する信号経路を、クロックパスＣＰ８２０とする。
【００１０】
ところで、上記のように複数のクロックモードを具備する回路の設計時には、従来では通常、いずれかのクロックモードで最適化してレイアウトを行っていた。例えば上記の回路の場合、通常動作用のクロック信号ＣＬＫによる正常な動作を実現するように、クロックスキューを合わせ込んでレイアウトが行われるのが通常であった。従って、クロックパスＣＰ７１０およびＣＰ７２０がクロックスキューの考慮対象となる。しかし、実際には、テストクロック信号ＴＣＫによるクロックパスＣＰ８１０およびＣＰ８２０についても動作を保証する必要があり、同様にクロックスキューの考慮対象としなければならない。
【００１１】
クロックモードを変えて動作させると、新たにタイミングエラーが発生したパスが現れる可能性がある。従来ではこのような場合、すべてのパスにおけるクロックスキューを考慮して、設計者がマニュアルでセルの挿入や変更を行って調整していた。しかし、クロック信号が複雑に使用された高機能なＬＳＩの場合、すべてのクロックモードの動作におけるすべてのパスにおいてクロックタイミングを合わせ込むことが非常に難しい場合がある。また、クロックスキューが不均衡な状態では、フリップフロップ間のセットアップ／ホールドエラーを修正するために、大掛かりな回路変更を強いられる場合が多く、大量の回路修正やバッファ挿入等を行う必要が生じる。従って、設計者によるマニュアル作業では非常に多くの工数を要し、作業効率が極めて悪いことが問題となっていた。
【００１２】
本発明はこのような課題に鑑みてなされたものであり、複数のクロックモードを具備する半導体集積回路の設計の際に、複数のクロックモードにおけるクロックスキューの最適化を効率的に行うことが可能な、半導体集積回路の設計方法を提供することを目的とする。
【００１３】
また、本発明の他の目的は、複数のクロックモードを具備する半導体集積回路の設計の際に、複数のクロックモードにおけるクロックスキューの最適化を効率的に行うことが可能な、半導体集積回路の設計プログラムを提供することである。
【００１４】
【課題を解決するための手段】
本発明では上記課題を解決するために、図１に示すように、複数のクロックモードを具備する半導体集積回路の設計方法において、クロックパス解析手段が、前記半導体集積回路のレイアウトデータの入力を受け、当該レイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと（ステップＳ１）、前記クロックパス解析手段が、検出した前記各クロックパス上に存在するすべての素子のディレイ量を、記憶手段に記憶された、前記レイアウトデータに使用される回路データのデータベースから収集するステップと（ステップＳ２）、ディレイ調整位置設定手段が、検出された前記各クロックパス上におけるディレイ調整位置を設定するステップと（ステップＳ３）、ディレイ値演算手段が、設定された前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集された前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと（ステップＳ４）、回路修正手段が、算出された前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する前記データベースに基づく遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと（ステップＳ５）、を含み、前記ディレイ調整位置を設定するステップ（ステップＳ３）では、前記ディレイ調整位置は、検出された前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定されることを特徴とする半導体集積回路の設計方法が提供される。
【００１５】
このような半導体集積回路の設計方法では、検出した複数のクロックパスについて、ディレイ調整位置を自動的に指定する。このとき、検出されたクロックパス上において、複数の入力端子により複数のクロックパスが合流する素子である第１の合流素子が存在した場合には、ディレイ調整位置を入力端子の直前に設定する。次に、このディレイ調整位置におけるディレイ量を変数として、この変数と各クロックパス上のセルのディレイ量とにより線形式を作成し、変数の値を算出して最適なディレイ量を得る。この線形式の演算では、例えば線形計画法を用いる。そして、該当するディレイ量を有する遅延素子を各ディレイ調整位置に配設して、回路のレイアウトを修正する。従って、検出した複数のクロックパスについて、クロックスキューが最適化されたレイアウトデータが自動的に生成される。
【００１６】
また、本発明では、複数のクロックモードを具備する半導体集積回路を設計するための設計プログラムにおいて、前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出するステップと、検出した前記各クロックパス上に存在するすべての素子のディレイ量を収集するステップと、検出した前記各クロックパス上におけるディレイ調整位置を設定するステップと、設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各クロックパス上の前記ディレイ調整位置における最適なディレイ値を算出するステップと、算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正するステップと、を含み、前記ディレイ調整位置を設定するステップでは、前記ディレイ調整位置は、検出した前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定される、処理をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラムが提供される。
【００１７】
このような処理により、コンピュータは複数のクロックモードを具備する半導体集積回路を設計する装置として機能する。この装置では、検出した複数のクロックパスについて、ディレイ調整位置が自動的に指定される。このとき、検出したクロックパス上において、複数の入力端子により複数のクロックパスが合流する素子である第１の合流素子が存在した場合には、ディレイ調整位置が入力端子の直前に設定される。次に、このディレイ調整位置におけるディレイ量を変数として、この変数と各クロックパス上のセルのディレイ量とにより線形式が作成され、変数の値が算出されて最適なディレイ量が得られる。この線形式の演算では、例えば線形計画法が用いられる。そして、該当するディレイ量を有する遅延素子が各ディレイ調整位置に配設されて、回路のレイアウトが修正される。従って、検出した複数のクロックパスについて、クロックスキューが最適化されたレイアウトデータが自動的に生成される。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の半導体集積回路の設計方法の処理の流れを示すフローチャートである。以下、図１を用いて、本発明の半導体集積回路の設計方法の概要について説明する。なお、ここでは、処理されるレイアウトデータやネットリスト等のデータは、プロセッサにより制御される情報処理装置が扱うことができるファイル形式を有することを想定している。
【００１９】
本発明では、例えば、目的の半導体集積回路を構成するフリップフロップ回路やセレクタといった各種の素子やセルを指定する情報と、これらの素子およびセルの接続情報等を記述したネットリスト等を基にして、回路のレイアウト状態を記述したレイアウトデータが与えられる。また、このレイアウトデータに基づく半導体集積回路は、複数のクロックモードを具備している。例えば、この半導体集積回路は、通常動作用とテスト用等の複数のクロック信号の入力を受けて、それぞれのクロック信号により動作する。あるいは、回路の内部において、入力されたクロック信号を分周した複数の信号のいずれかによる複数の動作モードを具備する素子が存在している。
【００２０】
本発明では、このようなレイアウトデータに基づく半導体集積回路に含まれるフリップフロップ等の所定の素子において、入力される複数のクロック信号によるクロックスキューを所定範囲内に収め、この素子が各クロックモードで正常に動作するようにレイアウトデータを自動的に修正する。このために、すべてのクロックモードによるクロック信号のパス（以下、クロックパスと呼称する）を複数検出して、各クロックパスにおいてディレイ調整位置を設定する。そして、各検出したクロックパスにおけるクロックスキューが目的の範囲内となるように、例えば線形計画法（Liner Programming）により各ディレイ調整位置で必要なディレイ量を算出し、遅延素子を配置して回路構成を修正する。
【００２１】
以下、図１に沿って説明する。例えばネットリストに基づいてレイアウトデータが生成されると、ステップＳ１において、このレイアウトデータを解析し、各クロックモードにおける複数のクロックパスを検出する。例えば、回路中より複数のクロックモードで動作するフリップフロップ等の素子を抽出し、この素子に入力される各クロック信号についての入力からのクロックパスを、レイアウトデータから複数検出する。なお、このとき各クロックモードにおけるすべてのクロックパスを検出することが望ましい。
【００２２】
ステップＳ２において、検出した各クロックパス上に存在するすべての素子のディレイ量を、例えばライブラリ等から収集し、すべてのクロックパスにおけるディレイ量を算出する。
【００２３】
ステップＳ３において、ステップＳ１で検出した各クロックパス上におけるディレイ調整位置を設定する。このディレイ調整位置の設定方法としては、例えば、検出したクロックパス上から、複数の入力端子により複数のクロックパスが合流する素子を抽出し、この素子の入力端子の直前位置をディレイ調整位置として設定する。
【００２４】
また、例えば、上記のディレイ調整位置の設定方法を設定ルールＲ１とし、この設定ルールＲ１による設定位置の中から、以下の設定ルールＲ２の条件を満たす場合はディレイ調整位置として設定しないようにしてもよい。ここで、設定ルールＲ１で抽出されたクロックパスが合流する素子を第１の合流素子と呼称することにすると、設定ルールＲ１による設定位置から該当するクロックパスの上流を辿り、この設定位置の直前に存在する素子が、複数のクロックパスが合流する第２の合流素子であるか否かを判定する。そして、第２の合流素子である場合に、設定ルールＲ１による設定位置から第２の合流素子までの経路にクロックパスの分岐点があるか否かを判定して、分岐点がない場合にはそのディレイ調整位置を削除する。
【００２５】
このようなディレイ調整位置の設定方法により、各クロックパス上において必要最小限のディレイ調整位置が設定され、後の回路構成の修正時に修正位置の数が抑制され、回路規模の拡大を防止することができる。
【００２６】
次に、ステップＳ４において、設定したディレイ調整位置におけるディレイ量を変数とし、この変数と、収集した素子のディレイ量よりクロックパスごとに線形式を作成して変数を求め、各パス上のディレイ調整位置における最適なディレイ量を算出する。なお、この変数はすべて０以上の値であるとする。
【００２７】
この際に作成する線形式では、例えば、検出した各クロックパス上で収集したすべての素子におけるディレイ量と変数との和が所定の範囲内となるようにして、各クロックパス上のクロックスキューが正常動作に必要な範囲内となるようにする。また、線形式の演算では例えば、設定したすべてのディレイ調整位置におけるディレイ量の和が最小となるように、最適化条件を設定して、線形計画法を用いて変数を算出する。この結果、変数の値として、クロックスキューを最適化するために必要最小限のディレイ量が求められる。
【００２８】
次に、ステップＳ５において、算出されたディレイ値に基づき、各ディレイ調整位置に該当するディレイ量を有する遅延素子を配設して、レイアウトデータによる回路構成を自動的に修正する。この回路構成の修正は、例えば以下の２つの方法により行う。第１の修正方法は、ライブラリ等にあらかじめ用意された遅延素子のセル群の中から、例えばステップＳ４において算出されたディレイ値に最も近いディレイ量を有する遅延素子のセルを選択して、レイアウトデータによる回路構成を修正する。また、第２の修正方法は、算出されたディレイ値より、あらかじめ用意された単一の遅延素子のデータを組み合わせて該当するディレイ量を有する新たな遅延素子のデータを生成し、このデータを用いてレイアウトデータによる回路構成を修正する。この第２の修正方法は、第１の修正方法において、算出されたディレイ値に対して選択可能なセルが用意されていない場合に行われてもよい。
【００２９】
また、上記の第１および第２の修正方法では、それぞれ選択したセルや生成した遅延素子を挿入する際に、レイアウトデータの記述を直接変更することにより回路構成を修正してもよく、その他に例えば、選択したセルあるいは生成した遅延素子のデータによりネットリストの接続情報を変更し、このネットリストの変更をレイアウトデータに反映されることで、回路構成を修正するようにしてもよい。
【００３０】
以上の半導体集積回路の設計方法では、複数のクロックモードにおけるクロックパスを複数抽出して、線形計画法により各クロックパス上に設定したディレイ調整位置における最適なディレイ値を算出して、必要な遅延素子を自動的に挿入する。従って、従来、膨大な工数および時間を費やして設計者がマニュアル作業で行っていたのに比較して、クロックスキューの最適化のための設計変更を短時間で効率的に行うことが可能となる。
【００３１】
また、ステップＳ３の処理で設定ルールＲ１およびＲ２を適用することにより、各クロックパス上で必要最小限のディレイ調整位置が設定され、さらに、ステップＳ４における各ディレイ調整位置のディレイ値の演算では、例えば線形計画法を用いることにより最適な各ディレイ値の最小値を算出することが可能であるため、無駄な遅延素子の挿入が行われず、最低限の回路構成の変更でクロックスキューを最適化することができる。
【００３２】
なお、以上の半導体集積回路の設計方法では、ステップＳ２での各クロックパスにおけるディレイ量の算出処理で、各クロックパス上に存在する素子のディレイ量のみによって全体のディレイ量を算出しているが、これに加えて配線ラインにおけるディレイ量を考慮して全体のディレイ量を算出してもよい。この場合、ステップＳ２では、素子のディレイ量とともに各素子間の配線ラインの長さ等のパラメータより全体のディレイ量を算出する。また、ステップＳ４では、ディレイ調整位置におけるディレイ値、および各素子におけるディレイ量とともに、配線ラインでのディレイ量を用いて線形式を作成する。
【００３３】
これにより、各クロックパス上の素子における遅延に加えて、配線遅延も考慮したクロックスキューの最適化を行うことが可能となるので、クロックスキュー調整をより正確に行うことができる。
【００３４】
次に、このような半導体集積回路の設計方法を実現するための具体的な装置構成例について説明する。図２は、本発明を適用可能な半導体集積回路に対する設計支援装置の内部構成例を示すブロック図である。
【００３５】
図２に示すように、設計支援装置１は、ＣＰＵ２、ＲＡＭ３、ＨＤＤ（ハードディスクドライブ）４、グラフィック処理部５および入力Ｉ／Ｆ（インタフェース）６によって構成され、これらはバス７を介して相互に接続されている。
【００３６】
ＣＰＵ２は、設計支援装置１の全体に対する制御をつかさどる。ＲＡＭ３は、ＣＰＵ２に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【００３７】
ＨＤＤ４には、ＯＳやアプリケーションプログラム、各種データが格納される。本発明では主に、設計目的の半導体集積回路に対する論理設計手順後に作成されたレイアウトデータや、対応するネットリスト、ライブラリ等のデータ、およびレイアウトデータを基にしてクロックスキューを最適化するための設計プログラム等が格納される。
【００３８】
グラフィック処理部５には、モニタ５ａが接続されている。このグラフィック処理部５は、ＣＰＵ２からの命令に従って、モニタ５ａの画面上に画像を表示させる。入力Ｉ／Ｆ６には、キーボード６ａやマウス６ｂが接続されている。この入力Ｉ／Ｆ６は、キーボード６ａやマウス６ｂからの出力信号を、バス７を介してＣＰＵ２に送信する。
【００３９】
なお、この他に例えば、外部の通信ネットワークに接続されて、このネットワークを介して、例えば修正対象のレイアウトデータやネットリスト等の入力を受けることが可能な通信Ｉ／Ｆが、バス７上に接続されてもよい。さらに、修正対象あるいは修正後の回路構成やライブラリ等の情報を印刷するためのプリンタが接続されたプリント処理部が、バス７上に接続されてもよい。
【００４０】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。具体的には、与えられたレイアウトデータに基づく回路構成を修正するための半導体集積回路の設計プログラムが、ＲＡＭ３上にロードされ、ＣＰＵ２によって実行されることにより実現される。
【００４１】
次に、図３は、設計支援装置１の処理機能の例を示す機能ブロック図である。図３に示すように、設計支援装置１は、入力されたレイアウトデータ１０ａから、すべてのクロックパスを抽出して解析するクロックパス解析部１１と、抽出した各クロックパス上でディレイ調整位置を設定するディレイ調整位置設定部１２と、設定したディレイ調整位置におけるディレイ値を算出するディレイ値演算部１３と、算出されたディレイ値に基づいて回路構成を修正したレイアウトデータ１０ｂを出力する回路修正部１４と、各種の素子等のセルや素子の特性情報を保持するライブラリを記憶したライブラリ記憶部１５によって構成される。また、与えられるレイアウトデータ１０ａは、ライブラリからのセルや素子の選択情報とこれらの接続情報等を有するネットリスト１０ｃを基にして生成されている。
【００４２】
この設計支援装置１の各機能ブロックにおける処理は、図１に示したフローチャートの各ステップに対して以下のように対応しており、クロックパス解析部１１がステップＳ１およびＳ２に、ディレイ調整位置設定部１２がステップＳ３に、ディレイ値演算部１３がステップＳ４に、回路修正部１４がステップＳ５にそれぞれ対応している。
【００４３】
すなわち、クロックパス解析部１１は、レイアウトデータ１０ａよりすべてのクロックモードによるクロックパスを検出して、各クロックパス上の素子のディレイ量を収集する。ディレイ調整位置設定部１２は、検出された各クロックパスにおける必要最小限のディレイ調整位置を設定する。ディレイ値演算部１３は、クロックパス解析部１１より収集された素子のディレイ量を基に、各クロックパスにおけるクロックスキューが目的の範囲内となるように、各ディレイ調整位置で必要なディレイ値を線形計画法を用いて算出する。回路修正部１４は、算出されたディレイ値に応じた最適な遅延素子を配置して回路構成を修正する。
【００４４】
また、ライブラリは、レイアウトデータ１０ａに対して使用可能なセルや素子のデータについての遅延量や負荷、配置サイズ等の特性情報を保持しており、ライブラリ記憶部１５において記憶されて、クロックパス解析部１１や回路修正部１４から適宜参照される。
【００４５】
以下、レイアウトデータ１０ａとして与えられる半導体集積回路の具体的な回路構成例を挙げて、設計支援装置１における処理を説明する。図４は、レイアウトデータ１０ａとして与えられる半導体集積回路の第１の回路構成例を示す図である。
【００４６】
図４では、レイアウトデータ１０ａとして与えられる半導体集積回路の入力端の一部の回路構成例を示している。この回路では、通常使用のためのクロック信号ＣＬＫと、回路の動作テストの際に使用されるテストクロック信号ＴＣＫの２つが供給されている。クロック信号ＣＬＫは、セルＣ１１を介して分岐され、一方はセレクタＳ１２の入力端子Ａ１２に、他方はＯＲゲートＧ１３を経てセレクタＳ１４の入力端子Ａ１４に供給される。また、テストクロック信号ＴＣＫは、セルＣ１５を介して分岐され、一方はセレクタＳ１２の入力端子Ｂ１２に、他方はセレクタＳ１４の入力端子Ｂ１４に供給される。
【００４７】
セレクタＳ１２およびＳ１４の双方には、セルＣ１６を介してテスト信号ＴＳＴが供給され、このテスト信号ＴＳＴによりクロック信号ＣＬＫとテストクロック信号ＴＣＫの出力が切り換えられ、クロックモードの切り換えが行われる。
【００４８】
セレクタＳ１２の出力端子Ｘ１２からの出力信号は、セルＣ１７およびＣ１８を介して分岐され、フリップフロップ回路ＦＦ１９およびＦＦ２０の各クロック入力に入力される。また、セレクタＳ１４からの出力信号は、セルＣ２１を介して分岐され、フリップフロップ回路ＦＦ２２およびＦＦ２３の各クロック入力に入力される。フリップフロップ回路ＦＦ２０からの出力信号は、フリップフロップ回路ＦＦ２３のデータ入力に入力され、また、フリップフロップ回路ＦＦ２２の出力信号は、フリップフロップ回路ＦＦ１９のデータ入力に入力される。
【００４９】
また、クロック信号ＣＬＫが入力されるＯＲゲートＧ１３には、他方の入力端子Ｂ１３に制御信号ＥＮが入力され、これによりゲーテッドクロック回路が構成される。すなわち、通常動作時において、Ｈレベルの制御信号ＥＮが入力されると、フリップフロップ回路ＦＦ２２およびＦＦ２３へのクロック信号ＣＬＫの出力がＨレベルに保持されて、フリップフロップ回路ＦＦ２２およびＦＦ２３からの出力データの更新が停止される。
【００５０】
なお、図４では、ディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１があらかじめ表示されているが、これらは入力されたレイアウトデータ１０ａには含まれておらず、後述するディレイ調整位置設定部１２における処理により設定されるものである。
【００５１】
この回路構成例のように、設計支援装置１に与えられるレイアウトデータ１０ａに基づく半導体集積回路は、複数のクロックモードを具備している。クロックパス解析部１１は、このレイアウトデータ１０ａより、各クロックモードによるクロックパスをすべて検出する。図４において、フリップフロップ回路ＦＦ１９およびＦＦ２０、およびフリップフロップ回路ＦＦ２２およびＦＦ２３には、それぞれ同一のクロックパスが入力されている。従って、この回路構成例からは、以下の４通りのクロックパスが検出される。
【００５２】
まず、クロック信号ＣＬＫについて、入力からセルＣ１１、セレクタＳ１２、セルＣ１７およびＣ１８を経てフリップフロップ回路ＦＦ１９およびＦＦ２０に達する信号経路が、クロックパスＣＰ１１０として検出される。また、入力からセルＣ１１、ＯＲゲートＧ１３、セレクタＳ１４、セルＣ２１を経てフリップフロップ回路ＦＦ２２およびＦＦ２３に達する信号経路が、クロックパスＣＰ１２０として検出される。
【００５３】
さらに、テストクロック信号ＴＣＫについて、入力からセルＣ１５、セレクタＳ１２、セルＣ１７およびＣ１８を経てフリップフロップ回路ＦＦ１９およびＦＦ２０に達する信号経路が、クロックパスＣＰ２１０として検出される。また、入力からセルＣ１５、セレクタＳ１４、セルＣ２１を経てフリップフロップ回路ＦＦ２２およびＦＦ２３に達する信号経路が、クロックパスＣＰ２２０として検出される。
【００５４】
また、クロックパス解析部１１は、検出した各クロックパス上に存在する素子のディレイ量を、ライブラリ記憶部１５より収集する。例えば、クロックパスＣＰ１１０の場合では、このパス上に存在する素子としてセルＣ１１、セレクタＳ１２、セルＣ１７およびＣ１８のディレイ量を収集する。
【００５５】
次に、ディレイ調整位置設定部１２は、クロックパス解析部１１により検出された各クロックパスにおける必要最小限のディレイ調整位置を設定する。ここで、図５は、ディレイ調整位置を設定する手順を示すフローチャートである。
【００５６】
ステップＳ５０１において、クロックパス解析部１１で検出されたあるクロックパス上から、複数の入力端子により複数のクロックパスが合流する例えばセレクタ等の素子を１つ抽出し、この素子の入力端子の直前をディレイ調整位置として仮設定する。
【００５７】
ステップＳ５０２において、この仮設定位置からクロックパスの上流を辿り、仮設定位置の直前に存在する素子が、同様に複数のクロックパスが合流する素子であるか否かを判定する。この素子が複数のクロックパスが合流する素子でない場合には、ステップＳ５０３に進み、仮設定位置を正式なディレイ調整位置として正式に設定する。また、ステップＳ５０２において、複数のクロックパスが合流する素子である場合にはステップＳ５０４に進む。
【００５８】
ステップＳ５０４において、仮設定位置からステップＳ５０２で抽出した素子までの経路にクロックパスの分岐点があるか否かを判定して、分岐点がある場合にはステップＳ５０３に進み、仮設定位置を正式なディレイ調整位置として正式に設定する。また、ステップＳ５０４において分岐点がない場合には、ステップＳ５０５に進む。ステップＳ５０５において、この仮設定位置を削除し、正式なディレイ調整位置として設定しないようにする。
【００５９】
また、この後、同じクロックパス上においてステップＳ５０１の手順を繰り返し行い、仮設定が可能な限りステップＳ５０２以下の手順を適用する。さらに、以上の手順を、クロックパス解析部１１で検出されたすべてのクロックパスに対して適用する。
【００６０】
このような設定手順により、クロックパス解析部１１で検出されたすべてのクロックパス上に、１つ以上のディレイ調整位置を設定する。ここで、図４に示した第１の回路構成例に、上記の設定手順を適用した場合について説明する。
【００６１】
まず、検出されている各クロックパスから、複数の入力端子を具備して、この入力端子からの複数のクロックパスが合流する素子を抽出し、この素子の入力端子の直前をディレイ調整位置として仮設定する。
【００６２】
図４の回路構成において、このような素子としてセレクタＳ１２およびＳ１４が抽出される。従って、クロックパスＣＰ１１０上では、セレクタＳ１２の入力端子Ａ１２の直前にディレイ調整位置Ｐ１１１が仮設定される。また、同様に、クロックパスＣＰ１２０上では、セレクタＳ１４の入力端子Ａ１４の直前にディレイ調整位置Ｐ１２１が、クロックパスＣＰ２１０上では、セレクタＳ１２の入力端子Ｂ１２の直前にディレイ調整位置Ｐ２１１が、クロックパスＣＰ２２０上では、セレクタＳ１４の入力端子Ｂ１４の直前にディレイ調整位置Ｐ２２１がそれぞれ仮設定される。
【００６３】
次に、仮設定された各位置の直前に存在する素子と、この素子までの経路上の分岐の有無とに応じて、ディレイ調整位置として正式に設定するか、あるいは削除するかを決定する。例えば、仮設定したディレイ調整位置Ｐ１１１では、上流の直前に複数のクロックパスが合流する素子が存在しないため、この仮設定位置はディレイ調整位置Ｐ１１１として正式に設定される。また、同様に、ディレイ調整位置Ｐ１２１、Ｐ２１１およびＰ２２１も正式に設定される。
【００６４】
このような設定手順により、各クロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０上に必要最小限の数のディレイ調整位置を設定することがでる。設定された各ディレイ調整位置には、後述するように、ディレイ値演算部１３における算出値に応じたディレイ量を有する遅延素子が配置される。なお、後の図８および図９において、他の回路構成例に対するディレイ調整位置の設定例について捕足説明することにする。
【００６５】
次に、ディレイ値演算部１３は、クロックパス解析部１１により収集された素子のディレイ量を基に、各クロックパスにおけるクロックスキューが目的の範囲内となるように、各ディレイ調整位置で必要なディレイ値を算出する。例えば、図４の回路構成例の場合では、フリップフロップ回路ＦＦ１９およびＦＦ２０に入力されるクロック信号ＣＬＫおよびテストクロック信号ＴＣＫの各クロックスキューを合わせ込むことが要求される。従って、クロックパスＣＰ１１０およびＣＰ２１０の経路において生じるディレイ量が所定の時間範囲内に収まるように、各クロックパスＣＰ１１０およびＣＰ２１０上のディレイ調整位置Ｐ１１１およびＰ２１１において必要なディレイ値を算出する。
【００６６】
なお、例えば配線ルールが０．１８μｍで、クロック信号の周波数が１００〜２００ＭＨｚの半導体集積回路の場合、フリップフロップ回路のクロック入力段において１０ｎｓｅｃ程度のクロックスキューが生じることがあり、一般的なクロックキュー調整過程では、このクロックスキューを例えば０．５ｎｓｅｃ程度にする必要が生じているのが現状である。
【００６７】
ディレイ値演算部１３は、まず、各クロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０について、それぞれ設定されたディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１におけるディレイ値を変数とし、この変数とそれぞれに存在する素子のディレイ量とを用いて線形式を作成する。具体的には、各クロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０上の素子およびディレイ調整位置に挿入する遅延素子の有するディレイ量の和を、所定の範囲内とするような不等式が作成される。
【００６８】
クロックパスＣＰ１１０に対しては以下の線形式（１）および（２）、クロックパスＣＰ１２０に対しては線形式（３）および（４）、クロックパスＣＰ２１０に対しては線形式（５）および（６）、クロックパスＣＰ２２０に対しては線形式（７）および（８）がそれぞれ作成される。なお、Ｄ＿ｎは素子ｎの有するディレイ量、Ｄ＿ｎ＿ａ＿ｘは素子ｎにおける入力端子ａから出力端子ｘまでのディレイ量を示し、ＤＸ＿ｎは０以上の変数で、ディレイ調整位置ｎにおけるディレイ量を示す。また、Ｄ＿ｐａｔｈ＿ｎ＿ｍａｘ、Ｄ＿ｐａｔｈ＿ｎ＿ｍｉｎは、それぞれクロックパスｎの全体において必要とするディレイ量の最大値および最小値を示す。
（数１）
Ｄ＿Ｃ１１＋ＤＸ＿Ｐ１１１＋Ｄ＿Ｓ１２＿Ａ１２＿Ｘ１２＋Ｄ＿Ｃ１７＋Ｄ＿Ｃ１８＞Ｄ＿ｐａｔｈ＿ＣＰ１１０＿ｍｉｎ                    ………（１）
Ｄ＿Ｃ１１＋ＤＸ＿Ｐ１１１＋Ｄ＿Ｓ１２＿Ａ１２＿Ｘ１２＋Ｄ＿Ｃ１７＋Ｄ＿Ｃ１８＜Ｄ＿ｐａｔｈ＿ＣＰ１１０＿ｍａｘ                    ………（２）
Ｄ＿Ｃ１１＋Ｄ＿Ｇ１３＿Ａ１３＿Ｘ１３＋ＤＸ＿Ｐ１２１＋Ｄ＿Ｓ１４＿Ａ１４＿Ｘ１４＋Ｄ＿Ｃ２１＞Ｄ＿ｐａｔｈ＿ＣＰ１２０＿ｍｉｎ    ………（３）
Ｄ＿Ｃ１１＋Ｄ＿Ｇ１３＿Ａ１３＿Ｘ１３＋ＤＸ＿Ｐ１２１＋Ｄ＿Ｓ１４＿Ａ１４＿Ｘ１４＋Ｄ＿Ｃ２１＜Ｄ＿ｐａｔｈ＿ＣＰ１２０＿ｍａｘ    ………（４）
Ｄ＿Ｃ１５＋ＤＸ＿Ｐ２１１＋Ｄ＿Ｓ１２＿Ｂ１２＿Ｘ１２＋Ｄ＿Ｃ１７＋Ｄ＿Ｃ１８＞Ｄ＿ｐａｔｈ＿ＣＰ２１０＿ｍｉｎ                    ………（５）
Ｄ＿Ｃ１５＋ＤＸ＿Ｐ２１１＋Ｄ＿Ｓ１２＿Ｂ１２＿Ｘ１２＋Ｄ＿Ｃ１７＋Ｄ＿Ｃ１８＜Ｄ＿ｐａｔｈ＿ＣＰ２１０＿ｍａｘ                    ………（６）
Ｄ＿Ｃ１５＋ＤＸ＿Ｐ２２１＋Ｄ＿Ｓ１４＿Ｂ１４＿Ｘ１４＋Ｄ＿Ｃ２１＞Ｄ＿ｐａｔｈ＿ＣＰ２２０＿ｍｉｎ                                ………（７）
Ｄ＿Ｃ１５＋ＤＸ＿Ｐ２２１＋Ｄ＿Ｓ１４＿Ｂ１４＿Ｘ１４＋Ｄ＿Ｃ２１＜Ｄ＿ｐａｔｈ＿ＣＰ２２０＿ｍａｘ                                ………（８）
また、さらに各変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１について、以下の式（９）のような最適化条件を付加する。この式（９）は、変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１の値が最小となるように最適化する。
（数２）
ＤＸ＿Ｐ１１１＋ＤＸ＿Ｐ１２１＋ＤＸ＿Ｐ２１１＋ＤＸ＿Ｐ２２１−＞最小………（９）
以上の線形式（１）〜（８）を制約条件、式（９）を目的関数として最適化して、線形計画法を用いて変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１の値を求めることにより、各フリップフロップ回路ＦＦ１９、ＦＦ２０、ＦＦ２２およびＦＦ２３においてクロックスキューが満足されるようなディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１における各ディレイ値が算出される。
【００６９】
なお、上記の線形式（１）〜（８）では、クロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０上に配置された素子におけるディレイのみの和から、全体のディレイ量に対する条件を設定していたが、これらに加えて、各クロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０上の素子間の配線長さ等から得られる配線遅延量も加味して、線形式を生成してもよい。これにより、より正確なクロックスキュー調整を行うことが可能となる。
【００７０】
次に、回路修正部１４は、ディレイ値演算部１３において算出された変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１の値に応じて、ディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１に対して該当するディレイ量を有する遅延素子を挿入して、回路構成を修正する。この回路修正方法としては、ライブラリにあらかじめ記憶された遅延素子のセルから適当なものを選択して挿入する方法と、ライブラリにあらかじめ記憶された単一の遅延素子の回路データを組み合わせて、必要なディレイ量を有する回路データを作成して、ディレイ調整位置に挿入する方法とを用いることができる。
【００７１】
ここで、図６は、ライブラリにあらかじめ登録された遅延素子のセルの例を示す図である。
図６に示すように、ライブラリには例えば、異なるディレイ量を有する３種類の遅延素子のセル６１、６２および６３が登録されている。各セル６１、６２おおび６３を構成するバッファ６０はそれぞれが同じディレイ量を有しており、セル６１はこのバッファ６０の１段分により構成され、セル６２はバッファ６０を２段分直列に接続されることにより構成され、セル６３はバッファ６０を３段分直列に接続されることにより構成されている。回路修正部１４は、このようにライブラリにあらかじめ登録されたセル６１、６２および６３を選択して、レイアウトデータ１０ａに基づく回路構成中に挿入することができる。
【００７２】
図７は、回路修正部１４における遅延素子の選択および回路構成の修正手順の例を示すフローチャートである。
ステップＳ７０１において、ディレイ値演算部１３より、算出された変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１の値、すなわちディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１におけるディレイ値を受け取る。ステップＳ７０２において、ライブラリ記憶部１５に記憶されたライブラリを参照して、該当するディレイ量を有する遅延素子のセルを検索する。
【００７３】
ステップＳ７０３において、ライブラリ内に該当する適切な遅延素子のセルが存在するか否かを判定する。このセルの選択では、例えば、ライブラリ内の遅延素子の各セルの有するディレイ量が、算出されたディレイ値と正確に一致したものを常に選択してもよいが、例えば、ライブラリ内の各セルについて、選択基準となるディレイ量の範囲をあらかじめ決めておき、算出されたディレイ値がこの範囲に合致した場合にこのセルを選択するようにする。このステップＳ７０３で、該当するセルが存在した場合にはステップＳ７０４に進む。
【００７４】
ステップＳ７０４において、ライブラリ内に存在した該当するセルを選択する。ステップＳ７０５において、このセルを所定のディレイ調整位置に挿入するようにレイアウトデータ１０ａを変更して、回路構成を修正する。
【００７５】
また、ステップＳ７０３において、該当するセルが存在しなかった場合には、ステップＳ７０６に進む。ステップＳ７０６において、ライブラリを参照して、あらかじめ記憶された単一の遅延素子の回路データを組み合わせて、新たな遅延素子のデータを生成する。そして、ステップＳ７０５において、このデータを用いてレイアウトデータ１０ａを変更し、回路構成を修正する。
【００７６】
ところで、ステップＳ７０５における回路構成の修正では、レイアウトデータ１０ａを直接変更する方法の他に、このレイアウトデータ１０ａに対応するネットリスト１０ｃの内容を変更することにより修正を行ってもよい。この場合、例えば、ステップＳ７０４において選択されたセル、あるいはステップＳ７０６において生成された遅延素子のデータを用いて、ネットリスト１０ｃ内の素子の選択情報および接続情報を変更した後、このネットリスト１０ｃに基づいてレイアウトデータ１０ｂをあらためて作成する。
【００７７】
なお、ディレイ値演算部１３において算出されたディレイ値が０またはこれに近い場合には、このディレイ調整位置に対する遅延素子の配置は行わない。
以上のように、設計支援装置１では、修正対象の回路構成中のすべてのクロックパスＣＰ１１０、ＣＰ１２０、ＣＰ２１０およびＣＰ２２０において、必要最小限のディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１を設定し、クロックスキューが最適化されるように、線形計画法により各ディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１において必要なディレイ値を算出する。そして、算出したディレイ値に応じて必要な遅延素子を自動的に挿入し、クロックスキューが最適化されたレイアウトデータ１０ｂを自動的に生成する。従って、設計者がマニュアル作業で行うのに比較して、クロックスキューの最適化のための回路レイアウト変更を短時間で効率的に、かつ正確に行うことが可能となる。
【００７８】
また、上述したディレイ値演算部１３における演算では、式（９）により変数ＤＸ＿Ｐ１１１、ＤＸ＿Ｐ１２１、ＤＸ＿Ｐ２１１およびＤＸ＿Ｐ２２１の値が最小となるように最適化される。このため、各ディレイ調整位置Ｐ１１１、Ｐ１２１、Ｐ２１１およびＰ２２１において必要なディレイ値としてできるだけ小さな値が算出されるので、回路修正部１４において、大きな回路規模を有する遅延素子が選択される可能性が減少し、無駄な素子の挿入が防止される。従って、上記の設計支援装置１では、回路構成の修正が最小限にとどめられる。
【００７９】
なお、以上の実施形態例では、クロックパス解析部１１において、レイアウトデータ１０ａより各クロックモードのすべてのクロックパスを検出したが、これに限らず、一部のクロックパスについては、必要に応じて、別の方法でクロックスキューの最適化を行ってもよい。この場合、別の方法としては、例えば、設計者がマニュアル作業でクロックスキューを検出し、回路レイアウトを変更する方法がある。ただし、本実施形態例のようにすべてのクロックパスを検出することが望ましく、この場合に最も短時間で効率的にクロックスキューを最適化することができる。
【００８０】
次に、図８および図９にそれぞれ第２および第３の回路構成を示して、上記の設計支援装置１のディレイ調整位置設定部１２における処理を、補足説明する。まず、図８は、レイアウトデータとして与えられる半導体集積回路の第２の回路構成例を示す図である。
【００８１】
図８では、レイアウトデータ１０ａとして与えられる半導体集積回路の入力端の一部の回路構成例を示している。この回路では、上記の第１の回路構成例と同様に、通常使用のためのクロック信号ＣＬＫと、回路の動作テスト用のテストクロック信号ＴＣＫの２つが供給されている。クロック信号ＣＬＫは、セルＣ３１を介して分岐され、一方はセレクタＳ３２の入力端子Ａ３２に、他方はＯＲゲートＧ３３を経てセレクタＳ３４の入力端子Ａ３４に供給される。また、テストクロック信号ＴＣＫは、セルＣ３５を介して分岐され、一方はセレクタＳ３２の入力端子Ｂ３２に、他方はセレクタＳ３４の入力端子Ｂ３４に供給される。
【００８２】
セレクタＳ３２の出力端子Ｘ３２からの出力信号は、セレクタＳ３６の入力端子Ａ３６に入力され、出力端子Ｘ３６からの出力信号は分岐されて、フリップフロップ回路ＦＦ３７およびＦＦ３８の各クロック入力に入力される。また、セレクタＳ３４の出力端子Ｘ３４からの出力信号は、セルＣ３９を介して分岐され、フリップフロップ回路ＦＦ４０およびＦＦ４１の各クロック入力に入力される。フリップフロップ回路ＦＦ４０からの出力信号は、フリップフロップ回路ＦＦ３７のデータ入力に入力され、また、フリップフロップ回路ＦＦ３８の出力信号は、フリップフロップ回路ＦＦ４１のデータ入力に入力される。
【００８３】
また、セレクタＳ３２、Ｓ３４およびＳ３６には、セルＣ４２を介してテスト信号ＴＳＴが供給される。セレクタＳ３２およびＳ３４は、このテスト信号ＴＳＴによりクロック信号ＣＬＫとテストクロック信号ＴＣＫの出力が切り換えられ、また、セレクタＳ３６はこれらのいずれかと、入力端子Ｂ３６に入力される別のクロック信号との出力が切り換えられて、それぞれクロックモードの切り換えが行われる。さらに、クロック信号ＣＬＫが入力されるＯＲゲートＧ３３には、他方の入力端子Ｂ３３に制御信号ＥＮが入力され、これによりゲーテッドクロック回路が構成される。
【００８４】
このような第２の回路構成例に対して、クロックパス解析部１１では、例えば、クロック信号ＣＬＫのクロックパスとして、セルＣ３１、セレクタＳ３２およびＳ３６を経てフリップフロップ回路３７および３８に至るクロックパスが検出される。このクロックパスにおいては、ディレイ調整位置設定部１２において、以下のようにディレイ調整位置が決定される。
【００８５】
まず、このクロックパスから、複数の入力端子を具備して、この入力端子からの複数のクロックパスが合流する素子として、セレクタＳ３２およびＳ３６が抽出される。従って、このクロックパス上では、セレクタＳ３２の入力端子Ａ３２の直前と、セレクタＳ３６の入力端子Ａ３６の直前に、それぞれディレイ調整位置Ｐ３１１およびＰ３１２が仮設定される。
【００８６】
次に、仮設定された各位置の直前に存在する素子と、この素子までの経路上の分岐の有無とに応じて、ディレイ調整位置として正式に設定するか、あるいは削除するかを決定する。仮設定したディレイ調整位置Ｐ３１１では、上流の直前に複数のクロックパスが合流する素子が存在しないため、この仮設定位置はディレイ調整位置Ｐ３１１として正式に設定される。
【００８７】
これに対して、ディレイ調整位置Ｐ３１２の上流側の直前には、複数のクロックパスが合流するセレクタＳ３２が存在している。この場合、セレクタＳ３２の出力端子Ｘ３２から、セレクタＳ３６の入力端子Ａ３６までの経路上に、クロックパスの分岐点があるか否かを判定する。ここでは分岐点は存在しないため、このディレイ調整位置Ｐ３１２は削除される。これは、セレクタＳ３２において合流する２つのクロックパス上では、合流点の直前、すなわちセレクタＳ３２の入力端子Ａ３２およびＢ３２の直前にそれぞれディレイ調整位置Ｐ３１１およびＰ３２１が設定されるので、合流後の位置に存在するディレイ調整位置Ｐ３１２が重複して必要ではなくなるためである。このように、ディレイ調整位置設定部１２における処理では、必要最小限のディレイ調整位置が設定される。
【００８８】
次に、図９は、レイアウトデータとして与えられる半導体集積回路の第３の回路構成例を示す図である。
図９では、レイアウトデータ１０ａとして与えられる半導体集積回路の入力端の一部の回路構成例を示している。この回路では、上記の第１および第２の回路構成例と同様に、通常使用のためのクロック信号ＣＬＫと、回路の動作テスト用のテストクロック信号ＴＣＫの２つが供給されている。クロック信号ＣＬＫは、セルＣ５１を介して分岐され、一方はセレクタＳ５２の入力端子Ａ５２に、他方はＯＲゲートＧ５３を経てセレクタＳ５４の入力端子Ａ５４に供給される。また、テストクロック信号ＴＣＫは、セルＣ５５を介して分岐され、一方はセレクタＳ５２の入力端子Ｂ５２に、他方はセレクタＳ５４の入力端子Ｂ５４に供給される。
【００８９】
セレクタＳ５２の出力端子Ｘ５２からの出力信号は、分岐されて、それぞれセレクタＳ５６の入力端子Ａ５６、およびセレクタＳ５７の入力端子Ａ５７に入力される。また、セレクタ５６の出力端子Ｘ５６からの出力信号は分岐されて、フリップフロップ回路ＦＦ５８およびＦＦ５９の各クロック入力に入力される。
【００９０】
一方、セレクタＳ５４の出力端子Ｘ５４からの出力信号は、セルＣ６０を介して分岐され、フリップフロップ回路ＦＦ６１およびＦＦ６２の各クロック入力に入力される。フリップフロップ回路ＦＦ６１からの出力信号は、フリップフロップ回路ＦＦ５８のデータ入力に入力され、また、フリップフロップ回路ＦＦ５９の出力信号は、フリップフロップ回路ＦＦ６２のデータ入力に入力される。
【００９１】
また、セレクタＳ５２、Ｓ５４、Ｓ５６およびＳ５７には、セルＣ６３を介してテスト信号ＴＳＴが供給される。セレクタＳ５２およびＳ５４は、このテスト信号ＴＳＴによりクロック信号ＣＬＫとテストクロック信号ＴＣＫの出力が切り換えられる。また、セレクタＳ５６は、テスト信号ＴＳＴにより、クロック信号ＣＬＫとテストクロック信号ＴＣＫのいずれかと、入力端子Ｂ５６に入力される別のクロック信号との出力が切り換えられて、それぞれクロックモードの切り換えが行われる。同様に、セレクタＳ５７は、クロック信号ＣＬＫとテストクロック信号ＴＣＫのいずれかと、入力端子Ｂ５７に入力される別のクロック信号との出力が切り換えられる。さらに、クロック信号ＣＬＫが入力されるＯＲゲートＧ５３には、他方の入力端子Ｂ５３に制御信号ＥＮが入力され、これによりゲーテッドクロック回路が構成される。
【００９２】
このような第３の回路構成例に対して、クロックパス解析部１１では、例えば、クロック信号ＣＬＫのクロックパスとして、セルＣ５１、セレクタＳ５２およびＳ５６を経てフリップフロップ回路５８および５９に至るクロックパスが検出される。このクロックパスにおいては、ディレイ調整位置設定部１２において、以下のようにディレイ調整位置が決定される。
【００９３】
まず、このクロックパスから、複数の入力端子を具備して、この入力端子からの複数のクロックパスが合流する素子として、セレクタＳ５２およびＳ５６が抽出される。従って、このクロックパス上では、セレクタＳ５２の入力端子Ａ５２の直前と、セレクタＳ５６の入力端子Ａ５６の直前に、それぞれディレイ調整位置Ｐ５１１およびＰ５１２が仮設定される。
【００９４】
次に、仮設定されたディレイ調整位置Ｐ５１１では、上流の直前に複数のクロックパスが合流する素子が存在しないため、この仮設定位置はディレイ調整位置Ｐ５１１として正式に設定される。
【００９５】
また、ディレイ調整位置Ｐ５１２の上流側の直前には、複数のクロックパスが合流するセレクタＳ５２が存在している。この場合、セレクタＳ５２の出力端子Ｘ５２から、セレクタＳ５６の入力端子Ａ５６までの経路上に、クロックパスの分岐点Ｓ６４が存在するため、この経路上の仮設定位置もディレイ調整位置Ｐ５１２として正式に設定される。
【００９６】
このディレイ調整位置Ｐ５１２の場合と同じ手順で、セレクタＳ５７の入力端子Ａ５７の直前にも、ディレイ調整位置Ｐ５２１が設定される。このように、クロックパスの分岐点Ｓ６４の後には、確実にディレイ調整位置が設定される。
【００９７】
なお、上記の設計支援装置１における処理機能は、コンピュータによって実現することができる。その場合、設計支援装置１が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disk）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ(Compact Disk Read Only Memory)、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００９８】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００９９】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１００】
（付記１）  複数のクロックモードを具備する半導体集積回路の設計方法において、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出し、
検出した前記各クロックパス上に存在するすべての素子のディレイ量を収集し、
検出した前記各クロックパス上におけるディレイ調整位置を設定し、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各パス上の前記ディレイ調整位置における最適なディレイ値を算出し、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正する、
ことを特徴とする半導体集積回路の設計方法。
【０１０１】
（付記２）  前記ディレイ調整位置は、検出した前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定されることを特徴とする付記１記載の半導体集積回路の設計方法。
【０１０２】
（付記３）  検出した前記クロックパス上における前記入力端子の直前の位置の上流に、複数の前記クロックパスが合流する素子である第２の合流素子がさらに存在する場合、前記入力端子の直前の位置から前記第２の合流素子までの経路に前記クロックパスの分岐点がないときは、前記ディレイ調整位置として設定しないことを特徴とする付記２記載の半導体集積回路の設計方法。
【０１０３】
（付記４）  前記ディレイ調整位置におけるディレイ値の算出では、検出した前記各クロックパス上で収集したすべての前記素子におけるディレイ量と前記変数との和を所定の範囲内とするような線形式を作成し、演算することを特徴とする付記１記載の半導体集積回路の設計方法。
【０１０４】
（付記５）  前記線形式の演算では、前記レイアウトデータ上で設定したすべての前記ディレイ調整位置におけるディレイ値の和が最小となるように最適化して、線形計画法を用いて前記変数を算出することを特徴とする付記４記載の半導体集積回路の設計方法。
【０１０５】
（付記６）  前記ディレイ調整位置におけるディレイ値が算出されると、あらかじめ用意された遅延素子のセル群の中から、該当するディレイ量を有する前記遅延素子のセルを選択して、前記レイアウトデータによる回路構成を修正することを特徴とする付記１記載の半導体集積回路の設計方法。
【０１０６】
（付記７）  前記遅延素子のセルを選択すると、前記レイアウトデータに対応するネットリストに、選択した前記遅延素子のセルの接続情報を追加することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記６記載の半導体集積回路の設計方法。
【０１０７】
（付記８）  前記ディレイ調整位置におけるディレイ値が算出されると、あらかじめ用意された単一の遅延素子のデータを組み合わせて該当するディレイ量を有する新たな遅延素子のデータを生成することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記１記載の半導体集積回路の設計方法。
【０１０８】
（付記９）  前記新たな遅延素子を生成すると、前記レイアウトデータに対応するネットリストに、前記新たな遅延素子のデータの接続情報を追加することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記８記載の半導体集積回路の設計方法。
【０１０９】
（付記１０）  前記クロックパスの検出の際には、前記レイアウトデータから、前記各クロックモードにおけるすべての前記クロックパスを検出することを特徴とする付記１記載の半導体集積回路の設計方法。
【０１１０】
（付記１１）  複数のクロックモードを具備する半導体集積回路の設計方法において、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出し、
検出した前記各クロックパス上に存在するすべての素子および配線ラインの各ディレイ量を収集し、
検出した前記各クロックパス上におけるディレイ調整位置を設定し、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子および前記配線ラインの各ディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各パス上の前記ディレイ調整位置における最適なディレイ値を算出し、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正する、
ことを特徴とする半導体集積回路の設計方法。
【０１１１】
（付記１２）  複数のクロックモードを具備する半導体集積回路を設計するための設計プログラムにおいて、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出し、
検出した前記各クロックパス上に存在するすべての素子のディレイ量を収集し、
検出した前記各クロックパス上におけるディレイ調整位置を設定し、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各パス上の前記ディレイ調整位置における最適なディレイ値を算出し、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正する、
処理をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラム。
【０１１２】
（付記１３）  前記ディレイ調整位置は、検出した前記クロックパス上において、複数の入力端子により複数の前記クロックパスが合流する素子である第１の合流素子が存在した場合、前記入力端子の直前に設定されることを特徴とする付記１２記載の半導体集積回路の設計プログラム。
【０１１３】
（付記１４）  検出した前記クロックパス上における前記入力端子の直前の位置の上流に、複数の前記クロックパスが合流する素子である第２の合流素子がさらに存在する場合、前記入力端子の直前の位置から前記第２の合流素子までの経路に前記クロックパスの分岐点がないときは、前記ディレイ調整位置として設定しないことを特徴とする付記１３記載の半導体集積回路の設計プログラム。
【０１１４】
（付記１５）  前記ディレイ調整位置におけるディレイ値の算出では、検出した前記各クロックパス上で収集したすべての前記素子におけるディレイ量と前記変数との和を所定の範囲内とするような線形式を作成し、演算することを特徴とする付記１２記載の半導体集積回路の設計プログラム。
【０１１５】
（付記１６）  前記線形式の演算では、前記レイアウトデータ上で設定したすべての前記ディレイ調整位置におけるディレイ値の和が最小となるように最適化して、線形計画法を用いて前記変数を算出することを特徴とする付記１５記載の半導体集積回路の設計プログラム。
【０１１６】
（付記１７）  前記ディレイ調整位置におけるディレイ値が算出されると、あらかじめ用意された遅延素子のセル群の中から、該当するディレイ量を有する前記遅延素子のセルを選択して、前記レイアウトデータによる回路構成を修正することを特徴とする付記１２記載の半導体集積回路の設計プログラム。
【０１１７】
（付記１８）  前記遅延素子のセルを選択すると、前記レイアウトデータに対応するネットリストに、選択した前記遅延素子のセルの接続情報を追加することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記１７記載の半導体集積回路の設計プログラム。
【０１１８】
（付記１９）  前記ディレイ調整位置におけるディレイ値が算出されると、あらかじめ用意された単一の遅延素子のデータを組み合わせて該当するディレイ量を有する新たな遅延素子のデータを生成することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記１２記載の半導体集積回路の設計プログラム。
【０１１９】
（付記２０）  前記新たな遅延素子を生成すると、前記レイアウトデータに対応するネットリストに、前記新たな遅延素子のデータの接続情報を追加することにより、前記レイアウトデータによる回路構成を修正することを特徴とする付記１９記載の半導体集積回路の設計プログラム。
【０１２０】
（付記２１）  前記クロックパスの検出の際には、前記レイアウトデータから、前記各クロックモードにおけるすべての前記クロックパスを検出することを特徴とする付記１２記載の半導体集積回路の設計プログラム。
【０１２１】
（付記２２）  複数のクロックモードを具備する半導体集積回路を設計するための設計プログラムにおいて、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出し、
検出した前記各クロックパス上に存在するすべての素子および配線ラインの各ディレイ量を収集し、
検出した前記各クロックパス上におけるディレイ調整位置を設定し、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子および前記配線ラインの各ディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各パス上の前記ディレイ調整位置における最適なディレイ値を算出し、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正する、
処理をコンピュータに実行させることを特徴とする半導体集積回路の設計プログラム。
【０１２２】
（付記２３）  複数のクロックモードを具備する半導体集積回路を設計するための設計支援装置において、
前記半導体集積回路のレイアウトデータから、前記各クロックモードにおける複数のクロックパスを検出して、検出した前記各クロックパス上に存在するすべての素子のディレイ量を収集するクロックパス解析手段と、
検出した前記各クロックパス上におけるディレイ調整位置を設定するディレイ調整位置設定手段と、
設定した前記ディレイ調整位置におけるディレイ量を非負数の変数とし、収集した前記素子のディレイ量と前記変数より前記クロックパスごとに線形式を作成して演算することにより、前記各パス上の前記ディレイ調整位置における最適なディレイ値を算出するディレイ値演算手段と、
算出した前記ディレイ値に基づき、前記各ディレイ調整位置に、該当するディレイ量を有する遅延素子を配設して、前記レイアウトデータによる回路構成を自動的に修正する回路修正手段と、
を有することを特徴とする半導体集積回路の設計支援装置。
【０１２３】
【発明の効果】
以上説明したように、本発明の半導体集積回路の設計方法では、検出した複数のクロックパスについて、ディレイ調整位置を自動的に指定し、このディレイ調整位置におけるディレイ量を算出する。そして、該当するディレイ量を有する遅延素子を各ディレイ調整位置に配設して、回路のレイアウトを修正する。従って、検出した複数のクロックパスについて、クロックスキューが最適化されたレイアウトデータが自動的に生成され、レイアウトデータに対するクロックスキューの最適化を短時間で効率よく、かつ正確に行うことが可能となる。
【０１２４】
また、本発明の半導体集積回路の設計プログラムでは、検出した複数のクロックパスについて、ディレイ調整位置を自動的に指定し、このディレイ調整位置におけるディレイ量を算出する。そして、該当するディレイ量を有する遅延素子を各ディレイ調整位置に配設して、回路のレイアウトを修正する。従って、検出した複数のクロックパスについて、クロックスキューが最適化されたレイアウトデータが自動的に生成され、レイアウトデータに対するクロックスキューの最適化を短時間で効率よく、かつ正確に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明の半導体集積回路の設計方法の処理の流れを示すフローチャートである。
【図２】本発明を適用可能な半導体集積回路に対する設計支援装置の内部構成例を示すブロック図である。
【図３】本発明を適用可能な半導体集積回路に対する設計支援装置の処理機能の例を示す機能ブロック図である。
【図４】レイアウトデータとして与えられる半導体集積回路の第１の回路構成例を示す図である。
【図５】ディレイ調整位置を設定する手順を示すフローチャートである。
【図６】ライブラリにあらかじめ登録された遅延素子のセルの例を示す図である。
【図７】回路修正部における遅延素子の選択および回路構成の修正手順の例を示すフローチャートである。
【図８】レイアウトデータとして与えられる半導体集積回路の第２の回路構成例を示す図である。
【図９】レイアウトデータとして与えられる半導体集積回路の第３の回路構成例を示す図である。
【図１０】複数のクロックモードを具備するＬＳＩの回路構成例を示す図である。
【符号の説明】
１  設計支援装置
２  ＣＰＵ
３  ＲＡＭ
４  ＨＤＤ
５  グラフィック処理部
５ａ  モニタ
６  入力Ｉ／Ｆ
６ａ  キーボード
６ｂ  マウス
７  バス
１０ａ、１０ｂ  レイアウトデータ
１０ｃ  ネットリスト
１１  クロックパス解析部
１２  ディレイ調整位置設定部
１３  ディレイ値演算部
１４  回路修正部
１５  ライブラリ記憶部
【図１】
0004118578.tif 000002
【図２】
0004118578.tif 000003
【図３】
0004118578.tif 000004
【図４】
0004118578.tif 000005
【図５】
0004118578.tif 000006
【図６】
0004118578.tif 000007
【図７】
0004118578.tif 000008
【図８】
0004118578.tif 000009
【図９】
0004118578.tif 000010
【図１０】
0004118578.tif 000011