JTAG バウンダリスキャンテスト

デバイス集積度の上昇とBGAパッケージなどの半導体設計の進歩により、従来型のテスト手法であるプローブ治具(ネイルベッド治具)やフライングプローブに限界が生じています。これらの課題を打開するために、主要な半導体メーカーはJoint Test Action Group を組織して、その研究成果はIEEE標準 1149.1 のテストアクセスポート及び、バウンダリースキャンアーキテクチャーに採用されました。この標準は組織との関連が深く、JTAGという名称で広く知られています。

 
JTAG の利用:通常JTAG対応デバイスには、そのJTAG実装について記述されたBSDLファイルが提供されます。またベンダーやプラットフォームに依存することなく、JTAGチェインを通してテストシーケンスを送る方法として、SVF(Serial Vector Format)が用意されています。
 
JTAG の応用:接続テストとインシステムプログラミングが、最も代表的ですが、他にも注目すべき技術があります。例えば、JTAG未対応のデバイスについては、JTAGチェイン上のデバイスとのネットを介したテストが可能です。XJTAGは、革新のソフトウェア技術で、JTAGの潜在能力を最大限に引き出します。

JTAGバウンダリスキャンテスト概要

JTAGは20年以上の歴史を持つ技術です。しかしながら、テストツールやプログラミングツールとしての可能性については、注目され始めたばかりです。接続テストとインシステムプログラミングが、最も代表的なJTAGを使った応用例です。しかしながら、より多くの注目すべき技術があります。XJTAGはJTAGの最大の能力を活かしており、この資料に記述されている全ての機能を実装しています。
 
背景
JTAGを基盤にした技術は、従来のプローブ治具(ネイルベッド治具)を使った回路テストの手法が困難に直面していることを受けて開発されました。BGAやCSP(Chip Scale Packaging)のような新しいパッケージ技術では、信号ピンに対する物理的なアクセスに限界があり接続が不可能になっています。
 

図-1 単純なJTAGデバイス


 従来の手法が使えないために、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チェインを示しています。
 

図-2 単純なJTAGチェイン


 
ボールグリッドアレイ(BGA )
 

図-3 BGAデバイス


 図-3に示されるようなBGAデバイスは、ピンがデバイスの側面から出ているのではなく、デバイスの底面と回路基板の間に挟まれたボールによって外部に接続されるという点で、通常パッケージのデバイスとは異なります。
 
BGAデバイスを搭載する回路基板のテストが、JTAGテスト普及の原動力の一つになりました。デバイスと回路基板の間の接続に物理的なアクセスができなくなり、目視検査も同様に不可能になった今、JTAGを使わずに有用な情報を得るただ1つの方法は、X線検査です。この高価で時間のかかる手法では各々の基板がX線にさらされることになります。また、ボールが正しい位置にあること、基板との接続が正しいこと、デバイスが無傷であることは検査できますが、回路の短絡を引き起こす半田の伸張は検査できません。この手順では、手動・自動の違いはあるものの未だ目視に頼っており、結果として、全てのエラーを探し出すことが出来ません。
 
このような状況において、JTAGによる接続テストは、剣山方式のプローブ治具(ネイルベッド治具)のテストに変わる有用な代替手段から、X線技術を不要にする重要な経費節減ツールになっています。
 
チェインの完全性テスト
JTAGを使って実行できる最も基本的なテストは、JTAGチェインの完全性テストです。例えば、JTAGチェインに含まれているはずのデバイスが、実際に存在するか?のテスト等。
 
各々のJTAG対応デバイスはIDコードを持っています。正しいシーケンスのJTAGコマンドを発行すれば、チェイン内にある全てのデバイスのIDコードが読み出せます。JTAGチェインから読み出されるIDと実際のデバイスのIDを単純に比較することで、デバイスが適切な位置にあり、JTAGチェインが正しく接続されていることが簡単にテストできます。
 
接続テスト(コネクションテスト)

図―4 接続テストの例


 接続テスト(又は相互接続テスト)は、回路内のJTAG対応デバイス間の相互接続をチェックします。ネットと呼ばれるこれらの相互接続の不良は、短絡、断線、スタック、プル抵抗の4種類に分類されます。これらの不良の例を図―4に示します。
 
 JTAGの接続テストでは、セットした値を相手先から読むことで断線エラーを検査します。それゆえ、接続テストで完全な検査ができるのは、JTAGデバイス信号間のネットのみです。(片側のみJTAG対応デバイスに繋がれたネットの場合、短絡の検査は可能です)
 
XJTAGのような高度なJTAGバウンダリスキャンテストツールは、ネットリストの読込みなど僅かな作業で、包括的な接続テストパターンを自動生成します。
 
