D&E: Typischerweise ist Elektronikentwicklung in die Lager Design und Verifikation gespalten. Automatisiert JTAG die Verifikation derart, dass ein Designer bereits in der Entwicklung Verifikationsinformationen erhält? Ich dachte immer, Verifikation fordert ein kreatives Element, da es quasi darum geht das Design auszuhebeln?
SL: XJTAG wurde von Designingenieuren entwickelt, die feststellten, dass existierende Tools aus dem Bereich der Fertigung stammten und sehr teuer, extrem komplex und restriktiv lizenziert waren. Oftmals erforderten sie zudem Fachschulungen.
Die Einführung von XJTAG in den Markt und die damit einhergehende Kosteneffizienz versetzte den Markt in Aufruhr. Ingenieure wurden von der bis dato üblichen Komplexität von JTAG befreit, indem ihnen ein einfach zu bedienendes Tool zur Verfügung gestellt wurde, das nicht-JTAG-Komponenten mit wiederverwendbaren Vorlagen besser testen konnte. Auch die Einführung flexibler Lizenzierungen war neuartig.
Aufgrund seiner Wurzeln hat XJTAG immer versucht, sowohl Designingenieure als auch Prüfer anzusprechen. In Wirklichkeit haben Designingenieure oft auch die Verpflichtung zur Verifizierung (auch wenn sie dies nicht so sehen), weil sie in der Regel für die Leiterplatten-Erstellung ihrer eigenen Designs verantwortlich sind. JTAG kann in diesem Stadium eines Projekts sehr nützlich sein, weil es nicht von der Firmware abhängig ist, oder gar zu einem früheren Zeitpunkt, weil schon allein durch die Einrichtung eines JTAG-Projekts eventuelle Designprobleme hervortreten können. Es besteht auch die Möglichkeit, der Entwicklungsumgebung spezifische Verifikationstools hinzuzufügen - das beste Beispiel sind XJTAGs DFT Assistant Design-Validierungs-Plugins für alle wichtigen EDA-Tools. Diese werden kostenlos zur Verfügung gestellt und entstanden, weil XJTAG feststellte, dass obwohl JTAG in Datenblättern erwähnt wird, die Tools, die die JTAG-Fähigkeit nutzen, erst nach Fertigstellung der ersten Hardware relevant werden. Um in dieser Phase noch Probleme mit JTAG zu erkennen ist es zu spät: kostspielige Re-Spins oder das Erstellen umständlicher Funktionstests sind nicht mehr vermeidbar.
D&E: Wie sieht ein funktionaler Test mit JTAG aus? Wie werden die Komponenten dabei mit Daten beschrieben und evaluiert? Wird funktionale Abdeckung erreicht? Welche Fehler sind prinzipiell damit auffindbar?
SL: Es muss an dieser Stelle sehr auf die Terminologie geachtet werden. JTAG-Tests sind (normalerweise) keine Funktionstests. Stattdessen verwenden sie die Funktionalität von Komponenten auf einer Leiterplatte, um die Verbindungen auf dieser zu überprüfen. In der Regel wird also etwas an den Eingängen einer Komponente vorgenommen und dann überprüft, ob eine erwartete Antwort von den Geräteausgängen zurückkommt. Das kann so simpel sein wie das Empfangen eines ACK von der korrekten Adresse für eine I2C-Komponente oder komplexer, wie das Überprüfen, ob Speicher geschrieben und dann zurückgelesen werden kann. Der Test zielt jedoch nicht darauf ab, die vollständige Funktion solcher Komponenten zu überprüfen, sondern soweit sicherzustellen, dass die richtige Komponente installiert und korrekt angeschlossen ist.
JTAG-Boundary-Scan-Tests sind bekannt dafür, Kurzschluss- und Leerlauffehler auf einer Leiterplatte zu finden. Aber sie erkennen auch andere Fehler, wie zum Beispiel einen falschen IC. XJTAGs Herangehensweise ist es JTAG-Tests aus drei Hauptdatenquellen zu generieren, die die getestete Platine beschreiben: BSDL-Dateien (die den JTAG-Gerätebetrieb beschreiben), Netzliste (beschreibt die Leiterplatte selbst) und Komponentenmodelle (beschreiben, wie Nicht-JTAG-Komponenten getestet werden können). XJTAG verfügt über eine Bibliothek von Modellen für Tausende von Komponenten, die im Softwarepaket enthalten ist.
D&E: Über die JTAG-Schnittstelle könnte ich direkt eine arithmetische Komponente auf dem Board programmieren, die dann auf das Flash schreibt. Muss ich dafür Assembler beherrschen? Ist diese direkte Programmierung schneller gegenüber konventionellen Flashmethoden. Wie anfällig ist dieser Vorgang für R/W-Fehler?
SL: Dies ist ein übliches Mittel zum Programmieren - es ist schneller als die Verwendung von JTAG auf herkömmliche Weise, da es nicht darauf beschränkt ist, die JTAG-Kette für jeden Pin-Übergangsschritt zu scannen. Wenn ein solches Programm selbst in Assembler oder C geschrieben werden kann, ist das fantastisch. Wenn dies nicht der Fall sein sollte ist es möglich, dass der JTAG-Hersteller dies bereits getan hat, was viel Arbeit erspart. Mit einer solchen Methode ist es viel einfacher die Nutzung vorprogrammierter Flash-Komponenten zum Produktionszeitpunkt zu vermeiden.
In Bezug auf Fehler hängt die Fehlerrate direkt von der Signalintegrität des Datenpfads ab, der auf der Leiterplatte verwendet wird. Die Erhöhung der Programmiergeschwindigkeit macht es zudem praktikabler, die zu programmierenden Daten zu verifizieren. Um dies zu erreichen kann die Software auf der Platine beispielsweise eine Prüfsumme berechnen.
D&E: Können Sie ein paar Beispiele für diese "direkte Programmmierung" geben?
SL: Bei XJTAG wird die beschleunigte Programmierung in zwei Kategorien eingeteilt – es gibt ein Produkt namens XJDirect, das ein Programm in eine CPU lädt und ausführt - damit können die Daten über eine komfortable Schnittstelle in die CPU geladen und dann in Flash programmiert werden.
Das andere Produkt zur beschleunigten Programmierung heißt XJFlash und funktioniert, indem ein Image in ein FPGA geladen wird, wodurch das FPGA zum Programmierer wird. In diesem Fall werden die zu programmierenden Daten über die JTAG-Signale an das FPGA gestreamt, welches es wiederum in den Flash schreibt.
Beide Methoden führen zu einer erheblichen Verbesserung der Programmiergeschwindigkeit. Es ist üblich, dass eine beschleunigte Programmierung durch die Schreibgeschwindigkeit der Flash-Vorrichtung und nicht durch die Datenraten in der Schaltung begrenzt wird. Diese Leistung bedeutet, dass Flash im Allgemeinen in der Produktionslinie programmiert werden kann, ohne dass Vorprogrammierungen benötigt werden.
D&E: Wie gewährleistet man Signalintegrität für die JTAG-Verbindung? Können Sie ein paar Tipps für das Design der JTAG-Verbindung geben? Inwiefern leistet das ihre Software?
SL: Die Tatsache, dass das JTAG-Testen live ist und Signale mit relativ hoher Geschwindigkeit verwendet, stellt einige grundlegende Anforderungen an das Leiterplattenlayout und an die Verkabelung, die für die Prüfung der Leiterplatte verwendet wird. Diese korrekt zu implementieren, bevor die Leiterplattein die Produktion gegeben wird, ist dementsprechend sehr wichtig. Der beste Weg, um sicherzustellen, dass dies korrekt geschehen ist, ist ein Tool wie den XJTAG DFT Assistant zu verwenden, um das Design schon in der schematischen Phase des Designs zu validieren.
Der XJTAG DFT Assistant ist ein kostenloses Tool, das in Altium Designer, OrCAD, Mentor Graphics PADS/Xpedition und Zuken CR-8000 enthalten ist. Durch die Validierung der korrekten Implementierung von Boundary-Scan-Ketten und die Einhaltung der optimalen Vorgehensweisen von Design for Test werden potenzielle Probleme frühzeitig im Entwurfszyklus erkannt. Der DFT Assistant umfasst den XJTAG Chain Checker und den XJTAG Access Viewer.
Der XJTAG Chain Checker analysiert die Netzliste und findet eine routbare Scan-Kette. Er bietet auch eine einzigartige DFT-Funktion: Die Überprüfung, ob die JTAG-Signale korrekt abgeschlossen sind. Der XJTAG Chain Checker identifiziert potentielle Fehler und Warnungen, die in JTAG-Ketten gefunden werden, z.B.: Verbindungsfehler, wenn eines der JTAG-Test-Access-Point- (TAP) -Signale an die falschen Pins eines JTAG-kompatiblen ICs angeschlossen ist; Beendigungswarnungen, wenn eines der TAP-Signale nicht wie empfohlen beendet wird; Compliance-Pin-Fehler, wenn sie fälschlich high oder low gezogen werden oder erdfrei bleiben.
Der XJTAG DFT Assistant identifiziert auch den Umfang des JTAG-Zugriffs auf einem gesamten Schaltplan. Dieser wird mit dem XJTAG Access Viewer auf den Schaltplan überlagert, so dass Designingenieure ihre Testabdeckung bereits in einem frühen Stadium des Designs nachvollziehen können. Durch die Visualisierung des Ausmaßes der Testabdeckung können die Ingenieure sehen, wie sich Änderungen des Designs auf die Testabdeckung auswirken, da sie zunehmen, wenn zusätzliche Netze auf der Leiterplatte für Boundary-Scan zugänglich gemacht werden.
Weitere Tipps für gute Leistung sind:
Für weitere Ideen stellt XJTAG unentgeltlich Design-for-Test-Richtlinien zur Verfügung, die auf der XJTAG-Website verfügbar sind.
D&E: Wie verbessert eine DFT die funktionale Abdeckung eines JTAG-Tests?
SL: Wichtig ist, dass bei der Entwicklung des Designs weiter analysiert wird - die Analyse der Testabdeckung ist ein wesentlicher Bestandteil des Schaltungsdesigns. Nur wenn der Umfang der Tests überprüft wird kann nachvollzogen werden, an welcher Stelle die Testabdeckung verbessert werden muss. Die Analyse wird auch Bereiche des Boards identifizieren, die zu besagtem Zeitpunkt nicht mit JTAG getestet werden können oder bei denen bereits eine geringfügige Designänderung die Testabdeckung erheblich verbessern würde. Es können auch Bereiche identifiziert werden, in denen Testpunkte entfernt werden können, wodurch Platz auf der Leiterplatte eingespart und Prüfvorrichtungen vereinfacht werden können.
JTAG-Tests sind in der Regel kostengünstiger zu erstellen als Funktionstests, aber der Testzugang ist final, wenn das Hardwaredesign abgeschlossen ist. Daher ist es extrem wichtig diese Tatsache früh zu berücksichtigen, bevor es zu spät ist.
Wenn ein Projekt mit Tools wie dem XJTAG DFT Assistant in der Entwurfsphase kurz vor der Fertigstellung steht und ein vollständiges JTAG-Setup für das Prototyp-Debugging durchgeführt wird, ist dies sowohl für den Schaltungsentwickler in Bezug auf die Board-Bringup-Zeit als auch für den Hersteller in Bezug auf die Produktqualität von Vorteil.
-Herr Love, vielen Dank für das angenehme Gespräch und Ihre Zeit!