(57)【要約】【課題】本発明は、集積回路を複数のブロックに分割して設計を行うときに、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようにする新たな集積回路設計技術の提供を目的とする。【解決手段】ブロックレベルのネットリストとチップレベルのネットリストとを分離し、チップレベルのネットリストについてはブロックを意識しない形で作成できるようにして、チップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についてその配置先ブロックを決定すると、その情報に基づいて、チップレベルのネットリストをブロックレベルのネットリストに反映させることで、最終的なネットリストを作成する。チップ全体で最適化する必要がある回路系について、ブロックを意識しない形でネットリストを作成できることから、その最適化を効率的に実行できるようになる。【選択図】図１
2008090695.tif 000002
【特許請求の範囲】
【請求項１】
集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法であって、
ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する過程と、
チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する過程と、
チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する過程と、
前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する過程とを備えることを、
特徴とする集積回路設計方法。
【請求項２】
請求項１に記載の集積回路設計方法において、
チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程を備え、
前記配置先ブロックを決定する過程では、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定することを、
特徴とする集積回路設計方法。
【請求項３】
請求項１に記載の集積回路設計方法において、
ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する過程と、
チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程と、
前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する過程とを備えることを、
特徴とする集積回路設計方法。
【請求項４】
請求項２又は３に記載の集積回路設計方法において、
前記チップ上の配置位置を決定する過程では、その配置位置が配置の許されていない領域にある場合には、最も近くに位置する配置の許されている領域内に移動させることで、その配置位置を決定することを、
特徴とする集積回路設計方法。
【請求項５】
請求項１ないし４のいずれか１項に記載の集積回路設計方法において、
キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合に、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、
特徴とする集積回路設計方法。
【請求項６】
請求項１ないし５のいずれか１項に記載の集積回路設計方法において、
キーワードを付与したネットリストが修正された場合に、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、
特徴とする集積回路設計方法。
【請求項７】
請求項１ないし６のいずれか１項に記載の集積回路設計方法において、
キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する過程を備えることを、
特徴とする集積回路設計方法。
【請求項８】
集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置であって、
ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、
チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、
チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、
前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段とを備えることを、
特徴とする集積回路設計装置。
【請求項９】
集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置の実現に用いられる集積回路設計プログラムであって、
コンピュータを、
ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、
チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、
チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、
前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段として機能させるための集積回路設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法及びその装置と、その集積回路設計装置の実現に用いられる集積回路設計プログラムとに関し、特に、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようにするとともに、集積回路を効率的に設計できるようにする集積回路設計方法及びその装置と、その集積回路設計装置の実現に用いられる集積回路設計プログラムとに関する。
【背景技術】
【０００２】
年々大規模化する集積回路の設計では、一般的に階層設計が行われる。この階層設計では、集積回路をいくつかのブロックに分割して、それぞれを独立に並行して設計を進めることで、大規模な集積回路を効率的に設計できるようにしている。
【０００３】
この階層設計では、いくつかの課題があり、その一つにクロック分配回路の設計がある。クロック分配回路では集積回路全体で分配系を最適化するのが理想である。しかしながら、従来の階層設計では、このようなクロック分配回路についても、各ブロック毎に分割して回路設計を行うようにしている。
【０００４】
次に、図１４〜１８に従って、従来の階層設計により行われるクロック分配回路の回路設計について具体的に説明する。
【０００５】
集積回路を階層設計する場合には、先ず最初に、ブロックを単位にして、フリップフロップやラッチやバッファなどの回路素子の論理的な接続のみについて論理設計を行い、次に、それらの回路素子やブロックの具体的な配置について物理設計を行うことになる。
【０００６】
図１４に、階層設計に従って論理設計されたクロック分配回路の一例を図示する。この例では、集積回路を論理ブロックＡ、論理ブロックＢ、論理ブロックＣ、論理ブロックＤという４つの論理ブロックに分割してクロック分配回路の論理設計を行うとともに、クロック分配回路を構成するクロックバッファｐを論理ブロックＤに配置することを想定している。ここで、図中に示す太線は論理ブロック間を接続する論理配線である。
【０００７】
図１５〜１７に、このときに論理設計されたクロック分配回路のネットリストのデータを図示する。
【０００８】
このネットリストでは、図１５（ａ）の部分で、集積回路のチップがピンｃｋを持ち、クロックｃｋを入力するということについて定義するとともに、論理ブロックＤがクロックｃｋを入力するピンｃｋ１と、信号ｗ１を出力するピンｃｋ２と、信号ｗ１を入力するピンｃｋ３とを持ち、論理ブロックＡが信号ｗ１を入力するピンｃｋを持ち、論理ブロックＢが信号ｗ１を入力するピンｃｋを持ち、論理ブロックＣが信号ｗ１を入力するピンｃｋを持つということについて定義することで、チップに配置される論理ブロックの接続関係について定義している。
【０００９】
また、図１５（ｂ）の部分で、論理ブロックＡがピンｃｋを持ち、クロックｃｋを入力するということについて定義するとともに、図１４に示すクロックバッファbuf2i0がクロックｃｋを入力として信号ｗ１を出力し、図１４に示すクロックバッファbuf3i1が信号ｗ１を入力として信号ｗ２を出力し、図１４に示すクロックバッファbuf3i2が信号ｗ１を入力として信号ｗ３を出力するということについて定義する。
【００１０】
さらに、図１５（ｂ）の部分で、フリップフロップffi0（左側のグループの左端に位置するフリップフロップ）が信号ｗ２を入力とするピンｃｋを持ち、フリップフロップffi1（左側のグループの左端から２番目に位置するフリップフロップ）が信号ｗ２を入力とするピンｃｋを持ち、フリップフロップffi2（左側のグループの左端から３番目に位置するフリップフロップ）が信号ｗ２を入力とするピンｃｋを持ち、フリップフロップffi3（左側のグループの右端に位置するフリップフロップ）が信号ｗ２を入力とするピンｃｋを持つということについて定義している。
【００１１】
さらに、図１５（ｂ）の部分で、フリップフロップffi4（右側のグループの左端に位置するフリップフロップ）が信号ｗ３を入力とするピンｃｋを持ち、フリップフロップffi5（右側のグループの左端から２番目に位置するフリップフロップ）が信号ｗ３を入力とするピンｃｋを持ち、フリップフロップffi6（右側のグループの左端から３番目に位置するフリップフロップ）が信号ｗ３を入力とするピンｃｋを持ち、フリップフロップffi7 (右側のグループの右端に位置するフリップフロップ）が信号ｗ３を入力とするピンｃｋを持つということについて定義している。
【００１２】
また、図１６（ｃ）の部分で、論理ブロックＢについて、図１５（ｂ）と同様のことについて定義している。
【００１３】
また、図１６（ｄ）の部分で、論理ブロックＣについて、図１５（ｂ）と同様のことについて定義している。
【００１４】
また、図１７（ｅ）の部分で、論理ブロックＤについて、ピンｃｋ１，ｃｋ２，ｃｋ３を持ち、クロックｃｋ１，ｃｋ２を入力としてクロックｃｋ３を出力するということについて定義するとともに、図１５（ｂ）と同様のことについて定義し、さらに、これらに加えて、buf1i0で示されるクロックバッファｐについて、クロックｃｋ１を入力としてクロックｃｋ３を出力するということについて定義している。
【００１５】
集積回路の設計者は、階層設計に従ってクロック分配回路を設計する場合、先ず最初に、各ブロックに配置するクロック回路部分を決めて、それからブロックを単位とする論理設計を行うことで、図１５〜１７に示すように、ブロックを単位とするクロック分配回路のネットリストを作成し、続いて、図１８に示すように、論理ブロックや回路素子の具体的な配置について物理設計を行う。ここで、図中に示す太線は物理ブロック間を接続する物理配線である。
【００１６】
このようにして、従来技術では、階層設計に従って集積回路をいくつかのブロックに分割して設計する場合に、集積回路全体で分配系を最適化するのが理想であるクロック分配回路についても、各ブロック毎に分割して回路設計を行うようにしている。
【００１７】
ここで、下記に示す特許文献１，２では、本発明に関連する技術について開示している。
【００１８】
すなわち、下記に示す特許文献１には、各階層からクロック合成をするのに必要な論理を取り出し、合成されたクロックを分割して各階層に戻すという発明が記載されている。また、下記に示す特許文献２には、各階層を展開した形にしてクロック配線を行い、その結果を見ながら同じような配線を各階層の中で行うという発明が記載されている。
【特許文献１】特開２００３−３１６８４３号公報
【特許文献２】特開平８−１２９５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、クロック分配回路のような集積回路全体で最適化するのが理想であるような回路系について、その最適化を効率的に実行できないという問題がある。
【００２０】
すなわち、従来技術のように、クロック分配回路を分割して設計するようにしていると、全体を見たスキュー（クロック到達時間の差）などを考慮した最適化が難しいという問題がある。
【００２１】
このように、クロック分配回路のような集積回路全体で最適化するのが理想であるような回路系については、ブロックに分割せずに設計できるようにする必要があるが、従来技術では、このような回路系についてもブロックに分割して設計していることから、集積回路全体で最適化するのが難しいのである。
【００２２】
しかも、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、その回路設計を効率的に実行できないという問題もある。
【００２３】
すなわち、図１４に示すように、論理設計時にはクロックバッファｐは論理ブロックＤに入っているが、物理設計時に、クロックバッファｐを別の物理ブロックに入れる必要があるということが判明することが起こる。例えば、図１９に示すように、クロックバッファｐを物理ブロックＡに入れる必要があるということが判明することが起こる。
【００２４】
このようなことが起こると、論理設計でも、クロックバッファｐが論理ブロックＡに入るように論理修正する必要がある。
【００２５】
このように、従来技術に従っていると、集積回路を複数のブロックに分割して回路設計を行うときに、物理設計の都合での変更が論理修正を伴い、これにより、集積回路を効率的に設計できないという問題もある。
【００２６】
本発明はかかる事情に鑑みてなされたものであって、集積回路を複数のブロックに分割して回路設計を行うときに、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようにするとともに、集積回路を効率的に設計できるようにする新たな集積回路設計技術の提供を目的とする。
【課題を解決するための手段】
【００２７】
この目的を達成するために、本発明の集積回路設計装置は、集積回路を複数のブロックに分割して回路設計を行うときにあって、（１）ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成するブロックレベルネットリスト作成手段と、（２）チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子とブロックレベルネットリスト作成手段の割り付けた入力ピンとについてのチップレベルのネットリストを作成するチップレベルネットリスト作成手段と、（３）チップレベルで設計する回路素子の内の配置先ブロックの決められないものについて、その配置先のブロックを決定する配置先ブロック決定手段と、（４）配置先ブロック決定手段の決定した配置先ブロックの情報に基づいて、チップレベルネットリスト作成手段の作成したチップレベルのネットリストを、ブロックレベルネットリスト作成手段の作成したブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成するネットリスト作成手段とを備える構成を採る。
【００２８】
さらに、本発明の集積回路設計装置は、（５）ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定するブロックレベル配置位置決定手段と、（６）チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定するチップレベル配置位置決定手段と、（７）チップレベル配置位置決定手段の決定したチップ上の回路素子の配置位置の情報を、ブロックレベル配置位置決定手段の決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置を決定する回路素子配置位置決定手段とを備えることがある。
【００２９】
さらに、本発明の集積回路設計装置は、（８）キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合に、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換えるチップレベル修正対応手段と、（９）キーワードを付与したネットリストが修正された場合に、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換えるブロックレベル修正対応手段と、（１０）キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する判断手段とを備えることがある。
【００３０】
以上の各処理手段はコンピュータプログラムでも実現できるものであり、このコンピュータプログラムは、適当なコンピュータ読み取り可能な記録媒体に記録して提供されたり、ネットワークを介して提供され、本発明を実施する際にインストールされてＣＰＵなどの制御手段上で動作することにより本発明を実現することになる。
【００３１】
このように構成される本発明の集積回路設計装置では、先ず最初に、集積回路の設計者と対話することでブロックレベルの設計を行って、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する。
【００３２】
そして、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する。
【００３３】
続いて、集積回路の設計者と対話することでチップレベルの設計を行って、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子とブロックレベルで割り付けられた入力ピンとについてのチップレベルのネットリストを作成する。
【００３４】
そして、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する。このとき、決定しようとするチップ上の配置位置が配置の許されていない領域にある場合には、最も近くに位置する配置の許されている領域内に移動させることで、その配置位置を決定する。
【００３５】
続いて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する。このとき、その回路素子について決定したチップ上の配置位置に基づいて、その回路素子がどのブロック内に位置するのかを特定することで、その配置先のブロックを決定することがある。
【００３６】
続いて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて決定した配置先ブロックの情報に基づいて、チップレベルのネットリストをブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する。
【００３７】
最後に、チップレベルで設計する回路素子について決定したチップ上の回路素子の配置位置の情報を、ブロックレベルで設計する回路素子について決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する。
【００３８】
このようにして、本発明の集積回路設計装置では、ブロックレベルのネットリストとチップレベルのネットリストとを分離し、チップレベルのネットリストについては、ブロックを意識しない形で作成できるようにして、そのチップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についてその配置先ブロックを決定すると、その配置先ブロックの情報に基づいて、そのようにして作成したチップレベルのネットリストをブロックレベルのネットリストに反映させることで、最終的なブロックレベルのネットリストを作成するように処理するのである。
【００３９】
この構成に従って、本発明の集積回路設計装置によれば、集積回路の設計者は、チップ全体で最適化する必要があるクロック分配回路のような回路系について、ブロックを意識しない形でネットリストを作成することができるようになることから、その最適化を効率的に実行できるようになる。
【００４０】
しかも、本発明の集積回路設計装置によれば、ブロックレベルのネットリストとチップレベルのネットリストとを変更することなく、チップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についての配置先ブロックを変更することで、新たな最終的なネットリストを作成することができることから、物理設計の都合での変更が論理修正を伴うというようなことが起こらないことで、集積回路を効率的に設計できるようになる。
【００４１】
本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正されるようなことが起こる。このようなことが起こると整合性が保てなくなる。
【００４２】
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合には、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換えるように処理する。
【００４３】
また、本発明の集積回路設計装置では、キーワードを付与したネットリストが修正されることが起こる。このようなことが起こると整合性が保てなくなる。
【００４４】
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストが修正された場合には、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換えるように処理する。
【００４５】
また、本発明の集積回路設計装置では、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正されたり、キーワードを付与したネットリストが修正されることが起こる。このようなことが起こる場合にあって、集積回路の設計者がその整合性を保つための処理を起動することを忘れることがある。
【００４６】
そこで、本発明の集積回路設計装置では、キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する機能を用意している。
【発明の効果】
【００４７】
本発明によれば、集積回路の設計者は、チップ全体で最適化する必要があるクロック分配回路のような回路系について、ブロックを意識しない形でネットリストを作成することができるようになることから、その最適化を効率的に実行できるようになる。
【００４８】
しかも、本発明によれば、ブロックレベルのネットリストとチップレベルのネットリストとを変更することなく、チップレベルのネットリストに記述される配置先ブロックの決められていない回路素子についての配置先ブロックを変更することで、新たな最終的なネットリストを作成することができることから、物理設計の都合での変更が論理修正を伴うというようなことが起こらないことで、集積回路を効率的に設計できるようになる。
【発明を実施するための最良の形態】
【００４９】
以下、実施の形態に従って本発明を詳細に説明する。
【００５０】
図１に、クロック分配系を設計する本発明を具備する集積回路設計装置１の一実施形態例を図示する。
【００５１】
ここで、以下に説明する実施形態例では、クロックバッファ間のネットの配線や回路素子間のネットの配線を行う機能については説明の便宜上省略している。
【００５２】
この図１に示すように、本実施形態例の集積回路設計装置１は、クロック分配回路の設計者の操作する入出力端末２に接続され、入出力端末２との間の入出力処理を実行する入出力部１０と、記憶素子配置手段１１と、記憶素子配置情報データベース１２と、記憶素子グループ化設定手段１３と、記憶素子グループ化情報データベース１４と、入力ピン割当手段１５と、記憶素子グループ表示手段１６と、ネットリスト作成手段１７と、ネットリスト情報データベース１８と、サイト管理手段１９と、クロックバッファ配置手段２０と、クロックバッファ配置情報データベース２１と、最終ネットリスト作成手段２２と、最終ネットリスト情報データベース２３と、レイアウトデータ作成手段２４と、レイアウトデータ情報データベース２５と、チェック手段２６と、第１の削除手段２７と、第２の削除手段２８と、第１の置換手段２９と、第１の置換手段３０とを備える。
【００５３】
集積回路のチップレベルで定義されたクロック分配系は、チップの入力から供給されるクロックを途中何段かのクロックバッファを経由して、フリップフロップやラッチやＲＡＭなどのクロック同期の記憶素子まで供給する。
【００５４】
チップが階層設計された場合には、これらの記憶素子は分割された各ブロックの中にある。この場合、一般的には各ブロックの入口にクロック入力を作り、そこからブロックの中にクロック分配回路を入れて記憶素子までクロックを分配する。そして、チップレベルでは、チップのクロック入力から各ブロックのクロック入力までクロックを分配する回路のネットリストを作成する。
【００５５】
しかしながら、本来は、クロック分配系はチップ全体で記憶素子までクロックを分配する回路のネットリストを作成して、そのネットリストの中のクロックバッファの配置及びクロックネットの配線をチップレベルで行った方が最適化や配置・配線が効率的なものとなる。
【００５６】
そこで、本実施形態例の集積回路設計装置１は、以下に説明する構成に従って、このことを実現するものである。
【００５７】
〔１〕記憶素子配置手段１１の処理
記憶素子配置手段１１は、ブロックレベルの処理を行うものであって、クロック分配回路の設計者と対話することで、各ブロックの中にラッチなどの記憶素子を配置して、その配置データを記憶素子配置情報データベース１２に格納する。
【００５８】
図２に、記憶素子配置手段１１の作成した記憶素子の配置データの一例を図示する。
【００５９】
ここで、この配置データは、図１４に示した論理回路に記述される記憶素子を配置することを想定している。また、この配置データでは、各ブロックのローカルな座標系を使って各記憶素子の配置位置を表している。
【００６０】
〔２〕記憶素子グループ化設定手段１３の処理
記憶素子グループ化設定手段１３は、ブロックレベルの処理を行うものであって、各ブロックの中で同一の最終段クロックバッファからクロック供給を受け取る記憶素子を、
グループ１：記憶素子番号１，・・・・・・・・・
グループ２：記憶素子番号ｎ，・・・・・・・・・
・
・
というようにグループ化して、そのグループ化情報を記憶素子グループ化情報データベース１４に格納する。
【００６１】
図２の配置データに記述される記憶素子で説明するならば、記憶素子グループ化設定手段１３は、例えば、ブロックＡのffi0〜ffi3を１つのグループとし、ブロックＡのffi4〜ffi7を１つのグループとして設定する。そして、ブロックＢのffi0〜ffi3を１つのグループとし、ブロックＢのffi4〜ffi7を１つのグループとして設定する。そして、ブロックＣのffi0〜ffi3を１つのグループとし、ブロックＣのffi4〜ffi7を１つのグループとして設定する。そして、ブロックＤのffi0〜ffi3を１つのグループとし、ブロックＤのffi4〜ffi7を１つのグループとして設定する。
【００６２】
このグループ化を行う理由は、verilog(ネットリストを記述する言語）の違うブロックにまたがってグループ化を行うとネットリストの記述が複雑になるなどの問題があるからである。
【００６３】
ここで、このグループ化情報については、外部からファイルの形で与えられることもある。
【００６４】
〔３〕入力ピン割当手段１５の処理
入力ピン割当手段１５は、ブロックレベルの処理を行うものであって、記憶素子グループ化設定手段１３の設定した各記憶素子グループに対して、１つの入力ピンを割り当てて、その割り当てたデータを記憶素子グループ化情報データベース１４に格納する。
【００６５】
図３に、入力ピン割当手段１５の作成した入力ピンの割当データの一例を図示する。
【００６６】
この図３に示すように、入力ピン割当手段１５は、例えば、１つのグループとしたブロックＡのffi0〜ffi3に対して、クロックｃｋを入力するための入力ピンｃｋ１を割り当て、１つのグループとしたブロックＡのffi4〜ffi7に対して、クロックｃｋを入力するための入力ピンｃｋ２を割り当てる。
【００６７】
そして、入力ピン割当手段１５は、例えば、１つのグループとしたブロックＢのffi0〜ffi3に対して、クロックｃｋを入力するための入力ピンｃｋ１を割り当て、１つのグループとしたブロックＢのffi4〜ffi7に対して、クロックｃｋを入力するための入力ピンｃｋ２を割り当てる。
【００６８】
そして、入力ピン割当手段１５は、例えば、１つのグループとしたブロックＣのffi0〜ffi3に対して、クロックｃｋを入力するための入力ピンｃｋ１を割り当て、１つのグループとしたブロックＣのffi4〜ffi7に対して、クロックｃｋを入力するための入力ピンｃｋ２を割り当てる。
【００６９】
そして、入力ピン割当手段１５は、例えば、１つのグループとしたブロックＤのffi0〜ffi3に対して、クロックｃｋを入力するための入力ピンｃｋ１を割り当て、１つのグループとしたブロックＤのffi4〜ffi7に対して、クロックｃｋの入力のための入力ピンｃｋ２を割り当てる。
【００７０】
この入力ピン割当手段１５の処理に従って、図３に示すように、ブロックレベルのネットリストが作成されることになる。
【００７１】
〔４〕記憶素子グループ表示手段１６の処理
記憶素子グループ表示手段１６は、チップレベルに従って各ブロックを表示画面に表示する際に、記憶素子グループ化設定手段１３の設定した各記憶素子グループの配置位置と、そのグループを示す枠（グループ内の記憶素子を囲む最小矩形などの枠）とを表示画面に描画するとともに、この描画にあたって、入力ピン割当手段１５の割り当てた入力ピンをその枠位置に描画する。
【００７２】
〔５〕ネットリスト作成手段１７の処理
ネットリスト作成手段１７は、チップレベルの処理を行うものであって、記憶素子グループ表示手段１６の表示する描画データを使って、クロック分配回路の設計者と対話することで、ブロックに属さない形で定義されるクロックバッファと、ブロック内に配置される形で定義されるクロックバッファと、入力ピン割当手段１５の割り当てた入力ピン（どのブロックに配置されるのが定義されている）との間の接続関係について規定するチップレベルのネットリストを設計して、ネットリスト情報データベース１８に格納する。
【００７３】
すなわち、ネットリスト作成手段１７は、チップレベルで記述されるクロック分配回路のネットリストを設計して、ネットリスト情報データベース１８に格納するように処理するのである。
【００７４】
図４に、ネットリスト作成手段１７が図３に示す入力ピンの割当データに基づいて作成したネットリストの一例を図示する。
【００７５】
この図４に示すネットリストでは、（ａ）の部分で、チップがピンｃｋを持ち、クロックｃｋを入力するということについて定義するとともに、信号として、ｗ１，ｗ２ Ａ，ｗ３ Ａ，ｗ４ Ａ，ｗ２ Ｂ，ｗ３ Ｂ，ｗ４ Ｂ，ｗ２ Ｃ，ｗ３ Ｃ，ｗ４ Ｃ，ｗ２ Ｄ，ｗ３ Ｄ，ｗ４ Ｄというものが用いられることについて定義する。
【００７６】
また、（ｂ）の部分で、ブロックに属さない形で定義されるクロックバッファとして、クロックｃｋを入力として信号ｗ１を出力するクロックバッファbuf1i0があるということについて定義する。
【００７７】
また、（ｃ）の部分で、ブロックＡに配置されるクロックバッファとして、信号ｗ１を入力として信号ｗ２ Ａを出力するクロックバッファbuf2i1 Ａと、信号ｗ２ Ａを入力として信号ｗ３ Ａを出力するクロックバッファbuf3i2 Ａと、信号ｗ２ Ａを入力として信号ｗ４ Ａを出力するクロックバッファbuf3i3 Ａというものがあることについて定義する。
【００７８】
また、（ｄ）の部分で、ブロックＢに配置されるクロックバッファとして、信号ｗ１を入力として信号ｗ２ Ｂを出力するクロックバッファbuf2i1 Ｂと、信号ｗ２ Ｂを入力として信号ｗ３ Ｂを出力するクロックバッファbuf3i2 Ｂと、信号ｗ２ Ｂを入力として信号ｗ４ Ｂを出力するクロックバッファbuf3i3 Ｂというものがあることについて定義する。
【００７９】
また、（ｅ）の部分で、ブロックＣに配置されるクロックバッファとして、信号ｗ１を入力として信号ｗ２ Ｃを出力するクロックバッファbuf2i1 Ｃと、信号ｗ２ Ｃを入力として信号ｗ３ Ｃを出力するクロックバッファbuf3i2 Ｃと、信号ｗ２ Ｃを入力として信号ｗ４ Ｃを出力するクロックバッファbuf3i3 Ｃというものがあることについて定義する。
【００８０】
また、（ｆ）の部分で、ブロックＤに配置されるクロックバッファとして、信号ｗ１を入力として信号ｗ２ Ｄを出力するクロックバッファbuf2i1 Ｄと、信号ｗ２ Ｄを入力として信号ｗ３ Ｄを出力するクロックバッファbuf3i2 Ｄと、信号ｗ２ Ｄを入力として信号ｗ４ Ｄを出力するクロックバッファbuf3i3 Ｄというものがあることについて定義する。
【００８１】
また、（ｇ）の部分で、ブロックＡが、信号ｗ３ Ａを入力するピンｃｋ１（入力ピン割当手段の割り当てた入力ピンｃｋ１）と、信号ｗ４ Ａを入力するピンｃｋ２（入力ピン割当手段の割り当てた入力ピンｃｋ２）とを持つということを定義する。そして、ブロックＢが、信号ｗ３ Ｂを入力するピンｃｋ１（入力ピン割当手段の割り当てた入力ピンｃｋ１）と、信号ｗ４ Ｂを入力するピンｃｋ２（入力ピン割当手段の割り当てた入力ピンｃｋ２）とを持つということを定義する。そして、ブロックＣが、信号ｗ３ Ｃを入力するピンｃｋ１（入力ピン割当手段の割り当てた入力ピンｃｋ１）と、信号ｗ４ Ｃを入力するピンｃｋ２（入力ピン割当手段の割り当てた入力ピンｃｋ２）とを持つということを定義する。そして、ブロックＤが、信号ｗ３ Ｄを入力するピンｃｋ１（入力ピン割当手段の割り当てた入力ピンｃｋ１）と、信号ｗ４ Ｄを入力するピンｃｋ２（入力ピン割当手段の割り当てた入力ピンｃｋ２）とを持つということについて定義する。
【００８２】
このように、ブロックレベルの処理を行う記憶素子配置手段１１や記憶素子グループ化設定手段１３や入力ピン割当手段１５では、チップ全体で最適化の要求されるクロックバッファについて取り扱わないようにして、チップレベルの処理を行うネットリスト作成手段１７で始めて、そのようなクロックバッファについて取り扱うようにしている。
【００８３】
このようにして、ネットリスト作成手段１７は、記憶素子グループ表示手段１６の表示する描画データを使って、クロック分配回路の設計者と対話することで、ブロックに属さない形で定義されるクロックバッファと、ブロック内に配置される形で定義されるクロックバッファと、入力ピン割当手段１５の割り当てた入力ピンとの間の接続関係について規定するチップレベルのネットリストを設計して、ネットリスト情報データベース１８に格納するのである。
【００８４】
〔６〕クロックバッファ配置手段２０の処理
クロックバッファ配置手段２０は、チップレベルの処理を行うものであって、ネットリスト作成手段１７の作成したネットリストで定義されるクロックバッファを処理対象として、クロック分配回路の設計者と対話することで、それらのクロックバッファのチップ上の最適な配置位置を決定するとともに、各ブロックのチップ上の配置位置を決定して、それらの配置データをクロックバッファ配置情報データベース２１に格納する。
【００８５】
この配置位置の決定にあたって、クロックバッファ配置手段２０は、チップ上の配置の許されている領域（サイト）の情報を管理するサイト管理手段１９の管理データを参照することで、クロック分配回路の設計者の指定するクロックバッファの配置位置がチップ上の配置の許されている領域にあるのか否かを判断して、配置の許されていない領域にある場合には、最も近くに位置する配置の許されているサイト内に移動させることで、その配置位置を決定する。
【００８６】
この機能が用意されていることで、クロック分配回路の設計者は、サイトのことを意識することなく、クロックバッファのチップ上の配置位置を決定することができるようになる。
【００８７】
図５に、クロックバッファ配置手段２０の作成したクロックバッファの配置データの一例を図示する。
【００８８】
ここで、この配置データでは、チップ上のグローバルな座標系を使って、各クロックバッファの配置位置と各ブロックの配置位置とを表している。
【００８９】
このクロックバッファ配置手段２０の処理と、前述した記憶素子配置手段１１の処理とに従って、図１９に示すようなクロック分配回路についての配置位置が設計されることになる。
【００９０】
前述したように、ネットリスト作成手段１７は、クロック分配回路のネットリストを作成する際に、ブロックに属さない形のクロックバッファ（図４中に示すクロックバッファbuf1i0）を定義してネットリストを作成するようにしているが、クロックバッファ配置手段２０の処理に従って、図５中の（ａ）で示すように、このブロックに属さない形のクロックバッファの配置位置が決定され、これにより、この段階で、このクロックバッファがどのブロックに属するのかが決定されることになる。
【００９１】
〔７〕最終ネットリスト作成手段２２の処理
クロックバッファ配置手段２０の処理に従って、ブロックに属さない形で定義されたクロックバッファが最終的にどこのブロックに属するのかが決定されたので、最終ネットリスト作成手段２２は、この決定結果とネットリスト作成手段１７の作成したネットリストとに基づいて、クロック分配回路の最終的なネットリスト（全てのクロックバッファがいずれかのブロックに属することが定義されているブロックレベルのネットリスト）を自動作成して、最終ネットリスト情報データベース２３に格納する。
【００９２】
この最終的なネットリストの作成処理は、チップレベルのクロック分配回路のネットリストの影を各ブロックに落とすことで実行される。すなわち、チップレベルからブロックレベルへと、ブロックレベルには記載されていないネットリスト情報を反映（射影）することで実行される。
【００９３】
最終ネットリスト作成手段２２は、クロックバッファ配置手段２０の処理に従ってブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、チップレベルで定義されたクロックバッファとそれらの間のネットとを各ブロックに影を落とすべき部分として決定する。
【００９４】
最終ネットリスト作成手段２２は、この決定部分について、verilog のコピーを別の場所に作成して、セルのインスタンス名やネット名には、その先頭に、影であることを示す特別のキーワード（例えば、@from-chip@ ）を付与して、影であることを明確にする。ここで、ブロック境界の入力ピン名としては、このピンに接続される影のネット名にさらにピン名に変換されたことを示すキーワードを付与した名前を用いる。
【００９５】
なお、セルのインスタンス名とは、同じ機能を持つセルが複数使われる場合に、それを識別するためのものであり、例えば、buf3i2 Ａで説明するならば、buf3がセル名で、i2 Ａがインスタンス名となる。
【００９６】
図６〜８に、最終ネットリスト作成手段２２の作成したネットリストの一例を図示する。
【００９７】
図６の（ａ）の部分では、ブロックＡ，Ｂ，Ｃ，Ｄの持つピンを定義しているが、ネットリスト作成手段１７によりブロックに属さない形で定義されたクロックバッファが最終的にブロックＡに属することが決定されたので、ブロックＡについては、図１９に示すことからも分かるように、チップレベルのネットリストからの影に従って３つのピン（ブロックの境界部分に設けられるピン）を持つことが定義される。これに対して、ブロックＢ，Ｃ，Ｄについては、ネットリスト作成手段１７によりブロックに属さない形で定義されたクロックバッファから影響を受けることがないので、図１９に示すことからも分かるように、チップレベルのネットリストからの影に従って１つのピン（ブロックの境界部分に設けられるピン）を持つことが定義される。
【００９８】
また、図６の（ｂ−１）の部分に示すように、ネットリスト作成手段１７によりブロックに属さない形で定義されたクロックバッファが最終的にブロックＡに属することが決定されたので、図１９に示すことからも分かるように、チップレベルのネットリストからの影に従ってブロックＡが４つのクロックバッファを持つことが定義されるとともに、それらの接続関係が定義されることになる。これに対して、ブロックＢ，Ｃ，Ｄについては、ネットリスト作成手段１７によりブロックに属さない形で定義されたクロックバッファからの影響を受けることがないので、図７の（ｂ−２），（ｂ−３）、図８の（ｂ−４）の部分に示すように、チップレベルのネットリストからの影に従ってそれぞれが３つのクロックバッファを持つことが定義される。
【００９９】
図７に示すブロックＢのネットリスト部分を具体例にして、最終ネットリスト作成手段２２の実行する処理についてさらに説明するならば、ブロックレベルの処理を行う記憶素子グループ化設定手段１３及び入力ピン割当手段１５の処理に従って、図３に示すように、ブロックＢには、ffi0〜ffi3が１つのグループとして設定されてピンｃｋ１が割り当てられ、ffi4〜ffi7が１つのグループとして設定されてピンｃｋ２が割り当てられて、クロックバッファについて存在しないということが定義されている。
【０１００】
このとき、最終ネットリスト作成手段２２は、ネットリスト作成手段１７の作成した図４に示すネットリストに基づいて、クロックバッファについて記述する図４の（ａ)(ｄ）の部分を影として落とす必要があると判断して、図７に示すブロックＢのネットリスト部分に示すように、影であることを示す特別のキーワードである“@from-chip@ ”を付与して、この部分を影として落とすのである。
【０１０１】
最終ネットリスト作成手段２２により作成された最終的なネットリストは、影であることを示す特別のキーワードである“@from-chip@ ”が付与されていることを除けば、結局のところ従来技術の論理設計で作成されたブロックレベルのネットリストと変わるところはない。
【０１０２】
ただ、本発明では、ネットリスト作成手段１７がブロックに属さない形でクロックバッファの一部を定義しつつチップレベルのネットリストを作成して、クロックバッファ配置手段２０がそれらのクロックバッファのチップ上の最適な配置位置を決定すると、最終ネットリスト作成手段２２がその決定結果に基づいて、その段階で、それらのクロックバッファについてのネットリスト部分を入力ピン割当手段１５により作成されたブロックレベルのネットリストに組み込むことで、最終的なネットリストを自動作成するという点に大きな特徴がある。
【０１０３】
この構成を採ることで、クロック分配回路の設計者は、例えば、最初はあるクロックバッファをブロックＡに配置するように決定したが、スキューなどの観点からブロックＢに配置した方のがよいということが分かった場合に、そのクロックバッファをブロックＡに配置することで作成したネットリストを破棄して、そのクロックバッファの配置位置をブロックＢに変えて最終ネットリスト作成手段２２を起動するだけで、所望のネットリストを得ることができるようになる。
【０１０４】
ここで、影のネットリストを各ブロックに実際に入れ込むために、最終ネットリスト作成手段２２は、具体的には、次のような内部処理を行う。
【０１０５】
すなわち、各ブロックのデータ（ネットリスト及びレイアウトデータで構成される）から、verilog ネットリスト及びレイアウトデータ（セル配置情報や配線情報など）をテキスト形式で出力して、その出力したverilog ネットリストに影のネットリストをマージする。そして、このマージしたネットリストから再度各ブロックのデータを作成して、そこにさらにテキストとして出力したレイアウトデータを書き込むという内部処理を行う。
【０１０６】
〔８〕レイアウトデータ作成手段２４の処理
最終ネットリスト作成手段２２の処理に従って最終的なネットリストが作成されると、レイアウトデータ作成手段２４は、各ブロックのレイアトデータに対して影のレイアウトデータを落とすことで、影のレイアウトデータのマージされたレイアウトデータを作成して、レイアウトデータ情報データベース２５に格納する。
【０１０７】
このとき、レイアウトデータ作成手段２４は、最終ネットリスト作成手段２２と同様に、クロックバッファのインスタンス名やネット名を、影のネットリストの名前に対応した名前に変更して下位の階層に落とすように処理する。
【０１０８】
図９に、レイアウトデータ作成手段２４の作成したレイアウトデータの一例を図示する。
【０１０９】
ここで、このレイアウトデータでは、チップ上のグローバルな座標系を使って、各記憶素子及び各クロックバッファの配置位置と各ブロックの配置位置とを表している。
【０１１０】
この図９に示すように、レイアウトデータ作成手段２４は、記憶素子配置手段１１の作成した図２に示す記憶素子の配置データに対して、クロックバッファ配置手段２０の決定した図５に示すクロックバッファの配置データを、“@from-chip@ ”を付与しながら影のデータとして落とすのである。
【０１１１】
このレイアウトデータ作成手段２４の処理に従って、影のネットリストと影のレイアウトデータとが結び付けられ（この結び付けられたデータがブロックのデータとなる）、これにより、クロック分配回路の設計者は、下位のブロックにおいて影の設計情報をあたかも実体としての設計情報として見ることができるようになる。
【０１１２】
ここで、影のレイアウトデータを各ブロックに実際に入れ込むために、レイアウトデータ作成手段２４は、具体的には、次のような内部処理を行う。
【０１１３】
すなわち、各ブロックのデータから一度レイアウトデータを出力し、その出力したレイアウトデータに影のレイアウトデータをマージして、再度ブロックの中に読み込ませることで行う。
【０１１４】
〔９〕チェック手段２６の処理
チェック手段２６は、チップレベルのネットリストと、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分（影のネットリスト部分）との間に矛盾がないのか否かの検証を行う。
【０１１５】
クロック分配回路の設計者は、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分とは関係なく、チップレベルのネットリストを変更することが可能であり、また、チップレベルのネットリストに関係なく、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分を変更することが可能であることから、本実施形態例の集積回路設計装置１では、この２つの間に矛盾がないのか否かの検証を行うチェック手段２６を用意している。
【０１１６】
図１０に、チェック手段２６の実行する処理フローを図示する。
【０１１７】
ここで、処理フロー中に記載する「マークのついたネット」とは、ブロック境界に位置する入力ピンに対応付けられるネットを意味しており、この処理フローでは、このネットを起点にして、そこから先のブロック内のネットリスト部分を比較することになる。
【０１１８】
チェック手段２６は、この図１０に示す処理フローに従い、深さ優先探索（depth-first-search）を使って２つのネットリストのツリー構造を辿って比較することで、チップレベルのネットリストと、ブロックレベルのネットリストにマージされたキーワード付与のネットリスト部分（影のネットリスト部分）との間に矛盾がないのか否かの検証を行うように処理する。
【０１１９】
〔１０〕第１の削除手段２７、第２の削除手段２８、第１の置換手段２９及び第２の置換手段３０の処理
第１の削除手段２７は、最終ネットリスト作成手段２２により作成されたキーワード付与のネットリストを削除対象として、そのキーワード付与のネットリスト（影のネットリスト）から、キーワードを持つネットリスト部分を削除する処理を行う。
【０１２０】
第２の削除手段２８は、ネットリスト作成手段１７により作成されたネットリスト（チップレベルのネットリスト）を削除対象として、そのネットリストから、キーワード付与のネットリスト部分に対応付けられるネットリスト部分を削除する処理を行う。
【０１２１】
第１の置換手段２９は、最終ネットリスト作成手段２２により作成される新たな影のネットリスト部分を、第１の削除手段２７の削除したネットリスト部分の代わりとして置き換える処理を行う。
【０１２２】
第２の置換手段３０は、ネットリスト作成手段１７により作成されたネットリストと関係なく変更されたキーワード付与のネットリスト部分からキーワードを削除して、そのキーワード削除のネットリスト部分を、第２の削除手段２８の削除したネットリスト部分の代わりとして置き換える処理を行う。
【０１２３】
本実施形態例の集積回路設計装置１が、第１の削除手段２７、第２の削除手段２８、第１の置換手段２９及び第２の置換手段３０を備えるのは、次のような理由による。
【０１２４】
チップレベルでネットリストが修正された場合、その修正をブロックレベルのネットリストの持つキーワード付与のネットリスト部分（影のネットリスト部分）に反映する必要がある。
【０１２５】
この反映処理は次のように行われる。すなわち、先ず最初に、各ブロックのデータから、 verilogネットリスト及びレイアウトデータをテキスト形式で出力する。続いて、第１の削除手段２７を使って、出力したネットリストから影のネットリストを削除する。影のネットリストについては、インスタンス名とネット名に対して影であることを識別可能とするキーワードが付与されているので、その部分を認識して削除する。
【０１２６】
この削除した状態は、影を落とす前の状態と同じになることから、続いて、前述した手順に従って各ブロックのデータを作成する。続いて、第１の置換手段２９を使って、チップレベルで修正されたネットリストを下位の各ブロックの影のネットリスト部分（削除したネットリスト部分）と置き換える。
【０１２７】
このようにして、第１の削除手段２７及び第１の置換手段２９を備えることで、チップレベルでネットリストが修正された場合に、その修正をブロックレベルのネットリストに反映することができるようになる。
【０１２８】
また、下位のブロックに落ちている影のネットリストについては、影と識別できるキーワードがインスタンス名やネット名についているだけなので、通常の verilogネットリストと形式は同じである。これから、この影のネットリストを、ブロックの設計を担当する設計者がブロック内で最適化するために修正することが可能である。
【０１２９】
レイアウトデータと一緒になったブロックのデータに対して影のネットリストを修正する場合には、別に保存しておいた影のネットリストを修正するか、ブロックのデータから一度 verilog形式の影のネットリストを出力して修正するという方法があるが、いずれの方法を使うにしても、ブロック内の影のネットリストの原本はチップレベルのネットリストであるので、この原本に影のネットリストの変更部分を反映しなければならない。
【０１３０】
この反映処理は次のように行われる。すなわち、先ず最初に、修正された影のネットリストを持つブロックを特定して、そのブロックの持つ境界部分の入力ピンを特定する。この入力ピンから先のブロック内のネットリスト部分が修正されたことを意味する。
【０１３１】
続いて、その入力ピンに対応付けられる原本のネットリスト位置を特定して、第２の削除手段２８を使って、その特定したネットリスト位置から先のネットリスト部分を削除する。続いて、第２の置換手段３０を使って、先に特定した入力ピンから先のブロック内のネットリスト部分からキーワードを削除して、そのキーワード削除のネットリスト部分を、第２の削除手段２８の削除したネットリスト部分の代わりとして接続する。
【０１３２】
このようにして、第２の削除手段２８及び第２の置換手段３０を備えることで、影のネットリストが修正された場合に、その修正を原本のネットリストに反映することができるようになる。
【０１３３】
〔１１〕集積回路設計装置１の処理
図１１〜１３に、本実施形態例の集積回路設計装置１の実行する処理フローを図示する。
【０１３４】
次に、この処理フローに従って、図１のように構成される本実施形態例の集積回路設計装置１の実行する処理について説明する。
【０１３５】
本実施形態例の集積回路設計装置１は、集積回路の設計要求に応答して起動されると、図１１の処理フローに示すように、先ず最初に、ステップＳ１０で、集積回路の設計者と対話することで、集積回路を分割する各ブロックのサイズ及び形状を決定して、各ブロックの配置位置を決定する。
【０１３６】
続いて、ステップＳ１１で、集積回路の設計者と対話することで、クロック分配回路以外の回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する。
【０１３７】
続いて、ステップＳ１２で、集積回路の設計者と対話することで、クロック分配回路以外の回路素子について、それらの回路素子のブロック上の配置位置を決定する。
【０１３８】
続いて、ステップＳ１３で、集積回路の設計者と対話することで、クロック分配回路のクロックバッファについて、配置先ブロックが決められるものについてはそれを明確にしながら、それらのクロックバッファと同一回路素子グループに割り付けた入力ピンとについてのチップレベルのネットリストを作成する。
【０１３９】
続いて、ステップＳ１４で、集積回路の設計者と対話することで、クロック分配回路のクロックバッファについて、それらのクロックバッファのブロック上の配置位置を決定する。
【０１４０】
続いて、ステップＳ１５で、ステップＳ１０で決定した各ブロックのサイズ・形状・配置位置と、ステップＳ１４で決定したクロックバッファのブロック上の配置位置とに基づいて、配置先ブロックが決められていないクロックバッファについて、その配置先ブロックを決定する。
【０１４１】
続いて、ステップＳ１６で、ブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、チップレベルのネットリストの影を各ブロックに落とす。
【０１４２】
続いて、ステップＳ１７で、チップレベルのレイアウト情報の影を各ブロックに落として、処理を終了する。
【０１４３】
このようにして、本実施形態例の集積回路設計装置１は、集積回路の設計情報として、図６〜８に示すようなネットリストと、図９に示すようなレイアウトデータとを作成するのである。
【０１４４】
次に、図１２の処理フローに従って、チップレベルでネットリストが修正された場合に、本実施形態例の集積回路設計装置１の実行する処理について説明する。
【０１４５】
本実施形態例の集積回路設計装置１は、チップレベルのネットリストの修正要求に応答して起動されると、図１２の処理フローに示すように、先ず最初に、ステップＳ２０で、集積回路の設計者と対話することで、クロック分配回路についてのチップレベルのネットリストを修正する。
【０１４６】
続いて、ステップＳ２１で、集積回路の設計者と対話することで、チップレベルで変更になったクロックバッファの配置位置を変更する。
【０１４７】
続いて、ステップＳ２２で、各ブロックのサイズ・形状・配置位置と、ステップＳ２１で変更したクロックバッファのブロック上の配置位置とに基づいて、配置位置の変更になったクロックバッファについて、その配置先ブロックを決定する。
【０１４８】
続いて、ステップＳ２３で、各ブロックへと影を落としているネットリスト部分を全て削除する。
【０１４９】
続いて、ステップＳ２４で、ブロックに重ねて配置されたクロックバッファがその位置にあるブロックに対して影を落とすという判断基準に従って、修正したチップレベルのネットリストの影を各ブロックに落とす。
【０１５０】
続いて、ステップＳ２５で、修正したチップレベルのレイアウト情報の影を各ブロックに落として、処理を終了する。
【０１５１】
このようにして、本実施形態例の集積回路設計装置１は、チップレベルでネットリストが修正された場合に、その修正をブロックレベルのネットリストに反映するように処理するのである。
【０１５２】
次に、図１３の処理フローに従って、ブロック内に配置を終えたクロックバッファのネットリストが修正された場合に、本実施形態例の集積回路設計装置１の実行する処理について説明する。
【０１５３】
本実施形態例の集積回路設計装置１は、ブロック内に配置を終えたクロック分配回路のネットリストの修正要求に応答して起動されると、図１３の処理フローに示すように、先ず最初に、ステップＳ３０で、集積回路の設計者と対話することで、クロック分配回路についての影のネットリストをブロック内で修正する。
【０１５４】
続いて、ステップＳ３１で、修正したブロック内の影のネットリストから、影であることを示すキーワードを削除することで、そのネットリスト部分を原本のネットリスト表現に変換する。
【０１５５】
続いて、ステップＳ３２で、チップレベルのネットリスト（原本）の論理の中で、ステップＳ３０で修正した影の論理に相当するネットリスト部分を特定して、削除する。
【０１５６】
続いて、ステップＳ３３で、ステップＳ３２で削除したチップレベルのネットリスト部分の代わりに、ブロック内の影のネットリストから変換したネットリスト部分（ステップＳ３１の削除処理により得たネットリスト部分）を接続して、処理を終了する。
【０１５７】
このようにして、本実施形態例の集積回路設計装置１は、影のネットリストが修正された場合に、その修正を原本のネットリストに反映するように処理するのである。
【産業上の利用可能性】
【０１５８】
本発明は、集積回路を複数のブロックに分割して回路設計を行う場合に適用できるものであり、集積回路全体で最適化する必要がある回路系について、その最適化を効率的に実行できるようになる。
【０１５９】
（付記１）集積回路を複数のブロックに分割して回路設計を行う集積回路設計方法であって、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する過程と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する過程と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する過程と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する過程とを備えることを、特徴とする集積回路設計方法。
【０１６０】
（付記２）付記１に記載の集積回路設計方法において、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程を備え、前記配置先ブロックを決定する過程では、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定することを、特徴とする集積回路設計方法。
【０１６１】
（付記３）付記１に記載の集積回路設計方法において、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する過程と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する過程と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する過程とを備えることを、特徴とする集積回路設計方法。
【０１６２】
（付記４）付記２又は３に記載の集積回路設計方法において、前記チップ上の配置位置を決定する過程では、その配置位置が配置の許されていない領域にある場合には、最も近くに位置する配置の許されている領域内に移動させることで、その配置位置を決定することを、特徴とする集積回路設計方法。
【０１６３】
（付記５）付記１ないし４のいずれか１項に記載の集積回路設計方法において、キーワードを付与したネットリストを作成した後に、チップレベルのネットリストが修正された場合に、そのキーワード付与のネットリストからキーワードを持つネットリスト部分を削除して、その修正されたチップレベルのネットリストに基づいて作成されるキーワード付与のネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、特徴とする集積回路設計方法。
【０１６４】
（付記６）付記１ないし５のいずれか１項に記載の集積回路設計方法において、キーワードを付与したネットリストが修正された場合に、その修正部分のネットリストからキーワードを削除するとともに、チップレベルのネットリストが持つその修正部分に対応するネットリスト部分を削除して、そのキーワードの削除したネットリスト部分を、その削除したネットリスト部分に置き換える過程を備えることを、特徴とする集積回路設計方法。
【０１６５】
（付記７）付記１ないし６のいずれか１項に記載の集積回路設計方法において、キーワードを付与したネットリストの持つキーワード付与のネットリスト部分と、チップレベルのネットリストとが一致するのか否かを判断する過程を備えることを、特徴とする集積回路設計方法。
【０１６６】
（付記８）集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置であって、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段とを備えることを、特徴とする集積回路設計装置。
【０１６７】
（付記９）付記８に記載の集積回路設計装置において、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段を備え、前記配置先ブロックを決定する手段は、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定することを、特徴とする集積回路設計装置。
【０１６８】
（付記１０）付記８に記載の集積回路設計装置において、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する手段と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する手段とを備えることを、特徴とする集積回路設計装置。
【０１６９】
（付記１１）集積回路を複数のブロックに分割して回路設計を行う集積回路設計装置の実現に用いられる集積回路設計プログラムであって、コンピュータを、ブロックレベルで設計する回路素子について、同一ブロックに属する回路素子をグループ化し入力ピンを割り付けることで、ブロックレベルのネットリストを作成する手段と、チップレベルで設計する回路素子について、それらの回路素子の内の配置先ブロックが決められるものについてはそれを明確にしながら、それらの回路素子と前記入力ピンとについてのチップレベルのネットリストを作成する手段と、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する手段と、前記決定した配置先ブロックの情報に基づいて、前記チップレベルのネットリストを前記ブロックレベルのネットリストに反映させるとともに、この反映にあたって、反映させるネットリスト部分の持つ構成要素名に対して、チップレベルのネットリストから生成されたことを示すキーワードを付与することで、最終的なブロックレベルのネットリストを作成する手段として機能させるための集積回路設計プログラム。
【０１７０】
（付記１２）コンピュータを、さらに、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段として機能させ、前記配置先ブロックを決定する手段は、前記決定したチップ上の配置位置に基づいて、チップレベルで設計する回路素子の内の配置先ブロックが決められないものについて、その配置先のブロックを決定する付記１１に記載の集積回路設計プログラム。
【０１７１】
（付記１３）コンピュータを、さらに、ブロックレベルで設計する回路素子について、それらの回路素子のブロック上の配置位置を決定する手段と、チップレベルで設計する回路素子について、それらの回路素子のチップ上の配置位置を決定する手段と、前記決定したチップ上の回路素子の配置位置の情報を、前記決定したブロック上の回路素子の配置位置の情報に反映させるとともに、この反映にあたって、反映させる回路素子の構成要素名として、前記キーワードを付与した対応の構成要素名を用いることで、最終的な回路素子のブロック上の配置位置の情報を作成する手段として機能させるための付記１１に記載の集積回路設計プログラム。
【図面の簡単な説明】
【０１７２】
【図１】本発明の集積回路設計装置の一実施形態例である。
【図２】記憶素子配置手段の作成した記憶素子の配置データの一例を示す図である。
【図３】入力ピン割当手段の作成した入力ピンの割当データの一例を示す図である。
【図４】ネットリスト作成手段の作成したネットリストの一例を示す図である。
【図５】クロックバッファ配置手段の作成したクロックバッファの配置データの一例を示す図である。
【図６】最終ネットリスト作成手段の作成したネットリストの一例を示す図である。
【図７】最終ネットリスト作成手段の作成したネットリストの一例を示す図である。
【図８】最終ネットリスト作成手段の作成したネットリストの一例を示す図である。
【図９】レイアウトデータ作成手段の作成したレイアウトデータの一例を示す図である。
【図１０】チェック手段の実行する処理フローである。
【図１１】集積回路設計装置の実行する処理フローである。
【図１２】集積回路設計装置の実行する処理フローである。
【図１３】集積回路設計装置の実行する処理フローである。
【図１４】論理設計されたクロック分配回路の説明図である。
【図１５】従来技術で作成されるクロック分配回路のネットリストの説明図である。
【図１６】従来技術で作成されるクロック分配回路のネットリストの説明図である。
【図１７】従来技術で作成されるクロック分配回路のネットリストの説明図である。
【図１８】物理設計されたクロック分配回路の説明図である。
【図１９】従来技術の問題を説明するためのクロック分配回路の説明図である。
【符号の説明】
【０１７３】
１    集積回路設計装置
２    入出力端末
１０  入出力部
１１  記憶素子配置手段
１２  記憶素子配置情報データベース
１３  記憶素子グループ化設定手段
１４  記憶素子グループ化情報データベース
１５  入力ピン割当手段
１６  記憶素子グループ表示手段
１７  ネットリスト作成手段
１８  ネットリスト情報データベース
１９  サイト管理手段
２０  クロックバッファ配置手段
２１  クロックバッファ配置情報データベース
２２  最終ネットリスト作成手段
２３  最終ネットリスト情報データベース
２４  レイアウトデータ作成手段
２５  レイアウトデータ情報データベース
２６  チェック手段
２７  第１の削除手段
２８  第２の削除手段
２９  第１の置換手段
３０  第２の置換手段
【図１】
2008090695.tif 000003
【図２】
2008090695.tif 000004
【図３】
2008090695.tif 000005
【図４】
2008090695.tif 000006
【図５】
2008090695.tif 000007
【図６】
2008090695.tif 000008
【図７】
2008090695.tif 000009
【図８】
2008090695.tif 000010
【図９】
2008090695.tif 000011
【図１０】
2008090695.tif 000012
【図１１】
2008090695.tif 000013
【図１２】
2008090695.tif 000014
【図１３】
2008090695.tif 000015
【図１４】
2008090695.tif 000016
【図１５】
2008090695.tif 000017
【図１６】
2008090695.tif 000018
【図１７】
2008090695.tif 000019
【図１８】
2008090695.tif 000020
【図１９】
2008090695.tif 000021