組合せ回路と、クロックに応じて、前記組合せ回路が出力するデータを取り込んで保持する1個以上の記憶素子と、前記クロックを供給するクロック信号線と、を備え、少なくとも1個の前記記憶素子は、前記記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも1個の可変遅延素子を、備え、前記可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて前記可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子であることを特徴とする半導体装置。前記可変遅延素子は、前記クロックを遅延させて第1遅延クロックを出力し、遅延時間が可変の第1可変遅延素子と、前記第1遅延クロックをさらに遅延させて第2遅延クロックを出力し、遅延時間が可変の第2遅延素子と、前記第1可変遅延素子の遅延時間の設定値を変化させるカウンタと、を備え、前記タイミングエラー検出機能付き記憶素子は、前記第1遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第1記憶素子と、前記第2遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第2記憶素子と、前記第1記憶素子の保持したデータと前記第2記憶素子の保持したデータを比較する比較器と、をさらに備え、前記可変遅延素子の前記カウンタは、前記比較器の比較結果に基づいて、カウント値を変化させる請求項1記載の半導体装置。前記第1遅延素子は、後段の前記第1記憶素子に前記クロックを供給する前記クロック信号線から分岐した、対応する前記第1記憶素子にのみ前記クロックを供給する前記クロック信号線に設けられる請求項2記載の半導体装置。前記第1遅延素子は、後段の前記第1記憶素子に前記クロックを供給する前記クロック信号線に設けられる請求項2または3記載の半導体装置。前記第2記憶素子は、スキャンチェーンを形成し、スキャンチェーンにより各第2記憶素子の保持する値が設定され、前記タイミングエラー検出機能付き記憶素子は、前記スキャンチェーンにより前記第2記憶素子を所定の状態に設定した後、当該半導体装置を動作させた状態で、前記第1記憶素子および前記第2記憶素子が同じデータを取り込むか否かを検出する請求項2から4のいずれか1項記載の半導体装置。実施形態によれば、タイミングエラーに起因する動作不良を低減した半導体装置が提供される。発明の一観点によれば、組合せ回路と、クロックに応じて、組合せ回路が出力するデータを取り込んで保持する少なくとも1個の記憶素子と、クロックを供給するクロック信号線と、を備え、少なくとも1個の記憶素子は、記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも1個の可変遅延素子を、備え、可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子である半導体装置が提供される。上記の観点によれば、半導体装置におけるタイミングエラーに起因する動作不良を低減でき、半導体装置の歩留まりを改善し、半導体装置の動作速度を向上することができる。以下、本発明の実施形態について、図面を参照して具体的に説明する。図3は、第1実施形態の半導体装置の内部構成を説明する図である。第1実施形態の半導体装置は、クロックCLKに同期して動作する同期式集積回路を搭載している。同期式集積回路は、演算処理を行うゲート回路などを含む組み合わせ回路1A、1B、1Cなどと、組み合わせ回路1A、1B、1Cなどの間に設けられたフリップフロップFF2A、2B、2C、2Dなどの記憶素子と、を有する。FF2A、2B、2C、2Dは、クロック信号線3を介して供給されるクロックCLKに同期して動作し、データ線6を介して供給される組み合わせ回路間のデータの受け渡しを制御する。半導体装置の動作を試験するために、スキャンチェーンを形成することが行われる。スキャンチェーンは、半導体装置内に設けられるFFとして、スキャン入力およびスキャン出力が可能なフリップフロップFFを使用し、これらのFFをスキャンラインで接続することにより形成する。スキャン入力動作時には、スキャン入力データSCIを、クロックに同期して各FFで順にシフトさせて、各FFを所定の値を保持した状態に設定する。設定終了後、通常の動作を所定クロック数文行った後、スキャン出力動作に切り換えて、各FFの保持している値を順に読み出して、所定の値の列に一致するかを判定することにより、半導体装置が正常に動作するかを確認する。スキャンチェーンについては広く知られているので、これ以上の説明は省略する。第1実施形態の半導体装置でも、FF2A、2B、2C、2Dでスキャンチェーンを形成し、FF2A、2B、2C、2Dを所定の値を保持した状態に設定できるようにする。具体的には、FF2A、2B、2C、2Dの順にスキャンライン4で接続し、スキャンモードに設定し、クロックCLKに同期してスキャン入力データSCIをFF2A、2B、2C、2Dの順にシフトして、FF2A、2B、2C、2Dに所定の値を設定する。第1実施形態の半導体装置では、FF2A、2B、2C、2Dのうちの任意のFFここではFF2Cおよび2Dを、後述するタイミングエラー検出回路を有するタイミングエラー検出機能付き記憶素子としている。どのFFをタイミングエラー検出機能付き記憶素子とするかは、前段の組合せ回路からの出力の遅延時間を考慮して、設計時に決定される。具体的には、遅延時間が大きな組合せ回路の後段に設けるFFを、タイミングエラー検出機能付き記憶素子とする。図3の例では、組合せ回路1Aおよび1Cからの出力の遅延時間は小さく、組合せ回路1Bからの出力の遅延時間は大きいので、組合せ回路1Bの後段のFF2Cをタイミングエラー検出機能付き記憶素子とする。さらに、後述するように、組合せ回路1Cからの出力の遅延時間も大きくなることが予測されるので、組合せ回路1Cの後段のFF2Dをタイミングエラー検出機能付き記憶素子とする。また、タイミングエラー検出機能付き記憶素子2Cおよび2Dには、後述する第2遅延素子の遅延時間を設定するデータDSがDS信号線5を介して供給される。第1実施形態の半導体装置では、さらに、タイミングエラー検出機能付き記憶素子2Cおよび2DにクロックCLKを供給するクロック信号線3に、遅延素子11Aおよび11Bが設けられている。図示のように、遅延素子11Aおよび11Bは、メインのクロック信号線3から分岐したタイミングエラー検出機能付き記憶素子2Cおよび2DのみにクロックCLKを供給するクロック信号線に設ける。なお、図示していないが、通常のFF2Aおよび2BにクロックCLKを供給するクロック信号線に、遅延素子11Aおよび11Bの最小遅延時間に等しい遅延時間を生じるバッファを設けることが望ましい。なお、タイミングエラー検出機能付き記憶素子2Cまたは2Dと遅延素子11Aまたは11Bの組合せを、タイミングエラー検出機能付き記憶素子として説明する場合がある。図4は、上記のタイミングエラー検出機能付き記憶素子の回路構成を示す図であり、第1遅延素子12および第2遅延素子13が遅延素子11Aまたは11Bに対応する。上記のように、遅延素子11Aまたは11Bは、第1遅延素子12と第2遅延素子13の組で実現される。第1遅延素子12は、クロック信号線3を介して供給されるクロックCLKを遅延して第1遅延クロックを出力する。第1遅延素子12の遅延時間は、可変で、ANDゲート25から供給されるエラー信号ERRORが高Hの時に増加し、リセット信号RESETで初期値に戻る。クロック信号線3を介して供給されるクロックCLKは、次段のFFまたはタイミングエラー検出機能付き記憶素子にクロックCLK-NEXTとして供給される。第2遅延素子13は、第1遅延素子12の出力する第1遅延クロックをさらに遅延して第2遅延クロックを出力する。第2遅延素子13の遅延時間は、可変で、DS信号線5を介して供給されるデータDSにより設定される。タイミングエラー検出機能付き記憶そしは、第1記憶素子FF22と、第2記憶素子FF23と、EXORゲート24と、ANDゲート25と、をさらに有する。第1FF22は、第1遅延クロックに応じて、データ信号線6を介して供給される前段の組合せ回路の出力するデータDATAを取り込んでラッチして保持する。第2FF23は、第2遅延クロックに応じて、データ信号線6を介して供給される前段の組合せ回路の出力するデータDATAをラッチして保持する。第2FF23の出力が、後段の組合せ回路の入力になる。したがって、第1FF22と第2FF23は、第2遅延素子13の遅延時間分だけ異なるタイミングで、ラッチ動作を行う。EXORゲート24は、第1FF22と第2FF23の出力が一致するかを判定し、一致する場合には低Lを、不一致の場合には高Hを出力する。ANDゲート25は、EXORゲート24の出力とクロックCLKを反転した信号の論理和を演算してエラー信号ERRORを発生する。したがって、エラー信号ERRORは、EXORゲート24の出力がH、すなわち第1FF22と第2FF23の出力が不一致の時に、CLKに応じて発生され、それ以外の時には、Lを維持する。図5は、第1遅延素子12の一例の回路図である。図5に示すように、第1遅延素子12は、2ビット飽和カウンタ30と、バッファ31と、セレクタ32と、直列に接続されたバッファ33およびバッファ34と、セレクタ35と、を有する。2ビット飽和カウンタ30は、リセット信号RESETがインアクティブ時にカウント値がクリアされ、RESETがインアクティブの間、エラー信号ERRORの変化をカウントしてカウント値が増加する。ここでは、2ビット飽和カウンタ30であるから、2ビットの値BIT0およびBIT1を出力し、カウント値は0、1、2、3のいずれかである。セレクタ32は、BIT0が0の時には直接入力されるCLKを、1の時にはバッファ31の出力を選択する。セレクタ35は、BIT1が0の時にはセレクタ32の出力を、1の時にはバッファ34の出力を選択する。カウント値は3で飽和に、その状態を維持する。したがって、2ビット飽和カウンタ30のカウント値が0の時には、クロックCLKは、セレクタ32および35を介してFF22に供給される。この時の遅延時間は、セレクタ32とセレクタ35の遅延時間の和であり、第1遅延素子12の最小遅延時間となる。カウント値が1の時には、クロックCLKは、バッファ31、セレクタ32および35を介してFF22に供給され、その遅延時間は、最小遅延時間とバッファ31の遅延時間の和である。カウント値が2の時には、クロックCLKは、セレクタ32、バッファ33と34およびセレクタ35を介してFF22に供給され、その遅延時間は、最小遅延時間とバッファ33およびバッファ34の遅延時間の和である。カウント値が3の時には、クロックCLKは、バッファ31、セレクタ32、バッファ33と34およびセレクタ35を介してFF22に供給され、その遅延時間は、最小遅延時間とバッファ31、バッファ33およびバッファ34の遅延時間の和である。以上のようにして、FF22に供給されるクロックの遅延時間を変化させることができる。図6は、第1遅延素子12の別の例の回路図である。この第1遅延素子12は、2ビット飽和カウンタ30と、インバータ41および42と、3個のゲーテッドインバータ44と、バッファ43と、を組み合わせた可変遅延素子である。2ビット飽和カウンタ30は、図5の回路と同じ動作を行う。3個のゲーテッドインバータ44の出力電流の合計は、インバータ41の出力電流よりも小さくなるように設計されている。2ビット飽和カウンタ30のカウント値によって、インバータ41の出力を打ち消す電流を出力するゲーテッドインバータ44の動作数を0個から3個の間で切り替える。ゲーテッドインバータ44の出力と、インバータ41の値は、ノードAで打ち消しあう。インバータ41の出力電流は、ゲーテッドインバータ44の出力電流の合計よりも大きいため、最終的にはノードAの値はインバータ41で定まる値となるが、ノードAの信号波形の傾きはなだらかになる。動作するゲーテッドインバータ44の個数が多くなると、信号波形の傾きは緩くなる。インバータ42の論理閾値は一定のため、ノードAでの信号波形の傾きが緩いほど、インバータ41の入力からインバータ42の出力までの遅延時間は長くなる。ゲーテッドインバータ44の動作数を、2ビット飽和カウンタ30のカウント値で切り替えることによって、遅延時間を4段階に制御できる。図7は、図5および図6に示した2ビット飽和カウンタ30の回路例を示す図である。このような回路構成は広く知られているので、説明は省略するが、リセット信号RESETに応じてカウント値が0にリセットされ、エラー信号ERRORはHの時に、CLKに応じてカウント値が増加する。図8は、第2可変遅延素子13の回路図を示す図である。この回路は、図5に示した第1可変遅延素子12と類似の回路構成を有し、2ビット飽和カウンタが設けられていないこと、および前段にバッファ36が設けられていることが異なる。バッファ36は、第2可変遅延素子13の遅延時間の最小値を所定値以上に設定するために設けられる。セレクタ32および35における選択は、データDSのビットであるVDDCODE0およびVDDCODE1の値に応じて決定される。第2可変遅延素子13の遅延時間は、半導体装置の集積回路の安定マージンを見越した時間に設定する。遅延時間が多いと安全マージンが大きくなり、エラーが発生しづらくなるが、その分動作周波数が落ちるため、回路の目的に応じて値を設定する。半導体素子を動作させる電源電圧を変化させることによって、第2可変遅延素子13の遅延時間を変化させることができ、安全マージンと動作周波数のトレードオフを回避できる。例えば、動作周波数を高くする必要がある時には、電源電圧を高くして許容できる安全マージンを小さくする。これについて、より詳しく説明する。図9は、半導体素子における、電源電圧と、遅延時間、および遅延時間のばらつきσと遅延時間μの比σ/μの関係を示す図である。半導体素子では、動作電源電圧を下げると、遅延時間は指数関数的に増加する。また、同時に遅延時間のランダムばらつきは、遅延時間よりも急激に増加し、σ/μ遅延時間ばらつき/遅延時間は、電源電圧が低いほど大きい。つまり、電源電圧が低いほど回路の安定マージン、すなわち第2可変遅延素子13の遅延時間を大きくする必要がある。図8に示した第2可変遅延素子13の回路では、データDSのビットであるVDDCODE0およびVDDCODE1の値に応じて、遅延量が設定される。そこで、第1実施形態の半導体装置の動作電源電圧に対応して、表1に示すように、VDDCODE0およびVDDCODE1の値を設定する。具体的には、電源電圧が0.80-1.20Vの比較的高い範囲の時には、VDDCODE0=0およびVDDCODE1=0にする。これにより、第2可変遅延素子13の遅延時間は最小になる。同様に、電源電圧が0.65-0.80Vの範囲の時には、VDDCODE0=1およびVDDCODE1=0にして、遅延時間を少し増加させる。電源電圧が0.50-0.65Vの範囲の時には、VDDCODE0=1およびVDDCODE1=0にして、遅延時間をさらに増加させ、電源電圧が0.35-0.50Vの範囲の時には、VDDCODE0=1およびVDDCODE1=1にして、遅延時間を最大にする。また、あらかじめ回路の動作条件が定まっている場合は、第2可変遅延素子13の遅延時間を回路設計時に固定し、単純な遅延素子を用いてもよい。なお、可変遅延素子は、遅延時間が上記のように設定できるものであれば、どのようなものでも使用可能であり、図示した回路を用いる必要は無いが、回路規模の小さなものが望ましい。図10は、第1実施形態の半導体装置の図4に示したタイミングエラー検出機能付き記憶素子の動作を示すタイムチャートである。CLKはクロック信号線3から供給されるクロックを、DATAは前段の組合せ回路から供給されるデータを、CLKAは第1遅延クロックを、QAは第1FF22の出力を、CLKBと第2遅延クロックを、QBは第2FF23の出力を、それぞれ示す。前段の組合せ回路から出力されるDATAが、CLKより十分早く第1FF22および第2FF23に到着すれば、データの保持が問題なく可能である。しかし、前段の組合せ回路の出力の遅延時間が、回路ばらつき等の影響により長くなる場合がある。この場合、第2FF23は第2可変遅延素子13の遅延時間分、データの取り込みタイミングが遅れるので、第1FF22には期待していない値、第2FF23には期待している値が保持されることになる。第1FF22と第2FF23記憶素子の保持している値の違いを比較器24で検出し、ANDゲート25がERROR信号を発生する。このERROR信号が発生した場合、直ちに第1可変遅延素子12の遅延時間を増加させ、第1遅延クロックが遅延する。それにより、第1FF22と第2FF23の両方のデータ取り込みタイミングが遅れ、両者とも前段の論理回路の遅延時間増加に影響を受けることが無く、正しい値を保持することが可能である。図11は、第1実施形態の半導体装置において、電源投入後や動作電圧変更後の第1可変遅延素子12および第2可変遅延素子13の遅延時間を設定するキャリブレーション動作を示すフローチャートである。キャリブレーション動作は、第1実施形態の半導体装置内に含まれるタイミングエラー検出機能付き記憶素子および遅延素子に対して全て同時に行う。ステップS1では、電源投入や動作電圧の変更を行う。ステップS2では、電源電圧に応じて、第2可変遅延素子13の遅延時間を、表1に示したように設定する。ステップS3では、スキャンモードに設定し、スキャンチェーンを用いて、組み合わせ論理回路のうちクリティカルパスとなり得るパスの活性率が高くなるデータパターンを入力し、各段のFFおよびタイミングエラー検出機能付き記憶素子を、データに対応した状態に設定する。ステップS4では、通常動作モードに変更した後、全回路部分にクロックCLKを供給して、少なくともFFおよびタイミングエラー検出機能付き記憶素子の段数に第1可変遅延素子の調整段数を乗じた数のクロック数以上、動作させる。これに応じて、各タイミングエラー検出機能付き記憶素子では、タイミングエラーチェックとその修正を行う。なお、上記のクロック数以上動作させた場合でも、第1可変遅延素子の遅延時間が正常に動作する範囲に入れば、それ以後ERROR信号は発生しないので、特に問題は発生しない。図3に示すように、例えば、タイミングエラー検出機能付き記憶素子2Cにより可変遅延素子11A第1可変遅延素子12と第2可変遅延素子13の組の値遅延時間を変化させてタイミングエラーを修正した場合を考える。この場合、タイミングエラー検出機能付き記憶素子2C内の第2FF23の動作タイミングが遅くなるため、次段の組合せ回路1Cに入力する信号にも遅延が発生する。これにより、修正前はタイミングエラーが起こらなかった次段の組合せ回路1Cに、タイミングエラーが発生することがある。そこで、第1実施形態の半導体装置では、図3に示すように、出力の遅延時間が小さい普通の組合せ回路1Cの後段のFFも、可変遅延素子11Bを含むタイミングエラー検出機能付き記憶素子2Dとし、ラッチタイミングを調整できるようにする。上記のラッチタイミングの修正のためのクロック数以上動作させれば、直列に配置されたタイミングエラー検出機能付き記憶素子のタイミングエラーの補正が全段の回路に渡って行われる。もちろん、組合せ回路1Cの出力の遅れが十分に小さく、たとえタイミングエラー検出機能付き記憶素子2Dのラッチタイミングを修正しても、組合せ回路1Cの後段のFFでのラッチが正常に行えるのであれば、タイミングエラー検出機能付き記憶素子2Dを設ける必要はない。図12は、第2実施形態の半導体装置50の全体構成を示す図である。第2実施形態の半導体装置50は、データ入力端子51と、データ出力端子52と、エラー信号出力端子53と、を有する。他に、クロック入力端子、電源端子などを有するが、図示は省略している。さらに、第2実施形態の半導体装置50は、第1実施形態と同様に、同期式集積回路を搭載しており、組み合わせ回路62X、62Y、62Zなどと、FFなどの記憶素子63P-63Wと、出力用記憶素子64L-64Nと、出力用バッファ65L-65Nと、3入力ORゲート66と、を有する。組み合わせ回路62X、62Y、62Zなどと、記憶素子63P-63Wとが含まれる範囲61が、タイミングエラー補正範囲である。記憶素子63P-63Tは、必要に応じて図4に示したタイミングエラー検出機能付き記憶素子とする。記憶素子63U-63Wは、すべてタイミングエラー検出機能付き記憶素子であり、それぞれが発生したエラー信号ERRORが出力可能であり、出力されたエラー信号ERRORが3入力ORゲート66に入力される。記憶素子63U-63Wは、図4に示した回路に、エラー信号ERRORの出力端子を設けることにより、実現される。記憶素子63P-63Rは、データ入力端子51からデータが供給され、出力は組合せ回路62Xおよび62Yに供給される。記憶素子63Sおよび63Tは、組合せ回路62Xおよび62Yからデータが供給され、出力は組合せ回路62Zに供給される。記憶素子63U-63Wは、組合せ回路62Zからデータが供給され、出力は出力用記憶素子64L-64Nに供給される。第2実施形態では、タイミングエラー補正範囲内のタイミングエラー検出機能付き記憶素子について、第1実施形態と同様に、タイミングエラーの調整が行われる。そして、3入力ORゲート66は、タイミングエラー調整時にクロックCLKごとに記憶素子63U-63Wのいずれかでエラー信号ERRORが発生したことを示す信号をエラー信号出力端子53から出力する。タイミングエラー調整を行った場合、内部のタイミングエラーの状況によっては、補正結果が最終段に蓄積し、最終段のタイミングを補正しきれない事が起こり得る。また、出力用記憶素子64L-64Nの動作タイミングが大きく変化すると、第2実施形態の半導体装置と周辺回路の接続が困難となる。これらを回避するため、第2実施形態の半導体装置では、エラー信号出力端子53から出力されるエラー信号ERRORを監視して、記憶素子63U-63Wのすべてがエラー信号を発生しない状態になったかを確認する。もし、記憶素子63U-63Wのすべてがエラー信号を発生しない状態になっていない場合には、半導体装置50に電源を供給する図示していない電源回路の電圧を制御する。前述のように、電源回路の電圧を高くすれば、トランジスタの動作速度のばらつきが低減されるので、タイミングエラー検出機能付き記憶素子および可変遅延素子により補正が可能になる。図13は、第2実施形態の半導体装置におけるキャリブレーション動作を示すフローチャートである。S11からS13は、図11に示した第1実施形態のキャリブレーション動作と同じ動作である。第2実施形態のキャリブレーション動作は、S14の後のステップS15で、最終段の記憶素子63U-63Wのすべてがエラー信号を発生しない状態になったかを確認する。エラー信号を発生しない状態になっていればキャリブレーションを終了し、エラー信号を発生する状態であればステップS16に進む。S16では、動作電源電圧を変更して、すなわち動作電源電圧を1段階増加させてステップS12に進み、記憶素子63U-63Wのすべてがエラー信号を発生しない状態になるまでS12からS16を繰り返す。第1および第2実施形態の半導体装置は、タイミングエラーを検出する部分と、エラーを解消する部分を一つの回路として構成可能であり、この回路を既存のFFなどの記憶素子と置き換えることが可能である。第1および第2実施形態の半導体装置のランダムばらつきの対策を行う場合、半導体装置の電源投入時、もしくは一定動作時間毎に半導体装置の動作を止め、あらかじめ定められたセットアップエラーを誘発しやすい信号パターンを、スキャンチェーンなどを用いて設定し、得られたエラー情報を使用する。これによって、製造時のランダムばらつきだけではなく、経年劣化によるばらつき増加の補償にも使用できる。さらに、経年劣化を考慮しない場合は、出荷時検査にてセットアップエラーを誘発しやすいパターンをスキャンチェーンを用いて各FFまたはタイミングエラー検出機能付き記憶素子に設定し、得られたエラー情報に応じて第1可変遅延素子12の遅延時間を設定する様に内部に書き込むことも可能である。また、設計時に動作解析等の結果により、あるパスではホールドエラーが起こりやすいと判明した場合にも、第1および第2実施形態の構成を適用可能である。この場合、第1可変遅延素子12の遅延時間をあらかじめ長めに設定した状態で設計し、ERROR信号を遅延時間減少信号として使用する。ホールドエラーが発生した場合、第1記憶素子12および第2記憶素子13の動作タイミングが早くなり、ホールドエラーが解消される。以上説明したように、第1および第2実施形態の半導体装置では、FFなどの記憶素子に、データが必要なタイミングより後についてしまうセットアップエラーまたはデータが必要なタイミングより早く書き換わってしまうホールドエラーが起こり得る箇所でタイミングエラーが発生した場合、記憶素子に供給するクロックの遅延時間を長くまたは短くする。これにより、記憶素子の動作タイミングが遅くまたは早くなり、セットアップエラーまたはホールドエラーを解消することが可能となる。図14は、第3実施形態の半導体装置の内部構成を説明する図である。第3実施形態の半導体装置は、第1実施形態と同様に、同期式集積回路を搭載しており、組み合わせ回路71A、71Bなどと、タイミングエラー検出機能付き記憶素子72A-72Cと、を有する。図15は、タイミングエラー検出機能付き記憶素子の回路図であり、タイミングエラー検出機能付き記憶素子72A-72Cは、それぞれ図15の回路構成を有する。図15に示すように、タイミングエラー検出機能付き記憶素子は、図4に示した回路と類似の構成を有し、第1可変遅延素子70が、次段のタイミングエラー検出機能付き記憶素子に接続されるクロック信号線に設けられていることが、図4の回路と異なり、他は同じである。タイミングエラー検出機能付き記憶素子72Aには、前段または入力端子からデータDATAが入力され、タイミングエラー検出機能付き記憶素子72Aの第2FF23の出力は組合せ回路71Aに出力される。タイミングエラー検出機能付き記憶素子72Bには、組合せ回路71Aの出力するデータが入力され、タイミングエラー検出機能付き記憶素子72Bの第2FF23の出力は組合せ回路71Bに出力される。タイミングエラー検出機能付き記憶素子72Cには、組合せ回路71Bの出力するデータが入力され、タイミングエラー検出機能付き記憶素子72Cの第2FF23の出力は次段の組合せ回路に出力される。また、タイミングエラー検出機能付き記憶素子72Aの第1可変遅延素子70は、クロック信号線または前段のタイミングエラー検出機能付き記憶素子から入力されたクロックCLKを遅延して第1遅延クロックを発生する。第1遅延クロックは、タイミングエラー検出機能付き記憶素子72Aの第1FF22に供給されると共に、次段のタイミングエラー検出機能付き記憶素子72Bに供給される。以下、同様に、各タイミングエラー検出機能付き記憶素子の第1可変遅延素子は直列に接続され、それぞれの出力は対応する第1FF22に供給される。図16は、第3実施形態において、各タイミングエラー検出機能付き記憶素子の第1可変遅延素子を直列に接続して、各第1可変遅延素子で遅延した遅延クロックを各タイミングエラー検出機能付き記憶素子に供給する様子を示す。図16のAに示すように、各タイミングエラー検出機能付き記憶素子の第1可変遅延素子は直列に接続されているので、あるタイミングエラー検出機能付き記憶素子の第1可変遅延素子の遅延時間ここでは2段目のタイミングエラー検出機能付き記憶素子の第1可変遅延素子を調整する場合を考える。このような場合、第1および第2実施形態では、2段目のタイミングエラー検出機能付き記憶素子の第1可変遅延素子の遅延時間を修正すると、それに応じて第2FF23からのデータ出力も遅延するため、修正前はタイミングエラーが起こらなかった次段で、タイミングエラーが発生する場合があった。これに対して、第3実施形態では、図16のBに示すように、調整した遅延時間が後段の第1可変遅延素子に伝播される。そのため、後段における第1および第2FFによるラッチタイミングも遅延するため、タイミングエラーが発生しなかった後段のタイミングエラー検出機能付き記憶素子でタイミングエラーが発生することはない。第3実施形態は、第1および第2実施形態と比べて、タイミングエラー修正の収束が早いという利点がある一方、直列に接続される第1可変遅延素子の遅延時間が累積するため、回路の接続に制限があるという欠点がある。設計時に回路動作順序があらかじめ決定している場合は第3実施形態の構成を用い、そうでない場合は第1実施形態の構成を使用することが望ましい。なお、第1実施形態の構成と、第3実施形態の構成は、同一半導体装置上に混在して作成することができる。図17は、第4実施形態の半導体装置の16ビットのデータパス部分の回路構成を示す図である。この回路部分は、第1可変遅延素子12と、第2可変遅延素子13と、16組の第1FF23、第2FF23およびEXORゲート24と、16入力のORゲート26と、ANDゲート25と、を有する。この回路部分は、16のデータごとに図4の回路を設け、第1可変遅延素子12、第2可変遅延素子13およびANDゲート25を統合し、さらに16入力のORゲート26を設けたといえる。第4実施形態のこの回路部分は、加算回路などのデータパスの出口などに設けられ、複数のビットのラッチタイミングが、1つの可変遅延クロックで共通に変更される。各組の第1FF23、第2FF23およびEXORゲート24で、各ビットのタイミングエラーをそれぞれ検知し、ORゲート26で16入力の論理和を演算することで、データパス内のいずれかのビットでエラーが発生したことを検知する。エラーがある場合は、第1可変遅延素子12の遅延時間を増やすことで、データパス出口のFFの動作タイミングを全てずらしてタイミングエラーを補償する。第4実施形態のように、第1可変遅延素子12、第2可変遅延素子13およびANDゲート25を統合することにより、これらの個数を低減でき、回路の面積効率を改善することが可能である。以上説明したように、第1から第4実施形態によれば、半導体回路設計において、タイミングエラーに起因する動作不良を減少させることができ、それにより、歩留まり改善、動作速度改善が図れる。半導体回路の微細化により、トランジスタの特性ばらつきは今後大きくなると予想されているため、第1から第4実施形態の構成は、その際の設計基準緩和に有効である。低電圧動作を目的とする場合においても、回路の遅延ばらつきは増加する傾向にあるため、第1から第4実施形態の構成が有効である。第1から第4実施形態の構成によれば、トランジスタの特性のばらつきによるタイミングエラーを、設計時のマージンではなく、製造後の実際の性能に基づいて修正できる。これにより、余分な設計マージンがいらず、またマージン見積もりの手間がいらなくなる。また、これまで提案されていた技術に比べ、FFなどの記憶素子を、図4などに記載した記憶素子に置き換えるだけで実装可能なため、既存の半導体回路設計手順に合致し、短い設計期間で設計可能である。以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。以下、実施形態に関し、更に以下の付記を開示する。付記1組合せ回路と、クロックに応じて、前記組合せ回路が出力するデータを取り込んで保持する1個以上の記憶素子と、前記クロックを供給するクロック信号線と、を備え、少なくとも1個の前記記憶素子は、前記記憶素子に供給する前記クロックを遅延させ、遅延時間が可変の少なくとも1個の可変遅延素子を備え、前記可変遅延素子が出力する遅延クロックに応じて、当該記憶素子が正常に動作するか否かを検出し、正常に動作するか否かの検出結果に応じて前記可変遅延素子の遅延時間を変化させるタイミングエラー検出機能付き記憶素子であることを特徴とする半導体装置。付記2前記可変遅延素子は、前記クロックを遅延させて第1遅延クロックを出力し、遅延時間が可変の第1可変遅延素子と、前記第1遅延クロックをさらに遅延させて第2遅延クロックを出力し、遅延時間が可変の第2遅延素子と、前記第1可変遅延素子の遅延時間の設定値を変化させるカウンタと、を備え、前記タイミングエラー検出機能付き記憶素子は、前記第1遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第1記憶素子と、前記第2遅延クロックに応じて、前記記憶素子に供給される前記データを取り込んで保持する第2記憶素子と、前記第1記憶素子の保持したデータと前記第2記憶素子の保持したデータを比較する比較器と、をさらに備え、前記可変遅延素子の前記カウンタは、前記比較器の比較結果に基づいて、カウント値を変化させる付記1記載の半導体装置。付記3前記第2遅延素子の遅延時間は、外部から設定可能である付記2記載の半導体装置。付記4前記第2遅延素子の遅延時間は、当該半導体装置の動作電圧に応じて設定される付記3記載の半導体装置。付記5前記第1遅延素子は、後段の前記第1記憶素子に前記クロックを供給する前記クロック信号線から分岐した、対応する前記第1記憶素子にのみ前記クロックを供給する前記クロック信号線に設けられる付記2から4のいずれか記載の半導体装置。付記6前記第1遅延素子は、後段の前記第1記憶素子に前記クロックを供給する前記クロック信号線に設けられる付記2から4のいずれか記載の半導体装置。付記7前記第2記憶素子は、スキャンチェーンを形成し、スキャンチェーンにより各第2記憶素子の保持する値が設定され、前記タイミングエラー検出機能付き記憶素子は、前記スキャンチェーンにより前記第2記憶素子を所定の状態に設定した後、当該半導体装置を動作させた状態で、前記第1記憶素子および前記第2記憶素子が同じデータを取り込むか否かを検出する付記2から6のいずれか記載の半導体装置。