(実施の形態1)
まず、本発明の半導体装置を説明する前に、非特許文献1に開示されているRazor回路の構成と駆動について説明する。図1に、Razor回路の回路図を示し、図2に、Razor回路のタイミングチャートを示す。
図1に示すRazor回路は、クロック信号clkの立ち上がりエッジに同期してデータ信号を取り込むフリップ−フロップ回路101と、クロック信号clkのHigh期間にデータ信号を取り込むラッチ回路102とを備えている。さらに、図1に示すRazor回路は、フリップ−フロップ回路101の出力Q1とラッチ回路102の出力Q2とを比較する比較器103と、比較器103の結果によって論理回路であるロジックステージL1が出力するデータ信号D1とラッチ回路102が出力するデータ信号Q2とを切り替えるセレクタ回路104とを備えている。そして、図1に示すラッチ回路102は、クロック信号clkのHigh期間にセレクタ回路104が出力したデータ信号S1を取り込む。そして、図1に示すRazor回路は、フリップ−フロップ回路101とラッチ回路102との時間差を利用して、クロック信号clkの立ち上がりからクロック信号clkのHigh期間までに到達するデータ信号のイベントを誤動作(セットアップ違反)として検知する。
但し、Razor回路で行う誤動作検知には、以下のような問題があった。まず、図2に示す3周期分のタイミングチャートでは、2周期目のみタイミングが間に合わずセットアップ違反が発生し、他の周期(1及び3周期目)は正常にデータが到達している。この場合の2周期目では、フリップ−フロップ回路101が、クロック信号clkの立ち上がりタイミング時に、”1”から”0”に変化するデータ信号のイベント到着が間に合わず、”1”を捕獲してしまう。一方、ラッチ回路102は、クロック信号clkがHigh期間のデータ信号である”0”を捕獲することになる。そのため、Razor回路は、意図通りエラー信号をアサートすることになる。
次に、図2に示す3周期目では、クロック信号clkの立ち上がりタイミング時に、”0”から”1”に変化するデータ信号のイベントが到着しているので、本来セットアップ違反は発生しない。しかし、2周期目でアサートされたエラー信号は、3周期目においてもネゲートされない。これは3周期目のクロック信号clkの立ち上がりタイミング時に、ロジックステージL1が出力するデータ信号D1を取り込む必要があるにもかかわらず、2周期目のエラー信号がネゲートされていないために、ラッチ回路102が出力するデータ信号Q2を取り込んでいるためである。
その結果、エラー信号がネゲートされてロジックステージL1からのパスがアクティブになる時(図2の上向き矢印)、フリップ−フロップ回路101はラッチ回路102にラッチされている”0”を取り込んでしまっており、ラッチ回路102のみが”0”から”1”へ変化するデータ信号のイベントを取り込むことになる(図2の下向き矢印)。従って、比較器103では、フリップ−フロップ回路101が出力するデータ信号Q1とラッチ回路102が出力するデータ信号Q2とが一致せず、セットアップ違反が発生していないにもかかわらずエラー信号がアサートされてしまう。
そこで、図3に、上述の問題点を解決する誤動作判定回路(エラー検出フリップ−フロップ回路(FF))の回路図を示す。図3に示す回路では、ターゲットレジスタ(TargetRegister)であるレジスタR1に対し、クロック信号(Clk)のラインにバッファ1を挿入して、タイミング的に余裕(Positive Slack)を持たせた期待値レジスタ(ExpectRegister)のレジスタR2を備えている。そして、レジスタR1には、前段のロジックステージL1から出力されるデータ信号D1が入力される。一方、レジスタR1から出力するデータ信号Q1は、選択回路2を介して次段のロジックステージL2に出力(Output信号)されると共に、比較器3にも入力される。
この比較器3は、レジスタR1が出力するデータ信号Q1とレジスタR2が出力するデータ信号Q2とを比較し、両者が不一致の場合にエラー信号(Error)を出力する。つまり、図3に示す回路では、クロックラインにバッファ1を挿入することにより、セットアップ違反条件を緩和させたレジスタR2を設け、レジスタR1とレジスタR2との出力を比較器3で比較することで誤動作を検出している。このため、図3に示す回路では、バッファ1を設けることにより、Razor回路のようにセットアップ違反が発生していないにもかかわらずエラー信号がアサートされてしまう問題を回避することができる。
また、図3に示す回路は、上述したように、セットアップ違反の有無をエラー信号として出力する誤動作判定回路である。そのため、図3に示す回路を備える半導体装置(LSI等)では、通常論理に使用されているフリップ−フロップ回路のうちタイミング的に厳しいものに対し、図3に示す回路と置換することになる。そして、半導体装置に図3に示す回路を複数組み込んだ場合、どの回路からエラー信号が出力されているのか特定する必要がある。
しかし、半導体装置のピン数には制限があるので、各回路からのエラー信号に対してそれぞれピンを割り当てることができず、ORツリーで束ねてエラー信号を半導体装置の外部に出力させる(図示せず)。そのため、図3に示す回路では、半導体装置でセットアップ違反が生じていることは判定できるが、どの回路でセットアップ違反が生じているのかを特定することができない。
そこで、本実施の形態に係る半導体装置では、図3に示す期待値レジスタのレジスタR2をシフトレジスタ化してスキャンする手段(以下、スキャン化手段ともいう)をさらに備え、当該手段を用いてエラー信号を伝播させて外部へ押し出し、違反した回路を特定する。なお、当該回路構成は、電圧制御だけでなく、実動作(性能)パターンを用いたフェール箇所解析にも有効となる技術である。
次に、スキャン化手段を備えた回路構成を図4に具体的に示す。但し、図4に示すスキャン化手段は一例であり、本発明はこれに限定されず、同様の機能を有するスキャン化手段であれば他の回路構成でもよい。
図4に示す回路では、レジスタR1のクロック信号ClkのラインにAND回路4が設けられている。AND回路4は、スキャンモード信号(SM)の反転信号とスキャンリセット信号(Srst)とが入力されるAND回路4aと、クロック信号ClkとAND回路4aの出力とが入力されるAND回路4bとを備えている。また、図4に示す回路では、レジスタR2の前段にマルチプレクサ(MUX)5が設けられ、当該MUX5には前段の比較器3からの出力であるエラー信号(Error)と、MUX6の出力と、Srst信号とが入力される。MUX6は、通常のスキャンセルにおけるスキャンイン信号(SI)と等価なエラーイン信号(ErrIn)と、Srst信号と、前段の論理回路からのデータ信号(DATA)とが入力される。
図4に示す回路では、図3に示す回路の選択回路2に代えて、MUX7を用いているが、機能については等価である。また、図4に示すその他の回路は、図3に示す回路と同じであるため、詳細な説明は省略する。
図4に示す回路では、レジスタR2の出力であるエラーアウト信号(ErrOut)が通常のスキャンセルにおけるスキャンアウト信号(SO)と等価であり、あるエラー検出FFのErrOut信号が他のエラー検出FFのErrIn信号に接続することでスキャンパスを形成している。
SM信号は、スキャンのモードを制御する信号であり、”0”のとき通常動作モードとなり、レジスタR2がクロック信号の立ち上がり時にデータ信号を取り込めるようにMUX6を制御する。また、SM信号が”1”のときスキャンモードになり、レジスタR2がクロック信号の立ち上がり時にErrIn信号の値を取り込めるようにMUX6を制御する。
さらに、Srst信号は、モード切替時のリセット信号であり、各モード(通常又はスキャン)時の初期状態を決定する。つまり、Srst信号が”0”のとき、レジスタR2がMUX5を介してエラー信号の値を取り込み、Srst信号が”1”のとき、レジスタR2がMUX5を介して、SM信号により選択された信号(DATA or ErrIn)の値を取り込む。上述のまとめとして、レジスタR2をスキャン化した場合の真理値表を表1に示す。なお、表1に示す”*”は任意の値を示す。また、表1に示す”(R2&!R1)|(!R2&R1)”は、レジスタR2が期待値の比較結果を保持しており、当該比較結果が”0”(エラーでない)の場合はレジスタR1をそのまま出力し、当該比較結果が”1”(エラー)の場合はレジスタR1の反転を出力することを表している。
従って、レジスタR2をスキャン化し、表1に示すようにSM信号とSrst信号とを制御することで、セットアップ違反時のエラー信号を伝播させ、セットアップ違反の箇所を特定することが可能となる。なお、当該回路構成は、セットアップ違反の箇所を特定するだけでなく、通常のスキャン回路のように、スキャンパスを介してレジスタR2への初期値設定も可能である。
さらに、図4に示す回路では、SM信号が”1”のスキャンモードの場合、レジスタR1に入力されるクロック信号ClkをAND回路4でディスイネーブルにして、レジスタR1の回路動作を停めてしまう。そのため、SM信号が”1”のスキャンモード時に、クロック信号がディスイネーブルになる前の状態でレジスタR1の内容が保持され、再びSM信号が”0”の通常動作モードになった場合に、レジスタR1の動作再開が可能になる。また、スキャンモード時に、レジスタR1の回路動作を停めてしまうので、当該期間の消費電力を削減することもできる。
図5に、図4で示した回路を4段並べて各回路(S1〜S4)のErrOut信号からErrIn信号へのスキャンパスを形成した回路図を示す。図5では、回路S1の前段にロジックステージL1、回路S2の前段にロジックステージL2、回路S3の前段にロジックステージL3、回路S4の前段にロジックステージL4のそれぞれが接続している。さらに、図5では、回路S1のErrIn信号としてに回路S4が出力したErrOut信号を直結することでシフトが一巡して初期状態へ戻る構成である。しかし、本発明はこれに限られず、回路S1のErrIn信号に外部端子からの任意の値にセットすることも可能である。
次に、図5に示す回路の動作を図6に示すタイミングチャートに基づいて説明する。まず、図6に示すタイミングチャートの1周期目では、回路S2がセットアップ違反の誤動作を検知したと仮定する。そして、ErrOut信号の値は、通常動作モードであるため、各回路S1〜S4のエラー信号ではなくレジスタR2の値となり、当該周期での期待値は4ビットとも”1”であると仮定する。なお、回路S2のレジスタR1の値は、セットアップ違反と仮定しているので、期待値と不一致であり”0”である。
次に、2周期目では、SM信号が”1”となりスキャンモードに切り替わる。同時にSrst信号も”0”にアサートされるため、各回路のエラー信号の値がレジスタR2に取り込まれることになる。1周期目で誤動作を発生しているのは回路S2のみと仮定したので、2周期目では回路S2のErrOut信号の値のみが”1”となり、他の回路S1,S3,S4のErrOut信号の値は全て”0”となる。なお、SM信号が”1”となったため、回路S1〜S4内の各レジスタR1に供給されるクロック信号が全てディスイネーブルになる。
次に、3周期目では、Srst信号が”1”となるため、各回路S1〜S4のErrOut信号は前段のErrOut信号を取り込むことになる。従って、回路S3のErrOut信号は、2周期目の回路S2でのErrOut信号の値を取り込み、”1”となり、他の回路S1,S2,S4のErrOut信号は全て”0”となる。ここで、回路S1のErrOut信号には、回路S4のErrOut信号の値が供給される。
次に、4周期目では、3周期目と同様の処理が行われ、回路S4のErrOut信号が、3周期目の回路S3でのErrOut信号の値を取り込み、”1”となり、他の回路S1,S2,S3のErrOut信号は全て”0”となる。さらに、5周期目でも、4周期目と同様の処理が行われ、回路S1のErrOut信号が、4周期目の回路S4でのErrOut信号の値を取り込み、”1”となり、他の回路S2,S3,S4のErrOut信号は全て”0”となる。6周期目でも、4周期目と同様の処理が行われ、回路S2のErrOut信号が、5周期目の回路S1でのErrOut信号の値を取り込み、”1”となり、他の回路S1,S3,S4のErrOut信号は全て”0”となる。
上記の処理を繰り返すことにより、図5に示す回路は、ErrOut信号の値を順次シフトし、Srst信号が”1”になってからErrOut信号の値が”1”が検出されるまでのサイクル数を計上することにより、誤動作が発生した回路を特定することができる。本実施の形態では、4周期目でErrOut信号が”1”となるため、回路S2にセットアップ違反が発生していることが分かる。なお、仮に複数箇所フェールしていたとしても同様の方法で検出可能である。
次に、7周期目では、SM信号を通常モード”1”に切り替え、同時にSrst信号を”1”にアサートすることで、特定回路S1〜S4のレジスタR2にスキャンモード動作開始前の値(図4に示す回路構成から自動的に判断)に復元させる。ただし、回路S1から回路S4の各レジスタR1の値は、SM信号=”1”あるいはSrst信号”0”の間はクロック信号Clkがネゲートされているため、回路S2のレジスタR1は誤動作のままの値であるため、必要であれば以下の実施の形態で述べるリカバリー方法を行い動作を再開する。
以上のように、本実施の形態に係る半導体回路では、レジスタR2をスキャン化する手段を備えることにより、セットアップ違反の誤動作が発生した回路を特定することができる。
なお、図4に示す回路は、同期設計部におけるタイミングクリティカルなレジスタ(クリティカルパスのエンドポイント)を対象としているため、SOC(System On a Chip)やマイコン等の全てのデジタル設計分野で適用が可能である。また、以下に説明する実施の形態に係る回路についても同様である。
具体的に、本実施の形態に係る半導体装置の適用事例のブロック図を図7に示す。図7に示す半導体装置では、図4に示す誤動作判定回路及び論理回路(ロジックステージ)が適用されたデジタル回路10と、デジタル回路10にクロック信号Clkを供給するクロック発生装置11と、デジタル回路10に電圧を供給するレギュレータ12とを備えている。さらに、図7に示す半導体装置では、デジタル回路10からのエラー信号に基づき、クロック発生装置11とレギュレータ12とを制御する制御回路13と、デジタル回路10が適宜参照するメモリ14とを備えている。なお、制御回路13は、エラーレート計算の処理も含んでいる。
さらに、図7に示す半導体装置では、制御回路13へのエラー信号がアサートすることで、制御回路13がクロック発生装置11やレギュレータ12を制御し、低消費電力化を実現できる。また、図7に示す半導体装置では、セットアップ違反等の誤動作発生時、スキャンモードを切り替えてエラー信号を伝搬して外部に出力することで誤動作箇所(回路)を特定することができる。また、図4に示す回路を採用した半導体装置では、誤動作箇所(回路)をリカバリーした後に、スキャンモードで停止した状態から再開することも可能である。
(実施の形態2)
図8に示す回路は、レジスタR0からロジックステージL1を経由してレジスタR1へ至るパスをクリティカルパスとし、レジスタR1が出力するデータ信号Q1を次段論理(ロジックステージL2)へ伝播する。ここで、図8に示す回路では、レジスタR1に供給されるクロック信号C1を、外部から直接供給されるクロック信号Clkとするのではなく、クロック制御手段として機能するAND回路20においてEnable信号(イネーブル信号)と論理和を取ったゲーティッドクロック信号としている。なお、クロック制御手段は、AND回路に限られず、同等の機能を備える回路であればよい。
また、図8に示す回路では、クロックラインにバッファB2を挿入することによりセットアップ違反条件を緩和させたレジスタR2を設け、レジスタR1との出力結果比較を比較器3で行う。さらに、図8に示す回路では、Enable信号が”0”の場合、レジスタR0からのデータを取り込まないように選択回路21を使ってレジスタR2から出力されたデータ信号Q2をフィードバックさせ、Enable信号が”1”の場合、データ信号D1を取り込む。
しかし、図8に示す回路では、期待値側のレジスタR2に入力されたクロック信号C2がゲーティッドクロック信号ではなくフリーランになっている。そのため、レジスタR2では、常時クロックイベントが発生し、レジスタR1をゲーティッドクロック信号により駆動することによる消費電力削減効果を低減している。
また、通常の回路動作において、クロック信号の波形がクリップされないように、優位期間(ポジティブエッジであれば”H”期間)にEnable信号を変化させない。しかし、電源電圧の低下や周囲温度の変化により、Enable信号の到達に遅れ(いわゆるEnable信号のセットアップ違反)が生じるとクロック信号がクリップされ、次段への信号伝播に影響を与え誤動作誘発の原因となる。図9に、クロック信号がクリップされる様子を模式的に示す。
そこで、本実施の形態に係る半導体装置では、図10に示す回路を用いることで消費電力削減効果を改善し、Enable信号のセットアップ違反を検出可能としている。図10に示す回路では、レジスタR2に入力されるクロック信号がゲーティッドクロック信号とするために、クロック制御手段としてAND回路22が設けられている。なお、クロック制御手段は、AND回路に限られず、同等の機能を備える回路であればよい。
このAND回路22には、ロックアップラッチとして機能するレジスタR3の出力、レジスタR4の出力及びバッファB3により遅延させたクロック信号とが入力される。また、レジスタR3には、Enable信号とバッファB3により遅延させたクロック信号とが入力される。レジスタR4には、Enable信号とクロック信号とが入力される。図10に示す回路の他の構成については、図8に示す回路構成と同じであるため、同一要素に同一符号を付して詳細な説明を省略する。
ここで、図9に示すクリップAのようなEnable信号のriseイベントの遅延に関しては、オリジナルのクロック信号の立ち上がり時のEnable信号が”L”であればレジスタR2へのクロック信号をネゲートすることで検出可能となる。つまり、クリップの判定時以降にEnable信号が”H”となりレジスタR1にクリップされたクロック信号が発生した場合、レジスタR1の内容が変化することになりレジスタR2との間で差異が生じてエラー信号が立つことになる。なお、レジスタR1の内容が変化しない場合は、後段へのデータ伝播が発生しないため、エラー信号を立たせる必要はない。
次に、図9に示すクリップBのようなEnable信号のfallイベントの遅延に関しては、図10に示すように、バッファB3により遅延させたクロック信号(ディレイドクロック信号)のディスイネーブル期間のみイベントを通過させるロックアップラッチのレジスタR3を挿入することで検出可能となる。つまり、クロック信号の立ち上がりとディレイドクロック信号の立ち上がりとの間にEnable信号がネゲートされた場合、レジスタR2に入力されるクロック信号がネゲートされることになる。そのため、レジスタR1の内容が変化したとすると、レジスタR2との間で差異が生じてエラー信号が立つことになる。なお、レジスタR1の内容が変化しない場合は、後段へのデータ伝播が発生しないため、エラー信号を立たせる必要はない。
図10に示す回路では、実動作のレジスタR1に対してクロックラインにバッファB3を挿入することにより、タイミング的に余裕(Positive Slack)を持たせたレジスタR2を作成する。そして、レジスタR1及びレジスタR2のそれぞれにAND回路20,22を介したゲーティッドクロック信号を入力する。ここで、図10に示す回路では、グリッジ防止のため、ディレイクロック信号の”H”期間のイベントを遮断するためにフェールセーフ回路としてロックアップラッチのレジスタR3をAND回路22の前に挿入する。
さらに、図10に示す回路では、Enable信号のイベント内容がriseイベントなのかfallイベントなのかを判定するために、レジスタR4を挿入し、その出力をAND回路22の入力に接続している。また、図10に示す回路では、データ信号のセットアップ違反を検出(クロック信号C1からクロック信号C2までの間のイベント検出)するとともに、イネーブル信号のセットアップ違反も検出できる。
次に、図10に示す回路の動作を、図11に示すタイミングチャートを用いて説明する。まず、レジスタR1のクロックピンに入力される信号をクロック信号C1、データ入力ピンに入力される信号をデータ信号D1、データ出力ピンから出力される信号をデータ信号Q1とする。また、レジスタR2のクロックピンに入力される信号をクロック信号C2、データ入力ピンに入力される信号をデータ信号D2、データ出力ピンから出力される信号をデータ信号Q2とする。さらに、データ信号Q1とデータ信号Q2とを比較する比較器3からエラー信号が出力される。なお、上述したように、クロック信号C2は、バッファB3によりクロック信号C1に対して挿入したバッファ分だけ遅延してイベントが伝播する。
まず、図11に示す1周期目では、Enable信号のriseイベントの到着が遅れたため、クロック信号C1がクリップ(ハッチングされている部分)される。そして、クロック信号C1がriseイベントのとき、Enable信号は”L”なので、図示していないがレジスタR4の出力R4Enblも”L”となる。従って、1周期目では、レジスタR2へのクロック信号C2はネゲートされるため、レジスタR1においてデータの内容に変化があった場合、レジスタR1とレジスタR2との結果が異なるため、エラー信号が”1”となる。つまり、図10に示す回路は、Enable信号のセットアップ違反を検出できる。仮に、レジスタR1においてデータの内容に変化がない場合、エラー信号が”1”とならず、クロック信号C1のクリップを検出できないが、イベントそのものが発生しておらず後段の回路にも影響を与えないので、本現象をアサートする必要はない。
次に、図11に示す2周期目では、クロック信号C1,C2のriseイベント前にEnable信号が”H”に確定しているが、レジスタR1へのデータイベントの到達(データ信号D1の変化)がクロック信号C1のriseイベントに間に合っていない。そのため、データ信号Q1とデータ信号Q2との結果が異なり、エラー信号が”H”となる。つまり、図10に示す回路は、データ信号のセットアップ違反を検出できる。
次に、図11に示す3周期目では、Enable信号のfallイベントの到着が遅れたため、クロック信号C1がクリップ(ハッチングされている部分)される。そして、クロック信号C1のriseイベントのとき、Enable信号は”H”なので、図示していないがレジスタR4の出力R4Enblも”H”となる。従って、3周期目では、クロック信号C2のriseイベント前にEnable信号が”L”に落ち、当該イベントがロックアップラッチであるレジスタR3を介してAND回路22に伝達されるので、結果としてレジスタR2へのクロック信号C2はネゲートされる。さらに、レジスタR1においてデータの内容に変化があった場合、レジスタR1とレジスタR2との結果が異なることになり、エラー信号が”1”となる。つまり、図10に示す回路は、Enable信号のセットアップ違反を検出できる。仮に、レジスタR1においてデータの内容に変化がない場合、エラー信号が”1”にならず、クロック信号C1のクリップが検出できないが、イベントそのものが発生しておらず後段の回路にも影響を与えないので、本現象をアサートする必要はない。
次に、図11に示す4周期目では、Enable信号が”L”のため、クロック信号C1及びクロック信号C2が共にネゲートされるため、図10に示す回路の出力結果に影響を与えない。そして、図11に示す5周期目では、2周期目と同じ動作を行うので、詳細な説明は省略する。
以上のように、本実施の形態に係る半導体装置は、図10に示す回路を用いているので、消費電力削減効果を改善し、Enable信号のセットアップ違反を検出することが可能となる。
(実施の形態3)
実施の形態2では、データ信号のセットアップ違反とEnable信号のセットアップ違反をそれぞれ検出することができるが、データ信号及びEnable信号のセットアップ違反が同周期に生じた場合、セットアップ違反を検出できなかった。そこで、本実施の形態では、図12に示す回路を用いることで同周期に生じるデータ信号及びEnable信号のセットアップ違反を検出可能にしている。
通常、Enable信号はバス(複数ビット)制御に使用されることが多いため、図12に示す回路では、Enable信号のセットアップ違反は同一のEnable信号で制御される回路グループに対して、Enable信号のみを検知する回路を新規に追加している。つまり、図12に示す回路では、レジスタR1,R2や比較器3等を備え、データ信号のセットアップ違反を検出する回路A1〜A3と、当該回路A1〜A3に対して共通に供給されるEnable信号のセットアップ違反を検出する回路Bとで構成されている。
図12に示す回路A1〜A3は、図10に示す回路のレジスタR3,R4を取り除いた構成である。一方、図12に示す回路Bは、クロック信号とEnable信号とが入力するレジスタR3と、バッファ30により遅延させたクロック信号とEnable信号とが入力するレジスタR4と、レジスタR3の出力とレジスタR4の出力を比較する比較器31とを備えている。なお、回路Bの構成は、図12に示す回路構成に限定されず、同等の機能を有する回路構成であればよい。
ここで、回路A1〜A3のバッファB3及び回路Bのバッファ30の遅延量は、対象レジスタの前段ロジックにおけるスラック量に依存し、それぞれ最適な遅延量が設定される。具体的には、Enable信号からレジスタR1,R2,R3,R4のそれぞれへ至る経路のスラック量が、ロジックステージL1のスラック量に比べて大きい場合、レジスタR2の前段に挿入されたバッファB3の遅延量の方が、レジスタR4の前段に挿入されたバッファ30の遅延量よりも大きくなる。
また、図12に示す回路では、同一のEnable信号で制御される回路グループが3ビットであったため、回路A1〜A3の3つに対して回路Bを1つ設ける構成であるが、本発明はこれに限定されない。例えば、同一のEnable信号で制御される回路グループが5ビットであれば、回路A1〜A5の5つに対して回路Bを1つ設ける構成となる。
次に、図12に示す回路の動作を、図13に示すタイミングチャートを用いて説明する。まず、レジスタR1のクロックピンに入力される信号をクロック信号C1、データ入力ピンに入力される信号をデータ信号D1、データ出力ピンから出力される信号をデータ信号Q1とする。また、レジスタR2のクロックピンに入力される信号をクロック信号C2、データ入力ピンに入力される信号をデータ信号D2、データ出力ピンから出力される信号をデータ信号Q2とする。
また、レジスタR3のクロックピンに入力される信号をクロック信号C3、データ入力ピンに入力される信号をデータ信号D3、データ出力ピンから出力される信号をデータ信号Q3とする。また、レジスタR4のクロックピンに入力される信号をクロック信号C4、データ入力ピンに入力される信号をデータ信号D4、データ出力ピンから出力される信号をデータ信号Q4とする。さらに、データ信号Q1とデータ信号Q2とを比較する比較器3から出力されるエラー信号をError1とし、データ信号Q3とデータ信号Q4とを比較する比較器31から出力されるエラー信号をError2とする。なお、上述したように、クロック信号C2は、バッファB3によりクロック信号C1に対して挿入したバッファ分だけ遅延してイベントを伝播し、クロック信号C4は、バッファ30によりクロック信号C3に対して挿入したバッファ分だけ遅延してイベントを伝播する。
まず、図13に示す1周期目では、Enable信号のriseイベントの到着が遅れたため、クロック信号C1がクリップ(ハッチングされている部分)される。図12に示す回路では、データ信号とEnable信号のセットアップ違反を検出する回路を分離したため、クロック信号C1のクリップを、データ信号のエラー検出信号であるError1信号としては検出することができなくなった。しかし、図13に示す1周期目では、Enable信号のエラー検出信号であるError2信号が”H”となり、クロック信号C1のクリップを検出している。
次に、図13に示す2周期目では、データ信号のセットアップ違反が発生しているため、Error1信号として検出している。なお、2周期目では、Enable信号のエラー検出信号であるError2信号は”L”のままでアサートされない。
次に、図13に示す3周期目では、Enable信号のfallイベントの到着が遅れたため、クロック信号C1がクリップ(ハッチングされている部分)される。このクロック信号C1のクリップによるEnable信号のセットアップ違反も、1周期目と同様にError2信号が”H”となることで検出可能である。
次に、図13に示す4周期目では、Enable信号が”L”のため、クロック信号C1及びクロック信号C2ともネゲートされるため、図12に示す回路の出力結果にも影響を与えない。
次に、図13に示す5周期目では、データ信号とEnable信号どちらもセットアップ違反を起こしている場合である。5周期目の場合、データ信号とEnable信号とは競合関係にある。つまり、クロック信号Clkの立ち上がりに対してデータ信号のイベント到達が遅延しているため、本来セットアップ違反となるべきであるが、クロック信号C1のクリップにより、クロック信号C1が立ち上がる時点ではデータ信号のイベント到達している。従って、データ信号Q1とデータ信号Q2の結果は同一となり、データ信号に対するエラー検出信号のError1信号は”H”とならず、データ信号のセットアップ違反を検出できない。しかし、図13に示す5周期目では、Enable信号に対するエラー検出信号のError2信号は”H”となり、クロック信号C1のクリップは検出できる。なお、クロック信号C1が立ち上がる時点よりもデータ信号のイベント到達が遅延している場合は、データ信号のセットアップ違反も検出できる。
以上のように、本実施の形態に係る半導体装置では、図12に示す回路を用いることで同周期にデータ信号のセットアップ違反とEnable信号のセットアップ違反とが生じても、少なくとも一方を検出することができる。
(実施の形態4)
図14に示す回路では、実動作レジスタであるレジスタR1に対し、クロックラインに遅延手段であるバッファB2を挿入した分だけタイミング的に余裕(Positive Slack)を持たせたレジスタR2を備えている。そして、レジスタR1には、ロジックステージL1の出力であるデータ信号D1が入力される。このロジックステージL1の前段には、レジスタR0が接続されている。一方、レジスタR1の出力であるデータ信号Q1は、比較器3に入力される。
この比較器3は、レジスタR1のデータ信号Q1とレジスタR2の出力であるデータ信号Q2とを比較し、両者が不一致の場合にエラー信号を出力する。そのため、図14に示す回路は、クロックラインに挿入したバッファB2の遅延分だけレジスタR1のセットアップ違反を動的に検出することができる。また、図14に示す回路では、次段のロジックステージL2の前段に、選択回路2が設けられている。この選択回路2は、比較器3の出力であるエラー信号が”0”の時、レジスタR1からのデータ信号Q1をロジックステージL2に出力し、エラー信号が”1”の時、レジスタR2からのデータ信号Q2をロジックステージL2に出力するように切り替え制御する。
そして、図14に示す回路の通常パスは、レジスタR1に到達したデータ信号D1がクロック信号C1の立ち上がりエッジに同期して取り込まれ、選択回路2を経て次段のロジックステージL2へ伝播される。つまり、通常動作時のパス経路は、レジスタR1及び選択回路2を経由する経路である。
しかし、図14に示す回路が誤動作を検知し修復動作を行った場合、データ信号D1と同時にレジスタR2に到達するデータ信号D2は、遅延手段であるバッファB2によりクロック信号C1に対して遅れたクロック信号C2に基づき、レジスタR2により取り込まれる。そして、レジスタR2に取り込まれたデータ信号D2は、データ信号Q2として出力され、比較器3及び選択回路2を経由して次段のロジックステージL2に伝播する。従って、誤動作を検知し修復動作を行った場合、図14に示す破線の経路が修復動作時のパス経路となり、バッファB2の遅延量G1と比較器3での遅延量G2との和が通常動作時のパス経路に対するタイミングオーバーヘッドとなる。そのため、次段がタイミングクリティカルであった場合、修復動作時のパス経路の遅延量G1+G2により、次段パスの誤動作を誘発する可能性があった。
そこで、本実施の形態に係る半導体装置では、図15に示す回路を用いることで次段パスの誤動作を誘発させる可能性を低減している。図15に示す回路では、レジスタR0からロジックステージL1を経由してレジスタR1へ至るパスがクリティカルパスを形成しており、レジスタR1の出力ピンからデータ信号Q1が出力され次段論理(ロジックステージL2、レジスタR3)へ伝播する。また、図15に示す回路では、クロックラインにバッファB2を挿入することによりセットアップ違反条件を緩和させたレジスタR2を設け、レジスタR1の出力とレジスタR2の出力とを比較する比較器3を設けている。
さらに、図15に示す回路では、レジスタR1,R2の後段に選択回路2を挿入する。そして、選択回路2は、比較器3の出力であるエラー信号が”0”の時、データ信号Q1を出力し、エラー信号が”1”の時、データ信号Q2を出力するように制御し、ロジックステージL2へのイベント伝播を切り替える。
また、図15に示す回路では、レジスタR1,R2等を含む回路C1〜C3が複数設けられ(図15では3つの回路)、各回路からのエラー信号がOR回路40で束ねられる。そのため、各回路C1〜C3のいずれか1つでもエラー信号がアサート(”H”)すれば、OR回路40の出力は”H”となる。さらに、図15に示す回路では、OR回路40の立ち上がりイベントを微分回路41でDetect信号(ディテクト信号)として検知し、当該Detect信号に基づいてAND回路42が各回路C1〜C3に供給するクロック信号Clkをネゲートする。なお、クロック信号Clkをネゲートするサイクルは、ダウンカウンタにより任意のサイクルに設定(通常1サイクル)しても、システム側からの制御信号によって設定してもよい。
ここで、微分回路41は、レジスタR4、レジスタR5及びAND回路43を備えている。レジスタR4は、OR回路40からの出力と、クロック信号Clkと、システムからのPower On Reset信号とが入力される。レジスタR5は、レジスタR4の出力と、クロック信号Clkとが入力される。AND回路43は、レジスタR4の出力と、レジスタR5の反転出力とが入力され、Detect信号を出力する。
図15に示す回路は、エラー信号のアサートを検知し、対象となる回路のクロック信号Clkをディスイネーブルにして、当該クロック信号がディスイネーブルされている期間内に誤動作修復処理を行う。さらに、図15に示す回路では、エラー信号の信号レベルを検知すると、ディスイネーブル以降のクロック信号が復帰しなくなるため、信号レベルではなくエッジを検出するために微分回路41を設けている。また、図15に示す回路では、エラー信号のグリッジ(クロック位相差による微小信号)を拾わないように、微分回路41でフィルタリングを行っている。なお、図15に示す回路では図示していないが、誤動作修復サイクルを予め設定されたサイクル数となるようにカウンタで制限するか、システムからの制御信号(Req)をAND回路42供給してクロック信号のディスイネーブル期間を制御する。
次に、図15に示す回路の動作を、図16に示すタイミングチャートを用いて説明する。まず、レジスタR1のクロックピンに入力される信号をクロック信号C1、データ入力ピンに入力される信号をデータ信号D1、データ出力ピンから出力される信号をデータ信号Q1とする。また、レジスタR2のクロックピンに入力される信号をクロック信号C2、データ入力ピンに入力される信号をデータ信号D2、データ出力ピンから出力される信号をデータ信号Q2とする。なお、上述したように、クロック信号C2は、バッファB2によりクロック信号C1に対して挿入バッファ分だけ遅延してイベントが伝播する。また、データ信号D1は、SignalIn信号の値をクロック信号C1の立ち上がりエッジで取り込み、ロジックステージL1の遅延を経てイベントが到達するものとする。同様に、データ信号D2は、SignalIn信号の値をクロック信号C2の立ち上がりエッジで取り込み、ロジックステージL1の遅延を経てイベントが到達するものとする。
まず、図16に示す1周期目では、データ信号D1及びデータ信号D2のriseイベントのそれぞれが、クロック信号C1及びクロック信号C2のriseイベントの前に行われているため、レジスタR1及びレジスタR2は正常に論理”1”を取り込んでいる。但し、クロック信号C1とクロック信号C2との位相差によりエラー信号が”1”となり、それに伴い当該期間のOutput信号もデータ信号Q2の値となる。その後、エラー信号が”0”に戻り、それに伴いOutput信号もデータ信号Q1の値に切り替わり、正常に動作になる。しかし、図15に示す微分回路41は、半周期に満たないグリッジパルスをフィルタリングしてDetect信号をアサートしない。従って、次サイクルである2周期目でのクロック信号C1及びクロック信号C2はディスイネーブルされない。
次に、図16に示す2周期目では、レジスタR1におけるデータ信号D1のfallイベントの到達がクロック信号C1のriseイベントに間に合わないため、データ信号Q1が”0”を取り込むことができない。しかし、レジスタR2におけるデータ信号D2のfallイベントの到達はクロック信号C2のriseイベントに間に合うため、データ信号Q2は”0”を取り込むことができる。よって、レジスタR1とレジスタR2との結果に相違が生じ、比較器3の結果(エラー信号)が”1”となる(セットアップ違反を検出)。
このとき、エラー信号によって選択回路2の経路がデータ信号Q2をOutput信号とする経路に切り替わり、Output信号は”0”となる。ここで、クロック信号C1からクロック信号C2及びデータ信号Q2からOutput信号への切り替え分のオーバーヘッドが次段のセットアップ違反を誘発することを防ぐ必要がある。そのため、図15に示す微分回路41は、エラー信号の立ち上がりエッジを検出し、且つ半周期以内のグリッジでないことを確認し、Detect信号にカウンタサイクル分だけ正のパルスを発生する。本実施の形態では、予め設定したカウント値が1であるとして、クロック信号C1の立ち下がりエッジから次サイクルである3周期目のクロック信号C1の立ち下がりエッジまでパルスを発生させる。
なお、本実施の形態では、説明を簡略化するため、Detect信号がクロック信号C1の立ち下りエッジに同期しているが、クロック信号C1よりも少し速いクロックに同期させてDetect信号を合成し、誤動作検出期間に余裕を持たせる構成でもよい。具体的に、クロック信号C1よりも少し速いクロックはクロックツリーでクロック合成するため、理論的に任意の遅延差を設けることが可能である。また、図15に示す回路では、クロック信号C1の立ち下りエッジではなく、少し速いクロックを用いた回路構成になっている。
次に、図16に示す3周期目では、前サイクル(2周期目)のSignalIn信号からのイベントをトリガしたレジスタR0のイベントがデータ信号D1及びデータ信号D2に到達する。しかし、クロック信号C1及びクロック信号C2のイベントがディスイネーブルされ、データ信号D1及びデータ信号D2の値をデータ信号Q1及びデータ信号Q2として取り込まない。つまり、Output信号でのイベントは発生しない。よって、次段のレジスタR3は、2周期目及び3周期目の2サイクルかけてOutput信号の値を取り込めばよく、セットアップマージンを十分確保することができる。
なお、当該サイクル中(3周期目)に、SignalIn信号にイベントが発生してしまうと、クロック信号C1,C2がディスイネーブルされているために、当該イベントが後段に伝播されない。しかし、ロジックステージL1等の論理回路へデータの伝搬を要求するシステムからの制御信号(Req信号)とDetect信号とをハンドシェークするフェールセーフ手段を採用することで上記の問題を解決できる。つまり、当該手段により、Detect信号がアサートされている間、SignalIn信号にイベントを発生させないようにし、逆にSignalIn信号へのデータ準備ができていない間、Req信号をネゲートすればよい。
次に、図16に示す4周期目では、Detect信号がネゲートされ、クロック信号Clkがディスイネーブルされていた間に保持されていたデータ信号D1及びデータ信号D2のriseイベントがクロック信号C1及びクロック信号C2のriseイベントの前に到達している。そのため、レジスタR1及びレジスタR2は、正常に論理”1”を取り込むことができる。
以上のように、本実施の形態に係る半導体装置は、図15に示す回路を用いることで、修復動作時のパス経路の遅延量による次段パスの誤動作を誘発する可能性を低減している。
(実施の形態5)
図15に示す回路に対して定格電圧で駆動した場合はセットアップ時間が遵守されるが、駆動電圧の降圧に伴い遅延が増大する場合はセットアップ時間が守られずに出力が不安定な状態となるメタステーブル状態が発生する。具体的に、図17に示すタイミングチャートを用いて説明する。まず、定格電圧で駆動した場合、1周期目のクロック信号C1の立ち上がりにおいて、データ信号D1のイベントをレジスタR1が取り込むことになる。しかし、図17に示すタイミングチャートでは、駆動電圧の降圧に伴いレジスタR1の出力であるデータ信号Q1が”0”から”1”に不安定な状態(メタステーブル)に遷移している。同様に、図17に示す2周期目のクロック信号C1の立ち上がりにおいて、駆動電圧の降圧に伴いレジスタR1の出力であるデータ信号Q1が”1”から”0”に不安定な状態(メタステーブル)に遷移している。
そこで、本実施の形態に係る半導体装置では、図18に示すようにレジスタR1の出力に対してメタスタビリティ検出回路50を設ける回路を採用している。図18に示す回路は、メタスタビリティ検出回路50によりメタステーブル発生の有無を検出して、回路の出力が不安定な状態に遷移しないように制御している。つまり、図18に示すメタスタビリティ検出回路50は、出力するMSD信号と比較器3の出力とをOR回路51で処理して、メタステーブルの検出時にレジスタR1の出力にかかわらず、エラー信号を”H”する。そして、メタスタビリティ検出回路50は、レジスタR2の出力が選択回路2で選択されるように制御している。
また、メタスタビリティ検出回路50の回路図を図19に示す。図19に示すメタスタビリティ検出回路50は、低閾値(Lvt)のPMOS(P-channel Metal-Oxide Semiconductor)52と、高閾値(Hvt)のNMOS(N-channel Metal-Oxide Semiconductor)53とのペアトランジスタを用いたインバータを備えている。さらに、図19に示すメタスタビリティ検出回路50は、高閾値のPMOS54と低閾値のNMOS55とのペアトランジスタを用いたインバータを備え、両インバータのXORを演算するXOR回路56によりメタステーブルを検出している。
次に、図18及び図19に示す回路の動作を、図20に示すタイミングチャートを用いて説明する。ここで、出力I1は、低閾値のPMOS52と高閾値のNMOS53とのインバータ出力、出力I2は、高閾値のPMOS54と低閾値のNMOS55とのインバータ出力、MSDは、出力I1と出力I2とのXOR論理の結果である。また、図18では図示していないが、エラー信号の出力先に図15で示したOR回路40や微分回路41が設けられており、当該微分回路41の出力であるDetect信号に基づきクロック信号C1,C2を制御している。
まず、図20に示す1周期目では、クロック信号C1の立ち上がりと同時にデータ信号D1,D2が”0”から”1”へと遷移しているが、駆動電圧の降圧のためデータ信号Q1がメタステーブル状態となっている。そして、出力I1は、出力I2と比較して、”1”から”0”への遷移出力の感度が悪いため、出力I2が出力I1に比べて速く”0”に遷移し、少し遅れて出力I1が”0”に遷移する。この出力I1と出力I2との遅延差の間におけるMSDは”1”になり、メタステーブルを検出できることになる。このメタステーブルの検出結果(MSD=”1”)を受けてエラー信号が”1”となり、さらにDetect信号が”1”となる。
次に、図20に示す2周期目では、Detect信号が”1”となっていることを受けて、クロック信号C1,C2がネゲートされ、この間に出力Qの結果が修復される。
次に、図20に示す3周期目では、クロック信号C1の立ち上がりと同時にデータ信号D1,D2が”1”から”0”へと遷移しているが、駆動電圧の降圧のためデータ信号Q1がメタステーブル状態となっている。当該周期は1周期目のケースと逆で、出力I2は出力I1と比較して、”0”から”1”への遷移出力の感度が悪いため、出力1が出力I2に比べて速く”1”に遷移し、少し遅れて出力I2が”1”に遷移する。この出力I1と出力I2との遅延差の間におけるMSDは”1”になり、メタステーブルを検出できることになる。このメタステーブルの検出結果(MSD=”1”)を受けてエラー信号が”1”となり、さらにDetect信号が”1”となる。
次に、図20に示す4周期目では、Detect信号が”1”となっていることを受けて、クロック信号C1,C2がネゲートされ、この間に出力Qの結果が修復される。
次に、図20に示す5周期目では、クロック信号C1の立ち上がりの前にデータ信号D1,D2が”0”から”1”へと遷移しているため、データ信号Q1,Q2共に正常に”1”を取り込むことができる。
以上のように、本実施の形態に係る半導体装置では、図18及び図19に示す回路を採用しているので、メタステーブル発生の有無が検出でき、回路の出力Qが不安定な状態に遷移しないように制御できる。なお、本実施の形態に係る誤動作判定回路では、微分回路や選択回路2を備える回路構成について説明したが、本発明はこれに限られず、微分回路や選択回路2を備えない構成や、図12等に示したEnable信号のセットアップ違反を検出する回路をさらに備える構成であってもよい。
(実施の形態6)
図21に示す回路では、実動作レジスタであるレジスタR1に対し、クロックラインに遅延手段であるバッファチェーンB2を挿入した分だけタイミング的に余裕(Positive Slack)を持たせたレジスタR2を備えている。そして、レジスタR1には、ロジックステージL1から出力されたデータ信号D1が入力される。このロジックステージL1の前段には、レジスタR0が接続されている。一方、レジスタR1から出力されたデータ信号Q1は、次段のロジックステージL2に入力されると共に、比較器3に入力される。
この比較器3は、レジスタR1から出力されたデータ信号Q1とレジスタR2から出力されたデータ信号Q2とを比較し、両者が不一致の場合にエラー信号を出力する。そのため、図21に示す回路は、クロックラインに挿入したバッファチェーンB2の遅延分だけレジスタR1のセットアップ違反を動的に検出することができる。また、図21に示す回路では、バッファチェーンB2の遅延量を調整するために選択回路50が設けられている。この選択回路50は、外部から入力される選択信号Selに基づいて駆動される。そして、同様の回路(エラー検出FF)に含まれるバッファチェーンB2の遅延量(Delay)は、複数の回路全てにおいて最適な値で均一化されている。しかし、実際には挿入される遅延量と速度マージンとの間に密接な関係があり、速度マージンの少ないパスほど挿入する遅延量を増やす必要がある。但し、過多に挿入した遅延量は回路規模や消費電力のオーバーヘッドを引き起こすとともにホールド耐性も弱くなる問題がある。逆に、過少に挿入した遅延量は動作対象レジスタ(R1)と同様に期待値レジスタ(R2)もフェールする領域が大きくなり、誤動作検知スポットが狭くなる問題がある。
そこで、本実施の形態では、速度マージンによって遅延パスをグルーピングし、各グループに対して最適な遅延量を挿入する。図22に、速度マージンに対応するスラック量とパス数との関係を示したグラフを示す。図22に示すグラフでは、横軸に示した0から1までのスラック量に対して、例えば0.5nsの遅延量を有するバッファを4段挿入し、1から2までのスラック量に対して、当該バッファを3段挿入し、2から3までのスラック量に対して、当該バッファを2段挿入し、3から4までのスラック量に対して、当該バッファを4段挿入する。これにより、本実施の形態では、動作マージンを保ちつつ面積や消費電力のオーバーヘッドを抑えることができる。
具体的に説明する前に、図23(a)に示す回路(エラー検出FF)を、図23(b)に示すようにシンボル化する。図23(b)の中央にあるBの数字は、図23(a)に示すレジスタR2のクロックラインに挿入されたバッファB2の段数を示している。例えば、図23(b)に示すB−1は、バッファが1段挿入されていることを表している。なお、図23(a)に示す回路では、バッファ量が多ければ多いほど、レジスタR1とレジスタR2との間の遅延差が大きくなり、誤動作を検知するマージン(検知マージン)が大きくなるが、回路規模の増大、消費電力の増加及びホールドマージン現象が生じる問題がある。また、図23(a)に示した回路は、図3に示した回路構成とほぼ同じであるため、詳細な説明は省略する。
次に、図23(a)に示した回路を4つ(U1,U2,U3,U4)使用した場合の回路構成を図24に示す。なお、図24では、図23(a)の回路をシンボル化した図23(b)を用いて表している。そして、図24に示す回路構成では、各回路(U1,U2,U3,U4)のそれぞれに、ロジック量の異なる前段(ロジックステージ)が挿入されている。そのため、各回路(U1,U2,U3,U4)の周波数に対する速度マージン(スラック)は、それぞれ0ns,0.5ns,1.0ns,1.5nsとする。また、挿入するバッファ1段あたりの遅延量は、0.5nsとする。なお、図24に示す回路構成では、各回路(U1,U2,U3,U4)に挿入されるバッファを1段としている。
次に、図24に示す回路構成の動作を、図25に示すタイミングチャートを用いて説明する。図25に示すタイミングチャートでは、周期が進むごとに電源電圧を低下させて、各回路(U1,U2,U3,U4)のデータ端子Dに0.5nsの遅延オーバーヘッドが生じるように仮定している。従って、4周期目では、1周期目に対して1.5nsのスラックが減じられる(1.5nsの遅延増加)ことになる。
図25に示す1周期目では、回路U1のセットアップ違反を検知できている(その他の回路U2,U3,U4ではセットアップ違反していない)。しかし、2周期目以降では、回路U1がセットアップ違反を起こしているにもかかわらず、クロック信号Clkに対するクロック信号C2の位相差であるレジスタR2のマージンが不足しているのでセットアップ違反が検知できていない。
次に、図24に示す回路構成において、バッファ量を4段に増やした場合のタイミングチャートを図26に示す。図26も前述と同様に、周期が進むごとに電源電圧を低下させて、各回路(U1,U2,U3,U4)のデータ端子Dに0.5nsの遅延オーバーヘッドが生じるように仮定している。従って、4周期目では、1周期目に対して1.5nsのスラックが減じられることになる。
図26に示す1周期目では、回路U1のセットアップ違反を検知できている(その他の回路U2,U3,U4ではセットアップ違反していない)。しかし、2周期目以降では、回路U1がセットアップ違反を起こしている4周期目までセットアップ違反を検知し続けられる。
一方、回路U2に関しては、2周期目で初めてセットアップ違反が検知され、その後4周期目までセットアップ違反を検知できている。回路U3に関しては、3周期目で初めてセットアップ違反が検知され、その後、4周期目までセットアップ違反を検知できている。回路U4に関しては、4周期目で初めてセットアップ違反が検知されている。
従って、回路U2に関しては2周期目以降、回路U3に関しては3周期目以降、回路U4に関しては4周期目以降で、それぞれセットアップ違反を検知できればよいということである。通常の回路設計において電圧動作の下限は決まっており、それを超えるマージン量を確保する必要はない。よって、スラック量の大きいパスほど回路(U1,U2,U3,U4)に挿入する遅延量を小さくすることで、誤動作を検知するマージンを落とすことなく、面積や消費電力のオーバーヘッドを極力抑えることができる。
次に、図25や図26に示したタイミングチャートに基づき、挿入する遅延量を最適にした回路構成を図27に示す。図27に示す回路構成では、スラック量が少ない回路ほど遅延量が多くなるようにバッファの段数を調整している。具体的には、図27に示す回路構成では、回路U1のスラック量が0nsと小さいので4段のバッファ(B4)を設け、スラック量が0.5nsの回路U2には3段のバッファ(B3)、スラック量が1.0nsの回路U3には2段のバッファ(B2)、スラック量が1.5nsの回路U4には1段のバッファ(B1)をそれぞれ設けている。
つまり、本実施の形態に係る半導体装置の回路構成では、回路のレイアウト後に各遅延パスのスラック量を分析し、バッファ1段分の遅延量に収まるスラック量を持つ回路(エラー検出FF)をグルーピングして束ねる。そして、本実施の形態に係る半導体装置の回路構成では、グルーピングした回路(エラー検出FF)に対して最適なバッファを挿入する。
図28に示すタイミングチャートは、図27に示す回路構成の動作を説明している。そして、図27に示す回路構成では、セットアップ違反のチェックが必要な箇所(破線で囲まれた箇所でデータ信号Dが変化しているポイント)において正しく検知されている。つまり、図28に示すタイミングチャートは、回路U1に関しては1周期目以降、回路U2に関しては2周期目以降、回路U3に関しては3周期目以降、回路U4に関しては4周期目以降で、それぞれセットアップ違反を検知できている。
(実施の形態7)
実施の形態5では、スラック量により半導体装置に含まれる誤動作判定回路(エラー検出FF)をグルーピングして、各グループの誤動作判定回路に最適な量のバッファを挿入していた。しかし、半導体装置において極端にスラック量が小さい回路は、多数のバッファを挿入する必要があり、面積や消費電力のオーバーヘッドが大きくなる点で問題があった。
以下に、具体的な例を用いて説明する。図29に示す回路では、レジスタR3を終点とするパスとして、レジスタR1からレジスタR3へ至るタイミングクリティカルなパスを有すると伴に、レジスタR2からレジスタR3へ至る等の他のパスも有している。そして、図29に示すレジスタR3を図3で説明した誤動作判定回路(エラー検出FF)に置き換えた場合の回路構成を、図30に示す。図30に示す回路構成では、レジスタR1からレジスタR3−1へ至るパスがタイミングクリティカルなパスであるが、このパス以外にレジスタR2からレジスタR3−2へ至るパスも有している。
しかし、レジスタR2からレジスタR3−2へ至るパスがホールド違反を引き起こすと仮定すると、このホールド違反の対策のためにレジスタR2からレジスタR3−2へ至るパスにバッファやディレイセルを挿入する必要がある。つまり、レジスタR3−2のクロックラインに挿入しているバッファ1の遅延量が大きい場合、図31に示す回路構成のようにレジスタR2からレジスタR3−2へ至るパスに、バッファ1の遅延量と等価なバッファやディレイセル等の遅延手段60を挿入する必要がある。そのため、図31に示す回路構成では、面積的にも消費電力的にもオーバヘッドが大きくなる問題があった。
そこで、本実施の形態に係る半導体装置では、ホールド違反を引き起こすパスを有する回路構成において、ホールド違反の対策として挿入するバッファやディレイセルの代わりに、ロックアップラッチや反転FFを挿入する。つまり、本実施の形態では、図32に示すように、レジスタR2からレジスタR3−2へ至るパスにロックアップラッチとして機能するレジスタR4を挿入する。又は、図33に示すように、レジスタR2からレジスタR3−2へ至るパスに反転FFとして機能するレジスタR4を挿入する。
図32に示す回路構成や図33に示す回路構成では、多数のバッファセルやディレイセルを挿入する代わりに、ロックアップラッチや反転FFとして機能するレジスタR4を挿入することで、クロック信号の半周期分の遅延を稼ぐことができ、且つホールド違反を解消することができる。さらに、図32に示す回路構成や図33に示す回路構成は、図31に示す回路構成のように多数のバッファセルやディレイセルを挿入する必要がないので、面積的にも消費電力的にもオーバヘッドを低減できる。
次に、ホールド違反を引き起こしている図30に示す回路構成の動作を、図34に示すタイミングチャートを用いて説明する。なお、図30に示す回路構成において、レジスタR1からレジスタR3−1に至るパスはセットアップ違反を引き起こし、レジスタR1からレジスタR3−2に至るパスから期待値を得る。また、図30に示す回路構成において、レジスタR2からレジスタR3−2に至るパスはホールド違反を引き起こすパスである。また、以下の動作説明では、当該動作を簡略化するために各タイミングパスの論理はいかなる状態でも正論理であると仮定する。
まず、図34に示す1周期目では、クロック信号C1の立ち上がりで、レジスタR1の内容が”0”から”1”に遷移している。
次に、図34に示す2周期目では、1周期目におけるレジスタR1のriseイベントに従ってって値が確定されることになるが、レジスタR3−1はセットアップ違反を引き起こしているので”1”を取り込むことができず”0”のままとなる。一方、レジスタR3−2は、遅延したクロック信号C2により正常に”1”を取り込むことができる。さらに、レジスタR1には、次の”1”から”0”へのfallイベントが発生している。
次に、図34に示す3周期目では、2周期目と同様、2周期目におけるレジスタR1のfallイベントに従ってって値が確定されることになるが、レジスタR3−1はセットアップ違反を引き起こしているので”0”を取り込むことができず、前周期での確定値”1”を取り込むことになる。一方、レジスタR3−2は、遅延したクロック信号C2により正常に”0”を取り込むことができる。
次に、図34に示す4周期目では、クロック信号C1の立ち上がりでレジスタR2の内容が”0”から”1”へと遷移している。そのため、レジスタR2の当該イベントは、本来、次サイクルである5周期目にレジスタR3−1,R3−2の遷移として反映される予定である。しかし、レジスタR3−2は、ホールド違反を引き起こしているため、図中の矢印が示すよう4周期目において”1”を取り込むことになる。つまり、4周期目において期待値レジスタであるレジスタR3−2は、誤った結果を保持することになる。
次に、図34に示す5周期目では、クロック信号C1の立ち上がりでレジスタR2の内容が”1”から”0”へと遷移している。そのため、レジスタR2の当該イベントは、本来、次サイクルである6周期目にレジスタR3−1,R3−2の遷移として反映される予定である。しかし、レジスタR3−2は、ホールド違反を引き起こしているため、4周期目と同様、図中の矢印が示すよう5周期目において”0”を取り込むことになる。
次に、ホールド違反の対策のために、レジスタR2からレジスタR3−2へ至るパスにロックアップラッチ又は反転FFとして機能するレジスタR4を挿入した図32又は図33に示す回路構成の動作について図35のタイミングチャートを用いて説明する。
なお、図35に示すタイミングチャートでは、クロック信号C2がクロック信号C1に対して挿入したバッファ分だけ遅延してイベント伝播する。また、図35に示すタイミングチャートでは、レジスタR1,R2,R3−1のそれぞれがクロック信号C1の立ち上がりエッジでデータ信号を取り込み、レジスタR3−2がクロック信号C2の立ち上がりエッジでデータ信号を取り込み、レジスタR4がクロック信号C1の立ち下りエッジでデータを取り込むものとする。
次に、図35に示すタイミングチャートは、1周期目から3周期目までの動作が図34に示したタイミングチャートの動作と等価であるため詳細な説明を割愛する。
次に、図35に示す4周期目では、クロック信号C1の立ち上がりでレジスタR2の内容が”0”から”1”へと遷移している。レジスタR3−2はホールド違反を引き起こすパスであったが、図32又は図33に示すようにレジスタR2とレジスタR3−2との間にロックアップラッチ又は反転FFが挿入されている。そのため、図35に示す4周期目では、レジスタR2で生じたイベント”1”がレジスタR3−2に直接取り込まずに、図中の矢印が示すようにクロック信号C1の立ち下りでレジスタR4に一旦取り込まれた後、5周期目でレジスタR3−2に取り込む。
次に、図35に示す5周期目では、レジスタR4に取り込んだ”1”をクロック信号C1の立ち上がりでレジスタR3−1が取り込み、クロック信号C2の立ち上がりでレジスタR3−2に取り込む。また、クロック信号C1の立ち上がりでレジスタR2の内容が”1”から”0”に遷移しているが、4周期目と同様にレジスタR2で生じたイベント”0”をレジスタR3−2が直接取り込まずに、図中の矢印が示すようにクロック信号C1の立ち下りでレジスタR4に一旦取り込む。
次に、図35に示す6周期目では、レジスタR4に取り込んだ”0”をクロック信号C1の立ち上がりでレジスタR3−1が取り込み、クロック信号C2の立ち上がりでレジスタR3−2に取り込む。
以上のように、本実施の形態に係る半導体装置では、図32又は図33に示す回路構成を採用することで、面積的にも消費電力的にもオーバヘッドを低減し、ホールド違反による誤動作を回避してデータを正しく転送可能にしている。
(実施の形態8)
実施の形態6では、速度マージンによって遅延パスをグルーピングし、各グループに対して最適な遅延量を挿入している。具体的に、図23の回路(エラー検出FF)に対して、個別にバッファB2を挿入し最適な挿入バッファ量を設定することで、回路規模や消費電力増大を抑える効果について説明した。しかし、挿入バッファ量を個々に変えるということは、エラー検出FFごとに1つのクロックドメインをアサインすると言うことになり、実際に配置配線する際には、クロックスキューやレイテンシの制御がうまく働かず、所望の回路規模や消費電力が得られない場合も考えられる。
そこで、本実施の形態では、上記のリスクも考慮した最適なグルーピング方法について説明する。まず、図36に、本実施の形態で行うグルーピングのアルゴリズムのフローチャートを示す。例えば、遅延パスが21パスあるとした場合について、図36に示すフローチャートを説明する。この21パスのネガティブスラック量(Negative-Slack)は、それぞれ0.048,0.048,0.045,0.045,0.036,0.035,0.033,0.027,0.024,0.022,0.021,0.019,0.017,0.015,0.015,0.008,0.007,0.006,0.005,0.001,0.001であると仮定する。なお、通常のネガティブスラック量(Negative-Slack)は負値となるが、説明を簡単にするために、全て正値として表す。
図36に示すフローチャートのステップS1では、最大及び最小のネガティブスラック量(Maximum-Negative-Slack(MaxNS),Minimum-Negative-Slack(MinNS:初期値は0))、トータルネガティブスラック量(Total-Negative-Slack(TNS))を算出する。さらに、ステップS1で算出したTNSを初期クライテリアとする。具体的には、MaxNS=0.048,MinNS=0.0,TNS=0.478となる。
次に、ステップS2では、MaxNSからMinNSまでの任意のネガティブスラック量をDivNS(選択値)として選択し、MaxNSからDivNSまでに属する全ての遅延パスをグループA、DivNSからMinNSまでに属する全ての遅延パスをグループBに分ける。0.7Vでのスラックタイミングを示す図37のように、MaxNSからMinNSまで遅延パスをDivNSを境にグループAとグループBとに分ける。さらに、ステップS2では、グループAに属する個々の遅延パスからDivNSまでの差分の合計、及びグループBに属する個々の遅延パスからMinNSまでの差分の合計をそれぞれ算出し、両差分の和を評価関数としてトータルネガティブスラック量(TNS)とする。
次に、ステップS3では、DivNSをMaxNSからMinNSまでの間で順次スイープさせて、評価関数であるトータルネガティブスラック量(TNS)が最小となるDivNSを求める。具体的に、上記の例では、DivNSをMaxNS(0.048)からMinNS(0.0)までスイープさせてTNSが最小となるDivNSを決定する。なお、本例では、DivNSのスイープ精度を0.01とするので、DivNSの取りうる値は0.00,0.01,0.02,0.03,0.04の5通りとなる。取りうる各DivNS時のTNSは、DivNS=0.00のときTNS=0.478,DivNS=0.01のときTNS=0.328,DivNS=0.02のときTNS=0.258,DivNS=0.03のときTNS=0.268,DivNS=0.04のときTNS=0.318である。
次に、ステップS4では、ステップS3で求めた最小となるDivNSに所定の重み付けを行った値と、今回の分割前のクライテリアとを比較し、大きければ処理を終了し、小さければ今回の分割処理をアクセプトして、得られた値を新たなクライテリアとして更新する。上記の例では、TNSの最小値はDivNS=0.02のときの0.258なので、この値と初期クライテリア(0.478)を比較する。この時の重み付け関数を1.5*TNS+0.05とすると、重み付けを行った値は0.437となり、クライテリアを下回るため、本分割はアクセプトされ、以下のように分割される。グループAは、0.048,0.048,0.045,0.045,0.036,0.035,0.033,0.027,0.024,0.022,0.021、グループBは0.019,0.017,0.015,0.015,0.008,0.007,0.006,0.005,0.001,0.001となる。このとき、クライテリアは0.478から0.258に更新される。
次に、ステップS5では、分割後の2グループに関して同様のことが再帰的に行われる。グループAにおけるTNSの最小値はDivNS=0.04の時の0.084で、重み付けを行った値は0.176となり、分割はアクセプトされる。このときのクライテリアは0.084に更新される。また、グループBにおけるTNSの最小値はDivNS=0.01の時の0.054で、重み付けを行った値は0.131となり、分割はアクセプトされる。この時のクライテリアは0.054に更新される。
従って、上記分割のアクセプト後のグループは以下の通りになる。グループA−A(GA−A)は0.048,0.048,0.045,0.045、グループA−B(GA−B)は0.036,0.035,0.033,0.027,0.024,0.022,0.021、グループB−A(GB−A)は0.019,0.017,0.015,0.015、グループB−B(GB−B)は0.008,0.007,0.006,0.005,0.001,0.001となる。このとき、グループA−A,グループB−A,グループB−Bに関しては、DivNSの精度0.01による分割はこれ以上できないため、分割処理をストップし、グループA−Bのみ分割処理を続ける。
グループA−BにおけるTNSの最小値はDivNS=0.03の時の0.028で、重み付けを行った値は0.092となり、クライテリア0.084を上回るため分割がリジェクトされる。したがって、上記の遅延パスである21パスに図36に示すアルゴリズムを適用して分割した場合、上記4通り(グループA−A,グループA−B,グループB−A,グループB−B)にグルーピングされる。
次に、図36に示すアルゴリズムを用いて遅延パスをグルーピングした場合の効果について説明する。図38は、上記のグループ分けを行った遅延パスを説明するための模式図である。従来手法では、21パス全てに最大スラック0.048nsのディレイを補うバッファが挿入されていた。ホールドオーバーヘッド関数を遅延量*パス数とすると、オーバヘッド指標は0.048*21=1.008となる。
一方、本実施の形態では、挿入遅延量は各グループのクリティカルスラックとなるため、図38に示すようにグループA−Aの挿入遅延量は0.048nsのまま変わらないが、グループA−Bは0.036ns,グループB−Aは0.019ns,グループB−Bは0.008nsに削減される。これによりオーバーヘッド指標は、0.048*4+0.036*7+0.019*4+0.008*6=0.568となる。
したがって、オーバヘッド指標は0.568/1.008*100=56.3%に削減されることが分かる。また、図38では、各グループに挿入される挿入バッファの数が図示されており、従来手法及びグループA−Aは5、グループA−Bは4、グループB−Aは2、グループB−Bは1である。
さらに、本実施の形態では、図39に示すようにロジックを分割し、一部の処理を先行的に処理することにより、レイテンシも削減することができる。
エラー検知は、適用回路中に分散されているエラー検出FFのいずれか1つでもフェールすれば、その旨のアラート信号を出さねばならないため、各エラー検知信号の論理和を取らねばならない。従来手法では、21パス全てのエラー検知を最大スラック0.048nsのクロック位相差後に行うため、21入力論理和を一気に処理しなければならなかった。この処理には、100ps要していた。
一方、本実施の形態では、挿入遅延量が各グループのクリティカルスラックとなるため、図38に示すようにグループA−Aの挿入遅延量は0.048nsのまま変わらないが、グループA−Bは0.036ns,グループB−Aは0.019ns,グループB−Bは0.008nsになり、各タイミングでエラー検知がなされ、グループB−B,グループB−A,グループA−Bの順で各論理和を先行的に処理することができる。仮にグループA−Bまでの論理和の処理がグループA−Aのクロック位相差までに完了しているとすると、本実施の形態では、これらの伝搬信号とグループA−Aに属する4パスの計5入力の論理和を処理するだけでよい。この処理に40ps要するとする。したがって、本実施の形態では、レイテンシも40/100*100=40.0%に削減されることが分かる。
1,30 バッファ、2,21,50 選択回路、3,31,56 比較器、4,20,22,42,43 AND回路、5,6,7 MUX、10 デジタル回路、11 クロック発生装置、12 レギュレータ、13 制御回路、14 メモリ、40,51 OR回路、41 微分回路、60 遅延手段、50 メタスタビリティ検出回路、52,54 PMOS、53,55 NMOS、56 XOR回路。