Auf einen Blick

Die verschiedenen JTAGLive Module helfen dem Hardware-Entwickler beim Debug seiner Baugruppen. Unterschiedliche Tests, die während des Debuggings erstellt wurden, können in einer späteren Phase wieder benutzt werden, um weitere Prototypen und Produktionsbaugruppen automatisch zu testen. Dafür wurden verschiedene Werkzeuge der JTAGLive-Familie zum Softwarepaket JTAGlive Studio zusammengeführt. In JTAGLive Studio können die während des Debuggings verwendeten Tests und Messungen in einer einzigen Skriptsequenz zusammengefasst werden. Zusätzlich zu den Testmöglichkeiten lassen sich mit Studio auch Flash-Speicher und CPLDs/FPGAs programmieren. Diese Programmierung kann ebenfalls in das Gesamtskript eingefügt werden. Damit erleichtert JTAGLive Studio den Entwicklern den automatisierten Test sowie die In-System-Programmierung weiterer Prototypen und Produktionseinheiten zu einem sehr interessanten Preis.

Für die Validierung der Hardware benötigen die Entwickler Werkzeuge, die sie unabhängig von der späteren Software einsetzen können. So helfen Tools, welche Hardware-bezogene Fehler (zum Beispiel Unterbrechungen, Kurzschlüsse oder Opens) schnell zu finden oder auf einfache Weise die richtigen Registereinstellungen eines Peripherie-Controllers auzuslesen. Idealerweise sollten solche Tools nur einen minimalen Konfigurationsaufwand benötigen, damit sie dort eingesetzt werden können, wo der Fehler vermutet wird. Kurz gesagt: „Verbinden und analysieren“.

Durch Boundary-Scan-fähige Bausteine, welche inzwischen auf den meisten Leiterplatten vorhanden sind, lassen sich die Anforderungen umsetzen. Die Werkzeuge der JTAGLive-Familie wurden genau für diesen Zweck entwickelt. Sie benötigen nur einen sehr geringen Aufwand zur Konfiguration, so dass sich die Anwender ganz auf ihre Messaufgabe konzentrieren können.

Einfache Konfiguration der Messungen

Um die Messungen vorzubereiten, muss der Anwender zunächst seinen PC mittels eines JTAG-Controllers mit dem JTAG-Interface (TAP) der zu testenden Baugruppe verbinden. Dieses Interface wird mittels eines JTAG-Controllers von JTAG Technologies beziehungsweise einer Design-Interface-Hardware wie zum Beispiel Altera USB-Blaster, Programmierkabel von Xilinx oder FTDI-Chips und einem USB-zu-JTAG-Bauteilkonverter mit dem PC verbunden.

Im nächsten Schritt werden die Boundary-Scan-Bauteile der Baugruppe automatisch erkannt. Die Konfiguration wird abgeschlossen, indem sie die für jeden Boundary-Scan-fähigen Baustein die BSDL-Datei (Boundary-Scan Description Language) zuweisen. Diese sind auf den Websites der Halbleiterlieferanten und weiteren Onlineressourcen verfügbar.

Sobald die Konfiguration abgeschlossen ist, ist das System bereit, beliebige Messungen durchzuführen. Diese reichen von einfachen Pin-zu-Pin-Verbindungstests bis zu hochkomplexen Clustertests oder der Ermittlung der richtigen Registereinstellungen für Peripherie-Controller.

Pin-zu-Pin-Verbindungstest

Bei herkömmlichen Bauteilegehäusen, wie ICs auf Basis der Durchstecktechnologie und selbst bei SMT-Bauteilen mit sichtbaren Pins (zum Beispiel QFPs) ist es möglich, die Verbindung zwischen den Anschlüssen zu verifizieren. Es genügt, die beiden Messspitzen eines Multimeters mit den beiden Pins der Baugruppe zu verbinden und man weiß sofort, ob eine Verbindung besteht. Diese Pin-zu-Pin-Messung wird häufig als „Durchklingeln“ oder „Verbindungsprüfung“ bezeichnet.

