Forum: FPGA, VHDL & Co. Verbindungsprüfung mit JTAG


von Simon T. (Gast)


Lesenswert?

Hallo zusammen,

ich habe jetzt das erste Mal mit JTAG zu tun. Ich habe mich etwas in die 
Materie eingelesen, aber mir fehlt die Praxis.

Ich soll ein Board in meiner Firma testen, auf dem ein FPGA und ein DSP 
draufsind. Beide sind JTAG-fähig und in einer JTAG-Kette. Ich möchte 
JTAG unter anderem dafür nutzen, um sämtliche Verbindungen zwischen den 
Bausteinen zu prüfen. Der erste Baustein in der Kette ist das FPGA. Geb 
ich für einen Verbindungstest an dessen Eingang Initialwerte vor, die 
dann über die Schnittstelle zum DSP weitergeleitet werden?

Gruß
Simon

von Lattice User (Gast)


Lesenswert?

Das Stichwort nach denen du sucht heisst Boundary Scan (IEEE Standard 
1149.1-2001).

Was du brauchts sind die BSDL Dateien der beteiligten Bauteile und ein 
Tool das diese interpretieren kann und mit deinem JTAG Adapter 
kompatibel ist.
(BSDL = Boundary Scan Description Language, ist eine Untermenge von 
VHDL).

von Christian R. (supachris)


Lesenswert?

Sowas von Hand zu machen ist recht aufwendig. Du musst die BSDL Files 
interpretieren, da steht drin, welche Pins überhaupt testbar sind. 
Manche sind nur Ausgang, manche nur Eingang, manche bidirektional. Dann 
musst du Testvektoren erstellen um möglichst viel in möglichst wenig 
Testschritten heraus zu bekommen. Leitung offen, Kurzschluss nach GND, 
VCC oder andere Leitung, Output ddefekt, Input defekt....

Für sowas gibts Programme, die das alles aus der Netzliste der Platine, 
den Bauteile-Bibliotheken, und den BSDL Files erzeugen. Wir nutzen das 
System von Göpel Electronic. Ist schon stark automatisiert, aber bis man 
zum Testprogramm mit möglichst hoher Abdeckung kommt, braucht man auch 
eine Weile.

von Simon T. (Gast)


Lesenswert?

vielen Dank für eure schnellen Antworten. Das ist gut zu wissen, dass 
die Debugger-Tools einem die Arbeit abnehmen. Da muss ich mich mal 
schlaumachen, welchen Debugger wir verwenden und mich dann in BSDL 
einarbeiten.

von Lattice User (Gast)


Lesenswert?

Simon T. schrieb:
> Das ist gut zu wissen, dass
> die Debugger-Tools einem die Arbeit abnehmen.

Nein, das hat mit den üblichen Debuggertools nicht das geringste zu tun. 
Es gibt dafür eine eigene Klasse von Testtools.
(Das schliesst natürlich nicht aus dass ein Debuggertool das auch kann)

von Lattice User (Gast)


Lesenswert?

Schau mal hier unter allegemeine Tools:

http://www.mikrocontroller.net/articles/JTAG

von Florian V. (Gast)


Lesenswert?

Lattice User schrieb:
> Schau mal hier unter allegemeine Tools:
>
> http://www.mikrocontroller.net/articles/JTAG

Einzig das ohne weiteren Kommentar aufgeführte "Universal Scan" scheint 
Boundary Scan Test zu machen. Der Rest der Seite ist dahingehend leider 
nicht weiterführend.

Neben dem schon erwähnten Göpel gibt es z.B. auch noch JTAG 
Technologies, deren Tools wir einsetzen.

Die Tools lesen üblicherweise die Netzliste Deines Designs ein und 
erstellen mit den Modellen der JTAG-fähigen, aber auch der nicht 
JTAG-fähigen Bauteile, einen Testplan. Damit kann man in erster Linie 
die Verbindungen zwischen JTAG-fähigen Bauteilen testen. Aber auch 
andere Bausteine, z.B. Speicher oder Digitallogik kann man testen, wenn 
die Software entweder Modelle davon mitbringt oder man als Entwickler 
sich Ansteuermuster überlegt.

Man kann das ganze auch auf die Spitze treiben und im Rahmen der "Tests" 
auch gleich noch die ganzen nichtflüchtigen Speicherbausteine über JTAG 
beschreiben lassen, ohne auf die herstellerspezifischen Programmer von 
FPGA, DSP, etc angewiesen zu sein.

von Strubi (Gast)


Lesenswert?

Hi,

wenn Du JTAG lernen willst, kannst Du quasi offline (ohne echte 
Hardware) mit der freien Java-Software "goJTAG" (www.gojtag.org) 
herumspielen.
Auf der echten Hardware geht das dann mit FT2232 basierten Adaptern.

Boundary-Scan-Features wie Abfrage eines Pins oder Toggeln einer LED per 
JTAG sind manuell recht einfach. Beispiele dazu im Manual zum ICEbear 
(JTAG adapter): http://www.section5.ch/dsp/icebear/ICEbear-manual.pdf

Dann gibt's noch urjtag im Sinne von mehr low-level-Kommandozeile. 
Allerdings ist der Code ein Brei von zuvielen Köchen geworden und nicht 
mehr so mein Geschmack.

Für 'echte' Systemtests mit vielen tausend Testvektoren reicht goJTAG 
aber nicht. Dazu sind dann eher teurere Tools (wie oben beschrieben) 
notwendig, weil das auch in die Tausende gehen kann, kann man's auch 
gleich selber mit den entsprechenden APIs selber programmieren. Die 
ganzen Systemtests mache ich z.B. per Python.

Grüsse,

- Strubi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.