(57)【特許請求の範囲】
【請求項１】
組合せ回路と、
クロックに応じて、前記組合せ回路が出力するデータを取り込んで保持する１個以上の記憶素子と、
前記クロックを供給するクロック信号線と、を備え、
少なくとも１個の前記記憶素子は、
前記記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも１個の可変遅延素子を、備え、
前記可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて前記可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子であり、
前記可変遅延素子は、
前記クロックを遅延させて第１遅延クロックを出力し、遅延時間が可変の第１遅延素子と、
前記第１遅延クロックをさらに遅延させて第２遅延クロックを出力し、遅延時間が可変の第２遅延素子と、
前記第１可変遅延素子の遅延時間の設定値を変化させるカウンタと、を備え、
前記タイミングエラー検出機能付き記憶素子は、
前記第１遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第１記憶素子と、
前記第２遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第２記憶素子と、
前記第１記憶素子の保持したデータと前記第２記憶素子の保持したデータを比較する比較器と、をさらに備え、
前記可変遅延素子の前記カウンタは、前記比較器の比較結果に基づいて、カウント値を変化させることを特徴とする半導体装置。
【請求項２】
前記第１遅延素子は、後段の前記第１記憶素子に前記クロックを供給する前記クロック信号線から分岐した、対応する前記第１記憶素子にのみ前記クロックを供給する前記クロック信号線に設けられる請求項１記載の半導体装置。
【請求項３】
前記第１遅延素子は、後段の前記第１記憶素子に前記クロックを供給する前記クロック信号線に設けられる請求項１または２記載の半導体装置。
【請求項４】
前記第２記憶素子は、スキャンチェーンを形成し、スキャンチェーンにより各第２記憶素子の保持する値が設定され、
前記タイミングエラー検出機能付き記憶素子は、前記スキャンチェーンにより前記第２記憶素子を所定の状態に設定した後、当該半導体装置を動作させた状態で、前記第１記憶素子および前記第２記憶素子が同じデータを取り込むか否かを検出する請求項１から３のいずれか１項記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロックに同期して動作する半導体装置に関する。
【背景技術】
【０００２】
集積回路を搭載した現状の半導体装置、特に大規模な集積回路を搭載した半導体は、同期回路を元にして設計されている。同期回路設計では、演算処理を行うゲート回路などを含む組み合わせ回路の間に、フリップフロップ（ＦＦ）などの記憶素子を設け、集積回路全体へ供給されるクロック信号に同期して記憶素子を動作させ、組合せ回路間でのデータの受け渡しを制御する。以下、記憶素子としてＦＦを利用する場合を例として説明する。ＦＦなどの記憶素子には、セットアップ時間、ホールド時間と呼ばれる性能指標がある。
【０００３】
図１は、ＦＦのセットアップ時間およびホールド時間を説明する図である。セットアップ時間は、クロックＣＬＫの変化エッジ（ここでは立上りエッジ）の前の所定時間であり、セットアップ時間までには、データがあらかじめ確定していなければならない。ホールド時間は、クロックＣＬＫの変化エッジ（ここでは立上りエッジ）の後の所定時間であり、ＣＬＫの変化後も、ホールド時間の間、データが同じ値を保持しなければならない。図１の中央に示すように、セットアップ時間中に入力データが変化した場合、また図１の右側に示すように、ホールド時間内に入力データが変化した場合、ＦＦがどのようなデータを取り込んで保持するか保証されない。言い換えれば、ＦＦの動作は保証されない。セットアップ時間およびホールド時間を満たさないことによるＦＦの誤動作を、タイミングエラーと呼ぶ。
【０００４】
同期回路設計では、各ＦＦ間の処理を同じ時間になるように設計することで、回路を間断なく動作させて処理能力を向上させることが、高速動作を実現する上で重要である。しかし、各回路の処理時間は、設計時の誤差や製造時のばらつきによって厳密に同じにすることはできない。そこで、これらの時間差は設計時に、タイミングマージンとして考慮して設計する。
【０００５】
図２は、回路設計において考慮するタイミングマージンを説明する図であり、（Ａ）がセットアップ時間を、（Ｂ）がホールド時間を説明する。
【０００６】
第１の条件は、図２の（Ａ）に示すように、組み合わせ回路の遅延時間とＦＦのセットアップ時間とセットアップマージンの和が、１クロックサイクル以内であることである。第２の条件は、図２の（Ｂ）に示すように、ＦＦのホールと時間とホールドマージンの和が、組み合わせ回路の遅延時間以内であることである。両方の条件が、回路の全てのパスで成立することが必要であり、設計時に組み合わせ回路の遅延時間をこれらの条件を満たすように調整する。
【０００７】
近年、微細化により、トランジスタばらつきの影響が大きくなっている。また、回路動作を低電圧化すると、ばらつきの影響はさらに大きくなる。トランジスタばらつきは、回路の遅延時間に影響を与えるため、ばらつきが大きいと、タイミング設計で大きなマージンが必要となる。必要なマージンが大きくなると、回路動作で許容される時間が減少するため、必要なマージンが大きくなりすぎると、回路動作に必要な時間が確保できず、所望の設計が行えない。
【０００８】
たとえば、ディープサブミクロンの半導体プロセスでは、標準電圧および室温などの標準条件では設計できたチップでも、トランジスタばらつきにより、同一チップ内で同一回路にも関わらず遅延ばらつきが５０％程度異なることが起こり得る。このばらつきは低電圧になるとより顕著になり、０．５Ｖの電源電圧では、速い回路と遅い回路で遅延時間が数倍違うことが起こる。これを設計マージンで解決しようとすると、回路の動作周期の半分以上にもわたる大きなマージンが必要になり、低速の動作速度（１クロックサイクルが長い）でしか動作できないことになり、所望の動作速度を実現できない。
【０００９】
２組の動作タイミングを変えたＦＦと、排他的論理和（ＸＯＲ）回路を用いて、同期式集積回路の動作タイミングエラーを取得し、さらに取得したエラーを用いて電源電圧または基板電位を制御することにより、タイミングエラーを補償する技術が提案されている。
【００１０】
しかし、電源電圧制御によりタイミングエラーの問題を解決することは可能であるが、電圧制御可能な電源回路を新たに設計する、もしくは電源電圧を切り替える電源スイッチの設計と、効果的な電源分配の仕組み、電源領域の切り分けのなどの検討が必要である。これは、これまでの設計手法に比べて、大幅な設計工数の増加を招く。また、細かい粒度での電源変更は困難のため、タイミングエラーが発生したパスのみへの補償は行えない。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特表２００９−５１２２００号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
実施形態によれば、タイミングエラーに起因する動作不良を低減した半導体装置が提供される。
【課題を解決するための手段】
【００１３】
発明の一観点によれば、組合せ回路と、クロックに応じて、組合せ回路が出力するデータを取り込んで保持する少なくとも１個の記憶素子と、クロックを供給するクロック信号線と、を備え、少なくとも１個の記憶素子は、記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも１個の可変遅延素子を、備え、可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子である半導体装置が提供される。
【発明の効果】
【００１４】
上記の観点によれば、半導体装置におけるタイミングエラーに起因する動作不良を低減でき、半導体装置の歩留まりを改善し、半導体装置の動作速度を向上することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、ＦＦのセットアップ時間およびホールド時間を説明する図である。
【図２】図２は、回路設計において考慮するタイミングマージンを説明する図であり、（Ａ）がセットアップ時間を、（Ｂ）がホールド時間を説明する。
【図３】図３は、第１実施形態の半導体装置の内部構成を説明する図である。
【図４】図４は、タイミングエラー検出機能付き記憶素子および遅延素子の回路構成を示す図である。
【図５】図５は、第１遅延素子の一例の回路図である。
【図６】図６は、第１遅延素子の別の例の回路図である。
【図７】図７は、２ビット飽和カウンタの回路例を示す図である。
【図８】図８は、第２可変遅延素子の回路図を示す図である。
【図９】図９は、半導体素子における、電源電圧と、遅延時間、および遅延時間のばらつき（σ）と遅延時間（μ）の比（σ／μ）の関係を示す図である。
【図１０】図１０は、第１実施形態の半導体装置の図４に示したタイミングエラー検出機能付き記憶素子部分の動作を示すタイムチャートである。
【図１１】図１１は、第１実施形態の半導体装置において、電源投入後や動作電圧変更後の第１可変遅延素子および第２可変遅延素子の遅延時間を設定するキャリブレーション動作を示すフローチャートである。
【図１２】図１２は、第２実施形態の半導体装置の全体構成を示す図である。
【図１３】図１３は、第２実施形態の半導体装置におけるキャリブレーション動作を示すフローチャートである。
【図１４】図１４は、第３実施形態の半導体装置の内部構成を説明する図である。
【図１５】図１５は、タイミングエラー検出機能付き記憶素子の回路図である。
【図１６】図１６は、第３実施形態において、各タイミングエラー検出機能付き記憶素子の第１可変遅延素子を直列に接続して、各第１可変遅延素子で遅延した遅延クロックを各タイミングエラー検出機能付き記憶素子に供給する様子を示す図である。
【図１７】図１７は、第４実施形態の半導体装置の１６ビットのデータパス部分の回路構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について、図面を参照して具体的に説明する。
【００１７】
図３は、第１実施形態の半導体装置の内部構成を説明する図である。
【００１８】
第１実施形態の半導体装置は、クロックＣＬＫに同期して動作する同期式集積回路を搭載している。同期式集積回路は、演算処理を行うゲート回路などを含む組み合わせ回路１Ａ、１Ｂ、１Ｃなどと、組み合わせ回路１Ａ、１Ｂ、１Ｃなどの間に設けられたフリップフロップ（ＦＦ）２Ａ、２Ｂ、２Ｃ、２Ｄなどの記憶素子と、を有する。ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄは、クロック信号線３を介して供給されるクロックＣＬＫに同期して動作し、データ線６を介して供給される組み合わせ回路間のデータの受け渡しを制御する。
【００１９】
半導体装置の動作を試験するために、スキャンチェーンを形成することが行われる。スキャンチェーンは、半導体装置内に設けられるＦＦとして、スキャン入力およびスキャン出力が可能なフリップフロップ（ＦＦ）を使用し、これらのＦＦをスキャンラインで接続することにより形成する。スキャン入力動作時には、スキャン入力データＳＣＩを、クロックに同期して各ＦＦで順にシフトさせて、各ＦＦを所定の値を保持した状態に設定する。設定終了後、通常の動作を所定クロック数文行った後、スキャン出力動作に切り換えて、各ＦＦの保持している値を順に読み出して、所定の値の列に一致するかを判定することにより、半導体装置が正常に動作するかを確認する。スキャンチェーンについては広く知られているので、これ以上の説明は省略する。
【００２０】
第１実施形態の半導体装置でも、ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄでスキャンチェーンを形成し、ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄを所定の値を保持した状態に設定できるようにする。具体的には、ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄの順にスキャンライン４で接続し、スキャンモードに設定し、クロックＣＬＫに同期してスキャン入力データＳＣＩをＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄの順にシフトして、ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄに所定の値を設定する。
【００２１】
第１実施形態の半導体装置では、ＦＦ２Ａ、２Ｂ、２Ｃ、２Ｄのうちの任意のＦＦ（ここではＦＦ２Ｃおよび２Ｄ）を、後述するタイミングエラー検出回路を有するタイミングエラー検出機能付き記憶素子としている。どのＦＦをタイミングエラー検出機能付き記憶素子とするかは、前段の組合せ回路からの出力の遅延時間を考慮して、設計時に決定される。具体的には、遅延時間が大きな組合せ回路の後段に設けるＦＦを、タイミングエラー検出機能付き記憶素子とする。図３の例では、組合せ回路１Ａおよび１Ｃからの出力の遅延時間は小さく、組合せ回路１Ｂからの出力の遅延時間は大きいので、組合せ回路１Ｂの後段のＦＦ２Ｃをタイミングエラー検出機能付き記憶素子とする。さらに、後述するように、組合せ回路１Ｃからの出力の遅延時間も大きくなることが予測されるので、組合せ回路１Ｃの後段のＦＦ２Ｄをタイミングエラー検出機能付き記憶素子とする。また、タイミングエラー検出機能付き記憶素子２Ｃおよび２Ｄには、後述する第２遅延素子の遅延時間を設定するデータＤＳがＤＳ信号線５を介して供給される。
【００２２】
第１実施形態の半導体装置では、さらに、タイミングエラー検出機能付き記憶素子２Ｃおよび２ＤにクロックＣＬＫを供給するクロック信号線３に、遅延素子１１Ａおよび１１Ｂが設けられている。図示のように、遅延素子１１Ａおよび１１Ｂは、メインのクロック信号線３から分岐したタイミングエラー検出機能付き記憶素子２Ｃおよび２ＤのみにクロックＣＬＫを供給するクロック信号線に設ける。なお、図示していないが、通常のＦＦ２Ａおよび２ＢにクロックＣＬＫを供給するクロック信号線に、遅延素子１１Ａおよび１１Ｂの最小遅延時間に等しい遅延時間を生じるバッファを設けることが望ましい。なお、タイミングエラー検出機能付き記憶素子２Ｃまたは２Ｄと遅延素子１１Ａまたは１１Ｂの組合せを、タイミングエラー検出機能付き記憶素子として説明する場合がある。
【００２３】
図４は、上記のタイミングエラー検出機能付き記憶素子の回路構成を示す図であり、第１遅延素子１２および第２遅延素子１３が遅延素子１１Ａまたは１１Ｂに対応する。
【００２４】
上記のように、遅延素子１１Ａまたは１１Ｂは、第１遅延素子１２と第２遅延素子１３の組で実現される。第１遅延素子１２は、クロック信号線３を介して供給されるクロックＣＬＫを遅延して第１遅延クロックを出力する。第１遅延素子１２の遅延時間は、可変で、ＡＮＤゲート２５から供給されるエラー信号ＥＲＲＯＲが「高（Ｈ）」の時に増加し、リセット信号ＲＥＳＥＴで初期値に戻る。クロック信号線３を介して供給されるクロックＣＬＫは、次段のＦＦまたはタイミングエラー検出機能付き記憶素子にクロックＣＬＫ−ＮＥＸＴとして供給される。第２遅延素子１３は、第１遅延素子１２の出力する第１遅延クロックをさらに遅延して第２遅延クロックを出力する。第２遅延素子１３の遅延時間は、可変で、ＤＳ信号線５を介して供給されるデータＤＳにより設定される。
【００２５】
タイミングエラー検出機能付き記憶そしは、第１記憶素子（ＦＦ）２２と、第２記憶素子（ＦＦ）２３と、ＥＸＯＲゲート２４と、ＡＮＤゲート２５と、をさらに有する。第１ＦＦ２２は、第１遅延クロックに応じて、データ信号線６を介して供給される前段の組合せ回路の出力するデータＤＡＴＡを取り込んで（ラッチして）保持する。第２ＦＦ２３は、第２遅延クロックに応じて、データ信号線６を介して供給される前段の組合せ回路の出力するデータＤＡＴＡをラッチして保持する。第２ＦＦ２３の出力が、後段の組合せ回路の入力になる。したがって、第１ＦＦ２２と第２ＦＦ２３は、第２遅延素子１３の遅延時間分だけ異なるタイミングで、ラッチ動作を行う。ＥＸＯＲゲート２４は、第１ＦＦ２２と第２ＦＦ２３の出力が一致するかを判定し、一致する場合には「低（Ｌ）」を、不一致の場合には「高（Ｈ）」を出力する。ＡＮＤゲート２５は、ＥＸＯＲゲート２４の出力とクロックＣＬＫを反転した信号の論理和を演算してエラー信号ＥＲＲＯＲを発生する。したがって、エラー信号ＥＲＲＯＲは、ＥＸＯＲゲート２４の出力がＨ、すなわち第１ＦＦ２２と第２ＦＦ２３の出力が不一致の時に、ＣＬＫに応じて発生され、それ以外の時には、Ｌを維持する。
【００２６】
図５は、第１遅延素子１２の一例の回路図である。
【００２７】
図５に示すように、第１遅延素子１２は、２ビット飽和カウンタ３０と、バッファ３１と、セレクタ３２と、直列に接続されたバッファ３３およびバッファ３４と、セレクタ３５と、を有する。２ビット飽和カウンタ３０は、リセット信号ＲＥＳＥＴがインアクティブ時にカウント値がクリアされ、ＲＥＳＥＴがインアクティブの間、エラー信号ＥＲＲＯＲの変化をカウントしてカウント値が増加する。ここでは、２ビット飽和カウンタ３０であるから、２ビットの値ＢＩＴ０およびＢＩＴ１を出力し、カウント値は０、１、２、３のいずれかである。セレクタ３２は、ＢＩＴ０が“０”の時には直接入力されるＣＬＫを、“１”の時にはバッファ３１の出力を選択する。セレクタ３５は、ＢＩＴ１が“０”の時にはセレクタ３２の出力を、“１”の時にはバッファ３４の出力を選択する。カウント値は３で飽和に、その状態を維持する。
【００２８】
したがって、２ビット飽和カウンタ３０のカウント値が“０”の時には、クロックＣＬＫは、セレクタ３２および３５を介してＦＦ２２に供給される。この時の遅延時間は、セレクタ３２とセレクタ３５の遅延時間の和であり、第１遅延素子１２の最小遅延時間となる。  カウント値が“１”の時には、クロックＣＬＫは、バッファ３１、セレクタ３２および３５を介してＦＦ２２に供給され、その遅延時間は、最小遅延時間とバッファ３１の遅延時間の和である。カウント値が“２”の時には、クロックＣＬＫは、セレクタ３２、バッファ３３と３４およびセレクタ３５を介してＦＦ２２に供給され、その遅延時間は、最小遅延時間とバッファ３３およびバッファ３４の遅延時間の和である。カウント値が“３”の時には、クロックＣＬＫは、バッファ３１、セレクタ３２、バッファ３３と３４およびセレクタ３５を介してＦＦ２２に供給され、その遅延時間は、最小遅延時間とバッファ３１、バッファ３３およびバッファ３４の遅延時間の和である。以上のようにして、ＦＦ２２に供給されるクロックの遅延時間を変化させることができる。
【００２９】
図６は、第１遅延素子１２の別の例の回路図である。この第１遅延素子１２は、２ビット飽和カウンタ３０と、インバータ４１および４２と、３個のゲーテッドインバータ４４と、バッファ４３と、を組み合わせた可変遅延素子である。２ビット飽和カウンタ３０は、図５の回路と同じ動作を行う。３個のゲーテッドインバータ４４の出力電流の合計は、インバータ４１の出力電流よりも小さくなるように設計されている。２ビット飽和カウンタ３０のカウント値によって、インバータ４１の出力を打ち消す電流を出力するゲーテッドインバータ４４の動作数を０個から３個の間で切り替える。ゲーテッドインバータ４４の出力と、インバータ４１の値は、ノードＡで打ち消しあう。インバータ４１の出力電流は、ゲーテッドインバータ４４ の出力電流の合計よりも大きいため、最終的にはノードＡの値はインバータ４１で定まる値となるが、ノードＡの信号波形の傾きはなだらかになる。動作するゲーテッドインバータ４４の個数が多くなると、信号波形の傾きは緩くなる。インバータ４２の論理閾値は一定のため、ノードＡでの信号波形の傾きが緩いほど、インバータ４１の入力からインバータ４２の出力までの遅延時間は長くなる。ゲーテッドインバータ４４の動作数を、２ビット飽和カウンタ３０のカウント値で切り替えることによって、遅延時間を４段階に制御できる。
【００３０】
図７は、図５および図６に示した２ビット飽和カウンタ３０の回路例を示す図である。このような回路構成は広く知られているので、説明は省略するが、リセット信号ＲＥＳＥＴに応じてカウント値が０にリセットされ、エラー信号ＥＲＲＯＲはＨの時に、ＣＬＫに応じてカウント値が増加する。
【００３１】
図８は、第２可変遅延素子１３の回路図を示す図である。この回路は、図５に示した第１可変遅延素子１２と類似の回路構成を有し、２ビット飽和カウンタが設けられていないこと、および前段にバッファ３６が設けられていることが異なる。バッファ３６は、第２可変遅延素子１３の遅延時間の最小値を所定値以上に設定するために設けられる。セレクタ３２および３５における選択は、データＤＳのビットであるＶＤＤＣＯＤＥ０およびＶＤＤＣＯＤＥ１の値に応じて決定される。
【００３２】
第２可変遅延素子１３の遅延時間は、半導体装置の集積回路の安定マージンを見越した時間に設定する。遅延時間が多いと安全マージンが大きくなり、エラーが発生しづらくなるが、その分動作周波数が落ちるため、回路の目的に応じて値を設定する。半導体素子を動作させる電源電圧を変化させることによって、第２可変遅延素子１３の遅延時間を変化させることができ、安全マージンと動作周波数のトレードオフを回避できる。例えば、動作周波数を高くする必要がある時には、電源電圧を高くして許容できる安全マージンを小さくする。これについて、より詳しく説明する。
【００３３】
図９は、半導体素子における、電源電圧と、遅延時間、および遅延時間のばらつき（σ）と遅延時間（μ）の比（σ／μ）の関係を示す図である。半導体素子では、動作電源電圧を下げると、遅延時間は指数関数的に増加する。また、同時に遅延時間のランダムばらつきは、遅延時間よりも急激に増加し、σ／μ（遅延時間ばらつき／遅延時間）は、電源電圧が低いほど大きい。つまり、電源電圧が低いほど回路の安定マージン、すなわち第２可変遅延素子１３の遅延時間を大きくする必要がある。
【００３４】
図８に示した第２可変遅延素子１３の回路では、データＤＳのビットであるＶＤＤＣＯＤＥ０およびＶＤＤＣＯＤＥ１の値に応じて、遅延量が設定される。そこで、第１実施形態の半導体装置の動作電源電圧に対応して、表１に示すように、ＶＤＤＣＯＤＥ０およびＶＤＤＣＯＤＥ１の値を設定する。具体的には、電源電圧が０．８０−１．２０Ｖの比較的高い範囲の時には、ＶＤＤＣＯＤＥ０＝０およびＶＤＤＣＯＤＥ１＝０にする。これにより、第２可変遅延素子１３の遅延時間は最小になる。同様に、電源電圧が０．６５−０．８０Ｖの範囲の時には、ＶＤＤＣＯＤＥ０＝１およびＶＤＤＣＯＤＥ１＝０にして、遅延時間を少し増加させる。電源電圧が０．５０−０．６５Ｖの範囲の時には、ＶＤＤＣＯＤＥ０＝１およびＶＤＤＣＯＤＥ１＝０にして、遅延時間をさらに増加させ、電源電圧が０．３５−０．５０Ｖの範囲の時には、ＶＤＤＣＯＤＥ０＝１およびＶＤＤＣＯＤＥ１＝１にして、遅延時間を最大にする。
【００３５】
【表１】
0005582064.tif 000002
【００３６】
また、あらかじめ回路の動作条件が定まっている場合は、第２可変遅延素子１３の遅延時間を回路設計時に固定し、単純な遅延素子を用いてもよい。
【００３７】
なお、可変遅延素子は、遅延時間が上記のように設定できるものであれば、どのようなものでも使用可能であり、図示した回路を用いる必要は無いが、回路規模の小さなものが望ましい。
【００３８】
図１０は、第１実施形態の半導体装置の図４に示したタイミングエラー検出機能付き記憶素子の動作を示すタイムチャートである。ＣＬＫはクロック信号線３から供給されるクロックを、ＤＡＴＡは前段の組合せ回路から供給されるデータを、ＣＬＫＡは第１遅延クロックを、ＱＡは第１ＦＦ２２の出力を、ＣＬＫＢと第２遅延クロックを、ＱＢは第２ＦＦ２３の出力を、それぞれ示す。
【００３９】
前段の組合せ回路から出力されるＤＡＴＡが、ＣＬＫより十分早く第１ＦＦ２２および第２ＦＦ２３に到着すれば、データの保持が問題なく可能である。しかし、前段の組合せ回路の出力の遅延時間が、回路ばらつき等の影響により長くなる場合がある。この場合、第２ＦＦ２３は第２可変遅延素子１３の遅延時間分、データの取り込みタイミングが遅れるので、第１ＦＦ２２には期待していない値、第２ＦＦ２３には期待している値が保持されることになる。第１ＦＦ２２と第２ＦＦ２３記憶素子の保持している値の違いを比較器２４で検出し、ＡＮＤゲート２５がＥＲＲＯＲ信号を発生する。このＥＲＲＯＲ信号が発生した場合、直ちに第１可変遅延素子１２の遅延時間を増加させ、第１遅延クロックが遅延する。それにより、第１ＦＦ２２と第２ＦＦ２３の両方のデータ取り込みタイミングが遅れ、両者とも前段の論理回路の遅延時間増加に影響を受けることが無く、正しい値を保持することが可能である。
【００４０】
図１１は、第１実施形態の半導体装置において、電源投入後や動作電圧変更後の第１可変遅延素子１２および第２可変遅延素子１３の遅延時間を設定するキャリブレーション動作を示すフローチャートである。キャリブレーション動作は、第１実施形態の半導体装置内に含まれるタイミングエラー検出機能付き記憶素子および遅延素子に対して全て同時に行う。
【００４１】
ステップＳ１では、電源投入や動作電圧の変更を行う。
【００４２】
ステップＳ２では、電源電圧に応じて、第２可変遅延素子１３の遅延時間を、表１に示したように設定する。
【００４３】
ステップＳ３では、スキャンモードに設定し、スキャンチェーンを用いて、組み合わせ論理回路のうちクリティカルパスとなり得るパスの活性率が高くなるデータパターンを入力し、各段のＦＦおよびタイミングエラー検出機能付き記憶素子を、データに対応した状態に設定する。
【００４４】
ステップＳ４では、通常動作モードに変更した後、全回路部分にクロックＣＬＫを供給して、少なくともＦＦおよびタイミングエラー検出機能付き記憶素子の段数に第１可変遅延素子の調整段数を乗じた数のクロック数以上、動作させる。これに応じて、各タイミングエラー検出機能付き記憶素子では、タイミングエラーチェックとその修正を行う。なお、上記のクロック数以上動作させた場合でも、第１可変遅延素子の遅延時間が正常に動作する範囲に入れば、それ以後ＥＲＲＯＲ信号は発生しないので、特に問題は発生しない。
【００４５】
図３に示すように、例えば、タイミングエラー検出機能付き記憶素子２Ｃにより可変遅延素子１１Ａ（第１可変遅延素子１２と第２可変遅延素子１３の組）の値遅延時間を変化させてタイミングエラーを修正した場合を考える。この場合、タイミングエラー検出機能付き記憶素子２Ｃ内の第２ＦＦ２３の動作タイミングが遅くなるため、次段の組合せ回路１Ｃに入力する信号にも遅延が発生する。これにより、修正前はタイミングエラーが起こらなかった次段の組合せ回路１Ｃに、タイミングエラーが発生することがある。
【００４６】
そこで、第１実施形態の半導体装置では、図３に示すように、出力の遅延時間が小さい（普通の）組合せ回路１Ｃの後段のＦＦも、可変遅延素子１１Ｂを含むタイミングエラー検出機能付き記憶素子２Ｄとし、ラッチタイミングを調整できるようにする。上記のラッチタイミングの修正のためのクロック数以上動作させれば、直列に配置されたタイミングエラー検出機能付き記憶素子のタイミングエラーの補正が全段の回路に渡って行われる。
【００４７】
もちろん、組合せ回路１Ｃの出力の遅れが十分に小さく、たとえタイミングエラー検出機能付き記憶素子２Ｄのラッチタイミングを修正しても、組合せ回路１Ｃの後段のＦＦでのラッチが正常に行えるのであれば、タイミングエラー検出機能付き記憶素子２Ｄを設ける必要はない。
【００４８】
図１２は、第２実施形態の半導体装置５０の全体構成を示す図である。
【００４９】
第２実施形態の半導体装置５０は、データ入力端子５１と、データ出力端子５２と、エラー信号出力端子５３と、を有する。他に、クロック入力端子、電源端子などを有するが、図示は省略している。さらに、第２実施形態の半導体装置５０は、第１実施形態と同様に、同期式集積回路を搭載しており、組み合わせ回路６２Ｘ、６２Ｙ、６２Ｚなどと、ＦＦなどの記憶素子６３Ｐ−６３Ｗと、出力用記憶素子６４Ｌ−６４Ｎと、出力用バッファ６５Ｌ−６５Ｎと、３入力ＯＲゲート６６と、を有する。組み合わせ回路６２Ｘ、６２Ｙ、６２Ｚなどと、記憶素子６３Ｐ−６３Ｗとが含まれる範囲６１が、タイミングエラー補正範囲である。記憶素子６３Ｐ−６３Ｔは、必要に応じて図４に示したタイミングエラー検出機能付き記憶素子とする。記憶素子６３Ｕ−６３Ｗは、すべてタイミングエラー検出機能付き記憶素子であり、それぞれが発生したエラー信号ＥＲＲＯＲが出力可能であり、出力されたエラー信号ＥＲＲＯＲが３入力ＯＲゲート６６に入力される。記憶素子６３Ｕ−６３Ｗは、図４に示した回路に、エラー信号ＥＲＲＯＲの出力端子を設けることにより、実現される。
【００５０】
記憶素子６３Ｐ−６３Ｒは、データ入力端子５１からデータが供給され、出力は組合せ回路６２Ｘおよび６２Ｙに供給される。記憶素子６３Ｓおよび６３Ｔは、組合せ回路６２Ｘおよび６２Ｙからデータが供給され、出力は組合せ回路６２Ｚに供給される。記憶素子６３Ｕ−６３Ｗは、組合せ回路６２Ｚからデータが供給され、出力は出力用記憶素子６４Ｌ−６４Ｎに供給される。
【００５１】
第２実施形態では、タイミングエラー補正範囲内のタイミングエラー検出機能付き記憶素子について、第１実施形態と同様に、タイミングエラーの調整が行われる。そして、３入力ＯＲゲート６６は、タイミングエラー調整時にクロックＣＬＫごとに記憶素子６３Ｕ−６３Ｗのいずれかでエラー信号ＥＲＲＯＲが発生したことを示す信号をエラー信号出力端子５３から出力する。
【００５２】
タイミングエラー調整を行った場合、内部のタイミングエラーの状況によっては、補正結果が最終段に蓄積し、最終段のタイミングを補正しきれない事が起こり得る。また、出力用記憶素子６４Ｌ−６４Ｎの動作タイミングが大きく変化すると、第２実施形態の半導体装置と周辺回路の接続が困難となる。これらを回避するため、第２実施形態の半導体装置では、エラー信号出力端子５３から出力されるエラー信号ＥＲＲＯＲを監視して、記憶素子６３Ｕ−６３Ｗのすべてがエラー信号を発生しない状態になったかを確認する。もし、記憶素子６３Ｕ−６３Ｗのすべてがエラー信号を発生しない状態になっていない場合には、半導体装置５０に電源を供給する図示していない電源回路の電圧を制御する。前述のように、電源回路の電圧を高くすれば、トランジスタの動作速度のばらつきが低減されるので、タイミングエラー検出機能付き記憶素子および可変遅延素子により補正が可能になる。
【００５３】
図１３は、第２実施形態の半導体装置におけるキャリブレーション動作を示すフローチャートである。Ｓ１１からＳ１３は、図１１に示した第１実施形態のキャリブレーション動作と同じ動作である。第２実施形態のキャリブレーション動作は、Ｓ１４の後のステップＳ１５で、最終段の記憶素子６３Ｕ−６３Ｗのすべてがエラー信号を発生しない状態になったかを確認する。エラー信号を発生しない状態になっていればキャリブレーションを終了し、エラー信号を発生する状態であればステップＳ１６に進む。Ｓ１６では、動作電源電圧を変更して、すなわち動作電源電圧を１段階増加させてステップＳ１２に進み、記憶素子６３Ｕ−６３Ｗのすべてがエラー信号を発生しない状態になるまでＳ１２からＳ１６を繰り返す。
【００５４】
第１および第２実施形態の半導体装置は、タイミングエラーを検出する部分と、エラーを解消する部分を一つの回路として構成可能であり、この回路を既存のＦＦなどの記憶素子と置き換えることが可能である。
【００５５】
第１および第２実施形態の半導体装置のランダムばらつきの対策を行う場合、半導体装置の電源投入時、もしくは一定動作時間毎に半導体装置の動作を止め、あらかじめ定められたセットアップエラーを誘発しやすい信号パターンを、スキャンチェーンなどを用いて設定し、得られたエラー情報を使用する。これによって、製造時のランダムばらつきだけではなく、経年劣化によるばらつき増加の補償にも使用できる。
【００５６】
さらに、経年劣化を考慮しない場合は、出荷時検査にてセットアップエラーを誘発しやすいパターンをスキャンチェーンを用いて各ＦＦまたはタイミングエラー検出機能付き記憶素子に設定し、得られたエラー情報に応じて第１可変遅延素子１２の遅延時間を設定する様に内部に書き込むことも可能である。
【００５７】
また、設計時に動作解析等の結果により、あるパスではホールドエラーが起こりやすいと判明した場合にも、第１および第２実施形態の構成を適用可能である。この場合、第１可変遅延素子１２の遅延時間をあらかじめ長めに設定した状態で設計し、ＥＲＲＯＲ信号を遅延時間減少信号として使用する。ホールドエラーが発生した場合、第１記憶素子１２および第２記憶素子１３の動作タイミングが早くなり、ホールドエラーが解消される。
【００５８】
以上説明したように、第１および第２実施形態の半導体装置では、ＦＦなどの記憶素子に、データが必要なタイミングより後についてしまうセットアップエラーまたはデータが必要なタイミングより早く書き換わってしまうホールドエラーが起こり得る箇所でタイミングエラーが発生した場合、記憶素子に供給するクロックの遅延時間を長くまたは短くする。これにより、記憶素子の動作タイミングが遅くまたは早くなり、セットアップエラーまたはホールドエラーを解消することが可能となる。
【００５９】
図１４は、第３実施形態の半導体装置の内部構成を説明する図である。
【００６０】
第３実施形態の半導体装置は、第１実施形態と同様に、同期式集積回路を搭載しており、組み合わせ回路７１Ａ、７１Ｂなどと、タイミングエラー検出機能付き記憶素子７２Ａ−７２Ｃと、を有する。
【００６１】
図１５は、タイミングエラー検出機能付き記憶素子の回路図であり、タイミングエラー検出機能付き記憶素子７２Ａ−７２Ｃは、それぞれ図１５の回路構成を有する。図１５に示すように、タイミングエラー検出機能付き記憶素子は、図４に示した回路と類似の構成を有し、第１可変遅延素子７０が、次段のタイミングエラー検出機能付き記憶素子に接続されるクロック信号線に設けられていることが、図４の回路と異なり、他は同じである。タイミングエラー検出機能付き記憶素子７２Ａには、前段または入力端子からデータＤＡＴＡが入力され、タイミングエラー検出機能付き記憶素子７２Ａの第２ＦＦ２３の出力は組合せ回路７１Ａに出力される。タイミングエラー検出機能付き記憶素子７２Ｂには、組合せ回路７１Ａの出力するデータが入力され、タイミングエラー検出機能付き記憶素子７２Ｂの第２ＦＦ２３の出力は組合せ回路７１Ｂに出力される。タイミングエラー検出機能付き記憶素子７２Ｃには、組合せ回路７１Ｂの出力するデータが入力され、タイミングエラー検出機能付き記憶素子７２Ｃの第２ＦＦ２３の出力は次段の組合せ回路に出力される。
【００６２】
また、タイミングエラー検出機能付き記憶素子７２Ａの第１可変遅延素子７０は、クロック信号線または前段のタイミングエラー検出機能付き記憶素子から入力されたクロックＣＬＫを遅延して第１遅延クロックを発生する。第１遅延クロックは、タイミングエラー検出機能付き記憶素子７２Ａの第１ＦＦ２２に供給されると共に、次段のタイミングエラー検出機能付き記憶素子７２Ｂに供給される。以下、同様に、各タイミングエラー検出機能付き記憶素子の第１可変遅延素子は直列に接続され、それぞれの出力は対応する第１ＦＦ２２に供給される。
【００６３】
図１６は、第３実施形態において、各タイミングエラー検出機能付き記憶素子の第１可変遅延素子を直列に接続して、各第１可変遅延素子で遅延した遅延クロックを各タイミングエラー検出機能付き記憶素子に供給する様子を示す。
【００６４】
図１６の（Ａ）に示すように、各タイミングエラー検出機能付き記憶素子の第１可変遅延素子は直列に接続されているので、あるタイミングエラー検出機能付き記憶素子の第１可変遅延素子の遅延時間（ここでは２段目のタイミングエラー検出機能付き記憶素子の第１可変遅延素子）を調整する場合を考える。このような場合、第１および第２実施形態では、２段目のタイミングエラー検出機能付き記憶素子の第１可変遅延素子の遅延時間を修正すると、それに応じて第２ＦＦ２３からのデータ出力も遅延するため、修正前はタイミングエラーが起こらなかった次段で、タイミングエラーが発生する場合があった。これに対して、第３実施形態では、図１６の（Ｂ）に示すように、調整した遅延時間が後段の第１可変遅延素子に伝播される。そのため、後段における第１および第２ＦＦによるラッチタイミングも遅延するため、タイミングエラーが発生しなかった後段のタイミングエラー検出機能付き記憶素子でタイミングエラーが発生することはない。
【００６５】
第３実施形態は、第１および第２実施形態と比べて、タイミングエラー修正の収束が早いという利点がある一方、直列に接続される第１可変遅延素子の遅延時間が累積するため、回路の接続に制限があるという欠点がある。設計時に回路動作順序があらかじめ決定している場合は第３実施形態の構成を用い、そうでない場合は第１実施形態の構成を使用することが望ましい。なお、第１実施形態の構成と、第３実施形態の構成は、同一半導体装置上に混在して作成することができる。
【００６６】
図１７は、第４実施形態の半導体装置の１６ビットのデータパス部分の回路構成を示す図である。この回路部分は、第１可変遅延素子１２と、第２可変遅延素子１３と、１６組の第１ＦＦ２３、第２ＦＦ２３およびＥＸＯＲゲート２４と、１６入力のＯＲゲート２６と、ＡＮＤゲート２５と、を有する。この回路部分は、１６のデータごとに図４の回路を設け、第１可変遅延素子１２、第２可変遅延素子１３およびＡＮＤゲート２５を統合し、さらに１６入力のＯＲゲート２６を設けたといえる。
【００６７】
第４実施形態のこの回路部分は、加算回路などのデータパスの出口などに設けられ、複数のビットのラッチタイミングが、１つの可変遅延クロックで共通に変更される。各組の第１ＦＦ２３、第２ＦＦ２３およびＥＸＯＲゲート２４で、各ビットのタイミングエラーをそれぞれ検知し、ＯＲゲート２６で１６入力の論理和を演算することで、データパス内のいずれかのビットでエラーが発生したことを検知する。エラーがある場合は、第１可変遅延素子１２の遅延時間を増やすことで、データパス出口のＦＦの動作タイミングを全てずらしてタイミングエラーを補償する。第４実施形態のように、第１可変遅延素子１２、第２可変遅延素子１３およびＡＮＤゲート２５を統合することにより、これらの個数を低減でき、回路の面積効率を改善することが可能である。
【００６８】
以上説明したように、第１から第４実施形態によれば、半導体回路設計において、タイミングエラーに起因する動作不良を減少させることができ、それにより、歩留まり改善、動作速度改善が図れる。
【００６９】
半導体回路の微細化により、トランジスタの特性ばらつきは今後大きくなると予想されているため、第１から第４実施形態の構成は、その際の設計基準緩和に有効である。低電圧動作を目的とする場合においても、回路の遅延ばらつきは増加する傾向にあるため、第１から第４実施形態の構成が有効である。
【００７０】
第１から第４実施形態の構成によれば、トランジスタの特性のばらつきによるタイミングエラーを、設計時のマージンではなく、製造後の実際の性能に基づいて修正できる。これにより、余分な設計マージンがいらず、またマージン見積もりの手間がいらなくなる。
また、これまで提案されていた技術に比べ、ＦＦなどの記憶素子を、図４などに記載した記憶素子に置き換えるだけで実装可能なため、既存の半導体回路設計手順に合致し、短い設計期間で設計可能である。
【００７１】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【００７２】
以下、実施形態に関し、更に以下の付記を開示する。
（付記１）
組合せ回路と、
クロックに応じて、前記組合せ回路が出力するデータを取り込んで保持する１個以上の記憶素子と、
前記クロックを供給するクロック信号線と、を備え、
少なくとも１個の前記記憶素子は、
前記記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも１個の可変遅延素子を備え、
前記可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて前記可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子であることを特徴とする半導体装置。
（付記２）
前記可変遅延素子は、
前記クロックを遅延させて第１遅延クロックを出力し、遅延時間が可変の第１可変遅延素子と、
前記第１遅延クロックをさらに遅延させて第２遅延クロックを出力し、遅延時間が可変の第２遅延素子と、
前記第１可変遅延素子の遅延時間の設定値を変化させるカウンタと、を備え、
前記タイミングエラー検出機能付き記憶素子は、
前記第１遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第１記憶素子と、
前記第２遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第２記憶素子と、
前記第１記憶素子の保持したデータと前記第２記憶素子の保持したデータを比較する比較器と、をさらに備え、
前記可変遅延素子の前記カウンタは、前記比較器の比較結果に基づいて、カウント値を変化させる付記１記載の半導体装置。
（付記３）
前記第２遅延素子の遅延時間は、外部から設定可能である付記２記載の半導体装置。
（付記４）
前記第２遅延素子の遅延時間は、当該半導体装置の動作電圧に応じて設定される付記３記載の半導体装置。
（付記５）
前記第１遅延素子は、後段の前記第１記憶素子に前記クロックを供給する前記クロック信号線から分岐した、対応する前記第１記憶素子にのみ前記クロックを供給する前記クロック信号線に設けられる付記２から４のいずれか記載の半導体装置。
（付記６）
前記第１遅延素子は、後段の前記第１記憶素子に前記クロックを供給する前記クロック信号線に設けられる付記２から４のいずれか記載の半導体装置。
（付記７）
前記第２記憶素子は、スキャンチェーンを形成し、スキャンチェーンにより各第２記憶素子の保持する値が設定され、
前記タイミングエラー検出機能付き記憶素子は、前記スキャンチェーンにより前記第２記憶素子を所定の状態に設定した後、当該半導体装置を動作させた状態で、前記第１記憶素子および前記第２記憶素子が同じデータを取り込むか否かを検出する付記２から６のいずれか記載の半導体装置。
【符号の説明】
【００７３】
１Ａ−１Ｃ    組合せ回路
２Ａ，２Ｂ    記憶素子
２Ｃ，２Ｄ    タイミングエラー検出機能付き記憶素子
１１Ａ，１１Ｂ    可変遅延素子
１２    第１可変遅延素子
１３    第２可変遅延素子
２２    第１記憶素子（ＦＦ）
２３    第２記憶素子（ＦＦ）
２４    ＥＸＯＲゲート
２５    ＡＮＤゲート
【図１】
0005582064.tif 000003
【図２】
0005582064.tif 000004
【図３】
0005582064.tif 000005
【図４】
0005582064.tif 000006
【図５】
0005582064.tif 000007
【図６】
0005582064.tif 000008
【図７】
0005582064.tif 000009
【図８】
0005582064.tif 000010
【図９】
0005582064.tif 000011
【図１０】
0005582064.tif 000012
【図１１】
0005582064.tif 000013
【図１２】
0005582064.tif 000014
【図１３】
0005582064.tif 000015
【図１４】
0005582064.tif 000016
【図１５】
0005582064.tif 000017
【図１６】
0005582064.tif 000018
【図１７】
0005582064.tif 000019