マイクロアーキテクチャや論理設計は、そのプロセサがどのようになっているかを決めるものであるが、半導体プロセスを使って作られたLSIチップが、不良個所が無く、設計通りにできているとは限らない。このため、製造されたLSIを検査し、不良が無く仕様通りのものであることを保証することが必要となる。
最初は、不良が無かったとしても、使っている間にチップの中のトランジスタが故障したり、配線が切れたりすることも発生する。また、外部からの各種雑音で誤動作するということも起こる。どの程度の故障や誤動作を許容できるかは用途によるが、停止すると新聞ネタになる銀行のATMや新幹線の運行システムなどでは故障や誤動作によるサービス中断を非常に短い時間に抑えなければならない。また、飛行機の機体や自動車のエンジンやブレーキをコントロールするプロセサの場合は、故障や誤動作は人命にかかわる恐れもある。
良品であることを保証する
微細な加工を行うLSIでは、微細な塵があっても露光のときに塵の影が映ってしまう。レジストのネガ、ポジやその後のプロセスによって違うが、配線が切れたり、隣の線と繋がってしまったりする。また、トランジスタが正常に形成されないなどという問題が起こる。半導体工場ではクリーンルームで作業し、塵を極力排除するが、0.1μm以下という微細な塵を完全に除去することはできない。また、塵が付いているために、配線や絶縁層が正しく形成されないということも起こる。このため、シリコンウェハ上に形成された全てのダイ(これを切り出してチップにする)が良品とは限らない。
ウェハ上の全てのダイに対する良品の割合を歩留りと言い、小さなダイでは90%以上の歩留りとなる場合もあるが、実験的な大きなダイで半導体プロセスが未熟な場合では1%以下の歩留りという場合もある。従って、ウェハ上に並んだダイに対して不良なトランジスタや配線の有無を検査し、不良が無い良品を選び出す必要がある。
マイクロプロセサの場合、OSをブートして各種のアプリケーションが正常に走るかどうかを見るということで検査するということも考えられるが、メモリやI/Oなどを接続しなければならないし、検査時間もかかる。また、それですべての不良が見つかり、検査に使った以外のアプリケーションでも問題が出ないということが保証できるのかという問題もある。
この検査を効率的に行えるようにするため、最近のプロセサはスキャン系という構造を組み込んでいる。
スキャン系を作るには、Scan FFというフリップフロップを使う。Scan FFはNormal状態ではD入力からの信号を取り入れるが、Scan状態では、スキャン入力の信号を取り入れる。このスキャン入力は隣のFFの出力に繋がっており、全体として巨大なシフトレジスタを構成している。
このScan FFからなるシフトレジスタに色々なパターンを入れてみて、同じものが出力に出てくれば、これらのScan FFはおおむね、正しく動作していることが確認できる。
次に、このスキャン系を使ってテスト入力をシフトインして、組み合わせ回路の入力となっているFFに設定する。そして、その状態でNormal状態に切り替えて、右側のFF群に組み合わせ回路の出力を記憶させる。それから、また、スキャン状態に戻して記憶された状態をシフトアウトして読み出す。なお、図1.2では組み合わせ回路と入力を供給するScan FF群と出力を記憶するScan FF群を別個に書いたが、実際には、どのFFも何らかの入力信号を持ち、その出力は次の組み合わせ回路への信号になるということで、入力と出力の両方の役目を果たしている。
このようにすれば、組み合わせ回路に任意の入力パターンを与え、その状態での組み合わせ回路の出力を検査することができる。そして、この出力が正常な組み合わせ回路から期待されるものと一致していなければ、どこかに不良があるということになる。しかし、どこにも不良が無く良品であることを確認するには、どのような入力パターンをどれだけ与えたら必要十分かという問題がある。