はじめに
BGA実装でも電気的に実装検査や不良解析ができることから、改めてJTAGバウンダリスキャンテストが注目されていますが、このテストは、基板上に実装されたマイクロプロセッサやFPGAなどJTAGデバイスの信号線をプローブとして、ソフトウエアによって操作・観測することで実現されています。
そのため、回路図設計段階でJTAGテストの容易化設計を行うことで、最大限の効果を得ることができるようになります。仮にJTAGバウンダリスキャンテストの利用を予定しない場合でも、想定外の事態に直面した時に、不良解析等で思わぬ成果を発揮することになるでしょう。
以下 DFTガイドラインは、XJTAGを用いて基板のテスト容易性を向上させるための提案です。これらガイドラインは、ルールと言ったわけでは有りません。得られる効果は、他の要素(機能性、デバイスのコスト、基板サイズなど)と合わせて考慮するべきでしょう。
この資料を理解するために、IEEE標準1149.1と1149.6に精通している必要はありません。この資料で「1149.x」はIEEE 1149.x(JTAG)バウンダリスキャン規格を指し、「JTAGデバイス」はJTAGバウンダリスキャンを実装し、これらの規格に完全に準拠しているデバイスを意味し、 「JTAG未対応デバイス」とはJTAGバウンダリスキャンを実装していないものです。
JTAGデバイスを指定して採用する
XJTAGを用いてJTAGデバイスとJTAG未対応デバイス間のネットをテストすることができますが、より多くのJTAGデバイスを使用することにより、より広い範囲のテストカバレッジが得られます。 回路に組み込まれるJTAGデバイスが多くなればなるほど、完全に制御されテストされるノードの数が増えます。
1149.6規格では、1149.1ではテストすることができない、ACカップリングされた高速のシングルエンド信号や差動信号のテストを可能にします。 この機能を使用するには、このようにしてテストされるネットの結合キャパシタの両側に1149.6に準拠したピンを持つことが重要です。
JTAGデバイス用の BSDLファイルを確認する
1149.x標準に準拠するには、デバイスにBSDL(Boundary Scan Description Language)ファイルが必要です。 このファイルは、デバイス固有の1149.xの実装について説明しています。 このファイルが利用可能であることを確認し(通常、デバイスメーカーのWebサイトから直接入手できる)、完全に検証されていることを確認します(XJTAG 開発システムには、BSDLのシンタックス・チェック機能といった、欠かすことのできない機能も搭載されています)。
1149.1 チェーンが正しく設計され、配線されていることを確認
JTAGデバイスは、TAP信号へのアクセスを提供する個々のコネクタを持ちます。 また一方、次のデバイスのTDIに、TDO信号で「デイジーチェーン」に接続することができます。
TCK、TMS、および(オプションの)nTRST信号は、デイジーチェーン形式で接続されたすべてのデバイスに並列に接続する必要があります。 nTRST信号が直接グランドに接続されていないことが重要です。これは、個々のデバイスだけでなく、全スキャンチェーンに対してJTAGを完全に無効にするためです。
可能であれば、TAP信号を他のアクティブな信号から遠ざけて、ノイズを低減し、デジタル信号品質を向上させます。 シリアルJTAGインターフェイスは通常10MHz〜30MHzのクロックレートで動作しますが、レイアウトが悪いと、問題個所を特定するのが非常に難しいエラーが発生し、修正するためにボードを再設計することになりかねません。
TAP信号を電源またはグランドに交互に配置することで、機能しないJTAGチェーンの問題を診断し易くなります。 固定信号に短絡されたTAP信号は、短絡された2本のTAPピンよりはるかに容易に診断することができます。
全TAP信号に正しい終端を
TCKは、68Ωの抵抗と100 pFのコンデンサをグランドに対してシリーズに用いて、信号がチェーン内の最終デバイスに入る場所のできるだけ近くに配置する必要があります。 TDIとTMSは、10kΩの抵抗を使用して電源ラインに対してプルアップ接続する必要があります。 TDOは、10kΩの抵抗を使用して電源ラインにプルアップ接続し、22Ωの直列抵抗をチェーンの最終デバイスの近くに取り付ける必要があります。 またフローティング(入力が不安定になること)を避けるため、nTRSTラインに10kΩのプルダウン抵抗を追加することも推奨します。
複数のJTAGチェーン
開発時またはプログラミング時に、デバッグを目的に固有のコネクタに直接接続する必要があるデバイスがあるかもしれません。これらのコネクタを、製造テスト用に単一のJTAGチェーンにリンクできるようにすれば、BOM(部品表)と製造時のコストの両方を削減できます。 XJTAGのXJLink2コントローラは、ボード上の最大4つのJTAGコネクタに接続して、単一チェーンとしてリンクさせることができます。
JTAG コネクタの設計
JTAGコネクタ上の信号配置を設計する場合、クロストーク/干渉の可能性を考慮することが重要です。 アクティブな信号をグランド接続と交互に配置することで、これらの影響を最小限に抑えます。 コネクタで使用されるピン数からこれが現実的でない場合は、TCKをグランドの横に配置することを優先します。 これが不可能な場合は、リセットやnTRSTなどのJTAGスキャン中に変更される可能性の低い信号を使用してください。
TDO信号をTCKに隣接することを避ける配線は特に重要です。 TDOの遷移はTCKの立ち下がりエッジで発生します。したがって、TDOからのクロストークにより、TCK上でグリッチが発生し、データが破損する可能性があります。
JTAGコントローラとテスト中のボードとの間に強力なグランド接続を設けることは非常に重要です。ボードへのJTAGコネクタ上にスペアピンがある場合は、グランド信号を追加することが有益です。 XJLink2は10番ピンと20番ピンにグランド接続が固定されているため、これらを接続するとシグナル・インテグリティが改善します。
理想的には、ケーブルを再利用できるように、それぞれの新しいデザインは同じタイプのコネクタと信号レイアウトを使用します。これらのコネクタは、挿し間違いを防止するために「キー付き」にするほうが良いでしょう。誤ってコネクタを逆に取り付ける可能性がある場合は、電源ピンとTAPコントローラのGND(または「ソフトGND」)ピンとの間の短絡を防止するピンレイアウトを選択します。
TAP信号を他のコネクタのスペアピンに配線することで、専用のテストアクセスコネクタが装備されていない場合や、アクセスできない場合でもスキャンチェーンにアクセスできるかもしれません。
JTAGモードの選択
一部のデバイスでは、TAPピンを1149.xバウンダリスキャン以外の機能に設定することができます。そのため、デバイスがJTAGテストに使用されることを阻害することのないように設計することが重要です。 これらのピンの機能は通常、デバイスの他のピンをリセットしてサンプリングすることで設定されます。 設計の要件に応じて、この設定はいくつかの方法で実現されます。
- バウンダリスキャンがTAPピンに求められる唯一の機能である場合、コンフィギュレーション用のピンを必要なレベルに接続することができます。
- バウンダリスキャンが各ピンの支配的機能であるが、他の機能が必要になることもある場合は、オプションの固定抵抗器を使用することで、ボードのマイナーチェンジでコンフィギュレーション用のピンをハイまたはローにすることができます。
- 簡単に機能を切り替えることができるようにする必要がある場合、コンフィギュレーション信号をコネクタに取り出すことができます。 プル抵抗を使用してデフォルト状態を定義し、XJLink2などのコントローラでオーバーライドすることができます。
テキサス・インスツルメンツ社のプロセッサのEMU0ピンとEMU1ピンは、このようなコンフィギュレーション用のピンの一般的な例の1つです。他には、Freescale社プロセッサのModeピンや、AT91ファミリ・プロセッサのJTAGSEL信号もあります。
これらのピンに必要な値は、デバイスのデータシート/リファレンス・マニュアルに定義されています。 またデバイスのBSDLファイルのCOMPLIANCE_PATTERNSセクションに記載されることもあります。
同期型デバイスのクロックを制御可能にする
同期型デバイスは、クロックの制御ができるならXJTAG でテスト可能です。例えば、FPGA に接続さ れるSDRAM は、そのSDRAMクロックが1149.1 に準拠するデバイスから制御できる場合にのみテス トが可能です。フリーランニングなクロックがSDRAMに直接繋がっている場合は、XJTAG のテスト ベクタは。クロックに対してリアルタイムに同期できません。CPLD やFPGA などの1149.1 に準拠し たデバイスを、そのクロックソースとSDRAM のクロックの、バッファの間に介することで、下図の 様にテストのカバレッジを最大限に拡張できるでしょう。
ウォッチドッグを考慮する
テスト中にウォッチドッグ動作を無効にするためのリンク、または1149.xで制御可能なロジックを提供するようにしましょう。 ウォッチドッグがテスト中に通常の入力を受け取れなかったときに生成するリセットイベントによって、予期しないテスト結果が生成されることや、テストの完了を妨げる可能性があります。
FPGAおよびCPLDを活用する
FPGAやCPLDなどの構成可能なデバイスは、I / O信号の割合が高く、JTAGテストのカバレッジ向上に理想的です。 しかし、これらデバイスが構成された後では、これらの信号の多くは完全なI / O機能を提供しません。 アプリケーションで必要とされない入力または出力機能が「スイッチオフ」されるためです。 バウンダリスキャンを使用してもこの機能は有効にならないため、テストカバレッジが低下します。
XJTAGのWebサイトには、これらのタイプのデバイスを搭載したボードをテストするための最適な戦略を説明するアプリケーションノートがあります。
TAP信号間のスキューを低く抑える
正しい動作のためには、TAP信号間のスキューが低いことが重要です。 TCKとTMSのトラック長とバッファ遅延は、特に可能な限り同じに保つ必要があります。
スキャンチェーン上の問題特定への備え
1つのデバイスのTDO信号と次のTDI信号の間で物理的にアクセスすることができれば、機能しないスキャンチェーンが発生した場合に、どのデバイスが問題を引き起こしているかの識別が容易になります。 これは、直列終端抵抗またはテストポイントで行うことができます。
TAP信号をバッファして、異なる電圧レベルを分離する
可能であれば、ノイズとインピーダンスのミスマッチを最小限に抑え、ファンアウトを改善するために、最初のTAP信号をバッファします。 一般的に、トラックの長さが比較的短い場合、ファンアウトは4〜6個のデバイスまで許容されますが、長いトラックは1または2個のデバイスにまでにするべきです。 TCK、TDI、TMS、およびnTRSTがボード入力時にバッファリングされ、TDOがボード出力段にバッファリングされることを確認してください。 バッファが非反転であることを確認することが重要です。
異なる電圧で動作するJTAGデバイスがある場合は、同じ電圧レベルで動作するデバイスの各チェーンに、これらを分離することをお勧めします。 あるいは、同じ電圧ファミリのデバイスをデイジーチェーンでグループ化しておいて、 次に電圧変換器を介して別の電圧レベルのデバイスに接続して、それに応じて信号を調整(例えば3.3Vから1.8Vに変換)することもできるでしょう。
もし異なる電圧レベル間でTAP信号をバッファすることができない場合は、JTAGチェーンの設計で低いほうの電圧に変換できるようにする。 例えば抵抗分割器を使用して3.3V信号から2.5Vにするほうが、電圧をステップアップするより簡単です。
バッファされた信号は、前述のように終端することが重要です。 バッファへのTCK入力は、バッファに近い終端を必要とし、一方、各バッファからの出力は、トレース上の最後のデバイスに近い並列終端を必要とする。 バッファされたTDO信号は、ドライバの近くで直列終端する必要があります。
1149.x 準拠デバイスがオプションの場合のバイパス案
基板上のJTAGデバイスの一部が「オプション」の場合、そのデバイスが搭載されていないときにもTAPデータチェーンを完成させるために、通常は0Ωの抵抗が接続されていることを確認してください。
これが行われていない場合、スキャンチェーン内の壊れたデータパスは、そのチェーン内の他のデバイスを使用して行われるテストの妨げになります。 デバイスが搭載される可能性が低い場合は、別のスキャンチェーンに配置することも検討してください。
ドーターボードにも1149.xチェーンを考慮する
ドーターボードを使用する場合は、1149.xチェーンをドーターボード上のデバイスにボードコネクタを介して配線します。 ドーターボードがオプションの場合は、ボード検出ロジックを使用して、ドーターボードが取り付けられていない場合に、ドーターボードのTAPデータパスをバイパスします。
ASIC を1149.x 準拠にする
ASICまたはその他のカスタム設計されるシリコンが含まれる場合、それらデバイスを1149.xに準拠させることを検討する必要があります。 そうでなければテストできない可能性があります。
プログラマブルなデバイスに1149.x チェインからアクセスさせる
FlashやEEPROMなどのデバイスへのインシステムプログラミングが必要な場合は、プログラマブルデバイスのすべての必要なピンをJTAGデバイスからアクセス可能にします。
バウンダリスキャンベースのインシステムプログラミング時間は、スキャンチェーンの長さとTCK周波数の両方に依存します。 バウンダリスキャンベースのプログラミング速度を高めるためには、TCK周波数は可能な限り高く、スキャンチェーンはできるだけ短くなければなりません。
また1つのJTAGデバイスからすべての必要なノードにアクセスできるようにすることが望ましいです。 XJTAGは、特定のスキャンに必要でないすべてのJTAGデバイスをCLAMPと呼ばれるモードにすることで、各デバイスのデータパスを1ビットに短縮して、プログラミングプロセスを自動的に最適化します。
アドレスラッチの設定は、避けることをお勧めします。 各バイト/ワードの書き込みに必要なスキャン回数が増え、プログラミング時間が大幅に増加します。
プログラミングに必要な信号を直接制御する
プログラミング時間は、書き込みイネーブルなどのプログラミング信号や、SPIやIICなどのプロトコル全体を直接制御することによって、さらに最適化することができます。 関連するネットをボード上のコネクタに配線することにより、バウンダリスキャンではなく、JTAGコントローラのスペアI / Oピンを使用して制御することができます。 これにより、頻繁に変更する必要のある信号(通常は2回の完全なスキャンが必要)をチェーンの長さと周波数とは独立に切り替えることができるため、プログラミング時間が短縮されます。
この機能を使用するには、これらのネット上のバウンダリスキャンドライバを無効にする必要があります。
JTAG未対応なロジックをJTAGデバイスで包囲する
JTAG未対応なロジックをJTAGデバイスに囲まれたクラスタに配置して、JTAGデバイスからクラスタのすべての入力を制御し出力を監視できるようにしましょう。 可能な限り完全にクラスタの動作をテストするために、クラスタ内のノードへの十分なアクセスが可能であることを確認してください。 必要な場合は、追加のJTAG接続を追加して、必要なクラスタノードにアクセスします。 あるいは、バウンダリスキャンをサポートするプログラマブルロジックデバイスにロジックシステムを持たせることも有益です。
コネクタにも1149.x テストを活用する
テストのカバレッジは、外部コネクタが1149.1 でアクセス可能なネットに接続されることで向上します。 1149.1 ネット上の各コネクタピンに対するテストは、1149.1 でコントロール可能なI/O(XJIO ボードなど)を接続することで、オープンサーキットテストなどの拡張が追加されます。
この形式のテストは、標準のデジタル信号に対してのみ可能です。 そのようなテストが不可能なイーサネットやRS485などの信号では、ループバックを使用できるようにI / Oポートを設計します。
単一パネル上の複数基板への考察
複数基板が単一パネル上に構成されている場合、これらが分離される前に、これらに対する同時テストが出来るように、電源、TAP 信号が一貫するような検討をしましょう。
アナログ回路のテスト
1149.1および1149.6にはアナログ回路のテストは明記されていませんが、設計上の工夫で多くのテストを実行できるようになります。 1149.x準拠のデバイスの出力を使用してコンパレータやアンプの入力値を設定して、それらの出力を1149.x準拠のデバイスに入力させることを検討してください。 低コストのDACとADCを追加して、ADCとDACのデジタル側をバウンダリスキャンチェーンのデバイスに接続することで、アナログクラスタの制御と監視が可能になります。 僅かながらでも適切な回路上の追加により、多くのアナログテストが実行できるようになります。
プログラマブルデバイスのI/O を用いる場合の注意点
一部のプロセッサやFPGAのI / Oパッドに搭載されるプログラマブルプルアップを使用して、外部ロジックを動作させないようにしてください。 IICバス上のプルアップがプログラマブルプルアップによってのみ提供される場合、IICバスに接続されるデバイスはバウンダリスキャンではテストできません。 これを回避できない場合は、外部コネクタでIICバスピンにアクセスできるようにすることで、プルアップをテスト時に外部から追加することができます。
JTAG デバイスの機能を検討する
標準の1149.x技術でテストすることができない箇所や、実クロック速度でのテストが必要なデバイスもあります。 このような状況では、JTAGチェーン内のデバイスにロードされたプログラムを使用して、基板上の機能を実行することができます。
CPLDやFPGAなどの構成可能なデバイスは、SVFまたはSTAPLファイルを実行することでプログラムすることができます。 MPUなどには、XJTAGのテスト開発言語であるXJEaseの柔軟性を用いてコンフィグレーションをダウンロードすることもできます。
JTAG 未対応デバイスのテスト機能を活用する
一部のJTAG未対応デバイスには、テストカバレッジを向上させるために使用できる特別なテスト機能があります。 NANDツリーやテストパターン生成などの機能は、デバイスの機能とやりとりすることで、バウンダリスキャンでテストできない信号に接続されたネットをテストすることができます。 これらは、バウンダリスキャンで制御できるSPI、IIC、MDIOなどのインターフェイスを使用してレジスタに書き込むことで呼び出すことができます。
作業者による対話形式のテスト
多くのテストは作業者の助けを借りてのみ行うことができます。 視覚装置は、作業者が機能を観察して、その結果を入力することによって試験されます。 スイッチは、作業者によって作動されているスイッチの状態を監視するJTAG装置を介して。 ステッパモータコントローラやスピーカシステムなどの他のデバイスも同様の方法でテストできます。
不揮発性メモリをプログラムする
XJTAGは、シリアルインタフェースとパラレルインタフェースの両方でNOR型、NAND型フラッシュメモリの多くのデバイスをプログラムすることができます。 これは、アプリケーション・イメージをロードする場合や、テスト作業の一部として構成オプション、シリアル番号、イーサネットMACアドレスなどを格納する場合にも便利です。
不揮発性メモリをプログラムする
XJTAGは、シリアルインタフェースとパラレルインタフェースの両方でNOR型、NAND型フラッシュメモリの多くのデバイスをプログラムすることができます。 これは、アプリケーション・イメージをロードする場合や、テスト作業の一部として構成オプション、シリアル番号、イーサネットMACアドレスなどを格納する場合にも便利です。
高速Flashプログラミング
バウンダリスキャンによるフラッシュデバイスへのプログラミングは、一般的に非常に遅くなります。 各ネットへの操作は各JTAGスキャンで1回しか切り替えることができず、各JTAGスキャンは数千ビット長になり得るためです。 この問題に対する解決策の一つは、FPGAまたはプロセッサを活用するプログラミングルーチンを使用することです。 これは最初にフラッシュプログラミングを制御するプログラミングエンジンをFPGAまたはプロセッサにロードします。 そしてJTAGポートは、プログラミングエンジンにデータを転送するために使用されます。
FPGAによるプログラミング支援機能は、XJTAGのXJFlashを使用して実装できます。 これはフラッシュデバイスの理論上の最大値に近い速度でプログラムすることができます。 設計上、FPGAに接続されないフラッシュデバイスが含まれていても、FPGAにスペアピンがある場合は、これらのピンにフラッシュデバイスを接続することで、XJFlashを柔軟に利用することができます。
プロセッサによるプログラミング支援機能は、FPGAによるプログラミング支援機能(XJFlash)よりは遅いものの、バウンダリスキャンを使用するよりも大幅に高速です。 多くのプロセッサで提供されるデバッグインタフェースは、通信プロトコルとしてJTAGを使用します。 このようなプロセッサは、フラッシュにイメージをプログラムするフラッシュコントローラの設定を、JTAGを介して行うことができます。
高速フラッシュプログラミングの詳細については、富士設備にまでお問い合わせください。
用語集
ADC | Analog to Digital Converter |
ASIC | Application Specific Integrated Circuit |
BSDL | Boundary Scan Description Language |
CPLD | Complex Programmable Logic Device |
DAC | Digital to Analog Converter |
DFT | Design for Test(ability) |
EEPROM | Electrically Erasable and Programmable Read Only Memory |
FPGA | Field Programmable Gate Array |
IEEE | Institute of Electrical and Electronics Engineers |
1149.1 | IEEE Standard 1149.x: 1149.1: Test Access Port and boundary scan architecture 1149.6: AC coupled and differential signals (see www.ieee.org) |
IIC | Inter-Integrated Circuit (I2C) |
I/O | Input / Output |
JTAG | Joint Test Action Group |
NTRST | Test Reset (Active low TAP Signal) |
PCB | Printed Circuit Board |
STAPL | Standard Test And Programming Language |
SVF | Serial Vector Format |
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 |