Bei BGA-Bauteilen sieht die Situation jedoch anders aus. Hier wird die Pin-zu-Pin-Messung kompliziert, da der Zugang mittels Prüfnadeln häufig nicht möglich ist. In solchen Fällen hilft die JTAG-basierte Verbindungsprüfung (Buzz Measurement), welche das kostenlose Werkzeug JTAGLive Buzz bereitstellt. Die in JTAG-Bauteilen verfügbare Boundary-Scan-Testlogik ist hierbei die Grundlage des „Buzz-Tests“, um die Verbindung zwischen zwei Bauteilen zu prüfen. Zum Ausführen des Tests müssen beide Seiten über Boundary-Scan-Zellen verfügen. Auf der einen Seite wird der Boundary-Scan-Ausgangstreiber stimuliert und auf der anderen Seite geprüft, ob der verbundene Ausgang diesen Stimulus sieht.

Zusätzlich zu den „Verbindungsprüfungen“ kann das kostenlose Buzz-Werkzeug zur asynchronen Überwachung eines beliebigen Boundary-Scan-Pins verwendet werden, vergleichbar einer Messung mit der Prüfspitze eines Logikanalysers.

Der Anwender kann über den Kauf des Auto Buzz-Moduls, sein System erweitern. AutoBuzz kann die Verbindungsdaten von einem Golden Board (fehlerfreie Baugruppe) ablernen. Die abgelernten Verbindungsdaten können dann als Referenz dienen, um weitere Baugruppen auf Fehler zu prüfen. Dieser einzigartige Lernmodus [Seek & Discover] bedeutet, dass der Anwender lediglich die Daten über die Boundary-Scan-Bauteile (BSDL-Dateien) bereitstellen muss. Netz-Verbindungsdaten für andere Bauteile sind nicht erforderlich. Falls gewünscht, kann AutoBuzz die Verbindungsdaten auch von einer Netzliste, statt von einem Golden Board ablernen.

Der Test von Nicht-Boundary-Scan-Logik

Die Verbindungsprüfung (Buzz) erfordert, dass die Bauteile an beiden Enden der Verbindung Boundary-Scan-fähig sind. Wie sieht es aber aus, wenn sich dazwischen Logik-Bauteile befinden, die keine Boundary-Scan-Strukturen besitzen? In diesem Fall misst man einfach „durch die Logik hindurch“, indem man die benachbarten JTAG-Bauteile verwendet. Die Logikeingänge werden durch die verbundenen Boundary-Scan-fähigen Treiberpins stimuliert und die Antwort der Logikausgänge durch entsprechend verbundene Boundary-Scan-fähige Sensoren zurückgelesen. Dieser funktionale, Bauteil-orientierte Test ist als Clustertest bekannt und kann für beliebige Logik sowie Speicherbausteine verwendet werden. In Abhängigkeit von der Komplexität des Clusters kommen verschiedene JTAGLive-Module zum Einsatz.

Genau wie beim Test einer Pin-zu-Pin-Verbindung kann das Rücklesen der Ausgangspins eines Clusters interaktiv durchgeführt werden. Das Rücklesen von Ausgangssignalen eines Clusters auf Basis einer einzelnen Eingangskombination ist die dritte Messmöglichkeit, die im Buzz-Modul realisiert wurde. Die Antwort eines Clusters auf eine Sequenz von Eingangsstimuli kann ebenfalls interaktiv erfolgen, ähnlich dem Konzept Mustergenerator/Logikanalysator, jedoch ohne deren relativ hohe Komplexität. Hierfür ist das JTAGLive-Modul Clip ausgelegt.

Im Gegensatz zur interaktiven Testerstellung über die Module Buzz, AutoBuzz oder Clip, bietet das JTAGLive-Modul Script die Möglichkeit, auf Basis einer Programmiersprache erweiterte Tests sehr flexibel zu erstellen.