JTAGによる接続テストで、半田がコネクタを短絡するといった製造上の不良を検査します。BGAデバイス実装や、外観検査や物理的なプローブ接続が困難な基板の、製造検査工程にとって欠かせないツールです。


 
インシステムプログラミング
FPGAやCPLDの様な殆どの現行のプログラマブルデバイスは、上述したテストを容易にするためのJTAG機能に対応するだけでなく、デバイスを回路に実装後のプログラミングを可能にするためのJTAG機能にも対応しています。
 
またフラッシュメモリーの様な他のデバイスは、JTAGチェイン上のデバイスとの接続を通して、間接的にプログラム可能です。
 
JTAGを使ってデバイスに“インシステム”にプログラミングできることで、高価なプログラマーやソケット化されたデバイスを購入する必要がなくなります。またデバイス上に保存されたイメージを簡単にアップデートすることも可能になります。
 
機能テスト(ファンクションテスト)
回路の物理的な完全性が確認され、デバイスが適切にプログラムされれば、機能テストも可能になります。
 
幾つかのJTAG対応デバイスには、内部ロジックをテストするためのビルトイン・セルフテスト(BIST)機能が組み込まれています。デバイス内のJTAGコントローラに対して、適切なシーケンスの信号を与えることで、これらのテストが実行されます。
 
回路上のJTAG未対応デバイスに関してもテストが可能です。これは回路内のJTAGチェイン上のデバイスと相互接続されたネットを利用して実現します。
このテストはJTAG未対応デバイス(クラスターデバイス)対して、JTAGデバイスに接続されたネットをあらかじめ定義されているレベルに設定し、その後、値を読み取り、期待値と比較するという方法で実行されます。
 
メモリーに対するテストは、この方法の発展形です。JTAGのテスト信号をメモリーデバイスのアドレス線とデータ線を操作するように作成します。それによって、メモリーに情報が書き込まれます。次にメモリーからデータを読み出すようにテスト信号を作り、データを読み出して、比較検証します。
 
テスト容易性設計(Design for test )
JTAGは回路基板の製品ライフサイクル全体にわたって有用なツールです。JTAGは、設計者、製品テスト技術者、不良解析、及びフィールドテスト技術者の全てに有効活用されます。
 
しかしながら有用性のレベルは、JTAGテストツールによって実現可能なテストのカバレージの度合いに影響されます。これは、回路固有の限界と設計者の設計による限界です。
 
テスト容易性設計(Design For Test:DFT)ガイドラインを公開しています。しかしながら、最も単純なテスト容易性設計は、JTAG対応デバイスの適切な接続を確認し、回路内で適切なテスト・アクセス・ポート(TAP)を確実に設計することです。

JTAGテストの技術情報

このドキュメントに書かれている情報は、XJTAGのツールを使用するうえでは必要ありません。 XJTAGのテスト開発には、JTAGの詳細な動作に関する知識を全く必要としない、高レベルのプログラミング言語が使用可能です。このドキュメントでは、XJTAGの基盤になる技術の中で興味深い情報を提供しています。
 
概要
デバイス集積度の上昇とBGAパッケージの利用といった半導体設計の進歩により、従来型のテスト手法が有効性を失いました。
 
これらの問題を打開するために、全世界の主要な半導体メーカーの幾つかが纏まり、Joint Test Action Groupを組織しました。IEEE標準 1149.1:スタンダード テスト アクセス ポート及び、バウンダリースキャンアーキテクチャー は、この組織の研究成果と提言を基に策定されています。この標準は組織との関連が深かったために、JTAGという名称で広く知られています。
 
バウンダリースキャン
バウンダリースキャン技術を用いる事で、直接、物理的に接触する事無くピンの値の書込みと読出しが可能になります。
 

図-1 JTAG対応デバイスの概念図


 
図-1の概念図が、バウンダリースキャンの処理を最も簡単に表しています。
 
デバイスのコアロジックとピンの間で遣り取りされる全ての信号は、バウンダリー・スキャン・レジスター(BSR)というシリアルスキャンパスに取り込まれます。通常の動作では、これらのバウンダリースキャンセルは見えません。しかしながら、デバイスをテストモードに設定すると、これらのセルを利用して、値の読み書きが可能になります。エクスターナルモード(EXTEST)に設定すればピンの値に、インターナルモード(INTEST)に設定すればコアロジックの値になります。
 
インターフェース信号
テストアクセスポート(TAP)と呼ばれるJTAGのインターフェースは、バウンダリースキャンの動作を行うために以下の信号を利用します。
TCK - テストクロック。内部のステートマシーンの動作を同期させるクロック信号。
TMS - テストモードステート。次の状態を規定するために、TCKの立ち上がりで読み込まれます。
TDI - テストデータイン。デバイスのバウンダリースキャンセル或いはプログラミングロジックにシフトインさせるデータ。内部のステートマシーンが正しいステートに設定されていれば、TCKの立ち上がりで読み込まれます。
TDO - テストデータアウト。デバイスのバウンダリースキャンセル或いはプログラミングロジックからシフトアウトしてくるデータ。内部のステートマシーンが正しいステートに設定されていれば、TCKの立ち下がりで読み出せます。
TRST - テストリセット。オプションの信号です。TAPコントローラーのステートマシーンをリセットします。
 
