Umgang mit programmiert FPGA’s beim BScan

Immer wieder führen programmierte FPGAs beim Boundary Scan zu Problemen - hier finden Sie die Lösung.. 


 

Grundlagen

Ein geladener/konfigurierter FPGA führt in vielen Fällen im Zusammenspiel mit dem Standard BSDL zu vielen Fehlern oder sogar Kettenabbrüchen während dem BSCAN.
Hintergrund ist, dass durch die Konfiguration die PIN Eigenschaften verändert werden.

Die Hersteller (Xilinx/Altera/Lattice) bieten aus diesem Grund in Ihren Programmiertools Optionen zum Erstellen von speziell angepassten BSDLs an.
Ich empfehle jedoch aufgrund von folgenden Punkten auf den Einsatz dieser BSDLs zu verzichten

  • Load-Veränderung kann zur BSDL Änderung führen
  • Höherer Aufwand für die Erstellung
  • Verringerung der Testabdeckung und Diagnose !!

Viele Anwender verhindern die Konfiguration des FPGAs auch durch Jumper oder sogar durch das Löschen vor dem Test und dem erneuten Programmieren über ein SVF,JAM,Staple nach erfolgreicher Prüfung.
Diese Möglichkeit führt jedoch zu einer nicht zu vernachlässigen Verlängerung der Prüfzeit...

Eine bessere Lösung ist deshalb die Konfiguration nur zeitweise außer Betrieb zusetzen, dies ist wie folgt möglich


Altera-FPGA

Durch das Laden der Instruktion „Config_IO“ und einer kurzen Wartezeit (~1s) kann die Load außer Kraft gesetzt werden.

Hierzu kann im EGS der CASCON Software des Herstellers Göpel folgender Eintrag vorgenommen werden

(CASCON 
  (Begin  
       load Dx, config_io;  
       irshift;  
       wait 1000; 
       tapreset;
  )
)

Anmerkungen:

  • Nach der Entladen der Load,  muss zwingend ein "TAPRESET" oder alternativ ein "load Dx, Bypass","load Dx, Sample","load Dx, Extest" eingefügt werden.
    Dies ist notwendig da das config_io Register eine sehr große Anzahl von BSCAN Zellen aufweist und dies alle nachfolgenden Tests erheblich verlängert.

  • Bei einigen Typen (Cyclone III) kann es evtl. notwendig sein, vorher die Instruktion „Factory“ oder „ACTIVE_DISENGAGE” zu senden

Xilinx-FPGA

Durch das Tooglen des ProgB Pins kann die Load bei Xilinx-FPGAs ebenfalls außer Kraft gesetzt werden.
Da der ProgB jedoch nicht direkt getoggled werden kann, muss das togglen über einen angeschlossen Pin erfolgen – bei allen bisher mir bekannten Designs war dies möglich.

  

 Hierzu kann im EGS der CASCON Software des Herstellers Göpel folgender Eintrag vorgenommen werden

-----------------------------------------------------------------
(BSCANMODIFICATIONS 
  (NET 'example_net' drive_low)      --> avoid FPGA configuration
----------------------------------------------------------------- 
(CASCON
  (STEP_1
     enable(Dx:#yz); 
     drshift;
     dl (Dx:#yz);
     drshift;
     dh (Dx:#yz);
     drshift;
     dl (Dx:#yz); 
  )
-----------------------------------------------------------------

Anmerkungen: 

  • Aus bisher ungeklärten Gründen hat es bei einem mir bekannten Design umgedreht funktioniert, d.h. low und high vertauscht. 

Lattice-FPGA

Bisher keine Lösung gefunden - Doku wird sobald Erkenntnisse vorliegen ergänzt.