AR# 56363

Spartan-6 FPGA のデザイン アドバイザリ - デバイスがコンフィギュレーションされるとピンの値が反転して JTAG バウンダリ スキャン テストがエラーになる

説明

このデザイン アドバイザリは、Spartan-6 ファミリに適用されます。バウンダリ スキャン テストがコンフィギュレーション済みの Spartan-6 デバイスに対して実行されると、EXTEST で正しくない値が駆動され、SAMPLE 命令で読み出されます。IOB がインバーターを含めるようにコンフィギュレーションされていると、インバーターがそのパッドからバウンダリ スキャン セルまでのパスに含まれます。これにより、予測しない値が駆動されたり、セルでサンプリングされたりし、続くバウンダリ スキャン テストのベクターがエラーになります。SAMPLE、PRELOAD、EXTEST、INTEST JTAG 命令はすべてこの影響を受けます。この問題は、デバイスがコンフィギュレーションされたときに、IOB がインバーターを含めるようにコンフィギュレーションされている場合にのみ発生します。

ソリューション

ピンの BSCAN テスト中にこの問題が発生する要因は、次のとおりです。

  • Spartan-6 FPGA がコンフィギュレーションされている
  • IOB がインバーターを含むようにプログラムされている

この問題に対しては、複数の回避策があります。

(1) FPGA コンフィギュレーションがされないようにします。これは INIT ピンを Low に維持しておくか、フラッシュからコンフィギュレーションする場合は MODE ピンを変更すると達成できます。
(2) PROG ピンまたは電源サイクルを使用して以前のコンフィギュレーションを削除して、リコンフィギュレーションがされないようにします。
(3) FPGA コンフィギュレーションを入力に反転 (インバーター) を使用しないデザインで上書きします。これは、SVF ファイルを使用して JTAG ツールで実行できます。BitGen の圧縮を使用すると、シンプルなロジックを含むダミー デザインを作成できます。これにより、SVF の読み込み時間は最小に抑えられます。
(4) IOB 反転パスを使用しないように元のデザインを修正します。FPGA Editor や反転されたバウンダリ スキャン値などを使用して、反転パスを使用する IOB を識別し、そのインバーターを CLB に配置します。次の例では、LUT1 インバーターのインスタンスを UCF の LOC 制約を使用して CLB に配置しています。

VHDL :

 -- LUT1 inverter   
LUT1_inst : LUT1 
    generic map (INIT => "01") 
    port map ( 
      O => LED7, -- LUT general output 
      I0 => IN7 -- LUT input 
    );

UCF :

  # UCF Constraint places LUT1_inst inverter into a SLICE (versus into the IOB)   INST LUT1_inst LOC=SLICE_X*Y*;

改訂履歴
2013/6/13 - 初版

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
34856 Spartan-6 FPGA のデザイン アドバイザリのマスター アンサー N/A N/A
AR# 56363
日付 02/19/2014
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス
ツール