(57)【要約】【課題】電力消費量の増大を抑制しつつ、タイミング信号のスキューを低減する。【解決手段】第１のクロック分配回路は、タイミング信号を複数の第１の分配点に分配する。第２のクロック分配回路は、タイミング信号を複数の第２の分配点に分配する。最小遅延クロック信号出力部は、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号とのうち遅延が小さい方の信号を最小遅延タイミング信号として出力する。同期動作回路は、最小遅延タイミング信号に同期して動作する。【選択図】図３
2013062567.tif 000002
【特許請求の範囲】
【請求項１】
所定のタイミングを指示するタイミング信号を複数の第１の分配点に分配する第１のタイミング信号分配回路と、
前記タイミング信号を複数の第２の分配点に分配する第２のタイミング信号分配回路と、
前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号とのうち遅延が小さい方の信号を最小遅延タイミング信号として出力する最小遅延タイミング信号出力部と、
前記最小遅延タイミング信号に同期して動作する同期動作回路と
を具備する集積回路。
【請求項２】
前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との論理和を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、前記最小遅延タイミング信号の立上りエッジに同期して動作する
請求項１記載の集積回路。
【請求項３】
前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との否定論理和を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、
前記最小遅延タイミング信号を反転して出力するインバータと、
前記反転された最小遅延タイミング信号の立上りエッジに同期して動作するフリップフロップと
を備える請求項１記載の集積回路。
【請求項４】
前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との論理積を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、前記最小遅延タイミング信号の立下りエッジに同期して動作する
請求項１記載の集積回路。
【請求項５】
前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との否定論理積を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、
前記最小遅延タイミング信号を反転して出力するインバータと、
前記反転された最小遅延タイミング信号の立下りエッジに同期して動作するフリップフロップと
を備える請求項１記載の集積回路。
【請求項６】
前記同期動作回路は、
前記最小遅延タイミング信号を格子状に配置された複数の領域に分配するメッシュ配線と、
前記複数の領域のいずれかに分配された前記最小遅延タイミング信号に同期して動作するフリップフロップと
を備える請求項１記載の集積回路。
【請求項７】
前記タイミング信号はクロック信号であり、
前記第１のタイミング信号分配回路は、所定の段数の第１のバッファを介して前記複数の第１の分配点に前記タイミング信号を分配するクロック木であり、
前記第２のタイミング信号分配回路は、所定の段数の第２のバッファを介して前記複数の第２の分配点に前記タイミング信号を分配するクロック木である
請求項１記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、集積回路に関する。詳しくは、タイミング信号に同期して動作する集積回路に関する。
【背景技術】
【０００２】
従来、集積回路においては、クロック信号などのタイミング信号に同期して動作する素子（例えば、フリップフロップ）のそれぞれにタイミング信号を分配するために、クロック木などのクロック分配回路が設けられていた。このクロック木でタイミング信号を複数の素子に分配する場合、それぞれの素子においてスキューが大きくなることがあった。ここで、スキューは、ある素子にタイミング信号が到着するまでの遅延時間と、その素子と異なる素子にタイミング信号が到着するまでの遅延時間との間の差である。例えば、クロック木の葉に回路を接続する構成においてクロック木の根から葉のそれぞれに至るまでの配線長やバッファ段数が異なると、それぞれの葉に分配されたタイミング信号の遅延時間に差が生じやすくなる。また、集積回路の駆動電圧が低下した場合にスキューのばらつきが大きくなることが知られている。
【０００３】
スキューのばらつきが増大すると、集積回路に誤動作が生じることがある。例えば、フリップフロップにおいて、ホールド違反やセットアップ違反などのタイミングエラーが発生して集積回路に誤動作が生じるおそれがある。ホールド違反とは、クロック信号などのタイミング信号によりデータの取り込みが指示されてからフリップフロップに同一値のデータが維持（ホールド）される時間が設計値（ホールドタイム）より短くなってしまうことをいう。セットアップ違反とは、クロック信号によるデータの取り込みの指示に先立ってフリップフロップにデータを入力するタイミングが設計上のタイミング（セットアップタイム）より遅くなってしまうことをいう。スキューのばらつきが増大すると、タイミング信号がフリップフロップに到着する時刻が早すぎたり遅すぎたりしてタイミングエラーが生じ易くなる。
【０００４】
ここで、クロック木でなく、メッシュ状のメッシュ配線によりタイミング信号を分配する方法もある。メッシュ配線においては、バッファを介さずに格子状の配線によりクロック信号が分配されるため、クロック木よりも配線抵抗が小さくなり、スキューのばらつきが小さくなる。ただし、メッシュ配線は、配線に必要な回路面積がクロック木よりも大きくなってしまう。そこで、クロック木とメッシュ配線とを併用するクロック分配回路が提案されている（例えば、特許文献１参照。）。この構成により、回路面積の増大が抑制されて、スキューのばらつきも低減される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１１６０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の従来技術では集積回路の電力消費量が増大するおそれがあった。例えば、メッシュ配線に値の異なるタイミング信号が分配された場合、メッシュ配線に接続された回路間に短絡電流が流れることがある。この短絡電流の発生により消費電力が増大してしまうことがあった。
【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、電力消費量の増大を抑制しつつ、タイミング信号のスキューを低減することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、所定のタイミングを指示するタイミング信号を複数の第１の分配点に分配する第１のタイミング信号分配回路と、上記タイミング信号を複数の第２の分配点に分配する第２のタイミング信号分配回路と、上記複数の第１の分配点のいずれかに分配された上記タイミング信号と上記複数の第２の分配点のいずれかに分配された上記タイミング信号とのうち遅延が小さい方の信号を最小遅延タイミング信号として出力する最小遅延タイミング信号出力部と、上記最小遅延タイミング信号に同期して動作する同期動作回路とを具備する集積回路である。これにより、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号とのうち遅延が小さい方の信号が動機動作回路に出力されるという作用をもたらす。
【０００９】
また、この第１の側面において、上記最小遅延タイミング信号出力部は、上記複数の第１の分配点のいずれかに分配された上記タイミング信号と上記複数の第２の分配点のいずれかに分配された上記タイミング信号との論理和を上記最小遅延タイミング信号として出力し、上記同期動作回路は、上記最小遅延タイミング信号の立上りエッジに同期して動作してもよい。これにより、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号との論理和が最小遅延タイミング信号として出力され、同期動作回路は、その最小遅延タイミング信号の立上りエッジに同期して動作するという作用をもたらす。
【００１０】
また、この第１の側面において、上記最小遅延タイミング信号出力部は、上記複数の第１の分配点のいずれかに分配された上記タイミング信号と上記複数の第２の分配点のいずれかに分配された上記タイミング信号との否定論理和を上記最小遅延タイミング信号として出力し、上記同期動作回路は、上記最小遅延タイミング信号を反転して出力するインバータと、上記反転された最小遅延タイミング信号の立上りエッジに同期して動作するフリップフロップとを備えてもよい。これにより、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号との否定論理和が最小遅延タイミング信号として出力され、同期動作回路は、反転された最小遅延タイミング信号の立上りエッジに同期して動作するという作用をもたらす。
【００１１】
また、この第１の側面において、上記最小遅延タイミング信号出力部は、上記複数の第１の分配点のいずれかに分配された上記タイミング信号と上記複数の第２の分配点のいずれかに分配された上記タイミング信号との論理積を上記最小遅延タイミング信号として出力し、上記同期動作回路は、上記最小遅延タイミング信号の立下りエッジに同期して動作してもよい。これにより、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号との論理積が最小遅延タイミング信号として出力され、同期動作回路は、その最小遅延タイミング信号の立下りエッジに同期して動作するという作用をもたらす。
【００１２】
また、この第１の側面において、上記最小遅延タイミング信号出力部は、上記複数の第１の分配点のいずれかに分配された上記タイミング信号と上記複数の第２の分配点のいずれかに分配された上記タイミング信号との否定論理積を上記最小遅延タイミング信号として出力し、上記同期動作回路は、上記最小遅延タイミング信号を反転して出力するインバータと、上記反転された最小遅延タイミング信号の立下りエッジに同期して動作するフリップフロップとを備えてもよい。これにより、複数の第１の分配点のいずれかに分配されたタイミング信号と複数の第２の分配点のいずれかに分配されたタイミング信号との否定論理積が最小遅延タイミング信号として出力され、同期動作回路は、反転された最小遅延タイミング信号の立下りエッジに同期して動作するという作用をもたらす
【００１３】
また、この第１の側面において、上記同期動作回路は、上記最小遅延タイミング信号を格子状に配置された複数の領域に分配するメッシュ配線と、上記複数の領域のいずれかに分配された上記最小遅延タイミング信号に同期して動作するフリップフロップとを備えてもよい。これにより、最小遅延タイミング信号がメッシュ配線により分配されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記タイミング信号はクロック信号であり、上記第１のタイミング信号分配回路は、所定の段数の第１のバッファを介して上記複数の第１の分配点に上記タイミング信号を分配するクロック木であり、上記第２のタイミング信号分配回路は、所定の段数の第２のバッファを介して上記複数の第２の分配点に上記タイミング信号を分配するクロック木であってもよい。これにより、所定の段数のバッファを介してクロック信号が分配されるという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、電力消費量の増大を抑制しつつ、タイミング信号のスキューを低減することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態における集積回路の一構成例を示すブロック図である。
【図２】第１の実施の形態におけるクロック分配部の一構成例を示す図である。
【図３】第１の実施の形態におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図４】第１の実施の形態におけるクロック信号の立上りに同期した同期動作回路の動作の一例を示すタイミングチャートである。
【図５】第１の実施の形態における第１の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図６】第１の実施の形態における第２の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図７】第１の実施の形態における第３の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図８】第１の実施の形態における第３の変形例におけるクロック信号の立下りに同期した同期動作回路の動作の一例を示すタイミングチャートである。
【図９】第１の実施の形態における第４の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図１０】第１の実施の形態における第５の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図１１】第２の実施の形態における集積回路の一構成例を示すブロック図である。
【図１２】第２の実施の形態におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図１３】第２の実施の形態におけるフリップフロップの一構成例を示す回路図である。
【図１４】第２の実施の形態における主クロック分配回路の一構成例を示す回路図である。
【図１５】第２の実施の形態における副クロック分配回路の一構成例を示す回路図である。
【図１６】第２の実施の形態におけるエラー測定部の一構成例を示すブロック図である。
【図１７】第２の実施の形態におけるエラー検出回路の一構成例を示す回路図である。
【図１８】第２の実施の形態におけるクロック分配回路制御部の一構成例を示すブロック図である。
【図１９】第２の実施の形態におけるクロック分配回路制御部の動作の一例を示すフローチャートである。
【図２０】第２の実施の形態における第１の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図２１】第２の実施の形態における第２の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図２２】第２の実施の形態における第３の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図２３】第２の実施の形態における第４の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図２４】第２の実施の形態における第５の変形例におけるクロック分配部および同期動作回路の一構成例を示す回路図である。
【図２５】第３の実施の形態における集積回路の一構成例を示すブロック図である。
【図２６】第３の実施の形態におけるクロック分配回路および同期動作回路の一構成例を示す回路図である。
【図２７】第３の実施の形態におけるエラー測定部の一構成例を示すブロック図である。
【図２８】第３の実施の形態におけるクロック分配回路、同期動作回路および組合せ論理回路の実装例を示す図である。
【図２９】第３の実施の形態における電源供給部の一構成例を示すブロック図である。
【図３０】第３の実施の形態におけるクロック分配回路駆動電圧制御部の一構成例を示すブロック図である。
【図３１】第３の実施の形態におけるクロック分配回路駆動電圧制御回路の動作の一例を示す図である。
【図３２】第３の実施の形態における電圧制御レジスタおよび可変抵抗器の一構成例を示す回路図である。
【図３３】第３の実施の形態における論理回路駆動電圧制御部の一構成例を示すブロック図である。
【図３４】第３の実施の形態における論理回路駆動電圧制御回路の動作の一例を示す図である。
【図３５】第３の実施の形態におけるクロック分配回路駆動電圧制御部の動作の一例を示すフローチャートである。
【図３６】第３の実施の形態における論理回路駆動電圧制御部の動作の一例を示すフローチャートである。
【図３７】第３の実施の形態におけるクロック分配回路駆動電圧および論理回路駆動電圧の第１の設定例を示すグラフである。
【図３８】第３の実施の形態におけるクロック分配回路駆動電圧および論理回路駆動電圧の第２の設定例を示すグラフである。
【図３９】第３の実施の形態におけるクロック分配回路駆動電圧および論理回路駆動電圧の第２の設定例を示すグラフである。
【図４０】第３の実施の形態における第１の変形例における集積回路の一構成例を示すブロック図である。
【図４１】第３の実施の形態における第２の変形例における電源供給部の一構成例を示すブロック図である。
【図４２】第３の実施の形態における第３の変形例における集積回路の一構成例を示すブロック図である。
【図４３】第３の実施の形態における第４の変形例における電源供給部の一構成例を示すブロック図である。
【図４４】第４の実施の形態における集積回路の一構成例を示すブロック図である。
【図４５】第４の実施の形態におけるエラー測定部、同期動作回路およびクロック分配回路の一構成例を示す回路図である。
【図４６】第４の実施の形態におけるエラー補償制御部の一構成例を示すブロック図である。
【図４７】第４の実施の形態におけるエラー解析部の動作の一例を示す図である。
【図４８】第４の実施の形態における電源供給部の動作の一例を示す図である。
【図４９】第４の実施の形態におけるエラーフラグＥＲＲ１およびＥＲＲ２がともに「０」となる場合のエラー検出回路の動作の一例を示すタイミングチャートである。
【図５０】第４の実施の形態におけるエラーフラグＥＲＲ２のみが「１」となる場合のエラー検出回路の動作の一例を示すタイミングチャートである。
【図５１】第４の実施の形態におけるエラーフラグＥＲＲ１およびＥＲＲ２がともに「１」となる場合のエラー検出回路の動作の一例を示すタイミングチャートである。
【図５２】第４の実施の形態におけるエラー検出回路のトラップウィンドウおよびデータの更新タイミングの一例を示す図である。
【図５３】第４の実施の形態における第１の変形例における集積回路の一構成例を示すブロック図である。
【図５４】第４の実施の形態における第１の変形例におけるエラー補償制御部の一構成例を示すブロック図である。
【図５５】第４の実施の形態における第１の変形例におけるエラー計数部の一構成例を示すブロック図である。
【図５６】第４の実施の形態における第１の変形例におけるエラー解析部の動作の一例を示す図である。
【図５７】第４の実施の形態における第１の変形例におけるエラー検出回路のトラップウィンドウおよびデータの更新タイミングの一例を示すである。
【図５８】第４の実施の形態における第２の変形例におけるエラー検出回路、フリップフロップおよびクロック分配回路の一構成例を示す回路図である。
【図５９】第４の実施の形態における第２の変形例におけるエラー検出回路のトラップウィンドウの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（クロックスキューを低減するためのクロック分配回路の例）
２．第２の実施の形態（クロック信号の遅延のばらつきを適応的に低減するための主／副クロック分配回路の例）
３．第３の実施の形態（クロック分配回路駆動電圧を論理回路駆動電圧より低く制御する電圧制御の例）
４．第４の実施の形態（タイミングエラーの種類を判別して駆動電圧を制御する電圧制御の例）
【００１８】
＜１．第１の実施の形態＞
［集積回路の構成例］
図１は、第１の実施の形態における集積回路１００の一構成例を示すブロック図である。この第１の実施の形態における集積回路１００は、電源供給部２００、クロック生成部３００、クロック分配部４００および同期動作回路５００を備える。
【００１９】
電源供給部２００は、クロック生成部３００、クロック分配部４００および同期動作回路５００のそれぞれに信号線２０９を介して電源電圧ＶＤＤを供給するものである。
【００２０】
クロック生成部３００は、ＰＬＬ（Phase Locked Loop）などを用いて所定の周波数のクロック信号ＣＬＫを生成するものである。クロック信号ＣＬＫは、同期動作回路５００に所定のタイミングを指示するための信号として生成される。クロック生成部３００は、生成したクロック信号ＣＬＫをクロック分配部４００に信号線３０９を介して出力する。
【００２１】
クロック分配部４００は、同期動作回路５００にクロック信号ＣＬＫを分配するものである。クロック分配部４００は、クロック信号ＣＬＫから最小遅延クロック信号ｍＣＬＫを生成する。最小遅延クロック信号ｍＣＬＫの詳細については後述する。クロック分配部４００は、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に信号線４０９を介して出力する。同期動作回路５００は、最小遅延クロック信号ｍＣＬＫに同期して動作する回路である。
【００２２】
［クロック分配部の構成例］
図２は、第１の実施の形態におけるクロック分配部４００の一構成例を示す図である。図２（ａ）は、クロック分配部４００における複数の分配点のそれぞれまでの配線の配置例を示す図である。図２（ａ）に例示するように、クロック分配部４００は、Ｈ木型に配線されたクロック木を備える。このクロック木における経路には必要に応じて複数のバッファが挿入されている。クロック生成部３００からのクロック信号ＣＬＫがクロック木の根の部分に入力され、そのクロック信号ＣＬＫがクロック木の葉の部分に相当する分配点のそれぞれに分配される。分配点のそれぞれには、同期動作回路５００などが接続される。図２（ｂ）は、図２（ａ）の一点鎖線で囲まれた部分を拡大した図である。図２（ｂ）に示すように、分配点のうち分配点Ｐ１およびＰ２は、ＯＲ（論理和）ゲート４３０の入力端子に接続されている。そして、そのＯＲゲート４３０の出力端子が同期動作回路５００に接続されている。同期動作回路５００の構成の詳細については後述する。
【００２３】
ＯＲゲート４３０は、入力値の論理和を生成するものである。ＯＲゲート４３０は、分配点Ｐ１からのクロック信号と分配点Ｐ２からのクロック信号との論理和を同期動作回路５００に出力する。ここで、クロック木において分岐した配線のそれぞれは分配点に至るまでの間に合流することがないため、クロック木の根から分配点Ｐ１までの回路と、その根から分配点Ｐ２までの回路とは互いに構成が異なるものとなる。例えば、配線長や経由するバッファの段数などが異なる。このため、分配点Ｐ１およびＰ２のそれぞれに分配されるクロック信号ＣＬＫの遅延時間には差（すなわち、クロックスキュー）が生じうる。分配点Ｐ１およびＰ２の間のユークリッド距離が近いか否かに関わらず、クロック木におけるトポロジ上の距離が大きい場合は、それらの分配点においてクロックスキューが大きくなり易い。また、電源供給部２００からの供給電圧ＶＤＤが低下した場合には、クロックスキューのばらつきがさらに大きくなるおそれがある。しかし、ＯＲゲート４３０は、分配点Ｐ１およびＰ２のそれぞれに分配されるクロック信号ＣＬＫの論理和を出力するため、それらのクロック信号ＣＬＫの立上りエッジのうち、遅延の小さい方の立上りエッジが出力されることになる。このＯＲゲート４３０が出力した遅延の少ない方のクロック信号を以下では「最小遅延クロック信号ｍＣＬＫ」と称する。
【００２４】
図３は、第１の実施の形態におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。クロック分配部４００は、クロック分配回路４１０および４２０とＯＲゲート４３０とを備える。クロック分配回路４１０は、所定の段数のバッファ４１１を備える。クロック分配回路４２０は、所定の段数のバッファ４２１を備える。クロック分配回路４１０は、クロック木におけるいずれかの分配点（例えば、Ｐ１）にクロック信号ＣＬＫを分配するものである。クロック分配回路４１０は、分配したクロック信号のいずれかを遅延クロック信号ＣＬＫ＿Ｄ１として、ＯＲゲート４３０の入力端子へ信号線４１９を介して出力する。クロック分配回路４２０は、クロック分配回路４１０が分配する分配点と異なる分配点（例えば、Ｐ２）にクロック信号ＣＬＫを分配するものである。クロック分配回路４２０は、分配したクロック信号のいずれかを遅延クロック信号ＣＬＫ＿Ｄ２として、ＯＲゲート４３０の入力端子へ信号線４２９を介して出力する。なお、クロック分配回路４１０は、特許請求の範囲に記載の第１のタイミング信号分配回路の一例である。クロック分配回路４２０は、特許請求の範囲に記載の第２のタイミング信号分配回路の一例である。
【００２５】
ＯＲゲート４３０は、遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２の論理和を最小遅延クロック信号ｍＣＬＫとして、同期動作回路５００に信号線４０９を介して出力するものである。なお、ＯＲゲート４３０は、特許請求の範囲に記載の最小遅延クロック信号出力部の一例である。
【００２６】
同期動作回路５００は、最小遅延クロック信号ｍＣＬＫに同期して動作するものである。同期動作回路５００は、例えば、フリップフロップ５１０および５２０を備える。フリップフロップ５１０および５２０は、最小遅延クロック信号ｍＣＬＫに同期してデータを取り込んで保持するものである。フリップフロップ５１０は、例えば、入力信号Ｄ０のデータを最小遅延クロック信号ｍＣＬＫの立上りエッジに同期して取り込んで保持し、保持したデータをフリップフロップ５２０へ出力信号Ｑ０として出力する。そして、フリップフロップ５２０は、出力信号Ｑ０のデータを最小遅延クロック信号ｍＣＬＫの立上りエッジに同期して取り込んで保持し、保持したデータを出力信号Ｑ１として出力する。
【００２７】
図４は、第１の実施の形態におけるクロック信号の立上りに同期した同期動作回路５００の動作の一例を示すタイミングチャートである。入力信号Ｄ０の値が「ｄ２」から「ｄ３」に更新される前のあるタイミングでクロック信号ＣＬＫに立上りエッジが生じた場合を考える。クロック信号ＣＬＫがクロック分配回路４１０により分配され、クロック信号ＣＬＫに対して遅延して遅延クロック信号ＣＬＫ＿Ｄ１に立上りエッジが生じる。また、クロック信号ＣＬＫがクロック分配回路４２０により分配され、遅延クロック信号ＣＬＫ＿Ｄ２に立上りエッジが生じる。遅延クロック信号ＣＬＫ＿Ｄ１の遅延は、遅延クロック信号ＣＬＫ＿Ｄ２より大きいものとする。ＯＲゲート４３０は、これらの遅延クロック信号の論理和を最小遅延クロック信号ｍＣＬＫとして出力する。遅延クロック信号のいずれかに立上りエッジが生じれば、その論理和の値は「１」となるため、遅延の最も小さい遅延クロック信号ＣＬＫ＿Ｄ２の立上りに応じて最小遅延クロック信号ｍＣＬＫに立上りエッジが生じる。フリップフロップ５１０は、最小遅延クロック信号ｍＣＬＫの立上りエッジに同期して「ｄ２」の値を取り込んで出力信号Ｑ０としてフリップフロップ５２０へ出力する。フリップフロップ５２０は、次の最小遅延クロック信号ｍＣＬＫの立上りエッジに同期して「ｄ２」の値を取り込む。
【００２８】
仮にＯＲゲート４３０を介さずに、遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２をそれぞれフリップフロップ５１０および５２０に与えると、それらの遅延クロック信号の遅延時間に差（クロックスキュー）が生じることがある。このクロックスキューが増大すると、フリップフロップ５１０および５２０間でのデータの受け渡しに支障が生じ、誤動作が生じる可能性がある。特に、駆動電圧を低下させるとクロックスキューのばらつきが増大するため、誤動作が生じる確率が高くなる。しかし、集積回路１００ではＯＲゲート４３０により、遅延が最小のクロック信号ｍＣＬＫをフリップフロップ５１０および５２０に供給しているため、クロックスキューが小さくなる。この結果、集積回路１００の誤動作の発生率が低減する。
【００２９】
ＯＲゲート４３０を挿入したクロック木のクロックスキューのばらつき（例えば、標準偏差）の測定値は、ＯＲゲート４３０を挿入しないクロック木よりも小さくなる。例えば、バッファを１０段にして所定の条件下においてシミュレーションを行った場合に、ＯＲゲート４３０の挿入により、標準偏差の測定値が挿入前の約０．７倍に低減するといった結果が得られている。クロック木においては、一般にバッファサイズを増加するか、バッファの段数を減らすと、クロックスキューのばらつきが低下する。クロックスキューのばらつきを０．７倍にするには、例えば、バッファサイズを２倍にするか、バッファの段数を半分にする必要がある。ＯＲゲート４３０を挿入することにより、バッファサイズやバッファの段数を変更することなく、クロックスキューを低減させることができる。また、ＯＲゲート４３０を挿入してもメッシュ配線のように短絡電流が生じないため、電力消費量が増大しない。
【００３０】
このように、第１の実施の形態によれば、クロック分配回路４１０がクロック信号ＣＬＫを分配点Ｐ１に分配し、クロック分配回路４２０がクロック信号ＣＬＫを分配点Ｐ２に分配する。そして、ＯＲゲート４３０は、それらの分配点に分配されたクロック信号ＣＬＫのうち遅延が小さい方の信号を最小遅延タイミング信号ｍＣＬＫとして出力する。同期動作回路５００は最小遅延タイミング信号ｍＣＬＫに同期して動作する。これにより、クロック分配回路４１０および４２０によって分配された、それぞれのクロック信号ＣＬＫのうち遅延の小さい方の信号が、最小遅延タイミング信号ｍＣＬＫとして同期動作回路５００に出力される。これにより、同期動作回路５００におけるクロックスキューが低減する。また、クロック分配回路４１０および４２０からのそれぞれのクロック信号ＣＬＫの値が異なる場合であっても、メッシュ配線のように短絡電流が生じないため、電力消費量の増大が抑制される。
【００３１】
なお、ＯＲゲート４３０は、２つの遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２から最小遅延タイミング信号ｍＣＬＫを生成しているが、３つ以上の遅延クロック信号から最小遅延タイミング信号ｍＣＬＫを生成してもよい。
【００３２】
また、同期動作回路５００は、２個のフリップフロップ５１０および５２０を備えているが、同期動作回路５００の回路構成は、この構成に限定されない。例えば、１個または３個以上のフリップフロップを備えてもよい。
【００３３】
また、集積回路１００は、ＯＲゲート４３０を使用して最小遅延タイミング信号ｍＣＬＫを生成する構成としているが、ＯＲゲート以外の論理ゲートによって最小遅延タイミング信号ｍＣＬＫを生成してもよい。例えば、同期動作回路５００が立下りエッジに同期して動作する場合、集積回路１００は、ＯＲゲートに代えてＡＮＤゲートによって最小遅延タイミング信号ｍＣＬＫを生成してもよい。
【００３４】
また、クロック分配部４００は予めＨ木型に配線されたクロック木を備える構成としているが、例えば、クロック木を自動合成する技術であるＣＴＳ（Clock Tree Synthesis）を使用して生成したクロック木を備えてもよい。
【００３５】
［第１の変形例］
図５は、第１の実施の形態における第１の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。第１の変形例におけるクロック分配部４００の構成は、ＯＲゲート４３０に代えてＮＯＲ（否定論理和）ゲート４３１を備える点において、第１の実施の形態と異なる。第１の変形例における同期動作回路５００の構成は、インバータ５３０および５４０をさらに備える点において、第１の実施の形態と異なる。
【００３６】
ＮＯＲゲート４３１は、遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２の否定論理和を最小遅延クロック信号ｍＣＬＫとして同期動作回路５００に出力するものである。インバータ５３０は、最小遅延クロック信号ｍＣＬＫを反転してフリップフロップ５１０に出力するものである。インバータ５４０は、最小遅延クロック信号ｍＣＬＫを反転してフリップフロップ５２０に出力するものである。
【００３７】
このように第１の変形例によれば、フリップフロップ５１０および５２０のクロック入力端子にインバータが設けられた構成において、クロックスキューを低減することができる。
【００３８】
［第２の変形例］
図６は、第１の実施の形態における第２の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。第２の変形例におけるクロック分配部４００の構成は、ＯＲゲート４３０に代えてＮＯＲ（否定論理和）ゲート４３１を備える点において、第１の実施の形態と異なる。この第２の変形例における同期動作回路５００の構成は、インバータ５３０および５４０とメッシュ配線５５０をさらに備える点において、第１の実施の形態と異なる。
【００３９】
ＮＯＲゲート４３１の構成は、第１の変形例と同様である。インバータ５３０および５４０は、最小遅延クロック信号ｍＣＬＫを反転してメッシュ配線５５０に出力するものである。メッシュ配線５５０は、格子状に配置された複数の領域に最小遅延クロック信号ｍＣＬＫを分配するものである。これらの領域にフリップフロップ５１０および５２０などが配置される。
【００４０】
このように第２の変形例によれば、メッシュ配線５５０によりフリップフロップ５１０および５２０のクロック入力端子に接続する構成においてクロックスキューを低減することができる。
【００４１】
［第３の変形例］
図７は、第１の実施の形態における第３の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。上述の第１の実施の形態では同期動作回路５００がクロック信号の立上りエッジにより動作することを想定していたが、この第３の変形例では、同期動作回路５００がクロック信号の立下りエッジにより動作することを想定する。具体的には、第３の変形例におけるクロック分配部４００の構成は、ＯＲゲート４３０に代えてＡＮＤ（論理積）ゲート４３２を備える点において、第１の実施の形態と異なる。第３の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備える点において、第１の実施の形態と異なる。
【００４２】
ＡＮＤゲート４３２は、遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２の論理積を最小遅延クロック信号ｍＣＬＫとして同期動作回路５００に出力するものである。フリップフロップ５６０および５７０は、最小遅延クロック信号ｍＣＬＫの立下りエッジに同期してデータを取り込み、保持するものである。
【００４３】
図８は、第１の実施の形態における第３の変形例におけるクロック信号の立上りに同期した同期動作回路５００の動作の一例を示すタイミングチャートである。入力信号Ｄ０の値が「ｄ２」から「ｄ３」に更新される前のあるタイミングでクロック信号ＣＬＫに立下りエッジが生じた場合を考える。クロック信号ＣＬＫがクロック分配回路４１０により分配され、クロック信号ＣＬＫに対して遅延して遅延クロック信号ＣＬＫ＿Ｄ１に立下りエッジが生じる。また、クロック信号ＣＬＫがクロック分配回路４２０により分配され、遅延クロック信号ＣＬＫ＿Ｄ２に立上りエッジが生じる。遅延クロック信号ＣＬＫ＿Ｄ１の遅延は、遅延クロック信号ＣＬＫ＿Ｄ２より大きいものとする。ＯＲゲート４３０は、これらの遅延クロック信号の論理積を最小遅延クロック信号ｍＣＬＫとして出力する。遅延クロック信号のいずれかに立下りエッジが生じれば、その論理和の値は「０」となるため、遅延の最も小さい遅延クロック信号ＣＬＫ＿Ｄ２の立下りに応じて最小遅延クロック信号ｍＣＬＫに立下りエッジが生じる。フリップフロップ５６０は、最小遅延クロック信号ｍＣＬＫの立下りエッジに同期して「ｄ２」の値を取り込んで出力信号Ｑ０としてフリップフロップ５７０へ出力する。フリップフロップ５７０は、次の最小遅延クロック信号ｍＣＬＫの立下りエッジに同期して「ｄ２」の値を取り込む。
【００４４】
このように第３の変形例によれば、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューを低減することができる。
【００４５】
［第４の変形例］
図９は、第１の実施の形態における第４の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第４の変形例においても第３の変形例と同様に同期動作回路５００が立下りエッジにより動作することを想定する。第４の変形例におけるクロック分配部４００の構成は、ＯＲゲート４３０に代えてＮＡＮＤ（否定論理積）ゲート４３３を備える点において、第１の実施の形態と異なる。第４の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備え、インバータ５３０および５４０をさらに備える点において、第１の実施の形態と異なる。
【００４６】
ＮＡＮＤゲート４３３は、遅延クロック信号ＣＬＫ＿Ｄ１およびＣＬＫ＿Ｄ２の否定論理積を最小遅延クロック信号ｍＣＬＫとして同期動作回路５００に出力するものである。インバータ５３０は、最小遅延クロック信号ｍＣＬＫを反転してフリップフロップ５６０に出力するものである。インバータ５４０は、最小遅延クロック信号ｍＣＬＫを反転してフリップフロップ５７０に出力するものである。フリップフロップ５６０および５７０は、最小遅延クロック信号ｍＣＬＫの立下りエッジに同期してデータを取り込み、保持するものである。
【００４７】
このように第４の変形例によれば、フリップフロップ５６０および５７０のクロック入力端子にインバータが設けられ、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューを低減することができる。
【００４８】
［第５の変形例］
図１０は、第１の実施の形態における第５の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第５の変形例においても第３の変形例と同様に同期動作回路５００が立下りエッジにより動作することを想定する。第５の変形例におけるクロック分配部４００の構成は、ＯＲゲート４３０に代えてＮＡＮＤゲート４３３を備える点において、第１の実施の形態と異なる。第５の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備える点において、第１の実施の形態と異なる。また、第５の変形例における同期動作回路５００の構成は、インバータ５３０および５４０とメッシュ配線５５０をさらに備える点において、第１の実施の形態と異なる。
【００４９】
ＮＡＮＤゲート４３３の構成は、第４の変形例と同様である。インバータ５３０および５４０とメッシュ配線５５０との構成は、第２の変形例と同様である。フリップフロップ５６０および５７０の構成は、第４の変形例と同様である。
【００５０】
このように第５の変形例によれば、メッシュ配線にフリップフロップ５６０および５７０のクロック入力端子が接続され、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューを低減することができる。
【００５１】
＜２．第２の実施の形態＞
［集積回路の構成例］
図１１は、第２の実施の形態における集積回路１００の一構成例を示すブロック図である。この第２の実施の形態における集積回路１００は、電源供給部２００、クロック生成部３００、クロック分配部４００、同期動作回路５００、エラー測定部６００およびクロック分配回路制御部７００を備える。
【００５２】
電源供給部２００は、クロック生成部３００、クロック分配部４００、同期動作回路５００、エラー測定部６００およびクロック分配回路制御部７００のそれぞれに信号線２０９を介して電源電圧ＶＤＤを供給するものである。
【００５３】
クロック生成部３００は、ＰＬＬなどを用いて所定の周波数のクロック信号ＣＬＫを生成するものである。クロック信号ＣＬＫは、同期動作回路５００に所定のタイミングを指示するための信号として生成される。クロック生成部３００は、生成したクロック信号ＣＬＫをクロック分配部４００に信号線３０９を介して出力する。
【００５４】
クロック分配部４００は、同期動作回路５００にクロック信号ＣＬＫを分配するものである。クロック分配部４００は、クロック信号ＣＬＫから最小遅延クロック信号ｍＣＬＫを生成する。クロック分配部４００は、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に信号線４０９を介して出力する。同期動作回路５００は、最小遅延クロック信号ｍＣＬＫに同期して動作する回路である。
【００５５】
エラー測定部６００は、同期動作回路５００に生じたタイミングエラーを検出し、その検出頻度を測定するものである。タイミングエラーの検出頻度は、例えば、一定の計測周期内のエラー数を計数することにより測定される。エラー測定部６００は、クロック分配回路制御部７００の制御に従ってタイミングエラーの数を計数し、その計数値をクロック分配回路制御部７００に信号線６０９を介して出力する。なお、エラー測定部６００は、特許請求の範囲に記載の測定部の一例である。
【００５６】
クロック分配回路制御部７００は、タイミングエラーの検出頻度に基づいてクロック分配部４００を制御するものである。具体的には、クロック分配回路制御部７００は、電源供給部２００からの供給電圧ＶＤＤが所定電圧以下になったときにエラー測定部６００を制御してタイミングエラー数の測定を開始させる。そして、クロック分配回路制御部７００は、検出されたタイミングエラーの検出頻度に基づいてイネーブル信号Ｅｎ＿ＭおよびＥｎ＿Ｓを生成する。イネーブル信号Ｅｎ＿ＭおよびＥｎ＿Ｓの詳細については、後述する。クロック分配回路制御部７００は、イネーブル信号Ｅｎ＿ＭおよびＥｎ＿Ｓをクロック分配部４００に信号線７０８および７０９を介して出力する。なお、クロック分配回路制御部７００は、特許請求の範囲に記載のタイミング信号分配回路制御部の一例である。
【００５７】
［クロック分配部の構成例］
図１２は、第２の実施の形態におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。第２の実施の形態のクロック分配部４００は、主クロック分配回路４４０と、副クロック分配回路４５０と、ＯＲゲート４６１および４６２とを備える。第２の実施の形態の同期動作回路５００は、フリップフロップ５１０および５２０を備える。
【００５８】
主クロック分配回路４４０は、イネーブル信号Ｅｎ＿Ｍに従ってクロック信号ＣＬＫを分岐させて複数のクロック信号を生成し、それらの信号を分配するものである。主クロック分配回路４４０において分岐されたそれぞれのクロック信号を以下では「主クロック信号」と称する。ここで、主クロック分配回路４４０は、複数の経路を備え、それらのうちの２つを経路Ｍ＿ＡおよびＭ＿Ｂとする。そして、経路Ｍ＿Ａを経由して分配された主クロック信号をＣＬＫ＿Ｍ＿Ａとし、経路Ｍ＿Ｂを経由して分配された主クロック信号をＣＬＫ＿Ｍ＿Ｂとする。なお、主クロック分配回路４４０は、特許請求の範囲に記載の主タイミング信号分配回路の一例である。
【００５９】
副クロック分配回路４５０は、イネーブル信号Ｅｎ＿Ｓに従ってクロック信号ＣＬＫを分岐させて複数のクロック信号を生成し、それらの信号を分配するものである。副クロック分配回路４５０において分岐されたそれぞれのクロック信号を以下では「副クロック信号」と称する。ここで、主クロック分配回路４４０は、複数の経路を備え、それらのうちの２つを経路Ｓ＿ＡおよびＳ＿Ｂとする。そして、経路Ｓ＿Ａを経由して分配された副クロック信号をＣＬＫ＿Ｓ＿Ａとし、経路Ｓ＿Ａを経由して分配された副クロック信号をＣＬＫ＿Ｓ＿Ｂとする。なお、副クロック分配回路４５０は、特許請求の範囲に記載の副タイミング信号分配回路の一例である。
【００６０】
ここで、主クロック分配回路４４０は、同期動作回路５００を動作させる場合において、オン状態のイネーブル信号Ｅｎ＿Ｍにより常に活性化される。一方、副クロック分配回路４５０は、初期状態においてオフ状態のイネーブル信号Ｅｎ＿Ｓにより不活性化される。そして、副クロック分配回路４５０は、同期動作回路５００においてタイミングエラーの検出頻度が所定値より高くなったときに活性化される。ここで、イネーブル信号Ｅｎ＿Ｓは、Ｅｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂを含む。そして、副クロック分配回路４５０おける経路Ｓ＿Ａは、イネーブル信号Ｅｎ＿Ｓ＿ＲｏｏｔおよびＥｎ＿Ｓ＿Ａをオン状態にすることにより活性化される。一方、副クロック分配回路４５０おける経路Ｓ＿Ｂは、イネーブル信号Ｅｎ＿Ｓ＿ＲｏｏｔおよびＥｎ＿Ｓ＿Ｂをオン状態にすることにより活性化される。
【００６１】
ＯＲゲート４６１および４６２は、それぞれの入力値の論理和を生成するものである。ＯＲゲート４６１は、入力端子を２つ備え、それらの入力端子に主クロック信号ＣＬＫ＿Ｍ＿Ａおよび副クロック信号ＣＬＫ＿Ｓ＿Ａが入力される。ＯＲゲート４６１は、これらの信号の論理和を最小遅延クロック信号ｍＣＬＫ＿Ａとして同期動作回路５００に出力する。ＯＲゲート４６２は、入力端子を２つ備え、それらの入力端子に主クロック信号ＣＬＫ＿Ｍ＿Ｂおよび副クロック信号ＣＬＫ＿Ｓ＿Ｂが入力される。ＯＲゲート４６２は、これらの信号の論理和を最小遅延クロック信号ｍＣＬＫ＿Ｂとして同期動作回路５００に出力する。このようにＯＲゲート４６１および４６２は、それぞれ主タイミング信号および副タイミング信号の論理和を出力するため、それらの信号の立上りエッジのうち、遅延の小さい方の立上りエッジが出力される。言い換えれば、主タイミング信号および副タイミング信号ののうち先に分配された方の信号が出力される。
【００６２】
なお、ＯＲゲート４６１および４６２のそれぞれは、特許請求の範囲に記載のタイミング信号生成部の一例である。また、ＯＲゲート４６１および４６２における主クロック信号が入力される端子は、特許請求の範囲に記載の主入力端子の一例である。ＯＲゲート４６１および４６２における副クロック信号が入力される端子は、特許請求の範囲に記載の副入力端子の一例である。
【００６３】
フリップフロップ５１０は、最小遅延クロック信号ｍＣＬＫ＿Ａに同期してデータを織り込んで保持するものである。フリップフロップ５１０に入力される入力信号Ｄ＿Ａと、フリップフロップ５１０からのラッチ出力信号Ｌ＿Ａとは、エラー測定部６００に信号線５０９を介して出力される。ラッチ出力信号Ｌ＿Ａは、マスタスレーブ型のフリップフロップ５１０におけるマスタ側のラッチの出力信号である。また、エラー測定部６００には最小遅延クロック信号ｍＣＬＫ＿Ａも信号線５０９を介して出力される。フリップフロップ５２０は、最小遅延クロック信号ｍＣＬＫ＿Ｂに同期してデータを取り込んで保持するものである。フリップフロップ５２０に入力される入力信号Ｄ＿Ｂと、フリップフロップ５１０からのラッチ出力信号Ｌ＿Ｂとは、エラー測定部６００に信号線５０９を介して出力される。ラッチ出力信号Ｌ＿Ｂは、マスタスレーブ側のフリップフロップ５２０におけるマスタ側のラッチの出力信号である。また、エラー測定部６００には最小遅延クロック信号ｍＣＬＫ＿Ｂも信号線５０９を介して出力される。
【００６４】
図１３は、第２の実施の形態におけるフリップフロップ５１０の一構成例を示す回路図である。フリップフロップ５１０は、マスタスレーブ型のラッチであり、マスタ側のラッチ５１１とスレーブ側のラッチ５１２とから構成される。なお、フリップフロップ５２０の構成もフリップフロップ５１０と同様である。
【００６５】
ラッチ５１１は、最小遅延クロック信号ｍＣＬＫ＿Ａに同期して入力信号を保持するものである。ラッチ５１１は、入力端子Ｑ、出力端子Ｄおよびゲートイネーブル端子Ｇを備える。入力端子には、入力信号Ｑ＿Ａが入力され、ゲートイネーブル端子Ｇには、最小遅延クロック信号ｍＣＬＫ＿Ａが入力され、出力端子Ｄは、ラッチ５１２の入力端子に接続されている。ラッチ５１１は、最小遅延クロック信号ｍＣＬＫ＿Ａがオン状態の場合には入力信号Ｄ＿Ａをスルー出力する。一方、最小遅延クロック信号ｍＣＬＫ＿Ａがオフ状態になった場合にはラッチ５１１は、立下りエッジにおける入力信号Ｄ＿Ａを保持して出力する。このラッチ５１１の出力はラッチ出力信号Ｌ＿Ａとしてエラー測定部６００およびラッチ５１２に出力される。
【００６６】
ラッチ５１２は、最小遅延クロック信号ｍＣＬＫ＿Ａを反転させたクロック信号ｍＣＫ２＿Ａに同期してラッチ出力信号Ｌ＿Ａを保持するものである。ラッチ５１２の構成は、ラッチ５１１と同様である。ラッチ５１２の出力は、フリップフロップ５１０の出力信号として出力される。
【００６７】
図１４は、第２の実施の形態における主クロック分配回路４４０の一構成例を示す回路図である。主クロック分配回路４４０は、ＰＬＬ４４１、４４３および４４５と、バッファ４４２、４４４および４４６とを備える。
【００６８】
ＰＬＬ４４１、４４３および４４５は、入力されたクロック信号と同一の周波数のクロック信号を生成するものである。ＰＬＬ４４１、４４３および４４５は、入力端子ＣＫＩ、出力端子ＣＫＯおよびイネーブル端子ＥＮを備える。ＰＬＬ４４１、４４３および４４５は、例えば、オン状態のイネーブル信号が入力された場合に、生成したクロック信号を出力し、オフ状態のイネーブル信号が入力された場合にその出力を停止する。主クロック分配回路４４０は、クロック分配回路制御部７００からＥｎ＿Ｍ＿Ｒｏｏｔ、Ｅｎ＿Ｍ＿ＡおよびＥｎ＿Ｍ＿Ｂを含むイネーブル信号Ｅｎ＿Ｍを受け取る。Ｅｎ＿Ｍ＿Ｒｏｏｔ、Ｅｎ＿Ｍ＿ＡおよびＥｎ＿Ｍ＿Ｂは、それぞれＰＬＬ４４１、４４３および４４５を制御するためのイネーブル信号である。ここで、信号線７０８は、信号線７０８−１、７０８−２および７０８−３を含み、イネーブル信号Ｅｎ＿Ｍ＿ＲｏｏｔはＰＬＬ４４１に信号線７０８−１を介して入力される。イネーブル信号Ｅｎ＿Ｍ＿ＡはＰＬＬ４４３に信号線７０８−２を介して入力され、イネーブル信号Ｅｎ＿Ｍ＿ＢはＰＬＬ４４５に信号線７０８−３を介して入力される。
【００６９】
ＰＬＬ４４１は、クロック木の根に近い位置に設置された回路であり、ＰＬＬ４４１の入力端子ＣＫＩにクロック生成部３００からのクロック信号ＣＬＫが入力される。ＰＬＬ４４１が出力したクロック信号は、バッファ４４２を介して複数のクロック信号に分岐される。分岐されたクロック信号のうち、いずれか２つがＰＬＬ４４３および４４５の入力端子ＣＫＩに入力される。
【００７０】
ＰＬＬ４４３が出力したクロック信号ＣＬＫは、バッファ４４４を介して複数のクロック信号に分岐される。分岐されたクロック信号のいずれかがＯＲゲート４６１に出力される。この信号が主クロック信号ＣＬＫ＿Ｍ＿Ａとされる。ＰＬＬ４４５が出力したクロック信号ＣＬＫは、バッファ４４６を介して複数のクロック信号に分岐される。分岐されたクロック信号のいずれかがＯＲゲート４６２に出力される。この信号が主クロック信号ＣＬＫ＿Ｍ＿Ｂとされる。ＰＬＬ４４１の出力点から主クロック信号ＣＬＫ＿Ｍ＿Ａの出力点までの経路を経路Ｍ＿Ａとし、ＰＬＬ４４１の出力点から主クロック信号ＣＬＫ＿Ｍ＿Ｂの出力点までの経路を経路Ｍ＿Ｂとする。
【００７１】
図１５は、第２の実施の形態における副クロック分配回路４５０の一構成例を示す回路図である。副クロック分配回路４５０は、ＰＬＬ４５１、４５３および４５５と、バッファ４５２、４５４および４５６とを備える。
【００７２】
ＰＬＬ４５１、４５３および４５５の構成は、ＰＬＬ４４１と同様の構成である。副クロック分配回路４５０は、クロック分配回路制御部７００からＥｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂを含むイネーブル信号Ｅｎ＿Ｓを受け取る。Ｅｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂは、それぞれＰＬＬ４５１、４５３および４５５を制御するためのイネーブル信号である。ここで、信号線７０９は、信号線７０９−１、７０９−２および７０９−３を含み、イネーブル信号Ｅｎ＿Ｓ＿Ｒｏｏｔは信号線７０９−１を介してＰＬＬ４５１に入力される。イネーブル信号Ｅｎ＿Ｓ＿ＡはＰＬＬ４５３に信号線７０９−２を介して入力され、イネーブル信号Ｅｎ＿Ｓ＿ＢはＰＬＬ４５５に信号線７０９−３を介して入力される。
【００７３】
ＰＬＬ４５１は、クロック木の根に近い位置に設置された回路であり、ＰＬＬ４５１の入力端子ＣＫＩにクロック生成部３００からのクロック信号ＣＬＫが入力される。ＰＬＬ４５１が出力したクロック信号は、バッファ４５２を介して複数のクロック信号に分岐される。分岐されたクロック信号のうち、いずれか２つがＰＬＬ４５３および４５５の入力端子ＣＫＩに入力される。
【００７４】
ＰＬＬ４５３が出力したクロック信号ＣＬＫは、バッファ４５４を介して複数のクロック信号に分岐される。分岐されたクロック信号のいずれかがＯＲゲート４６１に出力される。この信号が副クロック信号ＣＬＫ＿Ｓ＿Ａとされる。ＰＬＬ４５５が出力したクロック信号ＣＬＫは、バッファ４５６を介して複数のクロック信号に分岐される。分岐されたクロック信号のいずれかがＯＲゲート４６２に出力される。この信号が副クロック信号ＣＬＫ＿Ｓ＿Ｂとされる。ＰＬＬ４５１の出力点から副クロック信号ＣＬＫ＿Ｓ＿Ａの出力点までの経路を経路Ｓ＿Ａとし、ＰＬＬ４５１の出力点から副クロック信号ＣＬＫ＿Ｓ＿Ｂの出力点までの経路を経路Ｓ＿Ｂとする。
【００７５】
ここで、ＯＲゲート４６１に対しては、同一の段数を介して主タイミング信号および副タイミング信号が分配されることが望ましい。すなわち、経路Ｍ＿Ａおよび経路Ｓ＿Ａにおけるバッファ段数は等しいことが望ましい。バッファ段数を同じにすることにより、主タイミング信号および副タイミング信号の遅延時間の差のばらつきが小さくなり、この結果、最小遅延タイミング信号ｍＣＬＫの遅延のばらつきも小さくなる。なお、主タイミング信号および副タイミング信号の遅延時間が同程度となるのであれば、経路Ｍ＿Ａおよび経路Ｓ＿Ａのそれぞれにおけるバッファ段数は、多少異なる段数であってもよい。経路Ｍ＿ＢおよびＳ＿Ｂについても同様である。
【００７６】
このように副クロック分配回路４５０の根と分岐点とにＰＬＬを設けることにより、集積回路１００は、複数の経路を選択的に不活性化ないし活性化することができる。具体的には、根の部分のＰＬＬ４５１が無効になると、全ての経路が不活性化される。ＰＬＬ４５１および４５３が有効になると、経路Ｓ＿Ａが活性化され、副クロック信号ＣＬＫ＿Ｓ＿Ａが出力される。ＰＬＬ４５１および４５５が有効になると、経路Ｓ＿Ｂが活性化され、副クロック信号ＣＬＫ＿Ｓ＿Ｂが出力される。
【００７７】
［エラー測定部の構成例］
図１６は、第２の実施の形態におけるエラー測定部６００の一構成例を示す回路図である。エラー測定部６００は、エラー検出回路６１０および６２０と、エラー数カウンタ６３０および６４０とを備える。
【００７８】
エラー検出回路６１０は、フリップフロップ５１０に生じたタイミングエラーを検出するものである。エラー検出回路６１０は、タイミングエラーの検出結果を示すエラー検出信号ＥＲＲ＿Ａを、エラー数カウンタ６３０へ出力する。エラー検出回路６２０は、フリップフロップ５２０に生じたタイミングエラーを検出するものである。エラー検出回路６２０は、タイミングエラーの検出結果を示すエラー検出信号ＥＲＲ＿Ｂを、エラー数カウンタ６４０へ出力する。エラー検出信号ＥＲＲ＿ＡおよびＥＲＲ＿Ｂには、例えば、タイミングエラーが検出されたときに「１」の値が設定され、検出されていない場合に「０」の値が設定される。
【００７９】
エラー数カウンタ６３０は、最小遅延クロック信号ｍＣＬＫ＿Ａに同期してフリップフロップ５１０について検出されたタイミングエラーの数を計数するものである。エラー数カウンタ６３０は、クロック分配回路制御部７００から信号線６０９を介してイネーブル信号Ｅｎ＿ＣＮＴ＿Ａを受け取る。イネーブル信号Ｅｎ＿ＣＮＴ＿Ａがオン状態になったとき、エラー数カウンタ６３０は、計数値を初期化し、最小遅延クロック信号ｍＣＬＫ＿Ａに同期してタイミングエラーの計数を開始する。エラー数カウンタ６３０は、計数値ＥＲＲ＿ＣＮＴ＿Ａをクロック分配回路制御部７００へ信号線６０９を介して出力し、所定の計測周期が経過したときに計数値を初期化する。
【００８０】
エラー数カウンタ６４０は、最小遅延クロック信号ｍＣＬＫ＿Ｂに同期してフリップフロップ５２０について検出されたタイミングエラーの数を計数するものである。エラー数カウンタ６４０は、クロック分配回路制御部７００から信号線６０９を介してイネーブル信号Ｅｎ＿ＣＮＴ＿Ｂを受け取る。イネーブル信号Ｅｎ＿ＣＮＴ＿Ｂがオン状態になったとき、エラー数カウンタ６４０は、計数値を初期化し、最小遅延クロック信号ｍＣＬＫ＿Ｂに同期してタイミングエラーの計数を開始する。エラー数カウンタ６４０は、計数値ＥＲＲ＿ＣＮＴ＿Ｂをクロック分配回路制御部７００へ出力し、所定の計測周期が経過したときに計数値を初期化する。
【００８１】
図１７は、第２の実施の形態における第２の実施の形態におけるエラー検出回路６１０および６２０の一構成例を示す回路図である。エラー検出回路６１０は、インバータ６１１、遅延部６１２、ラッチ６１４、ＸＯＲ（排他的論理和）ゲート６１５およびラッチ６１６を備える。
【００８２】
インバータ６１１は、最小遅延クロック信号ｍＣＬＫ＿Ａを反転するものである。インバータ６１１は、反転した最小遅延クロック信号ｍＣＬＫ＿Ａをイネーブル信号ｍＣＫ２＿Ａとして遅延部６１２およびラッチ６１６に出力する。
【００８３】
遅延部６１２は、奇数段のインバータ６１３を備え、それらのインバータ６１３により最小遅延クロック信号ｍＣＬＫ＿Ａを遅延させるものである。ここで、インバータ６１３の個数は、例えば、遅延部６１２における遅延時間がフリップフロップ５１０のホールド時間と同程度になるように定められる。遅延部６１２は、最小遅延クロック信号ｍＣＬＫ＿Ａを遅延した信号をイネーブル信号ｍＣＬＫ＿ＥＸ＿Ａとしてラッチ６１４に出力する。なお、インバータ６１１および遅延部６１２は、エラー検出回路６１０でなく、クロック分配部４００に設ける構成とすることもできる。
【００８４】
ラッチ６１４および６１６は、イネーブル信号に従ってデータを透過または保持するものである。ラッチ６１４および６１６は、それぞれ入力端子Ｄ、出力端子Ｑおよびゲートイネーブル端子Ｇを備える。ゲートイネーブル端子Ｇには、イネーブル信号が入力される。ラッチ６１４および６１６は、イネーブル信号がオン状態である場合に、入力端子Ｄに入力された信号を出力端子Ｑにスルー出力する。一方、イネーブル信号がオフ状態である場合に、ラッチ６１４および６１６は、イネーブル信号がオン状態のときに入力端子Ｄに入力されていた信号の値を保持して出力する。
【００８５】
ラッチ６１４の入力端子Ｄには、同期動作回路５００からの入力信号Ｄ＿Ａが入力される。ラッチ６１４の出力端子Ｑは、ＸＯＲゲート６１５の入力端子に接続される。ラッチ６１４のゲートイネーブル端子Ｇには、イネーブル信号ｍＣＫ＿ＥＸ＿Ａが入力される。
【００８６】
ＸＯＲゲート６１５は、ラッチ６１４が出力した信号と同期動作回路５００からのラッチ出力信号Ｌ＿Ａとの排他的論理和をラッチ６１６へ出力するものである。
【００８７】
ラッチ６１６の入力端子Ｄには、ＸＯＲゲート６１５の出力端子が接続される。ラッチ６１６の出力端子Ｑは、エラー数カウンタ６３０に接続される。ラッチ６１６のゲートイネーブル端子Ｇには、イネーブル信号ｍＣＫ２＿Ａが入力される。
【００８８】
エラー検出回路６２０は、インバータ６２１、遅延部６２２、ラッチ６２４、ＸＯＲゲート６２５およびラッチ６２６を備える。
【００８９】
インバータ６２１は、最小遅延クロック信号ｍＣＬＫ＿Ｂを反転するものである。インバータ６２１は、反転した最小遅延クロック信号ｍＣＬＫ＿Ｂをイネーブル信号ｍＣＫ２＿Ｂとして遅延部６２２およびラッチ６２６に出力する。
【００９０】
遅延部６２２は、奇数段のインバータ６２３を備え、それらのインバータ６２３により最小遅延クロック信号ｍＣＬＫ＿Ｂを遅延させるものである。遅延部６２２は、最小遅延クロック信号ｍＣＬＫ＿Ｂを遅延した信号をイネーブル信号ｍＣＬＫ＿ＥＸ＿Ｂとしてラッチ６２４に出力する。
【００９１】
ラッチ６２４および６２６の構成は、ラッチ６１４と同様である。ラッチ６２４の入力端子Ｄには、同期動作回路５００からの入力信号Ｄ＿Ｂが入力される。ラッチ６２４の出力端子Ｑは、ＸＯＲゲート６２５の入力端子に接続される。ラッチ６２４のゲートイネーブル端子Ｇには、イネーブル信号ｍＣＬＫ＿ＥＸ＿Ｂが入力される。
【００９２】
ＸＯＲゲート６２５は、ラッチ６２４が出力した信号と同期動作回路５００からのラッチ出力信号Ｌ＿Ｂとの排他的論理和をラッチ６２６へ出力するものである。
【００９３】
ラッチ６２６の入力端子Ｄには、ＸＯＲゲート６２５の出力端子が接続される。ラッチ６２６の出力端子Ｑは、エラー数カウンタ６４０に接続される。ラッチ６２６のゲートイネーブル端子Ｇには、イネーブル信号ｍＣＫ２＿Ｂが入力される。
【００９４】
この構成において、ラッチ出力信号Ｌ＿Ａは、最小遅延クロック信号ｍＣＬＫ＿Ａの立下りエッジにおける入力信号Ｄ＿Ａが図１３におけるラッチ５１１により保持された値である。一方、図１７におけるラッチ６１４は、最小遅延クロック信号ｍＣＬＫ＿Ａの立下りエッジからホールド時間、遅延したタイミングにおける入力信号Ｄ０を保持する。そして、ＸＯＲゲート６１５は、これらの信号の値が一致しなければタイミングエラーを出力する。このため、最小遅延クロック信号ｍＣＬＫ＿Ａの立下りエッジからホールド時間が経過するまでの間に、入力信号Ｄ＿Ａが変化した場合（すなわち、ホールド違反エラーが発生した場合）に、エラーが検出される。
【００９５】
ここで、最小遅延クロック信号ｍＣＬＫ＿Ａの立下りエッジから、ラッチ５１１のセットアップ時間を遡った期間内に入力信号Ｄ＿Ａが変化した場合（すなわち、セットアップ違反エラーが発生した場合）を考える。この場合、ラッチ５１１に変化後の値が保持されない。この結果、セットアップ違反エラー発生時にもタイミングエラーが検出される。
【００９６】
つまり、最小遅延クロック信号ｍＣＬＫ＿Ａの立下りエッジを境にセットアップ時間およびホールド時間を含む期間において入力信号Ｄ＿Ａが変化した場合にエラー検出回路６１０においてタイミングエラーが検出される。エラー検出回路６２０においても、最小遅延クロック信号ｍＣＬＫ＿Ｂの立下りエッジを境にセットアップ時間およびホールド時間を含む期間において入力信号Ｄ＿Ｂが変化した場合にタイミングエラーが検出される。
【００９７】
そして、フリップフロップにタイミングを指示する主クロック信号の遅延のばらつきが大きいほど、そのフリップフロップにおいてタイミングエラーが生じ易くなる。このため、エラー測定部６００は、測定周期内のエラー数（すなわち、エラーの発生頻度）を計数することにより、主クロック信号の遅延のばらつきを測定することができる。
【００９８】
［クロック分配回路制御部の構成例］
図１８は、第２の実施の形態におけるクロック分配回路制御部７００の一構成例を示すブロック図である。クロック分配回路制御部７００は、主クロック分配回路制御部７１０および副クロック分配回路制御部７２０を備える。
【００９９】
主クロック分配回路制御部７１０は、主クロック分配回路４４０を制御するものである。主クロック分配回路制御部７１０は、同期動作回路５００を動作させる場合にオン状態のイネーブル信号Ｅｎ＿Ｍ＿Ｒｏｏｔ、Ｅｎ＿Ｍ＿ＡおよびＥｎ＿Ｍ＿Ｂを生成して出力する。
【０１００】
副クロック分配回路制御部７２０は、副クロック分配回路４５０を制御するものである。詳細には、副クロック分配回路制御部７２０は、電源供給部２００からの電源電圧ＶＤＤを参照し、電源電圧ＶＤＤが所定電圧より大きい場合、オフ状態のイネーブル信号Ｅｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂを生成して出力する。一方、供給電圧ＶＤＤが所定電圧以下である場合を考える。この場合、副クロック分配回路制御部７２０は、イネーブル信号Ｅｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂをオフ状態にしたままで、イネーブル信号Ｅｎ＿ＣＮＴ＿ＡおよびＥｎ＿ＣＮＴ＿Ｂをオン状態にする。この結果、タイミングエラーの計数が開始される。
【０１０１】
そして、副クロック分配回路制御部７２０は、エラー測定部６００から計数値ＥＲＲ＿ＣＮＴ＿ＡおよびＥＲＲ＿ＣＮＴ＿Ｂを受け取り、それらの計数値に基づいて副クロック分配回路４５０を制御する。詳細には、計数値が所定値以上になっている経路に接続されたＯＲゲート（４６１または４６２）に対して副タイミング信号を分配するように副クロック分配回路４５０に指示する。指示は、イネーブル信号Ｅｎ＿Ｓ＿Ｒｏｏｔ、Ｅｎ＿Ｓ＿ＡおよびＥｎ＿Ｓ＿Ｂのうち、必要な信号をオン状態にすることにより行われる。具体的には、計数値ＥＲＲ＿ＣＮＴ＿Ａが所定値以上となったとき、副クロック分配回路制御部７２０は、イネーブル信号Ｅｎ＿Ｓ＿ＲｏｏｔおよびＥｎ＿Ｓ＿Ａをオン状態にする。これにより、経路Ｓ＿Ａが活性化されてＯＲゲート４６１に副クロック信号が分配される。また、計数値ＥＲＲ＿ＣＮＴ＿Ｂが所定値以上となったとき、副クロック分配回路制御部７２０は、イネーブル信号Ｅｎ＿Ｓ＿ＲｏｏｔおよびＥｎ＿Ｓ＿Ｂをオン状態にする。これにより、経路Ｓ＿Ｂが活性化されてＯＲゲート４６２に副クロック信号が分配される。
【０１０２】
［クロック分配回路制御部の動作例］
図１９は、第２の実施の形態におけるクロック分配回路制御部７００の動作の一例を示すフローチャートである。この動作は、同期動作回路５００を動作させるときに開始する。
【０１０３】
クロック分配回路制御部７００は、イネーブル信号Ｅｎ＿Ｍをオン状態にして主クロック分配回路４４０を活性化し、イネーブル信号Ｅｎ＿Ｓをオフ状態にして副クロック分配回路４５０を不活性化する（ステップＳ９０１）。クロック分配回路制御部７００は、供給電圧ＶＤＤが所定電圧以下であるか否かを判断する（ステップＳ９０２）。
【０１０４】
供給電圧ＶＤＤが所定電圧以下でない場合（ステップＳ９０２：Ｎｏ）、クロック分配回路制御部７００は、ステップＳ９０１に戻る。供給電圧ＶＤＤが所定電圧以下である場合（ステップＳ９０２：Ｙｅｓ）、クロック分配回路制御部７００は、エラー測定部６００に経路Ｍ＿Ａ、Ｍ＿Ｂのそれぞれにおけるタイミングエラーの計数を開始させる（ステップＳ９０３）。
【０１０５】
クロック分配回路制御部７００は、いずれかの計数値が所定値以上であるか否かを判断する（ステップＳ９０４）。いずれの計数値も所定値未満である場合（ステップＳ９０４：Ｎｏ）、クロック分配回路制御部７００はステップＳ９０２に戻る。いずれかの計数値が所定値以上である場合（ステップＳ９０４：Ｙｅｓ）、クロック分配回路制御部７００は、計数値が所定値以上の副クロック分配回路４５０の経路（Ｓ＿ＡまたはＳ＿Ｂ）を活性化する（ステップＳ９０５）。ステップＳ９０５の後、クロック分配回路制御部７００は、クロック分配部４００を制御するための動作を終了する。
【０１０６】
このように第２の実施の形態によれば、主クロック分配回路４４０がクロック信号を複数の主タイミング信号に分岐させて分配する。一方で、副クロック分配回路４５０はイネーブル信号に従ってクロック信号を複数の副タイミング信号に分岐させて分配する。ＯＲゲート４６１および４６２は、それぞれ主タイミング信号および副タイミング信号のうち先に分配された信号を最小遅延タイミング信号ｍＣＬＫとして出力する。同期動作回路５００は、その最小遅延タイミング信号ｍＣＬＫに同期して動作する。エラー測定部６００がタイミングエラーの検出頻度を測定する一方で、クロック分配回路制御部７００は、タイミングエラーの検出頻度が所定値以上である場合に、イネーブル信号により副クロック分配回路４５０にクロック信号の分配を指示する。これにより、タイミングエラーの検出頻度が所定値以上になった場合に、副クロック分配回路４５０により副クロック信号が分配される。副クロック信号が分配されると、ＯＲゲート４６１および４６２がそれぞれ先に分配された信号を出力するため、クロックスキューのばらつきが軽減される。また、副クロック分配回路４５０は、タイミングエラーの検出頻度が高い場合に限り活性化されるため、バッファサイズを増大する構成と比較して電力消費量の増大が抑制される。さらに、それぞれのクロック信号ＣＬＫの値が異なる場合でも、メッシュ配線のように短絡電流が生じないため、メッシュ配線と比較して電力消費量の増大が抑制される。
【０１０７】
なお、主クロック分配回路４４０および副クロック分配回路４５０は、経路を２つ備える構成としているが、経路を１つのみとしてもよい。また、３つ以上の経路を設けてもよい。
【０１０８】
また、集積回路１００は、タイミングエラーの検出頻度を測定しているが、クロック信号の遅延のばらつきを示す値であればタイミングエラーの検出頻度以外の値を測定してもよい。例えば、集積回路１００は、クロック信号の遅延のばらつき自体を測定するように構成されてもよい。
【０１０９】
また、同期動作回路５００は、経路Ａ＿Ｍについて１個のフリップフロップを備えるが、同期動作回路５００の回路構成はこの構成に限定されない。例えば、経路Ａ＿Ｍについて２個以上の個数のフリップフロップを備えてもよい。経路Ｂ＿Ｍについても同様である。
【０１１０】
また、集積回路１００は、ＯＲゲート４６１および４６２を使用して最小遅延タイミング信号ｍＣＬＫを生成する構成としているが、ＯＲゲート以外の論理ゲートを使用して最小遅延タイミング信号ｍＣＬＫを生成してもよい。例えば、同期動作回路５００が立下りエッジに同期して動作する場合、集積回路１００は、ＯＲゲートに代えてＡＮＤゲートによって最小遅延タイミング信号ｍＣＬＫを生成してもよい。
【０１１１】
［第１の変形例］
図２０は、第２の実施の形態における第１の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第１の変形例におけるクロック分配部４００の構成は、ＯＲゲート４６１および４６２に代えてＮＯＲゲート４６３および４６４を備える点において、第１の実施の形態と異なる。第１の変形例における同期動作回路５００の構成は、インバータ５３０および５４０をさらに備える点において、第２の実施の形態と異なる。
【０１１２】
ＮＯＲゲート４６３は、主クロック信号ＣＬＫ＿Ｍ＿Ａおよび副クロック信号ＣＬＫ＿Ｓ＿Ａの否定論理和を最小遅延クロック信号ｍＣＬＫ＿Ａとしてインバータ５３０に出力するものである。ＮＯＲゲート４６４は、主クロック信号ＣＬＫ＿Ｍ＿Ｂおよび副クロック信号ＣＬＫ＿Ｓ＿Ｂの否定論理和を最小遅延クロック信号ｍＣＬＫ＿Ｂとしてインバータ５４０に出力するものである。インバータ５３０は、最小遅延クロック信号ｍＣＬＫ＿Ａを反転してフリップフロップ５１０に出力するものである。インバータ５４０は、最小遅延クロック信号ｍＣＬＫ＿Ｂを反転してフリップフロップ５２０に出力するものである。
【０１１３】
このように第１の変形例によれば、フリップフロップ５１０および５２０のクロック入力端子にインバータが設けられた構成において、クロックスキューのばらつきを低減することができる。
【０１１４】
［第２の変形例］
図２１は、第２の実施の形態における第２の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第２の変形例におけるクロック分配部４００の構成は、ＯＲゲート４６１および４６２に代えてＮＯＲゲート４６３および４６４を備える点において、第２の実施の形態と異なる。第２の変形例における同期動作回路５００の構成は、インバータ５３０および５４０とメッシュ配線５５０をさらに備える点において、第２の実施の形態と異なる。
【０１１５】
ＮＯＲゲート４６３および４６４の構成は、第６の変形例と同様である。インバータ５３０および５４０は、最小遅延クロック信号ｍＣＬＫ＿ＡおよびｍＣＬＫ＿Ｂを反転してメッシュ配線５５０に出力するものである。メッシュ配線５５０は、格子状に配置された複数の領域に最小遅延クロック信号ｍＣＬＫを分配するものである。これらの領域にフリップフロップ５１０および５２０などが配置される。
【０１１６】
このように第２の変形例によれば、メッシュ配線５５０によりフリップフロップ５１０および５２０のクロック入力端子に接続する構成においてクロックスキューのばらつきを低減することができる。
【０１１７】
［第３の変形例］
図２２は、第１の実施の形態における第３の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。上述の第２の実施の形態では同期動作回路５００はクロック信号の立上りエッジにより動作することを想定していたが、この第３の変形例では、同期動作回路５００は立下りエッジにより動作することを想定する。具体的には、第３の変形例におけるクロック分配部４００の構成は、ＯＲゲート４６１および４６２に代えてＡＮＤ（論理積）ゲート４６５および４６６を備える点において、第２の実施の形態と異なる。第３の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備える点において、第２の実施の形態と異なる。
【０１１８】
ＡＮＤゲート４６５は、主クロック信号ＣＬＫ＿Ｍ＿Ａおよび副クロック信号ＣＬＫ＿Ｓ＿Ａの論理積を最小遅延クロック信号ｍＣＬＫ＿Ａとしてフリップフロップ５６０に出力するものである。ＡＮＤゲート４６６は、主クロック信号ＣＬＫ＿Ｍ＿Ｂおよび副クロック信号ＣＬＫ＿Ｓ＿Ｂの論理積を最小遅延クロック信号ｍＣＬＫ＿Ｂとしてフリップフロップ５７０に出力するものである。フリップフロップ５６０および５７０は、最小遅延クロック信号ｍＣＬＫ＿ＡおよびｍＣＬＫ＿Ｂの立下りエッジに同期してデータを取り込み、保持するものである。
【０１１９】
このように第３の変形例によれば、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューのばらつきを低減することができる。
【０１２０】
［第４の変形例］
図２３は、第２の実施の形態における第４の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第４の変形例においても第３の変形例と同様に同期動作回路５００が立下りエッジにより動作することを想定する。第４の変形例におけるクロック分配部４００の構成は、ＯＲゲート４６１および４６２に代えてＮＡＮＤ（否定論理積）ゲート４６７および４６８を備える点において、第２の実施の形態と異なる。第４の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備え、インバータ５３０および５４０をさらに備える点において、第２の実施の形態と異なる。
【０１２１】
ＮＡＮＤゲート４６７は、主クロック信号ＣＬＫ＿Ｍ＿Ａおよび副クロック信号ＣＬＫ＿Ｓ＿Ａの否定論理積を最小遅延クロック信号ｍＣＬＫ＿Ａとしてインバータ５３０に出力するものである。ＮＡＮＤゲート４６８は、主クロック信号ＣＬＫ＿Ｍ＿Ｂおよび副クロック信号ＣＬＫ＿Ｓ＿Ｂの否定論理積を最小遅延クロック信号ｍＣＬＫ＿Ｂとしてインバータ５４０に出力するものである。インバータ５３０は、最小遅延クロック信号ｍＣＬＫ＿Ａを反転してフリップフロップ５６０に出力するものである。インバータ５４０は、最小遅延クロック信号ｍＣＬＫ＿Ｂを反転してフリップフロップ５７０に出力するものである。フリップフロップ５６０および５７０は、最小遅延クロック信号ｍＣＬＫ＿ＡおよびｍＣＬＫ＿Ｂの立下りエッジに同期してデータを取り込み、保持するものである。
【０１２２】
このように第４の変形例によれば、フリップフロップ５１０および５２０のクロック入力端子にインバータが設けられ、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューのばらつきを低減することができる。
【０１２３】
［第５の変形例］
図２４は、第２の実施の形態における第５の変形例におけるクロック分配部４００および同期動作回路５００の一構成例を示す回路図である。この第５の変形例においても第３の変形例と同様に同期動作回路５００が立下りエッジにより動作することを想定する。第５の変形例におけるクロック分配部４００の構成は、ＯＲゲート４６１および４６２に代えてＮＡＮＤゲート４６７および４６８を備える点において、第２の実施の形態と異なる。第５の変形例における同期動作回路５００の構成は、フリップフロップ５１０および５２０に代えてフリップフロップ５６０および５７０を備える点において、第２の実施の形態と異なる。また、第５の変形例における同期動作回路５００の構成は、インバータ５３０および５４０とメッシュ配線５５０をさらに備える点において、第２の実施の形態と異なる。
【０１２４】
ＮＡＮＤゲート４６７および４６８の構成は、第２の実施の形態における第４の変形例と同様である。インバータ５３０および５４０とメッシュ配線５５０との構成は、第２の実施の形態における第２の変形例と同様である。フリップフロップ５６０および５７０の構成は、第２の実施の形態における第４の変形例と同様である。
【０１２５】
このように第５の変形例によれば、メッシュ配線にフリップフロップ５１０および５２０のクロック入力端子が接続され、同期動作回路５００がクロック信号の立下りエッジに同期して動作する構成において、クロックスキューのばらつきを低減することができる。
【０１２６】
＜３．第３の実施の形態＞
［集積回路の構成例］
図２５は、第３の実施の形態における集積回路１００の一構成例を示すブロック図である。この第３の実施の形態における集積回路１００は、電源供給部２００、クロック生成部３００、クロック分配回路４１０、同期動作回路５００、組合せ論理回路５８０およびエラー測定部６００を備える。
【０１２７】
電源供給部２００は、クロック分配回路４１０、同期動作回路５００および組合せ論理回路５８０に電源を供給するものである。具体的には、電源供給部２００は、電源電圧ＶＤＤを降圧する。降圧された電圧は、クロック分配回路４１０にクロック分配回路駆動電圧ｖＣＫとして信号線２０７を介して供給される。また、電源供給部２００は、クロック分配回路駆動電圧ｖＣＫより低い電圧を、組合せ論理回路５８０および同期動作回路５００に論理回路駆動電圧ｖＤＰとして信号線２０８を介して供給する。
【０１２８】
クロック生成部３００は、ＰＬＬなどを用いて所定の周波数のクロック信号ＣＬＫを生成するものである。クロック信号ＣＬＫは、同期動作回路５００およびエラー測定部６００に所定のタイミングを指示するための信号として生成される。クロック生成部３００は、生成したクロック信号ＣＬＫをクロック分配回路４１０に信号線３０９を介して出力する。
【０１２９】
クロック分配回路４１０は、同期動作回路５００を含む集積回路１００内の回路のそれぞれにクロック信号ＣＬＫを分配するものである。クロック分配回路４１０は、クロック信号ＣＬＫを同期動作回路５００に信号線４０９を介して分配し、エラー測定部６００に信号線４０８を介して分配する。エラー測定部６００に対しては、クロック信号ＣＬＫは、エラー数の計数のタイミングを指示するために分配される。なお、クロック分配回路４１０は、特許請求の範囲に記載のタイミング信号分配回路の一例である。
【０１３０】
同期動作回路５００は、クロック信号ＣＬＫに同期して動作する回路である。組合せ論理回路５８０は、同期動作回路５００の動作結果に基づいて所定の論理演算を実行するものである。なお、組合せ論理回路５８０は、特許請求の範囲に記載の論理回路の一例である。
【０１３１】
エラー測定部６００は、同期動作回路５００に生じたタイミングエラーを検出し、その検出頻度を測定するものである。タイミングエラーの検出頻度は、例えば、一定の計測周期内のエラー数を計数することにより測定される。エラー測定部６００は、タイミングエラーの計数値ＥＲＲ＿ＣＮＴを電源供給部２００に信号線６０９を介して出力する。
【０１３２】
図２６は、第３の実施の形態におけるクロック分配回路４１０および同期動作回路５００の一構成例を示す回路図である。クロック分配回路４１０は、所定の段数のバッファ４１１を備え、それらのバッファ４１１を介してクロック信号ＣＬＫを同期動作回路５００に分配する。同期動作回路５００は、フリップフロップ５１０および５２０を備える。フリップフロップ５１０および５２０は、分配されたクロック信号ＣＬＫに同期してデータを取り込んで保持するものである。フリップフロップ５１０に入力される入力信号Ｄ０と、フリップフロップ５１０からのラッチ出力信号Ｌ０とは、エラー測定部６００に信号線５０９を介して出力される。
【０１３３】
また、同期動作回路５００は、組合せ論理回路５８０において必要なデータを出力し、または組合せ論理回路５８０において生成されたデータを受け取る。例えば、フリップフロップ５１０は、保持している信号を出力信号Ｑ０として組合せ論理回路５８０に出力する。また、フリップフロップ５２０は、組合せ論理回路５８０から入力信号Ｄ１を受け取って保持し、保持した信号を出力信号Ｑ１として組合せ論理回路５８０に出力する。
【０１３４】
図２７は、第３の実施の形態におけるエラー測定部６００の一構成例を示すブロック図である。エラー測定部６００は、エラー検出回路６１０およびエラー数カウンタ６３１を備える。エラー検出回路６１０の構成は、第２の実施の形態におけるエラー検出回路６１０の構成と同様である。エラー数カウンタ６３１は、エラー検出回路６１０において所定の測定周期内に検出されたエラー数をクロック信号ＣＬＫに同期して計数するものである。エラー数カウンタ６３１は、計数値ＥＲＲ＿ＣＮＴを電源供給部２００に出力する。
【０１３５】
図２８は、第３の実施の形態におけるクロック分配回路４１０、同期動作回路５００および組合せ論理回路５８０の実装例を示す図である。同図における点線は、クロック信号ＣＬＫを分配するための配線である。集積回路１００には、信号線２０７および２０８を含む複数の信号線が配線され、それらの信号線に回路が接続される。ただし、クロック分配回路４１０と、同期動作回路５００および組合せ論理回路５８０とには、それぞれ異なる電圧が供給されるように回路が配置される。具体的には、信号線２０７にはクロック分配回路４１０が接続される。この信号線２０７には、フリップフロップ５１０および５２０と組合せ論理回路５８０内の論理ゲート５８１とが接続されないように回路が配置される。一方、信号線２０８には、フリップフロップ５１０および５２０と論理ゲート５８１とが接続される。この信号線２０８には、クロック分配回路４１０が接続されないように回路が配置される。このように回路を配置することにより、クロック分配回路４１０には信号線２０７を介してクロック分配回路駆動電圧ｖＣＫが供給され、同期動作回路５００および組合せ論理回路５８０には信号線２０８を介して論理回路駆動電圧ｖＤＰが供給される。
【０１３６】
［電源供給部の構成例］
図２９は、第３の実施の形態における電源供給部２００の一構成例を示すブロック図である。電源供給部２００は、クロック分配回路駆動電圧制御部２１０および論理回路駆動電圧制御部２２０を備える。クロック分配回路駆動電圧制御部２１０は、電源電圧ＶＤＤを降圧してクロック分配回路４１０にクロック分配回路駆動電圧ｖＣＫとして供給するものである。論理回路駆動電圧制御部２２０は、クロック分配回路駆動電圧ｖＣＫを降圧して同期動作回路５００および組合せ論理回路５８０に論理回路駆動電圧ｖＤＰとして供給するものである。なお、クロック分配回路駆動電圧制御部２１０は、特許請求の範囲に記載のタイミング信号分配回路駆動電圧制御部の一例である。
【０１３７】
図３０は、第３の実施の形態におけるクロック分配回路駆動電圧制御部２１０の一構成例を示すブロック図である。クロック分配回路駆動電圧制御部２１０は、クロック分配回路駆動電圧制御回路２１１、電圧制御レジスタ２１２および可変抵抗器２１４を備える。可変抵抗器２１４の一方の端子は電源電圧ＶＤＤを供給する電源に接続され、他方の端子は電源線２０７に接続される。クロック分配回路駆動電圧制御回路２１１は、電圧制御レジスタ２１２の値を更新することにより電源電圧ＶＤＤを降圧してクロック分配回路駆動電圧ｖＣＫとして供給するものである。エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合にクロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｓｃに降圧する。一方、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合にクロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｅｃに昇圧する。なお、ＶｅｃはＶｓｃより高い値に設定される。
【０１３８】
電圧制御レジスタ２１２は、可変抵抗器２１４の抵抗率を制御するための値を保持するものである。可変抵抗器２１４は、電圧制御レジスタ２１２に保持された値の変更に応じて抵抗値が変わる抵抗である。可変抵抗器２１４の抵抗値の変化により、供給されるクロック分配回路駆動電圧ｖＣＫが変化する。
【０１３９】
図３１は、第３の実施の形態におけるクロック分配回路駆動電圧制御回路２１１の動作の一例を示す図である。エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合、クロック分配回路駆動電圧制御回路２１１は、電圧制御レジスタ２１２の値を参照して現在のクロック分配回路駆動電圧ｖＣＫの値を取得する。そして、クロック分配回路駆動電圧制御回路２１１は、そのクロック分配回路駆動電圧ｖＣＫが設定値Ｖｓｃより大きいか否かを判断する。そのクロック分配回路駆動電圧ｖＣＫが設定値Ｖｓｃより大きければ、クロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｓｃに降圧する。一方、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合、クロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖeｃに緊急昇圧する。
【０１４０】
図３２は、第３の実施の形態における電圧制御レジスタ２１２および可変抵抗器２１４の一構成例を示す回路図である。電圧制御レジスタ２１２は、ｎ（ｎは１以上の整数）個のフリップフロップ２１３を備える。可変抵抗器２１４は、並列に接続されたｎ個のｐＭＯＳトランジスタ２１５を備える。フリップフロップ２１３は、１ビットのデータを保持するものである。それぞれのフリップフロップ２１３が保持するデータの初期値は例えば「０」であり、データの値はクロック分配回路駆動電圧制御回路２１１により更新される。フリップフロップ２１３の出力端子と、ｐＭＯＳトランジスタ２１５のゲート端子とは１対１に接続されている。
【０１４１】
ｐＭＯＳトランジスタ２１５は、ゲート端子に入力された信号の値に応じてソース−ドレイン間に電流を流すものである。ｐＭＯＳトランジスタ２１５は、ゲート端子、ソース端子およびドレイン端子を備える。ゲート端子はフリップフロップ２１３の出力端子に接続され、ソース端子は電源電圧ＶＤＤを供給する電源に接続され、ドレイン端子は信号線２０７に接続される。ｐＭＯＳトランジスタ２１５は、ゲート端子に入力されたフリップフロップ２１３の保持値が「０」の場合にオン状態となってソース端子とドレイン端子との間に電流を流し、保持値が「１」の場合にオフ状態となる。ここで、１つのｐＭＯＳトランジスタのオン状態におけるゲート端子とドレイン端子との間の抵抗をＲ０とする。オン状態のｐＭＯＳトランジスタ２１５の個数をｍ（ｍは１以上の整数）個とすると、可変抵抗器２１４の合成抵抗Ｒは、Ｒ０／ｍとなる。つまり、電圧制御レジスタ２１２において「０」の値が多いほど、オン状態のｐＭＯＳトランジスタ２１５の個数が多くなって合成抵抗Ｒが小さくなり、クロック分配回路駆動電圧ｖＣＫが高くなる。なお、可変抵抗器２１４は、抵抗値を制御できる構成であればよく、ｐＭＯＳトランジスタ２１５を並列接続した構成に限定されない。
【０１４２】
図３３は、第３の実施の形態における論理回路駆動電圧制御部２２０の一構成例を示すブロック図である。論理回路駆動電圧制御部２２０は、論理回路駆動電圧制御回路２２１、電圧制御レジスタ２２２および可変抵抗器２２４を備える。可変抵抗器２２４の一方の端子は信号線２０７に接続され、他方の端子は信号線２０８に接続される。クロック分配回路駆動電圧制御回路２１１は、電圧制御レジスタ２２２の値を更新することによりクロック分配回路駆動電圧ｖＣＫを降圧して論理回路駆動電圧ｖＤＰとして供給するものである。エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合に論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖｓｄに降圧する。一方、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合に論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖｅｄに昇圧する。なお、ＶｅｄはＶｓｄより高い値に設定される。
【０１４３】
図３４は、第３の実施の形態における論理回路駆動電圧制御回路２２１の動作の一例を示す図である。エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合、論理回路駆動電圧制御回路２２１は、電圧制御レジスタ２２２の値を参照して現在の論理回路駆動電圧ｖＤＰの値を取得する。そして、論理回路駆動電圧制御回路２２１は、その論理回路駆動電圧ｖＤＰが設定値Ｖｓｄより大きいか否かを判断する。論理回路駆動電圧ｖＤＰが設定値Ｖｓｄより大きければ、論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖｓｄに降圧する。一方、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合、論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖeｄに緊急昇圧する。
【０１４４】
［電源供給部の動作例］
図３５は、第３の実施の形態におけるクロック分配回路駆動電圧制御回路２１１の動作の一例を示すフローチャートである。クロック分配回路駆動電圧制御回路２１１は、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上であるか否かを判断する（ステップＳ９１１）。計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合（ステップＳ９１１：Ｙｅｓ）、クロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖeｃに緊急昇圧する（ステップＳ９１２）。ステップＳ９１２の後、クロック分配回路駆動電圧制御回路２１１は、ステップＳ９１１に戻る。
【０１４５】
計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合（ステップＳ９１１：Ｎｏ）、クロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫが設定値Ｖｓｃより大きいか否かを判断する（ステップＳ９１３）。クロック分配回路駆動電圧ｖＣＫが設定値Ｖｓｃより大きい場合（ステップＳ９１３：Ｙｅｓ）、クロック分配回路駆動電圧制御回路２１１は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｓｃに降圧する（ステップＳ９１４）。クロック分配回路駆動電圧ｖＣＫが設定値Ｖｓｃ以下である場合（ステップＳ９１３：Ｎｏ）、またはステップＳ９１４の後、クロック分配回路駆動電圧制御回路２１１は、ステップＳ９１１に戻る。
【０１４６】
図３６は、第３の実施の形態における論理回路駆動電圧制御回路２２１の動作の一例を示すフローチャートである。論理回路駆動電圧制御回路２２１は、エラーの計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上であるか否かを判断する（ステップＳ９２１）。計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合（ステップＳ９２１：Ｙｅｓ）、論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖeｄに緊急昇圧する（ステップＳ９２２）。ステップＳ９１２の後、論理回路駆動電圧制御回路２２１は、ステップＳ９２１に戻る。
【０１４７】
計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ未満である場合（ステップＳ９２１：Ｎｏ）、論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰが設定値Ｖｓｄより大きいか否かを判断する（ステップＳ９２３）。論理回路駆動電圧ｖＤＰが設定値Ｖｓｄより大きい場合
（ステップＳ９２３：Ｙｅｓ）、論理回路駆動電圧制御回路２２１は、論理回路駆動電圧ｖＤＰを設定値Ｖｓｄに降圧する（ステップＳ９２４）。論理回路駆動電圧ｖＤＰが設定値Ｖｓｄ以下である場合（ステップＳ９２３：Ｎｏ）、またはステップＳ９２４の後、論理回路駆動電圧制御回路２２１は、ステップＳ９２１に戻る。
【０１４８】
図３７は、第３の実施の形態におけるクロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰの第１の設定例を示すグラフである。グラフの縦軸は、クロック分配回路駆動電圧ｖＣＫの設定値であり、横軸は論理回路駆動電圧ｖＤＰの設定値である。この第１の設定例では、論理回路駆動電圧ｖＤＰがＶｃ（例えば、０．７Ｖ）より低い場合に、論理回路駆動電圧ｖＤＰより高い電圧がクロック分配回路駆動電圧ｖＣＫに設定される。そして、このＶｃより低い区間では、論理回路駆動電圧ｖＤＰとクロック分配回路駆動電圧ｖＣＫとの電圧値の差分が一定となるように設定される。Ｖｃ以上の区間においては、クロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰの電圧値は、同一に設定される。
【０１４９】
なお、図３７に例示した設定値以外の電圧を電圧供給部２００に設定してもよい。例えば、図３８は、クロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰの第２の設定例を示すグラフである。この第２の設定例では、論理回路駆動電圧ｖＤＰがＶｃ１（例えば、０．７Ｖ）より低い場合に、第１の設定例と同様に、論理回路駆動電圧ｖＤＰより高い電圧がクロック分配回路駆動電圧ｖＣＫに設定される。論理回路駆動電圧ｖＤＰがＶｃ１以上であり、かつ、Ｖｃ２（＞Ｖｃ１）以下の区間においては、クロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰの電圧値は同一に設定される。そして、論理回路駆動電圧ｖＤＰがＶｃ２より高い区間においては、論理回路駆動電圧ｖＤＰより低い電圧がクロック分配回路駆動電圧ｖＣＫに設定される。この第２の設定例によれば、電圧が十分に高い場合においても電力消費量を低減することができる。
【０１５０】
また、例えば、図３９は、クロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰの第３の設定例を示すグラフである。この第３の設定例では、論理回路駆動電圧ｖＤＰがＶｃより低い区間において一定の電圧値（例えば、Ｖｃ）がクロック分配回路駆動電圧ｖＣＫに設定される。この第３の設定例によれば、集積回路１００は、クロック分配回路駆動電圧ｖＣＫが最低動作電圧未満とならないように制御しつつ、電力消費量を低減することができる。
【０１５１】
このように、第３の実施の形態によれば、電源供給部２００によって、低電圧領域においてはクロック分配回路駆動電圧ｖＣＫより低い論理回路駆動電圧ｖＤＰが組合せ論理回路５８０に供給される。これにより、同一の値の電圧をクロック分配回路４１０および組合せ論理回路５８０に供給する構成と比較して、電力消費量の低減が容易になる。前述したように電圧の低下に伴って、クロック分配回路４１０におけるスキューが指数関数的に増大するが、組合せ論理回路５８０は、クロック分配回路４１０と比較してスキューの影響が少ない。このため、組合せ論理回路５８０の最低動作電圧は、クロック分配回路４１０より低く設定しても構わない。したがって、クロック分配回路駆動電圧ｖＣＫより論理回路駆動電圧ｖＤＰを低くすることにより、集積回路１００全体の電力消費量を容易に低減することができる。
【０１５２】
なお、第３の実施の形態の集積回路１００は、クロック分配回路４１０に代えて第１の実施の形態のクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。これにより、クロックスキューがさらに減少する。同様に、第３の実施の形態の集積回路１００は、クロック分配回路４１０に代えて第２の実施の形態のクロック分配回路制御部７００およびクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。
【０１５３】
［第１の変形例］
図４０は、第３の実施の形態における第１の変形例における集積回路１００の一構成例を示すブロック図である。上述の第３の実施の形態において電圧供給部２００は同期動作回路２００に論理回路駆動電圧ｖＤＰを供給していたが、これ以外の電圧を同期動作回路２００に供給してもよい。例えば、電圧供給部２００は、クロック分配回路駆動電圧ｖＣＫを同期動作回路５００に供給してもよい。第１の変形例の電源供給部２００は、クロック分配回路駆動電圧ｖＣＫを同期動作回路５００に信号線２０７を介して供給する点において、第３の実施の形態と異なる。
【０１５４】
第１の変形例によれば、クロック分配回路駆動電圧ｖＣＫを同期動作回路５００に供給する構成において電力消費量を低減することができる。
【０１５５】
［第２の変形例］
図４１は、第３の実施の形態における第２の変形例における電源供給部２００の一構成例を示すブロック図である。上述の第３の実施の形態においては、クロック分配回路駆動電圧制御部２１０および論理回路駆動電圧制御部２２０が電源に直列に接続される構成としてたが、これらを並列に接続する構成としてもよい。第２の変形例の電源供給部２００は、クロック分配回路駆動電圧制御部２１０および論理回路駆動電圧制御部２２０が電源に並列に接続されている点において第３の実施の形態と異なる。第２の変形例において、論理回路駆動電圧ｖＤＰの設定値Ｖｓｄは、クロック分配回路駆動電圧ｖＣＫの設定値Ｖｓｃより小さい値に設定される。
【０１５６】
第２の変形例によれば、クロック分配回路駆動電圧制御部２１０および論理回路駆動電圧制御部２２０が並列に接続される構成において電力消費量を低減することができる。
【０１５７】
［第３の変形例］
図４２は、第３の実施の形態における第３の変形例における集積回路１００の一構成例を示すブロック図である。電源供給部２００は同期動作回路５００にクロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰのいずれとも異なる電圧を供給してもよい。第３の変形例の電源供給部２００は、同期動作回路駆動電圧ｖＦＦを同期動作回路５００に信号線２０６を介して供給する点において第３の実施の形態と異なる。
【０１５８】
第３の変形例によれば、ｖＤＰおよびｖＣＫのいずれとも異なる同期動作回路駆動電圧ｖＦＦを同期動作回路５００に供給する構成において電力消費量を低減することができる。
【０１５９】
［第４の変形例］
図４３は、第３の実施の形態における第４の変形例における電源供給部２００の一構成例を示すブロック図である。この第４の変形例の電源供給部２００は、クロック分配回路駆動電圧制御部２１０のみが緊急昇圧を行う点において第３の実施の形態と異なる。第４の変形例においては、エラーの計数値ＥＲＲ＿ＣＮＴは、クロック分配回路駆動電圧制御部２１０のみに入力される。計数値ＥＲＲ＿ＣＮＴが閾値Ｔｈ以上である場合にクロック分配回路駆動電圧制御部２１０は緊急昇圧を行う一方、論理回路駆動電圧制御部２２０は緊急昇圧を行わない。
【０１６０】
第４の変形例によれば、論理回路駆動電圧ｖＤＰが緊急昇圧されないため、緊急昇圧時の電力消費量が低減する。
【０１６１】
＜４．第４の実施の形態＞
［集積回路の構成例］
図４４は、第４の実施の形態における集積回路１００の一構成例を示すブロック図である。この第４の実施の形態における集積回路１００は、電源供給部２００、クロック生成部３００、クロック分配回路４１０、同期動作回路５００、組合せ論理回路５８０、エラー測定部６００およびエラー補償制御部８００を備える。
【０１６２】
電源供給部２００は、クロック分配回路４１０、同期動作回路５００および組合せ論理回路５８０に電源を供給するものである。具体的には、電源供給部２００は、所定の電圧値を有するクロック分配回路駆動電圧ｖＣＫをクロック分配回路４１０に信号線２０７を介して供給する。また、電源供給部２００は、所定の電圧値を有する論理回路駆動電圧ｖＤＰを同期動作回路５００および組合せ論理回路５８０に信号線２０８を介して供給する。
【０１６３】
また、電源供給部２００は、エラー補償制御部８００の解析結果に応じてクロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰを制御する。解析結果は、例えば、セットアップ違反エラー、ホールド違反エラーおよびホールド違反エラーの警告を含む。電源供給部２００は、セットアップ違反エラーが発生した場合にクロック分配回路駆動電圧ｖＣＫを緊急昇圧し、ホールド違反エラーが発生した場合にクロック分配回路駆動電圧ｖＣＫおよび論理回路駆動電圧ｖＤＰを緊急昇圧する。また、電源供給部２００は、ホールド違反エラーが発生する前にその警告を受けた場合には、論理回路駆動電圧ｖＤＰを緊急昇圧時の電圧値より低い電圧値に昇圧する。
【０１６４】
クロック生成部３００は、ＰＬＬなどを用いて所定の周波数のクロック信号ＣＬＫを生成するものである。クロック信号ＣＬＫは、同期動作回路５００およびエラー測定部６００に所定のタイミングを指示するための信号として生成される。クロック生成部３００は、生成したクロック信号ＣＬＫをクロック分配回路４１０に信号線３０９を介して出力する。
【０１６５】
クロック分配回路４１０は、同期動作回路５００を含む集積回路１００内の回路のそれぞれにクロック信号ＣＬＫを分配するものである。クロック分配回路４１０は、クロック信号ＣＬＫを同期動作回路５００に信号線４０９を介して分配し、エラー測定部６００に信号線４０８を介して分配する。エラー測定部６００に対しては、クロック信号ＣＬＫは、エラー数の計数のタイミングを指示するために分配される。なお、クロック分配回路４１０は、特許請求の範囲に記載のタイミング信号分配回路の一例である。
【０１６６】
同期動作回路５００は、クロック信号ＣＬＫに同期して動作する回路である。組合せ論理回路５８０は、同期動作回路５００の動作結果に基づいて所定の論理演算を実行するものである。
【０１６７】
エラー測定部６００は、同期動作回路５００に生じたタイミングエラーに基づいてエラーフラグＥＲＲ１およびＥＲＲ２を生成するものである。エラーフラグＥＲＲ１およびＥＲＲ２の相違や、それらの生成方法の詳細については後述する。エラー測定部６００は、エラーフラグＥＲＲ１およびＥＲＲ２をエラー補償制御部８００に信号線６０９を介して出力する。
【０１６８】
エラー補償制御部８００は、エラーフラグＥＲＲ１およびＥＲＲ２の履歴に基づいてタイミングエラーを解析するものである。エラー補償制御部８００は、例えば、タイミングエラーの種類を解析する。タイミングエラーの種類としては、セットアップ違反エラー、ホールド違反エラーおよびホールド違反エラーの警告などがある。タイミングエラーの解析方法については後述する。エラー補償制御部８００は、解析結果を電源供給部２００に信号線８０９を介して出力し、電源供給部２００にエラーを補償させる。
【０１６９】
図４５は、第４の実施の形態におけるエラー測定部６００、同期動作回路５００およびクロック分配回路４１０の一構成例を示す回路図である。エラー測定部６００は、エラー検出回路６５０を備え、同期動作回路５００は、フリップフロップ５１０を備える。クロック分配回路４１０は、インバータ４７１および４７４と、遅延部４７５および４７７とを備える。
【０１７０】
インバータ４７１および４７４は、入力されたクロック信号を反転して出力するものである。インバータ４７１は、クロック生成部３００からのクロック信号ＣＬＫを反転して反転クロック信号ＣＫＢとして同期動作回路５００に信号線４０９を介して出力する。インバータ４７４は、その反転クロック信号ＣＫＢをさらに反転してクロック信号ＣＫ２として同期動作回路５００に信号線４０９を介して出力する。また、インバータ４７４は、クロック信号ＣＫ２をエラー検出回路６５０に信号線４０８を介して出力する。
【０１７１】
遅延部４７５および４７７はクロック信号を遅延させるものである。遅延部４７５は、奇数個のインバータ４７６を備える。遅延部４７５は、それらのインバータ４７６でクロック信号ＣＫ２を所定時間、遅延させて遅延クロック信号ＣＫＢ＿ＥＸ１としてエラー検出回路６５０に信号線４０８を介して出力する。ここで、インバータ４７６の個数は、例えば、遅延部４７５における遅延時間がフリップフロップ５１０のホールド時間と同程度になるように定められる。遅延部４７７は、偶数個のインバータ４７８を備える。遅延部４７７は、それらのインバータ４７８で遅延クロック信号ＣＫＢ＿ＥＸ１をさらに遅延させて遅延クロック信号ＣＫＢ＿ＥＸ２としてエラー検出回路６５０に信号線４０８を介して出力する。
【０１７２】
フリップフロップ５１０は、反転クロック信号ＣＫＢに同期して１ビットのデータを保持するものである。フリップフロップ５１０は、ラッチ５１１および５１２を備える。
【０１７３】
ラッチ５１１は、反転クロック信号ＣＫＢに同期して入力信号を保持するものである。ラッチ５１１は、入力端子Ｑ、出力端子Ｄおよびゲートイネーブル端子Ｇを備える。入力端子には、入力信号Ｄ０が入力され、ゲートイネーブル端子Ｇには、反転クロック信号ＣＫＢが入力され、出力端子Ｄは、ラッチ５１２の入力端子に接続されている。ラッチ５１１は、反転クロック信号ＣＫＢがオン状態の場合には入力信号Ｄ０をラッチ出力信号Ｌ０としてエラー検出回路６５０およびラッチ５１２にスルー出力する。一方、反転クロック信号ＣＫＢがオフ状態になった場合にはラッチ５１１は、立下りエッジにおける入力信号Ｄ０を保持して、保持している信号をラッチ出力信号Ｌ０としてエラー検出回路６５０およびラッチ５１２に出力する。
【０１７４】
ラッチ５１２、６５１、６５３、６５４および６５６の構成はラッチ５１１と同様である。ただし、ラッチ５１２は、クロック信号ＣＫ２がオフ状態になった場合にラッチ出力信号Ｌ０を保持して出力信号Ｑ０として出力する。ラッチ６５１は、遅延クロック信号ＣＫＢ＿ＥＸ１がオフ状態になった場合に入力信号Ｄ０を保持してラッチ出力信号Ｌ１としてＸＯＲゲート６５２の入力端子に出力する。ラッチ６５３は、クロック信号ＣＫ２がオフ状態になった場合にＸＯＲゲート６５２からのエラー信号Ｅ１を保持してエラーフラグＥＲＲ１としてエラー補償制御部８００に出力する。また、ラッチ６５４は、遅延クロック信号ＣＫＢ＿ＥＸ２がオフ状態になった場合に入力信号Ｄ０を保持してラッチ出力信号Ｌ２としてＸＯＲゲート６５５の入力端子に出力する。ラッチ６５６は、クロック信号ＣＫ２がオフ状態になった場合にＸＯＲゲート６５５からのエラー信号Ｅ２を保持してエラーフラグＥＲＲ２としてエラー補償制御部８００に出力する。
【０１７５】
ＸＯＲゲート６５２および６５５は、入力信号の排他的論理和を生成するものである。ＸＯＲゲート６５２は、ラッチ６５１および５１１からのラッチ出力信号Ｌ１およびＬ０の排他的論理和をエラー信号Ｅ１としてラッチ６５３に出力する。ＸＯＲゲート６５５は、ラッチ６５４および５１１からのラッチ出力信号Ｌ２およびＬ０の排他的論理和をエラー信号Ｅ２としてラッチ６５３に出力する。
【０１７６】
なお、ラッチ５１１は、特許請求の範囲に記載のマスタラッチの一例である。ラッチ６５１およびＸＯＲゲート６５２は、特許請求の範囲に記載の第１エラー検出部の一例である。ラッチ６５４およびＸＯＲゲート６５５は、特許請求の範囲に記載の第２エラー検出部の一例である。また、ラッチ６５１は、特許請求の範囲に記載の第１のラッチの一例である。ＸＯＲゲート６５２は、特許請求の範囲に記載の第１の論理ゲートの一例である。ラッチ６５４は、特許請求の範囲に記載の第２のラッチの一例である。ＸＯＲゲート６５５は、特許請求の範囲に記載の第２の論理ゲートの一例である。
【０１７７】
図４５に例示した構成において、第２の実施の形態と同様に、監視開始タイミングからセットアップ時間およびホールド時間が経過するまでの期間において入力信号Ｄ０が変化した場合にエラー信号Ｅ１が出力される。
【０１７８】
次に、ラッチ５１１が反転クロック信号ＣＫＢの立下りエッジにおける入力信号Ｄ０を保持する一方、ラッチ６５１は、クロック信号ＣＫＮ＿ＥＸ１をさらに遅延させた遅延クロック信号ＣＫＢ＿ＥＸ２の立下りエッジにおける入力信号Ｄ０を保持する。そして、ＸＯＲゲート６５５は、これらの信号が一致しなければタイミングエラーを検出する。
【０１７９】
ここで、遅延クロック信号ＣＫＢ＿ＥＸ１の立下りエッジから遅延クロック信号ＣＫＢ＿ＥＸ２の立下りエッジまでの期間を以下では「エラー警告期間」と称する。前述のように、ＸＯＲゲート６５５は、反転クロック信号ＣＫＢの立下りエッジにおける入力信号Ｄ０の値と、遅延クロック信号ＣＫＢ＿ＥＸ２の立下りエッジ（すなわち、エラー警告期間の終点）における入力信号Ｄ０とを比較した結果を出力する。このため、ＸＯＲゲート６５５からは、反転クロック信号ＣＫＢの立下りエッジからホールド時間およびエラー警告期間が経過するまでの間に入力信号Ｄ０の値が変化した場合にエラー信号Ｅ２が出力される。また、監視開始タイミングから反転クロック信号ＣＫＢの立下りエッジまでの間に入力信号Ｄ０の値が変化した場合にも、ラッチ５１１に、変化後の値が保持されずにエラー信号Ｅ２が出力される。
【０１８０】
つまり、監視開始タイミングからセットアップ時間、ホールド時間およびエラー警告期間が経過するまでの期間において入力信号Ｄ０が変化した場合にエラー信号Ｅ２が出力される。
【０１８１】
ここで、反転クロック信号ＣＫＢが立下ってエラー信号Ｅ１およびＥ２が出力された後、反転クロック信号ＣＫＢが立ち上がると、ラッチ５１１のホールドが解除されて入力信号Ｄ０およびラッチ出力信号Ｌ０が同一値となってしまう。しかし、後段のラッチ６５３および６５６が反転クロック信号ＣＫＢの立上り前に、エラー信号Ｅ１およびＥ２の値を保持するため、反転クロック信号ＣＫＢが立ち上った後も、立下り前のエラー信号Ｅ１およびＥ２の値が維持される。
【０１８２】
図４６は、第４の実施の形態におけるエラー補償制御部８００の一構成例を示すブロック図である。エラー補償制御部８００は、エラー解析部８１０およびエラーフラグ前回値保持部８２０を備える。
【０１８３】
エラー解析部８１０は、タイミングエラーＥＲＲ１およびＥＲＲ２の前回値および今回値に基づいてタイミングエラーを解析するものである。詳細には、エラー解析部８１０は、エラーフラグＲＲＲ２のみが前回に検出されてエラーフラグＥＲＲ１およびＥＲＲ２が今回ともに検出された場合、タイミングエラーがホールド違反エラーであると判断する。そして、エラー解析部８１０は、オン状態のホールド違反エラーフラグＥＲＲ＿ＨＯＬＤを電源供給部２００に出力してエラーフラグ前回値保持部８２０の保持値を更新する。
【０１８４】
一方、エラーフラグＥＲＲ１およびＥＲＲ２が前回いずれも検出されずにエラーフラグＥＲＲ１およびＥＲＲ２が今回ともに検出された場合、エラー解析部８１０は、タイミングエラーがセットアップ違反エラーであると判断する。そして、エラー解析部８１０は、オン状態のセットアップ違反エラーフラグＥＲＲ＿ＳＥＴを電源供給部２００に出力してエラーフラグ前回値保持部８２０の保持値を更新する。
【０１８５】
また、エラーフラグＥＲＲ１およびＥＲＲ２が前回いずれも検出されずにエラーフラグＥＲＲ２のみが今回に検出された場合、エラー解析部８１０は、エラー警告期間において入力信号Ｄ０が変化したと判断する。そして、エラー解析部８１０は、オン状態のホールド違反警告フラグＡＬ＿ＨＯＬＤを電源供給部２００に出力してエラーフラグ前回値保持部８２０の保持値を更新する。
【０１８６】
エラーフラグ前回値保持部８２０は、エラーフラグＥＲＲ１およびＥＲＲ２の前回値ＥＲＲ＿ＰＲＥを保持するものである。なお、エラーフラグ前回値保持部８２０は、特許請求の範囲に記載の履歴保持部の一例である。
【０１８７】
図４７は、第４の実施の形態におけるエラー解析部８１０の動作の一例を示す図である。エラーフラグＥＲＲ１およびＥＲＲ２がともに「０」である場合を考える。この場合、エラー解析部８１０は、ホールド違反警告フラグＡＬ＿ＨＯＬＤ、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値を全て「０」にする。また、エラー解析部８１０は、エラーフラグ前回値ＰＲＥ＿ＥＲＲを「００」に更新する。
【０１８８】
エラーフラグＥＲＲ１が「０」でエラーフラグＥＲＲ２が「１」であり、エラーフラグ前回値が「００」である場合、エラー解析部８１０は、ホールド違反警告フラグＡＬ＿ＨＯＬＤを「１」にする。また、エラー解析部８１０は、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値をともに「０」にする。そして、エラー解析部８１０は、エラーフラグ前回値ＰＲＥ＿ＥＲＲを「０１」に更新する。
【０１８９】
エラーフラグＥＲＲ１が「０」でエラーフラグＥＲＲ２が「１」であり、エラーフラグ前回値が「０１」または「１１」である場合、エラー解析部８１０は、ＡＬ＿ＨＯＬＤ、ＥＲＲ＿ＨＯＬＤおよびＥＲＲ＿ＳＥＴの値を全て「０」にする。そして、エラー解析部８１０は、エラーフラグ前回値ＰＲＥ＿ＥＲＲを「０１」に更新する。
【０１９０】
エラーフラグＥＲＲ１が検出される期間はエラーフラグＥＲＲ２が検出される期間に含まれるため、エラーフラグＥＲＲ１のみが「１」となることはない。
【０１９１】
エラーフラグＥＲＲ１およびＥＲＲ２がともに「１」であり、エラーフラグ前回値が「００」である場合、エラー解析部８１０はセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値を「１」にする。また、エラー解析部８１０は、ホールド違反警告フラグＡＬ＿ＨＯＬＤおよびホールド違反エラーフラグＥＲＲ＿ＨＯＬＤの値をともに「０」にする。そして、エラー解析部８１０は、エラーフラグ前回値ＰＲＥ＿ＥＲＲを「１１」に更新する。
【０１９２】
エラーフラグＥＲＲ１およびＥＲＲ２がともに「１」であり、エラーフラグ前回値が「０１」である場合、エラー解析部８１０はホールド違反エラーフラグＥＲＲ＿ＨＯＬＤの値を「１」にする。また、エラー解析部８１０は、ホールド違反警告フラグＡＬ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値をともに「０」にする。そして、エラー解析部８１０は、エラーフラグ前回値ＰＲＥ＿ＥＲＲを「１１」に更新する。
【０１９３】
図４７に例示した動作においてエラーフラグの前回値が「０１」で今回値「１１」であった場合を考える。この場合、入力信号Ｄ０の更新タイミングが、前回はエラー警告期間内であったが、今回は、そのエラー警告期間からずれて、エラーフラグＥＲＲ１が検出される期間内となった可能性が高い。前回と今回とのずれの大きさが急激に変わっていないのであれば、エラー警告期間に近い期間、つまり、反転クロック信号ＣＫＢの立下りの後の期間内に入力信号Ｄ０が更新された可能性が高い。したがって、この場合にエラー解析部８１０は、ホールド違反エラーと判断している。
【０１９４】
一方、エラーフラグの前回値が「００」で今回値「１１」であった場合、エラー警告期間から遠い期間、つまり、反転クロック信号ＣＫＢの立下りエッジの前の期間内に入力信号Ｄ０が更新された可能性が高い。したがって、この場合にエラー解析部８１０は、セットアップ違反エラーと判断している。
【０１９５】
図４８は、第３の実施の形態における電源供給部２００の動作の一例を示す図である。ホールド違反警告フラグＡＬ＿ＨＯＬＤ、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値が全て「０」である場合を考える。この場合、電源供給部２００は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｓｃに制御し、論理回路駆動電圧ｖＤＰを設定値Ｖｓｄに制御する。なお、電源供給部２００は、第３の実施の形態と同様に、論理回路駆動電圧ｖＤＰの設定値Ｖｓｄをクロック分配回路駆動電圧ｖＣＫの設定値Ｖｓｃより低く設定してもよい。
【０１９６】
セットアップ違反エラーフラグＥＲＲ＿ＳＥＴのみが「１」であった場合、電源供給部２００は、クロック分配回路駆動電圧ｖＣＫを設定値Ｖｅｃに緊急昇圧し、論理回路駆動電圧ｖＤＰを設定値Ｖｅｄに緊急昇圧する。
【０１９７】
ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤのみが「１」であった場合、電源供給部２００は、クロック分配回路駆動電圧ｖＣＫのみを設定値Ｖｅｃに緊急昇圧する。
【０１９８】
ホールド違反警告フラグＡＬ＿ＨＯＬＤのみが「１」であった場合、電源供給部２００は、クロック分配回路駆動電圧ｖＣＫをＶｅｃより低い設定値Ｖａｃに昇圧する。
【０１９９】
図４９は、第４の実施の形態におけるエラーフラグＥＲＲ１およびＥＲＲ２がともに「０」となる場合のエラー検出回路６５０の動作の一例を示すタイミングチャートである。この例において、入力信号Ｄ０は、監視開始タイミングからセットアップ時間、ホールド時間およびエラー警告期間が経過するまでの間、値が変化しないものとする。
【０２００】
クロック信号ＣＬＫの立上りに応じて反転クロック信号ＣＫＢに立下りエッジが生じると、前段のラッチ５１１は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ０として出力する。
【０２０１】
反転クロック信号ＣＫＢの立下りに応じてクロック信号ＣＫ２に立上りエッジが生じると、後段のラッチ５１２は、前段からのラッチ出力信号Ｌ０を出力信号Ｑ０としてスルー出力する。
【０２０２】
そして、反転クロック信号ＣＫＢの立下りに遅延して遅延クロック信号ＣＫＢ＿ＥＸ１に立下りエッジが生じると、ラッチ６５１は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ１として出力する。ＸＯＲゲート６５２は、ラッチ出力信号Ｌ０およびＭ１の値がともに「ｄ１」であるから、「０」の値のエラー信号Ｅ１を出力する。ラッチ６５３は、エラー信号Ｅ１を保持してエラーフラグＥＲＲ１として出力する。
【０２０３】
遅延クロック信号ＣＫＢ＿ＥＸ１の立下りに対して、さらに遅延して遅延クロック信号ＣＫＢ＿ＥＸ２に立下りエッジが生じると、ラッチ６５４は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ２として出力する。ＸＯＲゲート６５５は、ラッチ出力信号Ｌ０およびＬ２の値がともに「ｄ１」であるから、「０」の値のエラー信号Ｅ２を出力する。ラッチ６５６は、エラー信号Ｅ２を保持してエラーフラグＥＲＲ２として出力する。
【０２０４】
このように、監視開始タイミングからセットアップ時間、ホールド時間およびエラー警告期間が経過するまでの間、入力信号Ｄ０の値が変化しなかった場合、エラーフラグＥＲＲ１およびＥＲＲ２はともに「０」となる。
【０２０５】
図５０は、第４の実施の形態におけるエラーフラグＥＲＲ２のみが「０」となる場合のエラー検出回路６５０の動作の一例を示すタイミングチャートである。この例において、入力信号Ｄ０は、エラー警告期間内に値が「ｄ１」から「ｄ２」に変化したものとする。エラー警告期間は、遅延クロック信号ＣＫＢ＿ＥＸ１の立下りエッジから遅延クロック信号ＣＫＢ＿ＥＸ２の立下りエッジまでの期間である。
【０２０６】
クロック信号ＣＬＫの立上りに応じて反転クロック信号ＣＫＢに立下りエッジが生じると、前段のラッチ５１１は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ０として出力する。
【０２０７】
そして、反転クロック信号ＣＫＢに立下りに遅延して遅延クロック信号ＣＫＢ＿ＥＸ１に立下りエッジが生じると、ラッチ６５１は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ１として出力する。ＸＯＲゲート６５２は、ラッチ出力信号Ｌ０およびＭ１の値がともに「ｄ１」であるから、「０」の値のエラー信号Ｅ１を出力する。ラッチ６５３は、エラー信号Ｅ１を保持してエラーフラグＥＲＲ１として出力する。
【０２０８】
遅延クロック信号ＣＫＢ＿ＥＸ１に対して、さらに遅延して遅延クロック信号ＣＫＢ＿ＥＸ２に立下りエッジが生じると、ラッチ６５４は、その時点で「ｄ２」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ２を出力する。ＸＯＲゲート６５５は、ラッチ出力信号Ｌ０の値が「ｄ１」でラッチ出力信号Ｌ２の値が「ｄ２」であるから、「１」の値のエラー信号Ｅ２を出力する。ラッチ６５６は、エラー信号Ｅ２を保持してエラーフラグＥＲＲ２として出力する。
【０２０９】
このように、エラー警告期間内に入力信号Ｄ０の値が変化した場合、エラーフラグＥＲＲ２のみが「１」となる。
【０２１０】
図５１は、第４の実施の形態におけるエラーフラグＥＲＲ１およびＥＲＲ１がともに「１」となる場合のエラー検出回路６５０の動作の一例を示すタイミングチャートである。この例において、入力信号Ｄ０は、監視開始タイミングからセットアップ時間およびホールド期間が経過するまでの間に値が「ｄ１」から「ｄ２」に変化したものとする。遅延クロック信号ＣＫＢ＿ＥＸ１に立下りエッジが生じたときが、ホールド時間の経過したときである。
【０２１１】
クロック信号ＣＬＫの立上りに応じて反転クロック信号ＣＫＢに立下りエッジが生じると、前段のラッチ５１１は、その時点で「ｄ１」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ０として出力する。
【０２１２】
そして、反転クロック信号ＣＫＢに立下りに遅延して遅延クロック信号ＣＫＢ＿ＥＸ１に立下りエッジが生じると、ラッチ６５１は、その時点で「ｄ２」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ１として出力する。ＸＯＲゲート６５２は、ラッチ出力信号Ｌ０が「ｄ１」でラッチ出力信号Ｌ１の値が「ｄ２」であるから、「１」の値のエラー信号Ｅ１を出力する。ラッチ６５３は、エラー信号Ｅ１を保持してエラーフラグＥＲＲ１として出力する。
【０２１３】
遅延クロック信号ＣＫＢ＿ＥＸ１に対して、さらに遅延して遅延クロック信号ＣＫＢ＿ＥＸ２に立下りエッジが生じると、ラッチ６５４は、その時点で「ｄ２」の値の入力信号Ｄ０を保持してラッチ出力信号Ｌ２として出力する。ＸＯＲゲート６５５は、ラッチ出力信号Ｌ０の値が「ｄ１」でラッチ出力信号Ｌ２の値が「ｄ２」であるから、「１」の値のエラー信号Ｅ２を出力する。ラッチ６５６は、エラー信号Ｅ２を保持してエラーフラグＥＲＲ２として出力する。
【０２１４】
このように、監視開始タイミングからセットアップ時間およびホールド期間が経過するまでの間に入力信号Ｄ０の値が変化した場合、エラーフラグＥＲＲ１およびＥＲＲ１がともに「１」となる
【０２１５】
図５２は、第４の実施の形態におけるエラー検出回路６５０のトラップウィンドウおよびデータの更新タイミングの一例を示す図である。ここで、トラップウィンドウは、エラー検出回路６５０がタイミングエラーを検出する期間のことである。
【０２１６】
第１トラップウィンドウは、ラッチ６５３がエラーフラグＥＲＲ１を検出する期間である。この期間は、クロック信号ＣＬＫの立上りエッジを境にセットアップ時間およびホールド時間を含む期間である。
【０２１７】
第２トラップウィンドウは、ラッチ６５６がエラーフラグＥＲＲ２を検出する期間である。この期間は、クロック信号ＣＬＫの立上りエッジを境にセットアップ時間およびホールド違反警告マージンを含む期間である。ホールド違反警告マージンは、ホールド時間にエラー警告期間を加えた期間である。
【０２１８】
この第２トラップウィンドウの範囲外において入力信号Ｄ０が更新された場合、エラーフラグＥＲＲ１およびＥＲＲ２がともに「０」となる。エラー警告期間において入力信号Ｄ０が更新された場合、その更新タイミングは第２トラップウィンドウ内であるが第１トラップウィンドウ内に含まれない。このため、エラーフラグＥＲＲ２のみが「１」となる。第１トラップウィンドウ内において入力信号Ｄ０が更新された場合、エラーフラグＥＲＲ１およびＥＲＲ２がともに「１」となる。
【０２１９】
このように、第４の実施の形態によれば、入力信号Ｄ０が第１トラップウィンドウ内において変化した場合にはエラー検出回路６５０によりタイミングエラー（ＥＲＲ１）が検出される。また、入力信号Ｄ０が第２トラップウィンドウ内において変化した場合にはエラー検出回路６５０によりタイミングエラー（ＥＲＲ２）が検出される。そして、エラー解析部８１０は、これらのタイミングエラーの履歴に基づいて反転クロック信号ＣＫＢの立下りエッジの前後のいずれにおいて入力信号Ｄ０が変化したかを判断する。これにより、集積回路１００は、タイミングエラーの種類を判別することができる。
【０２２０】
なお、セットアップ違反エラーを検出した場合に集積回路１００は電圧を昇圧しているが、周波数制御をさらに行ってもよい。例えば、エラー検出回路６５０は、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴを、電源供給部２００でなくクロック生成部３００に出力する。クロック生成部３００は、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴが「１」である場合に「０」の場合よりもクロック信号ＣＬＫの周波数を低下させる。一方、ホールド違反エラーの検出時において、クロック生成部３００は周波数を制御せず、電源供給部２００が電圧を昇圧する。ホールド違反エラーの発生率は、周波数を低下させても低減しないためである。この場合、クロック生成部３００は、特許請求の範囲の周波数制御部の一例である。電圧と比較して周波数は早期に変更することができるため、集積回路１００は、周波数制御により迅速にエラーを補償することができる。
【０２２１】
また、前述の周波数制御を行う場合、集積回路１００は、ホールド違反エラー検出時にクロック分配回路駆動電圧ｖＣＫに加えて論理回路駆動電圧ｖＤＰを昇圧してもよい。
【０２２２】
また、集積回路１００は、クロック分配回路４１０に代えて第１の実施の形態のクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。これにより、クロックスキューがさらに減少する。同様に、集積回路１００は、クロック分配回路４１０に代えて第２の実施の形態のクロック分配回路制御部７００およびクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。
【０２２３】
［第１の変形例］
図５３は、第４の実施の形態における第１の変形例における集積回路１００の一構成例を示すブロック図である。この第１の変形例のクロック分配回路４１０は、クロック信号ＣＬＫをさらにエラー補償制御部８００に信号線４０７を介して分配する点において第４の実施の形態と異なる。エラー補償制御部８００に対しては、クロック信号ＣＬＫは、エラー数を計数するタイミングを指示するために分配される。
【０２２４】
図５４は、第４の実施の形態における第１の変形例におけるエラー補償制御部８００の一例を示すブロック図である。第１５の変形例のエラー補償制御部８００は、エラー解析部８１１およびエラーフラグ計数部８３０を備える。
【０２２５】
エラーフラグ計数部８３０は、ＥＲＲ０１＿ＣＮＴおよびＥＲＲ１１＿ＣＮＴを算出するものである。ＥＲＲ０１＿ＣＮＴは、所定の計測周期内においてエラーフラグＥＲＲ２のみが「１」となった回数である。ＥＲＲ１１＿ＣＮＴは、計測周期内においてエラーフラグＥＲＲ１およびＥＲＲ２がともに「１」となった回数である。エラーフラグ計数部８３０は、これらの計数値をエラー解析部８１１に信号線８３９を介して出力する。なお、エラーフラグ計数部８３０は、特許請求の範囲に記載の履歴保持部の一例である。
【０２２６】
エラー解析部８１１は、計数値ＥＲＲ０１＿ＣＮＴおよびＥＲＲ１１＿ＣＮＴに基づいてエラーを解析するものである。詳細には、ＥＲＲ１１＿ＣＮＴが閾値（例えば、「１」）未満であり、ＥＲＲ０１＿ＣＮＴがＥＲＲ１１＿ＣＮＴよりも大きい場合にエラー解析部８１１は、ホールド違反警告フラグＡＬ＿ＨＯＬＤをオン状態にする。
【０２２７】
また、ＥＲＲ０１＿ＣＮＴが閾値以上であり、ＥＲＲ０１＿ＣＮＴがＥＲＲ１１＿ＣＮＴよりも大きい場合にエラー解析部８１１は、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤをオン状態にする。ＥＲＲ０１＿ＣＮＴがＥＲＲ１１＿ＣＮＴ以下である場合にエラー解析部８１１は、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴをオン状態にする。
【０２２８】
図５５は、第４の実施の形態における第１の変形例におけるエラーフラグ計数部８３０の一構成例を示すブロック図である。エラーフラグ計数部８３０は、ＡＮＤゲート８３１および８３２と、エラーフラグカウンタ８３３および８３４とを備える。
【０２２９】
ＡＮＤゲート８３１および８３２は、入力値の論理積を生成するものである。ＡＮＤゲート８３１は、エラーフラグＥＲＲ１を反転した値とエラーフラグＥＲＲ２との論理積をエラーフラグカウンタ８３３に出力する。ＡＮＤゲート８３２は、エラーフラグＥＲＲ１およびエラーフラグＥＲＲ２の論理積をエラーフラグカウンタ８３４に出力する。
【０２３０】
エラーフラグカウンタ８３３は、所定の計測期間内においてエラーフラグＥＲＲ２の値のみが「１」となった回数を計数するものである。具体的には、エラーフラグカウンタ８３３は、クロック信号ＣＬＫの示すタイミング（例えば、立上りエッジ）においてＡＮＤゲート８３１の出力値が「１」であれば、計数値を増分する。エラーフラグカウンタ８３３は、計数値をＥＲＲ０１＿ＣＮＴとしてエラー解析部８１１に出力する。そして、一定のクロックサイクルが経過したときに計数値を「０」に初期化する。
【０２３１】
エラーフラグカウンタ８３４は、所定の計測期間内においてエラーフラグＥＲＲ１およびエラーフラグＥＲＲ２の値がともに「１」となった回数を計数するものである。エラーフラグカウンタ８２４の構成は、ＡＮＤゲート８３２の出力値を監視する点以外は、エラーフラグカウンタ８３３の構成と同様である。エラーフラグカウンタ８３４は、計数値をＥＲＲ１１＿ＣＮＴとしてエラー解析部８１１に出力する。
【０２３２】
図５６は、第４の実施の形態における第１の変形例におけるエラー解析部８１１の動作の一例を示す図である。ＥＲＲ０１＿ＣＮＴ＝０かつＥＲＲ＿ＣＮＴ＝０である場合を考える。この場合、エラー解析部８１１は、ホールド違反警告フラグＡＬ＿ＨＯＬＤ、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値を全て「０」にする。
【０２３３】
ＥＲＲ０１＿ＣＮＴ＞０かつＥＲＲ１１＿ＣＮＴ＝０である場合にエラー解析部８１１は、ホールド違反警告フラグＡＬ＿ＨＯＬＤの値を「１」にする。また、エラー解析部８１１は、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値をともに「０」にする。
【０２３４】
ＥＲＲ０１＿ＣＮＴ＞ＥＲＲ１１＿ＣＮＴかつＥＲＲ１１＿ＣＮＴ＞０である場合にエラー解析部８１１は、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤの値を「１」にする。また、エラー解析部８１１は、ホールド違反警告フラグＡＬ＿ＨＯＬＤおよびセットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値をともに「０」にする。
【０２３５】
ＥＲＲ１１＿ＣＮＴ≧ＥＲＲ０１＿ＣＮＴかつＥＲＲ０１＿ＣＮＴ＞０である場合、または、ＥＲＲ１１＿ＣＮＴ＞０かつＥＲＲ０１＿ＣＮＴ＝０である場合を考える。この場合、エラー解析部８１１は、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴの値を「１」にする。また、エラー解析部８１１は、ホールド違反警告フラグＡＬ＿ＨＯＬＤおよびホールド違反エラーフラグＥＲＲ＿ＨＯＬＤの値をともに「０」にする。
【０２３６】
なお、エラー解析部８１１は、ＥＲＲ０１＿ＣＮＴ≧ＥＲＲ１１＿ＣＮＴかつＥＲＲ１１＿ＣＮＴ＞０である場合にホールド違反を検出してもよい。この場合、ＥＲＲ１１＿ＣＮＴ＞ＥＲＲ０１＿ＣＮＴかつＥＲＲ１１＿ＣＮＴ＞０であるときにエラー解析部８１１はセットアップ違反エラーを検出する。
【０２３７】
図５７は、第４の実施の形態における第１の実施の形態におけるエラー検出回路６５０のトラップウィンドウおよびデータの更新タイミングの一例を示す図である。分布Ｄｓ１乃至Ｄｓ４は、入力信号Ｄ０の更新タイミングの分布の一例である。
【０２３８】
分布Ｄｓ１は、第１トラップウィンドウ内に全体が含まれないが、一部がエラー警告期間内に含まれる分布である。この分布Ｄｓ１においては、ＥＲＲ０１＿ＣＮＴ＞０かつＥＲＲ１１＿ＣＮＴ＝０となり、ホールド違反警告フラグＡＬ＿ＨＯＬＤが「１」とされる。
【０２３９】
分布Ｄｓ２は、ピークがエラー警告期間内に含まれ、一部が第１トラップウィンドウ内に含まれる分布である。この分布Ｄｓ２においては、ＥＲＲ０１＿ＣＮＴ＞ＥＲＲ１１＿ＣＮＴかつＥＲＲ１１＿ＣＮＴ＞０となり、ホールド違反エラーフラグＥＲＲ＿ＨＯＬＤが「１」とされる。
【０２４０】
分布Ｄｓ３は、第１トラップウィンドウにおけるセットアップ時間内にピークが含まれる分布である。この分布Ｄｓ３においては、ＥＲＲ１１＿ＣＮＴ≧ＥＲＲ０１＿ＣＮＴかつＥＲＲ０１＿ＣＮＴ＞０となり、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴが「１」とされる。
【０２４１】
分布Ｄｓ４は、第１トラップウィンドウおよび第２トラップウィンドウ外にピークが位置し、一部が第１トラップウィンドウに含まれる分布である。この分布Ｄｓ４においては、ＥＲＲ１１＿ＣＮＴ＞０かつＥＲＲ０１＿ＣＮＴ＝０となり、セットアップ違反エラーフラグＥＲＲ＿ＳＥＴが「１」とされる。
【０２４２】
このように第１の変形例によれば、エラー解析部８１１は、ＥＲＲ０１＿ＣＮＴおよびＥＲＲ１１＿ＣＮＴに基づいてタイミングエラーの種類を判別する。エラーフラグの統計からエラーを解析するため、エラー解析部８１１は、エラーフラグの前回値および今回値から解析する第４の実施の形態よりも正確にエラーを解析することができる。
【０２４３】
［第２の変形例］
図５８は、第４の実施の形態における第２の変形例のエラー検出回路６５０、フリップフロップ５１０およびクロック分配回路４１０の一構成例を示す回路図である。この第２の変形例のクロック分配回路４１０は、遅延部４７２および４７９をさらに備える点において第４の実施の形態と異なる。また、第１６の変形例においてインバータ４７１からはクロック信号ＣＫＢ＿ＰＥＸがエラー検出回路６５０および遅延部４７２に出力される。
【０２４４】
遅延部４７２は、クロック信号ＣＫＢ＿ＰＥＸを遅延させるものである。遅延部４７２は、偶数個のインバータ４７３を備え、これらのインバータ４７３でクロック信号ＣＫＢ＿ＰＥＸを遅延させてクロック信号ＣＫＢとしてフリップフロップ５１０およびインバータ４７４に出力する。ここで、インバータ４７３の個数は、例えば、遅延部４７２における遅延時間がフリップフロップ５１０のセットアップ時間より長くなるように定められる。この結果、クロック信号ＣＫＢ＿ＰＥＸにおいて、クロック信号ＣＫＢの立下りエッジから遅延部４７２の遅延時間を遡ったタイミングで立下りエッジが生じることになる。
【０２４５】
遅延部４７９は、遅延クロック信号ＣＫＢ＿ＥＸ２をさらに遅延させるものである。遅延部４７９は、偶数個のインバータ４８０を備える。遅延部４７９は、これらのインバータ４８０で遅延クロック信号ＣＫＢ＿ＥＸ２を遅延させて遅延クロック信号ＣＫＢ＿ＥＸ３としてエラー検出回路６５０に出力する。
【０２４６】
第２の変形例のエラー検出回路６５０は、ラッチ６５７、６５９、６７０および６７２とＸＯＲゲート６５８および６７１とをさらに備える点において第４の実施の形態と異なる。
【０２４７】
ラッチ６５７、６５９、６７０および６７２の構成はラッチ５１１と同様である。ただし、ラッチ６５７は、遅延クロック信号ＣＫＢ＿ＥＸ３がオフ状態になった場合に入力信号Ｄ０を保持してラッチ出力信号Ｌ３として出力する。ラッチ６５９は、クロック信号ＣＫ２がオフ状態になった場合にＸＯＲゲート６５８からのエラー信号を保持してエラーフラグＥＲＲ３としてエラー補償制御部８００に出力する。ラッチ６７０は、クロック信号ＣＫＢ＿ＰＥＸがオフ状態になった場合に入力信号Ｄ０を保持してラッチ出力信号Ｌ４として出力する。ラッチ６７２は、クロック信号ＣＫ２がオフ状態になった場合にＸＯＲゲート６７１からのエラー信号を保持してエラーフラグＥＲＲ４としてエラー補償制御部８００に出力する。
【０２４８】
ＸＯＲゲート６５８および６７１は、入力信号の排他的論理和を出力するものである。ＸＯＲゲート６５８は、ラッチ６５７および５１１からのラッチ出力信号Ｌ３およびＬ０の排他的論理和をエラー信号Ｅ３としてラッチ６５９に出力する。ＸＯＲゲート６７１は、ラッチ６５１および６７０からのラッチ出力信号Ｌ１およびＬ４の排他的論理和をエラー信号Ｅ４としてラッチ６７２に出力する。
【０２４９】
上述の構成により、第２トラップウィンドウの後に遅延部４７９の遅延時間を加えた期間内に入力信号Ｄ０が変化すると、エラー信号Ｅ３が検出される。
【０２５０】
また、監視開始タイミングから遅延部４７２の遅延時間を遡ったタイミングを起点として、その起点から第１トラップウィンドウが経過するまでの期間内に力信号Ｄ０が変化すると、エラー信号Ｅ４が検出される。
【０２５１】
図５９は、第４の実施の形態における第２の変形例のエラー検出回路６５０におけるトラップウィンドウの一例を示す図である。第１６の変形例のエラー検出回路６５０においては、第３トラップウィンドウおよび第４トラップウィンドウが追加される。
【０２５２】
第３トラップウィンドウは、ラッチ６５９がエラーフラグＥＲＲ３を検出する期間である。この期間は、第２のトラップウィンドウの後に遅延部４７９の遅延時間を加えた期間である。
【０２５３】
第４トラップウィンドウは、ラッチ６７２がエラーフラグＥＲＲ４を検出する期間である。この期間は、クロック信号ＣＬＫの立上りエッジから遅延部４７２の遅延時間を遡ったタイミングを起点として、その起点から第１トラップウィンドウの終点までの期間である。
【０２５４】
これらのエラーフラグを使用してエラー補償制御部８００および電源供給部２００は、より正確にエラーを解析してエラー補償を行うことができる。
【０２５５】
例えば、前回にいずれのエラーフラグも「０」であり、今回にエラーフラグＥＲＲ３のみが「１」であった場合に電源供給部２００は、Ｖａｃより低い設定値にクロック分配回路駆動電圧ｖＣＫを昇圧する。
【０２５６】
また、前回にいずれのエラーフラグも「０」であり、今回にエラーフラグＥＲＲ４のみが「１」であった場合にエラー補償制御部８００は、セットアップ違反の警告を行う。前回にエラーフラグＥＲＲ４のみが「１」であり、今回にエラーフラグの全てが「１」である場合にエラー補償制御部８００は、セットアップ違反エラーを検出する。
【０２５７】
なお、エラー検出回路６５０に、ラッチおよびインバータを追加してトラップウィンドウをさらに追加してもよい。また、第１トラップウィンドウに追加するトラップウィンドウは任意である。例えば、集積回路１００は、第１トラップウィンドウに第４トラップウィンドウのみを追加してもよいし、第１トラップウィンドウに第２トラップウィンドウおよび第３トラップウィンドウのみを追加してもよい。
【０２５８】
このように第２の変形例によれば、エラー検出回路６５０がトラップウィンドウを３つ以上備えるため、より正確なエラー解析を行うことができる。
【０２５９】
なお、上述の第４の実施の形態の集積回路１００は、クロック分配回路４１０に代えて第１の実施の形態のクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。これにより、クロックスキューがさらに減少する。同様に、第４の実施の形態の集積回路１００は、クロック分配回路４１０に代えて第２の実施の形態のクロック分配回路制御部７００およびクロック分配部４００を備え、最小遅延クロック信号ｍＣＬＫを同期動作回路５００に分配してもよい。
【０２６０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０２６１】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０２６２】
なお、本技術は以下のような構成もとることができる。
（１）所定のタイミングを指示するタイミング信号を複数の第１の分配点に分配する第１のタイミング信号分配回路と、
前記タイミング信号を複数の第２の分配点に分配する第２のタイミング信号分配回路と、
前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号とのうち遅延が小さい方の信号を最小遅延タイミング信号として出力する最小遅延タイミング信号出力部と、
前記最小遅延タイミング信号に同期して動作する同期動作回路と
を具備する集積回路。
（２）前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との論理和を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、前記最小遅延タイミング信号の立上りエッジに同期して動作する
前記（１）記載の集積回路。
（３）前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との否定論理和を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、
前記最小遅延タイミング信号を反転して出力するインバータと、
前記反転された最小遅延タイミング信号の立上りエッジに同期して動作するフリップフロップと
を備える前記（１）記載の集積回路。
（４）前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との論理積を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、前記最小遅延タイミング信号の立下りエッジに同期して動作する
前記（１）記載の集積回路。
（５）前記最小遅延タイミング信号出力部は、前記複数の第１の分配点のいずれかに分配された前記タイミング信号と前記複数の第２の分配点のいずれかに分配された前記タイミング信号との否定論理積を前記最小遅延タイミング信号として出力し、
前記同期動作回路は、
前記最小遅延タイミング信号を反転して出力するインバータと、
前記反転された最小遅延タイミング信号の立下りエッジに同期して動作するフリップフロップと
を備える前記（１）記載の集積回路。
（６）前記同期動作回路は、
前記最小遅延タイミング信号を格子状に配置された複数の領域に分配するメッシュ配線と、
前記複数の領域のいずれかに分配された前記最小遅延タイミング信号に同期して動作するフリップフロップと
を備える前記（１）乃至（５）のいずれかに記載の集積回路。
（７）前記タイミング信号はクロック信号であり、
前記第１のタイミング信号分配回路は、所定の段数の第１のバッファを介して前記複数の第１の分配点に前記タイミング信号を分配するクロック木であり、
前記第２のタイミング信号分配回路は、所定の段数の第２のバッファを介して前記複数の第２の分配点に前記タイミング信号を分配するクロック木である
前記（１）乃至（６）のいずれかに記載の集積回路。
【符号の説明】
【０２６３】
１００  集積回路
２００  電源供給部
２１０  クロック分配回路駆動電圧制御部
２１１  クロック分配回路駆動電圧制御回路
２１２、２２２  電圧制御レジスタ
２１３、５１０、５２０、５６０、５７０  フリップフロップ
２１４、２２４  可変抵抗器
２１５  ｐＭＯＳトランジスタ
２２０  論理回路駆動電圧制御部
２２１  論理回路駆動電圧制御回路
３００  クロック生成部
４００  クロック分配部
４１０、４２０  クロック分配回路
４１１、４２１、４４２、４４４、４４６、４５２、４５４、４５６  バッファ
４３０、４６１、４６２  ＯＲ（論理和）ゲート
４３１、４６３、４６４  ＮＯＲ（否定論理和）ゲート
４３２、４６５、４６６、８３１、８３２  ＡＮＤ（論理積）ゲート
４３３、４６７、４６８  ＮＡＮＤ（否定論理積）ゲート
４４０  主クロック分配回路
４４１、４４３、４４５、４５１、４５３、４５５  ＰＬＬ
４５０  副クロック分配回路
４７１、４７３、４７４、４７６、４７８、５３０、５４０、６１１、６１３、６２１、６２３  インバータ
４７２、４７５、４７７、６１２、６２２  遅延部
５００  同期動作回路
５１１、５１２、６１４、６１６、６２４、６２６、６５１、６５３、６５４、６５６、６５７、６５９、６７０、６７２  ラッチ
５５０  メッシュ配線
５８０  組合せ論理回路
６００  エラー測定部
６１０、６２０、６５０  エラー検出回路
６１５、６２５、６５２、６５５、６５８、６７１  ＸＯＲ（排他的論理和）ゲート
６３０、６３１、６４０  エラー数カウンタ
７００  クロック分配回路制御部
７１０  主クロック分配回路制御部
７２０  副クロック分配回路制御部
８００  エラー補償制御部
８１０、８１１  エラー解析部
８２０  エラーフラグ前回値保持部
８３０  エラーフラグ計数部
８３３、８３４  エラーフラグカウンタ
【図１】
2013062567.tif 000003
【図２】
2013062567.tif 000004
【図３】
2013062567.tif 000005
【図４】
2013062567.tif 000006
【図５】
2013062567.tif 000007
【図６】
2013062567.tif 000008
【図７】
2013062567.tif 000009
【図８】
2013062567.tif 000010
【図９】
2013062567.tif 000011
【図１０】
2013062567.tif 000012
【図１１】
2013062567.tif 000013
【図１２】
2013062567.tif 000014
【図１３】
2013062567.tif 000015
【図１４】
2013062567.tif 000016
【図１５】
2013062567.tif 000017
【図１６】
2013062567.tif 000018
【図１７】
2013062567.tif 000019
【図１８】
2013062567.tif 000020
【図１９】
2013062567.tif 000021
【図２０】
2013062567.tif 000022
【図２１】
2013062567.tif 000023
【図２２】
2013062567.tif 000024
【図２３】
2013062567.tif 000025
【図２４】
2013062567.tif 000026
【図２５】
2013062567.tif 000027
【図２６】
2013062567.tif 000028
【図２７】
2013062567.tif 000029
【図２８】
2013062567.tif 000030
【図２９】
2013062567.tif 000031
【図３０】
2013062567.tif 000032
【図３１】
2013062567.tif 000033
【図３２】
2013062567.tif 000034
【図３３】
2013062567.tif 000035
【図３４】
2013062567.tif 000036
【図３５】
2013062567.tif 000037
【図３６】
2013062567.tif 000038
【図３７】
2013062567.tif 000039
【図３８】
2013062567.tif 000040
【図３９】
2013062567.tif 000041
【図４０】
2013062567.tif 000042
【図４１】
2013062567.tif 000043
【図４２】
2013062567.tif 000044
【図４３】
2013062567.tif 000045
【図４４】
2013062567.tif 000046
【図４５】
2013062567.tif 000047
【図４６】
2013062567.tif 000048
【図４７】
2013062567.tif 000049
【図４８】
2013062567.tif 000050
【図４９】
2013062567.tif 000051
【図５０】
2013062567.tif 000052
【図５１】
2013062567.tif 000053
【図５２】
2013062567.tif 000054
【図５３】
2013062567.tif 000055
【図５４】
2013062567.tif 000056
【図５５】
2013062567.tif 000057
【図５６】
2013062567.tif 000058
【図５７】
2013062567.tif 000059
【図５８】
2013062567.tif 000060
【図５９】
2013062567.tif 000061