概論
JTAGは10年以上の歴史を持つ技術です。しかしながら、テストツールやプログラミングツールとしての可能性については、注目され始めたばかりです。
接続テストとインシステムプログラミングが、最も代表的なJTAGを使った応用例です。しかしながら、より多くの注目すべき技術があります。
XJTAGはJTAGの最大の能力を活かしており、この資料に記述されている全ての機能を実装しています。
背景
JTAGを基盤にした技術は、従来の“剣山”のような針を使った回路テストの手法が困難に直面していることを受けて開発されました。BGAやCSP(Chip Scale Packaging)のような新しいパッケージ技術では、ピンに対する物理的なアクセスに限界が生じており、幾つかのケースでは不可能にさえなっています。
従来の手法が使えないために、JTAGを使ってそれらのピンにアクセスする手法が考え出されました。図-1にその手法を示しています。ピンとデバイス内部ロジックの間に配置されたJTAGセルを使うことで、直接の物理的なアクセス無しに、各ピンの値を設定・取出可能です。
ユーザーは、コアロジックからの信号やピンからの信号を読んだり、コアロジックやピンに信号を与えたりすることが可能です。また、デバイスが通常動作している間に、コアロジックとピンの間で受け渡される値をスキャンすることも可能です。
JTAGインターフェースでは、各デバイスに対して各々4本のピンが必要です。デバイスにデータを渡すために1本、デバイスからデータを取り出すために1本、データ受け渡しの制御のために1本、データ受け渡し動作の同期用クロックとして1本を使用します。
JTAG対応デバイスには、通常、メーカーがBSDL(Boundary Scan Description Language)ファイルを提供しています。このファイルは、JTAGから見たデバイスの動作を記述しています。BSDLファイルは、殆どの場合、IDコードを含んでおり、デバイスに設定された(JTAGを利用して読み込むことが出来る)IDコードと一意に結びつきます。
回路が2つ以上のJTAG対応デバイスを持っている場合は、JTAGチェインを形成することで、数珠繋ぎにすることが出来ます。JTAGチェイン接続では、最初のデバイスのデータ出力は2つ目のデバイスのデータ入力に接続されます。制御信号とクロックはチェイン上の全てのデバイスに共通(パラレル接続)になります。図-2は、3つのデバイスによる単純なJTAGチェインを示しています。
ボールグリッドアレイ(BGA )
図-3に示されるようなBGAデバイスは、ピンがデバイスの側面から出ているのではなく、デバイスの底面と回路基板の間に挟まれたボールによって外部に接続されるという点で、通常パッケージのデバイスとは異なります。
BGAデバイスを持った回路のテストが、JTAGテストの普及する原動力の一つになりました。デバイスと回路基板の間の接続にアクセスできなくなり、目視検査が同様の結果になった今、JTAGを使わずに有用な情報を得られるただ1つの方法は、X線検査です。この高価で時間のかかる手順では各々の基板がX線にさらされることになります。また、ボールが正しい位置にあること、基板との接続が正しいこと、デバイスが無傷であることは検査できますが、回路の短絡を引き起こす半田の伸張は検査できません。この手順では、手動・自動の違いはあるものの未だ目視に頼っており、結果として、全てのエラーを探し出すことが出来ません。
このような状況において、JTAGによる接続テストは、剣山方式のテストに変わる有用な代替手段から、X線技術を不要にする重要な経費節減ツールになっています。
チェインの完全性テスト
JTAGを使って実行できる最も基本的なテストは、チェインの完全性テストです。例えば、JTAGチェインに含まれているはずのデバイスが、実際に存在するか?のテスト等。
各々のJTAG対応デバイスはIDコードを持っています。正しいシーケンスのJTAGコマンドを発行すれば、チェイン内にある全てのデバイスのIDコードが読み出せます。JTAGチェインから読み出されるIDと実際のデバイスのIDを単純に比較することで、デバイスが適切な位置にあり、JTAGチェインが正しく接続されていることを簡単にテスト可能です。
接続テスト
接続又は相互接続のテストは、回路内の部品間の相互接続をチェックします。ネットとしてよく知られているこれらの相互接続は、3種類の不良を引き起こします。:短絡、断線、電源へのスタック。これらの不良の例を図―4に示します。
標準的なJTAGに接続テストでは、JTAGデバイス間のネット上の不良のみがチェック可能です。これは、JTAGデバイスはJTAG経由でピンの値を設定・読出可能だからです。しかしながら、回路内にある他のJTAG未対応デバイスに関する知識があれば、JTAGチェイン以外のデバイスのテストも実行可能で、より広いテストカバレージを実現できます。
接続テストは、製造の検証過程にとって欠かせないツールです。生産された全ての回路の、半田がコネクタを短絡するといった製造上のエラーによって引き起こされる製品不良をチェック可能です。
機能テスト
回路の物理的な完全性が確認され、デバイスが適切にプログラムされれば、機能テストも可能になります。
幾つかのJTAG対応デバイスには、内部ロジックをテストするためのビルトイン・セルフテスト(BIST)機能が組み込まれています。デバイス内のJTAGコントローラに対して、適切なシーケンスの信号を与えることで、これらのテストが実行されます。
回路上のJTAG未対応デバイスに関してもテストが可能です。この処理は、回路内のJTAGチェイン内のデバイスと他のデバイスとの間の相互接続されたネットを利用して実現されます。
このテスト手順は、回路内のJTAG未対応デバイス(クラスターデバイス)対して適用されます。このテストは、JTAGデバイスに接続されたネットをあらかじめ定義されているレベルに設定し、その後、値を読み取り、期待値と比較するという方法で実行されます。
メモリーテストは、この方法の発展形になります。JTAGのテスト信号をメモリーデバイスのアドレス線とデータ線を操作するように作成します。それによって、メモリーに情報が書き込まれます。次にメモリーからデータを読み出すようにテスト信号を作り、データを読み出します。
インシステムプログラミング
FPGAやCPLDの様な殆どの現行のプログラマブルデバイスは、これまでに述べてきたようなテストを容易にするためのJTAG機能に対応させる為に設計されているわけでなく、デバイスを回路に取り付けた後のプログラミングを可能にするための、追加のJTAG機能にも対応しています。
フラッシュメモリーの様な他のデバイスは、JTAGチェイン上のデバイスとの接続を通して、間接的にプログラム可能です。
JTAGを使ってデバイスに“インシステム”にプログラミングできることで、高価なプログラマーやソケット化されたデバイスを購入する必要がなくなります。デバイス上に保存されたイメージを簡単にアップデートすることも可能になります。
テスト容易性設計(Design for Test:DFT)
JTAGは回路のライフサイクル全体にわたって有用なツールです。JTAGは、設計者、製品テスト技術者及びフィールドテスト技術者の全てに有用です。
しかしながら、有用性の水準は、JTAGテストツールによって実現可能なテストのカバレージの度合いに影響されます。これは、回路が本来もっている特性部分の限界と設計者の設計方法による限界です。
XJTAGのウェブサイトから、テスト容易性設計(Design For Test:DFT)ガイドラインがダウンロード可能です。しかしながら、最も単純なテスト容易性設計は、JTAG対応デバイスの適切な接続を確認し、回路内で適切なテスト・アクセス・ポート(TAP)を確実に設計することです。
資料
JTAGのテクニカルガイド
JTAGの実装に関する考察
What is JTAG?
And how can I make use of it?
テスト容易化設計ガイドライン – Design for Testability (DFT) Guidelines
XJTAG を用いて基板のテスト容易性を向上させるための提案です
XJTAGを使ったJTAGテスト
XJTAGによるJTAG機能の拡張方法
Boundary-Scan Description Language ファイルは
一般にデバイスメーカのウエブサイトからダウンロードできます