以下、図面を参照して実施の形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。
図1は、一実施形態に係る半導体集積回路の概略構成の一例を示す模式図である。
図1に示される半導体集積回路100は、SRAM(Static Random Access Memory)マクロ1を備える。このSRAMマクロ1の周囲には、BIST(Built-In Self-Test)回路2や選択器3が配置されている。
SRAMマクロ1は、所定の回路から送られてくるデータあるいはBIST回路2から送られてくるデータを、入力端子1aから入力し、入力したデータを内部のSRAMに一時的に書き込むとともに、SRAMからデータを読み出し、読み出したデータを出力端子1bから出力する。出力されたデータは、所定の回路へあるいはBIST回路2へ送られる。
BIST回路2は、SRAMコア12に対するメモリテストを実施するための回路である。
選択器3は、外部から供給される所定の選択信号(図示せず)に従い、所定の回路から送られてくるデータがSRAMマクロ1の入力端子1aへ送られる経路と、BIST回路2から送られてくるデータがSRAMマクロ1の入力端子1aへ送られる経路とのいずれか一方が有効となるように経路の選択を行うものである。
上記SRAMマクロ1には、入力されるデータに対応するコードを生成する第1のECC(Error Correction Code)回路11、データの読み書きが行われるデータ記憶部12aおよびECC記憶部12bの読み書きが行われるECC記憶部12bを有するSRAMコア12、SRAMコア12から読み出されるデータとコードとに基づき当該データの誤り検出もしくは訂正の処理を行う第2のECC回路13等が内蔵される。そのほか、ラッチ回路LT1,LT2,LT3,LT4などの基本的な回路要素や各種の信号線も配設されている。
なお、SRAMマクロ1内のECC回路11,12を含むロジックは、スキャンテストの対象となる。一方、SRAMコア12のデータ記憶部12aおよびECC記憶部12bは、それぞれ、メモリテスト(BIST)の対象となる。
本実施形態のSRAMマクロ1は、ECC回路11,12を含むロジックに対するスキャンテストを実施する際に、データがSRAMコア12を迂回して流れる経路を構成し、SRAMコア12のデータ記憶部12aおよびECC記憶部12bに対するメモリテスト(BIST)を実施する際には、データがデータ記憶部12aおよびECC記憶部12bをそれぞれ経由して流れる経路を構成するための回路群を含む。例えば、SRAMマクロ1内には、上述した基本的な回路要素や信号線に加え、選択器S1,S2などの回路要素や、パスK1,K2、バイパスBP1,BP2などの信号線が更に配設されている。
ECC回路11は、外部から与えられる所定の信号に従って、コード生成機能が有効/無効のいずれかの状態に設定される。
例えば、ECC回路11のコード生成機能が有効の状態に設定されているときは、ECC回路11はコードの生成を含む通常の処理を実施する。すなわち、ECC回路11は、入力端子1aを通って送られてくるデータをデータ入力端子11aから入力し、入力したデータに対応するコードを生成し、入力したデータをそのままデータ出力端子11bから出力すると共に、生成したコードをコード出力端子11cから出力する。
一方、ECC回路11のコード生成機能が無効の状態に設定されているときは、ECC回路11は、コードの生成や出力の処理は行わず、データ入力端子11aから入力したデータをそのままデータ出力端子11bから出力する。なお、このときECC回路11の電源はオンの状態にある。
ラッチ回路LT1は、外部から与えられるクロック(図示せず)に従って、ECC回路11のデータ出力端子11bから送られてくるデータの入力、保持、出力を行うものである。
ラッチ回路LT3は、外部から与えられるクロック(図示せず)に従って、ECC回路11のコード出力端子11cから選択器S1を介して送られてくるコードの入力、保持、出力、もしくは、ECC回路11のデータ出力端子11bから選択器S1を介して送られてくるデータの入力、保持、出力を行うものである。
選択器S1は、BIST回路2から送られてくる所定の信号に従い、ECC回路11のコード出力端子11cから送られてくるコードがラッチ回路LT3へ送られる経路と、ECC回路11のコード出力端子11bからパスK1を通じて送られてくるデータがラッチ回路LT3へ送られる経路とのいずれか一方が有効となるように経路を選択する。
データ記憶部12aは、ラッチ回路LT1から送られてくるデータの書き込みが行われるメモリセルを有する。一方、ECC記憶部12bは、ラッチ回路LT3から送られてくるコード(もしくはデータ)の書き込みが行われるメモリセルを有する。
バイパスBP1は、SRAMコア12の読み書きの機能を無効にした状態で、ラッチ回路LT1から送られてくるデータをラッチ回路LT2へバイパスさせる場合に有効となる。その場合、ラッチ回路LT1とラッチ回路LT2とは、合わせて1つのフリップフロップとして動作するように構成される。
同様に、バイパスBP2は、SRAMコア12の読み書きの機能を無効にした状態で、ラッチ回路LT3から送られてくるコード(もしくはデータ)をラッチ回路LT4へバイパスさせる場合に有効となる。その場合、ラッチ回路LT3とラッチ回路LT4とは、合わせて1つのフリップフロップとして動作するように構成される。
なお、データがデータ記憶部12aを経由して流れる経路とデータ記憶部12aを迂回してバイパスBP1を流れる経路との切り替え、および、コード(もしくはデータ)がECC記憶部12bを経由して流れる経路とECC記憶部12bを迂回してバイパスBP2を流れる経路との切り替えは、スイッチ等を用いて実現してもよいが、例えば図2に示すように、SRAMコア12のセンスアンプ14に供給されるセンスアンプイネーブル信号SAEをオン/オフさせることで実現してもよい。なお、図2では、SRAMコア12に備えられるロウデコーダやカラム選択回路などの図示を省略している。
ラッチ回路LT2は、外部から与えられるクロック(図示せず)に従って、データ記憶部12aから読み出されるデータの入力、保持、出力、もしくは、ラッチ回路LT1からバイパスBP1を通じて送られてくるデータの入力、保持、出力を行うものである。
ラッチ回路LT4は、外部から与えられるクロック(図示せず)に従って、ECC記憶部12bから読み出されるコード(もしくはデータ)の入力、保持、出力、もしくは、ラッチ回路LT3からバイパスBP2を通じて送られてくるコード(もしくはデータ)の入力、保持、出力を行うものである。
選択器S2は、BIST回路2から送られてくる所定の信号に従い、ラッチ回路LT2から送られてくるデータがECC回路13のデータ入力端子13aへ送られる経路と、ラッチ回路LT4からパスK2を通じて送られてくるコード(もしくはデータ)がECC回路13のデータ入力端子13aへ送られる経路とのいずれか一方が有効となるように経路を選択する。
ECC回路13は、外部から与えられる所定の信号に従って、データ誤り検出・訂正機能が有効/無効のいずれかの状態に設定される。
例えば、ECC回路13のデータ誤り検出・訂正機能が有効の状態に設定されているときは、ECC回路13はデータの誤り検出・訂正を含む通常の処理を実施する。すなわち、ECC回路13は、選択器S2から送られてくるデータをデータ入力端子13aから入力すると共に、ラッチ回路LT4から送られてくるコードをコード入力端子13bから入力し、入力したデータとコードとに基づき当該データの誤り検出もしくは訂正の処理を行い、処理後のデータをデータ出力端子13cから出力する。
一方、ECC回路13のデータ誤り検出・訂正機能が無効の状態に設定されているときは、ECC回路11は、コードの入力およびコードを用いたデータの誤り検出等の処理は行わず、データ入力端子13aから入力したデータをそのままデータ出力端子13cから出力する。なお、このときECC回路13の電源はオンの状態にある。
BIST回路2は、メモリテストを実施するメモリモード(BISTモード)がオンの状態であるか否かを示すBISTモード信号を選択器S1へ送る機能を有する。このBISTモード信号を通じて、BISTモードをオフの状態に設定すると、選択器S1では、ECC回路11のコード出力端子11cからのコード出力が選択される。一方、BISTモードをオンの状態に設定すると、選択器S1では、ECC回路11のデータ出力端子11bからのデータ出力が選択される。
また、BIST回路2は、BISTモードをオンにした状態でデータ記憶部12aからのデータとECC記憶部12bからのデータのいずれを出力すべきかを指示する出力選択信号を選択器S2へ送る機能を有する。この出力選択信号を通じて、選択器S2に対する出力選択をオフの状態に設定すると、選択器S2では、データ記憶部12aからのデータ出力が選択される。一方、選択器S2に対する出力選択をオンの状態に設定すると、選択器S2では、ECC記憶部12bからのデータ出力が選択される。
また、BIST回路2は、選択器S2を操作して出力選択を行うと共に、SRAMマクロ1内のデータ記憶部12aとECC記憶部12bのそれぞれに所定のテストパターンのテストデータを供給して出力されるデータをチェックすることにより、データ記憶部12aとECC記憶部12bのそれぞれに対するテストを実施する機能を有する。
なお、上述したECC回路11,13には、例えばハミング符号を用いたチェック機構を適用してもよいが、これに限定されるものではない。ハミング符号を用いたチェック機構を適用する場合は、ハミング符号から更にパリティビットを生成し、ハミング符号のチェックとパリティビットのチェックとの組み合わせによりエラー訂正・検出を行えるように構成してもよい。
次に、図3および図4を参照して、スキャンテストを実施する際の動作の一例を説明する。
図3は、スキャンテストを実施する際の半導体集積回路100の状態の一例を示す模式図である。また、図4は、スキャンテストを実施する際の半導体集積回路100の動作の一例を示すフローチャートである。
スキャンテストを実施するスキャンモードにおいては、SRAMマクロ1内においてデータがSRAMコア12を迂回して流れるように経路の切り替えが行われる(図4のS11)。
具体的には、SRAMコア12のデータ記憶部12aおよびECC記憶部12bの読み書きの機能が無効の状態にされ、ラッチ回路LT1とラッチ回路LT2とを繋ぐバイパスBP1が有効にされると共に、ラッチ回路LT3とラッチ回路LT4とを繋ぐバイパスBP2が有効にされる。すなわち、ラッチ回路LT1とラッチ回路LT2とは、合わせて1つのフリップフロップとして動作するように構成される。同様に、ラッチ回路LT3とラッチ回路LT4とは、合わせて1つのフリップフロップとして動作するように構成される。
このとき、ラッチ回路LT1,LT2,LT3,LT4は、例えば図5に示すように直列に接続されるように構成する。なお、図5では、ラッチ回路LT1,LT2,LT3,LT4以外のロジックの図示を省略している。このように構成することにより、スキャンインからスキャンアウトまでテストデータを順次供給可能なスキャンチェーンが形成される。
また、スキャンモードにおいては、選択器S1に対するBISTモードはオフの状態に設定され、選択器S2に対する出力選択はオフの状態に設定され、ECC回路11,13に対する処理機能はそれぞれオンの状態に設定される(S12)。
これにより、選択器S1は、ECC回路11のコード出力端子11cとラッチ回路LT3とを繋ぐ経路(通常動作時と同じ経路)を形成する。また、選択器S2は、ラッチ回路LT2とECC回路13のデータ入力端子13aとを繋ぐ経路(通常動作時と同じ経路)を形成する。また、ECC回路11は、通常動作時と同じように、コード生成機能が有効の状態になる。また、ECC回路13は、通常動作時と同じように、データ誤り検出・訂正機能が有効の状態になる。
そして、所定のテストパターンのテストデータを用いたスキャンテストが実行される(S13)。
スキャンテストでは、テストデータがSRAMマクロ1の入力端子1aからSRAMマクロ1内に供給されるようにする。これにより、ECC回路11はテストデータに対応するコードを生成する。当該テストデータは、ECC回路11のデータ出力端子11bから出力され、データ記憶部12aを経由することなく、ラッチ回路LT1,LT2および選択器S2を経由して、ECC回路11へ送られる。また、ECC回路11により生成されたコードは、ECC回路11のコード出力端子11cから出力され、ECC記憶部12bを経由することなく、選択器S1およびラッチ回路LT3,LT4を経由して、ECC回路11へ送られる。これにより、ECC回路13は、入力したテストデータとコードとに基づき当該データの誤り検出もしくは訂正の処理を行い、処理後のテストデータをデータ出力端子13cから出力する。これにより、処理後のテストデータがSRAMマクロ1の出力端子1bから出力され、チェックされる。
また、スキャンテストでは、テストデータがSRAMマクロ1に備えられたスキャンイン用の入力端子(図示せず)から入力され、ラッチ回路LT1,LT2,LT3,LT4を含むロジックにより形成されたスキャンチェーンを通る。スキャンチェーンを通った後のテストデータは、SRAMマクロ1に備えられたスキャンアウト用の出力端子(図示せず)から出力されてチェックされる。
次に、図6および図7を参照して、メモリテストを実施する際の動作の一例を説明する。
図6は、メモリテストを実施する際の半導体集積回路100の状態の一例を示す模式図である。また、図7は、メモリテストを実施する際の半導体集積回路100の動作の一例を示すフローチャートである。
メモリテストを実施するメモリモード(BISTモード)においては、選択器S1に対するBISTモードはオンの状態に設定され、選択器S2に対する出力選択はオンまたはオフの状態に設定され、ECC回路11,13に対する処理機能はそれぞれオフの状態に設定される(S21)。
これにより、選択器S1は、ECC回路11のデータ出力端子11bとラッチ回路LT3とを繋ぐ経路を形成する。また、選択器S2は、ラッチ回路LT2とECC回路13のデータ入力端子13aとを繋ぐ経路と、ラッチ回路LT4とECC回路13のデータ入力端子13aとを繋ぐ経路の一方を選択的に形成するようになる。また、ECC回路11は、コード生成機能が無効の状態になる。また、ECC回路13は、データ誤り検出・訂正機能が無効の状態になる。
そして、BIST回路2により、所定のテストパターンのテストデータを用いたメモリテストが実行される(S22)。
具体的には、BIST回路2からテストデータを出力し、テストデータが選択器3を通じてSRAMマクロ1内に供給されるようにする。これにより、テストデータが順次、ラッチ回路LT1を経由して、データ記憶部12aに書き込まれる。また、当該テストデータは、パスK1、選択器S1、ラッチ回路LT3を経由して、ECC記憶部12bにも書き込まれる。
SRAMコア12のデータ記憶部12aのテストを行う際には、選択器S2を操作することにより、データ記憶部12aから読み出されるテストデータがラッチ回路LT2および選択器S2を経由して、ECC回路13のデータ入力端子13aへ送られる経路が構成されるようにする。これにより、データ記憶部12aから読み出されたテストデータがBIST回路2に送られてチェックされる。
一方、SRAMコア12のECC記憶部12bのテストを行う際には、選択器S2を操作することにより、ECC記憶部12bから読み出されるテストデータがラッチ回路LT4、パスK2、選択器S2を経由して、ECC回路13のデータ入力端子13aへ送られる経路が構成されるようにする。これにより、ECC記憶部12bから読み出されたテストデータがBIST回路2に送られてチェックされる。なお、一般にコードのデータ幅はデータのデータ幅よりも小さいことから、データの一部を用いてコードを出力することができる。
本実施形態によれば、SRAMコアおよびECC回路を内蔵するSRAMマクロにおいて、簡易な構成で、SRAMコアのテストとECC回路のテストの双方を別々に行える半導体集積回路を提供することができる。特にSRAMマクロ内の既存の回路を用いた構成としているので、回路の増加や性能への影響を抑えられる。 例えば、前述したラッチ回路LT1,LT3は、一般にSRAMマクロの入力部に設けられている既存の入力ラッチに相当するものであるが、本実施形態ではこれらの既存の回路をテスト用にも共用できる構成としているため、回路の増加やサイズの増大を最小限に抑えつつテスト回路を実現することを可能にしている。
また、メモリテストにおいては、SRAMコアのデータ記憶部だけでなく、ECC記憶部もテストすることができ、ECC回路についてはスキャンテストにてテストすることができる。そのため、ECC回路をテストするために、例えばBIST回路からテストパターンを追加で供給できるように構成する必要がなく、SRAMマクロの入出力端子のピン数の増加や、周辺部の配線の混雑さを回避できる。
以上詳述したように、実施形態によれば、回路サイズの増大や性能への影響を抑えつつ、メモリおよびECC回路を内蔵するメモリマクロ内のメモリのテストとECC回路のテストの双方を行うことのできる半導体集積回路を提供することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。