(57)【特許請求の範囲】
【請求項１】
ＣＰＵにて実行される半導体集積回路の設計方法において、
記憶部から複数の階層ブロックを有する階層構造のレイアウトデータを抽出し、抽出した前記階層構造のレイアウトデータに基づいてセット／リセット信号のネット情報を抽出してセット／リセット合成用データベースを作成し、
前記セット／リセット合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのセット／リセット信号分配回路を合成し、
前記セット／リセット信号分配回路を、前記階層構造のレイアウトデータ上へマッピングすることを特徴とする半導体集積回路設計方法。
【請求項２】
半導体集積回路の設計プログラムにおいて、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、セット／リセット信号のネット情報を抽出してセット／リセット合成用データベースを作成し、
前記セット／リセット合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのセット／リセット信号分配回路を合成し、
前記セット／リセット信号分配回路を、前記階層構造のレイアウトデータ上へマッピングすることを特徴とする半導体集積回路設計プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の設計方法に関するものであり、特に、複数の階層ブロックを有する階層構造の半導体集積回路内において、回路内に配置されるフリップフロップ（ＦＦ）／ラッチ回路へ供給するクロック又は各種信号の分配回路を最適にレイアウト（配置・配線）する設計方法に関する。
【０００２】
【従来の技術】
半導体集積回路のレイアウトでは、半導体集積回路の大規模化に伴い、集積回路をいくつかのブロックに分けブロック単位でレイアウトする階層レイアウトが一般的である。階層レイアウト方法には、半導体集積回路全体の設計から詳細なブロックの設計へと細かくしていくトップダウン方式（上位から下位へのレイアウト方式）と、初めに各ブロックを詳細に設計し、これを組立て全体にまとめていくボトムアップ方式（下位から上位へのレイアウト方式）との２種類がある。この階層レイアウト方法に従って、半導体集積回路内のフリップフロップ（ＦＦ）回路やラッチ回路へクロック又は各種信号を分配する分配回路の設計も行なわれる。以下、クロック分配回路の設計を中心に説明する。
【０００３】
クロック分配回路の設計は、以下のように行なわれる。図１１にトップダウン方式によってクロック分配回路を設計した第一の従来方法を示す。図１１において、１００は集積回路（チップ全体）、１０１Ａ〜Ｅは階層ブロック、１０２Ａ、Ｂ、Ｃは階層ブロック内に配置されるマクロ、１０３はクロック信号の供給を必要とするフリップフロップ（ＦＦ）回路やラッチ回路、１０４はクロックバッファ、１０５はクロック配線を示す。トップダウン方式のクロック分配回路の設計方法では、最初にトップレベルのフロアプランを行い、チップ内の各階層ブロック１０１Ａ〜Ｅの配置を決める。そして、クロックの供給が必要なＦＦ／ラッチ回路１０３のために、クロック分配回路１０４，１０５を合成する。クロック分配回路の合成は、供給クロックの時間差であるクロックスキューをなくすため、クロックツリーを用いて各ノード間の配線が等長かつ等容量となるように設計する。また、クロック分配回路の設計では、多段の中継用クロックバッファ１０４を中途に挿入することによって、クロック信号の劣化を緩和している。ここでは、トップレベルでのスキュー（供給クロックの時間差）は０となるように設計される。トップレベルのクロック分配回路を合成し、トップレベルの状態を確定してから、そこで得られた各階層ブロック１０１Ａ〜Ｅのタイミング予算値を元に、各階層ブロック１０１Ａ〜Ｅ内のフロアプランを行い、階層ブロック１０１Ａ〜Ｅ内の各マクロ１０２Ａ〜Ｃの配置を決める。次に階層ブロック内のクロック分配回路の合成を行う。階層ブロック内のクロックバッファ挿入では、全ての階層ブロックのうち階層ブロック内でのクロックツリーが最も大きく、ディレイが最大となる階層ブロックに条件を合わせ、各階層ブロックへクロックバッファを挿入する。図１１の例では、階層ブロック１０１Ｂが最もディレイの大きいブロックであり、この階層ブロック１０１Ｂに合わせて、ディレイの小さい階層ブロック１０１Ａ内にも、本来不必要なクロックバッファ１０７の挿入が行なわれる。
【０００４】
次に、図１２に第２の従来方法であるボトムアップ方式に従ったクロック分配回路を設計した例を示す。図１２では、図１１と同じ対象に同じ番号を付けている。ボトムアップ方式のクロック分配回路の設計方法では、各階層ブロックごとに最適になるようにクロック合成を行い、トップレベルでこれを組立てる。このため、階層ブロック内におけるクロックスキュー、挿入ディレイ、ゲートオーバーヘッドは最適にすることができる。しかし、この方法でも最もディレイの大きい階層ブロック１０１Ｂに合わせてクロックバッファ１０４が挿入されるため、挿入ディレイの小さい階層ブロック１０１Ａのブロック領域外のクロックパスには不必要なクロックバッファ１０８の挿入が行なわれる。
【０００５】
図１３に、従来の方法であるボトムアップ方式の階層レイアウト設計方法の処理フローを示す。まず、論理合成（ステップ１）では、ＲＴＬ(Register Transfer Level)の設計データ（ハードウェア記述言語、論理式、真理値表など）１３を入力して、ネットリスト（ゲートレベルの論理回路）１４を出力する。論理合成１においては、所望の回路を得るために、面積や遅延時間などの制約条件がある。遅延時間に関する制約条件として、例えばネット遅延や配線負荷モデルとの結合、クロック・タイミング、最大／最小遅延時間などがある。次に階層パーティショニングを用いたトップレベルのフロアプラン（ステップ２）を行う。階層パーティショニングとは、階層ブロックをチップ内の何処に設定するかを決め、階層ブロックを分割することを意味する。フロアプラン（ステップ２）では、ネットリスト１４を入力し、機能ブロック（ハードマクロやソフトマクロ）をチップ上のどの位置へ配置すべきかを概略的に決め、仮配線での階層ブロックのタイミング予算値を求める（ステップ３）。
【０００６】
次に各階層ブロック内のフロアプランとマクロセルの配置及び基幹電源配線の配線を行う（ステップ４）。併せて、論理合成時に想定した配線遅延や信号伝播の同期などタイミング条件を制約としてタイミングを保証するタイミングドリブンレイアウトによってセル配置を行う。
【０００７】
次に階層ブロック内にクロックバッファを挿入しクロック配線をして、クロック分配回路の合成（ステップ５）を行う。
【０００８】
次に階層ブロック内の配線とＲＣ抽出を行う（ステップ６）。
【０００９】
次に階層ブロック内のタイミング解析とタイミング調整を行って（ステップ７）、階層ブロックのタイミングモデルを作成する（ステップ８）。
【００１０】
各階層ブロック内のレイアウトが決まると、上位階層に上がってトップレベルのフロアプランを調整し、セル配置を行う（ステップ９）。
【００１１】
次にトップレベルのクロック合成とクロック配線を行う（ステップ１０）。トップレベルのクロック配線ツリーは、１つのルートドライバと、このルートドライバに直列に接続されている１つのクロックドライバと、このクロックドライバに並列に接続されている複数のクロックドライバとからなる。階層ブロック内のクロック配線ツリーはそれぞれ構造が違うので、この違いをトップレベルのクロック配線ツリーで吸収させるため、ルートドライバとクロック信号入力端子との間にクロックドライバを挿入する。
【００１２】
次にトップレベルのセル配置最適化及び配線、ＲＣ抽出を行う（ステップ１１）。最後にトップレベルのタイミング解析とタイミング調整を行って（ステップ１２）、レイアウト設計を終える。
【００１３】
【発明が解決しようとする課題】
前述した従来の階層レイアウトに従ったＦＦ／ラッチ回路への信号分配回路の設計方法では、分配回路の合成を各階層ブロック単位に行っていたことから、階層ブロックの大きさ、ＦＦの数、階層の深さ等が各階層ブロックごとに異なることによって生じる信号遅延の差等を、階層ブロック内またはトップレベルにおいて調整しなければならず、そのため最も悪い条件の階層ブロックに全体を合わせ、余分なバッファ−挿入を行っていた。一方、全てのレイアウトデータを単純に階層展開して分配回路の合成を行うことは、データ量が膨大になり過ぎるため、メモリ使用量・処理スピードの点で現実的な解決方法ではなかった。
【００１４】
そこで、本発明は、複数の階層ブロックを有する階層レイアウトの設計方法において、余分なバッファ挿入をしない最適な分配回路を設計する半導体集積回路の設計方法を提供することを目的とする。
【００１５】
【課題を解決するための手段】
上記課題を解決するために、本発明では、次に述べる特徴を有した方法によって、クロック等の分配回路の設計を行う。図１は、本発明の概念図である。図１において、１はネットリスト、２は複数の階層を有する階層レイアウトデータ，３は分配回路合成用データベース、４は分配回路、５は分配回路を配置した階層レイアウトデータである。図に示すように、階層レイアウトデータには上位階層Ａの下に下位階層Ｂ、Ｃが存在する。下位階層Ｂ、Ｃの中にはクロックや各種信号の供給を必要とするＦＦ回路やラッチ回路６が存在する。本発明では、まず階層レイアウトデータ２から、分配回路合成に必要なネット情報を抽出し、分配回路合成用のデータベース３を作成する。次に、分配回路合成用のデータベース３を入力して、階層のないフラットな状態で分配回路４を合成する。次に、合成された分配回路４を階層レイアウトデータ２上の位置に割当て、分配回路を配置した階層レイアウトデータ５を作成する。分配回路４のバッファ７及び配線８は、上位階層Ａや下位階層Ｂ，Ｃ内のレイアウトにマッピングされる。
【００１６】
このように、本発明では、半導体集積回路内全体に散らばって、複数の階層ブロック内にある複数のＦＦ／ラッチ回路へいっせいに供給するクロックや各種信号の分配回路の設計において、階層レイアウトデータの中から、分配回路合成に必要な情報のみを抽出し、階層のないフラットな状態で分配回路合成を行い、これを元の階層レイアウトデータへマッピングする。このため、余分なバッファの挿入が起こらない。また、抽出した必要な情報だけで分配回路合成を行い、他の回路の設計は階層処理を行うので、使用メモリ量が少なく分配回路の合成処理スピードも速い。
【００２３】
請求項１記載の発明は、ＣＰＵにて実行される半導体集積回路の設計方法において、
記憶部から複数の階層ブロックを有する階層構造のレイアウトデータを抽出し、抽出した前記階層構造のレイアウトデータに基づいてセット／リセット信号のネット情報を抽出してセット／リセット合成用データベースを作成し、
前記セット／リセット合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのセット／リセット信号分配回路を合成し、
前記セット／リセット信号分配回路を、前記階層構造のレイアウトデータ上へマッピングすることを特徴とする半導体集積回路設計方法。
【００２４】
この発明によれば、セット／リセット分配回路合成に必要な情報のみを抽出するので、データ量の少ないデータベースで高速な処理ができる。また階層展開した半導体集積回路全体についてセット／リセット分配回路の合成をするので、余分な中継バッファ挿入のない最適なセット／リセット分配回路の合成ができる。
【００２７】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を、図２〜図９を参照しながら説明する。
【００２８】
図２は、本発明を適用したレイアウト設計を行うためのハードウェア構成を表したものである。図２において、５０は全体を制御するＣＰＵを、５１はＲＯＭを、５２はＣＰＵの作業用記憶領域として使用されるＲＡＭを、５３はデータを読み書きするハードディスク（ＨＤ）を、５４はＣＰＵ５０の制御にしたがってハードディスク（ＨＤ）５３へのデータ読み書きを制御するハードディスクドライブ（ＨＤＤ）を、５５は各装置を接続するための内部バスを、５６はネットワークと内部とのインタフェース部を、５７、５８は各種入力装置及び各種出力装置を示す。また、５９，６０，６１は半導体集積回路のレイアウト設計を行うためのネットリスト、階層レイアウト、分配回路合成用データが格納されている各種データベースである。
【００２９】
図３は、本発明を適用した第一の実施形態の処理フロー図である。第一の実施形態では、クロック分配回路の設計を対象とする。まず、本発明の論理合成（ステップ２０１）では、同じ階層ブロックがチップ内に複数回配置されるものは、異なる別々の階層ブロックと認識されるように異なる名前を付けるブロック固有化処理をする。なお、本発明の対象となる階層レイアウトデータでは、同じブロックの繰返し配置がもともと少ない場合を想定している。このため、ブロック固有化処理によって増えるデータ量は問題となるほどではない。この処理によって、各階層ブロックはチップ内において単独で固有なブロックとなる。これは、後で合成するクロック分配回路を各階層ブロックへマッピングする処理のために必要である。この後のトップレベルのフロアプラン（ステップ２０２）トップレベルのセル配置処理とタイミング予測処理（ステップ２０３）及び階層ブロック内のフロアプラン（ステップ２０４）までは、従来の方法と同様なため説明を省略する。
【００３０】
次に、階層を有するネットリスト２１５及び階層レイアウトデータ２１６からクロック合成に必要な情報を抽出し、クロック合成用データベース２１７を作成する（ステップ２０５）。クロック合成用データベース２１７の作成については、後で詳述する。
【００３１】
次に、上記で抽出したフラットなクロックネットのデータベース２１７に対して、クロック合成を実施して、クロック合成及びクロック配線の生成を行う（ステップ２０６）。クロック合成にはクロックツリーを用いる。クロックツリーとは、クロックスキューを最小化するため、クロック配線網にバッファ回路を適宜挿入し、ツリ−状にレイアウトするものである。
【００３２】
次に、クロック合成によって生成したクロックバッファとクロック配線からなるクロック分配回路２１８を、階層ブロックのパーティション情報をもとに、トップレベル及び各階層ブロックの配置／配線情報とネットリストにマッピングし、クロック分配回路が配置された階層レイアウトデータ２１９を生成する（ステップ２０７）。マッピング処理についても、後で詳述する。
【００３３】
次に、合成したクロック分配回路を元に、トップレベル及び各階層ブロックのタイミング制約を編集する（ステップ２０８）。この処理では、クロック分配回路をトップレベル及び各階層ブロックにマッピングしたことによって、新たに発生したクロック端子をクロックソースピンとしてタイミング制約に追加する。このとき、追加したクロックソースのタイミングは、元のクロックソースと同じタイミングとする。
【００３４】
次に、各階層ブロックについて、上記のように編集したタイミング制約を使用し、配置調整（クロックバッファのオーバラップを解除する）とクロック配線の修正、信号の配線、ＲＣ抽出を順に実行する（ステップ２０９）。
【００３５】
次に、タイミング解析とタイミング調整を実行し、階層ブロックレベルのレイアウト処理を完了する（ステップ２１０）。
【００３６】
次に、階層ブロックのタイミング解析結果からタイミングモデルを作成する（ステップ２１１）。
【００３７】
次にトップレベルのタイミング制約と、上記で作成したブロックのタイミングモデルを使って、配置調整（クロックバッファのオーバラップ解除）とクロック配線の修正、信号の配線、ＲＣ抽出を順に実行する（ステップ２１２）。
【００３８】
最後に、タイミング解析とタイミング調整を実行し、トップレベルのレイアウト処理を完了する（ステップ２１３）。ここまでで、レイアウト処理全体を完了する。
【００３９】
図４の例を用い、クロック合成前の階層レイアウトについて説明する。図４以降では、従来の方法について説明した図１０や図１１と同じものを指す場合は、同じ番号を使用している。まず、チップ全体のネットリストから、クロックネットに関する情報のみを抽出する。図４の例では、クロックルートピン１０６を元に接続されたクロックネット１１０及びそのクロックネットに接続されたＦＦ回路及びラッチ回路１０３のセル全てを抽出する。併せて、チップレベル／各階層ブロックのセル配置情報からも、クロックネット１１０及びこのクロックネットに接続されたＦＦ回路及びラッチ回路１０３のセルの配置情報、クロック合成時の配置制約になるマクロセル（マクロＡ〜マクロＣ）の配置情報、その他のセル配置禁止情報等を抽出する。このようにして、クロックネットだけに関する階層のないフラットなネットリストと配置情報を格納したクロック合成用データベースを作成する。
【００４０】
図５は、クロック合成用データベースの作成について説明するための図である。クロック合成用データベースでは、座標値は階層展開され絶対座標値へ変換される。例えば、ブロック１０１Ｂの下位階層であるブロック１０１Ｅ内にあるＦＦ回路１１１の階層展開後の座標値（Ｘ、Ｙ）は、（Ｘ、Ｙ）＝チップ１００の原点（０，０）からの階層ブロック１０１Ｂの相対座標位置（Ｘ２，Ｙ２）＋階層ブロック１０１Ｂ原点からの階層ブロック１０１Ｅの相対座標位置（Ｘ３，Ｙ３）＋階層ブロック１０１Ｅ原点からのＦＦ回路１１１の相対座標位置（Ｘ５、Ｙ５）＝（Ｘ２＋Ｘ３＋Ｘ５、Ｙ２＋Ｙ３＋Ｙ５）となる。もし階層ブロックの配置に回転・反転が加わる場合は、適宜計算した上で階層展開する。このようにして、クロック合成用データベースの座標位置データは、全て階層展開してチップ１００原点からの絶対座標値に変換されている。
【００４１】
図６に、クロック合成用データベースの主なデータ内容を示す。クロック合成用データベースには、例えばクロック種テーブルを有する。クロック種テーブルは、トップレベル及び各階層ブロックのネットリストとＦＦ回路及びラッチ回路等の絶対座標値から作る。ここで、クロック種テーブルの項目は、例えばクロックソース毎に、クロックソース名、クロックサイクル、クロック波形の立上がりと立下り、目標とするクロックの遅延時間、目標とするクロックスキュー、クロックソースにぶらさがるＦＦ回路及びラッチ回路の数（シンクピン数）である。
【００４２】
図６の下部は、クロック合成用データベースの一部であるクロックドメインテーブルである。クロックドメインテーブルは、クロックの種数に応じてそれぞれ作成する。ここで、クロックドメインテーブルの項目は、例えばクロックソースにぶらさがるＦＦ回路及びラッチ回路及びクロックネットのリーフピンが設定されている回路のシンクセル名（連結固有名）、ピン名、ライブラリ名、配置座標（絶対座標）、セル配置時の回転コード、クロックスキュー調整の対象から外す場合の排他ピンフラグである。
【００４３】
次に、図７を用い、クロック分配回路の合成手順（ステップ２０６）についてより詳しく説明する。まず、配置されたＦＦ／ラッチ回路１０３に対して、クロックのクラスタ分割としてＦＦ／ラッチ回路１０３をダイヤモンド形状１１１に集め、その中心にローカルクロックバッファ１１４を配置する。例えば、図７の左上のＦＦ／ラッチ回路１０３を集めたダイヤモンド形状１１１の中心に、ローカルクロックバッファ１１４Ａを配置する。ローカルクロックバッファ１１４Ａから各ＦＦ／ラッチ回路１０３までは、等長となるように各ＦＦ／ラッチ回路１０３の位置を調節する。同様に、他のＦＦ／ラッチ回路１０３を集めた各ダイヤモンド形状１１１Ｂ〜Ｇでも、その中心にローカルクロックバッファ１１４Ｂ〜Ｇを置く。次に各ローカルクロックバッファ１１４Ａ〜Ｇを駆動するグローバルクロックバッファ１１５Ａ、Ｂ、Ｃを配置する。図７では、例えばローカルクロックバッファ１１４Ａと１１４Ｂを駆動するグローバルクロックバッファ１１５Ａが配置される。グローバルクロックバッファ１１５Ａから各ローカルクロックバッファ１１４Ａ、１１４Ｂまでは、等長となるようにグローバルクロックバッファ１１５Ａが配置される。図７からも分かるように、ローカルクロックバッファ１１４Ａ，１１４Ｂもグローバルクロックバッファ１１５Ａも同一階層ブロック１０１Ａ，１０１Ｂ内に配置されなければならないという制約はない。グローバルクロックバッファ１１５Ａは、異なる階層ブロック内のＦＦ／ラッチ回路１０３やローカルクロックバッファ１１４Ａ，１１４Ｂを配下に持っていて構わない。但し、クロックバッファが本来あるブロック枠上に配置されないように工夫がなされる。クロックバファの原点座標を基にブロック枠上は避け、いずれかのブロック枠内に収まるように調整される。更にグローバルクロックバッファ１１５Ａを駆動するためのグローバルクロックバッファも配置する。図７の例では、例えばグローバルクロックバッファ１１５Ａ，１１５Ｂ，１１５Ｃを駆動するグローバルクロックバッファ１１６、１１７，１１８などがこれに相当する。最後に、各クロックバッファ１１４Ａ〜Ｆ，１１５，１１６間、クロックバッファ１１４とＦＦ／ラッチ回路１０３間に対して、クロック配線１２０を行い、クロック分配回路を合成する。
【００４４】
図８は、先に合成したクロック分配回路を階層のあるレイアウトデータへマッピングする処理を説明する図である。まず階層ブロック１０１Ａ〜Ｅの外枠の絶対座標を算出する。絶対座標の求め方は、例えば図７のブロックＥの枠の座標値は、上位階層の階層ブロックＢの原点の座標値（Ｘ２、Ｙ２）と階層ブロックＥ自身の原点の座標値（Ｘ３、Ｙ３）と、階層ブロックＥの幅・高さの値を足した値（Ｘ３３，Ｙ３３）とから求める。次に、クロックバッファの相対座標位置を末端のものから決めていく。こうして、クロックバッファ１１４〜１１８の各座標位置は、階層展開した絶対座標値を各階層ブロック内の座標値に割当てて計算する。
【００４５】
さらにクロック配線１２０と階層ブロック１０１Ａ〜Ｅ枠との交点座標値を求め、これを階層ブロックのクロックピンの位置と定める。このようにして算出されたクロックピンの位置Ｐ１〜Ｐ８が図に示される。次に、挿入されたクロックピンＰ１〜Ｐ８の位置に基づいて、ネットリストは分割される。
【００４６】
タイミング制約の編集（ステップ２０８）では、まず、クロック合成後に追加された各階層ブロックのクロックピンＰ１〜Ｐ８をタイミング制約に追加する。このとき、新たに追加したクロックピンＰ１〜Ｐ８のタイミング制約は、クロック合成結果のタイミング情報を元に設定する。また、新たに追加したクロックピンＰ１〜Ｐ８は、元のクロックピンに対してマスター・スレーブの関係とする。すなわち、クロックピンは元々１本のクロックソースを元から派生するが、新しくできたクロックピンは大元のクロックソースを親とする親子（マスター・スレーブ）関係を持たせる。
【００４７】
次に、本発明を適用した第二の実施形態について説明する。本発明は、クロック分配回路以外の制御系ネット回路、例えばセット／リセット分配回路にも適用できる。セット／リセット分配回路とは、ＦＦ／ラッチ回路等のクリア／プリセット端子につながるセット／リセット信号のネットで、外部から全てのＦＦ／ラッチ回路に対してセット／リセット信号を送るものである。セット／リセット分配回路は、ＦＦ／ラッチ回路に接続する回路であり、基本的にクロックツリーと似た回路構造となる。しかし、クロック分配回路よりタイミングの制約が少ないため、少ないバッファでより効率良くツリーを構成するものである。従来では、クロック合成と同じ方法によって、階層ごとにファンアウトを調節しながらバッファを挿入し、ツリーを完成させていた。
【００４８】
第二の実施形態では、本発明を適用して、階層レイアウトデータから、セット／リセット合成に必要なネット情報を抽出して作ったセット／リセット合成用のデータベースを基に、階層のないフラットな状態でセット／リセット分配回路を合成し、この回路を階層レイアウトデータ上の位置に割当て、セット／リセット分配回路を配置した階層レイアウトデータを作成する。
【００４９】
図９は、本発明を適用した第二の実施形態による処理フロー図である。第二の実施形態の処理が第一の実施形態の処理と異なるのは、セット／リセット分配回路の合成に関わるステップ４１０から４１２の部分である。第二の実施形態では、論理合成（ステップ４０１）から、クロック合成後の各階層ブロック内のセル配置最適化（ステップ４０９）まで、第一の実施形態による処理フロー（図３）と同様の処理をするため、説明を省略する。
【００５０】
ステップ４０９の後、チップ全体のネットリストから、セット／リセットのネット及びセット／リセットのネットに接続されたＦＦ／ラッチ回路等のセルだけを抽出する。併せて、チップレベル／各階層ブロック内のセル配置情報からも、セット／リセットのネットに接続されたＦＦ／ラッチ回路等のセルだけを抽出し、セット／リセットのネットだけに関するフラットなネットリストと配置情報を格納したセット／リセット合成用データベース４２０を作成する（ステップ４１０）。
【００５１】
次に、セット／リセット合成用データベース４２０を基に、クロック合成と同様の方法でセット／リセット分配回路４２１のバッファ挿入とセット／リセット用ネット配線を行う（ステップ４１１）。このセット／リセット分配回路の合成４１１では、クロック合成に比べファンアウトの調整条件やタイミング条件が緩和されている。
【００５２】
次に、合成したセット／リセット分配回路４２１を、階層ブロックのパーティション情報を基に、トップ及び各階層ブロックの配置／配線情報とネットリストに割り付ける（ステップ４１２）。階層ブロックのピンの位置は、セット／リセット配線と階層ブロック枠との交点から座標を算出して決める。該当する階層ブロック枠の座標位置には、階層ブロックのピンを挿入し、ネットリストを分割する。
【００５３】
次に、階層ブロック内の他の配線を実施し、ＲＣ抽出を行う（ステップ４１３）。この後の処理は、クロック合成の処理フローと同様となる。
【００５４】
図１０は、本発明を適用した第２の実施形態におけるセット／リセット分配回路の合成（ステップ４１１）を説明する図である。セット／リセット分配回路の合成（ステップ４１１）では、配置されたＦＦ／ラッチ回路１０３に対して、クラスタ分割としてＦＦ／ラッチ回路１０３をダイヤモンド形状５１１Ａ〜Ｇに集め、その中心にローカルバッファ５０３Ａ〜Ｇを配置する。この方法は、第一の実施形態と同様である。異なるのは、セット／リセット分配回路の合成では、クロック合成に比べファンアウトの調整条件やタイミング条件が緩和されているため、より少ないバッファの挿入で済むという点である。ローカルバッファ５０３から各ＦＦ／ラッチ回路１０３までは等長になるように各ＦＦ／ラッチ回路１０３の位置が調節される。次にローカルバッファ５０３Ａ〜Ｇを駆動するグローバルバッファ５０１、５０２が配置され、リセットＩＯ５００から各バッファ５０１、５０２，５０３、各ＦＦ／ラッチ回路１０３間を接続するセット／リセット信号分配用の配線５０６が引かれ、セット／リセット分配回路を合成する。さらに、セットリセット信号分配用の配線５０６と階層ブロック１０１Ａ〜Ｅ枠の交点座標を求め、これを階層ブロックのセット／リセット信号分配用のピンの位置と定める。このようにして算出されたピンＰ５１〜５８の位置が図に示される。次に、挿入されたピンピンＰ５１〜５８の位置に基づいて、ネットリストは分割される。
【００５５】
以上、本発明の実施の形態を説明したが、本発明の半導体集積回路設計方法は実施の形態に記載した用途、構成及び条件に限られるものではなく、各種の変更が可能である。分配回路は、実施形態ではクロック分配回路とセット／リセット分配回路を例に取ったが、これに限らず、半導体集積回路全体に散らばり階層ブロックをまたがって配置される回路であれば、本発明を適用できる。
【００５６】
上記各実施形態の特徴をまとめると以下のようになる。
【００５７】
（付記１）  半導体集積回路の設計方法において、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、分配回路の合成に必要なネット情報を抽出して分配回路合成用データベースを作成する工程と、
前記分配回路合成用データベースを用いて、階層構造を展開した半導体集積回路全体についての分配回路の合成工程と、
前記合成された分配回路を、前記階層構造のレイアウトデータ上へマッピングする工程とを有することを特徴とする半導体集積回路設計方法。
【００５８】
（付記２）  付記１記載の半導体集積回路設計方法において、
前記分配回路とは、前記半導体集積回路内のフリップフロップ回路またはラッチ回路に入力するクロック又は信号を分配する回路であることを特徴とする半導体集積回路設計方法。
【００５９】
（付記３）  半導体集積回路の設計方法において、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、クロックネット情報を抽出してクロック合成用データベースを作成する工程と、
前記クロック合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのクロック分配回路の合成工程と、
前記クロック分配回路を、前記階層構造のレイアウトデータ上へマッピングする工程とを有することを特徴とする半導体集積回路設計方法。
【００６０】
（付記４）  半導体集積回路の設計方法において、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、セット／リセット信号のネット情報を抽出してセット／リセット合成用データベースを作成する工程と、
前記セット／リセット合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのセット／リセット信号分配回路の合成工程と、
前記セット／リセット信号分配回路を、前記階層構造のレイアウトデータ上へマッピングする工程とを有することを特徴とする半導体集積回路設計方法。
【００６１】
（付記５）  付記１記載の半導体集積回路設計方法において、
同一の階層ブロックを複数配置する場合には、予め前記階層ブロックを単独の階層ブロックとして固有化処理をすることを特徴とする半導体集積回路設計方法。
【００６２】
（付記６）  付記３記載の半導体集積回路設計方法において、
前記クロックネット情報とは、クロックルートピンに繋がるクロックネットリストと、該クロックネットリストに接続される全てのフリップフロップまたはラッチ回路の位置情報を含むことを特徴とする半導体集積回路設計方法。
【００６３】
（付記７）  付記３記載の半導体集積回路設計方法において、
前記クロック分配回路の合成は、クロックバッファの挿入及びクロック配線を合成することを含むことを特徴とする半導体集積回路設計方法。
【００６４】
（付記８）  付記３記載の半導体集積回路設計方法において、
合成した前記クロック分配回路と、前記階層ブロックの外枠との交点に、新たなクロックピンを生成することを特徴とする半導体集積回路設計方法。
【００６５】
（付記９）  付記３記載の半導体集積回路設計方法において、
前記マッピング工程には、前記クロック分配回路のクロックバッファ座標位置及び階層ブロックのクロックピン座標位置を求める工程と、
前記クロック分配回路の座標位置を、階層構造のレイアウトデータのチップまたは各階層ブロック内での座標位置に変換する工程とを有することを特徴とする半導体集積回路設計方法。
【００６６】
（付記１０）  付記３記載の半導体集積回路設計方法において、
更に前記クロック分配回路を前記階層レイアウトデータ上にマッピングすることによって新たにできたクロックピンをタイミング制約に追加する工程を有する
ことを特徴とする半導体集積回路設計方法。
【００６７】
（付記１１）  付記４記載の半導体集積回路設計方法において、
前記セット／リセット信号のネット情報とは、セット／リセットルートピンに繋がるセット／リセットネットリストと、該セット／リセットネットリストに接続される全てのフリップフロップまたはラッチ回路の位置情報を含むことを特徴とする半導体集積回路設計方法。
【００６８】
（付記１２）  付記４記載の半導体集積回路設計方法において、
前記セット／リセット分配回路の合成は、バッファの挿入及びセット／リセット信号の配線を合成することを含むことを特徴とする半導体集積回路設計方法。
【００６９】
（付記１３）  付記４記載の半導体集積回路設計方法において、
合成した前記セット／リセット分配回路と、前記階層ブロックの外枠との交点に、新たなピンを生成することを特徴とする半導体集積回路設計方法。
【００７０】
（付記１４）  付記４記載の半導体集積回路設計方法において、
前記マッピングする工程には、前記セット／リセット分配回路のバッファ座標位置及び階層ブロックのピン座標位置を求める工程と、
前記セット／リセット分配回路の座標位置を、階層構造のレイアウトデータのチップまたは各階層ブロック内での座標位置に変換する工程とを有することを特徴とする半導体集積回路設計方法。
【００７１】
（付記１５）  付記４記載の半導体集積回路設計方法において、
更に前記セット／リセット分配回路を前記階層レイアウトデータ上にマッピングすることによって新たにできたピンをタイミング制約に追加する工程を有することを特徴とする半導体集積回路設計方法。
【００７２】
（付記１６）  半導体集積回路の設計プログラムにおいて、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、分配回路の合成に必要なネット情報を抽出する分配回路合成用データベースを作成し、
前記分配回路合成用データベースを用いて、階層構造を展開した半導体集積回路全体についての分配回路を合成し、
前記合成された分配回路を、前記階層構造のレイアウトデータ上へマッピングする工程を有することを特徴とする半導体集積回路設計プログラム。
（付記１７）  半導体集積回路の設計プログラムにおいて、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、クロックネット情報を抽出するクロック合成用データベースを作成し、
前記クロック合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのクロック分配回路を合成し、
前記クロック分配回路を、前記階層構造のレイアウトデータ上へマッピングすることを特徴とする半導体集積回路設計プログラム。
【００７３】
（付記１８）  付記１７記載の半導体集積回路設計プログラムにおいて、
同一の階層ブロックを複数配置する場合には、予め前記階層ブロックを単独の階層ブロックとして固有化処理をすることを特徴とする半導体集積回路設計プログラム。
【００７４】
（付記１９）  付記１７記載の半導体集積回路設計プログラムにおいて、
前記クロックネット情報とは、クロックルートピンに繋がるクロックネットリストと、該クロックネットリストに接続される全てのフリップフロップまたはラッチ回路の位置情報を含むことを特徴とする半導体集積回路設計プログラム。
【００７５】
（付記２０）  半導体集積回路の設計プログラムにおいて、
複数の階層ブロックを有する階層構造のレイアウトデータを入力し、セット／リセット信号のネット情報を抽出するセット／リセット合成用データベースを作成し、
前記セット／リセット合成用データベースを用いて、階層構造を展開した半導体集積回路全体についてのセット／リセット信号分配回路を合成し、
前記セット／リセット信号分配回路を、前記階層構造のレイアウトデータ上へマッピングすることを特徴とする半導体集積回路設計プログラム。
【００７６】
【発明の効果】
以上説明したように、本発明では、階層を展開した状態でＦＦ／ラッチ回路へのクロック又は各種信号の分配回路の設計を行い、階層を有するレイアウトデータと合体させるので、余分な中継バッファを挿入せず最適な分配回路を設計できる。
【図面の簡単な説明】
【図１】  本発明の概念図
【図２】  本発明を適用した設計方法のためのハードウェア構成図
【図３】  本発明を適用した第一の実施形態による処理フロー図
【図４】  クロック合成前の階層レイアウト
【図５】  クロック合成用データベースの作成
【図６】  クロック合成用データベースの内容
【図７】  クロック分配回路の合成
【図８】  クロック分配回路のマッピング
【図９】  本発明を適用した第二の実施形態による処理フロー図
【図１０】  セット／リセット分配回路の合成
【図１１】  第一の従来方法
【図１２】  第二の従来方法
【図１３】  従来の方法による処理フロー
【符号の説明】
２  階層レイアウトデータ
３  分配回路合成用データベース
４  分配回路
５  分配回路を配置した階層レイアウトデータ
６、１０３  ＦＦ／ラッチ回路
７  バッファ
１００  チップ
１０１Ａ〜Ｅ  階層ブロック
１１４Ａ〜Ｇ  ローカルクロックバッファ
１１５  グローバルクロックバッファ
１２０  クロック配線
２１８  クロック分配回路
２７０  クロック合成用データベース
４２０  セット／リセット合成用データベース
４２１  セット／リセット分配回路
５０３  セット／リセット信号分配用のローカルバッファ
５０６  セット／リセット信号分配用の配線
【図１】
0004131119.tif 000002
【図２】
0004131119.tif 000003
【図３】
0004131119.tif 000004
【図４】
0004131119.tif 000005
【図５】
0004131119.tif 000006
【図６】
0004131119.tif 000007
【図７】
0004131119.tif 000008
【図８】
0004131119.tif 000009
【図９】
0004131119.tif 000010
【図１０】
0004131119.tif 000011
【図１１】
0004131119.tif 000012
【図１２】
0004131119.tif 000013
【図１３】
0004131119.tif 000014