添付図面を参照して、本発明の実施の形態を説明する。
1.第1の実施の形態(DCエラー検出及び再構成)
1−1.概要
本発明の第1の実施の形態では、フリップフロップの出力値が“0”または“1”に固定される「DCエラー」が効率的に検出される。更に、DCエラーが発生したエラーフリップフロップを冗長フリップフロップで置換する「再構成処理」が実施される。
図1は、第1の実施の形態に係る半導体集積回路の構成を概略的に示すブロック図である。本実施の形態に係る半導体集積回路は、複数ビットのデータを記憶する多ビットレジスタ部1を備えている。その多ビットレジスタ部1は、N個(Nは1以上の整数)の入力端子IN−1〜IN−N及びN個の出力端子OUT−1〜OUT−Nを備えており、入力端子IN−1〜IN−Nのそれぞれに入力されるNビットデータを記憶し、そのNビットデータを出力端子OUT−1〜OUT−Nのそれぞれから出力する。
より詳細には、多ビットレジスタ部1は、Nビットデータを記憶するための複数のフリップフロップ10を備えている。各フリップフロップ10は、例えばDフリップフロップである。本実施の形態では、複数のフリップフロップ10は、少なくとも1つの冗長フリップフロップを含んでいる。すなわち、複数のフリップフロップ10は、N個のフリップフロップ10−1〜10−Nと、R個の冗長フリップフロップ10−r1〜10−rRを含んでいる。ここで、Rは、“冗長度”を表す1以上の整数である。これらN+R個のフリップフロップ10のうち「N個の選択フリップフロップ」が、入力端子IN−1〜IN−Nに入力されるNビットデータの記憶に用いられる。
そのN個の選択フリップフロップの選択に用いられるのが、再構成情報RECON及びセレクタ部(20、30)である。再構成情報RECONは、N個の選択フリップフロップを指定するデータである。セレクタ部(20、30)は、その再構成情報RECONに応じて、複数のフリップフロップ10の中からN個の選択フリップフロップを選択する。そして、セレクタ部(20、30)は、N個の入力端子IN−1〜IN−Nに入力されたNビットデータがN個の選択フリップフロップのそれぞれによってN個の出力端子OUT−1〜OUT−Nに出力されるように、データの流れを切り替える。
より詳細には、図1に示されるように、多ビットレジスタ部1は、入力セレクタ部20及び出力セレクタ部30を備えている。
入力セレクタ部20は、N個の入力端子IN−1〜IN−NとN+R個のフリップフロップ10との間に配置されている。この入力セレクタ部20は、再構成情報RECONに応じて、N個の入力端子IN−1〜IN−NとN+R個のフリップフロップ10との間の接続関係を切り替える。具体的には、入力セレクタ部20は、再構成情報RECONに基づいて、N個の入力端子IN−1〜IN−Nに入力されたNビットデータがN個の選択フリップフロップに供給されるように、当該接続関係を設定する。
出力セレクタ部30は、N+R個のフリップフロップ10とN個の出力端子OUT−1〜OUT−Nとの間に配置されている。この出力セレクタ部30は、再構成情報RECONに応じて、N個の出力端子OUT−1〜OUT−NとN+R個のフリップフロップ10との間の接続関係を切り替える。具体的には、出力セレクタ部30は、再構成情報RECONに基づいて、N個の選択フリップフロップから出力されるNビットデータがN個の出力端子OUT−1〜OUT−Nに出力されるように、当該接続関係を設定する。
本実施の形態において、多ビットレジスタ部1は更に、「エラー検出部50」を備えている。エラー検出部50は、各フリップフロップ10のデータ入力端子及びデータ出力端子に接続されている。このエラー検出部50は、DCテストモード時に、各フリップフロップ10の入出力に基づいて、DCエラーが発生しているエラーフリップフロップを検出する。更に、エラー検出部50は、検出したエラーフリップフロップがN個の選択フリップフロップから除外されるように再構成情報RECONを作成する。
図2は、DCテスト時の構成をより詳細に示している。尚、図2において、セレクタ部(20、30)の図示は省略されている。本実施の形態によれば、DCテストモードにおいて、N個のフリップフロップ10−1〜10−Nがスキャンチェーンを構成する。そのスキャンチェーンにはスキャンデータDscanが順次入力される。エラー検出部50は、各フリップフロップ10のデータ入力端子及びデータ出力端子に接続されており、それぞれのフリップフロップ10に入力されるスキャン入力データ及びそれらから出力されるスキャン出力データに基づいてDCエラーの発生を検出する。つまり、エラー検出部50は、N個のフリップフロップ10−1〜10−Nにエラーフリップフロップが含まれているか否か検出し、含まれている場合、そのエラーフリップフロップの位置をも検出する。検出されたエラーフリップフロップの数が“冗長度R”以下であれば、そのエラーフリップフロップを冗長フリップフロップ10−rによって置換可能である。エラー検出部50は、検出されたエラーフリップフロップの代わりに冗長フリップフロップ10−rが選択フリップフロップに組み込まれるように、再構成情報RECONを作成する。すなわち、エラー検出部50は、検出されたエラーフリップフロップがN個の選択フリップフロップから除外されるように再構成情報RECONを作成する。
エラー検出部50は、作成した再構成情報RECONを記憶部60に格納する。好適には、記憶部60は、多ビットレジスタ部1毎に個別に設けられる。例えば、記憶部60は、エラー検出部50内のラッチ回路により構成される。但し、記憶部60の構成はそれに限られない。記憶部60は、複数の多ビットレジスタ部1によって共用されるフラッシュメモリ等のメモリマクロであってもよい。
記憶部60に格納された再構成情報RECONは、DCテストモード終了後の所定のタイミングにおいて、セレクタ部20、30に出力(反映)される。すなわち、DCテストにおいて検出されたエラーフリップフロップはN個の選択フリップフロップから除外され、その代わりに、冗長フリップフロップ10−rが適宜選択フリップフロップに組み込まれる。この処理が「再構成処理」である。
図3は、本実施の形態における再構成処理の一例を概略的に示している。例えば、上述のDCテストの結果、フリップフロップ10−2がエラーフリップフロップとして検出されたとする。この場合、セレクタ部(20、30)は、再構成情報RECONに応じて、エラーフリップフロップ10−2を避けるようにデータの流れを切り替える。具体的には、エラーフリップフロップ10−2の代わりに冗長フリップフロップ10−r1が選択フリップフロップに組み込まれる。入力セレクタ部20は、N個の入力端子IN−1〜IN−NとN個の選択フリップフロップ10−1、10−3〜10−N、10−r1とをそれぞれ電気的に接続し、出力セレクタ部30は、N個の選択フリップフロップ10−1、10−3〜10−N、10−r1とN個の出力端子OUT−1〜OUT−Nとをそれぞれ電気的に接続する。その結果、N個の入力端子IN−1〜IN−Nに入力されたNビットデータが、エラーフリップフロップ10−2を介することなく、N個の出力端子OUT−1〜OUT−Nにそれぞれ出力されるようになる。
以上に説明されたように、本実施の形態によれば、スキャンチェーンを利用することによりエラーフリップフロップの位置(DCエラー発生位置)が“効率的”に検出される。これにより、DCテスト時間が短縮される。また、本実施の形態によれば、多ビットレジスタ部1はエラー検出部50を備えており、DCテストモード時に多ビットレジスタ部1自身が再構成情報RECONを作成する。これにより、効率的な再構成処理が可能となる。
1−2.具体例
1−2−1.回路構成例
図4は、本実施の形態に係る半導体集積回路の多ビットレジスタ部1の回路構成の一例を示している。本例では、N=8、冗長度R=1である。多ビットレジスタ部1の入力端子IN−8〜IN−1には、8ビットの入力データIN[7:0]が入力される。多ビットレジスタ部1の出力端子OUT−8〜OUT−1からは、8ビットの出力データOUT[7:0]が出力される。図4に示されるように、多ビットレジスタ部1は、複数のフリップフロップ10(10−1〜10−8、10−r1)、入力セレクタ部20、出力セレクタ部30、スキャンセレクタ部40、エラー検出部50、及びライン判定回路70を備えている。
各フリップフロップ10のクロック端子には、クロック信号CLKが入力される。各フリップフロップ10は、クロック信号CLKに基づいて動作する。
入力セレクタ部20は、N+1個の入力セレクタ21−1〜21−9を備えている。入力セレクタ21−k(k=1〜8)は、入力セレクト信号SLi[k−1]に応じて、スキャンセレクタ41−kの出力データあるいは下位ビット側のスキャンセレクタ41−(k−1)の出力データのいずれか一方を選択し、選択データをフリップフロップ10−kのデータ入力端子に出力する。但し、入力セレクタ21−1の場合、下位ビット側の出力データは固定データであるとする。入力セレクタ21−9は、入力セレクト信号SLi[8]に応じて、固定データあるいはスキャンセレクタ41−8の出力データのいずれか一方を選択し、選択データを冗長フリップフロップ10−r1のデータ入力端子に出力する。尚、9ビットの入力セレクト信号SLi[8:0]は、再構成情報RECONに相当する。
出力セレクタ部30は、N個の出力セレクタ31−1〜31−8を備えている。出力セレクタ31−k(k=1〜8)は、出力セレクト信号SLo[k−1]に応じて、フリップフロップ10−kの出力データあるいは上位ビット側のフリップフロップ10−(k+1)の出力データのいずれかを選択し、選択データを出力データOUT[k−1]として出力する。但し、出力セレクタ31−8の場合、上位ビット側のフリップフロップは、冗長フリップフロップ10−r1であるとする。尚、8ビットの出力セレクト信号SLo[7:0]も、再構成情報RECONに相当する。
スキャンセレクタ部40は、N個のスキャンセレクタ41−1〜41−8を備えている。スキャンセレクタ41−k(k=1〜8)は、スキャン信号SCANに応じて、入力データIN[k−1]あるいは下位ビット側の出力セレクタ31−(k−1)の出力データOUT[k−2]のいずれか一方を選択し、選択データを入力セレクタ21−k及び上位ビット側の入力セレクタ21−(k+1)の両方に出力する。但し、スキャンセレクタ41−1の場合、下位ビット側の出力データOUT[k−2]の代わりに、スキャンデータDscanが入力される(後述される)。
エラー検出部50は、N個のエラー検出記憶回路51−1〜51−8を備えている。DCテストモード時、エラー検出記憶回路51−k(k=1〜8)は、スキャンセレクタ41−kへの入力データ(スキャン入力データDin)及び出力セレクタ31−kからの出力データ(スキャン出力データDout)を受け取る。そして、エラー検出記憶回路51−kは、スキャン入力データDin及びスキャン出力データDoutに基づいて、入力セレクト信号SLi[k−1]及び出力セレクト信号SLo[k−1]を作成し、記憶する。尚、エラー検出記憶回路51−8は、入力セレクト信号SLi[8]を入力セレクト信号SLi[7]と同じ値に設定する。
図5は、1つのエラー検出記憶回路51の回路構成の一例を示している。エラー検出記憶回路51は、EXNOR回路52、AND回路53、54、NOR回路55、56、インバータ回路57、58を備えている。
EXNOR回路52の入力端子には、スキャン入力データDin及びスキャン出力データDoutが入力される。EXNOR回路52の出力端子は、ノードNAに接続されている。AND回路53の入力端子には、DCテスト信号DCtest、反転クロック信号CLKB、及びEXNOR回路52の出力信号(ノードNAの信号)が入力される。AND回路53の出力端子は、ノードNBに接続されている。AND回路54の入力端子には、DCテスト信号DCtest、反転クロック信号CLKB、及びリセット信号Resetが入力される。AND回路54の出力端子は、ノードNCに接続されている。
NOR回路55、56は、RSラッチ回路を構成している。詳細には、NOR回路55の入力端子はノードNB、NEに接続されており、その出力端子はノードNDに接続されている。また、NOR回路56の入力端子はノードNC、NDに接続されており、その出力端子はノードNEに接続されている。インバータ回路57の入力端子はノードNDに接続されており、その出力端子から入力セレクト信号SLiが出力される。インバータ回路58の入力端子はノードNEに接続されており、その出力端子から出力セレクト信号SLoが出力される。尚、これらNOR回路55、56、インバータ回路57、58が、再構成情報RECON(入力セレクト信号SLi、出力セレクト信号SLo)を記憶する「記憶部60」に相当している。エラー検出記憶回路51の動作の詳細は後述される。
再度図4を参照して、ライン判定回路70は、DCテストモード時、スキャンセレクタ41−8への入力データ(スキャン入力データDin)及び出力セレクタ31−8からの出力データ(スキャン出力データDout)を受け取る。そして、ライン判定回路70は、スキャン入力データDin及びスキャン出力データDoutに基づいて、ライン判定ビットLBを作成し、記憶する。ライン判定ビットLBは、N個のフリップフロップ10−1〜10−8にエラーフリップフロップが1つでも含まれているか否かを示すエラーフラグである。
図6は、ライン判定回路70の回路構成の一例を示している。ライン判定回路70の回路構成は、図5で示されたエラー検出記憶回路51の回路構成と同様である。EXNOR回路52、AND回路53、54、NOR回路55、56、インバータ回路57、58が、それぞれ、EXNOR回路72、AND回路73、74、NOR回路75、76、インバータ回路77、78に置き換えられている。また、リセット信号Resetの代わりにラインリセット信号LResetが入力され、入力セレクト信号SLiの代わりにライン判定ビットLBが出力される。尚、エラー検出記憶回路51−8のEXNOR回路52とライン判定回路70のEXNOR回路72は、共通化されてもよい。ライン判定回路70の動作の詳細は後述される。
1−2−2.動作例
DCテストモード時の動作を詳細に説明する。DCテストモードにおいて、DCテスト信号DCtestは“1”に設定され、スキャン信号SCANは“1”に設定される。
まず、リセット処理が行われる。具体的には、全てのエラー検出記憶回路51において、リセット信号Resetが所定期間“1”に設定される。その結果、NOR回路55、56によって構成されるRSラッチ回路(図5参照)がリセットされ、入力セレクト信号SLiが“0”になり、出力セレクト信号SLoが“1”になる。ライン判定回路70に関しても同様にリセット処理が行われる。ラインリセット信号LResetが所定期間“1”に設定され、ライン判定ビットLBが“0”になる。このようなリセット処理後の各信号の状態は、図7に示される通りである。入力セレクト信号SLi及び出力セレクト信号SLoは、セレクタ部(20、30)に反映される。
図8は、DCテスト時のデータの流れを示している。スキャン信号SCANが“1”の場合、各スキャンセレクタ41−k(k=1〜8)は、下位ビット側の出力セレクタ31−(k−1)の出力データOUT[k−2]を選択し、出力する。但し、スキャンセレクタ41−1は、スキャンデータDscanを出力する。また、入力セレクト信号SLiが“0”の場合、各入力セレクタ21−k(k=1〜8)は、スキャンセレクタ41−kの出力データを選択し、出力する。また、出力セレクト信号SLoが“1”の場合、各出力セレクタ31−k(k=1〜8)は、フリップフロップ10−kの出力データを選択し、出力する。その結果、図8に示されるように、フリップフロップ10−1〜10−8がスキャンチェーンを構成する。そのスキャンチェーンには、スキャンデータDscanとして、“0”、“1”の繰り返しパターン(0、1、0、1・・・)が入力される。
エラー検出記憶回路51−k(k=1〜8)は、フリップフロップ10−kへの入力データ(スキャン入力データDin)及びフリップフロップ10−kからの出力データ(スキャン出力データDout)を受け取る。そして、エラー検出記憶回路51−kは、スキャン入力データDin及びスキャン出力データDoutに基づいて、入力セレクト信号SLi[k−1]及び出力セレクト信号SLo[k−1]を適宜更新し、記憶する。
図9は、フリップフロップ10−kが正常に動作している場合のエラー検出記憶回路51−k(図5参照)の動作を説明するためのタイミングチャートである。図9には、クロック信号CLK、スキャン入力データDin、スキャン出力データDout、ノードNAの信号、反転クロック信号CLKB、及びノードNBの信号が示されている。フリップフロップ10−kが正常に動作している場合、ノードNBの信号は“0”のままである。従って、NOR回路55、56によって構成されるRSラッチ回路の状態は、そのまま変わらない。すなわち、入力セレクト信号SLiは“0”のまま維持され、出力セレクト信号SLoは“1”のまま維持される。
一方、図10は、フリップフロップ10−kにDCエラーが発生している場合を示している。例えば、スキャン出力データDoutが“0”に固定されているとする。この場合、ノードNBにデータ“1”が印加される。従って、NOR回路55、56によって構成されるRSラッチ回路の状態が反転する。すなわち、入力セレクト信号SLiは“0”から“1”に反転し、出力セレクト信号SLoは“1”から“0”に反転する。また、この信号状態は、RSラッチ回路(記憶部60)によって保持される。
例として、フリップフロップ10−4がエラーフリップフロップである場合を考える。エラー検出記憶回路51−4は、フリップフロップ10−4がエラーフリップフロップであることを検出し、入力セレクト信号SLi[3]を“0”から“1”に反転させ、出力セレクト信号SLo[3]を“1”から“0”に反転させる。また、スキャンチェーン上でエラーフリップフロップ10−4以降に存在するフリップフロップ10−5〜10−8には、スキャンデータDscanである“0”、“1”の繰り返しパターンが伝わらない。従って、エラーフリップフロップの場合(図10参照)と同様に、RSラッチ回路の状態が反転する。すなわち、図7に示されるように、入力セレクト信号SLi[8:3]は全て“0”から“1”に反転し、出力セレクト信号SLo[7:3]は全て“1”から“0”に反転する。これら入力セレクト信号SLi及び出力セレクト信号SLoが再構成情報RECONであり、RSラッチ回路(記憶部60)によって記憶される。
尚、入力セレクト信号SLi[8:7]が“0”から“1”に反転する場合、ライン判定回路70によって作成されるライン判定ビットLBも同様に“0”から“1”に反転する。ライン判定ビットLB=1は、フリップフロップ10−1〜10−8からなるラインのどこかでDCエラーが発生していることを意味する。つまり、ライン判定ビットLBは、ライン毎のエラーフラグである。このライン判定ビットLBを利用することによって、DCテストを効率的に実施することができる(後述される)。
RSラッチ回路(記憶部60)によって保持されている入力セレクト信号SLi及び出力セレクト信号SLoは、所定のタイミングで、入力セレクタ部20及び出力セレクタ部30に出力(反映)され、再構成処理が実施される。
図11は、再構成処理後のデータの流れを示している。スキャン信号SCANが“0”の場合、各スキャンセレクタ41−k(k=1〜8)は、入力データIN[k−1]を選択し、出力する。入力セレクト信号SLi=“0”を受け取る入力セレクタ21−1〜21−3は、それぞれ、スキャンセレクタ41−1〜41−3の出力データを選択し、出力する。一方、入力セレクト信号SLi=“1”を受け取る入力セレクタ21−4〜21−9は、それぞれ、下位ビット側のスキャンセレクタ41−3〜41−8の出力データを選択し、出力する。また、出力セレクト信号SLo=“1”を受け取る出力セレクタ31−1〜31−3は、それぞれ、フリップフロップ10−1〜10−3の出力データを選択し、出力する。一方、出力セレクト信号SLo=“0”を受け取る出力セレクタ31−4〜31−8は、それぞれ、上位ビット側のフリップフロップ10−5〜10−8、10−r1の出力データを選択し、出力する。その結果、図11に示されるように、入力データIN[7:0]は、エラーフリップフロップ10−4を介することなく、選択フリップフロップ(10−1〜10−3、10−5〜10−8、10−r1)によって、出力データOUT[7:0]として出力されることになる。
尚、図8及び図11で示された例では、エラーフリップフロップ10−4より後ろのフリップフロップ10−5〜10−8、10−r1の中に、他のエラーフリップフロップがあるかもしれない。従って、最新の入力セレクト信号SLi及び出力セレクト信号SLoを入力セレクタ部20及び出力セレクタ部30に反映した後に、再度スキャンデータDscanをスキャンチェーンに供給し、エラー検出処理を再度実施してもよい。図8及び図11で示された例では冗長度Rが1であるが、一般的には、冗長度Rを使いきるまで、エラー検出処理及び再構成処理を繰り返し実行することができる。
以上に説明されたように、本実施の形態に係るエラー検出記憶回路51は、EXNOR回路及びRSラッチ回路を用いることにより、エラー検出、再構成情報RECON(SLi、SLo)の作成及び保持を効率的に行う。これにより、DCテスト時間が短縮される。
また、本実施の形態によれば、エラー検出記憶回路51中のラッチ回路が、再構成情報RECON(SLi、SLo)を記憶するための記憶部60として用いられる。つまり、ある多ビットレジスタ部1に関する再構成情報RECONは、当該多ビットレジスタ部1の中のローカルな記憶部60に記憶される。比較例として、複数の多ビットレジスタ部1に関する再構成情報RECONがフラッシュメモリによって集中的に記憶される場合を考える。その場合、フラッシュメモリと複数の多ビットレジスタ部1との間をつなぐ信号配線が混雑するという問題がある。本実施の形態によれば、信号配線の混雑問題が解消される。
1−3.電源電圧適応制御システム
本実施の形態に係る半導体集積回路は、好適には、「極低電力回路」に適用される。極低電力回路では、動作電圧VDDをなるべく低く設定することが要求される。以下、動作電圧VDDを適切に制御する「電源電圧適応制御システム」について説明する。
図12は、本実施の形態に係る電源電圧適応制御システム90の構成を示すブロック図である。電源電圧適応制御システム90は、対象回路91、電源回路92、及び制御回路93を備えている。対象回路91は、電圧制御対象となる半導体集積回路であり、上述の多ビットレジスタ部1を備えている。電源回路92は、少なくともフリップフロップ10の動作電圧VDDを多ビットレジスタ部1に供給する。制御回路93は、対象回路91及び電源回路92に接続されており、それらの動作を制御する。具体的には、制御回路93は、DCテストや再構成処理を制御するための制御信号CONを、対象回路91に出力する。また、制御回路93は、多ビットレジスタ部1からライン判定ビットLBを受け取る。更に、制御回路93は、必要に応じて、電源回路92を制御する。
電源電圧適応制御システム90は、1つの半導体チップ上に構築されていてもよい。あるいは、対象回路91、電源回路92、及び制御回路93は、別々の半導体チップにより構成されていてもよい。制御回路93は、コンピュータであってもよい。
図13は、本実施の形態に係る電源電圧適応制御システム90の動作を示すフローチャートである。尚、電源回路92が供給する動作電圧VDDは、最初、極低電圧(例えば、0.5V以下)に設定されているとする。
まず、制御回路93は、対象回路91に制御信号CONを出力し、再構成情報RECON(SLi、SLo)をリセットする(ステップS10)。また、制御回路93は、パラメータrを初期値0に設定する。パラメータrは、冗長トランジスタ10−rの使用数である。続いて、制御回路93は、対象回路91に制御信号CONを出力し、ライン判定ビットLBを“0”にリセットする(ステップS11)。
次に、制御回路93は、対象回路91に制御信号CONを出力し、スキャンデータDscanのスキャン処理を実行させる(ステップS12)。スキャン処理が終了すると、対象回路91の多ビットレジスタ部1は、上述のライン判定ビットLBを制御回路93に出力する(ステップS13)。
ライン判定ビットLBが“0”の場合(ステップS14;Yes)、エラーフリップフロップは存在しない。従って、処理は終了する。一方、ライン判定ビットLBが“1”の場合(ステップS14;No)、エラーフリップフロップが存在する。この場合、制御回路93は、パラメータrを1増加させる(ステップS15)。
パラメータrが冗長度R以内である場合(ステップS16;No)、制御回路93は、対象回路91に制御信号CONを出力し、上述の再構成処理を実施させる(ステップS17)。その結果、エラーフリップフロップはスキップされ、当該エラーフリップフロップ以降が1ビットずつシフトし、冗長フリップフロップ10−rが1つ消費される(図11参照)。その後、処理はステップS11に戻り、同じ処理が繰り返される。
一方、パラメータrが冗長度Rを超えた場合(ステップS16;Yes)、エラーフリップフロップをこれ以上排除することができない。この場合、DCエラーの原因となった極低電圧を多少緩和する。そのために、制御回路93は、電源回路92に指示を出し、動作電圧VDDを少しだけ上昇させる(ステップS18)。その後、処理は最初(ステップS10)に戻る。
このように、本実施の形態によれば、全ての冗長フリップフロップ10−r1〜10−rRを用いてもエラーフリップフロップが無くならない場合、動作電圧VDDが少しだけ増加させられる。これにより、エラーフリップフロップを解消しつつ、動作電圧VDDをなるべく低く設定することが可能となる。その結果、消費電力が必要最小限に抑えられる。
また、本実施の形態では、制御回路93は、ライン判定ビットLBに基づいて制御処理を行う。対象回路91は、全ての信号SLi、SLoを制御回路93に送る必要はなく、ライン判定ビットLBだけを制御回路93に送ればよい。従って、対象回路91と制御回路93との間の配線が簡略化され、また、制御処理が高速化される。これは、多ビットレジスタ部1のビット数が非常に多い場合に特に有効である。
対象回路91が複数の多ビットレジスタ部1を備えている場合も同様である。例えば、図14は、複数の多ビットレジスタ部1−1〜1−4に対して並列的にDCテストが実施される「ライン並列テスト」の場合を示している。スキャンデータDscanは、複数の多ビットレジスタ部1−1〜1−4に対して同時並列に供給される。制御回路93は、複数の多ビットレジスタ部1−1〜1−4の各々からライン判定ビットLBを受け取る。そして、制御回路93は、受け取ったライン判定ビットLBに基づいて、動作電圧VDDを上昇させるか否かを決定する。ライン並列テストの場合、全ての多ビットレジスタ部1から受け取るライン判定ビットLBが“0”になるまで、動作電圧VDDを上昇させる。
図15は、複数の多ビットレジスタ部1−1〜1−4に対して直列的にDCテストが実施される「ライン直列テスト」の場合を示している。複数の多ビットレジスタ部1−1〜1−4のフリップフロップ10は1つのスキャンチェーンを構成する。スキャンデータDscanは、初段の多ビットレジスタ部1−1に供給される。制御回路93は、最終段の多ビットレジスタ部1−4からライン判定ビットLBを受け取る。そして、制御回路93は、受け取ったライン判定ビットLBに基づいて、動作電圧VDDを上昇させるか否かを決定する。尚、ライン判定ビットLBを次段のリセット信号等の制御信号に使用してもよい。
本実施の形態に係る再構成処理によってスキャンチェーンからエラーフリップフロップが排除された後、当該スキャンチェーンを用いることによって、通常のスキャンテスト(チップテスト)が実施されてもよい。スキャンFFのエラー修復後にスキャンテスト(チップテスト)を実施することによって、テストの信頼性が向上する。
2.第2の実施の形態(AC特性エラー検出及び再構成)
本発明の第2の実施の形態では、フリップフロップのラッチ特性や遅延特性といったAC特性が十分でなくなる「AC特性エラー」が効率的に検出される。更に、AC特性エラーが発生したエラーフリップフロップを冗長フリップフロップで置換する「再構成処理」が実施される。
2−1.モード可変フリップフロップ
まず、本実施の形態において用いられるフリップフロップ110について詳しく説明する。本実施の形態に係るフリップフロップ110は、そのラッチ特性をテストするために、トグル動作が可能なように構成されている。また、本実施の形態に係るフリップフロップ110は、その遅延特性をテストするために、自己発振動作が可能なように構成されている。すなわち、本実施の形態に係るフリップフロップ110には、通常FFモードだけでなく、「トグルモード」や「自己発振モード」といったテストモードが用意されている。以下に説明されるように、フリップフロップ110の動作モードは、それら複数のモード間で切り替え可能である。
図16は、本実施の形態に係るフリップフロップ110の構成例を示す回路図である。フリップフロップ110は、FF入力端子FFIN及びFF出力端子FFOUTを備えている。FF入力端子FFINには、フリップフロップ110の外部から外部入力データが入力される。FF出力端子FFOUTからは、フリップフロップ110の外部に外部出力データが出力される。
フリップフロップ110は更に、FF部1120、入力ノードNin及び出力ノードNoutを備えている。FF部1120は、フリップフロップとしての基本的な動作を行う。入力ノードNin及び出力ノードNoutのそれぞれは、そのFF部1120の入力端子及び出力端子である。出力ノードNoutは、FF出力端子FFOUTに接続されている。より詳細には、FF部1120は、第1スイッチ回路SW1、第1ラッチ回路LA1、第2スイッチ回路SW2、第2ラッチ回路LA2、及びインバータ1125を備えている。
第1スイッチ回路SW1は、入力ノードNinとノードN1との間に接続されている。この第1スイッチ回路SW1は、第1クロック信号CK1(及び第1反転クロック信号CK1B)に応じてON/OFFする。具体的には、第1クロック信号CK1がHighレベルの場合、第1スイッチ回路SW1はOFFし、第1クロック信号CK1がLowレベルの場合、第1スイッチ回路SW1はONする。第1スイッチ回路SW1は、例えば、図16に示されるようなインバータ及びトランスファゲートにより構成される。
第1ラッチ回路LA1は、ノードN1とノードN2との間に接続されている。この第1ラッチ回路LA1は、第1クロック信号CK1(及び第1反転クロック信号CK1B)に基づいて動作する。具体的には、第1クロック信号CK1がHighレベルの場合、第1ラッチ回路LA1はデータラッチを行う。第1ラッチ回路LA1は、例えば、図16に示されるようなインバータ1121及びクロックドインバータ1122により構成される。
第2スイッチ回路SW2は、ノードN2とノードN3との間に接続されている。この第2スイッチ回路SW2は、第2クロック信号CK2(及び第2反転クロック信号CK2B)に応じてON/OFFする。具体的には、第2クロック信号CK2がHighレベルの場合、第2スイッチ回路SW2はONし、第2クロック信号CK2がLowレベルの場合、第2スイッチ回路SW2はOFFする。第2スイッチ回路SW2は、例えば、図16に示されるようなトランスファゲートにより構成される。
第2ラッチ回路LA2は、ノードN3とノードN4との間に接続されている。この第2ラッチ回路LA2は、第2クロック信号CK2(及び第2反転クロック信号CK2B)に基づいて動作する。具体的には、第2クロック信号CK2がLowレベルの場合、第2ラッチ回路LA2はデータラッチを行う。第2ラッチ回路LA2は、例えば、図16に示されるようなインバータ1123及びクロックドインバータ1124により構成される。
インバータ1125は、ノードN4と出力ノードNoutとの間に接続されている。
本実施の形態に係るフリップフロップ110は更に、FFセレクタ部1110及びフィードバックパス1130を備えている。フィードバックパス1130は、FF部1120の出力ノードNoutと入力ノードNinとの間をつないでいる。図16に示されるように、フィードバックパス1130上にはインバータ1131が設けられている。
FFセレクタ部1110は、入力ノードNinの前段に設けられている。このFFセレクタ部1110は、FF入力端子FFINに入力される外部入力データあるいはフィードバックパス1130を通してフィードバックされるフィードバックデータのいずれか一方を選択し、選択したデータを入力ノードNinに出力する。
より詳細には、FFセレクタ部1110は、スイッチ1111、1112を備えている。スイッチ1111は、FF入力端子FFINと入力ノードNinとの間に接続されており、反転テスト信号TSTBに応じてON/OFFする。スイッチ1112は、インバータ1131と入力ノードNinとの間に接続されており、テスト信号TSTに応じてON/OFFする。スイッチ1111、1112の各々は、例えば、NチャネルMOSトランジスタにより構成される。
通常FFモードにおいて、テスト信号TSTはLowレベルであり、反転テスト信号TSTBはHighレベルである。この場合、スイッチ1111はONし、一方、スイッチ1112はOFFする。従って、FF入力端子FFINに入力される外部入力データが、入力ノードNinに伝達される。すなわち、FFセレクタ部1110は、外部入力データを選択し、入力ノードNinに出力する。通常FFモードにおいては、フィードバックパス1130は非活性化されていると言える。
一方、テストモード(トグルモード及び自己発振モード)において、テスト信号TSTはHighレベルであり、反転テスト信号TSTBはLowレベルである。この場合、スイッチ1111はOFFし、一方、スイッチ1112はONする。従って、フィードバックパス1130を通してフィードバックされるフィードバックデータが、入力ノードNinに伝達される。すなわち、FFセレクタ部1110は、フィードバックデータを選択し、入力ノードNinに出力する。このように、フィードバックパス1130は、テストモード(トグルモード及び自己発振モード)において活性化される。
図17は、本実施の形態に係るフリップフロップ110の動作モードを制御するためのモード制御回路150の構成例を示している。モード制御回路150は、テスト信号生成回路151及びクロック生成回路154を備えている。
テスト信号生成回路151は、テスト信号TESTに応じて、上述のテスト信号TST及び反転テスト信号TSTBを生成する。より詳細には、テスト信号生成回路151は、図17に示されるようにインバータ152、153を備えている。テストモードにおいて、テスト信号TESTがHighレベルになる。その結果、テスト信号TSTがHighレベルになり、反転テスト信号TSTBがLowレベルになる。尚、FFセレクタ部1110における信号遅延及びその面積を低減する観点からは、スイッチ(NチャネルMOSトランジスタ)1111、1112を駆動するための信号TST、TSTBの電圧として、高電圧VDDHが使用されることが好適である。
クロック生成回路154は、クロック信号CLK及び信号SOBに応じて、上述の第1クロック信号CK1、第1反転クロック信号CK1B、第2クロック信号CK2及び第2反転クロック信号CK2Bを生成する。より詳細には、クロック生成回路154は、図17に示されるようにNAND回路155、インバータ156、157、NOR回路158、及びインバータ159を備えている。
以下、図16及び図17を適宜参照して、各動作モードにおけるフリップフロップ110の動作を説明する。
(通常FFモード)
通常FFモードにおいて、テスト信号TESTはLowレベルに設定される。この場合、反転テスト信号TSTBがHighレベルとなり、スイッチ1111がONする。一方、スイッチ1112はOFFし、フィードバックパス1130は非活性化される。また、信号SOBはHighレベル(“1”)に設定される。従って、第1クロック信号CK1と第2クロック信号CK2は、共にクロック信号CLKと同じになる。この場合、FF部1120は通常のラッチ動作を行う。
(トグルモード)
図18は、トグルモードにおけるフリップフロップ110の動作を示すタイミングチャートである。トグルモードにおいて、テスト信号TESTはHighレベルに設定され、テスト信号TSTがHighレベルになる。この場合、スイッチ1111がOFFする一方でスイッチ1112がONし、フィードバックパス1130が活性化される。
トグルモードの場合、信号SOBはHighレベル(“1”)に設定される。従って、上述の通常FFモードの場合と同様に、FF部1120は通常のラッチ動作を行う。より詳細には、第1クロック信号CK1と第2クロック信号CK2は、共にクロック信号CLKと同じになる。この場合、FF部1120において、第1スイッチ回路SW1と第2スイッチ回路SW2は交互にONし、また、第1ラッチ回路LA1と第2ラッチ回路LA2は交互にデータラッチを行う。但し、フィードバックパス1130が活性化されているため、FF部1120はデータ0とデータ1を交互にラッチし続ける。このように、トグルモードにおいて、フリップフロップ110は、フィードバックパス1130を利用してトグル動作を行う。
(自己発振モード)
図19は、自己発振モードにおけるフリップフロップ110の動作を示すタイミングチャートである。自己発振モードにおいて、テスト信号TESTはHighレベルに設定され、テスト信号TSTがHighレベルになる。この場合、スイッチ1111がOFFする一方でスイッチ1112がONし、フィードバックパス1130が活性化される。
自己発振モードの場合、信号SOBはLowレベル(“0”)に設定される。この場合、第1クロック信号CK1はLowレベルに維持され、第2クロック信号CK2はHighレベルに維持される。従って、FF部1120において、第1スイッチ回路SW1及び第2スイッチ回路SW2は共にON状態に維持される。その結果、第1スイッチ回路SW1(クロックドインバータ)、第1ラッチ回路LA1のインバータ1121、第2ラッチ回路LA2のインバータ1123、インバータ1125、及びフィードバックパス1130のインバータ1131によって、発振回路が形成される。すなわち、フリップフロップ110は、ラッチ動作を行わず、自己発振を行う。このように、自己発振モードにおいて、フリップフロップ110は、フィードバックパス1130を利用して自己発振動作を行う。
2−2.AC特性エラー検出
図20は、第2の実施の形態に係る半導体集積回路の構成を概略的に示すブロック図である。本実施の形態に係る半導体集積回路は、複数ビットのデータを記憶する多ビットレジスタ部101を備えている。その多ビットレジスタ部101は、N個(Nは1以上の整数)の入力端子IN−1〜IN−N及びN個の出力端子OUT−1〜OUT−Nを備えており、入力端子IN−1〜IN−Nのそれぞれに入力されるNビットデータを記憶し、そのNビットデータを出力端子OUT−1〜OUT−Nのそれぞれから出力する。
より詳細には、多ビットレジスタ部101は、Nビットデータを記憶するための複数のフリップフロップ110を備えている。各フリップフロップ110は、既出の図16で示された構成を有している。本実施の形態では、複数のフリップフロップ110は、少なくとも1つの冗長フリップフロップを含んでいる。すなわち、複数のフリップフロップ110は、N個のフリップフロップ110−1〜110−Nと、R個の冗長フリップフロップ110−r1〜110−rRを含んでいる。ここで、Rは、“冗長度”を表す1以上の整数である。これらN+R個のフリップフロップ110のうち「N個の選択フリップフロップ」が、入力端子IN−1〜IN−Nに入力されるNビットデータの記憶に用いられる。
そのN個の選択フリップフロップの選択に用いられるのが、再構成情報RECON及びセレクタ部(120、130)である。再構成情報RECONは、N個の選択フリップフロップを指定するデータである。セレクタ部(120、130)は、その再構成情報RECONに応じて、複数のフリップフロップ110の中からN個の選択フリップフロップを選択する。そして、セレクタ部(120、130)は、N個の入力端子IN−1〜IN−Nに入力されたNビットデータがN個の選択フリップフロップのそれぞれによってN個の出力端子OUT−1〜OUT−Nに出力されるように、データの流れを切り替える。
より詳細には、図20に示されるように、多ビットレジスタ部101は、入力セレクタ部120及び出力セレクタ部130を備えている。
入力セレクタ部120は、N個の入力端子IN−1〜IN−NとN+R個のフリップフロップ110との間に配置されている。この入力セレクタ部120は、再構成情報RECONに応じて、N個の入力端子IN−1〜IN−NとN+R個のフリップフロップ110との間の接続関係を切り替える。具体的には、入力セレクタ部120は、再構成情報RECONに基づいて、N個の入力端子IN−1〜IN−Nに入力されたNビットデータがN個の選択フリップフロップに供給されるように、当該接続関係を設定する。
出力セレクタ部130は、N+R個のフリップフロップ110とN個の出力端子OUT−1〜OUT−Nとの間に配置されている。この出力セレクタ部130は、再構成情報RECONに応じて、N個の出力端子OUT−1〜OUT−NとN+R個のフリップフロップ110との間の接続関係を切り替える。具体的には、出力セレクタ部130は、再構成情報RECONに基づいて、N個の選択フリップフロップから出力されるNビットデータがN個の出力端子OUT−1〜OUT−Nに出力されるように、当該接続関係を設定する。
多ビットレジスタ部101は、更に、図17で示されたモード制御回路150を備えている。モード制御回路150は、複数のフリップフロップ110に対して、上述の信号(TST,TSTB,CK1,CK1B,CK2,CK2B)を供給する。
多ビットレジスタ部101は、更に、カウント対象セレクタ140、カウンタ160及び記憶回路190を備えている。
カウント対象セレクタ140は、複数のフリップフロップ110のそれぞれのFF出力端子FFOUTに接続されている。テストモード時、各フリップフロップ110は、トグル動作あるいは自己発振動作を行っている。その時、カウント対象セレクタ140は、複数のフリップフロップ110のそれぞれから出力される出力データを1つずつ順番にカウンタ160に転送する。つまり、テストモード時、カウント対象セレクタ140は、対象フリップフロップを複数のフリップフロップ110から1つずつ順番に選択し、その対象フリップフロップから出力される出力データをカウンタ160に出力する。対象フリップフロップは、所定期間毎に順番に切り替えられる。
カウンタ160は、カウント対象セレクタ140に接続されている。テストモード時、カウンタ160は、対象フリップフロップから出力された出力データを、カウント対象セレクタ140経由で受け取る。そして、カウンタ160は、受け取った出力データに関して所定期間カウントを行う。つまり、カウンタ160は、所定期間における出力データのトグル回数や発振回数をカウントする。更に、カウンタ160は、当該対象フリップフロップに関して得られたカウント値を示すカウント信号CNTを、制御装置200に出力する。対象フリップフロップは順番に切り替えられるため、カウンタ160は、複数のフリップフロップ110のそれぞれに関するカウント信号CNTを1つずつ順番に制御装置200に出力する。
制御装置200は、例えば、本実施の形態に係る半導体集積回路に接続されたコンピュータである。この制御装置200は、複数のフリップフロップ110のそれぞれに関するカウント信号CNTをカウンタ160から受け取る。そして、制御装置200は、カウント信号CNTで示されるカウント値に基づいて、AC特性が不十分なエラーフリップフロップを検出する。
例えば、トグルモードの場合、カウント値(所定期間におけるトグル回数)が期待値に満たないフリップフロップ110は、ラッチ動作を正常に行っていないエラーフリップフロップである。従って、制御装置200は、カウント値と期待値とを比較することによって、当該フリップフロップ110がエラーフリップフロップか否かを判定することができる。これにより、ラッチ特性の劣ったエラーフリップフロップを検出することが可能である。
また、自己発振モードの場合、制御装置200は、所定期間におけるカウント値に基づいて、自己発振周波数を計算することができる。その自己発振周波数が期待値に満たないフリップフロップ110は、遅延特性の劣ったエラーフリップフロップである。従って、制御装置200は、自己発振周波数と期待値とを比較することによって、当該フリップフロップ110がエラーフリップフロップか否かを判定することができる。これにより、遅延特性の劣ったエラーフリップフロップを検出することが可能である。
このように、制御装置200は、AC特性エラーが発生したエラーフリップフロップを検出する。検出されたエラーフリップフロップの数が“冗長度R”以下であれば、そのエラーフリップフロップを冗長フリップフロップ110−rによって置換可能である。制御装置200は、検出されたエラーフリップフロップの代わりに冗長フリップフロップ110−rが選択フリップフロップに組み込まれるように、再構成情報RECONを作成する。すなわち、制御装置200は、検出されたエラーフリップフロップがN個の選択フリップフロップから除外されるように再構成情報RECONを作成する。
その後、制御装置200は、作成した再構成情報RECONを、多ビットレジスタ部101の記憶回路190に格納する。記憶回路190は、好適には、多ビットレジスタ部101毎に個別に設けられる。そのような記憶回路190として、例えば、フリップフロップやeヒューズが用いられる。
記憶回路190に格納された再構成情報RECONは、テストモード終了後の所定のタイミングにおいて、セレクタ部120、130に出力(反映)される。その結果、テストモードにおいて検出されたエラーフリップフロップはN個の選択フリップフロップから除外され、その代わりに、冗長フリップフロップ10−rが適宜選択フリップフロップに組み込まれる。この処理が「再構成処理」である。
以上に説明されたように、本実施の形態によれば、フリップフロップ110がトグルモード及び自己発振モードをサポートしている。そのようなフリップフロップ110を利用することによって、ラッチ特性や遅延特性といったAC特性が十分でないエラーフリップフロップを“効率的”に検出することができる。また、再構成処理によって、AC特性の劣るエラーフリップフロップが排除されるため、多ビットレジスタ部1の速度特性が改善される。
以下、具体例を説明する。
図21は、本実施の形態に係る半導体集積回路の多ビットレジスタ部101の回路構成の一例を示している。本例では、N=8、冗長度R=1である。多ビットレジスタ部101の入力端子IN−8〜IN−1には、8ビットの入力データIN[7:0]が入力される。多ビットレジスタ部101の出力端子OUT−8〜OUT−1からは、8ビットの出力データOUT[7:0]が出力される。図21に示されるように、多ビットレジスタ部101は、複数のフリップフロップ110(110−1〜110−8、110−r1)、入力セレクタ部120、出力セレクタ部130、カウント対象セレクタ140、モード制御回路150、及びカウンタ160を備えている。
入力セレクタ部120は、N+1個の入力セレクタ121−1〜121−9を備えている。入力セレクタ121−k(k=1〜8)は、入力セレクト信号SLi[k−1]に応じて、入力データIN[k−1]あるいは下位ビット側の入力データIN[k−2]のいずれか一方を選択し、選択データをフリップフロップ110−kのFF入力端子FFINに出力する。但し、入力セレクタ121−1の場合、下位ビット側の入力データは固定データであるとする。入力セレクタ121−9は、入力セレクト信号SLi[8]に応じて、固定データあるいは入力データIN[7]のいずれか一方を選択し、選択データを冗長フリップフロップ110−r1のFF入力端子FFINに出力する。尚、9ビットの入力セレクト信号SLi[8:0]は、再構成情報RECONに相当する。
出力セレクタ部130は、N個の出力セレクタ131−1〜131−8を備えている。出力セレクタ131−k(k=1〜8)は、出力セレクト信号SLo[k−1]に応じて、フリップフロップ110−kの出力データあるいは上位ビット側のフリップフロップ110−(k+1)の出力データのいずれかを選択し、選択データを出力データOUT[k−1]として出力する。但し、出力セレクタ131−8の場合、上位ビット側のフリップフロップは、冗長フリップフロップ110−r1であるとする。尚、8ビットの出力セレクト信号SLo[7:0]も、再構成情報RECONに相当する。
図22は、再構成情報RECON(SLi、SLo)の一例を示している。リセット状態において、入力セレクト信号SLiは全て“0”であり、出力セレクト信号SLoは全て“1”である。テストモードにおいて、フリップフロップ110−4がエラーフリップフロップとして検出されたとする。その場合、図22に示されるように、入力セレクト信号SLi[8:3]は“1”に変更され、出力セレクト信号SLo[7:3]は“0”に変更される。変更後の入力セレクト信号SLi及び出力セレクト信号SLoは、所定のタイミングで、入力セレクタ部120及び出力セレクタ部130に出力(反映)され、再構成処理が実施される。
図23は、再構成処理後のデータの流れを示している。入力セレクト信号SLi=“0”を受け取る入力セレクタ121−1〜121−3は、それぞれ、入力データIN[0]〜IN[2]を選択し、出力する。一方、入力セレクト信号SLi=“1”を受け取る入力セレクタ121−4〜121−9は、それぞれ、下位ビット側の入力データIN[2]〜IN[7]を選択し、出力する。また、出力セレクト信号SLo=“1”を受け取る出力セレクタ131−1〜131−3は、それぞれ、フリップフロップ110−1〜110−3の出力データを選択し、出力する。一方、出力セレクト信号SLo=“0”を受け取る出力セレクタ131−4〜131−8は、それぞれ、上位ビット側のフリップフロップ110−5〜110−8、110−r1の出力データを選択し、出力する。その結果、図23に示されるように、入力データIN[7:0]は、エラーフリップフロップ110−4を介することなく、選択フリップフロップ(110−1〜110−3、110−5〜110−8、110−r1)によって、出力データOUT[7:0]として出力されることになる。
2−3.変形例
次に、第2の実施の形態の変形例を説明する。本変形例においても、対象フリップフロップは、複数のフリップフロップ110から1つずつ順番に選択される。但し、対象フリップフロップ以外のフリップフロップ110が、カウンタとして有効利用される。
図24は、本変形例に係る多ビットレジスタ部101の回路構成例を示している。既出の図21で示された構成と比較して、カウント対象セレクタ140及びカウンタ160が省略されている。その代わり、各フリップフロップ110に対するクロック入力を切り替えるためのクロックセレクタ部170が追加されている。
クロックセレクタ部170は、クロックセレクタ171−1〜171−9を備えている。クロックセレクタ171−k(k=1〜8)は、クロックセレクト信号SLt[k−1]に応じて、モード制御回路150からの信号あるいは上位ビット側のフリップフロップ110−(k+1)からの出力信号のいずれか一方を選択し、選択信号をフリップフロップ110−kのクロック入力端子に出力する。但し、クロックセレクタ171−8の場合、上位ビット側のフリップフロップは冗長フリップフロップ110−r1であるとする。クロックセレクタ171−9は、クロックセレクト信号SLt[8]に応じて、モード制御回路150からの信号あるいはフリップフロップ110−1からの出力信号のいずれか一方を選択し、選択信号を冗長フリップフロップ110−r1のクロック入力端子に出力する。
また、スキャンチェーンを構成するために、スキャンセレクタ部180が設けられている。スキャンセレクタ部180は、スキャンセレクタ181−1〜181−9を備えている。スキャンセレクタ181−k(k=1〜9)は、スキャン信号SCANBに応じて、入力セレクタ部120からのデータあるいは上位ビット側のフリップフロップ110−(k+1)からの出力データのいずれか一方を選択し、選択データをフリップフロップ110−kに出力する。スキャンモードにおいて、スキャン信号SCANBは“0”に設定される。この場合、各スキャンセレクタ181は、上位ビット側のフリップフロップ110−(k+1)からの出力データをフリップフロップ110−kに出力する。
図25は、テストモード時のデータの流れを示している。例として、フリップフロップ110−6が対象フリップフロップである場合を考える。クロックセレクタ171−6には、クロックセレクト信号SLt[5]=“1”が入力される。この場合、クロックセレクタ171−6は、モード制御回路150からの信号を選択し、それを対象フリップフロップ110−6のクロック入力端子に出力する。その結果、対象フリップフロップ110−6はトグル動作あるいは自己発振動作を行う。
クロックセレクタ171−6以外のクロックセレクタ171には、クロックセレクト信号SLt=“0”が入力される。これにより、クロックセレクタ171−m(m=1〜5、7〜8)は、上位ビット側のフリップフロップ110−(m+1)からの出力信号を選択し、それをフリップフロップ110−mのクロック入力端子に出力する。また、クロックセレクタ171−9は、フリップフロップ110−1からの出力信号を選択し、それを冗長フリップフロップ110−r1のクロック入力端子に出力する。
このように、テストモード時、トグル動作あるいは自己発振動作を行う対象フリップフロップ110−6を先頭として、複数のフリップフロップ110が順番に接続される。そして、対象フリップフロップ110−6以外のフリップフロップ110の各々のクロック入力端子には、前段のフリップフロップからの出力データが入力される。従って、対象フリップフロップ110−6以外のフリップフロップ110が、2進カウンタとして機能する。
2進カウンタによって計数されたカウント値(カウント信号CNT)は、例えば、出力セレクタ部130を通して出力データOUT[7:0]として出力される。あるいは、そのカウント値(カウント信号CNT)は、図26に示されるように、スキャンチェーンを通して外部に出力されてもよい。尚、スキャン時、各フリップフロップ110の動作モードは通常FFモードに設定される。
尚、クロックセレクト信号SLt[8:0]の中で“1”となるビットを順番にシフトさせていくことにより、複数のフリップフロップ110を1つずつ順番に対象フリップフロップに設定することができる。
以上に説明されたように、本変形例によれば、対象フリップフロップ以外のフリップフロップ110がカウンタとして利用される。すなわち、複数のフリップフロップ110が有効活用される。カウンタ160を別途設ける必要がないので、回路面積が削減され、好適である。
2−4.電源電圧適応制御システム
本実施の形態に係る半導体集積回路は、好適には、「極低電力回路」に適用される。極低電力回路では、動作電圧VDDをなるべく低く設定することが要求される。以下、動作電圧VDDを適切に制御する「電源電圧適応制御システム」について説明する。
図27は、本実施の形態に係る電源電圧適応制御システムの構成を示すブロック図である。電源電圧適応制御システムは、制御装置200、対象回路210及び電源回路220を備えている。対象回路210は、電圧制御対象となる半導体集積回路であり、上述の多ビットレジスタ部101を備えている。電源回路220は、少なくともフリップフロップ110の動作電圧VDDを多ビットレジスタ部101に供給する。制御装置200は、対象回路210及び電源回路220に接続されており、それらの動作を制御する。
動作電圧VDDの適応制御方法は、次の通りである。電源回路220が供給する動作電圧VDDは、最初、極低電圧(例えば、0.5V以下)に設定されているとする。まず、制御装置200は、対象回路210に制御信号CONを出力し、AC特性テストを実行させる。多ビットレジスタ部101は、カウント信号CNTを制御装置200に出力する。制御装置200は、受け取ったカウント信号CNTに基づいて再構成情報RECONを作成し、その再構成情報RECONを対象回路210に送る。対象回路210では、最新の再構成情報RECONに基づいて再構成処理が実施される。
但し、全ての冗長フリップフロップ10−r1〜10−rRを用いてもエラーフリップフロップが無くならない場合もあり得る。そのような場合、AC特性エラーの原因となった極低電圧を多少緩和する。そのために、制御装置200は、電源回路220に指示を出し、動作電圧VDDを少しだけ上昇させる。その後、AC特性テストが再度実施される。
このように、本実施の形態によれば、全ての冗長フリップフロップ10−r1〜10−rRを用いてもエラーフリップフロップが無くならない場合、動作電圧VDDが少しだけ増加させられる。これにより、エラーフリップフロップを解消しつつ、動作電圧VDDをなるべく低く設定することが可能となる。その結果、消費電力が必要最小限に抑えられる。
エラーフリップフロップが排除された後に、パス遅延に基づく電源電圧や基板バイアスの適応制御が実施してもよい。AC特性の劣ったエラーフリップフロップが排除されているため、より良い結果が得られる。
尚、本発明の第2の実施の形態で説明された内容は、次のように記載することもできる。
(請求項1)
複数のフリップフロップと、
カウンタと
を備え、
前記複数のフリップフロップの各々は、自身の出力から入力へのフィードバックパスを備え、テストモード時に前記フィードバックパスを利用してトグル動作あるいは自己発振動作を行うように構成され、
前記テストモード時、前記カウンタは、前記トグル動作あるいは前記自己発振動作を行う前記各々のフリップフロップから出力データを受け取り、前記出力データに関して所定期間カウントを行う
半導体集積回路。
(請求項2)
請求項1に記載の半導体集積回路であって、
更に、
N個(Nは1以上の整数)の入力端子と、
N個の出力端子と、
セレクタ部と
を備え、
前記複数のフリップフロップは、N個のフリップフロップとR個(Rは1以上の整数)の冗長フリップフロップとを含み、
前記セレクタ部は、再構成情報に応じて前記複数のフリップフロップの中からN個の選択フリップフロップを選択し、前記N個の入力端子に入力されたデータが前記N個の選択フリップフロップのそれぞれによって前記N個の出力端子に出力されるようにデータの流れを切り替える
半導体集積回路。
(請求項3)
請求項2に記載の半導体集積回路であって、
前記所定期間におけるトグル回数あるいは自己発振周波数が所定値に満たないフリップフロップは、エラーフリップフロップであり、
前記エラーフリップフロップは、前記テストモード時に前記カウンタによって得られたカウント値に基づいて検出され、
前記再構成情報は、前記検出されたエラーフリップフロップが前記N個の選択フリップフロップから除外されるように作成される
半導体集積回路。
(請求項4)
請求項3に記載の半導体集積回路であって、
前記再構成情報は、前記テストモード終了後の所定のタイミングに、前記セレクタ部に出力される
半導体集積回路。
(請求項5)
請求項1乃至4のいずれか一項に記載の半導体集積回路であって、
前記複数のフリップフロップの各々は、
入力ノードと、
第1ラッチ回路と、
前記入力ノードと前記第1ラッチ回路との間に設けられた第1スイッチ回路と、
第2ラッチ回路と、
前記第1ラッチ回路と前記第2ラッチ回路との間に設けられた第2スイッチ回路と、
前記第2ラッチ回路の出力に接続された出力ノードと、
前記テストモード時に活性化される、前記出力ノードから前記入力ノードへの前記フィードバックパスと
を備え、
前記トグル動作時、前記第1スイッチ回路と前記第2スイッチ回路は交互にONし、
前記自己発振動作時、前記第1スイッチ回路と前記第2スイッチ回路は共にON状態に維持される
半導体集積回路。
(請求項6)
請求項1乃至5のいずれか一項に記載の半導体集積回路であって、
更に、カウント対象セレクタを備え、
前記テストモード時、前記カウント対象セレクタは、対象フリップフロップを前記複数のフリップフロップから1つずつ順番に選択し、前記対象フリップフロップから出力される前記出力データを前記カウンタに出力する
半導体集積回路。
(請求項7)
請求項1乃至5のいずれか一項に記載の半導体集積回路であって、
前記テストモード時、カウント対象である対象フリップフロップは、前記複数のフリップフロップから1つずつ順番に選択され、
前記複数のフリップフロップのうち前記対象フリップフロップ以外のフリップフロップが、前記カウンタとして機能する
半導体集積回路。
(請求項8)
請求項7に記載の半導体集積回路であって、
前記テストモード時、
前記対象フリップフロップを先頭として、前記複数のフリップフロップは順番に接続され、
前記対象フリップフロップは、前記トグル動作あるいは前記自己発振動作を行い、
前記対象フリップフロップ以外の前記フリップフロップの各々のクロック入力端子には、前段のフリップフロップからの出力データが入力される
半導体集積回路。
(請求項9)
請求項1乃至8のいずれか一項に記載の半導体集積回路と、
前記複数のフリップフロップの動作電圧を供給する電源回路と、
前記半導体集積回路及び前記電源回路の動作を制御する制御装置と
を備え、
前記R個の冗長フリップフロップを用いても前記エラーフリップフロップが無くならない場合、前記制御装置は、前記動作電圧を上昇させるよう前記電源回路に指示する
電源電圧適応制御システム。
3.第3の実施の形態
本発明の第3の実施の形態は、上述の第1の実施の形態と第2の実施の形態の組み合わせである。図28は、第3の実施の形態における処理を示すフローチャートである。まず、第1の実施の形態で説明されたように、DCエラー検出及び再構成が実施される(ステップS100)。ステップS100の結果、全ての冗長FFが使用されてしまった場合(ステップS150;No)、処理は終了する。一方、ステップS100の後、冗長FFがまだ余っているラインが存在する場合(ステップS150;Yes)、当該ラインに対して、第2の実施の形態で説明されたように、AC特性エラー検出及び再構成が実施される(ステップS200)。DCエラーの発生頻度は少ないと予想されるため、冗長FFを有効活用することが可能である。
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。