以下、本発明の半導体装置、及び情報処理装置を適用した実施の形態について説明する。
実施の形態1乃至4の半導体装置、及び情報処理装置について説明する前に、まず、図1乃至図3を用いて、比較例の半導体装置に含まれる信号遅延回路について説明する。
図1は、比較例の信号遅延回路1を示すブロック図である。
比較例の信号遅延回路1は、例えば、LSI(Large Scale Integrated circuit:大規模集積回路)によって実現される。
信号遅延回路1は、遅延部10、位相検出部20、フィルタ部30、及びエラー検出部40を含む。
遅延部10は、入力されたクロック(clock_in)に遅延を与えたクロック(clock_out)を出力する。遅延部10でクロックに与える遅延時間は、フィルタ部30から入力される選択信号(select)により可変的に設定される。遅延部10から出力されるクロックは、信号遅延回路1の出力(clock_out)として出力されるとともに、位相検出部20に入力される。
位相検出部20は、遅延部10から出力されるクロックの位相を検出し、クロックの位相を表す位相信号(phase)をフィルタ部30とエラー検出部40に出力する。位相検出部20は、例えば、クロックの毎周期の立ち上がりの位相を検出する。
フィルタ部30は、遅延部10から出力されるクロックの位相の目標値を保持しており、遅延部10から出力されるクロックの位相の安定動作範囲を設定する設定部の一例である。フィルタ部30が設定する安定動作範囲は、遅延部10から出力されるクロックの位相の目標値を略中央とする所定幅を有する範囲である。
フィルタ部30は、フィルタ処理により、位相検出部20からクロックの周期毎に入力される位相信号(phase)が表すクロックの位相のうち、安定動作範囲から位相が外れるクロックを除去する。また、フィルタ部30は、安定動作範囲内にあるクロックの位相と目標値との差に応じて遅延部10における遅延量を調節するための選択信号(select)を遅延部10に帰還する。また、フィルタ部30は、安定動作範囲を表すコード(code)をエラー検出部40に出力する。
エラー検出部40は、フィルタ部30から出力される安定動作範囲を表すコード信号(code)に基づいて安定動作範囲に対応する許容範囲を設定するとともに、遅延部10から出力されるクロックの位相が許容範囲内にあるか否かを判定し、許容範囲から位相が外れた回数をカウントする。
エラー検出部40は、フィルタ部30が設定する安定動作範囲と同一の範囲を有する許容範囲を設定する。すなわち、エラー検出部40が設定する許容範囲は、遅延部10の安定動作範囲(ロック範囲)を表す。このため、エラー検出部40は、位相検出部20で検出されるクロックの位相が、フィルタ部30によって設定される安定動作範囲を逸脱していないかを判定することができる。
エラー検出部40は、例えば、許容範囲の上限及び下限を表すコード(code)と、クロックの位相を表すコード(phase)とを含む状態信号(status)を出力する。また、エラー検出部40は、位相検出部20で検出されるクロックの位相が許容範囲から逸脱したと判定すると、エラーが生じた旨を表すエラー信号(error)を出力する。状態信号(status)とエラー信号(error)は、信号遅延回路1を含むシステムの監視系統に伝送される。なお、エラー信号(error)は、許容範囲から位相が外れた回数(エラー検出部40のカウント数)を含んでもよい。
以上のように、比較例の信号遅延回路1は、入力信号(クロック)に遅延を与えることにより、目標値に応じた位相を有する出力信号(クロック)を出力する。
図2は、比較例の信号遅延回路1に含まれる遅延部10を示す図である。
遅延部10は、インバータ11A、12A、13A、セレクタ11B、12B、13B、及びインバータ11C、12C、13Cを含む。
インバータ11A〜13Aは、信号の折り返し点となるセレクタ11B〜13Bに信号を伝搬するためのフォワード側のインバータであり、インバータ11C〜13Cは、信号がセレクタ11B〜13Bで折り返した後に信号を伝搬するリターン側のインバータである。
インバータ11A〜13Aは、それぞれ、入力信号を反転して出力する否定回路である。
インバータ11A〜13Aは、それぞれ、出力端子と入力端子が接続されることにより、直列に接続される遅延素子の一例である。インバータ11Aの入力端子は、遅延部10の入力端子INに接続されており、インバータ13Aの出力端子は、セレクタ13Bの一方の入力端子に接続されるとともに、開放されている(open)。
セレクタ11B〜13Bは、それぞれ、インバータ11A〜13Aに対応して設けられている。セレクタ11B〜13Bは、2つの入力端子と選択信号入力端子Sとを有し、選択信号入力端子Sに入力される選択信号に応じて、いずれかの入力を選択して出力する選択部の一例である。
ここで、セレクタ11B、12Bの選択信号入力端子Sには、フィルタ部30から”1”又は”0”の選択信号が入力される。また、セレクタ13Bの選択信号入力端子Sには、信号レベルが”1”にクリップされた選択信号が入力される。セレクタ13Bの選択信号入力端子Sには、例えば、電源電圧を抵抗器等で電圧変換することにより、選択信号の信号レベル”1”を表す所定電圧を生成して入力すればよい。
このため、セレクタ11B、12Bは、フィルタ部30から入力される選択信号(”1”又は”0”)に応じていずれかの入力を選択して出力し、セレクタ13Bは常にインバータ13Aの出力を選択して出力する。
インバータ11C〜13Cは、それぞれ、入力信号を反転して出力する否定回路であり、セレクタ11B〜13Bに対応して設けられている。インバータ11C〜13Cは、セレクタ11B〜13Bと交互に直列に接続されており、それぞれ、セレクタ11B〜13Bの各々の出力を反転して出力する。インバータ11C〜13Cは、遅延素子の一例である。
セレクタ13Bの一方の入力端子には、インバータ13Aの出力端子が接続されている。セレクタ13Bの他方の入力端子は接地されており、固定データとして”0”が入力される。
セレクタ12Bの一方の入力端子には、インバータ12Aの出力端子が接続され、他方の入力端子には、インバータ13Cの出力端子が接続されている。
セレクタ11Bの一方の入力端子には、インバータ11Aの出力端子が接続され、他方の入力端子には、インバータ12Cの出力端子が接続されている。
インバータ11Cの入力端子には、セレクタ11Bの出力端子が接続され、インバータ11Cの出力端子は、遅延部10の出力端子OUTに接続されている。
遅延部10は、入力端子INに入力される信号をセレクタ11B〜12Bのうちのどこで折り返すかにより、入力端子INに入力される信号の遅延量を調節して出力端子OUTから出力する。
なお、上述したように、遅延部10の入力端子INから見て一番奥にあるセレクタ13Bの選択信号入力端子Sには、信号レベルが”1”にクリップされた選択信号が入力されるため、セレクタ13Bは常にインバータ13Aの出力を選択する。
比較例の半導体装置に含まれる信号遅延回路1において、セレクタ11B、12Bに入力される選択信号が、それぞれ、”0”、”0”である場合、セレクタ11B、12Bは、それぞれ、インバータ12C、13Cの出力を選択するため、遅延部10における信号の折り返し点はセレクタ13Bになる。
セレクタ11B、12Bに入力される選択信号が、それぞれ、”0”、”1”である場合、セレクタ11Bはインバータ12Cの出力を選択し、セレクタ12Bはインバータ12Aの出力を選択するため、信号の折り返し点はセレクタ12Bになる。
なお、このとき、セレクタ13Bはインバータ13Aの出力を選択してインバータ13Cに入力するが、インバータ13Cの出力はセレクタ12Bによって選択されないため、セレクタ13Bは信号の折り返し点にはならない。
セレクタ11B、12Bに入力される選択信号が、それぞれ、”1”、”0”である場合、セレクタ11Bがインバータ11Aの出力を選択するため、信号の折り返し点はセレクタ11Bになる。
なお、このとき、セレクタ13Bはインバータ13Aの出力を選択してインバータ13Cに入力し、インバータ13Cの出力はセレクタ12Bによって選択されるが、インバータ12Cの出力はセレクタ11Bによって選択されないため、セレクタ13Bは信号の折り返し点にはならない。
なお、ここでは、一例として、3段のインバータ11A、12A、13A、セレクタ11B、12B、13B、及びインバータ11C、12C、13Cを含む遅延部10について説明したが、フォワード側及びリターン側のインバータとセレクタの段数は、クロックに与える遅延量に応じて決めればよい。
例えば、クロックに180°の位相を与えた出力信号を出力する場合には、例えば、8ビットの選択信号を用いて、257段のフォワード側及びリターン側のインバータとセレクタを用いて遅延量を段階的に設定してもよい。
この場合は、フィルタ部30が出力する8ビットの選択信号を256ビットの選択信号に変換して、257段のセレクタのうち、遅延部10の入力端子IN及び出力端子OUTから見て最も奥にあるセレクタ以外の256個のセレクタに、入力すればよい。なお、この場合、遅延部10の入力端子IN及び出力端子OUTから見て最も奥にあるセレクタには、常に信号を折り返すように、信号値を固定した選択信号を入力すればよい。
また、図2には、一例として、フォワード側のインバータを伝送される信号をセレクタで折り返してリターン側のインバータを経て出力する形式の遅延部10を示すが、遅延部10の回路構成は折り返す形式のものに限らない。遅延部10は、入力信号に遅延を与えて出力できる回路であれば他の回路構成のものであってもよく、その形式は問わない。
次に、図3(A)〜(C)を用いて、位相検出部20で検出されるクロックの位相、フィルタ部30が設定する安定動作範囲、及びエラー検出部40が設定する許容範囲について説明する。なお、図3(A)〜(C)では、クロックの位相を点で示す。
図3(A)は、比較例の信号遅延回路1のフィルタ部30に入力される位相信号(phase)が表すクロックの位相と安定動作範囲との関係を模式的に示す図である。図3(A)に示す位相を表す点は、フィルタ部30によるフィルタ処理が行われる前のクロックの位相であり、位相検出部20によって検出されるクロックの位相を表す。
図3(B)は、フィルタ部30によってフィルタ処理が行われた後のクロックの位相と安定動作範囲との関係を模式的に示す図である。
図3(C)は、エラー検出部40における許容範囲とクロックの位相との関係を模式的に示す図である。
ここで、安定動作範囲及び許容範囲の上限をN、安定動作範囲及び許容範囲の幅をmとする。フィルタ部30が保持するクロックの位相の目標値は、N−(m/2)で表されるものとする。
第1許容範囲の上限Nと幅mは、フィルタ部30が、フィルタ部30に入力される位相信号(phase)が表すクロックの位相の分布に基づいて信号遅延回路100が適切に動作するように決定する。なお、フィルタ部30は、目標値を用いて第1許容範囲の上限Nと幅mを決定してもよい。
図3(A)に示すように、位相検出部20で検出されるクロックの位相は、目標値を中心とする安定動作範囲(N−m〜N)内に殆どが存在する。
安定動作範囲(N−m〜N)から位相が逸脱するクロックは、例えば、遅延部10の異常、又はクロックの異常等が原因で生じる場合があるが、その他にも、例えば、遅延部10の温度、又は遅延部10の電源電圧の変動等によって生じる場合がある。
このように、クロックの位相が安定動作範囲(N−m〜N)から逸脱するのは、信号遅延回路1又は信号遅延回路1を含む半導体装置の外部で生じる要因(外的要因)によって生じる場合がある。
安定動作範囲(N−m〜N)から逸脱したクロックの位相は、フィルタ部30のフィルタ処理によって取り除かれるため、フィルタ処理が終わった後のクロックの位相は、図3(B)に破線の楕円A内に示すように、安定動作範囲(N−m〜N)内に収まる。
また、エラー検出部40は、フィルタ部30と同一の許容範囲(N−m〜N)を有するため、図3(C)に示すようなクロックの位相を表す位相信号(phase)が位相検出部20から入力されると、クロックの位相が許容範囲(N−m〜N)内に入る場合は正常と判定するが、許容範囲(N−m〜N)から逸脱すると異常が発生したと判定する。
すなわち、エラー検出部40は、図3(C)に破線で示す楕円A内のクロックの位相は許容範囲(N−m〜N)内に入るため正常と判定し、楕円B、C内に入るクロックの位相については異常と判定する。
異常が発生したとエラー検出部40が判定した場合は、エラー信号が信号遅延回路1を含むシステムの監視系統に伝送され、例えば、信号遅延回路1を含むシステムの動作が停止される。
ところで、信号遅延回路1の電源電圧又は温度の変動のような動作条件又は外的要因によって信号遅延回路1に入力するクロックの位相が変動する場合の中には、エラー検出部40がエラー判定を行なわなくても、信号遅延回路1を含むシステムの動作に影響を生じない場合がある。
例えば、動作条件又は外的要因によるエラーの発生頻度が極端に低い(例えば1%未満)場合、又は、信号遅延回路1の外部でデータの監視が行われている場合は、エラー判定を行なわなくても、信号遅延回路1を含むシステムの動作に影響を生じない場合がある。
ここで、信号遅延回路1の外部でデータの監視が行われている場合としては、例えば、クロック(clock_in)に同期したデータ転送を行っているバス等で、ECC(Error Checking and Correction)符号を伴ったデータ転送を行っている場合、又は、イネーブル信号等を伴ったデータ転送を行っている場合がある。
また、動作条件又は外的要因によってクロックの位相が変動してエラー検出部40の許容範囲から逸脱するのは、例えば、確率的に数パーセント以下(例えば、1万回の検出において、数回から数十回程度)であり、全体のクロックの位相から見るとごく僅かである。
従って、動作条件又は外的要因によるクロックの位相の変動が比較的少ない場合については、エラー検出部40でエラー判定を行わずに、信号遅延回路1を含むシステムの動作を継続する方がシステム全体を円滑かつ安定的に動作させることができる。
以上のように、比較例の信号遅延回路1を含む半導体装置では、動作条件又は外的要因でクロックの位相が許容範囲から逸脱した場合には、一律的にエラー判定を行うため、信号遅延回路1を含むサーバ等の情報処理装置を停止することになり、システム全体を円滑かつ安定的に動作させることが困難になる場合が生じる可能性があった。
このため、以下で説明する実施の形態1乃至4では、上述の問題点を解決した半導体装置、及び情報処理装置を提供することを目的とする。以下、実施の形態1乃至4の半導体装置、及び情報処理装置について説明する。
<実施の形態1>
以下、実施の形態1の半導体装置、及び情報処理装置について説明するにあたり、比較例の半導体装置と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
図4は、実施の形態1の半導体装置を含むサーバ50を示す図である。
図4に示すサーバ50は、実施の形態1の半導体装置を含む情報処理装置の一例である。サーバ50は、例えば、CPU(Central Processing Unit:中央演算装置)及び主記憶装置等を含む。
図5は、実施の形態1の半導体装置を含むサーバ50を示すブロック図である。
サーバ50は、CPU51及び主記憶装置52A、52Bを含む。CPU51と主記憶装置52A、52Bは、それぞれ、バス53A、53Bによって接続されている。
CPU51は、メモリコントローラ54を含み、メモリコントローラ54内のメモリI/F(Interface:インターフェイス)54Aを介して主記憶装置52A、52Bとの間でデータの取得又は転送を行うとともに、取得したデータの処理を行う。
主記憶装置52A、52Bは、例えば、複数のモジュール化されたRAM(Random Access Memory:ランダムアクセスメモリ)を含む。なお、図5には2つの主記憶装置52A、52Bを示すが、主記憶装置は3つ以上あってもよい。
メモリコントローラ54は、CPU51と主記憶装置52A、52Bとの間でデータの転送を行う。メモリコントローラ54は、主記憶装置52A、52Bとの境界におけるデータ通信を実現するために、メモリI/F54Aを有する。
実施の形態1の半導体装置は、例えば、メモリI/F54A内に信号遅延回路を有するメモリコントローラ54である。図5には、CPU51がメモリコントローラ54を含む形態を示すが、メモリコントローラ54はCPU51の外部にあってもよい。また、実施の形態1の半導体装置は、メモリコントローラ54を含むチップセットであってもよい。
ここで、実施の形態1の半導体装置に含まれる信号遅延回路は、入力信号に遅延を与えた出力信号を出力する信号遅延回路の一例である。実施の形態1の半導体装置に含まれる信号遅延回路の出力信号は、例えば、実施の形態1の半導体装置としてのメモリコントローラ54が主記憶装置52A、52Bとの間でデータ転送を行う際のシステムクロックとして用いられる。
次に、図6を用いて実施の形態1の半導体装置に含まれる信号遅延回路100について説明する。
図6は、実施の形態1の半導体装置に含まれる信号遅延回路100を示す図である。
信号遅延回路100は、遅延部10、位相検出部20、フィルタ部30、エラー検出部140、及びディスカウント制御部150を含む。
信号遅延回路100は、エラー検出部140の構成が比較例の信号遅延回路1のエラー検出部40と異なる。また、信号遅延回路100は、ディスカウント制御部150を含む点が比較例の信号遅延回路1のエラー検出部40と異なる。
また、信号遅延回路100では、位相検出部20は8ビットの位相信号phase[7:0]を出力し、フィルタ部30は8ビットのselect[7:0]と、8ビットの安定動作範囲を表すコードcode_N[7:0]及びcode_m[7:0]とを出力する。コードcode_N[7:0]は安定動作範囲の上限の位相Nを表し、コードcode_m[7:0]は安定動作範囲の幅mを表す。
また、信号遅延回路100のエラー検出部140には、ディスカウント制御部150からディスカウント信号discount[3:0]が入力される。
その他の構成は比較例の信号遅延回路1と同様であり、信号遅延回路100は遅延部10に入力するクロック(clock_in)に遅延を与えたクロック(clock_out)を出力する。
以下、比較例の信号遅延回路1と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
まず、図7を用いて、位相検出部20について説明する。
図7は、実施の形態1の半導体装置に含まれる信号遅延回路100の位相検出部20を示す図である。
位相検出部20には、遅延部10から出力されるクロック(clock_out)が入力される。また、位相検出部20には、多相クロックφ0〜φ255が入力されている。多相クロックφ0〜φ255は、クロック(clock_in)の1周期を256分割して得る単位位相をクロック(clock_in)に順次付加することによって得られるクロックである。
クロックφ0は、クロック(clock_in)と同位相であり、クロックφ1はクロック(clock_in)より単位位相1つ分だけ位相が進んでおり、φ254はクロック(clock_in)より単位位相254個分だけ位相が進んでおり、255はクロック(clock_in)より単位位相255個分だけ位相が進んでいる。
位相検出部20は、遅延部10から出力されるクロック(clock_out)と多相クロックφ0〜φ255を比較し、多相クロックφ0〜φ255のうち、遅延部10から出力されるクロック(clock_out)と位相が一致するクロック(φ0〜φ255のうちのいずれか1つ)の位相を遅延部10から出力されるクロック(clock_out)の位相として検出する。
位相検出部20は、検出した位相を表す8ビットの位相信号phase[7:0]を出力する。
次に、エラー検出部140について説明する。
エラー検出部140は、信号遅延回路100又は信号遅延回路100を含む半導体装置の動作条件に応じて、許容範囲から位相が外れた回数(カウント数)をディスカウントする点が比較例の信号遅延回路1のエラー検出部40と異なる。
エラー検出部140には、ディスカウント制御部150が接続されており、ディスカウント制御部150からディスカウント信号discount[3:0]が入力される。ディスカウント信号discount[3:0]は、信号遅延回路100又は信号遅延回路100を含む半導体装置の動作条件に応じて、ディスカウント制御部150によって生成される。
エラー検出部140は、半導体装置の動作条件に応じて生成されるディスカウント信号discount[3:0]に基づいて、許容範囲から位相が外れた回数(カウント数)をディスカウントする。
エラー検出部140がカウント数をディスカウントするのは、動作条件によるクロックの位相の変動が比較的少ない場合については、エラー検出部140がエラー判定を行わずに、信号遅延回路100を含むシステムの動作を継続する方がシステム全体を円滑かつ安定的に動作させることができるからである。
ここで、クロックの位相が安定動作範囲(N−m〜N)から逸脱する要因になる半導体装置の動作条件又は外的要因としては、例えば、半導体装置の電源電圧の変動と半導体装置の温度の変動がある。
半導体装置に含まれる遅延部10が出力するクロック(clock_out)の位相は、遅延部10に供給される電源電圧(半導体装置に供給される電源電圧)によって影響を受け、変動範囲が変わる。例えば、電源電圧の変動範囲が±5%、±10%、±15%の場合では、±5%の場合のクロック(clock_out)の位相の変動範囲が最も小さく、±15%の場合のクロック(clock_out)の位相の変動範囲が最も大きくなる。
また、半導体装置に含まれる遅延部10が出力するクロック(clock_out)の位相は、遅延部10の温度(半導体装置の温度)によって影響を受け、変動範囲が変わる。遅延部10の温度は、半導体装置の使用される環境によって異なり、また、半導体装置の動作等による発熱量等によって異なる。
遅延部10又は半導体装置の温度の変動範囲が大きくなればクロック(clock_out)の位相の変動範囲も大きくなり、遅延部10又は半導体装置の温度の変動範囲が小さくなればクロック(clock_out)の位相の変動範囲も小さくなる。
半導体装置の電源電圧と温度は、半導体装置の使用環境等の動作条件によって変動範囲が予め分かっている場合と、半導体装置の外的要因によって変動範囲が変わる場合がある。
実施の形態1の信号遅延回路100のエラー検出部140は、半導体装置の動作条件に応じて、許容範囲から位相が外れた回数(カウント数)をディスカウントする度合を設定する。
なお、半導体装置の外的要因に応じて、許容範囲から位相が外れた回数(カウント数)をディスカウントする信号遅延回路については実施の形態2、4で説明する。
ここで、エラー検出部140の内部構成について説明する。
図8は、実施の形態1の信号遅延回路100のエラー検出部140の内部構成を示す図である。
エラー検出部140は、許容範囲抽出部141、カウント部142、及び判定部143を含む。
許容範囲抽出部141は、フィルタ部30から出力されるコードcode_N[7:0]及びcode_m[7:0]に基づき、許容範囲(N−m〜N)を抽出し、許容範囲を表す許容範囲信号Wをカウント部142に入力する。
カウント部142は、位相検出部20から出力される位相信号phase[7:0]と、許容範囲抽出部141から出力される許容範囲信号Wとに基づき、許容範囲から位相が外れた回数をカウントし、カウント数を表すカウント信号Xを判定部143に入力する。
判定部143は、ディスカウント制御部150から出力されるディスカウント信号discount[3:0]と、カウント部142から出力されるカウント信号Xとに基づき、クロック(clock_out)の位相にエラーが発生しているか否かを判定する。
判定部143は、クロック(clock_out)の位相にエラーが発生していると判定した場合に、エラー信号(error)を出力する。
ディスカウント信号discount[3:0]は、カウント信号Xが表す検出回数から減じる検出回数(ディスカウント数)を表す。
例えば、ディスカウント信号discount[3:0]が表す検出回数が8回である場合は、判定部143は、カウント信号Xが表す検出回数が1回から8回までの間は、クロック(clock_out)の位相にエラーが生じたと判定しない。
判定部143は、カウント信号Xが表す検出回数が9回になると、エラーが生じたと判定し、エラー信号(error)を出力するとともに、カウント部142をリセットするためのリセット信号(reset)を出力する。
このように、エラー検出部140は、半導体装置の動作条件に応じて生成されるディスカウント信号discount[3:0]に基づいて、許容範囲から位相が外れた回数(カウント数)をディスカウントする。
なお、カウント部142は位相信号phase[7:0]を状態信号(status)として出力し、判定部143は、ディスカウント信号discount[3:0] を状態信号(status)として出力する。
次に、信号遅延回路100のエラー検出部140に接続されるディスカウント制御部150(図6参照)について説明する。
実施の形態1の信号遅延回路100のエラー検出部140に接続されるディスカウント制御部150(図6参照)は、半導体装置の動作条件としての電源電圧の設定条件を表す信号が入力される。
電源電圧の設定条件は、電源電圧の変動範囲を表しており、例えば、±5%、±10%、±15%のように電源電圧の変動範囲を表す。電源電圧の設定条件を表す信号は、システムの監視系統から入力される。
電源電圧の設定条件は、信号遅延回路100を含むサーバ50の種類等によって決められており、変更されることはない。
ディスカウント制御部150としては、例えば、組合せ回路を用いることができる。ディスカウント制御部150は、電源電圧の設定条件を表す信号に基づいてディスカウント信号discount[3:0]を生成し、エラー検出部140に入力する。
ディスカウント制御部150が出力するディスカウント信号discount[3:0]は、電源電圧の設定条件を表す信号に応じて、値が設定される。
例えば、電源電圧の設定条件が±5%のサーバ50では、ディスカウント制御部150が出力するディスカウント信号discount[3:0]が表すディスカウント数は、例えば、“0”である。
また、電源電圧の設定条件が±10%のサーバ50では、ディスカウント制御部150が出力するディスカウント信号discount[3:0]が表すディスカウント数は、例えば、“8”である。
同様に、電源電圧の設定条件が±15%のサーバ50では、ディスカウント制御部150が出力するディスカウント信号discount[3:0]が表すディスカウント数は、例えば、“16”である。
次に、図9に示す遅延部10が出力するクロック(clock_out)の位相と、許容範囲抽出部141が抽出する許容範囲の例示的な関係を用いて、カウント数のディスカウントの仕方について説明する。
図9は、エラー検出部140におけるカウント数のディスカウントの概念を示す図である。
図9に示す許容範囲(N−m〜N)は118から138である。これは、コードcode_N[7:0]が表す許容範囲の上限の位相Nが138であり、code_m[7:0]が表す許容範囲の幅mが20である場合に相当する。
図9に番号1〜16で示す16個のプロットは、許容範囲(118〜138)から外れている位相を表している。
図9に示す許容範囲(118〜138)から外れているプロットは、説明のための例示的なプロットである。図9に示す許容範囲(118〜138)に示すプロットの数に対する許容範囲(118〜138)から外れているプロットの数の割合は、実際の信号遅延回路100における割合ではなく、説明のために誇張して示すものである。
実際の信号遅延回路100では、例えば、位相を1万回検出する間に、許容範囲から外れる位相を離散的に数回検出する程度である。
ここで、一例として、電源電圧の変動範囲が±5%の場合におけるディスカウント数を“0”、変動範囲が±10%の場合におけるディスカウント数を“8”、±15%の場合におけるディスカウント数を“15”とする。
これは、ディスカウント信号discount[3:0]が表すディスカウント数が、それぞれ、“0”、“8”、“15”である場合に相当する。
このような条件下では、電源電圧の変動範囲が±5%の場合は、ディスカウント数が“0”であるため、番号1で示す位相を検出したときに、エラー検出部140内の判定部143はエラーが生じたと判定し、エラー信号(error)を出力する。
また、電源電圧の変動範囲が±10%の場合は、ディスカウント数が“8”であるため、番号1から8で示す位相を検出する間は、エラー検出部140内の判定部143はエラーが生じたと判定しない。判定部143は、番号9で示す位相を検出したときに、エラー検出部140内の判定部143はエラーが生じたと判定し、エラー信号(error)を出力する。
同様に、電源電圧の変動範囲が±15%の場合は、ディスカウント数が“16”であるため、番号1から16で示す位相を検出する間は、エラー検出部140内の判定部143はエラーが生じたと判定しない。判定部143は、図9には図示しない17番目に許容範囲から外れた位相を検出したときに、エラー検出部140内の判定部143はエラーが生じたと判定し、エラー信号(error)を出力する。
以上、実施の形態1の半導体装置に含まれる信号遅延回路100によれば、動作条件の一例である電源電圧の変動範囲によってクロックの位相が変動して許容範囲から外れる位相を検出した場合は、電源電圧の変動範囲に応じて、カウント数をディスカウントする。
このため、誤検出を抑制することができ、実施の形態1の信号遅延回路100を含む半導体装置全体の円滑かつ安定的な動作を確保することができる。
また、電源電圧の変動範囲に応じてディスカウント数を設定するため、信号遅延回路100の応答性を確保しつつ、動作条件に応じてカウント数をディスカウントすることにより、動作条件に応じて、信号遅延回路100及び信号遅延回路100を含む半導体装置の円滑かつ安定的な動作を確保することができる。
また、実施の形態1の信号遅延回路100は、従来の半導体回路装置等のように複数の可変遅延回路、多数決回路、及び多数決回数設定レジスタ等を含まないため、回路が大規模になることがなく、回路の小規模化を図ることができる。
<実施の形態2>
実施の形態2の信号遅延回路200は、外的要因の一例としての電源電圧の変動に応じて、ディスカウント数が変動するディスカウント信号discount[3:0]が入力される点が実施の形態1の信号遅延回路100と異なる。
その他の構成は同様であるため、実施の形態1の信号遅延回路100と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
図10は、実施の形態2の半導体装置に含まれる信号遅延回路200を示す図である。
信号遅延回路200のエラー検出部240には、ディスカウント制御部250からディスカウント信号discount[3:0]に加えて、セット信号(set)及びクリア信号(clear)が入力される。
エラー検出部240は、信号遅延回路200又は信号遅延回路200を含む半導体装置の外的要因に応じて、許容範囲から位相が外れた回数(カウント数)をディスカウントする点が実施の形態1の信号遅延回路100のエラー検出部140と異なる。
エラー検出部240には、ディスカウント制御部250が接続されており、ディスカウント制御部250からディスカウント信号discount[3:0]が入力される。
エラー検出部240は、半導体装置の外的要因に応じて生成されるディスカウント信号discount[3:0]に基づいて、許容範囲から位相が外れた回数(カウント数)をディスカウントする。
エラー検出部240がカウント数をディスカウントするのは、動作条件によるクロックの位相の変動が比較的少ない場合については、エラー検出部240がエラー判定を行わずに、信号遅延回路200を含むシステムの動作を継続する方がシステム全体を円滑かつ安定的に動作させることができるからである。
図11は、実施の形態2の信号遅延回路100のエラー検出部240の内部構成を示す図である。
エラー検出部240は、許容範囲抽出部141、カウント部242、及び判定部243を含む。
許容範囲抽出部141は、実施の形態1の許容範囲抽出部141と同様であり、フィルタ部30から出力されるコードcode_N[7:0]及びcode_m[7:0]に基づき、許容範囲(N−m〜N)を抽出し、許容範囲を表す許容範囲信号Wをカウント部242に入力する。
カウント部242は、位相検出部20から出力される位相信号phase[7:0]と、許容範囲抽出部141から出力される許容範囲信号Wとに基づき、許容範囲から位相が外れた回数をカウントし、カウント数を表すカウント信号Xを判定部243に入力する。
また、カウント部242には、ディスカウント制御部250からクリア信号(clear)が入力される。クリア信号(clear)は、カウント部242のカウント値をクリアするための信号である。
判定部243は、ディスカウント制御部250から出力されるディスカウント信号discount[3:0]と、カウント部242から出力されるカウント信号Xとに基づき、クロック(clock_out)の位相にエラーが発生しているか否かを判定する。
判定部243は、クロック(clock_out)の位相にエラーが発生していると判定した場合に、エラー信号(error)を出力する。
また、判定部243には、ディスカウント制御部250からセット信号(set)が入力される。セット信号(set)については後述する。
また、判定部243は、位相にエラーが発生した場合に、エラー信号(error)を出力するとともに、カウント部242をリセットするためのリセット信号(reset)を出力する。
判定部243は、ディスカウント制御部250から出力されるディスカウント信号discount[3:0]が表すディスカウント数が変わると、変更後のディスカウント数を用いてエラー判定を行う。
例えば、ディスカウント信号discount[3:0]が表す検出回数が0回から8回に変更されると、判定部243は、カウント信号Xが表す検出回数が1回から8回までの間は、クロック(clock_out)の位相にエラーが生じたと判定しないようになる。そして、判定部243は、カウント信号Xが表す検出回数が9回になると、エラーが生じたと判定し、エラー信号(error)を出力する。
このように、エラー検出部240は、半導体装置の外的要因に応じて変動するディスカウント信号discount[3:0]に基づいて、許容範囲から位相が外れた回数(カウント数)をディスカウントする。
ここで、ディスカウント制御部250(図10参照)について説明する前に、電源電圧検出部260について説明する。
電源電圧検出部260は、遅延部10の電源電圧の変動分を検出し、デジタル変換して遅延部10の電源電圧に含まれる変動分の値を表す3ビットの電源電圧信号power_range[2:0]を出力する。電源電圧検出部260は、例えば、電源電圧の変動分を検出して、電源電圧の変動分を表すデジタル信号を出力できる電圧センサを用いればよい。
次に、信号遅延回路100のエラー検出部240に接続されるディスカウント制御部250(図10参照)について説明する。
実施の形態2の信号遅延回路100のエラー検出部240に接続されるディスカウント制御部250(図10参照)には、半導体装置の外的要因としての電源電圧の変動分を表す信号が入力される。
ここで、電源電圧の変動分とクロック(clock_out)の位相の変動分には相関がある。例えば、電源電圧の変動分が±5%から±10%になり、さらに±15%まで大きくなると、クロック(clock_out)の位相の変動分は大きくなる。
このような電源電圧の変動分は、ディスカウント制御部250に接続される電源検出部260によって検出される。
ディスカウント制御部250は、電源電圧検出部260から入力される電源電圧信号power_range[2:0]に基づいて、ディスカウント信号discount[3:0]を生成する。電源電圧検出部260から入力される電源電圧信号power_range[2:0]は、電源電圧の変動分を表す。
ディスカウント制御部250は、電源電圧検出部260によって検出される電源電圧の変動分が絶対値で大きくなると、ディスカウント信号discount[3:0]が表すディスカウント数を増大させる。
また、ディスカウント制御部250は、電源電圧検出部260によって検出される電源電圧の変動分が絶対値で小さくなると、ディスカウント信号discount[3:0]が表すディスカウント数を減少させる。
次に、図12を用いて、ディスカウント制御部250の内部構成について説明する。
図12は、実施の形態2の半導体装置に含まれる信号遅延回路200に接続されるディスカウント制御部250を示す図である。
ディスカウント制御部250は、格納部251、比較部252、及び制御部253を含む。ディスカウント制御部250は、電源電圧信号power_range[2:0]に基づいて、ディスカウント信号discount[3:0]を生成する。
格納部251は、比較部252が電源電圧信号power_range[2:0]の比較に用いる値を格納データとして格納する。格納データは、制御部253から更新信号(update)が入力されたときに、電源電圧信号power_range[2:0]の値を取り込むことによって設定される。なお、格納部251としては、例えば、レジスタ又はメモリを用いればよい。
比較部252は、電源電圧検出部260から入力される電源電圧信号power_range[2:0]を格納部251が格納する格納データと比較し、比較結果を表す比較結果信号を制御部253に出力する。
制御部253は、比較部253から入力される比較結果信号に基づき、ディスカウント信号discount[3:0]を更新する処理を行う。制御部253は、ディスカウント信号discount[3:0]を更新する処理に伴い、セット信号(set)、クリア信号(clear)、及び更新信号(update)を出力する。ディスカウント信号discount[3:0]の更新処理と、セット信号(set)及びクリア信号(clear)を出力するタイミングについては後述する。
次に、図13を用いて、3ビットの電源電圧信号power_range[2:0]と4ビットのディスカウント信号discount[3:0]との対応関係について説明する。
図13は、実施の形態2の信号遅延回路200のディスカウント制御部250の入力信号(電源電圧信号power_range[2:0])の値と出力信号(ディスカウント信号discount[3:0])の値との対応関係を示す図である。
図13は、図13(A)に示す対応関係と図13(B)に示す対応関係の2種類の対応関係を含んでいる。
ディスカウント制御部250は、図13(A)又は図13(B)に示す対応関係の通りに、3ビットの電源電圧信号power_range[2:0]に基づいて4ビットのディスカウント信号discount[3:0]を生成する。
ここでは、電源電圧の変動分を電源電圧に対する百分率で表し、図13(A)には、電源電圧の変動分を2.5%刻みにして、電源電圧の変動分が0(%)から絶対値で17.5(%)以上の範囲に分類した変換テーブルを示す。
ここで、電源電圧は+側に変動することも、−側に変動することもあるため、図13(A)では電源電圧の変動分を表す数値に±の符号を付して示す。
また、以下では、+側の変動と−側の変動とを同時に説明するために、電源電圧の変動分の値を絶対値で取り扱って、3ビットの電源電圧信号power_range[2:0]と4ビットのディスカウント信号discount[3:0]との対応関係について説明する。
まず、図13(A)に示す対応関係について説明する。3ビットの電源電圧信号power_range[2:0]は、図13(A)に示すように、絶対値で2.5(%)未満が“0”、・・・、絶対値で15(%)以上17.5(%)未満が“6”、絶対値で17.5(%)以上が“7”と割り振られている。
これに対して、4ビットのディスカウント信号discount[3:0]は、絶対値で2.5(%)未満が“0”、・・・、絶対値で15(%)以上17.5(%)未満が“12”、絶対値で17.5(%)以上が“14”と割り振られている。
例えば、電源電圧の変動分が−6.5(%)で3ビットの電源電圧信号power_range[2:0]が“2”を表す場合は、“4”を表す4ビットのディスカウント信号discount[3:0]が生成される。
図13(B)は図13(A)よりも粗く符号化する変換テーブルを示しており、図13(B)の変換テーブルでは電源電圧の変動分は5%刻みにされている。
図13(B)に示すように、3ビットの電源電圧信号power_range[2:0]は、絶対値で5(%)未満が“0”、・・・、絶対値で10(%)以上15(%)未満が“2”、絶対値で15(%)以上が“3”と割り振られている。
これに対して、4ビットのディスカウント信号discount[3:0]は、絶対値で5(%)未満が“0”、・・・、絶対値で10(%)以上15(%)未満が“8”、絶対値で15(%)以上が“12”と割り振られている。
例えば、電源電圧の変動分が−6.5(%)で3ビットの電源電圧信号power_range[2:0]が“1”を表す場合は、“4”を表す4ビットのディスカウント信号discount[3:0]が生成される。
ディスカウント制御部250は、図13(A)又は図13(B)に示す変換テーブルを用いて、3ビットの電源電圧信号power_range[2:0]に基づいて4ビットのディスカウント信号discount[3:0]を生成する。
次に、図14を用いて、実施の形態2の信号遅延回路200の動作について説明する。
図14は、実施の形態2の信号遅延回路200の動作を示すタイミングチャートである。図14(A)は図13(A)に示す変換テーブルを用いた場合の動作を示し、図14(B)は図13(B)に示す変換テーブルを用いた場合の動作を示す。
図14(A)には、格納部251が格納する格納データ、電源電圧検出部260が出力する電源電圧信号power_range[2:0]、ディスカウント信号discount[3:0]、更新信号(update)、クリア信号(clear)、及びセット信号(set)を示す。図14(A)では横軸を時間軸とする。
図14(A)に示す動作例では、格納データと電源電圧検出部260が出力する電源電圧信号power_range[2:0](以下、現在の電源電圧信号power_range[2:0]と称す)との符号差が“2”以上になったときに、更新データを更新することとする。
また、時刻t=0では、電源電圧の変動分は+8%であり、格納データとして格納されている電源電圧信号power_range[2:0]が“3”であるものとする。また、電源電圧検出部260が出力する電源電圧信号power_range[2:0]が“3”であるものとする。
このとき、図13(A)の変換テーブルより、ディスカウント信号discount[3:0]は“3”である。また、更新信号(update)、クリア信号(clear)、及びセット信号(set)は、すべてL(Low)レベルであることとする。
時刻が経過するに連れ、電源電圧に変動が生じることにより、現在の電源電圧信号power_range[2:0]の値は時刻t=0のときの“3”から、“2”、“3”、“4”、“3”、“4”と変化し、時刻t1で“5”に変化したとする。
このとき、格納データの値“3”と、現在の電源電圧信号power_range[2:0]の値“5”との符号差が初めて“2”以上になる。
このため、時刻t2で更新信号(update)がH(High)レベルになり、これにより更新データが“5”に更新される。
また、時刻t3でクリア信号(clear)がHレベルになると、カウント部242(図11参照)のカウント値がクリアされる。
さらに、時刻t4でセット信号(set)がHレベルになることにより、判定部243(図11参照)のディスカウント信号discount[3:0]が“10”に設定される。
このような図14(A)に示す動作は、例えば、時刻t=0で+8%だった電源電圧の変動分が、時刻t4で+14%になった場合に相当する。
実施の形態2の信号遅延回路200は、このように電源電圧の変動に合わせて、ディスカウント信号discount[3:0]を変更することにより、誤検出を抑制でき、円滑かつ安定的な動作を確保することができる。
次に、図14(B)の動作例について説明する。
図14(B)には、図14(A)と同様に、格納部251が格納する格納データ、現在の電源電圧信号power_range[2:0]、ディスカウント信号discount[3:0]、更新信号(update)、クリア信号(clear)、及びセット信号(set)を示す。図14(B)では横軸を時間軸とする。
図14(B)に示す動作例では、格納データと現在の電源電圧信号power_range[2:0]との符号差が“1”以上になったときに、更新データを更新することとする。
また、時刻t=0では、電源電圧の変動分は+11%であり、格納データとして格納されている電源電圧信号power_range[2:0]が“2”であるものとする。また、電源電圧検出部260が出力する電源電圧信号power_range[2:0]が“2”であるものとする。
このとき、図13(B)の変換テーブルより、ディスカウント信号discount[3:0]は“8”である。また、更新信号(update)、クリア信号(clear)、及びセット信号(set)は、すべてL(Low)レベルであることとする。
時刻が経過するに連れ、電源電圧に変動が生じることにより、現在の電源電圧信号power_range[2:0]の値は時刻t=0のときの“2”から、“2”の状態が暫く継続し、時刻t1で“3”に変化したとする。
このとき、格納データの値“2”と、現在の電源電圧信号power_range[2:0]の値“3”との符号差が初めて“1”以上になる。
このため、時刻t2で更新信号(update)がH(High)レベルになり、これにより更新データが“3”に更新される。
また、時刻t3でクリア信号(clear)がHレベルになると、カウント部242(図11参照)のカウント値がクリアされる。
さらに、時刻t4でセット信号(set)がHレベルになることにより、判定部243(図11参照)のディスカウント信号discount[3:0]が“12”に設定される。
このような図14(B)に示す動作は、例えば、時刻t=0で+11%だった電源電圧の変動分が、時刻t4で+15%になった場合に相当する。
実施の形態2の信号遅延回路200は、上述のように電源電圧の変動に合わせて、エラー検出部240内の判定部243が保持するディスカウント信号discount[3:0]を変更することにより、電源電圧の変動に合わせて、誤検出を抑制でき、円滑かつ安定的な動作を確保することができる。
以上、実施の形態2の半導体装置に含まれる信号遅延回路200によれば、外的要因の一例である電源電圧の変動分によってクロックの位相が変動して許容範囲から外れる位相を検出した場合は、電源電圧の変動に応じて、カウント数をディスカウントする。
このため、誤検出を抑制することができ、実施の形態2の信号遅延回路200を含む半導体装置全体の円滑かつ安定的な動作を確保することができる。
また、電源電圧の変動に応じてディスカウント数を変化させるため、信号遅延回路200の応答性を確保しつつ、外的要因に応じてカウント数をディスカウントすることにより、外的要因に応じて、信号遅延回路200及び信号遅延回路200を含む半導体装置の円滑かつ安定的な動作を確保することができる。
また、実施の形態2の信号遅延回路200は、従来の半導体回路装置等のように複数の可変遅延回路、多数決回路、及び多数決回数設定レジスタ等を含まないため、回路が大規模になることがなく、回路の小規模化を図ることができる。
<実施の形態3>
図15は、実施の形態3の半導体装置に含まれる信号遅延回路300を示す図である。
信号遅延回路300は、ディスカウント制御部350が温度の変動範囲を表すディスカウント信号discount[3:0]を出力する点が実施の形態1と異なる。
その他の構成は、実施の形態1の信号遅延回路100と同様であるため、実施の形態1の信号遅延回路100と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
ここで、温度の変動範囲とは、実施の形態3の信号遅延回路300を含む半導体装置又はサーバ50(図4及び図5参照)を使用することができる環境温度の範囲である。
実施の形態3の信号遅延回路300のエラー検出部140に接続されるディスカウント制御部350(図15参照)は、半導体装置の動作条件としての温度の設定条件を表す信号が入力される。
温度の設定条件は、温度の変動範囲を表しており、例えば、30℃〜50℃、20℃〜60℃のように温度の変動範囲を表す。温度の設定条件を表す信号は、システムの監視系統から入力される。
温度の設定条件は、信号遅延回路300を含むサーバ50の種類等によって決められており、変更されることはない。
ディスカウント制御部350としては、例えば、組合せ回路を用いることができる。ディスカウント制御部350は、温度の設定条件を表す信号に基づいてディスカウント信号discount[3:0]を生成し、エラー検出部140に入力する。
ディスカウント制御部350が出力するディスカウント信号discount[3:0]は、温度の設定条件を表す信号に応じて、値が設定される。
例えば、温度の設定条件が30℃〜50℃のサーバ50では、ディスカウント制御部350が出力するディスカウント信号discount[3:0]が表すディスカウント数は、例えば、“2”に設定される。
また、温度の設定条件が20℃〜70℃のサーバ50では、ディスカウント制御部350が出力するディスカウント信号discount[3:0]が表すディスカウント数は、例えば、“4”に設定される。
次に、図16に示す遅延部10が出力するクロック(clock_out)の位相と、許容範囲抽出部141が抽出する許容範囲の例示的な関係を用いて、カウント数のディスカウントの仕方について説明する。
図16は、エラー検出部140におけるカウント数のディスカウントの概念を示す図である。
図16に示す許容範囲(N−m〜N)は118から138である。これは、コードcode_N[7:0]が表す許容範囲の上限の位相Nが138であり、code_m[7:0]が表す許容範囲の幅mが20である場合に相当する。
図16に番号1〜4で示す4個のプロットは、許容範囲(118〜138)から外れている位相を表している。
図16に示す許容範囲(118〜138)から外れているプロットは、説明のための例示的なプロットである。図16に示す許容範囲(118〜138)に示すプロットの数に対する許容範囲(118〜138)から外れているプロットの数の割合は、実際の信号遅延回路300における割合ではなく、説明のために誇張して示すものである。
ここで、一例として、温度の設定条件が30℃〜50℃の場合におけるディスカウント数を“2”、温度の設定条件が20℃〜70℃の場合におけるディスカウント数を“4”とする。
これは、ディスカウント信号discount[3:0]が表すディスカウント数が、それぞれ、“2”、“4”である場合に相当する。
このような条件下では、温度の変動範囲が30℃〜50℃の場合は、ディスカウント数が“2”であるため、番号3で示す位相を検出したときに、エラー検出部140内の判定部143はエラーが生じたと判定し、エラー信号(error)を出力する。
また、温度の変動範囲が20℃〜70℃の場合は、ディスカウント数が“4”であるため、番号1から4で示す位相を検出する間は、エラー検出部140内の判定部143はエラーが生じたと判定しない。判定部143は、図16には図示しない5番目に許容範囲から外れた位相を検出したときに、エラー検出部140内の判定部143はエラーが生じたと判定し、エラー信号(error)を出力する。
以上、実施の形態3の半導体装置に含まれる信号遅延回路300によれば、動作条件の一例である温度の変動範囲によってクロックの位相が変動して許容範囲から外れる位相を検出した場合は、温度の変動範囲に応じて、カウント数をディスカウントする。
このため、誤検出を抑制することができ、実施の形態3の信号遅延回路300を含む半導体装置全体の円滑かつ安定的な動作を確保することができる。
また、温度の変動範囲に応じてディスカウント数を設定するため、信号遅延回路300の応答性を確保しつつ、動作条件に応じてカウント数をディスカウントすることにより、動作条件に応じて、信号遅延回路300及び信号遅延回路300を含む半導体装置の円滑かつ安定的な動作を確保することができる。
また、実施の形態3の信号遅延回路300は、従来の半導体回路装置等のように複数の可変遅延回路、多数決回路、及び多数決回数設定レジスタ等を含まないため、回路が大規模になることがなく、回路の小規模化を図ることができる。
<実施の形態4>
実施の形態4の信号遅延回路400は、外的要因の一例としての温度の変動に応じて、ディスカウント数が変動するディスカウント信号discount[3:0]が入力される点が実施の形態3の信号遅延回路300と異なる。
また、温度の変動と電源電圧の変動の違いはあるが、半導体装置の外的要因に応じてディスカウント数を変更する点においては実施の形態2の信号遅延回路200と同様である。
このため、実施の形態2の信号遅延回路200又は実施の形態3の信号遅延回路300と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
図17は、実施の形態4の半導体装置に含まれる信号遅延回路400を示す図である。
信号遅延回路400のエラー検出部240には、ディスカウント制御部450からディスカウント信号discount[3:0]に加えて、セット信号(set)及びクリア信号(clear)が入力される。
エラー検出部240は、信号遅延回路400又は信号遅延回路400を含む半導体装置の外的要因に応じて、許容範囲から位相が外れた回数(カウント数)をディスカウントする点が実施の形態3の信号遅延回路300のエラー検出部140(図15参照)と異なる。
エラー検出部240には、ディスカウント制御部450が接続されており、ディスカウント制御部450からディスカウント信号discount[3:0]が入力される。
エラー検出部240は、半導体装置の外的要因に応じて生成されるディスカウント信号discount[3:0]に基づいて、許容範囲から位相が外れた回数(カウント数)をディスカウントする。
エラー検出部240がカウント数をディスカウントするのは、動作条件によるクロックの位相の変動が比較的少ない場合については、エラー検出部240がエラー判定を行わずに、信号遅延回路400を含むシステムの動作を継続する方がシステム全体を円滑かつ安定的に動作させることができるからである。
ここで、ディスカウント制御部450(図17参照)について説明する前に、温度検出部260について説明する。
温度検出部460は、遅延部10に取り付けられており、遅延部10の温度を検出し、デジタル変換して遅延部10の温度を表すtemperature[3:0]を出力する。説明の便宜上、図17では温度検出部460と遅延部10は離して示すが、実際には温度検出部460は遅延部10の温度を検出できるように、遅延部10の近傍に設けられている。
次に、信号遅延回路300のエラー検出部240に接続されるディスカウント制御部450(図17参照)について説明する。
実施の形態4の信号遅延回路300のエラー検出部240に接続されるディスカウント制御部450(図17参照)には、半導体装置の外的要因としての温度の変動分を表す信号が入力される。
ここで、温度の変動分とクロック(clock_out)の位相の変動分には相関がある。例えば、温度の変動分が30℃〜50℃になり、さらに20℃〜60℃まで大きくなると、クロック(clock_out)の位相の変動分は大きくなる。
このような温度の変動分は、ディスカウント制御部450に接続される電源検出部260によって検出される。
ディスカウント制御部450は、温度検出部260から入力される温度信号temperature_range[2:0]に基づいて、ディスカウント信号discount[3:0]を生成する。温度検出部260から入力される温度信号temperature_range[2:0]は、温度の変動分を表す。
ディスカウント制御部450は、温度検出部260によって検出される温度の変動分が絶対値で大きくなると、ディスカウント信号discount[3:0]が表すディスカウント数を増大させる。
また、ディスカウント制御部450は、温度検出部260によって検出される温度の変動分が絶対値で小さくなると、ディスカウント信号discount[3:0]が表すディスカウント数を減少させる。
次に、図18を用いて、ディスカウント制御部450の内部構成について説明する。
図18は、実施の形態4の半導体装置に含まれる信号遅延回路400に接続されるディスカウント制御部450を示す図である。
ディスカウント制御部450は、格納部451、比較部452、及び制御部453を含む。ディスカウント制御部450は、温度信号temperature_range[2:0]に基づいて、ディスカウント信号discount[3:0]を生成する。
格納部451は、比較部452が温度信号temperature_range[2:0]の比較に用いる値を格納データとして格納する。格納データは、制御部453から更新信号(update)が入力されたときに、温度信号temperature_range[2:0]の値を取り込むことによって設定される。なお、格納部451としては、例えば、レジスタ又はメモリを用いればよい。
比較部452は、温度検出部260から入力される温度信号temperature_range[2:0]を格納部451が格納する格納データと比較し、比較結果を表す比較結果信号を制御部453に出力する。
制御部453は、比較部253から入力される比較結果信号に基づき、ディスカウント信号discount[3:0]を更新する処理を行う。制御部453は、ディスカウント信号discount[3:0]を更新する処理に伴い、セット信号(set)、クリア信号(clear)、及び更新信号(update)を出力する。ディスカウント信号discount[3:0]の更新処理と、セット信号(set)及びクリア信号(clear)を出力するタイミングについては後述する。
次に、図19を用いて、3ビットの温度信号temperature_range[2:0]と4ビットのディスカウント信号discount[3:0]との対応関係について説明する。
図19は、実施の形態4の信号遅延回路400のディスカウント制御部450の入力信号(温度信号temperature_range[2:0])の値と出力信号(ディスカウント信号discount[3:0])の値との対応関係を示す図である。
図19は、図19(A)に示す対応関係と図19(B)に示す対応関係の2種類の対応関係を含んでいる。
ディスカウント制御部450は、図19(A)又は図19(B)に示す対応関係の通りに、3ビットの温度信号temperature_range[2:0]に基づいて4ビットのディスカウント信号discount[3:0]を生成する。まず、図19(A)に示す対応関係について説明する。
図19(A)には、温度の変動範囲を境界aから境界fの6つの境界によって分けられる7つの領域に分類した変換テーブルを示す。ここで、温度の範囲を上限と下限で示し、[下限,上限]と表す。
境界aは、温度の範囲が[35,45](下限35℃から上限45℃までの範囲)を表し、境界aより左側は、温度の変動範囲の下限が35℃以上で、上限が45℃未満である領域を表す。
境界bは、温度の範囲が[25,60](下限25℃から上限60℃までの範囲)を表し、境界bより左側で境界aより右側の領域は、温度の変動範囲の下限が25℃以上で、上限が60℃未満である領域を表す。
境界cは、温度の範囲が[15,75](下限15℃から上限75℃までの範囲)を表し、境界cより左側で境界bより右側の領域は、温度の変動範囲の下限が15℃以上で、上限が75℃未満である領域を表す。
境界dは、温度の範囲が[0,85](下限0℃から上限85℃までの範囲)を表し、境界dより左側で境界cより右側の領域は、温度の変動範囲の下限が0℃以上で、上限が85℃未満である領域を表す。
境界eは、温度の範囲が[−20,105](下限−20℃から上限105℃までの範囲)を表し、境界eより左側で境界dより右側の領域は、温度の変動範囲の下限が−20℃以上で、上限が105℃未満である領域を表す。
境界fは、温度の範囲が[−40,125](下限−40℃から上限125℃までの範囲)を表し、境界fより左側で境界eより右側の領域は、温度の変動範囲の下限が−40℃以上で、上限が125℃未満である領域を表す。
また、境界fより右側の領域は、温度の変動範囲の下限が−40℃より低く、上限が125℃以上である領域を表す。
このように、横軸方向において右側に行くほど(境界aから境界fにかけて)温度の変動範囲は拡大する傾向にあり、境界fから境界aにかけて温度の変動範囲は縮小する傾向にある。
いずれの範囲に属するかは、温度の変動範囲の上限及び下限の両方がいずれかの境界(a〜f)を超えることによって決定してもよいが、ここでは、一例として、温度の変動範囲の上限又は下限のどちらか一方がいずれかの境界(a〜f)を超えた場合に、属する範囲が決まることとする。
3ビットの温度信号temperature_range[2:0]は、図19(A)に示すように、境界aより左の領域が“0”、・・・、境界eよりも右で境界fよりも左の領域(境界e上を含む)が“5”、境界fよりも右の領域(境界f上を含む)が“6”と割り振られている。
これに対して、4ビットのディスカウント信号discount[3:0]は、境界aより左の領域が“0”、・・・、境界eよりも右で境界fよりも左の領域(境界e上を含む)が“10”、境界fよりも右の領域(境界f上を含む)が“12”と割り振られている。
例えば、温度の変動範囲が30℃〜50℃の場合は、境界aと境界bの間の領域に属するため、3ビットの温度信号temperature_range[2:0]は“1”を表し、“2”を表す4ビットのディスカウント信号discount[3:0]が生成される。
図19(B)には、温度の変動範囲を境界aから境界fの3つの境界によって分けられる4つの領域に分類した変換テーブルを示す。ここで、温度の範囲を上限と下限で示し、[下限,上限]と表す。
境界aは、温度の範囲が[25,60](下限25℃から上限60℃までの範囲)を表し、境界aより左側は、温度の変動範囲の下限が25℃以上で、上限が60℃未満である領域を表す。
境界bは、温度の範囲が[0,85](下限0℃から上限85℃までの範囲)を表し、境界bより左側で境界aより右側の領域は、温度の変動範囲の下限が0℃以上で、上限が85℃未満である領域を表す。
境界cは、温度の範囲が[−40,125](下限−40℃から上限125℃までの範囲)を表し、境界cより左側で境界bより右側の領域は、温度の変動範囲の下限が−40℃以上で、上限が125℃未満である領域を表す。
また、境界cより右側の領域は、温度の変動範囲の下限が−40℃より低く、上限が125℃以上である領域を表す。
このように、境界aから境界fにかけて温度の変動範囲は拡大する傾向にあり、境界fから境界aにかけて温度の変動範囲は縮小する傾向にある。
いずれの範囲に属するかは、温度の変動範囲の上限及び下限の両方がいずれかの境界(a〜f)を超えることによって決定してもよいが、ここでは、一例として、温度の変動範囲の上限又は下限のどちらか一方がいずれかの境界(a〜f)を超えた場合に、属する範囲が決まることとする。
3ビットの温度信号temperature_range[2:0]は、図19(B)に示すように、境界aより左の領域が“0”、・・・、境界bよりも右で境界cよりも左の領域(境界b上を含む)が“2”、境界cよりも右の領域(境界c上を含む)が“3”と割り振られている。
これに対して、4ビットのディスカウント信号discount[3:0]は、境界aより左の領域が“0”、・・・、境界bよりも右で境界cよりも左の領域(境界b上を含む)が“8”、境界cよりも右の領域(境界c上を含む)が“12”と割り振られている。
ディスカウント制御部450は、図19(A)又は図19(B)に示す変換テーブルを用いて、3ビットの温度信号temperature_range[2:0]に基づいて4ビットのディスカウント信号discount[3:0]を生成する。
次に、図20を用いて、実施の形態4の信号遅延回路400の動作について説明する。
図20は、実施の形態4の信号遅延回路400の動作を示すタイミングチャートである。図20(A)は図19(A)に示す変換テーブルを用いた場合の動作を示し、図20(B)は図19(B)に示す変換テーブルを用いた場合の動作を示す。
図20(A)には、格納部451が格納する格納データ、温度検出部260が出力する温度信号temperature_range[2:0]、ディスカウント信号discount[3:0]、更新信号(update)、クリア信号(clear)、及びセット信号(set)を示す。図20(A)では横軸を時間軸とする。
図20(A)に示す動作例では、格納データと温度検出部260が出力する温度信号temperature_range[2:0](以下、現在の温度信号temperature_range[2:0]と称す)との符号差が“2”以上になったときに、更新データを更新することとする。
また、時刻t=0では、温度の変動範囲は10℃〜80℃であり、境界cと境界dの間の領域に属するため、格納データとして格納されている温度信号temperature_range[2:0]が“3”であるものとする。また、温度検出部260が出力する温度信号temperature_range[2:0]が“3”であるものとする。
このとき、図19(A)の変換テーブルより、ディスカウント信号discount[3:0]は“3”である。また、更新信号(update)、クリア信号(clear)、及びセット信号(set)は、すべてL(Low)レベルであることとする。
時刻が経過するに連れ、温度の範囲に変動が生じることにより、現在の温度信号temperature_range[2:0]の値は時刻t=0のときの“3”から、“2”、“3”、“4”、“3”、“4”と変化し、時刻t1で“5”に変化したとする。
このとき、格納データの値“3”と、現在の温度信号temperature_range[2:0]の値“5”との符号差が初めて“2”以上になる。
このため、時刻t2で更新信号(update)がH(High)レベルになり、これにより更新データが“5”に更新される。
また、時刻t3でクリア信号(clear)がHレベルになると、カウント部242(図11参照)のカウント値がクリアされる。
さらに、時刻t4でセット信号(set)がHレベルになることにより、判定部243(図11参照)のディスカウント信号discount[3:0]が“10”に設定される。
このような図20(A)に示す動作は、例えば、時刻t=0で10℃〜80℃だった温度の変動範囲が、時刻t4で−30℃〜115℃になった場合に相当する。
実施の形態4の信号遅延回路400は、このように温度の変動に合わせて、ディスカウント信号discount[3:0]を変更することにより、誤検出を抑制でき、円滑かつ安定的な動作を確保することができる。
次に、図20(B)の動作例について説明する。
図20(B)には、図20(A)と同様に、格納部451が格納する格納データ、現在の温度信号temperature_range[2:0]、ディスカウント信号discount[3:0]、更新信号(update)、クリア信号(clear)、及びセット信号(set)を示す。図20(B)では横軸を時間軸とする。
図20(B)に示す動作例では、格納データと現在の温度信号temperature_range[2:0]との符号差が“1”以上になったときに、更新データを更新することとする。
また、時刻t=0では、温度の変動分は−20℃〜100℃であり、格納データとして格納されている温度信号temperature_range[2:0]が“2”であるものとする。また、温度検出部260が出力する温度信号temperature_range[2:0]が“2”であるものとする。
このとき、図19(B)の変換テーブルより、ディスカウント信号discount[3:0]は“8”である。また、更新信号(update)、クリア信号(clear)、及びセット信号(set)は、すべてL(Low)レベルであることとする。
時刻が経過するに連れ、温度の範囲に変動が生じることにより、現在の温度信号temperature_range[2:0]の値は時刻t=0のときの“2”から、“2”の状態が暫く継続し、時刻t1で“3”に変化したとする。
このとき、格納データの値“2”と、現在の温度信号temperature_range[2:0]の値“3”との符号差が初めて“1”以上になる。
このため、時刻t2で更新信号(update)がH(High)レベルになり、これにより更新データが“3”に更新される。
また、時刻t3でクリア信号(clear)がHレベルになると、カウント部242(図11参照)のカウント値がクリアされる。
さらに、時刻t4でセット信号(set)がHレベルになることにより、判定部243(図11参照)のディスカウント信号discount[3:0]が“12”に設定される。
このような図20(B)に示す動作は、例えば、時刻t=0で−20℃〜100℃だった温度の変動分が、時刻t4で−50℃〜130℃になった場合に相当する。
実施の形態4の信号遅延回路400は、上述のように温度の変動に合わせて、エラー検出部240内の判定部243が保持するディスカウント信号discount[3:0]を変更することにより、温度の変動に合わせて、誤検出を抑制でき、円滑かつ安定的な動作を確保することができる。
以上、実施の形態4の半導体装置に含まれる信号遅延回路400によれば、外的要因の一例である温度の変動分によってクロックの位相が変動して許容範囲から外れる位相を検出した場合は、温度の変動に応じて、カウント数をディスカウントする。
このため、誤検出を抑制することができ、実施の形態4の信号遅延回路400を含む半導体装置全体の円滑かつ安定的な動作を確保することができる。
また、温度の変動に応じてディスカウント数を変化させるため、信号遅延回路400の応答性を確保しつつ、外的要因に応じてカウント数をディスカウントすることにより、外的要因に応じて、信号遅延回路400及び信号遅延回路400を含む半導体装置の円滑かつ安定的な動作を確保することができる。
また、実施の形態4の信号遅延回路400は、従来の半導体回路装置等のように複数の可変遅延回路、多数決回路、及び多数決回数設定レジスタ等を含まないため、回路が大規模になることがなく、回路の小規模化を図ることができる。
以上、本発明の例示的な実施の形態の半導体装置、及び情報処理装置について説明したが、本発明は、具体的に開示された実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
以上の実施の形態1乃至4に関し、さらに以下の付記を開示する。
(付記1)
入力信号に遅延を与える遅延部と、
前記遅延部から出力される出力信号の位相を検出する位相検出部と、
前記位相検出部から出力される位相情報に基づき、前記出力信号の位相の安定動作範囲を設定する設定部と、
前記安定動作範囲から位相が外れた前記出力信号の検出回数をカウントするカウンタと、
前記遅延部の動作条件又は外的要因に応じて、前記カウンタのカウント数のディスカウント数を表すディスカウント信号を生成するディスカウント制御部と、
前記カウンタのカウント数と前記ディスカウント信号が表すディスカウント数とに基づき、前記出力信号の位相のエラーの有無を判定するエラー判定部と
を含む半導体装置。
(付記2)
前記ディスカウント制御部は、前記動作条件又は前記外的要因の変動度合が大きいほど、前記ディスカウント数を増大する、付記1記載の半導体装置。
(付記3)
前記動作条件は、前記遅延部の電源電圧の変動範囲であり、
前記ディスカウント制御部は、前記電源電圧の変動範囲が大きいほど、前記ディスカウント数を増大する、付記1又は2記載の半導体装置。
(付記4)
前記外的要因は、前記半導体装置の電源電圧の変動であり、
前記電源電圧の変動分を検出する電源電圧検出部をさらに含み、
前記ディスカウント制御部は、前記電源電圧検出部によって検出される電源電圧の変動分が大きくなると前記ディスカウント数を増大し、前記電源電圧検出部によって検出される電源電圧の変動分が小さくなると前記ディスカウント数を減少する、付記1又は2記載の半導体装置。
(付記5)
前記動作条件は、前記半導体装置の温度の変動範囲であり、
前記ディスカウント制御部は、前記温度の変動範囲が大きいほど、前記ディスカウント数を増大する、付記1又は2記載の半導体装置。
(付記6)
前記外的要因は前記半導体装置の温度の変動範囲の変動であり、
前記温度の変動範囲の変動を検出する温度検出部をさらに含み、
前記ディスカウント制御部は、前記温度検出部によって検出される温度の変動範囲が拡大すると前記ディスカウント数を増大し、前記温度検出部によって検出される温度の変動範囲が縮小すると前記ディスカウント数を減少する、付記1又は2記載の半導体装置。
(付記7)
演算処理装置と、
主記憶装置と、
付記1乃至6のいずれか一項記載の半導体装置を有し、前記演算処理装置と前記主記憶装置との間でデータの転送を行うメモリコントローラと
を含む情報処理装置。