レジスター
バウンダリースキャンと関連した2種類のレジスターがあります。JTAG対応デバイスは1つのインストラクションレジスターと2つ以上のデータレジスタを持っています。
 
インストラクションレジスター - 実行中のインストラクションを保持します。TAPコントローラーの動作を決定するために、インストラクションレジスターの値が利用されます。最も一般的なケースでは、どのデータレジスタの値がパスされるかを規定します。
 
データレジスター - 3つの基本的なデータレジスターがあります。バウンダリースキャンレジスター(BSR)、BYPASSレジスター及びIDCODESレジスターです。他のデータレジスターを備えている可能性もありますが、JTAG標準に必要なものではありません。
 
•BSR - 主要なテストデータのレジスターです。デバイス上のピンデータを操作(読み書き)するために利用されます。
•BYPASS - 1ビットのレジスターです。TDIの情報をTDOに直接渡すために使用されます。このレジスターを使ってBSRをバイパスすることで、回路内にある他のデバイスをテストする場合にオーバヘッドすることが可能です。
•IDCODES - デバイスのIDコードとリビジョン番号を持ったレジスターです。この情報を使ってBSDLファイルとデバイスの連携を取ることが可能です。BSDLファイルは、デバイスのバウンダリースキャン設定の詳細が記述されています。
 
テスト・アクセス・ポート(TAP)コントローラー
TAPコントローラー(TMSで状態遷移が制御されるステートマシーン)はJTAG全体の振舞を制御します。図-2に状態遷移図を示します。
 

図-2 TAPステートマシーン


 
全てのステートは2つの出口を持っています。そして、全ての遷移はTCKに同期して取り込まれるTMS信号によって制御されます。2つの主要なパスでは、インストラクションレジスターかデータレジスターのどちらか一方の情報を設定又は取得しています。インストラクションレジスターに読み込まれた値によって、動作するデータレジスタ(BSR、IDCODE、BYPASS等)が決まります。
各ステートの詳細は、IEEE1149.1標準に関する資料を参照してください。
 
バウンダリースキャン命令
 
IEEE1149.1標準には、JTAG対応デバイスが必ず実装しなければならない命令を定義しています。命令は以下の通りです。
 
BYPASS - TDIとTDOが1ビットのパススルーレジスター(BYPASSレジスター)を通して接続されます。この命令を使えば、JTAGチェイン上の他のデバイスをテストする時に、不要なオーバーヘッドを回避できます。
 
EXTEST - TDIとTDOはバウンダリースキャンレジスター(BSR)に接続されます。 “capture dr”のJTAGステートでデバイスのピンの状態が取り込まれ、“shift dr”ステートで新しい値がBSRに送り込まれます。その後、“update dr“ステートで送り込まれた値がピンの状態に反映されます。
 
SAMPLE/PRELOAD - TDIとTDOはバウンダリースキャンレジスター(BSR)に接続されます。しかしながら、デバイスは通常動作モードになっています。この命令実行中は、データスキャン動作を行うことで、デバイスに出入りする機能データ(通常の信号ピンの状態)を取り込むためにBSRにアクセス可能です。この命令は、EXTEST命令実行前にBSRにあらかじめデータを設定しておく為にも使えます。
 
一般に利用できる他の命令:
 
IDCODE - TDIとTDOをIDCODEレジスターに接続します。
 
INTEST - TDIとTDOはバウンダリースキャンレジスター(BSR)に接続されます。EXTEST命令がピンの状態を読み書きするのに対して、INTEST命令はデバイスのコアロジック向かって動作します。
 
IEEE 1149.1標準に関する資料の入手
IEEE1149.1標準のJTAG仕様はIEEEから直接入手できます。
また、財団法人 日本規格協会から入手することも可能です。
 
IEEE Standards Department
445 Hoes Lane
P.O. Box 1331
Piscataway, NJ 08855-1331
USA
 
IEEE Standards Association
http://Standards.ieee.org
財団法人 日本規格協会
http://www.jsa.or.jp/

JTAGテストの革新

概要
リアクティブに(実行結果に応じて)テストパターンを生成する機能や、デバイスセントリックによるJTAGテストの抽象化など、XJTAGはJTAGバウンダリスキャンテストに革新をもたらしました。
 
