Wie funktioniert Boundary Scan und was ist eigentlich JTAG ?

JTAG - der IEEE 1149.1 Standard

JTAG/Boundary Scan oder auch der Standard IEEE 1149.1 ist einer der erfolgreichsten Elektronikstandards aller Zeiten und wurde erfunden, um elektrische Baugruppen zu prüfen. JTAG/Boundary Scan ist heute kaum noch aus Elektronik-Entwicklung und Produktion wegzudenken.

Ein grundlegender Testansatz ist die Verifikation von einwandfreien Boardverbindungen. Ähnlich dem ICT (In-Circuit-Test) werden einzelne Leiterbahnen der Baugruppe an einem Punkt stimuliert und an einem anderen Punkt gemessen. Die Informationen aus dieser Messung geben Rückschlüsse über eventuelle Fehler auf der Leiterplatte. Die Leistungsfähigkeit geht jedoch weit über das Testen von Verbindungen auf Boards hinaus.

Die Embedded JTAG Solutions von GÖPEL electronic sind die Basis für neue, nicht-intrusive Verfahren und Standards für Test, Debugging, Programmierung und Emulation von Leiterplatten.

Der Boundary Scan-Test über die JTAG-Schnittstelle ist dabei der Klassiker. Über JTAG (Joint Test Action Group) wird der Zugriff auf eine serielle Schiebekette hergestellt. Darüber können sämtliche Boundary Scan IOs gesetzt und ausgelesen werden.

Prozessoren, FPGAs und andere hochentwickelte Chips verfügen oftmals über einen JTAG-TAP, den Test Access Port. Über ihn können einzelne Baugruppen zwecks Konfiguration, Kommunikation und Debugging erreicht können.

Im Standard selbst ist der Aufbau eines JTAG-fähigen Bausteins dargelegt, wie auch die Beschreibungssprache, die "Boundary Scan Description Language (BSDL)". Sie legt die für jeden Baustein einzigartige Boundary Scan Ressourcen offen.

Zum inneren Aufbau eines Boundary Scan Bausteins definiert der IEEE-Standard hierzu vier wesentliche Bestandteile, über die ein Boundary Scan-fähiges Bauteil verfügen muss:

Aufbau eines Boundary Scan Bausteins definiert durch IEEE-Standard

Bestandteile Boundary Scan-fähiger Bauteile

Boundary Scan IC
Typischer Boundary Scan IC

Das „Test Access Port“ stellt die Schnittstelle zwischen der im Baustein befindlichen Boundary Scan Logik und der Außenwelt dar. Es sind drei Eingänge (zzgl. eines optionalen vierten) und ein Ausgang beschrieben.

Die Eingänge sind:

  • Test Clock (TCK)
  • Test Mode Select (TMS)
  • Test Data Input (TDI)
  • Test Reset (/TRST) - optional

Der Ausgang ist:

  • Test Data Output (TDO)

Bei den beiden Signalen TCK und TMS sowie beim optionalen /TRST Signal handelt es sich um Broadcast Signale. Das TDI hin zum TDO hingegen bilden eine serielle Kette, die sogenannte Scankette oder auch Scanpfad (siehe Abbildung). Auf Baugruppen-Ebene spricht man vom Testbus.

Das Geniale bei diesem Konstrukt ist, dass nie mehr als vier (optional fünf) Signalleitungen benötigt werden, unabhängig davon, wie viele Bausteine in die Scankette geschaltet werden.

Im Boundary Scan Baustein sind der „Test Clock“, das „Test Mode Select“ wie auch der „Test Reset“ direkt mit dem „TAP Controller“, sprich statisch, verbunden. Die Signale sind einzig und allein verantwortlich für den dessen Zustand. Das bedeutet gleichzeitig auch, dass sich alle Boundary Scan Bausteine einer Scankette immer im gleichen TAP Zustand befinden. Das bedeutet nicht automatisch, dass sich auch alle Bausteine immer im gleichen Betriebsmode/ Befehl befinden müssen.

Der "TAP Controller" ist verantwortlich für die komplette Steuerung der Boundary Scan Logik im Baustein. Das heißt, er ist unter anderem dafür verantwortlich, ob eine Boundary Scan Zelle aktiviert bzw. deaktiviert wird und ob diese gerade messen oder treiben soll.

Herzstück des "TAP Controllers" ist die "TAP state machine". Die darin enthaltenen Zustände haben einen unterschiedlichen Einfluss auf die Steuerung der internen Boundary Scan Logik.

Das Befehlsregister ("Instruction register") entscheidet über den Betriebsmode des Boundary Scan Bausteins, der wiederum Einfluss auf die Steuerung der Boundary Scan Zellen wie auch auf die Auswahl des aktuell in die Scankette (Register zwischen TDI und TDO) geschalteten Datenregisters hat. Der Standard IEEE 1149.1 definiert drei zwingend erforderliche Befehle:

  • BYPASS
  • SAMPLE/PRELOAD
  • EXTEST

