<実施の形態1>
図1はこの発明の実施の形態1であるRAM救済機能を有する半導体集積回路の構成を示すブロック図である。
同図に示すように、メモリ回路である3つのRAM101,102,及び103に対応してブリッジ回路301,302,及び303を接続している。RAM101〜103はそれぞれチップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]、及びデータ入力Din[*]を有している。なお、本明細書中において、複数ビット構成の信号Xを単にX[*]と標記する場合がある。
また、RAM101は6ビットのデータ出力(出力Dout[0]〜Dout[5])を有し、RAM102は12ビットのデータ出力(出力Dout[0]〜Dout[11])を有し、RAM103は8ビットのデータ出力(出力Dout[0]〜Dout[7])を有している。
ブリッジ回路301は、モードセレクタ211、比較器221及び結果ラッチ201(結果ラッチ部)から構成され、ブリッジ回路302はモードセレクタ212、比較器222及び結果ラッチ202から構成され、ブリッジ回路303はモードセレクタ213、比較器223及び結果ラッチ203から構成される。ブリッジ回路301〜303の比較器221〜223はRAM101〜103のデータ出力ビット数に対応した比較能力を有している。同様に、結果ラッチ201〜203は比較器221〜223のビット数に対応したラッチ能力を有している。
ブリッジ回路301〜303間において、結果ラッチ201〜203は直列に接続され、結果ラッチ201〜203内の格納データは、結果ラッチ203からのスキャンパス信号SP3(救済解析用スキャンパス信号)として順次シリアル出力することができる。すなわち、結果ラッチ201〜203に格納されたラッチデータ群はスキャンパス信号SP3として検出することができる。
救済解析回路150はスキャンパス信号SP3に基づき後に詳述する救済解析動作を行い、救済解析情報IRをテスト制御回路であるBIST制御回路110に出力する。また、救済解析情報IRはテスタ等の外部装置からも認識可能なように外部にも出力される。
パターン発生回路120はRAM101〜103に対するテストパターン(アドレス信号bist_ad[*]、チップイネーブル信号bist_ce、書き込みデータbist_din[*]、期待値cd[*]、比較イネーブルcomp_enを含む)を発生する。なお、図1に示すように、パターン発生回路120はRAM101〜103間で共有して用いてもよいし、一点鎖線で示したように、RAM101〜103に1対1に対応するようにパターン発生回路121〜123を設けてもよい。
BIST制御回路110は1つ(パターン発生回路120)又は複数のパターン発生器(パターン発生回路121〜123)を制御する。また、BIST制御回路110は一の救済解析回路150を制御する。なお、図1で示すような複数のRAM101〜103とこれらに対応する救済解析回路150との関係が複数存在する場合、セレクタ群111は、複数存在する救済解析回路150相当の回路を1つのBIST制御回路110によって制御することができる。なお、BIST制御回路110自身が出力する制御信号として後述するシフト動作信号br_shift、モードセレクタ制御信号selmi等がある。
また、BIST制御回路110は救済解析回路150を直接制御しても良く、パターン発生回路120を介して間接的に救済解析回路150を制御することも可能である。
図2はブリッジ回路301の内部構成の詳細を示す回路図である。以下、同図を参照してブリッジ回路301を構成するモードセレクタ211、比較器221及び結果ラッチ201の詳細について説明する。
モードセレクタ211はセレクタSL1〜SL4から構成される。セレクタSL1は“1”入力にチップイネーブル信号bist_ceを受け、“0”入力にチップイネーブル信号sys_ceを受ける。セレクタSL2は“1”入力にライトイネーブル信号bist_weを受け、“0”入力にライトイネーブル信号sys_weを受ける。セレクタSL3は“1”入力にアドレス信号bist_ad[*]を受け、“0”入力にアドレス信号sys_ad[*]を受ける。セレクタSL4は“1”入力に書き込みデータbist_din[*]を受け、“0”入力に書き込みデータsys_din[*]を受ける。
このように、セレクタSL1〜SL4は、パターン発生回路120からのテスト用信号を受け、“0”入力に通常動作用の信号を受ける。
そして、セレクタSL1〜SL4はモードセレクタ制御信号selmiがテストモードを指示する“1”のとき、セレクタSL1〜SL4の“1”入力より得られたチップイネーブル信号bist_ce、ライトイネーブル信号bist_we、アドレス信号bist_ad[*]及び書き込みデータbist_din[*]を選択する。その結果、RAM101のチップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]に出力する。
一方、セレクタSL1〜SL4はモードセレクタ制御信号selmiがシステムモードを指示する“0”のとき、セレクタSL1〜SL4の“0”入力より得られたチップイネーブル信号sys_ce、ライトイネーブル信号sys_we、アドレス信号sys_ad[*]及び書き込みデータsys_din[*]を選択する。その結果、RAM101のチップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]に出力する。
比較器221は6ビットのデータ出力Dout[0]〜Dout[5]に対応すべく、6個のEXORゲートEX10〜EX15及び6個のANDゲートAG10〜AG15から構成される。
すなわち、EXORゲートEX10〜EX15は一方入力にデータ出力Dout[0]〜Dout[5]を受ける。そして、EXORゲートEX10,EX12,及びEXM14は他方入力に期待値cd[0]を受け、EXORゲートEX11,EX13,及びEXM15は他方入力に期待値cd[1]を受ける。なお、期待値cd[0]〜cd[1]はパターン発生回路120から発生される。
ANDゲートAG10〜AG15は一方入力にEXORゲートEX10〜EX15の出力を受け、他方入力に比較イネーブル信号comp_enを共通に受ける。これらANDゲートAG10〜AG15の出力が比較器221の比較結果となる。なお、比較イネーブル信号comp_enはパターン発生回路120から出力される。
このような構成の比較器221は、比較イネーブル信号comp_enが“1”(“H”)のとき、活性状態となり、データ出力Dout[0]〜Dout[5]と期待値cd[0]あるいはcd[1]との比較結果(一致したとき“0”,不一致(故障発生)のとき“1”)をANDゲートAG10〜AG15の出力として得る。
結果ラッチ201は6ビットの比較結果に対応すべく、6個のORゲートOG10〜OG15、6個のセレクタSL10〜SL15、及び6個のフリップフロップFF100〜FF105から構成される。
ORゲートOG10〜OG15は一方入力にANDゲートAG10〜AG15の出力を受ける。ORゲートOG10〜OG15の出力がセレクタSL10〜SL15“0”入力に付与され、セレクタSL10〜SL15の出力がフリップフロップFF100〜FF105のデータ入力部に付与される。セレクタSL10〜SL15は制御信号としてシフト動作信号br_shiftを共通に受ける。そして、セレクタSL10〜SL15は、シフト動作信号br_shiftが“1”(“H”)のとき“1”入力の信号を出力し、“0”(“L”)のとき“0”入力の信号を出力する。
フリップフロップFF100〜FF105の出力がORゲートOG10〜OG15の他方入力として帰還する。さらに、フリップフロップFF101〜FF105の出力がセレクタSL10〜SL14の“1”入力に帰還する。
また、セレクタSL15の“1”入力にはシフト入力信号br_sinが入力され、フリップフロップFF100の出力がシフト出力信号br_soutをして外部に出力される。なお、シフト動作信号br_shift及びシフト出力信号br_soutはBIST制御回路110から出力される。
このような構成の結果ラッチ201は、シフト動作信号br_shiftが“0”の時は、比較器221からの比較結果(ANDゲートAG10〜AG15の出力)をフリップフロップFF100〜FF105にラッチする。すなわち、ANDゲートAG1i(i=0〜5)の出力が一度でも“1”となれば、フリップフロップFF10iに“1”(故障ビット)がラッチされる。なお、フリップフロップFF100〜FF105はラッチ開始時に“0”に初期化する必要がある。このように、フリップフロップFF100〜FF105は対応する比較器221Jからの比較結果をラッチデータ群として格納する。
一方、結果ラッチ201は、シフト動作信号br_shiftが“1”の時は、直列に接続されたフリップフロップFF100〜FF105間でシフト入力信号br_sinの直列シフト動作を行う。すなわち、フリップフロップFF105にはシフト入力信号br_sinが入力され、フリップフロップFF100〜FF104にはフリップフロップFF101〜FF105の出力が入力され、フリップフロップFF100の出力がシフト出力信号br_soutとし出力される。このように、結果ラッチ201は、シフト動作信号br_shiftが“1”のとき、フリップフロップFF105〜FF100のラッチデータをフリップフロップFF100〜FF105間で順次シフトさせ、最終的にフリップフロップFF100からシフト出力信号br_soutとして出力させるという、直列シフト動作を行う。
なお、この直列シフト動作を利用して、シフト入力信号br_sinに“0”を連続的に入力することにより、フリップフロップFF100〜FF105を“0”に初期化することができる。また、フリップフロップFF105が非同期リセット機能、あるいは同期リセット機能を有する場合、リセットさせることによりフリップフロップFF100〜FF105を“0”に初期化することも可能である。
なお、ブリッジ回路302の内部構成も図2で示したブリッジ回路301と同様である。すなわち、ブリッジ回路302のモードセレクタ212、比較器222及び結果ラッチ202は、ブリッジ回路301のモードセレクタ211、比較器221及び結果ラッチ201と同様な構成を呈する。ただし、比較器222及び結果ラッチ202はRAM102のデータ出力Dout[0]〜Dout[11]に対応可能に12ビットで構成される。
また、ブリッジ回路303の内部構成も図2で示したブリッジ回路301と同様である。すなわち、ブリッジ回路303のモードセレクタ213、比較器223及び結果ラッチ203は、ブリッジ回路301のモードセレクタ211、比較器221及び結果ラッチ201と同様な構成を呈する。ただし、比較器223及び結果ラッチ203はRAM103のデータ出力Dout[0]〜Dout[7]に対応可能に8ビットで構成される。
図3は、図1で示した救済解析回路150の内部構成の具体例を示す回路図である。図4は実施の形態1の半導体集積回路において、救済解析回路150、ブリッジ回路301〜303、RAM101〜103及び救済デコーダ131〜133の詳細を示す説明図である。
図4に示すように、救済解析回路150は、結果ラッチ203のスキャンパス信号SP3をシリアル入力信号sin_encとして受け、BIST制御回路110からスキャンパス無効指示信号である有効ビット情報bitcount_en及びリセット信号reset_encを含む制御信号を入力する。そして、救済解析回路150は、上記制御信号に従いシリアル入力信号sin_encに基づき救済解析動作を行うことにより、故障情報rei、マルチフェイル信号multifail、救済情報rai[k−1:0]及び故障検出予告信号fail_noticeからなる救済解析情報IRをBIST制御回路110及び外部に出力する。
図3に示すように、救済解析回路150は、マルチフェイル回路152及びシーケンシャルエンコーダ回路153から構成される。
マルチフェイル回路152は、ANDゲートAG21〜AG24、ORゲートOG21,OG22及びフリップフロップFF21,FF22から構成される。
ANDゲートAG21は一方入力にシリアル入力信号sin_encを受け、他方入力に有効ビット情報bitcount_enを受ける。ORゲートOG21は一方入力にANDゲートAG21の出力を受ける。このORゲートOG21の出力が故障検出予告信号fail_noticeとして出力される。
ANDゲートAG22は一方入力にORゲートOG21の出力(故障検出予告信号fail_notice)を受け、他方入力にリセット信号reset_encの反転信号を受ける。フリップフロップFF21は入力部にANDゲートAG22の出力を受け、その出力が故障情報reiとして出力される。また、故障情報reiはORゲートOG21の他方入力として帰還する。
ANDゲートAG23は一方入力に故障情報reiを受け、他方入力にANDゲートAG21の出力を受ける。ORゲートOG22は一方入力にANDゲートAG23の出力を受ける。ANDゲートAG24は一方入力にORゲートOG22の出力を受け、他方入力にリセット信号reset_encの反転信号を受ける。フリップフロップFF22は入力部にANDゲートAG24の出力を受け、その出力がマルチフェイル信号multifailとして出力される。また、マルチフェイル信号multifailはORゲートOG22の他方入力として帰還する。
このような構成のマルチフェイル回路152は、後に詳述するように、シリアル入力信号sin_encのうち、有効ビット情報(bitcount_en=1の時のシリアル入力信号sin_enc)を解析し、1個(1ビット)以上の故障の有無を故障情報reiとして出力し、2個(2ビット)以上の故障の有無をマルチフェイル信号multifailとして出力する。また、最初に故障が検出されると、“1”を指示する故障検出予告信号fail_noticeを出力する。
シーケンシャルエンコーダ回路153は、ANDゲートAG25,AG26,インクリメントアダー154、セレクタSL21、カウント用フリップフロップ群zerocnt_ff[k-1:0]から構成される。
ANDゲートAG25は一方入力に故障検出予告信号fail_noticeの反転信号を受け、他方入力に有効ビット情報bitcount_enを受ける。このANDゲートAG25の出力がカウント制御信号count_upとなる。
インクリメントアダー154はカウント用フリップフロップ群zerocnt_ff[k-1:0]のkビット出力CTkを“1”カウントアップ(インクリメント)し、カウントアップ出力値V154を出力する。セレクタSL21は“1”入力にカウントアップ出力値V154を受け、“0”入力にkビット出力CTkを受け、制御入力にカウント制御信号count_upを受ける。そして、セレクタSL21はカウント制御信号count_upが“1”のときカウントアップ出力値V154を出力し、“0”のときkビット出力CTkを出力する。
ANDゲートAG26は一方入力にリセット信号reset_encの反転信号受け、他方入力にセレクタSL21の出力を受ける。なお、ANDゲートAG26は説明の都合上、一単位のみ図示しているが、実際にはkビット出力CTk及びカウントアップ出力値V154に対応すべく、kビットのセレクタSL21の出力に対するAND演算が可能に構成される。
カウント用フリップフロップ群zerocnt_ff[k-1:0]はk個のフリップフロップの並列接続により構成され、ANDゲートAG26のkビット出力をラッチする。そして、カウント用フリップフロップ群zerocnt_ff[k-1:0]の最終的なkビット出力CTkが救済情報rai[k−1:0]として外部に出力される。
このような構成のシーケンシャルエンコーダ回路153は、後に詳述するように、シリアル入力信号sin_encのうち、有効ビット(bitcount_en=1の時)情報を解析し、故障ビット位置を示す救済情報rai[k−1:0]から出力する。
また、マルチフェイル回路152及びシーケンシャルエンコーダ回路153はリセット信号reset_encによりリセットされる。リセット信号reset_encが“1”のとき、マルチフェイル回路152のANDゲートAG22及びAG24の出力並びにシーケンシャルエンコーダ回路153のANDゲートAG26の出力が“0”となる。その結果、次のクロックで故障情報rei、マルチフェイル信号multifail及び救済情報rai[k−1:0]の値は全て“0”リセットされる。
BIST制御回路110はブリッジ回路301〜303、パターン発生回路120、救済解析回路150を制御してRAM101〜103の故障救済テストを行い、救済解析回路150から救済解析情報IRを生成させる。
以下に、BIST制御回路110の制御下で行うRAM101〜103の救済テストの動作を説明する。
(1)結果ラッチ201〜203内の初期化を行う。例えば、結果ラッチ201に対してフリップフロップFF100〜FF105の値を“0”に初期化する。
(2)パターン発生回路120によるテストパターン発生を開始させる。
(3)パターン発生回路120によるテストパターン発生期間中において、比較器221〜223は、期待値cd[*]とRAM101〜103のデータ出力Dout[*]とを比較して故障検出動作を行う。この際、シフト動作信号br_shiftを“0”にして、比較器221〜223で検出された比較結果を結果ラッチ201〜203にラッチ動作を行わせ、ラッチデータ群としてラッチさせる。
以下、ブリッジ回路301の比較器221及び結果ラッチ201を例に挙げて説明する。データ出力Dout[0]〜Dout[5]のいずれかに故障ビット(対応する期待値cd[*]と異なる値を出力したビット)が見つかれば、故障個所のデータ出力Dout[*]に対応する比較器221の出力が“1”となる。仮にデータ出力Dout[3]が故障ビットであったとすると、ANDゲートAG13の出力が“1”となる。その結果、結果ラッチ201のフリップフロップFF100〜FF105のうちフリップフロップFF103に“1”がラッチされる。
(4)テストパターンの発生期間中に行われる比較器221〜223及び結果ラッチ201〜203による故障検出動作了後、結果ラッチ201〜203内のフリップフロップ内のテスト結果(ラッチデータ群)を読み出す。この際、シフト動作信号br_shiftを“1”にして結果ラッチ201〜203に直列シフト動作を行わせる。その結果、結果ラッチ201〜203内の3つのラッチデータ群の内容がスキャンパス信号SP3としてシリアルに出力される。
以下、ブリッジ回路301の結果ラッチ201を例に挙げて説明する。フリップフロップFF100〜FF105に直列シフト動作を行わせることにより、シフト出力信号br_soutとしてフリップフロップFF100〜FF105内のラッチデータの値をシリアルに次段の出力することができる。
この際、図4に示すように、結果ラッチ201のシフト出力信号br_soutを結果ラッチ202のシフト入力信号br_sinとし、結果ラッチ202のシフト出力信号br_soutを結果ラッチ203のシフト入力信号br_sinとする。その結果、結果ラッチ201〜203内のラッチデータ群の値を結果ラッチ203のシフト出力信号br_sout、すなわち、スキャンパス信号SP3としてシリアルに得ることができる。
(5)直列シフト動作により、結果ラッチ201〜203内の3つのラッチデータ群の値をスキャンパス信号SP3として得ると、救済解析回路150は、後に詳述する内容で、救済情報rai[k−1:0]、故障情報rei、マルチフェイル信号multifail及び故障検出予告信号fail_noticeからなる救済解析情報IRを生成する。
図1で示した構成では、RAM101が6ビット、RAM102が12ビット、RAM103が8ビットのデータ出力Dout[*]を有する場合を示しており、合計で26ビットになる。
図4に示すように、最大ビット数12のデータ出力Dout[0]〜Dout[11]のRAM102に対応するため、救済解析回路150のビット数はk=4のものを用いる。図4に示すように、RAM101〜103はそれぞれ予備メモリ列RMC(冗長メモリ部)を有している。
RAM101〜103の救済は救済デコーダ131〜133に救済制御信号(rai1[*],ren1, rai2[*],ren2, rai3[*],ren3)を与えることにより行う。これら救済制御信号は第1〜第3の部分救済制御信号に分類される。すなわち、第1の部分救済制御信号はRAM101用の救済情報rai1[*],救済イネーブル信号ren1となる。また、第2の部分救済制御信号はRAM102用の救済情報rai2[*],救済イネーブル信号ren2となり、第3の部分救済制御信号はRAM103用の救済情報rai3[*],救済イネーブル信号ren3となる。
なお、後に詳述するが、救済情報rai1[*]〜rai3[*]は、救済解析回路150より観測タイミングt11〜t13で得たRAM101〜103に対応するカウント用フリップフロップ群zerocnt_ff[k-1:0](kビット出力CTk)の値に相当する。また、救済イネーブル信号ren1〜ren3は救済解析回路150より観測タイミングt11〜t13で得たRAM101〜103に対応する救済イネーブル信号reiに相当する。
なお、救済イネーブル信号ren1〜ren3は、それぞれ“1”で救済有効、“0”で救済無効を指示する。救済情報rai1[*]〜rai3[*]はRAM101〜103の救済すべきビット(メモリ列C[*]の位置)を示している。救済デコーダ131〜133は上記第1〜第3の部分救済制御信号に基づきセレクタ群111〜113を制御して故障救済を行う。なお、セレクタ群111〜113はそれぞれデータ出力ビット数+“1”のセレクタSL20から構成される。
以下、救済デコーダ133を例に挙げて説明する。救済デコーダ133により制御されるセレクタ群113は、8個のセレクタSL20から構成される。各セレクタSL20は隣接するメモリ列C[0],C[1]、C[1],C[2]、…C[6],C[7]及びC[7],RMCのいずれかの組を入力し、救済デコーダ133の制御下で一方を有効にして、データ出力Dout[0]〜Dout[7]として出力する。
第3の部分救済制御信号において、救済イネーブル信号ren3が“1”であり、救済情報rai3[*]が“0010”(2)を指示するとき、メモリ列C[2]を無効にし、予備メモリ列RMCを用いるように救済デコーダ133はセレクタ群113を制御する。具体的には、メモリ列C[0],C[1]の出力をデータ出力Dout[0],Dout[1]として出力し、メモリ列C[3]〜C[7]の出力をデータ出力Dout[2]〜Dout[6]として出力し、予備メモリ列RMCの出力をデータ出力Dout[7]として出力するように、セレクタ群113を制御する。
図4に示すように、上記第1〜第3の部分救済制御信号がRAM101〜103間で独立している場合は、救済デコーダ131〜133がRAM101〜103に対する救済制御を行う必要がある。
なお、図4で示した構成では、結果ラッチ201〜203それぞれのシフトパスの前後(シリアル入力部,シリアル出力部)に救済解析に無関係な1ビットのダミービットd1,d2を格納可能なダミーラッチ部231a〜233a及び231b〜233bを有している。
結果ラッチ201を例に挙げれば、有効ビットb[5]にシフト入力信号br_sin側にダミーラッチ部231bを設け、有効ビットb[0]のシフト出力信号br_sout側にダミーラッチ部231aを設けている。なお、有効ビットb[0]〜b[5]はフリップフロップFF100〜FF105の内のラッチデータを意味する。
ダミーラッチ部231a,231bは、セレクタSL1i(i=0〜5のいずれか)及びフリップフロップFF10iと等価に構成することにより実現することができる。また、特許文献1の図2等において示されたフリップフロップ(FF1,FF2,FF20)のように他の信号処理に用いられている回路部分を転用して実現することも考えられる。なお、ダミーラッチ部231a〜233a及び231b〜233bは必要不可欠なものではなく、結果ラッチ201〜203間を直結しても良い。
前述したように、結果ラッチ201〜203によるラッチ動作、直列シフト動作、救済解析回路150による救済動作を実行させるための、制御信号(reset_enc,bitcount_en,br_shift)はBIST制御回路110から出力される。
図5〜図7は救済解析回路150による故障解析動作を示す波形図である。図5はRAM101〜103のいずれにも故障がない場合、図6はRAM101〜103それぞれにおいて1ビットの故障が発生した場合、図7はRAM101〜103それぞれにおいて2ビットの故障が生じた場合を示している。なお、図5〜図7で示す動作は、図4に示すように、結果ラッチ201〜203のシリアル入出力部にダミーラッチ部231a,231b〜231a,233bが設けられた構成を前提としている。
また、図2〜図4には図示しないが、救済解析回路150あるいは結果ラッチ201内のフリップフロップ等はクロックCLKに同期して動作する。例えば、フリップフロップFF21,FF22はクロックCLKの立ち上がりエッジに同期してデータ入力を取り込む。なお、説明の都合上、図5〜図7それぞれにおいて、クロックCLKの1周期毎にクロックNo.0〜36を示した。
まず、図5を参照して、救済解析回路150による救済解析動作を説明する。クロックNo.2〜3にかけてリセット信号reset_encの“H”パルスが発生する。すると、マルチフェイル回路152のANDゲートAG22,AG24の出力が“0”になりフリップフロップFF21,FF22が“0”に初期化される。同様にして、シーケンシャルエンコーダ回路153のANDゲートAG26の出力が“0”となり、カウント用フリップフロップ群zerocnt_ff[k-1:0]のkビット出力CTk(zerocnt_ff)が“0”に初期化される。
したがって、救済イネーブル信号rei、故障検出予告信号fail_notice及びマルチフェイル信号multifailは“0”に初期化される。
クロックCLKのクロックNo.3の期間中にシフト動作信号br_shiftが“1”となり、結果ラッチ201〜203及びダミーラッチ部231a,231b〜233a,233b内のフリップフロップ(フリップフロップFF100〜FF105等)による直列シフト動作が開始される。その結果、ブリッジ回路303のダミービットd1の内容を指示するスキャンパス信号SP3がシリアル入力信号sin_encとして救済解析回路150に取り込まれる。このとき、有効ビット情報bitcount_enが“0”ため、救済解析回路150はシリアル入力信号sin_encを無効ビットと判断し、無視する。
クロックCLKのクロックNo.4の期間中に、ブリッジ回路303の有効ビットb[0]の内容を指示するスキャンパス信号SP3がシリアル入力信号sin_encとして救済解析回路150に取り込まれる。このとき、有効ビット情報bitcount_enが“1”に変化するため、救済解析回路150はシリアル入力信号sin_encを有効ビットと判断し、カウント制御信号count_upが“1”となり、カウントアップ動作が有効となる。すなわち、インクリメントアダー154はkビット出力CTkに対しカウントアップ動作を行って得られる“1”を指示するカウントアップ出力値V154がセレクタSL21及びANDゲートAG26を介してカウント用フリップフロップ群zerocnt_ff[k-1:0]に出力される。
クロックCLKのクロックNo.5の期間中に“1”を指示するカウントアップ出力値V154がカウント用フリップフロップ群zerocnt_ff[k-1:0]に取り込まれ、kビット出力CTkが“1”にカウントアップする。
以降、クロックCLKのクロックNo.5〜No.11にかけて、kビット出力CTkがカウントアップする。RAM103には故障ビットが存在しないため、シリアル入力信号sin_encは“0”を維持する。
そして、クロックCLKのクロックNo.12の立ち上がりエッジに設定された観測タイミングt11で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTkを観測する。その結果、救済イネーブル信号reiが“0”のため、RAM103には故障ビットが存在しないことを認識することができる。このように、観測タイミングt11で観測した故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTkが救済解析情報IR内の一部であるRAM103についての第3の部分救済解析情報となる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第3の部分救済解析情報の救済イネーブル信号reiに基づき、救済イネーブル信号ren3として“0”(無効)を決定することができる。この場合、救済情報rai3[*]は任意で良い。
その後、結果ラッチ203のデータラッチ群と結果ラッチ202のデータラッチ群との切り替わりのダミービットd2,d1の発生期間中であるクロックCLKのクロックNo.12〜13にかけてリセット信号reset_encの“H”パルスが発生する。すると、マルチフェイル回路152のフリップフロップFF21,FF22が“0”に初期化され、カウント用フリップフロップ群zerocnt_ff[k-1:0]のkビット出力CTkが“0”に初期化される。
したがって、救済イネーブル信号rei、故障検出予告信号fail_notice及びマルチフェイル信号multifailは“0”に再び初期化される。
クロックCLKのクロックNo.12〜13の期間もシフト動作信号br_shiftは“1”を維持するが、有効ビット情報bitcount_enが“0”と無効を指示する。したがって、クロックCLKのクロックNo.12〜13の期間において、ブリッジ回路303のダミービットd2及びブリッジ回路302のダミービットd1がシリアル入力信号sin_encとして入力されるが、救済解析回路150の動作に支障は生じない。
クロックCLKのクロックNo.14の期間中に、ブリッジ回路302の有効ビットb[0]の内容を指示するスキャンパス信号SP3がシリアル入力信号sin_encとして救済解析回路150に取り込まれる。このとき、有効ビット情報bitcount_enが“1”に回復するため、救済解析回路150はシリアル入力信号sin_encを有効ビットと判断し、カウント制御信号count_upが“1”となり、カウントアップ動作が有効となる。
クロックCLKのクロックNo.15の期間中に“1”を指示するカウントアップ出力値V154がカウント用フリップフロップ群zerocnt_ff[k-1:0]に取り込まれ、kビット出力CTkが“1”にカウントアップする。
以降、クロックCLKのクロックNo.16〜No.25にかけて、kビット出力CTkがカウントアップする。RAM102には個故障ビットが存在しないため、シリアル入力信号sin_encは“0”を維持する。
そして、クロックCLKのクロックNo.26の立ち上がりエッジ設定された観測タイミングt12で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第2の部分救済解析情報)を観測する。その結果、救済イネーブル信号reiが“0”のため、RAM102には故障ビットが存在しないことを認識することができる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第2の部分救済解析情報の救済イネーブル信号reiに基づき、救済イネーブル信号ren2として“0”(無効)を決定することができる。この場合、救済情報rai2[*]は任意で良い。
以下、同様にして、クロックCLKのクロックNo.27〜33間において、RAM101の故障ビット検出が行われる。
そして、クロックCLKのクロックNo.34の立ち上がりエッジ設定された観測タイミングt13で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第1の部分救済解析情報)を観測する。その結果、救済イネーブル信号reiが“0”のため、RAM101には故障ビットが存在しないことを認識することができる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第1の部分救済解析情報の救済イネーブル信号reiに基づき、救済イネーブル信号ren1として“0”(無効)を決定することができる。この場合、救済情報rai1[*]は任意で良い。
次に、図6を参照して、救済解析回路150による救済解析動作を説明する。なお、説明の都合上、図5で説明した動作内容と同様な動作部分は適宜省略する。また、クロックCLKのクロックNo.及び結果ラッチ201〜203内のラッチデータ群の内容がシリアル入力信号sin_encとして読み出されるタイミングは図5と同様である。
結果ラッチ203の有効ビットb[2]が“1”のため、クロックCLKのクロックNo.6〜7にかけてシリアル入力信号sin_encが“1”となる。その結果、マルチフェイル回路152のANDゲートAG21が“1”となるため、シリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”(“H”)に立ち上がる。
そして、クロックCLKのクロックNo.7の立ち上がりに同期してフリップフロップFF21内に故障検出予告信号fail_noticeの内容がラッチされる結果、救済イネーブル信号reiが“1”となる。
その後、救済イネーブル信号rei及び故障検出予告信号fail_noticeの“1”は、ORゲートOG21、ANDゲートAG22及びフリップフロップFF21間で形成されるループ内で保持される。このため、以降、救済イネーブル信号rei及び故障検出予告信号fail_noticeは“1”を維持する。
その結果、シーケンシャルエンコーダ回路153のANDゲートAG25の一方入力(故障検出予告信号fail_noticeの反転信号)が“0”となるため、カウント制御信号count_upが“0”となり、クロックCLKのクロックNo.6を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止する。
したがって、kビット出力CTkはクロックCLKのクロックNo.6中にカウント用フリップフロップ群zerocnt_ff[k-1:0]にラッチされた“2”で終了する。以降、kビット出力CTkの“2”は、セレクタSL21(“0”入力を選択)、ANDゲートAG26、及びカウント用フリップフロップ群zerocnt_ff[k-1:0]間で形成されるループで保持される。このため、以降、Kkビット出力CTkは“2”を維持する。
一方、クロックCLKのクロックNo.8の立ち上がり時には、シリアル入力信号sin_encは“0”となっているため、マルチフェイル回路152のANDゲートAG21の出力は“0”に戻る。したがって、ANDゲートAG23の一方入力である救済イネーブル信号reiは“H”であるが、他方入力である有効ビット情報bitcount_enが“L”であるため、フリップフロップFF22が“L”をラッチし続けるため、マルチフェイル信号multifailは初期値の“0”を維持する。
そして、クロックCLKのクロックNo.12の立ち上がりエッジ設定された観測タイミングt11で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第3の部分救済解析情報)を観測する。その結果、救済イネーブル信号reiが“1”及びマルチフェイル信号multifailが“0”のため、RAM103には救済可能な1ビット故障ビットが存在することを認識することができる。そして、その故障個所である“2”を示すkビット出力CTkが救済情報rai[k−1:0]として出力される。したがって、救済情報rai[k−1:0]を参照するおとにより、RAM103のメモリ列C[2]に故障ビットが存在することを認識することができる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第3の部分救済解析情報の救済イネーブル信号rei及びマルチフェイル信号multifailに基づき、救済イネーブル信号ren3として“1”(有効)を決定することができる。そして、救済情報rai3[*]として救済情報rai[k−1:0]をそのまま用いることができる。
次に、クロックCLKのクロックNo.13〜26間において、RAM102の故障ビット検出が行われる。
結果ラッチ202の有効ビットb[7]が“1”のため、クロックCLKのクロックNo.21〜22にかけてシリアル入力信号sin_encが“1”となる。その結果、シリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”に立ち上がる。
そして、クロックCLKのクロックNo.22の立ち上がりに同期して救済イネーブル信号reiが“1”となる。その後、前述したように、救済イネーブル信号rei及び故障検出予告信号fail_noticeは“1”を維持する。
その結果、シーケンシャルエンコーダ回路153のANDゲートAG25の一方入力(故障検出予告信号fail_noticeの反転信号)が“0”となるため、カウント制御信号count_upが“0”となり、クロックCLKのクロックNo.21を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止する。
したがって、kビット出力CTkはクロックCLKのクロックNo.21中にカウント用フリップフロップ群zerocnt_ff[k-1:0]にラッチされた“7”で終了する。以降、kビット出力CTkの“7”は、前述したように維持される。
一方、クロックCLKのクロックNo.23の立ち上がり時には、シリアル入力信号sin_encは“0”となっているため、マルチフェイル信号multifailは初期値の“0”を維持する。
そして、クロックCLKのクロックNo.26の立ち上がりエッジに設定された観測タイミングt12で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第2の部分救済解析情報)を観測する。その結果、救済イネーブル信号reiが“1”及びマルチフェイル信号multifailが“0”のため、RAM102には救済可能な1ビット故障ビットが存在することを認識することができる。そして、その故障個所である“7”を示すkビット出力CTkが救済情報rai[k−1:0]として出力される。この救済情報rai[k−1:0]を参照することにより、RAM102のメモリ列C[7]に故障ビットが存在することを認識することができる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第2の部分救済解析情報の救済イネーブル信号rei及びマルチフェイル信号multifailに基づき、救済イネーブル信号ren2として“1”(有効)を決定することができる。そして、救済情報rai2[*]として救済情報rai[k−1:0]をそのまま用いることができる。
以下、クロックCLKのクロックNo.27〜33間において、RAM101の故障ビット検出が行われる。結果ラッチ201の有効ビットb[3]には“1”がラッチされているため、結果ラッチ203,202の場合と同様に、kビット出力CTkの値が“3”で停止し、故障検出予告信号fail_notice及び救済イネーブル信号reiが“H”となり、マルチフェイル信号multifailは“L”を維持する。
そして、クロックCLKのクロックNo.34の立ち上がりエッジ設定された観測タイミングt13で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第1の部分救済解析情報)を観測する。その結果、救済イネーブル信号reiが“1”及びマルチフェイル信号multifailが“0”のため、RAM102には救済可能な1ビット故障ビットが存在することを認識することができる。そして、その故障個所である“3”を示すkビット出力CTkが救済情報rai[k−1:0]として出力される。この救済情報rai[k−1:0]を参照することにより、RAM101のメモリ列C[3]に故障ビットが存在することを認識することができる。
したがって、外部のテスタあるいはBIST制御回路110等が、上記第1の部分救済解析情報の救済イネーブル信号rei及びマルチフェイル信号multifailに基づき、救済イネーブル信号ren1として“1”(有効)を決定することができる。そして、救済情報rai1[*]として救済情報rai[k−1:0]をそのまま用いることができる。
次に、図7を参照して、救済解析回路150による救済解析動作を説明する。なお、説明の都合上、図5及び図6で説明した動作内容と同様な動作部分は適宜省略する。また、クロックCLKのクロックNo.及び結果ラッチ201〜203の内容がシリアル入力信号sin_encとして読み出されるタイミングは図5及び図6と同様である。
結果ラッチ203の有効ビットb[2]が“1”のため、図6を参照して説明したように、クロックCLKのクロックNo.6〜7にかけてシリアル入力信号sin_encが“1”となり、このシリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”に立ち上がる。
そして、クロックCLKのクロックNo.7の立ち上がりに同期してフリップフロップFF21内に故障検出予告信号fail_noticeの内容がラッチされる結果、救済イネーブル信号reiが“1”となる。その後、救済イネーブル信号rei及び故障検出予告信号fail_noticeは“1”を維持する。その結果、クロックCLKのクロックNo.6を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止する。
さらに、結果ラッチ203の有効ビットb[4]も“1”のため、クロックCLKのクロックNo.8〜9にかけてシリアル入力信号sin_encが再び“1”となる。
したがって、クロックCLKのクロックNo.9の立ち上がり時にシリアル入力信号sin_encは“1”となり、マルチフェイル回路152のANDゲートAG21の出力は“1”になる。このため、ANDゲートAG23の一方入力(救済イネーブル信号rei)及び他方入力(ANDゲートAG21の出力)は共に“1”となり、ORゲートOG22、ANDゲートAG2を介して、“1”がフリップフロップFF22にデータ入力に出力される。その結果、クロックCLKのクロックNo.9の立ち上がり時にデータ入力“1”がフリップフロップFF22にラッチされる結果、マルチフェイル信号multifailが“1”となる。
その後、マルチフェイル信号multifailの“1”は、ORゲートOG22、ANDゲートAG24及びフリップフロップFF22間で形成されるループ内で保持される。このため、以降、マルチフェイル信号multifailは“1”を維持する。
そして、クロックCLKのクロックNo.12の立ち上がりエッジ設定された観測タイミングt11で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第3の部分救済解析情報)を観測する。その結果、マルチフェイル信号multifailが“1”のため、RAM103には多ビット故障ビットが存在することを認識することができる。すなわち、RAM103は救済不可能であることを認識することができる。
次に、クロックCLKのクロックNo.13〜26間において、RAM102の故障ビット検出が行われる。
結果ラッチ202の有効ビットb[7]が“1”のため、図6を参照して説明したように、シリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”に立ち上がる。
そして、クロックCLKのクロックNo.22の立ち上がりに同期して救済イネーブル信号reiが“1”となる。その後、救済イネーブル信号rei及び故障検出予告信号fail_noticeは“1”を維持する。
その結果、カウント制御信号count_upが“0”となり、クロックCLKのクロックNo.21を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止し、kビット出力CTkは“7”で固定する。
さらに、結果ラッチ202の有効ビットb[10]も“1”のため、クロックCLKのクロックNo.24〜25にかけてシリアル入力信号sin_encが再び“1”となる。
したがって、クロックCLKのクロックNo.25の立ち上がり時にシリアル入力信号sin_encは“1”となる結果、クロックCLKのクロックNo.25の立ち上がり時にマルチフェイル信号multifailが“1”となる。その後、マルチフェイル信号multifailは“1”を維持する。
そして、クロックCLKのクロックNo.26の立ち上がりエッジ設定された観測タイミングt12で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第2の部分救済解析情報)を観測する。その結果、マルチフェイル信号multifailが“1”のため、RAM102には多ビット故障ビットが存在することを認識することができる。すなわち、RAM102は救済不可能であることを認識することができる。
以下、同様にして、クロックCLKのクロックNo.27〜33間において、RAM101の故障ビット検出が行われる。結果ラッチ201の有効ビットb[3]及びb[4]には“1”がラッチされているため、結果ラッチ203,202の場合と同様に、kビット出力CTkの値が“3”で停止し、故障検出予告信号fail_notice、救済イネーブル信号rei及びマルチフェイル信号multifailが“H”となる。
そして、クロックCLKのクロックNo.34の立ち上がりエッジに設定された観測タイミングt13で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTk(第1の部分救済解析情報)を観測する。その結果、マルチフェイル信号multifailが“1”のため、RAM101には多ビット故障ビットが存在することを認識することができる。すなわち、RAM101は救済不可能であることを認識することができる。
このように、BIST制御回路110は、ブリッジ回路301〜303それぞれのダミービットd1,d2(無効ビット)を解析対象から避けるように有効ビット情報bitcount_enを発生する。さらに、BIST制御回路110は、結果ラッチ201〜203それぞれの有効ビットの救済解析開始前に“H”のリセット信号reset_encを発生することにより、RAM101〜103それぞれの故障検出を一連の解析処理中に一括して行うことができる。
そして、観測タイミングt11〜t13で第1〜第3の部分救済解析情報(fail_notice,rei、multifail ,CTk(zerocnt_ff:raiと同じ))を観測することにより、RAM101〜103それぞれの故障の有無、マルチビット故障の有無(有りの場合、故障救済できない)、及び故障ビット位置を正確に認識することができる。
上述したように、この発明に係る実施の形態1の半導体集積回路は、1単位の救済解析回路150のみにより複数のRAM101〜103に関する救済解析情報IRを得ることができるため、集積度を損ねることなく複数のRAMに対する故障救済を行うことができる。
さらに、実施の形態1の半導体集積回路は、RAM101〜103に対応して救済デコーダ131〜133を備え、救済解析回路150より得られる救済解析情報IRはRAM101〜103それぞれの救済の必要性の有無(rei,multifail)、及び故障箇所(rai[k−1:0])を示すため、RAM101〜103それぞれについて独立した故障救済を行うことができる。
さらに、実施の形態1の半導体集積回路におけるBIST制御回路110は、スキャンパス信号SP3(シリアル入力信号sin_enc)して出力されている結果ラッチ201〜203のラッチデータ群間の切り替わり時に切り替わりを指示するリセット信号reset_encを出力する。このため、リセット信号reset_encにより救済解析回路150による救済解析動作を適宜初期化することにより、BIST制御回路110の制御下で、スキャンパス信号SP3に基づき結果ラッチ201〜203にラッチされたラッチデータ群に対応した上記第1〜第3の部分救済解析情報を効率的に得ることができる。
加えて、実施の形態1における半導体集積回路のBIST制御回路110は、スキャンパス信号SP3としてダミービットd1,d2が出力されている期間にリセット信号reset_encを出力するため、シフト動作を停止さることなく、スキャンパス信号SP3に基づき結果ラッチ201〜203のラッチデータ群に対応した第1〜第3の部分救済解析情報を救済解析回路150より効率的に得ることができる。
また、BIST制御回路110は、リセット信号reset_encが出力されている期間はスキャンパス信号SP3の無効を指示する“L”の有効ビット情報bitcount_enを出力するため、故障解析回路150がダミーデータd1,d2に基づき誤って故障解析動作を行うことを確実に回避することができる。
さらに、実施の形態1半導体集積回路のおいて結果ラッチ201〜203は、BIST制御回路110からのシフト動作信号br_shiftに基づく制御下で、結果ラッチ201〜203における複数のラッチデータ群をスキャンパス信号SP3としてシリアルに出力することができる。その結果、救済解析回路150は、スキャンパス信号SP3に基づきRAM101〜103それぞれに対応した第1〜第3の部分救済解析情報を含む救済解析情報IRを効率的に得ることができる。
さらに、実施の形態1の半導体集積回路は、1ビット以上の故障を指示する救済イネーブル信号rei(1ビット故障情報)に基づき、RAM101〜103それぞれについての1箇所以上の故障の有無を認識することができる。
加えて、実施の形態1の半導体集積回路は、2ビット以上の故障を指示するマルチフェイル信号multifailに基づき、RAM101〜103それぞれについての2箇所以上の故障の有無を認識することができる。その結果、1ビット故障情報と併せて複数のRAM101〜103それぞれについて救済可能な1箇所のみの故障の有無を正確に認識することができる。
なお、実施の形態1ではRAM101〜103全てが救済機能(予備メモリ列RMC)を有する構成を例にあげたが、複数のRAMの一部に救済機能を持たないRAMが含まれてもよい。
その場合は、当該救済機能を持たないRAMについては、救済イネーブル信号reiが“1”でマルチフェイル信号multifailが“0”の場合も救済できず、LSI(半導体集積回路)全体として救済できないことになる。
図1では結果ラッチ201〜203のラッチ情報をスキャンパス信号SP3として外部に読み出す手段として TAP(Test-Access-Port)回路155を示している。TAP回路155は、例えば、IEEE1149.1規格に示されているTAP回路を用いてもよい。ただし、TAP回路155は本発明の必須要素ではない。
<実施の形態2>
図8は実施の形態2の半導体集積回路において、救済解析回路160、ブリッジ回路301〜303、RAM101〜103及び救済デコーダ130の詳細を示す説明図である。なお、全体構成は図1で示した実施の形態1の構成と同様である。
図8に示すように、救済解析回路160は、結果ラッチ203のスキャンパス信号SP3をシリアル入力信号sin_encとして受け、BIST制御回路180から有効ビット情報bitcount_en及びリセット信号reset_encを入力する。そして、救済解析回路160は、故障情報rei、マルチフェイル信号multifail、救済情報rai[k−1:0]及び故障検出予告信号fail_noticeからなる救済解析情報IRをBIST制御回路180に出力する。
救済解析回路160は、図3で示した実施の形態1の救済解析回路150と同様、マルチフェイル回路152及びシーケンシャルエンコーダ回路153から構成される。
BIST制御回路180はブリッジ回路301〜303、パターン発生回路120、救済解析回路160を制御してRAM101〜103の故障救済制御を行う。
実施の形態2では、図8に示すように、3つのRAM101〜103に対して1つの救済デコーダ130を設けている(救済制御信号はrai123[*],ren123)。そして、3つのRAM101〜103のうち、1つのRAMの1ビット入出力の故障を救済の対象としている。したがって、2つ以上のRAMの故障や、1つのRAMに2ビット入出力の故障は救済できない。
実施の形態2では、RAM101〜103全体のビット数の合計である、総ビット数(26=6+12+8)を救済情報rai123[*]としている。したがって、救済デコーダ130は、RAM101〜103間において26個の救済セレクタSL25からなるセレクタ群115を制御する。つまり、救済の観点からは、3つのRAM101〜103を、26ビットの入出力を有する1つのRAMと想定して行っている。
この場合、救済解析回路160は、上記総ビット数26に対応したビット数の各ビット位置をコード化できるものが必要になる。図10の例では、k=5の救済解析回路160が必要になる。また、救済解析は26ビット入出力の1つのRAMと仮想して行うため、これに対応した制御信号を発生するようにBIST制御回路180を構成する必要がある。
図9〜図11は救済解析回路160による故障解析動作を示す波形図である。図9はRAM101〜103のいずれにも故障がない場合、図10はRAM101〜103全体において1ビットの故障が発生した場合、図11はRAM101〜103全体において2ビットの故障が生じた場合を示している。なお、図9〜図11で示す動作は、図8に示すように、結果ラッチ201〜203のシリアル入出力部にダミーラッチ部231a,231b〜233a,233bが設けられた構成を前提としている。
また、図1,図8には図示しないが、救済解析回路160あるいは結果ラッチ201内のフリップフロップ等はクロックCLKに同期して動作する。なお、説明の都合上、図9〜図11それぞれにおいて、クロックCLKの1周期毎にクロックNo.0〜36を示した。
まず、図9を参照して、救済解析回路160による救済解析動作を説明する。クロックNo.2〜3にかけてリセット信号reset_encの“H”パルスが発生する。すると、実施の形態1と同様、マルチフェイル回路152のフリップフロップFF21,FF22が“0”に初期化され、カウント用フリップフロップ群zerocnt_ff[k-1:0]のkビット出力CTk(zerocnt_ff)が“0”に初期化される。
したがって、救済イネーブル信号rei、故障検出予告信号fail_notice及びマルチフェイル信号multifailは“0”に初期化される。
クロックCLKのクロックNo.3の期間中にシフト動作信号br_shiftが“1”となり、実施の形態1と同様、結果ラッチ201〜203のラッチデータ群間の直列シフト動作が開始される。その結果、ブリッジ回路303のダミービットd1の内容を指示するスキャンパス信号SP3がシリアル入力信号sin_encとして救済解析回路160に取り込まれる。このとき、有効ビット情報bitcount_enが“0”ため、救済解析回路160はシリアル入力信号sin_encを無効ビットと判断し、無視する。
クロックCLKのクロックNo.4の期間中に、ブリッジ回路303の有効ビットb[0]の内容を指示するスキャンパス信号SP3がシリアル入力信号sin_encとして救済解析回路160に取り込まれる。このとき、有効ビット情報bitcount_enが“1”のため、救済解析回路160はシリアル入力信号sin_encを有効ビットと判断し、カウント制御信号count_upが“1”となり、実施の形態1と同様、シーケンシャルエンコーダ回路153によるカウントアップ動作が有効となる。
以降、クロックCLKのクロックNo.5〜No.34にかけて、kビット出力CTkをカウントアップする。RAM103には故障ビットが存在しないため、シリアル入力信号sin_encは“0”を維持する。
また、ダミービットd1,d2が出力されるクロックCLKのクロックNo.12,13及びNo.26,27の期間は、有効ビット情報bitcount_enが“0”となり、救済解析回路160がダミービットd1,d2に基づき誤って救済解析を行うことを確実に回避している。また、上記期間において、有効ビット情報bitcount_enを入力するシーケンシャルエンコーダ回路153のANDゲートAG25(図3参照)の出力であるカウント制御信号count_upが“0”となるため、ダミービットd1,d2の入力によってkビット出力CTkがカウントアップすることもない。
そして、クロックCLKのクロックNo.35の立ち上がりエッジ設定された観測タイミングt15で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTkからなる救済解析情報IRを観測する。その結果、救済イネーブル信号reiが“0”のため、RAM101〜103全体に故障ビットが存在しないことを認識することができる。
次に、図10を参照して、救済解析回路160による救済解析動作を説明する。なお、説明の都合上、図9で説明した動作内容と同様な動作部分の説明は適宜省略する。また、クロックCLKのクロックNo.及び結果ラッチ201〜203の内容がシリアル入力信号sin_encとして読み出されるタイミングは図9と同様である。
結果ラッチ202の有効ビットb[7]が“1”のため、クロックCLKのクロックNo.21〜22にかけてシリアル入力信号sin_encが“1”となる。その結果、マルチフェイル回路152のANDゲートAG21が“1”となるため(図3参照)、シリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”に立ち上がる。
そして、クロックCLKのクロックNo.22の立ち上がりに同期してフリップフロップFF21内に故障検出予告信号fail_noticeの内容がラッチされる結果、救済イネーブル信号reiが“1”(“H”)となる。
その後、救済イネーブル信号rei及び故障検出予告信号fail_noticeの“1”は、実施の形態1と同様、維持される。その結果、クロックCLKのクロックNo.21を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止する。
したがって、kビット出力CTkはクロックCLKのクロックNo.21中にカウント用フリップフロップ群zerocnt_ff[k-1:0]にラッチされた“15”で終了する。以降、kビット出力CTkの“15”は、実施の形態1と同様、維持される。
一方、クロックCLKのクロックNo.23の立ち上がり時には、シリアル入力信号sin_encは“0”となっているため、マルチフェイル回路152のANDゲートAG21の出力は“0”に戻る結果、マルチフェイル信号multifailは初期値の“0”を維持する。
そして、クロックCLKのクロックNo.35の立ち上がりエッジ設定された観測タイミングt15で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTkからなる救済解析情報IRを観測する。その結果、救済イネーブル信号reiが“1”及びマルチフェイル信号multifailが“0”のため、RAM101〜103全体として救済可能な1ビット故障ビットが存在することを認識することができる。そして、その故障個所である“15”を示すkビット出力CTkが救済情報rai[k−1:0]として認識される。すなわち、救済情報rai[k−1:0]を参照することにより、RAM101〜103のうちRAM102のメモリ列C[7](15=8+7)に故障ビットが存在することを認識することができる。
次に、図11を参照して、救済解析回路160による救済解析動作を説明する。なお、説明の都合上、図9及び図10で説明した動作内容と同様な動作部分は適宜省略する。また、クロックCLKのクロックNo.及び結果ラッチ201〜203の内容がシリアル入力信号sin_encとして読み出されるタイミングは図9及び図10と同様である。
結果ラッチ203の有効ビットb[2]が“1”のため、クロックCLKのクロックNo.6〜7にかけてシリアル入力信号sin_encが“1”となり、このシリアル入力信号sin_encの“1”立ち上がりに同期して故障検出予告信号fail_noticeが“1”に立ち上がる。
そして、クロックCLKのクロックNo.7の立ち上がりに同期してフリップフロップFF21内に故障検出予告信号fail_noticeの内容がラッチされる結果、救済イネーブル信号reiが“1”となる。その後、救済イネーブル信号rei及び故障検出予告信号fail_noticeは“1”を維持する。その結果、クロックCLKのクロックNo.6を最後にシーケンシャルエンコーダ回路153によるカウント動作が停止する。
さらに、結果ラッチ202の有効ビットb[7]が“1”のため、クロックCLKのクロックNo.21〜22にかけてシリアル入力信号sin_encが再び“1”となる。
したがって、クロックCLKのクロックNo.22の立ち上がり時にシリアル入力信号sin_encは“1”となり、マルチフェイル回路152のANDゲートAG21の出力は“1”になる(図3参照)。このため、ANDゲートAG23の一方入力(救済イネーブル信号rei)及び他方入力(ANDゲートAG21の出力)は共に“1”となり、その出力である“1”がORゲートOG22及びANDゲートAG24を介してフリップフロップFF22にラッチされる。その結果、クロックCLKのクロックNo.22の立ち上がり時にマルチフェイル信号multifailが“1”となる。
その後、マルチフェイル信号multifailの“1”は、ORゲートOG22、ANDゲートAG24及びフリップフロップFF22間で形成されるループ内で保持される。このため、以降、マルチフェイル信号multifailは“1”を維持する。
そして、クロックCLKのクロックNo.35の立ち上がりエッジ設定された観測タイミングt15で故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びkビット出力CTkからなる救済解析情報IRを観測する。その結果、マルチフェイル信号multifailが“1”のため、RAM103には多ビット故障ビットが存在することを認識することができる。すなわち、RAM101〜103全体として救済不可能であることを認識することができる。
このように、BIST制御回路180は、実施の形態1のBIST制御回路110と同様、ブリッジ回路301〜303それぞれのダミービットd1,d2(無効ビット)を解析対象から避けるように有効ビット情報bitcount_enを発生する。さらに、BIST制御回路180は、結果ラッチ201〜203全体の有効ビットの救済解析開始前に“H”のリセット信号reset_encを発生することにより、RAM101〜103全体の故障検出を一括して行うことができる。
そして、観測タイミングt15で救済解析情報(rei、multifail 、CTk(zerocnt_ff:raiと同じ)を観測すれば、RAM101〜103全体における故障の有無、マルチビット故障の有無(有りの場合、故障救済できない)、及び故障ビット位置を正確に認識することができる。
このように、この発明に係る実施の形態2の半導体集積回路は、実施の形態1と同様、3つのRAM101〜103全体における救済解析を1つの救済解析回路160のみを用いて行うことができる。
さらに、実施の形態2の半導体集積回路は、RAM101〜103全体について一の救済デコーダ130を備え、RAM101〜103全体について故障救済を行うことができる。その結果、RAM101〜103に対し一単位の救済デコーダ130を設ける構成が実現できるため、実施の形態1以上に集積度の向上を図ることができる。
また、実施の形態2半導体集積回路は、BIST制御回路180からのシフト動作信号br_shiftに基づく制御下で、結果ラッチ201〜203における複数のラッチデータ群をスキャンパス信号SP3としてシリアルに出力することができる。その結果、救済解析回路160は、スキャンパス信号SP3に基づきRAM101〜103全体に対応した救済解析情報IRを効率的に得ることができる。
加えて、実施の形態2の半導体集積回路は救済イネーブル信号reiからRAM101〜103全体についての1ビット以上の故障の有無を認識することができる。
さらに、実施の形態2の半導体集積回路はマルチフェイル信号multifailからRAM101〜103全体についての2ビット上の故障の有無を認識することができる。その結果、救済イネーブル信号reiと併せてRAM101〜103全体について救済可能な1ビットのみの故障の有無を正確に認識することができる。
なお、実施の形態2では全てのRAM101〜103が救済機能(予備メモリ列RMC)を有する構成を例にあげたが、複数のRAMの一部に救済機能を持たないRAMが含まれてもよい。
その場合は、当該救済機能を持たないRAMについては、救済イネーブル信号reiが“1”でマルチフェイル信号multifailが“0”の場合も救済できず、LSI(半導体集積回路)全体として救済できないことになる。
RAM101〜103の救済は救済デコーダ130に救済制御信号(rai123[*],ren123)を与えることで行う。なお、救済情報rai123[*]は救済解析回路160より得たカウント用フリップフロップ群zerocnt_ff[k-1:0](kビット出力CTk)の値に相当し、救済イネーブル信号ren123は救済の有効/無効を指示する信号であり、救済解析回路160より得た救済イネーブル信号rei及びマルチフェイル信号multifailの値に基づき決定される。
なお、救済イネーブル信号ren123は、“1”で救済有効、“0”で救済無効を指示する。救済情報rai123[*]はRAM101〜103全体における救済すべきビット(メモリ列C[*]の位置)を示している。救済デコーダ130は上記救済制御信号に基づきセレクタ群115を制御して故障救済を行う。セレクタ群115はRAM101〜103全体に対応して設けられる。
以下、例に挙げて説明する。救済イネーブル信号ren123が“1”であり、救済情報rai123[*]が“01111”(15)を指示するとき、RAM102のメモリ列C[7]を(8(RAM103のビット数)+7)無効にし、RAM102の予備メモリ列RMCを用いるように救済デコーダ130はセレクタ群115を制御する。具体的には、RAM102においてメモリ列C[0]〜C[6]の出力をデータ出力Dout[0]〜Dout[6]として出力し、メモリ列C[8]〜C[11]の出力をデータ出力Dout[7]〜Dout[10]として出力し、予備メモリ列RMCの出力をデータ出力Dout[11]として出力するように、セレクタ群115を制御する。なお、この際、RAM101及びRAM103は予備メモリ列RMCによる置き換えは行わない。すなわち、RAM101においてはメモリ列C[0]〜C[5]の出力をデータ出力Dout[0]〜Dout[5]として出力し、RAM103においてはメモリ列C[0]〜C[7]の出力をデータ出力Dout[0]〜Dout[7]として出力するようにセレクタ群115を制御する。
<実施の形態3>
図12は実施の形態3の半導体集積回路の構成を示すブロック図である。実施の形態3の半導体集積回路は、RAMグループ400〜402に対して一つの救済解析回路170を設けた構成を呈している。
RAMグループ400はRAM104〜106(第1種のメモリ回路)及びブリッジ回路304〜306に対応して一対一に設けられた救済デコーダ134〜136からなる構成である。RAMグループ400のRAM104〜106、ブリッジ回路304〜306及び救済デコーダ134〜136は、図1,図4で示した実施の形態1のRAM101〜103、ブリッジ回路301〜303及び救済デコーダ131〜133と等価な関係を有している。加えて、ブリッジ回路304〜306は図1,図4で示した構成と同様、第1〜第3の結果ラッチ部(複数の第1グループ用結果ラッチ部)及び第1〜第3の比較器(複数の第1グループ用比較器)を有している。
一方、RAMグループ401はRAM101〜103(第2種のメモリ回路)、ブリッジ回路301〜303及び救済デコーダ130からなり、図1,図8で示した実施の形態2の構成と同様な構成を呈している。そして、ブリッジ回路301〜303は図1,図8で示した構成と同様、第1〜第3の結果ラッチ部(複数の第2グループ用結果ラッチ部)及び第1〜第3の比較器(複数の第2グループ用比較器)を有している。
また、RAMグループ402はRAM107〜109,ブリッジ回路307〜309及び救済デコーダ137からなり、RAMグループ401と等価な構成を呈している。すなわち、RAM107〜109,ブリッジ回路307〜309及び救済デコーダ137は、RAMグループ401のRAM101〜103、ブリッジ回路301〜303及び救済デコーダ130に対応する。
このような構成において、ブリッジ回路307〜309,301〜303及び304〜306内のフリップフロップを直列に接続してRAMグループ間FF直列接続構成を実現している。すなわち、RAMグループ402のブリッジ回路309から出力されるスキャンパス信号SP402がRAMグループ401のブリッジ回路301へのシフト入力信号br_sinとして入力される。さらに、RAMグループ401のブリッジ回路303から出力されるスキャンパス信号SP401がRAMグループ400のブリッジ回路304のシフト入力信号br_sinとして入力される。
したがって、シフト動作信号br_shiftが“1”の時、RAMグループ間FF直列接続構成のFFのラッチデータを順次、ブリッジ回路306から出力されるスキャンパス信号SP400から救済解析回路170のシリアル入力信号sin_encとして取り込むことができる。
救済解析回路170は、スキャンパス信号SP400として入力されるブリッジ回路304〜306の有効ビットb[*]に基づき、実施の形態1の救済解析回路150と同様な救済解析を行う。そして、救済解析回路170は、RAM104〜106に対応する(第1グループ用)第1〜第3の部分救済解析情報として、各々故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びカウント用フリップフロップ群zerocnt_ff[k-1:0]を得る。
実施の形態1と同様、救済解析回路170から得られる上記第1〜第2の部分救済解析情報に基づき、図示しないBIST制御回路やテスタによって、回路救済デコーダ134〜136へ与える第1〜第3の部分救済制御信号を得ることができる。すなわち、救済デコーダ134用の第1の部分救済制御信号として救済情報rai4[*]及び救済イネーブル信号ren4を得、救済デコーダ135用の第2の部分救済制御信号として救済情報rai5[*]及び救済イネーブル信号ren5を得、救済デコーダ136用の第3の部分救済制御信号として救済情報rai6[*]及び救済イネーブル信号ren6を得る。
さらに、救済解析回路170は、スキャンパス信号SP400として入力されるブリッジ回路301〜303の有効ビットb[*]に基づき、実施の形態2の救済解析回路160と同様な救済解析を行い、第2グループ用救済解析情報(その1)として、RAMグループ401内で1種類の救済情報rai[k−1:0]及び救済イネーブル信号reiを得る。その結果、実施の形態2と同様、上記第2グループ用救済解析情報(その1)に基づき、図示しないBIST制御回路あるいはテスタによって、救済デコーダ130へ与える第2のグループ用救済制御信号(救済情報rai123[*]及び救済イネーブル信号ren123)を得ることができる。
加えて、救済解析回路170は、スキャンパス信号SP400として入力されるブリッジ回路307〜309の有効ビットb[*]に基づき、実施の形態2の救済解析回路160と同様な救済解析を行い、第2グループ用救済解析情報(その2)として、RAMグループ402内で1種類の救済情報rai[k−1:0]及び救済イネーブル信号reiを得る。その結果、実施の形態2と同様、上記第2グループ用救済解析情報(その2)に基づき、図示しないBIST制御回路あるいはテスタによって、救済デコーダ130へ与える救済制御信号を(救済情報rai789[*]及び救済イネーブル信号ren789)を得ることができる。
このように、実施の形態3の半導体集積回路における救済解析回路170は、第1グループ(RAMグループ401)用の第1〜第3の部分救済解析情報及び第2グループ(RAMグループ402,403)用の救済解析情報を得る。そして、最終的に救済デコーダ134〜136によりRAM104〜106それぞれの救済制御を行うとともに、救済デコーダ130(137)によりRAM101〜103(107〜109)中の一のRAMそれぞれに対し救済制御を行っている。
すなわち、実施の形態3の半導体集積回路における救済解析回路170は、実施の形態1のようにRAMグループ400内のRAM104〜106それぞれに対する救済解析動作と、実施の形態2のようにRAMグループ401,402内のRAM101〜103全体,RAM107〜109全体に対する救済解析動作を併せて行うことができる。
その結果、第1グループであるRAMグループ400と第2グループであるRAMグループ401,402とで異なった内容の救済制御を、一の救済解析回路170から得られる救済解析情報(第1グループ用第1〜第3の部分救済制御情報及び第2グループ用救済解析情報)に基づいて行うことができる。すなわち、集積度を損ねることなく、異なるグループに属するRAMに対し異なる内容の救済制御を行うことができる効果を奏する。
また、実施の形態3の半導体集積回路は、一の救済解析用スキャンパス信号SP400に基づき、RAMグループ400〜402のRAM101〜109に対する故障解析情報を一括して得ることができる。
このような複数種の救済解析動作を可能にすべく、実施の形態3のBIST制御回路(図示せず)は、実施の形態1のBIST制御回路110及び実施の形態2のBIST制御回路180双方の制御動作を併せ持っている。
<実施の形態4>
図13は実施の形態4の半導体集積回路の構成を示すブロック図である。実施の形態4の半導体集積回路は、実施の形態3と同様、RAMグループ400〜402に対して一つの救済解析回路170を設けた構成を呈している。
このような構成において、ブリッジ回路307〜309,301〜303及び304〜306から出力されるスキャンパス信号SP402,SP401及びSP400をセレクタ405が入力している。
セレクタ405はBIST制御回路(図示せず)からの制御信号SC405に基づき、スキャンパス信号SP400〜SP402のいずれかを選択して選択スキャンパス信号SP405(救済解析用スキャンパス信号)を出力する。制御信号SC405を出力するBIST制御回路は救済解析対象のRAMグループを認識することができる。
救済解析回路171は選択スキャンパス信号SP405をシリアル入力信号sin_encとして取り込み、救済解析動作を行う。
救済解析回路171の救済解析動作について説明する。まず、スキャンパス信号SP400が選択スキャンパス信号SP405として選択される場合の第1の救済解析動作について説明する。
救済解析回路171は、選択スキャンパス信号SP405として入力されるブリッジ回路304〜306の有効ビットb[*]に基づき、実施の形態1の救済解析回路150と同様な第1の救済解析動作を行う。その結果、救済解析回路171は、RAM104〜106に対応する(第1グループ用)第1〜第3の部分救済解析情報として、各々故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びカウント用フリップフロップ群zerocnt_ff[k-1:0]を得る。その結果、実施の形態3と同様、上記第1グループ用第1〜第3の救済解析情報に基づき、図示しないBIST制御回路あるいはテスタによって、救済デコーダ134〜136へ与える第1グループ用第1〜第3の部分救済制御信号を得ることができる。
次に、スキャンパス信号SP401が選択スキャンパス信号SP405として選択される場合の第2の救済解析動作について説明する。
救済解析回路171は、選択スキャンパス信号SP405として入力されるブリッジ回路301〜303の有効ビットb[*]に基づき、実施の形態2の救済解析回路160と同様な第2の救済解析動作を行う。そして、救済解析回路171は、第2グループ用救済解析情報として1種類の故障検出予告信号fail_notice、救済イネーブル信号rei、マルチフェイル信号multifail及びカウント用フリップフロップ群zerocnt_ff[k-1:0]を得る。その結果、実施の形態2と同様、上記第2グループ用救済解析情報に基づき、図示しないBIST制御回路あるいはテスタによって、救済デコーダ130へ与える第2グループ用救済制御信号(救済情報rai123[*]及び救済イネーブル信号ren123)を得ることができる。
最後に、スキャンパス信号SP402が選択スキャンパス信号SP405として選択される場合の第3の救済解析動作について説明する。
救済解析回路171は、選択スキャンパス信号SP405として入力されるブリッジ回路301〜303の有効ビットb[*]に基づき、実施の形態2の救済解析回路160と同様、すなわち、上記第2の救済解析動作と同じ内容の第3の救済解析動作を行う。そして、救済解析回路171は、第2グループ用救済解析情報である1種類の救済情報rai[k−1:0]及び救済イネーブル信号reiを得る。その結果、実施の形態2と同様、上記第2グループ用救済解析情報に基づき、BIST制御回路あるいはテスタによって、救済デコーダ130へ与える第2グループ用救済制御信号(救済情報rai789[*]及び救済イネーブル信号ren789)を得ることができる。
このように、この発明に係る実施の形態4の半導体集積回路における救済解析回路171は、実施の形態3の救済解析回路170と同様、実施の形態1のようにRAMグループ400内のRAM104〜106それぞれに対する救済解析動作と、実施の形態2のようにRAMグループ401,402内のRAM101〜103全体,RAM107〜109全体に対する救済解析動作を併せて行うことができる。
さらに、実施の形態4の半導体集積回路における救済解析回路171は、スキャンパス信号SP400〜SP402から選択された選択スキャンパス信号SP405に基づきRAMグループ400〜402のうちいずれかのグループ用救済解析情報を選択的に得ることができるため、RAMグループ400〜402のうち救済解析を望むグループに対してのみ選択的に故障救済を行うことができる。
このような複数種の救済解析動作を可能にすべく、実施の形態4のBIST制御回路(図示せず)は、実施の形態1のBIST制御回路110及び実施の形態2のBIST制御回路180双方の制御動作並びにセレクタ405に対する制御信号SC405を併せ持っている。
実施の形態4は、セレクタ405によりスキャンパス信号SP400〜SP402を選択スキャンパス信号SP405として適宜選択でできるため、RAMグループ400〜402に対する上記第1〜第3の救済解析動作を選択的に実行することにより、一部のRAMグループに対してのみ救済解析を容易に行うことができる。例えば、RAMグループ402に対する第3の救済解析動作のみを行いたい場合、選択スキャンパス信号SP405としてスキャンパス信号SP402のみを選択すれば良い。
同様なことを実施の形態3の半導体集積回路で行う場合、スキャンパス信号SP400からRAMグループ401やRAM104、105,106に対する第2及び第1の救済解析動作をスキップするためにダミーのシフト動作が必要であり、その制御は複雑になり時間を要してしまう。
一方、実施の形態4の半導体集積回路では、そのような制御が不要であり、目的のRAMグループを容易かつ迅速に救済解析することができる。特に、特定のRAMグループのみ不良が多く発生してる場合の不良解析に有効となる。
<その他>
上述したように、救済制御信号(rai1[*],ren1, rai2[*],ren2, rai3[*],ren3,rai123[*],ren123・・・等)は、救済解析情報である救済情報rai[k−1:0]及び救済イネーブル信号rei等に基づき得ることができる。したがって、BIST制御回路110(180)を介して上記救済解析情報をテスタに与え、テスタにより所望の救済制御信号が生成されるヒューズ回路を構成する。ヒューズ回路の代わりに所望の救済制御信号を出力するレジスタを用いても良い。また、救済制御信号自体をBIST制御回路110(180)から出力するようにしても良い。
なお、BIST制御回路110(180)から救済制御信号を出力する場合は、救済解析回路150(160,170,171)の出力データを処理して救済制御信号を発生するセルフリペア制御回路をBIST制御回路110内に設けることもできる。この場合は、いわゆる自己修復(BISR:Built-In Self-Repair)が可能になる。
つまり、実施の形態1〜実施の形態4で示した半導体集積回路に自己修復機能を持たせることにより、セルフテストを実行し、救済解析を行い、救済制御信号を発生し、RAMを救済する一連の動作を内部処理することができる。
<実施の形態5>
図14はこの発明の実施の形態5であるRAM救済機能を有する半導体集積回路の構成を示す回路図である。同図に示すように、RAM1は8ビット(所定ビット数)のデータ入出力機能(入力Din[0]〜Din[7]及びデータ出力Dout[0]〜Dout[7]に対応する機能)を有している。また、RAM1は図示しないが、例えば、実施の形態1において図4で示した予備メモリ列RMCのような冗長メモリ部を有している。
RAM1のデータ入力Din[0]〜Din[7]及びデータ出力Dout[0]〜Dout[7]に対する制御が可能なデータ入出力制御部2が設けられる。
データ入出力制御部2はエンコード回路(ENC回路)3、キャプチャ回路(EFC回路)4、1ビット入出力制御部10〜13,…から構成されている。なお、説明の都合上、データ入力Din[0]〜Din[3]及びデータ出力Dout[0]〜Dout[3]に対応して設けられる1ビット入出力制御部10〜13のみ図示している。実際には、データ出力Dout[7:4]及びデータ入力Din[7:4]に対応する1ビット入出力制御部も設けられている。
同図に示すように、1ビット入出力制御部10は、セレクタST0、EXORゲートG10及びANDゲートG20から構成される。
セレクタST0は“0”入力に書き込みデータsys_din[0]を受け、“1”入力に書き込みデータbist_din[0]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST0の出力がRAM入力データmem_din[0]としてRAM1のデータ入力Din[0]に入力される。
EXORゲートG10は一方入力に書き込みデータbist_exp[0]を受け、他方入力にデータ出力Dout[0](RAM出力データmem_dout[0],読み出しデータsys_dout[0])を受ける。ANDゲートG20は一方入力に比較イネーブル信号comp_enを受け、他方入力にEXORゲートG10の出力を受ける。ANDゲートG20の出力が故障ビットデータfail[0]としてエンコード回路3に付与される。
同様にして、1ビット入出力制御部1p(p=1〜3のいずれか)は、セレクタSTp、EXORゲートG1p及びANDゲートG2pから構成される。
セレクタSTpは“0”入力に書き込みデータsys_din[p]を受け、“1”入力に書き込みデータbist_din[p]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタSTpの出力がRAM入力データmem_din[p]としてRAM5pのデータ入力Din[p]に入力される。
EXORゲートG1pは一方入力に書き込みデータbist_exp[p]を受け、他方入力にデータ出力Dout[p](RAM出力データmem_dout[p],読み出しデータsys_dout[p])を受ける。ANDゲートG2pは一方入力に比較イネーブル信号comp_enを受け、他方入力にEXORゲートG1pの出力を受ける。ANDゲートG2pの出力が故障ビットデータfail[p]としてエンコード回路3に付与される。
同様にして、図示しない1ビット入出力制御部1q(q=4〜7のいずれか)は、図14上では図示しないが、セレクタST0、EXORゲートG10及びANDゲートG20と等価な、セレクタSTq、EXORゲートG1q及びANDゲートG2qから構成される。
セレクタSTqは“0”入力に書き込みデータsys_din[q]を受け、“1”入力に書き込みデータbist_din[q]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタSTqの出力がRAM入力データmem_din[q]としてRAM5qのデータ入力Din[q]に入力される。
EXORゲートG1qは一方入力に書き込みデータbist_exq[q]を受け、他方入力にデータ出力Dout[q](RAM出力データmem_dout[q],読み出しデータsys_dout[q])を受ける。ANDゲートG2qは一方入力に比較イネーブル信号comq_enを受け、他方入力にEXORゲートG1qの出力を受ける。ANDゲートG2qの出力が故障ビットデータfail[q]としてエンコード回路3に付与される。
そして、テスト用入力データwd[1]が書き込みデータbist_din[1],bist_din[3],bist_din[5]及びbist_din[7]([5],[7]は図示せず)として、1ビット入出力制御部11,13,15及び17(15,17は図示せず)のセレクタST1,ST3,ST5,ST7(ST5,ST7は図示せず)の“1”入力に取り込まれる。
同様にして、テスト用入力データwd[0]が書き込みデータbist_din[0],bist_din[2],bist_din[4]及びbist_din[6]([4],[6]は図示せず)として1ビット入出力制御部10,12,14及び16(14,16は図示せず)のセレクタST0,ST2,ST4及びST6(ST4,ST6は図示せず)の“1”入力に取り込まれる。
また、テスト用期待値cd[1]が書き込みデータbist_exp[1],bist_exp[3],bist_exp[5]及びbist_exp[7]([5],[7]は図示せず)として1ビット入出力制御部11,13,15,17のEXORゲートG11,G13,G15,G17(G15,G17は図示せず)の一方入力として付与される。
同様にして、テスト用期待値cd[0]が書き込みデータbist_exp[0],bist_exp[2],bist_exp[4]及びbist_exp[6]([4],[6]は図示せず)として、1ビット入出力制御部10,12,14及び16のEXORゲートG10,G12,G14及びG16(G14,G16は図示せず)の一方入力として付与される。
このように、テスト用書き込みデータ(wd[0],wd[1])やテスト用期待値(cd[0],cd[01)は信号配線を減らす目的で、偶数番と奇数番の入出力ビット(データ出力Dout[i]及びデータ入力Din[i]の「i」)の2つにグループ化している。
このような構成の1ビット入出力制御部10〜17において、比較イネーブル信号comp_enが“1”の際、書き込み期待値bist_ext[i](i=0〜7のいずれか)とデータ出力Dout[i]との不一致が比較回路(EXORゲートG1i及びANDゲートG2i)により検出されると、故障ビットデータfail[i]として“1”が出力される。一方、上記不一致が比較回路によって検出されない場合は故障ビットデータfail[i]は“0”となる。
このような比較回路による比較結果である故障ビットデータfail[i]は、実施の形態1の半導体集積回路の場合と同様、テストパターンの発生期間中に順次得られる。すなわち、テスト用書き込みデータ(wd[0],wd[1])を順次与え、データ出力Dout[i]と対応するテスト用期待値(cd[0],cd[01)とを順次比較することにより、故障ビットデータfail[0]〜fail[7]が順次得られる。なお、実施の形態5では詳述しないが実施の形態1と同様にパターン発生回路によってテスト用入力データwd[0],wd[1],期待値cd[0],cd[1]が順次出力される。
エンコード回路3は故障ビットデータfail[0]〜fail[7]を受け、これら8ビットの故障ビットデータfail[7:0]をエンコードして4ビット(圧縮ビット数)の符号化データef[3:0]を順次出力する。この符号化データef[3:0]によってRAM1の後述する第1〜第3の故障情報を示すことができる。
キャプチャ回路4はシリアルデータ入力Si、シリアルシフト制御信号sdr及び符号化データef[3:0]を受け、後述するラッチ条件(所定の条件)を満足する符号化データef[3:0]をラッチデータcf[3:0]としてラッチする。
また、キャプチャ回路4はラッチデータcf[3:0]の直列シフト動作が可能であり、ラッチデータcf[3:0]をシリアルデータ出力Soとしてシリアルに出力することができる。
図15は図14で示したエンコード回路3の入出力関係を模式的に示す説明図である。同図に示すように、エンコード回路3は。8ビットの故障ビットデータfail[0]〜fail[7]を受け、これらのデータをエンコードして、4ビットに圧縮した符号化データef[0]〜ef[3]を得る。
図16はエンコード回路3による第1のエンコード例を表形式で示す説明図である。同図に示すように、故障ビットデータfail[0]〜fail[7]が全て“0”の場合は、符号化データef[0]〜ef[3]は全て“0”となる。
また、故障ビットデータfail[0]〜fail[7]のうち一箇所のみに“1”(故障ビット)が検出された場合、符号化データef[3]を“1”にする。そして、“1”を示した故障ビットデータfail[i]の位置(i)を符号化データef[0]〜ef[2]の2進数で表す。例えば、故障ビットデータfail[6]=“1”の場合は、ef[2]=1,ef[1]=1,ef[0]=0であり、ef[2:0]=”110”(2進数)=6(10進数)となっている。
そして、故障ビットデータfail[0]〜fail[7]のうち2箇所以上に“1”が検出された場合、符号化データef[3]=0,符号化データef[2]=1に設定する。なお、この場合、符号化データef[1]及び符号化データef[0]の値は任意である。
図17はエンコード回路3による第2のエンコード例を表形式で示す説明図である。同図に示すように、故障ビットデータfail[0]〜fail[7]が全て“0”の場合は、符号化データef[0]〜ef[3]は全て“0”となる。
また、故障ビットデータfail[0]〜fail[7]のうち一箇所のみに“1”(故障ビット)が検出された場合、“1”を示した故障ビットデータfail[i]の位置に“1”をインクリメントした値(i+1)を符号化データef[0]〜ef[3]の2進数で表す。例えば、故障ビットデータfail[6]=“1”の場合は、ef[3]=0,ef[2]=1,ef[1]=1,ef[0]=1であり、ef[3:0]=”0111”(2進数)=7(10進数)となっている。
そして、故障ビットデータfail[0]〜fail[7]のうち2箇所以上に“1”が検出された場合、符号化データef[3:0]を“1111”に設定する。
図18は図16で示した第1のエンコード例でエンコードを行うエンコード回路3に対応するキャプチャ回路4の第1の構成であるキャプチャ回路4Aの内部構成を示す回路図である。
同図に示すように、キャプチャ回路4Aは、セレクタST10〜ST13、セレクタST20〜ST23、フリップフロップFF10〜FF13、ANDゲートG31,G32,G35,及びORゲートG33,G34から構成される。
セレクタST10は“0”入力に符号化データef[0]を受ける。セレクタST20は“1”入力にシリアルデータ入力Siを受け、“0”入力にセレクタST10の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。フリップフロップFF10はセレクタST20の出力を入力部に受け、その出力であるラッチデータcf[0]がセレクタST10の“0”入力として帰還する。
セレクタST11は“0”入力に符号化データef[1]を受ける。セレクタST21は“1”入力にフリップフロップFF10のラッチデータcf[0]を受け、“0”入力にセレクタST11の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。フリップフロップFF11はセレクタST21の出力を入力部に受け、その出力であるラッチデータcf[1]がセレクタST11の“0”入力として帰還する。
セレクタST12は“0”入力に符号化データef[2]を受ける。セレクタST22は“1”入力にフリップフロップFF11のラッチデータcf[1]を受け、“0”入力にセレクタST12の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。フリップフロップFF12はセレクタST22の出力を入力部に受け、その出力であるラッチデータcf[2]がセレクタST12の“0”入力として帰還する。
セレクタST13は“0”入力に符号化データef[3]を受ける。セレクタST23は“1”入力にフリップフロップFF12のラッチデータcf[2]を受け、“0”入力にセレクタST13の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。フリップフロップFF13はセレクタST23の出力を入力部に受け、その出力であるラッチデータcf[3]がセレクタST13の“0”入力として帰還するとともに、シリアルデータ出力Soとして出力される。
ANDゲートG31は一方入力に符号化データef[2]を受け、他方入力に符号化データef[3]の反転信号を受ける。ANDゲートG32は一方入力に符号化データef[3]を受ける。ORゲートG33は一方入力にANDゲートG31の出力を受け、他方入力にANDゲートG32の出力を受ける。このORゲートG33の出力がキャプチャ信号CPTとしてセレクタST10〜ST13の制御入力として付与される。
ANDゲートG35は一方入力にラッチデータcf[2]を受け、他方入力にラッチデータcf[3]の反転信号を受ける。ORゲートG34は一方入力にANDゲートG35のANDゲート出力信号S35を受け、他方入力にラッチデータcf[3]を受ける。このORゲートG34のORゲート出力信号S34の反転信号がANDゲートG32の他方入力として付与される。
図18で示した構成のキャプチャ回路4Aのキャプチャ動作について説明する。なお、キャプチャ動作は、フリップフロップFF10〜FF13を“0”に初期化した後、シリアルシフト制御信号sdrを“0”にして実行される。
なお、初期化は、sdr=1,si=0に設定してフリップフロップFF10〜FF13にクロックを与えて行ってもよい(シフト動作による初期化)し、図示していないリセット手段(例えば、フリップフロップFF10〜FF13としてリセット機能付FFを用いる)を用いてもよい。初期化の結果、フリップフロップFF10〜FF13のラッチデータcf[0]〜cf[3]は“0”に初期設定される。
まず、故障ビットが“0”の場合、すなわち、符号化データef[3:0]が“0000”の場合について説明する。
この場合、{ef[2]=“0”ef[3]=“0”}であり、ANDゲートG31及びG32の出力は共に0”となるため、キャプチャ信号CPTは“0”で安定する。したがって、セレクタST1j,セレクタST2j及びFF1j(j=0〜3)によるループは形成されるため、フリップフロップFF10〜FF13のラッチデータcf[3:0]は初期値“0000”を維持する。
その後、最初に1ビット故障が検出された場合の動作について説明する。この場合、ef[3]=“1”となる。この瞬間、ラッチデータcf[2],cf[3]は初期化時の“0”を維持しているため、ORゲート出力信号S34は“0”を維持している。
したがって、ANDゲートG32の一方入力(符号化データef[3])及び他方入力(ORゲート出力信号S34の反転信号)は共に“1”となるため、その出力が“1”となり、ORゲートG33の出力であるキャプチャ信号CPTが“1”となる。
その結果、符号化データef[3]=“1”の時の最新の符号化データef[0]〜ef[3]の値がラッチデータcf[0]〜cf[3]としてフリップフロップFF10〜FF13にラッチされる。
そして、フリップフロップFF13にラッチされたラッチデータcf[3]により、ORゲート出力信号S34が“1”となり、ANDゲートG32の出力が“0”となる結果、ORゲートG33の出力であるキャプチャ信号CPTが再び“0”に戻る。
その結果、セレクタST1j,セレクタST2j及びFF1jよるループ回路が再び形成され、ラッチデータcf[0]〜cf[3]の値が維持される。したがって、その後に入力される新たな符号化データef[0]〜ef[3]がフリップフロップFF10〜FF13のラッチデータcf[0]〜cf[3]としてラッチされることはない。
また、符号化データef[3]=“1”がフリップフロップFF13にラッチされた後は、ラッチデータcf[3]が“1”となり、前述したように、ORゲートG34のORゲート出力信号S34が“1”に固定される。
したがって、その後に符号化データef[3]=“1”の(1ビット故障)が検出されても、ANDゲートG32の他方入力が“0”(“1”のORゲート出力信号S34の反転信号)であるため、当該符号化データef[3:0]がフリップフロップFF10〜FF13に取り込まれることはない。
次に、2ビット以上の故障が検出された場合を説明する。この場合{ef[3]=0,ef[2]=1}を満足するため、ANDゲートG31の出力が“1”となり、ORゲートG33の出力であるキャプチャ信号CPTが“1”となる。
その結果、符号化データef[3]=“0”及び符号化データef[2]=“1”が、フリップフロップFF12及びFF13にラッチされる。
そして、“0”のラッチデータcf[3]及び“1”のラッチデータcf[2]により、ANDゲート出力信号S35が“1”となり、ORゲート出力信号S34が“1”となる。したがって、ANDゲートG32の出力が“0”となる結果、ORゲートG33の出力であるキャプチャ信号CPTが再び“0”に戻る。
その結果、セレクタST1j,セレクタST2j及びFF1jよるループ回路が再び形成され、ラッチデータcf[0]〜cf[3]の値が維持される。したがって、その後に入力される新たな符号化データef[0]〜ef[3]がフリップフロップFF10〜FF13のラッチデータcf[0]〜cf[3]としてラッチされることはない。
また、符号化データef[3]=“0”がフリップフロップFF13にラッチされ、符号化データef[2]=“1”がフリップフロップFF12にラッチされた後は、前述したように、ORゲートG34のORゲート出力信号S34が“1”に固定される。したがって、その後に符号化データef[3]=“1”の(1ビット故障)が検出されても、フリップフロップFF10〜FF13に取り込まれることはない。
このように、キャプチャ回路4Aは、故障が全く無い場合はラッチデータcf[0]〜cf[3]として全て“0”をラッチする。1ビット故障が検出された場合は、ラッチデータcf[3]=“1”と最初に検出された1ビット故障の故障位置を示すラッチデータcf[0]〜cf[2]をラッチする。そして、2ビット以上故障が検出された場合は、符号化データef[3]=“1”及び符号化データef[2]=“1”をラッチする。
そして、キャプチャ回路4Aはキャプチャ動作終了後は、シリアルシフト制御信号sdrを“1”にして、フリップフロップFF10〜FF13にラッチされた符号化データef[0]〜ef[3]を、シリアルデータ出力Soとしてシリアルに出力することができる。
このように、キャプチャ回路4Aの直列シフト動作により、シリアルデータ出力Soとして故障情報が読み出せる。すなわち、シリアルデータ出力Soとして、特許文献1のシーケンシャルエンコーダ回路と同等の結果が得られることを意味し、図27で示した構成に比べ、実施の形態5の半導体集積回路は、フリップフロップの数を減少させることにより(8から4に減少)、集積度の向上を図ることができる。
上述したように、実施の形態5の半導体集積回路におけるキャプチャ回路4Aは、データ入出力ビット数である8ビットよりも少ない圧縮ビット数である4ビットのラッチ回路(フリップフロップFF10〜FF13)を設けるだけで構成することができる。そして、ラッチデータcf[3:0]は、故障ビット無しに関する第1の故障情報と、1ビット故障の存在とそのビット位置に関する第2の故障情報を示すことができる。
したがって、実施の形態5の半導体集積回路は、ビット数8のデータ入出力に対し、4ビットのラッチ回路を設ける構成で済ませる分、集積度を向上させながら、ラッチデータcf[3:0]に基づき冗長メモリ部を用いたRAM1に対する故障救済を図ることができる効果を奏する。
さらに、実施の形態5の半導体集積回路は、ラッチデータcf[3:0](符号化データef[3:0])によりRAM1のデータ入出力に2ビット以上の故障が存在することを認識することができるため、より精度の高い故障解析が行える。
加えて、実施の形態5の半導体集積回路のキャプチャ回路4Aは、ラッチデータcf[3:0]をシリアルデータ出力Soからシリアルに出力することにより、外部からシリアルデータとしてラッチデータcf[3:0]の内容を認識することができる。
また、実施の形態5の半導体集積回路のキャプチャ回路4Aのラッチ条件は、1ビット故障の故障位置に関する最初の第2の故障情報を故障無しに関する第1の故障情報より優先的にラッチするという条件を有している。このため、RAM1のデータ入出力に1ビットの故障が存在することを認識した場合、最初に検出された故障ビットの入出力に関し故障回復を確実に図ることができる。
さらに、実施の形態5の半導体集積回路のキャプチャ回路4Aのラッチ条件は、2ビット以上の故障に関する第3の故障情報を第1及び第2の故障情報より優先的にラッチする条件を有している。このため、一般的に救済不能なデータ入出力の2ビット故障の情報を優先的に得ることができ、故障回復不可能なメモリ回路の故障救済を回避して、効率的な故障回復が行える効果を奏する。
図19は図17で示した第2のエンコード例でエンコードを行うエンコード回路3に対応するキャプチャ回路4の第2の構成であるキャプチャ回路4Bの内部構成を示す回路図である。
同図に示すように、キャプチャ回路4Bは、セレクタST10〜ST13、セレクタST20〜ST23、フリップフロップFF10〜FF13、ANDゲートG61,G63、及びORゲートG62,G63,G65から構成される。
セレクタST10〜ST13、セレクタST20〜ST23、及びフリップフロップFF10〜FF13によるループ構成は図18で示したキャプチャ回路4Aの場合と同様であるため、説明を省略する。
4入力のANDゲートG61は第1〜第4入力に符号化データef[0]〜ef[3]を受ける。4入力のORゲートG62は第1〜第4入力に符号化データef[0]〜ef[3]を受ける。3入力のANDゲートG63は第1入力にANDゲートG61の出力反転信号を受け、第2入力にORゲートG62の出力信号を受ける。
ORゲートG64は一方入力にANDゲートG61の出力信号を受け、他方入力にANDゲートG63の出力信号を受ける。このORゲートG64の出力信号がキャプチャ信号CPTとしてセレクタST10〜ST13の制御入力に付与される。
4入力のORゲートG65は第1〜第4入力にラッチデータcf[0]〜cf[3]を受け、その出力信号であるフェイルフラグfail_flagがANDゲートG63の第3入力となる。
図19で示した構成のキャプチャ回路4Bのキャプチャ動作について説明する。なお、キャプチャ動作は、キャプチャ回路4Aと同様、フリップフロップFF10〜FF13を“0”に初期化した後、シリアルシフト制御信号sdrを“0”にして実行される。
まず、故障ビットが“0”の場合、すなわち、符号化データef[3:0]が“0000”の場合について説明する。
この場合、{符号化データef[3:0]=“0000”}であり、ANDゲートG61の出力が“0”、ORゲートG62の出力が“0”となりANDゲートG63の出力が“0”となるため、ORゲートG64の出力であるキャプチャ信号CPTは“0”で安定する。
したがって、セレクタST1j,セレクタST2j及びFF1j(j=0〜3)によるループは形成されるため、フリップフロップFF10〜FF13のラッチデータcf[3:0]は初期値“0000”を維持する。
その後、最初に1ビット故障が検出された場合の動作について説明する。この場合、符号化データef[3:0]=“1111”でなく、かつ、符号化データef[0]〜ef[3]の少なくとも一つが“1”となる。以下、この場合の符号化データef[3:0]を1ビット故障検出時の符号化データef[3:0]と呼ぶ。
この瞬間、ラッチデータcf[0]〜cf[3]は全て初期化時の“0”を維持しているため、ORゲートG65の出力であるフェイルフラグfail_flagは“0”を維持している。
したがって、ANDゲートG61の出力が“0”(反転信号が“1”)、ORゲートG62の出力が“1”、フェイルフラグfail_flagが“0”(反転信号が“1”)となるため、ANDゲートG63の出力が“1”となり、ORゲートG64の出力であるキャプチャ信号CPTが“1”となる。
その結果、最新の符号化データef[0]〜ef[3]の値がフリップフロップFF10〜FF13にラッチされる。
そして、符号化データef[0]〜ef[3]のうち少なくとも一つが“1”となり、フェイルフラグfail_flagが“1”となり、ANDゲートG63の出力が“0”に戻る結果、ORゲートG64の出力であるキャプチャ信号CPTが再び“0”に戻る。
その後、ラッチされたラッチデータcf[0]〜cf[3]が、セレクタST1j,セレクタST2j及びFF1jよるループ回路により維持される。
符号化データef[3:0]=“1111”でなく、かつ、符号化データef[0]〜ef[3]の少なくとも一つが“1”となる符号化データef[0]〜ef[3]がフリップフロップFF10〜FF13にラッチされる。その結果、前述したように、ORゲートG65の出力であるフェイルフラグfail_flagが“1”に固定される。したがって、その後に、1ビット故障検出時の符号化データef[3:0]が入力されても、ANDゲートG63の出力が“1”になることはなく、キャプチャ信号CPTは“0”を維持し、フリップフロップFF10〜FF13に取り込まれることはない。
次に、2ビット以上の故障が検出された場合を説明する。この場合{符号化データef[3:0]=“1111”}を満足するため、ANDゲートG61の出力が“1”となり、ORゲートG64の出力であるキャプチャ信号CPTが“1”となる。
その結果、符号化データef[3:0]=“1111”が、フリップフロップFF10〜FF13にラッチされる。
そして、符号化データef[0]〜ef[3]の全てが“1”となり、フェイルフラグfail_flagが“1”となり、ANDゲートG63の出力が“0”に戻る結果、新たな符号化データef[3:0]の入力時には、ORゲートG64の出力であるキャプチャ信号CPTが再び“0”に戻る。
また、符号化データef[3:0]=“1111”がフリップフロップFF10〜FF13にラッチされる。したがって、前述したようにORゲートG65の出力であるフェイルフラグfail_flagが“1”に固定される。したがって、その後に、1ビット故障検出時の符号化データef[3:0]が入力されても、フリップフロップFF10〜FF13に取り込まれることはない。
このように、第2の構成例であるキャプチャ回路4Bは、故障が全く無い場合はラッチデータcf[0]〜cf[3]として全て“0”となる。1ビット故障が検出された場合は、最初に検出された1ビット故障の{故障位置+1}を示すラッチデータcf[0]〜cf[3]をラッチする。そして、2ビット以上故障が検出された場合は、符号化データef[3:0]=“1111”をラッチする。
そして、キャプチャ回路4Bはキャプチャ動作終了後は、シリアルシフト制御信号sdrを“1”にして、フリップフロップFF10〜FF13にラッチされた符号化データef[0]〜ef[3]を、シリアルデータ出力Soとしてシリアルに出力することができる。
このように、キャプチャ回路4Bを用いることによってもキャプチャ回路4Aを用いる場合と同様の効果を得ることができる。
<実施の形態6>
図20はこの発明の実施の形態6である故障解析機能を有する半導体集積回路の第1の態様を示す回路図である。同図に示すように、RAM9は、4ビット(所定ビット数)のデータ入出力機能(データ入力Din[0]〜Din[3]及びデータ出力Dout[0]〜Dout[3]についての機能)を有している。
RAM9のデータ入力Din[0]〜Din[3]及びデータ出力Dout[0]〜Dout[3]に対する制御可能なデータ入出力制御部5が設けられる。
同図に示すように、1ビット入出力制御部20は、セレクタST0、EXORゲートG10及びANDゲートG20に加え、セレクタST30,ST40,ORゲートG40及びフリップフロップFF30から構成される。
セレクタST0は“0”入力に書き込みデータsys_din[0]を受け、“1”入力に書き込みデータbist_din[0]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST0の出力がRAM入力データmem_din[0]としてRAM9のデータ入力Din[0]に入力される。
セレクタST30は“1”入力にデータ出力Dout[2]を受け、“0”入力にデータ出力Dout[0]を受け、制御入力にデータ出力選択信号seldoを受ける。EXORゲートG10は一方入力に書き込みデータbist_exp[0]を受け、他方入力にセレクタST30の出力を受ける。ANDゲートG20は一方入力に比較イネーブル信号comp_enを受け、他方入力にEXORゲートG10の出力を受ける。
ORゲートG40は一方入力にANDゲートG20の出力を受ける。セレクタST40は“1”入力に1ビット入出力制御部21のフリップフロップFF31の出力を受け、“0”入力にORゲートG40の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。
フリップフロップFF30は入力部にセレクタST40の出力を受け、その出力がORゲートG40の他方入力として帰還する。また、フリップフロップFF30の出力はシリアルデータ出力Soして出力される。データ出力Dout[0]は書き込みデータsys_din[0]として出力される。
また、1ビット入出力制御部21は、セレクタST1、EXORゲートG11及びANDゲートG21に加え、セレクタST31,ST41,ORゲートG41及びフリップフロップFF31から構成される。
セレクタST1は“0”入力に書き込みデータsys_din[1]を受け、“1”入力に書き込みデータbist_din[1]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST1の出力がRAM入力データmem_din[1]としてRAM9のデータ入力Din[1]に入力される。
セレクタST31は“1”入力にデータ出力Dout[3]を受け、“0”入力にデータ出力Dout[1]を受け、制御入力にデータ出力選択信号seldoを受ける。EXORゲートG11は一方入力に書き込みデータbist_exp[1]を受け、他方入力にセレクタST31の出力を受ける。ANDゲートG21は一方入力に比較イネーブル信号comp_enを受け、他方入力にEXORゲートG11の出力を受ける。
ORゲートG41は一方入力にANDゲートG21の出力を受ける。セレクタST41は“1”入力にシリアルデータ入力Siを受け、“0”入力にORゲートG41の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。
フリップフロップFF31は入力部にセレクタST41の出力を受け、その出力がORゲートG41の他方入力として帰還する。また、フリップフロップFF31の出力は前述したように1ビット入出力制御部20のセレクタST40の“1”入力にも付与される。また、データ出力Dout[1]は書き込みデータsys_din[1]として出力される。
一方、1ビット入出力制御部22は、セレクタST2のみから構成される。セレクタST2は“0”入力に書き込みデータsys_din[2]を受け、“1”入力に書き込みデータbist_din[2]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST2の出力がRAM入力データmem_din[2]としてRAM9のデータ入力Din[2]に入力される。
また、データ出力Dout[2]は書き込みデータsys_din[2]として出力されるとともに、前述したように1ビット入出力制御部20のセレクタST30“1”入力にも付与される。
同様にして、1ビット入出力制御部23は、セレクタST3のみから構成される。セレクタST3は“0”入力に書き込みデータsys_din[3]を受け、“1”入力に書き込みデータbist_din[3]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST3の出力がRAM入力データmem_din[3]としてRAM9のデータ入力Din[3]に入力される。
また、データ出力Dout[3]は書き込みデータsys_din[3]として出力されるとともに、前述したように1ビット入出力制御部21のセレクタST31“1”入力にも付与される。
このような構成において、データ出力選択信号seldoによって書き込みデータbist_exp[0]と比較するデータ出力を、データ出力Dout[0]あるいはデータ出力Dout[2]に切り替えて、比較回路(EXORゲートG10,ANDゲートG20)に入力し、その比較結果をフリップフロップFF30にラッチさせることができる。
同様にして、データ出力選択信号seldoによって書き込みデータbist_exp[1]と比較するデータ出力を、データ出力Dout[1]あるいはデータ出力Dout[3]に切り替えて、比較回路(EXORゲートG11,ANDゲートG21)に入力し、その比較結果をフリップフロップFF31にラッチさせることができる。
また、実施の形態6の半導体集積回路は、実施の形態5の半導体集積回路と同様、テスト用書き込みデータ(wd[0],wd[1])やテスト用期待値(cd[0],cd[01)は信号配線を減らす目的で、偶数番と奇数番の入出力ビットの2つにグループ化している。
このように、テスト時にデータ出力選択信号seldoを適宜変化させてRAM9のデータ出力Dout[0]〜Dout[3]全てにアクセスさせることにより、4ビットのデータ出力Dout[0]〜Dout[3]に対する比較結果を、2つのフリップフロップFF30,FF31にラッチさせることができる。
実施の形態6の第1の態様の半導体集積回路のデータ入出力制御部5は、故障位置情報が不要な場合(例えば、RAM9に対するIO救済を適用しない場合等)に有効な回路である。
ただし、第1の態様では、フリップフロップFF30及びFF31のうち、いずれのラッチデータであったかを識別することにより、故障ビットが奇数ビットで発生したか、偶数ビットで発生したかを認識することはできる。
このように、実施の形態6の半導体集積回路の第1の態様は、2つのデータ出力Dout[i]に対して1つの割合で設けられた比較回路(G10,G20あるいはG11,G21)の比較結果を一つのフリップフロップ(FF30あるいはFF31)に格納させている。このため、図27で示した従来構成のデータ入出力が4ビット構成であると仮定した場合に比べ、データ入出力ビット数「4」よりも少ないフリップフロップの数「2」で構成できるため、集積度の向上を図りながら、RAM9に対する故障解析を行うことができる効果を奏する。
図20で示したデータ入出力制御部5では、2入力のセレクタST30,ST31を用いて2ビットのデータ出力Dout[i]の選択を行っているが、RAMのI/Oビット数に応じて3入力以上のセレクタを用いて3ビット以上のデータ出力Dout[i]の選択を行うことにより、さらなる集積度向上を図ることができる。
図21はこの発明の実施の形態6である故障解析機能を有する半導体集積回路の第2の態様を示す回路図である。同図に示すように、RAM9に対してデータ入出力制御部6が設けられている。
同図に示すように、1ビット入出力制御部30は、セレクタST0、EXORゲートG10に加え、セレクタST30,ST40,ORゲートG40及びフリップフロップFF30から構成される。
セレクタST0は“0”入力に書き込みデータsys_din[0]を受け、“1”入力に書き込みデータbist_din[0]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST0の出力がRAM入力データmem_din[0]としてRAM9のデータ入力Din[0]に入力される。
セレクタST30は“1”入力にデータ出力Dout[2]を受け、“0”入力にデータ出力Dout[0]を受け、制御入力にデータ出力選択信号seldoを受ける。EXORゲートG10は一方入力に書き込みデータbist_exp[0]を受け、他方入力にセレクタST30の出力を受ける。
ORゲートG40は一方入力に1ビット入出力制御部31からの故障信号Sfailを受ける。セレクタST40は“1”入力にシリアルデータ入力Siを受け、“0”入力にORゲートG40の出力を受け、制御入力にシリアルシフト制御信号sdrを受ける。
フリップフロップFF30は入力部にセレクタST40の出力を受け、その出力がORゲートG40の他方入力として帰還する。また、フリップフロップFF30の出力はシリアルデータ出力Soして出力される。データ出力Dout[0]は書き込みデータsys_din[0]として出力される。
また、1ビット入出力制御部31は、セレクタST1、EXORゲートG11及びANDゲートG21に加え、セレクタST31及びORゲート29から構成される。
セレクタST1は“0”入力に書き込みデータsys_din[1]を受け、“1”入力に書き込みデータbist_din[1]を受け、制御入力にモードセレクタ制御信号selmiを受ける。そして、セレクタST1の出力がRAM入力データmem_din[1]としてRAM9のデータ入力Din[1]に入力される。
セレクタST31は“1”入力にデータ出力Dout[3]を受け、“0”入力にデータ出力Dout[1]を受け、制御入力にデータ出力選択信号seldoを受ける。EXORゲートG11は一方入力に書き込みデータbist_exp[1]を受け、他方入力にセレクタST31の出力を受ける。
ORゲート29は一方入力にEXORゲートG11の出力を受け、他方入力に1ビット入出力制御部30のEXORゲートG10の出力を受ける。
ANDゲートG21は一方入力に比較イネーブル信号comp_enを受け、他方入力にORゲート29の出力を受ける。このANDゲートG21の出力が前述したように故障信号Sfailとして1ビット入出力制御部30のORゲートG40の一方入力として付与される。
一方、1ビット入出力制御部32は、セレクタST2のみから構成され、第1の態様の1ビット入出力制御部22と同様な構成を呈する。また、1ビット入出力制御部33は、セレクタST3のみから構成され、第1の態様の1ビット入出力制御部23と同様な構成を呈する。
このような構成において、データ出力選択信号seldoによって書き込みデータbist_exp[0]と比較するデータ出力を、データ出力Dout[0]あるいはデータ出力Dout[2]に切り替えて、比較回路(EXORゲートG10,ORゲート29,ANDゲートG21)に入力し、その比較結果をフリップフロップFF30にラッチさせるさせることができる。
同様にして、データ出力選択信号seldoによって書き込みデータbist_exp[1]と比較するデータ出力を、データ出力Dout[1]あるいはデータ出力Dout[3]に切り替えて、比較回路(EXORゲートG11,ORゲート29,ANDゲートG21)に入力し、その比較結果をフリップフロップFF30にラッチさせることができる。
このように、第2の態様では、テスト時にデータ出力選択信号seldoを適宜変化させてRAM9のデータ出力Dout[0]〜Dout[3]全てにアクセスさせることにより、4ビットのデータ出力Dout[0]〜Dout[3]に対する比較結果を、2つの比較結果(EXORゲートG10,G11の出力)として得ることができる。
さらに、実施の形態6の半導体集積回路の第2の態様は、上記した2つの比較結果のうち少なくとも一つの比較結果が故障ビット有りを指示するか否かを判定して得られる総合比較結果である故障信号Sfailをラッチするラッチ部(フリップフロップFF30)を設ける構成を呈している。
その結果、2つの比較結果に対し故障信号Sfailをラッチする一のフリップフロップFF30を設ける構成が実現する分、実施の形態6の第2の態様は第1の態様以上に集積度を向上させながら、RAM9に対する故障解析を行うことができる効果を奏する。
このように、実施の形態6の半導体集積回路の第2の態様は、第1の態様の効果と併せて、4ビットのデータ出力Dout[i]に対する比較結果を一つのフリップフロップに格納させることにより、図27で示した構成に比べ、フリップフロップの数を減少させることにより(4から1に減少)、さらなる集積度の向上を図ることができる。
ただし、第2の態様では、第1の態様のように、故障ビットが奇数ビットで発生したか、偶数ビットで発生したかを認識することはできない。
実施の形態6の第2の態様の半導体集積回路のデータ入出力制御部6は、第1の態様と同様、故障位置情報が不要な場合に有効な回路である。
図21で示したデータ入出力制御部6では、2入力のセレクタST30,ST31を用いてデータ出力Dout[i]の選択を行っているが、RAMのI/Oビット数に応じて3入力以上のセレクタを用いることもできる。
<実施の形態7>
(発明の原理)
図28は従来の故障解析機能を有する半導体集積回路の構成を示す説明図である。同図に示すように、RAM41はチップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]、データ入力Din[*]及びデータ出力Doutを有してる。
そして、RAM41に対する故障ビットの有無をテスト可能にすべく、比較部42、セレクタST50〜ST53及びANDゲートG50を設けている。
比較部42はデータ出力Doutと書き込み期待値bist_extとを比較して、故障ビットの有無を示す比較結果信号bist_resultとして出力する。
セレクタST50は“1”入力にチップイネーブル信号bist_ceを受け、“0”入力にチップイネーブル信号sys_ceを受け、制御入力にモードセレクタ制御信号selmiを受ける。
ANDゲートG50は一方入力にセレクタST50の出力を受け、他方入力にテスト選択信号Tselを受ける。テスト選択信号Tselはテスト時においてテスト時選択対象RAMに対し“1”、テスト時対象外のRAMに対し“0”となる信号である。このANDゲートG50の出力がRAM41のチップイネーブル入力CEに付与される。
セレクタST51は“1”入力にライトイネーブル信号bist_weを受け、“0”入力にライトイネーブル信号sys_weを受け、制御入力にモードセレクタ制御信号selmiを受ける。セレクタST51の出力がRAM41のライトイネーブル入力WEに付与される。
セレクタST52は“1”入力にアドレス信号bist_ad[*]を受け、“0”入力にアドレス信号sys_ad[*]を受け、制御入力にモードセレクタ制御信号selmiを受ける。セレクタST52の出力がRAM41のアドレス入力AD[*]に付与される。
セレクタST53は“1”入力にアドレス信号書き込みデータbist_din[*]を受け、“0”入力に書き込みデータsys_din[*]を受け、制御入力にモードセレクタ制御信号selmiを受ける。セレクタST53の出力がRAM41のデータ入力Din[*]に付与される。
なお、チップイネーブル信号bist_ce、ライトイネーブル信号bist_we、アドレス信号bist_ad[*]、書き込みデータbist_din[*]はテスト時に用いられる信号を意味する。一方、チップイネーブル信号sys_ce、ライトイネーブル信号sys_we、アドレス信号sys_ad[*]、書き込みデータsys_din[*]は通常動作時に用いられる信号を意味する。
このような構成において、テスト選択信号Tselが“0”である、RAM41がテスト対象外である場合に、ANDゲートG50の出力を“0”にしてRAM41のチップイネーブル入力CEを強制的に“0”にしてRAM41を不活性に制御する。その結果、RAM41がテスト対象外の場合におけるテスト時のRAM41の消費電力を減らすことが行われていた。
しかし、ライトイネーブル信号bist_we、アドレス信号bist_ad[*]、及び書き込みデータbist_din[*]が、RAM41のライトイネーブル信号WEや、アドレス信号AD、及びデータ入力信号Dinとして入力されていた。
したがって、RAM41のライトイネーブル信号WEや、アドレス信号AD、及びデータ入力信号Dinが変化することにより、テスト対象外の場合でもテスト時にRAM41の内部の信号バッファ等が動作し、電力を消費するという問題があった。
例えば、RAM41相当の100個のRAMが存在し、10個のRAMをテストする時に90個のRAMをテスト対象外としてチップイネーブル入力CEを“0”に制御しても、これら90個のRAMの内部で電力が僅かずつ消費されるために全体として大きな電力を消費することになる。この不要な電力消費はテスト時の電源電圧変動などを招き、高精度なテストを妨げる要因になるという問題点があった。実施の形態7は上記問題点を解決するためになされたものである。
(実施の形態7の構成)
図22はこの発明の実施の形態7である故障解析機能を有する半導体集積回路の構成を示す説明図である。同図に示すように、RAM41はチップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]、データ入力Din[*]及びデータ出力Doutを有してる。
そして、RAM41に対する故障ビットの有無をテスト可能にすべく、比較部42、セレクタST50〜ST53及びANDゲートG50〜G53を設けている。以下、図28で示した構成と異なる点を中心に説明する。
セレクタST51は“1”入力にライトイネーブル信号bist_weを受け、“0”入力にライトイネーブル信号sys_weを受け、制御入力にモードセレクタ制御信号selmiを受ける。
ANDゲートG51は一方入力にセレクタST51の出力を受け、他方入力にテスト選択信号Tselを受ける。ANDゲートG51の出力がRAM41のライトイネーブル入力WEに付与される。
セレクタST52は“1”入力にアドレス信号bist_ad[*]を受け、“0”入力にアドレス信号sys_ad[*]を受け、制御入力にモードセレクタ制御信号selmiを受ける。
ANDゲートG52は一方入力にセレクタST52の出力を受け、他方入力にテスト選択信号Tselを受ける。ANDゲートG52の出力がRAM41のアドレス入力AD[*]に付与される。
セレクタST53は“1”入力にアドレス信号書き込みデータbist_din[*]を受け、“0”入力に書き込みデータsys_din[*]を受け、制御入力にモードセレクタ制御信号selmiを受ける。
ANDゲートG53は一方入力にセレクタST53の出力を受け、他方入力にテスト選択信号Tselを受ける。このANDゲートG53のがRAM41のデータ入力Din[*]に付与される。なお、他の構成は図28で示した構成と同様である。
したがって、ANDゲートG50〜G53は、テスト選択信号Tselがテスト対象外であることを指示する“0”である場合、チップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]、データ入力Din[*]を“0”に無効化するテスト対象外時無効化手段として機能する。
このような構成において、実施の形態7の半導体集積回路は、テスト選択信号Tselを“0”とすることにより、RAM41がテスト対象外の場合に、RAM41のチップイネーブル入力CEを“0”にしてRAM41を不活性に制御してスト時の消費電力を減らす。
さらに、実施の形態7の半導体集積回路は、ANDゲートG51〜G53の出力をも“0”にして、RAM41のライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]をも強制的に“0”にして、これらの入力をも固定する。
その結果、RAM41のライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]の電圧変化に起因する消費電力増大を完全に回避することができる。その結果、テスト対象外の場合はテスト時の電源電圧変動などを招くことはなく、高精度なテストを妨げる要因を皆無にすることにより、実施の形態7の半導体集積回路は、より精度の高い故障検出を行うことができるという効果を奏する。
なお、実施の形態7では、ライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]の全てを固定にする構成にしたが、部分的にゲート回路を挿入しても効果が得られる。例えば、データ入力Din[*]のみをテスト選択信号Tselの“0”時に固定する構成にしても、固定される信号についての影響を確実に回避する効果を奏する。
また、図22ではANDゲートG50〜G53をRAMの41入力端子部に挿入しているが、セレクタST50〜ST53のBIST信号入力側(bist_ce,bist_we,bist_ad,bist_din)に挿入してもよい。この場合、半導体集積回路のノーマル動作時にテスト選択信号Tselを“1”に設定する必要はなくなるという利点がある。
なお、図22では1つのRAM41を例に挙げて示したが、チップイネーブル入力CE、ライトイネーブル入力WE、アドレス入力AD[*]及びデータ入力Din[*]の入力制御をRAM41と同様に行う複数のRAMから半導体集積回路を構成することも考えられる。すなわち、RAM41相当の複数のRAMと、複数のRAMに対して設けられた複数の上記テスト対象外無効化手段相当の手段(但し、テスト選択信号Tselは各々独立)からなる半導体集積回路を構成することが考えられる。そして、上述した複数の上記テスト対象外無効化手段相当の手段を一括りとして一のテスト対象外無効化手段と考えることができる。
このような構成の半導体集積回路に対し、上記複数のRAMのうちの一部のグループ毎に順次テストする場合は以下の処理が可能となる。この場合、上記複数のRAMのうちテスト対象外のRAMは、上記一のテスト対象外無効化手段(テスト対象外のRAMに対応する上記テスト対象外時無効化手段相当の手段)により、チップイネーブル入力CEを“0”に設定すると共に、ライトイネーブル入力WE、アドレス入力AD[*]、及びデータ入力Din[*]のうち少なくとも一つを"0"に無効化することができる。
<実施の形態8>
図23はこの発明の実施の形態8である故障解析機能を有する半導体集積回路の構成を示す説明図である。
同図に示すように、n個の救済解析回路付きRAM部M1〜Mnに対し、一単位のORゲート45、1ビット以上エラー検出部46、2ビット以上エラー検出部47及びシーケンシャルエンコーダ48を設けている。
救済解析回路付きRAM部M1は、RAM41、セレクタST50〜ST53、ANDゲートG50、比較部42、FAC回路43及びシリアライザー44から構成される。なお、説明の都合上、図23において救済解析回路付きRAM部M1についてのみ内部構成の詳細を図示している。
RAM41は、図示しないが、ロウアドレス単位に置き換え可能な冗長メモリ部を有している。
FAC(Fail Address Capture)回路43は比較部42より故障発生の有無を示す故障信号Sfailを受け、故障信号Sfailが“1”を出力したときの、アドレス信号bist_ad[*]を認識する。そして、FAC回路43は、故障信号Sfailが“1”の時に認識したアドレス信号bist_ad[*]のうちロウアドレスを指示するアドレスをファイルアドレスfail_addressとして出力する。
シリアライザー44は故障信号Sfail及びファイルアドレスfail_addressを受け、一度でも故障信号Sfailが“1”(故障有り)を出力した場合、ファイルアドレスfail_addressに基づき得られる32ビットのOne-HotデータOH1(故障シリアル情報)を出力する。One-HotデータOH1は、ファイルアドレスfail_addressを指示する箇所のビットのみ“1”に変換して、他は“0”にした32ビット構成のビット群からなるデータを意味する。
なお、救済解析回路付きRAM部M1における他の構成は図28で示した構成と同様であるため、説明を省略する。
救済解析回路付きRAM部Mnも救済解析回路付きRAM部M1と同様な構成を呈し、シリアライザー44より32ビットのOne-HotデータOHnを出力する。なお、救済解析回路付きRAM部Mnの実際のOne-Hotデータの有効ビット数は16ビットであるが、他のOne-Hotデータとの整合を取るべく32ビットで出力される。この場合、先頭の16ビットは“0”に固定される。
同様にして、他の救済解析回路付きRAM部Mv(v=2〜(n−1))も同様に構成され、シリアライザー44相当から32ビット構成のビット群からなるOne-HotデータOHvがそれぞれ出力される。
このように、One-HotデータOH1〜OHn間において、ビット群のビット数は同一ビット数である32ビットで統一される。
図23で示す例では、故障信号Sfailが“1”となった時のアドレス信号bist_ad[*]のロウアドレス信号(この例では、bist_ad[6:2])をFAC回路43でキャプチャ動作を行う。例えば、ファイルアドレスfail_addressとして“11101”(10進で「29」)がFAC回路43でキャプチャされた場合、テスト終了後にこの5ビットのデータをシリアライザー44によって、32ビットのOne-Hotデータ(“1”が1つだけ存在)に変換する。
シリアライザー44として例えばカウントダウン処理が可能なダウンカウンタを用い、ファイルアドレスfail_addressを初期値として入力する構成が考えられる。この場合、シリアライザー44は、ファイルアドレスfail_addresssのロード後に、カウントダウンを行う毎に“0”をシリアルに出力し、カウント値が“0”なった時だけ“1”を出力する。そして、シリアライザー44は、“1”出力後は、One-HotデータOH1のビット群のビット数を満足させるビット数分“0”をシリアル出力する。
n入力のORゲート45はOne-HotデータOH1〜OHnを先頭ビットからビット単位にシリアル入力し、ビット単位にn個のシリアル出力の論理和を得、論理和によりなる32ビット構成のビット群を出力信号S45として出力する。この出力信号S45がOne-HotデータOH1〜OHnのビット単位の論理和より順次得られる総合故障シリアル情報となる。
1ビット以上エラー検出部46は出力信号S45を1ビット毎に検証し、1ビット以上の“1”を検出したとき、救済要否フラグF1を“1”に設定し、それ以外の場合は救済要否フラグF1を“0”に設定する。
2ビット以上エラー検出部47は出力信号S45を1ビット毎に検証し、2ビット以上の“1”を検出したとき、救済不可フラグF2を“1”に設定し、それ以外の場合は救済不可フラグF2を“0”に設定する。
シーケンシャルエンコーダ48は出力信号S45をシリアル入力し、出力信号S45の“1”入力位置に基づき、その故障個所を示す救済ロウアドレスRRAを出力する。
このような構成の実施の形態8の半導体集積回路は、救済要否フラグF1=“1”でかつ、救済不可フラグF2が“0”の場合、救済可能な救済ロウアドレスRRAは一意に決定する。このように、救済要否フラグF1を設定する1ビット以上エラー検出部46と救済不可フラグF2を設定する2ビット以上エラー検出部47とにより救済可能性の有無を検出する救済可能性検証部を構成している。
その結果、救済要否フラグF1=“1”,救済不可フラグF2=“0”の際、救済解析回路付きRAM部M1〜MnのRAM41に対し一括して、救済ロウアドレスRRAの指示するロウアドレスを救済メモリのアドレスに置き換えることにより、救済解析回路付きRAM部M1〜Mn全体として故障救済を図ることができる。このように、シーケンシャルエンコーダ48は、出力信号S45に基づき故障個所を求めて救済情報を得る救済情報取得部として機能する。
図23で示す例では、One-HotデータOH1のみ“000…0100”で、One-HotデータOH2〜OHnが全ビット“0”の場合、救済要否フラグF1が“1”、救済不可フラグF2が“0”、救済ロウアドレスRRAとして“11101”(10進数で29)が出力される。その結果、救済解析回路付きRAM部M1〜Mnそれぞれにおいてロウアドレス29番の故障救済を行うことにより、救済解析回路付きRAM部M1〜Mn全体の故障救済を図ることができる。なお、故障救済は図示しないヒューズ回路やレジスタにより置換アドレス及び置換イネーブル信号を救済解析回路付きRAM部M1〜MnのRAM41に与えることより行われる。
なお、上記例の場合、救済解析回路付きRAM部M1以外の救済解析回路付きRAM部M2〜Mnは、実際には故障していないロウアドレス29番が冗長メモリに置換されることになるが、冗長メモリが正常であれば、動作に支障が生じることはない。
このように、実施の形態8の半導体集積回路は、複数の故障シリアル情報であるOne-HotデータOH1〜OHnのビット単位の論理和より順次得られる総合故障シリアル情報である出力信号S45を得ている。そして、出力信号S45に基づき、1ビット以上エラー検出部46、2ビット以上エラー検出部47及びシーケンシャルエンコーダ48により、救済可能性の有無を検出し、故障個所を求めて救済情報を得ている。
したがって、実施の形態8の半導体集積回路は、救済解析回路付きRAM部M1〜Mnに対し一括して故障救済を図ることができる分、故障救済機能を効率化を図ることができる。
この際、実施の形態8の半導体集積回路は、救済ロウアドレスRRAに基づき、救済解析回路付きRAM部M1〜Mnに対する故障ロウアドレスの救済を図ることができる。
<実施の形態9>
図24はこの発明の実施の形態9である故障解析機能を有する半導体集積回路の構成を示す説明図である。
同図に示すように、n個の救済解析回路付きRAM部M1〜Mnに対し、一単位のANDゲート54、ORゲート55、1ビット以上エラー検出部46、2ビット以上エラー検出部47、シーケンシャルエンコーダ48及びヒューズ回路71を設けている。
救済解析回路付きRAM部M1は、図23で示した実施の形態8と同様、RAM41、セレクタST50〜ST53、ANDゲートG50、比較部42、FAC回路43及びシリアライザー44から構成される。
同様にして、図示しない他の救済解析回路付きRAM部Mv(v=2〜n)も同様に構成され、シリアライザー44相当からOne-HotデータOHvがそれぞれ出力される。ただし、救済解析回路付きRAM部M1〜Mnの少なくとも一つにI/Oビットに関する救済解析回路付きRAM部Mkを含んでいる。
救済解析回路付きRAM部Mkは、RAM49、セレクタST60〜ST62、ANDゲートG60及びデータ入出力制御部8から構成される。RAM49は図示しないが、例えば、実施の形態1において図4で示した予備メモリ列RMCのような冗長メモリ部を有している。
セレクタST60〜ST62は、救済解析回路付きRAM部M1のセレクタST50〜ST52と等価な働きをし、ANDゲートG60はANDゲートG50と等価な働きをする。データ入出力制御部8はデータ入力Din及びデータ出力Doutに接続され、図27で示したデータ入出力制御部53と等価な働きをする。したがって、データ入出力制御部8のシリアルデータ出力SoからI/Oビットの故障解析結果をシリアルに出力することができる。
ANDゲート54は一方入力をデータ入出力制御部8のシリアルデータ出力Soからの出力とし、他方入力に有効ビット指示シリアル信号valid_soを受ける。有効ビット指示シリアル信号valid_soは、データ入出力制御部8の有効I/Oビット数分“1”を示し、以降は“0”のシリアル出力を行う。
したがって、ANDゲート54は救済解析回路付きRAM部Mkの故障I/Oビット位置のみ“1”を示すOne-HotデータOHkを出力することができる。例えば、RAM49の有効ビット数が4で、故障I/Oビット番号が3の場合を考える。この場合、データ入出力制御部8のシリアルデータ出力Soからの出力は“0001×××…”(×は不定)となる。一方、有効ビット指示シリアル信号valid_soは“11110000…”となる。その結果、One-HotデータOHkは“00010000…”となる。
そして、このように、One-HotデータOH1〜OHn間において、実施の形態8と同様、ビット群のビット数は同一ビット数である32ビットで統一される。
n入力のORゲート55は、One-HotデータOH1〜OHnを先頭ビットからビット単位にシリアル入力し、シリアルにn個のOR演算出力の32ビット分のビット群を出力信号S55としてシリアルに出力する。この出力信号S55がOne-HotデータOH1〜OHnのビット単位の論理和より順次得られる総合故障シリアル情報となる。
1ビット以上エラー検出部46は出力信号S55を1ビット毎に検証し、1ビット以上の“1”を検出したとき、救済要否フラグF1を“1”に設定し、それ以外のとき救済要否フラグF1を“0”に設定する。
2ビット以上エラー検出部47は出力信号S55を1ビット毎に検証し、2ビット以上の“1”を検出したとき、救済不可フラグF2を“1”に設定し、それ以外のとき救済不可フラグF2を“0”に設定する。
シーケンシャルエンコーダ48は出力信号S55をシリアル入力し、その故障個所を示す救済ロウアドレスRRAを出力する。なお、救済ロウアドレスRRAは救済解析回路付きRAM部Mkについては救済I/Oビット位置を意味する。
このような構成の実施の形態9の半導体集積回路は、救済要否フラグF1=“1”でかつ、救済不可フラグF2が“0”の場合、救済可能な救済ロウアドレスRRAは一意に決定する。
すなわち、ヒューズ回路71が救済ロウアドレスRRAに基づき、救済ロウアドレスRRAの指示するロウアドレスを置換アドレスRep_Addとして出力し、置換イネーブル信号Rep_Enを“1”(有効)として、救済解析回路付きRAM部M1〜Mnに付与する。その結果、救済解析回路付きRAM部M1〜Mnで一括して置換アドレスRep_Addの指示するアドレスを救済することができる。これらの置換アドレスRep_Add及び置換イネーブル信号Rep_Enは、実施の形態1〜実施の形態4で示した救済制御信号(rai1[*],ren1, rai2[*],ren2, rai3[*],ren3等)に相当する。
なお、救済解析回路付きRAM部Mkについては置換アドレスRep_Addは置換I/Oビット番号Rep_I/Oとしてとして入力されることになる。
図24で示す例では、One-HotデータOHkのみ“00010000…”で、他のOne-Hotデータが全ビット“0”の場合、救済要否フラグF1が“1”、救済不可フラグF2が“0”、救済ロウアドレスRRAが“00011”(10進数で3)を出力する。その結果、ヒューズ回路71から、救済解析回路付きRAM部M1〜MnそれぞれのRAM41においてロウアドレス(置換アドレスRep_Add)3番の故障救済を行うことにより、救済解析回路付きRAM部M1〜Mn全体の故障救済を図ることができる。ただし、救済解析回路付きRAM部MkのRAM49に対してはI/Oビット番号(置換I/Oビット番号Rep_I/O)3のI/Oビットの救済が行われる。
上記例の場合、救済解析回路付きRAM部Mk以外の救済解析回路付きRAM部M1〜Mnは、実際には故障していないロウアドレス3番が冗長メモリに置換されることになるが、冗長メモリが正常であれば、動作に支障が生じることはない。
一方、図23で示す実施の形態8の例のように、One-HotデータOH1のみ“000…0100”で、One-HotデータOH2〜OHnが全ビット“0”の場合、救済要否フラグF1が“1”、救済不可フラグF2が“0”、救済ロウアドレスRRAとして“11101”(10進数で29)が出力される。その結果、救済解析回路付きRAM部M1〜Mnそれぞれにおいてロウアドレス29番の故障救済を行うことにより、救済解析回路付きRAM部M1〜Mn全体の故障救済を図ることができる。ただし、救済解析回路付きRAM部MkのRAM49に対してはI/Oビット番号1(29の下位2ビットの値が“01”のため)のI/Oビットの救済が行われる。
なお、上記例の場合、救済解析回路付きRAM部M1以外の救済解析回路付きRAM部M2〜Mnは、実際には故障していないロウアドレス29番が冗長メモリに置換されることになるが、冗長メモリが正常であれば、動作に支障が生じることはない。
このように、実施の形態9の半導体集積回路は、実施の形態8の半導体集積回路の効果に加え、救済解析回路付きRAM部M1〜MnのRAM41に対する故障ロウアドレスの救済と共に救済解析回路付きRAM部MkのRAM49の入出力ビットの救済をも図ることができる効果を奏する。
1,9 RAM、2,5,6 データ入出力制御部、3 エンコード回路(ENC回路)、4,4A,4B キャプチャ回路(EFC回路)、44 シリアライザー、45,55 ORゲート、46 1ビット以上エラー検出部、47 2ビット以上エラー検出部、48 シーケンシャルエンコーダ、54,G50〜G53 ANDゲート、101〜109 RAM、110,180 BIST制御回路、111〜113,115 セレクタ群、120〜123 パターン発生回路、130〜137 救済デコーダ、150,160,170,171 救済解析回路、152 マルチフェイル回路、153 シーケンシャルエンコーダ、201〜203 結果ラッチ、211〜213 モードセレクタ、221〜223 比較器、301〜309 ブリッジ回路、400〜402 RAMグループ、405 セレクタ、M1〜Mn,Mk 救済解析回路付きRAM部。