テストは回路のライフサイクル全体を通じて不可欠なものです。BGAや他の同様なパッケージング技術の出現によって、JTAGがテスト技術の最前線に貢献できるようになりました。
 
XJTAGはJTAGの最大限の能力を引き出しているだけではなく、テストシステムの構築手順をテスト実装の技術的詳細から抽象化しています。
 
従来のJTAGツールはJTAGデバイス間の接続テストを実行することは可能ですが、回路上には、物理的にもJTAGを使ってもテスト出来ないJTAG未対応デバイス(BGAパッケージを利用しているケースも多くあります)がたくさん実装されています。
 
これに対して、XJATGは、回路内のデバイスの状態を反映させるように、テストの動作を対応させることが出来ます。それ故に、殆どのJTAG未対応デバイスの機能テストを実現します。
 
XJTAGの接続の完全性と回路の機能をテストする能力は、1つ以上のJTAG対応デバイスを実装した全ての回路に於いてかけがえのないものになっています。
 
JTAG技術の基礎的な知識が無くても、XJTAGのテストシステムが開発できます。XJTAGが基本にしているデバイスセントリックな手法を使えば、回路を参照する事無く、テストしようとしているデバイスの観点からテストを記述できます。つまり、デバイスのデータシートを理解できる技術者であれば、XJTAGのテストを記述可能です。
 
デバイスセントリックな手法の優位点は、デバイスの為に書かれたテストが何時でもどんな回路に対してでも利用可能な点です。XJTAGはテストを含んだデバイスファイルのセットと共に提供されます。その為、全くテストコードを記述する事無く、テストシステムを構築可能です。
 
XJTAGを使用することで、設計前の段階からフィールドサポートに至るまで、より早く、より簡単で、より効果的な回路テストを実現できます。
 
設計前段階
回路設計を行う前に重要なことは、テスト容易性設計の方針を意識した設計を行うことです。XJTAGのDFT ガイドライン  を参考にして、JTAG標準に対応しているかどうかに関わらず、全てのデバイスのテストカバレージを最大限に引き出す様な究極の設計が出来るでしょう。
 
設計の検証
テストの工程は最初の回路基板が生産されたところから始まるでしょう。設計が完了すると同時に、そこから得られるネットリストがXJTAGのテストシステムの基盤になります。ハードウェアが無い段階で、設計情報のみでテストプログラムを先に構成し、テスト容易性設計のレポートを出力。回路上の全ての接続に対するテストのカバレッジを解析することができます。
 
生産に先立って、レイアウト上でテスト容易性をチェックすることで、後工程で回路設計を修正することで発生する時間とコストを節約できるでしょう。
 
回路のテスト
XJTAGのテストは、回路の全実装が出来る前(JTAGチェイン全体でさえも)でも始められます。JTAGチェイン上で1つ以上のデバイスが利用可能であれば、直ぐにテストが始められます。
 
回路の完成がXJTAGのテストシステム導入の前提条件で無いために、より早い段階でのテストプロセスの開始と不良の発見に繋がり、設計サイクルの短縮が実現できます。XJTAGがデバイスセントリックな方法を取っているために、初期段階で作成したあらゆるテストが無駄にならず、後工程でより高機能なテストシステムの一部を形成する為に簡単に修正して再利用できます。
 
どんな割合の回路完成度でも、テストの工程は同じです。
 
テストシステムと回路の接続
テストを開始するためには、テストシステムと回路を接続する必要があります。XJLinkは、USBインターフェースを使って、あらゆるPCからの高速JTAGアクセスを実現します。
 
XJLinkが全てのライセンス情報を持っている為、XJTAGのテストシステムは素早く簡単に利用場所を変更できます。例えば、実験室で標準的なデスクトップPCを使用し、現場ではラップトップPCを使うことが出来ます。
 
XJLinkには、テスト対象回路に合わせてJTAGのピン配置を設定できる柔軟な機能を持っています。また Multiice™ Xilinx™ Altera Byte Blaster™等の標準的なピン配置が選択可能です。また、標準的ではない他の特定のピン配置の設定をすることもできます。
 
XJLinkには、全機能を使用可能なAPIが付属します。このAPIを使えば、XJTAGのハードウェアインターフェースを使用した独自のJTAGアプリケーションを開発できます。
 
JTAGチェインの検証
回路が準備できれば、XJTAGのテストシステムを実施する次の段階として、JTAGチェインの完全性を確認します。XJAnalyserは、容易に回路のデバッグと素早いチェインの検証が行えるグラフィカルなツールです。
 
ウィザードが用意されているために、XJAnalyserのセットアップはきわめて簡単で迅速に行えます。
 
テスト対象回路に対する正しい設定を確立することで、XJAnalyserはJTAGチェインの完全性をチェックします。
JTAGチェインの完全性は、チェイン内の各デバイスからIDコードを読み出すことで実現されます。
 
