Platz 1: Lauterbach: Open Source JTAG Switcher
In einer modernen Multi-Prozessor-Umgebung kann ein System aus vielen verschiedenen Prozessoren bestehen, die sich jeweils auf eine bestimmte Verarbeitungsaufgabe konzentrieren. Der Multiprozessor-JTAG arbeitet, indem er die Debug-Schnittstellen der Geräte miteinander verbindet. Oftmals haben diese inkompatible Debug-Schnittstellen, z.B. können sie unterschiedliche Spannungsanforderungen haben. Mit modernen Prozessoren, die in der Lage sind, in sehr stromsparende Modi einzusteigen, kann die Debug-Schnittstelle eines jeden Prozessors jederzeit abgeschaltet werden, was die Kette durchbricht und das Debuggen jedes angeschlossenen Geräts verhindert.
Der JTAG Switcher wurde entwickelt, um all diese Probleme zu lösen. Er kann mit Prozessorkernen arbeiten, die unterschiedliche Spannungen verwenden, und kann sich nahtlos an wechselnde Kettenlängen anpassen, wenn Prozessorkerne in und aus Niederspannungszuständen wechseln.
Mögliche Anwendungen sind die Möglichkeit für Entwickler, Kombinationen von Multiprozessoren auf einem Modul zu testen, da einzelne Geräte on-the-fly in die und aus der JTAG-Kette geschaltet werden können. Mehrere Ziele können mit einem einzigen Debugger für Regressionstests verbunden werden. Der Code des JTAG Switchers könnte auch in Chips integriert werden, bei denen ähnliche Probleme innerhalb eines Chips auftreten können. Damit könnte eine eigenständige Einheit entwickelt werden, die es ermöglicht, die JTAG-Schnittstellen mehrerer Module unter der Kontrolle eines einzigen Debuggers zusammenzuführen.
Der VHDL-Quellcode für den JTAG Switcher ist Open Source und frei verfügbar und enthält vorgefertigte Beispiele für einige FPGAs von Altera und Lattice. Er kann einmalig beim Start konfiguriert und zur Ausführung gebracht werden, oder er kann zur Laufzeit dynamisch konfiguriert werden, um verschiedene Prozessoren in das Gesamtsystem aufzunehmen oder auszuschließen. Die API dafür ist offen und als Teil des Pakets verfügbar. Nach der Konfiguration des JTAG Switchers ist es für alle JTAG-Tools über die Schnittstelle unsichtbar.