(57)【要約】【課題】本発明は、システム全体のスループットを低下させることなく、実動作中の回路誤動作（セットアップ違反）を認識することができる半導体装置を提供することを目的とする。【解決手段】本発明は、第１レジスタＲ１と、遅延手段Ｂ２と、第２レジスタＲ２と、比較器１とを備える。第１レジスタＲ１は、論理回路（Ｌ１）からのデータをクロック信号の所定のタイミングで取り込む。遅延手段Ｂ２は、クロック信号を遅延させる。第２レジスタＲ２は、第１レジスタＲ１と論理等価であり、遅延手段Ｂ２を経たクロック信号の所定のタイミングで論理回路（Ｌ１）からのデータを取り込む。比較器１は、第１レジスタＲ１の出力Ｑ１と第２レジスタＲ２の出力Ｑ２との比較を行い、第１エラー信号を出力する。【選択図】図５
2008042367.tif 000002
【特許請求の範囲】
【請求項１】
論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、
前記クロック信号を遅延させる遅延手段と、
前記遅延手段を経た前記クロック信号の所定のタイミングで前記論理回路からのデータを取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記第１レジスタの出力と前記第２レジスタの出力との比較を行い、第１エラー信号を出力する第１比較器とを備える半導体装置。
【請求項２】
請求項１に記載の半導体装置であって、
前記クロック信号に対して早いタイミングで前記論理回路からのデータを取り込む、前記第１レジスタと論理等価な第３レジスタと、
前記第１レジスタの出力と前記第３レジスタの出力との比較を行い、第２エラー信号を出力する第２比較器とをさらに備えることを特徴とする半導体装置。
【請求項３】
請求項１又は請求項２に記載の半導体装置であって、
前記遅延手段の遅延量を調整する遅延量調整回路と、
前記第１エラー信号に基づき前記遅延量調整回路を制御する制御回路とをさらに備えることを特徴とする半導体装置。
【請求項４】
請求項１又は請求項２に記載の半導体装置であって、
前記遅延手段は、前記第２レジスタのトランジスタサイズや回路トポロジを前記第１レジスタに対して変化させることで、遅延量を設定することを特徴とする半導体装置。
【請求項５】
請求項１乃至請求項４のいずれか１つに記載の半導体装置であって、
前記第１エラー信号に基づき、前記第１レジスタの出力又は前記第２レジスタの出力のいずれか一方を次段の論理回路へ出力する出力選択回路をさらに備えることを特徴とする半導体装置。
【請求項６】
請求項１乃至請求項５のいずれか１つに記載の半導体装置であって、
前記論理回路に入力する前段のレジスタが変化した場合にのみ、前記遅延手段を経た前記クロック信号を前記第２レジスタに入力させるクロック制御回路をさらに備えることを特徴とする半導体装置。
【請求項７】
論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、
前記論理回路の少なくとも最終段の論理分だけタイミングに余裕を持たせたデータを生成する論理生成手段と、
前記クロック信号の所定のタイミングで前記論理生成手段の出力を取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記第１レジスタの後段に配設され、前記論理生成手段によるタイミングのずれを調整する周期調整レジスタと、
前記周期調整レジスタの出力と前記第２レジスタの出力との比較を行い、エラー信号を出力する比較器とを備える半導体装置。
【請求項８】
論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、
前記クロック信号の所定のタイミングで前記論理回路からのデータを取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記第１レジスタの出力と前記第２レジスタの出力との比較を行い、エラー信号を出力する比較器と、
前記論理回路の論理を固定し、所定のパスを活性化する論理固定手段とを備える半導体装置。
【請求項９】
論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、
前記論理回路の少なくとも最終段の論理を固定し、活性化する論理固定手段と、
前記クロック信号の所定のタイミングで前記論理固定手段からのデータを取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記論理回路の少なくとも最終段の論理を除く前記論理回路からのデータを前記クロック信号の所定のタイミングで取り込む第３レジスタと、
前記第２レジスタの出力と前記第３レジスタの出力との比較を行い、エラー信号を出力する比較器とを備える半導体装置。
【請求項１０】
イネーブル信号に基づきクロック信号の伝送を制御するクロック制御手段と、
論理回路からのデータを前記クロック制御手段から伝送された前記クロック信号の所定のタイミングで取り込む第１レジスタと、
前記クロック信号を遅延させる遅延手段と、
前記遅延手段を経た前記クロック信号の所定のタイミングでデータを取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記イネーブル信号に基づき、前記論理回路からのデータ又は前周期の前記第２レジスタの出力のいずれかを選択し、前記第２レジスタに入力するデータとする論理選択手段と、
前記第１レジスタの出力と前記第２レジスタの出力との比較を行い、エラー信号を出力する比較器とを備える半導体装置。
【請求項１１】
請求項１乃至請求項１０のいずれか１つに記載の半導体装置であって、
前記第１レジスタ及び前記第２レジスタを含む回路全体あるいは一部をセル化することを特徴とする半導体装置。
【請求項１２】
論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、
前記クロック信号を遅延させる遅延手段と、
前記遅延手段を経た前記クロック信号の所定のタイミングで前記論理回路からのデータを取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記第１レジスタの出力と前記第２レジスタの出力との比較を行い、比較信号を出力する比較器とを各々が備える複数の半導体回路と、
前記複数の半導体回路における複数の前記比較信号に対し所定の処理を行いエラー信号を生成するエラー信号生成回路と、
前記エラー信号に基づき、前記クロック信号の周波数を制御するクロック信号発生回路と、
前記エラー信号に基づき、前記複数の半導体回路に供給する電圧を制御するレギュレータ回路とを備える半導体装置。
【請求項１３】
第１クロック信号を所定の期間遅延させた第２クロック信号を生成する遅延手段と、
論理回路からのデータを前記第２クロック信号の所定のタイミングで取り込む第１レジスタと、
前記論理回路からのデータを前記第１クロック信号の所定のタイミングで取り込む、前記第１レジスタと論理等価な第２レジスタと、
前記第１レジスタの出力と前記第２レジスタの出力との比較を行い、エラー信号を出力する比較器とを備える半導体装置。
【請求項１４】
請求項１３に記載の半導体装置であって、
前記遅延手段は、前記第２レジスタのトランジスタサイズや回路トポロジを前記第１レジスタに対して変化させることで、遅延量を設定することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に係る発明であって、特に、誤動作が検知可能な半導体装置に関するものである。
【背景技術】
【０００２】
半導体装置において、種々のバラつき等の理由により、ある記憶素子を終端とするパス遅延にもバラつきが生じる。当該パス遅延についてシミュレーションでは問題なく動作するが、実機ではパス遅延におけるバラつきによりタイミング制約（セットアップ違反）を満足できず動作しなくなる場合があった。
【０００３】
そのため、半導体装置においては、タイミング制約を動的に検知する機構を有する場合があった。当該機構について、例えば、非特許文献１に示すＲａｚｏｒという回路（以下、Ｒａｚｏｒ回路という）が知られている。非特許文献１に示すＲａｚｏｒ回路は、クロック信号ｃｌｋの立上がりエッジに同期してデータを取り込むフリップ−フロップ回路と、クロック信号ｃｌｋのＨｉｇｈ期間にデータを取り込むラッチ回路とを組み合わせた回路である。そして、Ｒａｚｏｒ回路は、フリップ−フロップ回路の出力とラッチ回路の出力との比較を行う比較器と、比較器の結果に基づいて通常論理かラッチ回路の出力かを切り替えるセレクタ回路とを備えている。
【０００４】
非特許文献１に示すＲａｚｏｒ回路は、フリップ−フロップ回路がデータを取り込むタイミングに同期してラッチ回路が開き、クロック信号ｃｌｋがＨｉｇｈ期間のデータを取り込む。つまり、非特許文献１に示すＲａｚｏｒ回路は、フリップ−フロップ回路とラッチ回路の時間差を利用して、クロック信号ｃｌｋの立上がりからクロック信号ｃｌｋのＨｉｇｈ期間までに到達するデータを誤動作（セットアップ違反）として検知することができる。
【０００５】
次に、特許文献１では、主同期回路と同じ構成の副同期回路を２つ設け、当該副同期回路が主同期回路の倍周期で動作する回路構成を有している。そのため、特許文献１に示す回路では、主同期回路で生じたセットアップ違反を、副同期回路で当該誤動作を回復させることができる。
【０００６】
次に、特許文献２では、同一クロック信号ｃｌｋにより動作している送り側フリップ−フロップ回路と受け側フリップ−フロップ回路との間に、組合せ論理回路をクリティカルパスとして介在させている。そして、特許文献２では、当該クリティカルパスでの遅延状態を計測してＬＳＩ外部に表示するようにしている。
【０００７】
【非特許文献１】Dan Ernest他,「Razor: Low-Power Pipeline Based on Circuit-Level Timing Speculation」,IEEE MICRO,2004,P.10-20
【特許文献１】米国特許第６９８５５４７号明細書
【特許文献２】特開２００５−２１４７３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、非特許文献１に示す回路では、セットアップ違反によりエラー信号がアサートされた状態を次の周期まで維持するため、次の周期においてセットアップ違反が生じていないにもかかわらず、エラー信号がアサートされてしまう問題があった。そのため、非特許文献１に示す回路では、当該問題を回避するために、エラー信号がアサートされた周期の次の周期にエラー信号をネゲートする周期を追加してから、データ（通常論理）を取り込まなければならなかった。例え、非特許文献１に示す回路において上記の問題を回避するために周期を追加しても、システム全体のスループットを低下させてしまう問題が残る。
【０００９】
また、非特許文献１に示す回路では、１つのレジスタ出力からレジスタ入力までのあるパスがラッチ回路のイネーブル期間（クロック信号ｃｌｋのＨｉｇｈ期間）よりも短い場合、当該イベントがクリティカルパスを経由したイベントなのか、次の周期の結果に反映されるパスなのか区別できず、誤判定となる場合があった。
【００１０】
さらに、特許文献１に示す回路では、直前（１周期前）の状態を保持してしまうため、セットアップ違反による誤動作を正しく検出できない場合があった。また、特許文献１に示す回路では、構成上回路規模が大きくなる問題があった。なお、非特許文献１及び特許文献１では、セットアップ違反によりエラーが発生してしまってからの対応であるため、エラーを発生させてはいけない製品に対しては適用できないという問題もあった。
【００１１】
また、特許文献２では、セットアップ違反が起こると通常論理を検知することができず、セットアップ違反の状態を回復できない問題があった。
【００１２】
そこで、本発明は、システム全体のスループットを低下させることなく、実動作中の回路誤動作（セットアップ違反）を認識することができる半導体装置を提供することを目的とする。また、本発明は、リカバリー機能と組み合わせることで、製品の信頼性を高めることができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る解決手段は、論理回路からのデータをクロック信号の所定のタイミングで取り込む第１レジスタと、クロック信号を遅延させる遅延手段と、遅延手段を経たクロック信号の所定のタイミングで論理回路からのデータを取り込む、第１レジスタと論理等価な第２レジスタと、第１レジスタの出力と第２レジスタの出力との比較を行い、第１エラー信号を出力する第１比較器とを備える。
【発明の効果】
【００１４】
本発明に記載の半導体装置では、第１レジスタと、遅延手段を経たクロック信号の所定のタイミングで論理回路からのデータを取り込む第２レジスタと、第１レジスタの出力と第２レジスタの出力との比較する第１比較器とを備えるので、実動作中の回路誤動作（セットアップ違反）を認識することが可能となり、リカバリー機能と組み合わせることで、製品の信頼性を高めることができる。
【発明を実施するための最良の形態】
【００１５】
まず、本発明の半導体装置を説明する前に、非特許文献１に開示されているＲａｚｏｒ回路の構成と駆動について説明する。図１に、Ｒａｚｏｒ回路の回路図を示し、図２に、Ｒａｚｏｒ回路のタイミングチャートを示す。
【００１６】
図１では、クロック信号ｃｌｋの立上がりエッジに同期してデータを取り込むフリップ−フロップ回路１０１と、クロック信号ｃｌｋのＨｉｇｈ期間にデータを取り込むラッチ回路１０２と、フリップ−フロップ回路１０１の出力Ｑ１とラッチ回路１０２の出力Ｑ２との比較を行う比較器１０３と、比較器１０３の結果によってロジックステージＬ１の出力Ｄ１（データ）とラッチ回路１０２の出力Ｑ２とを切り替えるセレクタ回路１０４とから構成されている。そして、図１に示す回路は、フリップ−フロップ回路１０１がセレクタ回路１０４の出力Ｓ１からデータを取り込むタイミングに同期してラッチ回路１０２が開き、クロック信号ｃｌｋがＨｉｇｈ期間にデータを取り込む。図１に示す回路では、フリップ−フロップ回路１０１とラッチ回路１０２との時間差を利用して、クロック信号ｃｌｋの立上がりからクロック信号ｃｌｋのＨｉｇｈ期間までに到達するデータを誤動作（セットアップ違反）として検知している。
【００１７】
しかし、Ｒａｚｏｒ回路で行う誤動作検知には、以下のような問題がある。まず、図２に示す３周期分のタイミングチャートにおいて、２周期目のみタイミングが間に合わずセットアップ違反が発生し、他の周期（１及び３周期目）は正常にデータが到達する。まず、２周期目に着目すると、フリップ−フロップ回路１０１は、クロック信号ｃｌｋの立上がりタイミング時に、”１”から”０”に変化するデータの到着が間に合わず、”１”を捕獲してしまう。一方、ラッチ回路１０２は、クロック信号ｃｌｋがＨｉｇｈ期間のデータを捕獲するため”０”を捕獲することになる。そのため、Ｒａｚｏｒ回路は、意図通りエラー信号をアサートすることになる。
【００１８】
しかし、３周期目に着目すると、クロック信号ｃｌｋの立上がりタイミング時に、”０”から”１”に変化するデータが到着しているので、本来セットアップ違反は発生しない。しかし、２周期目でアサートされたエラー信号は、３周期目においてもネゲートされていない。これは３周期目のクロック信号ｃｌｋの立上がりタイミング時に、ロジックステージＬ１の出力Ｄ１からのデータを取り込む必要があるにもかかわらず、２周期目のエラー信号がネゲートされていないために、ラッチ回路１０２の出力Ｑ２を取り込んでいるためである。
【００１９】
その結果、エラー信号がネゲートされてロジックステージＬ１の出力Ｄ１からのパスがアクティブになる時（図２の上向き矢印）、フリップ−フロップ回路１０１はラッチ回路１０２にラッチされている”０”を取り込んでしまっており、アクティブになるラッチ回路１０２のみが”０”から”１”へ変化するデータを取り込むことになる（図２の下向き矢印）。したがって、比較器１０３では、フリップ−フロップ回路１０１の出力Ｑ１とラッチ回路１０２の出力Ｑ２とが一致せず、セットアップ違反が発生していないにもかかわらずエラー信号がアサートされてしまう。
【００２０】
従来は、上記の問題を回避するために、エラーが発生した場合１周期ストールしてエラー信号をネゲートしてから出力Ｑ１を取り込んでいた。そのため、システム全体のスループットが低下していた。
【００２１】
また、図１に示すＲａｚｏｒ回路では、入力データの変化タイミングをモニタしている。しかし、ロジックステージＬ１の出力Ｄ１を発生させるのはクリティカルパスだけではなく、ロジックコーンの入力の全てである。なお、図３では、クリティカルパスをスタートポイントＰ１からエンドポイントであるロジックステージＬ１の出力Ｄ１までのパスとしている。そして、ロジックコーンとは、１出力多入力で構成される論理であり、図３の破線をセルと定義すると、ロジックステージＬ１の出力Ｄ１はＰ１及びＰ２と同一のロジックコーンである。
【００２２】
ここで、仮にロジックコーン中の１つのパスを、例えば図３のスタートポイントＰ２からエンドポイントのロジックステージＬ１の出力Ｄ１までをパスとする場合、当該パスを通過するデータがラッチ回路１０２のイネーブル期間（クロック信号ｃｌｋのＨｉｇｈ期間）よりも短いことが考えられる。このような場合に、図３に示すＲａｚｏｒ回路は、データがクリティカルパスを経由したものなのか、次周期の結果に反映するパス（クロック信号ｃｌｋの立上がりに同期してＰ２からロジックステージＬ１を経由してラッチ回路１０２に到達したパス）を経由したものなのか区別できない。したがって、図３に示すＲａｚｏｒ回路は、次周期の結果に反映するパスのデータに基づけば、誤判定を行ってしまう。
【００２３】
次に、セットアップ違反の定義を行う。図４に、ロジックステージＬ１からロジックステージＬ２へのパスを示す。図４では、クロック信号ｃｌｋの入力点からレジスタＲ０のクロックピンまでのクロック信号ｃｌｋの伝搬時間をＴｄＲ０（ｃｌｋ）、レジスタＲ０のクロックピンから出力ピンまでのデータの伝播時間をＴｄＲ０（ｃｌｋ−Ｑ）とする。また、図４では、出力ピンからロジックステージＬ１を経由してレジスタＲ１のデータピンまでのデータの伝搬時間をＴｄＬ０、クロック信号ｃｌｋの入力点からレジスタＲ１のクロックピンまでのクロック信号ｃｌｋの伝搬時間をＴｄＲ１（ｃｌｋ）とする。さらに、図４では、レジスタＲ１のセットアップタイミングチェック値をＴｓＲ１、クロック信号ｃｌｋの周期をＴｐとする。
【００２４】
図４に示すように設定すると、ＴｄＲ０（ｃｌｋ）＋ＴｄＲ０（ｃｌｋ−Ｑ）＋ＴｄＬ０＋ＴｓＲ１＞Ｔｐ＋ＴｄＲ１（ｃｌｋ）の関係が成立すると、セットアップ違反となる。
【００２５】
本発明では、上式のＴｄＲ０（ｃｌｋ），ＴｄＬ０，ＴｓＲ１，ＴｄＲ１（ｃｌｋ）を後述する実施の形態で回路的に工夫したレジスタと、実動作レジスタとの間の遅延差を利用して、セットアップ違反を動的に検知するものである。
【００２６】
（実施の形態１）
図５に、本実施の形態に係る半導体装置の回路図を示す。図５では、実動作レジスタであるレジスタＲ１に対し、クロックラインに遅延手段であるバッファチェーンＢ２を挿入した分だけタイミング的に余裕（Positive Slack）を持たせたレジスタＲ２を備えている。そして、レジスタＲ１には、ロジックステージＬ１の出力Ｄ１（データ）が入力される。このロジックステージＬ１の前段には、レジスタＲ０が接続されている。一方、レジスタＲ１の出力Ｑ１は、次段のロジックステージＬ２に入力されると共に、比較器１に入力される。
【００２７】
この比較器１は、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２とを比較し、両者が不一致の場合にエラー信号を出力する。そのため、図５に示す回路は、クロックラインに挿入したバッファチェーンＢ２の遅延分だけレジスタＲ１のセットアップ違反を動的に検出することができる。また、図５に示す回路では、バッファチェーンＢ２の遅延量を調整するために選択回路２が設けられている。この選択回路２は、外部から入力される選択信号Ｓｅｌに基づいて駆動される。
【００２８】
図５に示す回路は、同期設計部におけるタイミングクリティカルなレジスタ（クリティカルパスのエンドポイント）を対象としているため、ＳＯＣ（System On a Chip）やマイコン等の全てのデジタル設計分野で適用が可能である。
【００２９】
具体的には、図６に示すブロック図のような適用事例が考えられる。図６では、図５に示す回路が適用されたデジタル回路１０（半導体回路）と、デジタル回路１０にクロック信号ｃｌｋを供給するクロック発生装置１１と、デジタル回路１０に電圧を供給するレギュレータ１２とを備えている。さらに、図６では、デジタル回路１０からのエラー信号に基づき、クロック発生装置１１とレギュレータ１２とを制御する制御回路１３と、デジタル回路１０が適宜参照するメモリ１４とを備えている。なお、制御回路１３は、エラーレート計算の処理も含んでいる。図６では、制御回路１３へのエラー信号がアサートすることで、制御回路１３がクロック発生装置１１やレギュレータ１２を制御し、低消費電力化を実現できる。
【００３０】
次に、図５に示す回路では、レジスタＲ０からロジックステージＬ１を経由してレジスタＲ１へ至るパスがクリティカルパスである。そして、レジスタＲ１の出力Ｑ１が次段のロジックステージＬ２へ伝播する。図５に示す回路では、クロックラインにバッファチェーンＢ２を挿入することにより、セットアップ違反条件を緩和させたレジスタＲ２を設け、レジスタＲ１との結果比較を比較器１で行う。
【００３１】
次に、図５に示す回路の駆動について、図７のタイムチャートを用いて説明する。なお、図７では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。さらに、図７では、レジスタＲ２のクロックピンでの信号をクロック信号Ｃ２、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。なお、クロック信号Ｃ２は、クロック信号Ｃ１に対して挿入したバッファチェーンＢ２の分だけ遅延して伝播する。
【００３２】
まず、１周期目では、出力Ｄ１／Ｄ２の”０”から”１”への遷移（以下、riseイベントともいう）が、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。なお、クロック信号Ｃ１とクロック信号Ｃ２との遅延差により、レジスタＲ１及びレジスタＲ２が論理”１”を取り込むタイミングが少しずれるため、比較器１のエラー信号は一時的に”１”となる。この一時的なハザードは次段の処理で削除可能である。
【００３３】
次に、２周期目では、出力Ｄ１／Ｄ２の”１”から”０”への遷移（以下、fallイベントともいう）が、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”０”を取り込むことができる。
【００３４】
次に、３周期目では、出力Ｄ１／Ｄ２のriseイベントが、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。
【００３５】
次に、４周期目では、出力Ｄ１／Ｄ２のfallイベントが、クロック信号Ｃ１の立上がった後で、且つクロック信号Ｃ２の立上がる前に行われる。つまり、レジスタＲ１のデータの到達がクロック信号Ｃ１の立上がりに間に合わない。そのため、レジスタＲ１の出力Ｑ１は”０”でなく”１”を取り込んでしまい、セットアップ違反による誤動作が生じる。この結果、図５に示す回路では、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２とが異なり比較器１の出力が”１”となって誤動作が検出できる。
【００３６】
したがって、本実施の形態に係る半導体装置では、エラー信号をモニタリングしてシステム制御を行うことで、実動作の対象であるレジスタＲ１の誤動作を検知できるとともに、エラー信号の”１”期間をカウントすることでエラーレート計算も可能となる。
【００３７】
また、クロックラインに挿入するバッファチェーンＢ２の遅延量は、図５に示すように選択信号Ｓｅｌにより制御することが可能なため、レジスタＲ２に対するホールドエラーを引き起こさないようにチューニングすることが可能である。遅延量を調整できる機構を設けることで、ホールドマージン不足による動作不良を防ぐことも可能となる。
【００３８】
なお、図５に示すレジスタＲ１，Ｒ２、バッファチェーンＢ２、比較器１及び選択回路２を囲む枠内をセル化することにより、システムパフォーマンスを劣化させることなくＳＯＣやマイコンの設計手法にも容易に組み込むことができる。
【００３９】
また、本実施の形態では、遅延手段としてバッファチェーンＢ２を設けているが、本発明はこれに限られず、バッファチェーンＢ２を設けずにレジスタＲ２のトランジスタサイズや回路トポロジをレジスタＲ１のトランジスタサイズや回路トポロジに対して変更させてもよい。これにより、レジスタＲ２は、レジスタＲ１に対しクロック信号ｃｌｋを遅延させることがでタイミング的余裕を得たり、逆に、レジスタＲ１に対しクロック信号ｃｌｋを早めることでタイミング的に厳しくすることが可能となる。
【００４０】
（実施の形態２）
図８に、本実施の形態に係る半導体装置の回路図を示す。図８に示す回路では、実動作レジスタであるレジスタＲ１に対し、クロックラインに遅延手段であるバッファＢ２を挿入した分だけタイミングに余裕（Positive Slack）を持たせたレジスタＲ２を備えている。そして、レジスタＲ１には、ロジックステージＬ１の出力Ｄ１（データ）が入力される。このロジックステージＬ１の前段には、レジスタＲ０が接続されている。一方、レジスタＲ１の出力Ｑ１は、次段のロジックステージＬ２に入力されると共に、比較器１に入力される。
【００４１】
この比較器１は、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２とを比較し、第１エラー信号を出力する。そのため、図８に示す回路は、クロックラインに挿入したバッファＢ２の遅延分だけレジスタＲ１のセットアップ違反を動的に検出することができる。
【００４２】
さらに、図８に示す回路では、クロックツリーのバッファＢ１前で、且つバッファＢ０後のクロック信号ｃｌｋを用いて、レジスタＲ１に対しバッファＢ１の遅延分だけタイミングを厳しくさせた（Negative Slack）レジスタＲ３を備えている。そして、比較器３は、レジスタＲ１の出力Ｑ１とレジスタＲ３の出力Ｑ３とを比較し、第２エラー信号を出力する。そのため、図８に示す回路は、クロックラインに挿入したバッファＢ１の遅延分だけレジスタＲ１のセットアップ違反を動的に検出することができる。
【００４３】
ここで、実回路の動作では、必要なデータはレジスタＲ１を経由し、レジスタＲ３は単なるモニタとして使用されるのみであるため、レジスタＲ３の誤動作が実動作に影響を与えることはない。したがって、本実施の形態に係る半導体装置では、レジスタＲ３を用いて、電圧や周波数を制御することで動作限界値からクリティカルポイントを認識することが可能となり、実回路を誤動作させることなく、電圧や周波数の動作下限を認識できる。
【００４４】
次に、図８に示す回路の駆動について、図９のタイムチャートを用いて説明する。なお、図９では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。さらに、図９では、レジスタＲ２のクロックピンでの信号をクロック信号Ｃ２、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。また、図９では、レジスタＲ３のクロックピンでの信号をクロック信号Ｃ３、レジスタＲ３のデータ入力ピンでの信号を出力Ｄ３、レジスタＲ３のデータ出力ピンでの信号を出力Ｑ３としている。
【００４５】
なお、クロック信号Ｃ２は、クロック信号Ｃ１に対して挿入したバッファＢ２の分だけ遅延し、クロック信号Ｃ１は、クロック信号Ｃ３に対して挿入したバッファＢ１の分だけ遅延して伝播する。また、出力Ｑ１と出力Ｑ２とを比較する比較器１の出力を出力Ｅ１、出力Ｑ１と出力Ｑ３とを比較する比較器３の出力を出力Ｅ２とする。そして、出力Ｅ１をクロック信号Ｃ１のタイミングで取り込むレジスタ４の出力を第１エラー信号とし、出力Ｅ２をクロック信号Ｃ１のタイミングで取り込むレジスタ５の出力を第２エラー信号とする。
【００４６】
まず、１周期目では、出力Ｄ１／Ｄ２／Ｄ３のriseイベントが、各クロック信号Ｃ１／Ｃ２／Ｃ３の立上がる前に行われる。そのため、レジスタＲ１，レジスタＲ２及びレジスタＲ３は、正常に論理”１”を取り込むことができる。
【００４７】
次に、２周期目では、出力Ｄ１／Ｄ２／Ｄ３のfallイベントが、クロック信号Ｃ３の立上がった後で、且つクロック信号Ｃ１，Ｃ２の立上がる前に行われる。つまり、レジスタＲ３のデータの到達がクロック信号Ｃ３の立上がりに間に合わない。そのため、レジスタＲ３の出力Ｑ３は”０”でなく”１”を取り込んでしまい、セットアップ違反による誤動作が生じる。この結果、図８に示す回路では、レジスタＲ１の出力Ｑ１とレジスタＲ３の出力Ｑ３とが異なり比較器３の出力Ｅ２が”１”となって誤動作が検出され、第２エラー信号の次の１周期間が”１”となる。
【００４８】
次に、３周期目では、出力Ｄ１／Ｄ２／Ｄ３のriseイベントが、各クロック信号Ｃ１／Ｃ２／Ｃ３の立上がる前に行われる。そのため、レジスタＲ１，レジスタＲ２及びレジスタＲ３は、正常に論理”１”を取り込むことができる。また、２周期目でアサートされていた出力Ｅ２も正常にネゲートされる。
【００４９】
次に、４周期目では、出力Ｄ１／Ｄ２／Ｄ３のfallイベントが、クロック信号Ｃ１，Ｃ３の立上がった後で、且つクロック信号Ｃ２の立上がる前に行われる。つまり、レジスタＲ１，Ｒ３のデータの到達がクロック信号Ｃ１，Ｃ３の立上がりに間に合わない。そのため、レジスタＲ１の出力Ｑ１及び，レジスタＲ３の出力Ｑ３は”０”でなく”１”を取り込んでしまい、セットアップ違反による誤動作が生じる。この結果、図８に示す回路では、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２とが異なり比較器１の出力Ｅ１が”１”となって誤動作が検出され、第１エラー信号の次の１周期間が”１”となる。
【００５０】
したがって、本実施の形態に係る半導体装置では、第２エラー信号をモニタリングし、”１”になった時点でシステム制御を行うことで、実動作の対象であるレジスタＲ１に誤動作を生じさせることなく誤動作を検出することが可能となる。また、本実施の形態に係る半導体装置では、第１エラー信号の”１”期間をカウントすることでエラーレート計算も可能となる。なお、図８に示す回路では、バッファＢ０，Ｂ１，Ｂ２に対して図５に示した選択回路２を設けて遅延量を調整する構成を採用することもできる。
【００５１】
（実施の形態３）
図１０に、本実施の形態に係る半導体装置の回路図を示す。図１０に示す回路は、基本的に図５に示す回路と同じであり、出力選択回路６が追加されている点が異なる。この出力選択回路６は、比較器１の出力であるエラー信号が”０”の時、レジスタＲ１の出力Ｑ１をロジックステージＬ２に出力し、エラー信号が”１”の時、レジスタＲ２の出力Ｑ２をロジックステージＬ２に出力するように切り替え制御する。
【００５２】
次に、図１０に示す回路の駆動について、図１１のタイムチャートを用いて説明する。なお、図１１では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。さらに、図１１では、レジスタＲ２のクロックピンでの信号をクロック信号Ｃ２、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。なお、クロック信号Ｃ２は、クロック信号Ｃ１に対して挿入したバッファＢ２の分だけ遅延して伝播する。
【００５３】
まず、１周期目では、出力Ｄ１／Ｄ２のriseイベントが、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。なお、クロック信号Ｃ１とクロック信号Ｃ２との遅延差により、レジスタＲ１及びレジスタＲ２が論理”１”を取り込むタイミングが少しずれるため、比較器１のエラー信号は一時的に”１”となる。それに伴いロジックステージＬ２への出力（Output信号）も、その間、前周期で取り込まれた出力Ｑ２の値となるが、その後、出力Ｑ１への出力に切り替わり正常に動作することになる。
【００５４】
ただし、この系のパスを完結させるためには、通常の論理以外に、レジスタＲ２のクロックピン（Ｃ２）− レジスタＲ２のデータ出力ピン（Ｑ２）−出力選択回路６−ロジックステージＬ２を経由するパスが、次段のレジスタのセットアップを満足する必要がある。
【００５５】
次に、２周期目では、出力Ｄ１／Ｄ２のfallイベントが、クロック信号Ｃ１の立上がって後で、且つクロック信号Ｃ２の立上がる前に行われる。つまり、レジスタＲ１のデータの到達がクロック信号Ｃ１の立上がりに間に合わない。そのため、レジスタＲ１の出力Ｑ１は”０”でなく”１”を取り込んでしまい、セットアップ違反による誤動作が生じる。しかし、レジスタＲ２では、出力Ｄ２のfallイベントの到達がクロック信号Ｃ２の立上がりに間に合うため、レジスタＲ２の出力Ｑ２は”０”を取り込むことができる。
【００５６】
ここで、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２との相違により、比較器１の出力であるエラー信号が”１”となって誤動作が検出できる。なお、エラー信号によって出力選択回路６が、出力Ｑ２をロジックステージＬ２に出力する経路に切り替えるため、スループットを低下させることなくロジックステージＬ２に正しいデータを伝搬できる。
【００５７】
次に、３周期目では、出力Ｄ１／Ｄ２のriseイベントが、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。また、２周期目でアサートされていたエラー信号も正常にネゲート（論理”０”）され、Output信号として出力Ｑ１が出力される。
【００５８】
次に、４周期目では、２周期目と同様、出力Ｄ１のfallイベントの到達がクロック信号Ｃ１の立上がりに間に合わない。そのため、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２との相違により、比較器１の出力であるエラー信号が”１”となって誤動作が検出できる。なお、エラー信号によって出力選択回路６が、出力Ｑ２をロジックステージＬ２に出力する経路に切り替えられ、ロジックステージＬ２に正しいデータが伝搬される。
【００５９】
以上のように、本実施の形態に係る半導体装置では、第１エラー信号に基づき、レジスタＲ１の出力Ｑ１又はレジスタＲ２の出力Ｑ２のいずれか一方をロジックステージＬ２へ出力する出力選択回路６を備えているので、実動作時にリカバリーできるため、不必要に動作マージンを確保しなくても済むことになり、歩留まり向上に貢献できる。
【００６０】
（実施の形態４）
図１２に、本実施の形態に係る半導体装置の回路図を示す。図１２に示す回路は、基本的に図５に示す回路と同じであり、前段のレジスタの変化に基づいて制御されるクロック制御回路７が追加されている点が異なる。このクロック制御回路７は、前段のレジスタＲ０への入力とレジスタＲ０からの出力との排他的論理和（ＥＯＲ）を取る論理回路７１と、論理回路７１の出力Ｇ２とバッファＢ２を経たクロック信号ｃｌｋとの論理積（ＡＮＤ）を取る論理回路７２とで構成されている。
【００６１】
ただし、レジスタＲ２に供給されるクロック信号ｃｌｋは、レジスタＲ０に供給されるクロック信号に比べて挿入したバッファＢ２の分だけ遅延する。そのため、有効な遅延量を得るために、バッファセル挿入、配線長調整、配線物性調整等の手法を用いて調節する必要がある。本実施の形態に係る半導体装置では、全周期においてレジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２との比較を行うのではなく、レジスタＲ０に変化のあった場合のみ比較を行うので、対象回路の活性率を抑えることにより低消費電力化を実現することができる。
【００６２】
次に、図１２に示す回路の駆動について、図１３のタイムチャートを用いて説明する。なお、図１３では、レジスタＲ０のクロックピンでの信号をクロック信号Ｃ０、レジスタＲ０のデータ入力ピンでの信号を出力Ｄ０、レジスタＲ０のデータ出力ピンでの信号を出力Ｑ０としている。また、図１３では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。
【００６３】
さらに、図１３では、レジスタＲ２のクロックピンでの信号をクロック信号Ｃ２、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。なお、クロック信号Ｃ２は、クロック信号Ｃ１に対して挿入したバッファＢ２の分だけ遅延して伝播する。
【００６４】
まず、１周期目では、出力Ｄ１／Ｄ２のriseイベントが、各クロック信号Ｃ１／Ｃ２が立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。なお、出力Ｄ０と出力Ｑ０とが相違する期間に出力Ｇ２は”１”となり、当該期間にクロック信号Ｃ２が立上がり、レジスタＲ２がデータを取り込むことができるようにバッファＢ２の遅延量を調整している。
【００６５】
また、バッファＢ２によるクロック信号Ｃ１とクロック信号Ｃ２との遅延差により、レジスタＲ１及びレジスタＲ２が論理”１”を取り込むタイミングが少しずれるため、比較器１のエラー信号は一時的に”１”となる。しかし、その後、出力Ｑ２が正常に”１”を取り込むことでエラー信号は”０”に戻る。
【００６６】
次に、２周期目では、出力Ｄ０と出力Ｑ０とに相違がないため、つまりレジスタＲ０に対するイベント（データ）が発生しないため、クロック信号Ｃ２はレジスタＲ２に供給されない。したがって、レジスタＲ２の活性化に伴う電力消費を削減することができる。
【００６７】
次に、３周期目では、レジスタＲ１における出力Ｄ１のfallイベントが、クロック信号Ｃ１の立上がりに間に合わないため、レジスタＲ１が”０”を取り込むことができない。しかし、レジスタＲ２に関しては、出力Ｄ０と出力Ｑ０とが相違することで出力Ｇ２が”１”となり、クロック信号Ｃ１に対しバッファＢ２の分だけ遅延したクロック信号Ｃ２が入力される。バッファＢ２の分だけ遅れてクロック信号Ｃ２が立上がることにより、レジスタＲ２は正常に論理”０”を取り込むことができる。したがって、レジスタＲ１の出力Ｑ１とレジスタＲ２の出力Ｑ２との結果の相違により、比較器１の出力（エラー信号）は”１”となって誤動作が検出できる。
【００６８】
次に、４周期目では、２周期目と同様、出力Ｄ０と出力Ｑ０とに相違がないため、つまりレジスタＲ０に対するイベント（データ）が発生しないため、クロック信号Ｃ２はレジスタＲ２に供給されない。したがって、レジスタＲ２の活性化に伴う電力消費を削減することができる。
【００６９】
次に、５周期目では、出力Ｄ１／Ｄ２のriseイベントが、各クロック信号Ｃ１／Ｃ２の立上がる前に行われる。そのため、レジスタＲ１及びレジスタＲ２は、正常に論理”１”を取り込むことができる。なお、３周期目でアサートされていたエラー信号も、当該周期において正常にネゲート（論理”０”）される。
【００７０】
（実施の形態５）
図１４に、ロジックステージＬ１からレジスタＲ１を経由してロジックステージＬ２に至るパスと、ロジックステージＬ１’からレジスタＲ１を経由してロジックステージＬ２に至るパスとが図示されている。図１４では、ロジックステージＬ１及びロジックステージＬ１’の最終論理であるＡＮＤ回路８が共通化されている。つまり、実施の形態１〜４で示したロジックステージＬ１は、図１４に示すロジックステージＬ１とＡＮＤ回路８とを合わせた回路となる（破線で囲む部分）。
【００７１】
本実施の形態に係る半導体装置では、図１４の構成を利用し、ロジックステージＬ１及びロジックステージＬ１’の最終論理を分離して構成している。図１５に本実施の形態に係る半導体装置の回路図を示す。図１５では、レジスタＲ０からロジックステージＬ１及びＡＮＤ回路８の入力ピンＡを経由してレジスタＲ１へ至るパスをクリティカルパスであると仮定する。そして、ＡＮＤ回路８のもう一方の入力ピンＢには、他のロジックステージＬ１’よりデータが伝播される。
【００７２】
さらに、図１５に示す回路では、ＡＮＤ回路９の入力ピンＡの前段にレジスタＲ１−１を挿入する。これにより、オリジナルのクリティカルパスであるレジスタＲ０からレジスタＲ１へのパスに対して、レジスタＲ０からレジスタＲ１−１へのパスは、ＡＮＤ回路８の分だけタイミングに余裕を持たせている。同様に、ロジックステージＬ１’からレジスタＲ１へのパスに対して、ロジックステージＬ１’からレジスタＲ１−２へのパスは、ＡＮＤ回路８の分だけタイミングに余裕を持たせている。
【００７３】
なお、図１５に示す回路では、レジスタＲ１に対するオリジナル論理を実現するために、レジスタＲ１−１及びレジスタＲ１−２の後段にＡＮＤ回路９を挿入し、その結果をレジスタＲ２で取り込んでいる。ここで、図１５に示す回路では、レジスタＲ１−１，レジスタＲ１−２及びＡＮＤ回路９が、最終段の論理分だけタイミングに余裕を持たせたデータを生成する論理生成手段を構成している。
【００７４】
さらに、図１５に示す回路では、レジスタＲ１−１及びレジスタＲ１−２を設けることで、レジスタＲ１に対して１周期遅れてレジスタＲ２との同期を取るためにレジスタＲ１の後段にレジスタＲ１’を設けている。そのため、実施の形態１等と同様に、レジスタＲ１’の出力とレジスタＲ２の出力とを比較器１で比較することで、レジスタＲ１のセットアップ違反を判定することができる。
【００７５】
次に、図１５に示す回路の駆動について、図１６のタイムチャートを用いて説明する。なお、図１６では、ＡＮＤ回路８の入力ピンＡでの信号を入力８Ａ、ＡＮＤ回路８の入力ピンＢでの信号を入力８Ｂとしている。また、図１６では、クロック信号をｃｌｋ、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。また、図１６では、レジスタＲ１−１のデータ出力ピンでの信号を出力Ｑ１−１、レジスタＲ１−２のデータ出力ピンでの信号を出力Ｑ１−２、レジスタＲ１’のデータ出力ピンでの信号を出力Ｑ１’、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。なお、本実施の形態では、入力８Ｂを”１”に固定している。また、出力Ｑ１’は、単純に１周期ずれた出力Ｑ１を同相転送するだけであるので以下では詳しい説明を省略する。
【００７６】
まず、１周期目では、入力８Ｂが”１”に固定されているため、入力８Ａのriseイベントが出力Ｄ１へ伝播する。そして、出力Ｄ１のriseイベントが各クロック信号ｃｌｋの立上がる前に行われるので、レジスタＲ１及びレジスタＲ１−１は、正常に論理”１”を取り込むことができる。
【００７７】
次に、２周期目では、１周期目における出力Ｑ１，出力Ｑ１−１の結果により、レジスタＲ１’及びレジスタＲ２のそれぞれが”１”を取り込み、出力Ｑ１’と出力Ｑ２との比較によりエラー信号が”０”となる。なお、レジスタＲ１は、入力８Ａにおけるfallイベントが、出力Ｄ１へ伝播するタイミングにクロック信号ｃｌｋの立上がりが間に合わない。したがって、レジスタ１は論理”０”を取り込むことができない。しかし、レジスタＲ１−１では、入力８Ａにおけるfallイベント後にクロック信号ｃｌｋの立上がりが発生するため、正常に論理”０”を取り込むことができる。
【００７８】
次に、３周期目では、２周期目におけるレジスタＲ１及びレジスタＲ１−１の結果により出力Ｑ１’と出力Ｑ２との値が一致せず、エラー信号は”１”となって誤動作を検出できる。なお、レジスタＲ１は、入力８Ａにおけるriseイベントが出力Ｄ１へ伝播し、当該タイミングにクロック信号ｃｌｋのriseイベントが間に合うため、レジスタＲ１−１及びレジスタＲ１は、ともに正常に論理”１”を取り込むことができる。
【００７９】
次に、４周期目では、２周期目と同様の状況が発生し、結果としてエラー信号は”０”となる。また、５周期目では、３周期目と同様の状況が発生し、結果としてエラー信号は”１”となり、誤動作を検出する。
【００８０】
なお、本実施の形態では、図１５に示すようにロジックステージＬ１の最終論理のみ分離する構成を示したが、本発明はこれに限られず最終論理を含む複数段をロジックステージＬ１から分離した構成でもよい。
【００８１】
（実施の形態６）
図１７に、本実施の形態に係る半導体装置の回路図を示す。図１７に示す回路では、レジスタＲ０からロジックステージＬ１を経由して、レジスタＲ１へ至るパスがクリティカルパスであると仮定する。そして、図１７に示す回路では、TestMode信号を入力するピンを設け、当該TestMode信号はスタートアップの動作テスト時のみ”１”を取り、通常動作時に”０”を取るように制御されている。
【００８２】
これにより、図１７に示す回路では、TestMode信号とＯＲ回路２０（回路構成によってはＡＮＤ回路となる）を使ってクリティカルパスのみが活性化されるように、クリティカルパス中の各論理ゲートを”１”あるいは”０”に固定する。なお、図１７に示す回路では、TestMode信号とＯＲ回路２０が論理固定手段を構成している。
【００８３】
さらに、活性化されたクリティカルパスが反転論理か非反転論理かを判定し、非反転の場合は、ロジックステージＬ１の出力にインバータ２１を挿入することで反転論理とする。そして、レジスタ２２を介して反転論理を、動作テスト時のレジスタＲ０へループバックさせる。これにより、レジスタＲ１がトグル出力できるように制御される。
【００８４】
図１７に示す回路では、レジスタＲ２がトグル出力できるように、レジスタＲ２の出力にインバータ２３を設けている。なお、図１７に示す回路では、TestMode信号の入力ピンを設けることで、ダイレクトリセットあるいはスキャン等により動作テスト時に、レジスタＲ０及びＲ２を同一の初期値に設定することができる。
【００８５】
次に、図１７に示す回路の駆動について、図１８のタイムチャートを用いて説明する。なお、図１８では、クロック信号をｃｌｋ、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。また、図１８では、レジスタＲ２の出力をインバータ２３で反転した信号を出力Ｑ２としている。なお、本実施の形態では、TestMode信号を”１”に固定し、動作テスト完了後にTestMode信号を”０”にして、図１７に示す回路をテストモードから通常動作モードに切り替えている。
【００８６】
まず、１周期目では、出力Ｄ１におけるriseイベントがクロック信号ｃｌｋの立上がり前に行われるため、レジスタＲ１が正常に論理”１”を取り込むことができる。また、レジスタＲ２は、出力Ｑ２を”０”に初期化しておくことでクロック信号ｃｌｋの立上がりにより、トグル論理”１”を取り込む。そのため、比較器１に入力される出力Ｑ１と出力Ｑ２の値は一致し、出力されるエラー信号は”０”となる。
【００８７】
次に、２周期目では、出力Ｄ１におけるfallイベントがクロック信号ｃｌｋの立上がりに間に合わないため、レジスタＲ１は論理”０”を取り込むことができない。これに対し、レジスタＲ２は、レジスタＲ１の論理と無関係にトグル動作するため論理”０”を取り込むことになる。したがって、図１７に示す回路は、レジスタＲ１とレジスタＲ２の論理が不一致となり、エラー信号が”１”となって誤動作を検出する。
【００８８】
次に、３周期目では、１周期目と同様の状況が発生し、結果としてエラー信号は”０”となる。４周期目では、２周期目と同様の状況が発生し、結果としてエラー信号は”１”となり、誤動作を検出できる。さらに、５周期目では、１周期目と同様の状況が発生し、結果としてエラー信号は”０”となる。
【００８９】
（実施の形態７）
図１９に、本実施の形態に係る半導体装置の回路図を示す。図１９に示す回路は、実施の形態５で説明した図１４の構成を利用し、ロジックステージＬ１及びロジックステージＬ１’の最終論理（ＡＮＤ回路２５）を分離して構成している。図１９では、レジスタＲ０からロジックステージＬ１及びＡＮＤ回路２５の入力ピンＡを経由してレジスタＲ１へ至るパスをクリティカルパスであると仮定する。そして、ＡＮＤ回路２５のもう一方の入力ピンＢには、他のロジックステージＬ１’よりイベント（データ）が伝播される。なお、実施の形態１〜４で示したロジックステージＬ１は、図１９に示すロジックステージＬ１とＡＮＤ回路２５とを合わせた回路となる（破線で囲む部分）。
【００９０】
そして、図１９に示す回路では、レジスタＲ１のロジックコーンを実現している回路構成と全く同じ回路構成のレジスタＲ２及びレジスタＲ３を設けている。さらに、レジスタＲ２は、クリティカルパスの一部のパス（ＡＮＤ回路２５の入力ピンＡを経由するパス）のみ活性化する機能を有している。当該機構は、データ固定Mode信号とＯＲ回路２７を用いてＡＮＤ回路２６の入力ピンＡを経由するパスを固定する機能である。つまり、図１９に示す回路では、データ固定Mode信号とＯＲ回路２７がロジックステージＬ１のクリティカルパスの一部である最終段のＡＮＤ論理を活性化する論理固定手段を構成している。
【００９１】
レジスタＲ２は、信号を固定してもクリティカルパスの速度面の動作条件はレジスタＲ１と同じであるため、実動作回路であるレジスタＲ１のモニタとして使用することができる。つまり、レジスタＲ１のセットアップ違反の判定にレジスタＲ２を用いることができる。
【００９２】
一方、レジスタＲ３は、レジスタＲ２において活性化されたパスの論理Ｌ３（図１９に矢印で示した論理）が反転か非反転かを判断し、反転論理であれば前段に高速インバータ２８を挿入し（非反転であればインバータ２８は挿入しない）、論理圧縮することで期待値として利用する。ただし、反転・非反転論理の判定及びそれに付随したインバータ２８の挿入は、設計時に認識され、設定されるものとする。
【００９３】
これにより、レジスタＲ３は、論理Ｌ３の分からインバータ２８を差し引いた遅延差分がレジスタＲ２に対して有利となり、その範囲内で発生するレジスタＲ１及びレジスタＲ２のセットアップ違反を動的に検出できる。
【００９４】
次に、図１９に示す回路の駆動について、図２０のタイムチャートを用いて説明する。なお、図２０では、ＡＮＤ回路２６の入力ピンＡでの信号を入力２６Ａ、ＡＮＤ回路２６の入力ピンＢでの信号を入力２６Ｂとしている。また、図１６では、クロック信号をｃｌｋ、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。また、図１６では、レジスタＲ３のデータ入力ピンでの信号を出力Ｄ３、レジスタＲ３のデータ出力ピンでの信号を出力Ｑ３としている。なお、本実施の形態では、入力２６Ｂをデータ固定Mode信号とＯＲ回路２７とにより”１”に固定している。また、出力Ｄ３は、上述したように、常に出力Ｄ２よりも速いタイミングでイベント（データ）が伝搬する。また、本実施の形態では、ＡＮＤ回路２６は正転論理であり、レジスタＲ３の前段にインバータ２８は挿入されていないものとする。
【００９５】
まず、１周期目では、入力２６Ａにおけるriseイベントが出力Ｄ２へ伝播し、それがクロック信号ｃｌｋの立上がり前に行われる。そのため、レジスタＲ２及びレジスタＲ３は、ともに正常に論理”１”を取り込むことができる。その結果、比較器１では、レジスタＲ２の出力Ｑ２とレジスタＲ３の出力Ｑ３とが一致し、エラー信号が”１”となる。
【００９６】
次に、２周期目では、入力２６Ａにおけるfallイベントが出力Ｄ２へ伝播し、そのタイミングにクロック信号ｃｌｋの立上がりが間に合わない。したがって、レジスタＲ２は、論理”０”を取り込むことができない。それに対し、レジスタＲ３は、出力Ｄ３のfallイベント後にクロック信号ｃｌｋが立上がるため、正常に論理”０”を取り込むことができる。その結果、比較器１では、レジスタＲ２の出力Ｑ２とレジスタＲ３の出力Ｑ３とが不一致となり、エラー信号が”１”となって誤動作が検出される。
【００９７】
次に、３周期目では、１周期目と同様の状況が発生し、結果としてエラー信号は”０”となる。４周期目では、２周期目と同様の状況が発生し、結果としてエラー信号は”１”となる。さらに、５周期目では、１周期目と同様の状況が発生し、結果としてエラー信号は”０”となる。
【００９８】
なお、本実施の形態では、図１９に示すようにロジックステージＬ１の最終論理のみ分離する構成を示したが、本発明はこれに限られず最終論理を含む複数段をロジックステージＬ１から分離した構成でもよい。
【００９９】
（実施の形態８）
図２１に、本実施の形態に係る半導体装置の回路図を示す。図２１に示す回路では、レジスタＲ０からロジックステージＬ１を経由してレジスタＲ１へ至るパスをクリティカルパスとし、レジスタＲ１の出力Ｑ１を次段論理（ロジックステージＬ２）へ伝播する。ここで、図２１に示す回路では、レジスタＲ１に供給されるクロック信号Ｃ１を、外部から直接供給されるクロック信号ｃｌｋとするのではなく、ＡＮＤ回路３０においてイネーブル信号と論理和を取った信号としている。
【０１００】
また、図２１に示す回路では、クロックラインにバッファＢ２を挿入することによりセットアップ違反条件を緩和させたレジスタＲ２を設け、レジスタＲ１との出力結果比較を比較器１で行う。さらに、図２１に示す回路では、イネーブル信号が”０”の場合、レジスタＲ０からのデータを取り込まないように選択回路３１を使ってレジスタＲ２の出力Ｑ２をフィードバックさせ、イネーブル信号が”１”の場合、出力Ｄ１を取り込む。なお、図２１に示す回路では、選択回路３１が論理選択手段を構成している。
【０１０１】
次に、図２１に示す回路の駆動について、図２２のタイムチャートを用いて説明する。なお、図２２では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。また、図２２では、レジスタＲ２のクロックピンでの信号をクロック信号Ｃ２、レジスタＲ２のデータ入力ピンでの信号を出力Ｄ２、レジスタＲ２のデータ出力ピンでの信号を出力Ｑ２としている。なお、クロック信号Ｃ２は、クロック信号Ｃ１に対し、挿入したバッファＢ２の分だけ遅延している。
【０１０２】
まず、１周期目では、イネーブル信号が”１”なので、レジスタＲ１及びレジスタＲ２は、ともにクロック信号Ｃ１，Ｃ２の立上がり発生時に、出力Ｄ１，Ｄ２からデータを取り込む。しかし、１周期目では、出力Ｄ１におけるriseイベントが、クロック信号Ｃ１の立上がりに間に合わないため、レジスタＲ１は論理”１”を取り込むことができない。これに対し、レジスタＲ２は、出力Ｄ１のriseイベント発生後にクロック信号Ｃ２の立上がりが発生するため、論理”１”を正常に取り込むことができる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致しないため、エラー信号が”１”となり、誤動作を検出する。
【０１０３】
次に、２周期目では、イネーブル信号が”１”のままなので、レジスタＲ１及びレジスタＲ２がともにクロック信号Ｃ１，Ｃ２の立上がり発生時に出力Ｄ１，Ｄ２からデータを取り込む。つまり、レジスタＲ１は、出力Ｄ１のriseイベント発生後にクロック信号Ｃ１の立上がりが発生するため、論理”０”を正常に取り込むことができる。また、レジスタＲ２は、出力Ｄ２のriseイベント発生後にクロック信号Ｃ２の立上がりが発生するため、論理”０”を正常に取り込むことができる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。
【０１０４】
次に、３周期目では、イネーブル信号が”０”となるため、レジスタＲ１に対してクロック信号Ｃ１の立上がりが発生しない。そのため、レジスタＲ１は、前周期の出力Ｑ１の値をそのままホールドする。なお、図２２では、クロック信号Ｃ１の立上がりが発生しないため、３周期目の出力Ｑ１の取り込みタイミング（図中ではＸと表記されている）が図示されていない。
【０１０５】
一方、レジスタＲ２では、クロック信号Ｃ２の立上がりは発生するもののイネーブル信号により、選択回路３１の出力が切り替わり出力Ｑ２のフィードバックループが形成され、前周期の”０”が取り込まれる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。
【０１０６】
次に、４周期目では、イネーブル信号が”１”のままなので３周期目と同様、前周期の値がそのままホールドされる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。
【０１０７】
次に、５周期目では、イネーブル信号が”１”なので、レジスタＲ１及びレジスタＲ２は、ともにクロック信号Ｃ１，Ｃ２の立上がり発生時に、出力Ｄ１，Ｄ２からデータを取り込む。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。なお、クロック信号Ｃ１とクロック信号Ｃ２との遅延差により、レジスタＲ１及びレジスタＲ２が論理”１”を取り込むタイミングが少しずれるため、比較器１のエラー信号は一時的に”１”となる。
【０１０８】
図２２のタイミングチャートでは、図２１に示す回路におけるデータ信号のセットアップ違反を検知する例を示したが、図２３のタイミングチャートでは、図２１に示す回路におけるイネーブル信号のセットアップ違反を検知する例を説明する。
【０１０９】
まず、図２３の１周期目は、イネーブル信号のriseイベントがクロック信号ｃｌｋの立上がりよりも遅れるが、当該遅れがバッファＢ２の遅延よりも小さいケースである。そのため、クロック信号Ｃ１はイネーブル信号の遅れのためパルスが欠けてしまうが、出力Ｄ１のriseイベント後にクロック信号Ｃ１が立上がるので、レジスタＲ１は正常に論理”１”を取り込むことができる。また、レジスタＲ２は、イネーブル信号のriseイベント発生後にクロック信号Ｃ２の立上がりが発生するため、論理”１”を正常に取り込むことができる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。なお、クロック信号Ｃ１とクロック信号Ｃ２との遅延差により、レジスタＲ１及びレジスタＲ２が論理”１”を取り込むタイミングが少しずれるため、比較器１のエラー信号は一時的に”１”となる。
【０１１０】
次に、図２３の２周期目では、イネーブル信号が”０”に落ち、レジスタＲ１にはクロック信号Ｃ１が入らないため、レジスタＲ１が前周期の状態”１”を保持する。一方、レジスタＲ２は、挿入したバッファＢ２の分だけ遅延したクロック信号Ｃ２が入力され、選択回路３１が出力Ｄ１ではなく出力Ｑ２を取り込む経路を選択するため、結果として前周期の状態”１”を保持することになる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。
【０１１１】
次に、図２３の３周期目は、イネーブル信号のriseイベントがクロック信号ｃｌｋの立上がりよりも遅れ、さらに当該遅れがバッファＢ２の遅延よりも大きいケースである。この場合、クロック信号Ｃ１はイネーブル信号の遅れのためパルスが欠けてしまうが、出力Ｄ１のfallイベント後にクロック信号Ｃ１が立上がるので、レジスタＲ１は正常に論理”０”を取り込むことができる。しかし、レジスタＲ２は、イネーブル信号のriseイベントがクロック信号Ｃ２の立上がり発生までに間に合わないため、出力Ｄ１からのデータではなく出力Ｑ２を取り込む経路が選択され、論理”１”を保持する。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が不一致となり、エラー信号が”１”となる。
【０１１２】
次に、図２３の４周期目では、２周期目と同様、前周期の値がそのままホールドされ、出力Ｑ１と出力Ｑ２は不一致のままとなり、エラー信号は”１”のままとなる。さらに、図２３の５周期目では、イネーブル信号のriseイベントがクロック信号ｃｌｋの立上がりより早いので、クロック信号ｃｌｋとクロック信号Ｃ１の立上がりが一致する。そして、出力Ｄ１のriseイベント後にクロック信号Ｃ１及びクロック信号Ｃ２が立上がるので、レジスタＲ１及びレジスタＲ２は正常に論理”１”を取り込むことができる。したがって、比較器１では、出力Ｑ１と出力Ｑ２との値が一致し、エラー信号が”０”となる。
【０１１３】
以上のように、本実施の形態に係る半導体装置では、データ信号のセットアップ違反を検知するだけでなく、イネーブル信号のセットアップ違反も検知することができる。
【０１１４】
（実施の形態９）
図２４に、本実施の形態に係る半導体装置の回路図を示す。図２４に示す回路では、図５に示す回路が複数設けられ、各回路の比較器１ａ〜１ｘの出力Ｅａ〜ＥｘがＯＲ回路４０に入力されている。そして、図２４に示す回路では、ＯＲ回路４０からの出力がエラー信号として、図６に示す制御回路１３に入力され、各回路に供給するクロック信号ｃｌｋや電圧を制御している。なお、図２４に示す回路では、出力Ｅａ〜ＥｘのＯＲ演算を行うＯＲ回路４０がエラー信号生成回路を構成している。
【０１１５】
つまり、図２４に示す回路は、ロジックステージＬ１からロジックステージＬ２に至る複数のパスについてセットアップ違反の有無を検知することができる。また、本実施の形態は、ロジックステージＬ１からロジックステージＬ２に至るパスに限られず、図５に示すような回路構成を様々なパスに適用することで、それぞれのパスで生じるセットアップ違反の有無を検知することができる。
【０１１６】
以上のように、本実施の形態に係る半導体装置は、複数のパスのセットアップ違反を検知できるので、あるパス（例えば、クリティカルパス）のみに基づいて、クロック信号ｃｌｋや電圧を最適化するのではなく、回路全体が最適な駆動を行うことが可能となる。つまり、本実施の形態では、クリティカルパスだけではなく、特定範囲の遅延パスのレジスタに適用し、それら全てパスで正常動作を確認し、より消費電力を低減させることができる。
【０１１７】
（実施の形態１０）
図２５に、本実施の形態に係る半導体装置の回路図を示す。図２５に示す回路では、クロックツリーのバッファＢ１前で、且つバッファＢ０後のクロック信号ｃｌｋを用いて、実動作レジスタであるレジスタＲ１に対しバッファＢ１の遅延分だけタイミングを厳しくさせた（Negative Slack）レジスタＲ３を備えている。そして、比較器３では、レジスタＲ１の出力Ｑ１とレジスタＲ３の出力Ｑ３とを比較し、エラー信号を出力する。そのため、図２５に示す回路は、クロックラインに挿入したバッファＢ１の遅延分だけ、レジスタＲ０からレジスタＲ１へのホールド違反を動的に検出することができる。
【０１１８】
次に、図２５に示す回路の駆動について、図２６のタイムチャートを用いて説明する。まず、図２５に示す回路においてレジスタＲ０からレジスタＲ１へ至るパスは、ほとんど遅延がなく、ホールド動作に関しクリティカルなパスとする。もちろん、図２５に示す回路においてシミュレーションを行っても、ホールドタイミングエラーは発生しない。また、レジスタＲ０からレジスタＲ１へ至るパスの間に、ロジックステートが介在してもよい。
【０１１９】
図２６では、レジスタＲ１のクロックピンでの信号をクロック信号Ｃ１、レジスタＲ１のデータ入力ピンでの信号を出力Ｄ１、レジスタＲ１のデータ出力ピンでの信号を出力Ｑ１としている。さらに、図２６では、レジスタＲ３のクロックピンでの信号をクロック信号Ｃ３、レジスタＲ３のデータ入力ピンでの信号を出力Ｄ３、レジスタＲ３のデータ出力ピンでの信号を出力Ｑ３としている。
【０１２０】
なお、クロック信号Ｃ１は、クロック信号Ｃ３に対して挿入したバッファＢ１の分だけ遅延して伝播する。また、出力Ｑ１と出力Ｑ３とを比較する比較器３の出力をエラー信号とする。
【０１２１】
まず、１周期目では、レジスタＲ０の出力Ｑ０からの出力Ｄ１／Ｄ３のriseイベントが、各クロック信号Ｃ１／Ｃ３の立上がった後に行われる。そのため、レジスタＲ１及びレジスタＲ３は、正常に論理”０”を取り込むことができる。つまり、レジスタＲ１及びレジスタＲ３は、次論理”１”を取り込まない。
【０１２２】
次に、２周期目では、パス遅延におけるバラつき等の理由で、出力Ｄ１／Ｄ３のfallイベントが、クロック信号Ｃ１の立上がりよりも早く到達してしまい、レジスタＲ１が前論理”１”ではなく、同サイクルクロックで出力された出力Ｑ０の次論理”０”を取り込んでしまう。つまり、レジスタＲ１は、ホールドタイミングエラーによる誤動作が生じる。ところが、レジスタＲ３は、バッファＢ１分だけクロック信号Ｃ３がクロック信号Ｃ１に対し早く立ち上がるため、正常に前論理”１”を取り込むことができる。そのため、レジスタＲ１の出力Ｑ１とレジスタＲ３の出力Ｑ３とが異なり比較器３のエラー信号が”１”となって誤動作が検出される。
【０１２３】
次に、３周期目では、出力Ｄ１／Ｄ３のriseイベントが、各クロック信号Ｃ１／Ｃ３の立上がった後に行われる。そのため、レジスタＲ１及びレジスタＲ３は、正常に論理”０”を取り込むことができる。つまり、レジスタＲ１及びレジスタＲ３は、次論理”１”を取り込まない。また、２周期目でアサートされていたエラー信号も正常にネゲートされる。
【０１２４】
次に、４周期目では、２周期目と同様、出力Ｄ１／Ｄ３のfallイベントが、クロック信号Ｃ１の立上がりよりも早く到達してしまい、レジスタＲ１が前論理”１”ではなく、同サイクルクロックで出力された出力Ｑ０の次論理”０”を取り込んでしまう。つまり、レジスタＲ１は、ホールドタイミングエラーによる誤動作が生じる。ところが、レジスタＲ３は、バッファＢ１分だけクロック信号Ｃ３がクロック信号Ｃ１に対し早く立ち上がるため、正常に前論理”１”を取り込むことができる。そのため、レジスタＲ１の出力Ｑ１とレジスタＲ３の出力Ｑ３とが異なり比較器３のエラー信号が”１”となって誤動作が検出される。
【０１２５】
次に、５周期目では、３周期目と同様、出力Ｄ１／Ｄ３のriseイベントが、各クロック信号Ｃ１／Ｃ３の立上がった後に行われる。そのため、レジスタＲ１及びレジスタＲ３は、正常に論理”０”を取り込むことができる。つまり、レジスタＲ１及びレジスタＲ３は、次論理”１”を取り込まない。また、４周期目でアサートされていたエラー信号も正常にネゲートされる。
【０１２６】
したがって、本実施の形態に係る半導体装置では、レジスタＲ１と論理等価であるが、クロックラインを遅延制御（バッファセル挿入、配線長調整、配線物性調整） によりレジスタＲ１に対してタイミングを厳しくしたレジスタＲ３を設けているので、相互の出力Ｑ１，Ｑ３を比較することで、レジスタＲ１のホールド違反を動的に検出することができる。
【図面の簡単な説明】
【０１２７】
【図１】本発明の前提となる回路の回路図である。
【図２】本発明の前提となる回路のタイミングチャートである。
【図３】本発明の前提となる回路の回路図である。
【図４】セットアップ違反を説明する図である。
【図５】本発明の実施の形態１に係る半導体装置の回路図である。
【図６】本発明の実施の形態１に係る半導体装置のブロック図である。
【図７】本発明の実施の形態１に係る半導体装置のタイミングチャートである。
【図８】本発明の実施の形態２に係る半導体装置の回路図である。
【図９】本発明の実施の形態２に係る半導体装置のタイミングチャートである。
【図１０】本発明の実施の形態３に係る半導体装置の回路図である。
【図１１】本発明の実施の形態３に係る半導体装置のタイミングチャートである。
【図１２】本発明の実施の形態４に係る半導体装置の回路図である。
【図１３】本発明の実施の形態４に係る半導体装置のタイミングチャートである。
【図１４】本発明の実施の形態５に係る半導体装置を説明するための図である。
【図１５】本発明の実施の形態５に係る半導体装置の回路図である。
【図１６】本発明の実施の形態５に係る半導体装置のタイミングチャートである。
【図１７】本発明の実施の形態６に係る半導体装置の回路図である。
【図１８】本発明の実施の形態６に係る半導体装置のタイミングチャートである。
【図１９】本発明の実施の形態７に係る半導体装置の回路図である。
【図２０】本発明の実施の形態７に係る半導体装置のタイミングチャートである。
【図２１】本発明の実施の形態８に係る半導体装置の回路図である。
【図２２】本発明の実施の形態８に係る半導体装置のタイミングチャートである。
【図２３】本発明の実施の形態８に係る半導体装置のタイミングチャートである。
【図２４】本発明の実施の形態９に係る半導体装置の回路図である。
【図２５】本発明の実施の形態１０に係る半導体装置の回路図である。
【図２６】本発明の実施の形態１０に係る半導体装置のタイミングチャートである。
【符号の説明】
【０１２８】
１，３  比較器、２，３１  選択回路、４，５，２２  レジスタ、６  出力選択回路、７  クロック制御回路  、８，９，２５，３０  ＡＮＤ回路、１０  デジタル回路、１１  クロック発生装置、１２  レギュレータ、１３  制御回路、１４  メモリ、２０，２６，４０  ＯＲ回路、２１，２３，２８  インバータ、７１，７２  論理回路、１０１  リップ−フロップ回路、１０２  ラッチ回路、１０３  比較器、１０４  セレクタ回路。
【図１】
2008042367.tif 000003
【図２】
2008042367.tif 000004
【図３】
2008042367.tif 000005
【図４】
2008042367.tif 000006
【図５】
2008042367.tif 000007
【図６】
2008042367.tif 000008
【図７】
2008042367.tif 000009
【図８】
2008042367.tif 000010
【図９】
2008042367.tif 000011
【図１０】
2008042367.tif 000012
【図１１】
2008042367.tif 000013
【図１２】
2008042367.tif 000014
【図１３】
2008042367.tif 000015
【図１４】
2008042367.tif 000016
【図１５】
2008042367.tif 000017
【図１６】
2008042367.tif 000018
【図１７】
2008042367.tif 000019
【図１８】
2008042367.tif 000020
【図１９】
2008042367.tif 000021
【図２０】
2008042367.tif 000022
【図２１】
2008042367.tif 000023
【図２２】
2008042367.tif 000024
【図２３】
2008042367.tif 000025
【図２４】
2008042367.tif 000026
【図２５】
2008042367.tif 000027
【図２６】
2008042367.tif 000028