妥当なチェインが確立されれば、XJAnalyserは読み出したIDコードでライブラリ内の適当なBSDLファイル特定します。BSDLファイルは各デバイスのJTAG標準の実装を定義しています。
 
XJAnalyserがプロジェクトベースのツールある為に、一旦プロジェクトを作成すれば、必要に応じてプロジェクトの保存や読み込みが可能です。
 

図-1 XJAnalyserのメイン画面


 
図-1は、XJAnalyserの2つのデバイスからなるJTAGチェインを表示しているスクリーンショットです。一方のデバイスは通常パッケージで、もう一方はBGAデバイスです。
 
ピンの色は現在の値を示しています。XJAnalyserでは、出力ピンと双方向ピンの値を、ハイ、ロー、高速発振、低速発振に設定できます。
 
図-1で分かる様に、XJAnalyserは回路内のピンに関する情報をデバイス毎に表示(右側の領域のピンリスト)します。また、選択したピンを表示(下側のピンウォッチ)することも可能です。これにより、所定のピンの特定の情報に直接アクセスすることが出来ます。
 
製造検証
JTAGチェインの完全性が検証できれば、XJTAGのテストシステムを実装する次の段階として、製造上の不良をチェックします。
 

図-2 短絡の例


 XJTAGの接続テストは、短絡、断線、電源へのスタックの3種類の製造上の不良を見つけます。独自の接続テストアルゴリズムで、回路テストのカバレージを容易に高めることができ、不良の正確な原因と場所の特定が容易ます。
 
図-2は大多数のJTAG接続テストで問題となる状況を示しています。殆どの従来の接続テストで用いられているアルゴリズムでは、NetCとNetDの短絡は検出できますが、NetAとNetBの様に直列抵抗を介した短絡は検出できません。XJTAGの接続テストアルゴリズムはこの問題を解決します。
 
XJTAGのテストは対象回路の現況に対応する能力があり、より改善された不良報告が得られます。不整合が発見された場合は、その不要の場所と原因を特定するために、より多くのテストが自動的に生成されます。
 
JTAG 未対応デバイスの機能テスト
最も効果的な接続テストでも、回路内の全ての接続はテスト出来ません。しかしながらXJTAGのテストパターンを生成する技術を活用して、広範囲のJTAG未対応デバイスの機能テストが実現できます。それによって、JTAGを使ってテスト出来る領域がJTAGチェイン外の領域にまで広がります。
 
図-3に示されているXJTAGテストシステムにおいて、JTAG未対応デバイスのテストはXJEaseのデバイスファイル(Device Files)によって制御されています。これらのデバイスファイルは、テストされる各デバイスの為の高レベルのテスト記述です。しかしながら、特定のテスト対象回路内でのテストの実行方法に関する記述は全くありません。その為、開発された全てのテストが、同一プロジェクト内でも、他のプロジェクトでも、再利用可能ということです。
 
XJEngineはデバイスのテストを実行するためのテストパターンの生成を担います。ピンに値を設定することで実施されるテストのパターンの要件は、プロジェクトファイルにあり、それを基にデバイスファイルで制御されます。

図-3 XJTAG テストシステム


 全てのテストパターンはシステムの実行時に生成されます。これは、XJEnginが回路内にあるデバイスの現在の状態を、XJEaseのデバイステストを制御する為にフィードバックできることを意味します。この情報はXJEngineが次に生成するべきパターンをプログラムに基づいて制御する為に使用されます。
 
プログラムに基づいた制御とリアクティブに(実行結果に応じて)テストパターンを生成する機能をJTAGのテストに導入することで、テスト出来るデバイスと回路の割合を引き上げることが出来ます。テストを可能にする為に特定の状態に設定する必要のあるデバイスが良い例です。XJTAGのテストシステムを使えば、デバイスをテスト可能な状態にする為に駆動しなければならないピンを、XJEaseで簡単に定義できます。その後、デバイスが所定の状態になったことを示す値がデバイスから読み取られるまで、繰り返しデバイスの状態を読みこみます。所定の値が読み取られれば、テストは次に進みます。この種のデバイスのテストは、XJTAGの回路との相互作用によってのみ実現可能です。
 
XJTAGにおける複数のレベルでの抽象化により、テストシステムが非常に迅速に開発できます。
 
XJTAGのデバイスセントリックな手法の核心であるデバイステストの回路実装からの抽象化により、2つの大きな恩恵がもたらされます。まず、テスト開発の工程がより簡単になります。(値を設定するべきピンと結果として得られるべき値を単純に定義することで、テストが作成される)。 次に、開発したテストは、そのデバイスが他の回路で使用される度に再利用可能で、回路のネットリストに対するどんな変更があっても、テストシステムに対する修正が必要ありません。

