以下に、本発明の実施例を添付の図面を用いて詳細に説明する。各図において、同一又は対応する構成要素は同一又は対応する番号で参照され、重複する説明は適宜省略される。
図1は、ADPLL回路の構成の一例を示す図である。図1及び以下の同様の図において、各ボックスで示される各回路又は機能ブロックと他の回路又は機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路又は機能ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
図1のADPLL回路は、位相検出回路10、デジタルフィルタ11、デジタル制御発振器(DCO)12、及び分周器13を含む。DCO12は、デジタルフィルタ11から供給される周波数制御信号に応じてアップ又はダウンされるデジタルコードに応じた周波数で発振し、発振信号OUTを出力する。DCO12の出力する発振信号OUTは分周器13に供給される。分周器13は、分周率設定コードに応じた分周率で発振信号OUTを分周して分周信号を生成してよい。分周率は固定の分周率であってもよい。
位相検出回路10は、分周器13から供給される分周信号と基準周波数で発振する基準信号RFとの位相差に応じた位相検出信号を生成する。具体的には、位相検出回路10は、分周信号の立ち上がりエッジと基準信号RFの立ち上がりエッジとのいずれが早いかを検出し、当該検出結果を反映する信号値を有する位相検出信号を出力してよい。位相検出信号は、分周信号の位相が基準信号RFの位相より遅い場合には例えばマイナス値(或いは所定の基準値より小さい値)となり、分周信号の位相が基準信号RFの位相より早い場合には例えばプラス値(或いは所定の基準値より大きい値)となってよい。また位相検出信号は、その値の大きさ(或いは所定の基準値からの差の大きさ)が、分周信号の位相と基準信号RFの位相との差に応じたものであってもよい。位相検出信号は、例えば、各ビットが0又は1の値をとる1ビット又は複数ビットの長さのデジタルコードであってよい。
デジタルフィルタ(ループフィルタ)11は、位相検出回路10から出力される位相検出信号の低周波成分を通過させ高周波成分を遮断又は抑制する低域通過フィルタである。デジタルフィルタ11は、位相検出信号を低域通過フィルタ処理することにより、一時的な細かい変動に影響されずにある程度長い期間に亘る位相差の傾向を示す位相差情報を生成し、生成した位相差情報を周波数制御信号としてDCO12に供給する。周波数制御信号は、例えば、各ビットが0又は1の値をとる1ビット又は複数ビットの長さのデジタルコードであってよい。以降の説明では、周波数制御信号は、位相遅れの状態及び位相進みの状態をそれぞれ例えば0及び1の値により示す1ビットの信号であるとする。この周波数制御信号は、DCO12に対して周波数の増加又は減少を指示する1ビットの信号である。
DCO12は、互いに同一の段数を有し同一の周波数で発振する複数個のリングオシレータを含み、これら複数個のリングオシレータの発振出力が互いに結合されている。DCO12は、周波数制御信号が周波数増加を指示する場合には発振状態にあるリングオシレータの数を増加させることにより、発振信号OUTの周波数を増加させる。DCO12は、周波数制御信号が周波数減少を指示する場合には発振状態にあるリングオシレータの数を減少させることにより、発振信号OUTの周波数を減少させる。このフィードバック制御動作により、発振信号OUTの周波数は基準信号RFの周波数に一致するように調整される。
図2は、図1に示すADPLL回路の制御動作の一例を示す図である。図2において
横軸は時間を示し、縦軸はADPLL回路の発振信号OUTの周波数を示す。図2に示すように、基準信号の基準周波数RF0から発振信号OUTの周波数がずれると、上述のフィードバック制御動作により、例えばタイミングT1において基準周波数RF0に一致するように発振信号OUTの周波数が調整される。
図3は、DCOに固定故障が存在する場合におけるADPLL回路の制御動作の一例を示す図である。図3において横軸は時間を示し、縦軸はADPLL回路の発振信号OUTの周波数を示す。図3に示すように、基準信号の基準周波数RF0から発振信号OUTの周波数がずれると、上述のフィードバック制御動作により、本来であれば例えばタイミングT1において基準周波数RF0に一致するように発振信号OUTの周波数が調整される。しかしながら、フィードバック制御動作により状態変化させようとした対象のリングオシレータが固定故障を有する場合、DCO12の発振信号OUTの周波数が所望のタイミングT1で変化せず、図3に示すようにそのまま周波数のずれが増大してしまう。そのために、発振周波数の補正に時間がかかったり、ジッタが悪化したりする等の問題が生じ、ADPLL回路の性能が劣化してしまう。
図4は、ADPLL回路の実施形態の構成の一例を示す図である。図4に示すADPLL回路は、発振部20、コラム制御部21、ロー制御部22、常時オン選択信号生成部23、障害情報保持レジスタ24、及び周波数制御部25を含む。周波数制御部25は、図1に示される分周器13、位相検出回路10、及びデジタルフィルタ11の機能を1つに纏めたものに相当する。周波数制御部25は、発振周波数の増加又は減少を指示する1ビットの信号をコラム制御部21に供給してよい。発振部20、コラム制御部21、及びロー制御部22が図1に示されるDCO12に相当する。
図5は、発振部20の構成の一例を示す図である。図5に示す発振部20は、複数の行及び複数の列にマトリクス状に配置された複数のリングオシレータ40を含む。複数のリングオシレータ40は、出力が互いに結合されオン状態で発振しオフ状態で停止する。図5に示す例では、3行及び3列のマトリクスとなっているが、行及び列の数は3個に限られず所望の数であってよい。リングオシレータ40の各々は、図5の例では3個の論理反転回路がループ状に直列接続されている。論理反転回路の数は3個に限られず、所望の数であってよい。
リングオシレータ40の3個の論理反転回路は、論理反転回路41、インバータ42、及びインバータ43である。第1行乃至第3行に配置されるリングオシレータ40の論理反転回路41には、ロー発振制御信号R1乃至R3が印加される。第1列乃至第3列に配置されるリングオシレータ40の論理反転回路41には、コラム発振制御信号C1乃至C3が印加される。ロー発振制御信号R1乃至R3はサーモメータコードであり、(R1,R2,R3)の値は(0,0,0)、(1,0,0)、(1,1,0)、又は(1,1,1)である。コラム発振制御信号C1乃至C3も同様のサーモメータコードである。ロー又はコラム発振制御信号は、例えば値"1"であるときにリングオシレータ40にオン状態を指示し、例えば値"0"であるときにリングオシレータ40にオフ状態を指示する。
ロー発振制御信号の値が"1"である行においては、コラム発振制御信号C1乃至C3の値に関わらず全ての列の論理反転回路41がインバータとして機能し、行内の全てのリングオシレータ40が発振する。ロー発振制御信号の値が"0"である行においては、原則として、コラム発振制御信号C1乃至C3の値に関わらず全ての列の論理反転回路41の出力が固定され、行内のリングオシレータ40は発振しない。但しロー発振制御信号の値が"0"であるi番目の行において、その直ぐ下のi-1番目の行でのロー発振制御信号の値が"1"であれば、コラム発振制御信号の値が"1"である列の論理反転回路41がインバータとして機能し、リングオシレータ40が発振する。このi番目の行において、コラム発振制御信号の値が"0"である列のリングオシレータ40は発振しない。
リングオシレータ40の論理反転回路41がインバータとして動作するか否かに関する上記の説明で示された構成は、発振部20の最も基本的な回路構成におけるものである。後ほど説明する各実施例において、論理反転回路41の動作及び構成は各実施例の趣旨に合わせて適宜変形される。
図4に戻り、コラム制御部21は、コラム制御フラグ列31、シフト制御部32、及びスキップ&常時オン制御部33を含む。ロー制御部22は、スキップ&常時オン制御部34、シフト制御部35、ロー制御フラグ列36を含む。
コラム制御フラグ列31は、複数の列に一対一に対応する1ビットの値を格納する複数のコラム制御フラグ(例えば図6の31A)を含む。シフト制御部32は、周波数制御部25からの周波数変化を指示する周波数制御信号の値に応じて、複数のコラム制御フラグのうちでオン状態を示す値"1"を格納するフラグの数を、所定の更新タイミングで変化させる。各コラム制御フラグの格納値が、対応する列のリングオシレータにオン状態又はオフ状態を指示するコラム発振制御信号となる。
周波数制御部25から周波数増加を指示する周波数制御信号を受け取った場合、シフト制御部32は以下の動作を実行する。シフト制御部32は、次の更新タイミングにおいて、j番目のコラム制御フラグの値をj+1番目のコラム制御フラグに格納する。1番目のコラム制御フラグには"1"を格納する。但し、最終列(jが最大値の列)のコラム制御フラグの値が"1"の場合には、次の更新タイミングにおいて、1番目のコラム制御フラグの値を"1"にし、残りの全てのコラム制御フラグの値を"0"にする。
周波数制御部25から周波数減少を指示する周波数制御信号を受け取った場合、シフト制御部32は以下の動作を実行する。シフト制御部32は、次の更新タイミングにおいて、j番目のコラム制御フラグの値をj-1番目のコラム制御フラグに格納する。最終列(jが最大値の列)のコラム制御フラグには"0"を格納する。但し、1番目のコラム制御フラグの値が"0"の場合には、次の更新タイミングにおいて、最終列のコラム制御フラグの値を"0"にし、残りの全てのコラム制御フラグの値を"1"にする。
ロー制御フラグ列36は、複数の行に一対一に対応する1ビットの値を格納する複数のロー制御フラグ(例えば図6の36A)を含む。各ロー制御フラグの格納値が、対応する行のリングオシレータにオン状態又はオフ状態を指示するロー発振制御信号となる。
シフト制御部35は、コラム側の複数のコラム制御フラグのうちでオン状態を示す値"1"を格納するフラグの数の変化に応じて、複数のロー制御フラグのうちでオン状態を示す値"1"を格納するフラグの数を、所定の更新タイミングで変化させる。具体的には、最終列のコラム制御フラグの値が"1"の状態において周波数制御信号が周波数増加を指示する場合に、ロー増加指示がシフト制御部32からシフト制御部35に供給される。これに応じてシフト制御部35は、次の更新タイミングにおいて、複数のロー制御フラグのうちでオン状態を示す値"1"を格納するフラグの数を増加させる。また1番目のコラム制御フラグの値が"0"の状態において周波数制御信号が周波数減少を指示する場合に、ロー減少指示がシフト制御部32からシフト制御部35に供給される。これに応じてシフト制御部35は、次の更新タイミングにおいて、複数のロー制御フラグのうちでオン状態を示す値"1"を格納するフラグの数を減少させる。
シフト制御部32からロー増加指示を受け取った場合、シフト制御部35は以下の動作を実行する。シフト制御部35は、次の更新タイミングにおいて、i番目のロー制御フラグの値をi+1番目のロー制御フラグに格納する。1番目のロー制御フラグには"1"を格納する。
シフト制御部32からロー減少指示を受け取った場合、シフト制御部35は以下の動作を実行する。シフト制御部35は、次の更新タイミングにおいて、i番目のロー制御フラグの値をi-1番目のロー制御フラグに格納する。最終行(iが最大値の列)のロー制御フラグには"0"を格納する。
上記のシフト制御部32によりコラム制御フラグ列31を制御する動作及びシフト制御部35によりロー制御フラグ列36を制御する動作は、固定故障が存在しない場合における動作又は固定故障が存在しない箇所における動作である。固定故障が存在する場合、シフト制御部32及び35の何れか一方は、固定故障を有する1つのリングオシレータを含む互いに隣接する複数のリングオシレータについては、周波数制御の対象から除外する。即ち、固定故障を有する1つのリングオシレータを含む互いに隣接する複数のリングオシレータについては、フィードバック制御による発振周波数の制御において、周波数制御信号に応じてオン状態又はオフ状態のいずれかに選択的に設定する対象から除外する。また更に、シフト制御部32及び35の何れか一方は、周波数制御部25からの周波数制御信号に関わらず常時オン状態に設定する発振制御信号を、固定故障を有する1つのリングオシレータを含む互いに隣接する複数のリングオシレータに供給する。
上記の互いに隣接する複数のリングオシレータは、同一行に配置される複数のリングオシレータ又は同一列に配置される複数のリングオシレータであってよい。このように常時オン状態に設定する発振制御信号を供給することにより、例えば固定故障のリングオシレータが存在する行全体を常時オン状態に設定してよい。或いは固定故障のリングオシレータが存在する列全体を常時オン状態に設定してもよい。
以下に、固定故障が存在する場合について、図4に示すADPLL回路の動作を説明する。障害情報保持レジスタ24は、固定故障(例えばオン故障)を有するリングオシレータを特定する情報を保持する。当該情報は固定故障箇所を特定する情報であってよく、例えば、固定故障を有するリングオシレータのローアドレス或いはコラムアドレスを示す情報であってよい。障害情報保持レジスタ24は、情報保持機能を有する回路であればよく、ROM等のメモリ回路を用いたレジスタである必要はない。例えばフューズの切断により情報を格納できるフューズ回路等を障害情報保持レジスタ24として用いてもよい。
常時オン選択信号生成部23は、障害情報保持レジスタ24に格納される固定故障箇所を示す情報に基づいて、固定故障位置の行を示す常時オン制御信号又は固定故障位置の列を示す常時オン制御信号を生成する。行を示す常時オン制御信号はスキップ&常時オン制御部34に供給され、列を示す常時オン制御信号はスキップ&常時オン制御部33に供給される。常時オン選択信号生成部23は例えばデコーダであり、故障アドレスをデコードすることにより、各行又は各列に対応する1ビットの信号線のうち故障位置に対応する行又は列の1ビットの信号線をアサートしてよい(例えば"1"の値に設定してよい)。
列側のスキップ&常時オン制御部33に供給された常時オン制御信号は、各列に一対一に対応する1ビットの信号であり、故障箇所においてのみ値"1"に設定されそれ以外の列においては"0"に設定されてよい。スキップ&常時オン制御部33は、現在のコラム制御フラグ列31の各コラム制御フラグの値を受け取り、次の更新タイミングにおいて、現在の各列のコラム制御フラグの値を一列ずらした値を更新後の各列のコラム制御フラグの値として設定させる。一列ずらす方向は、シフト制御部32の制御により、周波数制御部25からの周波数制御信号が周波数増加を指示するか周波数減少を指示するかに応じて定まる。但し固定故障の位置の列においては、当該列を跨ぐようにスキップすることにより、現在のコラム制御フラグの値を2列ずらした値を、更新後のコラム制御フラグの値として設定させる。また固定故障の位置の列においては、例えば、当該列に配置されるリングオシレータに対して常時オン状態(即ち発振状態)を指示するコラム発振制御信号を生成するように動作してよい。スキップ&常時オン制御部33の詳細については後ほど説明する。
行側のスキップ&常時オン制御部34に供給された常時オン制御信号は、各行に一対一に対応する1ビットの信号であり、故障箇所においてのみ値"1"に設定されそれ以外の行においては"0"に設定されてよい。スキップ&常時オン制御部34は、現在のロー制御フラグ列36の各ロー制御フラグの値を受け取り、次の更新タイミングにおいて、現在の各行のロー制御フラグの値を一行ずらした値を更新後の各行のロー制御フラグの値として設定させる。
一行ずらす方向は、シフト制御部35の制御により、周波数制御部25からの周波数制御信号が周波数増加を指示するか周波数減少を指示するかに応じて定まる。但し固定故障の位置の行においては、当該行を跨ぐようにスキップすることにより、現在のロー制御フラグの値を2行ずらした値を、更新後のロー制御フラグの値として設定させる。このようにして、オン状態を示す値を格納するフラグの数を変化させる際に状態を変化させる対象のフラグが故障位置のフラグである場合、当該フラグを飛ばして当該フラグの次の位置のフラグの状態を変化させる。このような構成によって、単純な回路構成により故障箇所を周波数制御の対象から除外することが可能になる。
なお固定故障の位置の行においては、当該行に配置されるリングオシレータに対して常時オン状態(即ち発振状態)を指示するロー発振制御信号を生成するように動作してよい。スキップ&常時オン制御部34の詳細については後ほど説明する。
図6及び図7は、固定故障が存在する場合の発振部20の発振動作について説明するための図である。図6は固定故障を考慮していない場合におけるリングオシレータの発振パターンを示し、図7は固定故障を考慮した場合におけるリングオシレータの発振パターンを示す。
図6に示される状態では、コラム制御フラグ列31の各コラム制御フラグ31Aの値は(1,1,0,0)である。即ち第1列及び第2列がオンであり、第3列及び第4列がオフである。またロー制御フラグ列36の各ロー制御フラグ36Aの値は(1,1,1,1,1,0,0,0,0,0,0,0,0,0)である。即ち第1行乃至第5行がオンであり、第6行乃至第14行がオフである。このとき図6に示される発振部20において塗りつぶされたリングオシレータ40として示されるように、第1行乃至第5行では全てのリングオシレータ40が発振し、第6行では第1列及び第2列のリングオシレータ40が発振する。この発振パターンは固定故障を考慮しておらず、固定故障が救済されていない。
図6において、マトリクス状に配置されたリングオシレータ40のうちで、オン固定故障(固定的にオン状態となる故障)を有するリングオシレータがリングオシレータ40Aとして示されている。この例では、オン固定故障を有するリングオシレータ40Aは第10行の第3列に存在する。なお図6及び図7に示される行の個数及び列の個数は一例にすぎず、図示の数に限定されるものではない。
固定故障を有するリングオシレータ40Aが周波数制御に悪影響を及ぼすことを防ぐためには、固定故障箇所を考慮に入れたリングオシレータ40の発振パターンとする必要がある。固定故障箇所を救済するために、図6に示される障害情報保持レジスタ24に、第10行を示すアドレス情報が格納される。デコーダ(常時オン選択信号生成部)23は、当該アドレス情報をデコードする。これによりデコーダ23は、第10行においてのみ値"1"となり他の行で値"0"となる常時オン制御信号を、スキップ&常時オン制御部34の各行毎の部分回路34A(図6及び図7の行側の"C")に供給する。
図7において、第10行においてのみ値"1"となる常時オン制御信号R1乃至Rm(m=14)が、デコーダ23からスキップ&常時オン制御部34の各行毎の部分回路34Aに供給されると、第10行のロー制御フラグの値が常時オン状態に設定されてよい。より正確には、第10行の常時オン制御信号Rkの値"1"に応じて、第10行のロー発振制御信号が常時オン状態に設定されればよい。これにより、図7に示すように第10行(Rkの行)に配置される複数のリングオシレータ40(第10行の全てのリングオシレータ40)は常時オン状態即ち発振状態に設定される。またADPLL回路のフィードバック制御による周波数制御動作において、故障箇所である第10行がスキップされることについては前述の通りである。
ADPLL回路のフィードバック制御により、分周周波数が基準周波数に一致するように発振部20の発振周波数が調整される。従って、図6のように固定故障を無視した発振パターンの場合と比較すると、図7のように固定故障箇所の行全体を常時発振状態とした場合、領域50として示される部分のリングオシレータ40がオフ状態に変化する。これにより、発振状態のリングオシレータ40の個数が図6の場合と図7の場合とで同じ数となり、各素子のバラツキを無視すれば、図6の発振パターンと図7の発振パターンとでは同一の周波数で発振することになる。
図7に示されるようにオン固定故障のリングオシレータを含む行全体を常時オン状態に設定し、且つ当該行をフィードバック制御による周波数制御の対象から除外することにより、オン固定故障を救済することができる。即ち、固定故障の存在する行をフィードバック制御による周波数制御の対象から除外することにより、オン状態のリングオシレータの数を調整して発振周波数を制御する際に正常に動作するリングオシレータのみを用いることになり、適切な制御が可能になる。またオン固定故障のリングオシレータのみではなく、固定故障の存在する行全体を常時オン状態に設定することにより、発振状態にあるリングオシレータの群の中に固定故障の存在する行を取り込むことが可能になる。故障箇所の行全体を発振動作から外す構成や、故障箇所の行全体を予備の行で入れ替える構成では、一行分のリングオシレータが発振に寄与しないことになり非効率なだけでなく、これらのリングオシレータが負荷として働くため無駄な電力が消費されてしまう。発振状態にあるリングオシレータの群の中に固定故障の存在する行を取り込んでしまうことで、故障箇所の行全体を有効に発振動作に用いて効率的な構成を実現するとともに、無駄な消費電力が発生するのを避けることができる。
LSIの製造ではバラツキの発生が不可避である。一般に、同一の発振周波数を得るために発振させるリングオシレータの数はチップによって異なる。このためADPLL回路のDCOでは、製造バラツキを考慮して、本来、所望の発振周波数に対してマージンを持って設計することが一般的に行われている。ある特定のLSIに着目すると、高周波数側又は低周波数側に必ず周波数の余裕があることになる。このマージン分を確保するために用意してある常時オン状態のリングオシレータ部分を利用し、製造不良が発生したリングオシレータを常時オン状態となるリングオシレータ領域に取り込むことで、効率的な発振動作を実現できる。また製造不良によりLSIを破棄する必要がなく、製造歩留りが向上する。
また更には、オン固定故障のリングオシレータのみではなく固定故障の存在する行全体を常時オン状態に設定することにより、マトリクス中の行及び列の交差箇所に対する例外的な制御を行う必要なく、行単位での例外的な制御を行えばよい。従って、故障箇所を周波数制御動作から除外するとともに常時オン状態に設定するために必要な回路の規模は小さくてすむ。
なお救済対象の固定故障がオン固定故障であれば、余計な負荷となる発振に寄与しないリングオシレータが存在しないことになり効率がよい。それに対して固定故障がオフ故障(常にオフ状態である故障)の場合には、当該故障のリングオシレータは発振に寄与せずに余計な負荷となってしまう。従って、図4の回路構成により救済する固定故障はオン固定故障であることが好ましい。しかしながら、オフ固定故障の場合であっても、同様に救済できることに変わりはない。
なお図6及び図7に示される回路の列側において、スキップ&常時オン制御部33の各列毎の部分回路33Aが示されているが、行単位の制御により故障箇所の行全体を常時オン状態に設定するのであれば、列側のスキップ&常時オン制御部33を設ける必要はない。逆に列単位の制御により故障箇所の列全体を常時オン状態に設定する場合には、行側のスキップ&常時オン制御部34を設ける必要はない。これらの異なる構成については、後述する実施例において詳細に説明する。但し、例えば同一の列において複数行にわたり固定故障のリングオシレータが存在する場合には列単位での制御を行うことが好ましく、逆に同一の行において複数列にわたり固定故障のリングオシレータが存在する場合には行単位での制御を行うことが好ましい。従って、行側のスキップ&常時オン制御部34と列側のスキップ&常時オン制御部33との両方を設けておいてもよい。
図8は発振回路(DCO)の制御方法の一例を示すフローチャートである。
図8において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
ステップS1において、DCO(図4の発振部20)に障害があるか否かを判定する。これは例えば、発振信号OUTの発振周波数を外部の測定器等で測定しながら、発振部20のリングオシレータを1つずつ順番にオン状態に設定していき、周波数が変動しない箇所があるか否かを判定すればよい。
ステップS2において、特定された障害がオン固定故障であるか否かを判定する。これは例えば、全てのリングオシレータをオフ状態に設定する発振制御信号を発振部20に供給している状態において、発振信号OUTを外部の測定器等で測定すればよい。発振信号OUTが発振していることが観測されれば、オン固定故障が発生していることが分かる。
ステップS3において、ステップS1で特定された障害箇所に関する情報(アドレス情報)を障害情報保持レジスタ24に書き込む。ステップS4において、常時オン選択信号生成部23が常時オン制御信号を生成する。即ち、常時オン選択信号生成部23が、障害情報保持レジスタ24に格納される障害位置アドレス情報に基づいて、固定オン故障が存在する行を指し示す常時オン制御信号を生成する。
ステップS5において、常時オン制御信号を受け取ったスキップ&常時オン制御部が、当該常時オン制御信号が示す障害の存在する行については、行内の全てのリングオシレータをオン状態に設定するように発振制御信号を生成する。ステップS6において、常時オン制御信号を受け取ったスキップ&常時オン制御部が、当該常時オン制御信号が示す障害の存在する行については、フィードバック制御による周波数制御においてオン状態又はオフ状態に選択的に設定する対象から外す。
ステップS7において、ADPLL回路の周波数制御動作を実行する。以上により周波数ロック状態が実現される。
上記の方法において、行単位の制御ではなく列単位の制御を実行するようにしてもよい。即ち、障害の存在する列を周波数制御の対象から外すとともに、当該列を常時オン状態に設定する発振制御信号を生成してもよい。また上記の方法においては、オン固定故障を特定して救済する場合について説明したが、救済対象はオン固定故障に特定しなくともよい。即ち、オン固定かオフ固定かの特定をすることなく固定故障が発生している箇所のみを特定して、その箇所の故障を救済するようにしてもよい。
図9は、DCOの第1の実施例の構成の一例を示す図である。図9に示すDCOは行単位での故障箇所の救済を行う構成であり、図4に示される行側のスキップ&常時オン制御部34のみが設けられ、列側のスキップ&常時オン制御部33は設けられていない。マトリクス状に配置されたリングオシレータ40のうちで、オン固定故障を有するリングオシレータがリングオシレータ40Aとして示されている。
列側には、コラム制御フラグ列31のコラム制御フラグ31Aが各列に対応して設けられる。行側には、ロー制御フラグ列36のロー制御フラグ36Aが各行に対応して設けられる。障害情報保持レジスタ24にはオン固定故障が存在する位置を特定する情報が格納されている。デコーダ(常時オン選択信号生成部)23が、障害情報保持レジスタ24に格納される情報に基づいて、常時オン制御信号R1乃至Rmを生成する。k番目の行に対応する常時オン制御信号Rkのみが常時オン状態(即ち"1"に固定の状態)となっており、それ以外の行に対応する常時オン制御信号は"0"に設定されている。この常時オン制御信号R1乃至Rmは、デコーダ23からスキップ&常時オン制御部34の各行毎の部分回路34Aにそれぞれ供給される。図9において、図4に示される列側のシフト制御部32及び行側のシフト制御部35については図示が省略されているが、コラム制御フラグ31Aの値はシフト制御部32が制御し、ロー制御フラグ36Aの値はシフト制御部35が制御する。
図10は、発振部20にマトリクス状に配置されるリングオシレータ40の構成の一例を示す図である。図10に示される発振部20のリングオシレータ40は、図5を参照して説明したリングオシレータ40と同様の構成及び機能を有するが、第1段の論理反転回路41(図5参照)の回路構成を明示的に示してある。
図10に示されるようにリングオシレータ40の第1段の論理反転回路は、AND回路91、OR回路92、及びNAND回路93を含む。このリングオシレータ40はi行j列に配置される。AND回路91は、i-1行の発振制御信号ROW[i-1]とj列の発振制御信号COL[j]とを入力として受け取り、これら2つの入力が両方ともに"1"のときにその出力が"1"になる。OR回路92は、AND回路91の出力とi行の発振制御信号ROW[i]を受け取り、これら2つの入力の何れか一方が"1"のときにその出力が"1"になる。OR回路92の出力が"1"のときにNAND回路93はリングオシレータ40の第1段のインバータとして機能して、リングオシレータ40が発振する。OR回路92の出力が"0"のときにNAND回路93の出力は"1"固定となり、リングオシレータ40は発振しない。
このリングオシレータ40を用いることにより、ロー発振制御信号の値が"1"である行においては、行内の全てのリングオシレータ40が発振する。ロー発振制御信号の値が"0"である行においては、原則として、行内のリングオシレータ40は発振しない。但しロー発振制御信号の値が"0"であるi番目の行において、その直ぐ下のi-1番目の行でのロー発振制御信号の値が"1"であれば、コラム発振制御信号の値が"1"である列のリングオシレータ40が発振する。
図11は、スキップ&常時オン制御部34の行毎の部分回路34Aの構成の一例を示す図である。部分回路34Aは、OR回路61、AND回路62、AND回路63、OR回路64、AND回路65、AND回路66、及びOR回路67を含む。第i行の部分回路34Aは、常時オン制御信号Riをデコーダ(常時オン選択信号生成部)23から受け取る。第i行の部分回路34Aは更に、第i行のロー制御フラグ36Aの出力と、下隣にある第i-1行のロー制御フラグの出力ROW[i-1]と、上隣にある第i+1行のロー制御フラグの出力ROW[i+1]とを受け取る。
OR回路61、AND回路62、及びAND回路63は選択回路として機能する。この選択回路は、第i行のロー制御フラグ36Aの出力又は第i-1行のロー制御フラグの出力ROW[i-1]の何れかを常時オン制御信号Riの値に応じて選択し、選択した信号を第i+1行のコラム制御フラグの入力として供給する。同様に、OR回路64、AND回路65、及びAND回路66は選択回路として機能する。この選択回路は、第i行のロー制御フラグ36Aの出力又は第i+1行のロー制御フラグの出力ROW[i+1]の何れかを常時オン制御信号Riの値に応じて選択し、選択した信号を第i-1行のコラム制御フラグの入力として供給する。
常時オン制御信号Riが"0"である場合、第i行はオン固定故障が存在する行ではないので、常時オンに設定する制御もスキップする制御も実行されない。この場合、上述の選択回路の動作により、第i行のロー制御フラグ36Aの出力が第i-1行及び第i+1行に供給される。各行のロー制御フラグ36Aはシフト制御部35により制御され、周波数増大する必要がある場合には、下側の行から供給されたロー制御フラグの値を当該行のロー制御フラグに取り込む。周波数減少する必要がある場合には、上側の行から供給されたロー制御フラグの値を当該行のロー制御フラグに取り込む。これにより、オン状態になる行が1行ずつ増大又は減少する制御動作を実現することができる。
常時オン制御信号Riが"1"である場合、第i行はオン固定故障が存在する行であるので、常時オンに設定する制御とスキップする制御とが両方ともに実行される。この場合、上述の選択回路の動作により、第i-1行及び第i+1行のロー制御フラグ36Aの出力が、それぞれ第i+1行及び第i-1行に供給される。各行のロー制御フラグ36Aはシフト制御部35により制御され、周波数増大する場合には、下側の行から供給されたロー制御フラグの値を当該行のロー制御フラグに取り込む。周波数減少する場合には、上側の行から供給されたロー制御フラグの値を当該行のロー制御フラグに取り込む。例えば第k行に故障が存在し、現在のタイミングにおいて、第1行乃至第k-1行のロー制御フラグの値が"1"であり、第k行乃至第m行のロー制御フラグの値が"0"であるとする。この状態から次の更新タイミングにおいて、第1行乃至第k+1行のロー制御フラグの値が"1"であり、第k+2行乃至第m行のロー制御フラグの値が"0"である状態に一回の更新動作で移行することができる。即ち、故障が存在する行では1行スキップしての周波数増大及び周波数減少の制御動作を実現することができる。
第i行のリングオシレータ40に供給する発振制御信号ROW[i]はOR回路67の出力である。OR回路67の一方の入力はロー制御フラグ36Aの出力であり、他方の入力は常時オン制御信号Riである。従って、常時オン制御信号Riの値が"1"である場合には、第i行のリングオシレータ40に供給する発振制御信号ROW[i]は常時"1"である。これにより、故障がある行の全てのリングオシレータ40を常時オン状態になるように設定する発振制御信号を供給することができる。
なお上述した図9に示される第1の実施例の構成では、固定故障の行を予備回路の行で置き換えて救済する従来のDCOに比較して、予備回路及び行置換のための切替回路の分だけ回路素子の数が少なくなっている。但し、スキップ&常時オン制御部34(即ち複数の部分回路34A)の分は回路素子の数が増えることになる。一行分の予備回路及び行置換の切替回路のトランジスタ数と複数の部分回路34Aのトランジスタ数とでは、略同等或いは複数の部分回路34Aのトランジスタ数の方が若干少なくなる。
図12は、DCOの第2の実施例の構成の一例を示す図である。図12に示すDCOは列単位での故障箇所の救済を行う構成であり、図4に示される列側のスキップ&常時オン制御部33のみが設けられ、行側のスキップ&常時オン制御部34は設けられていない。マトリクス状に配置されたリングオシレータ40のうちで、オン固定故障を有するリングオシレータがリングオシレータ40Aとして示されている。
列側には、コラム制御フラグ列31のコラム制御フラグ31Aが各列に対応して設けられる。行側には、ロー制御フラグ列36のロー制御フラグ36Aが各行に対応して設けられる。障害情報保持レジスタ24にはオン固定故障が存在する位置を特定する情報が格納されている。デコーダ(常時オン選択信号生成部)23が、障害情報保持レジスタ24に格納される情報に基づいて、常時オン制御信号C1乃至Cnを生成する。l番目の列に対応する常時オン制御信号Clのみが常時オン状態(即ち"1"に固定の状態)となっており、それ以外の列に対応する常時オン制御信号は"0"に設定されている。この常時オン制御信号C1乃至Cnは、デコーダ23からスキップ&常時オン制御部33の各列毎の部分回路33Aにそれぞれ供給される。図12において、図4に示される列側のシフト制御部32及び行側のシフト制御部35については図示が省略されているが、コラム制御フラグ31Aの値はシフト制御部32が制御し、ロー制御フラグ36Aの値はシフト制御部35が制御する。
図13は、発振部20にマトリクス状に配置されるリングオシレータ40の構成の一例を示す図である。図13に示される発振部20のリングオシレータ40は、図5を参照して説明したリングオシレータ40と同様の構成及び機能を有するが、第1段の論理反転回路41(図5参照)の回路構成を明示的に示してある。
図13に示されるようにリングオシレータ40の第1段の論理反転回路は、AND回路81、OR回路82、OR回路83、及びNAND回路84を含む。このリングオシレータ40はi行j列に配置される。AND回路81は、i-1行の発振制御信号ROW[i-1]とj列の発振制御信号COL[j]とを入力として受け取り、これら2つの入力が両方ともに"1"のときにその出力が"1"になる。OR回路82は、AND回路81の出力とi行の発振制御信号ROW[i]とを受け取り、これら2つの入力の何れか一方が"1"のときにその出力が"1"になる。OR回路83は、OR回路82の出力とi行の常時オン制御信号Cjとを受け取り、これら2つの入力の何れか一方が"1"のときにその出力が"1"になる。
OR回路83の出力が"1"のときにNAND回路84はリングオシレータ40の第1段のインバータとして機能して、リングオシレータ40が発振する。OR回路83の出力が"0"のときにNAND回路84の出力は"1"固定となり、リングオシレータ40は発振しない。
このリングオシレータ40を用いることにより、ロー発振制御信号の値が"1"である行においては、行内の全てのリングオシレータ40が発振する。ロー発振制御信号の値が"0"である行においては、原則として、行内のリングオシレータ40は発振しない。但しロー発振制御信号の値が"0"であるi番目の行において、その直ぐ下のi-1番目の行でのロー発振制御信号の値が"1"であれば、コラム発振制御信号の値が"1"である列のリングオシレータ40が発振する。また常時オン制御信号Cjの値が"1"である列においては、無条件に全てのリングオシレータ40が発振する。
図14は、スキップ&常時オン制御部33の列毎の部分回路33Aの構成の一例を示す図である。部分回路33Aは、OR回路71、AND回路72、AND回路73、OR回路74、AND回路75、及びAND回路76を含む。第j列の部分回路33Aは、常時オン制御信号Cjをデコーダ(常時オン選択信号生成部)23から受け取る。第j列の部分回路33Aは更に、第j列のコラム制御フラグ31Aの出力と、左隣にある第j-1列のコラム制御フラグの出力COL[j-1]と、右隣にある第j+1列のコラム制御フラグの出力COL[j+1]とを受け取る。
OR回路71、AND回路72、及びAND回路73は選択回路として機能する。この選択回路は、第j列のコラム制御フラグ31Aの出力又は第j+1列のコラム制御フラグの出力COL[j+1]の何れかを常時オン制御信号Cjの値に応じて選択し、選択した信号を第j-1列のコラム制御フラグの入力として供給する。同様に、OR回路74、AND回路75、及びAND回路76は選択回路として機能する。この選択回路は、第j列のコラム制御フラグ31Aの出力又は第j-1列のコラム制御フラグの出力COL[j-1]の何れかを常時オン制御信号Cjの値に応じて選択し、選択した信号を第j+1列のコラム制御フラグの入力として供給する。
常時オン制御信号Cjが"0"である場合、第j列はオン固定故障が存在する列ではないので、常時オンに設定する制御もスキップする制御も実行されない。この場合、上述の選択回路の動作により、第j列のコラム制御フラグ31Aの出力が第j-1列及び第j+1列に供給される。各列のコラム制御フラグ31Aはシフト制御部35により制御され、周波数増大する必要がある場合には、左側の列から供給されたコラム制御フラグの値を当該列のコラム制御フラグに取り込む。周波数減少する必要がある場合には、右側の列から供給されたコラム制御フラグの値を当該列のコラム制御フラグに取り込む。これにより、オン状態になる列が1列ずつ増大又は減少する制御動作を実現することができる。
常時オン制御信号Cjが"1"である場合、第j列はオン固定故障が存在する列であるので、常時オンに設定する制御とスキップする制御とが両方ともに実行される。この場合、上述の選択回路の動作により、第j-1列及び第j+1列のコラム制御フラグ31Aの出力が、それぞれ第j+1列及び第j-1列に供給される。各列のコラム制御フラグ31Aはシフト制御部32により制御され、周波数増大する場合には、左側の列から供給されたコラム制御フラグの値を当該列のコラム制御フラグに取り込む。周波数減少する場合には、右側の列から供給されたコラム制御フラグの値を当該列のコラム制御フラグに取り込む。例えば第l列に故障が存在し、現在のタイミングにおいて、第1列乃至第l-1列のコラム制御フラグの値が"1"であり、第l列乃至第n列のコラム制御フラグの値が"0"であるとする。この状態から次の更新タイミングにおいて、第1列乃至第l+1列のコラム制御フラグの値が"1"であり、第l+2列乃至第n列のコラム制御フラグの値が"0"である状態に一回の更新動作で移行することができる。即ち、故障が存在する列では1列スキップしての周波数増大及び周波数減少の制御動作を実現することができる。
第j列のリングオシレータ40には、常時オン制御信号Cjとコラム制御フラグ31Aの出力である発振制御信号COL[j]とが供給される。常時オン制御信号Cjの値が"1"である場合には、図13を用いて説明したように第j列の全てのリングオシレータ40が発振する。このようにして、故障がある列の全てのリングオシレータ40を常時オン状態になるように設定する発振制御信号(この場合は常時オン制御信号Cjも発振制御信号の一種である)を供給することができる。
図15は、図9に示す第1の実施例の構成において故障がオン固定故障ではなくオフ固定故障の場合を示す図である。図15に示すように故障がオフ固定故障の場合であっても、図9に示す第1実施例と同一又は類似の構成及び動作により、固定故障を救済することができる。即ち、故障が存在する行では1行スキップしての周波数増大及び周波数減少の制御動作を実現することができるとともに、故障がある行の全てのリングオシレータ40に対して常時オン状態を指示する発振制御信号を供給することができる。
オフ固定故障であるリングオシレータがリングオシレータ40Bとして示されている。このリングオシレータ40Bは、常時オン状態を指示する発振制御信号が供給されても、当然ながら発振はしない。但し、このリングオシレータ40Bが属する行内の他の全てのリングオシレータ40は常時発振することになる。
図15の構成の場合には、リングオシレータの総数をM個として、設計上の最高周波数(M個全てのリングオシレータが発振する場合の周波数)を実現することはできず、リングオシレータ40Bは無駄な負荷として消費電力を増大させる方向に影響を及ぼす。但し、設計上の最高周波数に近いM-1個のリングオシレータが発振するときの発振周波数を実現可能であり、常時負荷として影響する無駄なリングオシレータが1個だけ存在するにすぎない。それに対して一行分の例えばp個の予備回路を設けて行単位で置換する構成では、設計上の最高周波数を実現できる能力を実現するために、常時負荷として影響するp個の無駄なリングオシレータが存在することになる。またこれらのp個の無駄なリングオシレータの分だけ、無駄な回路資源及び回路スペースを消費することになる。従って、設計上の最高周波数が要求される場合を除き、図15の構成によりオフ固定故障を救済するようにしてもよい。
なお図15の構成のように故障が存在する行を常時オン状態にするのではなく、常時オフ状態にすることも可能ではある。故障がある行を常時オフ状態にする構成では、1個だけ発振させることも可能であるという意味で低周波数側の可動範囲が広くなるために、故障の行を常時オン状態にする構成と比較して可動範囲の広さ自体は変わらない。しかしそのような構成にすると、一行にp個のリングオシレータが存在するとして、最大でM-p個のリングオシレータが発振するときの発振周波数しか実現できず、しかも常時負荷として影響する無駄なリングオシレータがp個存在することになる。
前述のように、LSIの製造ではバラツキの発生が不可避であり、同一の発振周波数を得るために発振させるリングオシレータの数はチップによって異なる。従って一般に、各LSIには、製造バラツキを考慮して高周波数側又は低周波数側に周波数の余裕が設けられている。設計としては、低周波側にマージンがある構成(常時オンであるリングオシレータが複数個存在する構成)の方が、高周波側にマージンがある構成(常時オフであるリングオシレータが複数個存在する構成)よりも、回路資源の有効利用という観点から好ましい。従って、故障のある行を常時オフ状態にするよりは、故障のある行を常時オン状態にして、低周波側のマージンとして常時オン状態が想定されているリングオシレータに組み込む方が好ましいことになる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。