JTAG総合情報サイト>JTAGアドベントカレンダー>12月7日 バウンダリスキャン

12月7日 バウンダリスキャン

さて、第1週の最終回は、JTAGの本来の目的であった「バウンダリスキャン」について解説します。

バウンダリスキャンというのは、ICの動作に影響を与えずに入出力端子の状態を調べたり、ICの動作を停止して入出力端子を自由に操作したりすることができます。

 

これは、ICの内部回路と外との境界(バウンダリ)にシフトレジスタを仕掛けて、そこを通過する信号を見たり操作したりすることで、ICの動作を乗っ取ることで実現されています。

 

 

端子を自由に操作できるようになるので、基板上にある2つのICの片方からテストパターンを出し、もう片方のICで予期したパターンが受け取れるかどうかで、基板の実装不具合を見つけることができるという原理です。

 

バウンダリスキャンを実現するシフトレジスタ

バウンダリスキャンは、バウンダリ・スキャン・セルバウンダリ・スキャン・レジスタというシフトレジスタによってコントロールされています。

バウンダリスキャンセルは「入力値」「出力値」「方向」の3つのレジスタが1組になって、1つの端子をコントロールします。

バウンダリスキャンレジスタは、CAPTURE-DRステートのときにバウンダリスキャンセルの値をキャプチャします。

UPDATE-DRステートになったときにバウンダリスキャンレジスタの値がバウンダリスキャンセルにコピーされ、即座にI/Oの状態に反映されます。

2個で1つの端子をコントロールしたり、1つの方向レジスタをデータバス全部で共有するようなデバイスもありますので、すべてのJTAGデバイスが3個1組になっているわけではありません。

 

端子の観察はどうやっているのか

端子状態のモニタリングでは、ICの内部ロジックが出力した信号を、バウンダリ・スキャン・セルがキャプチャすると共に、そのまま外に出力されます。

バウンダリ・スキャン・セルに値をセットしても無視されます。

このようにして、内部から外部に出る信号はINセルやOUTセルの内容を読み出すことで知ることができます。

また、外部から入ってきた信号は内部ロジックに伝えられるとともに、バウンダリスキャンセルによってキャプチャされます。

こうして、内部ロジックと外部とのやりとりを、ICの本来の動作に影響を与えずにモニタリングすることができます。

このモードをSAMPLEモードと言います。基本的にSAMPLEモードは無害です。

 

 

 

端子の操作はどうやっているのか

デバイスをEXTESTモードにすると、内部と外部の接続が切り離され、外部に出力される値はバウンダリ・スキャン・セルの値が用いられるようになります。

また、外部から入ってきた値はバウンダリ・スキャン・セルによってキャプチャされます。この値が内部ロジックへ伝わるかどうか、それともバウンダリスキャンセルのINセルに代入された値が内部ロジックに伝わるかはICの設計者次第です。

 

 

このような地道な操作を気が遠くなるほど繰り返して、端子を操作しているのがJTAGバウンダリスキャンなのです。

 

バウンダリスキャンでの基板検査の実際

バウンダリスキャンによってICの端子が操作できるようになるので、これで基板検査ができるわけなのですが、思ったより流行らなかったといえるでしょう。

それはなぜかと言えば、

・バウンダリスキャンは、そもそもJTAG対応IC同士の間の配線のオープン/ショートしかわからない

 ・非対応のICがあると、そこから先はテストができない

 ・電源とかの接触不良はわからない

 ・指で押すと動く、とか、そういう状況ではわからない

・カバレッジが低い

・テストパターンを作りこんで、バッチで動かして、OK/NGを判定することしかできない

 

本質的な問題はJTAG対応ICの、バウンダリスキャン対応ピンの間しかわからないからです。

一言でいえば、カバレッジが狭い、ということに尽きます。

もちろん、少しでも多くの範囲をテストをするために、各JTAGツールメーカーは30年かけて涙ぐましい努力してきました。ファンクションテストでDRAMの検査ができるとか、ADCとDACをつないでループバックとか・・
それでもアナログや、電源まわりは検査できません。

基板のどれだけの範囲を検査できるかというのをカバレッジといいますが、JTAGでカバレッジ100%というツールは嘘です。そもそもJTAGはディジタルのI/Oしか検査できません。

例えば、ICにGNDの電源が2本以上あって片方が浮いているような場合、JTAGでは絶対にわかりませんよね。

BGAの半田付けに若干の不安があって、押したら動く、というような状況はJTAGでもわからないのです。

(異論はあるかもしれませんが・・)

 

だから、基板検査をJTAGでやるのには限界があったのです。

 

バウンダリスキャンを組み込み開発に使おう

バウンダリスキャンを基板検査だけに使うなんてもったいない、組み込み開発の現場でも使えるようにしよう、ということで、筆者は2003年に未踏ソフトウェアとして、MITOUJTAG(みとうジェイタグ)を開発しました。

MITOUJTAGを使うと、パソコンの画面上でバウンダリスキャン結果をリアルタイムに見ることができ、ICの動作が手に取るようにわかります。ネットリストを用意する必要も、テストパターンを作りこむ必要もありません。つないですぐに見えるようになります。

そして何より、使えば使うほど、JTAGとバウンダリスキャンをより深く理解できるようになります。

MITOUJTAGについてはこちらのページをご覧ください。

 

 

MITOUJTAGは自社で開発し、実際に使用しています