テスト容易化設計(DFT)

はじめに
以下 DFTガイドラインは、XJTAG を用いて基板のテスト容易性を向上させるための提案です。これらガイドラインは、ルールと言ったわけでは有りません。得られる効果は、他の要素(機能性、デバイスのコスト、基板面積など)と合わせて考慮させるべきでしょう。
 
この資料の内容を理解する為には、IEEE standard 1149.1-1990、1993、1994 に対する多少の理解・知識が必要です。この資料を通して、1149.1 は、 IEEE 1149.1 (JTAG) Boundary Scan standard のことを意味しています。
 
1149.1 準拠のデバイスを指定し、採用する
XJTAG を用いて準拠していないデバイスのテストもできますが、可能な限りは1149.1 準拠のデバイスを選択することで、より高いテストのカバレッジを得ることができます。基板上に1149.1 準拠のデバイスが多ければ多いほど、より多くのノードが全面的に実行され、テストされるようになります。
 
1149.1 準拠のデバイス用 BSDL ファイルを確認する
1149.1 準拠には、BSDL ファイル(Boundary Scan Description Language)が必要です。これには、準拠しているデバイスごとのインターフェイスが記述されています。このファイルが入手可能であること(通常は、デバイスメーカのWeb サイトから入手可能)、そしてこのファイルが検証済みであることを確認しましょう。(XJTAG 開発システムには、BSDL のシンタックス・チェック機能といった、欠かすことのできない機能が搭載されています)
 
1149.1 チェインが正しく設計され、配線されていることを確認
基盤の設計に、必要となる1149.1 TAP 信号が含まれていること、正しく配線されていること、を確認しましょう。望ましくは、TAP 信号は他のアクティブな信号から離すこと、GND や電源信号から切り離すこと。そうすることで、TAP 信号上のショートが容易に検出できるようになります。適切なTAP コネクタを用意して、必要となる信号線にアクセスできるようにすること。そして重要なのは、システムのディフォルトのパワーアップ・モードで、1149.1 準拠デバイスのチェインに電源を供給し、準拠したモードに入るようにすることです。
 


 
TAP 信号間のスキューを低く抑える
正しい動作を実現させるには、TAP 信号間のスキューが、低く抑えられていることが重要です。とりわけ、TCK とTMS 間。それゆえ、配線長、バッファの遅延は、可能な限り同じに保ちましょう。
 
全TAP 信号に正しい終端を
 

 ボードに入力されるTCK は、68R のシリーズ抵抗と100pF のキャパシターを、グランドに対してシリーズに用いて、終端される必要があります。TDI,TMS は、電源ラインに対して10K の抵抗でプルアップします。TDO には、電源ラインに対して10K の抵抗でプルして、22R のシリーズ抵抗をチェインの最終デバイスの近くに配置します。またフローティング(入力が不安定になること)を防ぐ為に、 nTRST ラインにプルダウンレジスタを追加されることをお勧めします。(この値は次の要素に注意して選択。ドライバーの強さ。および、nTRST に対する1149.1 準拠デバイスから提供されるプルアップの強さ)
 
TAP 信号に対するバッファ
可能ならば、初段のTAP 信号へのバッファは、ノイズの削減、インピーダンスのミスマッチの回避、さらにファン・アウトの向上が見込まれます。TCK, TDI, TMS, nTRST に対しては、ボードの入口、 TDO に対しては出口に。信号を完全にするために、4~6 ごとの 1149.1 準拠デバイスの後ろの信号をバッファすることは賢明ですが、信号間のスキューを低く抑えることも忘れないようにしましょう。
 

 
1149.1 準拠したデバイスのスペア・ピンを使用する
1149.1 準拠デバイスに スペアのI/O ピンがあるならば、アクセスすることが困難な回路上のノードをモニタするために用いましょう(これが、基板の通常動作に影響を与えないことを前提に) モニタするべきノードを注意深く選択することで、テストのカバレッジは飛躍的に向上させることができるでしょう。
 
1149.1 準拠デバイスのI/O ピンを使いこなす
1149.1 準拠のデバイスが、準拠していないデバイスの入力をドライブしているなら、準拠したデバイス上のI/O ピンを用いることができるかもしれません。信号を読み返すことで、L あるいはH のスタックのテストが出力ノードで実現できるようになります。
 
1149.1 準拠デバイスがオプションで搭載されない場合のバイパス
1149.1 に準拠したデバイスの搭載が、オプションの選択に依存する場合、そのデバイスが搭載されない場合に、TAP データ・チェインが途切れることのないように(下図の様に)しましょう。
 

 
1149.1 チェインに追加ボードとそれに対する設定を用意
ドータボードを用いているなら、そのドータボード上のデバイスとボードコネクタを介して、1149.1 チェインを作りましょう。ドータボードがオプションなら、搭載されない場合を検知して、TAP データパスをバイパスすることができるようにもしましょう。
 

 
ASIC を設計、あるいは採用する場合に1149.1 を忘れずに
ASIC などのカスタム設計のシリコンを採用する場合には、1149.1 に準拠させることを考えるべきでしょう。
 
