Erschienen in DESIGN & VERIFICATION 03/2001, S. 44-46 (pdf-Version in toolbox unter "details")
Vorwort
Anomalien in einem Hardware- oder Embedded-System können einmal je Zyklus, aber auch einmal in einer Million von Zyklen auftreten. Man kann die Wahrscheinlichkeit derartige Fehler in digitalen Datenströmen aufzuspüren, deutlich erhöhen, wenn man Logikanalysatoren mit großer Speichertiefe einsetzt. Ausreichend großer Speicher verbessert das Debugging von Speicher-Lecks, Stack-Überläufen oder Hardware-Glitches, während andererseits die Testzeit reduziert und die Produktivität erhöht wird.
Einleitung
Warum ist nun umfangreicher Speicher für Logikanalysatoren so wichtig? Ein Logikanalysator erfasst und speichert Daten kontinuierlich in einem zirkularen Pufferspeicher ab. Wenn dieser Pufferspeicher voll ist, dann überschreiben die neuen Daten die ältesten Daten. Wird die Datenerfassung an einer Stelle gestoppt, erhält man ein Datenfenster, das dann gescannt werden kann, womit der Anwender Einblick in das Schaltungsverhalten zu einem bestimmten Zeitpunkt erhält. Wie weit man dabei ‚zurückblicken‘ kann, hängt vom Umfang des Pufferspeichers ab. Bei früheren Logikanalysatoren waren 512 Ksamples an Speicher pro Kanal durchaus ausreichend. Die höhere Geschwindigkeit und Komplexität heutiger Designs erfordert jedoch leistungsfähigere Tools für Analyse und Fehlersuche. Aus diesem Grund hat Tektronix für seine TLA700-Logikanalysatoren Module mit unterschiedlichen Speichertiefen wie auch die Deep-Memory-Module TLA7Q2/4 und TLA7N1/2/3/4 entwickelt, die bis zu 64 Msamples an Speicher für jeden Kanal bereitstellen.
Hauptteil
Problemstellungen und Lösungen Ein Glitch- oder Timing-Fehler kann gerade dann auftreten, wenn die Eingänge einer Schaltung sich ändern, was dazu führen kann, dass die Ausgänge für eine bestimmte Zeit eine Art zufälligen Wert annehmen, bevor sie den korrekten Wert aufweisen. Falls nun eine andere Schaltung den Ausgangswert zur falschen Zeit liest, kann das Ergebnis falsch und zudem schwer zu ‚debuggen‘ sein. Verfügt der Logikanalysator allerdings über eine ausreichend große Speichertiefe, dann kann das Symptom in einem größeren Zeitfenster betrachtet werden. Somit können z.B. Glitcherfassung und Trigger sinnvoll gewählt werden. Dies erlaubt auch gezielte Rückschlüsse auf vorherige Fehlerursachen.
Daten-Bursts Timing-Messungen zeichnen das Zeitverhalten zwischen den Signalflanken über die interne Clock das Logikanalysators auf. Bei der traditionellen Timing-Analyse werden die Signal-Level für jeden Kanal und für jede Clock aufgezeichnet. So werden oft redundante Daten gespeichert und wertvoller Speicherplatz belegt. Ausserdem sind Daten-Bursts schwierig zu erfassen, da zwischen den Bursts eine relativ lange Zeit an Signalinaktivität liegen kann, die die Kapazität des Speichers überschreitet. Daher ist eine Kompression der Daten erforderlich, die die Daten nur dann abspeichert, wenn eine Signaländerung auftritt. Unter Ausnutzung der traditionellen Speichermethode speichern die TLA 700-Logikanalysatoren die Daten nur bei einer Signaländerung ab, wobei eine sehr lange Aufzeichnungszeit für die Erfassung von Daten-Bursts realisiert wird. Für Applikationen, die eine größere Timing-Auflösung erfordern, können über den zweifachen asynchronen Erfassungs-Modus die Daten mit der doppelten Abtastfrequenz des Logikanalysators erfasst und dargestellt werden. In dieser Betriebsart wird eine Hälfte der Eingangskanäle des Logikanalysators mit der doppelten Erfassungsstiefe genutzt, womit ein Erfassungsspeicher mit 128 Msamples und eine Timing-Auflösung von 500 MHz bzw. 2 ns erreicht wird. Sind mehrere Kanäle erforderlich, so können einfach mehrere Logikanalysator-Module kombiniert werden.
Echtzeit-Probleme Probleme der Echtzeit-Software sind oft schwer zu erfassen, da sie auftreten, wenn das System in ‚vollem‘ Betrieb ist. In diesen Fällen versagen Debug-Monitor-Lösungen, da sie nicht über die Erfassungsmöglichkeiten in Echtzeit verfügen. Emulatoren können hier zwar Abhilfe verschaffen, haben jedoch manchmal Einschränkungen hinsichtlich der Trigger-Möglichkeiten und der erforderlichen Speichertiefe, um das Problem zu finden. Logikanalysatoren mit großer Speichertiefe erlauben Echtzeit-Tracing von umfangreichen historischen Daten, um ein entsprechendes Problem zu indentifizieren. Dabei werden die Programm-Aktivitäten überwacht, ohne die Ausführung zu stoppen. Dagegen zeigen Debug-Monitor- oder Emulator-Lösungen nur den derzeitigen Status des Programms an (zu dem Moment, wo das System angehalten wurde) und nicht der vorherigen Verlauf. In Echtzeit-Systemen ist es nicht immer möglich, das Programm anzuhalten, während die Daten eingehen, ohne wichtige Informationen zu verlieren. Daher ist Tracing in Echtzeit wichtig für das Debugging derartiger Sofware-Routinen. Je größer dabei die verfügbare Speichertiefe ist, desto besser die Ergebnisse.
Crash Embedded-Systeme unterscheiden sich von herkömmlichen Computer-Applikationen dadurch, dass sie normalerweise keinen Schutz gegen Fehler in Programmteilen haben, die das ganze System zum Absturz bringen können. Computer-Betriebssysteme haben dagegen verschiedene Schemata, um ein System gegenüber fehlerhaften Applikationen zu isolieren. Daher kann es bei einem Crash der Embedded-Software zu einer Störung des kompletten Systems kommen, wobei Informationen verloren gehen, die zur Ermittlung der Fehlerursache erforderlich sind. Logikanalysatoren können jedoch die entsprechende Historie bereitstellen, um die Fehlerursache für den Crash zu bestimmen. Wieder gilt: je größer die Speichertiefe ist, desto detaillierter ist die Datenanalyse. Größere Speichertiefe heißt auch, dass die Ursache für den Crash weiter zurückliegen und damit von dem aktuellen Crash entkoppelt werden kann. Indem die Komplexität von Embedded-Applikationen ständig zunimmt, wird die Entkopplung von Fehler (Ursache) und Fehler-Auswirkung (Crash) immer wichtiger.
Speicher-Leck Von einem Speicher-Leck spricht man, wenn ein Programm-Fehler in der Logik der DRAM-Allocation dazu führt, dass der Speicher als erschöpft erscheint und es so zu einem Systemfehler kommen kann. Diese Speicher-Lecks führten in älteren Designs mit kleinen, fest-definierten Adressbereichen oft zu einem sofortigen Crash, dessen Ursache sich jedoch meist leicht zurückverfolgen ließ. In modernen Systemen mit größeren Speicherbereichen tritt der Crash eventuell nicht sofort auf, sodass der Fehler aber schwieriger zu lokalisieren ist. Logikanalysatoren mit großem Trace-Pufferspeicher sind hier wiederum prädestiniert für die Fehlersuche. Kombiniert man einen großen Trace-Speicher mit der Context-Speicherung, kann man das Zeitfenster für den Logikanalysator wesentlich erweitern. Wenn man z.B. die Allocation/Deallocation-Routinen im Speicher zusammen mit dem Context vor und nach der Software-Routine erfasst, kann man den Erfassungsbereich des Logikanalysators genau auf den jeweils interessanten Bereich konzentrieren. Die Context-Speicherung ist eine Möglichkeit, mit dem Logikanalystor automatisch entsprechende Erfassungsfenster für das jeweils interessierende Ereignis zu realisieren.
Stack-Überlauf Versucht ein Programm mehr Informationen in den Stack zu speichern als dieser fassen kann, kommt es zum Überlauf. Die maximale Stackgröße wird durch die Größe des relevanten Registers und durch den Eingangswert des Stack-Pointers bestimmt. Hat ein Logikanalysator nicht genügend Speichertiefe, ist es schwierig die historischen Stack-Pointer-Zyklen zu verfolgen, um die Überlauf-Daten zu ermitteln. Ein mit dem TLA7Q4-Modul ausgestatteter TLA700-Logikanalysator kann 64 Msamples an Daten erfassen, womit der Anwender die Daten im Umfeld eines Glitches analysieren kann, die nicht von dem Shallow-Speicher erfasst wurden.
Schlüsselparameter für den Logikanalysator Es gibt einige Schlüsselparameter, die bei der Auswahl eines Logikanalysators mit großer Speichertiefe beachtet werden sollten – denn Speichertiefe allein sagt nicht alles aus. Ein wesentliches Kriterium ist der nutzbare Speicher. Dabei ist zu betrachten, wie der Logikanalysator die großen Datenmengen erfasst. Hardware-Beschleunigung ist ein Ansatz, das Management dieser großen Datenmengen zu verbessern. Dabei werden die Daten nicht von allein von der CPU des Mainframe-Controllers verarbeitet, sondern von einem speziellen Controller, der so wichtige Operationen wie Signaldarstellung (Zoom,Scrollen), Zeitmarken (Time-Stamps) oder Transitional-Speicherung unterstützt. Der Hardware-Beschleuniger stellt die Daten so schnell zur Verfügung, dass das Signal in wenigen Sekunden und nicht in Minuten dargestellt werden kann. Beispielsweise kann bei den Daten in einem Signalfenster von einem TLA7N4 (4 Msamples) das Time/Division-Setting in nur 3 bis 5 Sekunden geändert und angezeigt werden. Ausserdem kann der Logikanalysator die erfassten Daten schnell auf Anomalien untersuchen. In einem Listing-Fenster mit dem TLA7N4 (4 Msamples) kann so der gesamte Erfassungsspeicher nach einem hexadezimalen Wert in einer 32-Bit-Gruppe in nur 2 Sekunden durchsucht werden. Das Arbeiten mit Zeitmarken (Time-Stamp) ist ein Tool, das die Nutzung von großen Speichern in Logikanalysatoren wesentlich verbessert. Logikanalysatoren mit dieser Funktionalität speichern mit jedem Abtastwert eine separate Zeitmarke ab. Diese Fähigkeit hilft bei der Feststellung der vergangene Zeit zwischen den Abtastwerten und bei der Zeit-Korrelation von Daten zwischen verschiedenen Erfassungsmodulen (z.B. bei verschiedenen Bus-Strukturen mit unterschiedlichen Geschwindigkeiten). Da der Time-Stamp-Speicher unabhängig vom Erfassungsspeicher ist, kann der Logikanalysator einfach die Zeit-Korrelation bzw. die Zeit zwischen den Abtastwerten bereitstellen, was für die Qualifizierung der Daten wichtig ist. Alle erfassten Daten, auch in mehreren Modulen, werden jeweils mit diesem Time-Stamp versehen. Dies bietet eine systemweite zeitrichtige Datendarstellung. Weiterhin ist hier wichtig zu nennen, daß diese Time-Stamp nicht die Speichertiefe des Moduls verringert. Applikationen können prinzipiell in zwei Kategorien gegliedert werden: extern getaktet (synchron) und intern getaktet (asynchron). Die synchrone Akquisition erlaubt die Wahl der Transitional-Storage-Fähigkeit des TLA 700 und dadurch die Konfiguration des Logikanalysators dahingehend, dass nur dann Daten erfasst werden, wenn eine spezifische Kanalgruppe eine Datenänderung aufweist. Sind z.B. in einem System nur in jedem vierten Abtastwert relevante Daten, kann ein Logikanalysator mit 1 M Speichertiefe und Transitional-Storage-Fähigkeit effektiv die selbe Datenmenge speichern wie ein Logikanalysator mit 4 M Speichertiefe, der nicht über die Möglichkeit der Transitional-Storage verfügt. Bei asynchroner Abtastung müssen die Daten mehrfach (3- bis 5mal) abgetastet (Oversampling) werden, um eine zuverlässige Reproduktion zu erhalten. Bei einem Logikanalysator mit Transitional-Storage werden nur die Daten veränderten gespeichert. Jeder gespeicherte Abtastwert ist mit einer Zeitmarke versehen, damit die Daten mit der richtigen Zeitbeziehung dargestellt werden können. Daher kann ein Logikanalysator-Modul mit 1 M Speichertiefe und Transitional-Storage effektiv gleich viel Daten speichern wie ein Logikanalysator-Modul mit 5 M Speichertiefe aber ohne Transitional-Storage, wenn man 5faches Oversampling annimmt.
Fazit
Die Logikanalysatoren TLA 714/720 verfügen über eine Kombination entscheidender Leistungsmerkmale wie hohe Erfassungsgeschwindigkeit, große Kanalzahl und große Speichertiefe. Damit sind sie prädestiniert für die Fehlersuche in modernen digitalen Designs. TLA 714 und 720 bieten bis zu 16 M Speichertiefe sowie ein neuartiges hardwaregestütztes Display-System, das die Verwaltung der enormen Speicherressourcen vereinfacht. Die Trace-Speichertiefe kann mit den entsprechenden Erweiterungsmodulen auf 64 M erhöht werden. Auch ein 128-Msample-Timing-Speicher ist möglich, wenn die Hälfte der Kanäle benutzt wird. Die MagniVu-Erfassungstechnologie ermöglicht für jedes Analysatormodul eine Zeitauflösung von 500 ps auf allen Kanälen gleichzeitig. Der MagniVu-Technologie ist es auch zu verdanken, dass die TLA-700-Geräte eine synchrone Erfassungsrate von 200 MHz und eine Datenrate von 400 MHz erreichen. Darüber bieten TLA 714 und 720 mit dem selben Tastkopf gleichzeitig eine State-Erfassung von 200 MHz und eine Timing-Auflösung von 2 GS/s.
|
| |
|
 |
|