この記事では、XJTAGの技術的な背景であるJTAGについて、少し詳しく紹介します。ただXJTAGのテストは高級言語で開発されていますので、ここで紹介する知識の必要無く、XJTAG開発システムを活用いただけます。
はじめに
デバイス密度の増加や、最近ではBGAパッケージなどのシリコン設計の進歩により、従来のテスト手法の有効性が低下しています。
これらの問題を克服するために、世界の主要なシリコンメーカーが結集して、Joint Test Action Groupが発足しました。このグループの調査結果と推奨事項は、米国電気電子学会(IEEE)標準1149.1:Standard Test Access Port and Boundary Scan Architectureの基礎として採用されました。この標準はグループへのリンクを保持しており、一般的に頭字語JTAGで知られています。
バウンダリスキャン
バウンダリスキャンテクノロジを使用することで得られる主な利点は、直接物理的にアクセスせずにピンの値を設定および読み取ることができることです。
図1に示す概略図が、バウンダリスキャンの一連の動作を最も簡単に表しています。
デバイスのコアロジックとピン間のすべての信号は、多数のバウンダリスキャン「セル」で構成されるバウンダリスキャンレジスタ(BSR)と呼ばれるシリアルスキャンパスによって操作されます。通常動作では、これらのバウンダリスキャンセルは隠れていますが、テストモードでは、セルを使用してデバイスピンに値を設定することや、読み取ることができます(または「internal」モードでコアロジックの値から)。すべてのバウンダリスキャンセルが同じというわけではありません。1149.1規格には10種類のセルがありますが、メーカーは、必要に応じてデバイスの実際のハードウェア機能に一致する非標準のセルタイプを定義できます。
インターフェース信号
JTAGインターフェースは、総称してテストアクセスポート(TAP)と呼ばれ、次の信号を使用してバウンダリスキャンの動作をサポートします。
- TCK(Test Clock)–この信号は、内部ステートマシンの動作を同期させるクロック信号。
- TMS(Test Mode Select)–この信号はTCKの立ち上がりエッジでサンプリングされ、次の状態を決定します。
- TDI(Test Data In)–この信号は、デバイスのテストまたはプログラミングロジックにシフトインさせるデータ。内部ステートマシンが正しい状態にある場合、TCKの立ち上がりエッジでサンプリングされます。
- TDO(Test Data Out)–この信号は、デバイスのテストまたはプログラミングロジックからシフトアウトしてくるデータ。内部ステートマシンが正しい状態にある場合、TCKの立ち下がりエッジで読み出せます。
- TRST(Test Reset)–これはオプションのピンで、使用可能な場合、TAPコントローラーのステートマシンをリセットします。
レジスタ
バウンダリスキャンに関連するレジスタには2つのタイプがあります。各準拠デバイスには、1つの命令レジスタと2つ以上のデータレジスタがあります。
インストラクションレジスタ -インストラクションレジスタは現在の命令を保持します。TAPコントローラーはその内容を使用して、受信した信号の処理方法を決定します。最も一般的には、どのデータレジスタに信号を渡すかを定義します。
データレジスタ -バウンダリスキャンレジスタ(BSR)、BYPASSレジスタ、IDCODESレジスタの3つの基本的なデータレジスタがあります。他のデータレジスタが存在する場合がありますが、JTAG標準に必要なものではありません。
- BSR–これはメインのテストデータレジスタです。デバイスのI/Oピンとの間でデータの操作(読み書き)に使用されます。
- BYPASS–これは、TDIからTDOに情報を渡す単一ビットのレジスタです。このレジスタを使ってBSRをバイパスすることで、電子回路実装基板内の他のデバイスを最小限のオーバーヘッドでテストできます。
- IDCODES–このレジスタには、デバイスのIDコードとリビジョン番号が含まれています。この情報により、デバイスをバウンダリスキャン記述言語(BSDL)ファイルにリンクします。このファイルには、デバイスのバウンダリスキャン構成の詳細が含まれています。
テストアクセスポート(TAP)コントローラー
TMS信号によって遷移が制御されるステートマシンであるTAPコントローラーは、JTAGシステムの動作を制御します。下の図2は、状態遷移図を示しています。
すべての状態には2つの出口があるため、すべての遷移はTCKでサンプリングされた単一のTMS信号によって制御できます。2つの主要なパスでは、デバイスのデータレジスタまたはインストラクションレジスタのいずれかから情報を設定または取得できます。インストラクションレジスタにロードされる値によって、動作するデータレジスタ(BSR、IDCODES、BYPASSなど)が決まります。
各状態の詳細については、IEEE 1149.1標準JTAGドキュメントを参照してください。
バウンダリスキャン命令
IEEE 1149.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 Association
https://standards.ieee.org/
財団法人 日本規格協会
https://www.jsa.or.jp/
資料
テスト容易化設計(DFT)ガイドライン
テスト容易性を改善するコツ
JTAGの概要
JTAGでできること
JTAGとは何ですか?
どのように使用できますか?
XJTAGを使用したJTAGテスト
JTAGを最大限に活用するXJTAG