メモリのテスト
メモリには多数のビットがあり、それらをすべてスキャンFFにするのは、面積や消費電力の点で現実的ではない。このため、メモリにはそのアドレス、データ入力とWrite Enableなどの信号をあるアルゴリズムに従って自動発生する回路と、そのアドレス、データシーケンスでどのようなデータが読み出されるかを計算する回路を付加して、メモリ単体でテストを行うのが一般的である。
このようなテスト方式をMemory Built in Self-Test (Memory BIST)という。Memory BIST機能を持つメモリマクロの構成は図1.8のようになっており、通常動作では外部からのAddressやDinが選択されるが、テストを行うときにはBIST回路からのテスト信号がメモリマクロに供給されるようになっている。
テストパターンとしては、全アドレスの全ビットに"0"を書いてから、それを読み出して"0"になっているか、その逆に"1"を書いて"1"が読めるかという基本的なものから、"1"と"0"をチェッカーボード状に書いて、隣接しているメモリビット間でショートが無いかを検査するものや各種のアドレスシーケンスを発生して、アドレスデコーダやワード線、ビット線の回路が正しく動くことを確認するパターンなどが用いられる。
このように、メモリBIST回路は、このようなデータやアドレスのパターンを生成してメモリに書き込みを行う路を持っている。また、読み出し時にはデータの期待値を生成し、メモリから読まれたデータと期待値を比較する機能を持ち、メモリマクロが正常に動作しているかどうかを短時間で検査できるようになっている。
不良個所のスペアとの入れ替え
メモリはビット数が多く、高密度でトランジスタや配線が配置される。そのため、製造不良が発生しやすい。従って、メモリでは若干の製造不良があっても、それを修復して良品とするためのスペアカラムやスペアローを持たせておく設計が一般的である。
メモリのテストで不良ビットが見つかると、そのビット線方向の列(カラム)を切り離し、スペアのカラムとの置き換えを行う。例えば、図1.9に示すように、スペアカラム方式では、32のデータビットに対応するカラムにスペア用の33番目のカラムを設けて置く。そして、D0~D31の各ビット出力には自分のビット番号iと右隣のi+1のカラムの出力を選択するマルチプレクサを備えておく。
マルチプレクサは大小比較回路を内蔵し、左端のフューズからの値Fと、自分のカラム番号iとを比較し、F>iの場合はカラムiの出力を選択し、F≤iの場合はカラムi+1を選択するようにしておく。
そして、カラムjの中のビットに製造不良が見つかった場合は、フューズに値jを書き込む。そうすると、D0~Dj-1までの出力はカラム0~j-1に接続され、Dj~D31の出力はカラムj+1~32に接続されることになる。これで、不良を持つカラムjは使用されなくなるので、メモリとして正常に動作することができるようになる。
なお、図1.9ではメモリの読み出し系しか書かれていないが、書き込み系についても同様に大小比較回路からの出力で書き込む列をiとi+1に切り替えるようにしておく必要がある。
なお、このフューズはチップ表面の金属配線をレーザーで焼切ったりするなどの方法で、メモリのテスト後に不良カラムの番号を書き込めるようになっている。
単一ビットセルが不良の場合や、複数ビットでも全ての不良セルが1つのカラムに入っている場合、あるいは、カラムからの信号を増幅するセンスアンプが不良の場合はスペアカラムと置き換えることで救済できるが、ロー側のワード線ドライバの不良や横方向のワード線が断線したり、電源線とショートしたりするなどの不良が起こると複数のカラムで不良となるので、スペアカラムでは救済できない。このため、もう1行のメモリセルのローを設け、スペアカラムと同様な方法で不良のローの切り離しを行うスペアロー機構を追加する設計もある。
また、このようなスペア切り替え方式はメモリ以外でも使われており、IBMのスパコン用プロセサであるBlue Gene/Qでは、17個のプロセサコアに対して1個のスペアコアを内蔵しており、不良コアをスペアコアと置き換えてチップの歩留りを上げている。