ボードの動作に影響を与えるような制御信号にアクセスできること
ボードやデバイスの動作に重要な影響を与える制御信号がある場合(reset, power enables, watchdogs, and shutdown signals)、これらが1149.1 に準拠するデバイスで制御できるようにしましょう。もし、 1149.1 に準拠したデバイスが、それに準拠しないモードを持っている場合(FPGA に対するプログラムピンなど)、1149.1 のモード、あるいは全チェインに影響が出ることを想定しておくべきでしょう。
 
プログラマブルなデバイスに 1149.1 からアクセスできること
EEPROM/flash/FPGA/CPLD などのシステム内でプログラミングができるデバイスを用いる場合、そしてこれらが1149.1 のプログラミングインターフェイスを持たないならば、これらデバイスの全ての必要な信号線を、1149.1 に準拠するデバイスでアクセスできるようにしましょう。望ましくは、全ての必要なノードを、一つの1149.1 に準拠するデバイスからアクセスできること。そうすることで、 XJTAG 開発システムは、自動的に全ての他のデバイスを1149.1 チェイン内にCLAMP モードとして設定し、パフォーマンスを向上させることができます。
 

 
場合によって、1149.1 に準拠するデバイスからのショートチェイン(1149.1 でイネーブルされるバッファ)を、頻繁に切り替わる制御回路ノード(Flash 上のnWE ピンなど)に採用することは効果的です。これによりXJAG 開発システムにとって、アクティブなチェイン長を短くすることになり、これらノードに対するパフォーマンスが向上します。(XJTAG の今後のバージョンでは、これらのノードに対してダイレクトにI/O アクセスできるようになり、更にパフォーマンスの向上が期待されます。この場合、これらノードはテストコネクタに接続するなどアクセスできるようにすることです)
 

 
ドライバーデバイスの出力イネーブルピンと方向制御ピンを接続
ある信号が複数のソースからドライブされるなら、これらドライバー側が十分に1149.1 に準拠するデバイスから制御できるようにし、これらドライバーの出力のOn/Off ができるようにしましょう。もし、 1149.1 に準拠しないバイディレクショナル(双方向)な、バスドライバーがあるなら、その方向も制御できるようにしましょう。
 
同期型デバイスのクロックを制御可能にする
同期型デバイスは、クロックの制御ができるならXJTAG でテスト可能です。例えば、FPGA に接続されるSDRAM は、そのSDRAMクロックが1149.1 に準拠するデバイスから制御できる場合にのみテストが可能です。フリーランニングなクロックがSDRAMに直接繋がっている場合は、XJTAG のテストベクタは。クロックに対してリアルタイムに同期できません。CPLD やFPGA などの1149.1 に準拠したデバイスを、そのクロックソースとSDRAM のクロックの、バッファの間に介することで、下図の様にテストのカバレッジを最大限に拡張できるでしょう。
 

 
I/O インターフェイスを設計する
テストのカバレッジは、外部コネクタが1149.1 でアクセス可能なネットに接続されることで向上します。1149.1 ネット上の多くのコネクタピンに対するテストは1149.1 でコントロール可能なI/O(XJIO ボードなど)を接続することで、オープンサーキットテストなどの拡張が追加されます。
 
あるいは、I/O ポートを設計することでループバックテストが可能になります。そうすればボードを接続すること無しに、テストのカバレッジを向上させられます。大抵のインターフェイス(Ethernet, RS232, RS485 など)にはシンプルなループバックコネクタで十分でしょう。しかし、外部テスト回路があれば、TAP チェインでコントロールさせることもできます。
 

 
クラスタを1149.1 に準拠するデバイスで包囲する
1149.1 に準拠しないロジックは、1149.1 準拠したデバイスに取り囲まれるクラスタ内に配置し、全入力の制御、クラスタに対する・クラスタからの出力のモニタ、をできるようにしましょう。クラスタ動作のテストを実現させるために、クラスタのノードへの十分なアクセスができるように。必要なら、追加の1149.1 に準拠するデバイスにてクラスタのノードへのアクセスを得ましょう。
 

 
単一パネル上の複数基板への考察
複数基板が単一パネル上に構成されている場合、これらが分離される前に、これらに対する同時テストが出来るように、電源、TAP 信号が一貫するような検討をしてみましょう。
 

 
ウォッチドッグ動作に対する考察
ウォッチドッグがある場合、テスト中はディスエーブルされるようにしましょう。(望ましくは 1149.1 の制御ピンで。あるいは、link を用いて)ウォッチドックのイベントがテスト実行中に発生すると、想定できない結果が起こりえます。望ましくは、ウォッチドッグはXJTAG を介してのみディスエーブルされることです。ソフトウエアで実現させる場合に、そのソフトの不具合でディスエーブルさせてしまうことを避けるためです。もしくは、タイムアウトの時間を十分に長く取って、テスト実行中にイベントが発生しないようにすることです。
 
