Forum: FPGA, VHDL & Co. Frage zu Boundary Scan


von Daniel (Gast)


Lesenswert?

Hallo zusammen,

kann mir jmd. mal genau erklären, wie der Boundary-scan funktioniert?
Soweit ich verstanden habe, wird eine Testumgebung geschrieben, die
mittels JTAG nacheinander alle Boundary Register des jeweiligen I/O's
setzt (0,1,z) und es werden alle übrigen Boundary-Register auf ihren
Zustand geprüft ob er den Erwartungen entspricht.
Ist das so korrekt?
Wenn ja, muß ich beim Layout irgendwas Wichtiges bezüglich boundary
scan beachten? Was mache ich z.B. mit unbenutzten IO's?

Danke für Antwort,
Daniel

von Jürgen Schuhmacher (Gast)


Lesenswert?

Die IOs sind kein Problem, da Du die von aussen beobachten und damit
auch testen kannst. Die boundary scan Technik wurde ja entwickelt, um
ein Schaltwerk gezielt in einen Zustand bringen zu können ohne es
funktionell durchtakten zu müssen: Man lädt die FFs derart mit Werten
voll, daß sich Fehler (beim nächsten Takt) äussern können. Damit kann
man theoretisch alle Funktionen abstrakt durchtesten ohne funktionell
vorgehen zu müssen, um alle möglichen Zustände "abzuklappern".

Folge: Man braucht keine IOs um Fehler zu sehen.

Ws die IOs selbst angeht: Wenn Du sie nicht benutzt, musst Du sie auch
nicht testen. Du könntest allerhöchstens den Treiber davor testen. Wenn
Du für Deine Appl aber noch IOs über hast, kannst Du sie als logische
Testpins herausführen.

von Daniel (Gast)


Lesenswert?

Jürgen, danke erstmal für die schnelle Antwort!
Ok, das habe ich soweit verstanden. Aber es geht doch hauptsächlich
darum, nicht auf "Nadelbretter" angewiesen zu sein und mit den 4
Leitungen der JTAG-Schnittstelle sämtliche Funktionen testen zu können
ohne an den Pins messen zu müssen. Ob ich nun alle Möglichkeiten
abklapper oder gezielte Funktionen durchteste sei erst mal dahin
gestellt.
Aber prinzipiell ist es doch richtig, das mittels JTAG dann nur noch
die jeweiligen Register ausgelesen/geschrieben werden müssen und nicht
mehr gemessen werden muß, oder?
Sehe ich das von Prinzip her richtig?

Danke, Daniel

von Jürgen Schuhmacher (Gast)


Lesenswert?

JTAG unterstützt das, sicher (sofern es der Proz / das FPGA ebenso tut).
Man braucht aber auch noch eine Testsoftware, die man mit Testmustern
füttert, welche dann per BS eingeschrieben, durchführt und geprüft
werden. Die Testmuster kommen dabei (hoffentlich) aus deiner
Designsoftware und wurden entsprehend optimiert. Um das Optimieren
ranken sich indes eine Reihe theoretischer Abhandlungen. Womit arbeiest
Du ?

von Daniel (Gast)


Lesenswert?

Hallo Jürgen,
war länger nicht da. Die Testsoftware ist erstmal nebensächlich und
soll hinterher erstellt werden. Ich entwerfe ein Design für einen
Spartan2. Hierbei soll sichergestellt werden, daß Boundary scan
gewährleistet ist. Sobald das FPGA läuft habe ich damit nichts mehr zu
tun, denn das Erstellen der Testsoftware geschieht extern. Ich muß nur
gewährleisten das es möglich ist. Daher muß ich mir Gedanken über die
JTAG Schnittstelle (evt. Daisy Chain) machen. Bin wohl auch lange nicht
so fit in programmierbarer Logik wie Du es zu sein scheinst.
Ich arbeite mit ISE7.1 von Xilinx. Muß ich denn jetzt schon, im Zuge
des Designentwurfs, die Testmuster erstellen/berücksichtigen?
Ich dachte das kann nachher geschehen.

Danke erstmal, Daniel

von Jürgen Schuhmacher (Gast)


Lesenswert?

Naja, die Testmuster als Testsatz kommen aus einer Fehlersimulation des
fertigen Designs. Unter Annahme von möglichen "stuck-at"-Fehlern wird
dabei geprüft, ob ein bestimmter Zustandsübergang geeignet ist, einen
angenommenen Fehler an einem Ausgang zu zeigen oder nicht. Man
optimiert die Testmnuster nun so, daß mit möglichst wenig
Zustandwechseln gleichzeitig möglichst viele Fehler beobachtbar sind -
sich also bei dem angenommenen Fehelr an den beobachteten Ausgängen
eine anderes Ergebnis zeigt, als es in der Gutsimulation der Fall sein
muss.

Was Du hardwaretechnisch realsieren musst: Die BS-fähigen Zellen (über
JTAG) zugriffsfähig machen. Je nach Synthesetool wird das aber
automatisiert durchgeführt / bzw ist einstellbar. Welchen Baustein
benutzt Du denn ?

von Daniel (Gast)


Lesenswert?

Danke erstmal.
Ich benutze einen Spartan2.
Aber was meinst Du mit zugriffsfähig machen? Lt. Datenblatt sind alle
I/O's irgendwelchen internen Registern zugeordnet, die ich dann über
JTAG auslesen kann- oder sehe ich das falsch?

Daniel

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.