(57)【特許請求の範囲】
【請求項１】
所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層、及びユーザによる固定クロック配線に係る配線パターンを除く配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法であって、
ユーザレイアウト前にクロックスキュー値を調整した固定クロック配線を用意して、ユーザレイアウト時に当該固定クロック配線を用いてユーザの要求に応じたクロック配線設計を行い、
上記クロック配線設計後に、上記固定クロック配線のうち、上記クロック配線設計により未使用となった固定クロック配線を削除することを特徴とする半導体集積回路の設計方法。
【請求項２】
上記固定クロック配線は、上記半導体集積回路全体に対して供給されるグローバルクロック、及び上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能なように構成されていることを特徴とする請求項１記載の半導体集積回路の設計方法。
【請求項３】
上記クロック配線設計は、上記バルク層に配置されたバルクパターンを変更せずに行うことを特徴とする請求項１又は２記載の半導体集積回路の設計方法。
【請求項４】
上記固定クロック配線は、配線経路を複数に分岐させるクロックバッファセルを含み、上記クロック配線設計により未使用となった上記クロックバッファセルが使用していたバルクパターンをゲートアレイセルとして登録された任意のユニットセルに割り当てる、又は当該クロックバッファセルを機能停止状態にすることを特徴とする請求項１〜３の何れか１項に記載の半導体集積回路の設計方法。
【請求項５】
所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層、及びユーザによる固定クロック配線に係る配線パターンを除く配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法であって、
ユーザレイアウト前に、上記半導体集積回路全体に対して供給されるグローバルクロック、及びユーザが任意に追加可能な上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能であり、かつクロックスキュー値を調整した固定クロック配線の設計を行う第１のクロック配線設計ステップと、
上記第１のクロック配線設計ステップにて設計された固定クロック配線を用いて、ユーザの要求に応じたクロック配線の設計を行う第２のクロック配線設計ステップと、
上記第２のクロック配線設計ステップ後に、未使用となった上記固定クロック配線の削除を行う未使用部処理ステップとを有することを特徴とする半導体集積回路の設計方法。
【請求項６】
上記未使用部処理ステップでは、配線経路を複数に分岐させるクロックバッファセルのうち、未使用となった上記クロックバッファセルの後処理をさらに行うことを特徴とする請求項５記載の半導体集積回路の設計方法。
【請求項７】
所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層、及びユーザによる固定クロック配線に係る配線パターンを除く配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法をコンピュータに実行させるためのプログラムであって、
ユーザレイアウト前に、上記半導体集積回路全体に対して供給されるグローバルクロック、及びユーザが任意に追加可能な上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能であり、かつクロックスキュー値を調整した固定クロック配線の設計を行う第１のクロック配線設計ステップと、
上記第１のクロック配線設計ステップにて設計された固定クロック配線を用いて、ユーザの要求に応じたクロック配線の設計を行う第２のクロック配線設計ステップと、
上記第２のクロック配線設計ステップ後に、未使用となった上記固定クロック配線の削除を行う未使用部処理ステップとをコンピュータに実行させるためのプログラム。
【請求項８】
上記未使用部処理ステップでは、配線経路を複数に分岐させるクロックバッファセルのうち、未使用となった上記クロックバッファセルの後処理をさらに行うことを特徴とする請求項７記載のプログラム。
【請求項９】
上記未使用部処理ステップでは、上記未使用となったクロックバッファセルの削除、及び当該クロックバッファセルが使用していたバルクパターンをゲートアレイセルとして登録された任意のユニットセルに割り当てる、又は当該クロックバッファセルを機能停止状態に設定する処理の少なくとも１つを行うことを特徴とする請求項８記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計技術に関し、詳しくは、半導体集積回路におけるクロック配線設計に関する。
【背景技術】
【０００２】
従来、特定用途向けの半導体集積回路であるＡＳＩＣ（Application Specific Integrated Circuit）は、セルベースＬＳＩやＦＰＧＡ（Field Programmable Gate Array）等の半導体集積回路を利用して実現されることが多い。例えば、セルベースＬＳＩを利用したＡＳＩＣ開発は、基本となるトランジスタの組合せによるセル（ベーシックセル）をベースにしてセル内の基本配線等を行っておき、用途に応じた所望の回路となるようにベーシックセルを組合せるとともに必要な配線を形成することにより行われる。
【０００３】
従来のＡＳＩＣ開発におけるクロック配線は、まったく配線が存在しない状態からユーザ側が設計の全工程を実施するか、あるいはセルベースＬＳＩやＦＰＧＡに予め作り込まれた経路や粒度の狭い（自由度がない）経路からユーザ側が経路を選択することで設計するのが一般的である。
【０００４】
また、従来のＬＳＩにおいては、内部のフリップフロップに対して供給するクロックを、通常動作時とテスト動作時とでスイッチ回路により切り替え可能なようにクロック配線を設けたものがある（例えば、特許文献１参照。）。
【０００５】
【特許文献１】特開平７−１６８７３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来のＡＳＩＣのクロック配線設計においては、設計作業に多大な手間や時間を要する、クロック配線に係るレイアウトの自由度が低いなどの問題点がある。
【０００７】
さらに、近年、半導体集積回路の微細化に伴って１つの半導体チップに集積可能な回路規模が増大し、ＡＳＩＣ開発においては、開発期間の長期化や設計等の複雑さが増大してきている。クロック配線設計においても、例えばクロック配線経路の設定や、クロック信号が各回路要素に到達するまでの伝搬時間の差、いわゆるクロックスキューを小さくするためのクロックスキュー調整の複雑さが増大している。
【０００８】
また、従来のＡＳＩＣ開発はＡＳＩＣ毎（個別品種毎）に行われており、上述したクロック配線経路の設定やクロックスキュー調整等をＡＳＩＣ毎にそれぞれ行わねばならない。そのため、クロック配線設計に係る煩雑さの増大や設計期間の長期化を招いていた。
【０００９】
本発明の目的は、用途に応じた半導体集積回路の開発において、クロック配線に係るレイアウトの自由度を提供しつつ、クロック配線設計を容易かつ速やかに行うことである。
【課題を解決するための手段】
【００１０】
本発明の一観点によれば、ユーザレイアウト前にクロックスキュー値を調整した固定クロック配線を用意して、ユーザレイアウト時に当該固定クロック配線を用いてユーザの要求に応じたクロック配線設計を行い、クロック配線設計後に、上記固定クロック配線のうち、未使用となった固定クロック配線を削除するマスタースライス方式の半導体集積回路の設計方法が提供される。
【発明の効果】
【００１１】
本発明によれば、用途に応じた半導体集積回路を開発する際、クロック配線経路の設定やクロックスキュー調整等を半導体集積回路毎に実施することなく、予め用意された固定クロック配線を用いてユーザレイアウトでのクロック配線設計を行うことができ、クロック配線設計に係る煩雑さを軽減し、かつ設計期間を短縮することができる。これにより、クロック配線に係るレイアウトの自由度を提供しながらも、クロック配線設計を容易かつ速やかに行うことができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態を図面に基づいて説明する。
図１は、本発明の実施形態による設計対象の半導体集積回路の構成例を示す断面図である。
図１において、１はバルク層ＢＬを有する半導体基板（チップ）である。バルク層ＢＬは、半導体集積回路において配線層を一切含まない、トランジスタを形成するポリシリコンや拡散層等の下地であり、所定の回路機能を具備する機能ブロック、いわゆるマクロ（以下、「バルク」とも称する。）が作り込まれる。バルク層ＢＬは、トランジスタ層と配線層とを有する従来のセルベースＬＳＩのトランジスタ層に相当する。
【００１３】
バルク層ＢＬ上には、Ｃｕ（copper）、Ａｌ（aluminum）等を用いた金属配線を形成するための第１〜第６の配線層ＰＬ１〜ＰＬ６が順次積層するように設けられている（本実施形態においては、バルク層ＢＬ側から順に第１、第２、第３、第４、第５、第６の配線層とする。）。各配線層ＰＬ１〜ＰＬ６に形成される配線は、異なる配線層間については層間絶縁膜により絶縁されており、必要に応じて異なる配線層の配線にビアを介して接続される。
【００１４】
本実施形態による半導体集積回路は、いわゆるマスタースライス方式の半導体集積回路であり、バルク層ＢＬに予め作り込まれるバルク（バルクパターン）及びその配置については、ユーザ側では変更すること（カスタマイズ）ができない。また、第１、第５、及び第６の配線層ＰＬ１、ＰＬ５、ＰＬ６はユーザに応じたカスタマイズができない固定配線層であり、第２、第３、及び第４の配線層ＰＬ２、ＰＬ３、ＰＬ４は任意にカスタマイズが可能な可変配線層である。すなわち、配線層ＰＬ１、ＰＬ５、ＰＬ６に形成する配線は、配線パターンが変更不可な固定配線であり、配線層ＰＬ２、ＰＬ３、ＰＬ４に形成する配線は、配線パターンが変更可能な可変配線である。
【００１５】
このカスタマイズ可能な可変配線層ＰＬ２、ＰＬ３、ＰＬ４の配線により、バルク層ＢＬに形成される回路に対して、例えば電源を供給したり、内部の論理構成を切り換えたりすることができ、ユーザの要求に応じた所望の回路機能を実現できる。なお、カスタマイズ可能な可変配線層であっても、バルク層ＢＬに形成されている回路を機能させるために必要な配線が含まれていることもある。また、後述するようにクロック配線は固定配線層に形成されるが、このクロック配線については通常の可変配線層と同様にユーザに応じてカスタマイズ可能とする。
【００１６】
図２は、本実施形態による半導体集積回路におけるクロック配線のレイアウトの一例を示す図であり、ユーザの要求に応じたユーザレイアウト処理を行う前のレイアウト例を示している。
【００１７】
半導体チップ２０内（以下、半導体チップ２０全体を「フレーム」とも称す。）には、２つのＲＡＭマクロ２１とフリップフロップ群２２とからそれぞれ構成される複数の基本ブロックＢＢｉｊ（ｉ、ｊは添え字であり、本実施形態ではｉ＝１〜４、ｊ＝１〜４の自然数）、複数のＲＡＭマクロ２３、及び複数のＤＤＲ（Double Data Rate）−ＩＦマクロ２４が配置される。なお、説明の便宜上、基本ブロックＢＢｉｊを適宜、マクロＢＢｉｊとも称す。このマクロＢＢｉｊ、２３、２４が配置された領域を取り囲むように、８つのＰＬＬマクロ２５、及び複数のＩ／Ｏマクロ２６が配置される。また、Ｉ／Ｏマクロ２６にそれぞれ対応してパッド２７が設けられる。
【００１８】
なお、ＲＡＭマクロ２１、２３は、メモリ回路（ＲＡＭ）の機能ブロックであり、ＲＡＭマクロ２１と２３とは、大きさ及び機能（例えば、ポート数、ワードビット数等）の少なくとも一方が異なっている。ＤＤＲ−ＩＦマクロ２４は、メモリインタフェース回路の機能ブロックである。フリップフロップ群２２は、複数のフリップフロップに加えて複数のユニットセル（Usable gate）を有しており、ユーザが任意に論理を構成することが可能となっている。ＰＬＬマクロ２５は、ＰＬＬ（Phase Locked Loop）回路の機能ブロックであり、Ｉ／Ｏマクロ２６は入出力回路の機能ブロックである。
【００１９】
また、半導体チップ２０内には、ＰＬＬマクロ２５（図２においては、４つずつの２グループに分けて配置される。）の近傍にルートクロックドライバＲＣＫ１、ＲＣＫ２が配置される。このルートクロックドライバＲＣＫ１、ＲＣＫ２は、半導体チップ２０全体に複数系統のメインクロック（グローバルクロック）を供給する、すなわちＲＡＭマクロ２１、２３及びフリップフロップ群２２を含む半導体チップ２０内のクロックを用いて動作する回路要素に対してメインクロックを供給するためのものである。また、クロックを適宜分配して供給するために、クロックハブＣＫＨと複数のクロックバッファセル（以下、単に「クロックバッファ」と称する。）が配置される。
【００２０】
上述した基本ブロックＢＢｉｊ（ＲＡＭマクロ２１、フリップフロップ群２２）、ＲＡＭマクロ２３、ＤＤＲ−ＩＦマクロ２４、ＰＬＬマクロ２５、Ｉ／Ｏマクロ２６、ルートクロックドライバＲＣＫ１、ＲＣＫ２、クロックハブＣＫＨ、及びクロックバッファは、バルクパターンとしてバルク層ＢＬに作り込まれている。なお、ユニットセル（Usable gate）及びクロックバッファは、スタンダードセル方式でなく、ゲートアレイセルにより構成される。また、図２に示したフレーム２０内のマクロの配置は一例であり、一定の規則でフレーム２０内にマクロ（バルクパターン）を敷き詰めるように予め埋め込み（作り込み）、従来のトランジスタ層に相当するバルク層のバルクパターンが敷き詰められたすべての部分（領域）において何らかの回路機能が形成されるようにするのが好ましい。
【００２１】
以下に、本実施形態による半導体集積回路に予め作り込まれる固定クロック配線について詳細に説明する。固定クロック配線は、ルートクロックドライバＲＣＫ１、ＲＣＫ２、クロックハブＣＫＨ及び複数のクロックバッファと、それらを適宜接続する配線により構成される。なお、以下では、ルートクロックドライバＲＣＫ１、ＲＣＫ２がそれぞれ４系統のクロックを出力可能であるとし、半導体集積回路全体で８系統の固定クロック配線を作り込む場合を一例として説明する。しかしながら、本発明はこれに限定されず、クロックの数は任意であり、例えば１０系統であっても良い。また、１つのクロックハブＣＫＨに対応するルートクロックドライバＲＣＫの個数は１個又は複数個であっても良い。
【００２２】
図２に示すように、ルートクロックドライバＲＣＫ１、ＲＣＫ２の出力端と、クロックハブＣＫＨの入力端とが接続され、クロックハブＣＫＨの出力端と、第１段のクロックバッファＬ１ＧＡ、Ｌ１ＧＢ、及びＲＡＭマクロ２３用クロックバッファＲＦＧのそれぞれの入力端とが接続される。さらに、第１段のクロックバッファＬ１ＧＡの出力端と、第２段のクロックバッファＬ２ＧＡ、Ｌ２ＧＢの入力端とが接続され、第２段のクロックバッファＬ２ＧＡの出力端と、第３段のクロックバッファＬ３ＧＡ、Ｌ３ＧＢの入力端とが接続される。
【００２３】
以下、同様に、第３段のクロックバッファＬ３ＧＡの出力端と、第４段のクロックバッファＬ４ＧＡ、Ｌ４ＧＢの入力端とが接続され、第４段のクロックバッファＬ４ＧＡの出力端と、第５段のクロックバッファＬ５ＧＡ、Ｌ５ＧＢの入力端とが接続される。そして、第５段のクロックバッファＬ５ＧＡ、Ｌ５ＧＢの出力端が、ＲＡＭマクロ２１及びフリップフロップ群２２を構成する各フリップフロップのクロック入力端子に接続される。クロックバッファＲＦＧの出力端がＲＡＭマクロ２３等のクロック入力端子に接続される。
【００２４】
ルートクロックドライバＲＣＫ１、ＲＣＫ２の出力端とクロックハブＣＫＨの入力端とを接続するクロック配線は、４つのクロックを束として（４本の配線を一群として）構成されている。これ以外の出力端と入力端とを接続するクロック配線は、８つのクロックを束として（８本の配線を一群として）構成されている。
【００２５】
上述のように、ルートクロックドライバＲＣＫ１、ＲＣＫ２の出力端とクロックハブＣＫＨの入力端とを接続し、クロックハブＣＫＨの出力端と第１段のクロックバッファＬ１ＧＡ、Ｌ１ＧＢの入力端とを接続する。そして、半導体チップ２０内のすべてのクロックバッファ（ただし、最後段（図２では第５段）のクロックバッファは除く。）において、第ｎ段（ｎは自然数）のクロックバッファＬｎＧＡの出力端と、第（ｎ＋１）段のクロックバッファＬ（ｎ＋１）ＧＡ、Ｌ（ｎ＋１）ＧＢの入力端とを接続する。
【００２６】
これにより、クロックの上流側（供給源側）であるルートクロックドライバＲＣＫ１、ＲＣＫ２から下流側（末端側）である各基本ブロックＢＢｉｊまで、８系統のクロックツリー（固定クロック配線）が構成される。ここで、本実施形態における固定クロック配線は、通常のカスタマイズ可能な可変配線層とは異なる、ユーザによるカスタマイズが不可な固定配線層に形成される。また、固定クロック配線は、大多数のユーザが所望すると予想されるクロック回路構成やクロックに関する要求性能を予想して構成することが望ましい。
【００２７】
ここで、ルートクロックドライバＲＣＫ１、ＲＣＫ２の入力側は、ユーザに応じた自由な配線が可能（カスタマイズ可能）になっており、配線経路を自由に設定することができるとともに、フリップフロップ等を用いて任意の論理を組み入れてルートクロックドライバＲＣＫ１、ＲＣＫ２の入力とすることもできる。また、例えば、ルートクロックドライバＲＣＫ１、ＲＣＫ２に対して、各ＰＬＬマクロ２５の出力をそれぞれ入力することが可能であるし、１つのＰＬＬマクロ２５の異なる出力（１逓倍の出力と２逓倍の出力や、位相が互いに異なる複数の出力など）を入力することが可能である。
【００２８】
また、クロックツリーにおけるクロックの分岐個所、すなわちクロックハブＣＫＨ及び第ｎ段のクロックバッファＬｎＧＡ、ＬｎＧＢは、上流側のクロック配線より入力されるクロックをそのまま２以上の下流側のクロックツリーに対して分配し出力するか、あるいはユーザが個別指定する別のクロックを下流側のクロックツリーに対して出力するかを切り替え可能なスイッチに相当する回路を有し構成され、いわゆるセレクタ機能を有している。なお、クロックハブＣＫＨ及び第ｎ段のクロックバッファＬｎＧＡ、ＬｎＧＢでの伝達するクロックの切り替えは、クロックの各系統毎に独立して制御可能である。
【００２９】
なお、図２に示した８系統のクロックツリー（固定クロック配線）は、クロックスキュー調整やノイズ対策などが行われて設計配置される。したがって、ユーザに応じたカスタマイズを行うユーザレイアウト時には、固定クロック配線についてはクロックスキュー調整やノイズ対策などを行う必要がなく、クロック配線設計を非常に容易に行うことができる。
【００３０】
例えば、固定クロック配線に係るクロックスキュー調整としては、クロック配線の配線長を互いに等しくするようにしたり、等長配線が不可能な場合には、図３に示すように遅延量を調整するクロックバッファを挿入（変更）したりすることで、スキュー調整が行われている。
図３は、固定クロック配線におけるクロックスキュー調整の一例を説明するための図であり、図２に示した構成要素に対応する構成要素には同一の符号を付し、重複する説明は省略する。
【００３１】
例えば、クロックがクロックハブＣＫＨからクロックバッファＲＦＧＶを介してＲＡＭマクロ２３まで伝達される時間と、クロックハブＣＫＨからクロックバッファＲＦＧＨを介してＲＡＭマクロ２３まで伝達される時間との差が配線により調整不可能である場合には、そのクロックスキューが小さくなるように、図３に示すように伝達時間が短い配線経路に対してクロックバッファＤＲＡ、ＤＲＡ’を挿入して遅延量を調整する。同様に、例えば、クロックがクロックハブＣＫＨからクロックバッファを介して各基本ブロックＢｉｊまで伝達される時間の差がある場合には、伝達時間が短い配線経路に対してクロックバッファＤＲＢ、ＤＲＢ’を挿入して遅延量を調整する。なお、このクロックスキューを調整するために挿入されるクロックバッファは、上述したようなセレクタ機能を有している必要はなく、通常のクロックバッファで良い。
【００３２】
図４は、本実施形態による半導体集積回路におけるクロック配線のレイアウトの一例を示す図であり、ユーザレイアウト処理後のレイアウト例を示している。この図４において、図２に示した構成要素と同一の構成要素には同一の符号を付し、重複する説明は省略する。
【００３３】
本実施形態におけるユーザレイアウト処理のクロック配線設計工程では、ユーザが要求するクロックの使用状況に応じてクロックマッピングが行われ、８系統のクロックツリーの中から必要とする系統及び区間が割り当てられる。この固定クロック配線の割り当て方法には大きく分けて２通りあり、クロックツリーにおける最上流（供給源側）から最下流（回路の入力端子）までそのままクロックを伝達するように割り当てる方法と、クロックツリーにおける途中の分岐点から最下流までユーザが個別指定する独自のクロック（このクロックをメインクロックに対して「オプショナルクロック（ローカルクロック）」と称す。）を伝達するように割り当てる方法とがある。
【００３４】
図４を参照し、上記２つの割り当て方法について説明する。
まず、クロックツリーにおける最上流から最下流までそのままクロックを伝達するように割り当てる方法について説明する。
Ｉ／Ｏマクロ４１に入力された信号（クロック）が、所定論理の回路機能ブロック４２を介してＰＬＬマクロ４３に入力される。このＰＬＬマクロ４３の出力が、ルートクロックバッファＲＣＫ１を介し、メインクロックとしてクロックハブＣＫＨに供給される。クロックハブＣＫＨに供給されたメインクロックは、適宜クロックバッファを介して基本ブロックＢＢｉｊ（ＢＢ４２、ＢＢ４３、ＢＢ４４を除く。）に供給されるとともに、クロックバッファ５０を介して半導体チップ２０内の左端部に配置されたＲＡＭマクロ２３に供給される。このように、最上流であるルートクロックバッファＲＣＫ１から、最下流である基本ブロックＢＢｉｊ、ＲＡＭマクロ２３まで固定クロック配線を用いてクロック（メインクロック）が伝達される。
【００３５】
なお、ルートクロックバッファＲＣＫ１の前段側、すなわちＩ／Ｏマクロ４１と回路機能ブロック４２、回路機能ブロック４２とＰＬＬマクロ４３、及びＰＬＬマクロ４３とルートクロックバッファＲＣＫ１のそれぞれを接続する配線は、ユーザの回路情報等に基づき自動配線される。ただし、回路機能ブロックやＰＬＬマクロの少なくとも一方をユーザが使用しない場合は、例えばＩ／Ｏマクロ４１からＰＬＬマクロ４３に自動配線されたり、Ｉ／Ｏマクロ４１から直接ルートクロックバッファＲＣＫ１へ自動配線される。また、Ｉ／Ｏマクロ４１からルートクロックバッファＲＣＫ１までは、複数の回路機能ブロックや複数のＰＬＬマクロを経由しても良い。
また、上述したように基本ブロックＢＢ４２、ＢＢ４３、ＢＢ４４に対しては、ルートクロックバッファＲＣＫ１（ＰＬＬマクロ４３）より出力されるメインクロックを供給しないので、基本ブロックＢＢ４２、及びＢＢ４３とＢＢ４４の組４７にとって、１つ上流側となるクロックバッファ４９と４８の間、及びクロックバッファ４４と４５の間における固定クロック配線は削除される。なお、回路動作の影響の有無を考慮して、削除せずに残しても良い。
【００３６】
次に、クロックツリーにおける途中の分岐点から最下流までユーザが個別指定する独自のクロックを伝達するように割り当てる方法について説明する。
Ｉ／Ｏマクロ４６に入力された信号（クロック）が、オプショナルクロックとしてクロックバッファ４５に入力される。このＩ／Ｏマクロ４６とクロックバッファ４５を接続する配線もユーザの回路情報等に基づき自動配線される。クロックバッファ４５に供給されたオプショナルクロックは、基本ブロックＢＢ４３、ＢＢ４４に供給される。このように、クロックツリーの分岐点であるクロックバッファ４５から、最下流である基本ブロックＢＢ４３、ＢＢ４４まで固定クロック配線を用いてクロック（オプショナルクロック）が伝達される。オプショナルクロックに対して固定クロック配線を割り当てる場合には、メインクロックの場合とは異なり、オプショナルクロックを入力（挿入）するためのクロックバッファと固定クロック配線の系統及び区間の一部が割り当てられる。なお、オプショナルクロックのＩ／Ｏマクロ４６からクロックバッファ４５の経路途中に、任意の個数の回路機能ブロックや任意の個数のＰＬＬマクロが接続されても良い。
【００３７】
なお、図４において破線で示した固定クロック配線のように、上述したどちらの方法でも割り当てられなかったクロックツリーの系統又は区間の未使用の固定クロック配線及びクロックバッファ（例えば、クロックバッファ４８及びその後段のクロックバッファ）は取り外す（削除する）ことが可能である。例えば、未使用の固定クロック配線を削除した場合には、ユーザが使用可能な配線チャネルとして再利用することができる。
【００３８】
また、未使用のクロックバッファは、クロックバッファとしての機能を開放し、ユーザ論理を再割り当て可能なようにしても良い。また、これに限らず、未使用のクロックバッファ内の所定の内部端子をクリップ処理（所定の電位に固定）することにより未使用クロックバッファセルの電力供給を止めて機能停止状態にするようにしても良いし、内部のゲーティッド端子を切り替えるようにしても良い。
【００３９】
また上述した説明では、クロックツリーの各区間において、８系統のクロック配線をすべて使用する、あるいは８系統のクロック配線をまったく使用しないのいずれかとなる場合を一例として説明したが、上述したように系統毎に独立して制御可能である。したがって、クロックツリーの任意の区間において、８系統のクロック配線のうち３系統のクロック配線のみを使用する場合には、残りの５系統（５本）のクロック配線を消去するようにしても良い。また、８系統のクロック配線のうち、１系統をメインクロックに使用し、２系統をオプショナルクロックに使用して、残り５系統を消去するようにすることも可能である。
【００４０】
以上のように、本実施形態による半導体集積回路では、大多数のユーザが所望すると予想されるクロック回路構成やクロックに関する要求性能を予想し、かつセル配置及び配線を既に行った状態でも、チップ２０全体に供給される複数系統のメインクロック及び局所的に（一部領域に）供給される複数系統のオプショナルクロックを実装できるような固定クロック配線が予め作り込まれる。そして、開発するＡＳＩＣ毎（個別品種毎）に固定クロック配線の一部あるいは全部を流用するか否かを決定するだけで、クロック回路に係る大部分の設計が完了してユーザ個別品種に要求されるクロック回路機能を実現することができる。
【００４１】
したがって、非常に汎用性の高い固定クロック配線を有する半導体集積回路を提供し、クロック配線設計に係る煩雑さを軽減しつつ設計期間を短縮することができる。また、複数系統のメインクロック及び複数系統のオプショナルクロックを実装できるようにして、クロック配線に係るレイアウトの自由度も提供される。これにより、クロック配線に係るレイアウトの自由度を提供しながらも、クロック配線設計を容易かつ速やかに行うことができる。
【００４２】
なお、上述した説明では、ユーザレイアウト処理前の半導体集積回路に予め作り込まれるクロックツリー（固定クロック配線）は、Ｈ字状クロック配線を再帰的に接続して構成したクロックツリーを一例として図示しているが、本発明はこれに限定されず、クロックの供給源側（最上流）から回路要素の入力端側（最下流）の方向に向かって、クロックが２以上の経路に順次分配されるようなクロックツリーであれば、その形状は任意である。
【００４３】
次に、本実施形態における半導体集積回路のレイアウト設計方法について説明する。
図５（ａ）、（ｂ）は、本実施形態における半導体集積回路の配線設計手順を概略的に示した図である。
【００４４】
図５（ａ）は、図２に示したユーザレイアウト処理前の半導体集積回路の設計方法を示している。
ユーザレイアウト処理前の半導体集積回路の設計においては、フレーム２０におけるバルクパターン（マクロ）の配置情報であるフレーム２０内のバルクパターン配置データ５１と、初期値として予め設定されているバルクパターンの配線パターンを示す初期配線パターンデータ５２とを参照し、フレームライブラリ作成処理Ｐ１を行う。
【００４５】
フレームライブラリ作成処理Ｐ１では、バルクパターン毎に、初期配線パターンデータ５２に従って配線パターンを設定するとともに、固定クロック配線に係るクロック配線設計を行う。この処理Ｐ１により、バルクパターンの配置及び配線パターンが設定されるとともに、図２に示したような固定クロック配線の配線パターンが設定された初期配線パターン設定済みフレームデータ５３が得られる。
【００４６】
図５（ｂ）は、ユーザの要求に応じた半導体集積回路を得るためのユーザレイアウト設計方法を示している。
ユーザレイアウト設計においては、上述したようにして得られた初期配線パターン設定済みフレームデータ５３と、ユーザの要求に応じてそれをカスタマイズするためのユーザ回路情報５４とを参照し、ユーザレイアウト処理Ｐ２を行う。
【００４７】
このユーザレイアウト処理Ｐ２では、初期配線パターン設定済みフレームがユーザの要求に応じた所望の半導体集積回路となるように、フレーム１内に配置された各々のバルクパターンの配線パターンが、ユーザ回路情報５４に基づいて適切な配線パターンに差し替え、設定する。また、ユーザ回路情報５４に基づいて、メインクロック及びオプショナルクロックの使用状況に応じたクロックマッピングを行い、固定クロック配線として設定されているクロックツリーの割り当てを行う。
ユーザレイアウト処理Ｐ２により、図４に示したようなユーザの要求に応じた適切なクロック配線パターンが設定されたユーザレイアウト済みフレームデータ５５が得られる。
【００４８】
図６は、図５（ａ）に示したフレームライブラリ作成処理Ｐ１の詳細を示すフローチャートである。
まず、ステップＳ１にて、バルクパターン配置データ及び初期配線パターンデータに基づいて、フレーム２０内にバルクパターンを配置するとともに、それらに初期値として指定された配線パターンを設定する。
【００４９】
ステップＳ２にて、仮の固定クロック配線（クロックツリー）パターンを生成する。この固定クロック配線パターンの仮生成では、クロックを分配して供給するためのクロックハブＣＫＨ及びクロックバッファも配置される。
【００５０】
次に、ステップＳ３にて、ステップＳ２において生成した固定クロック配線の経路毎にディレイ値を求め、クロックスキューを算出する。
ステップＳ４にて、ステップＳ３において算出したクロックスキューに基づいて、固定クロック配線における遅延量調整が必要であるか否かを判断する。その結果、遅延量調整が必要であると判断した場合にはステップＳ５に進み、そうでない場合にはステップＳ５をスキップしステップＳ６に進む。
【００５１】
ステップＳ５にて、ステップＳ３において算出したクロックスキューに基づき、クロックスキュー調整を行う。クロックスキュー調整は、固定クロック配線の各経路におけるディレイ値に基づいてクロックスキューが小さくなるように、例えば、固定クロック配線の経路を変更したり、遅延調整用のクロックバッファを経路上に挿入したり、それを変更したりすることにより行う。
【００５２】
上述したようにして固定クロック配線における遅延量調整が終了すると、ステップＳ６にて、クロックスキューを最小とした、クロックハブＣＫＨ及びクロックバッファの配置を含む固定クロック配線パターンを設定し作成する。
続いて、ステップＳ７にて、初期配線パターン設定済みフレームデータを生成して出力し、処理を完了する。
【００５３】
図７は、図５（ｂ）に示したユーザレイアウト処理Ｐ２の詳細を示すフローチャートである。なお、図７においては、ユーザレイアウト処理におけるクロック配線設計に係る処理についてのみ示しており、初期配線パターン設定済みフレームデータ及びユーザ回路情報は既に入力されているものとする。
【００５４】
ステップＳ１１にて、ユーザ回路情報に基づいて、メインクロックを使用する、すなわちメインクロックで動作するバルクパターン（マクロ）を検索する。
ステップＳ１２にて、ステップＳ１１での検索結果に応じて、当該メインクロックに割り当てる固定クロック配線（クロックツリーの系統及び区間）を決定し、必要に応じて不要な固定クロック配線を削除する。
上記ステップＳ１１及びＳ１２の処理を、ユーザ回路情報に指定されている（ユーザが使用を要求する）メインクロックについてそれぞれ行う。
【００５５】
次に、ステップＳ１３にて、オプショナルクロックを使用する旨がユーザ回路情報に指定されているか否かを判断する。この判断の結果、オプショナルクロックを使用する場合にはステップＳ１４に進み、使用しない場合にはステップＳ１６に進む。
【００５６】
ステップＳ１４にて、ユーザ回路情報に基づいて、オプショナルクロックを使用する、すなわちオプショナルクロックで動作するバルクパターン（マクロ）を検索する。
ステップＳ１５にて、ステップＳ１４での検索結果に応じて、オプショナルクロックを供給するクロック配線を追加する。実際には、ステップＳ１４での検索結果に応じて、当該オプショナルクロックに割り当てる固定クロック配線（クロックツリーの系統及び区間）を決定する。また、このステップＳ１５では、必要に応じて、遅延量調整を行ったり、不要な固定クロック配線を削除したりする。
上記ステップＳ１４及びＳ１５の処理を、ユーザ回路情報に指定されているすべてのオプショナルクロックについてそれぞれ行う。
【００５７】
以上のようにして、メインクロック及びオプショナルクロックのそれぞれについて、固定クロック配線の割り当てが完了すると、ステップＳ１６にて、ユーザレイアウト済みフレームデータを生成して出力し、処理を完了する。
【００５８】
なお、図７に示したユーザレイアウト処理では、ユーザ回路情報に基づいて、メインクロック及びオプショナルクロックを使用するバルクパターン（マクロ）を検索し、その検索結果に応じて固定クロック配線（クロックツリーの系統及び区間）の割り当てや削除を行うようにしているが、バルクパターン（マクロ）がどのクロックを使用しているかをユーザ回路情報を元に判断し、その結果に基づいて固定クロック配線の割り当てや削除を行うようにしても良い。また、固定クロック配線（クロックツリーの系統及び区間）に使用するか否かの情報をユーザ回路情報に直接設定しておき、その設定状況に応じて固定クロック配線の割り当てや削除を行うようにしても良い。
【００５９】
なお、上述した本実施形態による半導体集積回路のレイアウト設計に係る処理は、ＣＰＵ又はＭＰＵ、ＲＡＭ、ＲＯＭなどを有するコンピュータが、ＲＯＭに記憶されたプログラムを実行することで実現でき、上記プログラムは本発明の実施形態に含まれる。また、コンピュータが上記機能を果たすように動作させるプログラムを、例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、上記プログラムを記録した記録媒体は本発明の実施形態に含まれる。上記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
また、コンピュータがプログラムを実行し処理を行うことにより、上記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。上記プログラムプロダクトとしては、上記実施形態の機能を実現するプログラム自体、上記プログラムが読み込まれたコンピュータ、ネットワークを介して通信可能に接続されたコンピュータに上記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
また、コンピュータが供給されたプログラムを実行することにより上記実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼動しているＯＳ（オペレーティングシステム）又は他のアプリケーションソフト等と共同して上記実施形態の機能が実現される場合や、供給されたプログラムの処理の全て又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
例えば、上述した本実施形態による半導体集積回路のレイアウト設計は、図８にハードウェア構成を示すようなコンピュータ８００を用い、そのＣＰＵ８０１により実行可能である。
コンピュータ８００は、上記図８に示すように、ＣＰＵ８０１と、ＲＯＭ８０２と、ＲＡＭ８０３と、キーボード（ＫＢ）８０９のキーボードコントローラ（ＫＢＣ）８０５と、表示部としてのＣＲＴディスプレイ（ＣＲＴ）８１０のＣＲＴコントローラ（ＣＲＴＣ）８０６と、ハードディスク（ＨＤ）８１１及びフレキシブルディスク（ＦＤ）８１２のディスクコントローラ（ＤＫＣ）８０７と、ネットワークインタフェースカード（ＮＩＣ）８０８とが、システムバス８０４を介して互いに通信可能に接続された構成としている。
ＣＰＵ８０１は、ＲＯＭ８０２又はＨＤ８１１に記憶されたソフトウェア（プログラム）、又はＦＤ８１２より供給されるソフトウェア（プログラム）を実行することで、システムバス８０４に接続された各構成部を統括的に制御する。
すなわち、ＣＰＵ８０１は、上述したような動作を行うための処理プログラムを、ＲＯＭ８０２、ＨＤ８１１、又はＦＤ８１２から読み出して実行することで、上記実施形態での動作を実現するための制御を行う。
ＲＡＭ８０３は、ＣＰＵ８０１の主メモリ又はワークエリア等として機能する。
ＫＢＣ８０５は、ＫＢ８０９や図示していないポインティングデバイス等からの指示入力を制御する。ＣＲＴＣ８０６は、ＣＲＴ８１０の表示を制御する。ＤＫＣ８０７は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、上記実施形態における上記処理プログラム及び設計データ等を記憶するＨＤ８１１及びＦＤ８１２とのアクセスを制御する。ＮＩＣ８０８はネットワーク８１３上の他の装置と双方向にデータをやりとりする。
【００６０】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００６１】
（付記１）所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層及びユーザによる配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法であって、
ユーザレイアウト前にクロックスキュー値を調整した固定クロック配線を用意して、ユーザレイアウト時に当該固定クロック配線を用いてユーザの要求に応じたクロック配線設計を行うことを特徴とする半導体集積回路の設計方法。
（付記２）上記固定クロック配線は、上記半導体集積回路全体に対して供給されるグローバルクロック、及び上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能なように構成されていることを特徴とする付記１記載の半導体集積回路の設計方法。
（付記３）上記クロック配線設計は、上記バルク層に配置されたバルクパターンを変更せずに行うことを特徴とする付記１記載の半導体集積回路の設計方法。
（付記４）上記固定クロック配線のうち、上記クロック配線設計により未使用となった固定クロック配線を削除することを特徴とする付記１記載の半導体集積回路の設計方法。
（付記５）上記固定クロック配線は、配線経路を複数に分岐させるクロックバッファセルを含み、上記クロック配線設計により未使用となった上記クロックバッファセルを任意の論理機能を割り当て可能な状態、又は機能停止状態にすることを特徴とする付記１記載の半導体集積回路の設計方法。
（付記６）所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層及びユーザによる配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法であって、
ユーザレイアウト前に、上記半導体集積回路全体に対して供給されるグローバルクロック、及びユーザが任意に追加可能な上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能であり、かつクロックスキュー値を調整した固定クロック配線の設計を行う第１のクロック配線設計ステップと、
上記固定クロック配線設計ステップにて設計された固定クロック配線を用いて、ユーザの要求に応じたクロック配線の設計を行う第２のクロック配線設計ステップとを有することを特徴とする半導体集積回路の設計方法。
（付記７）上記第１及び第２のクロック配線設計ステップは、上記バルク層に配置されたバルクパターンを変更せずにクロック配線の設計を行うことを特徴とする付記６記載の半導体集積回路の設計方法。
（付記８）上記固定クロック配線は、配線経路を分岐させるクロックバッファセルを有し、当該クロックバッファセルに上記ローカルクロックを外部から入力する信号線を任意に接続可能に構成したことを特徴とする付記６記載の半導体集積回路の設計方法。
（付記９）上記第２のクロック配線設計ステップ後に、未使用となった上記固定クロック配線及び配線経路を複数に分岐させるクロックバッファセルの少なくとも一方の後処理を行う未使用部処理ステップをさらに有することを特徴とする付記６記載の半導体集積回路の設計方法。
（付記１０）上記未使用部処理ステップでは、上記未使用となった固定クロック配線を削除することを特徴とする付記９記載の半導体集積回路の設計方法。
（付記１１）上記未使用部処理ステップでは、上記未使用となったクロックバッファセルを削除することを特徴とする付記９記載の半導体集積回路の設計方法。
（付記１２）上記未使用部処理ステップでは、上記未使用となったクロックバッファセルを、任意の論理機能を割り当て可能な状態、又は機能停止状態に設定することを特徴とする付記９記載の半導体集積回路の設計方法。
（付記１３）上記固定クロック配線は、クロックの供給側からの配線長が増加する方向に向かって、配線経路が順次分岐するクロックツリー構造を有することを特徴とする付記６記載の半導体集積回路の設計方法。
（付記１４）上記固定クロック配線は、Ｈ字状に再帰的に接続したクロック配線であることを特徴とする付記６記載の半導体集積回路の設計方法。
（付記１５）所定の回路機能を実現するための複数のバルクパターンが配置されたバルク層と、上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層及びユーザによる配線パターンの変更が不可な固定配線層を含む複数の配線層とを有するマスタースライス方式の半導体集積回路の設計方法をコンピュータに実行させるためのプログラムであって、
ユーザレイアウト前に、上記半導体集積回路全体に対して供給されるグローバルクロック、及びユーザが任意に追加可能な上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能であり、かつクロックスキュー値を調整した固定クロック配線の設計を行う第１のクロック配線設計ステップと、
上記固定クロック配線設計ステップにて設計された固定クロック配線を用いて、ユーザの要求に応じたクロック配線の設計を行う第２のクロック配線設計ステップとをコンピュータに実行させるためのプログラム。
（付記１６）上記第２のクロック配線設計ステップ後に、未使用となった上記固定クロック配線及び配線経路を複数に分岐させるクロックバッファセルの少なくとも一方の後処理を行う未使用部処理ステップをさらにコンピュータに実行させるための付記１５記載のプログラム。
（付記１７）上記未使用部処理ステップでは、上記未使用となった固定クロック配線の削除、上記未使用となったクロックバッファセルの削除、及び当該クロックバッファセルを任意の論理機能を割り当て可能な状態又は機能停止状態に設定する処理の少なくとも１つを行うことを特徴とする付記１６記載のプログラム。
（付記１８）マスタースライス方式の半導体集積回路であって、
所定の回路機能を実現するための複数のバルクパターンが形成されるバルク層と、
上記バルク層上に順次積層され、ユーザによる配線パターンの変更が可能な可変配線層及びユーザによる配線パターンの変更が不可な固定配線層を含む複数の配線層とを有し、
上記固定配線層に、上記半導体集積回路全体に対して供給されるグローバルクロック、及びユーザが任意に追加可能な上記半導体集積回路の一部領域に対して供給されるローカルクロックを選択的に供給可能な固定クロック配線が形成されていることを特徴とする半導体集積回路。
（付記１９）上記固定クロック配線は、クロックスキュー値が予め調整されていることを特徴とする付記１８記載の半導体集積回路。
（付記２０）上記固定クロック配線は、配線経路を分岐させるクロックバッファセルを有し、当該クロックバッファセルに上記ローカルクロックを外部から入力する信号線を任意に接続可能に構成されていることを特徴とする付記１８記載の半導体集積回路。
（付記２１）上記固定クロック配線は、クロックの供給側からの配線長が増加する方向に向かって、配線経路が順次分岐するクロックツリー構造を有することを特徴とする付記１８記載の半導体集積回路。
（付記２２）上記固定クロック配線は、Ｈ字状に再帰的に接続したクロック配線であることを特徴とする付記１８記載の半導体集積回路。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施形態による設計対象の半導体集積回路の構成例を示す図である。
【図２】ユーザレイアウト処理前の半導体集積回路におけるクロック配線のレイアウトの一例を示す図である。
【図３】固定クロック配線におけるクロックスキュー調整の一例を説明するための図である。
【図４】ユーザレイアウト処理後の半導体集積回路におけるクロック配線のレイアウトの一例を示す図である。
【図５】本実施形態における半導体集積回路の配線設計手順を示す図である。
【図６】フレームライブラリ作成処理の詳細を示すフローチャートである。
【図７】ユーザレイアウト処理の詳細を示すフローチャートである。
【図８】本実施形態における半導体集積回路のレイアウト設計を行うためのコンピュータのハードウェア構成図である。
【符号の説明】
【００６３】
２０  半導体チップ
２１  ＲＡＭマクロ
２２  フリップフロップ群
２３  ＲＡＭマクロ
２４  ＤＤＲ−ＩＦマクロ
２５  ＰＬＬマクロ
２６  Ｉ／Ｏマクロ
２７  パッド
ＲＣＫ１、ＲＣＫ２  ルートクロックバッファ
ＣＫＨ  クロックハブ
ＬｎＧＡ、ＬｎＧＢ  クロックバッファセル
【図１】
0004751581.tif 000002
【図２】
0004751581.tif 000003
【図３】
0004751581.tif 000004
【図４】
0004751581.tif 000005
【図５】
0004751581.tif 000006
【図６】
0004751581.tif 000007
【図７】
0004751581.tif 000008
【図８】
0004751581.tif 000009