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/

