UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 15346

8.1i BSDLAnno - BSDLAnno について コンフィギュレーション済み BSDL ファイルを BSDLAnno を使用して作成する方法について

説明

キーワード : boundary scan, バウンダリ スキャン

このアンサー レコードは、BSDLAnno についての情報を提供します。

ソリューション

更新日 2006 年 9 月
- サポートされるアーキテクチャの更新
- BSDLAnno によるファイルの修正方法についての記述の更新
- 既知の問題の更新

BSDLAnno
BSDLAnno は、次のファミリと互換性があります。
Virtex, Virtex-E, Virtex-II, Virtex-II Pro, Virtex-II Pro X, Virtex-4, Virtex-5, Spartan-II, Spartan-IIE, Spartan-3, Spartan-3E, XC9500, XC9500XL, XC9500XV, XPLA3 (CoolRunner), XBR (CoolRunner-II)

このアンサーは次のセクションに分かれています。
- 概要
- 構文
- 入力ファイル
- 出力ファイル
- オプション
- ファイル構成と概要
- コンフィギュレーション済みデバイスでのバウンダリ スキャンのビヘイビア
- BSDLAnno 5.1i の既知の問題および制限

BSDLAnno の概要
バウンダリ スキャン記述言語は、IEEE 1149.1 で「デバイスのバウンダリ スキャン アーキテクチャを定義する一般的な方法」として定義されています。 ザイリンクスでは、コンフィギュレーション前のバウンダリ スキャン アーキテクチャを記述するために 1149.1 と 1532 の両方の BSDL ファイルを提供しています。 ほとんどのデバイスの場合、バウンダリ スキャン アーキテクチャは、デバイスのコンフィギュレーション後に変更します。これは、バウンダリ スキャンのレジスタが、I/O バッファと感度増幅器を介すためです。

BSCAN レジスタ -> IO バッファ/感度増幅器 -> PAD

バウンダリ スキャン ロジックが、デザインで指定された I/O 標準で動作するようにこのように決められています。 このため、使用可能な I/O 標準の全範囲でバウンダリ スキャン テストができます。

デバイスがコンフィギュレーションされた場合、バウンダリ スキャン レジスタとパッド間の接続が変更されることがあるためバウンダリ スキャン アーキテクチャが変更されます。 このような場合は、コンフィギュレーション後の BSDL ファイルを修正し、バウンダリ スキャン テスタに反映させます。 バウンダリ スキャン アーキテクチャへの変更が BSDL ファイルに反映されいない場合、バウンダリ スキャン テストでエラーが発生します。

ザイリンクスでは、コンフィギュレーション後のインターコネクト試験用に BSDL ファイルの変更を自動で行なう BSDLAnno を提供しています。 BSDLAnno では、配線後の NCD ファイル (FPGA) または PNX ファイル (CPLD) から必要なデザインの情報を得て、コンフィギュレーション後のデバイスのバウンダリ スキャン アーキテクチャを反映させた BSDL ファイルを生成します。

BSDLAnno の構文
コンフィギュレーション後の BSDL ファイルを生成するには、次の構文を使用します。

bsdlanno [options] infile outfile[.bsd]

infile は、指定したデザインのソース ファイルです。 FPGA デザインの場合、infile は PAR 後の NCD ファイルで、拡張子は .ncd とする必要があります。 CPLD デザインの場合、infile は .pnx ファイルです。

outfile[.bsd] は、デザイン指定の BSDL ファイルのデスティネーションです。 拡張子 .bsd はオプションです。 拡張子 .bsd を含む BSDL ファイル名は、24 文字以内でなければなりません。

例 :
bsdlanno -s IEEE1149 design.ncd xcv50e_pq240_design.bsd

BSDLAnno の入力ファイル
BSDLAnno では、コンフィギュレーション後の BSDL ファイルの生成に次の 2 つの入力ファイルが必要です。
- ザイリンクスのインストール ディレクトリから自動で読み出されるコンフィギュレーション前の BSDL ファイル
- infile として指定した配線後の NCD ファイル (FPGA) または PNX ファイル (CPLD)

BSDLAnno の出力ファイル
BSDLAnno から出力されるファイルは、信号の方向性、未使用 I/O、その他のデザイン指定のバウンダリ スキャン ビヘイビアが反映されたテキスト形式の BSDL ファイルです。