Ein Beispiel wäre der Test von Mixed-Signal-Architekturen, bei dem neben dem interaktiven Zugriff auch Schleifen beziehungsweise if/else-Strukturen, für die Initialisierung von Registern, erforderlich sind. Script verwendet die Open-Source-Programmiersprache Python, die aufgrund ihrer einfachen Syntax, gepaart mit leistungsfähigen Möglichkeiten zur Datenmanipulation bei vielen Ingenieuren in aller Welt sehr beliebt ist.

Die Schaffung von Testmodulen mittels der Skriptsprache fördert einen Bauteile-orientierten Testansatz und bietet damit auch die Wiederverwendbarkeit des erstellten Testcodes. Wer mit der Open-Source-Sprache Python arbeitet, profitiert von Tausenden Hilfsroutinen, welche eine breite Anwender-Community bereitstellt. Gerade bei Flash-Speichern soll nicht unerwähnt bleiben, dass das Script auch zur Programmierung dieser Speicher eingesetzt werden kann.

Designs mit Mikroprozessoren und/oder FPGAs

Bei Mikroprozessor-basierten Designs kann das Boundary-Scan-Register des Prozessors dazu benutzt werden, kontrollierte Schreib- und Lesezyklen auf den Bus auszugeben, um zu verifizieren, dass Peripheriebauteile und Speicher ordnungsgemäß verbunden sind.

Wenn aber die CPU kein Boundary-Scan-Register hat? In diesem Fall kann das JTAG-Debug-Interface des Mikroprozessors an dessen Stelle benutzt werden, um die Steuerung der Prozessorpins zu übernehmen. Auf diesem Konzept beruht die Funktionsweise des Werkzeugs CoreCommander. Derzeit unterstützt CoreCommander Bauteile mit dem Core ARM 7/9/11, Cortex, C166 sowie PowerPC, X-Scale und einigen TI-DSPs.

Über den Prozessorkern werden jetzt mit hoher Geschwindigkeit Schreib- und Lesezyklen durchgeführt, entweder interaktiv oder im Rahmen eines Skripts.

Neben der Durchführung von Verbindungstests kann der CoreCommander auch benutzt werden, um interaktiv die richtigen Registereinstellungen von Peripheriecontrollern zu definieren. DDR-Speichercontroller und Ethernet Mac sind Beispiele, bei denen entsprechende Registereinstellungen notwendig sind, um das richtige Protokoll und Timing für die Kommunikation zwischen Peripheriecontroller und angeschlossenen Peripheriebausteinen (in diesem Fall Speicher oder Ethernet-PHY) sicherzustellen.

Bei FPGA-basierten Designs steht man vor der gleichen Herausforderung, Verbindungen zu verifizieren und geeignete Registereinstellungen festzulegen sobald Peripheriecontroller in Form von IP-Kernen in ein FPGA umgesetzt sind.

Im Gegensatz zu Mikroprozessoren steht hier jedoch kein JTAG-Debug-Interface zur Verfügung, das den Zugriff auf die IP-Kerne erlaubt. Mit Hilfe des IP-Moduls JTAG Translator von JTAG Technologies kann das vorhandene JTAG-Interface eines FPGA-Bauteils für diese Testanwendungen erweitert werden. Dieses Modul bietet den JTAG-Zugriff, um IP-Kerne wie Memory-, Bus-Controller und mehr über die implementierte Schnittstellen-Busse wie AMBA, Avalon, CoreConnect und Wishbone zu steuern und zu überwachen. Das Translator-Modul wird über einen CoreCommander betrieben und ermöglicht schnelle Schreib- und Lesezyklen, ähnlich denen der Debug-Logik in Mikroprozessoren.

Peter van den Eijnden

ist Geschäftsführer von JTAG Technologies.

(ah)

Sie möchten gerne weiterlesen?

Unternehmen

JTAG Technologies BV

Boschdijk 50
0 Eindhoven
Netherlands