Jedem Befehl ist ein entsprechender Befehlscode (Bitcode) hinterlegt. Dieser kann von jedem Chip Hersteller frei definiert werden (ausgenommen ist der BYPASS Befehl; dieser muss sich vollständig aus Einsen zusammensetzen). Auch die Länge des Befehlsregisters ist beliebig wählbar. Eine beispielhafte Zuordnung stellt die Tabelle dar. Dabei wurde die Länge des Befehlsregisters auf zwei Bit definiert.

Betriebsmode / BefehlBefehlscode (binär)
BYPASS11
SAMPLE / PRELOAD01
EXTEST00

 

In einem Boundary Scan-fähigen Baustein können mehrere Datenregister enthalten sein. Diese dienen dazu, Informationen im Baustein abzulegen oder auch daraus auszulesen.

Der Standard IEEE 1149.1 beschreibt im Minimum zwei zwingend notwendige Datenregister:

  • bypass
  • boundary-scan

Auch hier sind wieder zusätzliche Register möglich, wie das "device identification" oder umgangssprachlich auch "idcode"-Register.

Das "bypass"-Register stellt dabei die Möglichkeit dar, den Baustein aus einem Verbund von Boundary Scan Bausteinen zu lösen, sprich diesen zu umfahren, ihn zu "bypassen". Es hat dazu eine minimale Länge von nur einem Bit. Der Wert des Bits ist unveränderlich und definiert mit 0.

Das für ein späteres Testen wesentlich interessantere Datenregister ist das Boundary-Scan-Register, welches die Aneinanderreihung der einzelnen Boundary Scan Zellen darstellt. Da jeder Chip eine andere Anzahl an Boundary Scan Zellen besitzt, ist die Länge dieses Registers variabel.

Boundary Scan Zelle

Die Boundary Scan Zelle ist der Hauptbestandteil des Boundary Scan Testverfahrens. Alle bisher beschriebenen Konstrukte dienen einzig und allein der korrekten Ansteuerung der einzelnen Boundary Scan Zellen.

Die Boundary Scan Zelle ist die geniale Möglichkeit, den Bauteilpin eines Bausteins gelöst von dessen normaler Funktion zu kontrollieren, d.h. einen bestimmten Pegel zu treiben oder auch zu messen. Zu diesem Zweck befindet sich die Boundary Scan Zelle zwischen der Kernlogik des Bausteins und dessen Peripherie (Ausgangstreiber, Eingangstreiber). Aufgrund der funktionellen Ähnlichkeit zu den physischen Abtastnadeln des In-Circuit-Testverfahrens, welche dort den Zugriff auf die einzelnen Testpunkte realisieren, spricht man bei den Boundary Scan Zellen auch von "electronic nails". 

Der interne Aufbau einer einzelnen Boundary Scan Zelle kann sich sehr unterschiedlich gestalten. Der Standard IEEE 1149.1 beschreibt in der Fassung 2001 allein zehn unterschiedliche Zelltypen (BC_1 bis BC_10). Eigene Strukturen sind zusätzlich möglich. Der Aufbau ist oft sehr ähnlich.

JTAG/Boundary Scan in Entwicklung, Fertigung und im Service

Dem Entwickler ist es wichtig in der Designphase schnell und einfach die Schaltungen zu überprüfen und zu validieren. Im Fertigungsbereich allerdings setzt man schnelle Testverfahren ein, die sehr genaue und detaillierte Fehleranalysen bieten.

Im Service/Feldeinsatz ist ein einfaches und kompaktes Testsystem, wie z.B. ein Notebook-PC mit einem PCMCIA oder einem USB Controller von Vorteil. All diese Anforderungen stellt Boundary Scan mit seinem konsequenten Einsatz in allen Phasen einer Produktentwicklung sicher. Dem Anwender stehen verschiedene Embedded JTAG Solutions Controller für unterschiedlichste Plattformen und Einsatzgebiete, wie z.B. PCI, PXI, VXI, PCMCIA, USB, Fast Ethernet und zusätzliche Power- und I/O- Module zur Verfügung. 

Mithilfe der Embedded JTAG Solutions von GÖPEL electronic werden in jedem "Lebensabschnitt" eines Produktes Flash-Speicher und PLD/FPGAs programmiert: Embedded Programming. Jederzeit können beispielsweise Firmware und Updates überspielt werden. Das bezieht sich nicht nur direkt auf die Fertigung. Auch an einem fertig montierten Gerät kann jederzeit mit einer hohen TCK-Frequzenz (abhängig von der vom Bauteilhersteller vorgegebenen maximalen Taktfrequenz) programmiert werden.