BSDLAnno のオプション
このセクションでは、コマンド ライン オプションについて説明します。

[-s IEEE1149|IEEE1532]

-s は、変更する BSDL ファイルのバージョンを示します。 (ほとんどの場合、IEEE1149 に指定する必要があります。)

BSDLAnno の変更
JTAG 準拠デバイスの製造者は、各デバイスに対して BSDL ファイルを提供する必要があります。 BSDL ファイルには、JTAG 準拠デバイスのバウンダリ スキャン アーキテクチャが VHDL で記述されます。 次に、IEEE 1149.1 の BSDL ファイルの記述構成と、各セクションの変更方法について説明します。

1. エンティティ宣言
エンティティ宣言は、BSDL ファイルで記述されたデバイス名を指定する VHDL コードです。

例 (xcv50e_pq240.bsd ファイルより) :
entity XCV50E_PQ240 is

BSDLAnno により、名前が競合しないようにエンティティ宣言が変更されます。 変更されたエンティティ宣言の名前は、入力ファイルの NCD または PNX ファイルのデザイン名に一致します。

2. ジェネリック パラメータ
ジェネリック パラメータは、パッケージを指定します。

例 (xcv50e_pq240.bsd ファイルより) :
generic (PHYSICAL_PIN_MAP : string := "PQ240" );

ジェネリック パラメータは、BSDLAnno では変更されません。

3. 論理的ポートの記述
論理的ポートの記述では、デバイス上のすべての I/O がリストされ、入力 (in bit;)、出力 (inout bit;)、双方向 (inout bit;) といったピンの種類を指定したり、バウンダリ スキャンに使用可能かどうか (linkage bit;) が指定されます。 出力としてコンフィギュレーションされたピンは、inout と記述されます。これは、ピンが出力としてのみ使用された場合でも入力のバウンダリ スキャン セルが接続されたままとなっているためです。 出力を inout と記述することにより実際のデバイスのバウンダリ スキャンに反映し、 幅広くテストを行なうことができます。

チップ上のすべての I/O は、すべてのパッケージで使用できるわけではありません。 使用されていない I/O は、コンフィギュレーション前の BSDL ファイルでリンケージ ビットとして定義されます。

