JP2006313894A - 半導体集積回路およびその設計方法 - Google Patents
半導体集積回路およびその設計方法 Download PDFInfo
- Publication number
- JP2006313894A JP2006313894A JP2006107774A JP2006107774A JP2006313894A JP 2006313894 A JP2006313894 A JP 2006313894A JP 2006107774 A JP2006107774 A JP 2006107774A JP 2006107774 A JP2006107774 A JP 2006107774A JP 2006313894 A JP2006313894 A JP 2006313894A
- Authority
- JP
- Japan
- Prior art keywords
- clock
- circuit
- semiconductor integrated
- clock signal
- integrated circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Logic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】製造ばらつきが発生しても、フリップフロップにおいてタイミングエラーが発生しにくい半導体集積回路を提供する。
【解決手段】この半導体集積回路の設計方法においては、各クロック信号の耐用時間内のトグル回数を求め(ステップS202)、各クロック信号の耐用時間経過時における遅延変動量を求める(ステップS203)。次に、2個の記憶セルに供給されるクロック信号について遅延変動量の差を求め(ステップS204)、求めた差を設計マージンとして2個の記憶セル間のタイミング制約に設定する(ステップS205)。そして、回路のタイミング調整を行う(ステップS205)。
【選択図】図8
【解決手段】この半導体集積回路の設計方法においては、各クロック信号の耐用時間内のトグル回数を求め(ステップS202)、各クロック信号の耐用時間経過時における遅延変動量を求める(ステップS203)。次に、2個の記憶セルに供給されるクロック信号について遅延変動量の差を求め(ステップS204)、求めた差を設計マージンとして2個の記憶セル間のタイミング制約に設定する(ステップS205)。そして、回路のタイミング調整を行う(ステップS205)。
【選択図】図8
Description
本発明は、クロック信号に同期して動作する半導体集積回路、およびその設計方法に関する。
ロジック回路を含んだ半導体集積回路の多くは、外部から供給されたクロック信号、あるいは、外部から供給された信号に基づき内部で生成したクロック信号に同期して動作する。一般に半導体集積回路は、複数のフリップフロップと、与えられたクロック信号に基づき各フリップフロップに供給されるクロック信号を生成する回路(以下、クロック回路という)とを備えている。半導体集積回路を正しく動作させるためには、各フリップフロップにクロック信号を正しく供給することが必要である。また、半導体集積回路の消費電力を低減するためには、動作させない回路ブロックに対するクロック信号の供給を停止することが有効である。このため、クロック回路の構成やクロック信号の供給方法は、半導体集積回路の設計上の重要な課題であると認識されている。
クロック回路を解析するときには、クロック回路のうちで、クロック信号が流れる経路(以下、クロック経路という)とクロック経路上に存在する論理セルとに着目し、その部分をクロックツリーとして解析することが、広く行われている。このクロックツリー解析では、与えられたクロック信号が各フリップフロップに到達するまでの時間などが算出される。その後、クロックツリーの解析結果に基づき、クロックスキュー(与えられたクロック信号が各フリップフロップに到達するまでの時間の差)が所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、レイアウト結果を修正する処理などが行われる。
半導体集積回路におけるクロック信号の供給については、従来から、種々の技術が知られている。このうち、本発明と関連性を有する技術としては、例えば、特許文献1〜3に記載されたものがある。特許文献1には、1ビットのコンパレータを1個おきに天地逆向きにレイアウトした全並列型A/D変換器が記載されている。特許文献2には、閾値電圧を変更できるインバータが記載されている。特許文献3には、多層配線層の最下層を用いてクロック信号を配線することが記載されている。
特開昭62−190747号公報
特開平4−284020号公報
特開2000−68380号公報
特開2002−110802号公報
特開平9−74138号公報
特開平2−110672号公報
特開昭62−190747号公報
しかしながら、回路の微細化および低電圧化の進行に伴い、半導体集積回路におけるクロック信号の供給については、従来よりも高いレベルの技術が要求されるようになっている。例えば、微細化の進行に伴い、クロック回路に含まれる論理セルを構成するトランジスタのサイズは小さくなっていので、クロック回路の遅延時間は、従来よりも製造ばらつきの影響を受けやすくなっている。また、微細化の進行に伴い、クロック回路の規模が大きくなっているので、クロックツリー解析やクロック回路の設計変更に、従来よりも時間がかかるようになっている。また、微細化および低電圧化の進行に伴い、クロック回路の回路規模は大きくなるのに対して、クロック回路に含まれる論理セル1段あたりの遅延時間は減少するので、クロック回路の設計では、従来よりも適切な設計マージンを設定することが必要になっている。また、最近では、経年劣化に伴う遅延時間変動を見込んだ回路設計も行われているが、クロック信号は最も頻繁に変化する信号の1つであるから、クロック信号の経年劣化に伴う遅延時間変動を正しく評価した上で、半導体集積回路を設計することが必要になっている。
それ故に、本発明は、クロック信号の供給について従来よりも優れた特徴を有する半導体集積回路、およびそのような半導体集積回路の設計方法を提供することを目的とする。
第1の発明は、各クロック信号の耐用時間内のトグル回数に基づき、各クロック信号の耐用時間経過時における遅延変動量を求め、2個の記憶セルに供給されるクロック信号について遅延変動量の差を求め、求めた差を設計マージンとして2個の記憶セル間のタイミング制約に設定して回路のタイミング調整を行う、半導体集積回路の設計方法である。
第2の発明は、各回路ブロックに供給されるクロック信号のトグル回数を数えるトグル計数回路と、数えたトグル回数を出力するトグル回数出力回路とを備えた半導体集積回路である。
この場合、更に、トグル回数が相対的に少ないクロック信号が供給される回路ブロックに調整用クロック信号を供給するトグル調整回路を備えても良い。
第1の発明によれば、従来よりも的確に設計マージンを設定することができるので、トランジスタの経年劣化に伴うクロック信号の遅延時間の変動を考慮した上で、従来よりも回路規模を削減することができる。
第2の発明によれば、各回路ブロックに供給されるクロック信号のトグル回数を求めることにより、実動作環境下でクロック信号が変化する確率を、論理シミュレーションなどよりも短時間かつ高精度で求めることができる。したがって、トランジスタの経年劣化に伴うクロック信号の遅延時間変動をより的確に考慮して、新たにタイミングエラーが発生しにくい半導体集積回路を設計することができる。
また、半導体集積回路をシステムに組み込んだ後でも、各クロック信号のトグル回数を調整することにより、異なる頻度で変化するクロック信号が供給され、トランジスタの経年劣化の程度に差が生じてタイミングエラーが発生し、半導体集積回路の耐用時間が短くなることを防止することができる。
以下、図面を参照して、本発明の第1〜第7の実施形態を説明する。各実施形態では、発明の理解を容易にするために、半導体集積回路に含まれる回路のうち、発明の理解に必要とされる主要な回路を抽出して説明する。
(第1の実施形態)
本発明の第1の実施形態では、クロック回路に含まれる論理セルを、統一したサイズのトランジスタによって構成した半導体集積回路について説明する。図1は、本実施形態に係る半導体集積回路の構成を示す図である。図1に示す半導体集積回路は、第1のクロック回路11、第2のクロック回路12、第1のフリップフロップ13、組合せ回路14、および第2のフリップフロップ15を備えている。第1および第2のフリップフロップ13、15は、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、第1のクロック回路11は、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1のフリップフロップ13は、第1のクロック信号CK1に同期して動作する。第2のクロック回路12および第2のフリップフロップ15は、これと同様に動作する。組合せ回路14は、第1のフリップフロップ13や図示しない他のフリップフロップに記憶された値に基づき、第2のフリップフロップ15に供給されるデータ入力信号を生成する。
本発明の第1の実施形態では、クロック回路に含まれる論理セルを、統一したサイズのトランジスタによって構成した半導体集積回路について説明する。図1は、本実施形態に係る半導体集積回路の構成を示す図である。図1に示す半導体集積回路は、第1のクロック回路11、第2のクロック回路12、第1のフリップフロップ13、組合せ回路14、および第2のフリップフロップ15を備えている。第1および第2のフリップフロップ13、15は、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、第1のクロック回路11は、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1のフリップフロップ13は、第1のクロック信号CK1に同期して動作する。第2のクロック回路12および第2のフリップフロップ15は、これと同様に動作する。組合せ回路14は、第1のフリップフロップ13や図示しない他のフリップフロップに記憶された値に基づき、第2のフリップフロップ15に供給されるデータ入力信号を生成する。
半導体集積回路に含まれる回路はいずれも1以上の論理セルを含み、各論理セルは1以上のトランジスタによって構成されている。図2は、トランジスタのレイアウト図である。レイアウトレベルで見ると、トランジスタは、図2に示すように拡散領域21とポリシリコン領域22とが重なる箇所に形成される。トランジスタの特性は、拡散領域21とポリシリコン領域22との重なり領域のサイズ(チャネル幅Wおよびチャネル長L)などによって決定される。
図1に示すように、第1のクロック回路11には論理セル16が含まれており、第2のクロック回路12には論理セル17が含まれている。本実施形態に係る半導体集積回路は、第1のクロック回路11に含まれる論理セル16と第2のクロック回路12に含まれる論理セル17とが、統一されたサイズのトランジスタによって構成されていることを特徴とする。論理セル16と論理セル17とは、典型的には、チャネル幅Wが統一されたトランジスタによって構成されるが、チャネル幅Wおよびチャネル長Lが統一されたトランジスタによって構成されることとしてもよい。
以下、本実施形態に係る半導体集積回路において、第1のクロック回路11に含まれる論理セル16と第2のクロック回路12に含まれる論理セル17とが、チャネル幅Wが統一されたトランジスタによって構成されていることによる効果を説明する。図1において、クロック信号CKの周期をT、第1のクロック回路11の遅延時間をt1、第2のクロック回路12の遅延時間をt2、組合せ回路14の遅延時間と第1のフリップフロップ13のクロック信号からデータ出力信号までの遅延時間との和をtd、第2のフリップフロップ15のセットアップ時間およびホールド時間を、それぞれtsおよびthとする。この場合、第2のフリップフロップ15が第2のクロック信号CK2に同期して正しく動作するためには、次式(1)に示すセットアップマージンMs、および次式(2)に示すホールドマージンMhが、いずれも所定値以上の正の値であることが必要とされる(図3を参照)。
Ms=(t2−t1)+T−td−ts …(1)
Mh=(t1−t2)+td−th …(2)
Ms=(t2−t1)+T−td−ts …(1)
Mh=(t1−t2)+td−th …(2)
図4は、半導体集積回路に含まれるトランジスタについて、チャネル幅Wの変動量と遅延時間の変動量との関係を示す図である。図4(a)は、従来の半導体集積回路に含まれるトランジスタについての関係を示す図であり、図4(b)は、本実施形態に係る半導体集積回路に含まれるトランジスタについての関係を示す図である。
ここで、まず、従来の手法を用いて、図1と同じ構成を有する半導体集積回路を設計および製造したとする。従来の手法による半導体集積回路では、クロック回路に含まれる論理セルは、チャネル幅Wが統一されていないトランジスタによって構成されている。第1のクロック回路11に含まれる論理セル16を構成するトランジスタのチャネル幅の設計値をW1、第2のクロック回路12に含まれる論理セル17を構成するトランジスタのチャネル幅の設計値をW2としたとき、W1がW2よりも大きく、かつ、製造された半導体集積回路では、製造ばらつきにより、各トランジスタのチャネル幅が設計値よりもΔWだけ変動したとする。この場合、製造されたトランジスタのチャネル幅は、第1のクロック回路11に含まれる論理セル16では(W1+ΔW)、第2のクロック回路12に含まれる論理セル17では(W2+ΔW)となるが、W1がW2より大きい場合、製造ばらつきに起因するチャネル幅の変動割合は、論理セル17に含まれるトランジスタのほうが、論理セル16に含まれるトランジスタよりも大きくなる。
このため、従来の手法による半導体集積回路では、製造ばらつきが発生したときに、第2のクロック回路12の遅延時間t2は、第1のクロック回路11の遅延時間t1よりも大きく変動する(図4(a)を参照)。したがって、チャネル幅の実測値が設計値よりも大きくなった場合(すなわち、ΔWが正である場合)には、第2のクロック回路12の遅延時間t2は、第1のクロック回路11の遅延時間t1よりも、より多く減少する。このため、上式(1)における(t2−t1)の値が小さくなり、第2のフリップフロップ15におけるセットアップマージンが不足する。一方、現実のチャネル幅が設計値よりも小さくなった場合(すなわち、ΔWが負である場合)には、第2のクロック回路12の遅延時間t2は、第1のクロック回路11の遅延時間t1よりも、より多く増加する。このため、上式(2)における(t1−t2)の値が小さくなり、第2のフリップフロップ15におけるホールドマージンが不足する。このように、クロック回路に含まれる論理セルがチャネル幅が統一されていないトランジスタによって構成されている場合、半導体集積回路の製造ばらつきにより、第2のフリップフロップ15ではタイミングエラーが発生しやすくなる。
これに対して、本実施形態に係る半導体集積回路では、クロック回路に含まれる論理セルは、チャネル幅Wが統一されたトランジスタによって構成されている。すなわち、第1のクロック回路11に含まれる論理セル16を構成するトランジスタのチャネル幅の設計値W1と、第2のクロック回路12に含まれる論理セル17を構成するトランジスタのチャネル幅の設計値W2とは、常に同じ値をとる。このため、製造ばらつきが発生したときでも、第1のクロック回路11の遅延時間t1と第2のクロック回路12の遅延時間t2とは、同じ時間だけ増加または減少する(図4(b)を参照)。したがって、製造ばらつきが発生しても、上式(1)における(t2−t1)の値や上式(2)における(t1−t2)の値は設計値から変化しないので、第2のフリップフロップ15ではタイミングエラーが発生しにくい。
よって、本実施形態に係る半導体集積回路によれば、製造ばらつきが発生してもタイミングエラーが発生しにくい半導体集積回路を得ることができる。クロック回路に含まれる論理セルがチャネル幅Wおよびチャネル長Lが統一されたトランジスタによって構成されている半導体集積回路も、これと同様の効果を奏する。
本実施形態に係る半導体集積回路については、以下に示す変形例を構成することができる。本変形例に係る半導体集積回路は、クロック回路に含まれる論理セルが、統一されたサイズを有するトランジスタによって構成されていることに加えて、クロック回路に含まれる論理セルが、矩形状に統一された拡散領域23を有するトランジスタ(図5(a))によって構成されていることを特徴とする。
以下、図5を参照して、本変形例に係る半導体集積回路の効果を説明する。図5(b)は、矩形状でない拡散領域24を有するトランジスタのレイアウト図である。図5(b)に示すトランジスタを含む半導体集積回路を製造すると、図5(c)に示すように、拡散領域24のくぼんだ頂点P(周囲360度のうち、270度が拡散領域に含まれる頂点)の周囲の、本来拡散領域が形成されるべきでない部分に、不要な拡散領域25(ハッチングを施した領域)が形成される。この不要な拡散領域25は、そのサイズや形状によって、トランジスタのチャネル幅Wに影響を与え、トランジスタを含んだ回路の遅延時間に影響を与えることがある。
このため、例えば、第1のクロック回路11に含まれる論理セル16が、矩形状の拡散領域23を有するトランジスタ(図5(a))によって構成され、第2のクロック回路12に含まれる論理セル17が、くぼんだ頂点Pを持つ拡散領域24を有するトランジスタ(図5(b))によって構成されている場合、製造時に形成される不要な拡散領域25(図5(c))の影響によって、第1のクロック回路11の遅延時間t1と第2のクロック回路12の遅延時間t2との差が、設計値と異なってしまうことがある。これに伴い、第1のクロック回路11の遅延時間t1と第2のクロック回路12の遅延時間t2との間に成立すべき時間的な関係が満たされなくなり、第2のフリップフロップ15などでタイミングエラーが発生しやすくなる。
これに対して、本変形例に係る半導体集積回路では、クロック回路に含まれる論理セルは、矩形状に統一された拡散領域23を有するトランジスタ(図5(a))によって構成されている。このような特徴を有する拡散領域には、図5(c)に示すような、くぼんだ頂点Pが存在しないので、くぼんだ頂点Pの周囲に不要な拡散領域25が形成されることもない。このため、第1のクロック回路11の遅延時間t1と第2のクロック回路12の遅延時間t2とは、製造ばらつきが発生した場合でも、同じ時間だけ増加または減少する。したがって、本変形例に係る半導体集積回路によれば、第1の実施形態に係る半導体集積回路よりも、さらにタイミングエラーが発生しにくい半導体集積回路を得ることができる。
(第2の実施形態)
本発明の第2の実施形態では、ある動作条件下で動作する回路ブロックを用いて、これとは異なる動作条件下で動作する半導体集積回路を設計する方法について説明する。まず、ある閾値電圧で動作する回路ブロックを用いて、これとは異なる閾値電圧で動作する半導体集積回路(図6)を設計する方法について説明する。図6に示す半導体集積回路30は、前半クロック回路31、回路ブロック32、第2の後半クロック回路35、および第2のフリップフロップ36を備え、ある閾値電圧(以下、第2の閾値電圧VT2という)で動作する。回路ブロック32は、第1の後半クロック回路33、および第1のフリップフロップ34を含み、元々、第2の閾値電圧VT2とは異なる閾値電圧(以下、第1の閾値電圧VT1という)で動作するように設計されていたものである。
本発明の第2の実施形態では、ある動作条件下で動作する回路ブロックを用いて、これとは異なる動作条件下で動作する半導体集積回路を設計する方法について説明する。まず、ある閾値電圧で動作する回路ブロックを用いて、これとは異なる閾値電圧で動作する半導体集積回路(図6)を設計する方法について説明する。図6に示す半導体集積回路30は、前半クロック回路31、回路ブロック32、第2の後半クロック回路35、および第2のフリップフロップ36を備え、ある閾値電圧(以下、第2の閾値電圧VT2という)で動作する。回路ブロック32は、第1の後半クロック回路33、および第1のフリップフロップ34を含み、元々、第2の閾値電圧VT2とは異なる閾値電圧(以下、第1の閾値電圧VT1という)で動作するように設計されていたものである。
図6において、第1および第2のフリップフロップ34、36は、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、前半クロック回路31および第1の後半クロック回路33は、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1のフリップフロップ34は、第1のクロック信号CK1に同期して動作する。第2の後半クロック回路35および第2のフリップフロップ36も、これと同様に動作する。
図7は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図7に示す手順を実行するに前に、クロック回路で使用する論理セルとして、第1の閾値電圧V1で動作する論理セル(以下、第1のクロック用セルという)と、第2の閾値電圧V2で動作する論理セル(以下、第2のクロック用セルという)とを準備する。その際、第1のクロック用セルと第2のクロック用セルとの間では、同じ種類の論理セルについては、入力容量とセル固有遅延と駆動能力が等しくなるようにしておく。言い換えると、第1のクロック用セルの入力容量は、第2のクロック用セルの入力容量に等しく、第1のクロック用セルのセル固有遅延は、第2のクロック用セルのセル固有遅延に等しく、第1のクロック用セルの駆動能力は、第2のクロック用セルの駆動能力に等しくなるようにしておく。なお、第1のクロック用セルと第2のクロック用セルとの間では、同じ種類の論理セルであっても、セルのサイズは異なっていてもよい。
上記特徴を有する第1および第2のクロック用セルを準備した後に、図7に示す手順を実行する。まず、第1の閾値電圧VT1で動作する回路ブロック32を設計する(ステップS101)。この際、回路ブロック32に含まれるクロック回路(後に、第1の後半クロック回路33となる回路)は、第1のクロック用セルを用いて設計する。回路ブロック32は、例えば、他の半導体集積回路に内蔵して使用するために、IP(Intellectual Property)コアとして設計された回路であってもよい。
次に、ステップS101で設計した回路ブロック32について、クロック回路に含まれる第1のクロック用セルを、同じ種類の第2のクロック用セルに置換する(ステップS102)。論理セル置換後のクロック回路は、第1の後半クロック回路33となる。これにより、第1の後半クロック回路33を含んだ回路ブロック32が得られる。次に、ステップS102で得られた回路ブロック32を含み、全体として第2の閾値電圧VT2で動作する半導体集積回路30を設計する(ステップS103)。
以下、本実施形態に係る設計方法を用いて、半導体集積回路30を設計する場合の効果を説明する。ここで仮に、本実施形態に係る設計方法とは異なり、第1の閾値電圧VT1で動作する回路ブロック32を設計するときに、回路ブロック32に含まれるクロック回路を、上記特徴を有していない論理セルを用いて設計したとする。このようにして設計されたクロック回路を第1の後半クロック回路33として含む半導体集積回路30を設計すると、設計された半導体集積回路30では、元々第1の閾値電圧VT1で動作するように設計された第1のフリップフロップ34と、新たに第2の閾値電圧VT2で動作するように設計された第2のフリップフロップ36との間で、閾値電圧の違いに起因したクロックスキューが発生しやすくなる。したがって、このクロックスキューを抑えるためには、回路ブロック32を組み込んだ後の半導体集積回路30について、閾値電圧を一致させるために回路変更を行うときに、第1の後半クロック回路33の遅延時間t1が閾値電圧の変更(第1の閾値電圧VT1から第2の閾値電圧VT2への変更)によって変化しないようにするため、改めてクロック信号のスキュー調整を行う必要が生じる。
これに対して、本実施形態に係る設計方法では、上述したように、第1の後半クロック回路33に含まれる第1のクロック用セルと、第2の後半クロック回路35に含まれる第2のクロック用セルとは、種類が同じであれば、同じ入力容量、同じセル固有遅延、および同じ駆動能力を有する。このため、第1の後半クロック回路33の遅延時間t1は、閾値電圧の変更前と変更後で変化しない。したがって、第1のフリップフロップ34と第2のフリップフロップ36との間には、設計値以上のクロックスキューが発生することがない。よって、本実施形態に係る半導体集積回路の設計方法によれば、回路ブロックを組み込んだ半導体集積回路について改めてクロック信号のスキュー調整を行うことなく、クロック信号の閾値電圧を一致させることができる。
なお、本実施形態ではここまで、ある閾値電圧で動作する回路ブロックを用いて、これとは異なる閾値電圧で動作する半導体集積回路を設計する方法を説明したが、回路ブロックとこれを含む半導体集積回路との間で、電源電圧など、他の動作条件が異なる場合にも、上述した方法と同様の設計方法を適用することができる。例えば、第1の電源電圧V1で動作する回路ブロックを用いて、第2の電源電圧V2で動作する半導体集積回路を設計するためには、第1の電源電圧V1で動作する第1のクロック用セルと、第2の電源電圧V2で動作する第2のクロック用セルとについて、入力容量とセル固有遅延と駆動能力とを一致させた上で、図7と同様の手順を実行すればよい。この設計方法によれば、回路ブロックの電源電圧とこれを含む半導体集積回路の電源電圧とが異なる場合についても、回路ブロックを組み込んだ半導体集積回路について改めてクロック信号のスキュー調整を行うことなく、クロック信号の電源電圧を一致させることができる。
(第3の実施形態)
本発明の第3の実施形態では、トランジスタの経年劣化に伴うクロック信号の遅延時間変動を考慮して、半導体集積回路を設計する方法について説明する。一般に、トランジスタは、所定の信号電圧が印加されている期間の長さに応じて劣化する。このため、トランジスタによって構成された回路の遅延時間は、時間の経過とともに長くなる。また、多くのクロック信号では、信号がハイレベルである期間の長さと、信号がローレベルである期間の長さは同じである。したがって、クロック信号が所定の値に変化する回数(以下、トグル回数という)を数えれば、クロック信号が所定値である期間の長さを求めることができるので、これを用いて、クロック信号が入力される論理セルに含まれるトランジスタについて、どの程度劣化が進行するかを予め予測することができる。
本発明の第3の実施形態では、トランジスタの経年劣化に伴うクロック信号の遅延時間変動を考慮して、半導体集積回路を設計する方法について説明する。一般に、トランジスタは、所定の信号電圧が印加されている期間の長さに応じて劣化する。このため、トランジスタによって構成された回路の遅延時間は、時間の経過とともに長くなる。また、多くのクロック信号では、信号がハイレベルである期間の長さと、信号がローレベルである期間の長さは同じである。したがって、クロック信号が所定の値に変化する回数(以下、トグル回数という)を数えれば、クロック信号が所定値である期間の長さを求めることができるので、これを用いて、クロック信号が入力される論理セルに含まれるトランジスタについて、どの程度劣化が進行するかを予め予測することができる。
図8は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図8に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。図8に示す手順では、まず、設計すべき半導体集積回路の耐用時間を決定する(ステップS201)。耐用時間は、半導体集積回路の仕様や動作条件などに基づき、例えば3年、10年などの値に決定される。
設計すべき半導体集積回路は、複数のフリップフロップを備えている。そこで、次に、各フリップフロップに供給されるクロック信号について、ステップS201で決定した耐用時間内のトグル回数を求める(ステップS202)。あるフリップフロップFXに供給されるクロック信号のトグル回数TCは、例えば、次式(3)によって算出される。
TC=TX×FR×α …(3)
ただし、上式(3)において、TXはステップS201で決定した耐用時間、FRは与えられたクロック信号CKの周波数、αはクロック信号CKが変化したときにフリップフロップFXに供給されるクロック信号が変化する確率(以下、トグル確率という)を表す。トグル確率αは、半導体集積回路の仕様や動作条件などに基づき、算出あるいは推定される。トグル確率αは、例えば、論理シミュレーションによっても求めることもできる。
TC=TX×FR×α …(3)
ただし、上式(3)において、TXはステップS201で決定した耐用時間、FRは与えられたクロック信号CKの周波数、αはクロック信号CKが変化したときにフリップフロップFXに供給されるクロック信号が変化する確率(以下、トグル確率という)を表す。トグル確率αは、半導体集積回路の仕様や動作条件などに基づき、算出あるいは推定される。トグル確率αは、例えば、論理シミュレーションによっても求めることもできる。
なお、クロック信号のトグル回数を求めるときには、信号のローレベルからハイレベルへの変化だけを1回のトグルとして数えてもよく、信号の逆方向への変化だけを1回のトグルとして数えてもよく、信号の各方向への変化をそれぞれ1回のトグルとして数えてもよい。以下では、例えば、信号のローレベルからハイレベルへの変化だけを1回のトグルとして数えることとする。
次に、各フリップフロップに供給されるクロック信号について、ステップS202で求めたトグル回数に基づき、耐用時間経過時における遅延変動量を求める(ステップS203)。クロック信号については、信号がローレベルである期間の長さと、信号がハイレベルである期間の長さが同じであるとすれば、クロック信号が入力される論理セルに含まれるトランジスタについては、その特性から入力信号のトグル回数と遅延時間の変動率との関係を求めることができる(後述する図10を参照)。したがって、ステップS203では、ステップS202で求めたトグル回数と、各トランジスタにおけるトグル回数と遅延変動率との関係に基づき、耐用時間経過時における遅延変動量を求めることができる。
次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに供給されるクロック信号について求めた遅延変動量と、他方のフリップフロップに供給されるクロック信号について求めた遅延変動量との差を求める(ステップS204)。次に、求めた遅延変動量の差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、選択したフリップフロップのペア間のタイミング制約に設定する(ステップS205)。なお、ステップS204およびS205では、既にタイミング制約が付加されているフリップフロップのペアについてのみ、遅延変動量の差を求め、求めた差をタイミング制約に設定することとしてもよい。
次に、上記のように設計マージンを設定した後のタイミング制約に従って、フリップフロップにクロック信号およびデータ入力信号を供給する回路についてタイミング調整を行う(ステップS206)。ステップS206では、クロックスキューが所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、データ入力信号を生成する回路を再設計する処理や、レイアウト結果を修正する処理などが行われる。
図9に示すクロック回路を含む半導体集積回路に、図8に示す手順を適用した場合の詳細を説明する。図9に示すクロック回路は、第1のクロック回路41、第1のフリップフロップ42、第2のクロック回路43、および第2のフリップフロップ44を備えている。第1および第2のフリップフロップ42、44は、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、第1のクロック回路41は、2個のバッファを含み、クロック信号CKに基づき、クロック信号CKと同じ頻度で変化する第1のクロック信号CK1を生成する。第1のフリップフロップ42は、第1のクロック信号CK1に同期して動作する。第2のクロック回路43は、ANDゲート45とバッファとを含み、クロック信号CKに基づき、クロック信号CKよりも少ない頻度で変化する第2のクロック信号CK2を生成する。第2のフリップフロップ44は、第2のクロック信号CK2に同期して動作する。ANDゲート45には、クロック信号CKとクロックイネーブル信号CENとが入力される。以下では、クロック信号CKの周波数は100MHzであり、クロックイネーブル信号CENは、クロック信号CKの10サイクルにつき1サイクルの割合でハイレベルになるものとする。
図9に示すクロック回路を含む半導体集積回路の耐用時間を、例えば10年と決定する(ステップS201)。10年は約3.15×108秒に相当するから、第1のクロック信号CK1の10年間のトグル回数TC1は、次式(4)より、3.15×1016回となる。また、第2のクロック信号CK2のトグル確率αは10分の1であるから、第2のクロック信号CK2の10年間のトグル回数TC2は、次式(5)より、3.15×1015回となる(ステップS202)。
TC1≒(3.15×108)×(100×106)×1 =3.15×1016 …(4)
TC2≒(3.15×108)×(100×106)×1/10=3.15×1015 …(5)
TC1≒(3.15×108)×(100×106)×1 =3.15×1016 …(4)
TC2≒(3.15×108)×(100×106)×1/10=3.15×1015 …(5)
図9に示すクロック回路に含まれる論理セルを構成するトランジスタは、入力信号のトグル回数に応じて、図10に示すように、遅延時間が変動するものとする。図10の横軸は入力信号のトグル回数を、縦軸は遅延時間の変動率を表す。第1のクロック信号CK1の10年間のトグル回数TC1は3.15×1016回であるから、図10によれば、第1のクロック信号CK1の10年後の遅延変動量は5%である。一方、第2のクロック信号CK2の10年間のトグル回数TC2は3.15×1015回であるから、図10によれば、第2のクロック信号CK2の10年後の遅延変動量は2%である。言い換えると、10年の耐用時間が経過したときには、第1のクロック信号CK1の遅延時間t1は当初より5%増加するのに対して、第2のクロック信号CK2の遅延時間t2は当初より2%増加する(ステップS203)。したがって、第1のクロック信号CK1の遅延変動量と、第2のクロック信号CK2の遅延変動量との差は、3%となる(ステップS204)。
そこで、求めた遅延変動量3%を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、第1のフリップフロップ42と第2のフリップフロップ44との間のタイミング制約に設定する(ステップS205)。そして、3%の設計マージンを設定した後のタイミング制約に従って、第1および第2のフリップフロップ42、44にクロック信号およびデータ入力信号を供給する回路について、タイミング調整を行う(ステップS206)。
以下、本実施形態に係る設計方法を用いて、図9に示すクロック回路を含む半導体集積回路を設計する場合の効果を説明する。従来の手法では、フリップフロップ間のタイミング制約に、経年劣化に伴う遅延時間変動を吸収するための設計マージンを設定するときには、各フリップフロップに供給されるクロック信号の遅延変動量の最悪値が設定される。このため、第1のフリップフロップ42と第2のフリップフロップ44との間のタイミング制約には、第1のクロック信号CK1の遅延時間t1の変動率5%と、第2のクロック信号CK2の遅延時間t2の変動率2%との最悪値である5%が、設計マージンとして設定される。
これに対して、本実施形態に係る設計方法では、フリップフロップ間のタイミング制約に、経年劣化に伴う遅延時間変動を吸収するための設計マージンを設定するときには、各フリップフロップに供給されるクロック信号の遅延変動量の差が設定される。このため、第1のフリップフロップ42と第2のフリップフロップ44との間のタイミング制約には、第1のクロック信号CK1の遅延時間t1の変動率5%と、第2のクロック信号CKの遅延時間t2の変動率2%との差である3%が、設計マージンとして設定される。
実際の半導体集積回路では、10年の耐用時間が経過して、第1のクロック信号CK1の遅延時間t1が5%長くなったときに、第2のクロック信号CK2の遅延時間t2も2%長くなっている。したがって、第1のクロック信号CK1に同期して動作する第1のフリップフロップ42と、第2のクロック信号CK2に同期して動作する第2のフリップフロップ44との間のタイミング制約には、遅延変動量の最悪値(5%)ではなく、遅延変動量の差(3%)を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして設定すれば十分である。この遅延変動量の差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして設定した上で半導体集積回路を設計すれば、設計された半導体集積回路は、耐用時間内では正しく動作することを保証できる。
したがって、本実施形態に係る半導体集積回路の設計方法によれば、従来よりも的確に設計マージンを設定することができるので、トランジスタの経年劣化に伴うクロック信号の遅延時間の変動を考慮した上で、従来よりも回路規模を削減することができる。
(第4の実施形態)
本発明の第4の実施形態では、クロック信号のトグル回数を数える機能を有する半導体集積回路について説明する。図11は、本実施形態に係る半導体集積回路の構成を示す図である。図11に示す半導体集積回路は、前半クロック回路51、第1〜第3の後半クロック回路52a〜c、第1〜第3の回路ブロック53a〜c、第1〜第3のトグル計数回路54a〜c、デコーダ55、および第1〜第3のトグル回数格納レジスタ56a〜cを備えている。第1〜第3の回路ブロック53a〜cは、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、前半クロック回路51と第1の後半クロック回路52aとは、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1の回路ブロック53aは、第1のクロック信号CK1に同期して動作する。第2および第3の後半クロック回路52b、52c、並びに第2および第3の回路ブロック53b、53cも、これ同様に動作する。
本発明の第4の実施形態では、クロック信号のトグル回数を数える機能を有する半導体集積回路について説明する。図11は、本実施形態に係る半導体集積回路の構成を示す図である。図11に示す半導体集積回路は、前半クロック回路51、第1〜第3の後半クロック回路52a〜c、第1〜第3の回路ブロック53a〜c、第1〜第3のトグル計数回路54a〜c、デコーダ55、および第1〜第3のトグル回数格納レジスタ56a〜cを備えている。第1〜第3の回路ブロック53a〜cは、いずれも、与えられたクロック信号CKに同期して動作する。より詳細には、前半クロック回路51と第1の後半クロック回路52aとは、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1の回路ブロック53aは、第1のクロック信号CK1に同期して動作する。第2および第3の後半クロック回路52b、52c、並びに第2および第3の回路ブロック53b、53cも、これ同様に動作する。
第1〜第3のトグル計数回路54a〜cは、それぞれ、第1〜第3のクロック信号CK1〜3のトグル回数を数える。ここでは、信号のローレベルからハイレベルへの変化を、1回のトグルとして数えることとする。デコーダ55は、コード信号CODEをデコードすることにより、第1〜第3のトグル回数格納レジスタ56a〜cのイネーブル信号EN1〜3を出力する。第1〜第3のトグル回数格納レジスタ56a〜cは、それぞれ、イネーブル信号EN1〜3を受けたときに、第1〜第3のトグル計数回路54a〜cからトグル回数TC1〜3を読み出して内部に格納し、格納したトグル回数をデータバスDBUSのタイミング仕様に合わせて出力する。
データバスDBUSに出力されたトグル回数は、半導体集積回路の外部に出力される。このため、例えば、データバスDBUSは、トグル回数出力モードでは、半導体集積回路の外部入出力端子(図示せず)に接続される。あるいは、データバスDBUSに出力されたトグル回数は、データバスDBUSに接続されたレジスタに一旦格納され、当該レジスタ経由で半導体集積回路の外部に出力されることとしてもよい。このように、デコーダ55、第1〜第3のトグル回数格納レジスタ56a〜c、データバスDBUSなどの作用により、第1〜第3のトグル計数回路54a〜cで数えたトグル回数TC1〜3は、半導体集積回路の外部に出力される。
図12は、本実施形態に係る半導体集積回路の他の構成を示す図である。図12に示す半導体集積回路は、前半クロック回路51、第1〜第3の後半クロック回路52a〜c、第1〜第3の回路ブロック53a〜c、第1〜第3のトグル計数回路54a〜c、デコーダ55、セレクタ57、およびトグル回数格納レジスタ58を備えている。図12に示す構成要素のうち、図11と同じ構成要素については、同一の参照符号を付して説明を省略する。セレクタ57は、デコーダ55から出力されたイネーブル信号EN1〜3に基づき、第1〜第3のトグル計数回路54a〜cのいずれかからトグル回数を読み出して出力する。トグル回数格納レジスタ58は、セレクタ57から出力されたトグル回数を内部に格納し、格納したトグル回数をデータバスDBUSのタイミング仕様に合わせて出力する。
以下、図11あるいは図12に示す構成を有する、本実施形態に係る半導体集積回路の効果を説明する。本実施形態に係る半導体集積回路は、例えば、あるシステムの評価ボードに実装される。この評価ボードは、システムの実際の動作環境下で、実際のアプリケーションソフトウエアを実行する。これにより、評価ボードを用いて、システムの実際の動作が再現される。
本実施形態に係る半導体集積回路は、上述したように、各回路ブロックに供給されるクロック信号のトグル回数を数え、数えたトグル回数を半導体集積回路の外部に出力する機構を有している。したがって、上記評価ボードを用いてシステムの動作を再現したときに、各回路ブロックに供給されるクロック信号のトグル回数を求めることにより、実動作環境下でクロック信号が変化する確率(トグル率α)を、論理シミュレーションなどよりも短時間かつ高精度で求めることができる。
第3の実施形態で既に説明したように、半導体集積回路の耐用時間を決定し、半導体集積回路に含まれるクロック信号のトグル率αを求めれば、耐用時間経過時におけるクロック回路の遅延変動量を求めることができる。そこで、本実施形態に係る半導体集積回路と同様の機能を有する新たな半導体集積回路を改良版として(あるいは評価用回路に対する設計対象回路として)設計するときに、求めた遅延変動量を考慮してクロック回路を設計することができる。したがって、トランジスタの経年劣化に伴うクロック信号の遅延時間変動をより的確に考慮して、新たにタイミングエラーが発生しにくい半導体集積回路を設計することができる。
(第5の実施形態)
本発明の第5の実施形態では、クロック信号のトグル回数を調整する機能を有する半導体集積回路について説明する。図13は、本実施形態に係る半導体集積回路の構成を示す図である。図13に示す半導体集積回路は、前半クロック回路51、第1〜第3の後半クロック回路52a〜c、第1〜第3の回路ブロック53a〜c、第1〜第3のトグル計数回路54a〜c、およびトグル調整回路59を備えている。図13に示す構成要素のうち、図11と同じ構成要素については、同一の参照符号を付して説明を省略する。
本発明の第5の実施形態では、クロック信号のトグル回数を調整する機能を有する半導体集積回路について説明する。図13は、本実施形態に係る半導体集積回路の構成を示す図である。図13に示す半導体集積回路は、前半クロック回路51、第1〜第3の後半クロック回路52a〜c、第1〜第3の回路ブロック53a〜c、第1〜第3のトグル計数回路54a〜c、およびトグル調整回路59を備えている。図13に示す構成要素のうち、図11と同じ構成要素については、同一の参照符号を付して説明を省略する。
トグル調整回路59には、第1〜第3の後半クロック回路52a〜cから出力された第1〜第3のクロック信号CK1〜3、調整クロック信号CK0、モード選択信号MODE、および第1〜第3のトグル計数回路54a〜cで数えたトグル回数TC1〜3が入力される。トグル調整回路59は、これらの入力信号に基づき、第1〜第3の回路ブロック53a〜cに供給されるクロック信号ck1〜3を生成する。
図14は、トグル調整回路59の詳細な構成を示す図である。トグル調整回路59は、比較回路61、および第1〜第3のセレクタ62a〜cを含んでいる。比較回路61は、トグル回数TC1〜3に基づき、第1〜第3のセレクタ62a〜cのセレクト信号S1〜3を求める。より詳細には、トグル回数TC1〜3の最大値をMとしたときに、比較回路61は、1から3までの整数iについて、第iのトグル数TCiが最大値Mであるときは、第iのセレクタ62j(ただし、i=1ならばj=a、i=2ならばj=b、i=3ならばj=c)のセレクト信号Siをハイレベルに、それ以外の場合は、当該信号をローレベルにする。
第1のセレクタ62aは、図15に示すように、モード選択信号MODEおよびセレクト信号S1に基づき、第1のクロック信号CK1、調整クロックCK0、および固定値ローレベルのいずれかを出力する。より詳細には、第1のセレクタ62aは、モード選択信号MODEがローレベルであるとき(通常動作モードを示すとき)は、第1のクロック信号CK1を出力し、モード選択信号MODEがハイレベル(調整モードを示す)であり、かつ、セレクト信号S1がローレベルであるときは、調整クロックCK0を出力し、モード選択信号MODEがハイレベルであり、かつ、セレクト信号S1がハイレベルであるときは、固定値ローレベルを出力する。第2および第3のセレクタ62b、62cも、これと同様に動作する。
このように構成されたトグル調整回路59は、通常動作モードでは、第1〜第3の回路ブロック53a〜cに対して、それぞれ第1〜第3のクロック信号CK1〜3を出力する。また、トグル調整回路59は、調整モードでは、第1〜第3の回路ブロック53a〜cのうちから相対的にトグル回数が少ないクロック信号が供給されている回路ブロックを選択し、選択した回路ブロックに対して調整クロック信号CK0を出力する。
図16は、本実施形態に係る半導体集積回路の使用形態を示す図である。図16において、半導体集積回路70には、水晶振動子71およびクロック生成回路72によって生成されたクロック信号CKが供給される。ANDゲート73には、クロック信号CKとモード選択信号MODEとが入力される。クロック信号CKとモード選択信号MODEとの論理積が、調整クロック信号CK0となる。なお、クロック生成回路72およびANDゲート73は、半導体集積回路70の内部に設けてもよい。
モード選択信号MODEは、システムを構成するハードウェアまたはソフトウエアによって、システムの通常動作中はローレベルに設定され、システムの待機中や充電中など、システムの通常動作が行われていないときにはハイレベルに設定される。モード選択信号MODEがローレベルであるときは、調整クロック信号CK0はローレベルに固定され、トグル調整回路59に含まれる第1〜第3のセレクタ62a〜c(図14)は、それぞれ、第1〜第3のクロック信号CK1〜3を選択して出力する。この場合、第1〜第3の回路ブロック53a〜c(図13)は、それぞれ、第1〜第3のクロック信号CK1〜3に同期して動作する。
これに対して、モード選択信号MODEがハイレベルであるときは、調整クロック信号CK0はクロック信号CKと同じように変化し、第1〜第3のセレクタ62a〜cは、調整クロック信号CK0または固定値(ローレベル)を出力する。トグル調整回路59は、トグル回数TCiがその最大値Mに一致しないクロック信号TCiの供給を受けていた回路ブロック53j(ただし、i=1ならばj=a、i=2ならばj=b、i=3ならばj=c)に対して、調整クロック信号CK0を供給する。したがって、モード選択信号MODEを適宜ハイレベルに設定することにより、第1〜第3の回路ブロック53a〜cに供給されるクロック信号ck1〜3のトグル回数TC1〜3を、その最大値Mに近づけることができる。
第1〜第3の回路ブロック53a〜cに含まれる論理セルを構成するトランジスタは、各回路ブロックに供給されるクロック信号のトグル回数TCiに応じて劣化する。したがって、第1〜第3の回路ブロック53a〜cに供給されるクロック信号ck1〜3のトグル回数TC1〜3が相互に近ければ、第1〜第3の回路ブロック53a〜cに含まれる回路の遅延時間は、時間の経過とともに同じように変動する。
したがって、モード選択信号MODEを適宜ハイレベルに設定することにより、第1〜第3の回路ブロック53a〜cに含まれる回路の遅延時間を、時間の経過とともに同じように変動させることができる。よって、半導体集積回路をシステムに組み込んだ後でも、各クロック信号のトグル回数を調整することにより、異なる頻度で変化するクロック信号が供給され、トランジスタの経年劣化の程度に差が生じてタイミングエラーが発生し、半導体集積回路の耐用時間が短くなることを防止することができる。この効果は、消費電力を低減するために、回路ブロック単位でクロック信号の供給を停止する機能を有する半導体集積回路において、特に顕著に現れる。
(第6の実施形態)
本発明の第6の実施形態では、半導体集積回路に含まれるクロック回路を検証あるいは変更する方法について説明する。図17は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図17に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
本発明の第6の実施形態では、半導体集積回路に含まれるクロック回路を検証あるいは変更する方法について説明する。図17は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図17に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
図17に示す手順では、まず、半導体集積回路を設計するときに使用できるすべての論理セルの種類のうちで、クロック経路上に存在できる論理セルの種類を指定する(ステップS301)。以下、ステップS301で指定された種類の論理セルをクロック用セルといい、それ以外の論理セルを非クロック用セルという。ステップS301では、クロック用セルとして、すべての論理セルのうちで、プロセス変動に強い論理セルだけが選択的に指定される。次に、非クロック用セルの種類に対応して、論理的に等価なクロック用セルの種類を指定する(ステップS302)。
次に、設計すべき半導体集積回路から、すべてのクロック経路を抽出する(ステップS303)。次に、抽出されたクロック経路上に存在するすべての論理セルについて、当該論理セルがクロック用セルであるか非クロック用セルであるかを判定する(ステップS304)。次に、ステップS304で非クロック用セルと判定された論理セルに関する各種の情報を求める(ステップS305)。ステップS305で求めた情報は、以後の設計で参照される。次に、ステップS304で非クロック用セルと判定された論理セルを、ステップS302で当該論理セルの種類に対応して指定したクロック用セルに置換する(ステップS306)。
したがって、本実施形態に係る半導体集積回路の設計方法によれば、一定の特性を有する論理セル(例えば、プロセス変動に強い論理セル)だけがクロック経路上に存在するように、半導体集積回路に含まれるクロック回路を変更することができる。
なお、図17に示すフローチャートからステップS302およびS306を削除すれば、図18に示すフローチャートが得られる。図18に示す手順によれば、クロック経路上に存在する論理セルが、一定の特性を有する論理セル(例えば、プロセス変動に強い論理セル)であることを容易に検証することができる。
(第7の実施形態)
本発明の第7の実施形態では、クロック経路の特性を考慮して、クロック回路を設計する方法について説明する。まず、クロック経路上に存在する論理セルの段数の差を考慮して、クロック回路を設計する方法を説明する。図19は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図19に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
本発明の第7の実施形態では、クロック経路の特性を考慮して、クロック回路を設計する方法について説明する。まず、クロック経路上に存在する論理セルの段数の差を考慮して、クロック回路を設計する方法を説明する。図19は、本実施形態に係る半導体集積回路の設計方法を示すフローチャートである。図19に示す手順は、論理レベルの設計を終え、タイミング調整を行う前の半導体集積回路に対して実行される。
図19に示す手順では、まず、設計すべき半導体集積回路から、各フリップフロップに至るクロック経路を抽出する(ステップS401)。次に、抽出した各クロック経路の特性として、各クロック経路上に存在する論理セルの段数を求める(ステップS402)。次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに至るクロック経路上に存在する論理セルの段数と、他方のフリップフロップに至るクロック経路上に存在する論理セルの段数との差を求める(ステップS403)。
次に、求めた差に応じた時間を、クロック経路の差を吸収するための設計マージンとして、選択したフリップフロップのペア間のタイミング制約に設定する(ステップS404)。ステップS404では、設計マージンとして、例えば、ステップS403で求めた差に比例した時間を設定してもよく、求めた差に所定の関数を適用して求めた時間を設定してもよい。なお、ステップS403およびS404では、既にタイミング制約が付加されているフリップフロップのペアについてのみ、クロック経路上に存在する論理セルの段数の差を求めて、求めた差に応じた時間をタイミング制約に設定することとしてもよい。
次に、上記のように設計マージンを設定した後のタイミング制約に従って、フリップフロップにクロック信号およびデータ入力信号を供給する回路について、タイミング調整を行う(ステップS405)。ステップS405では、クロックスキューが所定の許容値よりも小さくなるように、クロック回路にバッファなどを追加あるいは削除する処理や、データ入力信号を生成する回路を再設計する処理や、レイアウト結果を修正する処理などが行われる。
図20に示すクロック回路を含む半導体集積回路に、図19に示す手順を適用した場合の詳細を説明する。図20に示すクロック回路は、第1のクロック回路81、第1のフリップフロップ82、第2のクロック回路83、および第2のフリップフロップ84を備えている。第1および第2のフリップフロップ82、84は、与えられたクロック信号CKに同期して動作する。より詳細には、第1のクロック回路81は、クロック信号CKに基づき第1のクロック信号CK1を生成し、第1のフリップフロップ82は、第1のクロック信号CK1に同期して動作する。第2のクロック回路83および第2のフリップフロップ84も、これと同様に動作する。
以下、クロック信号CKの供給点から第1のクロック回路81を経由して第1のフリップフロップ82に至る経路を、第1のクロック経路といい、クロック信号CKの供給点から第2のクロック回路83を経由して第2のフリップフロップ84に至る経路を、第2のクロック経路という。図20に示すように、第1のクロック経路上には4個の論理セルが存在し、第2のクロック経路上には5個の論理セルが存在している。なお、図20において、論理セルに付されたA、B、Cなどの文字は、論理セルの種類を表す。
第1のクロック経路上に存在する論理セルの段数は4段、第2のクロック経路上に存在する論理セルの段数は5段であるから(ステップS402)、両者の差は1段である(ステップS403)。ここで、段数差1段あたり50ピコ秒の設計マージンを設定することとすると、この場合の設計マージンは50ピコ秒となる。そこで、求めた値50ピコ秒を、クロック経路の差を吸収するための設計マージンとして、第1のフリップフロップ82と第2のフリップフロップ84との間のタイミング制約に設定する(ステップS404)。次に、50ピコ秒の設計マージンを設定した後のタイミング制約に従って、第1および第2のフリップフロップ82、84にクロック信号およびデータ入力信号を供給するクロック回路について、タイミング調整を行う(ステップS405)。
以下、本実施形態に係る設計方法を用いて、図20に示すクロック回路を含む半導体集積回路を設計する場合の効果を説明する。従来、フリップフロップ間のタイミング制約に、クロック経路上に存在する論理セルの段数を吸収するための設計マージンを設定することは知られていなかった。一般に、クロック経路間に論理セルの段数の差があると、当該クロック経路間では遅延時間の構成要因に差異が生じ、製造された半導体集積回路では、当該クロック経路間で遅延時間の変動が起こりやすくなる。このため、従来の手法による半導体集積回路では、製造ばらつきにより、タイミングエラーが発生しやすい。
これに対して、本実施形態に係る設計方法では、フリップフロップ間のタイミング制約に、クロック経路上に存在する論理セルの段数を吸収するための設計マージンが設定される。このため、クロック経路間に論理セルの段数の差があり、クロック経路間では遅延時間の構成要因に差異がある場合でも、その差異は設定された設計マージンによって吸収される。したがって、製造された半導体集積回路では、クロック経路間で遅延時間の変動が起こりにくい。よって、本実施形態に係る半導体集積回路の設計方法によれば、タイミングエラーが発生しにくい半導体集積回路を得ることができる。
本実施形態に係る半導体集積回路の設計方法については、以下に示す変形例を構成することができる。第1の変形例として、クロック経路の特性として、クロック経路上に存在する論理セルの種類ごとの個数を使用することができる。この第1の変形例に係る設計方法を実行するには、図19に示すステップS402では、各クロック経路の特性として、クロック経路上に存在する論理素子の段数に代えて、クロック経路上に存在する論理セルの種類ごとの個数を求め、ステップS403では論理セルの種類ごとの個数の差を求め、ステップS404では求めた差に応じた時間を設計マージンとして設定すればよい。
第1の変形例に係る方法を、図20に示すクロック回路を含む半導体集積回路に適用する場合の詳細を説明する。第1のクロック経路上には、種類A、B、CおよびDの論理セルがそれぞれ1個ずつ存在し、第2のクロック経路上には、種類A、BおよびDの論理セルがそれぞれ3個、1個および1個存在するので、論理セルの種類ごとの個数の差は、種類Aが2個、種類Cが1個である。ここで、種類A、B、CおよびDの論理セル1個につき、それぞれ1.0%、1.1%、1.2%および1.3%の設計マージンを設定することとすると、この場合の設計マージンMGは、次式(6)より、3.2%となる。
MG=1.0×2+1.2×1=3.2 …(6)
したがって、第1および第2のフリップフロップ82、84に信号を供給する回路のタイミング調整は、求めた値3.2%をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
MG=1.0×2+1.2×1=3.2 …(6)
したがって、第1および第2のフリップフロップ82、84に信号を供給する回路のタイミング調整は、求めた値3.2%をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
また、第2の変形例として、クロック経路の特性として、クロック経路上に存在する配線の種類および遅延時間を使用することができる。図21は、本実施形態の第2の変形例に係る半導体集積回路の設計方法を示すフローチャートである。図21に示すフローチャートにおいて、ステップS401およびS405は、図19に示すフローチャートに示したものと同じである。
図21に示す手順によれば、クロック経路を抽出した後(ステップS401)、抽出した各クロック経路の特性として、各クロック経路の配線の種類を求める(ステップS412)。次に、設計すべき半導体集積回路から順にフリップフロップのペアを選択し、各ペアについて、一方のフリップフロップに至るクロック経路上に存在する配線の集合と、他方のフリップフロップに至るクロック経路上に存在する配線の集合とについて、次式(7)によって定義される部分マージンmgを求めて、2つの部分マージンの和MGSを求める(ステップS413)。
mg=Σ(di×mi) …(7)
ただし、上式(7)において、diおよびmiは、それぞれクロック経路上に存在するi番目の配線の遅延時間および配線マージンであり、記号Σは1本のクロック経路について総和を求めることを表す。配線マージンmiは、配線の種類に応じて、例えば、1倍幅配線は0.8、2倍幅配線は0.4、3倍幅配線は0.1などのように決定される。
mg=Σ(di×mi) …(7)
ただし、上式(7)において、diおよびmiは、それぞれクロック経路上に存在するi番目の配線の遅延時間および配線マージンであり、記号Σは1本のクロック経路について総和を求めることを表す。配線マージンmiは、配線の種類に応じて、例えば、1倍幅配線は0.8、2倍幅配線は0.4、3倍幅配線は0.1などのように決定される。
次に、求めた部分マージンの和MGSを、クロック経路の差を吸収するための設計マージンとして、ステップS413で選択したフリップフロップのペア間のタイミング制約に設定して(ステップS414)、回路のタイミング調整を行う(ステップS405)。
第2の変形例に係る方法を、図22に示すクロック回路を含む半導体集積回路に適用する場合の詳細を説明する。図22は、図20に示したクロック回路を、各クロック経路上に存在する配線の遅延時間および配線の幅とともに示した図である。図22において、配線に付された記号d**(*は1文字の数字)は各配線の遅延時間を、記号W1〜3は、それぞれ1〜3倍幅の配線を表す(ステップS412)。
ここで、配線マージンmiを、例示したように1倍幅配線は0.8、2倍幅配線は0.4、3倍幅の配線は0.1と決定すると、第1および第2のクロック経路の部分マージンmg1、mg2は、それぞれ、次式(8)および(9)に示すようになり、その和MGSは、次式(10)に示すようになる(ステップS413)。
mg1=(d11+d12)×0.1+ d13 ×0.4+(d14+d15)×0.8 …(8)
mg2=(d21+d22)×0.1+(d23+d24)×0.4+(d25+d26)×0.8 …(9)
MGS=(d11+d12+d21+d22)×0.1+(d13+d23+d24)×0.4
+(d14+d15+d25+d26)×0.8 …(10)
したがって、第1および第2のフリップフロップ82、84にクロック信号およびデータ入力信号を供給する回路のタイミング調整は、上式(10)によって算出される値をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
mg1=(d11+d12)×0.1+ d13 ×0.4+(d14+d15)×0.8 …(8)
mg2=(d21+d22)×0.1+(d23+d24)×0.4+(d25+d26)×0.8 …(9)
MGS=(d11+d12+d21+d22)×0.1+(d13+d23+d24)×0.4
+(d14+d15+d25+d26)×0.8 …(10)
したがって、第1および第2のフリップフロップ82、84にクロック信号およびデータ入力信号を供給する回路のタイミング調整は、上式(10)によって算出される値をクロック経路の差を吸収するための設計マージンとして設定したタイミング制約に従って行われる。
上述した以外にも、クロック経路の特性として、クロック経路上に存在する配線のピッチやシールドの有無などを考慮してもよい。また、求めたクロック経路の特性に基づき、いかなる方法で設計マージンを求めるかは任意である。これら各変形例に係る半導体集積回路の設計方法は、いずれも、図19に示す設計方法と同様の効果を奏する。
本発明の半導体集積回路およびその設計方法は、クロック信号の供給に関して従来よりも優れた特徴を有するので、主にロジック回路によって構成される半導体集積回路、ロジック回路とメモリ回路との両方を含む半導体集積回路など、各種の半導体集積回路およびその設計方法に利用することができる。
11、12、31、33、35、41、43、51、52、81、83…クロック回路
13、15、34、36、42、44、82、84…フリップフロップ
14…組合せ回路
16、17…論理セル
21、23、24…拡散領域
22…ポリシリコン領域
25…不要な拡散領域
30、70…半導体集積回路
32、53…回路ブロック
45、73…ANDゲート
54…トグル計数回路
55…デコーダ
56、58…トグル回数格納レジスタ
57、62…セレクタ
59…トグル調整回路
61…比較回路
71…水晶振動子
72…クロック生成回路
CK、CK1〜CK3、ck1〜ck3…クロック信号
CEN、CEN2、CEN3…クロックイネーブル信号
TC1〜TC3…トグル回数
DBUS…データバス
EN1〜EN3…イネーブル信号
CK0…調整クロック信号
MODE…モード選択信号
S1〜S3…選択制御信号
13、15、34、36、42、44、82、84…フリップフロップ
14…組合せ回路
16、17…論理セル
21、23、24…拡散領域
22…ポリシリコン領域
25…不要な拡散領域
30、70…半導体集積回路
32、53…回路ブロック
45、73…ANDゲート
54…トグル計数回路
55…デコーダ
56、58…トグル回数格納レジスタ
57、62…セレクタ
59…トグル調整回路
61…比較回路
71…水晶振動子
72…クロック生成回路
CK、CK1〜CK3、ck1〜ck3…クロック信号
CEN、CEN2、CEN3…クロックイネーブル信号
TC1〜TC3…トグル回数
DBUS…データバス
EN1〜EN3…イネーブル信号
CK0…調整クロック信号
MODE…モード選択信号
S1〜S3…選択制御信号
Claims (3)
- クロック信号に同期して動作する半導体集積回路の設計方法であって、
半導体集積回路に含まれる記憶セルに供給される各クロック信号について、予め定めた耐用時間内のトグル回数を求めるステップと、
前記トグル回数に基づき、各前記クロック信号について前記耐用時間経過時における遅延変動量を求めるステップと、
第1の記憶セルに供給されるクロック信号についての前記遅延変動量と、第2の記憶セルに供給されるクロック信号についての前記遅延変動量との差を求めるステップと、
前記求めた差を、経年劣化に伴う遅延時間変動を吸収するための設計マージンとして、前記第1および第2の記憶セル間のタイミング制約に設定するステップと、
前記設計マージンを設定した後のタイミング制約に従って、前記第1および第2の記憶セルに信号を供給する回路についてタイミング調整を行うステップとを備えた、半導体集積回路の設計方法。 - クロック信号に同期して動作する半導体集積回路であって、
複数の回路ブロックと、
与えられたクロック信号に基づき、各前記回路ブロックに供給されるクロック信号を生成するクロック回路と、
各前記回路ブロックに供給されるクロック信号のトグル回数を数えるトグル計数回路と、
前記トグル回数を出力するトグル回数出力回路とを備えた、半導体集積回路。 - 更に、前記トグル回数が相対的に少ないクロック信号が供給される前記回路ブロックに対して、前記与えられたクロック信号とは別の調整用クロック信号を供給するトグル調整回路を備えた、請求項2に記載の半導体集積回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006107774A JP2006313894A (ja) | 2006-04-10 | 2006-04-10 | 半導体集積回路およびその設計方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006107774A JP2006313894A (ja) | 2006-04-10 | 2006-04-10 | 半導体集積回路およびその設計方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003322171A Division JP2005093563A (ja) | 2003-09-12 | 2003-09-12 | 半導体集積回路およびその設計方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006313894A true JP2006313894A (ja) | 2006-11-16 |
Family
ID=37535237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006107774A Withdrawn JP2006313894A (ja) | 2006-04-10 | 2006-04-10 | 半導体集積回路およびその設計方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006313894A (ja) |
-
2006
- 2006-04-10 JP JP2006107774A patent/JP2006313894A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060253823A1 (en) | Semiconductor integrated circuit and method for designing same | |
US20170061057A1 (en) | Integrated circuit design method reducing clock power and integrated clock gater merged with flip-flops | |
JP4224094B2 (ja) | 半導体集積回路装置 | |
KR101010649B1 (ko) | 디지털 dll 회로 | |
US8255851B1 (en) | Method and system for timing design | |
US8086989B2 (en) | Structure for glitchless clock multiplexer optimized for synchronous and asynchronous clocks | |
CN112069763A (zh) | 修正电路的方法 | |
JP2006146601A (ja) | 半導体集積回路のレイアウト設計方法 | |
US10802721B2 (en) | Memory devices configured to latch data for output in response to an edge of a clock signal generated in response to an edge of another clock signal | |
US10354029B2 (en) | Method for equipping registers of an integrated circuit to detect timing violations | |
US8453090B2 (en) | System and method for optimizing logic timing | |
JP3978222B2 (ja) | 半導体集積回路の設計方法 | |
JP2006313894A (ja) | 半導体集積回路およびその設計方法 | |
JP2006270109A (ja) | 半導体集積回路の設計方法 | |
JP4385234B2 (ja) | 半導体集積回路装置、同装置用クロックパルス最適化方法、及びそのプログラム | |
WO2012117530A1 (ja) | 信号遅延装置、信号遅延装置の制御方法 | |
JP5549474B2 (ja) | 集積回路 | |
JP5338919B2 (ja) | 集積回路の消費電力算出方法、消費電力算出プログラム及び消費電力算出装置 | |
US7480607B2 (en) | Circuit design verification | |
JP5471437B2 (ja) | 半導体集積回路装置およびキャッシュメモリ制御方法 | |
JP5533424B2 (ja) | 集積回路装置及び集積回路装置のスキュー調整方法 | |
US10747924B2 (en) | Method for manufacturing integrated circuit with aid of pattern based timing database indicating aging effect | |
Lu et al. | Register on MEsh (ROME): A novel approach for clock mesh network synthesis | |
JP2018055330A (ja) | 半導体装置 | |
JP2011134072A (ja) | 半導体集積回路の設計方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080807 |