(57)【要約】【課題】製造ばらつきが発生しても、フリップフロップにおいてタイミングエラーが発生しにくい半導体集積回路を提供する。【解決手段】この半導体集積回路の設計方法においては、各クロック信号の耐用時間内のトグル回数を求め(ステップＳ２０２)、各クロック信号の耐用時間経過時における遅延変動量を求める(ステップＳ２０３)。次に、２個の記憶セルに供給されるクロック信号について遅延変動量の差を求め(ステップＳ２０４)、求めた差を設計マージンとして２個の記憶セル間のタイミング制約に設定する(ステップＳ２０５)。そして、回路のタイミング調整を行う(ステップＳ２０５)。【選択図】図８
2006313894.tif 000002
【特許請求の範囲】
【請求項１】
クロック信号に同期して動作する半導体集積回路の設計方法であって、
半導体集積回路に含まれる記憶セルに供給される各クロック信号について、予め定めた耐用時間内のトグル回数を求めるステップと、
前記トグル回数に基づき、各前記クロック信号について前記耐用時間経過時における遅延変動量を求めるステップと、
第１の記憶セルに供給されるクロック信号についての前記遅延変動量と、第２の記憶セルに供給されるクロック信号についての前記遅延変動量との差を求めるステップと、
前記求めた差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、前記第１および第２の記憶セル間のタイミング制約に設定するステップと、
前記設計マージンを設定した後のタイミング制約に従って、前記第１および第２の記憶セルに信号を供給する回路についてタイミング調整を行うステップとを備えた、半導体集積回路の設計方法。
【請求項２】
クロック信号に同期して動作する半導体集積回路であって、
複数の回路ブロックと、
与えられたクロック信号に基づき、各前記回路ブロックに供給されるクロック信号を生成するクロック回路と、
各前記回路ブロックに供給されるクロック信号のトグル回数を数えるトグル計数回路と、
前記トグル回数を出力するトグル回数出力回路とを備えた、半導体集積回路。
【請求項３】
更に、前記トグル回数が相対的に少ないクロック信号が供給される前記回路ブロックに対して、前記与えられたクロック信号とは別の調整用クロック信号を供給するトグル調整回路を備えた、請求項２に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号に同期して動作する半導体集積回路、およびその設計方法に関する。
【背景技術】
【０００２】
ロジック回路を含んだ半導体集積回路の多くは、外部から供給されたクロック信号、あるいは、外部から供給された信号に基づき内部で生成したクロック信号に同期して動作する。一般に半導体集積回路は、複数のフリップフロップと、与えられたクロック信号に基づき各フリップフロップに供給されるクロック信号を生成する回路（以下、クロック回路という）とを備えている。半導体集積回路を正しく動作させるためには、各フリップフロップにクロック信号を正しく供給することが必要である。また、半導体集積回路の消費電力を低減するためには、動作させない回路ブロックに対するクロック信号の供給を停止することが有効である。このため、クロック回路の構成やクロック信号の供給方法は、半導体集積回路の設計上の重要な課題であると認識されている。
【０００３】
クロック回路を解析するときには、クロック回路のうちで、クロック信号が流れる経路（以下、クロック経路という）とクロック経路上に存在する論理セルとに着目し、その部分をクロックツリーとして解析することが、広く行われている。このクロックツリー解析では、与えられたクロック信号が各フリップフロップに到達するまでの時間などが算出される。その後、クロックツリーの解析結果に基づき、クロックスキュー（与えられたクロック信号が各フリップフロップに到達するまでの時間の差）が所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、レイアウト結果を修正する処理などが行われる。
【０００４】
半導体集積回路におけるクロック信号の供給については、従来から、種々の技術が知られている。このうち、本発明と関連性を有する技術としては、例えば、特許文献１〜３に記載されたものがある。特許文献１には、１ビットのコンパレータを１個おきに天地逆向きにレイアウトした全並列型Ａ／Ｄ変換器が記載されている。特許文献２には、閾値電圧を変更できるインバータが記載されている。特許文献３には、多層配線層の最下層を用いてクロック信号を配線することが記載されている。
【特許文献１】特開昭６２−１９０７４７号公報
【特許文献２】特開平４−２８４０２０号公報
【特許文献３】特開２０００−６８３８０号公報
【特許文献４】特開２００２−１１０８０２号公報
【特許文献５】特開平９−７４１３８号公報
【特許文献６】特開平２−１１０６７２号公報
【特許文献７】特開昭６２−１９０７４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、回路の微細化および低電圧化の進行に伴い、半導体集積回路におけるクロック信号の供給については、従来よりも高いレベルの技術が要求されるようになっている。例えば、微細化の進行に伴い、クロック回路に含まれる論理セルを構成するトランジスタのサイズは小さくなっていので、クロック回路の遅延時間は、従来よりも製造ばらつきの影響を受けやすくなっている。また、微細化の進行に伴い、クロック回路の規模が大きくなっているので、クロックツリー解析やクロック回路の設計変更に、従来よりも時間がかかるようになっている。また、微細化および低電圧化の進行に伴い、クロック回路の回路規模は大きくなるのに対して、クロック回路に含まれる論理セル１段あたりの遅延時間は減少するので、クロック回路の設計では、従来よりも適切な設計マージンを設定することが必要になっている。また、最近では、経年劣化に伴う遅延時間変動を見込んだ回路設計も行われているが、クロック信号は最も頻繁に変化する信号の１つであるから、クロック信号の経年劣化に伴う遅延時間変動を正しく評価した上で、半導体集積回路を設計することが必要になっている。
【０００６】
それ故に、本発明は、クロック信号の供給について従来よりも優れた特徴を有する半導体集積回路、およびそのような半導体集積回路の設計方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、各クロック信号の耐用時間内のトグル回数に基づき、各クロック信号の耐用時間経過時における遅延変動量を求め、２個の記憶セルに供給されるクロック信号について遅延変動量の差を求め、求めた差を設計マージンとして２個の記憶セル間のタイミング制約に設定して回路のタイミング調整を行う、半導体集積回路の設計方法である。
【０００８】
第２の発明は、各回路ブロックに供給されるクロック信号のトグル回数を数えるトグル計数回路と、数えたトグル回数を出力するトグル回数出力回路とを備えた半導体集積回路である。
【０００９】
この場合、更に、トグル回数が相対的に少ないクロック信号が供給される回路ブロックに調整用クロック信号を供給するトグル調整回路を備えても良い。
【発明の効果】
【００１０】
第１の発明によれば、従来よりも的確に設計マージンを設定することができるので、トランジスタの経年劣化に伴うクロック信号の遅延時間の変動を考慮した上で、従来よりも回路規模を削減することができる。
【００１１】
第２の発明によれば、各回路ブロックに供給されるクロック信号のトグル回数を求めることにより、実動作環境下でクロック信号が変化する確率を、論理シミュレーションなどよりも短時間かつ高精度で求めることができる。したがって、トランジスタの経年劣化に伴うクロック信号の遅延時間変動をより的確に考慮して、新たにタイミングエラーが発生しにくい半導体集積回路を設計することができる。
【００１２】
また、半導体集積回路をシステムに組み込んだ後でも、各クロック信号のトグル回数を調整することにより、異なる頻度で変化するクロック信号が供給され、トランジスタの経年劣化の程度に差が生じてタイミングエラーが発生し、半導体集積回路の耐用時間が短くなることを防止することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、本発明の第１〜第７の実施形態を説明する。各実施形態では、発明の理解を容易にするために、半導体集積回路に含まれる回路のうち、発明の理解に必要とされる主要な回路を抽出して説明する。
【００１４】
（第１の実施形態）
本発明の第１の実施形態では、クロック回路に含まれる論理セルを、統一したサイズのトランジスタによって構成した半導体集積回路について説明する。図１は、本実施形態に係る半導体集積回路の構成を示す図である。図１に示す半導体集積回路は、第１のクロック回路１１、第２のクロック回路１２、第１のフリップフロップ１３、組合せ回路１４、および第２のフリップフロップ１５を備えている。第１および第２のフリップフロップ１３、１５は、いずれも、与えられたクロック信号ＣＫに同期して動作する。より詳細には、第１のクロック回路１１は、クロック信号ＣＫに基づき第１のクロック信号ＣＫ１を生成し、第１のフリップフロップ１３は、第１のクロック信号ＣＫ１に同期して動作する。第２のクロック回路１２および第２のフリップフロップ１５は、これと同様に動作する。組合せ回路１４は、第１のフリップフロップ１３や図示しない他のフリップフロップに記憶された値に基づき、第２のフリップフロップ１５に供給されるデータ入力信号を生成する。
【００１５】
半導体集積回路に含まれる回路はいずれも１以上の論理セルを含み、各論理セルは１以上のトランジスタによって構成されている。図２は、トランジスタのレイアウト図である。レイアウトレベルで見ると、トランジスタは、図２に示すように拡散領域２１とポリシリコン領域２２とが重なる箇所に形成される。トランジスタの特性は、拡散領域２１とポリシリコン領域２２との重なり領域のサイズ（チャネル幅Ｗおよびチャネル長Ｌ）などによって決定される。
【００１６】
図１に示すように、第１のクロック回路１１には論理セル１６が含まれており、第２のクロック回路１２には論理セル１７が含まれている。本実施形態に係る半導体集積回路は、第１のクロック回路１１に含まれる論理セル１６と第２のクロック回路１２に含まれる論理セル１７とが、統一されたサイズのトランジスタによって構成されていることを特徴とする。論理セル１６と論理セル１７とは、典型的には、チャネル幅Ｗが統一されたトランジスタによって構成されるが、チャネル幅Ｗおよびチャネル長Ｌが統一されたトランジスタによって構成されることとしてもよい。
【００１７】
以下、本実施形態に係る半導体集積回路において、第１のクロック回路１１に含まれる論理セル１６と第２のクロック回路１２に含まれる論理セル１７とが、チャネル幅Ｗが統一されたトランジスタによって構成されていることによる効果を説明する。図１において、クロック信号ＣＫの周期をＴ、第１のクロック回路１１の遅延時間をｔ１、第２のクロック回路１２の遅延時間をｔ２、組合せ回路１４の遅延時間と第１のフリップフロップ１３のクロック信号からデータ出力信号までの遅延時間との和をｔｄ、第２のフリップフロップ１５のセットアップ時間およびホールド時間を、それぞれｔｓおよびｔｈとする。この場合、第２のフリップフロップ１５が第２のクロック信号ＣＫ２に同期して正しく動作するためには、次式（１）に示すセットアップマージンＭｓ、および次式（２）に示すホールドマージンＭｈが、いずれも所定値以上の正の値であることが必要とされる（図３を参照）。
Ｍｓ＝（ｔ２−ｔ１）＋Ｔ−ｔｄ−ｔｓ  …（１）
Ｍｈ＝（ｔ１−ｔ２）＋ｔｄ−ｔｈ      …（２）
【００１８】
図４は、半導体集積回路に含まれるトランジスタについて、チャネル幅Ｗの変動量と遅延時間の変動量との関係を示す図である。図４（ａ）は、従来の半導体集積回路に含まれるトランジスタについての関係を示す図であり、図４（ｂ）は、本実施形態に係る半導体集積回路に含まれるトランジスタについての関係を示す図である。
【００１９】
ここで、まず、従来の手法を用いて、図１と同じ構成を有する半導体集積回路を設計および製造したとする。従来の手法による半導体集積回路では、クロック回路に含まれる論理セルは、チャネル幅Ｗが統一されていないトランジスタによって構成されている。第１のクロック回路１１に含まれる論理セル１６を構成するトランジスタのチャネル幅の設計値をＷ１、第２のクロック回路１２に含まれる論理セル１７を構成するトランジスタのチャネル幅の設計値をＷ２としたとき、Ｗ１がＷ２よりも大きく、かつ、製造された半導体集積回路では、製造ばらつきにより、各トランジスタのチャネル幅が設計値よりもΔＷだけ変動したとする。この場合、製造されたトランジスタのチャネル幅は、第１のクロック回路１１に含まれる論理セル１６では（Ｗ１＋ΔＷ）、第２のクロック回路１２に含まれる論理セル１７では（Ｗ２＋ΔＷ）となるが、Ｗ１がＷ２より大きい場合、製造ばらつきに起因するチャネル幅の変動割合は、論理セル１７に含まれるトランジスタのほうが、論理セル１６に含まれるトランジスタよりも大きくなる。
【００２０】
このため、従来の手法による半導体集積回路では、製造ばらつきが発生したときに、第２のクロック回路１２の遅延時間ｔ２は、第１のクロック回路１１の遅延時間ｔ１よりも大きく変動する（図４（ａ）を参照）。したがって、チャネル幅の実測値が設計値よりも大きくなった場合（すなわち、ΔＷが正である場合）には、第２のクロック回路１２の遅延時間ｔ２は、第１のクロック回路１１の遅延時間ｔ１よりも、より多く減少する。このため、上式（１）における（ｔ２−ｔ１）の値が小さくなり、第２のフリップフロップ１５におけるセットアップマージンが不足する。一方、現実のチャネル幅が設計値よりも小さくなった場合（すなわち、ΔＷが負である場合）には、第２のクロック回路１２の遅延時間ｔ２は、第１のクロック回路１１の遅延時間ｔ１よりも、より多く増加する。このため、上式（２）における（ｔ１−ｔ２）の値が小さくなり、第２のフリップフロップ１５におけるホールドマージンが不足する。このように、クロック回路に含まれる論理セルがチャネル幅が統一されていないトランジスタによって構成されている場合、半導体集積回路の製造ばらつきにより、第２のフリップフロップ１５ではタイミングエラーが発生しやすくなる。
【００２１】
これに対して、本実施形態に係る半導体集積回路では、クロック回路に含まれる論理セルは、チャネル幅Ｗが統一されたトランジスタによって構成されている。すなわち、第１のクロック回路１１に含まれる論理セル１６を構成するトランジスタのチャネル幅の設計値Ｗ１と、第２のクロック回路１２に含まれる論理セル１７を構成するトランジスタのチャネル幅の設計値Ｗ２とは、常に同じ値をとる。このため、製造ばらつきが発生したときでも、第１のクロック回路１１の遅延時間ｔ１と第２のクロック回路１２の遅延時間ｔ２とは、同じ時間だけ増加または減少する（図４（ｂ）を参照）。したがって、製造ばらつきが発生しても、上式（１）における（ｔ２−ｔ１）の値や上式（２）における（ｔ１−ｔ２）の値は設計値から変化しないので、第２のフリップフロップ１５ではタイミングエラーが発生しにくい。
【００２２】
よって、本実施形態に係る半導体集積回路によれば、製造ばらつきが発生してもタイミングエラーが発生しにくい半導体集積回路を得ることができる。クロック回路に含まれる論理セルがチャネル幅Ｗおよびチャネル長Ｌが統一されたトランジスタによって構成されている半導体集積回路も、これと同様の効果を奏する。
【００２３】
本実施形態に係る半導体集積回路については、以下に示す変形例を構成することができる。本変形例に係る半導体集積回路は、クロック回路に含まれる論理セルが、統一されたサイズを有するトランジスタによって構成されていることに加えて、クロック回路に含まれる論理セルが、矩形状に統一された拡散領域２３を有するトランジスタ（図５（ａ））によって構成されていることを特徴とする。
【００２４】
以下、図５を参照して、本変形例に係る半導体集積回路の効果を説明する。図５（ｂ）は、矩形状でない拡散領域２４を有するトランジスタのレイアウト図である。図５（ｂ）に示すトランジスタを含む半導体集積回路を製造すると、図５（ｃ）に示すように、拡散領域２４のくぼんだ頂点Ｐ（周囲３６０度のうち、２７０度が拡散領域に含まれる頂点）の周囲の、本来拡散領域が形成されるべきでない部分に、不要な拡散領域２５（ハッチングを施した領域）が形成される。この不要な拡散領域２５は、そのサイズや形状によって、トランジスタのチャネル幅Ｗに影響を与え、トランジスタを含んだ回路の遅延時間に影響を与えることがある。
【００２５】
このため、例えば、第１のクロック回路１１に含まれる論理セル１６が、矩形状の拡散領域２３を有するトランジスタ（図５（ａ））によって構成され、第２のクロック回路１２に含まれる論理セル１７が、くぼんだ頂点Ｐを持つ拡散領域２４を有するトランジスタ（図５（ｂ））によって構成されている場合、製造時に形成される不要な拡散領域２５（図５（ｃ））の影響によって、第１のクロック回路１１の遅延時間ｔ１と第２のクロック回路１２の遅延時間ｔ２との差が、設計値と異なってしまうことがある。これに伴い、第１のクロック回路１１の遅延時間ｔ１と第２のクロック回路１２の遅延時間ｔ２との間に成立すべき時間的な関係が満たされなくなり、第２のフリップフロップ１５などでタイミングエラーが発生しやすくなる。
【００２６】
これに対して、本変形例に係る半導体集積回路では、クロック回路に含まれる論理セルは、矩形状に統一された拡散領域２３を有するトランジスタ（図５（ａ））によって構成されている。このような特徴を有する拡散領域には、図５（ｃ）に示すような、くぼんだ頂点Ｐが存在しないので、くぼんだ頂点Ｐの周囲に不要な拡散領域２５が形成されることもない。このため、第１のクロック回路１１の遅延時間ｔ１と第２のクロック回路１２の遅延時間ｔ２とは、製造ばらつきが発生した場合でも、同じ時間だけ増加または減少する。したがって、本変形例に係る半導体集積回路によれば、第１の実施形態に係る半導体集積回路よりも、さらにタイミングエラーが発生しにくい半導体集積回路を得ることができる。
【００２７】
（第２の実施形態）
本発明の第２の実施形態では、ある動作条件下で動作する回路ブロックを用いて、これとは異なる動作条件下で動作する半導体集積回路を設計する方法について説明する。まず、ある閾値電圧で動作する回路ブロックを用いて、これとは異なる閾値電圧で動作する半導体集積回路（図６）を設計する方法について説明する。図６に示す半導体集積回路３０は、前半クロック回路３１、回路ブロック３２、第２の後半クロック回路３５、および第２のフリップフロップ３６を備え、ある閾値電圧（以下、第２の閾値電圧ＶＴ２という）で動作する。回路ブロック３２は、第１の後半クロック回路３３、および第１のフリップフロップ３４を含み、元々、第２の閾値電圧ＶＴ２とは異なる閾値電圧（以下、第１の閾値電圧ＶＴ１という）で動作するように設計されていたものである。
【００２８】
図６において、第１および第２のフリップフロップ３４、３６は、いずれも、与えられたクロック信号ＣＫに同期して動作する。より詳細には、前半クロック回路３１および第１の後半クロック回路３３は、クロック信号ＣＫに基づき第１のクロック信号ＣＫ１を生成し、第１のフリップフロップ３４は、第１のクロック信号ＣＫ１に同期して動作する。第２の後半クロック回路３５および第２のフリップフロップ３６も、これと同様に動作する。
【００２９】
図７は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図７に示す手順を実行するに前に、クロック回路で使用する論理セルとして、第１の閾値電圧Ｖ１で動作する論理セル（以下、第１のクロック用セルという）と、第２の閾値電圧Ｖ２で動作する論理セル（以下、第２のクロック用セルという）とを準備する。その際、第１のクロック用セルと第２のクロック用セルとの間では、同じ種類の論理セルについては、入力容量とセル固有遅延と駆動能力が等しくなるようにしておく。言い換えると、第１のクロック用セルの入力容量は、第２のクロック用セルの入力容量に等しく、第１のクロック用セルのセル固有遅延は、第２のクロック用セルのセル固有遅延に等しく、第１のクロック用セルの駆動能力は、第２のクロック用セルの駆動能力に等しくなるようにしておく。なお、第１のクロック用セルと第２のクロック用セルとの間では、同じ種類の論理セルであっても、セルのサイズは異なっていてもよい。
【００３０】
上記特徴を有する第１および第２のクロック用セルを準備した後に、図７に示す手順を実行する。まず、第１の閾値電圧ＶＴ１で動作する回路ブロック３２を設計する（ステップＳ１０１）。この際、回路ブロック３２に含まれるクロック回路（後に、第１の後半クロック回路３３となる回路）は、第１のクロック用セルを用いて設計する。回路ブロック３２は、例えば、他の半導体集積回路に内蔵して使用するために、ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）コアとして設計された回路であってもよい。
【００３１】
次に、ステップＳ１０１で設計した回路ブロック３２について、クロック回路に含まれる第１のクロック用セルを、同じ種類の第２のクロック用セルに置換する（ステップＳ１０２）。論理セル置換後のクロック回路は、第１の後半クロック回路３３となる。これにより、第１の後半クロック回路３３を含んだ回路ブロック３２が得られる。次に、ステップＳ１０２で得られた回路ブロック３２を含み、全体として第２の閾値電圧ＶＴ２で動作する半導体集積回路３０を設計する（ステップＳ１０３）。
【００３２】
以下、本実施形態に係る設計方法を用いて、半導体集積回路３０を設計する場合の効果を説明する。ここで仮に、本実施形態に係る設計方法とは異なり、第１の閾値電圧ＶＴ１で動作する回路ブロック３２を設計するときに、回路ブロック３２に含まれるクロック回路を、上記特徴を有していない論理セルを用いて設計したとする。このようにして設計されたクロック回路を第１の後半クロック回路３３として含む半導体集積回路３０を設計すると、設計された半導体集積回路３０では、元々第１の閾値電圧ＶＴ１で動作するように設計された第１のフリップフロップ３４と、新たに第２の閾値電圧ＶＴ２で動作するように設計された第２のフリップフロップ３６との間で、閾値電圧の違いに起因したクロックスキューが発生しやすくなる。したがって、このクロックスキューを抑えるためには、回路ブロック３２を組み込んだ後の半導体集積回路３０について、閾値電圧を一致させるために回路変更を行うときに、第１の後半クロック回路３３の遅延時間ｔ１が閾値電圧の変更（第１の閾値電圧ＶＴ１から第２の閾値電圧ＶＴ２への変更）によって変化しないようにするため、改めてクロック信号のスキュー調整を行う必要が生じる。
【００３３】
これに対して、本実施形態に係る設計方法では、上述したように、第１の後半クロック回路３３に含まれる第１のクロック用セルと、第２の後半クロック回路３５に含まれる第２のクロック用セルとは、種類が同じであれば、同じ入力容量、同じセル固有遅延、および同じ駆動能力を有する。このため、第１の後半クロック回路３３の遅延時間ｔ１は、閾値電圧の変更前と変更後で変化しない。したがって、第１のフリップフロップ３４と第２のフリップフロップ３６との間には、設計値以上のクロックスキューが発生することがない。よって、本実施形態に係る半導体集積回路の設計方法によれば、回路ブロックを組み込んだ半導体集積回路について改めてクロック信号のスキュー調整を行うことなく、クロック信号の閾値電圧を一致させることができる。
【００３４】
なお、本実施形態ではここまで、ある閾値電圧で動作する回路ブロックを用いて、これとは異なる閾値電圧で動作する半導体集積回路を設計する方法を説明したが、回路ブロックとこれを含む半導体集積回路との間で、電源電圧など、他の動作条件が異なる場合にも、上述した方法と同様の設計方法を適用することができる。例えば、第１の電源電圧Ｖ１で動作する回路ブロックを用いて、第２の電源電圧Ｖ２で動作する半導体集積回路を設計するためには、第１の電源電圧Ｖ１で動作する第１のクロック用セルと、第２の電源電圧Ｖ２で動作する第２のクロック用セルとについて、入力容量とセル固有遅延と駆動能力とを一致させた上で、図７と同様の手順を実行すればよい。この設計方法によれば、回路ブロックの電源電圧とこれを含む半導体集積回路の電源電圧とが異なる場合についても、回路ブロックを組み込んだ半導体集積回路について改めてクロック信号のスキュー調整を行うことなく、クロック信号の電源電圧を一致させることができる。
【００３５】
（第３の実施形態）
本発明の第３の実施形態では、トランジスタの経年劣化に伴うクロック信号の遅延時間変動を考慮して、半導体集積回路を設計する方法について説明する。一般に、トランジスタは、所定の信号電圧が印加されている期間の長さに応じて劣化する。このため、トランジスタによって構成された回路の遅延時間は、時間の経過とともに長くなる。また、多くのクロック信号では、信号がハイレベルである期間の長さと、信号がローレベルである期間の長さは同じである。したがって、クロック信号が所定の値に変化する回数（以下、トグル回数という）を数えれば、クロック信号が所定値である期間の長さを求めることができるので、これを用いて、クロック信号が入力される論理セルに含まれるトランジスタについて、どの程度劣化が進行するかを予め予測することができる。
【００３６】
図８は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図８に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。図８に示す手順では、まず、設計すべき半導体集積回路の耐用時間を決定する（ステップＳ２０１）。耐用時間は、半導体集積回路の仕様や動作条件などに基づき、例えば３年、１０年などの値に決定される。
【００３７】
設計すべき半導体集積回路は、複数のフリップフロップを備えている。そこで、次に、各フリップフロップに供給されるクロック信号について、ステップＳ２０１で決定した耐用時間内のトグル回数を求める（ステップＳ２０２）。あるフリップフロップＦＸに供給されるクロック信号のトグル回数ＴＣは、例えば、次式（３）によって算出される。
ＴＣ＝ＴＸ×ＦＲ×α  …（３）
ただし、上式（３）において、ＴＸはステップＳ２０１で決定した耐用時間、ＦＲは与えられたクロック信号ＣＫの周波数、αはクロック信号ＣＫが変化したときにフリップフロップＦＸに供給されるクロック信号が変化する確率（以下、トグル確率という）を表す。トグル確率αは、半導体集積回路の仕様や動作条件などに基づき、算出あるいは推定される。トグル確率αは、例えば、論理シミュレーションによっても求めることもできる。
【００３８】
なお、クロック信号のトグル回数を求めるときには、信号のローレベルからハイレベルへの変化だけを１回のトグルとして数えてもよく、信号の逆方向への変化だけを１回のトグルとして数えてもよく、信号の各方向への変化をそれぞれ１回のトグルとして数えてもよい。以下では、例えば、信号のローレベルからハイレベルへの変化だけを１回のトグルとして数えることとする。
【００３９】
次に、各フリップフロップに供給されるクロック信号について、ステップＳ２０２で求めたトグル回数に基づき、耐用時間経過時における遅延変動量を求める（ステップＳ２０３）。クロック信号については、信号がローレベルである期間の長さと、信号がハイレベルである期間の長さが同じであるとすれば、クロック信号が入力される論理セルに含まれるトランジスタについては、その特性から入力信号のトグル回数と遅延時間の変動率との関係を求めることができる（後述する図１０を参照）。したがって、ステップＳ２０３では、ステップＳ２０２で求めたトグル回数と、各トランジスタにおけるトグル回数と遅延変動率との関係に基づき、耐用時間経過時における遅延変動量を求めることができる。
【００４０】
次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに供給されるクロック信号について求めた遅延変動量と、他方のフリップフロップに供給されるクロック信号について求めた遅延変動量との差を求める（ステップＳ２０４）。次に、求めた遅延変動量の差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、選択したフリップフロップのペア間のタイミング制約に設定する（ステップＳ２０５）。なお、ステップＳ２０４およびＳ２０５では、既にタイミング制約が付加されているフリップフロップのペアについてのみ、遅延変動量の差を求め、求めた差をタイミング制約に設定することとしてもよい。
【００４１】
次に、上記のように設計マージンを設定した後のタイミング制約に従って、フリップフロップにクロック信号およびデータ入力信号を供給する回路についてタイミング調整を行う（ステップＳ２０６）。ステップＳ２０６では、クロックスキューが所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、データ入力信号を生成する回路を再設計する処理や、レイアウト結果を修正する処理などが行われる。
【００４２】
図９に示すクロック回路を含む半導体集積回路に、図８に示す手順を適用した場合の詳細を説明する。図９に示すクロック回路は、第１のクロック回路４１、第１のフリップフロップ４２、第２のクロック回路４３、および第２のフリップフロップ４４を備えている。第１および第２のフリップフロップ４２、４４は、いずれも、与えられたクロック信号ＣＫに同期して動作する。より詳細には、第１のクロック回路４１は、２個のバッファを含み、クロック信号ＣＫに基づき、クロック信号ＣＫと同じ頻度で変化する第１のクロック信号ＣＫ１を生成する。第１のフリップフロップ４２は、第１のクロック信号ＣＫ１に同期して動作する。第２のクロック回路４３は、ＡＮＤゲート４５とバッファとを含み、クロック信号ＣＫに基づき、クロック信号ＣＫよりも少ない頻度で変化する第２のクロック信号ＣＫ２を生成する。第２のフリップフロップ４４は、第２のクロック信号ＣＫ２に同期して動作する。ＡＮＤゲート４５には、クロック信号ＣＫとクロックイネーブル信号ＣＥＮとが入力される。以下では、クロック信号ＣＫの周波数は１００ＭＨｚであり、クロックイネーブル信号ＣＥＮは、クロック信号ＣＫの１０サイクルにつき１サイクルの割合でハイレベルになるものとする。
【００４３】
図９に示すクロック回路を含む半導体集積回路の耐用時間を、例えば１０年と決定する（ステップＳ２０１）。１０年は約３．１５×１０8秒に相当するから、第１のクロック信号ＣＫ１の１０年間のトグル回数ＴＣ１は、次式（４）より、３．１５×１０16回となる。また、第２のクロック信号ＣＫ２のトグル確率αは１０分の１であるから、第２のクロック信号ＣＫ２の１０年間のトグル回数ＴＣ２は、次式（５）より、３．１５×１０15回となる（ステップＳ２０２）。
ＴＣ１≒(3.15×108)×(100×106)×1 ＝3.15×1016  …（４）
ＴＣ２≒(3.15×108)×(100×106)×1／10＝3.15×1015  …（５）
【００４４】
図９に示すクロック回路に含まれる論理セルを構成するトランジスタは、入力信号のトグル回数に応じて、図１０に示すように、遅延時間が変動するものとする。図１０の横軸は入力信号のトグル回数を、縦軸は遅延時間の変動率を表す。第１のクロック信号ＣＫ１の１０年間のトグル回数ＴＣ１は３．１５×１０16回であるから、図１０によれば、第１のクロック信号ＣＫ１の１０年後の遅延変動量は５％である。一方、第２のクロック信号ＣＫ２の１０年間のトグル回数ＴＣ２は３．１５×１０15回であるから、図１０によれば、第２のクロック信号ＣＫ２の１０年後の遅延変動量は２％である。言い換えると、１０年の耐用時間が経過したときには、第１のクロック信号ＣＫ１の遅延時間ｔ１は当初より５％増加するのに対して、第２のクロック信号ＣＫ２の遅延時間ｔ２は当初より２％増加する（ステップＳ２０３）。したがって、第１のクロック信号ＣＫ１の遅延変動量と、第２のクロック信号ＣＫ２の遅延変動量との差は、３％となる（ステップＳ２０４）。
【００４５】
そこで、求めた遅延変動量３％を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、第１のフリップフロップ４２と第２のフリップフロップ４４との間のタイミング制約に設定する（ステップＳ２０５）。そして、３％の設計マージンを設定した後のタイミング制約に従って、第１および第２のフリップフロップ４２、４４にクロック信号およびデータ入力信号を供給する回路について、タイミング調整を行う（ステップＳ２０６）。
【００４６】
以下、本実施形態に係る設計方法を用いて、図９に示すクロック回路を含む半導体集積回路を設計する場合の効果を説明する。従来の手法では、フリップフロップ間のタイミング制約に、経年劣化に伴う遅延時間変動を吸収するための設計マージンを設定するときには、各フリップフロップに供給されるクロック信号の遅延変動量の最悪値が設定される。このため、第１のフリップフロップ４２と第２のフリップフロップ４４との間のタイミング制約には、第１のクロック信号ＣＫ１の遅延時間ｔ１の変動率５％と、第２のクロック信号ＣＫ２の遅延時間ｔ２の変動率２％との最悪値である５％が、設計マージンとして設定される。
【００４７】
これに対して、本実施形態に係る設計方法では、フリップフロップ間のタイミング制約に、経年劣化に伴う遅延時間変動を吸収するための設計マージンを設定するときには、各フリップフロップに供給されるクロック信号の遅延変動量の差が設定される。このため、第１のフリップフロップ４２と第２のフリップフロップ４４との間のタイミング制約には、第１のクロック信号ＣＫ１の遅延時間ｔ１の変動率５％と、第２のクロック信号ＣＫの遅延時間ｔ２の変動率２％との差である３％が、設計マージンとして設定される。
【００４８】
実際の半導体集積回路では、１０年の耐用時間が経過して、第１のクロック信号ＣＫ１の遅延時間ｔ１が５％長くなったときに、第２のクロック信号ＣＫ２の遅延時間ｔ２も２％長くなっている。したがって、第１のクロック信号ＣＫ１に同期して動作する第１のフリップフロップ４２と、第２のクロック信号ＣＫ２に同期して動作する第２のフリップフロップ４４との間のタイミング制約には、遅延変動量の最悪値（５％）ではなく、遅延変動量の差（３％）を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして設定すれば十分である。この遅延変動量の差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして設定した上で半導体集積回路を設計すれば、設計された半導体集積回路は、耐用時間内では正しく動作することを保証できる。
【００４９】
したがって、本実施形態に係る半導体集積回路の設計方法によれば、従来よりも的確に設計マージンを設定することができるので、トランジスタの経年劣化に伴うクロック信号の遅延時間の変動を考慮した上で、従来よりも回路規模を削減することができる。
【００５０】
（第４の実施形態）
本発明の第４の実施形態では、クロック信号のトグル回数を数える機能を有する半導体集積回路について説明する。図１１は、本実施形態に係る半導体集積回路の構成を示す図である。図１１に示す半導体集積回路は、前半クロック回路５１、第１〜第３の後半クロック回路５２ａ〜ｃ、第１〜第３の回路ブロック５３ａ〜ｃ、第１〜第３のトグル計数回路５４ａ〜ｃ、デコーダ５５、および第１〜第３のトグル回数格納レジスタ５６ａ〜ｃを備えている。第１〜第３の回路ブロック５３ａ〜ｃは、いずれも、与えられたクロック信号ＣＫに同期して動作する。より詳細には、前半クロック回路５１と第１の後半クロック回路５２ａとは、クロック信号ＣＫに基づき第１のクロック信号ＣＫ１を生成し、第１の回路ブロック５３ａは、第１のクロック信号ＣＫ１に同期して動作する。第２および第３の後半クロック回路５２ｂ、５２ｃ、並びに第２および第３の回路ブロック５３ｂ、５３ｃも、これ同様に動作する。
【００５１】
第１〜第３のトグル計数回路５４ａ〜ｃは、それぞれ、第１〜第３のクロック信号ＣＫ１〜３のトグル回数を数える。ここでは、信号のローレベルからハイレベルへの変化を、１回のトグルとして数えることとする。デコーダ５５は、コード信号ＣＯＤＥをデコードすることにより、第１〜第３のトグル回数格納レジスタ５６ａ〜ｃのイネーブル信号ＥＮ１〜３を出力する。第１〜第３のトグル回数格納レジスタ５６ａ〜ｃは、それぞれ、イネーブル信号ＥＮ１〜３を受けたときに、第１〜第３のトグル計数回路５４ａ〜ｃからトグル回数ＴＣ１〜３を読み出して内部に格納し、格納したトグル回数をデータバスＤＢＵＳのタイミング仕様に合わせて出力する。
【００５２】
データバスＤＢＵＳに出力されたトグル回数は、半導体集積回路の外部に出力される。このため、例えば、データバスＤＢＵＳは、トグル回数出力モードでは、半導体集積回路の外部入出力端子（図示せず）に接続される。あるいは、データバスＤＢＵＳに出力されたトグル回数は、データバスＤＢＵＳに接続されたレジスタに一旦格納され、当該レジスタ経由で半導体集積回路の外部に出力されることとしてもよい。このように、デコーダ５５、第１〜第３のトグル回数格納レジスタ５６ａ〜ｃ、データバスＤＢＵＳなどの作用により、第１〜第３のトグル計数回路５４ａ〜ｃで数えたトグル回数ＴＣ１〜３は、半導体集積回路の外部に出力される。
【００５３】
図１２は、本実施形態に係る半導体集積回路の他の構成を示す図である。図１２に示す半導体集積回路は、前半クロック回路５１、第１〜第３の後半クロック回路５２ａ〜ｃ、第１〜第３の回路ブロック５３ａ〜ｃ、第１〜第３のトグル計数回路５４ａ〜ｃ、デコーダ５５、セレクタ５７、およびトグル回数格納レジスタ５８を備えている。図１２に示す構成要素のうち、図１１と同じ構成要素については、同一の参照符号を付して説明を省略する。セレクタ５７は、デコーダ５５から出力されたイネーブル信号ＥＮ１〜３に基づき、第１〜第３のトグル計数回路５４ａ〜ｃのいずれかからトグル回数を読み出して出力する。トグル回数格納レジスタ５８は、セレクタ５７から出力されたトグル回数を内部に格納し、格納したトグル回数をデータバスＤＢＵＳのタイミング仕様に合わせて出力する。
【００５４】
以下、図１１あるいは図１２に示す構成を有する、本実施形態に係る半導体集積回路の効果を説明する。本実施形態に係る半導体集積回路は、例えば、あるシステムの評価ボードに実装される。この評価ボードは、システムの実際の動作環境下で、実際のアプリケーションソフトウエアを実行する。これにより、評価ボードを用いて、システムの実際の動作が再現される。
【００５５】
本実施形態に係る半導体集積回路は、上述したように、各回路ブロックに供給されるクロック信号のトグル回数を数え、数えたトグル回数を半導体集積回路の外部に出力する機構を有している。したがって、上記評価ボードを用いてシステムの動作を再現したときに、各回路ブロックに供給されるクロック信号のトグル回数を求めることにより、実動作環境下でクロック信号が変化する確率（トグル率α）を、論理シミュレーションなどよりも短時間かつ高精度で求めることができる。
【００５６】
第３の実施形態で既に説明したように、半導体集積回路の耐用時間を決定し、半導体集積回路に含まれるクロック信号のトグル率αを求めれば、耐用時間経過時におけるクロック回路の遅延変動量を求めることができる。そこで、本実施形態に係る半導体集積回路と同様の機能を有する新たな半導体集積回路を改良版として（あるいは評価用回路に対する設計対象回路として）設計するときに、求めた遅延変動量を考慮してクロック回路を設計することができる。したがって、トランジスタの経年劣化に伴うクロック信号の遅延時間変動をより的確に考慮して、新たにタイミングエラーが発生しにくい半導体集積回路を設計することができる。
【００５７】
（第５の実施形態）
本発明の第５の実施形態では、クロック信号のトグル回数を調整する機能を有する半導体集積回路について説明する。図１３は、本実施形態に係る半導体集積回路の構成を示す図である。図１３に示す半導体集積回路は、前半クロック回路５１、第１〜第３の後半クロック回路５２ａ〜ｃ、第１〜第３の回路ブロック５３ａ〜ｃ、第１〜第３のトグル計数回路５４ａ〜ｃ、およびトグル調整回路５９を備えている。図１３に示す構成要素のうち、図１１と同じ構成要素については、同一の参照符号を付して説明を省略する。
【００５８】
トグル調整回路５９には、第１〜第３の後半クロック回路５２ａ〜ｃから出力された第１〜第３のクロック信号ＣＫ１〜３、調整クロック信号ＣＫ０、モード選択信号ＭＯＤＥ、および第１〜第３のトグル計数回路５４ａ〜ｃで数えたトグル回数ＴＣ１〜３が入力される。トグル調整回路５９は、これらの入力信号に基づき、第１〜第３の回路ブロック５３ａ〜ｃに供給されるクロック信号ｃｋ１〜３を生成する。
【００５９】
図１４は、トグル調整回路５９の詳細な構成を示す図である。トグル調整回路５９は、比較回路６１、および第１〜第３のセレクタ６２ａ〜ｃを含んでいる。比較回路６１は、トグル回数ＴＣ１〜３に基づき、第１〜第３のセレクタ６２ａ〜ｃのセレクト信号Ｓ１〜３を求める。より詳細には、トグル回数ＴＣ１〜３の最大値をＭとしたときに、比較回路６１は、１から３までの整数ｉについて、第ｉのトグル数ＴＣｉが最大値Ｍであるときは、第ｉのセレクタ６２ｊ（ただし、ｉ＝１ならばｊ＝ａ、ｉ＝２ならばｊ＝ｂ、ｉ＝３ならばｊ＝ｃ）のセレクト信号Ｓｉをハイレベルに、それ以外の場合は、当該信号をローレベルにする。
【００６０】
第１のセレクタ６２ａは、図１５に示すように、モード選択信号ＭＯＤＥおよびセレクト信号Ｓ１に基づき、第１のクロック信号ＣＫ１、調整クロックＣＫ０、および固定値ローレベルのいずれかを出力する。より詳細には、第１のセレクタ６２ａは、モード選択信号ＭＯＤＥがローレベルであるとき（通常動作モードを示すとき）は、第１のクロック信号ＣＫ１を出力し、モード選択信号ＭＯＤＥがハイレベル（調整モードを示す）であり、かつ、セレクト信号Ｓ１がローレベルであるときは、調整クロックＣＫ０を出力し、モード選択信号ＭＯＤＥがハイレベルであり、かつ、セレクト信号Ｓ１がハイレベルであるときは、固定値ローレベルを出力する。第２および第３のセレクタ６２ｂ、６２ｃも、これと同様に動作する。
【００６１】
このように構成されたトグル調整回路５９は、通常動作モードでは、第１〜第３の回路ブロック５３ａ〜ｃに対して、それぞれ第１〜第３のクロック信号ＣＫ１〜３を出力する。また、トグル調整回路５９は、調整モードでは、第１〜第３の回路ブロック５３ａ〜ｃのうちから相対的にトグル回数が少ないクロック信号が供給されている回路ブロックを選択し、選択した回路ブロックに対して調整クロック信号ＣＫ０を出力する。
【００６２】
図１６は、本実施形態に係る半導体集積回路の使用形態を示す図である。図１６において、半導体集積回路７０には、水晶振動子７１およびクロック生成回路７２によって生成されたクロック信号ＣＫが供給される。ＡＮＤゲート７３には、クロック信号ＣＫとモード選択信号ＭＯＤＥとが入力される。クロック信号ＣＫとモード選択信号ＭＯＤＥとの論理積が、調整クロック信号ＣＫ０となる。なお、クロック生成回路７２およびＡＮＤゲート７３は、半導体集積回路７０の内部に設けてもよい。
【００６３】
モード選択信号ＭＯＤＥは、システムを構成するハードウェアまたはソフトウエアによって、システムの通常動作中はローレベルに設定され、システムの待機中や充電中など、システムの通常動作が行われていないときにはハイレベルに設定される。モード選択信号ＭＯＤＥがローレベルであるときは、調整クロック信号ＣＫ０はローレベルに固定され、トグル調整回路５９に含まれる第１〜第３のセレクタ６２ａ〜ｃ（図１４）は、それぞれ、第１〜第３のクロック信号ＣＫ１〜３を選択して出力する。この場合、第１〜第３の回路ブロック５３ａ〜ｃ（図１３）は、それぞれ、第１〜第３のクロック信号ＣＫ１〜３に同期して動作する。
【００６４】
これに対して、モード選択信号ＭＯＤＥがハイレベルであるときは、調整クロック信号ＣＫ０はクロック信号ＣＫと同じように変化し、第１〜第３のセレクタ６２ａ〜ｃは、調整クロック信号ＣＫ０または固定値（ローレベル）を出力する。トグル調整回路５９は、トグル回数ＴＣｉがその最大値Ｍに一致しないクロック信号ＴＣｉの供給を受けていた回路ブロック５３ｊ（ただし、ｉ＝１ならばｊ＝ａ、ｉ＝２ならばｊ＝ｂ、ｉ＝３ならばｊ＝ｃ）に対して、調整クロック信号ＣＫ０を供給する。したがって、モード選択信号ＭＯＤＥを適宜ハイレベルに設定することにより、第１〜第３の回路ブロック５３ａ〜ｃに供給されるクロック信号ｃｋ１〜３のトグル回数ＴＣ１〜３を、その最大値Ｍに近づけることができる。
【００６５】
第１〜第３の回路ブロック５３ａ〜ｃに含まれる論理セルを構成するトランジスタは、各回路ブロックに供給されるクロック信号のトグル回数ＴＣｉに応じて劣化する。したがって、第１〜第３の回路ブロック５３ａ〜ｃに供給されるクロック信号ｃｋ１〜３のトグル回数ＴＣ１〜３が相互に近ければ、第１〜第３の回路ブロック５３ａ〜ｃに含まれる回路の遅延時間は、時間の経過とともに同じように変動する。
【００６６】
したがって、モード選択信号ＭＯＤＥを適宜ハイレベルに設定することにより、第１〜第３の回路ブロック５３ａ〜ｃに含まれる回路の遅延時間を、時間の経過とともに同じように変動させることができる。よって、半導体集積回路をシステムに組み込んだ後でも、各クロック信号のトグル回数を調整することにより、異なる頻度で変化するクロック信号が供給され、トランジスタの経年劣化の程度に差が生じてタイミングエラーが発生し、半導体集積回路の耐用時間が短くなることを防止することができる。この効果は、消費電力を低減するために、回路ブロック単位でクロック信号の供給を停止する機能を有する半導体集積回路において、特に顕著に現れる。
【００６７】
（第６の実施形態）
本発明の第６の実施形態では、半導体集積回路に含まれるクロック回路を検証あるいは変更する方法について説明する。図１７は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図１７に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
【００６８】
図１７に示す手順では、まず、半導体集積回路を設計するときに使用できるすべての論理セルの種類のうちで、クロック経路上に存在できる論理セルの種類を指定する（ステップＳ３０１）。以下、ステップＳ３０１で指定された種類の論理セルをクロック用セルといい、それ以外の論理セルを非クロック用セルという。ステップＳ３０１では、クロック用セルとして、すべての論理セルのうちで、プロセス変動に強い論理セルだけが選択的に指定される。次に、非クロック用セルの種類に対応して、論理的に等価なクロック用セルの種類を指定する（ステップＳ３０２）。
【００６９】
次に、設計すべき半導体集積回路から、すべてのクロック経路を抽出する（ステップＳ３０３）。次に、抽出されたクロック経路上に存在するすべての論理セルについて、当該論理セルがクロック用セルであるか非クロック用セルであるかを判定する（ステップＳ３０４）。次に、ステップＳ３０４で非クロック用セルと判定された論理セルに関する各種の情報を求める（ステップＳ３０５）。ステップＳ３０５で求めた情報は、以後の設計で参照される。次に、ステップＳ３０４で非クロック用セルと判定された論理セルを、ステップＳ３０２で当該論理セルの種類に対応して指定したクロック用セルに置換する（ステップＳ３０６）。
【００７０】
したがって、本実施形態に係る半導体集積回路の設計方法によれば、一定の特性を有する論理セル（例えば、プロセス変動に強い論理セル）だけがクロック経路上に存在するように、半導体集積回路に含まれるクロック回路を変更することができる。
【００７１】
なお、図１７に示すフローチャートからステップＳ３０２およびＳ３０６を削除すれば、図１８に示すフローチャートが得られる。図１８に示す手順によれば、クロック経路上に存在する論理セルが、一定の特性を有する論理セル（例えば、プロセス変動に強い論理セル）であることを容易に検証することができる。
【００７２】
（第７の実施形態）
本発明の第７の実施形態では、クロック経路の特性を考慮して、クロック回路を設計する方法について説明する。まず、クロック経路上に存在する論理セルの段数の差を考慮して、クロック回路を設計する方法を説明する。図１９は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図１９に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
【００７３】
図１９に示す手順では、まず、設計すべき半導体集積回路から、各フリップフロップに至るクロック経路を抽出する（ステップＳ４０１）。次に、抽出した各クロック経路の特性として、各クロック経路上に存在する論理セルの段数を求める（ステップＳ４０２）。次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに至るクロック経路上に存在する論理セルの段数と、他方のフリップフロップに至るクロック経路上に存在する論理セルの段数との差を求める（ステップＳ４０３）。
【００７４】
次に、求めた差に応じた時間を、クロック経路の差を吸収するための設計マージンとして、選択したフリップフロップのペア間のタイミング制約に設定する（ステップＳ４０４）。ステップＳ４０４では、設計マージンとして、例えば、ステップＳ４０３で求めた差に比例した時間を設定してもよく、求めた差に所定の関数を適用して求めた時間を設定してもよい。なお、ステップＳ４０３およびＳ４０４では、既にタイミング制約が付加されているフリップフロップのペアについてのみ、クロック経路上に存在する論理セルの段数の差を求めて、求めた差に応じた時間をタイミング制約に設定することとしてもよい。
【００７５】
次に、上記のように設計マージンを設定した後のタイミング制約に従って、フリップフロップにクロック信号およびデータ入力信号を供給する回路について、タイミング調整を行う（ステップＳ４０５）。ステップＳ４０５では、クロックスキューが所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、データ入力信号を生成する回路を再設計する処理や、レイアウト結果を修正する処理などが行われる。
【００７６】
図２０に示すクロック回路を含む半導体集積回路に、図１９に示す手順を適用した場合の詳細を説明する。図２０に示すクロック回路は、第１のクロック回路８１、第１のフリップフロップ８２、第２のクロック回路８３、および第２のフリップフロップ８４を備えている。第１および第２のフリップフロップ８２、８４は、与えられたクロック信号ＣＫに同期して動作する。より詳細には、第１のクロック回路８１は、クロック信号ＣＫに基づき第１のクロック信号ＣＫ１を生成し、第１のフリップフロップ８２は、第１のクロック信号ＣＫ１に同期して動作する。第２のクロック回路８３および第２のフリップフロップ８４も、これと同様に動作する。
【００７７】
以下、クロック信号ＣＫの供給点から第１のクロック回路８１を経由して第１のフリップフロップ８２に至る経路を、第１のクロック経路といい、クロック信号ＣＫの供給点から第２のクロック回路８３を経由して第２のフリップフロップ８４に至る経路を、第２のクロック経路という。図２０に示すように、第１のクロック経路上には４個の論理セルが存在し、第２のクロック経路上には５個の論理セルが存在している。なお、図２０において、論理セルに付されたＡ、Ｂ、Ｃなどの文字は、論理セルの種類を表す。
【００７８】
第１のクロック経路上に存在する論理セルの段数は４段、第２のクロック経路上に存在する論理セルの段数は５段であるから（ステップＳ４０２）、両者の差は１段である（ステップＳ４０３）。ここで、段数差１段あたり５０ピコ秒の設計マージンを設定することとすると、この場合の設計マージンは５０ピコ秒となる。そこで、求めた値５０ピコ秒を、クロック経路の差を吸収するための設計マージンとして、第１のフリップフロップ８２と第２のフリップフロップ８４との間のタイミング制約に設定する（ステップＳ４０４）。次に、５０ピコ秒の設計マージンを設定した後のタイミング制約に従って、第１および第２のフリップフロップ８２、８４にクロック信号およびデータ入力信号を供給するクロック回路について、タイミング調整を行う（ステップＳ４０５）。
【００７９】
以下、本実施形態に係る設計方法を用いて、図２０に示すクロック回路を含む半導体集積回路を設計する場合の効果を説明する。従来、フリップフロップ間のタイミング制約に、クロック経路上に存在する論理セルの段数を吸収するための設計マージンを設定することは知られていなかった。一般に、クロック経路間に論理セルの段数の差があると、当該クロック経路間では遅延時間の構成要因に差異が生じ、製造された半導体集積回路では、当該クロック経路間で遅延時間の変動が起こりやすくなる。このため、従来の手法による半導体集積回路では、製造ばらつきにより、タイミングエラーが発生しやすい。
【００８０】
これに対して、本実施形態に係る設計方法では、フリップフロップ間のタイミング制約に、クロック経路上に存在する論理セルの段数を吸収するための設計マージンが設定される。このため、クロック経路間に論理セルの段数の差があり、クロック経路間では遅延時間の構成要因に差異がある場合でも、その差異は設定された設計マージンによって吸収される。したがって、製造された半導体集積回路では、クロック経路間で遅延時間の変動が起こりにくい。よって、本実施形態に係る半導体集積回路の設計方法によれば、タイミングエラーが発生しにくい半導体集積回路を得ることができる。
【００８１】
本実施形態に係る半導体集積回路の設計方法については、以下に示す変形例を構成することができる。第１の変形例として、クロック経路の特性として、クロック経路上に存在する論理セルの種類ごとの個数を使用することができる。この第１の変形例に係る設計方法を実行するには、図１９に示すステップＳ４０２では、各クロック経路の特性として、クロック経路上に存在する論理素子の段数に代えて、クロック経路上に存在する論理セルの種類ごとの個数を求め、ステップＳ４０３では論理セルの種類ごとの個数の差を求め、ステップＳ４０４では求めた差に応じた時間を設計マージンとして設定すればよい。
【００８２】
第１の変形例に係る方法を、図２０に示すクロック回路を含む半導体集積回路に適用する場合の詳細を説明する。第１のクロック経路上には、種類Ａ、Ｂ、ＣおよびＤの論理セルがそれぞれ１個ずつ存在し、第２のクロック経路上には、種類Ａ、ＢおよびＤの論理セルがそれぞれ３個、１個および１個存在するので、論理セルの種類ごとの個数の差は、種類Ａが２個、種類Ｃが１個である。ここで、種類Ａ、Ｂ、ＣおよびＤの論理セル１個につき、それぞれ１．０％、１．１％、１．２％および１．３％の設計マージンを設定することとすると、この場合の設計マージンＭＧは、次式（６）より、３．２％となる。
ＭＧ＝1.0×2＋1.2×1＝3.2 …（６）
したがって、第１および第２のフリップフロップ８２、８４に信号を供給する回路のタイミング調整は、求めた値３．２％をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
【００８３】
また、第２の変形例として、クロック経路の特性として、クロック経路上に存在する配線の種類および遅延時間を使用することができる。図２１は、本実施形態の第２の変形例に係る半導体集積回路の設計方法を示すフローチャートである。図２１に示すフローチャートにおいて、ステップＳ４０１およびＳ４０５は、図１９に示すフローチャートに示したものと同じである。
【００８４】
図２１に示す手順によれば、クロック経路を抽出した後（ステップＳ４０１）、抽出した各クロック経路の特性として、各クロック経路の配線の種類を求める（ステップＳ４１２）。次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに至るクロック経路上に存在する配線の集合と、他方のフリップフロップに至るクロック経路上に存在する配線の集合とについて、次式（７）によって定義される部分マージンｍｇを求めて、２つの部分マージンの和ＭＧＳを求める（ステップＳ４１３）。
ｍｇ＝Σ（ｄｉ×ｍｉ）  …（７）
ただし、上式（７）において、ｄｉおよびｍｉは、それぞれクロック経路上に存在するｉ番目の配線の遅延時間および配線マージンであり、記号Σは１本のクロック経路について総和を求めることを表す。配線マージンｍｉは、配線の種類に応じて、例えば、１倍幅配線は０．８、２倍幅配線は０．４、３倍幅配線は０．１などのように決定される。
【００８５】
次に、求めた部分マージンの和ＭＧＳを、クロック経路の差を吸収するための設計マージンとして、ステップＳ４１３で選択したフリップフロップのペア間のタイミング制約に設定して（ステップＳ４１４）、回路のタイミング調整を行う（ステップＳ４０５）。
【００８６】
第２の変形例に係る方法を、図２２に示すクロック回路を含む半導体集積回路に適用する場合の詳細を説明する。図２２は、図２０に示したクロック回路を、各クロック経路上に存在する配線の遅延時間および配線の幅とともに示した図である。図２２において、配線に付された記号ｄ＊＊（＊は１文字の数字）は各配線の遅延時間を、記号Ｗ１〜３は、それぞれ１〜３倍幅の配線を表す（ステップＳ４１２）。
【００８７】
ここで、配線マージンｍｉを、例示したように１倍幅配線は０．８、２倍幅配線は０．４、３倍幅の配線は０．１と決定すると、第１および第２のクロック経路の部分マージンｍｇ１、ｍｇ２は、それぞれ、次式（８）および（９）に示すようになり、その和ＭＧＳは、次式（１０）に示すようになる（ステップＳ４１３）。
ｍｇ１＝(d11＋d12)×0.1＋ d13 ×0.4＋(d14＋d15)×0.8 …（８）
ｍｇ２＝(d21＋d22)×0.1＋(d23＋d24)×0.4＋(d25＋d26)×0.8 …（９）
ＭＧＳ＝(d11＋d12＋d21＋d22)×0.1＋(d13＋d23＋d24)×0.4
＋(d14＋d15＋d25＋d26)×0.8 …（１０）
したがって、第１および第２のフリップフロップ８２、８４にクロック信号およびデータ入力信号を供給する回路のタイミング調整は、上式（１０）によって算出される値をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
【００８８】
上述した以外にも、クロック経路の特性として、クロック経路上に存在する配線のピッチやシールドの有無などを考慮してもよい。また、求めたクロック経路の特性に基づき、いかなる方法で設計マージンを求めるかは任意である。これら各変形例に係る半導体集積回路の設計方法は、いずれも、図１９に示す設計方法と同様の効果を奏する。
【産業上の利用可能性】
【００８９】
本発明の半導体集積回路およびその設計方法は、クロック信号の供給に関して従来よりも優れた特徴を有するので、主にロジック回路によって構成される半導体集積回路、ロジック回路とメモリ回路との両方を含む半導体集積回路など、各種の半導体集積回路およびその設計方法に利用することができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の第１の実施形態に係る半導体集積回路の構成を示す図
【図２】トランジスタのレイアウト図
【図３】フリップフロップのセットアップマージンおよびホールドマージンを示す図
【図４】本発明の第１の実施形態に係る半導体集積回路の効果を説明するための図
【図５】本発明の第１の実施形態の変形例に係る半導体集積回路の効果を説明するための図
【図６】本発明の第２の実施形態に係る半導体集積回路の設計方法によって設計される半導体集積回路の構成を示す図
【図７】本発明の第２の実施形態に係る半導体集積回路の設計方法を示すフローチャート
【図８】本発明の第３の実施形態に係る半導体集積回路の設計方法を示すフローチャート
【図９】本発明の第３の実施形態に係る半導体集積回路の設計方法によって設計されるクロック回路を示す図
【図１０】トランジスタにおけるトグル回数と遅延時間の変動率との関係を示す図
【図１１】本発明の第４の実施形態に係る半導体集積回路の構成を示す図
【図１２】本発明の第４の実施形態に係る半導体集積回路の他の構成を示す図
【図１３】本発明の第５の実施形態に係る半導体集積回路の構成を示す図
【図１４】本発明の第５の実施形態に係る半導体集積回路のトグル調整回路の詳細な構成を示す図
【図１５】本発明の第５の実施形態に係る半導体集積回路のトグル調整回路に含まれるセレクタの入出力関係を示すテーブル
【図１６】本発明の第５の実施形態に係る半導体集積回路の使用形態を示す図
【図１７】本発明の第６の実施形態に係る半導体集積回路の設計方法を示すフローチャート
【図１８】本発明の第６の実施形態の変形例に係る半導体集積回路の設計方法を示すフローチャート
【図１９】本発明の第７の実施形態に係る半導体集積回路の設計方法を示すフローチャート
【図２０】本発明の第７の実施形態に係る半導体集積回路の設計方法によって設計されるクロック回路を示す図
【図２１】本発明の第７の実施形態の第２の変形例に係る半導体集積回路の設計方法を示すフローチャート
【図２２】本発明の第７の実施形態の第２の変形例に係る半導体集積回路の設計方法によって設計されるクロック回路を示す図
【符号の説明】
【００９１】
１１、１２、３１、３３、３５、４１、４３、５１、５２、８１、８３…クロック回路
１３、１５、３４、３６、４２、４４、８２、８４…フリップフロップ
１４…組合せ回路
１６、１７…論理セル
２１、２３、２４…拡散領域
２２…ポリシリコン領域
２５…不要な拡散領域
３０、７０…半導体集積回路
３２、５３…回路ブロック
４５、７３…ＡＮＤゲート
５４…トグル計数回路
５５…デコーダ
５６、５８…トグル回数格納レジスタ
５７、６２…セレクタ
５９…トグル調整回路
６１…比較回路
７１…水晶振動子
７２…クロック生成回路
ＣＫ、ＣＫ１〜ＣＫ３、ｃｋ１〜ｃｋ３…クロック信号
ＣＥＮ、ＣＥＮ２、ＣＥＮ３…クロックイネーブル信号
ＴＣ１〜ＴＣ３…トグル回数
ＤＢＵＳ…データバス
ＥＮ１〜ＥＮ３…イネーブル信号
ＣＫ０…調整クロック信号
ＭＯＤＥ…モード選択信号
Ｓ１〜Ｓ３…選択制御信号
【図１】
2006313894.tif 000003
【図２】
2006313894.tif 000004
【図３】
2006313894.tif 000005
【図４】
2006313894.tif 000006
【図５】
2006313894.tif 000007
【図６】
2006313894.tif 000008
【図７】
2006313894.tif 000009
【図８】
2006313894.tif 000010
【図９】
2006313894.tif 000011
【図１０】
2006313894.tif 000012
【図１１】
2006313894.tif 000013
【図１２】
2006313894.tif 000014
【図１３】
2006313894.tif 000015
【図１４】
2006313894.tif 000016
【図１５】
2006313894.tif 000017
【図１６】
2006313894.tif 000018
【図１７】
2006313894.tif 000019
【図１８】
2006313894.tif 000020
【図１９】
2006313894.tif 000021
【図２０】
2006313894.tif 000022
【図２１】
2006313894.tif 000023
【図２２】
2006313894.tif 000024