例 (xcv50e_pq240.bsd ファイルより) :
port (
CCLK_P179: inout bit;
DONE_P120: inout bit;
GCK0_P92: in bit;
GCK1_P89: in bit;
GCK2_P210: in bit;
GCK3_P213: in bit;
GND: linkage bit_vector (1 to 32);
INIT_P123: inout bit; -- PAD96
IO_P3: inout bit; -- PAD191
IO_P4: inout bit; -- PAD190
IO_P5: inout bit; -- PAD189
IO_P6: inout bit; -- PAD188

コンフィギュレーション後、BSDLAnno でバウンダリ スキャン回路の機能と一致させるため論理ポートの記述を修正します。 変更は次のように行われます。

- 専用ピン (JTAG、モード, DONE など) は変更されない
- 双方向と定義されたピンは inout bit; のままである
- 入力と定義されたピンは in bit; に変更される
- 出力と定義されたピンは inout bit; に変更される
- 未使用のピンは inout bit; のままである
- 差動ペアの N サイドは linkage bit; に変更される

4. パッケージ ピンのマップ
パッケージ ピンのマップでは、デバイス上のパッドとデバイス パッケージのピンとの接続を定義します。

例 (xcv50e_pq240.bsd ファイルより) :
"CCLK_P179:P179," &
"DONE_P120:P120," &
"GCK0_P92:P92," &
"GCK1_P89:P89," &
"GCK2_P210:P210," &
"GCK3_P213:P213," &
"GND:(P1,P8,P14,P22,P29,P37,P45,P51,P59,P69," &
"P75,P83,P91,P98,P106,P112,P119,P129,P135,P143," &
"P151,P158,P166,P172,P182,P190,P196,P204,P211,P219," &
"P227,P233)," &
"INIT_P123:P123," &
"IO_P3:P3," &
"IO_P4:P4," &
"IO_P5:P5," &
"IO_P6:P6," &

パッケージ ピンのマップは、BSDLAnno では変更されません。

5. USE 文
USE 文は、BSDL ファイルで参照される属性、タイプ、制約などを含む VHDL パッケージを呼び出します。

例 (xcv50e_pq240.bsd ファイルより) :
use STD_1149_1_1994.all;

USE 文は、BSDLAnno では変更されません。

6. スキャン ポートの識別
スキャン ポートの識別では、JTAG ピン (TDI、TDO、TMS、TCK、TRST) を定義します。 (TRST は、ザイリンクス デバイスでは使用されないオプションのピンです。)

例 (xcv50e_pq240.bsd ファイルより) :
attribute TAP_SCAN_IN of TDI : signal is true;
attribute TAP_SCAN_MODE of TMS : signal is true;
attribute TAP_SCAN_OUT of TDO : signal is true;
attribute TAP_SCAN_CLOCK of TCK : signal is (33.0e6, BOTH);

スキャン ポートの識別は、BSDLAnno では変更されません。

7. TAP 記述
TAP 記述は、デバイスの JTAG ロジックに関する追加情報を示します。 この記述に含まれるのは、命令レジスタ長、命令 Opcodes、デバイス IDCODE などです。 これらの特性はデバイス固有で、デバイスによって大きく異なります。

例 (xcv50e_pq240.bsd ファイルより) :
attribute COMPLIANCE_PATTERNS of XCV50E_PQ240 : entity is
attribute INSTRUCTION_LENGTH of XCV50E_PQ240 : entity is 5;
attribute INSTRUCTION_OPCODE of XCV50E_PQ240 : entity is
attribute INSTRUCTION_CAPTURE of XCV50E_PQ240 : entity is "XXX01";
attribute IDCODE_REGISTER of XCV50E_PQ240 : entity is

TAP 記述は、BSDLAnno では変更されません。

8. バウンダリ レジスタの記述
バウンダリ レジスタの記述は、バウンダリ スキャン セルの構成を示します。 各ピンには最高 3 つのバウンダリ スキャン セルがあり、このセルはそれぞれレジスタとラッチで構成されています。 バウンダリ スキャン試験ベクタは、これらのレジスタにロードされるか、レジスタからスキャンされます。

例 (xcv50e_pq240.bsd ファイルより) :
attribute BOUNDARY_REGISTER of XCV50E_PQ240 : entity is
-- cellnum (type, port, function, safe[, ccell, disval, disrslt])
" 0 (BC_1, *, controlr, 1)," &
" 1 (BC_1, IO_P184, output3, X, 0, 1, PULL0)," & -- PAD48
" 2 (BC_1, IO_P184, input, X)," & -- PAD48

IOB には、制御レジスタ、出力レジスタ、入力レジスタという 3 つのバウンダリ スキャン レジスタがあります。 バウンダリ スキャン レジスタの記述は、BSDLAnno で次のように変更されます。

シングル エンド ピンの場合の BSDL ファイルの変更
ピン 57 がシングルエンドのトライステート出力ピンとしてコンフィギュレーションされた場合、コードの修正は必要ありません。

-- TRISTATE OUTPUT PIN (three state output with an input component)
" 9 (BC_1, *, controlr, 1)," &
" 10 (BC_1, PAD57, output3, X, 9, 1, Z)," &
" 11 (BC_1, PAD57, input, X)," &

ピン 57 がシングルエンドの入力ピンとしてコンフィギュレーションされた場合、次のように変更します。
-- PIN CONFIGURED AS AN INPUT
" 9 (BC_1, *, internal, 1)," &
" 10 (BC_1, *, internal, X)," &
" 11 (BC_1, PAD57, input, X)," &

ピン 57 がシングルエンドの出力ピンとしてコンフィギュレーションされた場合は、シングルエンドの双方向ピンとして見なされます。
-- PIN CONFIGURED AS AN OUTPUT
" 9 (BC_1, *, controlr, 1)," &
" 10 (BC_1, PAD57, output3, X, 9, 1, Z)," &
" 11 (BC_1, PAD57, input, X)," &

ピン 57 がデザインで未使用となっている場合、変更の必要はありません。
-- PIN CONFIGURED AS "UNUSED"
" 9 (BC_1, *, controlr, 1)," &
" 10 (BC_1, PAD57, output3, X, 9, 1, PULL0)," &
" 11 (BC_1, PAD57, input, X)," &

説明 :
シングルエンド ピンの場合、ピンが入力としてコンフィギュレーションされた場合にのみ変更が必要です。 この場合、バウンダリ スキャン ロジックは、出力ドライバとは未接続で出力を駆動できません。 ピンが出力としてコンフィギュレーションされた場合、バウンダリ スキャンの入力レジスタはピンに接続されたままとなっています。 このため、バウンダリ スキャン ロジックは、ピンが双方向ピンとしてコンフィギュレーションされた場合と同じ機能を持っています。

差動ピンの場合の BSDL ファイルの変更
ピン 57 が双方向ピン、トライステート出力、または出力の正の差動ピンとしてコンフィギュレーションされた場合、BSDL ファイルで次のように変更します。
" 9 (BC_1, *, controlr, 1)," &
" 10 (BC_1, PAD57, output3, X, 9, 1, Z)," &
" 11 (BC_1, PAD57, input, X)," &

ピン 57 が正の差動入力ピンとしてコンフィギュレーションされた場合、次のように変更します。
" 9 (BC_1, *, internal, 1)," &
" 10 (BC_1, *, internal, X)," &
" 11 (BC_1, PAD57, input, X)," &

ピン 57 が負の差動ピン (あらゆる場合:入力、出力、トライステート出力、および双方向) としてコンフィギュレーションされた場合は、次のように変更します。
" 9 (BC_1, *, internal, 1)," &
" 10 (BC_1, *, internal, X)," &
" 11 (BC_1, *, internal, X)," &

説明 :
ほとんどの場合バウンダリ スキャン デバイスでは、各差動ペアに 3 つのバウンダリ スキャン レジスタのみを使用します。 ほとんどのデバイスでは、各入力ピンごとではなく差動ペアごとにバウンダリ スキャンが制御されます。 これは、2 つのピンでは 1 ビットのみのデータを送信するため、1 入力、1 出力となり、制御レジスタが必要となるためです。 3 つのバウンダリ スキャンセルが各ピンにあり 6 つのレジスタが差動ペアにあるためザイリンクス デバイスでの差動ピン管理は紛らわしいことがあります。 N サイドのレジスタは、バウンダリ スキャン レジスタにありますが、ピンには全く接続されていません。これは、N サイドのレジスタがコンフィギュレーション後の BSDL ファイルで内部レジスタとして表示されているためです。 バウンダリ レジスタは、出力バッファと入力の感度増幅器の後ろにあるため、P サイドのレジスタは、N サイドのピンのビヘイビアも制御します。 たとえば、P サイドの出力スキャン レジスタに値が割り当てられ、出力がイネーブルになると、出力ドライバではその反対の値を N サイドのピンで駆動します。 これは、バウンダリ スキャン ロジックとは関連していません。

このように、差動ピンペアに関連のすべての動作は、P サイドのピンに接続されたバウンダリ スキャン セルで処理されます。 差動ペアでの値をとるには、P サイドの入力レジスタをスキャンします。 差動ペアでの値を駆動するには、P サイドの出力レジスタで値をシフトします。 N サイドのスキャン レジスタの値は、ピンには影響しません。

9. DESIGN_WARNING セクションへの変更
BSDLAnno では、次の DESIGN_WARNING を BSDL ファイルに追加します。
コンフィギュレーションのビヘイビアを反映させるため、BSDL ファイルを変更します。
USER1、USER2 または USERCODE レジスタは、BSDLAnno によって変更されません。
BSDLAnno の機能および制限についての詳細は、『システム開発リファレンス ガイド』 を参照してください。
;

10. ヘッダ コメント
次のように、BSDLAnno で追加された最初のコメント文から beta を削除して読み込みます。
--
-- BSDLAnno Post-Configuration File for design <entity name>
-- BSDLAnno <BSDLAnno version number>

コンフィギュレーション後のバウンダリ スキャン ビヘイビア
BSDL ファイルは、コンフィギュレーションされていないデバイスのバウンダリ スキャン ビヘイビアを反映します。
- コンフィギュレーション後、デバイスのバウンダリ スキャン ビヘイビアは変化していることがあります。 コンフィギュレーション前は双方向ピンであった I/O ピンは、入力のみとなることがあります。
- バウンダリ スキャン試験ベクタは通常、BSDL ファイルから得られます。したがって、コンフィギュレーション済みのデバイスでバウンダリ スキャン試験を実施する場合、変化したデバイスのバウンダリ スキャン ビヘイビアが反映されるように BSDL ファイルを変更する必要があります。
- バウンダリ スキャン試験は、できる限りコンフィギュレーションされていないデバイスで実施するようにしてください。 コンフィギュレーションされていないデバイスを使用すると、すべての I/O が双方向スキャン ベクタに使用できるようになるため、対象範囲が広がります。

コンフィギュレーション済みのデバイスでバウンダリ スキャン試験を実施するのは、次のような場合に限られます。
- コンフィギュレーションの実行が避けられない場合
- 差動信号標準を使用する場合 (両方のデバイスがコンフィギュレーション前の状態でテストされるように差動信号をデバイス間に配置しない場合、 差動ペアの各サイドはシングルエンド信号として動作します)

BSDLAnno 5.1i の既知の問題および制限

1. N サイドの差動ペアの処理を改善する必要がある
以前のバージョンでは、「BSDLAnno では N サイドの差動ペアをバウンダリ レジスタから削除します。」と記述されていました。 BSDLAnno の今後のバージョンで、BSDL ファイルの差動ペアが「グループ化されたポート」としてアノテートされ、N サイドの差動ピンがバウンダリ スキャン レジスタに含まれるように変更する予定です (IEEE1149.1 セクション B.8.8 に準拠)。

ザイリンクスでは、この記述を変更しました。 ザイリンクスは、現在の差動ピン ペアの処理がコンフィギュレーション済みザイリンクス デバイスの BSCAN アーキテクチャを記述するには最適な手段であると考えています。

N サイドをリンケージ ビットとして指定してしまうと、ピンを個々にテストすることができなくなります。 ザイリンクスの N サイドのピンの BSCAN セルがピンと未接続なため、このピンが N サイドの差動ペアとしてコンフィギュレーションされた場合はこれらのセルは使用されません。 このため、BSDLAnno ではこれらのセルをリンケージと示します。 N サイドの差動ペア ピンにバウンダリ スキャン セルを使用するということがあまりないためこのような場合に混乱が生じます。ほとんど場合デバイスでは 1 つのバウンダリ スキャン セルを各差動ペアに使用しています。 N サイドをリンケージに指定することにより差動ペア ピン は BSCAN セルになります。差動ペアのあるデバイスでは、ほとんどがこのようになっています。 差動ペアを制御するには、P サイドの BSCAN セルにアクセスする必要があり、BSDLAnno での変更によりこの処理が行なわれます。

2. ユーザー定義のバウンダリ スキャン レジスタ (USER1 および USER2) がアノテートされない
BSDLAnno により、コンフィギュレーション後の BSDL ファイル内でユーザー定義のバウンダリ スキャン レジスタがアノテートされません。 現在のところ、この問題の修正は予定されていません。

3. 制御レジスタの safe 値が正しく出力されない
詳細については、(Xilinx Answer 15419) を参照してください。

4. バウンダリ スキャン セル タイプが不正に変更される
BSDLAnno でバウンダリ スキャン セル タイプがすべて BC_1 に不正に変更されます。 BSDLAnno では、セル タイプは変更されません。 この問題を回避するには、未修正の BSDL ファイルで、正しいセル タイプを確認し、テキスト エディタの検索/置換を事項し、BC_1 のすべてのインスタンスを正しいセル タイプに変更してください。

5. ピンの方向性のアノテーション
コンフィギュレーション後のピンの方向性については、データベースを参照してください。 たとえば、BSDLAnno では出力としてコンフィギュレーションされたピンを出力としては扱われず、双方向ピンとして扱われます。これは、コンフィギュレーション済みのデバイスで使用可能な実際のバウンダリ スキャンの構成に反映しているためです。 このため、回路の方向性が BSDL ファイルの影響を受け、FPGA デザインの記述どおりにならないことがあります。 BSDLAnno で、出力を双方向ではなく出力として扱った場合、全体的なテスト範囲は少なくなりますが、この場合も問題となることがあります。

BSDLAnno での目的は、コンフィギュレーション後のザイリンクス デバイスでの実際のバウンダリ スキャンの構成に反映させ、テストの範囲を最小限に抑えることです。 このため不都合となる場合もありますが、ザイリンクスではデバイスのバウンダリ スキャン ソースをフルに使用することが一番であると考えています。
AR# 15346
日付 09/12/2006
ステータス アクティブ
種類 一般
このページをブックマークに追加