不揮発性ストレージを構成情報に利用
XJTAG のファイルI/O 機能を用いて、オプション設定、serial numbers, Ethernet MAC addresses などの情報を不揮発性メモリに対して、テストの一環として書き込むことができます。
 
アナログ回路のテスト
1149.1 ではアナログ回路のテストは明記されていませんが、上手く設計することで多くのテストを実行することができます。方法は、1149.1 準拠のデバイスの出力でコンパレータやアンプの入力値を設定し、それらの出力を1149.1 準拠のデバイスに入力させることです。また、追加で低価格なDAC や ADC を用いれば、アナログクラスターを制御したり、モニタすることができるようになるでしょう。僅かながらでも適切な回路上の追加により、多くのアナログテストが実行できるようになります。
 
プログラマブルデバイスのI/O を用いる場合の注意点
例えば、FPGA のI/O パッドに搭載されている外部ロジックを動作させる為のプログラマブルな、プルアップを使わないほうが良いでしょう。もしI2C バス上のプルアップが、それらのようにプログラマブルであると、I2C バス上に接続される全てのデバイスは、XJTAG でテストできなくなるでしょう。どうしても必要なら、I2C バスピンを外部コネクタでアクセスできるようにすることで、テスト時に外部からプルアップを追加できるでしょう。あるいは、I2C バスがSDRAMアクセスに用いられているならば、テスト用のモジュールを追加のレジスタと合わせて取り付けることが必要でしょう。
 
インテリジェントなデバイス、XJTAG の機能をフルに活用する
標準的な1149.1 の機能ではテストできない、あるいはリアルタイムのテスト実行が必要、と言った場合は、XJTAG の革新的なXJEase を用いてボード上の機能IC を活用することができます。例えば、オンボード上のFlash メモリやCPLD デバイスに小さなプログラムをダウンロードし、CPLD やMPU のリアルタイムテスト実行や設定を行えるようになります。
 
Glossary


ASIC: Application Specific Integrated Circuit
 
BSDL: Boundary Scan Description Language
 
DFT: Design for Test(ability)
 
IEEE 1149.1: IEEE (Institute of Electrical and Electronics Engineers) Standard 1149.1-1990 "Test Access Port and Boundary Scan Architecture" (see www.ieee.org)
 
I/O: Input / Output
 
JTAG: Joint Test Action Group (usually refers to IEEE 1149.1 standard compliance)
 
NTRST: Test Reset (Active low TAP Signal)
 
TAP: Test Access Port (the 4- or 5-wire interface to a boundary scan device)
 
TCK: Test Clock (TAP Signal)
 
TDI: Test Data Input (TAP signal)
 
TDO: Test Data Output (TAP Signal)
 
TMS: Test Mode Select (TAP Signal)
 
XJTAG: A suite of tools aiding the development and test of electronic systems


高度な接続テスト

接続テスト(或いはインターコネクトテスト)は、あらゆるテストスイートにとって不可欠な機能で、“部品が適切に基板上に半田付けされているか?” と、“回路内に短絡箇所が無いか?” をチェックします。
 


より向上された接続テスト
XJTAGの接続テストは、(短絡・断線・スタックの)3種類の基板上の不具合を検出します。その上、他の接続テストで同じ種類の不具合が発見されれば、XJTAGは発見された不具合と詳細な発生場所を表示します。
 
ATPG “オンザフライ”の自動テストパターン生成
XJTAGの接続テストは、実行の度にテストパターンを生成します。 そのためツールベンダーなどによる新しいテストパターンの開発は必要なく、基板のあらゆる設計変更に簡単に素早く対応できます。
 

 
レジスタ越しのテスト
この図は、大多数のJTAG接続テストで問題となる状況を示しています。殆どの従来の接続テストで用いられているアルゴリズムでは、NetCとNetDの短絡は検出できますが、NetAとNetBの様に直列抵抗を介した短絡は検出できません。XJTAGの接続テストアルゴリズムはこの問題を解決します。

各種資料

JTAG テストで実装不良解:セミナー資料 LinkIcon
 
JTAG バウンダリスキャンテストの革新的ソフトウエア技術:実装技術誌記事LinkIcon
 
   
 
 
 
JTAG によるダイ内部の消費電力:Xilinx Xcell Journal LinkIcon